{
  "version": 3,
  "sources": ["../../../node_modules/@rails/ujs/lib/assets/compiled/rails-ujs.js", "../../../node_modules/@rails/activestorage/app/assets/javascripts/activestorage.js", "../../../node_modules/@hotwired/turbo-rails/node_modules/@rails/actioncable/src/adapters.js", "../../../node_modules/@hotwired/turbo-rails/node_modules/@rails/actioncable/src/logger.js", "../../../node_modules/@hotwired/turbo-rails/node_modules/@rails/actioncable/src/connection_monitor.js", "../../../node_modules/@hotwired/turbo-rails/node_modules/@rails/actioncable/src/internal.js", "../../../node_modules/@hotwired/turbo-rails/node_modules/@rails/actioncable/src/connection.js", "../../../node_modules/@hotwired/turbo-rails/node_modules/@rails/actioncable/src/subscription.js", "../../../node_modules/@hotwired/turbo-rails/node_modules/@rails/actioncable/src/subscription_guarantor.js", "../../../node_modules/@hotwired/turbo-rails/node_modules/@rails/actioncable/src/subscriptions.js", "../../../node_modules/@hotwired/turbo-rails/node_modules/@rails/actioncable/src/consumer.js", "../../../node_modules/@hotwired/turbo-rails/node_modules/@rails/actioncable/src/index.js", "../../../node_modules/chartkick/dist/chartkick.js", "../../../node_modules/@rails/actioncable/app/assets/javascripts/action_cable.js", "../../../node_modules/@uppy/utils/lib/getTimeStamp.js", "../../../node_modules/@uppy/core/lib/loggers.js", "../../../node_modules/nanoid/non-secure/index.cjs", "../../../node_modules/@transloadit/prettier-bytes/prettierBytes.js", "../../../node_modules/wildcard/index.js", "../../../node_modules/mime-match/index.js", "../../../node_modules/@uppy/core/lib/Restricter.js", "../../../node_modules/@uppy/utils/lib/hasProperty.js", "../../../node_modules/@uppy/utils/lib/Translator.js", "../../../node_modules/namespace-emitter/index.js", "../../../node_modules/lodash.throttle/index.js", "../../../node_modules/@uppy/store-default/lib/index.js", "../../../node_modules/@uppy/utils/lib/getFileNameAndExtension.js", "../../../node_modules/@uppy/utils/lib/mimeTypes.js", "../../../node_modules/@uppy/utils/lib/getFileType.js", "../../../node_modules/@uppy/utils/lib/generateFileID.js", "../../../node_modules/@uppy/core/lib/supportsUploadProgress.js", "../../../node_modules/@uppy/core/lib/getFileName.js", "../../../node_modules/@uppy/core/lib/locale.js", "../../../node_modules/@uppy/core/lib/Uppy.js", "../../../node_modules/preact/src/constants.js", "../../../node_modules/preact/src/util.js", "../../../node_modules/preact/src/options.js", "../../../node_modules/preact/src/create-element.js", "../../../node_modules/preact/src/component.js", "../../../node_modules/preact/src/diff/props.js", "../../../node_modules/preact/src/create-context.js", "../../../node_modules/preact/src/diff/children.js", "../../../node_modules/preact/src/diff/index.js", "../../../node_modules/preact/src/render.js", "../../../node_modules/preact/src/clone-element.js", "../../../node_modules/preact/src/diff/catch-error.js", "../../../node_modules/@uppy/utils/lib/isDOMElement.js", "../../../node_modules/@uppy/utils/lib/findDOMElement.js", "../../../node_modules/@uppy/utils/lib/getTextDirection.js", "../../../node_modules/@uppy/core/lib/BasePlugin.js", "../../../node_modules/@uppy/core/lib/UIPlugin.js", "../../../node_modules/@uppy/core/lib/index.js", "../../../node_modules/@uppy/utils/lib/toArray.js", "../../../node_modules/@uppy/utils/lib/FOCUSABLE_ELEMENTS.js", "../../../node_modules/@uppy/dashboard/lib/utils/getActiveOverlayEl.js", "../../../node_modules/@uppy/dashboard/lib/utils/trapFocus.js", "../../../node_modules/@uppy/utils/lib/getSpeed.js", "../../../node_modules/@uppy/utils/lib/getBytesRemaining.js", "../../../node_modules/@uppy/status-bar/lib/StatusBarStates.js", "../../../node_modules/classnames/index.js", "../../../node_modules/@uppy/utils/lib/secondsToTime.js", "../../../node_modules/@uppy/utils/lib/prettyETA.js", "../../../node_modules/@uppy/status-bar/lib/Components.js", "../../../node_modules/@uppy/status-bar/lib/calculateProcessingProgress.js", "../../../node_modules/@uppy/status-bar/lib/StatusBar.js", "../../../node_modules/@uppy/status-bar/lib/locale.js", "../../../node_modules/@uppy/status-bar/lib/_StatusBar.js", "../../../node_modules/@uppy/status-bar/lib/index.js", "../../../node_modules/@uppy/informer/lib/FadeIn.js", "../../../node_modules/@uppy/informer/lib/TransitionGroup.js", "../../../node_modules/@uppy/informer/lib/Informer.js", "../../../node_modules/@uppy/informer/lib/index.js", "../../../node_modules/exifr/dist/mini.umd.js", "../../../node_modules/@uppy/utils/lib/dataURItoBlob.js", "../../../node_modules/@uppy/utils/lib/isObjectURL.js", "../../../node_modules/@uppy/utils/lib/isPreviewSupported.js", "../../../node_modules/@uppy/thumbnail-generator/lib/locale.js", "../../../node_modules/@uppy/thumbnail-generator/lib/index.js", "../../../node_modules/@uppy/utils/lib/findAllDOMElements.js", "../../../node_modules/@uppy/utils/lib/getDroppedFiles/utils/webkitGetAsEntryApi/getFilesAndDirectoriesFromDirectory.js", "../../../node_modules/@uppy/utils/lib/getDroppedFiles/utils/webkitGetAsEntryApi/index.js", "../../../node_modules/@uppy/utils/lib/getDroppedFiles/utils/fallbackApi.js", "../../../node_modules/@uppy/utils/lib/getDroppedFiles/index.js", "../../../node_modules/memoize-one/dist/memoize-one.cjs.js", "../../../node_modules/lodash.debounce/index.js", "../../../node_modules/@uppy/dashboard/lib/utils/createSuperFocus.js", "../../../node_modules/@uppy/utils/lib/isDragDropSupported.js", "../../../node_modules/is-shallow-equal/index.js", "../../../node_modules/@uppy/dashboard/lib/utils/getFileTypeIcon.js", "../../../node_modules/@uppy/dashboard/lib/components/FilePreview.js", "../../../node_modules/@uppy/dashboard/lib/components/FileItem/MetaErrorMessage.js", "../../../node_modules/@uppy/dashboard/lib/components/FileItem/FilePreviewAndLink/index.js", "../../../node_modules/@uppy/dashboard/lib/components/FileItem/FileProgress/index.js", "../../../node_modules/@uppy/utils/lib/truncateString.js", "../../../node_modules/@uppy/dashboard/lib/components/FileItem/FileInfo/index.js", "../../../node_modules/@uppy/dashboard/lib/utils/copyToClipboard.js", "../../../node_modules/@uppy/dashboard/lib/components/FileItem/Buttons/index.js", "../../../node_modules/@uppy/dashboard/lib/components/FileItem/index.js", "../../../node_modules/@uppy/dashboard/lib/components/VirtualList.js", "../../../node_modules/@uppy/dashboard/lib/components/FileList.js", "../../../node_modules/@uppy/dashboard/lib/components/AddFiles.js", "../../../node_modules/@uppy/dashboard/lib/components/AddFilesPanel.js", "../../../node_modules/@uppy/dashboard/lib/utils/ignoreEvent.js", "../../../node_modules/@uppy/dashboard/lib/components/PickerPanelContent.js", "../../../node_modules/@uppy/dashboard/lib/components/EditorPanel.js", "../../../node_modules/@uppy/dashboard/lib/components/PickerPanelTopBar.js", "../../../node_modules/@uppy/dashboard/lib/components/FileCard/index.js", "../../../node_modules/@uppy/dashboard/lib/components/Slide.js", "../../../node_modules/@uppy/dashboard/lib/components/Dashboard.js", "../../../node_modules/@uppy/dashboard/lib/locale.js", "../../../node_modules/@uppy/dashboard/lib/Dashboard.js", "../../../node_modules/@uppy/dashboard/lib/index.js", "../../../node_modules/@noble/hashes/src/_assert.ts", "../../../node_modules/@noble/hashes/src/_u64.ts", "../../../node_modules/@noble/hashes/src/crypto.ts", "../../../node_modules/@noble/hashes/src/utils.ts", "../../../node_modules/@noble/hashes/src/sha3.ts", "../../../node_modules/@paralleldrive/cuid2/src/index.js", "../../../node_modules/@paralleldrive/cuid2/index.js", "../../../node_modules/@uppy/utils/lib/RateLimitedQueue.js", "../../../node_modules/cropperjs/dist/cropper.js", "../../../node_modules/@uppy/image-editor/lib/Editor.js", "../../../node_modules/@uppy/image-editor/lib/locale.js", "../../../node_modules/@uppy/image-editor/lib/ImageEditor.js", "../../../node_modules/@uppy/image-editor/lib/index.js", "../../../node_modules/html5-qrcode/third_party/zxing-js.umd.js", "../../../node_modules/lodash/isObject.js", "../../../node_modules/lodash/_freeGlobal.js", "../../../node_modules/lodash/_root.js", "../../../node_modules/lodash/now.js", "../../../node_modules/lodash/_trimmedEndIndex.js", "../../../node_modules/lodash/_baseTrim.js", "../../../node_modules/lodash/_Symbol.js", "../../../node_modules/lodash/_getRawTag.js", "../../../node_modules/lodash/_objectToString.js", "../../../node_modules/lodash/_baseGetTag.js", "../../../node_modules/lodash/isObjectLike.js", "../../../node_modules/lodash/isSymbol.js", "../../../node_modules/lodash/toNumber.js", "../../../node_modules/lodash/debounce.js", "../../../node_modules/inputmask/dist/inputmask.js", "../../../node_modules/trix/dist/trix.js", "../../../node_modules/@rails/actiontext/app/javascript/actiontext/attachment_upload.js", "../../../node_modules/@rails/actiontext/app/javascript/actiontext/index.js", "../../javascript/vendor/trustpilot-5.js", "../../javascript/application.js", "../../../node_modules/@popperjs/core/lib/index.js", "../../../node_modules/@popperjs/core/lib/enums.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getNodeName.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getWindow.js", "../../../node_modules/@popperjs/core/lib/dom-utils/instanceOf.js", "../../../node_modules/@popperjs/core/lib/modifiers/applyStyles.js", "../../../node_modules/@popperjs/core/lib/utils/getBasePlacement.js", "../../../node_modules/@popperjs/core/lib/utils/math.js", "../../../node_modules/@popperjs/core/lib/utils/userAgent.js", "../../../node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js", "../../../node_modules/@popperjs/core/lib/dom-utils/contains.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js", "../../../node_modules/@popperjs/core/lib/dom-utils/isTableElement.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getParentNode.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js", "../../../node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js", "../../../node_modules/@popperjs/core/lib/utils/within.js", "../../../node_modules/@popperjs/core/lib/utils/getFreshSideObject.js", "../../../node_modules/@popperjs/core/lib/utils/mergePaddingObject.js", "../../../node_modules/@popperjs/core/lib/utils/expandToHashMap.js", "../../../node_modules/@popperjs/core/lib/modifiers/arrow.js", "../../../node_modules/@popperjs/core/lib/utils/getVariation.js", "../../../node_modules/@popperjs/core/lib/modifiers/computeStyles.js", "../../../node_modules/@popperjs/core/lib/modifiers/eventListeners.js", "../../../node_modules/@popperjs/core/lib/utils/getOppositePlacement.js", "../../../node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js", "../../../node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js", "../../../node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js", "../../../node_modules/@popperjs/core/lib/utils/rectToClientRect.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js", "../../../node_modules/@popperjs/core/lib/utils/computeOffsets.js", "../../../node_modules/@popperjs/core/lib/utils/detectOverflow.js", "../../../node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js", "../../../node_modules/@popperjs/core/lib/modifiers/flip.js", "../../../node_modules/@popperjs/core/lib/modifiers/hide.js", "../../../node_modules/@popperjs/core/lib/modifiers/offset.js", "../../../node_modules/@popperjs/core/lib/modifiers/popperOffsets.js", "../../../node_modules/@popperjs/core/lib/utils/getAltAxis.js", "../../../node_modules/@popperjs/core/lib/modifiers/preventOverflow.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js", "../../../node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js", "../../../node_modules/@popperjs/core/lib/utils/orderModifiers.js", "../../../node_modules/@popperjs/core/lib/utils/debounce.js", "../../../node_modules/@popperjs/core/lib/utils/mergeByName.js", "../../../node_modules/@popperjs/core/lib/createPopper.js", "../../../node_modules/@popperjs/core/lib/popper-lite.js", "../../../node_modules/@popperjs/core/lib/popper.js", "../../../node_modules/bootstrap/js/src/dom/data.js", "../../../node_modules/bootstrap/js/src/util/index.js", "../../../node_modules/bootstrap/js/src/dom/event-handler.js", "../../../node_modules/bootstrap/js/src/dom/manipulator.js", "../../../node_modules/bootstrap/js/src/util/config.js", "../../../node_modules/bootstrap/js/src/base-component.js", "../../../node_modules/bootstrap/js/src/dom/selector-engine.js", "../../../node_modules/bootstrap/js/src/util/component-functions.js", "../../../node_modules/bootstrap/js/src/alert.js", "../../../node_modules/bootstrap/js/src/button.js", "../../../node_modules/bootstrap/js/src/util/swipe.js", "../../../node_modules/bootstrap/js/src/carousel.js", "../../../node_modules/bootstrap/js/src/collapse.js", "../../../node_modules/bootstrap/js/src/dropdown.js", "../../../node_modules/bootstrap/js/src/util/backdrop.js", "../../../node_modules/bootstrap/js/src/util/focustrap.js", "../../../node_modules/bootstrap/js/src/util/scrollbar.js", "../../../node_modules/bootstrap/js/src/modal.js", "../../../node_modules/bootstrap/js/src/offcanvas.js", "../../../node_modules/bootstrap/js/src/util/sanitizer.js", "../../../node_modules/bootstrap/js/src/util/template-factory.js", "../../../node_modules/bootstrap/js/src/tooltip.js", "../../../node_modules/bootstrap/js/src/popover.js", "../../../node_modules/bootstrap/js/src/scrollspy.js", "../../../node_modules/bootstrap/js/src/tab.js", "../../../node_modules/bootstrap/js/src/toast.js", "../../../node_modules/@hotwired/turbo/dist/turbo.es2017-esm.js", "../../../node_modules/@hotwired/turbo-rails/app/javascript/turbo/cable.js", "../../../node_modules/@hotwired/turbo-rails/app/javascript/turbo/snakeize.js", "../../../node_modules/@hotwired/turbo-rails/app/javascript/turbo/cable_stream_source_element.js", "../../../node_modules/@hotwired/turbo-rails/app/javascript/turbo/fetch_requests.js", "../../../node_modules/@hotwired/turbo-rails/app/javascript/turbo/index.js", "../../../node_modules/chartkick/chart.js/chart.esm.js", "../../../node_modules/chart.js/dist/chunks/helpers.segment.mjs", "../../../node_modules/chart.js/dist/chart.mjs", "../../../node_modules/chart.js/auto/auto.mjs", "../../../node_modules/@babel/runtime/helpers/esm/typeof.js", "../../../node_modules/date-fns/esm/_lib/toInteger/index.js", "../../../node_modules/date-fns/esm/_lib/requiredArgs/index.js", "../../../node_modules/date-fns/esm/toDate/index.js", "../../../node_modules/date-fns/esm/addDays/index.js", "../../../node_modules/date-fns/esm/addMonths/index.js", "../../../node_modules/date-fns/esm/addMilliseconds/index.js", "../../../node_modules/date-fns/esm/addHours/index.js", "../../../node_modules/date-fns/esm/_lib/defaultOptions/index.js", "../../../node_modules/date-fns/esm/startOfWeek/index.js", "../../../node_modules/date-fns/esm/_lib/getTimezoneOffsetInMilliseconds/index.js", "../../../node_modules/date-fns/esm/startOfDay/index.js", "../../../node_modules/date-fns/esm/differenceInCalendarDays/index.js", "../../../node_modules/date-fns/esm/addMinutes/index.js", "../../../node_modules/date-fns/esm/addQuarters/index.js", "../../../node_modules/date-fns/esm/addSeconds/index.js", "../../../node_modules/date-fns/esm/addWeeks/index.js", "../../../node_modules/date-fns/esm/addYears/index.js", "../../../node_modules/date-fns/esm/compareAsc/index.js", "../../../node_modules/date-fns/esm/constants/index.js", "../../../node_modules/date-fns/esm/isDate/index.js", "../../../node_modules/date-fns/esm/isValid/index.js", "../../../node_modules/date-fns/esm/differenceInCalendarMonths/index.js", "../../../node_modules/date-fns/esm/differenceInCalendarYears/index.js", "../../../node_modules/date-fns/esm/differenceInDays/index.js", "../../../node_modules/date-fns/esm/differenceInMilliseconds/index.js", "../../../node_modules/date-fns/esm/_lib/roundingMethods/index.js", "../../../node_modules/date-fns/esm/differenceInHours/index.js", "../../../node_modules/date-fns/esm/differenceInMinutes/index.js", "../../../node_modules/date-fns/esm/endOfDay/index.js", "../../../node_modules/date-fns/esm/endOfMonth/index.js", "../../../node_modules/date-fns/esm/isLastDayOfMonth/index.js", "../../../node_modules/date-fns/esm/differenceInMonths/index.js", "../../../node_modules/date-fns/esm/differenceInQuarters/index.js", "../../../node_modules/date-fns/esm/differenceInSeconds/index.js", "../../../node_modules/date-fns/esm/differenceInWeeks/index.js", "../../../node_modules/date-fns/esm/differenceInYears/index.js", "../../../node_modules/date-fns/esm/startOfMinute/index.js", "../../../node_modules/date-fns/esm/startOfQuarter/index.js", "../../../node_modules/date-fns/esm/startOfMonth/index.js", "../../../node_modules/date-fns/esm/endOfYear/index.js", "../../../node_modules/date-fns/esm/startOfYear/index.js", "../../../node_modules/date-fns/esm/endOfHour/index.js", "../../../node_modules/date-fns/esm/endOfWeek/index.js", "../../../node_modules/date-fns/esm/endOfMinute/index.js", "../../../node_modules/date-fns/esm/endOfQuarter/index.js", "../../../node_modules/date-fns/esm/endOfSecond/index.js", "../../../node_modules/date-fns/esm/subMilliseconds/index.js", "../../../node_modules/date-fns/esm/_lib/getUTCDayOfYear/index.js", "../../../node_modules/date-fns/esm/_lib/startOfUTCISOWeek/index.js", "../../../node_modules/date-fns/esm/_lib/getUTCISOWeekYear/index.js", "../../../node_modules/date-fns/esm/_lib/startOfUTCISOWeekYear/index.js", "../../../node_modules/date-fns/esm/_lib/getUTCISOWeek/index.js", "../../../node_modules/date-fns/esm/_lib/startOfUTCWeek/index.js", "../../../node_modules/date-fns/esm/_lib/getUTCWeekYear/index.js", "../../../node_modules/date-fns/esm/_lib/startOfUTCWeekYear/index.js", "../../../node_modules/date-fns/esm/_lib/getUTCWeek/index.js", "../../../node_modules/date-fns/esm/_lib/addLeadingZeros/index.js", "../../../node_modules/date-fns/esm/_lib/format/lightFormatters/index.js", "../../../node_modules/date-fns/esm/_lib/format/formatters/index.js", "../../../node_modules/date-fns/esm/_lib/format/longFormatters/index.js", "../../../node_modules/date-fns/esm/_lib/protectedTokens/index.js", "../../../node_modules/date-fns/esm/locale/en-US/_lib/formatDistance/index.js", "../../../node_modules/date-fns/esm/locale/_lib/buildFormatLongFn/index.js", "../../../node_modules/date-fns/esm/locale/en-US/_lib/formatLong/index.js", "../../../node_modules/date-fns/esm/locale/en-US/_lib/formatRelative/index.js", "../../../node_modules/date-fns/esm/locale/_lib/buildLocalizeFn/index.js", "../../../node_modules/date-fns/esm/locale/en-US/_lib/localize/index.js", "../../../node_modules/date-fns/esm/locale/_lib/buildMatchFn/index.js", "../../../node_modules/date-fns/esm/locale/_lib/buildMatchPatternFn/index.js", "../../../node_modules/date-fns/esm/locale/en-US/_lib/match/index.js", "../../../node_modules/date-fns/esm/locale/en-US/index.js", "../../../node_modules/date-fns/esm/_lib/defaultLocale/index.js", "../../../node_modules/date-fns/esm/format/index.js", "../../../node_modules/date-fns/esm/_lib/assign/index.js", "../../../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js", "../../../node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js", "../../../node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js", "../../../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js", "../../../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js", "../../../node_modules/@babel/runtime/helpers/esm/inherits.js", "../../../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js", "../../../node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js", "../../../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js", "../../../node_modules/@babel/runtime/helpers/esm/createSuper.js", "../../../node_modules/@babel/runtime/helpers/esm/classCallCheck.js", "../../../node_modules/@babel/runtime/helpers/esm/toPrimitive.js", "../../../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js", "../../../node_modules/@babel/runtime/helpers/esm/createClass.js", "../../../node_modules/@babel/runtime/helpers/esm/defineProperty.js", "../../../node_modules/date-fns/esm/parse/_lib/Setter.js", "../../../node_modules/date-fns/esm/parse/_lib/Parser.js", "../../../node_modules/date-fns/esm/parse/_lib/parsers/EraParser.js", "../../../node_modules/date-fns/esm/parse/_lib/constants.js", "../../../node_modules/date-fns/esm/parse/_lib/utils.js", "../../../node_modules/date-fns/esm/parse/_lib/parsers/YearParser.js", "../../../node_modules/date-fns/esm/parse/_lib/parsers/LocalWeekYearParser.js", "../../../node_modules/date-fns/esm/parse/_lib/parsers/ISOWeekYearParser.js", "../../../node_modules/date-fns/esm/parse/_lib/parsers/ExtendedYearParser.js", "../../../node_modules/date-fns/esm/parse/_lib/parsers/QuarterParser.js", "../../../node_modules/date-fns/esm/parse/_lib/parsers/StandAloneQuarterParser.js", "../../../node_modules/date-fns/esm/parse/_lib/parsers/MonthParser.js", "../../../node_modules/date-fns/esm/parse/_lib/parsers/StandAloneMonthParser.js", "../../../node_modules/date-fns/esm/_lib/setUTCWeek/index.js", "../../../node_modules/date-fns/esm/parse/_lib/parsers/LocalWeekParser.js", "../../../node_modules/date-fns/esm/_lib/setUTCISOWeek/index.js", "../../../node_modules/date-fns/esm/parse/_lib/parsers/ISOWeekParser.js", "../../../node_modules/date-fns/esm/parse/_lib/parsers/DateParser.js", "../../../node_modules/date-fns/esm/parse/_lib/parsers/DayOfYearParser.js", "../../../node_modules/date-fns/esm/_lib/setUTCDay/index.js", "../../../node_modules/date-fns/esm/parse/_lib/parsers/DayParser.js", "../../../node_modules/date-fns/esm/parse/_lib/parsers/LocalDayParser.js", "../../../node_modules/date-fns/esm/parse/_lib/parsers/StandAloneLocalDayParser.js", "../../../node_modules/date-fns/esm/_lib/setUTCISODay/index.js", "../../../node_modules/date-fns/esm/parse/_lib/parsers/ISODayParser.js", "../../../node_modules/date-fns/esm/parse/_lib/parsers/AMPMParser.js", "../../../node_modules/date-fns/esm/parse/_lib/parsers/AMPMMidnightParser.js", "../../../node_modules/date-fns/esm/parse/_lib/parsers/DayPeriodParser.js", "../../../node_modules/date-fns/esm/parse/_lib/parsers/Hour1to12Parser.js", "../../../node_modules/date-fns/esm/parse/_lib/parsers/Hour0to23Parser.js", "../../../node_modules/date-fns/esm/parse/_lib/parsers/Hour0To11Parser.js", "../../../node_modules/date-fns/esm/parse/_lib/parsers/Hour1To24Parser.js", "../../../node_modules/date-fns/esm/parse/_lib/parsers/MinuteParser.js", "../../../node_modules/date-fns/esm/parse/_lib/parsers/SecondParser.js", "../../../node_modules/date-fns/esm/parse/_lib/parsers/FractionOfSecondParser.js", "../../../node_modules/date-fns/esm/parse/_lib/parsers/ISOTimezoneWithZParser.js", "../../../node_modules/date-fns/esm/parse/_lib/parsers/ISOTimezoneParser.js", "../../../node_modules/date-fns/esm/parse/_lib/parsers/TimestampSecondsParser.js", "../../../node_modules/date-fns/esm/parse/_lib/parsers/TimestampMillisecondsParser.js", "../../../node_modules/date-fns/esm/parse/_lib/parsers/index.js", "../../../node_modules/date-fns/esm/parse/index.js", "../../../node_modules/date-fns/esm/startOfHour/index.js", "../../../node_modules/date-fns/esm/startOfSecond/index.js", "../../../node_modules/date-fns/esm/parseISO/index.js", "../../../node_modules/chartjs-adapter-date-fns/dist/chartjs-adapter-date-fns.esm.js", "../../javascript/channels/consumer.js", "../../javascript/channels/orders_channel.js", "../../javascript/channels/redeems_channel.js", "../../javascript/channels/social_proof_channel.js", "../../../node_modules/@hotwired/stimulus/dist/stimulus.js", "../../javascript/controllers/bookings/product_filter_controller.js", "../../javascript/utils/_debounce.js", "../../javascript/utils/_loading.js", "../../javascript/controllers/bookings/professional_select_controller.js", "../../javascript/controllers/bookings/video_controller.js", "../../../node_modules/@daily-co/daily-js/dist/daily-esm.js", "../../javascript/controllers/bookings_controller.js", "../../javascript/controllers/calendar_controller.js", "../../javascript/controllers/codes_controller.js", "../../javascript/controllers/confirmations_controller.js", "../../javascript/utils/_empty.js", "../../javascript/controllers/cookie_consent_controller.js", "../../../node_modules/vanilla-cookieconsent/dist/cookieconsent.esm.js", "../../javascript/controllers/cookie_consent/translations/en.js", "../../javascript/controllers/date_picker_controller.js", "../../../node_modules/vanillajs-datepicker/js/lib/utils.js", "../../../node_modules/vanillajs-datepicker/js/lib/date.js", "../../../node_modules/vanillajs-datepicker/js/lib/date-format.js", "../../../node_modules/vanillajs-datepicker/js/lib/dom.js", "../../../node_modules/vanillajs-datepicker/js/lib/event.js", "../../../node_modules/vanillajs-datepicker/js/i18n/base-locales.js", "../../../node_modules/vanillajs-datepicker/js/options/defaultOptions.js", "../../../node_modules/vanillajs-datepicker/js/options/processOptions.js", "../../../node_modules/vanillajs-datepicker/js/options/shortcutKeys.js", "../../../node_modules/vanillajs-datepicker/js/picker/templates/pickerTemplate.js", "../../../node_modules/vanillajs-datepicker/js/picker/templates/daysTemplate.js", "../../../node_modules/vanillajs-datepicker/js/picker/templates/weekNumbersTemplate.js", "../../../node_modules/vanillajs-datepicker/js/picker/views/View.js", "../../../node_modules/vanillajs-datepicker/js/picker/views/DaysView.js", "../../../node_modules/vanillajs-datepicker/js/picker/views/MonthsView.js", "../../../node_modules/vanillajs-datepicker/js/picker/views/YearsView.js", "../../../node_modules/vanillajs-datepicker/js/events/functions.js", "../../../node_modules/vanillajs-datepicker/js/events/pickerListeners.js", "../../../node_modules/vanillajs-datepicker/js/picker/Picker.js", "../../../node_modules/vanillajs-datepicker/js/events/elementListeners.js", "../../../node_modules/vanillajs-datepicker/js/events/otherListeners.js", "../../../node_modules/vanillajs-datepicker/js/Datepicker.js", "../../javascript/controllers/form_controller.js", "../../javascript/controllers/geolocation_controller.js", "../../javascript/utils/_localstorage.js", "../../javascript/controllers/hello_controller.js", "../../javascript/controllers/iframe/form_controller.js", "../../javascript/controllers/live_time_controller.js", "../../javascript/controllers/merchants/availability_controller.js", "../../../node_modules/dragselect/dist/DragSelect.esm.js", "../../javascript/controllers/merchants/documents_upload_controller.js", "../../../node_modules/@excid3/uppy-activestorage-upload/lib/index.js", "../../javascript/controllers/merchants/logo_upload_controller.js", "../../javascript/controllers/merchants/point_of_sale/order_quick_view_controller.js", "../../javascript/controllers/merchants/rewardables_upload_controller.js", "../../javascript/controllers/merchants/subscription_selector_controller.js", "../../javascript/controllers/merchants/voucher_deliverables_controller.js", "../../javascript/controllers/numberpad_controller.js", "../../javascript/controllers/partial_toggler_controller.js", "../../javascript/controllers/patrons/referrals_controller.js", "../../javascript/controllers/patrons/smart_orders_controller.js", "../../javascript/utils/_sessionstorage.js", "../../javascript/controllers/payment_confirmation_controller.js", "../../javascript/controllers/posthog_controller.js", "../../../node_modules/posthog-js/src/utils/globals.ts", "../../../node_modules/posthog-js/src/types.ts", "../../../node_modules/posthog-js/src/config.ts", "../../../node_modules/posthog-js/src/utils/index.ts", "../../../node_modules/posthog-js/src/utils/string-utils.ts", "../../../node_modules/posthog-js/src/utils/type-utils.ts", "../../../node_modules/posthog-js/src/utils/logger.ts", "../../../node_modules/posthog-js/src/entrypoints/external-scripts-loader.ts", "../../../node_modules/posthog-js/src/constants.ts", "../../../node_modules/posthog-js/src/posthog-featureflags.ts", "../../../node_modules/posthog-js/src/uuidv7.ts", "../../../node_modules/posthog-js/src/storage.ts", "../../../node_modules/posthog-js/src/utils/request-utils.ts", "../../../node_modules/posthog-js/src/utils/user-agent-utils.ts", "../../../node_modules/posthog-js/src/utils/event-utils.ts", "../../../node_modules/posthog-js/src/posthog-persistence.ts", "../../../node_modules/posthog-js/src/extensions/replay/sessionrecording-utils.ts", "../../../node_modules/posthog-js/node_modules/.pnpm/@rrweb+types@2.0.0-alpha.17/node_modules/@rrweb/types/dist/types.js", "../../../node_modules/posthog-js/src/utils/element-utils.ts", "../../../node_modules/posthog-js/src/autocapture-utils.ts", "../../../node_modules/posthog-js/src/extensions/replay/config.ts", "../../../node_modules/posthog-js/src/utils/number-utils.ts", "../../../node_modules/posthog-js/src/extensions/replay/mutation-rate-limiter.ts", "../../../node_modules/posthog-js/node_modules/.pnpm/fflate@0.4.8/node_modules/fflate/esm/browser.js", "../../../node_modules/posthog-js/src/extensions/sampling.ts", "../../../node_modules/posthog-js/src/extensions/replay/sessionrecording.ts", "../../../node_modules/posthog-js/src/remote-config.ts", "../../../node_modules/posthog-js/src/extensions/toolbar.ts", "../../../node_modules/posthog-js/src/request-queue.ts", "../../../node_modules/posthog-js/src/utils/encode-utils.ts", "../../../node_modules/posthog-js/src/request.ts", "../../../node_modules/posthog-js/src/retry-queue.ts", "../../../node_modules/posthog-js/src/sessionid.ts", "../../../node_modules/posthog-js/src/utils/request-router.ts", "../../../node_modules/posthog-js/src/extensions/sentry-integration.ts", "../../../node_modules/posthog-js/src/extensions/segment-integration.ts", "../../../node_modules/posthog-js/src/page-view.ts", "../../../node_modules/posthog-js/node_modules/.pnpm/preact@10.19.3/node_modules/preact/dist/preact.module.js", "../../../node_modules/posthog-js/src/extensions/surveys/surveys-utils.tsx", "../../../node_modules/posthog-js/src/posthog-surveys-types.ts", "../../../node_modules/posthog-js/src/utils/simple-event-emitter.ts", "../../../node_modules/posthog-js/src/extensions/surveys/action-matcher.ts", "../../../node_modules/posthog-js/src/utils/survey-event-receiver.ts", "../../../node_modules/posthog-js/src/posthog-surveys.ts", "../../../node_modules/posthog-js/src/rate-limiter.ts", "../../../node_modules/posthog-js/src/session-props.ts", "../../../node_modules/posthog-js/src/utils/blocked-uas.ts", "../../../node_modules/posthog-js/src/extensions/rageclick.ts", "../../../node_modules/posthog-js/src/extensions/dead-clicks-autocapture.ts", "../../../node_modules/posthog-js/src/heatmaps.ts", "../../../node_modules/posthog-js/src/scroll-manager.ts", "../../../node_modules/posthog-js/src/autocapture.ts", "../../../node_modules/posthog-js/src/extensions/tracing-headers.ts", "../../../node_modules/posthog-js/src/consent.ts", "../../../node_modules/posthog-js/src/extensions/exception-autocapture/index.ts", "../../../node_modules/posthog-js/src/extensions/web-vitals/index.ts", "../../../node_modules/posthog-js/src/web-experiments.ts", "../../../node_modules/posthog-js/src/posthog-exceptions.ts", "../../../node_modules/posthog-js/src/site-apps.ts", "../../../node_modules/posthog-js/src/utils/identify-utils.ts", "../../../node_modules/posthog-js/src/posthog-core.ts", "../../../node_modules/posthog-js/src/entrypoints/module.no-external.es.ts", "../../javascript/controllers/products_controller.js", "../../javascript/controllers/push_controller.js", "../../javascript/controllers/questions_validator_controller.js", "../../javascript/controllers/scanner_controller.js", "../../../node_modules/src/core.ts", "../../../node_modules/src/strings.ts", "../../../node_modules/src/utils.ts", "../../../node_modules/src/zxing-html5-qrcode-decoder.ts", "../../../node_modules/src/native-bar-code-detector.ts", "../../../node_modules/src/code-decoder.ts", "../../../node_modules/src/camera/core-impl.ts", "../../../node_modules/src/camera/factories.ts", "../../../node_modules/src/camera/retriever.ts", "../../../node_modules/src/state-manager.ts", "../../../node_modules/src/html5-qrcode.ts", "../../../node_modules/src/image-assets.ts", "../../../node_modules/src/storage.ts", "../../../node_modules/src/ui.ts", "../../../node_modules/src/camera/permissions.ts", "../../../node_modules/src/ui/scanner/scan-type-selector.ts", "../../../node_modules/src/ui/scanner/base.ts", "../../../node_modules/src/ui/scanner/torch-button.ts", "../../../node_modules/src/ui/scanner/file-selection-ui.ts", "../../../node_modules/src/ui/scanner/camera-selection-ui.ts", "../../../node_modules/src/ui/scanner/camera-zoom-ui.ts", "../../../node_modules/src/html5-qrcode-scanner.ts", "../../javascript/controllers/service_controller.js", "../../javascript/controllers/service_worker_controller.js", "../../javascript/controllers/shared/auto_open_modal_controller.js", "../../javascript/controllers/shared/copy_to_clipboard_controller.js", "../../javascript/controllers/shared/image_upload_controller.js", "../../javascript/controllers/shared/live_dropdown_controller.js", "../../javascript/controllers/shared/masked_field_controller.js", "../../javascript/controllers/shared/nested_attributes_controller.js", "../../javascript/controllers/shared/payment_option_controller.js", "../../javascript/controllers/shared/reward_type_controller.js", "../../javascript/controllers/sign_in_controller.js", "../../javascript/controllers/subscribers_controller.js", "rails:/rails/app/javascript/controllers/**/*_controller.js", "rails:/rails/app/javascript/controllers/**/*_controller.ts", "../../javascript/controllers/index.js", "../../javascript/viewport/index.js", "../../../node_modules/@lottiefiles/lottie-player/node_modules/tslib/tslib.es6.js", "../../../node_modules/@lottiefiles/lottie-player/node_modules/@lit/reactive-element/css-tag.js", "../../../node_modules/@lottiefiles/lottie-player/node_modules/@lit/reactive-element/reactive-element.js", "../../../node_modules/@lottiefiles/lottie-player/node_modules/lit-html/lit-html.js", "../../../node_modules/@lottiefiles/lottie-player/node_modules/lit-element/lit-element.js", "../../../node_modules/@lottiefiles/lottie-player/node_modules/@lit/reactive-element/decorators/custom-element.js", "../../../node_modules/@lottiefiles/lottie-player/node_modules/@lit/reactive-element/decorators/property.js", "../../../node_modules/@lottiefiles/lottie-player/node_modules/@lit/reactive-element/decorators/state.js", "../../../node_modules/@lottiefiles/lottie-player/node_modules/@lit/reactive-element/decorators/base.js", "../../../node_modules/@lottiefiles/lottie-player/node_modules/@lit/reactive-element/decorators/event-options.js", "../../../node_modules/@lottiefiles/lottie-player/node_modules/@lit/reactive-element/decorators/query.js", "../../../node_modules/@lottiefiles/lottie-player/node_modules/@lit/reactive-element/decorators/query-all.js", "../../../node_modules/@lottiefiles/lottie-player/node_modules/@lit/reactive-element/decorators/query-async.js", "../../../node_modules/@lottiefiles/lottie-player/node_modules/@lit/reactive-element/decorators/query-assigned-elements.js", "../../../node_modules/@lottiefiles/lottie-player/node_modules/@lit/reactive-element/decorators/query-assigned-nodes.js", "../../../node_modules/@lottiefiles/lottie-player/node_modules/lottie-web/build/player/lottie.js", "../../../node_modules/@lottiefiles/lottie-player/src/lottie-player.styles.ts", "../../../node_modules/@lottiefiles/lottie-player/src/versions.ts", "../../../node_modules/@lottiefiles/lottie-player/src/lottie-player.ts"],
  "sourcesContent": ["/*\nUnobtrusive JavaScript\nhttps://github.com/rails/rails/blob/main/actionview/app/assets/javascripts\nReleased under the MIT license\n */;\n\n(function() {\n  var context = this;\n\n  (function() {\n    (function() {\n      this.Rails = {\n        linkClickSelector: 'a[data-confirm], a[data-method], a[data-remote]:not([disabled]), a[data-disable-with], a[data-disable]',\n        buttonClickSelector: {\n          selector: 'button[data-remote]:not([form]), button[data-confirm]:not([form])',\n          exclude: 'form button'\n        },\n        inputChangeSelector: 'select[data-remote], input[data-remote], textarea[data-remote]',\n        formSubmitSelector: 'form:not([data-turbo=true])',\n        formInputClickSelector: 'form:not([data-turbo=true]) input[type=submit], form:not([data-turbo=true]) input[type=image], form:not([data-turbo=true]) button[type=submit], form:not([data-turbo=true]) button:not([type]), input[type=submit][form], input[type=image][form], button[type=submit][form], button[form]:not([type])',\n        formDisableSelector: 'input[data-disable-with]:enabled, button[data-disable-with]:enabled, textarea[data-disable-with]:enabled, input[data-disable]:enabled, button[data-disable]:enabled, textarea[data-disable]:enabled',\n        formEnableSelector: 'input[data-disable-with]:disabled, button[data-disable-with]:disabled, textarea[data-disable-with]:disabled, input[data-disable]:disabled, button[data-disable]:disabled, textarea[data-disable]:disabled',\n        fileInputSelector: 'input[name][type=file]:not([disabled])',\n        linkDisableSelector: 'a[data-disable-with], a[data-disable]',\n        buttonDisableSelector: 'button[data-remote][data-disable-with], button[data-remote][data-disable]'\n      };\n\n    }).call(this);\n  }).call(context);\n\n  var Rails = context.Rails;\n\n  (function() {\n    (function() {\n      var nonce;\n\n      nonce = null;\n\n      Rails.loadCSPNonce = function() {\n        var ref;\n        return nonce = (ref = document.querySelector(\"meta[name=csp-nonce]\")) != null ? ref.content : void 0;\n      };\n\n      Rails.cspNonce = function() {\n        return nonce != null ? nonce : Rails.loadCSPNonce();\n      };\n\n    }).call(this);\n    (function() {\n      var expando, m;\n\n      m = Element.prototype.matches || Element.prototype.matchesSelector || Element.prototype.mozMatchesSelector || Element.prototype.msMatchesSelector || Element.prototype.oMatchesSelector || Element.prototype.webkitMatchesSelector;\n\n      Rails.matches = function(element, selector) {\n        if (selector.exclude != null) {\n          return m.call(element, selector.selector) && !m.call(element, selector.exclude);\n        } else {\n          return m.call(element, selector);\n        }\n      };\n\n      expando = '_ujsData';\n\n      Rails.getData = function(element, key) {\n        var ref;\n        return (ref = element[expando]) != null ? ref[key] : void 0;\n      };\n\n      Rails.setData = function(element, key, value) {\n        if (element[expando] == null) {\n          element[expando] = {};\n        }\n        return element[expando][key] = value;\n      };\n\n      Rails.isContentEditable = function(element) {\n        var isEditable;\n        isEditable = false;\n        while (true) {\n          if (element.isContentEditable) {\n            isEditable = true;\n            break;\n          }\n          element = element.parentElement;\n          if (!element) {\n            break;\n          }\n        }\n        return isEditable;\n      };\n\n      Rails.$ = function(selector) {\n        return Array.prototype.slice.call(document.querySelectorAll(selector));\n      };\n\n    }).call(this);\n    (function() {\n      var $, csrfParam, csrfToken;\n\n      $ = Rails.$;\n\n      csrfToken = Rails.csrfToken = function() {\n        var meta;\n        meta = document.querySelector('meta[name=csrf-token]');\n        return meta && meta.content;\n      };\n\n      csrfParam = Rails.csrfParam = function() {\n        var meta;\n        meta = document.querySelector('meta[name=csrf-param]');\n        return meta && meta.content;\n      };\n\n      Rails.CSRFProtection = function(xhr) {\n        var token;\n        token = csrfToken();\n        if (token != null) {\n          return xhr.setRequestHeader('X-CSRF-Token', token);\n        }\n      };\n\n      Rails.refreshCSRFTokens = function() {\n        var param, token;\n        token = csrfToken();\n        param = csrfParam();\n        if ((token != null) && (param != null)) {\n          return $('form input[name=\"' + param + '\"]').forEach(function(input) {\n            return input.value = token;\n          });\n        }\n      };\n\n    }).call(this);\n    (function() {\n      var CustomEvent, fire, matches, preventDefault;\n\n      matches = Rails.matches;\n\n      CustomEvent = window.CustomEvent;\n\n      if (typeof CustomEvent !== 'function') {\n        CustomEvent = function(event, params) {\n          var evt;\n          evt = document.createEvent('CustomEvent');\n          evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);\n          return evt;\n        };\n        CustomEvent.prototype = window.Event.prototype;\n        preventDefault = CustomEvent.prototype.preventDefault;\n        CustomEvent.prototype.preventDefault = function() {\n          var result;\n          result = preventDefault.call(this);\n          if (this.cancelable && !this.defaultPrevented) {\n            Object.defineProperty(this, 'defaultPrevented', {\n              get: function() {\n                return true;\n              }\n            });\n          }\n          return result;\n        };\n      }\n\n      fire = Rails.fire = function(obj, name, data) {\n        var event;\n        event = new CustomEvent(name, {\n          bubbles: true,\n          cancelable: true,\n          detail: data\n        });\n        obj.dispatchEvent(event);\n        return !event.defaultPrevented;\n      };\n\n      Rails.stopEverything = function(e) {\n        fire(e.target, 'ujs:everythingStopped');\n        e.preventDefault();\n        e.stopPropagation();\n        return e.stopImmediatePropagation();\n      };\n\n      Rails.delegate = function(element, selector, eventType, handler) {\n        return element.addEventListener(eventType, function(e) {\n          var target;\n          target = e.target;\n          while (!(!(target instanceof Element) || matches(target, selector))) {\n            target = target.parentNode;\n          }\n          if (target instanceof Element && handler.call(target, e) === false) {\n            e.preventDefault();\n            return e.stopPropagation();\n          }\n        });\n      };\n\n    }).call(this);\n    (function() {\n      var AcceptHeaders, CSRFProtection, createXHR, cspNonce, fire, prepareOptions, processResponse;\n\n      cspNonce = Rails.cspNonce, CSRFProtection = Rails.CSRFProtection, fire = Rails.fire;\n\n      AcceptHeaders = {\n        '*': '*/*',\n        text: 'text/plain',\n        html: 'text/html',\n        xml: 'application/xml, text/xml',\n        json: 'application/json, text/javascript',\n        script: 'text/javascript, application/javascript, application/ecmascript, application/x-ecmascript'\n      };\n\n      Rails.ajax = function(options) {\n        var xhr;\n        options = prepareOptions(options);\n        xhr = createXHR(options, function() {\n          var ref, response;\n          response = processResponse((ref = xhr.response) != null ? ref : xhr.responseText, xhr.getResponseHeader('Content-Type'));\n          if (Math.floor(xhr.status / 100) === 2) {\n            if (typeof options.success === \"function\") {\n              options.success(response, xhr.statusText, xhr);\n            }\n          } else {\n            if (typeof options.error === \"function\") {\n              options.error(response, xhr.statusText, xhr);\n            }\n          }\n          return typeof options.complete === \"function\" ? options.complete(xhr, xhr.statusText) : void 0;\n        });\n        if ((options.beforeSend != null) && !options.beforeSend(xhr, options)) {\n          return false;\n        }\n        if (xhr.readyState === XMLHttpRequest.OPENED) {\n          return xhr.send(options.data);\n        }\n      };\n\n      prepareOptions = function(options) {\n        options.url = options.url || location.href;\n        options.type = options.type.toUpperCase();\n        if (options.type === 'GET' && options.data) {\n          if (options.url.indexOf('?') < 0) {\n            options.url += '?' + options.data;\n          } else {\n            options.url += '&' + options.data;\n          }\n        }\n        if (AcceptHeaders[options.dataType] == null) {\n          options.dataType = '*';\n        }\n        options.accept = AcceptHeaders[options.dataType];\n        if (options.dataType !== '*') {\n          options.accept += ', */*; q=0.01';\n        }\n        return options;\n      };\n\n      createXHR = function(options, done) {\n        var xhr;\n        xhr = new XMLHttpRequest();\n        xhr.open(options.type, options.url, true);\n        xhr.setRequestHeader('Accept', options.accept);\n        if (typeof options.data === 'string') {\n          xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');\n        }\n        if (!options.crossDomain) {\n          xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n          CSRFProtection(xhr);\n        }\n        xhr.withCredentials = !!options.withCredentials;\n        xhr.onreadystatechange = function() {\n          if (xhr.readyState === XMLHttpRequest.DONE) {\n            return done(xhr);\n          }\n        };\n        return xhr;\n      };\n\n      processResponse = function(response, type) {\n        var parser, script;\n        if (typeof response === 'string' && typeof type === 'string') {\n          if (type.match(/\\bjson\\b/)) {\n            try {\n              response = JSON.parse(response);\n            } catch (error) {}\n          } else if (type.match(/\\b(?:java|ecma)script\\b/)) {\n            script = document.createElement('script');\n            script.setAttribute('nonce', cspNonce());\n            script.text = response;\n            document.head.appendChild(script).parentNode.removeChild(script);\n          } else if (type.match(/\\b(xml|html|svg)\\b/)) {\n            parser = new DOMParser();\n            type = type.replace(/;.+/, '');\n            try {\n              response = parser.parseFromString(response, type);\n            } catch (error) {}\n          }\n        }\n        return response;\n      };\n\n      Rails.href = function(element) {\n        return element.href;\n      };\n\n      Rails.isCrossDomain = function(url) {\n        var e, originAnchor, urlAnchor;\n        originAnchor = document.createElement('a');\n        originAnchor.href = location.href;\n        urlAnchor = document.createElement('a');\n        try {\n          urlAnchor.href = url;\n          return !(((!urlAnchor.protocol || urlAnchor.protocol === ':') && !urlAnchor.host) || (originAnchor.protocol + '//' + originAnchor.host === urlAnchor.protocol + '//' + urlAnchor.host));\n        } catch (error) {\n          e = error;\n          return true;\n        }\n      };\n\n    }).call(this);\n    (function() {\n      var matches, toArray;\n\n      matches = Rails.matches;\n\n      toArray = function(e) {\n        return Array.prototype.slice.call(e);\n      };\n\n      Rails.serializeElement = function(element, additionalParam) {\n        var inputs, params;\n        inputs = [element];\n        if (matches(element, 'form')) {\n          inputs = toArray(element.elements);\n        }\n        params = [];\n        inputs.forEach(function(input) {\n          if (!input.name || input.disabled) {\n            return;\n          }\n          if (matches(input, 'fieldset[disabled] *')) {\n            return;\n          }\n          if (matches(input, 'select')) {\n            return toArray(input.options).forEach(function(option) {\n              if (option.selected) {\n                return params.push({\n                  name: input.name,\n                  value: option.value\n                });\n              }\n            });\n          } else if (input.checked || ['radio', 'checkbox', 'submit'].indexOf(input.type) === -1) {\n            return params.push({\n              name: input.name,\n              value: input.value\n            });\n          }\n        });\n        if (additionalParam) {\n          params.push(additionalParam);\n        }\n        return params.map(function(param) {\n          if (param.name != null) {\n            return (encodeURIComponent(param.name)) + \"=\" + (encodeURIComponent(param.value));\n          } else {\n            return param;\n          }\n        }).join('&');\n      };\n\n      Rails.formElements = function(form, selector) {\n        if (matches(form, 'form')) {\n          return toArray(form.elements).filter(function(el) {\n            return matches(el, selector);\n          });\n        } else {\n          return toArray(form.querySelectorAll(selector));\n        }\n      };\n\n    }).call(this);\n    (function() {\n      var allowAction, fire, stopEverything;\n\n      fire = Rails.fire, stopEverything = Rails.stopEverything;\n\n      Rails.handleConfirm = function(e) {\n        if (!allowAction(this)) {\n          return stopEverything(e);\n        }\n      };\n\n      Rails.confirm = function(message, element) {\n        return confirm(message);\n      };\n\n      allowAction = function(element) {\n        var answer, callback, message;\n        message = element.getAttribute('data-confirm');\n        if (!message) {\n          return true;\n        }\n        answer = false;\n        if (fire(element, 'confirm')) {\n          try {\n            answer = Rails.confirm(message, element);\n          } catch (error) {}\n          callback = fire(element, 'confirm:complete', [answer]);\n        }\n        return answer && callback;\n      };\n\n    }).call(this);\n    (function() {\n      var disableFormElement, disableFormElements, disableLinkElement, enableFormElement, enableFormElements, enableLinkElement, formElements, getData, isContentEditable, isXhrRedirect, matches, setData, stopEverything;\n\n      matches = Rails.matches, getData = Rails.getData, setData = Rails.setData, stopEverything = Rails.stopEverything, formElements = Rails.formElements, isContentEditable = Rails.isContentEditable;\n\n      Rails.handleDisabledElement = function(e) {\n        var element;\n        element = this;\n        if (element.disabled) {\n          return stopEverything(e);\n        }\n      };\n\n      Rails.enableElement = function(e) {\n        var element;\n        if (e instanceof Event) {\n          if (isXhrRedirect(e)) {\n            return;\n          }\n          element = e.target;\n        } else {\n          element = e;\n        }\n        if (isContentEditable(element)) {\n          return;\n        }\n        if (matches(element, Rails.linkDisableSelector)) {\n          return enableLinkElement(element);\n        } else if (matches(element, Rails.buttonDisableSelector) || matches(element, Rails.formEnableSelector)) {\n          return enableFormElement(element);\n        } else if (matches(element, Rails.formSubmitSelector)) {\n          return enableFormElements(element);\n        }\n      };\n\n      Rails.disableElement = function(e) {\n        var element;\n        element = e instanceof Event ? e.target : e;\n        if (isContentEditable(element)) {\n          return;\n        }\n        if (matches(element, Rails.linkDisableSelector)) {\n          return disableLinkElement(element);\n        } else if (matches(element, Rails.buttonDisableSelector) || matches(element, Rails.formDisableSelector)) {\n          return disableFormElement(element);\n        } else if (matches(element, Rails.formSubmitSelector)) {\n          return disableFormElements(element);\n        }\n      };\n\n      disableLinkElement = function(element) {\n        var replacement;\n        if (getData(element, 'ujs:disabled')) {\n          return;\n        }\n        replacement = element.getAttribute('data-disable-with');\n        if (replacement != null) {\n          setData(element, 'ujs:enable-with', element.innerHTML);\n          element.innerHTML = replacement;\n        }\n        element.addEventListener('click', stopEverything);\n        return setData(element, 'ujs:disabled', true);\n      };\n\n      enableLinkElement = function(element) {\n        var originalText;\n        originalText = getData(element, 'ujs:enable-with');\n        if (originalText != null) {\n          element.innerHTML = originalText;\n          setData(element, 'ujs:enable-with', null);\n        }\n        element.removeEventListener('click', stopEverything);\n        return setData(element, 'ujs:disabled', null);\n      };\n\n      disableFormElements = function(form) {\n        return formElements(form, Rails.formDisableSelector).forEach(disableFormElement);\n      };\n\n      disableFormElement = function(element) {\n        var replacement;\n        if (getData(element, 'ujs:disabled')) {\n          return;\n        }\n        replacement = element.getAttribute('data-disable-with');\n        if (replacement != null) {\n          if (matches(element, 'button')) {\n            setData(element, 'ujs:enable-with', element.innerHTML);\n            element.innerHTML = replacement;\n          } else {\n            setData(element, 'ujs:enable-with', element.value);\n            element.value = replacement;\n          }\n        }\n        element.disabled = true;\n        return setData(element, 'ujs:disabled', true);\n      };\n\n      enableFormElements = function(form) {\n        return formElements(form, Rails.formEnableSelector).forEach(enableFormElement);\n      };\n\n      enableFormElement = function(element) {\n        var originalText;\n        originalText = getData(element, 'ujs:enable-with');\n        if (originalText != null) {\n          if (matches(element, 'button')) {\n            element.innerHTML = originalText;\n          } else {\n            element.value = originalText;\n          }\n          setData(element, 'ujs:enable-with', null);\n        }\n        element.disabled = false;\n        return setData(element, 'ujs:disabled', null);\n      };\n\n      isXhrRedirect = function(event) {\n        var ref, xhr;\n        xhr = (ref = event.detail) != null ? ref[0] : void 0;\n        return (xhr != null ? xhr.getResponseHeader(\"X-Xhr-Redirect\") : void 0) != null;\n      };\n\n    }).call(this);\n    (function() {\n      var isContentEditable, stopEverything;\n\n      stopEverything = Rails.stopEverything;\n\n      isContentEditable = Rails.isContentEditable;\n\n      Rails.handleMethod = function(e) {\n        var csrfParam, csrfToken, form, formContent, href, link, method;\n        link = this;\n        method = link.getAttribute('data-method');\n        if (!method) {\n          return;\n        }\n        if (isContentEditable(this)) {\n          return;\n        }\n        href = Rails.href(link);\n        csrfToken = Rails.csrfToken();\n        csrfParam = Rails.csrfParam();\n        form = document.createElement('form');\n        formContent = \"<input name='_method' value='\" + method + \"' type='hidden' />\";\n        if ((csrfParam != null) && (csrfToken != null) && !Rails.isCrossDomain(href)) {\n          formContent += \"<input name='\" + csrfParam + \"' value='\" + csrfToken + \"' type='hidden' />\";\n        }\n        formContent += '<input type=\"submit\" />';\n        form.method = 'post';\n        form.action = href;\n        form.target = link.target;\n        form.innerHTML = formContent;\n        form.style.display = 'none';\n        document.body.appendChild(form);\n        form.querySelector('[type=\"submit\"]').click();\n        return stopEverything(e);\n      };\n\n    }).call(this);\n    (function() {\n      var ajax, fire, getData, isContentEditable, isCrossDomain, isRemote, matches, serializeElement, setData, stopEverything,\n        slice = [].slice;\n\n      matches = Rails.matches, getData = Rails.getData, setData = Rails.setData, fire = Rails.fire, stopEverything = Rails.stopEverything, ajax = Rails.ajax, isCrossDomain = Rails.isCrossDomain, serializeElement = Rails.serializeElement, isContentEditable = Rails.isContentEditable;\n\n      isRemote = function(element) {\n        var value;\n        value = element.getAttribute('data-remote');\n        return (value != null) && value !== 'false';\n      };\n\n      Rails.handleRemote = function(e) {\n        var button, data, dataType, element, method, url, withCredentials;\n        element = this;\n        if (!isRemote(element)) {\n          return true;\n        }\n        if (!fire(element, 'ajax:before')) {\n          fire(element, 'ajax:stopped');\n          return false;\n        }\n        if (isContentEditable(element)) {\n          fire(element, 'ajax:stopped');\n          return false;\n        }\n        withCredentials = element.getAttribute('data-with-credentials');\n        dataType = element.getAttribute('data-type') || 'script';\n        if (matches(element, Rails.formSubmitSelector)) {\n          button = getData(element, 'ujs:submit-button');\n          method = getData(element, 'ujs:submit-button-formmethod') || element.method;\n          url = getData(element, 'ujs:submit-button-formaction') || element.getAttribute('action') || location.href;\n          if (method.toUpperCase() === 'GET') {\n            url = url.replace(/\\?.*$/, '');\n          }\n          if (element.enctype === 'multipart/form-data') {\n            data = new FormData(element);\n            if (button != null) {\n              data.append(button.name, button.value);\n            }\n          } else {\n            data = serializeElement(element, button);\n          }\n          setData(element, 'ujs:submit-button', null);\n          setData(element, 'ujs:submit-button-formmethod', null);\n          setData(element, 'ujs:submit-button-formaction', null);\n        } else if (matches(element, Rails.buttonClickSelector) || matches(element, Rails.inputChangeSelector)) {\n          method = element.getAttribute('data-method');\n          url = element.getAttribute('data-url');\n          data = serializeElement(element, element.getAttribute('data-params'));\n        } else {\n          method = element.getAttribute('data-method');\n          url = Rails.href(element);\n          data = element.getAttribute('data-params');\n        }\n        ajax({\n          type: method || 'GET',\n          url: url,\n          data: data,\n          dataType: dataType,\n          beforeSend: function(xhr, options) {\n            if (fire(element, 'ajax:beforeSend', [xhr, options])) {\n              return fire(element, 'ajax:send', [xhr]);\n            } else {\n              fire(element, 'ajax:stopped');\n              return false;\n            }\n          },\n          success: function() {\n            var args;\n            args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n            return fire(element, 'ajax:success', args);\n          },\n          error: function() {\n            var args;\n            args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n            return fire(element, 'ajax:error', args);\n          },\n          complete: function() {\n            var args;\n            args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n            return fire(element, 'ajax:complete', args);\n          },\n          crossDomain: isCrossDomain(url),\n          withCredentials: (withCredentials != null) && withCredentials !== 'false'\n        });\n        return stopEverything(e);\n      };\n\n      Rails.formSubmitButtonClick = function(e) {\n        var button, form;\n        button = this;\n        form = button.form;\n        if (!form) {\n          return;\n        }\n        if (button.name) {\n          setData(form, 'ujs:submit-button', {\n            name: button.name,\n            value: button.value\n          });\n        }\n        setData(form, 'ujs:formnovalidate-button', button.formNoValidate);\n        setData(form, 'ujs:submit-button-formaction', button.getAttribute('formaction'));\n        return setData(form, 'ujs:submit-button-formmethod', button.getAttribute('formmethod'));\n      };\n\n      Rails.preventInsignificantClick = function(e) {\n        var data, insignificantMetaClick, link, metaClick, method, nonPrimaryMouseClick;\n        link = this;\n        method = (link.getAttribute('data-method') || 'GET').toUpperCase();\n        data = link.getAttribute('data-params');\n        metaClick = e.metaKey || e.ctrlKey;\n        insignificantMetaClick = metaClick && method === 'GET' && !data;\n        nonPrimaryMouseClick = (e.button != null) && e.button !== 0;\n        if (nonPrimaryMouseClick || insignificantMetaClick) {\n          return e.stopImmediatePropagation();\n        }\n      };\n\n    }).call(this);\n    (function() {\n      var $, CSRFProtection, delegate, disableElement, enableElement, fire, formSubmitButtonClick, getData, handleConfirm, handleDisabledElement, handleMethod, handleRemote, loadCSPNonce, preventInsignificantClick, refreshCSRFTokens;\n\n      fire = Rails.fire, delegate = Rails.delegate, getData = Rails.getData, $ = Rails.$, refreshCSRFTokens = Rails.refreshCSRFTokens, CSRFProtection = Rails.CSRFProtection, loadCSPNonce = Rails.loadCSPNonce, enableElement = Rails.enableElement, disableElement = Rails.disableElement, handleDisabledElement = Rails.handleDisabledElement, handleConfirm = Rails.handleConfirm, preventInsignificantClick = Rails.preventInsignificantClick, handleRemote = Rails.handleRemote, formSubmitButtonClick = Rails.formSubmitButtonClick, handleMethod = Rails.handleMethod;\n\n      if ((typeof jQuery !== \"undefined\" && jQuery !== null) && (jQuery.ajax != null)) {\n        if (jQuery.rails) {\n          throw new Error('If you load both jquery_ujs and rails-ujs, use rails-ujs only.');\n        }\n        jQuery.rails = Rails;\n        jQuery.ajaxPrefilter(function(options, originalOptions, xhr) {\n          if (!options.crossDomain) {\n            return CSRFProtection(xhr);\n          }\n        });\n      }\n\n      Rails.start = function() {\n        if (window._rails_loaded) {\n          throw new Error('rails-ujs has already been loaded!');\n        }\n        window.addEventListener('pageshow', function() {\n          $(Rails.formEnableSelector).forEach(function(el) {\n            if (getData(el, 'ujs:disabled')) {\n              return enableElement(el);\n            }\n          });\n          return $(Rails.linkDisableSelector).forEach(function(el) {\n            if (getData(el, 'ujs:disabled')) {\n              return enableElement(el);\n            }\n          });\n        });\n        delegate(document, Rails.linkDisableSelector, 'ajax:complete', enableElement);\n        delegate(document, Rails.linkDisableSelector, 'ajax:stopped', enableElement);\n        delegate(document, Rails.buttonDisableSelector, 'ajax:complete', enableElement);\n        delegate(document, Rails.buttonDisableSelector, 'ajax:stopped', enableElement);\n        delegate(document, Rails.linkClickSelector, 'click', preventInsignificantClick);\n        delegate(document, Rails.linkClickSelector, 'click', handleDisabledElement);\n        delegate(document, Rails.linkClickSelector, 'click', handleConfirm);\n        delegate(document, Rails.linkClickSelector, 'click', disableElement);\n        delegate(document, Rails.linkClickSelector, 'click', handleRemote);\n        delegate(document, Rails.linkClickSelector, 'click', handleMethod);\n        delegate(document, Rails.buttonClickSelector, 'click', preventInsignificantClick);\n        delegate(document, Rails.buttonClickSelector, 'click', handleDisabledElement);\n        delegate(document, Rails.buttonClickSelector, 'click', handleConfirm);\n        delegate(document, Rails.buttonClickSelector, 'click', disableElement);\n        delegate(document, Rails.buttonClickSelector, 'click', handleRemote);\n        delegate(document, Rails.inputChangeSelector, 'change', handleDisabledElement);\n        delegate(document, Rails.inputChangeSelector, 'change', handleConfirm);\n        delegate(document, Rails.inputChangeSelector, 'change', handleRemote);\n        delegate(document, Rails.formSubmitSelector, 'submit', handleDisabledElement);\n        delegate(document, Rails.formSubmitSelector, 'submit', handleConfirm);\n        delegate(document, Rails.formSubmitSelector, 'submit', handleRemote);\n        delegate(document, Rails.formSubmitSelector, 'submit', function(e) {\n          return setTimeout((function() {\n            return disableElement(e);\n          }), 13);\n        });\n        delegate(document, Rails.formSubmitSelector, 'ajax:send', disableElement);\n        delegate(document, Rails.formSubmitSelector, 'ajax:complete', enableElement);\n        delegate(document, Rails.formInputClickSelector, 'click', preventInsignificantClick);\n        delegate(document, Rails.formInputClickSelector, 'click', handleDisabledElement);\n        delegate(document, Rails.formInputClickSelector, 'click', handleConfirm);\n        delegate(document, Rails.formInputClickSelector, 'click', formSubmitButtonClick);\n        document.addEventListener('DOMContentLoaded', refreshCSRFTokens);\n        document.addEventListener('DOMContentLoaded', loadCSPNonce);\n        return window._rails_loaded = true;\n      };\n\n      if (window.Rails === Rails && fire(document, 'rails:attachBindings')) {\n        Rails.start();\n      }\n\n    }).call(this);\n  }).call(this);\n\n  if (typeof module === \"object\" && module.exports) {\n    module.exports = Rails;\n  } else if (typeof define === \"function\" && define.amd) {\n    define(Rails);\n  }\n}).call(this);\n", "(function(global, factory) {\n  typeof exports === \"object\" && typeof module !== \"undefined\" ? factory(exports) : typeof define === \"function\" && define.amd ? define([ \"exports\" ], factory) : factory(global.ActiveStorage = {});\n})(this, function(exports) {\n  \"use strict\";\n  function createCommonjsModule(fn, module) {\n    return module = {\n      exports: {}\n    }, fn(module, module.exports), module.exports;\n  }\n  var sparkMd5 = createCommonjsModule(function(module, exports) {\n    (function(factory) {\n      {\n        module.exports = factory();\n      }\n    })(function(undefined) {\n      var hex_chr = [ \"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\" ];\n      function md5cycle(x, k) {\n        var a = x[0], b = x[1], c = x[2], d = x[3];\n        a += (b & c | ~b & d) + k[0] - 680876936 | 0;\n        a = (a << 7 | a >>> 25) + b | 0;\n        d += (a & b | ~a & c) + k[1] - 389564586 | 0;\n        d = (d << 12 | d >>> 20) + a | 0;\n        c += (d & a | ~d & b) + k[2] + 606105819 | 0;\n        c = (c << 17 | c >>> 15) + d | 0;\n        b += (c & d | ~c & a) + k[3] - 1044525330 | 0;\n        b = (b << 22 | b >>> 10) + c | 0;\n        a += (b & c | ~b & d) + k[4] - 176418897 | 0;\n        a = (a << 7 | a >>> 25) + b | 0;\n        d += (a & b | ~a & c) + k[5] + 1200080426 | 0;\n        d = (d << 12 | d >>> 20) + a | 0;\n        c += (d & a | ~d & b) + k[6] - 1473231341 | 0;\n        c = (c << 17 | c >>> 15) + d | 0;\n        b += (c & d | ~c & a) + k[7] - 45705983 | 0;\n        b = (b << 22 | b >>> 10) + c | 0;\n        a += (b & c | ~b & d) + k[8] + 1770035416 | 0;\n        a = (a << 7 | a >>> 25) + b | 0;\n        d += (a & b | ~a & c) + k[9] - 1958414417 | 0;\n        d = (d << 12 | d >>> 20) + a | 0;\n        c += (d & a | ~d & b) + k[10] - 42063 | 0;\n        c = (c << 17 | c >>> 15) + d | 0;\n        b += (c & d | ~c & a) + k[11] - 1990404162 | 0;\n        b = (b << 22 | b >>> 10) + c | 0;\n        a += (b & c | ~b & d) + k[12] + 1804603682 | 0;\n        a = (a << 7 | a >>> 25) + b | 0;\n        d += (a & b | ~a & c) + k[13] - 40341101 | 0;\n        d = (d << 12 | d >>> 20) + a | 0;\n        c += (d & a | ~d & b) + k[14] - 1502002290 | 0;\n        c = (c << 17 | c >>> 15) + d | 0;\n        b += (c & d | ~c & a) + k[15] + 1236535329 | 0;\n        b = (b << 22 | b >>> 10) + c | 0;\n        a += (b & d | c & ~d) + k[1] - 165796510 | 0;\n        a = (a << 5 | a >>> 27) + b | 0;\n        d += (a & c | b & ~c) + k[6] - 1069501632 | 0;\n        d = (d << 9 | d >>> 23) + a | 0;\n        c += (d & b | a & ~b) + k[11] + 643717713 | 0;\n        c = (c << 14 | c >>> 18) + d | 0;\n        b += (c & a | d & ~a) + k[0] - 373897302 | 0;\n        b = (b << 20 | b >>> 12) + c | 0;\n        a += (b & d | c & ~d) + k[5] - 701558691 | 0;\n        a = (a << 5 | a >>> 27) + b | 0;\n        d += (a & c | b & ~c) + k[10] + 38016083 | 0;\n        d = (d << 9 | d >>> 23) + a | 0;\n        c += (d & b | a & ~b) + k[15] - 660478335 | 0;\n        c = (c << 14 | c >>> 18) + d | 0;\n        b += (c & a | d & ~a) + k[4] - 405537848 | 0;\n        b = (b << 20 | b >>> 12) + c | 0;\n        a += (b & d | c & ~d) + k[9] + 568446438 | 0;\n        a = (a << 5 | a >>> 27) + b | 0;\n        d += (a & c | b & ~c) + k[14] - 1019803690 | 0;\n        d = (d << 9 | d >>> 23) + a | 0;\n        c += (d & b | a & ~b) + k[3] - 187363961 | 0;\n        c = (c << 14 | c >>> 18) + d | 0;\n        b += (c & a | d & ~a) + k[8] + 1163531501 | 0;\n        b = (b << 20 | b >>> 12) + c | 0;\n        a += (b & d | c & ~d) + k[13] - 1444681467 | 0;\n        a = (a << 5 | a >>> 27) + b | 0;\n        d += (a & c | b & ~c) + k[2] - 51403784 | 0;\n        d = (d << 9 | d >>> 23) + a | 0;\n        c += (d & b | a & ~b) + k[7] + 1735328473 | 0;\n        c = (c << 14 | c >>> 18) + d | 0;\n        b += (c & a | d & ~a) + k[12] - 1926607734 | 0;\n        b = (b << 20 | b >>> 12) + c | 0;\n        a += (b ^ c ^ d) + k[5] - 378558 | 0;\n        a = (a << 4 | a >>> 28) + b | 0;\n        d += (a ^ b ^ c) + k[8] - 2022574463 | 0;\n        d = (d << 11 | d >>> 21) + a | 0;\n        c += (d ^ a ^ b) + k[11] + 1839030562 | 0;\n        c = (c << 16 | c >>> 16) + d | 0;\n        b += (c ^ d ^ a) + k[14] - 35309556 | 0;\n        b = (b << 23 | b >>> 9) + c | 0;\n        a += (b ^ c ^ d) + k[1] - 1530992060 | 0;\n        a = (a << 4 | a >>> 28) + b | 0;\n        d += (a ^ b ^ c) + k[4] + 1272893353 | 0;\n        d = (d << 11 | d >>> 21) + a | 0;\n        c += (d ^ a ^ b) + k[7] - 155497632 | 0;\n        c = (c << 16 | c >>> 16) + d | 0;\n        b += (c ^ d ^ a) + k[10] - 1094730640 | 0;\n        b = (b << 23 | b >>> 9) + c | 0;\n        a += (b ^ c ^ d) + k[13] + 681279174 | 0;\n        a = (a << 4 | a >>> 28) + b | 0;\n        d += (a ^ b ^ c) + k[0] - 358537222 | 0;\n        d = (d << 11 | d >>> 21) + a | 0;\n        c += (d ^ a ^ b) + k[3] - 722521979 | 0;\n        c = (c << 16 | c >>> 16) + d | 0;\n        b += (c ^ d ^ a) + k[6] + 76029189 | 0;\n        b = (b << 23 | b >>> 9) + c | 0;\n        a += (b ^ c ^ d) + k[9] - 640364487 | 0;\n        a = (a << 4 | a >>> 28) + b | 0;\n        d += (a ^ b ^ c) + k[12] - 421815835 | 0;\n        d = (d << 11 | d >>> 21) + a | 0;\n        c += (d ^ a ^ b) + k[15] + 530742520 | 0;\n        c = (c << 16 | c >>> 16) + d | 0;\n        b += (c ^ d ^ a) + k[2] - 995338651 | 0;\n        b = (b << 23 | b >>> 9) + c | 0;\n        a += (c ^ (b | ~d)) + k[0] - 198630844 | 0;\n        a = (a << 6 | a >>> 26) + b | 0;\n        d += (b ^ (a | ~c)) + k[7] + 1126891415 | 0;\n        d = (d << 10 | d >>> 22) + a | 0;\n        c += (a ^ (d | ~b)) + k[14] - 1416354905 | 0;\n        c = (c << 15 | c >>> 17) + d | 0;\n        b += (d ^ (c | ~a)) + k[5] - 57434055 | 0;\n        b = (b << 21 | b >>> 11) + c | 0;\n        a += (c ^ (b | ~d)) + k[12] + 1700485571 | 0;\n        a = (a << 6 | a >>> 26) + b | 0;\n        d += (b ^ (a | ~c)) + k[3] - 1894986606 | 0;\n        d = (d << 10 | d >>> 22) + a | 0;\n        c += (a ^ (d | ~b)) + k[10] - 1051523 | 0;\n        c = (c << 15 | c >>> 17) + d | 0;\n        b += (d ^ (c | ~a)) + k[1] - 2054922799 | 0;\n        b = (b << 21 | b >>> 11) + c | 0;\n        a += (c ^ (b | ~d)) + k[8] + 1873313359 | 0;\n        a = (a << 6 | a >>> 26) + b | 0;\n        d += (b ^ (a | ~c)) + k[15] - 30611744 | 0;\n        d = (d << 10 | d >>> 22) + a | 0;\n        c += (a ^ (d | ~b)) + k[6] - 1560198380 | 0;\n        c = (c << 15 | c >>> 17) + d | 0;\n        b += (d ^ (c | ~a)) + k[13] + 1309151649 | 0;\n        b = (b << 21 | b >>> 11) + c | 0;\n        a += (c ^ (b | ~d)) + k[4] - 145523070 | 0;\n        a = (a << 6 | a >>> 26) + b | 0;\n        d += (b ^ (a | ~c)) + k[11] - 1120210379 | 0;\n        d = (d << 10 | d >>> 22) + a | 0;\n        c += (a ^ (d | ~b)) + k[2] + 718787259 | 0;\n        c = (c << 15 | c >>> 17) + d | 0;\n        b += (d ^ (c | ~a)) + k[9] - 343485551 | 0;\n        b = (b << 21 | b >>> 11) + c | 0;\n        x[0] = a + x[0] | 0;\n        x[1] = b + x[1] | 0;\n        x[2] = c + x[2] | 0;\n        x[3] = d + x[3] | 0;\n      }\n      function md5blk(s) {\n        var md5blks = [], i;\n        for (i = 0; i < 64; i += 4) {\n          md5blks[i >> 2] = s.charCodeAt(i) + (s.charCodeAt(i + 1) << 8) + (s.charCodeAt(i + 2) << 16) + (s.charCodeAt(i + 3) << 24);\n        }\n        return md5blks;\n      }\n      function md5blk_array(a) {\n        var md5blks = [], i;\n        for (i = 0; i < 64; i += 4) {\n          md5blks[i >> 2] = a[i] + (a[i + 1] << 8) + (a[i + 2] << 16) + (a[i + 3] << 24);\n        }\n        return md5blks;\n      }\n      function md51(s) {\n        var n = s.length, state = [ 1732584193, -271733879, -1732584194, 271733878 ], i, length, tail, tmp, lo, hi;\n        for (i = 64; i <= n; i += 64) {\n          md5cycle(state, md5blk(s.substring(i - 64, i)));\n        }\n        s = s.substring(i - 64);\n        length = s.length;\n        tail = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ];\n        for (i = 0; i < length; i += 1) {\n          tail[i >> 2] |= s.charCodeAt(i) << (i % 4 << 3);\n        }\n        tail[i >> 2] |= 128 << (i % 4 << 3);\n        if (i > 55) {\n          md5cycle(state, tail);\n          for (i = 0; i < 16; i += 1) {\n            tail[i] = 0;\n          }\n        }\n        tmp = n * 8;\n        tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n        lo = parseInt(tmp[2], 16);\n        hi = parseInt(tmp[1], 16) || 0;\n        tail[14] = lo;\n        tail[15] = hi;\n        md5cycle(state, tail);\n        return state;\n      }\n      function md51_array(a) {\n        var n = a.length, state = [ 1732584193, -271733879, -1732584194, 271733878 ], i, length, tail, tmp, lo, hi;\n        for (i = 64; i <= n; i += 64) {\n          md5cycle(state, md5blk_array(a.subarray(i - 64, i)));\n        }\n        a = i - 64 < n ? a.subarray(i - 64) : new Uint8Array(0);\n        length = a.length;\n        tail = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ];\n        for (i = 0; i < length; i += 1) {\n          tail[i >> 2] |= a[i] << (i % 4 << 3);\n        }\n        tail[i >> 2] |= 128 << (i % 4 << 3);\n        if (i > 55) {\n          md5cycle(state, tail);\n          for (i = 0; i < 16; i += 1) {\n            tail[i] = 0;\n          }\n        }\n        tmp = n * 8;\n        tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n        lo = parseInt(tmp[2], 16);\n        hi = parseInt(tmp[1], 16) || 0;\n        tail[14] = lo;\n        tail[15] = hi;\n        md5cycle(state, tail);\n        return state;\n      }\n      function rhex(n) {\n        var s = \"\", j;\n        for (j = 0; j < 4; j += 1) {\n          s += hex_chr[n >> j * 8 + 4 & 15] + hex_chr[n >> j * 8 & 15];\n        }\n        return s;\n      }\n      function hex(x) {\n        var i;\n        for (i = 0; i < x.length; i += 1) {\n          x[i] = rhex(x[i]);\n        }\n        return x.join(\"\");\n      }\n      if (hex(md51(\"hello\")) !== \"5d41402abc4b2a76b9719d911017c592\") ;\n      if (typeof ArrayBuffer !== \"undefined\" && !ArrayBuffer.prototype.slice) {\n        (function() {\n          function clamp(val, length) {\n            val = val | 0 || 0;\n            if (val < 0) {\n              return Math.max(val + length, 0);\n            }\n            return Math.min(val, length);\n          }\n          ArrayBuffer.prototype.slice = function(from, to) {\n            var length = this.byteLength, begin = clamp(from, length), end = length, num, target, targetArray, sourceArray;\n            if (to !== undefined) {\n              end = clamp(to, length);\n            }\n            if (begin > end) {\n              return new ArrayBuffer(0);\n            }\n            num = end - begin;\n            target = new ArrayBuffer(num);\n            targetArray = new Uint8Array(target);\n            sourceArray = new Uint8Array(this, begin, num);\n            targetArray.set(sourceArray);\n            return target;\n          };\n        })();\n      }\n      function toUtf8(str) {\n        if (/[\\u0080-\\uFFFF]/.test(str)) {\n          str = unescape(encodeURIComponent(str));\n        }\n        return str;\n      }\n      function utf8Str2ArrayBuffer(str, returnUInt8Array) {\n        var length = str.length, buff = new ArrayBuffer(length), arr = new Uint8Array(buff), i;\n        for (i = 0; i < length; i += 1) {\n          arr[i] = str.charCodeAt(i);\n        }\n        return returnUInt8Array ? arr : buff;\n      }\n      function arrayBuffer2Utf8Str(buff) {\n        return String.fromCharCode.apply(null, new Uint8Array(buff));\n      }\n      function concatenateArrayBuffers(first, second, returnUInt8Array) {\n        var result = new Uint8Array(first.byteLength + second.byteLength);\n        result.set(new Uint8Array(first));\n        result.set(new Uint8Array(second), first.byteLength);\n        return returnUInt8Array ? result : result.buffer;\n      }\n      function hexToBinaryString(hex) {\n        var bytes = [], length = hex.length, x;\n        for (x = 0; x < length - 1; x += 2) {\n          bytes.push(parseInt(hex.substr(x, 2), 16));\n        }\n        return String.fromCharCode.apply(String, bytes);\n      }\n      function SparkMD5() {\n        this.reset();\n      }\n      SparkMD5.prototype.append = function(str) {\n        this.appendBinary(toUtf8(str));\n        return this;\n      };\n      SparkMD5.prototype.appendBinary = function(contents) {\n        this._buff += contents;\n        this._length += contents.length;\n        var length = this._buff.length, i;\n        for (i = 64; i <= length; i += 64) {\n          md5cycle(this._hash, md5blk(this._buff.substring(i - 64, i)));\n        }\n        this._buff = this._buff.substring(i - 64);\n        return this;\n      };\n      SparkMD5.prototype.end = function(raw) {\n        var buff = this._buff, length = buff.length, i, tail = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], ret;\n        for (i = 0; i < length; i += 1) {\n          tail[i >> 2] |= buff.charCodeAt(i) << (i % 4 << 3);\n        }\n        this._finish(tail, length);\n        ret = hex(this._hash);\n        if (raw) {\n          ret = hexToBinaryString(ret);\n        }\n        this.reset();\n        return ret;\n      };\n      SparkMD5.prototype.reset = function() {\n        this._buff = \"\";\n        this._length = 0;\n        this._hash = [ 1732584193, -271733879, -1732584194, 271733878 ];\n        return this;\n      };\n      SparkMD5.prototype.getState = function() {\n        return {\n          buff: this._buff,\n          length: this._length,\n          hash: this._hash\n        };\n      };\n      SparkMD5.prototype.setState = function(state) {\n        this._buff = state.buff;\n        this._length = state.length;\n        this._hash = state.hash;\n        return this;\n      };\n      SparkMD5.prototype.destroy = function() {\n        delete this._hash;\n        delete this._buff;\n        delete this._length;\n      };\n      SparkMD5.prototype._finish = function(tail, length) {\n        var i = length, tmp, lo, hi;\n        tail[i >> 2] |= 128 << (i % 4 << 3);\n        if (i > 55) {\n          md5cycle(this._hash, tail);\n          for (i = 0; i < 16; i += 1) {\n            tail[i] = 0;\n          }\n        }\n        tmp = this._length * 8;\n        tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n        lo = parseInt(tmp[2], 16);\n        hi = parseInt(tmp[1], 16) || 0;\n        tail[14] = lo;\n        tail[15] = hi;\n        md5cycle(this._hash, tail);\n      };\n      SparkMD5.hash = function(str, raw) {\n        return SparkMD5.hashBinary(toUtf8(str), raw);\n      };\n      SparkMD5.hashBinary = function(content, raw) {\n        var hash = md51(content), ret = hex(hash);\n        return raw ? hexToBinaryString(ret) : ret;\n      };\n      SparkMD5.ArrayBuffer = function() {\n        this.reset();\n      };\n      SparkMD5.ArrayBuffer.prototype.append = function(arr) {\n        var buff = concatenateArrayBuffers(this._buff.buffer, arr, true), length = buff.length, i;\n        this._length += arr.byteLength;\n        for (i = 64; i <= length; i += 64) {\n          md5cycle(this._hash, md5blk_array(buff.subarray(i - 64, i)));\n        }\n        this._buff = i - 64 < length ? new Uint8Array(buff.buffer.slice(i - 64)) : new Uint8Array(0);\n        return this;\n      };\n      SparkMD5.ArrayBuffer.prototype.end = function(raw) {\n        var buff = this._buff, length = buff.length, tail = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], i, ret;\n        for (i = 0; i < length; i += 1) {\n          tail[i >> 2] |= buff[i] << (i % 4 << 3);\n        }\n        this._finish(tail, length);\n        ret = hex(this._hash);\n        if (raw) {\n          ret = hexToBinaryString(ret);\n        }\n        this.reset();\n        return ret;\n      };\n      SparkMD5.ArrayBuffer.prototype.reset = function() {\n        this._buff = new Uint8Array(0);\n        this._length = 0;\n        this._hash = [ 1732584193, -271733879, -1732584194, 271733878 ];\n        return this;\n      };\n      SparkMD5.ArrayBuffer.prototype.getState = function() {\n        var state = SparkMD5.prototype.getState.call(this);\n        state.buff = arrayBuffer2Utf8Str(state.buff);\n        return state;\n      };\n      SparkMD5.ArrayBuffer.prototype.setState = function(state) {\n        state.buff = utf8Str2ArrayBuffer(state.buff, true);\n        return SparkMD5.prototype.setState.call(this, state);\n      };\n      SparkMD5.ArrayBuffer.prototype.destroy = SparkMD5.prototype.destroy;\n      SparkMD5.ArrayBuffer.prototype._finish = SparkMD5.prototype._finish;\n      SparkMD5.ArrayBuffer.hash = function(arr, raw) {\n        var hash = md51_array(new Uint8Array(arr)), ret = hex(hash);\n        return raw ? hexToBinaryString(ret) : ret;\n      };\n      return SparkMD5;\n    });\n  });\n  var classCallCheck = function(instance, Constructor) {\n    if (!(instance instanceof Constructor)) {\n      throw new TypeError(\"Cannot call a class as a function\");\n    }\n  };\n  var createClass = function() {\n    function defineProperties(target, props) {\n      for (var i = 0; i < props.length; i++) {\n        var descriptor = props[i];\n        descriptor.enumerable = descriptor.enumerable || false;\n        descriptor.configurable = true;\n        if (\"value\" in descriptor) descriptor.writable = true;\n        Object.defineProperty(target, descriptor.key, descriptor);\n      }\n    }\n    return function(Constructor, protoProps, staticProps) {\n      if (protoProps) defineProperties(Constructor.prototype, protoProps);\n      if (staticProps) defineProperties(Constructor, staticProps);\n      return Constructor;\n    };\n  }();\n  var fileSlice = File.prototype.slice || File.prototype.mozSlice || File.prototype.webkitSlice;\n  var FileChecksum = function() {\n    createClass(FileChecksum, null, [ {\n      key: \"create\",\n      value: function create(file, callback) {\n        var instance = new FileChecksum(file);\n        instance.create(callback);\n      }\n    } ]);\n    function FileChecksum(file) {\n      classCallCheck(this, FileChecksum);\n      this.file = file;\n      this.chunkSize = 2097152;\n      this.chunkCount = Math.ceil(this.file.size / this.chunkSize);\n      this.chunkIndex = 0;\n    }\n    createClass(FileChecksum, [ {\n      key: \"create\",\n      value: function create(callback) {\n        var _this = this;\n        this.callback = callback;\n        this.md5Buffer = new sparkMd5.ArrayBuffer();\n        this.fileReader = new FileReader();\n        this.fileReader.addEventListener(\"load\", function(event) {\n          return _this.fileReaderDidLoad(event);\n        });\n        this.fileReader.addEventListener(\"error\", function(event) {\n          return _this.fileReaderDidError(event);\n        });\n        this.readNextChunk();\n      }\n    }, {\n      key: \"fileReaderDidLoad\",\n      value: function fileReaderDidLoad(event) {\n        this.md5Buffer.append(event.target.result);\n        if (!this.readNextChunk()) {\n          var binaryDigest = this.md5Buffer.end(true);\n          var base64digest = btoa(binaryDigest);\n          this.callback(null, base64digest);\n        }\n      }\n    }, {\n      key: \"fileReaderDidError\",\n      value: function fileReaderDidError(event) {\n        this.callback(\"Error reading \" + this.file.name);\n      }\n    }, {\n      key: \"readNextChunk\",\n      value: function readNextChunk() {\n        if (this.chunkIndex < this.chunkCount || this.chunkIndex == 0 && this.chunkCount == 0) {\n          var start = this.chunkIndex * this.chunkSize;\n          var end = Math.min(start + this.chunkSize, this.file.size);\n          var bytes = fileSlice.call(this.file, start, end);\n          this.fileReader.readAsArrayBuffer(bytes);\n          this.chunkIndex++;\n          return true;\n        } else {\n          return false;\n        }\n      }\n    } ]);\n    return FileChecksum;\n  }();\n  function getMetaValue(name) {\n    var element = findElement(document.head, 'meta[name=\"' + name + '\"]');\n    if (element) {\n      return element.getAttribute(\"content\");\n    }\n  }\n  function findElements(root, selector) {\n    if (typeof root == \"string\") {\n      selector = root;\n      root = document;\n    }\n    var elements = root.querySelectorAll(selector);\n    return toArray$1(elements);\n  }\n  function findElement(root, selector) {\n    if (typeof root == \"string\") {\n      selector = root;\n      root = document;\n    }\n    return root.querySelector(selector);\n  }\n  function dispatchEvent(element, type) {\n    var eventInit = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n    var disabled = element.disabled;\n    var bubbles = eventInit.bubbles, cancelable = eventInit.cancelable, detail = eventInit.detail;\n    var event = document.createEvent(\"Event\");\n    event.initEvent(type, bubbles || true, cancelable || true);\n    event.detail = detail || {};\n    try {\n      element.disabled = false;\n      element.dispatchEvent(event);\n    } finally {\n      element.disabled = disabled;\n    }\n    return event;\n  }\n  function toArray$1(value) {\n    if (Array.isArray(value)) {\n      return value;\n    } else if (Array.from) {\n      return Array.from(value);\n    } else {\n      return [].slice.call(value);\n    }\n  }\n  var BlobRecord = function() {\n    function BlobRecord(file, checksum, url) {\n      var _this = this;\n      classCallCheck(this, BlobRecord);\n      this.file = file;\n      this.attributes = {\n        filename: file.name,\n        content_type: file.type || \"application/octet-stream\",\n        byte_size: file.size,\n        checksum: checksum\n      };\n      this.xhr = new XMLHttpRequest();\n      this.xhr.open(\"POST\", url, true);\n      this.xhr.responseType = \"json\";\n      this.xhr.setRequestHeader(\"Content-Type\", \"application/json\");\n      this.xhr.setRequestHeader(\"Accept\", \"application/json\");\n      this.xhr.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\n      var csrfToken = getMetaValue(\"csrf-token\");\n      if (csrfToken != undefined) {\n        this.xhr.setRequestHeader(\"X-CSRF-Token\", csrfToken);\n      }\n      this.xhr.addEventListener(\"load\", function(event) {\n        return _this.requestDidLoad(event);\n      });\n      this.xhr.addEventListener(\"error\", function(event) {\n        return _this.requestDidError(event);\n      });\n    }\n    createClass(BlobRecord, [ {\n      key: \"create\",\n      value: function create(callback) {\n        this.callback = callback;\n        this.xhr.send(JSON.stringify({\n          blob: this.attributes\n        }));\n      }\n    }, {\n      key: \"requestDidLoad\",\n      value: function requestDidLoad(event) {\n        if (this.status >= 200 && this.status < 300) {\n          var response = this.response;\n          var direct_upload = response.direct_upload;\n          delete response.direct_upload;\n          this.attributes = response;\n          this.directUploadData = direct_upload;\n          this.callback(null, this.toJSON());\n        } else {\n          this.requestDidError(event);\n        }\n      }\n    }, {\n      key: \"requestDidError\",\n      value: function requestDidError(event) {\n        this.callback('Error creating Blob for \"' + this.file.name + '\". Status: ' + this.status);\n      }\n    }, {\n      key: \"toJSON\",\n      value: function toJSON() {\n        var result = {};\n        for (var key in this.attributes) {\n          result[key] = this.attributes[key];\n        }\n        return result;\n      }\n    }, {\n      key: \"status\",\n      get: function get$$1() {\n        return this.xhr.status;\n      }\n    }, {\n      key: \"response\",\n      get: function get$$1() {\n        var _xhr = this.xhr, responseType = _xhr.responseType, response = _xhr.response;\n        if (responseType == \"json\") {\n          return response;\n        } else {\n          return JSON.parse(response);\n        }\n      }\n    } ]);\n    return BlobRecord;\n  }();\n  var BlobUpload = function() {\n    function BlobUpload(blob) {\n      var _this = this;\n      classCallCheck(this, BlobUpload);\n      this.blob = blob;\n      this.file = blob.file;\n      var _blob$directUploadDat = blob.directUploadData, url = _blob$directUploadDat.url, headers = _blob$directUploadDat.headers;\n      this.xhr = new XMLHttpRequest();\n      this.xhr.open(\"PUT\", url, true);\n      this.xhr.responseType = \"text\";\n      for (var key in headers) {\n        this.xhr.setRequestHeader(key, headers[key]);\n      }\n      this.xhr.addEventListener(\"load\", function(event) {\n        return _this.requestDidLoad(event);\n      });\n      this.xhr.addEventListener(\"error\", function(event) {\n        return _this.requestDidError(event);\n      });\n    }\n    createClass(BlobUpload, [ {\n      key: \"create\",\n      value: function create(callback) {\n        this.callback = callback;\n        this.xhr.send(this.file.slice());\n      }\n    }, {\n      key: \"requestDidLoad\",\n      value: function requestDidLoad(event) {\n        var _xhr = this.xhr, status = _xhr.status, response = _xhr.response;\n        if (status >= 200 && status < 300) {\n          this.callback(null, response);\n        } else {\n          this.requestDidError(event);\n        }\n      }\n    }, {\n      key: \"requestDidError\",\n      value: function requestDidError(event) {\n        this.callback('Error storing \"' + this.file.name + '\". Status: ' + this.xhr.status);\n      }\n    } ]);\n    return BlobUpload;\n  }();\n  var id = 0;\n  var DirectUpload = function() {\n    function DirectUpload(file, url, delegate) {\n      classCallCheck(this, DirectUpload);\n      this.id = ++id;\n      this.file = file;\n      this.url = url;\n      this.delegate = delegate;\n    }\n    createClass(DirectUpload, [ {\n      key: \"create\",\n      value: function create(callback) {\n        var _this = this;\n        FileChecksum.create(this.file, function(error, checksum) {\n          if (error) {\n            callback(error);\n            return;\n          }\n          var blob = new BlobRecord(_this.file, checksum, _this.url);\n          notify(_this.delegate, \"directUploadWillCreateBlobWithXHR\", blob.xhr);\n          blob.create(function(error) {\n            if (error) {\n              callback(error);\n            } else {\n              var upload = new BlobUpload(blob);\n              notify(_this.delegate, \"directUploadWillStoreFileWithXHR\", upload.xhr);\n              upload.create(function(error) {\n                if (error) {\n                  callback(error);\n                } else {\n                  callback(null, blob.toJSON());\n                }\n              });\n            }\n          });\n        });\n      }\n    } ]);\n    return DirectUpload;\n  }();\n  function notify(object, methodName) {\n    if (object && typeof object[methodName] == \"function\") {\n      for (var _len = arguments.length, messages = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n        messages[_key - 2] = arguments[_key];\n      }\n      return object[methodName].apply(object, messages);\n    }\n  }\n  var DirectUploadController = function() {\n    function DirectUploadController(input, file) {\n      classCallCheck(this, DirectUploadController);\n      this.input = input;\n      this.file = file;\n      this.directUpload = new DirectUpload(this.file, this.url, this);\n      this.dispatch(\"initialize\");\n    }\n    createClass(DirectUploadController, [ {\n      key: \"start\",\n      value: function start(callback) {\n        var _this = this;\n        var hiddenInput = document.createElement(\"input\");\n        hiddenInput.type = \"hidden\";\n        hiddenInput.name = this.input.name;\n        this.input.insertAdjacentElement(\"beforebegin\", hiddenInput);\n        this.dispatch(\"start\");\n        this.directUpload.create(function(error, attributes) {\n          if (error) {\n            hiddenInput.parentNode.removeChild(hiddenInput);\n            _this.dispatchError(error);\n          } else {\n            hiddenInput.value = attributes.signed_id;\n          }\n          _this.dispatch(\"end\");\n          callback(error);\n        });\n      }\n    }, {\n      key: \"uploadRequestDidProgress\",\n      value: function uploadRequestDidProgress(event) {\n        var progress = event.loaded / event.total * 100;\n        if (progress) {\n          this.dispatch(\"progress\", {\n            progress: progress\n          });\n        }\n      }\n    }, {\n      key: \"dispatch\",\n      value: function dispatch(name) {\n        var detail = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n        detail.file = this.file;\n        detail.id = this.directUpload.id;\n        return dispatchEvent(this.input, \"direct-upload:\" + name, {\n          detail: detail\n        });\n      }\n    }, {\n      key: \"dispatchError\",\n      value: function dispatchError(error) {\n        var event = this.dispatch(\"error\", {\n          error: error\n        });\n        if (!event.defaultPrevented) {\n          alert(error);\n        }\n      }\n    }, {\n      key: \"directUploadWillCreateBlobWithXHR\",\n      value: function directUploadWillCreateBlobWithXHR(xhr) {\n        this.dispatch(\"before-blob-request\", {\n          xhr: xhr\n        });\n      }\n    }, {\n      key: \"directUploadWillStoreFileWithXHR\",\n      value: function directUploadWillStoreFileWithXHR(xhr) {\n        var _this2 = this;\n        this.dispatch(\"before-storage-request\", {\n          xhr: xhr\n        });\n        xhr.upload.addEventListener(\"progress\", function(event) {\n          return _this2.uploadRequestDidProgress(event);\n        });\n      }\n    }, {\n      key: \"url\",\n      get: function get$$1() {\n        return this.input.getAttribute(\"data-direct-upload-url\");\n      }\n    } ]);\n    return DirectUploadController;\n  }();\n  var inputSelector = \"input[type=file][data-direct-upload-url]:not([disabled])\";\n  var DirectUploadsController = function() {\n    function DirectUploadsController(form) {\n      classCallCheck(this, DirectUploadsController);\n      this.form = form;\n      this.inputs = findElements(form, inputSelector).filter(function(input) {\n        return input.files.length;\n      });\n    }\n    createClass(DirectUploadsController, [ {\n      key: \"start\",\n      value: function start(callback) {\n        var _this = this;\n        var controllers = this.createDirectUploadControllers();\n        var startNextController = function startNextController() {\n          var controller = controllers.shift();\n          if (controller) {\n            controller.start(function(error) {\n              if (error) {\n                callback(error);\n                _this.dispatch(\"end\");\n              } else {\n                startNextController();\n              }\n            });\n          } else {\n            callback();\n            _this.dispatch(\"end\");\n          }\n        };\n        this.dispatch(\"start\");\n        startNextController();\n      }\n    }, {\n      key: \"createDirectUploadControllers\",\n      value: function createDirectUploadControllers() {\n        var controllers = [];\n        this.inputs.forEach(function(input) {\n          toArray$1(input.files).forEach(function(file) {\n            var controller = new DirectUploadController(input, file);\n            controllers.push(controller);\n          });\n        });\n        return controllers;\n      }\n    }, {\n      key: \"dispatch\",\n      value: function dispatch(name) {\n        var detail = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n        return dispatchEvent(this.form, \"direct-uploads:\" + name, {\n          detail: detail\n        });\n      }\n    } ]);\n    return DirectUploadsController;\n  }();\n  var processingAttribute = \"data-direct-uploads-processing\";\n  var submitButtonsByForm = new WeakMap();\n  var started = false;\n  function start() {\n    if (!started) {\n      started = true;\n      document.addEventListener(\"click\", didClick, true);\n      document.addEventListener(\"submit\", didSubmitForm);\n      document.addEventListener(\"ajax:before\", didSubmitRemoteElement);\n    }\n  }\n  function didClick(event) {\n    var target = event.target;\n    if ((target.tagName == \"INPUT\" || target.tagName == \"BUTTON\") && target.type == \"submit\" && target.form) {\n      submitButtonsByForm.set(target.form, target);\n    }\n  }\n  function didSubmitForm(event) {\n    handleFormSubmissionEvent(event);\n  }\n  function didSubmitRemoteElement(event) {\n    if (event.target.tagName == \"FORM\") {\n      handleFormSubmissionEvent(event);\n    }\n  }\n  function handleFormSubmissionEvent(event) {\n    var form = event.target;\n    if (form.hasAttribute(processingAttribute)) {\n      event.preventDefault();\n      return;\n    }\n    var controller = new DirectUploadsController(form);\n    var inputs = controller.inputs;\n    if (inputs.length) {\n      event.preventDefault();\n      form.setAttribute(processingAttribute, \"\");\n      inputs.forEach(disable);\n      controller.start(function(error) {\n        form.removeAttribute(processingAttribute);\n        if (error) {\n          inputs.forEach(enable);\n        } else {\n          submitForm(form);\n        }\n      });\n    }\n  }\n  function submitForm(form) {\n    var button = submitButtonsByForm.get(form) || findElement(form, \"input[type=submit], button[type=submit]\");\n    if (button) {\n      var _button = button, disabled = _button.disabled;\n      button.disabled = false;\n      button.focus();\n      button.click();\n      button.disabled = disabled;\n    } else {\n      button = document.createElement(\"input\");\n      button.type = \"submit\";\n      button.style.display = \"none\";\n      form.appendChild(button);\n      button.click();\n      form.removeChild(button);\n    }\n    submitButtonsByForm.delete(form);\n  }\n  function disable(input) {\n    input.disabled = true;\n  }\n  function enable(input) {\n    input.disabled = false;\n  }\n  function autostart() {\n    if (window.ActiveStorage) {\n      start();\n    }\n  }\n  setTimeout(autostart, 1);\n  exports.start = start;\n  exports.DirectUpload = DirectUpload;\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n});\n", "export default {\n  logger: typeof console !== \"undefined\" ? console : undefined,\n  WebSocket: typeof WebSocket !== \"undefined\" ? WebSocket : undefined,\n}\n", "import adapters from \"./adapters\"\n\n// The logger is disabled by default. You can enable it with:\n//\n//   ActionCable.logger.enabled = true\n//\n//   Example:\n//\n//   import * as ActionCable from '@rails/actioncable'\n//\n//   ActionCable.logger.enabled = true\n//   ActionCable.logger.log('Connection Established.')\n//\n\nexport default {\n  log(...messages) {\n    if (this.enabled) {\n      messages.push(Date.now())\n      adapters.logger.log(\"[ActionCable]\", ...messages)\n    }\n  },\n}\n", "import logger from \"./logger\"\n\n// Responsible for ensuring the cable connection is in good health by validating the heartbeat pings sent from the server, and attempting\n// revival reconnections if things go astray. Internal class, not intended for direct user manipulation.\n\nconst now = () => new Date().getTime()\n\nconst secondsSince = time => (now() - time) / 1000\n\nclass ConnectionMonitor {\n  constructor(connection) {\n    this.visibilityDidChange = this.visibilityDidChange.bind(this)\n    this.connection = connection\n    this.reconnectAttempts = 0\n  }\n\n  start() {\n    if (!this.isRunning()) {\n      this.startedAt = now()\n      delete this.stoppedAt\n      this.startPolling()\n      addEventListener(\"visibilitychange\", this.visibilityDidChange)\n      logger.log(`ConnectionMonitor started. stale threshold = ${this.constructor.staleThreshold} s`)\n    }\n  }\n\n  stop() {\n    if (this.isRunning()) {\n      this.stoppedAt = now()\n      this.stopPolling()\n      removeEventListener(\"visibilitychange\", this.visibilityDidChange)\n      logger.log(\"ConnectionMonitor stopped\")\n    }\n  }\n\n  isRunning() {\n    return this.startedAt && !this.stoppedAt\n  }\n\n  recordMessage() {\n    this.pingedAt = now()\n  }\n\n  recordConnect() {\n    this.reconnectAttempts = 0\n    delete this.disconnectedAt\n    logger.log(\"ConnectionMonitor recorded connect\")\n  }\n\n  recordDisconnect() {\n    this.disconnectedAt = now()\n    logger.log(\"ConnectionMonitor recorded disconnect\")\n  }\n\n  // Private\n\n  startPolling() {\n    this.stopPolling()\n    this.poll()\n  }\n\n  stopPolling() {\n    clearTimeout(this.pollTimeout)\n  }\n\n  poll() {\n    this.pollTimeout = setTimeout(() => {\n      this.reconnectIfStale()\n      this.poll()\n    }\n    , this.getPollInterval())\n  }\n\n  getPollInterval() {\n    const { staleThreshold, reconnectionBackoffRate } = this.constructor\n    const backoff = Math.pow(1 + reconnectionBackoffRate, Math.min(this.reconnectAttempts, 10))\n    const jitterMax = this.reconnectAttempts === 0 ? 1.0 : reconnectionBackoffRate\n    const jitter = jitterMax * Math.random()\n    return staleThreshold * 1000 * backoff * (1 + jitter)\n  }\n\n  reconnectIfStale() {\n    if (this.connectionIsStale()) {\n      logger.log(`ConnectionMonitor detected stale connection. reconnectAttempts = ${this.reconnectAttempts}, time stale = ${secondsSince(this.refreshedAt)} s, stale threshold = ${this.constructor.staleThreshold} s`)\n      this.reconnectAttempts++\n      if (this.disconnectedRecently()) {\n        logger.log(`ConnectionMonitor skipping reopening recent disconnect. time disconnected = ${secondsSince(this.disconnectedAt)} s`)\n      } else {\n        logger.log(\"ConnectionMonitor reopening\")\n        this.connection.reopen()\n      }\n    }\n  }\n\n  get refreshedAt() {\n    return this.pingedAt ? this.pingedAt : this.startedAt\n  }\n\n  connectionIsStale() {\n    return secondsSince(this.refreshedAt) > this.constructor.staleThreshold\n  }\n\n  disconnectedRecently() {\n    return this.disconnectedAt && (secondsSince(this.disconnectedAt) < this.constructor.staleThreshold)\n  }\n\n  visibilityDidChange() {\n    if (document.visibilityState === \"visible\") {\n      setTimeout(() => {\n        if (this.connectionIsStale() || !this.connection.isOpen()) {\n          logger.log(`ConnectionMonitor reopening stale connection on visibilitychange. visibilityState = ${document.visibilityState}`)\n          this.connection.reopen()\n        }\n      }\n      , 200)\n    }\n  }\n\n}\n\nConnectionMonitor.staleThreshold = 6 // Server::Connections::BEAT_INTERVAL * 2 (missed two pings)\nConnectionMonitor.reconnectionBackoffRate = 0.15\n\nexport default ConnectionMonitor\n", "export default {\n  \"message_types\": {\n    \"welcome\": \"welcome\",\n    \"disconnect\": \"disconnect\",\n    \"ping\": \"ping\",\n    \"confirmation\": \"confirm_subscription\",\n    \"rejection\": \"reject_subscription\"\n  },\n  \"disconnect_reasons\": {\n    \"unauthorized\": \"unauthorized\",\n    \"invalid_request\": \"invalid_request\",\n    \"server_restart\": \"server_restart\",\n    \"remote\": \"remote\"\n  },\n  \"default_mount_path\": \"/cable\",\n  \"protocols\": [\n    \"actioncable-v1-json\",\n    \"actioncable-unsupported\"\n  ]\n}\n", "import adapters from \"./adapters\"\nimport ConnectionMonitor from \"./connection_monitor\"\nimport INTERNAL from \"./internal\"\nimport logger from \"./logger\"\n\n// Encapsulate the cable connection held by the consumer. This is an internal class not intended for direct user manipulation.\n\nconst {message_types, protocols} = INTERNAL\nconst supportedProtocols = protocols.slice(0, protocols.length - 1)\n\nconst indexOf = [].indexOf\n\nclass Connection {\n  constructor(consumer) {\n    this.open = this.open.bind(this)\n    this.consumer = consumer\n    this.subscriptions = this.consumer.subscriptions\n    this.monitor = new ConnectionMonitor(this)\n    this.disconnected = true\n  }\n\n  send(data) {\n    if (this.isOpen()) {\n      this.webSocket.send(JSON.stringify(data))\n      return true\n    } else {\n      return false\n    }\n  }\n\n  open() {\n    if (this.isActive()) {\n      logger.log(`Attempted to open WebSocket, but existing socket is ${this.getState()}`)\n      return false\n    } else {\n      const socketProtocols = [...protocols, ...this.consumer.subprotocols || []]\n      logger.log(`Opening WebSocket, current state is ${this.getState()}, subprotocols: ${socketProtocols}`)\n      if (this.webSocket) { this.uninstallEventHandlers() }\n      this.webSocket = new adapters.WebSocket(this.consumer.url, socketProtocols)\n      this.installEventHandlers()\n      this.monitor.start()\n      return true\n    }\n  }\n\n  close({allowReconnect} = {allowReconnect: true}) {\n    if (!allowReconnect) { this.monitor.stop() }\n    // Avoid closing websockets in a \"connecting\" state due to Safari 15.1+ bug. See: https://github.com/rails/rails/issues/43835#issuecomment-1002288478\n    if (this.isOpen()) {\n      return this.webSocket.close()\n    }\n  }\n\n  reopen() {\n    logger.log(`Reopening WebSocket, current state is ${this.getState()}`)\n    if (this.isActive()) {\n      try {\n        return this.close()\n      } catch (error) {\n        logger.log(\"Failed to reopen WebSocket\", error)\n      }\n      finally {\n        logger.log(`Reopening WebSocket in ${this.constructor.reopenDelay}ms`)\n        setTimeout(this.open, this.constructor.reopenDelay)\n      }\n    } else {\n      return this.open()\n    }\n  }\n\n  getProtocol() {\n    if (this.webSocket) {\n      return this.webSocket.protocol\n    }\n  }\n\n  isOpen() {\n    return this.isState(\"open\")\n  }\n\n  isActive() {\n    return this.isState(\"open\", \"connecting\")\n  }\n\n  triedToReconnect() {\n    return this.monitor.reconnectAttempts > 0\n  }\n\n  // Private\n\n  isProtocolSupported() {\n    return indexOf.call(supportedProtocols, this.getProtocol()) >= 0\n  }\n\n  isState(...states) {\n    return indexOf.call(states, this.getState()) >= 0\n  }\n\n  getState() {\n    if (this.webSocket) {\n      for (let state in adapters.WebSocket) {\n        if (adapters.WebSocket[state] === this.webSocket.readyState) {\n          return state.toLowerCase()\n        }\n      }\n    }\n    return null\n  }\n\n  installEventHandlers() {\n    for (let eventName in this.events) {\n      const handler = this.events[eventName].bind(this)\n      this.webSocket[`on${eventName}`] = handler\n    }\n  }\n\n  uninstallEventHandlers() {\n    for (let eventName in this.events) {\n      this.webSocket[`on${eventName}`] = function() {}\n    }\n  }\n\n}\n\nConnection.reopenDelay = 500\n\nConnection.prototype.events = {\n  message(event) {\n    if (!this.isProtocolSupported()) { return }\n    const {identifier, message, reason, reconnect, type} = JSON.parse(event.data)\n    this.monitor.recordMessage()\n    switch (type) {\n      case message_types.welcome:\n        if (this.triedToReconnect()) {\n          this.reconnectAttempted = true\n        }\n        this.monitor.recordConnect()\n        return this.subscriptions.reload()\n      case message_types.disconnect:\n        logger.log(`Disconnecting. Reason: ${reason}`)\n        return this.close({allowReconnect: reconnect})\n      case message_types.ping:\n        return null\n      case message_types.confirmation:\n        this.subscriptions.confirmSubscription(identifier)\n        if (this.reconnectAttempted) {\n          this.reconnectAttempted = false\n          return this.subscriptions.notify(identifier, \"connected\", {reconnected: true})\n        } else {\n          return this.subscriptions.notify(identifier, \"connected\", {reconnected: false})\n        }\n      case message_types.rejection:\n        return this.subscriptions.reject(identifier)\n      default:\n        return this.subscriptions.notify(identifier, \"received\", message)\n    }\n  },\n\n  open() {\n    logger.log(`WebSocket onopen event, using '${this.getProtocol()}' subprotocol`)\n    this.disconnected = false\n    if (!this.isProtocolSupported()) {\n      logger.log(\"Protocol is unsupported. Stopping monitor and disconnecting.\")\n      return this.close({allowReconnect: false})\n    }\n  },\n\n  close(event) {\n    logger.log(\"WebSocket onclose event\")\n    if (this.disconnected) { return }\n    this.disconnected = true\n    this.monitor.recordDisconnect()\n    return this.subscriptions.notifyAll(\"disconnected\", {willAttemptReconnect: this.monitor.isRunning()})\n  },\n\n  error() {\n    logger.log(\"WebSocket onerror event\")\n  }\n}\n\nexport default Connection\n", "// A new subscription is created through the ActionCable.Subscriptions instance available on the consumer.\n// It provides a number of callbacks and a method for calling remote procedure calls on the corresponding\n// Channel instance on the server side.\n//\n// An example demonstrates the basic functionality:\n//\n//   App.appearance = App.cable.subscriptions.create(\"AppearanceChannel\", {\n//     connected() {\n//       // Called once the subscription has been successfully completed\n//     },\n//\n//     disconnected({ willAttemptReconnect: boolean }) {\n//       // Called when the client has disconnected with the server.\n//       // The object will have an `willAttemptReconnect` property which\n//       // says whether the client has the intention of attempting\n//       // to reconnect.\n//     },\n//\n//     appear() {\n//       this.perform('appear', {appearing_on: this.appearingOn()})\n//     },\n//\n//     away() {\n//       this.perform('away')\n//     },\n//\n//     appearingOn() {\n//       $('main').data('appearing-on')\n//     }\n//   })\n//\n// The methods #appear and #away forward their intent to the remote AppearanceChannel instance on the server\n// by calling the `perform` method with the first parameter being the action (which maps to AppearanceChannel#appear/away).\n// The second parameter is a hash that'll get JSON encoded and made available on the server in the data parameter.\n//\n// This is how the server component would look:\n//\n//   class AppearanceChannel < ApplicationActionCable::Channel\n//     def subscribed\n//       current_user.appear\n//     end\n//\n//     def unsubscribed\n//       current_user.disappear\n//     end\n//\n//     def appear(data)\n//       current_user.appear on: data['appearing_on']\n//     end\n//\n//     def away\n//       current_user.away\n//     end\n//   end\n//\n// The \"AppearanceChannel\" name is automatically mapped between the client-side subscription creation and the server-side Ruby class name.\n// The AppearanceChannel#appear/away public methods are exposed automatically to client-side invocation through the perform method.\n\nconst extend = function(object, properties) {\n  if (properties != null) {\n    for (let key in properties) {\n      const value = properties[key]\n      object[key] = value\n    }\n  }\n  return object\n}\n\nexport default class Subscription {\n  constructor(consumer, params = {}, mixin) {\n    this.consumer = consumer\n    this.identifier = JSON.stringify(params)\n    extend(this, mixin)\n  }\n\n  // Perform a channel action with the optional data passed as an attribute\n  perform(action, data = {}) {\n    data.action = action\n    return this.send(data)\n  }\n\n  send(data) {\n    return this.consumer.send({command: \"message\", identifier: this.identifier, data: JSON.stringify(data)})\n  }\n\n  unsubscribe() {\n    return this.consumer.subscriptions.remove(this)\n  }\n}\n", "import logger from \"./logger\"\n\n// Responsible for ensuring channel subscribe command is confirmed, retrying until confirmation is received.\n// Internal class, not intended for direct user manipulation.\n\nclass SubscriptionGuarantor {\n  constructor(subscriptions) {\n    this.subscriptions = subscriptions\n    this.pendingSubscriptions = []\n  }\n\n  guarantee(subscription) {\n    if(this.pendingSubscriptions.indexOf(subscription) == -1){ \n      logger.log(`SubscriptionGuarantor guaranteeing ${subscription.identifier}`)\n      this.pendingSubscriptions.push(subscription) \n    }\n    else {\n      logger.log(`SubscriptionGuarantor already guaranteeing ${subscription.identifier}`)\n    }\n    this.startGuaranteeing()\n  }\n\n  forget(subscription) {\n    logger.log(`SubscriptionGuarantor forgetting ${subscription.identifier}`)\n    this.pendingSubscriptions = (this.pendingSubscriptions.filter((s) => s !== subscription))\n  }\n\n  startGuaranteeing() {\n    this.stopGuaranteeing()\n    this.retrySubscribing()\n  }\n  \n  stopGuaranteeing() {\n    clearTimeout(this.retryTimeout)\n  }\n\n  retrySubscribing() {\n    this.retryTimeout = setTimeout(() => {\n      if (this.subscriptions && typeof(this.subscriptions.subscribe) === \"function\") {\n        this.pendingSubscriptions.map((subscription) => {\n          logger.log(`SubscriptionGuarantor resubscribing ${subscription.identifier}`)\n          this.subscriptions.subscribe(subscription)\n        })\n      }\n    }\n    , 500)\n  }\n}\n\nexport default SubscriptionGuarantor", "import Subscription from \"./subscription\"\nimport SubscriptionGuarantor from \"./subscription_guarantor\"\nimport logger from \"./logger\"\n\n// Collection class for creating (and internally managing) channel subscriptions.\n// The only method intended to be triggered by the user is ActionCable.Subscriptions#create,\n// and it should be called through the consumer like so:\n//\n//   App = {}\n//   App.cable = ActionCable.createConsumer(\"ws://example.com/accounts/1\")\n//   App.appearance = App.cable.subscriptions.create(\"AppearanceChannel\")\n//\n// For more details on how you'd configure an actual channel subscription, see ActionCable.Subscription.\n\nexport default class Subscriptions {\n  constructor(consumer) {\n    this.consumer = consumer\n    this.guarantor = new SubscriptionGuarantor(this)\n    this.subscriptions = []\n  }\n\n  create(channelName, mixin) {\n    const channel = channelName\n    const params = typeof channel === \"object\" ? channel : {channel}\n    const subscription = new Subscription(this.consumer, params, mixin)\n    return this.add(subscription)\n  }\n\n  // Private\n\n  add(subscription) {\n    this.subscriptions.push(subscription)\n    this.consumer.ensureActiveConnection()\n    this.notify(subscription, \"initialized\")\n    this.subscribe(subscription)\n    return subscription\n  }\n\n  remove(subscription) {\n    this.forget(subscription)\n    if (!this.findAll(subscription.identifier).length) {\n      this.sendCommand(subscription, \"unsubscribe\")\n    }\n    return subscription\n  }\n\n  reject(identifier) {\n    return this.findAll(identifier).map((subscription) => {\n      this.forget(subscription)\n      this.notify(subscription, \"rejected\")\n      return subscription\n    })\n  }\n\n  forget(subscription) {\n    this.guarantor.forget(subscription)\n    this.subscriptions = (this.subscriptions.filter((s) => s !== subscription))\n    return subscription\n  }\n\n  findAll(identifier) {\n    return this.subscriptions.filter((s) => s.identifier === identifier)\n  }\n\n  reload() {\n    return this.subscriptions.map((subscription) =>\n      this.subscribe(subscription))\n  }\n\n  notifyAll(callbackName, ...args) {\n    return this.subscriptions.map((subscription) =>\n      this.notify(subscription, callbackName, ...args))\n  }\n\n  notify(subscription, callbackName, ...args) {\n    let subscriptions\n    if (typeof subscription === \"string\") {\n      subscriptions = this.findAll(subscription)\n    } else {\n      subscriptions = [subscription]\n    }\n\n    return subscriptions.map((subscription) =>\n      (typeof subscription[callbackName] === \"function\" ? subscription[callbackName](...args) : undefined))\n  }\n\n  subscribe(subscription) {\n    if (this.sendCommand(subscription, \"subscribe\")) {\n      this.guarantor.guarantee(subscription)\n    }\n  }\n\n  confirmSubscription(identifier) {\n    logger.log(`Subscription confirmed ${identifier}`)\n    this.findAll(identifier).map((subscription) =>\n      this.guarantor.forget(subscription))\n  }\n\n  sendCommand(subscription, command) {\n    const {identifier} = subscription\n    return this.consumer.send({command, identifier})\n  }\n}\n", "import Connection from \"./connection\"\nimport Subscriptions from \"./subscriptions\"\n\n// The ActionCable.Consumer establishes the connection to a server-side Ruby Connection object. Once established,\n// the ActionCable.ConnectionMonitor will ensure that its properly maintained through heartbeats and checking for stale updates.\n// The Consumer instance is also the gateway to establishing subscriptions to desired channels through the #createSubscription\n// method.\n//\n// The following example shows how this can be set up:\n//\n//   App = {}\n//   App.cable = ActionCable.createConsumer(\"ws://example.com/accounts/1\")\n//   App.appearance = App.cable.subscriptions.create(\"AppearanceChannel\")\n//\n// For more details on how you'd configure an actual channel subscription, see ActionCable.Subscription.\n//\n// When a consumer is created, it automatically connects with the server.\n//\n// To disconnect from the server, call\n//\n//   App.cable.disconnect()\n//\n// and to restart the connection:\n//\n//   App.cable.connect()\n//\n// Any channel subscriptions which existed prior to disconnecting will\n// automatically resubscribe.\n\nexport default class Consumer {\n  constructor(url) {\n    this._url = url\n    this.subscriptions = new Subscriptions(this)\n    this.connection = new Connection(this)\n    this.subprotocols = []\n  }\n\n  get url() {\n    return createWebSocketURL(this._url)\n  }\n\n  send(data) {\n    return this.connection.send(data)\n  }\n\n  connect() {\n    return this.connection.open()\n  }\n\n  disconnect() {\n    return this.connection.close({allowReconnect: false})\n  }\n\n  ensureActiveConnection() {\n    if (!this.connection.isActive()) {\n      return this.connection.open()\n    }\n  }\n\n  addSubProtocol(subprotocol) {\n    this.subprotocols = [...this.subprotocols, subprotocol]\n  }\n}\n\nexport function createWebSocketURL(url) {\n  if (typeof url === \"function\") {\n    url = url()\n  }\n\n  if (url && !/^wss?:/i.test(url)) {\n    const a = document.createElement(\"a\")\n    a.href = url\n    // Fix populating Location properties in IE. Otherwise, protocol will be blank.\n    a.href = a.href\n    a.protocol = a.protocol.replace(\"http\", \"ws\")\n    return a.href\n  } else {\n    return url\n  }\n}\n", "import Connection from \"./connection\"\nimport ConnectionMonitor from \"./connection_monitor\"\nimport Consumer, { createWebSocketURL } from \"./consumer\"\nimport INTERNAL from \"./internal\"\nimport Subscription from \"./subscription\"\nimport Subscriptions from \"./subscriptions\"\nimport SubscriptionGuarantor from \"./subscription_guarantor\"\nimport adapters from \"./adapters\"\nimport logger from \"./logger\"\n\nexport {\n  Connection,\n  ConnectionMonitor,\n  Consumer,\n  INTERNAL,\n  Subscription,\n  Subscriptions,\n  SubscriptionGuarantor,\n  adapters,\n  createWebSocketURL,\n  logger,\n}\n\nexport function createConsumer(url = getConfig(\"url\") || INTERNAL.default_mount_path) {\n  return new Consumer(url)\n}\n\nexport function getConfig(name) {\n  const element = document.head.querySelector(`meta[name='action-cable-${name}']`)\n  if (element) {\n    return element.getAttribute(\"content\")\n  }\n}\n", "/*!\n * Chartkick.js\n * Create beautiful charts with one line of JavaScript\n * https://github.com/ankane/chartkick.js\n * v4.2.0\n * MIT License\n */\n\n(function (global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n  typeof define === 'function' && define.amd ? define(factory) :\n  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Chartkick = factory());\n})(this, (function () { 'use strict';\n\n  function isArray(variable) {\n    return Object.prototype.toString.call(variable) === \"[object Array]\";\n  }\n\n  function isFunction(variable) {\n    return variable instanceof Function;\n  }\n\n  function isPlainObject(variable) {\n    // protect against prototype pollution, defense 2\n    return Object.prototype.toString.call(variable) === \"[object Object]\" && !isFunction(variable) && variable instanceof Object;\n  }\n\n  // https://github.com/madrobby/zepto/blob/master/src/zepto.js\n  function extend(target, source) {\n    var key;\n    for (key in source) {\n      // protect against prototype pollution, defense 1\n      if (key === \"__proto__\") { continue; }\n\n      if (isPlainObject(source[key]) || isArray(source[key])) {\n        if (isPlainObject(source[key]) && !isPlainObject(target[key])) {\n          target[key] = {};\n        }\n        if (isArray(source[key]) && !isArray(target[key])) {\n          target[key] = [];\n        }\n        extend(target[key], source[key]);\n      } else if (source[key] !== undefined) {\n        target[key] = source[key];\n      }\n    }\n  }\n\n  function merge(obj1, obj2) {\n    var target = {};\n    extend(target, obj1);\n    extend(target, obj2);\n    return target;\n  }\n\n  var DATE_PATTERN = /^(\\d\\d\\d\\d)(-)?(\\d\\d)(-)?(\\d\\d)$/i;\n\n  function negativeValues(series) {\n    var i, j, data;\n    for (i = 0; i < series.length; i++) {\n      data = series[i].data;\n      for (j = 0; j < data.length; j++) {\n        if (data[j][1] < 0) {\n          return true;\n        }\n      }\n    }\n    return false;\n  }\n\n  function toStr(n) {\n    return \"\" + n;\n  }\n\n  function toFloat(n) {\n    return parseFloat(n);\n  }\n\n  function toDate(n) {\n    var matches, year, month, day;\n    if (typeof n !== \"object\") {\n      if (typeof n === \"number\") {\n        n = new Date(n * 1000); // ms\n      } else {\n        n = toStr(n);\n        if ((matches = n.match(DATE_PATTERN))) {\n          year = parseInt(matches[1], 10);\n          month = parseInt(matches[3], 10) - 1;\n          day = parseInt(matches[5], 10);\n          return new Date(year, month, day);\n        } else {\n          // try our best to get the str into iso8601\n          // TODO be smarter about this\n          var str = n.replace(/ /, \"T\").replace(\" \", \"\").replace(\"UTC\", \"Z\");\n          // Date.parse returns milliseconds if valid and NaN if invalid\n          n = new Date(Date.parse(str) || n);\n        }\n      }\n    }\n    return n;\n  }\n\n  function toArr(n) {\n    if (!isArray(n)) {\n      var arr = [], i;\n      for (i in n) {\n        if (n.hasOwnProperty(i)) {\n          arr.push([i, n[i]]);\n        }\n      }\n      n = arr;\n    }\n    return n;\n  }\n\n  function jsOptionsFunc(defaultOptions, hideLegend, setTitle, setMin, setMax, setStacked, setXtitle, setYtitle) {\n    return function (chart, opts, chartOptions) {\n      var series = chart.data;\n      var options = merge({}, defaultOptions);\n      options = merge(options, chartOptions || {});\n\n      if (chart.singleSeriesFormat || \"legend\" in opts) {\n        hideLegend(options, opts.legend, chart.singleSeriesFormat);\n      }\n\n      if (opts.title) {\n        setTitle(options, opts.title);\n      }\n\n      // min\n      if (\"min\" in opts) {\n        setMin(options, opts.min);\n      } else if (!negativeValues(series)) {\n        setMin(options, 0);\n      }\n\n      // max\n      if (opts.max) {\n        setMax(options, opts.max);\n      }\n\n      if (\"stacked\" in opts) {\n        setStacked(options, opts.stacked);\n      }\n\n      if (opts.colors) {\n        options.colors = opts.colors;\n      }\n\n      if (opts.xtitle) {\n        setXtitle(options, opts.xtitle);\n      }\n\n      if (opts.ytitle) {\n        setYtitle(options, opts.ytitle);\n      }\n\n      // merge library last\n      options = merge(options, opts.library || {});\n\n      return options;\n    };\n  }\n\n  function sortByTime(a, b) {\n    return a[0].getTime() - b[0].getTime();\n  }\n\n  function sortByNumberSeries(a, b) {\n    return a[0] - b[0];\n  }\n\n  function sortByNumber(a, b) {\n    return a - b;\n  }\n\n  function isMinute(d) {\n    return d.getMilliseconds() === 0 && d.getSeconds() === 0;\n  }\n\n  function isHour(d) {\n    return isMinute(d) && d.getMinutes() === 0;\n  }\n\n  function isDay(d) {\n    return isHour(d) && d.getHours() === 0;\n  }\n\n  function isWeek(d, dayOfWeek) {\n    return isDay(d) && d.getDay() === dayOfWeek;\n  }\n\n  function isMonth(d) {\n    return isDay(d) && d.getDate() === 1;\n  }\n\n  function isYear(d) {\n    return isMonth(d) && d.getMonth() === 0;\n  }\n\n  function isDate(obj) {\n    return !isNaN(toDate(obj)) && toStr(obj).length >= 6;\n  }\n\n  function isNumber(obj) {\n    return typeof obj === \"number\";\n  }\n\n  var byteSuffixes = [\"bytes\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\", \"EB\"];\n\n  function formatValue(pre, value, options, axis) {\n    pre = pre || \"\";\n    if (options.prefix) {\n      if (value < 0) {\n        value = value * -1;\n        pre += \"-\";\n      }\n      pre += options.prefix;\n    }\n\n    var suffix = options.suffix || \"\";\n    var precision = options.precision;\n    var round = options.round;\n\n    if (options.byteScale) {\n      var suffixIdx;\n      var baseValue = axis ? options.byteScale : value;\n\n      if (baseValue >= 1152921504606846976) {\n        value /= 1152921504606846976;\n        suffixIdx = 6;\n      } else if (baseValue >= 1125899906842624) {\n        value /= 1125899906842624;\n        suffixIdx = 5;\n      } else if (baseValue >= 1099511627776) {\n        value /= 1099511627776;\n        suffixIdx = 4;\n      } else if (baseValue >= 1073741824) {\n        value /= 1073741824;\n        suffixIdx = 3;\n      } else if (baseValue >= 1048576) {\n        value /= 1048576;\n        suffixIdx = 2;\n      } else if (baseValue >= 1024) {\n        value /= 1024;\n        suffixIdx = 1;\n      } else {\n        suffixIdx = 0;\n      }\n\n      // TODO handle manual precision case\n      if (precision === undefined && round === undefined) {\n        if (value >= 1023.5) {\n          if (suffixIdx < byteSuffixes.length - 1) {\n            value = 1.0;\n            suffixIdx += 1;\n          }\n        }\n        precision = value >= 1000 ? 4 : 3;\n      }\n      suffix = \" \" + byteSuffixes[suffixIdx];\n    }\n\n    if (precision !== undefined && round !== undefined) {\n      throw Error(\"Use either round or precision, not both\");\n    }\n\n    if (!axis) {\n      if (precision !== undefined) {\n        value = value.toPrecision(precision);\n        if (!options.zeros) {\n          value = parseFloat(value);\n        }\n      }\n\n      if (round !== undefined) {\n        if (round < 0) {\n          var num = Math.pow(10, -1 * round);\n          value = parseInt((1.0 * value / num).toFixed(0)) * num;\n        } else {\n          value = value.toFixed(round);\n          if (!options.zeros) {\n            value = parseFloat(value);\n          }\n        }\n      }\n    }\n\n    if (options.thousands || options.decimal) {\n      value = toStr(value);\n      var parts = value.split(\".\");\n      value = parts[0];\n      if (options.thousands) {\n        value = value.replace(/\\B(?=(\\d{3})+(?!\\d))/g, options.thousands);\n      }\n      if (parts.length > 1) {\n        value += (options.decimal || \".\") + parts[1];\n      }\n    }\n\n    return pre + value + suffix;\n  }\n\n  function seriesOption(chart, series, option) {\n    if (option in series) {\n      return series[option];\n    } else if (option in chart.options) {\n      return chart.options[option];\n    }\n    return null;\n  }\n\n  function allZeros(data) {\n    var i, j, d;\n    for (i = 0; i < data.length; i++) {\n      d = data[i].data;\n      for (j = 0; j < d.length; j++) {\n        if (d[j][1] != 0) {\n          return false;\n        }\n      }\n    }\n    return true;\n  }\n\n  var baseOptions = {\n    maintainAspectRatio: false,\n    animation: false,\n    plugins: {\n      legend: {},\n      tooltip: {\n        displayColors: false,\n        callbacks: {}\n      },\n      title: {\n        font: {\n          size: 20\n        },\n        color: \"#333\"\n      }\n    },\n    interaction: {}\n  };\n\n  var defaultOptions$2 = {\n    scales: {\n      y: {\n        ticks: {\n          maxTicksLimit: 4\n        },\n        title: {\n          font: {\n            size: 16\n          },\n          color: \"#333\"\n        },\n        grid: {}\n      },\n      x: {\n        grid: {\n          drawOnChartArea: false\n        },\n        title: {\n          font: {\n            size: 16\n          },\n          color: \"#333\"\n        },\n        time: {},\n        ticks: {}\n      }\n    }\n  };\n\n  // http://there4.io/2012/05/02/google-chart-color-list/\n  var defaultColors = [\n    \"#3366CC\", \"#DC3912\", \"#FF9900\", \"#109618\", \"#990099\", \"#3B3EAC\", \"#0099C6\",\n    \"#DD4477\", \"#66AA00\", \"#B82E2E\", \"#316395\", \"#994499\", \"#22AA99\", \"#AAAA11\",\n    \"#6633CC\", \"#E67300\", \"#8B0707\", \"#329262\", \"#5574A6\", \"#651067\"\n  ];\n\n  var hideLegend$2 = function (options, legend, hideLegend) {\n    if (legend !== undefined) {\n      options.plugins.legend.display = !!legend;\n      if (legend && legend !== true) {\n        options.plugins.legend.position = legend;\n      }\n    } else if (hideLegend) {\n      options.plugins.legend.display = false;\n    }\n  };\n\n  var setTitle$2 = function (options, title) {\n    options.plugins.title.display = true;\n    options.plugins.title.text = title;\n  };\n\n  var setMin$2 = function (options, min) {\n    if (min !== null) {\n      options.scales.y.min = toFloat(min);\n    }\n  };\n\n  var setMax$2 = function (options, max) {\n    options.scales.y.max = toFloat(max);\n  };\n\n  var setBarMin$1 = function (options, min) {\n    if (min !== null) {\n      options.scales.x.min = toFloat(min);\n    }\n  };\n\n  var setBarMax$1 = function (options, max) {\n    options.scales.x.max = toFloat(max);\n  };\n\n  var setStacked$2 = function (options, stacked) {\n    options.scales.x.stacked = !!stacked;\n    options.scales.y.stacked = !!stacked;\n  };\n\n  var setXtitle$2 = function (options, title) {\n    options.scales.x.title.display = true;\n    options.scales.x.title.text = title;\n  };\n\n  var setYtitle$2 = function (options, title) {\n    options.scales.y.title.display = true;\n    options.scales.y.title.text = title;\n  };\n\n  // https://stackoverflow.com/questions/5623838/rgb-to-hex-and-hex-to-rgb\n  var addOpacity = function (hex, opacity) {\n    var result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n    return result ? \"rgba(\" + parseInt(result[1], 16) + \", \" + parseInt(result[2], 16) + \", \" + parseInt(result[3], 16) + \", \" + opacity + \")\" : hex;\n  };\n\n  // check if not null or undefined\n  // https://stackoverflow.com/a/27757708/1177228\n  var notnull = function (x) {\n    return x != null;\n  };\n\n  var setLabelSize = function (chart, data, options) {\n    var maxLabelSize = Math.ceil(chart.element.offsetWidth / 4.0 / data.labels.length);\n    if (maxLabelSize > 25) {\n      maxLabelSize = 25;\n    } else if (maxLabelSize < 10) {\n      maxLabelSize = 10;\n    }\n    if (!options.scales.x.ticks.callback) {\n      options.scales.x.ticks.callback = function (value) {\n        value = toStr(this.getLabelForValue(value));\n        if (value.length > maxLabelSize) {\n          return value.substring(0, maxLabelSize - 2) + \"...\";\n        } else {\n          return value;\n        }\n      };\n    }\n  };\n\n  var setFormatOptions$1 = function (chart, options, chartType) {\n    var formatOptions = {\n      prefix: chart.options.prefix,\n      suffix: chart.options.suffix,\n      thousands: chart.options.thousands,\n      decimal: chart.options.decimal,\n      precision: chart.options.precision,\n      round: chart.options.round,\n      zeros: chart.options.zeros\n    };\n\n    if (chart.options.bytes) {\n      var series = chart.data;\n      if (chartType === \"pie\") {\n        series = [{data: series}];\n      }\n\n      // calculate max\n      var max = 0;\n      for (var i = 0; i < series.length; i++) {\n        var s = series[i];\n        for (var j = 0; j < s.data.length; j++) {\n          if (s.data[j][1] > max) {\n            max = s.data[j][1];\n          }\n        }\n      }\n\n      // calculate scale\n      var scale = 1;\n      while (max >= 1024) {\n        scale *= 1024;\n        max /= 1024;\n      }\n\n      // set step size\n      formatOptions.byteScale = scale;\n    }\n\n    if (chartType !== \"pie\") {\n      var axis = options.scales.y;\n      if (chartType === \"bar\") {\n        axis = options.scales.x;\n      }\n\n      if (formatOptions.byteScale) {\n        if (!axis.ticks.stepSize) {\n          axis.ticks.stepSize = formatOptions.byteScale / 2;\n        }\n        if (!axis.ticks.maxTicksLimit) {\n          axis.ticks.maxTicksLimit = 4;\n        }\n      }\n\n      if (!axis.ticks.callback) {\n        axis.ticks.callback = function (value) {\n          return formatValue(\"\", value, formatOptions, true);\n        };\n      }\n    }\n\n    if (!options.plugins.tooltip.callbacks.label) {\n      if (chartType === \"scatter\") {\n        options.plugins.tooltip.callbacks.label = function (context) {\n          var label = context.dataset.label || '';\n          if (label) {\n            label += ': ';\n          }\n          return label + '(' + context.label + ', ' + context.formattedValue + ')';\n        };\n      } else if (chartType === \"bubble\") {\n        options.plugins.tooltip.callbacks.label = function (context) {\n          var label = context.dataset.label || '';\n          if (label) {\n            label += ': ';\n          }\n          var dataPoint = context.raw;\n          return label + '(' + dataPoint.x + ', ' + dataPoint.y + ', ' + dataPoint.v + ')';\n        };\n      } else if (chartType === \"pie\") {\n        // need to use separate label for pie charts\n        options.plugins.tooltip.callbacks.label = function (context) {\n          var dataLabel = context.label;\n          var value = ': ';\n\n          if (isArray(dataLabel)) {\n            // show value on first line of multiline label\n            // need to clone because we are changing the value\n            dataLabel = dataLabel.slice();\n            dataLabel[0] += value;\n          } else {\n            dataLabel += value;\n          }\n\n          return formatValue(dataLabel, context.parsed, formatOptions);\n        };\n      } else {\n        var valueLabel = chartType === \"bar\" ? \"x\" : \"y\";\n        options.plugins.tooltip.callbacks.label = function (context) {\n          // don't show null values for stacked charts\n          if (context.parsed[valueLabel] === null) {\n            return;\n          }\n\n          var label = context.dataset.label || '';\n          if (label) {\n            label += ': ';\n          }\n          return formatValue(label, context.parsed[valueLabel], formatOptions);\n        };\n      }\n    }\n  };\n\n  var jsOptions$2 = jsOptionsFunc(merge(baseOptions, defaultOptions$2), hideLegend$2, setTitle$2, setMin$2, setMax$2, setStacked$2, setXtitle$2, setYtitle$2);\n\n  var createDataTable = function (chart, options, chartType) {\n    var datasets = [];\n    var labels = [];\n\n    var colors = chart.options.colors || defaultColors;\n\n    var day = true;\n    var week = true;\n    var dayOfWeek;\n    var month = true;\n    var year = true;\n    var hour = true;\n    var minute = true;\n\n    var series = chart.data;\n\n    var max = 0;\n    if (chartType === \"bubble\") {\n      for (var i$1 = 0; i$1 < series.length; i$1++) {\n        var s$1 = series[i$1];\n        for (var j$1 = 0; j$1 < s$1.data.length; j$1++) {\n          if (s$1.data[j$1][2] > max) {\n            max = s$1.data[j$1][2];\n          }\n        }\n      }\n    }\n\n    var i, j, s, d, key, rows = [], rows2 = [];\n\n    if (chartType === \"bar\" || chartType === \"column\" || (chart.xtype !== \"number\" && chart.xtype !== \"bubble\")) {\n      var sortedLabels = [];\n\n      for (i = 0; i < series.length; i++) {\n        s = series[i];\n\n        for (j = 0; j < s.data.length; j++) {\n          d = s.data[j];\n          key = chart.xtype == \"datetime\" ? d[0].getTime() : d[0];\n          if (!rows[key]) {\n            rows[key] = new Array(series.length);\n          }\n          rows[key][i] = toFloat(d[1]);\n          if (sortedLabels.indexOf(key) === -1) {\n            sortedLabels.push(key);\n          }\n        }\n      }\n\n      if (chart.xtype === \"datetime\" || chart.xtype === \"number\") {\n        sortedLabels.sort(sortByNumber);\n      }\n\n      for (j = 0; j < series.length; j++) {\n        rows2.push([]);\n      }\n\n      var value;\n      var k;\n      for (k = 0; k < sortedLabels.length; k++) {\n        i = sortedLabels[k];\n        if (chart.xtype === \"datetime\") {\n          value = new Date(toFloat(i));\n          // TODO make this efficient\n          day = day && isDay(value);\n          if (!dayOfWeek) {\n            dayOfWeek = value.getDay();\n          }\n          week = week && isWeek(value, dayOfWeek);\n          month = month && isMonth(value);\n          year = year && isYear(value);\n          hour = hour && isHour(value);\n          minute = minute && isMinute(value);\n        } else {\n          value = i;\n        }\n        labels.push(value);\n        for (j = 0; j < series.length; j++) {\n          // Chart.js doesn't like undefined\n          rows2[j].push(rows[i][j] === undefined ? null : rows[i][j]);\n        }\n      }\n    } else {\n      for (var i$2 = 0; i$2 < series.length; i$2++) {\n        var s$2 = series[i$2];\n        var d$1 = [];\n        for (var j$2 = 0; j$2 < s$2.data.length; j$2++) {\n          var point = {\n            x: toFloat(s$2.data[j$2][0]),\n            y: toFloat(s$2.data[j$2][1])\n          };\n          if (chartType === \"bubble\") {\n            point.r = toFloat(s$2.data[j$2][2]) * 20 / max;\n            // custom attribute, for tooltip\n            point.v = s$2.data[j$2][2];\n          }\n          d$1.push(point);\n        }\n        rows2.push(d$1);\n      }\n    }\n\n    var color;\n    var backgroundColor;\n\n    for (i = 0; i < series.length; i++) {\n      s = series[i];\n\n      // use colors for each bar for single series format\n      if (chart.options.colors && chart.singleSeriesFormat && (chartType === \"bar\" || chartType === \"column\") && !s.color && isArray(chart.options.colors) && !isArray(chart.options.colors[0])) {\n        color = colors;\n        backgroundColor = [];\n        for (var j$3 = 0; j$3 < colors.length; j$3++) {\n          backgroundColor[j$3] = addOpacity(color[j$3], 0.5);\n        }\n      } else {\n        color = s.color || colors[i];\n        backgroundColor = chartType !== \"line\" ? addOpacity(color, 0.5) : color;\n      }\n\n      var dataset = {\n        label: s.name || \"\",\n        data: rows2[i],\n        fill: chartType === \"area\",\n        borderColor: color,\n        backgroundColor: backgroundColor,\n        borderWidth: 2\n      };\n\n      var pointChart = chartType === \"line\" || chartType === \"area\" || chartType === \"scatter\" || chartType === \"bubble\";\n      if (pointChart) {\n        dataset.pointBackgroundColor = color;\n        dataset.pointHoverBackgroundColor = color;\n        dataset.pointHitRadius = 50;\n      }\n\n      if (chartType === \"bubble\") {\n        dataset.pointBackgroundColor = backgroundColor;\n        dataset.pointHoverBackgroundColor = backgroundColor;\n        dataset.pointHoverBorderWidth = 2;\n      }\n\n      if (s.stack) {\n        dataset.stack = s.stack;\n      }\n\n      var curve = seriesOption(chart, s, \"curve\");\n      if (curve === false) {\n        dataset.tension = 0;\n      } else if (pointChart) {\n        dataset.tension = 0.4;\n      }\n\n      var points = seriesOption(chart, s, \"points\");\n      if (points === false) {\n        dataset.pointRadius = 0;\n        dataset.pointHoverRadius = 0;\n      }\n\n      dataset = merge(dataset, chart.options.dataset || {});\n      dataset = merge(dataset, s.library || {});\n      dataset = merge(dataset, s.dataset || {});\n\n      datasets.push(dataset);\n    }\n\n    var xmin = chart.options.xmin;\n    var xmax = chart.options.xmax;\n\n    if (chart.xtype === \"datetime\") {\n      if (notnull(xmin)) {\n        options.scales.x.min = toDate(xmin).getTime();\n      }\n      if (notnull(xmax)) {\n        options.scales.x.max = toDate(xmax).getTime();\n      }\n    } else if (chart.xtype === \"number\") {\n      if (notnull(xmin)) {\n        options.scales.x.min = xmin;\n      }\n      if (notnull(xmax)) {\n        options.scales.x.max = xmax;\n      }\n    }\n\n    // for empty datetime chart\n    if (chart.xtype === \"datetime\" && labels.length === 0) {\n      if (notnull(xmin)) {\n        labels.push(toDate(xmin));\n      }\n      if (notnull(xmax)) {\n        labels.push(toDate(xmax));\n      }\n      day = false;\n      week = false;\n      month = false;\n      year = false;\n      hour = false;\n      minute = false;\n    }\n\n    if (chart.xtype === \"datetime\" && labels.length > 0) {\n      var minTime = (notnull(xmin) ? toDate(xmin) : labels[0]).getTime();\n      var maxTime = (notnull(xmax) ? toDate(xmax) : labels[0]).getTime();\n\n      for (i = 1; i < labels.length; i++) {\n        var value$1 = labels[i].getTime();\n        if (value$1 < minTime) {\n          minTime = value$1;\n        }\n        if (value$1 > maxTime) {\n          maxTime = value$1;\n        }\n      }\n\n      var timeDiff = (maxTime - minTime) / (86400 * 1000.0);\n\n      if (!options.scales.x.time.unit) {\n        var step;\n        if (year || timeDiff > 365 * 10) {\n          options.scales.x.time.unit = \"year\";\n          step = 365;\n        } else if (month || timeDiff > 30 * 10) {\n          options.scales.x.time.unit = \"month\";\n          step = 30;\n        } else if (day || timeDiff > 10) {\n          options.scales.x.time.unit = \"day\";\n          step = 1;\n        } else if (hour || timeDiff > 0.5) {\n          options.scales.x.time.displayFormats = {hour: \"MMM d, h a\"};\n          options.scales.x.time.unit = \"hour\";\n          step = 1 / 24.0;\n        } else if (minute) {\n          options.scales.x.time.displayFormats = {minute: \"h:mm a\"};\n          options.scales.x.time.unit = \"minute\";\n          step = 1 / 24.0 / 60.0;\n        }\n\n        if (step && timeDiff > 0) {\n          // width not available for hidden elements\n          var width = chart.element.offsetWidth;\n          if (width > 0) {\n            var unitStepSize = Math.ceil(timeDiff / step / (width / 100.0));\n            if (week && step === 1) {\n              unitStepSize = Math.ceil(unitStepSize / 7.0) * 7;\n            }\n            options.scales.x.time.stepSize = unitStepSize;\n          }\n        }\n      }\n\n      if (!options.scales.x.time.tooltipFormat) {\n        if (day) {\n          options.scales.x.time.tooltipFormat = \"PP\";\n        } else if (hour) {\n          options.scales.x.time.tooltipFormat = \"MMM d, h a\";\n        } else if (minute) {\n          options.scales.x.time.tooltipFormat = \"h:mm a\";\n        }\n      }\n    }\n\n    var data = {\n      labels: labels,\n      datasets: datasets\n    };\n\n    return data;\n  };\n\n  var defaultExport$2 = function defaultExport(library) {\n    this.name = \"chartjs\";\n    this.library = library;\n  };\n\n  defaultExport$2.prototype.renderLineChart = function renderLineChart (chart, chartType) {\n    var chartOptions = {};\n    // fix for https://github.com/chartjs/Chart.js/issues/2441\n    if (!chart.options.max && allZeros(chart.data)) {\n      chartOptions.max = 1;\n    }\n\n    var options = jsOptions$2(chart, merge(chartOptions, chart.options));\n    setFormatOptions$1(chart, options, chartType);\n\n    var data = createDataTable(chart, options, chartType || \"line\");\n\n    if (chart.xtype === \"number\") {\n      options.scales.x.type = options.scales.x.type || \"linear\";\n      options.scales.x.position = options.scales.x.position ||\"bottom\";\n    } else {\n      options.scales.x.type = chart.xtype === \"string\" ? \"category\" : \"time\";\n    }\n\n    this.drawChart(chart, \"line\", data, options);\n  };\n\n  defaultExport$2.prototype.renderPieChart = function renderPieChart (chart) {\n    var options = merge({}, baseOptions);\n    if (chart.options.donut) {\n      options.cutout = \"50%\";\n    }\n\n    if (\"legend\" in chart.options) {\n      hideLegend$2(options, chart.options.legend);\n    }\n\n    if (chart.options.title) {\n      setTitle$2(options, chart.options.title);\n    }\n\n    options = merge(options, chart.options.library || {});\n    setFormatOptions$1(chart, options, \"pie\");\n\n    var labels = [];\n    var values = [];\n    for (var i = 0; i < chart.data.length; i++) {\n      var point = chart.data[i];\n      labels.push(point[0]);\n      values.push(point[1]);\n    }\n\n    var dataset = {\n      data: values,\n      backgroundColor: chart.options.colors || defaultColors\n    };\n    dataset = merge(dataset, chart.options.dataset || {});\n\n    var data = {\n      labels: labels,\n      datasets: [dataset]\n    };\n\n    this.drawChart(chart, \"pie\", data, options);\n  };\n\n  defaultExport$2.prototype.renderColumnChart = function renderColumnChart (chart, chartType) {\n    var options;\n    if (chartType === \"bar\") {\n      var barOptions = merge(baseOptions, defaultOptions$2);\n      barOptions.indexAxis = \"y\";\n\n      // ensure gridlines have proper orientation\n      barOptions.scales.x.grid.drawOnChartArea = true;\n      barOptions.scales.y.grid.drawOnChartArea = false;\n      delete barOptions.scales.y.ticks.maxTicksLimit;\n\n      options = jsOptionsFunc(barOptions, hideLegend$2, setTitle$2, setBarMin$1, setBarMax$1, setStacked$2, setXtitle$2, setYtitle$2)(chart, chart.options);\n    } else {\n      options = jsOptions$2(chart, chart.options);\n    }\n    setFormatOptions$1(chart, options, chartType);\n    var data = createDataTable(chart, options, \"column\");\n    if (chartType !== \"bar\") {\n      setLabelSize(chart, data, options);\n    }\n    this.drawChart(chart, \"bar\", data, options);\n  };\n\n  defaultExport$2.prototype.renderAreaChart = function renderAreaChart (chart) {\n    this.renderLineChart(chart, \"area\");\n  };\n\n  defaultExport$2.prototype.renderBarChart = function renderBarChart (chart) {\n    this.renderColumnChart(chart, \"bar\");\n  };\n\n  defaultExport$2.prototype.renderScatterChart = function renderScatterChart (chart, chartType) {\n    chartType = chartType || \"scatter\";\n\n    var options = jsOptions$2(chart, chart.options);\n    setFormatOptions$1(chart, options, chartType);\n\n    if (!(\"showLine\" in options)) {\n      options.showLine = false;\n    }\n\n    var data = createDataTable(chart, options, chartType);\n\n    options.scales.x.type = options.scales.x.type || \"linear\";\n    options.scales.x.position = options.scales.x.position || \"bottom\";\n\n    // prevent grouping hover and tooltips\n    if (!(\"mode\" in options.interaction)) {\n      options.interaction.mode = \"nearest\";\n    }\n\n    this.drawChart(chart, chartType, data, options);\n  };\n\n  defaultExport$2.prototype.renderBubbleChart = function renderBubbleChart (chart) {\n    this.renderScatterChart(chart, \"bubble\");\n  };\n\n  defaultExport$2.prototype.destroy = function destroy (chart) {\n    if (chart.chart) {\n      chart.chart.destroy();\n    }\n  };\n\n  defaultExport$2.prototype.drawChart = function drawChart (chart, type, data, options) {\n    this.destroy(chart);\n    if (chart.destroyed) { return; }\n\n    var chartOptions = {\n      type: type,\n      data: data,\n      options: options\n    };\n\n    if (chart.options.code) {\n      window.console.log(\"new Chart(ctx, \" + JSON.stringify(chartOptions) + \");\");\n    }\n\n    chart.element.innerHTML = \"<canvas></canvas>\";\n    var ctx = chart.element.getElementsByTagName(\"CANVAS\")[0];\n    chart.chart = new this.library(ctx, chartOptions);\n  };\n\n  var defaultOptions$1 = {\n    chart: {},\n    xAxis: {\n      title: {\n        text: null\n      },\n      labels: {\n        style: {\n          fontSize: \"12px\"\n        }\n      }\n    },\n    yAxis: {\n      title: {\n        text: null\n      },\n      labels: {\n        style: {\n          fontSize: \"12px\"\n        }\n      }\n    },\n    title: {\n      text: null\n    },\n    credits: {\n      enabled: false\n    },\n    legend: {\n      borderWidth: 0\n    },\n    tooltip: {\n      style: {\n        fontSize: \"12px\"\n      }\n    },\n    plotOptions: {\n      areaspline: {},\n      area: {},\n      series: {\n        marker: {}\n      }\n    },\n    time: {\n      useUTC: false\n    }\n  };\n\n  var hideLegend$1 = function (options, legend, hideLegend) {\n    if (legend !== undefined) {\n      options.legend.enabled = !!legend;\n      if (legend && legend !== true) {\n        if (legend === \"top\" || legend === \"bottom\") {\n          options.legend.verticalAlign = legend;\n        } else {\n          options.legend.layout = \"vertical\";\n          options.legend.verticalAlign = \"middle\";\n          options.legend.align = legend;\n        }\n      }\n    } else if (hideLegend) {\n      options.legend.enabled = false;\n    }\n  };\n\n  var setTitle$1 = function (options, title) {\n    options.title.text = title;\n  };\n\n  var setMin$1 = function (options, min) {\n    options.yAxis.min = min;\n  };\n\n  var setMax$1 = function (options, max) {\n    options.yAxis.max = max;\n  };\n\n  var setStacked$1 = function (options, stacked) {\n    var stackedValue = stacked ? (stacked === true ? \"normal\" : stacked) : null;\n    options.plotOptions.series.stacking = stackedValue;\n    options.plotOptions.area.stacking = stackedValue;\n    options.plotOptions.areaspline.stacking = stackedValue;\n  };\n\n  var setXtitle$1 = function (options, title) {\n    options.xAxis.title.text = title;\n  };\n\n  var setYtitle$1 = function (options, title) {\n    options.yAxis.title.text = title;\n  };\n\n  var jsOptions$1 = jsOptionsFunc(defaultOptions$1, hideLegend$1, setTitle$1, setMin$1, setMax$1, setStacked$1, setXtitle$1, setYtitle$1);\n\n  var setFormatOptions = function(chart, options, chartType) {\n    var formatOptions = {\n      prefix: chart.options.prefix,\n      suffix: chart.options.suffix,\n      thousands: chart.options.thousands,\n      decimal: chart.options.decimal,\n      precision: chart.options.precision,\n      round: chart.options.round,\n      zeros: chart.options.zeros\n    };\n\n    // skip when axis is an array (like with min/max)\n    if (chartType !== \"pie\" && !isArray(options.yAxis) && !options.yAxis.labels.formatter) {\n      options.yAxis.labels.formatter = function () {\n        return formatValue(\"\", this.value, formatOptions);\n      };\n    }\n\n    if (!options.tooltip.pointFormatter && !options.tooltip.pointFormat) {\n      options.tooltip.pointFormatter = function () {\n        return '<span style=\"color:' + this.color + '\">\\u25CF</span> ' + formatValue(this.series.name + ': <b>', this.y, formatOptions) + '</b><br/>';\n      };\n    }\n  };\n\n  var defaultExport$1 = function defaultExport(library) {\n    this.name = \"highcharts\";\n    this.library = library;\n  };\n\n  defaultExport$1.prototype.renderLineChart = function renderLineChart (chart, chartType) {\n    chartType = chartType || \"spline\";\n    var chartOptions = {};\n    if (chartType === \"areaspline\") {\n      chartOptions = {\n        plotOptions: {\n          areaspline: {\n            stacking: \"normal\"\n          },\n          area: {\n            stacking: \"normal\"\n          },\n          series: {\n            marker: {\n              enabled: false\n            }\n          }\n        }\n      };\n    }\n\n    if (chart.options.curve === false) {\n      if (chartType === \"areaspline\") {\n        chartType = \"area\";\n      } else if (chartType === \"spline\") {\n        chartType = \"line\";\n      }\n    }\n\n    var options = jsOptions$1(chart, chart.options, chartOptions), data, i, j;\n    if (chart.xtype === \"number\") {\n      options.xAxis.type = options.xAxis.type || \"linear\";\n    } else {\n      options.xAxis.type = chart.xtype === \"string\" ? \"category\" : \"datetime\";\n    }\n    if (!options.chart.type) {\n      options.chart.type = chartType;\n    }\n    setFormatOptions(chart, options, chartType);\n\n    var series = chart.data;\n    for (i = 0; i < series.length; i++) {\n      series[i].name = series[i].name || \"Value\";\n      data = series[i].data;\n      if (chart.xtype === \"datetime\") {\n        for (j = 0; j < data.length; j++) {\n          data[j][0] = data[j][0].getTime();\n        }\n      }\n      series[i].marker = {symbol: \"circle\"};\n      if (chart.options.points === false) {\n        series[i].marker.enabled = false;\n      }\n    }\n\n    this.drawChart(chart, series, options);\n  };\n\n  defaultExport$1.prototype.renderScatterChart = function renderScatterChart (chart) {\n    var options = jsOptions$1(chart, chart.options, {});\n    options.chart.type = \"scatter\";\n    this.drawChart(chart, chart.data, options);\n  };\n\n  defaultExport$1.prototype.renderPieChart = function renderPieChart (chart) {\n    var chartOptions = merge(defaultOptions$1, {});\n\n    if (chart.options.colors) {\n      chartOptions.colors = chart.options.colors;\n    }\n    if (chart.options.donut) {\n      chartOptions.plotOptions = {pie: {innerSize: \"50%\"}};\n    }\n\n    if (\"legend\" in chart.options) {\n      hideLegend$1(chartOptions, chart.options.legend);\n    }\n\n    if (chart.options.title) {\n      setTitle$1(chartOptions, chart.options.title);\n    }\n\n    var options = merge(chartOptions, chart.options.library || {});\n    setFormatOptions(chart, options, \"pie\");\n    var series = [{\n      type: \"pie\",\n      name: chart.options.label || \"Value\",\n      data: chart.data\n    }];\n\n    this.drawChart(chart, series, options);\n  };\n\n  defaultExport$1.prototype.renderColumnChart = function renderColumnChart (chart, chartType) {\n    chartType = chartType || \"column\";\n    var series = chart.data;\n    var options = jsOptions$1(chart, chart.options), i, j, s, d, rows = [], categories = [];\n    options.chart.type = chartType;\n    setFormatOptions(chart, options, chartType);\n\n    for (i = 0; i < series.length; i++) {\n      s = series[i];\n\n      for (j = 0; j < s.data.length; j++) {\n        d = s.data[j];\n        if (!rows[d[0]]) {\n          rows[d[0]] = new Array(series.length);\n          categories.push(d[0]);\n        }\n        rows[d[0]][i] = d[1];\n      }\n    }\n\n    if (chart.xtype === \"number\") {\n      categories.sort(sortByNumber);\n    }\n\n    options.xAxis.categories = categories;\n\n    var newSeries = [], d2;\n    for (i = 0; i < series.length; i++) {\n      d = [];\n      for (j = 0; j < categories.length; j++) {\n        d.push(rows[categories[j]][i] || 0);\n      }\n\n      d2 = {\n        name: series[i].name || \"Value\",\n        data: d\n      };\n      if (series[i].stack) {\n        d2.stack = series[i].stack;\n      }\n\n      newSeries.push(d2);\n    }\n\n    this.drawChart(chart, newSeries, options);\n  };\n\n  defaultExport$1.prototype.renderBarChart = function renderBarChart (chart) {\n    this.renderColumnChart(chart, \"bar\");\n  };\n\n  defaultExport$1.prototype.renderAreaChart = function renderAreaChart (chart) {\n    this.renderLineChart(chart, \"areaspline\");\n  };\n\n  defaultExport$1.prototype.destroy = function destroy (chart) {\n    if (chart.chart) {\n      chart.chart.destroy();\n    }\n  };\n\n  defaultExport$1.prototype.drawChart = function drawChart (chart, data, options) {\n    this.destroy(chart);\n    if (chart.destroyed) { return; }\n\n    options.chart.renderTo = chart.element.id;\n    options.series = data;\n\n    if (chart.options.code) {\n      window.console.log(\"new Highcharts.Chart(\" + JSON.stringify(options) + \");\");\n    }\n\n    chart.chart = new this.library.Chart(options);\n  };\n\n  var loaded = {};\n  var callbacks = [];\n\n  // Set chart options\n  var defaultOptions = {\n    chartArea: {},\n    fontName: \"'Lucida Grande', 'Lucida Sans Unicode', Verdana, Arial, Helvetica, sans-serif\",\n    pointSize: 6,\n    legend: {\n      textStyle: {\n        fontSize: 12,\n        color: \"#444\"\n      },\n      alignment: \"center\",\n      position: \"right\"\n    },\n    curveType: \"function\",\n    hAxis: {\n      textStyle: {\n        color: \"#666\",\n        fontSize: 12\n      },\n      titleTextStyle: {},\n      gridlines: {\n        color: \"transparent\"\n      },\n      baselineColor: \"#ccc\",\n      viewWindow: {}\n    },\n    vAxis: {\n      textStyle: {\n        color: \"#666\",\n        fontSize: 12\n      },\n      titleTextStyle: {},\n      baselineColor: \"#ccc\",\n      viewWindow: {}\n    },\n    tooltip: {\n      textStyle: {\n        color: \"#666\",\n        fontSize: 12\n      }\n    }\n  };\n\n  var hideLegend = function (options, legend, hideLegend) {\n    if (legend !== undefined) {\n      var position;\n      if (!legend) {\n        position = \"none\";\n      } else if (legend === true) {\n        position = \"right\";\n      } else {\n        position = legend;\n      }\n      options.legend.position = position;\n    } else if (hideLegend) {\n      options.legend.position = \"none\";\n    }\n  };\n\n  var setTitle = function (options, title) {\n    options.title = title;\n    options.titleTextStyle = {color: \"#333\", fontSize: \"20px\"};\n  };\n\n  var setMin = function (options, min) {\n    options.vAxis.viewWindow.min = min;\n  };\n\n  var setMax = function (options, max) {\n    options.vAxis.viewWindow.max = max;\n  };\n\n  var setBarMin = function (options, min) {\n    options.hAxis.viewWindow.min = min;\n  };\n\n  var setBarMax = function (options, max) {\n    options.hAxis.viewWindow.max = max;\n  };\n\n  var setStacked = function (options, stacked) {\n    options.isStacked = stacked ? stacked : false;\n  };\n\n  var setXtitle = function (options, title) {\n    options.hAxis.title = title;\n    options.hAxis.titleTextStyle.italic = false;\n  };\n\n  var setYtitle = function (options, title) {\n    options.vAxis.title = title;\n    options.vAxis.titleTextStyle.italic = false;\n  };\n\n  var jsOptions = jsOptionsFunc(defaultOptions, hideLegend, setTitle, setMin, setMax, setStacked, setXtitle, setYtitle);\n\n  var resize = function (callback) {\n    if (window.attachEvent) {\n      window.attachEvent(\"onresize\", callback);\n    } else if (window.addEventListener) {\n      window.addEventListener(\"resize\", callback, true);\n    }\n    callback();\n  };\n\n  var defaultExport = function defaultExport(library) {\n    this.name = \"google\";\n    this.library = library;\n  };\n\n  defaultExport.prototype.renderLineChart = function renderLineChart (chart) {\n      var this$1$1 = this;\n\n    this.waitForLoaded(chart, function () {\n      var chartOptions = {};\n\n      if (chart.options.curve === false) {\n        chartOptions.curveType = \"none\";\n      }\n\n      if (chart.options.points === false) {\n        chartOptions.pointSize = 0;\n      }\n\n      var options = jsOptions(chart, chart.options, chartOptions);\n      var data = this$1$1.createDataTable(chart.data, chart.xtype);\n\n      this$1$1.drawChart(chart, \"LineChart\", data, options);\n    });\n  };\n\n  defaultExport.prototype.renderPieChart = function renderPieChart (chart) {\n      var this$1$1 = this;\n\n    this.waitForLoaded(chart, function () {\n      var chartOptions = {\n        chartArea: {\n          top: \"10%\",\n          height: \"80%\"\n        },\n        legend: {}\n      };\n      if (chart.options.colors) {\n        chartOptions.colors = chart.options.colors;\n      }\n      if (chart.options.donut) {\n        chartOptions.pieHole = 0.5;\n      }\n      if (\"legend\" in chart.options) {\n        hideLegend(chartOptions, chart.options.legend);\n      }\n      if (chart.options.title) {\n        setTitle(chartOptions, chart.options.title);\n      }\n      var options = merge(merge(defaultOptions, chartOptions), chart.options.library || {});\n\n      var data = new this$1$1.library.visualization.DataTable();\n      data.addColumn(\"string\", \"\");\n      data.addColumn(\"number\", \"Value\");\n      data.addRows(chart.data);\n\n      this$1$1.drawChart(chart, \"PieChart\", data, options);\n    });\n  };\n\n  defaultExport.prototype.renderColumnChart = function renderColumnChart (chart) {\n      var this$1$1 = this;\n\n    this.waitForLoaded(chart, function () {\n      var options = jsOptions(chart, chart.options);\n      var data = this$1$1.createDataTable(chart.data, chart.xtype);\n\n      this$1$1.drawChart(chart, \"ColumnChart\", data, options);\n    });\n  };\n\n  defaultExport.prototype.renderBarChart = function renderBarChart (chart) {\n      var this$1$1 = this;\n\n    this.waitForLoaded(chart, function () {\n      var chartOptions = {\n        hAxis: {\n          gridlines: {\n            color: \"#ccc\"\n          }\n        }\n      };\n      var options = jsOptionsFunc(defaultOptions, hideLegend, setTitle, setBarMin, setBarMax, setStacked, setXtitle, setYtitle)(chart, chart.options, chartOptions);\n      var data = this$1$1.createDataTable(chart.data, chart.xtype);\n\n      this$1$1.drawChart(chart, \"BarChart\", data, options);\n    });\n  };\n\n  defaultExport.prototype.renderAreaChart = function renderAreaChart (chart) {\n      var this$1$1 = this;\n\n    this.waitForLoaded(chart, function () {\n      var chartOptions = {\n        isStacked: true,\n        pointSize: 0,\n        areaOpacity: 0.5\n      };\n\n      var options = jsOptions(chart, chart.options, chartOptions);\n      var data = this$1$1.createDataTable(chart.data, chart.xtype);\n\n      this$1$1.drawChart(chart, \"AreaChart\", data, options);\n    });\n  };\n\n  defaultExport.prototype.renderGeoChart = function renderGeoChart (chart) {\n      var this$1$1 = this;\n\n    this.waitForLoaded(chart, \"geochart\", function () {\n      var chartOptions = {\n        legend: \"none\",\n        colorAxis: {\n          colors: chart.options.colors || [\"#f6c7b6\", \"#ce502d\"]\n        }\n      };\n      var options = merge(merge(defaultOptions, chartOptions), chart.options.library || {});\n\n      var data = new this$1$1.library.visualization.DataTable();\n      data.addColumn(\"string\", \"\");\n      data.addColumn(\"number\", chart.options.label || \"Value\");\n      data.addRows(chart.data);\n\n      this$1$1.drawChart(chart, \"GeoChart\", data, options);\n    });\n  };\n\n  defaultExport.prototype.renderScatterChart = function renderScatterChart (chart) {\n      var this$1$1 = this;\n\n    this.waitForLoaded(chart, function () {\n      var chartOptions = {};\n      var options = jsOptions(chart, chart.options, chartOptions);\n\n      var series = chart.data, rows2 = [], i, j, data, d;\n      for (i = 0; i < series.length; i++) {\n        series[i].name = series[i].name || \"Value\";\n        d = series[i].data;\n        for (j = 0; j < d.length; j++) {\n          var row = new Array(series.length + 1);\n          row[0] = d[j][0];\n          row[i + 1] = d[j][1];\n          rows2.push(row);\n        }\n      }\n\n      data = new this$1$1.library.visualization.DataTable();\n      data.addColumn(\"number\", \"\");\n      for (i = 0; i < series.length; i++) {\n        data.addColumn(\"number\", series[i].name);\n      }\n      data.addRows(rows2);\n\n      this$1$1.drawChart(chart, \"ScatterChart\", data, options);\n    });\n  };\n\n  defaultExport.prototype.renderTimeline = function renderTimeline (chart) {\n      var this$1$1 = this;\n\n    this.waitForLoaded(chart, \"timeline\", function () {\n      var chartOptions = {\n        legend: \"none\"\n      };\n\n      if (chart.options.colors) {\n        chartOptions.colors = chart.options.colors;\n      }\n      var options = merge(merge(defaultOptions, chartOptions), chart.options.library || {});\n\n      var data = new this$1$1.library.visualization.DataTable();\n      data.addColumn({type: \"string\", id: \"Name\"});\n      data.addColumn({type: \"date\", id: \"Start\"});\n      data.addColumn({type: \"date\", id: \"End\"});\n      data.addRows(chart.data);\n\n      chart.element.style.lineHeight = \"normal\";\n\n      this$1$1.drawChart(chart, \"Timeline\", data, options);\n    });\n  };\n\n  // TODO remove resize events\n  defaultExport.prototype.destroy = function destroy (chart) {\n    if (chart.chart) {\n      chart.chart.clearChart();\n    }\n  };\n\n  defaultExport.prototype.drawChart = function drawChart (chart, type, data, options) {\n    this.destroy(chart);\n    if (chart.destroyed) { return; }\n\n    if (chart.options.code) {\n      window.console.log(\"var data = new google.visualization.DataTable(\" + data.toJSON() + \");\\nvar chart = new google.visualization.\" + type + \"(element);\\nchart.draw(data, \" + JSON.stringify(options) + \");\");\n    }\n\n    chart.chart = new this.library.visualization[type](chart.element);\n    resize(function () {\n      chart.chart.draw(data, options);\n    });\n  };\n\n  defaultExport.prototype.waitForLoaded = function waitForLoaded (chart, pack, callback) {\n      var this$1$1 = this;\n\n    if (!callback) {\n      callback = pack;\n      pack = \"corechart\";\n    }\n\n    callbacks.push({pack: pack, callback: callback});\n\n    if (loaded[pack]) {\n      this.runCallbacks();\n    } else {\n      loaded[pack] = true;\n\n      // https://groups.google.com/forum/#!topic/google-visualization-api/fMKJcyA2yyI\n      var loadOptions = {\n        packages: [pack],\n        callback: function () { this$1$1.runCallbacks(); }\n      };\n      var config = chart.__config();\n      if (config.language) {\n        loadOptions.language = config.language;\n      }\n      if (pack === \"geochart\" && config.mapsApiKey) {\n        loadOptions.mapsApiKey = config.mapsApiKey;\n      }\n\n      this.library.charts.load(\"current\", loadOptions);\n    }\n  };\n\n  defaultExport.prototype.runCallbacks = function runCallbacks () {\n    var cb, call;\n    for (var i = 0; i < callbacks.length; i++) {\n      cb = callbacks[i];\n      call = this.library.visualization && ((cb.pack === \"corechart\" && this.library.visualization.LineChart) || (cb.pack === \"timeline\" && this.library.visualization.Timeline) || (cb.pack === \"geochart\" && this.library.visualization.GeoChart));\n      if (call) {\n        cb.callback();\n        callbacks.splice(i, 1);\n        i--;\n      }\n    }\n  };\n\n  // cant use object as key\n  defaultExport.prototype.createDataTable = function createDataTable (series, columnType) {\n    var i, j, s, d, key, rows = [], sortedLabels = [];\n    for (i = 0; i < series.length; i++) {\n      s = series[i];\n      series[i].name = series[i].name || \"Value\";\n\n      for (j = 0; j < s.data.length; j++) {\n        d = s.data[j];\n        key = (columnType === \"datetime\") ? d[0].getTime() : d[0];\n        if (!rows[key]) {\n          rows[key] = new Array(series.length);\n          sortedLabels.push(key);\n        }\n        rows[key][i] = toFloat(d[1]);\n      }\n    }\n\n    var rows2 = [];\n    var day = true;\n    var value;\n    for (j = 0; j < sortedLabels.length; j++) {\n      i = sortedLabels[j];\n      if (columnType === \"datetime\") {\n        value = new Date(toFloat(i));\n        day = day && isDay(value);\n      } else if (columnType === \"number\") {\n        value = toFloat(i);\n      } else {\n        value = i;\n      }\n      rows2.push([value].concat(rows[i]));\n    }\n    if (columnType === \"datetime\") {\n      rows2.sort(sortByTime);\n    } else if (columnType === \"number\") {\n      rows2.sort(sortByNumberSeries);\n\n      for (i = 0; i < rows2.length; i++) {\n        rows2[i][0] = toStr(rows2[i][0]);\n      }\n\n      columnType = \"string\";\n    }\n\n    // create datatable\n    var data = new this.library.visualization.DataTable();\n    columnType = columnType === \"datetime\" && day ? \"date\" : columnType;\n    data.addColumn(columnType, \"\");\n    for (i = 0; i < series.length; i++) {\n      data.addColumn(\"number\", series[i].name);\n    }\n    data.addRows(rows2);\n\n    return data;\n  };\n\n  function formatSeriesData(data, keyType) {\n    var r = [], j, keyFunc;\n\n    if (keyType === \"number\") {\n      keyFunc = toFloat;\n    } else if (keyType === \"datetime\") {\n      keyFunc = toDate;\n    } else {\n      keyFunc = toStr;\n    }\n\n    if (keyType === \"bubble\") {\n      for (j = 0; j < data.length; j++) {\n        r.push([toFloat(data[j][0]), toFloat(data[j][1]), toFloat(data[j][2])]);\n      }\n    } else {\n      for (j = 0; j < data.length; j++) {\n        r.push([keyFunc(data[j][0]), toFloat(data[j][1])]);\n      }\n    }\n\n    if (keyType === \"datetime\") {\n      r.sort(sortByTime);\n    } else if (keyType === \"number\") {\n      r.sort(sortByNumberSeries);\n    }\n\n    return r;\n  }\n\n  function detectXType(series, noDatetime, options) {\n    if (dataEmpty(series)) {\n      if ((options.xmin || options.xmax) && (!options.xmin || isDate(options.xmin)) && (!options.xmax || isDate(options.xmax))) {\n        return \"datetime\";\n      } else {\n        return \"number\";\n      }\n    } else if (detectXTypeWithFunction(series, isNumber)) {\n      return \"number\";\n    } else if (!noDatetime && detectXTypeWithFunction(series, isDate)) {\n      return \"datetime\";\n    } else {\n      return \"string\";\n    }\n  }\n\n  function detectXTypeWithFunction(series, func) {\n    var i, j, data;\n    for (i = 0; i < series.length; i++) {\n      data = toArr(series[i].data);\n      for (j = 0; j < data.length; j++) {\n        if (!func(data[j][0])) {\n          return false;\n        }\n      }\n    }\n    return true;\n  }\n\n  // creates a shallow copy of each element of the array\n  // elements are expected to be objects\n  function copySeries(series) {\n    var newSeries = [], i, j;\n    for (i = 0; i < series.length; i++) {\n      var copy = {};\n      for (j in series[i]) {\n        if (series[i].hasOwnProperty(j)) {\n          copy[j] = series[i][j];\n        }\n      }\n      newSeries.push(copy);\n    }\n    return newSeries;\n  }\n\n  function processSeries(chart, keyType, noDatetime) {\n    var i;\n\n    var opts = chart.options;\n    var series = chart.rawData;\n\n    // see if one series or multiple\n    chart.singleSeriesFormat = (!isArray(series) || typeof series[0] !== \"object\" || isArray(series[0]));\n    if (chart.singleSeriesFormat) {\n      series = [{name: opts.label, data: series}];\n    }\n\n    // convert to array\n    // must come before dataEmpty check\n    series = copySeries(series);\n    for (i = 0; i < series.length; i++) {\n      series[i].data = toArr(series[i].data);\n    }\n\n    chart.xtype = keyType ? keyType : (opts.discrete ? \"string\" : detectXType(series, noDatetime, opts));\n\n    // right format\n    for (i = 0; i < series.length; i++) {\n      series[i].data = formatSeriesData(series[i].data, chart.xtype);\n    }\n\n    return series;\n  }\n\n  function processSimple(chart) {\n    var perfectData = toArr(chart.rawData), i;\n    for (i = 0; i < perfectData.length; i++) {\n      perfectData[i] = [toStr(perfectData[i][0]), toFloat(perfectData[i][1])];\n    }\n    return perfectData;\n  }\n\n  function dataEmpty(data, chartType) {\n    if (chartType === \"PieChart\" || chartType === \"GeoChart\" || chartType === \"Timeline\") {\n      return data.length === 0;\n    } else {\n      for (var i = 0; i < data.length; i++) {\n        if (data[i].data.length > 0) {\n          return false;\n        }\n      }\n      return true;\n    }\n  }\n\n  function addDownloadButton(chart) {\n    var element = chart.element;\n    var link = document.createElement(\"a\");\n\n    var download = chart.options.download;\n    if (download === true) {\n      download = {};\n    } else if (typeof download === \"string\") {\n      download = {filename: download};\n    }\n    link.download = download.filename || \"chart.png\"; // https://caniuse.com/download\n\n    link.style.position = \"absolute\";\n    link.style.top = \"20px\";\n    link.style.right = \"20px\";\n    link.style.zIndex = 1000;\n    link.style.lineHeight = \"20px\";\n    link.target = \"_blank\"; // for safari\n    var image = document.createElement(\"img\");\n    image.alt = \"Download\";\n    image.style.border = \"none\";\n    // icon from font-awesome\n    // http://fa2png.io/\n    image.src = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAMAAAC6V+0/AAABCFBMVEUAAADMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMywEsqxAAAAV3RSTlMAAQIDBggJCgsMDQ4PERQaHB0eISIjJCouLzE0OTo/QUJHSUpLTU5PUllhYmltcHh5foWLjI+SlaCio6atr7S1t7m6vsHHyM7R2tze5Obo7fHz9ff5+/1hlxK2AAAA30lEQVQYGUXBhVYCQQBA0TdYWAt2d3d3YWAHyur7/z9xgD16Lw0DW+XKx+1GgX+FRzM3HWQWrHl5N/oapW5RPe0PkBu+UYeICvozTWZVK23Ao04B79oJrOsJDOoxkZoQPWgX29pHpCZEk7rEvQYiNSFq1UMqvlCjJkRBS1R8hb00Vb/TajtBL7nTHE1X1vyMQF732dQhyF2o6SAwrzP06iUQzvwsArlnzcOdrgBhJyHa1QOgO9U1GsKuvjUTjavliZYQ8nNPapG6sap/3nrIdJ6bOWzmX/fy0XVpfzZP3S8OJT3g9EEiJwAAAABJRU5ErkJggg==\";\n    link.appendChild(image);\n    element.style.position = \"relative\";\n\n    chart.__downloadAttached = true;\n\n    // mouseenter\n    chart.__enterEvent = addEvent(element, \"mouseover\", function(e) {\n      var related = e.relatedTarget;\n      // check download option again to ensure it wasn't changed\n      if ((!related || (related !== this && !childOf(this, related))) && chart.options.download) {\n        link.href = chart.toImage(download);\n        element.appendChild(link);\n      }\n    });\n\n    // mouseleave\n    chart.__leaveEvent = addEvent(element, \"mouseout\", function(e) {\n      var related = e.relatedTarget;\n      if (!related || (related !== this && !childOf(this, related))) {\n        if (link.parentNode) {\n          link.parentNode.removeChild(link);\n        }\n      }\n    });\n  }\n\n  // https://stackoverflow.com/questions/10149963/adding-event-listener-cross-browser\n  function addEvent(elem, event, fn) {\n    if (elem.addEventListener) {\n      elem.addEventListener(event, fn, false);\n      return fn;\n    } else {\n      var fn2 = function() {\n        // set the this pointer same as addEventListener when fn is called\n        return(fn.call(elem, window.event));\n      };\n      elem.attachEvent(\"on\" + event, fn2);\n      return fn2;\n    }\n  }\n\n  function removeEvent(elem, event, fn) {\n    if (elem.removeEventListener) {\n      elem.removeEventListener(event, fn, false);\n    } else {\n      elem.detachEvent(\"on\" + event, fn);\n    }\n  }\n\n  // https://gist.github.com/shawnbot/4166283\n  function childOf(p, c) {\n    if (p === c) { return false; }\n    while (c && c !== p) { c = c.parentNode; }\n    return c === p;\n  }\n\n  var pendingRequests = [], runningRequests = 0, maxRequests = 4;\n\n  function pushRequest(url, success, error) {\n    pendingRequests.push([url, success, error]);\n    runNext();\n  }\n\n  function runNext() {\n    if (runningRequests < maxRequests) {\n      var request = pendingRequests.shift();\n      if (request) {\n        runningRequests++;\n        getJSON(request[0], request[1], request[2]);\n        runNext();\n      }\n    }\n  }\n\n  function requestComplete() {\n    runningRequests--;\n    runNext();\n  }\n\n  function getJSON(url, success, error) {\n    ajaxCall(url, success, function (jqXHR, textStatus, errorThrown) {\n      var message = (typeof errorThrown === \"string\") ? errorThrown : errorThrown.message;\n      error(message);\n    });\n  }\n\n  function ajaxCall(url, success, error) {\n    var $ = window.jQuery || window.Zepto || window.$;\n\n    if ($ && $.ajax) {\n      $.ajax({\n        dataType: \"json\",\n        url: url,\n        success: success,\n        error: error,\n        complete: requestComplete\n      });\n    } else {\n      var xhr = new XMLHttpRequest();\n      xhr.open(\"GET\", url, true);\n      xhr.setRequestHeader(\"Content-Type\", \"application/json\");\n      xhr.onload = function () {\n        requestComplete();\n        if (xhr.status === 200) {\n          success(JSON.parse(xhr.responseText), xhr.statusText, xhr);\n        } else {\n          error(xhr, \"error\", xhr.statusText);\n        }\n      };\n      xhr.send();\n    }\n  }\n\n  var config = {};\n  var adapters = [];\n\n  // helpers\n\n  function setText(element, text) {\n    if (document.body.innerText) {\n      element.innerText = text;\n    } else {\n      element.textContent = text;\n    }\n  }\n\n  // TODO remove prefix for all messages\n  function chartError(element, message, noPrefix) {\n    if (!noPrefix) {\n      message = \"Error Loading Chart: \" + message;\n    }\n    setText(element, message);\n    element.style.color = \"#ff0000\";\n  }\n\n  function errorCatcher(chart) {\n    try {\n      chart.__render();\n    } catch (err) {\n      chartError(chart.element, err.message);\n      throw err;\n    }\n  }\n\n  function fetchDataSource(chart, dataSource, showLoading) {\n    // only show loading message for urls and callbacks\n    if (showLoading && chart.options.loading && (typeof dataSource === \"string\" || typeof dataSource === \"function\")) {\n      setText(chart.element, chart.options.loading);\n    }\n\n    if (typeof dataSource === \"string\") {\n      pushRequest(dataSource, function (data) {\n        chart.rawData = data;\n        errorCatcher(chart);\n      }, function (message) {\n        chartError(chart.element, message);\n      });\n    } else if (typeof dataSource === \"function\") {\n      try {\n        dataSource(function (data) {\n          chart.rawData = data;\n          errorCatcher(chart);\n        }, function (message) {\n          chartError(chart.element, message, true);\n        });\n      } catch (err) {\n        chartError(chart.element, err, true);\n      }\n    } else {\n      chart.rawData = dataSource;\n      errorCatcher(chart);\n    }\n  }\n\n  function getAdapterType(library) {\n    if (library) {\n      if (library.product === \"Highcharts\") {\n        return defaultExport$1;\n      } else if (library.charts) {\n        return defaultExport;\n      } else if (isFunction(library)) {\n        return defaultExport$2;\n      }\n    }\n    throw new Error(\"Unknown adapter\");\n  }\n\n  function addAdapter(library) {\n    var adapterType = getAdapterType(library);\n    var adapter = new adapterType(library);\n\n    if (adapters.indexOf(adapter) === -1) {\n      adapters.push(adapter);\n    }\n  }\n\n  function loadAdapters() {\n    if (\"Chart\" in window) {\n      addAdapter(window.Chart);\n    }\n\n    if (\"Highcharts\" in window) {\n      addAdapter(window.Highcharts);\n    }\n\n    if (window.google && window.google.charts) {\n      addAdapter(window.google);\n    }\n  }\n\n  function renderChart(chartType, chart) {\n    if (dataEmpty(chart.data, chartType)) {\n      var message = chart.options.empty || (chart.options.messages && chart.options.messages.empty) || \"No data\";\n      setText(chart.element, message);\n    } else {\n      callAdapter(chartType, chart);\n      if (chart.options.download && !chart.__downloadAttached && chart.adapter === \"chartjs\") {\n        addDownloadButton(chart);\n      }\n    }\n  }\n\n  // TODO remove chartType if cross-browser way\n  // to get the name of the chart class\n  function callAdapter(chartType, chart) {\n    var i, adapter, fnName, adapterName;\n    fnName = \"render\" + chartType;\n    adapterName = chart.options.adapter;\n\n    loadAdapters();\n\n    for (i = 0; i < adapters.length; i++) {\n      adapter = adapters[i];\n      if ((!adapterName || adapterName === adapter.name) && isFunction(adapter[fnName])) {\n        chart.adapter = adapter.name;\n        chart.__adapterObject = adapter;\n        return adapter[fnName](chart);\n      }\n    }\n\n    if (adapters.length > 0) {\n      throw new Error(\"No charting library found for \" + chartType);\n    } else {\n      throw new Error(\"No charting libraries found - be sure to include one before your charts\");\n    }\n  }\n\n  // define classes\n\n  var Chart = function Chart(element, dataSource, options) {\n    var elementId;\n    if (typeof element === \"string\") {\n      elementId = element;\n      element = document.getElementById(element);\n      if (!element) {\n        throw new Error(\"No element with id \" + elementId);\n      }\n    }\n    this.element = element;\n    this.options = merge(Chartkick.options, options || {});\n    this.dataSource = dataSource;\n\n    Chartkick.charts[element.id] = this;\n\n    fetchDataSource(this, dataSource, true);\n\n    if (this.options.refresh) {\n      this.startRefresh();\n    }\n  };\n\n  Chart.prototype.getElement = function getElement () {\n    return this.element;\n  };\n\n  Chart.prototype.getDataSource = function getDataSource () {\n    return this.dataSource;\n  };\n\n  Chart.prototype.getData = function getData () {\n    return this.data;\n  };\n\n  Chart.prototype.getOptions = function getOptions () {\n    return this.options;\n  };\n\n  Chart.prototype.getChartObject = function getChartObject () {\n    return this.chart;\n  };\n\n  Chart.prototype.getAdapter = function getAdapter () {\n    return this.adapter;\n  };\n\n  Chart.prototype.updateData = function updateData (dataSource, options) {\n    this.dataSource = dataSource;\n    if (options) {\n      this.__updateOptions(options);\n    }\n    fetchDataSource(this, dataSource, true);\n  };\n\n  Chart.prototype.setOptions = function setOptions (options) {\n    this.__updateOptions(options);\n    this.redraw();\n  };\n\n  Chart.prototype.redraw = function redraw () {\n    fetchDataSource(this, this.rawData);\n  };\n\n  Chart.prototype.refreshData = function refreshData () {\n    if (typeof this.dataSource === \"string\") {\n      // prevent browser from caching\n      var sep = this.dataSource.indexOf(\"?\") === -1 ? \"?\" : \"&\";\n      var url = this.dataSource + sep + \"_=\" + (new Date()).getTime();\n      fetchDataSource(this, url);\n    } else if (typeof this.dataSource === \"function\") {\n      fetchDataSource(this, this.dataSource);\n    }\n  };\n\n  Chart.prototype.startRefresh = function startRefresh () {\n      var this$1$1 = this;\n\n    var refresh = this.options.refresh;\n\n    if (refresh && typeof this.dataSource !== \"string\" && typeof this.dataSource !== \"function\") {\n      throw new Error(\"Data source must be a URL or callback for refresh\");\n    }\n\n    if (!this.intervalId) {\n      if (refresh) {\n        this.intervalId = setInterval( function () {\n          this$1$1.refreshData();\n        }, refresh * 1000);\n      } else {\n        throw new Error(\"No refresh interval\");\n      }\n    }\n  };\n\n  Chart.prototype.stopRefresh = function stopRefresh () {\n    if (this.intervalId) {\n      clearInterval(this.intervalId);\n      this.intervalId = null;\n    }\n  };\n\n  Chart.prototype.toImage = function toImage (download) {\n    if (this.adapter === \"chartjs\") {\n      if (download && download.background && download.background !== \"transparent\") {\n        // https://stackoverflow.com/questions/30464750/chartjs-line-chart-set-background-color\n        var canvas = this.chart.canvas;\n        var ctx = this.chart.ctx;\n        var tmpCanvas = document.createElement(\"canvas\");\n        var tmpCtx = tmpCanvas.getContext(\"2d\");\n        tmpCanvas.width = ctx.canvas.width;\n        tmpCanvas.height = ctx.canvas.height;\n        tmpCtx.fillStyle = download.background;\n        tmpCtx.fillRect(0, 0, tmpCanvas.width, tmpCanvas.height);\n        tmpCtx.drawImage(canvas, 0, 0);\n        return tmpCanvas.toDataURL(\"image/png\");\n      } else {\n        return this.chart.toBase64Image();\n      }\n    } else {\n      throw new Error(\"Feature only available for Chart.js\");\n    }\n  };\n\n  Chart.prototype.destroy = function destroy () {\n    this.destroyed = true;\n    this.stopRefresh();\n\n    if (this.__adapterObject) {\n      this.__adapterObject.destroy(this);\n    }\n\n    if (this.__enterEvent) {\n      removeEvent(this.element, \"mouseover\", this.__enterEvent);\n    }\n\n    if (this.__leaveEvent) {\n      removeEvent(this.element, \"mouseout\", this.__leaveEvent);\n    }\n  };\n\n  Chart.prototype.__updateOptions = function __updateOptions (options) {\n    var updateRefresh = options.refresh && options.refresh !== this.options.refresh;\n    this.options = merge(Chartkick.options, options);\n    if (updateRefresh) {\n      this.stopRefresh();\n      this.startRefresh();\n    }\n  };\n\n  Chart.prototype.__render = function __render () {\n    this.data = this.__processData();\n    renderChart(this.__chartName(), this);\n  };\n\n  Chart.prototype.__config = function __config () {\n    return config;\n  };\n\n  var LineChart = /*@__PURE__*/(function (Chart) {\n    function LineChart () {\n      Chart.apply(this, arguments);\n    }\n\n    if ( Chart ) LineChart.__proto__ = Chart;\n    LineChart.prototype = Object.create( Chart && Chart.prototype );\n    LineChart.prototype.constructor = LineChart;\n\n    LineChart.prototype.__processData = function __processData () {\n      return processSeries(this);\n    };\n\n    LineChart.prototype.__chartName = function __chartName () {\n      return \"LineChart\";\n    };\n\n    return LineChart;\n  }(Chart));\n\n  var PieChart = /*@__PURE__*/(function (Chart) {\n    function PieChart () {\n      Chart.apply(this, arguments);\n    }\n\n    if ( Chart ) PieChart.__proto__ = Chart;\n    PieChart.prototype = Object.create( Chart && Chart.prototype );\n    PieChart.prototype.constructor = PieChart;\n\n    PieChart.prototype.__processData = function __processData () {\n      return processSimple(this);\n    };\n\n    PieChart.prototype.__chartName = function __chartName () {\n      return \"PieChart\";\n    };\n\n    return PieChart;\n  }(Chart));\n\n  var ColumnChart = /*@__PURE__*/(function (Chart) {\n    function ColumnChart () {\n      Chart.apply(this, arguments);\n    }\n\n    if ( Chart ) ColumnChart.__proto__ = Chart;\n    ColumnChart.prototype = Object.create( Chart && Chart.prototype );\n    ColumnChart.prototype.constructor = ColumnChart;\n\n    ColumnChart.prototype.__processData = function __processData () {\n      return processSeries(this, null, true);\n    };\n\n    ColumnChart.prototype.__chartName = function __chartName () {\n      return \"ColumnChart\";\n    };\n\n    return ColumnChart;\n  }(Chart));\n\n  var BarChart = /*@__PURE__*/(function (Chart) {\n    function BarChart () {\n      Chart.apply(this, arguments);\n    }\n\n    if ( Chart ) BarChart.__proto__ = Chart;\n    BarChart.prototype = Object.create( Chart && Chart.prototype );\n    BarChart.prototype.constructor = BarChart;\n\n    BarChart.prototype.__processData = function __processData () {\n      return processSeries(this, null, true);\n    };\n\n    BarChart.prototype.__chartName = function __chartName () {\n      return \"BarChart\";\n    };\n\n    return BarChart;\n  }(Chart));\n\n  var AreaChart = /*@__PURE__*/(function (Chart) {\n    function AreaChart () {\n      Chart.apply(this, arguments);\n    }\n\n    if ( Chart ) AreaChart.__proto__ = Chart;\n    AreaChart.prototype = Object.create( Chart && Chart.prototype );\n    AreaChart.prototype.constructor = AreaChart;\n\n    AreaChart.prototype.__processData = function __processData () {\n      return processSeries(this);\n    };\n\n    AreaChart.prototype.__chartName = function __chartName () {\n      return \"AreaChart\";\n    };\n\n    return AreaChart;\n  }(Chart));\n\n  var GeoChart = /*@__PURE__*/(function (Chart) {\n    function GeoChart () {\n      Chart.apply(this, arguments);\n    }\n\n    if ( Chart ) GeoChart.__proto__ = Chart;\n    GeoChart.prototype = Object.create( Chart && Chart.prototype );\n    GeoChart.prototype.constructor = GeoChart;\n\n    GeoChart.prototype.__processData = function __processData () {\n      return processSimple(this);\n    };\n\n    GeoChart.prototype.__chartName = function __chartName () {\n      return \"GeoChart\";\n    };\n\n    return GeoChart;\n  }(Chart));\n\n  var ScatterChart = /*@__PURE__*/(function (Chart) {\n    function ScatterChart () {\n      Chart.apply(this, arguments);\n    }\n\n    if ( Chart ) ScatterChart.__proto__ = Chart;\n    ScatterChart.prototype = Object.create( Chart && Chart.prototype );\n    ScatterChart.prototype.constructor = ScatterChart;\n\n    ScatterChart.prototype.__processData = function __processData () {\n      return processSeries(this, \"number\");\n    };\n\n    ScatterChart.prototype.__chartName = function __chartName () {\n      return \"ScatterChart\";\n    };\n\n    return ScatterChart;\n  }(Chart));\n\n  var BubbleChart = /*@__PURE__*/(function (Chart) {\n    function BubbleChart () {\n      Chart.apply(this, arguments);\n    }\n\n    if ( Chart ) BubbleChart.__proto__ = Chart;\n    BubbleChart.prototype = Object.create( Chart && Chart.prototype );\n    BubbleChart.prototype.constructor = BubbleChart;\n\n    BubbleChart.prototype.__processData = function __processData () {\n      return processSeries(this, \"bubble\");\n    };\n\n    BubbleChart.prototype.__chartName = function __chartName () {\n      return \"BubbleChart\";\n    };\n\n    return BubbleChart;\n  }(Chart));\n\n  var Timeline = /*@__PURE__*/(function (Chart) {\n    function Timeline () {\n      Chart.apply(this, arguments);\n    }\n\n    if ( Chart ) Timeline.__proto__ = Chart;\n    Timeline.prototype = Object.create( Chart && Chart.prototype );\n    Timeline.prototype.constructor = Timeline;\n\n    Timeline.prototype.__processData = function __processData () {\n      var i, data = this.rawData;\n      for (i = 0; i < data.length; i++) {\n        data[i][1] = toDate(data[i][1]);\n        data[i][2] = toDate(data[i][2]);\n      }\n      return data;\n    };\n\n    Timeline.prototype.__chartName = function __chartName () {\n      return \"Timeline\";\n    };\n\n    return Timeline;\n  }(Chart));\n\n  var Chartkick = {\n    LineChart: LineChart,\n    PieChart: PieChart,\n    ColumnChart: ColumnChart,\n    BarChart: BarChart,\n    AreaChart: AreaChart,\n    GeoChart: GeoChart,\n    ScatterChart: ScatterChart,\n    BubbleChart: BubbleChart,\n    Timeline: Timeline,\n    charts: {},\n    configure: function (options) {\n      for (var key in options) {\n        if (options.hasOwnProperty(key)) {\n          config[key] = options[key];\n        }\n      }\n    },\n    setDefaultOptions: function (opts) {\n      Chartkick.options = opts;\n    },\n    eachChart: function (callback) {\n      for (var chartId in Chartkick.charts) {\n        if (Chartkick.charts.hasOwnProperty(chartId)) {\n          callback(Chartkick.charts[chartId]);\n        }\n      }\n    },\n    destroyAll: function() {\n      for (var chartId in Chartkick.charts) {\n        if (Chartkick.charts.hasOwnProperty(chartId)) {\n          Chartkick.charts[chartId].destroy();\n          delete Chartkick.charts[chartId];\n        }\n      }\n    },\n    config: config,\n    options: {},\n    adapters: adapters,\n    addAdapter: addAdapter,\n    use: function(adapter) {\n      addAdapter(adapter);\n      return Chartkick;\n    }\n  };\n\n  // not ideal, but allows for simpler integration\n  if (typeof window !== \"undefined\" && !window.Chartkick) {\n    window.Chartkick = Chartkick;\n\n    // clean up previous charts before Turbolinks loads new page\n    document.addEventListener(\"turbolinks:before-render\", function() {\n      if (config.autoDestroy !== false) {\n        Chartkick.destroyAll();\n      }\n    });\n    document.addEventListener(\"turbo:before-render\", function() {\n      if (config.autoDestroy !== false) {\n        Chartkick.destroyAll();\n      }\n    });\n\n    // use setTimeout so charting library can come later in same JS file\n    setTimeout(function() {\n      window.dispatchEvent(new Event(\"chartkick:load\"));\n    }, 0);\n  }\n\n  // backwards compatibility for esm require\n  Chartkick.default = Chartkick;\n\n  return Chartkick;\n\n}));\n", "(function(global, factory) {\n  typeof exports === \"object\" && typeof module !== \"undefined\" ? factory(exports) : typeof define === \"function\" && define.amd ? define([ \"exports\" ], factory) : factory(global.ActionCable = {});\n})(this, function(exports) {\n  \"use strict\";\n  var adapters = {\n    logger: self.console,\n    WebSocket: self.WebSocket\n  };\n  var logger = {\n    log: function log() {\n      if (this.enabled) {\n        var _adapters$logger;\n        for (var _len = arguments.length, messages = Array(_len), _key = 0; _key < _len; _key++) {\n          messages[_key] = arguments[_key];\n        }\n        messages.push(Date.now());\n        (_adapters$logger = adapters.logger).log.apply(_adapters$logger, [ \"[ActionCable]\" ].concat(messages));\n      }\n    }\n  };\n  var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function(obj) {\n    return typeof obj;\n  } : function(obj) {\n    return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n  };\n  var classCallCheck = function(instance, Constructor) {\n    if (!(instance instanceof Constructor)) {\n      throw new TypeError(\"Cannot call a class as a function\");\n    }\n  };\n  var createClass = function() {\n    function defineProperties(target, props) {\n      for (var i = 0; i < props.length; i++) {\n        var descriptor = props[i];\n        descriptor.enumerable = descriptor.enumerable || false;\n        descriptor.configurable = true;\n        if (\"value\" in descriptor) descriptor.writable = true;\n        Object.defineProperty(target, descriptor.key, descriptor);\n      }\n    }\n    return function(Constructor, protoProps, staticProps) {\n      if (protoProps) defineProperties(Constructor.prototype, protoProps);\n      if (staticProps) defineProperties(Constructor, staticProps);\n      return Constructor;\n    };\n  }();\n  var now = function now() {\n    return new Date().getTime();\n  };\n  var secondsSince = function secondsSince(time) {\n    return (now() - time) / 1e3;\n  };\n  var clamp = function clamp(number, min, max) {\n    return Math.max(min, Math.min(max, number));\n  };\n  var ConnectionMonitor = function() {\n    function ConnectionMonitor(connection) {\n      classCallCheck(this, ConnectionMonitor);\n      this.visibilityDidChange = this.visibilityDidChange.bind(this);\n      this.connection = connection;\n      this.reconnectAttempts = 0;\n    }\n    ConnectionMonitor.prototype.start = function start() {\n      if (!this.isRunning()) {\n        this.startedAt = now();\n        delete this.stoppedAt;\n        this.startPolling();\n        addEventListener(\"visibilitychange\", this.visibilityDidChange);\n        logger.log(\"ConnectionMonitor started. pollInterval = \" + this.getPollInterval() + \" ms\");\n      }\n    };\n    ConnectionMonitor.prototype.stop = function stop() {\n      if (this.isRunning()) {\n        this.stoppedAt = now();\n        this.stopPolling();\n        removeEventListener(\"visibilitychange\", this.visibilityDidChange);\n        logger.log(\"ConnectionMonitor stopped\");\n      }\n    };\n    ConnectionMonitor.prototype.isRunning = function isRunning() {\n      return this.startedAt && !this.stoppedAt;\n    };\n    ConnectionMonitor.prototype.recordPing = function recordPing() {\n      this.pingedAt = now();\n    };\n    ConnectionMonitor.prototype.recordConnect = function recordConnect() {\n      this.reconnectAttempts = 0;\n      this.recordPing();\n      delete this.disconnectedAt;\n      logger.log(\"ConnectionMonitor recorded connect\");\n    };\n    ConnectionMonitor.prototype.recordDisconnect = function recordDisconnect() {\n      this.disconnectedAt = now();\n      logger.log(\"ConnectionMonitor recorded disconnect\");\n    };\n    ConnectionMonitor.prototype.startPolling = function startPolling() {\n      this.stopPolling();\n      this.poll();\n    };\n    ConnectionMonitor.prototype.stopPolling = function stopPolling() {\n      clearTimeout(this.pollTimeout);\n    };\n    ConnectionMonitor.prototype.poll = function poll() {\n      var _this = this;\n      this.pollTimeout = setTimeout(function() {\n        _this.reconnectIfStale();\n        _this.poll();\n      }, this.getPollInterval());\n    };\n    ConnectionMonitor.prototype.getPollInterval = function getPollInterval() {\n      var _constructor$pollInte = this.constructor.pollInterval, min = _constructor$pollInte.min, max = _constructor$pollInte.max, multiplier = _constructor$pollInte.multiplier;\n      var interval = multiplier * Math.log(this.reconnectAttempts + 1);\n      return Math.round(clamp(interval, min, max) * 1e3);\n    };\n    ConnectionMonitor.prototype.reconnectIfStale = function reconnectIfStale() {\n      if (this.connectionIsStale()) {\n        logger.log(\"ConnectionMonitor detected stale connection. reconnectAttempts = \" + this.reconnectAttempts + \", pollInterval = \" + this.getPollInterval() + \" ms, time disconnected = \" + secondsSince(this.disconnectedAt) + \" s, stale threshold = \" + this.constructor.staleThreshold + \" s\");\n        this.reconnectAttempts++;\n        if (this.disconnectedRecently()) {\n          logger.log(\"ConnectionMonitor skipping reopening recent disconnect\");\n        } else {\n          logger.log(\"ConnectionMonitor reopening\");\n          this.connection.reopen();\n        }\n      }\n    };\n    ConnectionMonitor.prototype.connectionIsStale = function connectionIsStale() {\n      return secondsSince(this.pingedAt ? this.pingedAt : this.startedAt) > this.constructor.staleThreshold;\n    };\n    ConnectionMonitor.prototype.disconnectedRecently = function disconnectedRecently() {\n      return this.disconnectedAt && secondsSince(this.disconnectedAt) < this.constructor.staleThreshold;\n    };\n    ConnectionMonitor.prototype.visibilityDidChange = function visibilityDidChange() {\n      var _this2 = this;\n      if (document.visibilityState === \"visible\") {\n        setTimeout(function() {\n          if (_this2.connectionIsStale() || !_this2.connection.isOpen()) {\n            logger.log(\"ConnectionMonitor reopening stale connection on visibilitychange. visibilityState = \" + document.visibilityState);\n            _this2.connection.reopen();\n          }\n        }, 200);\n      }\n    };\n    return ConnectionMonitor;\n  }();\n  ConnectionMonitor.pollInterval = {\n    min: 3,\n    max: 30,\n    multiplier: 5\n  };\n  ConnectionMonitor.staleThreshold = 6;\n  var INTERNAL = {\n    message_types: {\n      welcome: \"welcome\",\n      disconnect: \"disconnect\",\n      ping: \"ping\",\n      confirmation: \"confirm_subscription\",\n      rejection: \"reject_subscription\"\n    },\n    disconnect_reasons: {\n      unauthorized: \"unauthorized\",\n      invalid_request: \"invalid_request\",\n      server_restart: \"server_restart\"\n    },\n    default_mount_path: \"/cable\",\n    protocols: [ \"actioncable-v1-json\", \"actioncable-unsupported\" ]\n  };\n  var message_types = INTERNAL.message_types, protocols = INTERNAL.protocols;\n  var supportedProtocols = protocols.slice(0, protocols.length - 1);\n  var indexOf = [].indexOf;\n  var Connection = function() {\n    function Connection(consumer) {\n      classCallCheck(this, Connection);\n      this.open = this.open.bind(this);\n      this.consumer = consumer;\n      this.subscriptions = this.consumer.subscriptions;\n      this.monitor = new ConnectionMonitor(this);\n      this.disconnected = true;\n    }\n    Connection.prototype.send = function send(data) {\n      if (this.isOpen()) {\n        this.webSocket.send(JSON.stringify(data));\n        return true;\n      } else {\n        return false;\n      }\n    };\n    Connection.prototype.open = function open() {\n      if (this.isActive()) {\n        logger.log(\"Attempted to open WebSocket, but existing socket is \" + this.getState());\n        return false;\n      } else {\n        logger.log(\"Opening WebSocket, current state is \" + this.getState() + \", subprotocols: \" + protocols);\n        if (this.webSocket) {\n          this.uninstallEventHandlers();\n        }\n        this.webSocket = new adapters.WebSocket(this.consumer.url, protocols);\n        this.installEventHandlers();\n        this.monitor.start();\n        return true;\n      }\n    };\n    Connection.prototype.close = function close() {\n      var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {\n        allowReconnect: true\n      }, allowReconnect = _ref.allowReconnect;\n      if (!allowReconnect) {\n        this.monitor.stop();\n      }\n      if (this.isActive()) {\n        return this.webSocket.close();\n      }\n    };\n    Connection.prototype.reopen = function reopen() {\n      logger.log(\"Reopening WebSocket, current state is \" + this.getState());\n      if (this.isActive()) {\n        try {\n          return this.close();\n        } catch (error) {\n          logger.log(\"Failed to reopen WebSocket\", error);\n        } finally {\n          logger.log(\"Reopening WebSocket in \" + this.constructor.reopenDelay + \"ms\");\n          setTimeout(this.open, this.constructor.reopenDelay);\n        }\n      } else {\n        return this.open();\n      }\n    };\n    Connection.prototype.getProtocol = function getProtocol() {\n      if (this.webSocket) {\n        return this.webSocket.protocol;\n      }\n    };\n    Connection.prototype.isOpen = function isOpen() {\n      return this.isState(\"open\");\n    };\n    Connection.prototype.isActive = function isActive() {\n      return this.isState(\"open\", \"connecting\");\n    };\n    Connection.prototype.isProtocolSupported = function isProtocolSupported() {\n      return indexOf.call(supportedProtocols, this.getProtocol()) >= 0;\n    };\n    Connection.prototype.isState = function isState() {\n      for (var _len = arguments.length, states = Array(_len), _key = 0; _key < _len; _key++) {\n        states[_key] = arguments[_key];\n      }\n      return indexOf.call(states, this.getState()) >= 0;\n    };\n    Connection.prototype.getState = function getState() {\n      if (this.webSocket) {\n        for (var state in adapters.WebSocket) {\n          if (adapters.WebSocket[state] === this.webSocket.readyState) {\n            return state.toLowerCase();\n          }\n        }\n      }\n      return null;\n    };\n    Connection.prototype.installEventHandlers = function installEventHandlers() {\n      for (var eventName in this.events) {\n        var handler = this.events[eventName].bind(this);\n        this.webSocket[\"on\" + eventName] = handler;\n      }\n    };\n    Connection.prototype.uninstallEventHandlers = function uninstallEventHandlers() {\n      for (var eventName in this.events) {\n        this.webSocket[\"on\" + eventName] = function() {};\n      }\n    };\n    return Connection;\n  }();\n  Connection.reopenDelay = 500;\n  Connection.prototype.events = {\n    message: function message(event) {\n      if (!this.isProtocolSupported()) {\n        return;\n      }\n      var _JSON$parse = JSON.parse(event.data), identifier = _JSON$parse.identifier, message = _JSON$parse.message, reason = _JSON$parse.reason, reconnect = _JSON$parse.reconnect, type = _JSON$parse.type;\n      switch (type) {\n       case message_types.welcome:\n        this.monitor.recordConnect();\n        return this.subscriptions.reload();\n\n       case message_types.disconnect:\n        logger.log(\"Disconnecting. Reason: \" + reason);\n        return this.close({\n          allowReconnect: reconnect\n        });\n\n       case message_types.ping:\n        return this.monitor.recordPing();\n\n       case message_types.confirmation:\n        this.subscriptions.confirmSubscription(identifier);\n        return this.subscriptions.notify(identifier, \"connected\");\n\n       case message_types.rejection:\n        return this.subscriptions.reject(identifier);\n\n       default:\n        return this.subscriptions.notify(identifier, \"received\", message);\n      }\n    },\n    open: function open() {\n      logger.log(\"WebSocket onopen event, using '\" + this.getProtocol() + \"' subprotocol\");\n      this.disconnected = false;\n      if (!this.isProtocolSupported()) {\n        logger.log(\"Protocol is unsupported. Stopping monitor and disconnecting.\");\n        return this.close({\n          allowReconnect: false\n        });\n      }\n    },\n    close: function close(event) {\n      logger.log(\"WebSocket onclose event\");\n      if (this.disconnected) {\n        return;\n      }\n      this.disconnected = true;\n      this.monitor.recordDisconnect();\n      return this.subscriptions.notifyAll(\"disconnected\", {\n        willAttemptReconnect: this.monitor.isRunning()\n      });\n    },\n    error: function error() {\n      logger.log(\"WebSocket onerror event\");\n    }\n  };\n  var extend = function extend(object, properties) {\n    if (properties != null) {\n      for (var key in properties) {\n        var value = properties[key];\n        object[key] = value;\n      }\n    }\n    return object;\n  };\n  var Subscription = function() {\n    function Subscription(consumer) {\n      var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n      var mixin = arguments[2];\n      classCallCheck(this, Subscription);\n      this.consumer = consumer;\n      this.identifier = JSON.stringify(params);\n      extend(this, mixin);\n    }\n    Subscription.prototype.perform = function perform(action) {\n      var data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n      data.action = action;\n      return this.send(data);\n    };\n    Subscription.prototype.send = function send(data) {\n      return this.consumer.send({\n        command: \"message\",\n        identifier: this.identifier,\n        data: JSON.stringify(data)\n      });\n    };\n    Subscription.prototype.unsubscribe = function unsubscribe() {\n      return this.consumer.subscriptions.remove(this);\n    };\n    return Subscription;\n  }();\n  var SubscriptionGuarantor = function() {\n    function SubscriptionGuarantor(subscriptions) {\n      classCallCheck(this, SubscriptionGuarantor);\n      this.subscriptions = subscriptions;\n      this.pendingSubscriptions = [];\n    }\n    SubscriptionGuarantor.prototype.guarantee = function guarantee(subscription) {\n      if (this.pendingSubscriptions.indexOf(subscription) == -1) {\n        logger.log(\"SubscriptionGuarantor guaranteeing \" + subscription.identifier);\n        this.pendingSubscriptions.push(subscription);\n      } else {\n        logger.log(\"SubscriptionGuarantor already guaranteeing \" + subscription.identifier);\n      }\n      this.startGuaranteeing();\n    };\n    SubscriptionGuarantor.prototype.forget = function forget(subscription) {\n      logger.log(\"SubscriptionGuarantor forgetting \" + subscription.identifier);\n      this.pendingSubscriptions = this.pendingSubscriptions.filter(function(s) {\n        return s !== subscription;\n      });\n    };\n    SubscriptionGuarantor.prototype.startGuaranteeing = function startGuaranteeing() {\n      this.stopGuaranteeing();\n      this.retrySubscribing();\n    };\n    SubscriptionGuarantor.prototype.stopGuaranteeing = function stopGuaranteeing() {\n      clearTimeout(this.retryTimeout);\n    };\n    SubscriptionGuarantor.prototype.retrySubscribing = function retrySubscribing() {\n      var _this = this;\n      this.retryTimeout = setTimeout(function() {\n        if (_this.subscriptions && typeof _this.subscriptions.subscribe === \"function\") {\n          _this.pendingSubscriptions.map(function(subscription) {\n            logger.log(\"SubscriptionGuarantor resubscribing \" + subscription.identifier);\n            _this.subscriptions.subscribe(subscription);\n          });\n        }\n      }, 500);\n    };\n    return SubscriptionGuarantor;\n  }();\n  var Subscriptions = function() {\n    function Subscriptions(consumer) {\n      classCallCheck(this, Subscriptions);\n      this.consumer = consumer;\n      this.guarantor = new SubscriptionGuarantor(this);\n      this.subscriptions = [];\n    }\n    Subscriptions.prototype.create = function create(channelName, mixin) {\n      var channel = channelName;\n      var params = (typeof channel === \"undefined\" ? \"undefined\" : _typeof(channel)) === \"object\" ? channel : {\n        channel: channel\n      };\n      var subscription = new Subscription(this.consumer, params, mixin);\n      return this.add(subscription);\n    };\n    Subscriptions.prototype.add = function add(subscription) {\n      this.subscriptions.push(subscription);\n      this.consumer.ensureActiveConnection();\n      this.notify(subscription, \"initialized\");\n      this.subscribe(subscription);\n      return subscription;\n    };\n    Subscriptions.prototype.remove = function remove(subscription) {\n      this.forget(subscription);\n      if (!this.findAll(subscription.identifier).length) {\n        this.sendCommand(subscription, \"unsubscribe\");\n      }\n      return subscription;\n    };\n    Subscriptions.prototype.reject = function reject(identifier) {\n      var _this = this;\n      return this.findAll(identifier).map(function(subscription) {\n        _this.forget(subscription);\n        _this.notify(subscription, \"rejected\");\n        return subscription;\n      });\n    };\n    Subscriptions.prototype.forget = function forget(subscription) {\n      this.guarantor.forget(subscription);\n      this.subscriptions = this.subscriptions.filter(function(s) {\n        return s !== subscription;\n      });\n      return subscription;\n    };\n    Subscriptions.prototype.findAll = function findAll(identifier) {\n      return this.subscriptions.filter(function(s) {\n        return s.identifier === identifier;\n      });\n    };\n    Subscriptions.prototype.reload = function reload() {\n      var _this2 = this;\n      return this.subscriptions.map(function(subscription) {\n        return _this2.subscribe(subscription);\n      });\n    };\n    Subscriptions.prototype.notifyAll = function notifyAll(callbackName) {\n      var _this3 = this;\n      for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n        args[_key - 1] = arguments[_key];\n      }\n      return this.subscriptions.map(function(subscription) {\n        return _this3.notify.apply(_this3, [ subscription, callbackName ].concat(args));\n      });\n    };\n    Subscriptions.prototype.notify = function notify(subscription, callbackName) {\n      for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n        args[_key2 - 2] = arguments[_key2];\n      }\n      var subscriptions = void 0;\n      if (typeof subscription === \"string\") {\n        subscriptions = this.findAll(subscription);\n      } else {\n        subscriptions = [ subscription ];\n      }\n      return subscriptions.map(function(subscription) {\n        return typeof subscription[callbackName] === \"function\" ? subscription[callbackName].apply(subscription, args) : undefined;\n      });\n    };\n    Subscriptions.prototype.subscribe = function subscribe(subscription) {\n      if (this.sendCommand(subscription, \"subscribe\")) {\n        this.guarantor.guarantee(subscription);\n      }\n    };\n    Subscriptions.prototype.confirmSubscription = function confirmSubscription(identifier) {\n      var _this4 = this;\n      logger.log(\"Subscription confirmed \" + identifier);\n      this.findAll(identifier).map(function(subscription) {\n        return _this4.guarantor.forget(subscription);\n      });\n    };\n    Subscriptions.prototype.sendCommand = function sendCommand(subscription, command) {\n      var identifier = subscription.identifier;\n      return this.consumer.send({\n        command: command,\n        identifier: identifier\n      });\n    };\n    return Subscriptions;\n  }();\n  var Consumer = function() {\n    function Consumer(url) {\n      classCallCheck(this, Consumer);\n      this._url = url;\n      this.subscriptions = new Subscriptions(this);\n      this.connection = new Connection(this);\n    }\n    Consumer.prototype.send = function send(data) {\n      return this.connection.send(data);\n    };\n    Consumer.prototype.connect = function connect() {\n      return this.connection.open();\n    };\n    Consumer.prototype.disconnect = function disconnect() {\n      return this.connection.close({\n        allowReconnect: false\n      });\n    };\n    Consumer.prototype.ensureActiveConnection = function ensureActiveConnection() {\n      if (!this.connection.isActive()) {\n        return this.connection.open();\n      }\n    };\n    createClass(Consumer, [ {\n      key: \"url\",\n      get: function get$$1() {\n        return createWebSocketURL(this._url);\n      }\n    } ]);\n    return Consumer;\n  }();\n  function createWebSocketURL(url) {\n    if (typeof url === \"function\") {\n      url = url();\n    }\n    if (url && !/^wss?:/i.test(url)) {\n      var a = document.createElement(\"a\");\n      a.href = url;\n      a.href = a.href;\n      a.protocol = a.protocol.replace(\"http\", \"ws\");\n      return a.href;\n    } else {\n      return url;\n    }\n  }\n  function createConsumer() {\n    var url = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getConfig(\"url\") || INTERNAL.default_mount_path;\n    return new Consumer(url);\n  }\n  function getConfig(name) {\n    var element = document.head.querySelector(\"meta[name='action-cable-\" + name + \"']\");\n    if (element) {\n      return element.getAttribute(\"content\");\n    }\n  }\n  exports.Connection = Connection;\n  exports.ConnectionMonitor = ConnectionMonitor;\n  exports.Consumer = Consumer;\n  exports.INTERNAL = INTERNAL;\n  exports.Subscription = Subscription;\n  exports.Subscriptions = Subscriptions;\n  exports.SubscriptionGuarantor = SubscriptionGuarantor;\n  exports.adapters = adapters;\n  exports.createWebSocketURL = createWebSocketURL;\n  exports.logger = logger;\n  exports.createConsumer = createConsumer;\n  exports.getConfig = getConfig;\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n});\n", "\"use strict\";\n\n/**\n * Adds zero to strings shorter than two characters.\n *\n * @param {number} number\n * @returns {string}\n */\nfunction pad(number) {\n  return number < 10 ? `0${number}` : number.toString();\n}\n/**\n * Returns a timestamp in the format of `hours:minutes:seconds`\n */\n\n\nfunction getTimeStamp() {\n  const date = new Date();\n  const hours = pad(date.getHours());\n  const minutes = pad(date.getMinutes());\n  const seconds = pad(date.getSeconds());\n  return `${hours}:${minutes}:${seconds}`;\n}\n\nmodule.exports = getTimeStamp;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.justErrorsLogger = exports.debugLogger = void 0;\n\n/* eslint-disable no-console */\nconst getTimeStamp = require(\"@uppy/utils/lib/getTimeStamp\"); // Swallow all logs, except errors.\n// default if logger is not set or debug: false\n\n\nconst justErrorsLogger = {\n  debug: () => {},\n  warn: () => {},\n  error: function () {\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return console.error(`[Uppy] [${getTimeStamp()}]`, ...args);\n  }\n}; // Print logs to console with namespace + timestamp,\n// set by logger: Uppy.debugLogger or debug: true\n\nexports.justErrorsLogger = justErrorsLogger;\nconst debugLogger = {\n  debug: function () {\n    for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n      args[_key2] = arguments[_key2];\n    }\n\n    return console.debug(`[Uppy] [${getTimeStamp()}]`, ...args);\n  },\n  warn: function () {\n    for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n      args[_key3] = arguments[_key3];\n    }\n\n    return console.warn(`[Uppy] [${getTimeStamp()}]`, ...args);\n  },\n  error: function () {\n    for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n      args[_key4] = arguments[_key4];\n    }\n\n    return console.error(`[Uppy] [${getTimeStamp()}]`, ...args);\n  }\n};\nexports.debugLogger = debugLogger;", "// This alphabet uses `A-Za-z0-9_-` symbols.\n// The order of characters is optimized for better gzip and brotli compression.\n// References to the same file (works both for gzip and brotli):\n// `'use`, `andom`, and `rict'`\n// References to the brotli default dictionary:\n// `-26T`, `1983`, `40px`, `75px`, `bush`, `jack`, `mind`, `very`, and `wolf`\nlet urlAlphabet =\n  'useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict'\n\nlet customAlphabet = (alphabet, defaultSize = 21) => {\n  return (size = defaultSize) => {\n    let id = ''\n    // A compact alternative for `for (var i = 0; i < step; i++)`.\n    let i = size | 0\n    while (i--) {\n      // `| 0` is more compact and faster than `Math.floor()`.\n      id += alphabet[(Math.random() * alphabet.length) | 0]\n    }\n    return id\n  }\n}\n\nlet nanoid = (size = 21) => {\n  let id = ''\n  // A compact alternative for `for (var i = 0; i < step; i++)`.\n  let i = size | 0\n  while (i--) {\n    // `| 0` is more compact and faster than `Math.floor()`.\n    id += urlAlphabet[(Math.random() * 64) | 0]\n  }\n  return id\n}\n\nmodule.exports = { nanoid, customAlphabet }\n", "// Adapted from https://github.com/Flet/prettier-bytes/\n// Changing 1000 bytes to 1024, so we can keep uppercase KB vs kB\n// ISC License (c) Dan Flettre https://github.com/Flet/prettier-bytes/blob/master/LICENSE\nmodule.exports = function prettierBytes (num) {\n  if (typeof num !== 'number' || isNaN(num)) {\n    throw new TypeError('Expected a number, got ' + typeof num)\n  }\n\n  var neg = num < 0\n  var units = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB']\n\n  if (neg) {\n    num = -num\n  }\n\n  if (num < 1) {\n    return (neg ? '-' : '') + num + ' B'\n  }\n\n  var exponent = Math.min(Math.floor(Math.log(num) / Math.log(1024)), units.length - 1)\n  num = Number(num / Math.pow(1024, exponent))\n  var unit = units[exponent]\n\n  if (num >= 10 || num % 1 === 0) {\n    // Do not show decimals when the number is two-digit, or if the number has no\n    // decimal component.\n    return (neg ? '-' : '') + num.toFixed(0) + ' ' + unit\n  } else {\n    return (neg ? '-' : '') + num.toFixed(1) + ' ' + unit\n  }\n}\n", "/* jshint node: true */\n'use strict';\n\n/**\n  # wildcard\n\n  Very simple wildcard matching, which is designed to provide the same\n  functionality that is found in the\n  [eve](https://github.com/adobe-webplatform/eve) eventing library.\n\n  ## Usage\n\n  It works with strings:\n\n  <<< examples/strings.js\n\n  Arrays:\n\n  <<< examples/arrays.js\n\n  Objects (matching against keys):\n\n  <<< examples/objects.js\n\n  While the library works in Node, if you are are looking for file-based\n  wildcard matching then you should have a look at:\n\n  <https://github.com/isaacs/node-glob>\n**/\n\nfunction WildcardMatcher(text, separator) {\n  this.text = text = text || '';\n  this.hasWild = ~text.indexOf('*');\n  this.separator = separator;\n  this.parts = text.split(separator);\n}\n\nWildcardMatcher.prototype.match = function(input) {\n  var matches = true;\n  var parts = this.parts;\n  var ii;\n  var partsCount = parts.length;\n  var testParts;\n\n  if (typeof input == 'string' || input instanceof String) {\n    if (!this.hasWild && this.text != input) {\n      matches = false;\n    } else {\n      testParts = (input || '').split(this.separator);\n      for (ii = 0; matches && ii < partsCount; ii++) {\n        if (parts[ii] === '*')  {\n          continue;\n        } else if (ii < testParts.length) {\n          matches = parts[ii] === testParts[ii];\n        } else {\n          matches = false;\n        }\n      }\n\n      // If matches, then return the component parts\n      matches = matches && testParts;\n    }\n  }\n  else if (typeof input.splice == 'function') {\n    matches = [];\n\n    for (ii = input.length; ii--; ) {\n      if (this.match(input[ii])) {\n        matches[matches.length] = input[ii];\n      }\n    }\n  }\n  else if (typeof input == 'object') {\n    matches = {};\n\n    for (var key in input) {\n      if (this.match(key)) {\n        matches[key] = input[key];\n      }\n    }\n  }\n\n  return matches;\n};\n\nmodule.exports = function(text, test, separator) {\n  var matcher = new WildcardMatcher(text, separator || /[\\/\\.]/);\n  if (typeof test != 'undefined') {\n    return matcher.match(test);\n  }\n\n  return matcher;\n};\n", "var wildcard = require('wildcard');\nvar reMimePartSplit = /[\\/\\+\\.]/;\n\n/**\n  # mime-match\n\n  A simple function to checker whether a target mime type matches a mime-type\n  pattern (e.g. image/jpeg matches image/jpeg OR image/*).\n\n  ## Example Usage\n\n  <<< example.js\n\n**/\nmodule.exports = function(target, pattern) {\n  function test(pattern) {\n    var result = wildcard(pattern, target, reMimePartSplit);\n\n    // ensure that we have a valid mime type (should have two parts)\n    return result && result.length >= 2;\n  }\n\n  return pattern ? test(pattern.split(';')[0]) : test;\n};\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.defaultOptions = exports.RestrictionError = exports.Restricter = void 0;\n\n/* eslint-disable max-classes-per-file, class-methods-use-this */\n\n/* global AggregateError */\nconst prettierBytes = require(\"@transloadit/prettier-bytes\");\n\nconst match = require(\"mime-match\");\n\nconst defaultOptions = {\n  maxFileSize: null,\n  minFileSize: null,\n  maxTotalFileSize: null,\n  maxNumberOfFiles: null,\n  minNumberOfFiles: null,\n  allowedFileTypes: null,\n  requiredMetaFields: []\n};\nexports.defaultOptions = defaultOptions;\n\nclass RestrictionError extends Error {\n  constructor() {\n    super(...arguments);\n    this.isRestriction = true;\n  }\n\n}\n\nexports.RestrictionError = RestrictionError;\n\nif (typeof AggregateError === 'undefined') {\n  // eslint-disable-next-line no-global-assign\n  // TODO: remove this \"polyfill\" in the next major.\n  globalThis.AggregateError = class AggregateError extends Error {\n    constructor(errors, message) {\n      super(message);\n      this.errors = errors;\n    }\n\n  };\n}\n\nclass Restricter {\n  constructor(getOpts, i18n) {\n    this.i18n = i18n;\n\n    this.getOpts = () => {\n      const opts = getOpts();\n\n      if (opts.restrictions.allowedFileTypes != null && !Array.isArray(opts.restrictions.allowedFileTypes)) {\n        throw new TypeError('`restrictions.allowedFileTypes` must be an array');\n      }\n\n      return opts;\n    };\n  }\n\n  validate(file, files) {\n    const {\n      maxFileSize,\n      minFileSize,\n      maxTotalFileSize,\n      maxNumberOfFiles,\n      allowedFileTypes\n    } = this.getOpts().restrictions;\n\n    if (maxNumberOfFiles) {\n      const nonGhostFiles = files.filter(f => !f.isGhost);\n\n      if (nonGhostFiles.length + 1 > maxNumberOfFiles) {\n        throw new RestrictionError(`${this.i18n('youCanOnlyUploadX', {\n          smart_count: maxNumberOfFiles\n        })}`);\n      }\n    }\n\n    if (allowedFileTypes) {\n      const isCorrectFileType = allowedFileTypes.some(type => {\n        // check if this is a mime-type\n        if (type.includes('/')) {\n          if (!file.type) return false;\n          return match(file.type.replace(/;.*?$/, ''), type);\n        } // otherwise this is likely an extension\n\n\n        if (type[0] === '.' && file.extension) {\n          return file.extension.toLowerCase() === type.slice(1).toLowerCase();\n        }\n\n        return false;\n      });\n\n      if (!isCorrectFileType) {\n        const allowedFileTypesString = allowedFileTypes.join(', ');\n        throw new RestrictionError(this.i18n('youCanOnlyUploadFileTypes', {\n          types: allowedFileTypesString\n        }));\n      }\n    } // We can't check maxTotalFileSize if the size is unknown.\n\n\n    if (maxTotalFileSize && file.size != null) {\n      const totalFilesSize = files.reduce((total, f) => total + f.size, file.size);\n\n      if (totalFilesSize > maxTotalFileSize) {\n        throw new RestrictionError(this.i18n('exceedsSize', {\n          size: prettierBytes(maxTotalFileSize),\n          file: file.name\n        }));\n      }\n    } // We can't check maxFileSize if the size is unknown.\n\n\n    if (maxFileSize && file.size != null && file.size > maxFileSize) {\n      throw new RestrictionError(this.i18n('exceedsSize', {\n        size: prettierBytes(maxFileSize),\n        file: file.name\n      }));\n    } // We can't check minFileSize if the size is unknown.\n\n\n    if (minFileSize && file.size != null && file.size < minFileSize) {\n      throw new RestrictionError(this.i18n('inferiorSize', {\n        size: prettierBytes(minFileSize)\n      }));\n    }\n  }\n\n  validateMinNumberOfFiles(files) {\n    const {\n      minNumberOfFiles\n    } = this.getOpts().restrictions;\n\n    if (Object.keys(files).length < minNumberOfFiles) {\n      throw new RestrictionError(this.i18n('youHaveToAtLeastSelectX', {\n        smart_count: minNumberOfFiles\n      }));\n    }\n  }\n\n  getMissingRequiredMetaFields(file) {\n    const error = new RestrictionError(this.i18n('missingRequiredMetaFieldOnFile', {\n      fileName: file.name\n    }));\n    const {\n      requiredMetaFields\n    } = this.getOpts().restrictions; // TODO: migrate to Object.hasOwn in the next major.\n\n    const own = Object.prototype.hasOwnProperty;\n    const missingFields = [];\n\n    for (const field of requiredMetaFields) {\n      if (!own.call(file.meta, field) || file.meta[field] === '') {\n        missingFields.push(field);\n      }\n    }\n\n    return {\n      missingFields,\n      error\n    };\n  }\n\n}\n\nexports.Restricter = Restricter;", "\"use strict\";\n\nfunction has(object, key) {\n  return Object.prototype.hasOwnProperty.call(object, key);\n}\n\nmodule.exports = has;", "\"use strict\";\n\nfunction _classPrivateFieldLooseBase(receiver, privateKey) { if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) { throw new TypeError(\"attempted to use private field on non-instance\"); } return receiver; }\n\nvar id = 0;\n\nfunction _classPrivateFieldLooseKey(name) { return \"__private_\" + id++ + \"_\" + name; }\n\nconst has = require(\"./hasProperty.js\");\n\nfunction insertReplacement(source, rx, replacement) {\n  const newParts = [];\n  source.forEach(chunk => {\n    // When the source contains multiple placeholders for interpolation,\n    // we should ignore chunks that are not strings, because those\n    // can be JSX objects and will be otherwise incorrectly turned into strings.\n    // Without this condition we\u2019d get this: [object Object] hello [object Object] my <button>\n    if (typeof chunk !== 'string') {\n      return newParts.push(chunk);\n    }\n\n    return rx[Symbol.split](chunk).forEach((raw, i, list) => {\n      if (raw !== '') {\n        newParts.push(raw);\n      } // Interlace with the `replacement` value\n\n\n      if (i < list.length - 1) {\n        newParts.push(replacement);\n      }\n    });\n  });\n  return newParts;\n}\n/**\n * Takes a string with placeholder variables like `%{smart_count} file selected`\n * and replaces it with values from options `{smart_count: 5}`\n *\n * @license https://github.com/airbnb/polyglot.js/blob/master/LICENSE\n * taken from https://github.com/airbnb/polyglot.js/blob/master/lib/polyglot.js#L299\n *\n * @param {string} phrase that needs interpolation, with placeholders\n * @param {object} options with values that will be used to replace placeholders\n * @returns {any[]} interpolated\n */\n\n\nfunction interpolate(phrase, options) {\n  const dollarRegex = /\\$/g;\n  const dollarBillsYall = '$$$$';\n  let interpolated = [phrase];\n  if (options == null) return interpolated;\n\n  for (const arg of Object.keys(options)) {\n    if (arg !== '_') {\n      // Ensure replacement value is escaped to prevent special $-prefixed\n      // regex replace tokens. the \"$$$$\" is needed because each \"$\" needs to\n      // be escaped with \"$\" itself, and we need two in the resulting output.\n      let replacement = options[arg];\n\n      if (typeof replacement === 'string') {\n        replacement = dollarRegex[Symbol.replace](replacement, dollarBillsYall);\n      } // We create a new `RegExp` each time instead of using a more-efficient\n      // string replace so that the same argument can be replaced multiple times\n      // in the same phrase.\n\n\n      interpolated = insertReplacement(interpolated, new RegExp(`%\\\\{${arg}\\\\}`, 'g'), replacement);\n    }\n  }\n\n  return interpolated;\n}\n/**\n * Translates strings with interpolation & pluralization support.\n * Extensible with custom dictionaries and pluralization functions.\n *\n * Borrows heavily from and inspired by Polyglot https://github.com/airbnb/polyglot.js,\n * basically a stripped-down version of it. Differences: pluralization functions are not hardcoded\n * and can be easily added among with dictionaries, nested objects are used for pluralization\n * as opposed to `||||` delimeter\n *\n * Usage example: `translator.translate('files_chosen', {smart_count: 3})`\n */\n\n\nvar _apply = /*#__PURE__*/_classPrivateFieldLooseKey(\"apply\");\n\nclass Translator {\n  /**\n   * @param {object|Array<object>} locales - locale or list of locales.\n   */\n  constructor(locales) {\n    Object.defineProperty(this, _apply, {\n      value: _apply2\n    });\n    this.locale = {\n      strings: {},\n\n      pluralize(n) {\n        if (n === 1) {\n          return 0;\n        }\n\n        return 1;\n      }\n\n    };\n\n    if (Array.isArray(locales)) {\n      locales.forEach(_classPrivateFieldLooseBase(this, _apply)[_apply], this);\n    } else {\n      _classPrivateFieldLooseBase(this, _apply)[_apply](locales);\n    }\n  }\n\n  /**\n   * Public translate method\n   *\n   * @param {string} key\n   * @param {object} options with values that will be used later to replace placeholders in string\n   * @returns {string} translated (and interpolated)\n   */\n  translate(key, options) {\n    return this.translateArray(key, options).join('');\n  }\n  /**\n   * Get a translation and return the translated and interpolated parts as an array.\n   *\n   * @param {string} key\n   * @param {object} options with values that will be used to replace placeholders\n   * @returns {Array} The translated and interpolated parts, in order.\n   */\n\n\n  translateArray(key, options) {\n    if (!has(this.locale.strings, key)) {\n      throw new Error(`missing string: ${key}`);\n    }\n\n    const string = this.locale.strings[key];\n    const hasPluralForms = typeof string === 'object';\n\n    if (hasPluralForms) {\n      if (options && typeof options.smart_count !== 'undefined') {\n        const plural = this.locale.pluralize(options.smart_count);\n        return interpolate(string[plural], options);\n      }\n\n      throw new Error('Attempted to use a string with plural forms, but no value was given for %{smart_count}');\n    }\n\n    return interpolate(string, options);\n  }\n\n}\n\nfunction _apply2(locale) {\n  if (!(locale != null && locale.strings)) {\n    return;\n  }\n\n  const prevLocale = this.locale;\n  this.locale = { ...prevLocale,\n    strings: { ...prevLocale.strings,\n      ...locale.strings\n    }\n  };\n  this.locale.pluralize = locale.pluralize || prevLocale.pluralize;\n}\n\nmodule.exports = Translator;", "/**\n* Create an event emitter with namespaces\n* @name createNamespaceEmitter\n* @example\n* var emitter = require('./index')()\n*\n* emitter.on('*', function () {\n*   console.log('all events emitted', this.event)\n* })\n*\n* emitter.on('example', function () {\n*   console.log('example event emitted')\n* })\n*/\nmodule.exports = function createNamespaceEmitter () {\n  var emitter = {}\n  var _fns = emitter._fns = {}\n\n  /**\n  * Emit an event. Optionally namespace the event. Handlers are fired in the order in which they were added with exact matches taking precedence. Separate the namespace and event with a `:`\n  * @name emit\n  * @param {String} event \u2013 the name of the event, with optional namespace\n  * @param {...*} data \u2013 up to 6 arguments that are passed to the event listener\n  * @example\n  * emitter.emit('example')\n  * emitter.emit('demo:test')\n  * emitter.emit('data', { example: true}, 'a string', 1)\n  */\n  emitter.emit = function emit (event, arg1, arg2, arg3, arg4, arg5, arg6) {\n    var toEmit = getListeners(event)\n\n    if (toEmit.length) {\n      emitAll(event, toEmit, [arg1, arg2, arg3, arg4, arg5, arg6])\n    }\n  }\n\n  /**\n  * Create en event listener.\n  * @name on\n  * @param {String} event\n  * @param {Function} fn\n  * @example\n  * emitter.on('example', function () {})\n  * emitter.on('demo', function () {})\n  */\n  emitter.on = function on (event, fn) {\n    if (!_fns[event]) {\n      _fns[event] = []\n    }\n\n    _fns[event].push(fn)\n  }\n\n  /**\n  * Create en event listener that fires once.\n  * @name once\n  * @param {String} event\n  * @param {Function} fn\n  * @example\n  * emitter.once('example', function () {})\n  * emitter.once('demo', function () {})\n  */\n  emitter.once = function once (event, fn) {\n    function one () {\n      fn.apply(this, arguments)\n      emitter.off(event, one)\n    }\n    this.on(event, one)\n  }\n\n  /**\n  * Stop listening to an event. Stop all listeners on an event by only passing the event name. Stop a single listener by passing that event handler as a callback.\n  * You must be explicit about what will be unsubscribed: `emitter.off('demo')` will unsubscribe an `emitter.on('demo')` listener,\n  * `emitter.off('demo:example')` will unsubscribe an `emitter.on('demo:example')` listener\n  * @name off\n  * @param {String} event\n  * @param {Function} [fn] \u2013 the specific handler\n  * @example\n  * emitter.off('example')\n  * emitter.off('demo', function () {})\n  */\n  emitter.off = function off (event, fn) {\n    var keep = []\n\n    if (event && fn) {\n      var fns = this._fns[event]\n      var i = 0\n      var l = fns ? fns.length : 0\n\n      for (i; i < l; i++) {\n        if (fns[i] !== fn) {\n          keep.push(fns[i])\n        }\n      }\n    }\n\n    keep.length ? this._fns[event] = keep : delete this._fns[event]\n  }\n\n  function getListeners (e) {\n    var out = _fns[e] ? _fns[e] : []\n    var idx = e.indexOf(':')\n    var args = (idx === -1) ? [e] : [e.substring(0, idx), e.substring(idx + 1)]\n\n    var keys = Object.keys(_fns)\n    var i = 0\n    var l = keys.length\n\n    for (i; i < l; i++) {\n      var key = keys[i]\n      if (key === '*') {\n        out = out.concat(_fns[key])\n      }\n\n      if (args.length === 2 && args[0] === key) {\n        out = out.concat(_fns[key])\n        break\n      }\n    }\n\n    return out\n  }\n\n  function emitAll (e, fns, args) {\n    var i = 0\n    var l = fns.length\n\n    for (i; i < l; i++) {\n      if (!fns[i]) break\n      fns[i].event = e\n      fns[i].apply(fns[i], args)\n    }\n  }\n\n  return emitter\n}\n", "/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n    nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n *   console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n  return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n *  Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n *  The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n *  Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n *   'leading': true,\n *   'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n  var lastArgs,\n      lastThis,\n      maxWait,\n      result,\n      timerId,\n      lastCallTime,\n      lastInvokeTime = 0,\n      leading = false,\n      maxing = false,\n      trailing = true;\n\n  if (typeof func != 'function') {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  wait = toNumber(wait) || 0;\n  if (isObject(options)) {\n    leading = !!options.leading;\n    maxing = 'maxWait' in options;\n    maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n    trailing = 'trailing' in options ? !!options.trailing : trailing;\n  }\n\n  function invokeFunc(time) {\n    var args = lastArgs,\n        thisArg = lastThis;\n\n    lastArgs = lastThis = undefined;\n    lastInvokeTime = time;\n    result = func.apply(thisArg, args);\n    return result;\n  }\n\n  function leadingEdge(time) {\n    // Reset any `maxWait` timer.\n    lastInvokeTime = time;\n    // Start the timer for the trailing edge.\n    timerId = setTimeout(timerExpired, wait);\n    // Invoke the leading edge.\n    return leading ? invokeFunc(time) : result;\n  }\n\n  function remainingWait(time) {\n    var timeSinceLastCall = time - lastCallTime,\n        timeSinceLastInvoke = time - lastInvokeTime,\n        result = wait - timeSinceLastCall;\n\n    return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n  }\n\n  function shouldInvoke(time) {\n    var timeSinceLastCall = time - lastCallTime,\n        timeSinceLastInvoke = time - lastInvokeTime;\n\n    // Either this is the first call, activity has stopped and we're at the\n    // trailing edge, the system time has gone backwards and we're treating\n    // it as the trailing edge, or we've hit the `maxWait` limit.\n    return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n      (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n  }\n\n  function timerExpired() {\n    var time = now();\n    if (shouldInvoke(time)) {\n      return trailingEdge(time);\n    }\n    // Restart the timer.\n    timerId = setTimeout(timerExpired, remainingWait(time));\n  }\n\n  function trailingEdge(time) {\n    timerId = undefined;\n\n    // Only invoke if we have `lastArgs` which means `func` has been\n    // debounced at least once.\n    if (trailing && lastArgs) {\n      return invokeFunc(time);\n    }\n    lastArgs = lastThis = undefined;\n    return result;\n  }\n\n  function cancel() {\n    if (timerId !== undefined) {\n      clearTimeout(timerId);\n    }\n    lastInvokeTime = 0;\n    lastArgs = lastCallTime = lastThis = timerId = undefined;\n  }\n\n  function flush() {\n    return timerId === undefined ? result : trailingEdge(now());\n  }\n\n  function debounced() {\n    var time = now(),\n        isInvoking = shouldInvoke(time);\n\n    lastArgs = arguments;\n    lastThis = this;\n    lastCallTime = time;\n\n    if (isInvoking) {\n      if (timerId === undefined) {\n        return leadingEdge(lastCallTime);\n      }\n      if (maxing) {\n        // Handle invocations in a tight loop.\n        timerId = setTimeout(timerExpired, wait);\n        return invokeFunc(lastCallTime);\n      }\n    }\n    if (timerId === undefined) {\n      timerId = setTimeout(timerExpired, wait);\n    }\n    return result;\n  }\n  debounced.cancel = cancel;\n  debounced.flush = flush;\n  return debounced;\n}\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n *  Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n *  Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n  var leading = true,\n      trailing = true;\n\n  if (typeof func != 'function') {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  if (isObject(options)) {\n    leading = 'leading' in options ? !!options.leading : leading;\n    trailing = 'trailing' in options ? !!options.trailing : trailing;\n  }\n  return debounce(func, wait, {\n    'leading': leading,\n    'maxWait': wait,\n    'trailing': trailing\n  });\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n  return typeof value == 'symbol' ||\n    (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n  if (typeof value == 'number') {\n    return value;\n  }\n  if (isSymbol(value)) {\n    return NAN;\n  }\n  if (isObject(value)) {\n    var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n    value = isObject(other) ? (other + '') : other;\n  }\n  if (typeof value != 'string') {\n    return value === 0 ? value : +value;\n  }\n  value = value.replace(reTrim, '');\n  var isBinary = reIsBinary.test(value);\n  return (isBinary || reIsOctal.test(value))\n    ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n    : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = throttle;\n", "\"use strict\";\n\nfunction _classPrivateFieldLooseBase(receiver, privateKey) { if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) { throw new TypeError(\"attempted to use private field on non-instance\"); } return receiver; }\n\nvar id = 0;\n\nfunction _classPrivateFieldLooseKey(name) { return \"__private_\" + id++ + \"_\" + name; }\n\nconst packageJson = {\n  \"version\": \"2.1.1\"\n};\n/**\n * Default store that keeps state in a simple object.\n */\n\nvar _publish = /*#__PURE__*/_classPrivateFieldLooseKey(\"publish\");\n\nclass DefaultStore {\n  constructor() {\n    Object.defineProperty(this, _publish, {\n      value: _publish2\n    });\n    this.state = {};\n    this.callbacks = []; // TODO: use a Set instead, make it a private prop\n  }\n\n  getState() {\n    return this.state;\n  }\n\n  setState(patch) {\n    const prevState = { ...this.state\n    };\n    const nextState = { ...this.state,\n      ...patch\n    };\n    this.state = nextState;\n\n    _classPrivateFieldLooseBase(this, _publish)[_publish](prevState, nextState, patch);\n  }\n\n  subscribe(listener) {\n    this.callbacks.push(listener);\n    return () => {\n      // Remove the listener.\n      this.callbacks.splice(this.callbacks.indexOf(listener), 1);\n    };\n  }\n\n} // TODO: export the class instead in the next major.\n\n\nfunction _publish2() {\n  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n    args[_key] = arguments[_key];\n  }\n\n  this.callbacks.forEach(listener => {\n    listener(...args);\n  });\n}\n\nDefaultStore.VERSION = packageJson.version;\n\nfunction defaultStore() {\n  return new DefaultStore();\n}\n\nmodule.exports = defaultStore;", "\"use strict\";\n\nfunction getFileNameAndExtension(fullFileName) {\n  const lastDot = fullFileName.lastIndexOf('.'); // these count as no extension: \"no-dot\", \"trailing-dot.\"\n\n  if (lastDot === -1 || lastDot === fullFileName.length - 1) {\n    return {\n      name: fullFileName,\n      extension: undefined\n    };\n  }\n\n  return {\n    name: fullFileName.slice(0, lastDot),\n    extension: fullFileName.slice(lastDot + 1)\n  };\n}\n\n/**\n * Takes a full filename string and returns an object {name, extension}\n *\n * @param {string} fullFileName\n * @returns {object} {name, extension}\n */\nmodule.exports = getFileNameAndExtension;", "\"use strict\";\n\n// ___Why not add the mime-types package?\n//    It's 19.7kB gzipped, and we only need mime types for well-known extensions (for file previews).\n// ___Where to take new extensions from?\n//    https://github.com/jshttp/mime-db/blob/master/db.json\nmodule.exports = {\n  md: 'text/markdown',\n  markdown: 'text/markdown',\n  mp4: 'video/mp4',\n  mp3: 'audio/mp3',\n  svg: 'image/svg+xml',\n  jpg: 'image/jpeg',\n  png: 'image/png',\n  gif: 'image/gif',\n  heic: 'image/heic',\n  heif: 'image/heif',\n  yaml: 'text/yaml',\n  yml: 'text/yaml',\n  csv: 'text/csv',\n  tsv: 'text/tab-separated-values',\n  tab: 'text/tab-separated-values',\n  avi: 'video/x-msvideo',\n  mks: 'video/x-matroska',\n  mkv: 'video/x-matroska',\n  mov: 'video/quicktime',\n  dicom: 'application/dicom',\n  doc: 'application/msword',\n  docm: 'application/vnd.ms-word.document.macroenabled.12',\n  docx: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n  dot: 'application/msword',\n  dotm: 'application/vnd.ms-word.template.macroenabled.12',\n  dotx: 'application/vnd.openxmlformats-officedocument.wordprocessingml.template',\n  xla: 'application/vnd.ms-excel',\n  xlam: 'application/vnd.ms-excel.addin.macroenabled.12',\n  xlc: 'application/vnd.ms-excel',\n  xlf: 'application/x-xliff+xml',\n  xlm: 'application/vnd.ms-excel',\n  xls: 'application/vnd.ms-excel',\n  xlsb: 'application/vnd.ms-excel.sheet.binary.macroenabled.12',\n  xlsm: 'application/vnd.ms-excel.sheet.macroenabled.12',\n  xlsx: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n  xlt: 'application/vnd.ms-excel',\n  xltm: 'application/vnd.ms-excel.template.macroenabled.12',\n  xltx: 'application/vnd.openxmlformats-officedocument.spreadsheetml.template',\n  xlw: 'application/vnd.ms-excel',\n  txt: 'text/plain',\n  text: 'text/plain',\n  conf: 'text/plain',\n  log: 'text/plain',\n  pdf: 'application/pdf',\n  zip: 'application/zip',\n  '7z': 'application/x-7z-compressed',\n  rar: 'application/x-rar-compressed',\n  tar: 'application/x-tar',\n  gz: 'application/gzip',\n  dmg: 'application/x-apple-diskimage'\n};", "\"use strict\";\n\nconst getFileNameAndExtension = require(\"./getFileNameAndExtension.js\");\n\nconst mimeTypes = require(\"./mimeTypes.js\");\n\nfunction getFileType(file) {\n  var _getFileNameAndExtens;\n\n  if (file.type) return file.type;\n  const fileExtension = file.name ? (_getFileNameAndExtens = getFileNameAndExtension(file.name).extension) == null ? void 0 : _getFileNameAndExtens.toLowerCase() : null;\n\n  if (fileExtension && fileExtension in mimeTypes) {\n    // else, see if we can map extension to a mime type\n    return mimeTypes[fileExtension];\n  } // if all fails, fall back to a generic byte stream type\n\n\n  return 'application/octet-stream';\n}\n\nmodule.exports = getFileType;", "\"use strict\";\n\nfunction encodeCharacter(character) {\n  return character.charCodeAt(0).toString(32);\n}\n\nfunction encodeFilename(name) {\n  let suffix = '';\n  return name.replace(/[^A-Z0-9]/ig, character => {\n    suffix += `-${encodeCharacter(character)}`;\n    return '/';\n  }) + suffix;\n}\n/**\n * Takes a file object and turns it into fileID, by converting file.name to lowercase,\n * removing extra characters and adding type, size and lastModified\n *\n * @param {object} file\n * @returns {string} the fileID\n */\n\n\nfunction generateFileID(file) {\n  // It's tempting to do `[items].filter(Boolean).join('-')` here, but that\n  // is slower! simple string concatenation is fast\n  let id = 'uppy';\n\n  if (typeof file.name === 'string') {\n    id += `-${encodeFilename(file.name.toLowerCase())}`;\n  }\n\n  if (file.type !== undefined) {\n    id += `-${file.type}`;\n  }\n\n  if (file.meta && typeof file.meta.relativePath === 'string') {\n    id += `-${encodeFilename(file.meta.relativePath.toLowerCase())}`;\n  }\n\n  if (file.data.size !== undefined) {\n    id += `-${file.data.size}`;\n  }\n\n  if (file.data.lastModified !== undefined) {\n    id += `-${file.data.lastModified}`;\n  }\n\n  return id;\n}\n\nmodule.exports = generateFileID;", "\"use strict\";\n\nfunction supportsUploadProgress(userAgent) {\n  // Allow passing in userAgent for tests\n  if (userAgent == null && typeof navigator !== 'undefined') {\n    // eslint-disable-next-line no-param-reassign\n    userAgent = navigator.userAgent;\n  } // Assume it works because basically everything supports progress events.\n\n\n  if (!userAgent) return true;\n  const m = /Edge\\/(\\d+\\.\\d+)/.exec(userAgent);\n  if (!m) return true;\n  const edgeVersion = m[1];\n  let [major, minor] = edgeVersion.split('.');\n  major = parseInt(major, 10);\n  minor = parseInt(minor, 10); // Worked before:\n  // Edge 40.15063.0.0\n  // Microsoft EdgeHTML 15.15063\n\n  if (major < 15 || major === 15 && minor < 15063) {\n    return true;\n  } // Fixed in:\n  // Microsoft EdgeHTML 18.18218\n\n\n  if (major > 18 || major === 18 && minor >= 18218) {\n    return true;\n  } // other versions don't work.\n\n\n  return false;\n}\n\n// Edge 15.x does not fire 'progress' events on uploads.\n// See https://github.com/transloadit/uppy/issues/945\n// And https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/12224510/\nmodule.exports = supportsUploadProgress;", "\"use strict\";\n\nfunction getFileName(fileType, fileDescriptor) {\n  if (fileDescriptor.name) {\n    return fileDescriptor.name;\n  }\n\n  if (fileType.split('/')[0] === 'image') {\n    return `${fileType.split('/')[0]}.${fileType.split('/')[1]}`;\n  }\n\n  return 'noname';\n}\n\nmodule.exports = getFileName;", "\"use strict\";\n\nmodule.exports = {\n  strings: {\n    addBulkFilesFailed: {\n      0: 'Failed to add %{smart_count} file due to an internal error',\n      1: 'Failed to add %{smart_count} files due to internal errors'\n    },\n    youCanOnlyUploadX: {\n      0: 'You can only upload %{smart_count} file',\n      1: 'You can only upload %{smart_count} files'\n    },\n    youHaveToAtLeastSelectX: {\n      0: 'You have to select at least %{smart_count} file',\n      1: 'You have to select at least %{smart_count} files'\n    },\n    exceedsSize: '%{file} exceeds maximum allowed size of %{size}',\n    missingRequiredMetaField: 'Missing required meta fields',\n    missingRequiredMetaFieldOnFile: 'Missing required meta fields in %{fileName}',\n    inferiorSize: 'This file is smaller than the allowed size of %{size}',\n    youCanOnlyUploadFileTypes: 'You can only upload: %{types}',\n    noMoreFilesAllowed: 'Cannot add more files',\n    noDuplicates: \"Cannot add the duplicate file '%{fileName}', it already exists\",\n    companionError: 'Connection with Companion failed',\n    authAborted: 'Authentication aborted',\n    companionUnauthorizeHint: 'To unauthorize to your %{provider} account, please go to %{url}',\n    failedToUpload: 'Failed to upload %{file}',\n    noInternetConnection: 'No Internet connection',\n    connectedToInternet: 'Connected to the Internet',\n    // Strings for remote providers\n    noFilesFound: 'You have no files or folders here',\n    selectX: {\n      0: 'Select %{smart_count}',\n      1: 'Select %{smart_count}'\n    },\n    allFilesFromFolderNamed: 'All files from folder %{name}',\n    openFolderNamed: 'Open folder %{name}',\n    cancel: 'Cancel',\n    logOut: 'Log out',\n    filter: 'Filter',\n    resetFilter: 'Reset filter',\n    loading: 'Loading...',\n    authenticateWithTitle: 'Please authenticate with %{pluginName} to select files',\n    authenticateWith: 'Connect to %{pluginName}',\n    signInWithGoogle: 'Sign in with Google',\n    searchImages: 'Search for images',\n    enterTextToSearch: 'Enter text to search for images',\n    search: 'Search',\n    emptyFolderAdded: 'No files were added from empty folder',\n    folderAlreadyAdded: 'The folder \"%{folder}\" was already added',\n    folderAdded: {\n      0: 'Added %{smart_count} file from %{folder}',\n      1: 'Added %{smart_count} files from %{folder}'\n    }\n  }\n};", "\"use strict\";\n\nvar _nonSecure = require(\"nanoid/non-secure\");\n\nvar _loggers = require(\"./loggers.js\");\n\nvar _Restricter = require(\"./Restricter.js\");\n\nlet _Symbol$for, _Symbol$for2;\n\nfunction _classPrivateFieldLooseBase(receiver, privateKey) { if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) { throw new TypeError(\"attempted to use private field on non-instance\"); } return receiver; }\n\nvar id = 0;\n\nfunction _classPrivateFieldLooseKey(name) { return \"__private_\" + id++ + \"_\" + name; }\n\n/* eslint-disable max-classes-per-file */\n\n/* global AggregateError */\nconst Translator = require(\"@uppy/utils/lib/Translator\");\n\nconst ee = require(\"namespace-emitter\");\n\nconst throttle = require(\"lodash.throttle\");\n\nconst DefaultStore = require(\"@uppy/store-default\");\n\nconst getFileType = require(\"@uppy/utils/lib/getFileType\");\n\nconst getFileNameAndExtension = require(\"@uppy/utils/lib/getFileNameAndExtension\");\n\nconst generateFileID = require(\"@uppy/utils/lib/generateFileID\");\n\nconst supportsUploadProgress = require(\"./supportsUploadProgress.js\");\n\nconst getFileName = require(\"./getFileName.js\");\n\nconst packageJson = {\n  \"version\": \"2.3.4\"\n};\n\nconst locale = require(\"./locale.js\");\n/**\n * Uppy Core module.\n * Manages plugins, state updates, acts as an event bus,\n * adds/removes files and metadata.\n */\n\n\nvar _plugins = /*#__PURE__*/_classPrivateFieldLooseKey(\"plugins\");\n\nvar _restricter = /*#__PURE__*/_classPrivateFieldLooseKey(\"restricter\");\n\nvar _storeUnsubscribe = /*#__PURE__*/_classPrivateFieldLooseKey(\"storeUnsubscribe\");\n\nvar _emitter = /*#__PURE__*/_classPrivateFieldLooseKey(\"emitter\");\n\nvar _preProcessors = /*#__PURE__*/_classPrivateFieldLooseKey(\"preProcessors\");\n\nvar _uploaders = /*#__PURE__*/_classPrivateFieldLooseKey(\"uploaders\");\n\nvar _postProcessors = /*#__PURE__*/_classPrivateFieldLooseKey(\"postProcessors\");\n\nvar _informAndEmit = /*#__PURE__*/_classPrivateFieldLooseKey(\"informAndEmit\");\n\nvar _checkRequiredMetaFieldsOnFile = /*#__PURE__*/_classPrivateFieldLooseKey(\"checkRequiredMetaFieldsOnFile\");\n\nvar _checkRequiredMetaFields = /*#__PURE__*/_classPrivateFieldLooseKey(\"checkRequiredMetaFields\");\n\nvar _assertNewUploadAllowed = /*#__PURE__*/_classPrivateFieldLooseKey(\"assertNewUploadAllowed\");\n\nvar _checkAndCreateFileStateObject = /*#__PURE__*/_classPrivateFieldLooseKey(\"checkAndCreateFileStateObject\");\n\nvar _startIfAutoProceed = /*#__PURE__*/_classPrivateFieldLooseKey(\"startIfAutoProceed\");\n\nvar _addListeners = /*#__PURE__*/_classPrivateFieldLooseKey(\"addListeners\");\n\nvar _updateOnlineStatus = /*#__PURE__*/_classPrivateFieldLooseKey(\"updateOnlineStatus\");\n\nvar _createUpload = /*#__PURE__*/_classPrivateFieldLooseKey(\"createUpload\");\n\nvar _getUpload = /*#__PURE__*/_classPrivateFieldLooseKey(\"getUpload\");\n\nvar _removeUpload = /*#__PURE__*/_classPrivateFieldLooseKey(\"removeUpload\");\n\nvar _runUpload = /*#__PURE__*/_classPrivateFieldLooseKey(\"runUpload\");\n\n_Symbol$for = Symbol.for('uppy test: getPlugins');\n_Symbol$for2 = Symbol.for('uppy test: createUpload');\n\nclass Uppy {\n  /** @type {Record<string, BasePlugin[]>} */\n\n  /**\n   * Instantiate Uppy\n   *\n   * @param {object} opts \u2014 Uppy options\n   */\n  constructor(_opts) {\n    Object.defineProperty(this, _runUpload, {\n      value: _runUpload2\n    });\n    Object.defineProperty(this, _removeUpload, {\n      value: _removeUpload2\n    });\n    Object.defineProperty(this, _getUpload, {\n      value: _getUpload2\n    });\n    Object.defineProperty(this, _createUpload, {\n      value: _createUpload2\n    });\n    Object.defineProperty(this, _addListeners, {\n      value: _addListeners2\n    });\n    Object.defineProperty(this, _startIfAutoProceed, {\n      value: _startIfAutoProceed2\n    });\n    Object.defineProperty(this, _checkAndCreateFileStateObject, {\n      value: _checkAndCreateFileStateObject2\n    });\n    Object.defineProperty(this, _assertNewUploadAllowed, {\n      value: _assertNewUploadAllowed2\n    });\n    Object.defineProperty(this, _checkRequiredMetaFields, {\n      value: _checkRequiredMetaFields2\n    });\n    Object.defineProperty(this, _checkRequiredMetaFieldsOnFile, {\n      value: _checkRequiredMetaFieldsOnFile2\n    });\n    Object.defineProperty(this, _informAndEmit, {\n      value: _informAndEmit2\n    });\n    Object.defineProperty(this, _plugins, {\n      writable: true,\n      value: Object.create(null)\n    });\n    Object.defineProperty(this, _restricter, {\n      writable: true,\n      value: void 0\n    });\n    Object.defineProperty(this, _storeUnsubscribe, {\n      writable: true,\n      value: void 0\n    });\n    Object.defineProperty(this, _emitter, {\n      writable: true,\n      value: ee()\n    });\n    Object.defineProperty(this, _preProcessors, {\n      writable: true,\n      value: new Set()\n    });\n    Object.defineProperty(this, _uploaders, {\n      writable: true,\n      value: new Set()\n    });\n    Object.defineProperty(this, _postProcessors, {\n      writable: true,\n      value: new Set()\n    });\n    Object.defineProperty(this, _updateOnlineStatus, {\n      writable: true,\n      value: this.updateOnlineStatus.bind(this)\n    });\n    this.defaultLocale = locale;\n    const defaultOptions = {\n      id: 'uppy',\n      autoProceed: false,\n\n      /**\n       * @deprecated The method should not be used\n       */\n      allowMultipleUploads: true,\n      allowMultipleUploadBatches: true,\n      debug: false,\n      restrictions: _Restricter.defaultOptions,\n      meta: {},\n      onBeforeFileAdded: currentFile => currentFile,\n      onBeforeUpload: files => files,\n      store: DefaultStore(),\n      logger: _loggers.justErrorsLogger,\n      infoTimeout: 5000\n    }; // Merge default options with the ones set by user,\n    // making sure to merge restrictions too\n\n    this.opts = { ...defaultOptions,\n      ..._opts,\n      restrictions: { ...defaultOptions.restrictions,\n        ...(_opts && _opts.restrictions)\n      }\n    }; // Support debug: true for backwards-compatability, unless logger is set in opts\n    // opts instead of this.opts to avoid comparing objects \u2014 we set logger: justErrorsLogger in defaultOptions\n\n    if (_opts && _opts.logger && _opts.debug) {\n      this.log('You are using a custom `logger`, but also set `debug: true`, which uses built-in logger to output logs to console. Ignoring `debug: true` and using your custom `logger`.', 'warning');\n    } else if (_opts && _opts.debug) {\n      this.opts.logger = _loggers.debugLogger;\n    }\n\n    this.log(`Using Core v${this.constructor.VERSION}`);\n    this.i18nInit(); // ___Why throttle at 500ms?\n    //    - We must throttle at >250ms for superfocus in Dashboard to work well\n    //    (because animation takes 0.25s, and we want to wait for all animations to be over before refocusing).\n    //    [Practical Check]: if thottle is at 100ms, then if you are uploading a file,\n    //    and click 'ADD MORE FILES', - focus won't activate in Firefox.\n    //    - We must throttle at around >500ms to avoid performance lags.\n    //    [Practical Check] Firefox, try to upload a big file for a prolonged period of time. Laptop will start to heat up.\n\n    this.calculateProgress = throttle(this.calculateProgress.bind(this), 500, {\n      leading: true,\n      trailing: true\n    });\n    this.store = this.opts.store;\n    this.setState({\n      plugins: {},\n      files: {},\n      currentUploads: {},\n      allowNewUpload: true,\n      capabilities: {\n        uploadProgress: supportsUploadProgress(),\n        individualCancellation: true,\n        resumableUploads: false\n      },\n      totalProgress: 0,\n      meta: { ...this.opts.meta\n      },\n      info: [],\n      recoveredState: null\n    });\n    _classPrivateFieldLooseBase(this, _restricter)[_restricter] = new _Restricter.Restricter(() => this.opts, this.i18n);\n    _classPrivateFieldLooseBase(this, _storeUnsubscribe)[_storeUnsubscribe] = this.store.subscribe((prevState, nextState, patch) => {\n      this.emit('state-update', prevState, nextState, patch);\n      this.updateAll(nextState);\n    }); // Exposing uppy object on window for debugging and testing\n\n    if (this.opts.debug && typeof window !== 'undefined') {\n      window[this.opts.id] = this;\n    }\n\n    _classPrivateFieldLooseBase(this, _addListeners)[_addListeners]();\n  }\n\n  emit(event) {\n    for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n      args[_key - 1] = arguments[_key];\n    }\n\n    _classPrivateFieldLooseBase(this, _emitter)[_emitter].emit(event, ...args);\n  }\n\n  on(event, callback) {\n    _classPrivateFieldLooseBase(this, _emitter)[_emitter].on(event, callback);\n\n    return this;\n  }\n\n  once(event, callback) {\n    _classPrivateFieldLooseBase(this, _emitter)[_emitter].once(event, callback);\n\n    return this;\n  }\n\n  off(event, callback) {\n    _classPrivateFieldLooseBase(this, _emitter)[_emitter].off(event, callback);\n\n    return this;\n  }\n  /**\n   * Iterate on all plugins and run `update` on them.\n   * Called each time state changes.\n   *\n   */\n\n\n  updateAll(state) {\n    this.iteratePlugins(plugin => {\n      plugin.update(state);\n    });\n  }\n  /**\n   * Updates state with a patch\n   *\n   * @param {object} patch {foo: 'bar'}\n   */\n\n\n  setState(patch) {\n    this.store.setState(patch);\n  }\n  /**\n   * Returns current state.\n   *\n   * @returns {object}\n   */\n\n\n  getState() {\n    return this.store.getState();\n  }\n  /**\n   * Back compat for when uppy.state is used instead of uppy.getState().\n   *\n   * @deprecated\n   */\n\n\n  get state() {\n    // Here, state is a non-enumerable property.\n    return this.getState();\n  }\n  /**\n   * Shorthand to set state for a specific file.\n   */\n\n\n  setFileState(fileID, state) {\n    if (!this.getState().files[fileID]) {\n      throw new Error(`Can\u2019t set state for ${fileID} (the file could have been removed)`);\n    }\n\n    this.setState({\n      files: { ...this.getState().files,\n        [fileID]: { ...this.getState().files[fileID],\n          ...state\n        }\n      }\n    });\n  }\n\n  i18nInit() {\n    const translator = new Translator([this.defaultLocale, this.opts.locale]);\n    this.i18n = translator.translate.bind(translator);\n    this.i18nArray = translator.translateArray.bind(translator);\n    this.locale = translator.locale;\n  }\n\n  setOptions(newOpts) {\n    this.opts = { ...this.opts,\n      ...newOpts,\n      restrictions: { ...this.opts.restrictions,\n        ...(newOpts && newOpts.restrictions)\n      }\n    };\n\n    if (newOpts.meta) {\n      this.setMeta(newOpts.meta);\n    }\n\n    this.i18nInit();\n\n    if (newOpts.locale) {\n      this.iteratePlugins(plugin => {\n        plugin.setOptions();\n      });\n    } // Note: this is not the preact `setState`, it's an internal function that has the same name.\n\n\n    this.setState(); // so that UI re-renders with new options\n  }\n\n  resetProgress() {\n    const defaultProgress = {\n      percentage: 0,\n      bytesUploaded: 0,\n      uploadComplete: false,\n      uploadStarted: null\n    };\n    const files = { ...this.getState().files\n    };\n    const updatedFiles = {};\n    Object.keys(files).forEach(fileID => {\n      const updatedFile = { ...files[fileID]\n      };\n      updatedFile.progress = { ...updatedFile.progress,\n        ...defaultProgress\n      };\n      updatedFiles[fileID] = updatedFile;\n    });\n    this.setState({\n      files: updatedFiles,\n      totalProgress: 0\n    });\n    this.emit('reset-progress');\n  }\n\n  addPreProcessor(fn) {\n    _classPrivateFieldLooseBase(this, _preProcessors)[_preProcessors].add(fn);\n  }\n\n  removePreProcessor(fn) {\n    return _classPrivateFieldLooseBase(this, _preProcessors)[_preProcessors].delete(fn);\n  }\n\n  addPostProcessor(fn) {\n    _classPrivateFieldLooseBase(this, _postProcessors)[_postProcessors].add(fn);\n  }\n\n  removePostProcessor(fn) {\n    return _classPrivateFieldLooseBase(this, _postProcessors)[_postProcessors].delete(fn);\n  }\n\n  addUploader(fn) {\n    _classPrivateFieldLooseBase(this, _uploaders)[_uploaders].add(fn);\n  }\n\n  removeUploader(fn) {\n    return _classPrivateFieldLooseBase(this, _uploaders)[_uploaders].delete(fn);\n  }\n\n  setMeta(data) {\n    const updatedMeta = { ...this.getState().meta,\n      ...data\n    };\n    const updatedFiles = { ...this.getState().files\n    };\n    Object.keys(updatedFiles).forEach(fileID => {\n      updatedFiles[fileID] = { ...updatedFiles[fileID],\n        meta: { ...updatedFiles[fileID].meta,\n          ...data\n        }\n      };\n    });\n    this.log('Adding metadata:');\n    this.log(data);\n    this.setState({\n      meta: updatedMeta,\n      files: updatedFiles\n    });\n  }\n\n  setFileMeta(fileID, data) {\n    const updatedFiles = { ...this.getState().files\n    };\n\n    if (!updatedFiles[fileID]) {\n      this.log('Was trying to set metadata for a file that has been removed: ', fileID);\n      return;\n    }\n\n    const newMeta = { ...updatedFiles[fileID].meta,\n      ...data\n    };\n    updatedFiles[fileID] = { ...updatedFiles[fileID],\n      meta: newMeta\n    };\n    this.setState({\n      files: updatedFiles\n    });\n  }\n  /**\n   * Get a file object.\n   *\n   * @param {string} fileID The ID of the file object to return.\n   */\n\n\n  getFile(fileID) {\n    return this.getState().files[fileID];\n  }\n  /**\n   * Get all files in an array.\n   */\n\n\n  getFiles() {\n    const {\n      files\n    } = this.getState();\n    return Object.values(files);\n  }\n\n  getObjectOfFilesPerState() {\n    const {\n      files: filesObject,\n      totalProgress,\n      error\n    } = this.getState();\n    const files = Object.values(filesObject);\n    const inProgressFiles = files.filter(_ref => {\n      let {\n        progress\n      } = _ref;\n      return !progress.uploadComplete && progress.uploadStarted;\n    });\n    const newFiles = files.filter(file => !file.progress.uploadStarted);\n    const startedFiles = files.filter(file => file.progress.uploadStarted || file.progress.preprocess || file.progress.postprocess);\n    const uploadStartedFiles = files.filter(file => file.progress.uploadStarted);\n    const pausedFiles = files.filter(file => file.isPaused);\n    const completeFiles = files.filter(file => file.progress.uploadComplete);\n    const erroredFiles = files.filter(file => file.error);\n    const inProgressNotPausedFiles = inProgressFiles.filter(file => !file.isPaused);\n    const processingFiles = files.filter(file => file.progress.preprocess || file.progress.postprocess);\n    return {\n      newFiles,\n      startedFiles,\n      uploadStartedFiles,\n      pausedFiles,\n      completeFiles,\n      erroredFiles,\n      inProgressFiles,\n      inProgressNotPausedFiles,\n      processingFiles,\n      isUploadStarted: uploadStartedFiles.length > 0,\n      isAllComplete: totalProgress === 100 && completeFiles.length === files.length && processingFiles.length === 0,\n      isAllErrored: !!error && erroredFiles.length === files.length,\n      isAllPaused: inProgressFiles.length !== 0 && pausedFiles.length === inProgressFiles.length,\n      isUploadInProgress: inProgressFiles.length > 0,\n      isSomeGhost: files.some(file => file.isGhost)\n    };\n  }\n  /*\n  * @constructs\n  * @param { Error } error\n  * @param { undefined } file\n  */\n\n  /*\n  * @constructs\n  * @param { RestrictionError } error\n  * @param { UppyFile | undefined } file\n  */\n\n\n  validateRestrictions(file, files) {\n    if (files === void 0) {\n      files = this.getFiles();\n    }\n\n    // TODO: directly return the Restriction error in next major version.\n    // we create RestrictionError's just to discard immediately, which doesn't make sense.\n    try {\n      _classPrivateFieldLooseBase(this, _restricter)[_restricter].validate(file, files);\n\n      return {\n        result: true\n      };\n    } catch (err) {\n      return {\n        result: false,\n        reason: err.message\n      };\n    }\n  }\n\n  checkIfFileAlreadyExists(fileID) {\n    const {\n      files\n    } = this.getState();\n\n    if (files[fileID] && !files[fileID].isGhost) {\n      return true;\n    }\n\n    return false;\n  }\n  /**\n   * Create a file state object based on user-provided `addFile()` options.\n   *\n   * Note this is extremely side-effectful and should only be done when a file state object\n   * will be added to state immediately afterward!\n   *\n   * The `files` value is passed in because it may be updated by the caller without updating the store.\n   */\n\n\n  /**\n   * Add a new file to `state.files`. This will run `onBeforeFileAdded`,\n   * try to guess file type in a clever way, check file against restrictions,\n   * and start an upload if `autoProceed === true`.\n   *\n   * @param {object} file object to add\n   * @returns {string} id for the added file\n   */\n  addFile(file) {\n    _classPrivateFieldLooseBase(this, _assertNewUploadAllowed)[_assertNewUploadAllowed](file);\n\n    const {\n      files\n    } = this.getState();\n\n    let newFile = _classPrivateFieldLooseBase(this, _checkAndCreateFileStateObject)[_checkAndCreateFileStateObject](files, file); // Users are asked to re-select recovered files without data,\n    // and to keep the progress, meta and everthing else, we only replace said data\n\n\n    if (files[newFile.id] && files[newFile.id].isGhost) {\n      newFile = { ...files[newFile.id],\n        data: file.data,\n        isGhost: false\n      };\n      this.log(`Replaced the blob in the restored ghost file: ${newFile.name}, ${newFile.id}`);\n    }\n\n    this.setState({\n      files: { ...files,\n        [newFile.id]: newFile\n      }\n    });\n    this.emit('file-added', newFile);\n    this.emit('files-added', [newFile]);\n    this.log(`Added file: ${newFile.name}, ${newFile.id}, mime type: ${newFile.type}`);\n\n    _classPrivateFieldLooseBase(this, _startIfAutoProceed)[_startIfAutoProceed]();\n\n    return newFile.id;\n  }\n  /**\n   * Add multiple files to `state.files`. See the `addFile()` documentation.\n   *\n   * If an error occurs while adding a file, it is logged and the user is notified.\n   * This is good for UI plugins, but not for programmatic use.\n   * Programmatic users should usually still use `addFile()` on individual files.\n   */\n\n\n  addFiles(fileDescriptors) {\n    _classPrivateFieldLooseBase(this, _assertNewUploadAllowed)[_assertNewUploadAllowed](); // create a copy of the files object only once\n\n\n    const files = { ...this.getState().files\n    };\n    const newFiles = [];\n    const errors = [];\n\n    for (let i = 0; i < fileDescriptors.length; i++) {\n      try {\n        let newFile = _classPrivateFieldLooseBase(this, _checkAndCreateFileStateObject)[_checkAndCreateFileStateObject](files, fileDescriptors[i]); // Users are asked to re-select recovered files without data,\n        // and to keep the progress, meta and everthing else, we only replace said data\n\n\n        if (files[newFile.id] && files[newFile.id].isGhost) {\n          newFile = { ...files[newFile.id],\n            data: fileDescriptors[i].data,\n            isGhost: false\n          };\n          this.log(`Replaced blob in a ghost file: ${newFile.name}, ${newFile.id}`);\n        }\n\n        files[newFile.id] = newFile;\n        newFiles.push(newFile);\n      } catch (err) {\n        if (!err.isRestriction) {\n          errors.push(err);\n        }\n      }\n    }\n\n    this.setState({\n      files\n    });\n    newFiles.forEach(newFile => {\n      this.emit('file-added', newFile);\n    });\n    this.emit('files-added', newFiles);\n\n    if (newFiles.length > 5) {\n      this.log(`Added batch of ${newFiles.length} files`);\n    } else {\n      Object.keys(newFiles).forEach(fileID => {\n        this.log(`Added file: ${newFiles[fileID].name}\\n id: ${newFiles[fileID].id}\\n type: ${newFiles[fileID].type}`);\n      });\n    }\n\n    if (newFiles.length > 0) {\n      _classPrivateFieldLooseBase(this, _startIfAutoProceed)[_startIfAutoProceed]();\n    }\n\n    if (errors.length > 0) {\n      let message = 'Multiple errors occurred while adding files:\\n';\n      errors.forEach(subError => {\n        message += `\\n * ${subError.message}`;\n      });\n      this.info({\n        message: this.i18n('addBulkFilesFailed', {\n          smart_count: errors.length\n        }),\n        details: message\n      }, 'error', this.opts.infoTimeout);\n\n      if (typeof AggregateError === 'function') {\n        throw new AggregateError(errors, message);\n      } else {\n        const err = new Error(message);\n        err.errors = errors;\n        throw err;\n      }\n    }\n  }\n\n  removeFiles(fileIDs, reason) {\n    const {\n      files,\n      currentUploads\n    } = this.getState();\n    const updatedFiles = { ...files\n    };\n    const updatedUploads = { ...currentUploads\n    };\n    const removedFiles = Object.create(null);\n    fileIDs.forEach(fileID => {\n      if (files[fileID]) {\n        removedFiles[fileID] = files[fileID];\n        delete updatedFiles[fileID];\n      }\n    }); // Remove files from the `fileIDs` list in each upload.\n\n    function fileIsNotRemoved(uploadFileID) {\n      return removedFiles[uploadFileID] === undefined;\n    }\n\n    Object.keys(updatedUploads).forEach(uploadID => {\n      const newFileIDs = currentUploads[uploadID].fileIDs.filter(fileIsNotRemoved); // Remove the upload if no files are associated with it anymore.\n\n      if (newFileIDs.length === 0) {\n        delete updatedUploads[uploadID];\n        return;\n      }\n\n      const {\n        capabilities\n      } = this.getState();\n\n      if (newFileIDs.length !== currentUploads[uploadID].fileIDs.length && !capabilities.individualCancellation) {\n        throw new Error('individualCancellation is disabled');\n      }\n\n      updatedUploads[uploadID] = { ...currentUploads[uploadID],\n        fileIDs: newFileIDs\n      };\n    });\n    const stateUpdate = {\n      currentUploads: updatedUploads,\n      files: updatedFiles\n    }; // If all files were removed - allow new uploads,\n    // and clear recoveredState\n\n    if (Object.keys(updatedFiles).length === 0) {\n      stateUpdate.allowNewUpload = true;\n      stateUpdate.error = null;\n      stateUpdate.recoveredState = null;\n    }\n\n    this.setState(stateUpdate);\n    this.calculateTotalProgress();\n    const removedFileIDs = Object.keys(removedFiles);\n    removedFileIDs.forEach(fileID => {\n      this.emit('file-removed', removedFiles[fileID], reason);\n    });\n\n    if (removedFileIDs.length > 5) {\n      this.log(`Removed ${removedFileIDs.length} files`);\n    } else {\n      this.log(`Removed files: ${removedFileIDs.join(', ')}`);\n    }\n  }\n\n  removeFile(fileID, reason) {\n    if (reason === void 0) {\n      reason = null;\n    }\n\n    this.removeFiles([fileID], reason);\n  }\n\n  pauseResume(fileID) {\n    if (!this.getState().capabilities.resumableUploads || this.getFile(fileID).uploadComplete) {\n      return undefined;\n    }\n\n    const wasPaused = this.getFile(fileID).isPaused || false;\n    const isPaused = !wasPaused;\n    this.setFileState(fileID, {\n      isPaused\n    });\n    this.emit('upload-pause', fileID, isPaused);\n    return isPaused;\n  }\n\n  pauseAll() {\n    const updatedFiles = { ...this.getState().files\n    };\n    const inProgressUpdatedFiles = Object.keys(updatedFiles).filter(file => {\n      return !updatedFiles[file].progress.uploadComplete && updatedFiles[file].progress.uploadStarted;\n    });\n    inProgressUpdatedFiles.forEach(file => {\n      const updatedFile = { ...updatedFiles[file],\n        isPaused: true\n      };\n      updatedFiles[file] = updatedFile;\n    });\n    this.setState({\n      files: updatedFiles\n    });\n    this.emit('pause-all');\n  }\n\n  resumeAll() {\n    const updatedFiles = { ...this.getState().files\n    };\n    const inProgressUpdatedFiles = Object.keys(updatedFiles).filter(file => {\n      return !updatedFiles[file].progress.uploadComplete && updatedFiles[file].progress.uploadStarted;\n    });\n    inProgressUpdatedFiles.forEach(file => {\n      const updatedFile = { ...updatedFiles[file],\n        isPaused: false,\n        error: null\n      };\n      updatedFiles[file] = updatedFile;\n    });\n    this.setState({\n      files: updatedFiles\n    });\n    this.emit('resume-all');\n  }\n\n  retryAll() {\n    const updatedFiles = { ...this.getState().files\n    };\n    const filesToRetry = Object.keys(updatedFiles).filter(file => {\n      return updatedFiles[file].error;\n    });\n    filesToRetry.forEach(file => {\n      const updatedFile = { ...updatedFiles[file],\n        isPaused: false,\n        error: null\n      };\n      updatedFiles[file] = updatedFile;\n    });\n    this.setState({\n      files: updatedFiles,\n      error: null\n    });\n    this.emit('retry-all', filesToRetry);\n\n    if (filesToRetry.length === 0) {\n      return Promise.resolve({\n        successful: [],\n        failed: []\n      });\n    }\n\n    const uploadID = _classPrivateFieldLooseBase(this, _createUpload)[_createUpload](filesToRetry, {\n      forceAllowNewUpload: true // create new upload even if allowNewUpload: false\n\n    });\n\n    return _classPrivateFieldLooseBase(this, _runUpload)[_runUpload](uploadID);\n  }\n\n  cancelAll(_temp) {\n    let {\n      reason = 'user'\n    } = _temp === void 0 ? {} : _temp;\n    this.emit('cancel-all', {\n      reason\n    }); // Only remove existing uploads if user is canceling\n\n    if (reason === 'user') {\n      const {\n        files\n      } = this.getState();\n      const fileIDs = Object.keys(files);\n\n      if (fileIDs.length) {\n        this.removeFiles(fileIDs, 'cancel-all');\n      }\n\n      this.setState({\n        totalProgress: 0,\n        error: null,\n        recoveredState: null\n      });\n    }\n  }\n\n  retryUpload(fileID) {\n    this.setFileState(fileID, {\n      error: null,\n      isPaused: false\n    });\n    this.emit('upload-retry', fileID);\n\n    const uploadID = _classPrivateFieldLooseBase(this, _createUpload)[_createUpload]([fileID], {\n      forceAllowNewUpload: true // create new upload even if allowNewUpload: false\n\n    });\n\n    return _classPrivateFieldLooseBase(this, _runUpload)[_runUpload](uploadID);\n  } // todo remove in next major. what is the point of the reset method when we have cancelAll or vice versa?\n\n\n  reset() {\n    this.cancelAll(...arguments);\n  }\n\n  logout() {\n    this.iteratePlugins(plugin => {\n      if (plugin.provider && plugin.provider.logout) {\n        plugin.provider.logout();\n      }\n    });\n  }\n\n  calculateProgress(file, data) {\n    if (file == null || !this.getFile(file.id)) {\n      this.log(`Not setting progress for a file that has been removed: ${file == null ? void 0 : file.id}`);\n      return;\n    } // bytesTotal may be null or zero; in that case we can't divide by it\n\n\n    const canHavePercentage = Number.isFinite(data.bytesTotal) && data.bytesTotal > 0;\n    this.setFileState(file.id, {\n      progress: { ...this.getFile(file.id).progress,\n        bytesUploaded: data.bytesUploaded,\n        bytesTotal: data.bytesTotal,\n        percentage: canHavePercentage ? Math.round(data.bytesUploaded / data.bytesTotal * 100) : 0\n      }\n    });\n    this.calculateTotalProgress();\n  }\n\n  calculateTotalProgress() {\n    // calculate total progress, using the number of files currently uploading,\n    // multiplied by 100 and the summ of individual progress of each file\n    const files = this.getFiles();\n    const inProgress = files.filter(file => {\n      return file.progress.uploadStarted || file.progress.preprocess || file.progress.postprocess;\n    });\n\n    if (inProgress.length === 0) {\n      this.emit('progress', 0);\n      this.setState({\n        totalProgress: 0\n      });\n      return;\n    }\n\n    const sizedFiles = inProgress.filter(file => file.progress.bytesTotal != null);\n    const unsizedFiles = inProgress.filter(file => file.progress.bytesTotal == null);\n\n    if (sizedFiles.length === 0) {\n      const progressMax = inProgress.length * 100;\n      const currentProgress = unsizedFiles.reduce((acc, file) => {\n        return acc + file.progress.percentage;\n      }, 0);\n      const totalProgress = Math.round(currentProgress / progressMax * 100);\n      this.setState({\n        totalProgress\n      });\n      return;\n    }\n\n    let totalSize = sizedFiles.reduce((acc, file) => {\n      return acc + file.progress.bytesTotal;\n    }, 0);\n    const averageSize = totalSize / sizedFiles.length;\n    totalSize += averageSize * unsizedFiles.length;\n    let uploadedSize = 0;\n    sizedFiles.forEach(file => {\n      uploadedSize += file.progress.bytesUploaded;\n    });\n    unsizedFiles.forEach(file => {\n      uploadedSize += averageSize * (file.progress.percentage || 0) / 100;\n    });\n    let totalProgress = totalSize === 0 ? 0 : Math.round(uploadedSize / totalSize * 100); // hot fix, because:\n    // uploadedSize ended up larger than totalSize, resulting in 1325% total\n\n    if (totalProgress > 100) {\n      totalProgress = 100;\n    }\n\n    this.setState({\n      totalProgress\n    });\n    this.emit('progress', totalProgress);\n  }\n  /**\n   * Registers listeners for all global actions, like:\n   * `error`, `file-removed`, `upload-progress`\n   */\n\n\n  updateOnlineStatus() {\n    const online = typeof window.navigator.onLine !== 'undefined' ? window.navigator.onLine : true;\n\n    if (!online) {\n      this.emit('is-offline');\n      this.info(this.i18n('noInternetConnection'), 'error', 0);\n      this.wasOffline = true;\n    } else {\n      this.emit('is-online');\n\n      if (this.wasOffline) {\n        this.emit('back-online');\n        this.info(this.i18n('connectedToInternet'), 'success', 3000);\n        this.wasOffline = false;\n      }\n    }\n  }\n\n  getID() {\n    return this.opts.id;\n  }\n  /**\n   * Registers a plugin with Core.\n   *\n   * @param {object} Plugin object\n   * @param {object} [opts] object with options to be passed to Plugin\n   * @returns {object} self for chaining\n   */\n  // eslint-disable-next-line no-shadow\n\n\n  use(Plugin, opts) {\n    if (typeof Plugin !== 'function') {\n      const msg = `Expected a plugin class, but got ${Plugin === null ? 'null' : typeof Plugin}.` + ' Please verify that the plugin was imported and spelled correctly.';\n      throw new TypeError(msg);\n    } // Instantiate\n\n\n    const plugin = new Plugin(this, opts);\n    const pluginId = plugin.id;\n\n    if (!pluginId) {\n      throw new Error('Your plugin must have an id');\n    }\n\n    if (!plugin.type) {\n      throw new Error('Your plugin must have a type');\n    }\n\n    const existsPluginAlready = this.getPlugin(pluginId);\n\n    if (existsPluginAlready) {\n      const msg = `Already found a plugin named '${existsPluginAlready.id}'. ` + `Tried to use: '${pluginId}'.\\n` + 'Uppy plugins must have unique `id` options. See https://uppy.io/docs/plugins/#id.';\n      throw new Error(msg);\n    }\n\n    if (Plugin.VERSION) {\n      this.log(`Using ${pluginId} v${Plugin.VERSION}`);\n    }\n\n    if (plugin.type in _classPrivateFieldLooseBase(this, _plugins)[_plugins]) {\n      _classPrivateFieldLooseBase(this, _plugins)[_plugins][plugin.type].push(plugin);\n    } else {\n      _classPrivateFieldLooseBase(this, _plugins)[_plugins][plugin.type] = [plugin];\n    }\n\n    plugin.install();\n    return this;\n  }\n  /**\n   * Find one Plugin by name.\n   *\n   * @param {string} id plugin id\n   * @returns {BasePlugin|undefined}\n   */\n\n\n  getPlugin(id) {\n    for (const plugins of Object.values(_classPrivateFieldLooseBase(this, _plugins)[_plugins])) {\n      const foundPlugin = plugins.find(plugin => plugin.id === id);\n      if (foundPlugin != null) return foundPlugin;\n    }\n\n    return undefined;\n  }\n\n  [_Symbol$for](type) {\n    return _classPrivateFieldLooseBase(this, _plugins)[_plugins][type];\n  }\n  /**\n   * Iterate through all `use`d plugins.\n   *\n   * @param {Function} method that will be run on each plugin\n   */\n\n\n  iteratePlugins(method) {\n    Object.values(_classPrivateFieldLooseBase(this, _plugins)[_plugins]).flat(1).forEach(method);\n  }\n  /**\n   * Uninstall and remove a plugin.\n   *\n   * @param {object} instance The plugin instance to remove.\n   */\n\n\n  removePlugin(instance) {\n    this.log(`Removing plugin ${instance.id}`);\n    this.emit('plugin-remove', instance);\n\n    if (instance.uninstall) {\n      instance.uninstall();\n    }\n\n    const list = _classPrivateFieldLooseBase(this, _plugins)[_plugins][instance.type]; // list.indexOf failed here, because Vue3 converted the plugin instance\n    // to a Proxy object, which failed the strict comparison test:\n    // obj !== objProxy\n\n\n    const index = list.findIndex(item => item.id === instance.id);\n\n    if (index !== -1) {\n      list.splice(index, 1);\n    }\n\n    const state = this.getState();\n    const updatedState = {\n      plugins: { ...state.plugins,\n        [instance.id]: undefined\n      }\n    };\n    this.setState(updatedState);\n  }\n  /**\n   * Uninstall all plugins and close down this Uppy instance.\n   */\n\n\n  close(_temp2) {\n    let {\n      reason\n    } = _temp2 === void 0 ? {} : _temp2;\n    this.log(`Closing Uppy instance ${this.opts.id}: removing all files and uninstalling plugins`);\n    this.cancelAll({\n      reason\n    });\n\n    _classPrivateFieldLooseBase(this, _storeUnsubscribe)[_storeUnsubscribe]();\n\n    this.iteratePlugins(plugin => {\n      this.removePlugin(plugin);\n    });\n\n    if (typeof window !== 'undefined' && window.removeEventListener) {\n      window.removeEventListener('online', _classPrivateFieldLooseBase(this, _updateOnlineStatus)[_updateOnlineStatus]);\n      window.removeEventListener('offline', _classPrivateFieldLooseBase(this, _updateOnlineStatus)[_updateOnlineStatus]);\n    }\n  }\n\n  hideInfo() {\n    const {\n      info\n    } = this.getState();\n    this.setState({\n      info: info.slice(1)\n    });\n    this.emit('info-hidden');\n  }\n  /**\n   * Set info message in `state.info`, so that UI plugins like `Informer`\n   * can display the message.\n   *\n   * @param {string | object} message Message to be displayed by the informer\n   * @param {string} [type]\n   * @param {number} [duration]\n   */\n\n\n  info(message, type, duration) {\n    if (type === void 0) {\n      type = 'info';\n    }\n\n    if (duration === void 0) {\n      duration = 3000;\n    }\n\n    const isComplexMessage = typeof message === 'object';\n    this.setState({\n      info: [...this.getState().info, {\n        type,\n        message: isComplexMessage ? message.message : message,\n        details: isComplexMessage ? message.details : null\n      }]\n    });\n    setTimeout(() => this.hideInfo(), duration);\n    this.emit('info-visible');\n  }\n  /**\n   * Passes messages to a function, provided in `opts.logger`.\n   * If `opts.logger: Uppy.debugLogger` or `opts.debug: true`, logs to the browser console.\n   *\n   * @param {string|object} message to log\n   * @param {string} [type] optional `error` or `warning`\n   */\n\n\n  log(message, type) {\n    const {\n      logger\n    } = this.opts;\n\n    switch (type) {\n      case 'error':\n        logger.error(message);\n        break;\n\n      case 'warning':\n        logger.warn(message);\n        break;\n\n      default:\n        logger.debug(message);\n        break;\n    }\n  }\n  /**\n   * Restore an upload by its ID.\n   */\n\n\n  restore(uploadID) {\n    this.log(`Core: attempting to restore upload \"${uploadID}\"`);\n\n    if (!this.getState().currentUploads[uploadID]) {\n      _classPrivateFieldLooseBase(this, _removeUpload)[_removeUpload](uploadID);\n\n      return Promise.reject(new Error('Nonexistent upload'));\n    }\n\n    return _classPrivateFieldLooseBase(this, _runUpload)[_runUpload](uploadID);\n  }\n  /**\n   * Create an upload for a bunch of files.\n   *\n   * @param {Array<string>} fileIDs File IDs to include in this upload.\n   * @returns {string} ID of this upload.\n   */\n\n\n  [_Symbol$for2]() {\n    return _classPrivateFieldLooseBase(this, _createUpload)[_createUpload](...arguments);\n  }\n\n  /**\n   * Add data to an upload's result object.\n   *\n   * @param {string} uploadID The ID of the upload.\n   * @param {object} data Data properties to add to the result object.\n   */\n  addResultData(uploadID, data) {\n    if (!_classPrivateFieldLooseBase(this, _getUpload)[_getUpload](uploadID)) {\n      this.log(`Not setting result for an upload that has been removed: ${uploadID}`);\n      return;\n    }\n\n    const {\n      currentUploads\n    } = this.getState();\n    const currentUpload = { ...currentUploads[uploadID],\n      result: { ...currentUploads[uploadID].result,\n        ...data\n      }\n    };\n    this.setState({\n      currentUploads: { ...currentUploads,\n        [uploadID]: currentUpload\n      }\n    });\n  }\n  /**\n   * Remove an upload, eg. if it has been canceled or completed.\n   *\n   * @param {string} uploadID The ID of the upload.\n   */\n\n\n  /**\n   * Start an upload for all the files that are not currently being uploaded.\n   *\n   * @returns {Promise}\n   */\n  upload() {\n    var _classPrivateFieldLoo;\n\n    if (!((_classPrivateFieldLoo = _classPrivateFieldLooseBase(this, _plugins)[_plugins].uploader) != null && _classPrivateFieldLoo.length)) {\n      this.log('No uploader type plugins are used', 'warning');\n    }\n\n    let {\n      files\n    } = this.getState();\n    const onBeforeUploadResult = this.opts.onBeforeUpload(files);\n\n    if (onBeforeUploadResult === false) {\n      return Promise.reject(new Error('Not starting the upload because onBeforeUpload returned false'));\n    }\n\n    if (onBeforeUploadResult && typeof onBeforeUploadResult === 'object') {\n      files = onBeforeUploadResult; // Updating files in state, because uploader plugins receive file IDs,\n      // and then fetch the actual file object from state\n\n      this.setState({\n        files\n      });\n    }\n\n    return Promise.resolve().then(() => _classPrivateFieldLooseBase(this, _restricter)[_restricter].validateMinNumberOfFiles(files)).catch(err => {\n      _classPrivateFieldLooseBase(this, _informAndEmit)[_informAndEmit](err);\n\n      throw err;\n    }).then(() => {\n      if (!_classPrivateFieldLooseBase(this, _checkRequiredMetaFields)[_checkRequiredMetaFields](files)) {\n        throw new _Restricter.RestrictionError(this.i18n('missingRequiredMetaField'));\n      }\n    }).catch(err => {\n      // Doing this in a separate catch because we already emited and logged\n      // all the errors in `checkRequiredMetaFields` so we only throw a generic\n      // missing fields error here.\n      throw err;\n    }).then(() => {\n      const {\n        currentUploads\n      } = this.getState(); // get a list of files that are currently assigned to uploads\n\n      const currentlyUploadingFiles = Object.values(currentUploads).flatMap(curr => curr.fileIDs);\n      const waitingFileIDs = [];\n      Object.keys(files).forEach(fileID => {\n        const file = this.getFile(fileID); // if the file hasn't started uploading and hasn't already been assigned to an upload..\n\n        if (!file.progress.uploadStarted && currentlyUploadingFiles.indexOf(fileID) === -1) {\n          waitingFileIDs.push(file.id);\n        }\n      });\n\n      const uploadID = _classPrivateFieldLooseBase(this, _createUpload)[_createUpload](waitingFileIDs);\n\n      return _classPrivateFieldLooseBase(this, _runUpload)[_runUpload](uploadID);\n    }).catch(err => {\n      this.emit('error', err);\n      this.log(err, 'error');\n      throw err;\n    });\n  }\n\n}\n\nfunction _informAndEmit2(error, file) {\n  const {\n    message,\n    details = ''\n  } = error;\n\n  if (error.isRestriction) {\n    this.emit('restriction-failed', file, error);\n  } else {\n    this.emit('error', error);\n  }\n\n  this.info({\n    message,\n    details\n  }, 'error', this.opts.infoTimeout);\n  this.log(`${message} ${details}`.trim(), 'error');\n}\n\nfunction _checkRequiredMetaFieldsOnFile2(file) {\n  const {\n    missingFields,\n    error\n  } = _classPrivateFieldLooseBase(this, _restricter)[_restricter].getMissingRequiredMetaFields(file);\n\n  if (missingFields.length > 0) {\n    this.setFileState(file.id, {\n      missingRequiredMetaFields: missingFields\n    });\n    this.log(error.message);\n    this.emit('restriction-failed', file, error);\n    return false;\n  }\n\n  return true;\n}\n\nfunction _checkRequiredMetaFields2(files) {\n  let success = true;\n\n  for (const file of Object.values(files)) {\n    if (!_classPrivateFieldLooseBase(this, _checkRequiredMetaFieldsOnFile)[_checkRequiredMetaFieldsOnFile](file)) {\n      success = false;\n    }\n  }\n\n  return success;\n}\n\nfunction _assertNewUploadAllowed2(file) {\n  const {\n    allowNewUpload\n  } = this.getState();\n\n  if (allowNewUpload === false) {\n    const error = new _Restricter.RestrictionError(this.i18n('noMoreFilesAllowed'));\n\n    _classPrivateFieldLooseBase(this, _informAndEmit)[_informAndEmit](error, file);\n\n    throw error;\n  }\n}\n\nfunction _checkAndCreateFileStateObject2(files, fileDescriptor) {\n  const fileType = getFileType(fileDescriptor);\n  const fileName = getFileName(fileType, fileDescriptor);\n  const fileExtension = getFileNameAndExtension(fileName).extension;\n  const isRemote = Boolean(fileDescriptor.isRemote);\n  const fileID = generateFileID({ ...fileDescriptor,\n    type: fileType\n  });\n\n  if (this.checkIfFileAlreadyExists(fileID)) {\n    const error = new _Restricter.RestrictionError(this.i18n('noDuplicates', {\n      fileName\n    }));\n\n    _classPrivateFieldLooseBase(this, _informAndEmit)[_informAndEmit](error, fileDescriptor);\n\n    throw error;\n  }\n\n  const meta = fileDescriptor.meta || {};\n  meta.name = fileName;\n  meta.type = fileType; // `null` means the size is unknown.\n\n  const size = Number.isFinite(fileDescriptor.data.size) ? fileDescriptor.data.size : null;\n  let newFile = {\n    source: fileDescriptor.source || '',\n    id: fileID,\n    name: fileName,\n    extension: fileExtension || '',\n    meta: { ...this.getState().meta,\n      ...meta\n    },\n    type: fileType,\n    data: fileDescriptor.data,\n    progress: {\n      percentage: 0,\n      bytesUploaded: 0,\n      bytesTotal: size,\n      uploadComplete: false,\n      uploadStarted: null\n    },\n    size,\n    isRemote,\n    remote: fileDescriptor.remote || '',\n    preview: fileDescriptor.preview\n  };\n  const onBeforeFileAddedResult = this.opts.onBeforeFileAdded(newFile, files);\n\n  if (onBeforeFileAddedResult === false) {\n    // Don\u2019t show UI info for this error, as it should be done by the developer\n    const error = new _Restricter.RestrictionError('Cannot add the file because onBeforeFileAdded returned false.');\n    this.emit('restriction-failed', fileDescriptor, error);\n    throw error;\n  } else if (typeof onBeforeFileAddedResult === 'object' && onBeforeFileAddedResult !== null) {\n    newFile = onBeforeFileAddedResult;\n  }\n\n  try {\n    const filesArray = Object.keys(files).map(i => files[i]);\n\n    _classPrivateFieldLooseBase(this, _restricter)[_restricter].validate(newFile, filesArray);\n  } catch (err) {\n    _classPrivateFieldLooseBase(this, _informAndEmit)[_informAndEmit](err, newFile);\n\n    throw err;\n  }\n\n  return newFile;\n}\n\nfunction _startIfAutoProceed2() {\n  if (this.opts.autoProceed && !this.scheduledAutoProceed) {\n    this.scheduledAutoProceed = setTimeout(() => {\n      this.scheduledAutoProceed = null;\n      this.upload().catch(err => {\n        if (!err.isRestriction) {\n          this.log(err.stack || err.message || err);\n        }\n      });\n    }, 4);\n  }\n}\n\nfunction _addListeners2() {\n  /**\n   * @param {Error} error\n   * @param {object} [file]\n   * @param {object} [response]\n   */\n  const errorHandler = (error, file, response) => {\n    let errorMsg = error.message || 'Unknown error';\n\n    if (error.details) {\n      errorMsg += ` ${error.details}`;\n    }\n\n    this.setState({\n      error: errorMsg\n    });\n\n    if (file != null && file.id in this.getState().files) {\n      this.setFileState(file.id, {\n        error: errorMsg,\n        response\n      });\n    }\n  };\n\n  this.on('error', errorHandler);\n  this.on('upload-error', (file, error, response) => {\n    errorHandler(error, file, response);\n\n    if (typeof error === 'object' && error.message) {\n      const newError = new Error(error.message);\n      newError.details = error.message;\n\n      if (error.details) {\n        newError.details += ` ${error.details}`;\n      }\n\n      newError.message = this.i18n('failedToUpload', {\n        file: file == null ? void 0 : file.name\n      });\n\n      _classPrivateFieldLooseBase(this, _informAndEmit)[_informAndEmit](newError);\n    } else {\n      _classPrivateFieldLooseBase(this, _informAndEmit)[_informAndEmit](error);\n    }\n  });\n  this.on('upload', () => {\n    this.setState({\n      error: null\n    });\n  });\n  this.on('upload-started', file => {\n    if (file == null || !this.getFile(file.id)) {\n      this.log(`Not setting progress for a file that has been removed: ${file == null ? void 0 : file.id}`);\n      return;\n    }\n\n    this.setFileState(file.id, {\n      progress: {\n        uploadStarted: Date.now(),\n        uploadComplete: false,\n        percentage: 0,\n        bytesUploaded: 0,\n        bytesTotal: file.size\n      }\n    });\n  });\n  this.on('upload-progress', this.calculateProgress);\n  this.on('upload-success', (file, uploadResp) => {\n    if (file == null || !this.getFile(file.id)) {\n      this.log(`Not setting progress for a file that has been removed: ${file == null ? void 0 : file.id}`);\n      return;\n    }\n\n    const currentProgress = this.getFile(file.id).progress;\n    this.setFileState(file.id, {\n      progress: { ...currentProgress,\n        postprocess: _classPrivateFieldLooseBase(this, _postProcessors)[_postProcessors].size > 0 ? {\n          mode: 'indeterminate'\n        } : null,\n        uploadComplete: true,\n        percentage: 100,\n        bytesUploaded: currentProgress.bytesTotal\n      },\n      response: uploadResp,\n      uploadURL: uploadResp.uploadURL,\n      isPaused: false\n    }); // Remote providers sometimes don't tell us the file size,\n    // but we can know how many bytes we uploaded once the upload is complete.\n\n    if (file.size == null) {\n      this.setFileState(file.id, {\n        size: uploadResp.bytesUploaded || currentProgress.bytesTotal\n      });\n    }\n\n    this.calculateTotalProgress();\n  });\n  this.on('preprocess-progress', (file, progress) => {\n    if (file == null || !this.getFile(file.id)) {\n      this.log(`Not setting progress for a file that has been removed: ${file == null ? void 0 : file.id}`);\n      return;\n    }\n\n    this.setFileState(file.id, {\n      progress: { ...this.getFile(file.id).progress,\n        preprocess: progress\n      }\n    });\n  });\n  this.on('preprocess-complete', file => {\n    if (file == null || !this.getFile(file.id)) {\n      this.log(`Not setting progress for a file that has been removed: ${file == null ? void 0 : file.id}`);\n      return;\n    }\n\n    const files = { ...this.getState().files\n    };\n    files[file.id] = { ...files[file.id],\n      progress: { ...files[file.id].progress\n      }\n    };\n    delete files[file.id].progress.preprocess;\n    this.setState({\n      files\n    });\n  });\n  this.on('postprocess-progress', (file, progress) => {\n    if (file == null || !this.getFile(file.id)) {\n      this.log(`Not setting progress for a file that has been removed: ${file == null ? void 0 : file.id}`);\n      return;\n    }\n\n    this.setFileState(file.id, {\n      progress: { ...this.getState().files[file.id].progress,\n        postprocess: progress\n      }\n    });\n  });\n  this.on('postprocess-complete', file => {\n    if (file == null || !this.getFile(file.id)) {\n      this.log(`Not setting progress for a file that has been removed: ${file == null ? void 0 : file.id}`);\n      return;\n    }\n\n    const files = { ...this.getState().files\n    };\n    files[file.id] = { ...files[file.id],\n      progress: { ...files[file.id].progress\n      }\n    };\n    delete files[file.id].progress.postprocess;\n    this.setState({\n      files\n    });\n  });\n  this.on('restored', () => {\n    // Files may have changed--ensure progress is still accurate.\n    this.calculateTotalProgress();\n  });\n  this.on('dashboard:file-edit-complete', file => {\n    if (file) {\n      _classPrivateFieldLooseBase(this, _checkRequiredMetaFieldsOnFile)[_checkRequiredMetaFieldsOnFile](file);\n    }\n  }); // show informer if offline\n\n  if (typeof window !== 'undefined' && window.addEventListener) {\n    window.addEventListener('online', _classPrivateFieldLooseBase(this, _updateOnlineStatus)[_updateOnlineStatus]);\n    window.addEventListener('offline', _classPrivateFieldLooseBase(this, _updateOnlineStatus)[_updateOnlineStatus]);\n    setTimeout(_classPrivateFieldLooseBase(this, _updateOnlineStatus)[_updateOnlineStatus], 3000);\n  }\n}\n\nfunction _createUpload2(fileIDs, opts) {\n  if (opts === void 0) {\n    opts = {};\n  }\n\n  // uppy.retryAll sets this to true \u2014 when retrying we want to ignore `allowNewUpload: false`\n  const {\n    forceAllowNewUpload = false\n  } = opts;\n  const {\n    allowNewUpload,\n    currentUploads\n  } = this.getState();\n\n  if (!allowNewUpload && !forceAllowNewUpload) {\n    throw new Error('Cannot create a new upload: already uploading.');\n  }\n\n  const uploadID = (0, _nonSecure.nanoid)();\n  this.emit('upload', {\n    id: uploadID,\n    fileIDs\n  });\n  this.setState({\n    allowNewUpload: this.opts.allowMultipleUploadBatches !== false && this.opts.allowMultipleUploads !== false,\n    currentUploads: { ...currentUploads,\n      [uploadID]: {\n        fileIDs,\n        step: 0,\n        result: {}\n      }\n    }\n  });\n  return uploadID;\n}\n\nfunction _getUpload2(uploadID) {\n  const {\n    currentUploads\n  } = this.getState();\n  return currentUploads[uploadID];\n}\n\nfunction _removeUpload2(uploadID) {\n  const currentUploads = { ...this.getState().currentUploads\n  };\n  delete currentUploads[uploadID];\n  this.setState({\n    currentUploads\n  });\n}\n\nasync function _runUpload2(uploadID) {\n  let {\n    currentUploads\n  } = this.getState();\n  let currentUpload = currentUploads[uploadID];\n  const restoreStep = currentUpload.step || 0;\n  const steps = [..._classPrivateFieldLooseBase(this, _preProcessors)[_preProcessors], ..._classPrivateFieldLooseBase(this, _uploaders)[_uploaders], ..._classPrivateFieldLooseBase(this, _postProcessors)[_postProcessors]];\n\n  try {\n    for (let step = restoreStep; step < steps.length; step++) {\n      if (!currentUpload) {\n        break;\n      }\n\n      const fn = steps[step];\n      const updatedUpload = { ...currentUpload,\n        step\n      };\n      this.setState({\n        currentUploads: { ...currentUploads,\n          [uploadID]: updatedUpload\n        }\n      }); // TODO give this the `updatedUpload` object as its only parameter maybe?\n      // Otherwise when more metadata may be added to the upload this would keep getting more parameters\n\n      await fn(updatedUpload.fileIDs, uploadID); // Update currentUpload value in case it was modified asynchronously.\n\n      currentUploads = this.getState().currentUploads;\n      currentUpload = currentUploads[uploadID];\n    }\n  } catch (err) {\n    _classPrivateFieldLooseBase(this, _removeUpload)[_removeUpload](uploadID);\n\n    throw err;\n  } // Set result data.\n\n\n  if (currentUpload) {\n    // Mark postprocessing step as complete if necessary; this addresses a case where we might get\n    // stuck in the postprocessing UI while the upload is fully complete.\n    // If the postprocessing steps do not do any work, they may not emit postprocessing events at\n    // all, and never mark the postprocessing as complete. This is fine on its own but we\n    // introduced code in the @uppy/core upload-success handler to prepare postprocessing progress\n    // state if any postprocessors are registered. That is to avoid a \"flash of completed state\"\n    // before the postprocessing plugins can emit events.\n    //\n    // So, just in case an upload with postprocessing plugins *has* completed *without* emitting\n    // postprocessing completion, we do it instead.\n    currentUpload.fileIDs.forEach(fileID => {\n      const file = this.getFile(fileID);\n\n      if (file && file.progress.postprocess) {\n        this.emit('postprocess-complete', file);\n      }\n    });\n    const files = currentUpload.fileIDs.map(fileID => this.getFile(fileID));\n    const successful = files.filter(file => !file.error);\n    const failed = files.filter(file => file.error);\n    await this.addResultData(uploadID, {\n      successful,\n      failed,\n      uploadID\n    }); // Update currentUpload value in case it was modified asynchronously.\n\n    currentUploads = this.getState().currentUploads;\n    currentUpload = currentUploads[uploadID];\n  } // Emit completion events.\n  // This is in a separate function so that the `currentUploads` variable\n  // always refers to the latest state. In the handler right above it refers\n  // to an outdated object without the `.result` property.\n\n\n  let result;\n\n  if (currentUpload) {\n    result = currentUpload.result;\n    this.emit('complete', result);\n\n    _classPrivateFieldLooseBase(this, _removeUpload)[_removeUpload](uploadID);\n  }\n\n  if (result == null) {\n    this.log(`Not setting result for an upload that has been removed: ${uploadID}`);\n  }\n\n  return result;\n}\n\nUppy.VERSION = packageJson.version;\nmodule.exports = Uppy;", "/** Normal hydration that attaches to a DOM tree but does not diff it. */\nexport const MODE_HYDRATE = 1 << 5;\n/** Signifies this VNode suspended on the previous render */\nexport const MODE_SUSPENDED = 1 << 7;\n/** Indicates that this node needs to be inserted while patching children */\nexport const INSERT_VNODE = 1 << 2;\n/** Indicates a VNode has been matched with another VNode in the diff */\nexport const MATCHED = 1 << 1;\n\n/** Reset all mode flags */\nexport const RESET_MODE = ~(MODE_HYDRATE | MODE_SUSPENDED);\n\nexport const SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\nexport const XHTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';\nexport const MATH_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';\n\nexport const UNDEFINED = undefined;\nexport const EMPTY_OBJ = /** @type {any} */ ({});\nexport const EMPTY_ARR = [];\nexport const IS_NON_DIMENSIONAL =\n\t/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;\n", "import { EMPTY_ARR } from './constants';\n\nexport const isArray = Array.isArray;\n\n/**\n * Assign properties from `props` to `obj`\n * @template O, P The obj and props types\n * @param {O} obj The object to copy properties to\n * @param {P} props The object to copy properties from\n * @returns {O & P}\n */\nexport function assign(obj, props) {\n\t// @ts-expect-error We change the type of `obj` to be `O & P`\n\tfor (let i in props) obj[i] = props[i];\n\treturn /** @type {O & P} */ (obj);\n}\n\n/**\n * Remove a child node from its parent if attached. This is a workaround for\n * IE11 which doesn't support `Element.prototype.remove()`. Using this function\n * is smaller than including a dedicated polyfill.\n * @param {import('./index').ContainerNode} node The node to remove\n */\nexport function removeNode(node) {\n\tif (node && node.parentNode) node.parentNode.removeChild(node);\n}\n\nexport const slice = EMPTY_ARR.slice;\n", "import { _catchError } from './diff/catch-error';\n\n/**\n * The `option` object can potentially contain callback functions\n * that are called during various stages of our renderer. This is the\n * foundation on which all our addons like `preact/debug`, `preact/compat`,\n * and `preact/hooks` are based on. See the `Options` type in `internal.d.ts`\n * for a full list of available option hooks (most editors/IDEs allow you to\n * ctrl+click or cmd+click on mac the type definition below).\n * @type {import('./internal').Options}\n */\nconst options = {\n\t_catchError\n};\n\nexport default options;\n", "import { slice } from './util';\nimport options from './options';\nimport { UNDEFINED } from './constants';\n\nlet vnodeId = 0;\n\n/**\n * Create an virtual node (used for JSX)\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component constructor for this\n * virtual node\n * @param {object | null | undefined} [props] The properties of the virtual node\n * @param {Array<import('.').ComponentChildren>} [children] The children of the\n * virtual node\n * @returns {import('./internal').VNode}\n */\nexport function createElement(type, props, children) {\n\tlet normalizedProps = {},\n\t\tkey,\n\t\tref,\n\t\ti;\n\tfor (i in props) {\n\t\tif (i == 'key') key = props[i];\n\t\telse if (i == 'ref') ref = props[i];\n\t\telse normalizedProps[i] = props[i];\n\t}\n\n\tif (arguments.length > 2) {\n\t\tnormalizedProps.children =\n\t\t\targuments.length > 3 ? slice.call(arguments, 2) : children;\n\t}\n\n\t// If a Component VNode, check for and apply defaultProps\n\t// Note: type may be undefined in development, must never error here.\n\tif (typeof type == 'function' && type.defaultProps != null) {\n\t\tfor (i in type.defaultProps) {\n\t\t\tif (normalizedProps[i] === UNDEFINED) {\n\t\t\t\tnormalizedProps[i] = type.defaultProps[i];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn createVNode(type, normalizedProps, key, ref, null);\n}\n\n/**\n * Create a VNode (used internally by Preact)\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component\n * Constructor for this virtual node\n * @param {object | string | number | null} props The properties of this virtual node.\n * If this virtual node represents a text node, this is the text of the node (string or number).\n * @param {string | number | null} key The key for this virtual node, used when\n * diffing it against its children\n * @param {import('./internal').VNode[\"ref\"]} ref The ref property that will\n * receive a reference to its created child\n * @returns {import('./internal').VNode}\n */\nexport function createVNode(type, props, key, ref, original) {\n\t// V8 seems to be better at detecting type shapes if the object is allocated from the same call site\n\t// Do not inline into createElement and coerceToVNode!\n\t/** @type {import('./internal').VNode} */\n\tconst vnode = {\n\t\ttype,\n\t\tprops,\n\t\tkey,\n\t\tref,\n\t\t_children: null,\n\t\t_parent: null,\n\t\t_depth: 0,\n\t\t_dom: null,\n\t\t_component: null,\n\t\tconstructor: UNDEFINED,\n\t\t_original: original == null ? ++vnodeId : original,\n\t\t_index: -1,\n\t\t_flags: 0\n\t};\n\n\t// Only invoke the vnode hook if this was *not* a direct copy:\n\tif (original == null && options.vnode != null) options.vnode(vnode);\n\n\treturn vnode;\n}\n\nexport function createRef() {\n\treturn { current: null };\n}\n\nexport function Fragment(props) {\n\treturn props.children;\n}\n\n/**\n * Check if a the argument is a valid Preact VNode.\n * @param {*} vnode\n * @returns {vnode is VNode}\n */\nexport const isValidElement = vnode =>\n\tvnode != null && vnode.constructor == UNDEFINED;\n", "import { assign } from './util';\nimport { diff, commitRoot } from './diff/index';\nimport options from './options';\nimport { Fragment } from './create-element';\nimport { MODE_HYDRATE } from './constants';\n\n/**\n * Base Component class. Provides `setState()` and `forceUpdate()`, which\n * trigger rendering\n * @param {object} props The initial component props\n * @param {object} context The initial context from parent components'\n * getChildContext\n */\nexport function BaseComponent(props, context) {\n\tthis.props = props;\n\tthis.context = context;\n}\n\n/**\n * Update component state and schedule a re-render.\n * @this {import('./internal').Component}\n * @param {object | ((s: object, p: object) => object)} update A hash of state\n * properties to update with new values or a function that given the current\n * state and props returns a new partial state\n * @param {() => void} [callback] A function to be called once component state is\n * updated\n */\nBaseComponent.prototype.setState = function (update, callback) {\n\t// only clone state when copying to nextState the first time.\n\tlet s;\n\tif (this._nextState != null && this._nextState !== this.state) {\n\t\ts = this._nextState;\n\t} else {\n\t\ts = this._nextState = assign({}, this.state);\n\t}\n\n\tif (typeof update == 'function') {\n\t\t// Some libraries like `immer` mark the current state as readonly,\n\t\t// preventing us from mutating it, so we need to clone it. See #2716\n\t\tupdate = update(assign({}, s), this.props);\n\t}\n\n\tif (update) {\n\t\tassign(s, update);\n\t}\n\n\t// Skip update if updater function returned null\n\tif (update == null) return;\n\n\tif (this._vnode) {\n\t\tif (callback) {\n\t\t\tthis._stateCallbacks.push(callback);\n\t\t}\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Immediately perform a synchronous re-render of the component\n * @this {import('./internal').Component}\n * @param {() => void} [callback] A function to be called after component is\n * re-rendered\n */\nBaseComponent.prototype.forceUpdate = function (callback) {\n\tif (this._vnode) {\n\t\t// Set render mode so that we can differentiate where the render request\n\t\t// is coming from. We need this because forceUpdate should never call\n\t\t// shouldComponentUpdate\n\t\tthis._force = true;\n\t\tif (callback) this._renderCallbacks.push(callback);\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Accepts `props` and `state`, and returns a new Virtual DOM tree to build.\n * Virtual DOM is generally constructed via [JSX](http://jasonformat.com/wtf-is-jsx).\n * @param {object} props Props (eg: JSX attributes) received from parent\n * element/component\n * @param {object} state The component's current state\n * @param {object} context Context object, as returned by the nearest\n * ancestor's `getChildContext()`\n * @returns {ComponentChildren | void}\n */\nBaseComponent.prototype.render = Fragment;\n\n/**\n * @param {import('./internal').VNode} vnode\n * @param {number | null} [childIndex]\n */\nexport function getDomSibling(vnode, childIndex) {\n\tif (childIndex == null) {\n\t\t// Use childIndex==null as a signal to resume the search from the vnode's sibling\n\t\treturn vnode._parent\n\t\t\t? getDomSibling(vnode._parent, vnode._index + 1)\n\t\t\t: null;\n\t}\n\n\tlet sibling;\n\tfor (; childIndex < vnode._children.length; childIndex++) {\n\t\tsibling = vnode._children[childIndex];\n\n\t\tif (sibling != null && sibling._dom != null) {\n\t\t\t// Since updateParentDomPointers keeps _dom pointer correct,\n\t\t\t// we can rely on _dom to tell us if this subtree contains a\n\t\t\t// rendered DOM node, and what the first rendered DOM node is\n\t\t\treturn sibling._dom;\n\t\t}\n\t}\n\n\t// If we get here, we have not found a DOM node in this vnode's children.\n\t// We must resume from this vnode's sibling (in it's parent _children array)\n\t// Only climb up and search the parent if we aren't searching through a DOM\n\t// VNode (meaning we reached the DOM parent of the original vnode that began\n\t// the search)\n\treturn typeof vnode.type == 'function' ? getDomSibling(vnode) : null;\n}\n\n/**\n * Trigger in-place re-rendering of a component.\n * @param {import('./internal').Component} component The component to rerender\n */\nfunction renderComponent(component) {\n\tlet oldVNode = component._vnode,\n\t\toldDom = oldVNode._dom,\n\t\tcommitQueue = [],\n\t\trefQueue = [];\n\n\tif (component._parentDom) {\n\t\tconst newVNode = assign({}, oldVNode);\n\t\tnewVNode._original = oldVNode._original + 1;\n\t\tif (options.vnode) options.vnode(newVNode);\n\n\t\tdiff(\n\t\t\tcomponent._parentDom,\n\t\t\tnewVNode,\n\t\t\toldVNode,\n\t\t\tcomponent._globalContext,\n\t\t\tcomponent._parentDom.namespaceURI,\n\t\t\toldVNode._flags & MODE_HYDRATE ? [oldDom] : null,\n\t\t\tcommitQueue,\n\t\t\toldDom == null ? getDomSibling(oldVNode) : oldDom,\n\t\t\t!!(oldVNode._flags & MODE_HYDRATE),\n\t\t\trefQueue\n\t\t);\n\n\t\tnewVNode._original = oldVNode._original;\n\t\tnewVNode._parent._children[newVNode._index] = newVNode;\n\t\tcommitRoot(commitQueue, newVNode, refQueue);\n\n\t\tif (newVNode._dom != oldDom) {\n\t\t\tupdateParentDomPointers(newVNode);\n\t\t}\n\t}\n}\n\n/**\n * @param {import('./internal').VNode} vnode\n */\nfunction updateParentDomPointers(vnode) {\n\tif ((vnode = vnode._parent) != null && vnode._component != null) {\n\t\tvnode._dom = vnode._component.base = null;\n\t\tfor (let i = 0; i < vnode._children.length; i++) {\n\t\t\tlet child = vnode._children[i];\n\t\t\tif (child != null && child._dom != null) {\n\t\t\t\tvnode._dom = vnode._component.base = child._dom;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn updateParentDomPointers(vnode);\n\t}\n}\n\n/**\n * The render queue\n * @type {Array<import('./internal').Component>}\n */\nlet rerenderQueue = [];\n\n/*\n * The value of `Component.debounce` must asynchronously invoke the passed in callback. It is\n * important that contributors to Preact can consistently reason about what calls to `setState`, etc.\n * do, and when their effects will be applied. See the links below for some further reading on designing\n * asynchronous APIs.\n * * [Designing APIs for Asynchrony](https://blog.izs.me/2013/08/designing-apis-for-asynchrony)\n * * [Callbacks synchronous and asynchronous](https://blog.ometer.com/2011/07/24/callbacks-synchronous-and-asynchronous/)\n */\n\nlet prevDebounce;\n\nconst defer =\n\ttypeof Promise == 'function'\n\t\t? Promise.prototype.then.bind(Promise.resolve())\n\t\t: setTimeout;\n\n/**\n * Enqueue a rerender of a component\n * @param {import('./internal').Component} c The component to rerender\n */\nexport function enqueueRender(c) {\n\tif (\n\t\t(!c._dirty &&\n\t\t\t(c._dirty = true) &&\n\t\t\trerenderQueue.push(c) &&\n\t\t\t!process._rerenderCount++) ||\n\t\tprevDebounce !== options.debounceRendering\n\t) {\n\t\tprevDebounce = options.debounceRendering;\n\t\t(prevDebounce || defer)(process);\n\t}\n}\n\n/**\n * @param {import('./internal').Component} a\n * @param {import('./internal').Component} b\n */\nconst depthSort = (a, b) => a._vnode._depth - b._vnode._depth;\n\n/** Flush the render queue by rerendering all queued components */\nfunction process() {\n\tlet c;\n\trerenderQueue.sort(depthSort);\n\t// Don't update `renderCount` yet. Keep its value non-zero to prevent unnecessary\n\t// process() calls from getting scheduled while `queue` is still being consumed.\n\twhile ((c = rerenderQueue.shift())) {\n\t\tif (c._dirty) {\n\t\t\tlet renderQueueLength = rerenderQueue.length;\n\t\t\trenderComponent(c);\n\t\t\tif (rerenderQueue.length > renderQueueLength) {\n\t\t\t\t// When i.e. rerendering a provider additional new items can be injected, we want to\n\t\t\t\t// keep the order from top to bottom with those new items so we can handle them in a\n\t\t\t\t// single pass\n\t\t\t\trerenderQueue.sort(depthSort);\n\t\t\t}\n\t\t}\n\t}\n\tprocess._rerenderCount = 0;\n}\n\nprocess._rerenderCount = 0;\n", "import { IS_NON_DIMENSIONAL, SVG_NAMESPACE } from '../constants';\nimport options from '../options';\n\nfunction setStyle(style, key, value) {\n\tif (key[0] == '-') {\n\t\tstyle.setProperty(key, value == null ? '' : value);\n\t} else if (value == null) {\n\t\tstyle[key] = '';\n\t} else if (typeof value != 'number' || IS_NON_DIMENSIONAL.test(key)) {\n\t\tstyle[key] = value;\n\t} else {\n\t\tstyle[key] = value + 'px';\n\t}\n}\n\nconst CAPTURE_REGEX = /(PointerCapture)$|Capture$/i;\n\n// A logical clock to solve issues like https://github.com/preactjs/preact/issues/3927.\n// When the DOM performs an event it leaves micro-ticks in between bubbling up which means that\n// an event can trigger on a newly reated DOM-node while the event bubbles up.\n//\n// Originally inspired by Vue\n// (https://github.com/vuejs/core/blob/caeb8a68811a1b0f79/packages/runtime-dom/src/modules/events.ts#L90-L101),\n// but modified to use a logical clock instead of Date.now() in case event handlers get attached\n// and events get dispatched during the same millisecond.\n//\n// The clock is incremented after each new event dispatch. This allows 1 000 000 new events\n// per second for over 280 years before the value reaches Number.MAX_SAFE_INTEGER (2**53 - 1).\nlet eventClock = 0;\n\n/**\n * Set a property value on a DOM node\n * @param {import('../internal').PreactElement} dom The DOM node to modify\n * @param {string} name The name of the property to set\n * @param {*} value The value to set the property to\n * @param {*} oldValue The old value the property had\n * @param {string} namespace Whether or not this DOM node is an SVG node or not\n */\nexport function setProperty(dom, name, value, oldValue, namespace) {\n\tlet useCapture;\n\n\to: if (name == 'style') {\n\t\tif (typeof value == 'string') {\n\t\t\tdom.style.cssText = value;\n\t\t} else {\n\t\t\tif (typeof oldValue == 'string') {\n\t\t\t\tdom.style.cssText = oldValue = '';\n\t\t\t}\n\n\t\t\tif (oldValue) {\n\t\t\t\tfor (name in oldValue) {\n\t\t\t\t\tif (!(value && name in value)) {\n\t\t\t\t\t\tsetStyle(dom.style, name, '');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (value) {\n\t\t\t\tfor (name in value) {\n\t\t\t\t\tif (!oldValue || value[name] !== oldValue[name]) {\n\t\t\t\t\t\tsetStyle(dom.style, name, value[name]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t// Benchmark for comparison: https://esbench.com/bench/574c954bdb965b9a00965ac6\n\telse if (name[0] == 'o' && name[1] == 'n') {\n\t\tuseCapture = name != (name = name.replace(CAPTURE_REGEX, '$1'));\n\n\t\t// Infer correct casing for DOM built-in events:\n\t\tif (\n\t\t\tname.toLowerCase() in dom ||\n\t\t\tname == 'onFocusOut' ||\n\t\t\tname == 'onFocusIn'\n\t\t)\n\t\t\tname = name.toLowerCase().slice(2);\n\t\telse name = name.slice(2);\n\n\t\tif (!dom._listeners) dom._listeners = {};\n\t\tdom._listeners[name + useCapture] = value;\n\n\t\tif (value) {\n\t\t\tif (!oldValue) {\n\t\t\t\tvalue._attached = eventClock;\n\t\t\t\tdom.addEventListener(\n\t\t\t\t\tname,\n\t\t\t\t\tuseCapture ? eventProxyCapture : eventProxy,\n\t\t\t\t\tuseCapture\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tvalue._attached = oldValue._attached;\n\t\t\t}\n\t\t} else {\n\t\t\tdom.removeEventListener(\n\t\t\t\tname,\n\t\t\t\tuseCapture ? eventProxyCapture : eventProxy,\n\t\t\t\tuseCapture\n\t\t\t);\n\t\t}\n\t} else {\n\t\tif (namespace == SVG_NAMESPACE) {\n\t\t\t// Normalize incorrect prop usage for SVG:\n\t\t\t// - xlink:href / xlinkHref --> href (xlink:href was removed from SVG and isn't needed)\n\t\t\t// - className --> class\n\t\t\tname = name.replace(/xlink(H|:h)/, 'h').replace(/sName$/, 's');\n\t\t} else if (\n\t\t\tname != 'width' &&\n\t\t\tname != 'height' &&\n\t\t\tname != 'href' &&\n\t\t\tname != 'list' &&\n\t\t\tname != 'form' &&\n\t\t\t// Default value in browsers is `-1` and an empty string is\n\t\t\t// cast to `0` instead\n\t\t\tname != 'tabIndex' &&\n\t\t\tname != 'download' &&\n\t\t\tname != 'rowSpan' &&\n\t\t\tname != 'colSpan' &&\n\t\t\tname != 'role' &&\n\t\t\tname != 'popover' &&\n\t\t\tname in dom\n\t\t) {\n\t\t\ttry {\n\t\t\t\tdom[name] = value == null ? '' : value;\n\t\t\t\t// labelled break is 1b smaller here than a return statement (sorry)\n\t\t\t\tbreak o;\n\t\t\t} catch (e) {}\n\t\t}\n\n\t\t// aria- and data- attributes have no boolean representation.\n\t\t// A `false` value is different from the attribute not being\n\t\t// present, so we can't remove it. For non-boolean aria\n\t\t// attributes we could treat false as a removal, but the\n\t\t// amount of exceptions would cost too many bytes. On top of\n\t\t// that other frameworks generally stringify `false`.\n\n\t\tif (typeof value == 'function') {\n\t\t\t// never serialize functions as attribute values\n\t\t} else if (value != null && (value !== false || name[4] == '-')) {\n\t\t\tdom.setAttribute(name, name == 'popover' && value == true ? '' : value);\n\t\t} else {\n\t\t\tdom.removeAttribute(name);\n\t\t}\n\t}\n}\n\n/**\n * Create an event proxy function.\n * @param {boolean} useCapture Is the event handler for the capture phase.\n * @private\n */\nfunction createEventProxy(useCapture) {\n\t/**\n\t * Proxy an event to hooked event handlers\n\t * @param {import('../internal').PreactEvent} e The event object from the browser\n\t * @private\n\t */\n\treturn function (e) {\n\t\tif (this._listeners) {\n\t\t\tconst eventHandler = this._listeners[e.type + useCapture];\n\t\t\tif (e._dispatched == null) {\n\t\t\t\te._dispatched = eventClock++;\n\n\t\t\t\t// When `e._dispatched` is smaller than the time when the targeted event\n\t\t\t\t// handler was attached we know we have bubbled up to an element that was added\n\t\t\t\t// during patching the DOM.\n\t\t\t} else if (e._dispatched < eventHandler._attached) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\treturn eventHandler(options.event ? options.event(e) : e);\n\t\t}\n\t};\n}\n\nconst eventProxy = createEventProxy(false);\nconst eventProxyCapture = createEventProxy(true);\n", "import { enqueueRender } from './component';\n\nexport let i = 0;\n\nexport function createContext(defaultValue, contextId) {\n\tcontextId = '__cC' + i++;\n\n\tconst context = {\n\t\t_id: contextId,\n\t\t_defaultValue: defaultValue,\n\t\t/** @type {import('./internal').FunctionComponent} */\n\t\tConsumer(props, contextValue) {\n\t\t\t// return props.children(\n\t\t\t// \tcontext[contextId] ? context[contextId].props.value : defaultValue\n\t\t\t// );\n\t\t\treturn props.children(contextValue);\n\t\t},\n\t\t/** @type {import('./internal').FunctionComponent} */\n\t\tProvider(props) {\n\t\t\tif (!this.getChildContext) {\n\t\t\t\t/** @type {Set<import('./internal').Component> | null} */\n\t\t\t\tlet subs = new Set();\n\t\t\t\tlet ctx = {};\n\t\t\t\tctx[contextId] = this;\n\n\t\t\t\tthis.getChildContext = () => ctx;\n\n\t\t\t\tthis.componentWillUnmount = () => {\n\t\t\t\t\tsubs = null;\n\t\t\t\t};\n\n\t\t\t\tthis.shouldComponentUpdate = function (_props) {\n\t\t\t\t\tif (this.props.value !== _props.value) {\n\t\t\t\t\t\tsubs.forEach(c => {\n\t\t\t\t\t\t\tc._force = true;\n\t\t\t\t\t\t\tenqueueRender(c);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\tthis.sub = c => {\n\t\t\t\t\tsubs.add(c);\n\t\t\t\t\tlet old = c.componentWillUnmount;\n\t\t\t\t\tc.componentWillUnmount = () => {\n\t\t\t\t\t\tif (subs) {\n\t\t\t\t\t\t\tsubs.delete(c);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (old) old.call(c);\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn props.children;\n\t\t}\n\t};\n\n\t// Devtools needs access to the context object when it\n\t// encounters a Provider. This is necessary to support\n\t// setting `displayName` on the context object instead\n\t// of on the component itself. See:\n\t// https://reactjs.org/docs/context.html#contextdisplayname\n\n\treturn (context.Provider._contextRef = context.Consumer.contextType =\n\t\tcontext);\n}\n", "import { diff, unmount, applyRef } from './index';\nimport { createVNode, Fragment } from '../create-element';\nimport {\n\tEMPTY_OBJ,\n\tEMPTY_ARR,\n\tINSERT_VNODE,\n\tMATCHED,\n\tUNDEFINED\n} from '../constants';\nimport { isArray } from '../util';\nimport { getDomSibling } from '../component';\n\n/**\n * @typedef {import('../internal').ComponentChildren} ComponentChildren\n * @typedef {import('../internal').Component} Component\n * @typedef {import('../internal').PreactElement} PreactElement\n * @typedef {import('../internal').VNode} VNode\n */\n\n/**\n * Diff the children of a virtual node\n * @param {PreactElement} parentDom The DOM element whose children are being\n * diffed\n * @param {ComponentChildren[]} renderResult\n * @param {VNode} newParentVNode The new virtual node whose children should be\n * diff'ed against oldParentVNode\n * @param {VNode} oldParentVNode The old virtual node whose children should be\n * diff'ed against newParentVNode\n * @param {object} globalContext The current context object - modified by\n * getChildContext\n * @param {string} namespace Current namespace of the DOM node (HTML, SVG, or MathML)\n * @param {Array<PreactElement>} excessDomChildren\n * @param {Array<Component>} commitQueue List of components which have callbacks\n * to invoke in commitRoot\n * @param {PreactElement} oldDom The current attached DOM element any new dom\n * elements should be placed around. Likely `null` on first render (except when\n * hydrating). Can be a sibling DOM element when diffing Fragments that have\n * siblings. In most cases, it starts out as `oldChildren[0]._dom`.\n * @param {boolean} isHydrating Whether or not we are in hydration\n * @param {any[]} refQueue an array of elements needed to invoke refs\n */\nexport function diffChildren(\n\tparentDom,\n\trenderResult,\n\tnewParentVNode,\n\toldParentVNode,\n\tglobalContext,\n\tnamespace,\n\texcessDomChildren,\n\tcommitQueue,\n\toldDom,\n\tisHydrating,\n\trefQueue\n) {\n\tlet i,\n\t\t/** @type {VNode} */\n\t\toldVNode,\n\t\t/** @type {VNode} */\n\t\tchildVNode,\n\t\t/** @type {PreactElement} */\n\t\tnewDom,\n\t\t/** @type {PreactElement} */\n\t\tfirstChildDom;\n\n\t// This is a compression of oldParentVNode!=null && oldParentVNode != EMPTY_OBJ && oldParentVNode._children || EMPTY_ARR\n\t// as EMPTY_OBJ._children should be `undefined`.\n\t/** @type {VNode[]} */\n\tlet oldChildren = (oldParentVNode && oldParentVNode._children) || EMPTY_ARR;\n\n\tlet newChildrenLength = renderResult.length;\n\n\toldDom = constructNewChildrenArray(\n\t\tnewParentVNode,\n\t\trenderResult,\n\t\toldChildren,\n\t\toldDom,\n\t\tnewChildrenLength\n\t);\n\n\tfor (i = 0; i < newChildrenLength; i++) {\n\t\tchildVNode = newParentVNode._children[i];\n\t\tif (childVNode == null) continue;\n\n\t\t// At this point, constructNewChildrenArray has assigned _index to be the\n\t\t// matchingIndex for this VNode's oldVNode (or -1 if there is no oldVNode).\n\t\tif (childVNode._index === -1) {\n\t\t\toldVNode = EMPTY_OBJ;\n\t\t} else {\n\t\t\toldVNode = oldChildren[childVNode._index] || EMPTY_OBJ;\n\t\t}\n\n\t\t// Update childVNode._index to its final index\n\t\tchildVNode._index = i;\n\n\t\t// Morph the old element into the new one, but don't append it to the dom yet\n\t\tlet result = diff(\n\t\t\tparentDom,\n\t\t\tchildVNode,\n\t\t\toldVNode,\n\t\t\tglobalContext,\n\t\t\tnamespace,\n\t\t\texcessDomChildren,\n\t\t\tcommitQueue,\n\t\t\toldDom,\n\t\t\tisHydrating,\n\t\t\trefQueue\n\t\t);\n\n\t\t// Adjust DOM nodes\n\t\tnewDom = childVNode._dom;\n\t\tif (childVNode.ref && oldVNode.ref != childVNode.ref) {\n\t\t\tif (oldVNode.ref) {\n\t\t\t\tapplyRef(oldVNode.ref, null, childVNode);\n\t\t\t}\n\t\t\trefQueue.push(\n\t\t\t\tchildVNode.ref,\n\t\t\t\tchildVNode._component || newDom,\n\t\t\t\tchildVNode\n\t\t\t);\n\t\t}\n\n\t\tif (firstChildDom == null && newDom != null) {\n\t\t\tfirstChildDom = newDom;\n\t\t}\n\n\t\tif (\n\t\t\tchildVNode._flags & INSERT_VNODE ||\n\t\t\toldVNode._children === childVNode._children\n\t\t) {\n\t\t\toldDom = insert(childVNode, oldDom, parentDom);\n\t\t} else if (typeof childVNode.type == 'function' && result !== UNDEFINED) {\n\t\t\toldDom = result;\n\t\t} else if (newDom) {\n\t\t\toldDom = newDom.nextSibling;\n\t\t}\n\n\t\t// Unset diffing flags\n\t\tchildVNode._flags &= ~(INSERT_VNODE | MATCHED);\n\t}\n\n\tnewParentVNode._dom = firstChildDom;\n\n\treturn oldDom;\n}\n\n/**\n * @param {VNode} newParentVNode\n * @param {ComponentChildren[]} renderResult\n * @param {VNode[]} oldChildren\n */\nfunction constructNewChildrenArray(\n\tnewParentVNode,\n\trenderResult,\n\toldChildren,\n\toldDom,\n\tnewChildrenLength\n) {\n\t/** @type {number} */\n\tlet i;\n\t/** @type {VNode} */\n\tlet childVNode;\n\t/** @type {VNode} */\n\tlet oldVNode;\n\n\tlet oldChildrenLength = oldChildren.length,\n\t\tremainingOldChildren = oldChildrenLength;\n\n\tlet skew = 0;\n\n\tnewParentVNode._children = new Array(newChildrenLength);\n\tfor (i = 0; i < newChildrenLength; i++) {\n\t\t// @ts-expect-error We are reusing the childVNode variable to hold both the\n\t\t// pre and post normalized childVNode\n\t\tchildVNode = renderResult[i];\n\n\t\tif (\n\t\t\tchildVNode == null ||\n\t\t\ttypeof childVNode == 'boolean' ||\n\t\t\ttypeof childVNode == 'function'\n\t\t) {\n\t\t\tnewParentVNode._children[i] = null;\n\t\t\tcontinue;\n\t\t}\n\t\t// If this newVNode is being reused (e.g. <div>{reuse}{reuse}</div>) in the same diff,\n\t\t// or we are rendering a component (e.g. setState) copy the oldVNodes so it can have\n\t\t// it's own DOM & etc. pointers\n\t\telse if (\n\t\t\ttypeof childVNode == 'string' ||\n\t\t\ttypeof childVNode == 'number' ||\n\t\t\t// eslint-disable-next-line valid-typeof\n\t\t\ttypeof childVNode == 'bigint' ||\n\t\t\tchildVNode.constructor == String\n\t\t) {\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\n\t\t\t\tnull,\n\t\t\t\tchildVNode,\n\t\t\t\tnull,\n\t\t\t\tnull,\n\t\t\t\tnull\n\t\t\t);\n\t\t} else if (isArray(childVNode)) {\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\n\t\t\t\tFragment,\n\t\t\t\t{ children: childVNode },\n\t\t\t\tnull,\n\t\t\t\tnull,\n\t\t\t\tnull\n\t\t\t);\n\t\t} else if (childVNode.constructor === UNDEFINED && childVNode._depth > 0) {\n\t\t\t// VNode is already in use, clone it. This can happen in the following\n\t\t\t// scenario:\n\t\t\t//   const reuse = <div />\n\t\t\t//   <div>{reuse}<span />{reuse}</div>\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\n\t\t\t\tchildVNode.type,\n\t\t\t\tchildVNode.props,\n\t\t\t\tchildVNode.key,\n\t\t\t\tchildVNode.ref ? childVNode.ref : null,\n\t\t\t\tchildVNode._original\n\t\t\t);\n\t\t} else {\n\t\t\tchildVNode = newParentVNode._children[i] = childVNode;\n\t\t}\n\n\t\tconst skewedIndex = i + skew;\n\t\tchildVNode._parent = newParentVNode;\n\t\tchildVNode._depth = newParentVNode._depth + 1;\n\n\t\t// Temporarily store the matchingIndex on the _index property so we can pull\n\t\t// out the oldVNode in diffChildren. We'll override this to the VNode's\n\t\t// final index after using this property to get the oldVNode\n\t\tconst matchingIndex = (childVNode._index = findMatchingIndex(\n\t\t\tchildVNode,\n\t\t\toldChildren,\n\t\t\tskewedIndex,\n\t\t\tremainingOldChildren\n\t\t));\n\n\t\toldVNode = null;\n\t\tif (matchingIndex !== -1) {\n\t\t\toldVNode = oldChildren[matchingIndex];\n\t\t\tremainingOldChildren--;\n\t\t\tif (oldVNode) {\n\t\t\t\toldVNode._flags |= MATCHED;\n\t\t\t}\n\t\t}\n\n\t\t// Here, we define isMounting for the purposes of the skew diffing\n\t\t// algorithm. Nodes that are unsuspending are considered mounting and we detect\n\t\t// this by checking if oldVNode._original === null\n\t\tconst isMounting = oldVNode == null || oldVNode._original === null;\n\n\t\tif (isMounting) {\n\t\t\tif (matchingIndex == -1) {\n\t\t\t\tskew--;\n\t\t\t}\n\n\t\t\t// If we are mounting a DOM VNode, mark it for insertion\n\t\t\tif (typeof childVNode.type != 'function') {\n\t\t\t\tchildVNode._flags |= INSERT_VNODE;\n\t\t\t}\n\t\t} else if (matchingIndex != skewedIndex) {\n\t\t\t// When we move elements around i.e. [0, 1, 2] --> [1, 0, 2]\n\t\t\t// --> we diff 1, we find it at position 1 while our skewed index is 0 and our skew is 0\n\t\t\t//     we set the skew to 1 as we found an offset.\n\t\t\t// --> we diff 0, we find it at position 0 while our skewed index is at 2 and our skew is 1\n\t\t\t//     this makes us increase the skew again.\n\t\t\t// --> we diff 2, we find it at position 2 while our skewed index is at 4 and our skew is 2\n\t\t\t//\n\t\t\t// this becomes an optimization question where currently we see a 1 element offset as an insertion\n\t\t\t// or deletion i.e. we optimize for [0, 1, 2] --> [9, 0, 1, 2]\n\t\t\t// while a more than 1 offset we see as a swap.\n\t\t\t// We could probably build heuristics for having an optimized course of action here as well, but\n\t\t\t// might go at the cost of some bytes.\n\t\t\t//\n\t\t\t// If we wanted to optimize for i.e. only swaps we'd just do the last two code-branches and have\n\t\t\t// only the first item be a re-scouting and all the others fall in their skewed counter-part.\n\t\t\t// We could also further optimize for swaps\n\t\t\tif (matchingIndex == skewedIndex - 1) {\n\t\t\t\tskew--;\n\t\t\t} else if (matchingIndex == skewedIndex + 1) {\n\t\t\t\tskew++;\n\t\t\t} else {\n\t\t\t\tif (matchingIndex > skewedIndex) {\n\t\t\t\t\tskew--;\n\t\t\t\t} else {\n\t\t\t\t\tskew++;\n\t\t\t\t}\n\n\t\t\t\t// Move this VNode's DOM if the original index (matchingIndex) doesn't\n\t\t\t\t// match the new skew index (i + new skew)\n\t\t\t\t// In the former two branches we know that it matches after skewing\n\t\t\t\tchildVNode._flags |= INSERT_VNODE;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Remove remaining oldChildren if there are any. Loop forwards so that as we\n\t// unmount DOM from the beginning of the oldChildren, we can adjust oldDom to\n\t// point to the next child, which needs to be the first DOM node that won't be\n\t// unmounted.\n\tif (remainingOldChildren) {\n\t\tfor (i = 0; i < oldChildrenLength; i++) {\n\t\t\toldVNode = oldChildren[i];\n\t\t\tif (oldVNode != null && (oldVNode._flags & MATCHED) == 0) {\n\t\t\t\tif (oldVNode._dom == oldDom) {\n\t\t\t\t\toldDom = getDomSibling(oldVNode);\n\t\t\t\t}\n\n\t\t\t\tunmount(oldVNode, oldVNode);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn oldDom;\n}\n\n/**\n * @param {VNode} parentVNode\n * @param {PreactElement} oldDom\n * @param {PreactElement} parentDom\n * @returns {PreactElement}\n */\nfunction insert(parentVNode, oldDom, parentDom) {\n\t// Note: VNodes in nested suspended trees may be missing _children.\n\n\tif (typeof parentVNode.type == 'function') {\n\t\tlet children = parentVNode._children;\n\t\tfor (let i = 0; children && i < children.length; i++) {\n\t\t\tif (children[i]) {\n\t\t\t\t// If we enter this code path on sCU bailout, where we copy\n\t\t\t\t// oldVNode._children to newVNode._children, we need to update the old\n\t\t\t\t// children's _parent pointer to point to the newVNode (parentVNode\n\t\t\t\t// here).\n\t\t\t\tchildren[i]._parent = parentVNode;\n\t\t\t\toldDom = insert(children[i], oldDom, parentDom);\n\t\t\t}\n\t\t}\n\n\t\treturn oldDom;\n\t} else if (parentVNode._dom != oldDom) {\n\t\tif (oldDom && parentVNode.type && !parentDom.contains(oldDom)) {\n\t\t\toldDom = getDomSibling(parentVNode);\n\t\t}\n\t\tparentDom.insertBefore(parentVNode._dom, oldDom || null);\n\t\toldDom = parentVNode._dom;\n\t}\n\n\tdo {\n\t\toldDom = oldDom && oldDom.nextSibling;\n\t} while (oldDom != null && oldDom.nodeType == 8);\n\n\treturn oldDom;\n}\n\n/**\n * Flatten and loop through the children of a virtual node\n * @param {ComponentChildren} children The unflattened children of a virtual\n * node\n * @returns {VNode[]}\n */\nexport function toChildArray(children, out) {\n\tout = out || [];\n\tif (children == null || typeof children == 'boolean') {\n\t} else if (isArray(children)) {\n\t\tchildren.some(child => {\n\t\t\ttoChildArray(child, out);\n\t\t});\n\t} else {\n\t\tout.push(children);\n\t}\n\treturn out;\n}\n\n/**\n * @param {VNode} childVNode\n * @param {VNode[]} oldChildren\n * @param {number} skewedIndex\n * @param {number} remainingOldChildren\n * @returns {number}\n */\nfunction findMatchingIndex(\n\tchildVNode,\n\toldChildren,\n\tskewedIndex,\n\tremainingOldChildren\n) {\n\tconst key = childVNode.key;\n\tconst type = childVNode.type;\n\tlet oldVNode = oldChildren[skewedIndex];\n\n\t// We only need to perform a search if there are more children\n\t// (remainingOldChildren) to search. However, if the oldVNode we just looked\n\t// at skewedIndex was not already used in this diff, then there must be at\n\t// least 1 other (so greater than 1) remainingOldChildren to attempt to match\n\t// against. So the following condition checks that ensuring\n\t// remainingOldChildren > 1 if the oldVNode is not already used/matched. Else\n\t// if the oldVNode was null or matched, then there could needs to be at least\n\t// 1 (aka `remainingOldChildren > 0`) children to find and compare against.\n\t//\n\t// If there is an unkeyed functional VNode, that isn't a built-in like our Fragment,\n\t// we should not search as we risk re-using state of an unrelated VNode. (reverted for now)\n\tlet shouldSearch =\n\t\t// (typeof type != 'function' || type === Fragment || key) &&\n\t\tremainingOldChildren >\n\t\t(oldVNode != null && (oldVNode._flags & MATCHED) == 0 ? 1 : 0);\n\n\tif (\n\t\toldVNode === null ||\n\t\t(oldVNode &&\n\t\t\tkey == oldVNode.key &&\n\t\t\ttype === oldVNode.type &&\n\t\t\t(oldVNode._flags & MATCHED) == 0)\n\t) {\n\t\treturn skewedIndex;\n\t} else if (shouldSearch) {\n\t\tlet x = skewedIndex - 1;\n\t\tlet y = skewedIndex + 1;\n\t\twhile (x >= 0 || y < oldChildren.length) {\n\t\t\tif (x >= 0) {\n\t\t\t\toldVNode = oldChildren[x];\n\t\t\t\tif (\n\t\t\t\t\toldVNode &&\n\t\t\t\t\t(oldVNode._flags & MATCHED) == 0 &&\n\t\t\t\t\tkey == oldVNode.key &&\n\t\t\t\t\ttype === oldVNode.type\n\t\t\t\t) {\n\t\t\t\t\treturn x;\n\t\t\t\t}\n\t\t\t\tx--;\n\t\t\t}\n\n\t\t\tif (y < oldChildren.length) {\n\t\t\t\toldVNode = oldChildren[y];\n\t\t\t\tif (\n\t\t\t\t\toldVNode &&\n\t\t\t\t\t(oldVNode._flags & MATCHED) == 0 &&\n\t\t\t\t\tkey == oldVNode.key &&\n\t\t\t\t\ttype === oldVNode.type\n\t\t\t\t) {\n\t\t\t\t\treturn y;\n\t\t\t\t}\n\t\t\t\ty++;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn -1;\n}\n", "import {\n\tEMPTY_OBJ,\n\tMATH_NAMESPACE,\n\tMODE_HYDRATE,\n\tMODE_SUSPENDED,\n\tRESET_MODE,\n\tSVG_NAMESPACE,\n\tUNDEFINED,\n\tXHTML_NAMESPACE\n} from '../constants';\nimport { BaseComponent, getDomSibling } from '../component';\nimport { Fragment } from '../create-element';\nimport { diffChildren } from './children';\nimport { setProperty } from './props';\nimport { assign, isArray, removeNode, slice } from '../util';\nimport options from '../options';\n\n/**\n * @typedef {import('../internal').ComponentChildren} ComponentChildren\n * @typedef {import('../internal').Component} Component\n * @typedef {import('../internal').PreactElement} PreactElement\n * @typedef {import('../internal').VNode} VNode\n */\n\n/**\n * @template {any} T\n * @typedef {import('../internal').Ref<T>} Ref<T>\n */\n\n/**\n * Diff two virtual nodes and apply proper changes to the DOM\n * @param {PreactElement} parentDom The parent of the DOM element\n * @param {VNode} newVNode The new virtual node\n * @param {VNode} oldVNode The old virtual node\n * @param {object} globalContext The current context object. Modified by\n * getChildContext\n * @param {string} namespace Current namespace of the DOM node (HTML, SVG, or MathML)\n * @param {Array<PreactElement>} excessDomChildren\n * @param {Array<Component>} commitQueue List of components which have callbacks\n * to invoke in commitRoot\n * @param {PreactElement} oldDom The current attached DOM element any new dom\n * elements should be placed around. Likely `null` on first render (except when\n * hydrating). Can be a sibling DOM element when diffing Fragments that have\n * siblings. In most cases, it starts out as `oldChildren[0]._dom`.\n * @param {boolean} isHydrating Whether or not we are in hydration\n * @param {any[]} refQueue an array of elements needed to invoke refs\n */\nexport function diff(\n\tparentDom,\n\tnewVNode,\n\toldVNode,\n\tglobalContext,\n\tnamespace,\n\texcessDomChildren,\n\tcommitQueue,\n\toldDom,\n\tisHydrating,\n\trefQueue\n) {\n\t/** @type {any} */\n\tlet tmp,\n\t\tnewType = newVNode.type;\n\n\t// When passing through createElement it assigns the object\n\t// constructor as undefined. This to prevent JSON-injection.\n\tif (newVNode.constructor !== UNDEFINED) return null;\n\n\t// If the previous diff bailed out, resume creating/hydrating.\n\tif (oldVNode._flags & MODE_SUSPENDED) {\n\t\tisHydrating = !!(oldVNode._flags & MODE_HYDRATE);\n\t\toldDom = newVNode._dom = oldVNode._dom;\n\t\texcessDomChildren = [oldDom];\n\t}\n\n\tif ((tmp = options._diff)) tmp(newVNode);\n\n\touter: if (typeof newType == 'function') {\n\t\ttry {\n\t\t\tlet c, isNew, oldProps, oldState, snapshot, clearProcessingException;\n\t\t\tlet newProps = newVNode.props;\n\t\t\tconst isClassComponent =\n\t\t\t\t'prototype' in newType && newType.prototype.render;\n\n\t\t\t// Necessary for createContext api. Setting this property will pass\n\t\t\t// the context value as `this.context` just for this component.\n\t\t\ttmp = newType.contextType;\n\t\t\tlet provider = tmp && globalContext[tmp._id];\n\t\t\tlet componentContext = tmp\n\t\t\t\t? provider\n\t\t\t\t\t? provider.props.value\n\t\t\t\t\t: tmp._defaultValue\n\t\t\t\t: globalContext;\n\n\t\t\t// Get component and set it to `c`\n\t\t\tif (oldVNode._component) {\n\t\t\t\tc = newVNode._component = oldVNode._component;\n\t\t\t\tclearProcessingException = c._processingException = c._pendingError;\n\t\t\t} else {\n\t\t\t\t// Instantiate the new component\n\t\t\t\tif (isClassComponent) {\n\t\t\t\t\t// @ts-expect-error The check above verifies that newType is suppose to be constructed\n\t\t\t\t\tnewVNode._component = c = new newType(newProps, componentContext); // eslint-disable-line new-cap\n\t\t\t\t} else {\n\t\t\t\t\t// @ts-expect-error Trust me, Component implements the interface we want\n\t\t\t\t\tnewVNode._component = c = new BaseComponent(\n\t\t\t\t\t\tnewProps,\n\t\t\t\t\t\tcomponentContext\n\t\t\t\t\t);\n\t\t\t\t\tc.constructor = newType;\n\t\t\t\t\tc.render = doRender;\n\t\t\t\t}\n\t\t\t\tif (provider) provider.sub(c);\n\n\t\t\t\tc.props = newProps;\n\t\t\t\tif (!c.state) c.state = {};\n\t\t\t\tc.context = componentContext;\n\t\t\t\tc._globalContext = globalContext;\n\t\t\t\tisNew = c._dirty = true;\n\t\t\t\tc._renderCallbacks = [];\n\t\t\t\tc._stateCallbacks = [];\n\t\t\t}\n\n\t\t\t// Invoke getDerivedStateFromProps\n\t\t\tif (isClassComponent && c._nextState == null) {\n\t\t\t\tc._nextState = c.state;\n\t\t\t}\n\n\t\t\tif (isClassComponent && newType.getDerivedStateFromProps != null) {\n\t\t\t\tif (c._nextState == c.state) {\n\t\t\t\t\tc._nextState = assign({}, c._nextState);\n\t\t\t\t}\n\n\t\t\t\tassign(\n\t\t\t\t\tc._nextState,\n\t\t\t\t\tnewType.getDerivedStateFromProps(newProps, c._nextState)\n\t\t\t\t);\n\t\t\t}\n\n\t\t\toldProps = c.props;\n\t\t\toldState = c.state;\n\t\t\tc._vnode = newVNode;\n\n\t\t\t// Invoke pre-render lifecycle methods\n\t\t\tif (isNew) {\n\t\t\t\tif (\n\t\t\t\t\tisClassComponent &&\n\t\t\t\t\tnewType.getDerivedStateFromProps == null &&\n\t\t\t\t\tc.componentWillMount != null\n\t\t\t\t) {\n\t\t\t\t\tc.componentWillMount();\n\t\t\t\t}\n\n\t\t\t\tif (isClassComponent && c.componentDidMount != null) {\n\t\t\t\t\tc._renderCallbacks.push(c.componentDidMount);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (\n\t\t\t\t\tisClassComponent &&\n\t\t\t\t\tnewType.getDerivedStateFromProps == null &&\n\t\t\t\t\tnewProps !== oldProps &&\n\t\t\t\t\tc.componentWillReceiveProps != null\n\t\t\t\t) {\n\t\t\t\t\tc.componentWillReceiveProps(newProps, componentContext);\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\t!c._force &&\n\t\t\t\t\t((c.shouldComponentUpdate != null &&\n\t\t\t\t\t\tc.shouldComponentUpdate(\n\t\t\t\t\t\t\tnewProps,\n\t\t\t\t\t\t\tc._nextState,\n\t\t\t\t\t\t\tcomponentContext\n\t\t\t\t\t\t) === false) ||\n\t\t\t\t\t\tnewVNode._original == oldVNode._original)\n\t\t\t\t) {\n\t\t\t\t\t// More info about this here: https://gist.github.com/JoviDeCroock/bec5f2ce93544d2e6070ef8e0036e4e8\n\t\t\t\t\tif (newVNode._original != oldVNode._original) {\n\t\t\t\t\t\t// When we are dealing with a bail because of sCU we have to update\n\t\t\t\t\t\t// the props, state and dirty-state.\n\t\t\t\t\t\t// when we are dealing with strict-equality we don't as the child could still\n\t\t\t\t\t\t// be dirtied see #3883\n\t\t\t\t\t\tc.props = newProps;\n\t\t\t\t\t\tc.state = c._nextState;\n\t\t\t\t\t\tc._dirty = false;\n\t\t\t\t\t}\n\n\t\t\t\t\tnewVNode._dom = oldVNode._dom;\n\t\t\t\t\tnewVNode._children = oldVNode._children;\n\t\t\t\t\tnewVNode._children.some(vnode => {\n\t\t\t\t\t\tif (vnode) vnode._parent = newVNode;\n\t\t\t\t\t});\n\n\t\t\t\t\tfor (let i = 0; i < c._stateCallbacks.length; i++) {\n\t\t\t\t\t\tc._renderCallbacks.push(c._stateCallbacks[i]);\n\t\t\t\t\t}\n\t\t\t\t\tc._stateCallbacks = [];\n\n\t\t\t\t\tif (c._renderCallbacks.length) {\n\t\t\t\t\t\tcommitQueue.push(c);\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\n\t\t\t\tif (c.componentWillUpdate != null) {\n\t\t\t\t\tc.componentWillUpdate(newProps, c._nextState, componentContext);\n\t\t\t\t}\n\n\t\t\t\tif (isClassComponent && c.componentDidUpdate != null) {\n\t\t\t\t\tc._renderCallbacks.push(() => {\n\t\t\t\t\t\tc.componentDidUpdate(oldProps, oldState, snapshot);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tc.context = componentContext;\n\t\t\tc.props = newProps;\n\t\t\tc._parentDom = parentDom;\n\t\t\tc._force = false;\n\n\t\t\tlet renderHook = options._render,\n\t\t\t\tcount = 0;\n\t\t\tif (isClassComponent) {\n\t\t\t\tc.state = c._nextState;\n\t\t\t\tc._dirty = false;\n\n\t\t\t\tif (renderHook) renderHook(newVNode);\n\n\t\t\t\ttmp = c.render(c.props, c.state, c.context);\n\n\t\t\t\tfor (let i = 0; i < c._stateCallbacks.length; i++) {\n\t\t\t\t\tc._renderCallbacks.push(c._stateCallbacks[i]);\n\t\t\t\t}\n\t\t\t\tc._stateCallbacks = [];\n\t\t\t} else {\n\t\t\t\tdo {\n\t\t\t\t\tc._dirty = false;\n\t\t\t\t\tif (renderHook) renderHook(newVNode);\n\n\t\t\t\t\ttmp = c.render(c.props, c.state, c.context);\n\n\t\t\t\t\t// Handle setState called in render, see #2553\n\t\t\t\t\tc.state = c._nextState;\n\t\t\t\t} while (c._dirty && ++count < 25);\n\t\t\t}\n\n\t\t\t// Handle setState called in render, see #2553\n\t\t\tc.state = c._nextState;\n\n\t\t\tif (c.getChildContext != null) {\n\t\t\t\tglobalContext = assign(assign({}, globalContext), c.getChildContext());\n\t\t\t}\n\n\t\t\tif (isClassComponent && !isNew && c.getSnapshotBeforeUpdate != null) {\n\t\t\t\tsnapshot = c.getSnapshotBeforeUpdate(oldProps, oldState);\n\t\t\t}\n\n\t\t\tlet isTopLevelFragment =\n\t\t\t\ttmp != null && tmp.type === Fragment && tmp.key == null;\n\t\t\tlet renderResult = isTopLevelFragment ? tmp.props.children : tmp;\n\n\t\t\toldDom = diffChildren(\n\t\t\t\tparentDom,\n\t\t\t\tisArray(renderResult) ? renderResult : [renderResult],\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tnamespace,\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\toldDom,\n\t\t\t\tisHydrating,\n\t\t\t\trefQueue\n\t\t\t);\n\n\t\t\tc.base = newVNode._dom;\n\n\t\t\t// We successfully rendered this VNode, unset any stored hydration/bailout state:\n\t\t\tnewVNode._flags &= RESET_MODE;\n\n\t\t\tif (c._renderCallbacks.length) {\n\t\t\t\tcommitQueue.push(c);\n\t\t\t}\n\n\t\t\tif (clearProcessingException) {\n\t\t\t\tc._pendingError = c._processingException = null;\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tnewVNode._original = null;\n\t\t\t// if hydrating or creating initial tree, bailout preserves DOM:\n\t\t\tif (isHydrating || excessDomChildren != null) {\n\t\t\t\tif (e.then) {\n\t\t\t\t\tnewVNode._flags |= isHydrating\n\t\t\t\t\t\t? MODE_HYDRATE | MODE_SUSPENDED\n\t\t\t\t\t\t: MODE_SUSPENDED;\n\n\t\t\t\t\twhile (oldDom && oldDom.nodeType == 8 && oldDom.nextSibling) {\n\t\t\t\t\t\toldDom = oldDom.nextSibling;\n\t\t\t\t\t}\n\n\t\t\t\t\texcessDomChildren[excessDomChildren.indexOf(oldDom)] = null;\n\t\t\t\t\tnewVNode._dom = oldDom;\n\t\t\t\t} else {\n\t\t\t\t\tfor (let i = excessDomChildren.length; i--; ) {\n\t\t\t\t\t\tremoveNode(excessDomChildren[i]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tnewVNode._dom = oldVNode._dom;\n\t\t\t\tnewVNode._children = oldVNode._children;\n\t\t\t}\n\t\t\toptions._catchError(e, newVNode, oldVNode);\n\t\t}\n\t} else if (\n\t\texcessDomChildren == null &&\n\t\tnewVNode._original == oldVNode._original\n\t) {\n\t\tnewVNode._children = oldVNode._children;\n\t\tnewVNode._dom = oldVNode._dom;\n\t} else {\n\t\toldDom = newVNode._dom = diffElementNodes(\n\t\t\toldVNode._dom,\n\t\t\tnewVNode,\n\t\t\toldVNode,\n\t\t\tglobalContext,\n\t\t\tnamespace,\n\t\t\texcessDomChildren,\n\t\t\tcommitQueue,\n\t\t\tisHydrating,\n\t\t\trefQueue\n\t\t);\n\t}\n\n\tif ((tmp = options.diffed)) tmp(newVNode);\n\n\treturn newVNode._flags & MODE_SUSPENDED ? undefined : oldDom;\n}\n\n/**\n * @param {Array<Component>} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {VNode} root\n */\nexport function commitRoot(commitQueue, root, refQueue) {\n\tfor (let i = 0; i < refQueue.length; i++) {\n\t\tapplyRef(refQueue[i], refQueue[++i], refQueue[++i]);\n\t}\n\n\tif (options._commit) options._commit(root, commitQueue);\n\n\tcommitQueue.some(c => {\n\t\ttry {\n\t\t\t// @ts-expect-error Reuse the commitQueue variable here so the type changes\n\t\t\tcommitQueue = c._renderCallbacks;\n\t\t\tc._renderCallbacks = [];\n\t\t\tcommitQueue.some(cb => {\n\t\t\t\t// @ts-expect-error See above comment on commitQueue\n\t\t\t\tcb.call(c);\n\t\t\t});\n\t\t} catch (e) {\n\t\t\toptions._catchError(e, c._vnode);\n\t\t}\n\t});\n}\n\n/**\n * Diff two virtual nodes representing DOM element\n * @param {PreactElement} dom The DOM element representing the virtual nodes\n * being diffed\n * @param {VNode} newVNode The new virtual node\n * @param {VNode} oldVNode The old virtual node\n * @param {object} globalContext The current context object\n * @param {string} namespace Current namespace of the DOM node (HTML, SVG, or MathML)\n * @param {Array<PreactElement>} excessDomChildren\n * @param {Array<Component>} commitQueue List of components which have callbacks\n * to invoke in commitRoot\n * @param {boolean} isHydrating Whether or not we are in hydration\n * @param {any[]} refQueue an array of elements needed to invoke refs\n * @returns {PreactElement}\n */\nfunction diffElementNodes(\n\tdom,\n\tnewVNode,\n\toldVNode,\n\tglobalContext,\n\tnamespace,\n\texcessDomChildren,\n\tcommitQueue,\n\tisHydrating,\n\trefQueue\n) {\n\tlet oldProps = oldVNode.props;\n\tlet newProps = newVNode.props;\n\tlet nodeType = /** @type {string} */ (newVNode.type);\n\t/** @type {any} */\n\tlet i;\n\t/** @type {{ __html?: string }} */\n\tlet newHtml;\n\t/** @type {{ __html?: string }} */\n\tlet oldHtml;\n\t/** @type {ComponentChildren} */\n\tlet newChildren;\n\tlet value;\n\tlet inputValue;\n\tlet checked;\n\n\t// Tracks entering and exiting namespaces when descending through the tree.\n\tif (nodeType == 'svg') namespace = SVG_NAMESPACE;\n\telse if (nodeType == 'math') namespace = MATH_NAMESPACE;\n\telse if (!namespace) namespace = XHTML_NAMESPACE;\n\n\tif (excessDomChildren != null) {\n\t\tfor (i = 0; i < excessDomChildren.length; i++) {\n\t\t\tvalue = excessDomChildren[i];\n\n\t\t\t// if newVNode matches an element in excessDomChildren or the `dom`\n\t\t\t// argument matches an element in excessDomChildren, remove it from\n\t\t\t// excessDomChildren so it isn't later removed in diffChildren\n\t\t\tif (\n\t\t\t\tvalue &&\n\t\t\t\t'setAttribute' in value == !!nodeType &&\n\t\t\t\t(nodeType ? value.localName == nodeType : value.nodeType == 3)\n\t\t\t) {\n\t\t\t\tdom = value;\n\t\t\t\texcessDomChildren[i] = null;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (dom == null) {\n\t\tif (nodeType == null) {\n\t\t\treturn document.createTextNode(newProps);\n\t\t}\n\n\t\tdom = document.createElementNS(\n\t\t\tnamespace,\n\t\t\tnodeType,\n\t\t\tnewProps.is && newProps\n\t\t);\n\n\t\t// we are creating a new node, so we can assume this is a new subtree (in\n\t\t// case we are hydrating), this deopts the hydrate\n\t\tif (isHydrating) {\n\t\t\tif (options._hydrationMismatch)\n\t\t\t\toptions._hydrationMismatch(newVNode, excessDomChildren);\n\t\t\tisHydrating = false;\n\t\t}\n\t\t// we created a new parent, so none of the previously attached children can be reused:\n\t\texcessDomChildren = null;\n\t}\n\n\tif (nodeType === null) {\n\t\t// During hydration, we still have to split merged text from SSR'd HTML.\n\t\tif (oldProps !== newProps && (!isHydrating || dom.data !== newProps)) {\n\t\t\tdom.data = newProps;\n\t\t}\n\t} else {\n\t\t// If excessDomChildren was not null, repopulate it with the current element's children:\n\t\texcessDomChildren = excessDomChildren && slice.call(dom.childNodes);\n\n\t\toldProps = oldVNode.props || EMPTY_OBJ;\n\n\t\t// If we are in a situation where we are not hydrating but are using\n\t\t// existing DOM (e.g. replaceNode) we should read the existing DOM\n\t\t// attributes to diff them\n\t\tif (!isHydrating && excessDomChildren != null) {\n\t\t\toldProps = {};\n\t\t\tfor (i = 0; i < dom.attributes.length; i++) {\n\t\t\t\tvalue = dom.attributes[i];\n\t\t\t\toldProps[value.name] = value.value;\n\t\t\t}\n\t\t}\n\n\t\tfor (i in oldProps) {\n\t\t\tvalue = oldProps[i];\n\t\t\tif (i == 'children') {\n\t\t\t} else if (i == 'dangerouslySetInnerHTML') {\n\t\t\t\toldHtml = value;\n\t\t\t} else if (!(i in newProps)) {\n\t\t\t\tif (\n\t\t\t\t\t(i == 'value' && 'defaultValue' in newProps) ||\n\t\t\t\t\t(i == 'checked' && 'defaultChecked' in newProps)\n\t\t\t\t) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tsetProperty(dom, i, null, value, namespace);\n\t\t\t}\n\t\t}\n\n\t\t// During hydration, props are not diffed at all (including dangerouslySetInnerHTML)\n\t\t// @TODO we should warn in debug mode when props don't match here.\n\t\tfor (i in newProps) {\n\t\t\tvalue = newProps[i];\n\t\t\tif (i == 'children') {\n\t\t\t\tnewChildren = value;\n\t\t\t} else if (i == 'dangerouslySetInnerHTML') {\n\t\t\t\tnewHtml = value;\n\t\t\t} else if (i == 'value') {\n\t\t\t\tinputValue = value;\n\t\t\t} else if (i == 'checked') {\n\t\t\t\tchecked = value;\n\t\t\t} else if (\n\t\t\t\t(!isHydrating || typeof value == 'function') &&\n\t\t\t\toldProps[i] !== value\n\t\t\t) {\n\t\t\t\tsetProperty(dom, i, value, oldProps[i], namespace);\n\t\t\t}\n\t\t}\n\n\t\t// If the new vnode didn't have dangerouslySetInnerHTML, diff its children\n\t\tif (newHtml) {\n\t\t\t// Avoid re-applying the same '__html' if it did not changed between re-render\n\t\t\tif (\n\t\t\t\t!isHydrating &&\n\t\t\t\t(!oldHtml ||\n\t\t\t\t\t(newHtml.__html !== oldHtml.__html &&\n\t\t\t\t\t\tnewHtml.__html !== dom.innerHTML))\n\t\t\t) {\n\t\t\t\tdom.innerHTML = newHtml.__html;\n\t\t\t}\n\n\t\t\tnewVNode._children = [];\n\t\t} else {\n\t\t\tif (oldHtml) dom.innerHTML = '';\n\n\t\t\tdiffChildren(\n\t\t\t\tdom,\n\t\t\t\tisArray(newChildren) ? newChildren : [newChildren],\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tnodeType == 'foreignObject' ? XHTML_NAMESPACE : namespace,\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\texcessDomChildren\n\t\t\t\t\t? excessDomChildren[0]\n\t\t\t\t\t: oldVNode._children && getDomSibling(oldVNode, 0),\n\t\t\t\tisHydrating,\n\t\t\t\trefQueue\n\t\t\t);\n\n\t\t\t// Remove children that are not part of any vnode.\n\t\t\tif (excessDomChildren != null) {\n\t\t\t\tfor (i = excessDomChildren.length; i--; ) {\n\t\t\t\t\tremoveNode(excessDomChildren[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// As above, don't diff props during hydration\n\t\tif (!isHydrating) {\n\t\t\ti = 'value';\n\t\t\tif (nodeType == 'progress' && inputValue == null) {\n\t\t\t\tdom.removeAttribute('value');\n\t\t\t} else if (\n\t\t\t\tinputValue !== UNDEFINED &&\n\t\t\t\t// #2756 For the <progress>-element the initial value is 0,\n\t\t\t\t// despite the attribute not being present. When the attribute\n\t\t\t\t// is missing the progress bar is treated as indeterminate.\n\t\t\t\t// To fix that we'll always update it when it is 0 for progress elements\n\t\t\t\t(inputValue !== dom[i] ||\n\t\t\t\t\t(nodeType == 'progress' && !inputValue) ||\n\t\t\t\t\t// This is only for IE 11 to fix <select> value not being updated.\n\t\t\t\t\t// To avoid a stale select value we need to set the option.value\n\t\t\t\t\t// again, which triggers IE11 to re-evaluate the select value\n\t\t\t\t\t(nodeType == 'option' && inputValue !== oldProps[i]))\n\t\t\t) {\n\t\t\t\tsetProperty(dom, i, inputValue, oldProps[i], namespace);\n\t\t\t}\n\n\t\t\ti = 'checked';\n\t\t\tif (checked !== UNDEFINED && checked !== dom[i]) {\n\t\t\t\tsetProperty(dom, i, checked, oldProps[i], namespace);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn dom;\n}\n\n/**\n * Invoke or update a ref, depending on whether it is a function or object ref.\n * @param {Ref<any> & { _unmount?: unknown }} ref\n * @param {any} value\n * @param {VNode} vnode\n */\nexport function applyRef(ref, value, vnode) {\n\ttry {\n\t\tif (typeof ref == 'function') {\n\t\t\tlet hasRefUnmount = typeof ref._unmount == 'function';\n\t\t\tif (hasRefUnmount) {\n\t\t\t\t// @ts-ignore TS doesn't like moving narrowing checks into variables\n\t\t\t\tref._unmount();\n\t\t\t}\n\n\t\t\tif (!hasRefUnmount || value != null) {\n\t\t\t\t// Store the cleanup function on the function\n\t\t\t\t// instance object itself to avoid shape\n\t\t\t\t// transitioning vnode\n\t\t\t\tref._unmount = ref(value);\n\t\t\t}\n\t\t} else ref.current = value;\n\t} catch (e) {\n\t\toptions._catchError(e, vnode);\n\t}\n}\n\n/**\n * Unmount a virtual node from the tree and apply DOM changes\n * @param {VNode} vnode The virtual node to unmount\n * @param {VNode} parentVNode The parent of the VNode that initiated the unmount\n * @param {boolean} [skipRemove] Flag that indicates that a parent node of the\n * current element is already detached from the DOM.\n */\nexport function unmount(vnode, parentVNode, skipRemove) {\n\tlet r;\n\tif (options.unmount) options.unmount(vnode);\n\n\tif ((r = vnode.ref)) {\n\t\tif (!r.current || r.current === vnode._dom) {\n\t\t\tapplyRef(r, null, parentVNode);\n\t\t}\n\t}\n\n\tif ((r = vnode._component) != null) {\n\t\tif (r.componentWillUnmount) {\n\t\t\ttry {\n\t\t\t\tr.componentWillUnmount();\n\t\t\t} catch (e) {\n\t\t\t\toptions._catchError(e, parentVNode);\n\t\t\t}\n\t\t}\n\n\t\tr.base = r._parentDom = null;\n\t}\n\n\tif ((r = vnode._children)) {\n\t\tfor (let i = 0; i < r.length; i++) {\n\t\t\tif (r[i]) {\n\t\t\t\tunmount(\n\t\t\t\t\tr[i],\n\t\t\t\t\tparentVNode,\n\t\t\t\t\tskipRemove || typeof vnode.type != 'function'\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif (!skipRemove) {\n\t\tremoveNode(vnode._dom);\n\t}\n\n\tvnode._component = vnode._parent = vnode._dom = UNDEFINED;\n}\n\n/** The `.render()` method for a PFC backing instance. */\nfunction doRender(props, state, context) {\n\treturn this.constructor(props, context);\n}\n", "import { EMPTY_OBJ } from './constants';\nimport { commitRoot, diff } from './diff/index';\nimport { createElement, Fragment } from './create-element';\nimport options from './options';\nimport { slice } from './util';\n\n/**\n * Render a Preact virtual node into a DOM element\n * @param {import('./internal').ComponentChild} vnode The virtual node to render\n * @param {import('./internal').PreactElement} parentDom The DOM element to render into\n * @param {import('./internal').PreactElement | object} [replaceNode] Optional: Attempt to re-use an\n * existing DOM tree rooted at `replaceNode`\n */\nexport function render(vnode, parentDom, replaceNode) {\n\t// https://github.com/preactjs/preact/issues/3794\n\tif (parentDom == document) {\n\t\tparentDom = document.documentElement;\n\t}\n\n\tif (options._root) options._root(vnode, parentDom);\n\n\t// We abuse the `replaceNode` parameter in `hydrate()` to signal if we are in\n\t// hydration mode or not by passing the `hydrate` function instead of a DOM\n\t// element..\n\tlet isHydrating = typeof replaceNode == 'function';\n\n\t// To be able to support calling `render()` multiple times on the same\n\t// DOM node, we need to obtain a reference to the previous tree. We do\n\t// this by assigning a new `_children` property to DOM nodes which points\n\t// to the last rendered tree. By default this property is not present, which\n\t// means that we are mounting a new tree for the first time.\n\tlet oldVNode = isHydrating\n\t\t? null\n\t\t: (replaceNode && replaceNode._children) || parentDom._children;\n\n\tvnode = ((!isHydrating && replaceNode) || parentDom)._children =\n\t\tcreateElement(Fragment, null, [vnode]);\n\n\t// List of effects that need to be called after diffing.\n\tlet commitQueue = [],\n\t\trefQueue = [];\n\tdiff(\n\t\tparentDom,\n\t\t// Determine the new vnode tree and store it on the DOM element on\n\t\t// our custom `_children` property.\n\t\tvnode,\n\t\toldVNode || EMPTY_OBJ,\n\t\tEMPTY_OBJ,\n\t\tparentDom.namespaceURI,\n\t\t!isHydrating && replaceNode\n\t\t\t? [replaceNode]\n\t\t\t: oldVNode\n\t\t\t\t? null\n\t\t\t\t: parentDom.firstChild\n\t\t\t\t\t? slice.call(parentDom.childNodes)\n\t\t\t\t\t: null,\n\t\tcommitQueue,\n\t\t!isHydrating && replaceNode\n\t\t\t? replaceNode\n\t\t\t: oldVNode\n\t\t\t\t? oldVNode._dom\n\t\t\t\t: parentDom.firstChild,\n\t\tisHydrating,\n\t\trefQueue\n\t);\n\n\t// Flush all queued effects\n\tcommitRoot(commitQueue, vnode, refQueue);\n}\n\n/**\n * Update an existing DOM element with data from a Preact virtual node\n * @param {import('./internal').ComponentChild} vnode The virtual node to render\n * @param {import('./internal').PreactElement} parentDom The DOM element to update\n */\nexport function hydrate(vnode, parentDom) {\n\trender(vnode, parentDom, hydrate);\n}\n", "import { assign, slice } from './util';\nimport { createVNode } from './create-element';\nimport { UNDEFINED } from './constants';\n\n/**\n * Clones the given VNode, optionally adding attributes/props and replacing its\n * children.\n * @param {import('./internal').VNode} vnode The virtual DOM element to clone\n * @param {object} props Attributes/props to add when cloning\n * @param {Array<import('./internal').ComponentChildren>} rest Any additional arguments will be used\n * as replacement children.\n * @returns {import('./internal').VNode}\n */\nexport function cloneElement(vnode, props, children) {\n\tlet normalizedProps = assign({}, vnode.props),\n\t\tkey,\n\t\tref,\n\t\ti;\n\n\tlet defaultProps;\n\n\tif (vnode.type && vnode.type.defaultProps) {\n\t\tdefaultProps = vnode.type.defaultProps;\n\t}\n\n\tfor (i in props) {\n\t\tif (i == 'key') key = props[i];\n\t\telse if (i == 'ref') ref = props[i];\n\t\telse if (props[i] === UNDEFINED && defaultProps !== UNDEFINED) {\n\t\t\tnormalizedProps[i] = defaultProps[i];\n\t\t} else {\n\t\t\tnormalizedProps[i] = props[i];\n\t\t}\n\t}\n\n\tif (arguments.length > 2) {\n\t\tnormalizedProps.children =\n\t\t\targuments.length > 3 ? slice.call(arguments, 2) : children;\n\t}\n\n\treturn createVNode(\n\t\tvnode.type,\n\t\tnormalizedProps,\n\t\tkey || vnode.key,\n\t\tref || vnode.ref,\n\t\tnull\n\t);\n}\n", "/**\n * Find the closest error boundary to a thrown error and call it\n * @param {object} error The thrown value\n * @param {import('../internal').VNode} vnode The vnode that threw the error that was caught (except\n * for unmounting when this parameter is the highest parent that was being\n * unmounted)\n * @param {import('../internal').VNode} [oldVNode]\n * @param {import('../internal').ErrorInfo} [errorInfo]\n */\nexport function _catchError(error, vnode, oldVNode, errorInfo) {\n\t/** @type {import('../internal').Component} */\n\tlet component,\n\t\t/** @type {import('../internal').ComponentType} */\n\t\tctor,\n\t\t/** @type {boolean} */\n\t\thandled;\n\n\tfor (; (vnode = vnode._parent); ) {\n\t\tif ((component = vnode._component) && !component._processingException) {\n\t\t\ttry {\n\t\t\t\tctor = component.constructor;\n\n\t\t\t\tif (ctor && ctor.getDerivedStateFromError != null) {\n\t\t\t\t\tcomponent.setState(ctor.getDerivedStateFromError(error));\n\t\t\t\t\thandled = component._dirty;\n\t\t\t\t}\n\n\t\t\t\tif (component.componentDidCatch != null) {\n\t\t\t\t\tcomponent.componentDidCatch(error, errorInfo || {});\n\t\t\t\t\thandled = component._dirty;\n\t\t\t\t}\n\n\t\t\t\t// This is an error boundary. Mark it as having bailed out, and whether it was mid-hydration.\n\t\t\t\tif (handled) {\n\t\t\t\t\treturn (component._pendingError = component);\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\terror = e;\n\t\t\t}\n\t\t}\n\t}\n\n\tthrow error;\n}\n", "\"use strict\";\n\nfunction isDOMElement(obj) {\n  return (obj == null ? void 0 : obj.nodeType) === Node.ELEMENT_NODE;\n}\n\n/**\n * Check if an object is a DOM element. Duck-typing based on `nodeType`.\n *\n * @param {*} obj\n */\nmodule.exports = isDOMElement;", "\"use strict\";\n\nconst isDOMElement = require(\"./isDOMElement.js\");\n/**\n * Find a DOM element.\n *\n * @param {Node|string} element\n * @returns {Node|null}\n */\n\n\nfunction findDOMElement(element, context) {\n  if (context === void 0) {\n    context = document;\n  }\n\n  if (typeof element === 'string') {\n    return context.querySelector(element);\n  }\n\n  if (isDOMElement(element)) {\n    return element;\n  }\n\n  return null;\n}\n\nmodule.exports = findDOMElement;", "\"use strict\";\n\n/**\n * Get the declared text direction for an element.\n *\n * @param {Node} element\n * @returns {string|undefined}\n */\nfunction getTextDirection(element) {\n  var _element;\n\n  // There is another way to determine text direction using getComputedStyle(), as done here:\n  // https://github.com/pencil-js/text-direction/blob/2a235ce95089b3185acec3b51313cbba921b3811/text-direction.js\n  //\n  // We do not use that approach because we are interested specifically in the _declared_ text direction.\n  // If no text direction is declared, we have to provide our own explicit text direction so our\n  // bidirectional CSS style sheets work.\n  while (element && !element.dir) {\n    // eslint-disable-next-line no-param-reassign\n    element = element.parentNode;\n  }\n\n  return (_element = element) == null ? void 0 : _element.dir;\n}\n\nmodule.exports = getTextDirection;", "\"use strict\";\n\n/**\n * Core plugin logic that all plugins share.\n *\n * BasePlugin does not contain DOM rendering so it can be used for plugins\n * without a user interface.\n *\n * See `Plugin` for the extended version with Preact rendering for interfaces.\n */\nconst Translator = require(\"@uppy/utils/lib/Translator\");\n\nclass BasePlugin {\n  constructor(uppy, opts) {\n    if (opts === void 0) {\n      opts = {};\n    }\n\n    this.uppy = uppy;\n    this.opts = opts;\n  }\n\n  getPluginState() {\n    const {\n      plugins\n    } = this.uppy.getState();\n    return plugins[this.id] || {};\n  }\n\n  setPluginState(update) {\n    const {\n      plugins\n    } = this.uppy.getState();\n    this.uppy.setState({\n      plugins: { ...plugins,\n        [this.id]: { ...plugins[this.id],\n          ...update\n        }\n      }\n    });\n  }\n\n  setOptions(newOpts) {\n    this.opts = { ...this.opts,\n      ...newOpts\n    };\n    this.setPluginState(); // so that UI re-renders with new options\n\n    this.i18nInit();\n  }\n\n  i18nInit() {\n    const translator = new Translator([this.defaultLocale, this.uppy.locale, this.opts.locale]);\n    this.i18n = translator.translate.bind(translator);\n    this.i18nArray = translator.translateArray.bind(translator);\n    this.setPluginState(); // so that UI re-renders and we see the updated locale\n  }\n  /**\n   * Extendable methods\n   * ==================\n   * These methods are here to serve as an overview of the extendable methods as well as\n   * making them not conditional in use, such as `if (this.afterUpdate)`.\n   */\n  // eslint-disable-next-line class-methods-use-this\n\n\n  addTarget() {\n    throw new Error('Extend the addTarget method to add your plugin to another plugin\\'s target');\n  } // eslint-disable-next-line class-methods-use-this\n\n\n  install() {} // eslint-disable-next-line class-methods-use-this\n\n\n  uninstall() {}\n  /**\n   * Called when plugin is mounted, whether in DOM or into another plugin.\n   * Needed because sometimes plugins are mounted separately/after `install`,\n   * so this.el and this.parent might not be available in `install`.\n   * This is the case with @uppy/react plugins, for example.\n   */\n\n\n  render() {\n    throw new Error('Extend the render method to add your plugin to a DOM element');\n  } // TODO: remove in the next major version. It's not feasible to\n  // try to use plugins with other frameworks.\n  // eslint-disable-next-line class-methods-use-this\n\n\n  update() {} // Called after every state update, after everything's mounted. Debounced.\n  // eslint-disable-next-line class-methods-use-this\n\n\n  afterUpdate() {}\n\n}\n\nmodule.exports = BasePlugin;", "\"use strict\";\n\nvar _preact = require(\"preact\");\n\nfunction _classPrivateFieldLooseBase(receiver, privateKey) { if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) { throw new TypeError(\"attempted to use private field on non-instance\"); } return receiver; }\n\nvar id = 0;\n\nfunction _classPrivateFieldLooseKey(name) { return \"__private_\" + id++ + \"_\" + name; }\n\nconst findDOMElement = require(\"@uppy/utils/lib/findDOMElement\");\n\nconst getTextDirection = require(\"@uppy/utils/lib/getTextDirection\");\n\nconst BasePlugin = require(\"./BasePlugin.js\");\n/**\n * Defer a frequent call to the microtask queue.\n *\n * @param {() => T} fn\n * @returns {Promise<T>}\n */\n\n\nfunction debounce(fn) {\n  let calling = null;\n  let latestArgs = null;\n  return function () {\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    latestArgs = args;\n\n    if (!calling) {\n      calling = Promise.resolve().then(() => {\n        calling = null; // At this point `args` may be different from the most\n        // recent state, if multiple calls happened since this task\n        // was queued. So we use the `latestArgs`, which definitely\n        // is the most recent call.\n\n        return fn(...latestArgs);\n      });\n    }\n\n    return calling;\n  };\n}\n/**\n * UIPlugin is the extended version of BasePlugin to incorporate rendering with Preact.\n * Use this for plugins that need a user interface.\n *\n * For plugins without an user interface, see BasePlugin.\n */\n\n\nvar _updateUI = /*#__PURE__*/_classPrivateFieldLooseKey(\"updateUI\");\n\nclass UIPlugin extends BasePlugin {\n  constructor() {\n    super(...arguments);\n    Object.defineProperty(this, _updateUI, {\n      writable: true,\n      value: void 0\n    });\n  }\n\n  /**\n   * Check if supplied `target` is a DOM element or an `object`.\n   * If it\u2019s an object \u2014 target is a plugin, and we search `plugins`\n   * for a plugin with same name and return its target.\n   */\n  mount(target, plugin) {\n    const callerPluginName = plugin.id;\n    const targetElement = findDOMElement(target);\n\n    if (targetElement) {\n      this.isTargetDOMEl = true; // When target is <body> with a single <div> element,\n      // Preact thinks it\u2019s the Uppy root element in there when doing a diff,\n      // and destroys it. So we are creating a fragment (could be empty div)\n\n      const uppyRootElement = document.createElement('div');\n      uppyRootElement.classList.add('uppy-Root'); // API for plugins that require a synchronous rerender.\n\n      _classPrivateFieldLooseBase(this, _updateUI)[_updateUI] = debounce(state => {\n        // plugin could be removed, but this.rerender is debounced below,\n        // so it could still be called even after uppy.removePlugin or uppy.close\n        // hence the check\n        if (!this.uppy.getPlugin(this.id)) return;\n        (0, _preact.render)(this.render(state), uppyRootElement);\n        this.afterUpdate();\n      });\n      this.uppy.log(`Installing ${callerPluginName} to a DOM element '${target}'`);\n\n      if (this.opts.replaceTargetContent) {\n        // Doing render(h(null), targetElement), which should have been\n        // a better way, since because the component might need to do additional cleanup when it is removed,\n        // stopped working \u2014 Preact just adds null into target, not replacing\n        targetElement.innerHTML = '';\n      }\n\n      (0, _preact.render)(this.render(this.uppy.getState()), uppyRootElement);\n      this.el = uppyRootElement;\n      targetElement.appendChild(uppyRootElement); // Set the text direction if the page has not defined one.\n\n      uppyRootElement.dir = this.opts.direction || getTextDirection(uppyRootElement) || 'ltr';\n      this.onMount();\n      return this.el;\n    }\n\n    let targetPlugin;\n\n    if (typeof target === 'object' && target instanceof UIPlugin) {\n      // Targeting a plugin *instance*\n      targetPlugin = target;\n    } else if (typeof target === 'function') {\n      // Targeting a plugin type\n      const Target = target; // Find the target plugin instance.\n\n      this.uppy.iteratePlugins(p => {\n        if (p instanceof Target) {\n          targetPlugin = p;\n        }\n      });\n    }\n\n    if (targetPlugin) {\n      this.uppy.log(`Installing ${callerPluginName} to ${targetPlugin.id}`);\n      this.parent = targetPlugin;\n      this.el = targetPlugin.addTarget(plugin);\n      this.onMount();\n      return this.el;\n    }\n\n    this.uppy.log(`Not installing ${callerPluginName}`);\n    let message = `Invalid target option given to ${callerPluginName}.`;\n\n    if (typeof target === 'function') {\n      message += ' The given target is not a Plugin class. ' + 'Please check that you\\'re not specifying a React Component instead of a plugin. ' + 'If you are using @uppy/* packages directly, make sure you have only 1 version of @uppy/core installed: ' + 'run `npm ls @uppy/core` on the command line and verify that all the versions match and are deduped correctly.';\n    } else {\n      message += 'If you meant to target an HTML element, please make sure that the element exists. ' + 'Check that the <script> tag initializing Uppy is right before the closing </body> tag at the end of the page. ' + '(see https://github.com/transloadit/uppy/issues/1042)\\n\\n' + 'If you meant to target a plugin, please confirm that your `import` statements or `require` calls are correct.';\n    }\n\n    throw new Error(message);\n  }\n\n  update(state) {\n    if (this.el != null) {\n      var _classPrivateFieldLoo, _classPrivateFieldLoo2;\n\n      (_classPrivateFieldLoo = (_classPrivateFieldLoo2 = _classPrivateFieldLooseBase(this, _updateUI))[_updateUI]) == null ? void 0 : _classPrivateFieldLoo.call(_classPrivateFieldLoo2, state);\n    }\n  }\n\n  unmount() {\n    if (this.isTargetDOMEl) {\n      var _this$el;\n\n      (_this$el = this.el) == null ? void 0 : _this$el.remove();\n    }\n\n    this.onUnmount();\n  } // eslint-disable-next-line class-methods-use-this\n\n\n  onMount() {} // eslint-disable-next-line class-methods-use-this\n\n\n  onUnmount() {}\n\n}\n\nmodule.exports = UIPlugin;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.Uppy = exports.UIPlugin = exports.BasePlugin = void 0;\nObject.defineProperty(exports, \"debugLogger\", {\n  enumerable: true,\n  get: function () {\n    return _loggers.debugLogger;\n  }\n});\n\nvar _loggers = require(\"./loggers.js\");\n\nmodule.exports = require('./Uppy.js');\n\nconst _0 = require(\"./UIPlugin.js\");\n\nexports.UIPlugin = _0;\n\nconst _1 = require(\"./BasePlugin.js\");\n\nexports.BasePlugin = _1;\n\n// TODO: remove all the following in the next major\n\n/* eslint-disable import/first */\nconst Uppy = require(\"./Uppy.js\");\n\nexports.Uppy = Uppy;\n\nconst UIPlugin = require(\"./UIPlugin.js\");\n\nconst BasePlugin = require(\"./BasePlugin.js\");\n\n// Backward compatibility: we want those to keep being accessible as static\n// properties of `Uppy` to avoid a breaking change.\nUppy.Uppy = Uppy;\nUppy.UIPlugin = UIPlugin;\nUppy.BasePlugin = BasePlugin;\nUppy.debugLogger = _loggers.debugLogger;", "\"use strict\";\n\n/**\n * Converts list into array\n */\nmodule.exports = Array.from;", "\"use strict\";\n\nmodule.exports = ['a[href]:not([tabindex^=\"-\"]):not([inert]):not([aria-hidden])', 'area[href]:not([tabindex^=\"-\"]):not([inert]):not([aria-hidden])', 'input:not([disabled]):not([inert]):not([aria-hidden])', 'select:not([disabled]):not([inert]):not([aria-hidden])', 'textarea:not([disabled]):not([inert]):not([aria-hidden])', 'button:not([disabled]):not([inert]):not([aria-hidden])', 'iframe:not([tabindex^=\"-\"]):not([inert]):not([aria-hidden])', 'object:not([tabindex^=\"-\"]):not([inert]):not([aria-hidden])', 'embed:not([tabindex^=\"-\"]):not([inert]):not([aria-hidden])', '[contenteditable]:not([tabindex^=\"-\"]):not([inert]):not([aria-hidden])', '[tabindex]:not([tabindex^=\"-\"]):not([inert]):not([aria-hidden])'];", "\"use strict\";\n\nfunction getActiveOverlayEl(dashboardEl, activeOverlayType) {\n  if (activeOverlayType) {\n    const overlayEl = dashboardEl.querySelector(`[data-uppy-paneltype=\"${activeOverlayType}\"]`); // if an overlay is already mounted\n\n    if (overlayEl) return overlayEl;\n  }\n\n  return dashboardEl;\n}\n\n/**\n * @returns {HTMLElement} - either dashboard element, or the overlay that's most on top\n */\nmodule.exports = getActiveOverlayEl;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.forInline = forInline;\nexports.forModal = trapFocus;\n\nconst toArray = require(\"@uppy/utils/lib/toArray\");\n\nconst FOCUSABLE_ELEMENTS = require(\"@uppy/utils/lib/FOCUSABLE_ELEMENTS\");\n\nconst getActiveOverlayEl = require(\"./getActiveOverlayEl.js\");\n\nfunction focusOnFirstNode(event, nodes) {\n  const node = nodes[0];\n\n  if (node) {\n    node.focus();\n    event.preventDefault();\n  }\n}\n\nfunction focusOnLastNode(event, nodes) {\n  const node = nodes[nodes.length - 1];\n\n  if (node) {\n    node.focus();\n    event.preventDefault();\n  }\n} // ___Why not just use (focusedItemIndex === -1)?\n//    Firefox thinks <ul> is focusable, but we don't have <ul>s in our FOCUSABLE_ELEMENTS. Which means that if we tab into\n//    the <ul>, code will think that we are not in the active overlay, and we should focusOnFirstNode() of the currently\n//    active overlay!\n//    [Practical check] if we use (focusedItemIndex === -1), instagram provider in firefox will never get focus on its pics\n//    in the <ul>.\n\n\nfunction isFocusInOverlay(activeOverlayEl) {\n  return activeOverlayEl.contains(document.activeElement);\n}\n\nfunction trapFocus(event, activeOverlayType, dashboardEl) {\n  const activeOverlayEl = getActiveOverlayEl(dashboardEl, activeOverlayType);\n  const focusableNodes = toArray(activeOverlayEl.querySelectorAll(FOCUSABLE_ELEMENTS));\n  const focusedItemIndex = focusableNodes.indexOf(document.activeElement); // If we pressed tab, and focus is not yet within the current overlay - focus on\n  // the first element within the current overlay.\n  // This is a safety measure (for when user returns from another tab e.g.), most\n  // plugins will try to focus on some important element as it loads.\n\n  if (!isFocusInOverlay(activeOverlayEl)) {\n    focusOnFirstNode(event, focusableNodes); // If we pressed shift + tab, and we're on the first element of a modal\n  } else if (event.shiftKey && focusedItemIndex === 0) {\n    focusOnLastNode(event, focusableNodes); // If we pressed tab, and we're on the last element of the modal\n  } else if (!event.shiftKey && focusedItemIndex === focusableNodes.length - 1) {\n    focusOnFirstNode(event, focusableNodes);\n  }\n} // Traps focus inside of the currently open overlay (e.g. Dashboard, or e.g. Instagram),\n// never lets focus disappear from the modal.\n\n\n// Traps focus inside of the currently open overlay, unless overlay is null - then let the user tab away.\nfunction forInline(event, activeOverlayType, dashboardEl) {\n  // ___When we're in the bare 'Drop files here, paste, browse or import from' screen\n  if (activeOverlayType === null) {// Do nothing and let the browser handle it, user can tab away from Uppy to other elements on the page\n    // ___When there is some overlay with 'Done' button\n  } else {\n    // Trap the focus inside this overlay!\n    // User can close the overlay (click 'Done') if they want to travel away from Uppy.\n    trapFocus(event, activeOverlayType, dashboardEl);\n  }\n}", "\"use strict\";\n\nfunction getSpeed(fileProgress) {\n  if (!fileProgress.bytesUploaded) return 0;\n  const timeElapsed = Date.now() - fileProgress.uploadStarted;\n  const uploadSpeed = fileProgress.bytesUploaded / (timeElapsed / 1000);\n  return uploadSpeed;\n}\n\nmodule.exports = getSpeed;", "\"use strict\";\n\nfunction getBytesRemaining(fileProgress) {\n  return fileProgress.bytesTotal - fileProgress.bytesUploaded;\n}\n\nmodule.exports = getBytesRemaining;", "\"use strict\";\n\nmodule.exports = {\n  STATE_ERROR: 'error',\n  STATE_WAITING: 'waiting',\n  STATE_PREPROCESSING: 'preprocessing',\n  STATE_UPLOADING: 'uploading',\n  STATE_POSTPROCESSING: 'postprocessing',\n  STATE_COMPLETE: 'complete'\n};", "/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = '';\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (arg) {\n\t\t\t\tclasses = appendClass(classes, parseValue(arg));\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction parseValue (arg) {\n\t\tif (typeof arg === 'string' || typeof arg === 'number') {\n\t\t\treturn arg;\n\t\t}\n\n\t\tif (typeof arg !== 'object') {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (Array.isArray(arg)) {\n\t\t\treturn classNames.apply(null, arg);\n\t\t}\n\n\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\treturn arg.toString();\n\t\t}\n\n\t\tvar classes = '';\n\n\t\tfor (var key in arg) {\n\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\tclasses = appendClass(classes, key);\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction appendClass (value, newClass) {\n\t\tif (!newClass) {\n\t\t\treturn value;\n\t\t}\n\t\n\t\tif (value) {\n\t\t\treturn value + ' ' + newClass;\n\t\t}\n\t\n\t\treturn value + newClass;\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n", "\"use strict\";\n\nfunction secondsToTime(rawSeconds) {\n  const hours = Math.floor(rawSeconds / 3600) % 24;\n  const minutes = Math.floor(rawSeconds / 60) % 60;\n  const seconds = Math.floor(rawSeconds % 60);\n  return {\n    hours,\n    minutes,\n    seconds\n  };\n}\n\nmodule.exports = secondsToTime;", "\"use strict\";\n\nconst secondsToTime = require(\"./secondsToTime.js\");\n\nfunction prettyETA(seconds) {\n  const time = secondsToTime(seconds); // Only display hours and minutes if they are greater than 0 but always\n  // display minutes if hours is being displayed\n  // Display a leading zero if the there is a preceding unit: 1m 05s, but 5s\n\n  const hoursStr = time.hours === 0 ? '' : `${time.hours}h`;\n  const minutesStr = time.minutes === 0 ? '' : `${time.hours === 0 ? time.minutes : ` ${time.minutes.toString(10).padStart(2, '0')}`}m`;\n  const secondsStr = time.hours !== 0 ? '' : `${time.minutes === 0 ? time.seconds : ` ${time.seconds.toString(10).padStart(2, '0')}`}s`;\n  return `${hoursStr}${minutesStr}${secondsStr}`;\n}\n\nmodule.exports = prettyETA;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.CancelBtn = CancelBtn;\nexports.DoneBtn = DoneBtn;\nexports.LoadingSpinner = LoadingSpinner;\nexports.PauseResumeButton = PauseResumeButton;\nexports.ProgressBarComplete = ProgressBarComplete;\nexports.ProgressBarError = ProgressBarError;\nexports.ProgressBarProcessing = ProgressBarProcessing;\nexports.ProgressBarUploading = ProgressBarUploading;\nexports.ProgressDetails = ProgressDetails;\nexports.RetryBtn = RetryBtn;\nexports.UploadBtn = UploadBtn;\n\nvar _preact = require(\"preact\");\n\nconst classNames = require(\"classnames\");\n\nconst throttle = require(\"lodash.throttle\");\n\nconst prettierBytes = require(\"@transloadit/prettier-bytes\");\n\nconst prettyETA = require(\"@uppy/utils/lib/prettyETA\");\n\nconst statusBarStates = require(\"./StatusBarStates.js\");\n\nconst DOT = `\\u00B7`;\n\nconst renderDot = () => ` ${DOT} `;\n\nfunction UploadBtn(props) {\n  const {\n    newFiles,\n    isUploadStarted,\n    recoveredState,\n    i18n,\n    uploadState,\n    isSomeGhost,\n    startUpload\n  } = props;\n  const uploadBtnClassNames = classNames('uppy-u-reset', 'uppy-c-btn', 'uppy-StatusBar-actionBtn', 'uppy-StatusBar-actionBtn--upload', {\n    'uppy-c-btn-primary': uploadState === statusBarStates.STATE_WAITING\n  }, {\n    'uppy-StatusBar-actionBtn--disabled': isSomeGhost\n  });\n  const uploadBtnText = newFiles && isUploadStarted && !recoveredState ? i18n('uploadXNewFiles', {\n    smart_count: newFiles\n  }) : i18n('uploadXFiles', {\n    smart_count: newFiles\n  });\n  return (0, _preact.h)(\"button\", {\n    type: \"button\",\n    className: uploadBtnClassNames,\n    \"aria-label\": i18n('uploadXFiles', {\n      smart_count: newFiles\n    }),\n    onClick: startUpload,\n    disabled: isSomeGhost,\n    \"data-uppy-super-focusable\": true\n  }, uploadBtnText);\n}\n\nfunction RetryBtn(props) {\n  const {\n    i18n,\n    uppy\n  } = props;\n  return (0, _preact.h)(\"button\", {\n    type: \"button\",\n    className: \"uppy-u-reset uppy-c-btn uppy-StatusBar-actionBtn uppy-StatusBar-actionBtn--retry\",\n    \"aria-label\": i18n('retryUpload'),\n    onClick: () => uppy.retryAll(),\n    \"data-uppy-super-focusable\": true\n  }, (0, _preact.h)(\"svg\", {\n    \"aria-hidden\": \"true\",\n    focusable: \"false\",\n    className: \"uppy-c-icon\",\n    width: \"8\",\n    height: \"10\",\n    viewBox: \"0 0 8 10\"\n  }, (0, _preact.h)(\"path\", {\n    d: \"M4 2.408a2.75 2.75 0 1 0 2.75 2.75.626.626 0 0 1 1.25.018v.023a4 4 0 1 1-4-4.041V.25a.25.25 0 0 1 .389-.208l2.299 1.533a.25.25 0 0 1 0 .416l-2.3 1.533A.25.25 0 0 1 4 3.316v-.908z\"\n  })), i18n('retry'));\n}\n\nfunction CancelBtn(props) {\n  const {\n    i18n,\n    uppy\n  } = props;\n  return (0, _preact.h)(\"button\", {\n    type: \"button\",\n    className: \"uppy-u-reset uppy-StatusBar-actionCircleBtn\",\n    title: i18n('cancel'),\n    \"aria-label\": i18n('cancel'),\n    onClick: () => uppy.cancelAll(),\n    \"data-cy\": \"cancel\",\n    \"data-uppy-super-focusable\": true\n  }, (0, _preact.h)(\"svg\", {\n    \"aria-hidden\": \"true\",\n    focusable: \"false\",\n    className: \"uppy-c-icon\",\n    width: \"16\",\n    height: \"16\",\n    viewBox: \"0 0 16 16\"\n  }, (0, _preact.h)(\"g\", {\n    fill: \"none\",\n    fillRule: \"evenodd\"\n  }, (0, _preact.h)(\"circle\", {\n    fill: \"#888\",\n    cx: \"8\",\n    cy: \"8\",\n    r: \"8\"\n  }), (0, _preact.h)(\"path\", {\n    fill: \"#FFF\",\n    d: \"M9.283 8l2.567 2.567-1.283 1.283L8 9.283 5.433 11.85 4.15 10.567 6.717 8 4.15 5.433 5.433 4.15 8 6.717l2.567-2.567 1.283 1.283z\"\n  }))));\n}\n\nfunction PauseResumeButton(props) {\n  const {\n    isAllPaused,\n    i18n,\n    isAllComplete,\n    resumableUploads,\n    uppy\n  } = props;\n  const title = isAllPaused ? i18n('resume') : i18n('pause');\n\n  function togglePauseResume() {\n    if (isAllComplete) return null;\n\n    if (!resumableUploads) {\n      return uppy.cancelAll();\n    }\n\n    if (isAllPaused) {\n      return uppy.resumeAll();\n    }\n\n    return uppy.pauseAll();\n  }\n\n  return (0, _preact.h)(\"button\", {\n    title: title,\n    \"aria-label\": title,\n    className: \"uppy-u-reset uppy-StatusBar-actionCircleBtn\",\n    type: \"button\",\n    onClick: togglePauseResume,\n    \"data-uppy-super-focusable\": true\n  }, (0, _preact.h)(\"svg\", {\n    \"aria-hidden\": \"true\",\n    focusable: \"false\",\n    className: \"uppy-c-icon\",\n    width: \"16\",\n    height: \"16\",\n    viewBox: \"0 0 16 16\"\n  }, (0, _preact.h)(\"g\", {\n    fill: \"none\",\n    fillRule: \"evenodd\"\n  }, (0, _preact.h)(\"circle\", {\n    fill: \"#888\",\n    cx: \"8\",\n    cy: \"8\",\n    r: \"8\"\n  }), (0, _preact.h)(\"path\", {\n    fill: \"#FFF\",\n    d: isAllPaused ? 'M6 4.25L11.5 8 6 11.75z' : 'M5 4.5h2v7H5v-7zm4 0h2v7H9v-7z'\n  }))));\n}\n\nfunction DoneBtn(props) {\n  const {\n    i18n,\n    doneButtonHandler\n  } = props;\n  return (0, _preact.h)(\"button\", {\n    type: \"button\",\n    className: \"uppy-u-reset uppy-c-btn uppy-StatusBar-actionBtn uppy-StatusBar-actionBtn--done\",\n    onClick: doneButtonHandler,\n    \"data-uppy-super-focusable\": true\n  }, i18n('done'));\n}\n\nfunction LoadingSpinner() {\n  return (0, _preact.h)(\"svg\", {\n    className: \"uppy-StatusBar-spinner\",\n    \"aria-hidden\": \"true\",\n    focusable: \"false\",\n    width: \"14\",\n    height: \"14\"\n  }, (0, _preact.h)(\"path\", {\n    d: \"M13.983 6.547c-.12-2.509-1.64-4.893-3.939-5.936-2.48-1.127-5.488-.656-7.556 1.094C.524 3.367-.398 6.048.162 8.562c.556 2.495 2.46 4.52 4.94 5.183 2.932.784 5.61-.602 7.256-3.015-1.493 1.993-3.745 3.309-6.298 2.868-2.514-.434-4.578-2.349-5.153-4.84a6.226 6.226 0 0 1 2.98-6.778C6.34.586 9.74 1.1 11.373 3.493c.407.596.693 1.282.842 1.988.127.598.073 1.197.161 1.794.078.525.543 1.257 1.15.864.525-.341.49-1.05.456-1.592-.007-.15.02.3 0 0\",\n    fillRule: \"evenodd\"\n  }));\n}\n\nfunction ProgressBarProcessing(props) {\n  const {\n    progress\n  } = props;\n  const {\n    value,\n    mode,\n    message\n  } = progress;\n  const roundedValue = Math.round(value * 100);\n  const dot = `\\u00B7`;\n  return (0, _preact.h)(\"div\", {\n    className: \"uppy-StatusBar-content\"\n  }, (0, _preact.h)(LoadingSpinner, null), mode === 'determinate' ? `${roundedValue}% ${dot} ` : '', message);\n}\n\nfunction ProgressDetails(props) {\n  const {\n    numUploads,\n    complete,\n    totalUploadedSize,\n    totalSize,\n    totalETA,\n    i18n\n  } = props;\n  const ifShowFilesUploadedOfTotal = numUploads > 1;\n  return (0, _preact.h)(\"div\", {\n    className: \"uppy-StatusBar-statusSecondary\"\n  }, ifShowFilesUploadedOfTotal && i18n('filesUploadedOfTotal', {\n    complete,\n    smart_count: numUploads\n  }), (0, _preact.h)(\"span\", {\n    className: \"uppy-StatusBar-additionalInfo\"\n  }, ifShowFilesUploadedOfTotal && renderDot(), i18n('dataUploadedOfTotal', {\n    complete: prettierBytes(totalUploadedSize),\n    total: prettierBytes(totalSize)\n  }), renderDot(), i18n('xTimeLeft', {\n    time: prettyETA(totalETA)\n  })));\n}\n\nfunction FileUploadCount(props) {\n  const {\n    i18n,\n    complete,\n    numUploads\n  } = props;\n  return (0, _preact.h)(\"div\", {\n    className: \"uppy-StatusBar-statusSecondary\"\n  }, i18n('filesUploadedOfTotal', {\n    complete,\n    smart_count: numUploads\n  }));\n}\n\nfunction UploadNewlyAddedFiles(props) {\n  const {\n    i18n,\n    newFiles,\n    startUpload\n  } = props;\n  const uploadBtnClassNames = classNames('uppy-u-reset', 'uppy-c-btn', 'uppy-StatusBar-actionBtn', 'uppy-StatusBar-actionBtn--uploadNewlyAdded');\n  return (0, _preact.h)(\"div\", {\n    className: \"uppy-StatusBar-statusSecondary\"\n  }, (0, _preact.h)(\"div\", {\n    className: \"uppy-StatusBar-statusSecondaryHint\"\n  }, i18n('xMoreFilesAdded', {\n    smart_count: newFiles\n  })), (0, _preact.h)(\"button\", {\n    type: \"button\",\n    className: uploadBtnClassNames,\n    \"aria-label\": i18n('uploadXFiles', {\n      smart_count: newFiles\n    }),\n    onClick: startUpload\n  }, i18n('upload')));\n}\n\nconst ThrottledProgressDetails = throttle(ProgressDetails, 500, {\n  leading: true,\n  trailing: true\n});\n\nfunction ProgressBarUploading(props) {\n  const {\n    i18n,\n    supportsUploadProgress,\n    totalProgress,\n    showProgressDetails,\n    isUploadStarted,\n    isAllComplete,\n    isAllPaused,\n    newFiles,\n    numUploads,\n    complete,\n    totalUploadedSize,\n    totalSize,\n    totalETA,\n    startUpload\n  } = props;\n  const showUploadNewlyAddedFiles = newFiles && isUploadStarted;\n\n  if (!isUploadStarted || isAllComplete) {\n    return null;\n  }\n\n  const title = isAllPaused ? i18n('paused') : i18n('uploading');\n\n  function renderProgressDetails() {\n    if (!isAllPaused && !showUploadNewlyAddedFiles && showProgressDetails) {\n      if (supportsUploadProgress) {\n        return (0, _preact.h)(ThrottledProgressDetails, {\n          numUploads: numUploads,\n          complete: complete,\n          totalUploadedSize: totalUploadedSize,\n          totalSize: totalSize,\n          totalETA: totalETA,\n          i18n: i18n\n        });\n      }\n\n      return (0, _preact.h)(FileUploadCount, {\n        i18n: i18n,\n        complete: complete,\n        numUploads: numUploads\n      });\n    }\n\n    return null;\n  }\n\n  return (0, _preact.h)(\"div\", {\n    className: \"uppy-StatusBar-content\",\n    \"aria-label\": title,\n    title: title\n  }, !isAllPaused ? (0, _preact.h)(LoadingSpinner, null) : null, (0, _preact.h)(\"div\", {\n    className: \"uppy-StatusBar-status\"\n  }, (0, _preact.h)(\"div\", {\n    className: \"uppy-StatusBar-statusPrimary\"\n  }, supportsUploadProgress ? `${title}: ${totalProgress}%` : title), renderProgressDetails(), showUploadNewlyAddedFiles ? (0, _preact.h)(UploadNewlyAddedFiles, {\n    i18n: i18n,\n    newFiles: newFiles,\n    startUpload: startUpload\n  }) : null));\n}\n\nfunction ProgressBarComplete(props) {\n  const {\n    i18n\n  } = props;\n  return (0, _preact.h)(\"div\", {\n    className: \"uppy-StatusBar-content\",\n    role: \"status\",\n    title: i18n('complete')\n  }, (0, _preact.h)(\"div\", {\n    className: \"uppy-StatusBar-status\"\n  }, (0, _preact.h)(\"div\", {\n    className: \"uppy-StatusBar-statusPrimary\"\n  }, (0, _preact.h)(\"svg\", {\n    \"aria-hidden\": \"true\",\n    focusable: \"false\",\n    className: \"uppy-StatusBar-statusIndicator uppy-c-icon\",\n    width: \"15\",\n    height: \"11\",\n    viewBox: \"0 0 15 11\"\n  }, (0, _preact.h)(\"path\", {\n    d: \"M.414 5.843L1.627 4.63l3.472 3.472L13.202 0l1.212 1.213L5.1 10.528z\"\n  })), i18n('complete'))));\n}\n\nfunction ProgressBarError(props) {\n  const {\n    error,\n    i18n,\n    complete,\n    numUploads\n  } = props;\n\n  function displayErrorAlert() {\n    const errorMessage = `${i18n('uploadFailed')} \\n\\n ${error}`; // eslint-disable-next-line no-alert\n\n    alert(errorMessage); // TODO: move to custom alert implementation\n  }\n\n  return (0, _preact.h)(\"div\", {\n    className: \"uppy-StatusBar-content\",\n    title: i18n('uploadFailed')\n  }, (0, _preact.h)(\"svg\", {\n    \"aria-hidden\": \"true\",\n    focusable: \"false\",\n    className: \"uppy-StatusBar-statusIndicator uppy-c-icon\",\n    width: \"11\",\n    height: \"11\",\n    viewBox: \"0 0 11 11\"\n  }, (0, _preact.h)(\"path\", {\n    d: \"M4.278 5.5L0 1.222 1.222 0 5.5 4.278 9.778 0 11 1.222 6.722 5.5 11 9.778 9.778 11 5.5 6.722 1.222 11 0 9.778z\"\n  })), (0, _preact.h)(\"div\", {\n    className: \"uppy-StatusBar-status\"\n  }, (0, _preact.h)(\"div\", {\n    className: \"uppy-StatusBar-statusPrimary\"\n  }, i18n('uploadFailed'), (0, _preact.h)(\"button\", {\n    className: \"uppy-u-reset uppy-StatusBar-details\",\n    \"aria-label\": i18n('showErrorDetails'),\n    \"data-microtip-position\": \"top-right\",\n    \"data-microtip-size\": \"medium\",\n    onClick: displayErrorAlert,\n    type: \"button\"\n  }, \"?\")), (0, _preact.h)(FileUploadCount, {\n    i18n: i18n,\n    complete: complete,\n    numUploads: numUploads\n  })));\n}", "\"use strict\";\n\nfunction calculateProcessingProgress(files) {\n  const values = [];\n  let mode;\n  let message;\n\n  for (const {\n    progress\n  } of Object.values(files)) {\n    const {\n      preprocess,\n      postprocess\n    } = progress; // In the future we should probably do this differently. For now we'll take the\n    // mode and message from the first file\u2026\n\n    if (message == null && (preprocess || postprocess)) {\n      ({\n        mode,\n        message\n      } = preprocess || postprocess);\n    }\n\n    if ((preprocess == null ? void 0 : preprocess.mode) === 'determinate') values.push(preprocess.value);\n    if ((postprocess == null ? void 0 : postprocess.mode) === 'determinate') values.push(postprocess.value);\n  }\n\n  const value = values.reduce((total, progressValue) => {\n    return total + progressValue / values.length;\n  }, 0);\n  return {\n    mode,\n    message,\n    value\n  };\n}\n\nmodule.exports = calculateProcessingProgress;", "\"use strict\";\n\nvar _preact = require(\"preact\");\n\nvar _Components = require(\"./Components.js\");\n\n// TODO: rename this file to StatusBarUI>jsx on the next major.\nconst classNames = require(\"classnames\");\n\nconst statusBarStates = require(\"./StatusBarStates.js\");\n\nconst calculateProcessingProgress = require(\"./calculateProcessingProgress.js\");\n\nconst {\n  STATE_ERROR,\n  STATE_WAITING,\n  STATE_PREPROCESSING,\n  STATE_UPLOADING,\n  STATE_POSTPROCESSING,\n  STATE_COMPLETE\n} = statusBarStates; // TODO: rename the function to StatusBarUI on the next major.\n\nfunction StatusBar(props) {\n  const {\n    newFiles,\n    allowNewUpload,\n    isUploadInProgress,\n    isAllPaused,\n    resumableUploads,\n    error,\n    hideUploadButton,\n    hidePauseResumeButton,\n    hideCancelButton,\n    hideRetryButton,\n    recoveredState,\n    uploadState,\n    totalProgress,\n    files,\n    supportsUploadProgress,\n    hideAfterFinish,\n    isSomeGhost,\n    doneButtonHandler,\n    isUploadStarted,\n    i18n,\n    startUpload,\n    uppy,\n    isAllComplete,\n    showProgressDetails,\n    numUploads,\n    complete,\n    totalSize,\n    totalETA,\n    totalUploadedSize\n  } = props;\n\n  function getProgressValue() {\n    switch (uploadState) {\n      case STATE_POSTPROCESSING:\n      case STATE_PREPROCESSING:\n        {\n          const progress = calculateProcessingProgress(files);\n\n          if (progress.mode === 'determinate') {\n            return progress.value * 100;\n          }\n\n          return totalProgress;\n        }\n\n      case STATE_ERROR:\n        {\n          return null;\n        }\n\n      case STATE_UPLOADING:\n        {\n          if (!supportsUploadProgress) {\n            return null;\n          }\n\n          return totalProgress;\n        }\n\n      default:\n        return totalProgress;\n    }\n  }\n\n  function getIsIndeterminate() {\n    switch (uploadState) {\n      case STATE_POSTPROCESSING:\n      case STATE_PREPROCESSING:\n        {\n          const {\n            mode\n          } = calculateProcessingProgress(files);\n          return mode === 'indeterminate';\n        }\n\n      case STATE_UPLOADING:\n        {\n          if (!supportsUploadProgress) {\n            return true;\n          }\n\n          return false;\n        }\n\n      default:\n        return false;\n    }\n  }\n\n  function getIsHidden() {\n    if (recoveredState) {\n      return false;\n    }\n\n    switch (uploadState) {\n      case STATE_WAITING:\n        return hideUploadButton || newFiles === 0;\n\n      case STATE_COMPLETE:\n        return hideAfterFinish;\n\n      default:\n        return false;\n    }\n  }\n\n  const progressValue = getProgressValue();\n  const isHidden = getIsHidden();\n  const width = progressValue != null ? progressValue : 100;\n  const showUploadBtn = !error && newFiles && !isUploadInProgress && !isAllPaused && allowNewUpload && !hideUploadButton;\n  const showCancelBtn = !hideCancelButton && uploadState !== STATE_WAITING && uploadState !== STATE_COMPLETE;\n  const showPauseResumeBtn = resumableUploads && !hidePauseResumeButton && uploadState === STATE_UPLOADING;\n  const showRetryBtn = error && !isAllComplete && !hideRetryButton;\n  const showDoneBtn = doneButtonHandler && uploadState === STATE_COMPLETE;\n  const progressClassNames = classNames('uppy-StatusBar-progress', {\n    'is-indeterminate': getIsIndeterminate()\n  });\n  const statusBarClassNames = classNames('uppy-StatusBar', `is-${uploadState}`, {\n    'has-ghosts': isSomeGhost\n  });\n  return (0, _preact.h)(\"div\", {\n    className: statusBarClassNames,\n    \"aria-hidden\": isHidden\n  }, (0, _preact.h)(\"div\", {\n    className: progressClassNames,\n    style: {\n      width: `${width}%`\n    },\n    role: \"progressbar\",\n    \"aria-label\": `${width}%`,\n    \"aria-valuetext\": `${width}%`,\n    \"aria-valuemin\": \"0\",\n    \"aria-valuemax\": \"100\",\n    \"aria-valuenow\": progressValue\n  }), (() => {\n    switch (uploadState) {\n      case STATE_PREPROCESSING:\n      case STATE_POSTPROCESSING:\n        return (0, _preact.h)(_Components.ProgressBarProcessing, {\n          progress: calculateProcessingProgress(files)\n        });\n\n      case STATE_COMPLETE:\n        return (0, _preact.h)(_Components.ProgressBarComplete, {\n          i18n: i18n\n        });\n\n      case STATE_ERROR:\n        return (0, _preact.h)(_Components.ProgressBarError, {\n          error: error,\n          i18n: i18n,\n          numUploads: numUploads,\n          complete: complete\n        });\n\n      case STATE_UPLOADING:\n        return (0, _preact.h)(_Components.ProgressBarUploading, {\n          i18n: i18n,\n          supportsUploadProgress: supportsUploadProgress,\n          totalProgress: totalProgress,\n          showProgressDetails: showProgressDetails,\n          isUploadStarted: isUploadStarted,\n          isAllComplete: isAllComplete,\n          isAllPaused: isAllPaused,\n          newFiles: newFiles,\n          numUploads: numUploads,\n          complete: complete,\n          totalUploadedSize: totalUploadedSize,\n          totalSize: totalSize,\n          totalETA: totalETA,\n          startUpload: startUpload\n        });\n\n      default:\n        return null;\n    }\n  })(), (0, _preact.h)(\"div\", {\n    className: \"uppy-StatusBar-actions\"\n  }, recoveredState || showUploadBtn ? (0, _preact.h)(_Components.UploadBtn, {\n    newFiles: newFiles,\n    isUploadStarted: isUploadStarted,\n    recoveredState: recoveredState,\n    i18n: i18n,\n    isSomeGhost: isSomeGhost,\n    startUpload: startUpload,\n    uploadState: uploadState\n  }) : null, showRetryBtn ? (0, _preact.h)(_Components.RetryBtn, {\n    i18n: i18n,\n    uppy: uppy\n  }) : null, showPauseResumeBtn ? (0, _preact.h)(_Components.PauseResumeButton, {\n    isAllPaused: isAllPaused,\n    i18n: i18n,\n    isAllComplete: isAllComplete,\n    resumableUploads: resumableUploads,\n    uppy: uppy\n  }) : null, showCancelBtn ? (0, _preact.h)(_Components.CancelBtn, {\n    i18n: i18n,\n    uppy: uppy\n  }) : null, showDoneBtn ? (0, _preact.h)(_Components.DoneBtn, {\n    i18n: i18n,\n    doneButtonHandler: doneButtonHandler\n  }) : null));\n}\n\nmodule.exports = StatusBar;", "\"use strict\";\n\nmodule.exports = {\n  strings: {\n    // Shown in the status bar while files are being uploaded.\n    uploading: 'Uploading',\n    // Shown in the status bar once all files have been uploaded.\n    complete: 'Complete',\n    // Shown in the status bar if an upload failed.\n    uploadFailed: 'Upload failed',\n    // Shown in the status bar while the upload is paused.\n    paused: 'Paused',\n    // Used as the label for the button that retries an upload.\n    retry: 'Retry',\n    // Used as the label for the button that cancels an upload.\n    cancel: 'Cancel',\n    // Used as the label for the button that pauses an upload.\n    pause: 'Pause',\n    // Used as the label for the button that resumes an upload.\n    resume: 'Resume',\n    // Used as the label for the button that resets the upload state after an upload\n    done: 'Done',\n    // When `showProgressDetails` is set, shows the number of files that have been fully uploaded so far.\n    filesUploadedOfTotal: {\n      0: '%{complete} of %{smart_count} file uploaded',\n      1: '%{complete} of %{smart_count} files uploaded'\n    },\n    // When `showProgressDetails` is set, shows the amount of bytes that have been uploaded so far.\n    dataUploadedOfTotal: '%{complete} of %{total}',\n    // When `showProgressDetails` is set, shows an estimation of how long the upload will take to complete.\n    xTimeLeft: '%{time} left',\n    // Used as the label for the button that starts an upload.\n    uploadXFiles: {\n      0: 'Upload %{smart_count} file',\n      1: 'Upload %{smart_count} files'\n    },\n    // Used as the label for the button that starts an upload, if another upload has been started in the past\n    // and new files were added later.\n    uploadXNewFiles: {\n      0: 'Upload +%{smart_count} file',\n      1: 'Upload +%{smart_count} files'\n    },\n    upload: 'Upload',\n    retryUpload: 'Retry upload',\n    xMoreFilesAdded: {\n      0: '%{smart_count} more file added',\n      1: '%{smart_count} more files added'\n    },\n    showErrorDetails: 'Show error details'\n  }\n};", "\"use strict\";\n\nvar _core = require(\"@uppy/core\");\n\n// TODO: rename this file to StatusBar.jsx on the next major.\nconst getSpeed = require(\"@uppy/utils/lib/getSpeed\");\n\nconst getBytesRemaining = require(\"@uppy/utils/lib/getBytesRemaining\");\n\nconst getTextDirection = require(\"@uppy/utils/lib/getTextDirection\");\n\nconst statusBarStates = require(\"./StatusBarStates.js\");\n\nconst StatusBarUI = require(\"./StatusBar.js\");\n\nconst packageJson = {\n  \"version\": \"2.2.2\"\n};\n\nconst locale = require(\"./locale.js\");\n\nfunction getTotalSpeed(files) {\n  let totalSpeed = 0;\n  files.forEach(file => {\n    totalSpeed += getSpeed(file.progress);\n  });\n  return totalSpeed;\n}\n\nfunction getTotalETA(files) {\n  const totalSpeed = getTotalSpeed(files);\n\n  if (totalSpeed === 0) {\n    return 0;\n  }\n\n  const totalBytesRemaining = files.reduce((total, file) => {\n    return total + getBytesRemaining(file.progress);\n  }, 0);\n  return Math.round(totalBytesRemaining / totalSpeed * 10) / 10;\n}\n\nfunction getUploadingState(error, isAllComplete, recoveredState, files) {\n  if (error && !isAllComplete) {\n    return statusBarStates.STATE_ERROR;\n  }\n\n  if (isAllComplete) {\n    return statusBarStates.STATE_COMPLETE;\n  }\n\n  if (recoveredState) {\n    return statusBarStates.STATE_WAITING;\n  }\n\n  let state = statusBarStates.STATE_WAITING;\n  const fileIDs = Object.keys(files);\n\n  for (let i = 0; i < fileIDs.length; i++) {\n    const {\n      progress\n    } = files[fileIDs[i]]; // If ANY files are being uploaded right now, show the uploading state.\n\n    if (progress.uploadStarted && !progress.uploadComplete) {\n      return statusBarStates.STATE_UPLOADING;\n    } // If files are being preprocessed AND postprocessed at this time, we show the\n    // preprocess state. If any files are being uploaded we show uploading.\n\n\n    if (progress.preprocess && state !== statusBarStates.STATE_UPLOADING) {\n      state = statusBarStates.STATE_PREPROCESSING;\n    } // If NO files are being preprocessed or uploaded right now, but some files are\n    // being postprocessed, show the postprocess state.\n\n\n    if (progress.postprocess && state !== statusBarStates.STATE_UPLOADING && state !== statusBarStates.STATE_PREPROCESSING) {\n      state = statusBarStates.STATE_POSTPROCESSING;\n    }\n  }\n\n  return state;\n}\n/**\n * StatusBar: renders a status bar with upload/pause/resume/cancel/retry buttons,\n * progress percentage and time remaining.\n */\n\n\nclass StatusBar extends _core.UIPlugin {\n  constructor(uppy, opts) {\n    super(uppy, opts);\n\n    this.startUpload = () => {\n      const {\n        recoveredState\n      } = this.uppy.getState();\n\n      if (recoveredState) {\n        this.uppy.emit('restore-confirmed');\n        return undefined;\n      }\n\n      return this.uppy.upload().catch(() => {// Error logged in Core\n      });\n    };\n\n    this.id = this.opts.id || 'StatusBar';\n    this.title = 'StatusBar';\n    this.type = 'progressindicator';\n    this.defaultLocale = locale; // set default options\n\n    const defaultOptions = {\n      target: 'body',\n      hideUploadButton: false,\n      hideRetryButton: false,\n      hidePauseResumeButton: false,\n      hideCancelButton: false,\n      showProgressDetails: false,\n      hideAfterFinish: true,\n      doneButtonHandler: null\n    };\n    this.opts = { ...defaultOptions,\n      ...opts\n    };\n    this.i18nInit();\n    this.render = this.render.bind(this);\n    this.install = this.install.bind(this);\n  }\n\n  render(state) {\n    const {\n      capabilities,\n      files,\n      allowNewUpload,\n      totalProgress,\n      error,\n      recoveredState\n    } = state;\n    const {\n      newFiles,\n      startedFiles,\n      completeFiles,\n      inProgressNotPausedFiles,\n      isUploadStarted,\n      isAllComplete,\n      isAllErrored,\n      isAllPaused,\n      isUploadInProgress,\n      isSomeGhost\n    } = this.uppy.getObjectOfFilesPerState(); // If some state was recovered, we want to show Upload button/counter\n    // for all the files, because in this case it\u2019s not an Upload button,\n    // but \u201CConfirm Restore Button\u201D\n\n    const newFilesOrRecovered = recoveredState ? Object.values(files) : newFiles;\n    const totalETA = getTotalETA(inProgressNotPausedFiles);\n    const resumableUploads = !!capabilities.resumableUploads;\n    const supportsUploadProgress = capabilities.uploadProgress !== false;\n    let totalSize = 0;\n    let totalUploadedSize = 0;\n    startedFiles.forEach(file => {\n      totalSize += file.progress.bytesTotal || 0;\n      totalUploadedSize += file.progress.bytesUploaded || 0;\n    });\n    return StatusBarUI({\n      error,\n      uploadState: getUploadingState(error, isAllComplete, recoveredState, state.files || {}),\n      allowNewUpload,\n      totalProgress,\n      totalSize,\n      totalUploadedSize,\n      isAllComplete: false,\n      isAllPaused,\n      isAllErrored,\n      isUploadStarted,\n      isUploadInProgress,\n      isSomeGhost,\n      recoveredState,\n      complete: completeFiles.length,\n      newFiles: newFilesOrRecovered.length,\n      numUploads: startedFiles.length,\n      totalETA,\n      files,\n      i18n: this.i18n,\n      uppy: this.uppy,\n      startUpload: this.startUpload,\n      doneButtonHandler: this.opts.doneButtonHandler,\n      resumableUploads,\n      supportsUploadProgress,\n      showProgressDetails: this.opts.showProgressDetails,\n      hideUploadButton: this.opts.hideUploadButton,\n      hideRetryButton: this.opts.hideRetryButton,\n      hidePauseResumeButton: this.opts.hidePauseResumeButton,\n      hideCancelButton: this.opts.hideCancelButton,\n      hideAfterFinish: this.opts.hideAfterFinish,\n      isTargetDOMEl: this.isTargetDOMEl\n    });\n  }\n\n  onMount() {\n    // Set the text direction if the page has not defined one.\n    const element = this.el;\n    const direction = getTextDirection(element);\n\n    if (!direction) {\n      element.dir = 'ltr';\n    }\n  }\n\n  install() {\n    const {\n      target\n    } = this.opts;\n\n    if (target) {\n      this.mount(target, this);\n    }\n  }\n\n  uninstall() {\n    this.unmount();\n  }\n\n}\n\nStatusBar.VERSION = packageJson.version;\nmodule.exports = StatusBar;", "\"use strict\";\n\nmodule.exports = require(\"./_StatusBar.js\");", "\"use strict\";\n\nvar _preact = require(\"preact\");\n\nconst TRANSITION_MS = 300;\n\nclass FadeIn extends _preact.Component {\n  constructor() {\n    super(...arguments);\n    this.ref = (0, _preact.createRef)();\n  }\n\n  componentWillEnter(callback) {\n    this.ref.current.style.opacity = '1';\n    this.ref.current.style.transform = 'none';\n    setTimeout(callback, TRANSITION_MS);\n  }\n\n  componentWillLeave(callback) {\n    this.ref.current.style.opacity = '0';\n    this.ref.current.style.transform = 'translateY(350%)';\n    setTimeout(callback, TRANSITION_MS);\n  }\n\n  render() {\n    const {\n      children\n    } = this.props;\n    return (0, _preact.h)(\"div\", {\n      className: \"uppy-Informer-animated\",\n      ref: this.ref\n    }, children);\n  }\n\n}\n\nmodule.exports = FadeIn;", "\"use strict\";\n\nvar _preact = require(\"preact\");\n\n/* eslint-disable */\n\n/**\n * @source https://github.com/developit/preact-transition-group\n */\nfunction assign(obj, props) {\n  return Object.assign(obj, props);\n}\n\nfunction getKey(vnode, fallback) {\n  var _vnode$key;\n\n  return (_vnode$key = vnode == null ? void 0 : vnode.key) != null ? _vnode$key : fallback;\n}\n\nfunction linkRef(component, name) {\n  const cache = component._ptgLinkedRefs || (component._ptgLinkedRefs = {});\n  return cache[name] || (cache[name] = c => {\n    component.refs[name] = c;\n  });\n}\n\nfunction getChildMapping(children) {\n  const out = {};\n\n  for (let i = 0; i < children.length; i++) {\n    if (children[i] != null) {\n      const key = getKey(children[i], i.toString(36));\n      out[key] = children[i];\n    }\n  }\n\n  return out;\n}\n\nfunction mergeChildMappings(prev, next) {\n  prev = prev || {};\n  next = next || {};\n\n  const getValueForKey = key => next.hasOwnProperty(key) ? next[key] : prev[key]; // For each key of `next`, the list of keys to insert before that key in\n  // the combined list\n\n\n  const nextKeysPending = {};\n  let pendingKeys = [];\n\n  for (const prevKey in prev) {\n    if (next.hasOwnProperty(prevKey)) {\n      if (pendingKeys.length) {\n        nextKeysPending[prevKey] = pendingKeys;\n        pendingKeys = [];\n      }\n    } else {\n      pendingKeys.push(prevKey);\n    }\n  }\n\n  const childMapping = {};\n\n  for (const nextKey in next) {\n    if (nextKeysPending.hasOwnProperty(nextKey)) {\n      for (let i = 0; i < nextKeysPending[nextKey].length; i++) {\n        const 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 (let i = 0; i < pendingKeys.length; i++) {\n    childMapping[pendingKeys[i]] = getValueForKey(pendingKeys[i]);\n  }\n\n  return childMapping;\n}\n\nconst identity = i => i;\n\nclass TransitionGroup extends _preact.Component {\n  constructor(props, context) {\n    super(props, context);\n    this.refs = {};\n    this.state = {\n      children: getChildMapping((0, _preact.toChildArray)((0, _preact.toChildArray)(this.props.children)) || [])\n    };\n    this.performAppear = this.performAppear.bind(this);\n    this.performEnter = this.performEnter.bind(this);\n    this.performLeave = this.performLeave.bind(this);\n  }\n\n  componentWillMount() {\n    this.currentlyTransitioningKeys = {};\n    this.keysToAbortLeave = [];\n    this.keysToEnter = [];\n    this.keysToLeave = [];\n  }\n\n  componentDidMount() {\n    const initialChildMapping = this.state.children;\n\n    for (const key in initialChildMapping) {\n      if (initialChildMapping[key]) {\n        // this.performAppear(getKey(initialChildMapping[key], key));\n        this.performAppear(key);\n      }\n    }\n  }\n\n  componentWillReceiveProps(nextProps) {\n    const nextChildMapping = getChildMapping((0, _preact.toChildArray)(nextProps.children) || []);\n    const prevChildMapping = this.state.children;\n    this.setState(prevState => ({\n      children: mergeChildMappings(prevState.children, nextChildMapping)\n    }));\n    let key;\n\n    for (key in nextChildMapping) {\n      if (nextChildMapping.hasOwnProperty(key)) {\n        const hasPrev = prevChildMapping && prevChildMapping.hasOwnProperty(key); // We should re-enter the component and abort its leave function\n\n        if (nextChildMapping[key] && hasPrev && this.currentlyTransitioningKeys[key]) {\n          this.keysToEnter.push(key);\n          this.keysToAbortLeave.push(key);\n        } else if (nextChildMapping[key] && !hasPrev && !this.currentlyTransitioningKeys[key]) {\n          this.keysToEnter.push(key);\n        }\n      }\n    }\n\n    for (key in prevChildMapping) {\n      if (prevChildMapping.hasOwnProperty(key)) {\n        const hasNext = nextChildMapping && nextChildMapping.hasOwnProperty(key);\n\n        if (prevChildMapping[key] && !hasNext && !this.currentlyTransitioningKeys[key]) {\n          this.keysToLeave.push(key);\n        }\n      }\n    }\n  }\n\n  componentDidUpdate() {\n    const {\n      keysToEnter\n    } = this;\n    this.keysToEnter = [];\n    keysToEnter.forEach(this.performEnter);\n    const {\n      keysToLeave\n    } = this;\n    this.keysToLeave = [];\n    keysToLeave.forEach(this.performLeave);\n  }\n\n  _finishAbort(key) {\n    const idx = this.keysToAbortLeave.indexOf(key);\n\n    if (idx !== -1) {\n      this.keysToAbortLeave.splice(idx, 1);\n    }\n  }\n\n  performAppear(key) {\n    this.currentlyTransitioningKeys[key] = true;\n    const component = this.refs[key];\n\n    if (component.componentWillAppear) {\n      component.componentWillAppear(this._handleDoneAppearing.bind(this, key));\n    } else {\n      this._handleDoneAppearing(key);\n    }\n  }\n\n  _handleDoneAppearing(key) {\n    const component = this.refs[key];\n\n    if (component.componentDidAppear) {\n      component.componentDidAppear();\n    }\n\n    delete this.currentlyTransitioningKeys[key];\n\n    this._finishAbort(key);\n\n    const currentChildMapping = getChildMapping((0, _preact.toChildArray)(this.props.children) || []);\n\n    if (!currentChildMapping || !currentChildMapping.hasOwnProperty(key)) {\n      // This was removed before it had fully appeared. Remove it.\n      this.performLeave(key);\n    }\n  }\n\n  performEnter(key) {\n    this.currentlyTransitioningKeys[key] = true;\n    const component = this.refs[key];\n\n    if (component.componentWillEnter) {\n      component.componentWillEnter(this._handleDoneEntering.bind(this, key));\n    } else {\n      this._handleDoneEntering(key);\n    }\n  }\n\n  _handleDoneEntering(key) {\n    const component = this.refs[key];\n\n    if (component.componentDidEnter) {\n      component.componentDidEnter();\n    }\n\n    delete this.currentlyTransitioningKeys[key];\n\n    this._finishAbort(key);\n\n    const currentChildMapping = getChildMapping((0, _preact.toChildArray)(this.props.children) || []);\n\n    if (!currentChildMapping || !currentChildMapping.hasOwnProperty(key)) {\n      // This was removed before it had fully entered. Remove it.\n      this.performLeave(key);\n    }\n  }\n\n  performLeave(key) {\n    // If we should immediately abort this leave function,\n    // don't run the leave transition at all.\n    const idx = this.keysToAbortLeave.indexOf(key);\n\n    if (idx !== -1) {\n      return;\n    }\n\n    this.currentlyTransitioningKeys[key] = true;\n    const component = this.refs[key];\n\n    if (component.componentWillLeave) {\n      component.componentWillLeave(this._handleDoneLeaving.bind(this, key));\n    } else {\n      // Note that this is somewhat dangerous b/c it calls setState()\n      // again, effectively mutating the component before all the work\n      // is done.\n      this._handleDoneLeaving(key);\n    }\n  }\n\n  _handleDoneLeaving(key) {\n    // If we should immediately abort the leave,\n    // then skip this altogether\n    const idx = this.keysToAbortLeave.indexOf(key);\n\n    if (idx !== -1) {\n      return;\n    }\n\n    const component = this.refs[key];\n\n    if (component.componentDidLeave) {\n      component.componentDidLeave();\n    }\n\n    delete this.currentlyTransitioningKeys[key];\n    const currentChildMapping = getChildMapping((0, _preact.toChildArray)(this.props.children) || []);\n\n    if (currentChildMapping && currentChildMapping.hasOwnProperty(key)) {\n      // This entered again before it fully left. Add it again.\n      this.performEnter(key);\n    } else {\n      const children = assign({}, this.state.children);\n      delete children[key];\n      this.setState({\n        children\n      });\n    }\n  }\n\n  render(_ref, _ref2) {\n    let {\n      childFactory,\n      transitionLeave,\n      transitionName,\n      transitionAppear,\n      transitionEnter,\n      transitionLeaveTimeout,\n      transitionEnterTimeout,\n      transitionAppearTimeout,\n      component,\n      ...props\n    } = _ref;\n    let {\n      children\n    } = _ref2;\n    // TODO: we could get rid of the need for the wrapper node\n    // by cloning a single child\n    const childrenToRender = [];\n\n    for (const key in children) {\n      if (children.hasOwnProperty(key)) {\n        const child = children[key];\n\n        if (child) {\n          const ref = linkRef(this, key),\n                el = (0, _preact.cloneElement)(childFactory(child), {\n            ref,\n            key\n          });\n          childrenToRender.push(el);\n        }\n      }\n    }\n\n    return (0, _preact.h)(component, props, childrenToRender);\n  }\n\n}\n\nTransitionGroup.defaultProps = {\n  component: 'span',\n  childFactory: identity\n};\nmodule.exports = TransitionGroup;", "\"use strict\";\n\nvar _preact = require(\"preact\");\n\nvar _core = require(\"@uppy/core\");\n\n/* eslint-disable jsx-a11y/no-noninteractive-element-interactions  */\n\n/* eslint-disable jsx-a11y/click-events-have-key-events */\nconst FadeIn = require(\"./FadeIn.js\");\n\nconst TransitionGroup = require(\"./TransitionGroup.js\");\n\nconst packageJson = {\n  \"version\": \"2.1.1\"\n};\n/**\n * Informer\n * Shows rad message bubbles\n * used like this: `uppy.info('hello world', 'info', 5000)`\n * or for errors: `uppy.info('Error uploading img.jpg', 'error', 5000)`\n *\n */\n\nclass Informer extends _core.UIPlugin {\n  constructor(uppy, opts) {\n    super(uppy, opts);\n\n    this.render = state => {\n      return (0, _preact.h)(\"div\", {\n        className: \"uppy uppy-Informer\"\n      }, (0, _preact.h)(TransitionGroup, null, state.info.map(info => (0, _preact.h)(FadeIn, {\n        key: info.message\n      }, (0, _preact.h)(\"p\", {\n        role: \"alert\"\n      }, info.message, ' ', info.details && (0, _preact.h)(\"span\", {\n        \"aria-label\": info.details,\n        \"data-microtip-position\": \"top-left\",\n        \"data-microtip-size\": \"medium\",\n        role: \"tooltip\" // eslint-disable-next-line no-alert\n        ,\n        onClick: () => alert(`${info.message} \\n\\n ${info.details}`)\n      }, \"?\"))))));\n    };\n\n    this.type = 'progressindicator';\n    this.id = this.opts.id || 'Informer';\n    this.title = 'Informer'; // set default options\n\n    const defaultOptions = {}; // merge default options with the ones set by user\n\n    this.opts = { ...defaultOptions,\n      ...opts\n    };\n  }\n\n  install() {\n    const {\n      target\n    } = this.opts;\n\n    if (target) {\n      this.mount(target, this);\n    }\n  }\n\n}\n\nInformer.VERSION = packageJson.version;\nmodule.exports = Informer;", "\"use strict\";\n\nmodule.exports = require(\"./Informer.js\");", "!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?t(exports):\"function\"==typeof define&&define.amd?define(\"exifr\",[\"exports\"],t):t((e=\"undefined\"!=typeof globalThis?globalThis:e||self).exifr={})}(this,(function(e){\"use strict\";function t(e,t,s){return t in e?Object.defineProperty(e,t,{value:s,enumerable:!0,configurable:!0,writable:!0}):e[t]=s,e}var s=\"undefined\"!=typeof self?self:global;const i=\"undefined\"!=typeof navigator,n=i&&\"undefined\"==typeof HTMLImageElement,r=!(\"undefined\"==typeof global||\"undefined\"==typeof process||!process.versions||!process.versions.node),a=s.Buffer,h=!!a,f=e=>void 0!==e;function l(e){return void 0===e||(e instanceof Map?0===e.size:0===Object.values(e).filter(f).length)}function o(e){let t=new Error(e);throw delete t.stack,t}function u(e){let t=function(e){let t=0;return e.ifd0.enabled&&(t+=1024),e.exif.enabled&&(t+=2048),e.makerNote&&(t+=2048),e.userComment&&(t+=1024),e.gps.enabled&&(t+=512),e.interop.enabled&&(t+=100),e.ifd1.enabled&&(t+=1024),t+2048}(e);return e.jfif.enabled&&(t+=50),e.xmp.enabled&&(t+=2e4),e.iptc.enabled&&(t+=14e3),e.icc.enabled&&(t+=6e3),t}const d=e=>String.fromCharCode.apply(null,e),c=\"undefined\"!=typeof TextDecoder?new TextDecoder(\"utf-8\"):void 0;class p{static from(e,t){return e instanceof this&&e.le===t?e:new p(e,void 0,void 0,t)}constructor(e,t=0,s,i){if(\"boolean\"==typeof i&&(this.le=i),Array.isArray(e)&&(e=new Uint8Array(e)),0===e)this.byteOffset=0,this.byteLength=0;else if(e instanceof ArrayBuffer){void 0===s&&(s=e.byteLength-t);let i=new DataView(e,t,s);this._swapDataView(i)}else if(e instanceof Uint8Array||e instanceof DataView||e instanceof p){void 0===s&&(s=e.byteLength-t),(t+=e.byteOffset)+s>e.byteOffset+e.byteLength&&o(\"Creating view outside of available memory in ArrayBuffer\");let i=new DataView(e.buffer,t,s);this._swapDataView(i)}else if(\"number\"==typeof e){let t=new DataView(new ArrayBuffer(e));this._swapDataView(t)}else o(\"Invalid input argument for BufferView: \"+e)}_swapArrayBuffer(e){this._swapDataView(new DataView(e))}_swapBuffer(e){this._swapDataView(new DataView(e.buffer,e.byteOffset,e.byteLength))}_swapDataView(e){this.dataView=e,this.buffer=e.buffer,this.byteOffset=e.byteOffset,this.byteLength=e.byteLength}_lengthToEnd(e){return this.byteLength-e}set(e,t,s=p){return e instanceof DataView||e instanceof p?e=new Uint8Array(e.buffer,e.byteOffset,e.byteLength):e instanceof ArrayBuffer&&(e=new Uint8Array(e)),e instanceof Uint8Array||o(\"BufferView.set(): Invalid data argument.\"),this.toUint8().set(e,t),new s(this,t,e.byteLength)}subarray(e,t){return t=t||this._lengthToEnd(e),new p(this,e,t)}toUint8(){return new Uint8Array(this.buffer,this.byteOffset,this.byteLength)}getUint8Array(e,t){return new Uint8Array(this.buffer,this.byteOffset+e,t)}getString(e=0,t=this.byteLength){let s=this.getUint8Array(e,t);return i=s,c?c.decode(i):h?Buffer.from(i).toString(\"utf8\"):decodeURIComponent(escape(d(i)));var i}getLatin1String(e=0,t=this.byteLength){let s=this.getUint8Array(e,t);return d(s)}getUnicodeString(e=0,t=this.byteLength){const s=[];for(let i=0;i<t&&e+i<this.byteLength;i+=2)s.push(this.getUint16(e+i));return d(s)}getInt8(e){return this.dataView.getInt8(e)}getUint8(e){return this.dataView.getUint8(e)}getInt16(e,t=this.le){return this.dataView.getInt16(e,t)}getInt32(e,t=this.le){return this.dataView.getInt32(e,t)}getUint16(e,t=this.le){return this.dataView.getUint16(e,t)}getUint32(e,t=this.le){return this.dataView.getUint32(e,t)}getFloat32(e,t=this.le){return this.dataView.getFloat32(e,t)}getFloat64(e,t=this.le){return this.dataView.getFloat64(e,t)}getFloat(e,t=this.le){return this.dataView.getFloat32(e,t)}getDouble(e,t=this.le){return this.dataView.getFloat64(e,t)}getUintBytes(e,t,s){switch(t){case 1:return this.getUint8(e,s);case 2:return this.getUint16(e,s);case 4:return this.getUint32(e,s);case 8:return this.getUint64&&this.getUint64(e,s)}}getUint(e,t,s){switch(t){case 8:return this.getUint8(e,s);case 16:return this.getUint16(e,s);case 32:return this.getUint32(e,s);case 64:return this.getUint64&&this.getUint64(e,s)}}toString(e){return this.dataView.toString(e,this.constructor.name)}ensureChunk(){}}function g(e,t){o(`${e} '${t}' was not loaded, try using full build of exifr.`)}class m extends Map{constructor(e){super(),this.kind=e}get(e,t){return this.has(e)||g(this.kind,e),t&&(e in t||function(e,t){o(`Unknown ${e} '${t}'.`)}(this.kind,e),t[e].enabled||g(this.kind,e)),super.get(e)}keyList(){return Array.from(this.keys())}}var y=new m(\"file parser\"),b=new m(\"segment parser\"),w=new m(\"file reader\");let k=s.fetch;const O=\"Invalid input argument\";function v(e,t){return(s=e).startsWith(\"data:\")||s.length>1e4?A(e,t,\"base64\"):r&&e.includes(\"://\")?S(e,t,\"url\",U):r?A(e,t,\"fs\"):i?S(e,t,\"url\",U):void o(O);var s}async function S(e,t,s,i){return w.has(s)?A(e,t,s):i?async function(e,t){let s=await t(e);return new p(s)}(e,i):void o(`Parser ${s} is not loaded`)}async function A(e,t,s){let i=new(w.get(s))(e,t);return await i.read(),i}const U=e=>k(e).then((e=>e.arrayBuffer())),x=e=>new Promise(((t,s)=>{let i=new FileReader;i.onloadend=()=>t(i.result||new ArrayBuffer),i.onerror=s,i.readAsArrayBuffer(e)}));class C extends Map{get tagKeys(){return this.allKeys||(this.allKeys=Array.from(this.keys())),this.allKeys}get tagValues(){return this.allValues||(this.allValues=Array.from(this.values())),this.allValues}}function B(e,t,s){let i=new C;for(let[e,t]of s)i.set(e,t);if(Array.isArray(t))for(let s of t)e.set(s,i);else e.set(t,i);return i}function V(e,t,s){let i,n=e.get(t);for(i of s)n.set(i[0],i[1])}const I=new Map,L=new Map,T=new Map,P=37500,z=37510,F=33723,j=34675,E=34665,_=34853,D=40965,M=[\"chunked\",\"firstChunkSize\",\"firstChunkSizeNode\",\"firstChunkSizeBrowser\",\"chunkSize\",\"chunkLimit\"],N=[\"jfif\",\"xmp\",\"icc\",\"iptc\",\"ihdr\"],R=[\"tiff\",...N],$=[\"ifd0\",\"ifd1\",\"exif\",\"gps\",\"interop\"],K=[...R,...$],W=[\"makerNote\",\"userComment\"],X=[\"translateKeys\",\"translateValues\",\"reviveValues\",\"multiSegment\"],H=[...X,\"sanitize\",\"mergeOutput\",\"silentErrors\"];class Y{get translate(){return this.translateKeys||this.translateValues||this.reviveValues}}class G extends Y{get needed(){return this.enabled||this.deps.size>0}constructor(e,s,i,n){if(super(),t(this,\"enabled\",!1),t(this,\"skip\",new Set),t(this,\"pick\",new Set),t(this,\"deps\",new Set),t(this,\"translateKeys\",!1),t(this,\"translateValues\",!1),t(this,\"reviveValues\",!1),this.key=e,this.enabled=s,this.parse=this.enabled,this.applyInheritables(n),this.canBeFiltered=$.includes(e),this.canBeFiltered&&(this.dict=I.get(e)),void 0!==i)if(Array.isArray(i))this.parse=this.enabled=!0,this.canBeFiltered&&i.length>0&&this.translateTagSet(i,this.pick);else if(\"object\"==typeof i){if(this.enabled=!0,this.parse=!1!==i.parse,this.canBeFiltered){let{pick:e,skip:t}=i;e&&e.length>0&&this.translateTagSet(e,this.pick),t&&t.length>0&&this.translateTagSet(t,this.skip)}this.applyInheritables(i)}else!0===i||!1===i?this.parse=this.enabled=i:o(`Invalid options argument: ${i}`)}applyInheritables(e){let t,s;for(t of X)s=e[t],void 0!==s&&(this[t]=s)}translateTagSet(e,t){if(this.dict){let s,i,{tagKeys:n,tagValues:r}=this.dict;for(s of e)\"string\"==typeof s?(i=r.indexOf(s),-1===i&&(i=n.indexOf(Number(s))),-1!==i&&t.add(Number(n[i]))):t.add(s)}else for(let s of e)t.add(s)}finalizeFilters(){!this.enabled&&this.deps.size>0?(this.enabled=!0,te(this.pick,this.deps)):this.enabled&&this.pick.size>0&&te(this.pick,this.deps)}}var J={jfif:!1,tiff:!0,xmp:!1,icc:!1,iptc:!1,ifd0:!0,ifd1:!1,exif:!0,gps:!0,interop:!1,ihdr:void 0,makerNote:!1,userComment:!1,multiSegment:!1,skip:[],pick:[],translateKeys:!0,translateValues:!0,reviveValues:!0,sanitize:!0,mergeOutput:!0,silentErrors:!0,chunked:!0,firstChunkSize:void 0,firstChunkSizeNode:512,firstChunkSizeBrowser:65536,chunkSize:65536,chunkLimit:5},q=new Map;class Q extends Y{static useCached(e){let t=q.get(e);return void 0!==t||(t=new this(e),q.set(e,t)),t}constructor(e){super(),!0===e?this.setupFromTrue():void 0===e?this.setupFromUndefined():Array.isArray(e)?this.setupFromArray(e):\"object\"==typeof e?this.setupFromObject(e):o(`Invalid options argument ${e}`),void 0===this.firstChunkSize&&(this.firstChunkSize=i?this.firstChunkSizeBrowser:this.firstChunkSizeNode),this.mergeOutput&&(this.ifd1.enabled=!1),this.filterNestedSegmentTags(),this.traverseTiffDependencyTree(),this.checkLoadedPlugins()}setupFromUndefined(){let e;for(e of M)this[e]=J[e];for(e of H)this[e]=J[e];for(e of W)this[e]=J[e];for(e of K)this[e]=new G(e,J[e],void 0,this)}setupFromTrue(){let e;for(e of M)this[e]=J[e];for(e of H)this[e]=J[e];for(e of W)this[e]=!0;for(e of K)this[e]=new G(e,!0,void 0,this)}setupFromArray(e){let t;for(t of M)this[t]=J[t];for(t of H)this[t]=J[t];for(t of W)this[t]=J[t];for(t of K)this[t]=new G(t,!1,void 0,this);this.setupGlobalFilters(e,void 0,$)}setupFromObject(e){let t;for(t of($.ifd0=$.ifd0||$.image,$.ifd1=$.ifd1||$.thumbnail,Object.assign(this,e),M))this[t]=ee(e[t],J[t]);for(t of H)this[t]=ee(e[t],J[t]);for(t of W)this[t]=ee(e[t],J[t]);for(t of R)this[t]=new G(t,J[t],e[t],this);for(t of $)this[t]=new G(t,J[t],e[t],this.tiff);this.setupGlobalFilters(e.pick,e.skip,$,K),!0===e.tiff?this.batchEnableWithBool($,!0):!1===e.tiff?this.batchEnableWithUserValue($,e):Array.isArray(e.tiff)?this.setupGlobalFilters(e.tiff,void 0,$):\"object\"==typeof e.tiff&&this.setupGlobalFilters(e.tiff.pick,e.tiff.skip,$)}batchEnableWithBool(e,t){for(let s of e)this[s].enabled=t}batchEnableWithUserValue(e,t){for(let s of e){let e=t[s];this[s].enabled=!1!==e&&void 0!==e}}setupGlobalFilters(e,t,s,i=s){if(e&&e.length){for(let e of i)this[e].enabled=!1;let t=Z(e,s);for(let[e,s]of t)te(this[e].pick,s),this[e].enabled=!0}else if(t&&t.length){let e=Z(t,s);for(let[t,s]of e)te(this[t].skip,s)}}filterNestedSegmentTags(){let{ifd0:e,exif:t,xmp:s,iptc:i,icc:n}=this;this.makerNote?t.deps.add(P):t.skip.add(P),this.userComment?t.deps.add(z):t.skip.add(z),s.enabled||e.skip.add(700),i.enabled||e.skip.add(F),n.enabled||e.skip.add(j)}traverseTiffDependencyTree(){let{ifd0:e,exif:t,gps:s,interop:i}=this;i.needed&&(t.deps.add(D),e.deps.add(D)),t.needed&&e.deps.add(E),s.needed&&e.deps.add(_),this.tiff.enabled=$.some((e=>!0===this[e].enabled))||this.makerNote||this.userComment;for(let e of $)this[e].finalizeFilters()}get onlyTiff(){return!N.map((e=>this[e].enabled)).some((e=>!0===e))&&this.tiff.enabled}checkLoadedPlugins(){for(let e of R)this[e].enabled&&!b.has(e)&&g(\"segment parser\",e)}}function Z(e,t){let s,i,n,r,a=[];for(n of t){for(r of(s=I.get(n),i=[],s))(e.includes(r[0])||e.includes(r[1]))&&i.push(r[0]);i.length&&a.push([n,i])}return a}function ee(e,t){return void 0!==e?e:void 0!==t?t:void 0}function te(e,t){for(let s of t)e.add(s)}t(Q,\"default\",J);class se{constructor(e){t(this,\"parsers\",{}),t(this,\"output\",{}),t(this,\"errors\",[]),t(this,\"pushToErrors\",(e=>this.errors.push(e))),this.options=Q.useCached(e)}async read(e){this.file=await function(e,t){return\"string\"==typeof e?v(e,t):i&&!n&&e instanceof HTMLImageElement?v(e.src,t):e instanceof Uint8Array||e instanceof ArrayBuffer||e instanceof DataView?new p(e):i&&e instanceof Blob?S(e,t,\"blob\",x):void o(O)}(e,this.options)}setup(){if(this.fileParser)return;let{file:e}=this,t=e.getUint16(0);for(let[s,i]of y)if(i.canHandle(e,t))return this.fileParser=new i(this.options,this.file,this.parsers),e[s]=!0;this.file.close&&this.file.close(),o(\"Unknown file format\")}async parse(){let{output:e,errors:t}=this;return this.setup(),this.options.silentErrors?(await this.executeParsers().catch(this.pushToErrors),t.push(...this.fileParser.errors)):await this.executeParsers(),this.file.close&&this.file.close(),this.options.silentErrors&&t.length>0&&(e.errors=t),l(s=e)?void 0:s;var s}async executeParsers(){let{output:e}=this;await this.fileParser.parse();let t=Object.values(this.parsers).map((async t=>{let s=await t.parse();t.assignToOutput(e,s)}));this.options.silentErrors&&(t=t.map((e=>e.catch(this.pushToErrors)))),await Promise.all(t)}async extractThumbnail(){this.setup();let{options:e,file:t}=this,s=b.get(\"tiff\",e);var i;if(t.tiff?i={start:0,type:\"tiff\"}:t.jpeg&&(i=await this.fileParser.getOrFindSegment(\"tiff\")),void 0===i)return;let n=await this.fileParser.ensureSegmentChunk(i),r=this.parsers.tiff=new s(n,e,t),a=await r.extractThumbnail();return t.close&&t.close(),a}}async function ie(e,t){let s=new se(t);return await s.read(e),s.parse()}var ne=Object.freeze({__proto__:null,parse:ie,Exifr:se,fileParsers:y,segmentParsers:b,fileReaders:w,tagKeys:I,tagValues:L,tagRevivers:T,createDictionary:B,extendDictionary:V,fetchUrlAsArrayBuffer:U,readBlobAsArrayBuffer:x,chunkedProps:M,otherSegments:N,segments:R,tiffBlocks:$,segmentsAndBlocks:K,tiffExtractables:W,inheritables:X,allFormatters:H,Options:Q});class re{static findPosition(e,t){let s=e.getUint16(t+2)+2,i=\"function\"==typeof this.headerLength?this.headerLength(e,t,s):this.headerLength,n=t+i,r=s-i;return{offset:t,length:s,headerLength:i,start:n,size:r,end:n+r}}static parse(e,t={}){return new this(e,new Q({[this.type]:t}),e).parse()}normalizeInput(e){return e instanceof p?e:new p(e)}constructor(e,s={},i){t(this,\"errors\",[]),t(this,\"raw\",new Map),t(this,\"handleError\",(e=>{if(!this.options.silentErrors)throw e;this.errors.push(e.message)})),this.chunk=this.normalizeInput(e),this.file=i,this.type=this.constructor.type,this.globalOptions=this.options=s,this.localOptions=s[this.type],this.canTranslate=this.localOptions&&this.localOptions.translate}translate(){this.canTranslate&&(this.translated=this.translateBlock(this.raw,this.type))}get output(){return this.translated?this.translated:this.raw?Object.fromEntries(this.raw):void 0}translateBlock(e,t){let s=T.get(t),i=L.get(t),n=I.get(t),r=this.options[t],a=r.reviveValues&&!!s,h=r.translateValues&&!!i,f=r.translateKeys&&!!n,l={};for(let[t,r]of e)a&&s.has(t)?r=s.get(t)(r):h&&i.has(t)&&(r=this.translateValue(r,i.get(t))),f&&n.has(t)&&(t=n.get(t)||t),l[t]=r;return l}translateValue(e,t){return t[e]||t.DEFAULT||e}assignToOutput(e,t){this.assignObjectToOutput(e,this.constructor.type,t)}assignObjectToOutput(e,t,s){if(this.globalOptions.mergeOutput)return Object.assign(e,s);e[t]?Object.assign(e[t],s):e[t]=s}}t(re,\"headerLength\",4),t(re,\"type\",void 0),t(re,\"multiSegment\",!1),t(re,\"canHandle\",(()=>!1));function ae(e){return 192===e||194===e||196===e||219===e||221===e||218===e||254===e}function he(e){return e>=224&&e<=239}function fe(e,t,s){for(let[i,n]of b)if(n.canHandle(e,t,s))return i}class le extends class{constructor(e,s,i){t(this,\"errors\",[]),t(this,\"ensureSegmentChunk\",(async e=>{let t=e.start,s=e.size||65536;if(this.file.chunked)if(this.file.available(t,s))e.chunk=this.file.subarray(t,s);else try{e.chunk=await this.file.readChunk(t,s)}catch(t){o(`Couldn't read segment: ${JSON.stringify(e)}. ${t.message}`)}else this.file.byteLength>t+s?e.chunk=this.file.subarray(t,s):void 0===e.size?e.chunk=this.file.subarray(t):o(\"Segment unreachable: \"+JSON.stringify(e));return e.chunk})),this.extendOptions&&this.extendOptions(e),this.options=e,this.file=s,this.parsers=i}injectSegment(e,t){this.options[e].enabled&&this.createParser(e,t)}createParser(e,t){let s=new(b.get(e))(t,this.options,this.file);return this.parsers[e]=s}createParsers(e){for(let t of e){let{type:e,chunk:s}=t,i=this.options[e];if(i&&i.enabled){let t=this.parsers[e];t&&t.append||t||this.createParser(e,s)}}}async readSegments(e){let t=e.map(this.ensureSegmentChunk);await Promise.all(t)}}{constructor(...e){super(...e),t(this,\"appSegments\",[]),t(this,\"jpegSegments\",[]),t(this,\"unknownSegments\",[])}static canHandle(e,t){return 65496===t}async parse(){await this.findAppSegments(),await this.readSegments(this.appSegments),this.mergeMultiSegments(),this.createParsers(this.mergedAppSegments||this.appSegments)}setupSegmentFinderArgs(e){!0===e?(this.findAll=!0,this.wanted=new Set(b.keyList())):(e=void 0===e?b.keyList().filter((e=>this.options[e].enabled)):e.filter((e=>this.options[e].enabled&&b.has(e))),this.findAll=!1,this.remaining=new Set(e),this.wanted=new Set(e)),this.unfinishedMultiSegment=!1}async findAppSegments(e=0,t){this.setupSegmentFinderArgs(t);let{file:s,findAll:i,wanted:n,remaining:r}=this;if(!i&&this.file.chunked&&(i=Array.from(n).some((e=>{let t=b.get(e),s=this.options[e];return t.multiSegment&&s.multiSegment})),i&&await this.file.readWhole()),e=this.findAppSegmentsInRange(e,s.byteLength),!this.options.onlyTiff&&s.chunked){let t=!1;for(;r.size>0&&!t&&(s.canReadNextChunk||this.unfinishedMultiSegment);){let{nextChunkOffset:i}=s,n=this.appSegments.some((e=>!this.file.available(e.offset||e.start,e.length||e.size)));if(t=e>i&&!n?!await s.readNextChunk(e):!await s.readNextChunk(i),void 0===(e=this.findAppSegmentsInRange(e,s.byteLength)))return}}}findAppSegmentsInRange(e,t){t-=2;let s,i,n,r,a,h,{file:f,findAll:l,wanted:o,remaining:u,options:d}=this;for(;e<t;e++)if(255===f.getUint8(e))if(s=f.getUint8(e+1),he(s)){if(i=f.getUint16(e+2),n=fe(f,e,i),n&&o.has(n)&&(r=b.get(n),a=r.findPosition(f,e),h=d[n],a.type=n,this.appSegments.push(a),!l&&(r.multiSegment&&h.multiSegment?(this.unfinishedMultiSegment=a.chunkNumber<a.chunkCount,this.unfinishedMultiSegment||u.delete(n)):u.delete(n),0===u.size)))break;d.recordUnknownSegments&&(a=re.findPosition(f,e),a.marker=s,this.unknownSegments.push(a)),e+=i+1}else if(ae(s)){if(i=f.getUint16(e+2),218===s&&!1!==d.stopAfterSos)return;d.recordJpegSegments&&this.jpegSegments.push({offset:e,length:i,marker:s}),e+=i+1}return e}mergeMultiSegments(){if(!this.appSegments.some((e=>e.multiSegment)))return;let e=function(e,t){let s,i,n,r=new Map;for(let a=0;a<e.length;a++)s=e[a],i=s[t],r.has(i)?n=r.get(i):r.set(i,n=[]),n.push(s);return Array.from(r)}(this.appSegments,\"type\");this.mergedAppSegments=e.map((([e,t])=>{let s=b.get(e,this.options);if(s.handleMultiSegments){return{type:e,chunk:s.handleMultiSegments(t)}}return t[0]}))}getSegment(e){return this.appSegments.find((t=>t.type===e))}async getOrFindSegment(e){let t=this.getSegment(e);return void 0===t&&(await this.findAppSegments(0,[e]),t=this.getSegment(e)),t}}t(le,\"type\",\"jpeg\"),y.set(\"jpeg\",le);const oe=[void 0,1,1,2,4,8,1,1,2,4,8,4,8,4];class ue extends re{parseHeader(){var e=this.chunk.getUint16();18761===e?this.le=!0:19789===e&&(this.le=!1),this.chunk.le=this.le,this.headerParsed=!0}parseTags(e,t,s=new Map){let{pick:i,skip:n}=this.options[t];i=new Set(i);let r=i.size>0,a=0===n.size,h=this.chunk.getUint16(e);e+=2;for(let f=0;f<h;f++){let h=this.chunk.getUint16(e);if(r){if(i.has(h)&&(s.set(h,this.parseTag(e,h,t)),i.delete(h),0===i.size))break}else!a&&n.has(h)||s.set(h,this.parseTag(e,h,t));e+=12}return s}parseTag(e,t,s){let{chunk:i}=this,n=i.getUint16(e+2),r=i.getUint32(e+4),a=oe[n];if(a*r<=4?e+=8:e=i.getUint32(e+8),(n<1||n>13)&&o(`Invalid TIFF value type. block: ${s.toUpperCase()}, tag: ${t.toString(16)}, type: ${n}, offset ${e}`),e>i.byteLength&&o(`Invalid TIFF value offset. block: ${s.toUpperCase()}, tag: ${t.toString(16)}, type: ${n}, offset ${e} is outside of chunk size ${i.byteLength}`),1===n)return i.getUint8Array(e,r);if(2===n)return\"\"===(h=function(e){for(;e.endsWith(\"\\0\");)e=e.slice(0,-1);return e}(h=i.getString(e,r)).trim())?void 0:h;var h;if(7===n)return i.getUint8Array(e,r);if(1===r)return this.parseTagValue(n,e);{let t=new(function(e){switch(e){case 1:return Uint8Array;case 3:return Uint16Array;case 4:return Uint32Array;case 5:return Array;case 6:return Int8Array;case 8:return Int16Array;case 9:return Int32Array;case 10:return Array;case 11:return Float32Array;case 12:return Float64Array;default:return Array}}(n))(r),s=a;for(let i=0;i<r;i++)t[i]=this.parseTagValue(n,e),e+=s;return t}}parseTagValue(e,t){let{chunk:s}=this;switch(e){case 1:return s.getUint8(t);case 3:return s.getUint16(t);case 4:return s.getUint32(t);case 5:return s.getUint32(t)/s.getUint32(t+4);case 6:return s.getInt8(t);case 8:return s.getInt16(t);case 9:return s.getInt32(t);case 10:return s.getInt32(t)/s.getInt32(t+4);case 11:return s.getFloat(t);case 12:return s.getDouble(t);case 13:return s.getUint32(t);default:o(`Invalid tiff type ${e}`)}}}class de extends ue{static canHandle(e,t){return 225===e.getUint8(t+1)&&1165519206===e.getUint32(t+4)&&0===e.getUint16(t+8)}async parse(){this.parseHeader();let{options:e}=this;return e.ifd0.enabled&&await this.parseIfd0Block(),e.exif.enabled&&await this.safeParse(\"parseExifBlock\"),e.gps.enabled&&await this.safeParse(\"parseGpsBlock\"),e.interop.enabled&&await this.safeParse(\"parseInteropBlock\"),e.ifd1.enabled&&await this.safeParse(\"parseThumbnailBlock\"),this.createOutput()}safeParse(e){let t=this[e]();return void 0!==t.catch&&(t=t.catch(this.handleError)),t}findIfd0Offset(){void 0===this.ifd0Offset&&(this.ifd0Offset=this.chunk.getUint32(4))}findIfd1Offset(){if(void 0===this.ifd1Offset){this.findIfd0Offset();let e=this.chunk.getUint16(this.ifd0Offset),t=this.ifd0Offset+2+12*e;this.ifd1Offset=this.chunk.getUint32(t)}}parseBlock(e,t){let s=new Map;return this[t]=s,this.parseTags(e,t,s),s}async parseIfd0Block(){if(this.ifd0)return;let{file:e}=this;this.findIfd0Offset(),this.ifd0Offset<8&&o(\"Malformed EXIF data\"),!e.chunked&&this.ifd0Offset>e.byteLength&&o(`IFD0 offset points to outside of file.\\nthis.ifd0Offset: ${this.ifd0Offset}, file.byteLength: ${e.byteLength}`),e.tiff&&await e.ensureChunk(this.ifd0Offset,u(this.options));let t=this.parseBlock(this.ifd0Offset,\"ifd0\");return 0!==t.size?(this.exifOffset=t.get(E),this.interopOffset=t.get(D),this.gpsOffset=t.get(_),this.xmp=t.get(700),this.iptc=t.get(F),this.icc=t.get(j),this.options.sanitize&&(t.delete(E),t.delete(D),t.delete(_),t.delete(700),t.delete(F),t.delete(j)),t):void 0}async parseExifBlock(){if(this.exif)return;if(this.ifd0||await this.parseIfd0Block(),void 0===this.exifOffset)return;this.file.tiff&&await this.file.ensureChunk(this.exifOffset,u(this.options));let e=this.parseBlock(this.exifOffset,\"exif\");return this.interopOffset||(this.interopOffset=e.get(D)),this.makerNote=e.get(P),this.userComment=e.get(z),this.options.sanitize&&(e.delete(D),e.delete(P),e.delete(z)),this.unpack(e,41728),this.unpack(e,41729),e}unpack(e,t){let s=e.get(t);s&&1===s.length&&e.set(t,s[0])}async parseGpsBlock(){if(this.gps)return;if(this.ifd0||await this.parseIfd0Block(),void 0===this.gpsOffset)return;let e=this.parseBlock(this.gpsOffset,\"gps\");return e&&e.has(2)&&e.has(4)&&(e.set(\"latitude\",ce(...e.get(2),e.get(1))),e.set(\"longitude\",ce(...e.get(4),e.get(3)))),e}async parseInteropBlock(){if(!this.interop&&(this.ifd0||await this.parseIfd0Block(),void 0!==this.interopOffset||this.exif||await this.parseExifBlock(),void 0!==this.interopOffset))return this.parseBlock(this.interopOffset,\"interop\")}async parseThumbnailBlock(e=!1){if(!this.ifd1&&!this.ifd1Parsed&&(!this.options.mergeOutput||e))return this.findIfd1Offset(),this.ifd1Offset>0&&(this.parseBlock(this.ifd1Offset,\"ifd1\"),this.ifd1Parsed=!0),this.ifd1}async extractThumbnail(){if(this.headerParsed||this.parseHeader(),this.ifd1Parsed||await this.parseThumbnailBlock(!0),void 0===this.ifd1)return;let e=this.ifd1.get(513),t=this.ifd1.get(514);return this.chunk.getUint8Array(e,t)}get image(){return this.ifd0}get thumbnail(){return this.ifd1}createOutput(){let e,t,s,i={};for(t of $)if(e=this[t],!l(e))if(s=this.canTranslate?this.translateBlock(e,t):Object.fromEntries(e),this.options.mergeOutput){if(\"ifd1\"===t)continue;Object.assign(i,s)}else i[t]=s;return this.makerNote&&(i.makerNote=this.makerNote),this.userComment&&(i.userComment=this.userComment),i}assignToOutput(e,t){if(this.globalOptions.mergeOutput)Object.assign(e,t);else for(let[s,i]of Object.entries(t))this.assignObjectToOutput(e,s,i)}}function ce(e,t,s,i){var n=e+t/60+s/3600;return\"S\"!==i&&\"W\"!==i||(n*=-1),n}t(de,\"type\",\"tiff\"),t(de,\"headerLength\",10),b.set(\"tiff\",de);var pe=Object.freeze({__proto__:null,default:ne,Exifr:se,fileParsers:y,segmentParsers:b,fileReaders:w,tagKeys:I,tagValues:L,tagRevivers:T,createDictionary:B,extendDictionary:V,fetchUrlAsArrayBuffer:U,readBlobAsArrayBuffer:x,chunkedProps:M,otherSegments:N,segments:R,tiffBlocks:$,segmentsAndBlocks:K,tiffExtractables:W,inheritables:X,allFormatters:H,Options:Q,parse:ie});const ge={ifd0:!1,ifd1:!1,exif:!1,gps:!1,interop:!1,sanitize:!1,reviveValues:!0,translateKeys:!1,translateValues:!1,mergeOutput:!1},me=Object.assign({},ge,{firstChunkSize:4e4,gps:[1,2,3,4]});const ye=Object.assign({},ge,{tiff:!1,ifd1:!0,mergeOutput:!1});const be=Object.assign({},ge,{firstChunkSize:4e4,ifd0:[274]});async function we(e){let t=new se(be);await t.read(e);let s=await t.parse();if(s&&s.ifd0)return s.ifd0[274]}const ke=Object.freeze({1:{dimensionSwapped:!1,scaleX:1,scaleY:1,deg:0,rad:0},2:{dimensionSwapped:!1,scaleX:-1,scaleY:1,deg:0,rad:0},3:{dimensionSwapped:!1,scaleX:1,scaleY:1,deg:180,rad:180*Math.PI/180},4:{dimensionSwapped:!1,scaleX:-1,scaleY:1,deg:180,rad:180*Math.PI/180},5:{dimensionSwapped:!0,scaleX:1,scaleY:-1,deg:90,rad:90*Math.PI/180},6:{dimensionSwapped:!0,scaleX:1,scaleY:1,deg:90,rad:90*Math.PI/180},7:{dimensionSwapped:!0,scaleX:1,scaleY:-1,deg:270,rad:270*Math.PI/180},8:{dimensionSwapped:!0,scaleX:1,scaleY:1,deg:270,rad:270*Math.PI/180}});if(e.rotateCanvas=!0,e.rotateCss=!0,\"object\"==typeof navigator){let t=navigator.userAgent;if(t.includes(\"iPad\")||t.includes(\"iPhone\")){let s=t.match(/OS (\\d+)_(\\d+)/);if(s){let[,t,i]=s,n=Number(t)+.1*Number(i);e.rotateCanvas=n<13.4,e.rotateCss=!1}}else if(t.includes(\"OS X 10\")){let[,s]=t.match(/OS X 10[_.](\\d+)/);e.rotateCanvas=e.rotateCss=Number(s)<15}if(t.includes(\"Chrome/\")){let[,s]=t.match(/Chrome\\/(\\d+)/);e.rotateCanvas=e.rotateCss=Number(s)<81}else if(t.includes(\"Firefox/\")){let[,s]=t.match(/Firefox\\/(\\d+)/);e.rotateCanvas=e.rotateCss=Number(s)<77}}class Oe extends p{constructor(...e){super(...e),t(this,\"ranges\",new ve),0!==this.byteLength&&this.ranges.add(0,this.byteLength)}_tryExtend(e,t,s){if(0===e&&0===this.byteLength&&s){let e=new DataView(s.buffer||s,s.byteOffset,s.byteLength);this._swapDataView(e)}else{let s=e+t;if(s>this.byteLength){let{dataView:e}=this._extend(s);this._swapDataView(e)}}}_extend(e){let t;t=h?a.allocUnsafe(e):new Uint8Array(e);let s=new DataView(t.buffer,t.byteOffset,t.byteLength);return t.set(new Uint8Array(this.buffer,this.byteOffset,this.byteLength),0),{uintView:t,dataView:s}}subarray(e,t,s=!1){return t=t||this._lengthToEnd(e),s&&this._tryExtend(e,t),this.ranges.add(e,t),super.subarray(e,t)}set(e,t,s=!1){s&&this._tryExtend(t,e.byteLength,e);let i=super.set(e,t);return this.ranges.add(t,i.byteLength),i}async ensureChunk(e,t){this.chunked&&(this.ranges.available(e,t)||await this.readChunk(e,t))}available(e,t){return this.ranges.available(e,t)}}class ve{constructor(){t(this,\"list\",[])}get length(){return this.list.length}add(e,t,s=0){let i=e+t,n=this.list.filter((t=>Se(e,t.offset,i)||Se(e,t.end,i)));if(n.length>0){e=Math.min(e,...n.map((e=>e.offset))),i=Math.max(i,...n.map((e=>e.end))),t=i-e;let s=n.shift();s.offset=e,s.length=t,s.end=i,this.list=this.list.filter((e=>!n.includes(e)))}else this.list.push({offset:e,length:t,end:i})}available(e,t){let s=e+t;return this.list.some((t=>t.offset<=e&&s<=t.end))}}function Se(e,t,s){return e<=t&&t<=s}class Ae extends Oe{constructor(e,s){super(0),t(this,\"chunksRead\",0),this.input=e,this.options=s}async readWhole(){this.chunked=!1,await this.readChunk(this.nextChunkOffset)}async readChunked(){this.chunked=!0,await this.readChunk(0,this.options.firstChunkSize)}async readNextChunk(e=this.nextChunkOffset){if(this.fullyRead)return this.chunksRead++,!1;let t=this.options.chunkSize,s=await this.readChunk(e,t);return!!s&&s.byteLength===t}async readChunk(e,t){if(this.chunksRead++,0!==(t=this.safeWrapAddress(e,t)))return this._readChunk(e,t)}safeWrapAddress(e,t){return void 0!==this.size&&e+t>this.size?Math.max(0,this.size-e):t}get nextChunkOffset(){if(0!==this.ranges.list.length)return this.ranges.list[0].length}get canReadNextChunk(){return this.chunksRead<this.options.chunkLimit}get fullyRead(){return void 0!==this.size&&this.nextChunkOffset===this.size}read(){return this.options.chunked?this.readChunked():this.readWhole()}close(){}}w.set(\"blob\",class extends Ae{async readWhole(){this.chunked=!1;let e=await x(this.input);this._swapArrayBuffer(e)}readChunked(){return this.chunked=!0,this.size=this.input.size,super.readChunked()}async _readChunk(e,t){let s=t?e+t:void 0,i=this.input.slice(e,s),n=await x(i);return this.set(n,e,!0)}}),e.Exifr=se,e.Options=Q,e.allFormatters=H,e.chunkedProps=M,e.createDictionary=B,e.default=pe,e.extendDictionary=V,e.fetchUrlAsArrayBuffer=U,e.fileParsers=y,e.fileReaders=w,e.gps=async function(e){let t=new se(me);await t.read(e);let s=await t.parse();if(s&&s.gps){let{latitude:e,longitude:t}=s.gps;return{latitude:e,longitude:t}}},e.gpsOnlyOptions=me,e.inheritables=X,e.orientation=we,e.orientationOnlyOptions=be,e.otherSegments=N,e.parse=ie,e.readBlobAsArrayBuffer=x,e.rotation=async function(t){let s=await we(t);return Object.assign({canvas:e.rotateCanvas,css:e.rotateCss},ke[s])},e.rotations=ke,e.segmentParsers=b,e.segments=R,e.segmentsAndBlocks=K,e.tagKeys=I,e.tagRevivers=T,e.tagValues=L,e.thumbnail=async function(e){let t=new se(ye);await t.read(e);let s=await t.extractThumbnail();return s&&h?a.from(s):s},e.thumbnailOnlyOptions=ye,e.thumbnailUrl=async function(e){let t=await this.thumbnail(e);if(void 0!==t){let e=new Blob([t]);return URL.createObjectURL(e)}},e.tiffBlocks=$,e.tiffExtractables=W,Object.defineProperty(e,\"__esModule\",{value:!0})}));\n", "\"use strict\";\n\nconst DATA_URL_PATTERN = /^data:([^/]+\\/[^,;]+(?:[^,]*?))(;base64)?,([\\s\\S]*)$/;\n\nfunction dataURItoBlob(dataURI, opts, toFile) {\n  var _ref, _opts$mimeType;\n\n  // get the base64 data\n  const dataURIData = DATA_URL_PATTERN.exec(dataURI); // user may provide mime type, if not get it from data URI\n\n  const mimeType = (_ref = (_opts$mimeType = opts.mimeType) != null ? _opts$mimeType : dataURIData == null ? void 0 : dataURIData[1]) != null ? _ref : 'plain/text';\n  let data;\n\n  if (dataURIData[2] != null) {\n    const binary = atob(decodeURIComponent(dataURIData[3]));\n    const bytes = new Uint8Array(binary.length);\n\n    for (let i = 0; i < binary.length; i++) {\n      bytes[i] = binary.charCodeAt(i);\n    }\n\n    data = [bytes];\n  } else {\n    data = [decodeURIComponent(dataURIData[3])];\n  } // Convert to a File?\n\n\n  if (toFile) {\n    return new File(data, opts.name || '', {\n      type: mimeType\n    });\n  }\n\n  return new Blob(data, {\n    type: mimeType\n  });\n}\n\nmodule.exports = dataURItoBlob;", "\"use strict\";\n\nfunction isObjectURL(url) {\n  return url.startsWith('blob:');\n}\n\n/**\n * Check if a URL string is an object URL from `URL.createObjectURL`.\n *\n * @param {string} url\n * @returns {boolean}\n */\nmodule.exports = isObjectURL;", "\"use strict\";\n\nfunction isPreviewSupported(fileType) {\n  if (!fileType) return false; // list of images that browsers can preview\n\n  return /^[^/]+\\/(jpe?g|gif|png|svg|svg\\+xml|bmp|webp|avif)$/.test(fileType);\n}\n\nmodule.exports = isPreviewSupported;", "\"use strict\";\n\nmodule.exports = {\n  strings: {\n    generatingThumbnails: 'Generating thumbnails...'\n  }\n};", "\"use strict\";\n\nvar _core = require(\"@uppy/core\");\n\nvar _miniUmd = require(\"exifr/dist/mini.umd.js\");\n\nconst dataURItoBlob = require(\"@uppy/utils/lib/dataURItoBlob\");\n\nconst isObjectURL = require(\"@uppy/utils/lib/isObjectURL\");\n\nconst isPreviewSupported = require(\"@uppy/utils/lib/isPreviewSupported\");\n\nconst locale = require(\"./locale.js\");\n\nconst packageJson = {\n  \"version\": \"2.2.2\"\n};\n/**\n * Save a <canvas> element's content to a Blob object.\n *\n * @param {HTMLCanvasElement} canvas\n * @returns {Promise}\n */\n\nfunction canvasToBlob(canvas, type, quality) {\n  try {\n    canvas.getContext('2d').getImageData(0, 0, 1, 1);\n  } catch (err) {\n    if (err.code === 18) {\n      return Promise.reject(new Error('cannot read image, probably an svg with external resources'));\n    }\n  }\n\n  if (canvas.toBlob) {\n    return new Promise(resolve => {\n      canvas.toBlob(resolve, type, quality);\n    }).then(blob => {\n      if (blob === null) {\n        throw new Error('cannot read image, probably an svg with external resources');\n      }\n\n      return blob;\n    });\n  }\n\n  return Promise.resolve().then(() => {\n    return dataURItoBlob(canvas.toDataURL(type, quality), {});\n  }).then(blob => {\n    if (blob === null) {\n      throw new Error('could not extract blob, probably an old browser');\n    }\n\n    return blob;\n  });\n}\n\nfunction rotateImage(image, translate) {\n  let w = image.width;\n  let h = image.height;\n\n  if (translate.deg === 90 || translate.deg === 270) {\n    w = image.height;\n    h = image.width;\n  }\n\n  const canvas = document.createElement('canvas');\n  canvas.width = w;\n  canvas.height = h;\n  const context = canvas.getContext('2d');\n  context.translate(w / 2, h / 2);\n\n  if (translate.canvas) {\n    context.rotate(translate.rad);\n    context.scale(translate.scaleX, translate.scaleY);\n  }\n\n  context.drawImage(image, -image.width / 2, -image.height / 2, image.width, image.height);\n  return canvas;\n}\n/**\n * Make sure the image doesn\u2019t exceed browser/device canvas limits.\n * For ios with 256 RAM and ie\n */\n\n\nfunction protect(image) {\n  // https://stackoverflow.com/questions/6081483/maximum-size-of-a-canvas-element\n  const ratio = image.width / image.height;\n  const maxSquare = 5000000; // ios max canvas square\n\n  const maxSize = 4096; // ie max canvas dimensions\n\n  let maxW = Math.floor(Math.sqrt(maxSquare * ratio));\n  let maxH = Math.floor(maxSquare / Math.sqrt(maxSquare * ratio));\n\n  if (maxW > maxSize) {\n    maxW = maxSize;\n    maxH = Math.round(maxW / ratio);\n  }\n\n  if (maxH > maxSize) {\n    maxH = maxSize;\n    maxW = Math.round(ratio * maxH);\n  }\n\n  if (image.width > maxW) {\n    const canvas = document.createElement('canvas');\n    canvas.width = maxW;\n    canvas.height = maxH;\n    canvas.getContext('2d').drawImage(image, 0, 0, maxW, maxH);\n    return canvas;\n  }\n\n  return image;\n}\n/**\n * The Thumbnail Generator plugin\n */\n\n\nclass ThumbnailGenerator extends _core.UIPlugin {\n  constructor(uppy, opts) {\n    super(uppy, opts);\n\n    this.onFileAdded = file => {\n      if (!file.preview && file.data && isPreviewSupported(file.type) && !file.isRemote) {\n        this.addToQueue(file.id);\n      }\n    };\n\n    this.onCancelRequest = file => {\n      const index = this.queue.indexOf(file.id);\n\n      if (index !== -1) {\n        this.queue.splice(index, 1);\n      }\n    };\n\n    this.onFileRemoved = file => {\n      const index = this.queue.indexOf(file.id);\n\n      if (index !== -1) {\n        this.queue.splice(index, 1);\n      } // Clean up object URLs.\n\n\n      if (file.preview && isObjectURL(file.preview)) {\n        URL.revokeObjectURL(file.preview);\n      }\n    };\n\n    this.onRestored = () => {\n      const restoredFiles = this.uppy.getFiles().filter(file => file.isRestored);\n      restoredFiles.forEach(file => {\n        // Only add blob URLs; they are likely invalid after being restored.\n        if (!file.preview || isObjectURL(file.preview)) {\n          this.addToQueue(file.id);\n        }\n      });\n    };\n\n    this.onAllFilesRemoved = () => {\n      this.queue = [];\n    };\n\n    this.waitUntilAllProcessed = fileIDs => {\n      fileIDs.forEach(fileID => {\n        const file = this.uppy.getFile(fileID);\n        this.uppy.emit('preprocess-progress', file, {\n          mode: 'indeterminate',\n          message: this.i18n('generatingThumbnails')\n        });\n      });\n\n      const emitPreprocessCompleteForAll = () => {\n        fileIDs.forEach(fileID => {\n          const file = this.uppy.getFile(fileID);\n          this.uppy.emit('preprocess-complete', file);\n        });\n      };\n\n      return new Promise(resolve => {\n        if (this.queueProcessing) {\n          this.uppy.once('thumbnail:all-generated', () => {\n            emitPreprocessCompleteForAll();\n            resolve();\n          });\n        } else {\n          emitPreprocessCompleteForAll();\n          resolve();\n        }\n      });\n    };\n\n    this.type = 'modifier';\n    this.id = this.opts.id || 'ThumbnailGenerator';\n    this.title = 'Thumbnail Generator';\n    this.queue = [];\n    this.queueProcessing = false;\n    this.defaultThumbnailDimension = 200;\n    this.thumbnailType = this.opts.thumbnailType || 'image/jpeg';\n    this.defaultLocale = locale;\n    const defaultOptions = {\n      thumbnailWidth: null,\n      thumbnailHeight: null,\n      waitForThumbnailsBeforeUpload: false,\n      lazy: false\n    };\n    this.opts = { ...defaultOptions,\n      ...opts\n    };\n    this.i18nInit();\n\n    if (this.opts.lazy && this.opts.waitForThumbnailsBeforeUpload) {\n      throw new Error('ThumbnailGenerator: The `lazy` and `waitForThumbnailsBeforeUpload` options are mutually exclusive. Please ensure at most one of them is set to `true`.');\n    }\n  }\n  /**\n   * Create a thumbnail for the given Uppy file object.\n   *\n   * @param {{data: Blob}} file\n   * @param {number} targetWidth\n   * @param {number} targetHeight\n   * @returns {Promise}\n   */\n\n\n  createThumbnail(file, targetWidth, targetHeight) {\n    const originalUrl = URL.createObjectURL(file.data);\n    const onload = new Promise((resolve, reject) => {\n      const image = new Image();\n      image.src = originalUrl;\n      image.addEventListener('load', () => {\n        URL.revokeObjectURL(originalUrl);\n        resolve(image);\n      });\n      image.addEventListener('error', event => {\n        URL.revokeObjectURL(originalUrl);\n        reject(event.error || new Error('Could not create thumbnail'));\n      });\n    });\n    const orientationPromise = (0, _miniUmd.rotation)(file.data).catch(() => 1);\n    return Promise.all([onload, orientationPromise]).then(_ref => {\n      let [image, orientation] = _ref;\n      const dimensions = this.getProportionalDimensions(image, targetWidth, targetHeight, orientation.deg);\n      const rotatedImage = this.rotateImage(image, orientation);\n      const resizedImage = this.resizeImage(rotatedImage, dimensions.width, dimensions.height);\n      return this.canvasToBlob(resizedImage, this.thumbnailType, 80);\n    }).then(blob => {\n      return URL.createObjectURL(blob);\n    });\n  }\n  /**\n   * Get the new calculated dimensions for the given image and a target width\n   * or height. If both width and height are given, only width is taken into\n   * account. If neither width nor height are given, the default dimension\n   * is used.\n   */\n\n\n  getProportionalDimensions(img, width, height, rotation) {\n    // eslint-disable-line no-shadow\n    let aspect = img.width / img.height;\n\n    if (rotation === 90 || rotation === 270) {\n      aspect = img.height / img.width;\n    }\n\n    if (width != null) {\n      return {\n        width,\n        height: Math.round(width / aspect)\n      };\n    }\n\n    if (height != null) {\n      return {\n        width: Math.round(height * aspect),\n        height\n      };\n    }\n\n    return {\n      width: this.defaultThumbnailDimension,\n      height: Math.round(this.defaultThumbnailDimension / aspect)\n    };\n  }\n  /**\n   * Resize an image to the target `width` and `height`.\n   *\n   * Returns a Canvas with the resized image on it.\n   */\n\n\n  resizeImage(image, targetWidth, targetHeight) {\n    // Resizing in steps refactored to use a solution from\n    // https://blog.uploadcare.com/image-resize-in-browsers-is-broken-e38eed08df01\n    let img = this.protect(image);\n    let steps = Math.ceil(Math.log2(img.width / targetWidth));\n\n    if (steps < 1) {\n      steps = 1;\n    }\n\n    let sW = targetWidth * 2 ** (steps - 1);\n    let sH = targetHeight * 2 ** (steps - 1);\n    const x = 2;\n\n    while (steps--) {\n      const canvas = document.createElement('canvas');\n      canvas.width = sW;\n      canvas.height = sH;\n      canvas.getContext('2d').drawImage(img, 0, 0, sW, sH);\n      img = canvas;\n      sW = Math.round(sW / x);\n      sH = Math.round(sH / x);\n    }\n\n    return img;\n  }\n  /**\n   * Set the preview URL for a file.\n   */\n\n\n  setPreviewURL(fileID, preview) {\n    this.uppy.setFileState(fileID, {\n      preview\n    });\n  }\n\n  addToQueue(item) {\n    this.queue.push(item);\n\n    if (this.queueProcessing === false) {\n      this.processQueue();\n    }\n  }\n\n  processQueue() {\n    this.queueProcessing = true;\n\n    if (this.queue.length > 0) {\n      const current = this.uppy.getFile(this.queue.shift());\n\n      if (!current) {\n        this.uppy.log('[ThumbnailGenerator] file was removed before a thumbnail could be generated, but not removed from the queue. This is probably a bug', 'error');\n        return Promise.resolve();\n      }\n\n      return this.requestThumbnail(current).catch(() => {}) // eslint-disable-line node/handle-callback-err\n      .then(() => this.processQueue());\n    }\n\n    this.queueProcessing = false;\n    this.uppy.log('[ThumbnailGenerator] Emptied thumbnail queue');\n    this.uppy.emit('thumbnail:all-generated');\n    return Promise.resolve();\n  }\n\n  requestThumbnail(file) {\n    if (isPreviewSupported(file.type) && !file.isRemote) {\n      return this.createThumbnail(file, this.opts.thumbnailWidth, this.opts.thumbnailHeight).then(preview => {\n        this.setPreviewURL(file.id, preview);\n        this.uppy.log(`[ThumbnailGenerator] Generated thumbnail for ${file.id}`);\n        this.uppy.emit('thumbnail:generated', this.uppy.getFile(file.id), preview);\n      }).catch(err => {\n        this.uppy.log(`[ThumbnailGenerator] Failed thumbnail for ${file.id}:`, 'warning');\n        this.uppy.log(err, 'warning');\n        this.uppy.emit('thumbnail:error', this.uppy.getFile(file.id), err);\n      });\n    }\n\n    return Promise.resolve();\n  }\n\n  install() {\n    this.uppy.on('file-removed', this.onFileRemoved);\n    this.uppy.on('cancel-all', this.onAllFilesRemoved);\n\n    if (this.opts.lazy) {\n      this.uppy.on('thumbnail:request', this.onFileAdded);\n      this.uppy.on('thumbnail:cancel', this.onCancelRequest);\n    } else {\n      this.uppy.on('file-added', this.onFileAdded);\n      this.uppy.on('restored', this.onRestored);\n    }\n\n    if (this.opts.waitForThumbnailsBeforeUpload) {\n      this.uppy.addPreProcessor(this.waitUntilAllProcessed);\n    }\n  }\n\n  uninstall() {\n    this.uppy.off('file-removed', this.onFileRemoved);\n    this.uppy.off('cancel-all', this.onAllFilesRemoved);\n\n    if (this.opts.lazy) {\n      this.uppy.off('thumbnail:request', this.onFileAdded);\n      this.uppy.off('thumbnail:cancel', this.onCancelRequest);\n    } else {\n      this.uppy.off('file-added', this.onFileAdded);\n      this.uppy.off('restored', this.onRestored);\n    }\n\n    if (this.opts.waitForThumbnailsBeforeUpload) {\n      this.uppy.removePreProcessor(this.waitUntilAllProcessed);\n    }\n  }\n\n}\n\nThumbnailGenerator.VERSION = packageJson.version;\nmodule.exports = ThumbnailGenerator; // TODO: remove these methods from the prototype in the next major.\n\nThumbnailGenerator.prototype.canvasToBlob = canvasToBlob;\nThumbnailGenerator.prototype.protect = protect;\nThumbnailGenerator.prototype.rotateImage = rotateImage;", "\"use strict\";\n\nconst isDOMElement = require(\"./isDOMElement.js\");\n/**\n * Find one or more DOM elements.\n *\n * @param {string|Node} element\n * @returns {Node[]|null}\n */\n\n\nfunction findAllDOMElements(element) {\n  if (typeof element === 'string') {\n    const elements = document.querySelectorAll(element);\n    return elements.length === 0 ? null : Array.from(elements);\n  }\n\n  if (typeof element === 'object' && isDOMElement(element)) {\n    return [element];\n  }\n\n  return null;\n}\n\nmodule.exports = findAllDOMElements;", "\"use strict\";\n\nfunction getFilesAndDirectoriesFromDirectory(directoryReader, oldEntries, logDropError, _ref) {\n  let {\n    onSuccess\n  } = _ref;\n  directoryReader.readEntries(entries => {\n    const newEntries = [...oldEntries, ...entries]; // According to the FileSystem API spec, getFilesAndDirectoriesFromDirectory()\n    // must be called until it calls the onSuccess with an empty array.\n\n    if (entries.length) {\n      queueMicrotask(() => {\n        getFilesAndDirectoriesFromDirectory(directoryReader, newEntries, logDropError, {\n          onSuccess\n        });\n      }); // Done iterating this particular directory\n    } else {\n      onSuccess(newEntries);\n    }\n  }, // Make sure we resolve on error anyway, it's fine if only one directory couldn't be parsed!\n  error => {\n    logDropError(error);\n    onSuccess(oldEntries);\n  });\n}\n\n/**\n * Recursive function, calls the original callback() when the directory is entirely parsed.\n *\n * @param {FileSystemDirectoryReader} directoryReader\n * @param {Array} oldEntries\n * @param {Function} logDropError\n * @param {Function} callback - called with ([ all files and directories in that directoryReader ])\n */\nmodule.exports = getFilesAndDirectoriesFromDirectory;", "\"use strict\";\n\nconst getFilesAndDirectoriesFromDirectory = require(\"./getFilesAndDirectoriesFromDirectory.js\");\n/**\n * Interop between deprecated webkitGetAsEntry and standard getAsFileSystemHandle.\n */\n\n\nfunction getAsFileSystemHandleFromEntry(entry, logDropError) {\n  if (entry == null) return entry;\n  return {\n    // eslint-disable-next-line no-nested-ternary\n    kind: entry.isFile ? 'file' : entry.isDirectory ? 'directory' : undefined,\n    name: entry.name,\n\n    getFile() {\n      return new Promise((resolve, reject) => entry.file(resolve, reject));\n    },\n\n    async *values() {\n      // If the file is a directory.\n      const directoryReader = entry.createReader();\n      const entries = await new Promise(resolve => {\n        getFilesAndDirectoriesFromDirectory(directoryReader, [], logDropError, {\n          onSuccess: dirEntries => resolve(dirEntries.map(file => getAsFileSystemHandleFromEntry(file, logDropError)))\n        });\n      });\n      yield* entries;\n    }\n\n  };\n}\n\nasync function* createPromiseToAddFileOrParseDirectory(entry, relativePath) {\n  // For each dropped item, - make sure it's a file/directory, and start deepening in!\n  if (entry.kind === 'file') {\n    const file = await entry.getFile();\n\n    if (file !== null) {\n      file.relativePath = relativePath ? `${relativePath}/${entry.name}` : null;\n      yield file;\n    }\n  } else if (entry.kind === 'directory') {\n    for await (const handle of entry.values()) {\n      yield* createPromiseToAddFileOrParseDirectory(handle, `${relativePath}/${entry.name}`);\n    }\n  }\n}\n\nasync function* getFilesFromDataTransfer(dataTransfer, logDropError) {\n  const entries = await Promise.all(Array.from(dataTransfer.items, async item => {\n    var _await$item$getAsFile;\n\n    const lastResortFile = item.getAsFile(); // Chromium bug, see https://github.com/transloadit/uppy/issues/3505.\n\n    const entry = (_await$item$getAsFile = await (item.getAsFileSystemHandle == null ? void 0 : item.getAsFileSystemHandle())) != null ? _await$item$getAsFile : getAsFileSystemHandleFromEntry(item.webkitGetAsEntry(), logDropError);\n    return {\n      lastResortFile,\n      entry\n    };\n  }));\n\n  for (const {\n    lastResortFile,\n    entry\n  } of entries) {\n    // :entry can be null when we drop the url e.g.\n    if (entry != null) {\n      try {\n        yield* createPromiseToAddFileOrParseDirectory(entry, '');\n      } catch (err) {\n        if (lastResortFile) {\n          yield lastResortFile;\n        } else {\n          logDropError(err);\n        }\n      }\n    }\n  }\n}\n\nmodule.exports = getFilesFromDataTransfer;", "\"use strict\";\n\nconst toArray = require(\"../../toArray.js\"); // .files fallback, should be implemented in any browser\n\n\nfunction fallbackApi(dataTransfer) {\n  const files = toArray(dataTransfer.files);\n  return Promise.resolve(files);\n}\n\nmodule.exports = fallbackApi;", "\"use strict\";\n\nconst webkitGetAsEntryApi = require(\"./utils/webkitGetAsEntryApi/index.js\");\n\nconst fallbackApi = require(\"./utils/fallbackApi.js\");\n/**\n * Returns a promise that resolves to the array of dropped files (if a folder is\n * dropped, and browser supports folder parsing - promise resolves to the flat\n * array of all files in all directories).\n * Each file has .relativePath prop appended to it (e.g. \"/docs/Prague/ticket_from_prague_to_ufa.pdf\")\n * if browser supports it. Otherwise it's undefined.\n *\n * @param {DataTransfer} dataTransfer\n * @param {Function} logDropError - a function that's called every time some\n * folder or some file error out (e.g. because of the folder name being too long\n * on Windows). Notice that resulting promise will always be resolved anyway.\n *\n * @returns {Promise} - Array<File>\n */\n\n\nasync function getDroppedFiles(dataTransfer, _temp) {\n  let {\n    logDropError = () => {}\n  } = _temp === void 0 ? {} : _temp;\n\n  // Get all files from all subdirs. Works (at least) in Chrome, Mozilla, and Safari\n  try {\n    const accumulator = [];\n\n    for await (const file of webkitGetAsEntryApi(dataTransfer, logDropError)) {\n      accumulator.push(file);\n    }\n\n    return accumulator; // Otherwise just return all first-order files\n  } catch {\n    return fallbackApi(dataTransfer);\n  }\n}\n\nmodule.exports = getDroppedFiles;", "'use strict';\n\nvar safeIsNaN = Number.isNaN ||\n    function ponyfill(value) {\n        return typeof value === 'number' && value !== value;\n    };\nfunction isEqual(first, second) {\n    if (first === second) {\n        return true;\n    }\n    if (safeIsNaN(first) && safeIsNaN(second)) {\n        return true;\n    }\n    return false;\n}\nfunction areInputsEqual(newInputs, lastInputs) {\n    if (newInputs.length !== lastInputs.length) {\n        return false;\n    }\n    for (var i = 0; i < newInputs.length; i++) {\n        if (!isEqual(newInputs[i], lastInputs[i])) {\n            return false;\n        }\n    }\n    return true;\n}\n\nfunction memoizeOne(resultFn, isEqual) {\n    if (isEqual === void 0) { isEqual = areInputsEqual; }\n    var lastThis;\n    var lastArgs = [];\n    var lastResult;\n    var calledOnce = false;\n    function memoized() {\n        var newArgs = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            newArgs[_i] = arguments[_i];\n        }\n        if (calledOnce && lastThis === this && isEqual(newArgs, lastArgs)) {\n            return lastResult;\n        }\n        lastResult = resultFn.apply(this, newArgs);\n        calledOnce = true;\n        lastThis = this;\n        lastArgs = newArgs;\n        return lastResult;\n    }\n    return memoized;\n}\n\nmodule.exports = memoizeOne;\n", "/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n    nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n *   console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n  return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n *  Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n *  The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n *  Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n *   'leading': true,\n *   'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n  var lastArgs,\n      lastThis,\n      maxWait,\n      result,\n      timerId,\n      lastCallTime,\n      lastInvokeTime = 0,\n      leading = false,\n      maxing = false,\n      trailing = true;\n\n  if (typeof func != 'function') {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  wait = toNumber(wait) || 0;\n  if (isObject(options)) {\n    leading = !!options.leading;\n    maxing = 'maxWait' in options;\n    maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n    trailing = 'trailing' in options ? !!options.trailing : trailing;\n  }\n\n  function invokeFunc(time) {\n    var args = lastArgs,\n        thisArg = lastThis;\n\n    lastArgs = lastThis = undefined;\n    lastInvokeTime = time;\n    result = func.apply(thisArg, args);\n    return result;\n  }\n\n  function leadingEdge(time) {\n    // Reset any `maxWait` timer.\n    lastInvokeTime = time;\n    // Start the timer for the trailing edge.\n    timerId = setTimeout(timerExpired, wait);\n    // Invoke the leading edge.\n    return leading ? invokeFunc(time) : result;\n  }\n\n  function remainingWait(time) {\n    var timeSinceLastCall = time - lastCallTime,\n        timeSinceLastInvoke = time - lastInvokeTime,\n        result = wait - timeSinceLastCall;\n\n    return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n  }\n\n  function shouldInvoke(time) {\n    var timeSinceLastCall = time - lastCallTime,\n        timeSinceLastInvoke = time - lastInvokeTime;\n\n    // Either this is the first call, activity has stopped and we're at the\n    // trailing edge, the system time has gone backwards and we're treating\n    // it as the trailing edge, or we've hit the `maxWait` limit.\n    return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n      (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n  }\n\n  function timerExpired() {\n    var time = now();\n    if (shouldInvoke(time)) {\n      return trailingEdge(time);\n    }\n    // Restart the timer.\n    timerId = setTimeout(timerExpired, remainingWait(time));\n  }\n\n  function trailingEdge(time) {\n    timerId = undefined;\n\n    // Only invoke if we have `lastArgs` which means `func` has been\n    // debounced at least once.\n    if (trailing && lastArgs) {\n      return invokeFunc(time);\n    }\n    lastArgs = lastThis = undefined;\n    return result;\n  }\n\n  function cancel() {\n    if (timerId !== undefined) {\n      clearTimeout(timerId);\n    }\n    lastInvokeTime = 0;\n    lastArgs = lastCallTime = lastThis = timerId = undefined;\n  }\n\n  function flush() {\n    return timerId === undefined ? result : trailingEdge(now());\n  }\n\n  function debounced() {\n    var time = now(),\n        isInvoking = shouldInvoke(time);\n\n    lastArgs = arguments;\n    lastThis = this;\n    lastCallTime = time;\n\n    if (isInvoking) {\n      if (timerId === undefined) {\n        return leadingEdge(lastCallTime);\n      }\n      if (maxing) {\n        // Handle invocations in a tight loop.\n        timerId = setTimeout(timerExpired, wait);\n        return invokeFunc(lastCallTime);\n      }\n    }\n    if (timerId === undefined) {\n      timerId = setTimeout(timerExpired, wait);\n    }\n    return result;\n  }\n  debounced.cancel = cancel;\n  debounced.flush = flush;\n  return debounced;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n  return typeof value == 'symbol' ||\n    (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n  if (typeof value == 'number') {\n    return value;\n  }\n  if (isSymbol(value)) {\n    return NAN;\n  }\n  if (isObject(value)) {\n    var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n    value = isObject(other) ? (other + '') : other;\n  }\n  if (typeof value != 'string') {\n    return value === 0 ? value : +value;\n  }\n  value = value.replace(reTrim, '');\n  var isBinary = reIsBinary.test(value);\n  return (isBinary || reIsOctal.test(value))\n    ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n    : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = debounce;\n", "\"use strict\";\n\nconst debounce = require(\"lodash.debounce\");\n\nconst FOCUSABLE_ELEMENTS = require(\"@uppy/utils/lib/FOCUSABLE_ELEMENTS\");\n\nconst getActiveOverlayEl = require(\"./getActiveOverlayEl.js\");\n/*\n  Focuses on some element in the currently topmost overlay.\n\n  1. If there are some [data-uppy-super-focusable] elements rendered already - focuses\n     on the first superfocusable element, and leaves focus up to the control of\n     a user (until currently focused element disappears from the screen [which\n     can happen when overlay changes, or, e.g., when we click on a folder in googledrive]).\n  2. If there are no [data-uppy-super-focusable] elements yet (or ever) - focuses\n     on the first focusable element, but switches focus if superfocusable elements appear on next render.\n*/\n\n\nfunction createSuperFocus() {\n  let lastFocusWasOnSuperFocusableEl = false;\n\n  const superFocus = (dashboardEl, activeOverlayType) => {\n    const overlayEl = getActiveOverlayEl(dashboardEl, activeOverlayType);\n    const isFocusInOverlay = overlayEl.contains(document.activeElement); // If focus is already in the topmost overlay, AND on last update we focused on the superfocusable\n    // element - then leave focus up to the user.\n    // [Practical check] without this line, typing in the search input in googledrive overlay won't work.\n\n    if (isFocusInOverlay && lastFocusWasOnSuperFocusableEl) return;\n    const superFocusableEl = overlayEl.querySelector('[data-uppy-super-focusable]'); // If we are already in the topmost overlay, AND there are no super focusable elements yet, - leave focus up to the user.\n    // [Practical check] without this line, if you are in an empty folder in google drive, and something's uploading in the\n    // bg, - focus will be jumping to Done all the time.\n\n    if (isFocusInOverlay && !superFocusableEl) return;\n\n    if (superFocusableEl) {\n      superFocusableEl.focus({\n        preventScroll: true\n      });\n      lastFocusWasOnSuperFocusableEl = true;\n    } else {\n      const firstEl = overlayEl.querySelector(FOCUSABLE_ELEMENTS);\n      firstEl == null ? void 0 : firstEl.focus({\n        preventScroll: true\n      });\n      lastFocusWasOnSuperFocusableEl = false;\n    }\n  }; // ___Why do we need to debounce?\n  //    1. To deal with animations: overlay changes via animations, which results in the DOM updating AFTER plugin.update()\n  //       already executed.\n  //    [Practical check] without debounce, if we open the Url overlay, and click 'Done', Dashboard won't get focused again.\n  //    [Practical check] if we delay 250ms instead of 260ms - IE11 won't get focused in same situation.\n  //    2. Performance: there can be many state update()s in a second, and this function is called every time.\n\n\n  return debounce(superFocus, 260);\n}\n\nmodule.exports = createSuperFocus;", "\"use strict\";\n\nfunction isDragDropSupported() {\n  const div = document.body;\n\n  if (!('draggable' in div) || !('ondragstart' in div && 'ondrop' in div)) {\n    return false;\n  }\n\n  if (!('FormData' in window)) {\n    return false;\n  }\n\n  if (!('FileReader' in window)) {\n    return false;\n  }\n\n  return true;\n}\n\n/**\n * Checks if the browser supports Drag & Drop (not supported on mobile devices, for example).\n *\n * @returns {boolean}\n */\nmodule.exports = isDragDropSupported;", "module.exports = function isShallowEqual (a, b) {\n  if (a === b) return true\n  for (var i in a) if (!(i in b)) return false\n  for (var i in b) if (a[i] !== b[i]) return false\n  return true\n}\n", "\"use strict\";\n\nvar _preact = require(\"preact\");\n\nfunction iconImage() {\n  return (0, _preact.h)(\"svg\", {\n    \"aria-hidden\": \"true\",\n    focusable: \"false\",\n    width: \"25\",\n    height: \"25\",\n    viewBox: \"0 0 25 25\"\n  }, (0, _preact.h)(\"g\", {\n    fill: \"#686DE0\",\n    fillRule: \"evenodd\"\n  }, (0, _preact.h)(\"path\", {\n    d: \"M5 7v10h15V7H5zm0-1h15a1 1 0 0 1 1 1v10a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1z\",\n    fillRule: \"nonzero\"\n  }), (0, _preact.h)(\"path\", {\n    d: \"M6.35 17.172l4.994-5.026a.5.5 0 0 1 .707 0l2.16 2.16 3.505-3.505a.5.5 0 0 1 .707 0l2.336 2.31-.707.72-1.983-1.97-3.505 3.505a.5.5 0 0 1-.707 0l-2.16-2.159-3.938 3.939-1.409.026z\",\n    fillRule: \"nonzero\"\n  }), (0, _preact.h)(\"circle\", {\n    cx: \"7.5\",\n    cy: \"9.5\",\n    r: \"1.5\"\n  })));\n}\n\nfunction iconAudio() {\n  return (0, _preact.h)(\"svg\", {\n    \"aria-hidden\": \"true\",\n    focusable: \"false\",\n    className: \"uppy-c-icon\",\n    width: \"25\",\n    height: \"25\",\n    viewBox: \"0 0 25 25\"\n  }, (0, _preact.h)(\"path\", {\n    d: \"M9.5 18.64c0 1.14-1.145 2-2.5 2s-2.5-.86-2.5-2c0-1.14 1.145-2 2.5-2 .557 0 1.079.145 1.5.396V7.25a.5.5 0 0 1 .379-.485l9-2.25A.5.5 0 0 1 18.5 5v11.64c0 1.14-1.145 2-2.5 2s-2.5-.86-2.5-2c0-1.14 1.145-2 2.5-2 .557 0 1.079.145 1.5.396V8.67l-8 2v7.97zm8-11v-2l-8 2v2l8-2zM7 19.64c.855 0 1.5-.484 1.5-1s-.645-1-1.5-1-1.5.484-1.5 1 .645 1 1.5 1zm9-2c.855 0 1.5-.484 1.5-1s-.645-1-1.5-1-1.5.484-1.5 1 .645 1 1.5 1z\",\n    fill: \"#049BCF\",\n    fillRule: \"nonzero\"\n  }));\n}\n\nfunction iconVideo() {\n  return (0, _preact.h)(\"svg\", {\n    \"aria-hidden\": \"true\",\n    focusable: \"false\",\n    className: \"uppy-c-icon\",\n    width: \"25\",\n    height: \"25\",\n    viewBox: \"0 0 25 25\"\n  }, (0, _preact.h)(\"path\", {\n    d: \"M16 11.834l4.486-2.691A1 1 0 0 1 22 10v6a1 1 0 0 1-1.514.857L16 14.167V17a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V9a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v2.834zM15 9H5v8h10V9zm1 4l5 3v-6l-5 3z\",\n    fill: \"#19AF67\",\n    fillRule: \"nonzero\"\n  }));\n}\n\nfunction iconPDF() {\n  return (0, _preact.h)(\"svg\", {\n    \"aria-hidden\": \"true\",\n    focusable: \"false\",\n    className: \"uppy-c-icon\",\n    width: \"25\",\n    height: \"25\",\n    viewBox: \"0 0 25 25\"\n  }, (0, _preact.h)(\"path\", {\n    d: \"M9.766 8.295c-.691-1.843-.539-3.401.747-3.726 1.643-.414 2.505.938 2.39 3.299-.039.79-.194 1.662-.537 3.148.324.49.66.967 1.055 1.51.17.231.382.488.629.757 1.866-.128 3.653.114 4.918.655 1.487.635 2.192 1.685 1.614 2.84-.566 1.133-1.839 1.084-3.416.249-1.141-.604-2.457-1.634-3.51-2.707a13.467 13.467 0 0 0-2.238.426c-1.392 4.051-4.534 6.453-5.707 4.572-.986-1.58 1.38-4.206 4.914-5.375.097-.322.185-.656.264-1.001.08-.353.306-1.31.407-1.737-.678-1.059-1.2-2.031-1.53-2.91zm2.098 4.87c-.033.144-.068.287-.104.427l.033-.01-.012.038a14.065 14.065 0 0 1 1.02-.197l-.032-.033.052-.004a7.902 7.902 0 0 1-.208-.271c-.197-.27-.38-.526-.555-.775l-.006.028-.002-.003c-.076.323-.148.632-.186.8zm5.77 2.978c1.143.605 1.832.632 2.054.187.26-.519-.087-1.034-1.113-1.473-.911-.39-2.175-.608-3.55-.608.845.766 1.787 1.459 2.609 1.894zM6.559 18.789c.14.223.693.16 1.425-.413.827-.648 1.61-1.747 2.208-3.206-2.563 1.064-4.102 2.867-3.633 3.62zm5.345-10.97c.088-1.793-.351-2.48-1.146-2.28-.473.119-.564 1.05-.056 2.405.213.566.52 1.188.908 1.859.18-.858.268-1.453.294-1.984z\",\n    fill: \"#E2514A\",\n    fillRule: \"nonzero\"\n  }));\n}\n\nfunction iconArchive() {\n  return (0, _preact.h)(\"svg\", {\n    \"aria-hidden\": \"true\",\n    focusable: \"false\",\n    width: \"25\",\n    height: \"25\",\n    viewBox: \"0 0 25 25\"\n  }, (0, _preact.h)(\"path\", {\n    d: \"M10.45 2.05h1.05a.5.5 0 0 1 .5.5v.024a.5.5 0 0 1-.5.5h-1.05a.5.5 0 0 1-.5-.5V2.55a.5.5 0 0 1 .5-.5zm2.05 1.024h1.05a.5.5 0 0 1 .5.5V3.6a.5.5 0 0 1-.5.5H12.5a.5.5 0 0 1-.5-.5v-.025a.5.5 0 0 1 .5-.5v-.001zM10.45 0h1.05a.5.5 0 0 1 .5.5v.025a.5.5 0 0 1-.5.5h-1.05a.5.5 0 0 1-.5-.5V.5a.5.5 0 0 1 .5-.5zm2.05 1.025h1.05a.5.5 0 0 1 .5.5v.024a.5.5 0 0 1-.5.5H12.5a.5.5 0 0 1-.5-.5v-.024a.5.5 0 0 1 .5-.5zm-2.05 3.074h1.05a.5.5 0 0 1 .5.5v.025a.5.5 0 0 1-.5.5h-1.05a.5.5 0 0 1-.5-.5v-.025a.5.5 0 0 1 .5-.5zm2.05 1.025h1.05a.5.5 0 0 1 .5.5v.024a.5.5 0 0 1-.5.5H12.5a.5.5 0 0 1-.5-.5v-.024a.5.5 0 0 1 .5-.5zm-2.05 1.024h1.05a.5.5 0 0 1 .5.5v.025a.5.5 0 0 1-.5.5h-1.05a.5.5 0 0 1-.5-.5v-.025a.5.5 0 0 1 .5-.5zm2.05 1.025h1.05a.5.5 0 0 1 .5.5v.025a.5.5 0 0 1-.5.5H12.5a.5.5 0 0 1-.5-.5v-.025a.5.5 0 0 1 .5-.5zm-2.05 1.025h1.05a.5.5 0 0 1 .5.5v.025a.5.5 0 0 1-.5.5h-1.05a.5.5 0 0 1-.5-.5v-.025a.5.5 0 0 1 .5-.5zm2.05 1.025h1.05a.5.5 0 0 1 .5.5v.024a.5.5 0 0 1-.5.5H12.5a.5.5 0 0 1-.5-.5v-.024a.5.5 0 0 1 .5-.5zm-1.656 3.074l-.82 5.946c.52.302 1.174.458 1.976.458.803 0 1.455-.156 1.975-.458l-.82-5.946h-2.311zm0-1.025h2.312c.512 0 .946.378 1.015.885l.82 5.946c.056.412-.142.817-.501 1.026-.686.398-1.515.597-2.49.597-.974 0-1.804-.199-2.49-.597a1.025 1.025 0 0 1-.5-1.026l.819-5.946c.07-.507.503-.885 1.015-.885zm.545 6.6a.5.5 0 0 1-.397-.561l.143-.999a.5.5 0 0 1 .495-.429h.74a.5.5 0 0 1 .495.43l.143.998a.5.5 0 0 1-.397.561c-.404.08-.819.08-1.222 0z\",\n    fill: \"#00C469\",\n    fillRule: \"nonzero\"\n  }));\n}\n\nfunction iconFile() {\n  return (0, _preact.h)(\"svg\", {\n    \"aria-hidden\": \"true\",\n    focusable: \"false\",\n    className: \"uppy-c-icon\",\n    width: \"25\",\n    height: \"25\",\n    viewBox: \"0 0 25 25\"\n  }, (0, _preact.h)(\"g\", {\n    fill: \"#A7AFB7\",\n    fillRule: \"nonzero\"\n  }, (0, _preact.h)(\"path\", {\n    d: \"M5.5 22a.5.5 0 0 1-.5-.5v-18a.5.5 0 0 1 .5-.5h10.719a.5.5 0 0 1 .367.16l3.281 3.556a.5.5 0 0 1 .133.339V21.5a.5.5 0 0 1-.5.5h-14zm.5-1h13V7.25L16 4H6v17z\"\n  }), (0, _preact.h)(\"path\", {\n    d: \"M15 4v3a1 1 0 0 0 1 1h3V7h-3V4h-1z\"\n  })));\n}\n\nfunction iconText() {\n  return (0, _preact.h)(\"svg\", {\n    \"aria-hidden\": \"true\",\n    focusable: \"false\",\n    className: \"uppy-c-icon\",\n    width: \"25\",\n    height: \"25\",\n    viewBox: \"0 0 25 25\"\n  }, (0, _preact.h)(\"path\", {\n    d: \"M4.5 7h13a.5.5 0 1 1 0 1h-13a.5.5 0 0 1 0-1zm0 3h15a.5.5 0 1 1 0 1h-15a.5.5 0 1 1 0-1zm0 3h15a.5.5 0 1 1 0 1h-15a.5.5 0 1 1 0-1zm0 3h10a.5.5 0 1 1 0 1h-10a.5.5 0 1 1 0-1z\",\n    fill: \"#5A5E69\",\n    fillRule: \"nonzero\"\n  }));\n}\n\nfunction getIconByMime(fileType) {\n  const defaultChoice = {\n    color: '#838999',\n    icon: iconFile()\n  };\n  if (!fileType) return defaultChoice;\n  const fileTypeGeneral = fileType.split('/')[0];\n  const fileTypeSpecific = fileType.split('/')[1]; // Text\n\n  if (fileTypeGeneral === 'text') {\n    return {\n      color: '#5a5e69',\n      icon: iconText()\n    };\n  } // Image\n\n\n  if (fileTypeGeneral === 'image') {\n    return {\n      color: '#686de0',\n      icon: iconImage()\n    };\n  } // Audio\n\n\n  if (fileTypeGeneral === 'audio') {\n    return {\n      color: '#068dbb',\n      icon: iconAudio()\n    };\n  } // Video\n\n\n  if (fileTypeGeneral === 'video') {\n    return {\n      color: '#19af67',\n      icon: iconVideo()\n    };\n  } // PDF\n\n\n  if (fileTypeGeneral === 'application' && fileTypeSpecific === 'pdf') {\n    return {\n      color: '#e25149',\n      icon: iconPDF()\n    };\n  } // Archive\n\n\n  const archiveTypes = ['zip', 'x-7z-compressed', 'x-rar-compressed', 'x-tar', 'x-gzip', 'x-apple-diskimage'];\n\n  if (fileTypeGeneral === 'application' && archiveTypes.indexOf(fileTypeSpecific) !== -1) {\n    return {\n      color: '#00C469',\n      icon: iconArchive()\n    };\n  }\n\n  return defaultChoice;\n}\n\nmodule.exports = getIconByMime;", "\"use strict\";\n\nvar _preact = require(\"preact\");\n\nconst getFileTypeIcon = require(\"../utils/getFileTypeIcon.js\");\n\nfunction FilePreview(props) {\n  const {\n    file\n  } = props;\n\n  if (file.preview) {\n    return (0, _preact.h)(\"img\", {\n      className: \"uppy-Dashboard-Item-previewImg\",\n      alt: file.name,\n      src: file.preview\n    });\n  }\n\n  const {\n    color,\n    icon\n  } = getFileTypeIcon(file.type);\n  return (0, _preact.h)(\"div\", {\n    className: \"uppy-Dashboard-Item-previewIconWrap\"\n  }, (0, _preact.h)(\"span\", {\n    className: \"uppy-Dashboard-Item-previewIcon\",\n    style: {\n      color\n    }\n  }, icon), (0, _preact.h)(\"svg\", {\n    \"aria-hidden\": \"true\",\n    focusable: \"false\",\n    className: \"uppy-Dashboard-Item-previewIconBg\",\n    width: \"58\",\n    height: \"76\",\n    viewBox: \"0 0 58 76\"\n  }, (0, _preact.h)(\"rect\", {\n    fill: \"#FFF\",\n    width: \"58\",\n    height: \"76\",\n    rx: \"3\",\n    fillRule: \"evenodd\"\n  })));\n}\n\nmodule.exports = FilePreview;", "\"use strict\";\n\nvar _preact = require(\"preact\");\n\nconst metaFieldIdToName = (metaFieldId, metaFields) => {\n  const field = metaFields.filter(f => f.id === metaFieldId);\n  return field[0].name;\n};\n\nfunction renderMissingMetaFieldsError(props) {\n  const {\n    file,\n    toggleFileCard,\n    i18n,\n    metaFields\n  } = props;\n  const {\n    missingRequiredMetaFields\n  } = file;\n\n  if (!(missingRequiredMetaFields != null && missingRequiredMetaFields.length)) {\n    return null;\n  }\n\n  const metaFieldsString = missingRequiredMetaFields.map(missingMetaField => metaFieldIdToName(missingMetaField, metaFields)).join(', ');\n  return (0, _preact.h)(\"div\", {\n    className: \"uppy-Dashboard-Item-errorMessage\"\n  }, i18n('missingRequiredMetaFields', {\n    smart_count: missingRequiredMetaFields.length,\n    fields: metaFieldsString\n  }), ' ', (0, _preact.h)(\"button\", {\n    type: \"button\",\n    class: \"uppy-u-reset uppy-Dashboard-Item-errorMessageBtn\",\n    onClick: () => toggleFileCard(true, file.id)\n  }, i18n('editFile')));\n}\n\nmodule.exports = renderMissingMetaFieldsError;", "\"use strict\";\n\nvar _preact = require(\"preact\");\n\nconst FilePreview = require(\"../../FilePreview.js\");\n\nconst MetaErrorMessage = require(\"../MetaErrorMessage.js\");\n\nconst getFileTypeIcon = require(\"../../../utils/getFileTypeIcon.js\");\n\nfunction FilePreviewAndLink(props) {\n  return (0, _preact.h)(\"div\", {\n    className: \"uppy-Dashboard-Item-previewInnerWrap\",\n    style: {\n      backgroundColor: getFileTypeIcon(props.file.type).color\n    }\n  }, props.showLinkToFileUploadResult && props.file.uploadURL && (0, _preact.h)(\"a\", {\n    className: \"uppy-Dashboard-Item-previewLink\",\n    href: props.file.uploadURL,\n    rel: \"noreferrer noopener\",\n    target: \"_blank\",\n    \"aria-label\": props.file.meta.name\n  }, (0, _preact.h)(\"span\", {\n    hidden: true\n  }, props.file.meta.name)), (0, _preact.h)(FilePreview, {\n    file: props.file\n  }), (0, _preact.h)(MetaErrorMessage, {\n    file: props.file,\n    i18n: props.i18n,\n    toggleFileCard: props.toggleFileCard,\n    metaFields: props.metaFields\n  }));\n}\n\nmodule.exports = FilePreviewAndLink;", "\"use strict\";\n\nvar _preact = require(\"preact\");\n\nfunction onPauseResumeCancelRetry(props) {\n  if (props.isUploaded) return;\n\n  if (props.error && !props.hideRetryButton) {\n    props.uppy.retryUpload(props.file.id);\n    return;\n  }\n\n  if (props.resumableUploads && !props.hidePauseResumeButton) {\n    props.uppy.pauseResume(props.file.id);\n  } else if (props.individualCancellation && !props.hideCancelButton) {\n    props.uppy.removeFile(props.file.id);\n  }\n}\n\nfunction progressIndicatorTitle(props) {\n  if (props.isUploaded) {\n    return props.i18n('uploadComplete');\n  }\n\n  if (props.error) {\n    return props.i18n('retryUpload');\n  }\n\n  if (props.resumableUploads) {\n    if (props.file.isPaused) {\n      return props.i18n('resumeUpload');\n    }\n\n    return props.i18n('pauseUpload');\n  }\n\n  if (props.individualCancellation) {\n    return props.i18n('cancelUpload');\n  }\n\n  return '';\n}\n\nfunction ProgressIndicatorButton(props) {\n  return (0, _preact.h)(\"div\", {\n    className: \"uppy-Dashboard-Item-progress\"\n  }, (0, _preact.h)(\"button\", {\n    className: \"uppy-u-reset uppy-Dashboard-Item-progressIndicator\",\n    type: \"button\",\n    \"aria-label\": progressIndicatorTitle(props),\n    title: progressIndicatorTitle(props),\n    onClick: () => onPauseResumeCancelRetry(props)\n  }, props.children));\n}\n\nfunction ProgressCircleContainer(_ref) {\n  let {\n    children\n  } = _ref;\n  return (0, _preact.h)(\"svg\", {\n    \"aria-hidden\": \"true\",\n    focusable: \"false\",\n    width: \"70\",\n    height: \"70\",\n    viewBox: \"0 0 36 36\",\n    className: \"uppy-c-icon uppy-Dashboard-Item-progressIcon--circle\"\n  }, children);\n}\n\nfunction ProgressCircle(_ref2) {\n  let {\n    progress\n  } = _ref2;\n  // circle length equals 2 * PI * R\n  const circleLength = 2 * Math.PI * 15;\n  return (0, _preact.h)(\"g\", null, (0, _preact.h)(\"circle\", {\n    className: \"uppy-Dashboard-Item-progressIcon--bg\",\n    r: \"15\",\n    cx: \"18\",\n    cy: \"18\",\n    \"stroke-width\": \"2\",\n    fill: \"none\"\n  }), (0, _preact.h)(\"circle\", {\n    className: \"uppy-Dashboard-Item-progressIcon--progress\",\n    r: \"15\",\n    cx: \"18\",\n    cy: \"18\",\n    transform: \"rotate(-90, 18, 18)\",\n    fill: \"none\",\n    \"stroke-width\": \"2\",\n    \"stroke-dasharray\": circleLength,\n    \"stroke-dashoffset\": circleLength - circleLength / 100 * progress\n  }));\n}\n\nfunction FileProgress(props) {\n  // Nothing if upload has not started\n  if (!props.file.progress.uploadStarted) {\n    return null;\n  } // Green checkmark when complete\n\n\n  if (props.isUploaded) {\n    return (0, _preact.h)(\"div\", {\n      className: \"uppy-Dashboard-Item-progress\"\n    }, (0, _preact.h)(\"div\", {\n      className: \"uppy-Dashboard-Item-progressIndicator\"\n    }, (0, _preact.h)(ProgressCircleContainer, null, (0, _preact.h)(\"circle\", {\n      r: \"15\",\n      cx: \"18\",\n      cy: \"18\",\n      fill: \"#1bb240\"\n    }), (0, _preact.h)(\"polygon\", {\n      className: \"uppy-Dashboard-Item-progressIcon--check\",\n      transform: \"translate(2, 3)\",\n      points: \"14 22.5 7 15.2457065 8.99985857 13.1732815 14 18.3547104 22.9729883 9 25 11.1005634\"\n    }))));\n  }\n\n  if (props.recoveredState) {\n    return undefined;\n  } // Retry button for error\n\n\n  if (props.error && !props.hideRetryButton) {\n    return (// eslint-disable-next-line react/jsx-props-no-spreading\n      (0, _preact.h)(ProgressIndicatorButton, props, (0, _preact.h)(\"svg\", {\n        \"aria-hidden\": \"true\",\n        focusable: \"false\",\n        className: \"uppy-c-icon uppy-Dashboard-Item-progressIcon--retry\",\n        width: \"28\",\n        height: \"31\",\n        viewBox: \"0 0 16 19\"\n      }, (0, _preact.h)(\"path\", {\n        d: \"M16 11a8 8 0 1 1-8-8v2a6 6 0 1 0 6 6h2z\"\n      }), (0, _preact.h)(\"path\", {\n        d: \"M7.9 3H10v2H7.9z\"\n      }), (0, _preact.h)(\"path\", {\n        d: \"M8.536.5l3.535 3.536-1.414 1.414L7.12 1.914z\"\n      }), (0, _preact.h)(\"path\", {\n        d: \"M10.657 2.621l1.414 1.415L8.536 7.57 7.12 6.157z\"\n      })))\n    );\n  } // Pause/resume button for resumable uploads\n\n\n  if (props.resumableUploads && !props.hidePauseResumeButton) {\n    return (// eslint-disable-next-line react/jsx-props-no-spreading\n      (0, _preact.h)(ProgressIndicatorButton, props, (0, _preact.h)(ProgressCircleContainer, null, (0, _preact.h)(ProgressCircle, {\n        progress: props.file.progress.percentage\n      }), props.file.isPaused ? (0, _preact.h)(\"polygon\", {\n        className: \"uppy-Dashboard-Item-progressIcon--play\",\n        transform: \"translate(3, 3)\",\n        points: \"12 20 12 10 20 15\"\n      }) : (0, _preact.h)(\"g\", {\n        className: \"uppy-Dashboard-Item-progressIcon--pause\",\n        transform: \"translate(14.5, 13)\"\n      }, (0, _preact.h)(\"rect\", {\n        x: \"0\",\n        y: \"0\",\n        width: \"2\",\n        height: \"10\",\n        rx: \"0\"\n      }), (0, _preact.h)(\"rect\", {\n        x: \"5\",\n        y: \"0\",\n        width: \"2\",\n        height: \"10\",\n        rx: \"0\"\n      }))))\n    );\n  } // Cancel button for non-resumable uploads if individualCancellation is supported (not bundled)\n\n\n  if (!props.resumableUploads && props.individualCancellation && !props.hideCancelButton) {\n    return (// eslint-disable-next-line react/jsx-props-no-spreading\n      (0, _preact.h)(ProgressIndicatorButton, props, (0, _preact.h)(ProgressCircleContainer, null, (0, _preact.h)(ProgressCircle, {\n        progress: props.file.progress.percentage\n      }), (0, _preact.h)(\"polygon\", {\n        className: \"cancel\",\n        transform: \"translate(2, 2)\",\n        points: \"19.8856516 11.0625 16 14.9481516 12.1019737 11.0625 11.0625 12.1143484 14.9481516 16 11.0625 19.8980263 12.1019737 20.9375 16 17.0518484 19.8856516 20.9375 20.9375 19.8980263 17.0518484 16 20.9375 12\"\n      })))\n    );\n  } // Just progress when buttons are disabled\n\n\n  return (0, _preact.h)(\"div\", {\n    className: \"uppy-Dashboard-Item-progress\"\n  }, (0, _preact.h)(\"div\", {\n    className: \"uppy-Dashboard-Item-progressIndicator\"\n  }, (0, _preact.h)(ProgressCircleContainer, null, (0, _preact.h)(ProgressCircle, {\n    progress: props.file.progress.percentage\n  }))));\n}\n\nmodule.exports = FileProgress;", "\"use strict\";\n\n/**\n * Truncates a string to the given number of chars (maxLength) by inserting '...' in the middle of that string.\n * Partially taken from https://stackoverflow.com/a/5723274/3192470.\n *\n * @param {string} string - string to be truncated\n * @param {number} maxLength - maximum size of the resulting string\n * @returns {string}\n */\nconst separator = '...';\n\nfunction truncateString(string, maxLength) {\n  // Return the empty string if maxLength is zero\n  if (maxLength === 0) return ''; // Return original string if it's already shorter than maxLength\n\n  if (string.length <= maxLength) return string; // Return truncated substring appended of the ellipsis char if string can't be meaningfully truncated\n\n  if (maxLength <= separator.length + 1) return `${string.slice(0, maxLength - 1)}\u2026`;\n  const charsToShow = maxLength - separator.length;\n  const frontChars = Math.ceil(charsToShow / 2);\n  const backChars = Math.floor(charsToShow / 2);\n  return string.slice(0, frontChars) + separator + string.slice(-backChars);\n}\n\nmodule.exports = truncateString;", "\"use strict\";\n\nvar _preact = require(\"preact\");\n\nconst prettierBytes = require(\"@transloadit/prettier-bytes\");\n\nconst truncateString = require(\"@uppy/utils/lib/truncateString\");\n\nconst MetaErrorMessage = require(\"../MetaErrorMessage.js\");\n\nconst renderFileName = props => {\n  const {\n    author,\n    name\n  } = props.file.meta;\n\n  function getMaxNameLength() {\n    if (props.containerWidth <= 352) {\n      return 35;\n    }\n\n    if (props.containerWidth <= 576) {\n      return 60;\n    } // When `author` is present, we want to make sure\n    // the file name fits on one line so we can place\n    // the author on the second line.\n\n\n    return author ? 20 : 30;\n  }\n\n  return (0, _preact.h)(\"div\", {\n    className: \"uppy-Dashboard-Item-name\",\n    title: name\n  }, truncateString(name, getMaxNameLength()));\n};\n\nconst renderAuthor = props => {\n  const {\n    author\n  } = props.file.meta;\n  const {\n    providerName\n  } = props.file.remote;\n  const dot = `\\u00B7`;\n\n  if (!author) {\n    return null;\n  }\n\n  return (0, _preact.h)(\"div\", {\n    className: \"uppy-Dashboard-Item-author\"\n  }, (0, _preact.h)(\"a\", {\n    href: `${author.url}?utm_source=Companion&utm_medium=referral`,\n    target: \"_blank\",\n    rel: \"noopener noreferrer\"\n  }, truncateString(author.name, 13)), providerName ? (0, _preact.h)(_preact.Fragment, null, ` ${dot} `, providerName, ` ${dot} `) : null);\n};\n\nconst renderFileSize = props => props.file.size && (0, _preact.h)(\"div\", {\n  className: \"uppy-Dashboard-Item-statusSize\"\n}, prettierBytes(props.file.size));\n\nconst ReSelectButton = props => props.file.isGhost && (0, _preact.h)(\"span\", null, ' \\u2022 ', (0, _preact.h)(\"button\", {\n  className: \"uppy-u-reset uppy-c-btn uppy-Dashboard-Item-reSelect\",\n  type: \"button\",\n  onClick: props.toggleAddFilesPanel\n}, props.i18n('reSelect')));\n\nconst ErrorButton = _ref => {\n  let {\n    file,\n    onClick\n  } = _ref;\n\n  if (file.error) {\n    return (0, _preact.h)(\"button\", {\n      className: \"uppy-u-reset uppy-Dashboard-Item-errorDetails\",\n      \"aria-label\": file.error,\n      \"data-microtip-position\": \"bottom\",\n      \"data-microtip-size\": \"medium\",\n      onClick: onClick,\n      type: \"button\"\n    }, \"?\");\n  }\n\n  return null;\n};\n\nfunction FileInfo(props) {\n  const {\n    file\n  } = props;\n  return (0, _preact.h)(\"div\", {\n    className: \"uppy-Dashboard-Item-fileInfo\",\n    \"data-uppy-file-source\": file.source\n  }, (0, _preact.h)(\"div\", {\n    className: \"uppy-Dashboard-Item-fileName\"\n  }, renderFileName(props), (0, _preact.h)(ErrorButton, {\n    file: props.file // eslint-disable-next-line no-alert\n    ,\n    onClick: () => alert(props.file.error) // TODO: move to a custom alert implementation\n\n  })), (0, _preact.h)(\"div\", {\n    className: \"uppy-Dashboard-Item-status\"\n  }, renderAuthor(props), renderFileSize(props), ReSelectButton(props)), (0, _preact.h)(MetaErrorMessage, {\n    file: props.file,\n    i18n: props.i18n,\n    toggleFileCard: props.toggleFileCard,\n    metaFields: props.metaFields\n  }));\n}\n\nmodule.exports = FileInfo;", "\"use strict\";\n\nfunction copyToClipboard(textToCopy, fallbackString) {\n  // TODO: make `fallbackString` an optional parameter instead.\n  fallbackString || (fallbackString = 'Copy the URL below'); // eslint-disable-line no-param-reassign\n\n  return new Promise(resolve => {\n    const textArea = document.createElement('textarea');\n    textArea.setAttribute('style', {\n      position: 'fixed',\n      top: 0,\n      left: 0,\n      width: '2em',\n      height: '2em',\n      padding: 0,\n      border: 'none',\n      outline: 'none',\n      boxShadow: 'none',\n      background: 'transparent'\n    });\n    textArea.value = textToCopy;\n    document.body.appendChild(textArea);\n    textArea.select();\n\n    const magicCopyFailed = () => {\n      document.body.removeChild(textArea); // eslint-disable-next-line no-alert\n\n      window.prompt(fallbackString, textToCopy);\n      resolve();\n    };\n\n    try {\n      const successful = document.execCommand('copy');\n\n      if (!successful) {\n        return magicCopyFailed('copy command unavailable');\n      }\n\n      document.body.removeChild(textArea);\n      return resolve();\n    } catch (err) {\n      document.body.removeChild(textArea);\n      return magicCopyFailed(err);\n    }\n  });\n}\n\n/**\n * Copies text to clipboard by creating an almost invisible textarea,\n * adding text there, then running execCommand('copy').\n * Falls back to prompt() when the easy way fails (hello, Safari!)\n * From http://stackoverflow.com/a/30810322\n *\n * @param {string} textToCopy\n * @param {string} fallbackString\n * @returns {Promise}\n */\nmodule.exports = copyToClipboard;", "\"use strict\";\n\nvar _preact = require(\"preact\");\n\nconst copyToClipboard = require(\"../../../utils/copyToClipboard.js\");\n\nfunction EditButton(_ref) {\n  let {\n    file,\n    uploadInProgressOrComplete,\n    metaFields,\n    canEditFile,\n    i18n,\n    onClick\n  } = _ref;\n\n  if (!uploadInProgressOrComplete && metaFields && metaFields.length > 0 || !uploadInProgressOrComplete && canEditFile(file)) {\n    return (0, _preact.h)(\"button\", {\n      className: \"uppy-u-reset uppy-Dashboard-Item-action uppy-Dashboard-Item-action--edit\",\n      type: \"button\",\n      \"aria-label\": i18n('editFileWithFilename', {\n        file: file.meta.name\n      }),\n      title: i18n('editFileWithFilename', {\n        file: file.meta.name\n      }),\n      onClick: () => onClick()\n    }, (0, _preact.h)(\"svg\", {\n      \"aria-hidden\": \"true\",\n      focusable: \"false\",\n      className: \"uppy-c-icon\",\n      width: \"14\",\n      height: \"14\",\n      viewBox: \"0 0 14 14\"\n    }, (0, _preact.h)(\"g\", {\n      fillRule: \"evenodd\"\n    }, (0, _preact.h)(\"path\", {\n      d: \"M1.5 10.793h2.793A1 1 0 0 0 5 10.5L11.5 4a1 1 0 0 0 0-1.414L9.707.793a1 1 0 0 0-1.414 0l-6.5 6.5A1 1 0 0 0 1.5 8v2.793zm1-1V8L9 1.5l1.793 1.793-6.5 6.5H2.5z\",\n      fillRule: \"nonzero\"\n    }), (0, _preact.h)(\"rect\", {\n      x: \"1\",\n      y: \"12.293\",\n      width: \"11\",\n      height: \"1\",\n      rx: \".5\"\n    }), (0, _preact.h)(\"path\", {\n      fillRule: \"nonzero\",\n      d: \"M6.793 2.5L9.5 5.207l.707-.707L7.5 1.793z\"\n    }))));\n  }\n\n  return null;\n}\n\nfunction RemoveButton(_ref2) {\n  let {\n    i18n,\n    onClick,\n    file\n  } = _ref2;\n  return (0, _preact.h)(\"button\", {\n    className: \"uppy-u-reset uppy-Dashboard-Item-action uppy-Dashboard-Item-action--remove\",\n    type: \"button\",\n    \"aria-label\": i18n('removeFile', {\n      file: file.meta.name\n    }),\n    title: i18n('removeFile', {\n      file: file.meta.name\n    }),\n    onClick: () => onClick()\n  }, (0, _preact.h)(\"svg\", {\n    \"aria-hidden\": \"true\",\n    focusable: \"false\",\n    className: \"uppy-c-icon\",\n    width: \"18\",\n    height: \"18\",\n    viewBox: \"0 0 18 18\"\n  }, (0, _preact.h)(\"path\", {\n    d: \"M9 0C4.034 0 0 4.034 0 9s4.034 9 9 9 9-4.034 9-9-4.034-9-9-9z\"\n  }), (0, _preact.h)(\"path\", {\n    fill: \"#FFF\",\n    d: \"M13 12.222l-.778.778L9 9.778 5.778 13 5 12.222 8.222 9 5 5.778 5.778 5 9 8.222 12.222 5l.778.778L9.778 9z\"\n  })));\n}\n\nconst copyLinkToClipboard = (event, props) => {\n  copyToClipboard(props.file.uploadURL, props.i18n('copyLinkToClipboardFallback')).then(() => {\n    props.uppy.log('Link copied to clipboard.');\n    props.uppy.info(props.i18n('copyLinkToClipboardSuccess'), 'info', 3000);\n  }).catch(props.uppy.log) // avoid losing focus\n  .then(() => event.target.focus({\n    preventScroll: true\n  }));\n};\n\nfunction CopyLinkButton(props) {\n  const {\n    i18n\n  } = props;\n  return (0, _preact.h)(\"button\", {\n    className: \"uppy-u-reset uppy-Dashboard-Item-action uppy-Dashboard-Item-action--copyLink\",\n    type: \"button\",\n    \"aria-label\": i18n('copyLink'),\n    title: i18n('copyLink'),\n    onClick: event => copyLinkToClipboard(event, props)\n  }, (0, _preact.h)(\"svg\", {\n    \"aria-hidden\": \"true\",\n    focusable: \"false\",\n    className: \"uppy-c-icon\",\n    width: \"14\",\n    height: \"14\",\n    viewBox: \"0 0 14 12\"\n  }, (0, _preact.h)(\"path\", {\n    d: \"M7.94 7.703a2.613 2.613 0 0 1-.626 2.681l-.852.851a2.597 2.597 0 0 1-1.849.766A2.616 2.616 0 0 1 2.764 7.54l.852-.852a2.596 2.596 0 0 1 2.69-.625L5.267 7.099a1.44 1.44 0 0 0-.833.407l-.852.851a1.458 1.458 0 0 0 1.03 2.486c.39 0 .755-.152 1.03-.426l.852-.852c.231-.231.363-.522.406-.824l1.04-1.038zm4.295-5.937A2.596 2.596 0 0 0 10.387 1c-.698 0-1.355.272-1.849.766l-.852.851a2.614 2.614 0 0 0-.624 2.688l1.036-1.036c.041-.304.173-.6.407-.833l.852-.852c.275-.275.64-.426 1.03-.426a1.458 1.458 0 0 1 1.03 2.486l-.852.851a1.442 1.442 0 0 1-.824.406l-1.04 1.04a2.596 2.596 0 0 0 2.683-.628l.851-.85a2.616 2.616 0 0 0 0-3.697zm-6.88 6.883a.577.577 0 0 0 .82 0l3.474-3.474a.579.579 0 1 0-.819-.82L5.355 7.83a.579.579 0 0 0 0 .819z\"\n  })));\n}\n\nfunction Buttons(props) {\n  const {\n    uppy,\n    file,\n    uploadInProgressOrComplete,\n    canEditFile,\n    metaFields,\n    showLinkToFileUploadResult,\n    showRemoveButton,\n    i18n,\n    toggleFileCard,\n    openFileEditor\n  } = props;\n\n  const editAction = () => {\n    if (metaFields && metaFields.length > 0) {\n      toggleFileCard(true, file.id);\n    } else {\n      openFileEditor(file);\n    }\n  };\n\n  return (0, _preact.h)(\"div\", {\n    className: \"uppy-Dashboard-Item-actionWrapper\"\n  }, (0, _preact.h)(EditButton, {\n    i18n: i18n,\n    file: file,\n    uploadInProgressOrComplete: uploadInProgressOrComplete,\n    canEditFile: canEditFile,\n    metaFields: metaFields,\n    onClick: editAction\n  }), showLinkToFileUploadResult && file.uploadURL ? (0, _preact.h)(CopyLinkButton, {\n    file: file,\n    uppy: uppy,\n    i18n: i18n\n  }) : null, showRemoveButton ? (0, _preact.h)(RemoveButton, {\n    i18n: i18n,\n    file: file,\n    uppy: uppy,\n    onClick: () => props.uppy.removeFile(file.id, 'removed-by-user')\n  }) : null);\n}\n\nmodule.exports = Buttons;", "\"use strict\";\n\nvar _preact = require(\"preact\");\n\nconst classNames = require(\"classnames\");\n\nconst shallowEqual = require(\"is-shallow-equal\");\n\nconst FilePreviewAndLink = require(\"./FilePreviewAndLink/index.js\");\n\nconst FileProgress = require(\"./FileProgress/index.js\");\n\nconst FileInfo = require(\"./FileInfo/index.js\");\n\nconst Buttons = require(\"./Buttons/index.js\");\n\nclass FileItem extends _preact.Component {\n  componentDidMount() {\n    const {\n      file\n    } = this.props;\n\n    if (!file.preview) {\n      this.props.handleRequestThumbnail(file);\n    }\n  }\n\n  shouldComponentUpdate(nextProps) {\n    return !shallowEqual(this.props, nextProps);\n  } // VirtualList mounts FileItems again and they emit `thumbnail:request`\n  // Otherwise thumbnails are broken or missing after Golden Retriever restores files\n\n\n  componentDidUpdate() {\n    const {\n      file\n    } = this.props;\n\n    if (!file.preview) {\n      this.props.handleRequestThumbnail(file);\n    }\n  }\n\n  componentWillUnmount() {\n    const {\n      file\n    } = this.props;\n\n    if (!file.preview) {\n      this.props.handleCancelThumbnail(file);\n    }\n  }\n\n  render() {\n    const {\n      file\n    } = this.props;\n    const isProcessing = file.progress.preprocess || file.progress.postprocess;\n    const isUploaded = file.progress.uploadComplete && !isProcessing && !file.error;\n    const uploadInProgressOrComplete = file.progress.uploadStarted || isProcessing;\n    const uploadInProgress = file.progress.uploadStarted && !file.progress.uploadComplete || isProcessing;\n    const error = file.error || false; // File that Golden Retriever was able to partly restore (only meta, not blob),\n    // users still need to re-add it, so it\u2019s a ghost\n\n    const {\n      isGhost\n    } = file;\n    let showRemoveButton = this.props.individualCancellation ? !isUploaded : !uploadInProgress && !isUploaded;\n\n    if (isUploaded && this.props.showRemoveButtonAfterComplete) {\n      showRemoveButton = true;\n    }\n\n    const dashboardItemClass = classNames({\n      'uppy-Dashboard-Item': true,\n      'is-inprogress': uploadInProgress && !this.props.recoveredState,\n      'is-processing': isProcessing,\n      'is-complete': isUploaded,\n      'is-error': !!error,\n      'is-resumable': this.props.resumableUploads,\n      'is-noIndividualCancellation': !this.props.individualCancellation,\n      'is-ghost': isGhost\n    });\n    return (0, _preact.h)(\"div\", {\n      className: dashboardItemClass,\n      id: `uppy_${file.id}`,\n      role: this.props.role\n    }, (0, _preact.h)(\"div\", {\n      className: \"uppy-Dashboard-Item-preview\"\n    }, (0, _preact.h)(FilePreviewAndLink, {\n      file: file,\n      showLinkToFileUploadResult: this.props.showLinkToFileUploadResult,\n      i18n: this.props.i18n,\n      toggleFileCard: this.props.toggleFileCard,\n      metaFields: this.props.metaFields\n    }), (0, _preact.h)(FileProgress, {\n      uppy: this.props.uppy,\n      file: file,\n      error: error,\n      isUploaded: isUploaded,\n      hideRetryButton: this.props.hideRetryButton,\n      hideCancelButton: this.props.hideCancelButton,\n      hidePauseResumeButton: this.props.hidePauseResumeButton,\n      recoveredState: this.props.recoveredState,\n      showRemoveButtonAfterComplete: this.props.showRemoveButtonAfterComplete,\n      resumableUploads: this.props.resumableUploads,\n      individualCancellation: this.props.individualCancellation,\n      i18n: this.props.i18n\n    })), (0, _preact.h)(\"div\", {\n      className: \"uppy-Dashboard-Item-fileInfoAndButtons\"\n    }, (0, _preact.h)(FileInfo, {\n      file: file,\n      id: this.props.id,\n      acquirers: this.props.acquirers,\n      containerWidth: this.props.containerWidth,\n      i18n: this.props.i18n,\n      toggleAddFilesPanel: this.props.toggleAddFilesPanel,\n      toggleFileCard: this.props.toggleFileCard,\n      metaFields: this.props.metaFields\n    }), (0, _preact.h)(Buttons, {\n      file: file,\n      metaFields: this.props.metaFields,\n      showLinkToFileUploadResult: this.props.showLinkToFileUploadResult,\n      showRemoveButton: showRemoveButton,\n      canEditFile: this.props.canEditFile,\n      uploadInProgressOrComplete: uploadInProgressOrComplete,\n      toggleFileCard: this.props.toggleFileCard,\n      openFileEditor: this.props.openFileEditor,\n      uppy: this.props.uppy,\n      i18n: this.props.i18n\n    })));\n  }\n\n}\n\nmodule.exports = FileItem;", "\"use strict\";\n\nvar _preact = require(\"preact\");\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nconst STYLE_INNER = {\n  position: 'relative',\n  // Disabled for our use case: the wrapper elements around FileList already deal with overflow,\n  // and this additional property would hide things that we want to show.\n  //\n  // overflow: 'hidden',\n  width: '100%',\n  minHeight: '100%'\n};\nconst STYLE_CONTENT = {\n  position: 'absolute',\n  top: 0,\n  left: 0,\n  // Because the `top` value gets set to some offset, this `height` being 100% would make the scrollbar\n  // stretch far beyond the content. For our use case, the content div actually can get its height from\n  // the elements inside it, so we don't need to specify a `height` property at all.\n  //\n  // height: '100%',\n  width: '100%',\n  overflow: 'visible'\n};\n\nclass VirtualList extends _preact.Component {\n  constructor(props) {\n    super(props); // The currently focused node, used to retain focus when the visible rows change.\n    // To avoid update loops, this should not cause state updates, so it's kept as a plain property.\n\n    this.handleScroll = () => {\n      this.setState({\n        offset: this.base.scrollTop\n      });\n    };\n\n    this.handleResize = () => {\n      this.resize();\n    };\n\n    this.focusElement = null;\n    this.state = {\n      offset: 0,\n      height: 0\n    };\n  }\n\n  componentDidMount() {\n    this.resize();\n    window.addEventListener('resize', this.handleResize);\n  } // TODO: refactor to stable lifecycle method\n  // eslint-disable-next-line\n\n\n  componentWillUpdate() {\n    if (this.base.contains(document.activeElement)) {\n      this.focusElement = document.activeElement;\n    }\n  }\n\n  componentDidUpdate() {\n    // Maintain focus when rows are added and removed.\n    if (this.focusElement && this.focusElement.parentNode && document.activeElement !== this.focusElement) {\n      this.focusElement.focus();\n    }\n\n    this.focusElement = null;\n    this.resize();\n  }\n\n  componentWillUnmount() {\n    window.removeEventListener('resize', this.handleResize);\n  }\n\n  resize() {\n    const {\n      height\n    } = this.state;\n\n    if (height !== this.base.offsetHeight) {\n      this.setState({\n        height: this.base.offsetHeight\n      });\n    }\n  }\n\n  render(_ref) {\n    let {\n      data,\n      rowHeight,\n      renderRow,\n      overscanCount = 10,\n      ...props\n    } = _ref;\n    const {\n      offset,\n      height\n    } = this.state; // first visible row index\n\n    let start = Math.floor(offset / rowHeight); // actual number of visible rows (without overscan)\n\n    let visibleRowCount = Math.floor(height / rowHeight); // Overscan: render blocks of rows modulo an overscan row count\n    // This dramatically reduces DOM writes during scrolling\n\n    if (overscanCount) {\n      start = Math.max(0, start - start % overscanCount);\n      visibleRowCount += overscanCount;\n    } // last visible + overscan row index + padding to allow keyboard focus to travel past the visible area\n\n\n    const end = start + visibleRowCount + 4; // data slice currently in viewport plus overscan items\n\n    const selection = data.slice(start, end);\n    const styleInner = { ...STYLE_INNER,\n      height: data.length * rowHeight\n    };\n    const styleContent = { ...STYLE_CONTENT,\n      top: start * rowHeight\n    }; // The `role=\"presentation\"` attributes ensure that these wrapper elements are not treated as list\n    // items by accessibility and outline tools.\n\n    return (// eslint-disable-next-line react/jsx-props-no-spreading\n      (0, _preact.h)(\"div\", _extends({\n        onScroll: this.handleScroll\n      }, props), (0, _preact.h)(\"div\", {\n        role: \"presentation\",\n        style: styleInner\n      }, (0, _preact.h)(\"div\", {\n        role: \"presentation\",\n        style: styleContent\n      }, selection.map(renderRow))))\n    );\n  }\n\n}\n\nmodule.exports = VirtualList;", "\"use strict\";\n\nvar _preact = require(\"preact\");\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nconst classNames = require(\"classnames\");\n\nconst FileItem = require(\"./FileItem/index.js\");\n\nconst VirtualList = require(\"./VirtualList.js\");\n\nfunction chunks(list, size) {\n  const chunked = [];\n  let currentChunk = [];\n  list.forEach(item => {\n    if (currentChunk.length < size) {\n      currentChunk.push(item);\n    } else {\n      chunked.push(currentChunk);\n      currentChunk = [item];\n    }\n  });\n  if (currentChunk.length) chunked.push(currentChunk);\n  return chunked;\n}\n\nmodule.exports = props => {\n  const noFiles = props.totalFileCount === 0;\n  const dashboardFilesClass = classNames('uppy-Dashboard-files', {\n    'uppy-Dashboard-files--noFiles': noFiles\n  }); // It's not great that this is hardcoded!\n  // It's ESPECIALLY not great that this is checking against `itemsPerRow`!\n\n  const rowHeight = props.itemsPerRow === 1 // Mobile\n  ? 71 // 190px height + 2 * 5px margin\n  : 200;\n  const fileProps = {\n    // FIXME This is confusing, it's actually the Dashboard's plugin ID\n    id: props.id,\n    error: props.error,\n    // TODO move this to context\n    i18n: props.i18n,\n    uppy: props.uppy,\n    // features\n    acquirers: props.acquirers,\n    resumableUploads: props.resumableUploads,\n    individualCancellation: props.individualCancellation,\n    // visual options\n    hideRetryButton: props.hideRetryButton,\n    hidePauseResumeButton: props.hidePauseResumeButton,\n    hideCancelButton: props.hideCancelButton,\n    showLinkToFileUploadResult: props.showLinkToFileUploadResult,\n    showRemoveButtonAfterComplete: props.showRemoveButtonAfterComplete,\n    isWide: props.isWide,\n    metaFields: props.metaFields,\n    recoveredState: props.recoveredState,\n    // callbacks\n    toggleFileCard: props.toggleFileCard,\n    handleRequestThumbnail: props.handleRequestThumbnail,\n    handleCancelThumbnail: props.handleCancelThumbnail\n  };\n\n  const sortByGhostComesFirst = (file1, file2) => {\n    return props.files[file2].isGhost - props.files[file1].isGhost;\n  }; // Sort files by file.isGhost, ghost files first, only if recoveredState is present\n\n\n  const files = Object.keys(props.files);\n  if (props.recoveredState) files.sort(sortByGhostComesFirst);\n  const rows = chunks(files, props.itemsPerRow);\n\n  const renderRow = row => // The `role=\"presentation` attribute ensures that the list items are properly\n  // associated with the `VirtualList` element.\n  // We use the first file ID as the key\u2014this should not change across scroll rerenders\n  (0, _preact.h)(\"div\", {\n    role: \"presentation\",\n    key: row[0]\n  }, row.map(fileID => (0, _preact.h)(FileItem, _extends({\n    key: fileID,\n    uppy: props.uppy\n  }, fileProps, {\n    // eslint-disable-line react/jsx-props-no-spreading\n    role: \"listitem\",\n    openFileEditor: props.openFileEditor,\n    canEditFile: props.canEditFile,\n    toggleAddFilesPanel: props.toggleAddFilesPanel,\n    file: props.files[fileID]\n  }))));\n\n  return (0, _preact.h)(VirtualList, {\n    class: dashboardFilesClass,\n    role: \"list\",\n    data: rows,\n    renderRow: renderRow,\n    rowHeight: rowHeight\n  });\n};", "\"use strict\";\n\nvar _preact = require(\"preact\");\n\nlet _Symbol$for;\n\n_Symbol$for = Symbol.for('uppy test: disable unused locale key warning');\n\nclass AddFiles extends _preact.Component {\n  constructor() {\n    super(...arguments);\n\n    this.triggerFileInputClick = () => {\n      this.fileInput.click();\n    };\n\n    this.triggerFolderInputClick = () => {\n      this.folderInput.click();\n    };\n\n    this.onFileInputChange = event => {\n      this.props.handleInputChange(event); // We clear the input after a file is selected, because otherwise\n      // change event is not fired in Chrome and Safari when a file\n      // with the same name is selected.\n      // ___Why not use value=\"\" on <input/> instead?\n      //    Because if we use that method of clearing the input,\n      //    Chrome will not trigger change if we drop the same file twice (Issue #768).\n\n      event.target.value = null; // eslint-disable-line no-param-reassign\n    };\n\n    this.renderHiddenInput = (isFolder, refCallback) => {\n      return (0, _preact.h)(\"input\", {\n        className: \"uppy-Dashboard-input\",\n        hidden: true,\n        \"aria-hidden\": \"true\",\n        tabIndex: -1,\n        webkitdirectory: isFolder,\n        type: \"file\",\n        name: \"files[]\",\n        multiple: this.props.maxNumberOfFiles !== 1,\n        onChange: this.onFileInputChange,\n        accept: this.props.allowedFileTypes,\n        ref: refCallback\n      });\n    };\n\n    this.renderMyDeviceAcquirer = () => {\n      return (0, _preact.h)(\"div\", {\n        className: \"uppy-DashboardTab\",\n        role: \"presentation\",\n        \"data-uppy-acquirer-id\": \"MyDevice\"\n      }, (0, _preact.h)(\"button\", {\n        type: \"button\",\n        className: \"uppy-u-reset uppy-c-btn uppy-DashboardTab-btn\",\n        role: \"tab\",\n        tabIndex: 0,\n        \"data-uppy-super-focusable\": true,\n        onClick: this.triggerFileInputClick\n      }, (0, _preact.h)(\"svg\", {\n        \"aria-hidden\": \"true\",\n        focusable: \"false\",\n        width: \"32\",\n        height: \"32\",\n        viewBox: \"0 0 32 32\"\n      }, (0, _preact.h)(\"g\", {\n        fill: \"none\",\n        fillRule: \"evenodd\"\n      }, (0, _preact.h)(\"rect\", {\n        className: \"uppy-ProviderIconBg\",\n        width: \"32\",\n        height: \"32\",\n        rx: \"16\",\n        fill: \"#2275D7\"\n      }), (0, _preact.h)(\"path\", {\n        d: \"M21.973 21.152H9.863l-1.108-5.087h14.464l-1.246 5.087zM9.935 11.37h3.958l.886 1.444a.673.673 0 0 0 .585.316h6.506v1.37H9.935v-3.13zm14.898 3.44a.793.793 0 0 0-.616-.31h-.978v-2.126c0-.379-.275-.613-.653-.613H15.75l-.886-1.445a.673.673 0 0 0-.585-.316H9.232c-.378 0-.667.209-.667.587V14.5h-.782a.793.793 0 0 0-.61.303.795.795 0 0 0-.155.663l1.45 6.633c.078.36.396.618.764.618h13.354c.36 0 .674-.246.76-.595l1.631-6.636a.795.795 0 0 0-.144-.675z\",\n        fill: \"#FFF\"\n      }))), (0, _preact.h)(\"div\", {\n        className: \"uppy-DashboardTab-name\"\n      }, this.props.i18n('myDevice'))));\n    };\n\n    this.renderBrowseButton = (text, onClickFn) => {\n      const numberOfAcquirers = this.props.acquirers.length;\n      return (0, _preact.h)(\"button\", {\n        type: \"button\",\n        className: \"uppy-u-reset uppy-Dashboard-browse\",\n        onClick: onClickFn,\n        \"data-uppy-super-focusable\": numberOfAcquirers === 0\n      }, text);\n    };\n\n    this.renderDropPasteBrowseTagline = () => {\n      const numberOfAcquirers = this.props.acquirers.length;\n      const browseFiles = this.renderBrowseButton(this.props.i18n('browseFiles'), this.triggerFileInputClick);\n      const browseFolders = this.renderBrowseButton(this.props.i18n('browseFolders'), this.triggerFolderInputClick); // in order to keep the i18n CamelCase and options lower (as are defaults) we will want to transform a lower\n      // to Camel\n\n      const lowerFMSelectionType = this.props.fileManagerSelectionType;\n      const camelFMSelectionType = lowerFMSelectionType.charAt(0).toUpperCase() + lowerFMSelectionType.slice(1);\n      return (0, _preact.h)(\"div\", {\n        class: \"uppy-Dashboard-AddFiles-title\"\n      }, // eslint-disable-next-line no-nested-ternary\n      this.props.disableLocalFiles ? this.props.i18n('importFiles') : numberOfAcquirers > 0 ? this.props.i18nArray(`dropPasteImport${camelFMSelectionType}`, {\n        browseFiles,\n        browseFolders,\n        browse: browseFiles\n      }) : this.props.i18nArray(`dropPaste${camelFMSelectionType}`, {\n        browseFiles,\n        browseFolders,\n        browse: browseFiles\n      }));\n    };\n\n    this.renderAcquirer = acquirer => {\n      return (0, _preact.h)(\"div\", {\n        className: \"uppy-DashboardTab\",\n        role: \"presentation\",\n        \"data-uppy-acquirer-id\": acquirer.id\n      }, (0, _preact.h)(\"button\", {\n        type: \"button\",\n        className: \"uppy-u-reset uppy-c-btn uppy-DashboardTab-btn\",\n        role: \"tab\",\n        tabIndex: 0,\n        \"data-cy\": acquirer.id,\n        \"aria-controls\": `uppy-DashboardContent-panel--${acquirer.id}`,\n        \"aria-selected\": this.props.activePickerPanel.id === acquirer.id,\n        \"data-uppy-super-focusable\": true,\n        onClick: () => this.props.showPanel(acquirer.id)\n      }, acquirer.icon(), (0, _preact.h)(\"div\", {\n        className: \"uppy-DashboardTab-name\"\n      }, acquirer.name)));\n    };\n\n    this.renderAcquirers = (acquirers, disableLocalFiles) => {\n      // Group last two buttons, so we don\u2019t end up with\n      // just one button on a new line\n      const acquirersWithoutLastTwo = [...acquirers];\n      const lastTwoAcquirers = acquirersWithoutLastTwo.splice(acquirers.length - 2, acquirers.length);\n      return (0, _preact.h)(\"div\", {\n        className: \"uppy-Dashboard-AddFiles-list\",\n        role: \"tablist\"\n      }, !disableLocalFiles && this.renderMyDeviceAcquirer(), acquirersWithoutLastTwo.map(acquirer => this.renderAcquirer(acquirer)), (0, _preact.h)(\"span\", {\n        role: \"presentation\",\n        style: {\n          'white-space': 'nowrap'\n        }\n      }, lastTwoAcquirers.map(acquirer => this.renderAcquirer(acquirer))));\n    };\n  }\n\n  [_Symbol$for]() {\n    // Those are actually used in `renderDropPasteBrowseTagline` method.\n    this.props.i18nArray('dropPasteBoth');\n    this.props.i18nArray('dropPasteFiles');\n    this.props.i18nArray('dropPasteFolders');\n    this.props.i18nArray('dropPasteImportBoth');\n    this.props.i18nArray('dropPasteImportFiles');\n    this.props.i18nArray('dropPasteImportFolders');\n  }\n\n  renderPoweredByUppy() {\n    const {\n      i18nArray\n    } = this.props;\n    const uppyBranding = (0, _preact.h)(\"span\", null, (0, _preact.h)(\"svg\", {\n      \"aria-hidden\": \"true\",\n      focusable: \"false\",\n      className: \"uppy-c-icon uppy-Dashboard-poweredByIcon\",\n      width: \"11\",\n      height: \"11\",\n      viewBox: \"0 0 11 11\"\n    }, (0, _preact.h)(\"path\", {\n      d: \"M7.365 10.5l-.01-4.045h2.612L5.5.806l-4.467 5.65h2.604l.01 4.044h3.718z\",\n      fillRule: \"evenodd\"\n    })), (0, _preact.h)(\"span\", {\n      className: \"uppy-Dashboard-poweredByUppy\"\n    }, \"Uppy\"));\n    const linkText = i18nArray('poweredBy', {\n      uppy: uppyBranding\n    });\n    return (0, _preact.h)(\"a\", {\n      tabIndex: \"-1\",\n      href: \"https://uppy.io\",\n      rel: \"noreferrer noopener\",\n      target: \"_blank\",\n      className: \"uppy-Dashboard-poweredBy\"\n    }, linkText);\n  }\n\n  render() {\n    return (0, _preact.h)(\"div\", {\n      className: \"uppy-Dashboard-AddFiles\"\n    }, this.renderHiddenInput(false, ref => {\n      this.fileInput = ref;\n    }), this.renderHiddenInput(true, ref => {\n      this.folderInput = ref;\n    }), this.renderDropPasteBrowseTagline(), this.props.acquirers.length > 0 && this.renderAcquirers(this.props.acquirers, this.props.disableLocalFiles), (0, _preact.h)(\"div\", {\n      className: \"uppy-Dashboard-AddFiles-info\"\n    }, this.props.note && (0, _preact.h)(\"div\", {\n      className: \"uppy-Dashboard-note\"\n    }, this.props.note), this.props.proudlyDisplayPoweredByUppy && this.renderPoweredByUppy(this.props)));\n  }\n\n}\n\nmodule.exports = AddFiles;", "\"use strict\";\n\nvar _preact = require(\"preact\");\n\nconst classNames = require(\"classnames\");\n\nconst AddFiles = require(\"./AddFiles.js\");\n\nconst AddFilesPanel = props => {\n  return (0, _preact.h)(\"div\", {\n    className: classNames('uppy-Dashboard-AddFilesPanel', props.className),\n    \"data-uppy-panelType\": \"AddFiles\",\n    \"aria-hidden\": props.showAddFilesPanel\n  }, (0, _preact.h)(\"div\", {\n    className: \"uppy-DashboardContent-bar\"\n  }, (0, _preact.h)(\"div\", {\n    className: \"uppy-DashboardContent-title\",\n    role: \"heading\",\n    \"aria-level\": \"1\"\n  }, props.i18n('addingMoreFiles')), (0, _preact.h)(\"button\", {\n    className: \"uppy-DashboardContent-back\",\n    type: \"button\",\n    onClick: () => props.toggleAddFilesPanel(false)\n  }, props.i18n('back'))), (0, _preact.h)(AddFiles, props));\n};\n\nmodule.exports = AddFilesPanel;", "\"use strict\";\n\n// ignore drop/paste events if they are not in input or textarea \u2014\n// otherwise when Url plugin adds drop/paste listeners to this.el,\n// draging UI elements or pasting anything into any field triggers those events \u2014\n// Url treats them as URLs that need to be imported\nfunction ignoreEvent(ev) {\n  const {\n    tagName\n  } = ev.target;\n\n  if (tagName === 'INPUT' || tagName === 'TEXTAREA') {\n    ev.stopPropagation();\n    return;\n  }\n\n  ev.preventDefault();\n  ev.stopPropagation();\n}\n\nmodule.exports = ignoreEvent;", "\"use strict\";\n\nvar _preact = require(\"preact\");\n\nconst classNames = require(\"classnames\");\n\nconst ignoreEvent = require(\"../utils/ignoreEvent.js\");\n\nfunction PickerPanelContent(_ref) {\n  let {\n    activePickerPanel,\n    className,\n    hideAllPanels,\n    i18n,\n    state,\n    uppy\n  } = _ref;\n  return (0, _preact.h)(\"div\", {\n    className: classNames('uppy-DashboardContent-panel', className),\n    role: \"tabpanel\",\n    \"data-uppy-panelType\": \"PickerPanel\",\n    id: `uppy-DashboardContent-panel--${activePickerPanel.id}`,\n    onDragOver: ignoreEvent,\n    onDragLeave: ignoreEvent,\n    onDrop: ignoreEvent,\n    onPaste: ignoreEvent\n  }, (0, _preact.h)(\"div\", {\n    className: \"uppy-DashboardContent-bar\"\n  }, (0, _preact.h)(\"div\", {\n    className: \"uppy-DashboardContent-title\",\n    role: \"heading\",\n    \"aria-level\": \"1\"\n  }, i18n('importFrom', {\n    name: activePickerPanel.name\n  })), (0, _preact.h)(\"button\", {\n    className: \"uppy-DashboardContent-back\",\n    type: \"button\",\n    onClick: hideAllPanels\n  }, i18n('cancel'))), (0, _preact.h)(\"div\", {\n    className: \"uppy-DashboardContent-panelBody\"\n  }, uppy.getPlugin(activePickerPanel.id).render(state)));\n}\n\nmodule.exports = PickerPanelContent;", "\"use strict\";\n\nvar _preact = require(\"preact\");\n\nconst classNames = require(\"classnames\");\n\nfunction EditorPanel(props) {\n  const file = props.files[props.fileCardFor];\n  return (0, _preact.h)(\"div\", {\n    className: classNames('uppy-DashboardContent-panel', props.className),\n    role: \"tabpanel\",\n    \"data-uppy-panelType\": \"FileEditor\",\n    id: \"uppy-DashboardContent-panel--editor\"\n  }, (0, _preact.h)(\"div\", {\n    className: \"uppy-DashboardContent-bar\"\n  }, (0, _preact.h)(\"div\", {\n    className: \"uppy-DashboardContent-title\",\n    role: \"heading\",\n    \"aria-level\": \"1\"\n  }, props.i18nArray('editing', {\n    file: (0, _preact.h)(\"span\", {\n      className: \"uppy-DashboardContent-titleFile\"\n    }, file.meta ? file.meta.name : file.name)\n  })), (0, _preact.h)(\"button\", {\n    className: \"uppy-DashboardContent-back\",\n    type: \"button\",\n    onClick: props.hideAllPanels\n  }, props.i18n('cancel')), (0, _preact.h)(\"button\", {\n    className: \"uppy-DashboardContent-save\",\n    type: \"button\",\n    onClick: props.saveFileEditor\n  }, props.i18n('save'))), (0, _preact.h)(\"div\", {\n    className: \"uppy-DashboardContent-panelBody\"\n  }, props.editors.map(target => {\n    return props.uppy.getPlugin(target.id).render(props.state);\n  })));\n}\n\nmodule.exports = EditorPanel;", "\"use strict\";\n\nvar _preact = require(\"preact\");\n\nconst uploadStates = {\n  STATE_ERROR: 'error',\n  STATE_WAITING: 'waiting',\n  STATE_PREPROCESSING: 'preprocessing',\n  STATE_UPLOADING: 'uploading',\n  STATE_POSTPROCESSING: 'postprocessing',\n  STATE_COMPLETE: 'complete',\n  STATE_PAUSED: 'paused'\n};\n\nfunction getUploadingState(isAllErrored, isAllComplete, isAllPaused, files) {\n  if (files === void 0) {\n    files = {};\n  }\n\n  if (isAllErrored) {\n    return uploadStates.STATE_ERROR;\n  }\n\n  if (isAllComplete) {\n    return uploadStates.STATE_COMPLETE;\n  }\n\n  if (isAllPaused) {\n    return uploadStates.STATE_PAUSED;\n  }\n\n  let state = uploadStates.STATE_WAITING;\n  const fileIDs = Object.keys(files);\n\n  for (let i = 0; i < fileIDs.length; i++) {\n    const {\n      progress\n    } = files[fileIDs[i]]; // If ANY files are being uploaded right now, show the uploading state.\n\n    if (progress.uploadStarted && !progress.uploadComplete) {\n      return uploadStates.STATE_UPLOADING;\n    } // If files are being preprocessed AND postprocessed at this time, we show the\n    // preprocess state. If any files are being uploaded we show uploading.\n\n\n    if (progress.preprocess && state !== uploadStates.STATE_UPLOADING) {\n      state = uploadStates.STATE_PREPROCESSING;\n    } // If NO files are being preprocessed or uploaded right now, but some files are\n    // being postprocessed, show the postprocess state.\n\n\n    if (progress.postprocess && state !== uploadStates.STATE_UPLOADING && state !== uploadStates.STATE_PREPROCESSING) {\n      state = uploadStates.STATE_POSTPROCESSING;\n    }\n  }\n\n  return state;\n}\n\nfunction UploadStatus(_ref) {\n  let {\n    files,\n    i18n,\n    isAllComplete,\n    isAllErrored,\n    isAllPaused,\n    inProgressNotPausedFiles,\n    newFiles,\n    processingFiles\n  } = _ref;\n  const uploadingState = getUploadingState(isAllErrored, isAllComplete, isAllPaused, files);\n\n  switch (uploadingState) {\n    case 'uploading':\n      return i18n('uploadingXFiles', {\n        smart_count: inProgressNotPausedFiles.length\n      });\n\n    case 'preprocessing':\n    case 'postprocessing':\n      return i18n('processingXFiles', {\n        smart_count: processingFiles.length\n      });\n\n    case 'paused':\n      return i18n('uploadPaused');\n\n    case 'waiting':\n      return i18n('xFilesSelected', {\n        smart_count: newFiles.length\n      });\n\n    case 'complete':\n      return i18n('uploadComplete');\n\n    default:\n  }\n}\n\nfunction PanelTopBar(props) {\n  const {\n    i18n,\n    isAllComplete,\n    hideCancelButton,\n    maxNumberOfFiles,\n    toggleAddFilesPanel,\n    uppy\n  } = props;\n  let {\n    allowNewUpload\n  } = props; // TODO maybe this should be done in ../Dashboard.jsx, then just pass that down as `allowNewUpload`\n\n  if (allowNewUpload && maxNumberOfFiles) {\n    // eslint-disable-next-line react/destructuring-assignment\n    allowNewUpload = props.totalFileCount < props.maxNumberOfFiles;\n  }\n\n  return (0, _preact.h)(\"div\", {\n    className: \"uppy-DashboardContent-bar\"\n  }, !isAllComplete && !hideCancelButton ? (0, _preact.h)(\"button\", {\n    className: \"uppy-DashboardContent-back\",\n    type: \"button\",\n    onClick: () => uppy.cancelAll()\n  }, i18n('cancel')) : (0, _preact.h)(\"div\", null), (0, _preact.h)(\"div\", {\n    className: \"uppy-DashboardContent-title\",\n    role: \"heading\",\n    \"aria-level\": \"1\"\n  }, (0, _preact.h)(UploadStatus, props)), allowNewUpload ? (0, _preact.h)(\"button\", {\n    className: \"uppy-DashboardContent-addMore\",\n    type: \"button\",\n    \"aria-label\": i18n('addMoreFiles'),\n    title: i18n('addMoreFiles'),\n    onClick: () => toggleAddFilesPanel(true)\n  }, (0, _preact.h)(\"svg\", {\n    \"aria-hidden\": \"true\",\n    focusable: \"false\",\n    className: \"uppy-c-icon\",\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\"\n  }, (0, _preact.h)(\"path\", {\n    d: \"M8 6.5h6a.5.5 0 0 1 .5.5v.5a.5.5 0 0 1-.5.5H8v6a.5.5 0 0 1-.5.5H7a.5.5 0 0 1-.5-.5V8h-6a.5.5 0 0 1-.5-.5V7a.5.5 0 0 1 .5-.5h6v-6A.5.5 0 0 1 7 0h.5a.5.5 0 0 1 .5.5v6z\"\n  })), (0, _preact.h)(\"span\", {\n    className: \"uppy-DashboardContent-addMoreCaption\"\n  }, i18n('addMore'))) : (0, _preact.h)(\"div\", null));\n}\n\nmodule.exports = PanelTopBar;", "\"use strict\";\n\nvar _preact = require(\"preact\");\n\nvar _nonSecure = require(\"nanoid/non-secure\");\n\nconst classNames = require(\"classnames\");\n\nconst getFileTypeIcon = require(\"../../utils/getFileTypeIcon.js\");\n\nconst ignoreEvent = require(\"../../utils/ignoreEvent.js\");\n\nconst FilePreview = require(\"../FilePreview.js\");\n\nclass FileCard extends _preact.Component {\n  constructor(props) {\n    super(props);\n    this.form = document.createElement('form');\n\n    this.updateMeta = (newVal, name) => {\n      this.setState(_ref => {\n        let {\n          formState\n        } = _ref;\n        return {\n          formState: { ...formState,\n            [name]: newVal\n          }\n        };\n      });\n    };\n\n    this.handleSave = e => {\n      e.preventDefault();\n      const fileID = this.props.fileCardFor;\n      this.props.saveFileCard(this.state.formState, fileID);\n    };\n\n    this.handleCancel = () => {\n      const file = this.props.files[this.props.fileCardFor];\n      this.props.uppy.emit('file-editor:cancel', file);\n      this.props.toggleFileCard(false);\n    };\n\n    this.saveOnEnter = ev => {\n      if (ev.keyCode === 13) {\n        ev.stopPropagation();\n        ev.preventDefault();\n        const file = this.props.files[this.props.fileCardFor];\n        this.props.saveFileCard(this.state.formState, file.id);\n      }\n    };\n\n    this.renderMetaFields = () => {\n      const metaFields = this.getMetaFields() || [];\n      const fieldCSSClasses = {\n        text: 'uppy-u-reset uppy-c-textInput uppy-Dashboard-FileCard-input'\n      };\n      return metaFields.map(field => {\n        const id = `uppy-Dashboard-FileCard-input-${field.id}`;\n        const required = this.props.requiredMetaFields.includes(field.id);\n        return (0, _preact.h)(\"fieldset\", {\n          key: field.id,\n          className: \"uppy-Dashboard-FileCard-fieldset\"\n        }, (0, _preact.h)(\"label\", {\n          className: \"uppy-Dashboard-FileCard-label\",\n          htmlFor: id\n        }, field.name), field.render !== undefined ? field.render({\n          value: this.state.formState[field.id],\n          onChange: newVal => this.updateMeta(newVal, field.id),\n          fieldCSSClasses,\n          required,\n          form: this.form.id\n        }, _preact.h) : (0, _preact.h)(\"input\", {\n          className: fieldCSSClasses.text,\n          id: id,\n          form: this.form.id,\n          type: field.type || 'text',\n          required: required,\n          value: this.state.formState[field.id],\n          placeholder: field.placeholder // If `form` attribute is not supported, we need to capture pressing Enter to avoid bubbling in case Uppy is\n          // embedded inside a <form>.\n          ,\n          onKeyUp: 'form' in HTMLInputElement.prototype ? undefined : this.saveOnEnter,\n          onKeyDown: 'form' in HTMLInputElement.prototype ? undefined : this.saveOnEnter,\n          onKeyPress: 'form' in HTMLInputElement.prototype ? undefined : this.saveOnEnter,\n          onInput: ev => this.updateMeta(ev.target.value, field.id),\n          \"data-uppy-super-focusable\": true\n        }));\n      });\n    };\n\n    const _file = this.props.files[this.props.fileCardFor];\n\n    const _metaFields = this.getMetaFields() || [];\n\n    const storedMetaData = {};\n\n    _metaFields.forEach(field => {\n      storedMetaData[field.id] = _file.meta[field.id] || '';\n    });\n\n    this.state = {\n      formState: storedMetaData\n    };\n    this.form.id = (0, _nonSecure.nanoid)();\n  } // TODO(aduh95): move this to `UNSAFE_componentWillMount` when updating to Preact X+.\n\n\n  componentWillMount() {\n    // eslint-disable-line react/no-deprecated\n    this.form.addEventListener('submit', this.handleSave);\n    document.body.appendChild(this.form);\n  }\n\n  componentWillUnmount() {\n    this.form.removeEventListener('submit', this.handleSave);\n    document.body.removeChild(this.form);\n  }\n\n  getMetaFields() {\n    return typeof this.props.metaFields === 'function' ? this.props.metaFields(this.props.files[this.props.fileCardFor]) : this.props.metaFields;\n  }\n\n  render() {\n    const file = this.props.files[this.props.fileCardFor];\n    const showEditButton = this.props.canEditFile(file);\n    return (0, _preact.h)(\"div\", {\n      className: classNames('uppy-Dashboard-FileCard', this.props.className),\n      \"data-uppy-panelType\": \"FileCard\",\n      onDragOver: ignoreEvent,\n      onDragLeave: ignoreEvent,\n      onDrop: ignoreEvent,\n      onPaste: ignoreEvent\n    }, (0, _preact.h)(\"div\", {\n      className: \"uppy-DashboardContent-bar\"\n    }, (0, _preact.h)(\"div\", {\n      className: \"uppy-DashboardContent-title\",\n      role: \"heading\",\n      \"aria-level\": \"1\"\n    }, this.props.i18nArray('editing', {\n      file: (0, _preact.h)(\"span\", {\n        className: \"uppy-DashboardContent-titleFile\"\n      }, file.meta ? file.meta.name : file.name)\n    })), (0, _preact.h)(\"button\", {\n      className: \"uppy-DashboardContent-back\",\n      type: \"button\",\n      form: this.form.id,\n      title: this.props.i18n('finishEditingFile'),\n      onClick: this.handleCancel\n    }, this.props.i18n('cancel'))), (0, _preact.h)(\"div\", {\n      className: \"uppy-Dashboard-FileCard-inner\"\n    }, (0, _preact.h)(\"div\", {\n      className: \"uppy-Dashboard-FileCard-preview\",\n      style: {\n        backgroundColor: getFileTypeIcon(file.type).color\n      }\n    }, (0, _preact.h)(FilePreview, {\n      file: file\n    }), showEditButton && (0, _preact.h)(\"button\", {\n      type: \"button\",\n      className: \"uppy-u-reset uppy-c-btn uppy-Dashboard-FileCard-edit\",\n      onClick: event => {\n        // When opening the image editor we want to save any meta fields changes.\n        // Otherwise it's confusing for the user to click save in the editor,\n        // but the changes here are discarded. This bypasses validation,\n        // but we are okay with that.\n        this.handleSave(event);\n        this.props.openFileEditor(file);\n      },\n      form: this.form.id\n    }, this.props.i18n('editFile'))), (0, _preact.h)(\"div\", {\n      className: \"uppy-Dashboard-FileCard-info\"\n    }, this.renderMetaFields()), (0, _preact.h)(\"div\", {\n      className: \"uppy-Dashboard-FileCard-actions\"\n    }, (0, _preact.h)(\"button\", {\n      className: \"uppy-u-reset uppy-c-btn uppy-c-btn-primary uppy-Dashboard-FileCard-actionsBtn\" // If `form` attribute is supported, we want a submit button to trigger the form validation.\n      // Otherwise, fallback to a classic button with a onClick event handler.\n      ,\n      type: 'form' in HTMLButtonElement.prototype ? 'submit' : 'button',\n      onClick: 'form' in HTMLButtonElement.prototype ? undefined : this.handleSave,\n      form: this.form.id\n    }, this.props.i18n('saveChanges')), (0, _preact.h)(\"button\", {\n      className: \"uppy-u-reset uppy-c-btn uppy-c-btn-link uppy-Dashboard-FileCard-actionsBtn\",\n      type: \"button\",\n      onClick: this.handleCancel,\n      form: this.form.id\n    }, this.props.i18n('cancel')))));\n  }\n\n}\n\nmodule.exports = FileCard;", "\"use strict\";\n\nvar _preact = require(\"preact\");\n\nconst classNames = require(\"classnames\");\n\nconst transitionName = 'uppy-transition-slideDownUp';\nconst duration = 250;\n/**\n * Vertical slide transition.\n *\n * This can take a _single_ child component, which _must_ accept a `className` prop.\n *\n * Currently this is specific to the `uppy-transition-slideDownUp` transition,\n * but it should be simple to extend this for any type of single-element\n * transition by setting the CSS name and duration as props.\n */\n\nclass Slide extends _preact.Component {\n  constructor(props) {\n    super(props);\n    this.state = {\n      cachedChildren: null,\n      className: ''\n    };\n  } // TODO: refactor to stable lifecycle method\n  // eslint-disable-next-line\n\n\n  componentWillUpdate(nextProps) {\n    const {\n      cachedChildren\n    } = this.state;\n    const child = (0, _preact.toChildArray)(nextProps.children)[0];\n    if (cachedChildren === child) return null;\n    const patch = {\n      cachedChildren: child\n    }; // Enter transition\n\n    if (child && !cachedChildren) {\n      patch.className = `${transitionName}-enter`;\n      cancelAnimationFrame(this.animationFrame);\n      clearTimeout(this.leaveTimeout);\n      this.leaveTimeout = undefined;\n      this.animationFrame = requestAnimationFrame(() => {\n        // Force it to render before we add the active class\n        // this.base.getBoundingClientRect()\n        this.setState({\n          className: `${transitionName}-enter ${transitionName}-enter-active`\n        });\n        this.enterTimeout = setTimeout(() => {\n          this.setState({\n            className: ''\n          });\n        }, duration);\n      });\n    } // Leave transition\n\n\n    if (cachedChildren && !child && this.leaveTimeout === undefined) {\n      patch.cachedChildren = cachedChildren;\n      patch.className = `${transitionName}-leave`;\n      cancelAnimationFrame(this.animationFrame);\n      clearTimeout(this.enterTimeout);\n      this.enterTimeout = undefined;\n      this.animationFrame = requestAnimationFrame(() => {\n        this.setState({\n          className: `${transitionName}-leave ${transitionName}-leave-active`\n        });\n        this.leaveTimeout = setTimeout(() => {\n          this.setState({\n            cachedChildren: null,\n            className: ''\n          });\n        }, duration);\n      });\n    } // eslint-disable-next-line\n\n\n    this.setState(patch);\n  }\n\n  render() {\n    const {\n      cachedChildren,\n      className\n    } = this.state;\n\n    if (!cachedChildren) {\n      return null;\n    }\n\n    return (0, _preact.cloneElement)(cachedChildren, {\n      className: classNames(className, cachedChildren.props.className)\n    });\n  }\n\n}\n\nmodule.exports = Slide;", "\"use strict\";\n\nvar _preact = require(\"preact\");\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nconst classNames = require(\"classnames\");\n\nconst isDragDropSupported = require(\"@uppy/utils/lib/isDragDropSupported\");\n\nconst FileList = require(\"./FileList.js\");\n\nconst AddFiles = require(\"./AddFiles.js\");\n\nconst AddFilesPanel = require(\"./AddFilesPanel.js\");\n\nconst PickerPanelContent = require(\"./PickerPanelContent.js\");\n\nconst EditorPanel = require(\"./EditorPanel.js\");\n\nconst PanelTopBar = require(\"./PickerPanelTopBar.js\");\n\nconst FileCard = require(\"./FileCard/index.js\");\n\nconst Slide = require(\"./Slide.js\"); // http://dev.edenspiekermann.com/2016/02/11/introducing-accessible-modal-dialog\n// https://github.com/ghosh/micromodal\n\n\nconst WIDTH_XL = 900;\nconst WIDTH_LG = 700;\nconst WIDTH_MD = 576;\nconst HEIGHT_MD = 400;\n\nfunction Dashboard(props) {\n  const noFiles = props.totalFileCount === 0;\n  const isSizeMD = props.containerWidth > WIDTH_MD;\n  const dashboardClassName = classNames({\n    'uppy-Dashboard': true,\n    'uppy-Dashboard--isDisabled': props.disabled,\n    'uppy-Dashboard--animateOpenClose': props.animateOpenClose,\n    'uppy-Dashboard--isClosing': props.isClosing,\n    'uppy-Dashboard--isDraggingOver': props.isDraggingOver,\n    'uppy-Dashboard--modal': !props.inline,\n    'uppy-size--md': props.containerWidth > WIDTH_MD,\n    'uppy-size--lg': props.containerWidth > WIDTH_LG,\n    'uppy-size--xl': props.containerWidth > WIDTH_XL,\n    'uppy-size--height-md': props.containerHeight > HEIGHT_MD,\n    'uppy-Dashboard--isAddFilesPanelVisible': props.showAddFilesPanel,\n    'uppy-Dashboard--isInnerWrapVisible': props.areInsidesReadyToBeVisible\n  }); // Important: keep these in sync with the percent width values in `src/components/FileItem/index.scss`.\n\n  let itemsPerRow = 1; // mobile\n\n  if (props.containerWidth > WIDTH_XL) {\n    itemsPerRow = 5;\n  } else if (props.containerWidth > WIDTH_LG) {\n    itemsPerRow = 4;\n  } else if (props.containerWidth > WIDTH_MD) {\n    itemsPerRow = 3;\n  }\n\n  const showFileList = props.showSelectedFiles && !noFiles;\n  const numberOfFilesForRecovery = props.recoveredState ? Object.keys(props.recoveredState.files).length : null;\n  const numberOfGhosts = props.files ? Object.keys(props.files).filter(fileID => props.files[fileID].isGhost).length : null;\n\n  const renderRestoredText = () => {\n    if (numberOfGhosts > 0) {\n      return props.i18n('recoveredXFiles', {\n        smart_count: numberOfGhosts\n      });\n    }\n\n    return props.i18n('recoveredAllFiles');\n  };\n\n  const dashboard = (0, _preact.h)(\"div\", {\n    className: dashboardClassName,\n    \"data-uppy-theme\": props.theme,\n    \"data-uppy-num-acquirers\": props.acquirers.length,\n    \"data-uppy-drag-drop-supported\": !props.disableLocalFiles && isDragDropSupported(),\n    \"aria-hidden\": props.inline ? 'false' : props.isHidden,\n    \"aria-disabled\": props.disabled,\n    \"aria-label\": !props.inline ? props.i18n('dashboardWindowTitle') : props.i18n('dashboardTitle'),\n    onPaste: props.handlePaste,\n    onDragOver: props.handleDragOver,\n    onDragLeave: props.handleDragLeave,\n    onDrop: props.handleDrop\n  }, (0, _preact.h)(\"div\", {\n    \"aria-hidden\": \"true\",\n    className: \"uppy-Dashboard-overlay\",\n    tabIndex: -1,\n    onClick: props.handleClickOutside\n  }), (0, _preact.h)(\"div\", {\n    className: \"uppy-Dashboard-inner\",\n    \"aria-modal\": !props.inline && 'true',\n    role: !props.inline && 'dialog',\n    style: {\n      width: props.inline && props.width ? props.width : '',\n      height: props.inline && props.height ? props.height : ''\n    }\n  }, !props.inline ? (0, _preact.h)(\"button\", {\n    className: \"uppy-u-reset uppy-Dashboard-close\",\n    type: \"button\",\n    \"aria-label\": props.i18n('closeModal'),\n    title: props.i18n('closeModal'),\n    onClick: props.closeModal\n  }, (0, _preact.h)(\"span\", {\n    \"aria-hidden\": \"true\"\n  }, \"\\xD7\")) : null, (0, _preact.h)(\"div\", {\n    className: \"uppy-Dashboard-innerWrap\"\n  }, (0, _preact.h)(\"div\", {\n    className: \"uppy-Dashboard-dropFilesHereHint\"\n  }, props.i18n('dropHint')), showFileList && (0, _preact.h)(PanelTopBar, props), numberOfFilesForRecovery && (0, _preact.h)(\"div\", {\n    className: \"uppy-Dashboard-serviceMsg\"\n  }, (0, _preact.h)(\"svg\", {\n    className: \"uppy-Dashboard-serviceMsg-icon\",\n    \"aria-hidden\": \"true\",\n    focusable: \"false\",\n    width: \"21\",\n    height: \"16\",\n    viewBox: \"0 0 24 19\"\n  }, (0, _preact.h)(\"g\", {\n    transform: \"translate(0 -1)\",\n    fill: \"none\",\n    fillRule: \"evenodd\"\n  }, (0, _preact.h)(\"path\", {\n    d: \"M12.857 1.43l10.234 17.056A1 1 0 0122.234 20H1.766a1 1 0 01-.857-1.514L11.143 1.429a1 1 0 011.714 0z\",\n    fill: \"#FFD300\"\n  }), (0, _preact.h)(\"path\", {\n    fill: \"#000\",\n    d: \"M11 6h2l-.3 8h-1.4z\"\n  }), (0, _preact.h)(\"circle\", {\n    fill: \"#000\",\n    cx: \"12\",\n    cy: \"17\",\n    r: \"1\"\n  }))), (0, _preact.h)(\"strong\", {\n    className: \"uppy-Dashboard-serviceMsg-title\"\n  }, props.i18n('sessionRestored')), (0, _preact.h)(\"div\", {\n    className: \"uppy-Dashboard-serviceMsg-text\"\n  }, renderRestoredText())), showFileList ? (0, _preact.h)(FileList // eslint-disable-next-line react/jsx-props-no-spreading\n  , _extends({}, props, {\n    itemsPerRow: itemsPerRow\n  })) : // eslint-disable-next-line react/jsx-props-no-spreading\n  (0, _preact.h)(AddFiles, _extends({}, props, {\n    isSizeMD: isSizeMD\n  })), (0, _preact.h)(Slide, null, props.showAddFilesPanel ? (0, _preact.h)(AddFilesPanel, _extends({\n    key: \"AddFiles\"\n  }, props, {\n    isSizeMD: isSizeMD\n  })) : null), (0, _preact.h)(Slide, null, props.fileCardFor ? (0, _preact.h)(FileCard, _extends({\n    key: \"FileCard\"\n  }, props)) : null), (0, _preact.h)(Slide, null, props.activePickerPanel ? (0, _preact.h)(PickerPanelContent, _extends({\n    key: \"Picker\"\n  }, props)) : null), (0, _preact.h)(Slide, null, props.showFileEditor ? (0, _preact.h)(EditorPanel, _extends({\n    key: \"Editor\"\n  }, props)) : null), (0, _preact.h)(\"div\", {\n    className: \"uppy-Dashboard-progressindicators\"\n  }, props.progressindicators.map(target => {\n    return props.uppy.getPlugin(target.id).render(props.state);\n  })))));\n  return dashboard;\n}\n\nmodule.exports = Dashboard;", "\"use strict\";\n\nmodule.exports = {\n  strings: {\n    // When `inline: false`, used as the screen reader label for the button that closes the modal.\n    closeModal: 'Close Modal',\n    // Used as the screen reader label for the plus (+) button that shows the \u201CAdd more files\u201D screen\n    addMoreFiles: 'Add more files',\n    addingMoreFiles: 'Adding more files',\n    // Used as the header for import panels, e.g., \u201CImport from Google Drive\u201D.\n    importFrom: 'Import from %{name}',\n    // When `inline: false`, used as the screen reader label for the dashboard modal.\n    dashboardWindowTitle: 'Uppy Dashboard Window (Press escape to close)',\n    // When `inline: true`, used as the screen reader label for the dashboard area.\n    dashboardTitle: 'Uppy Dashboard',\n    // Shown in the Informer when a link to a file was copied to the clipboard.\n    copyLinkToClipboardSuccess: 'Link copied to clipboard.',\n    // Used when a link cannot be copied automatically \u2014 the user has to select the text from the\n    // input element below this string.\n    copyLinkToClipboardFallback: 'Copy the URL below',\n    // Used as the hover title and screen reader label for buttons that copy a file link.\n    copyLink: 'Copy link',\n    back: 'Back',\n    // Used as the screen reader label for buttons that remove a file.\n    removeFile: 'Remove file',\n    // Used as the screen reader label for buttons that open the metadata editor panel for a file.\n    editFile: 'Edit file',\n    // Shown in the panel header for the metadata editor. Rendered as \u201CEditing image.png\u201D.\n    editing: 'Editing %{file}',\n    // Used as the screen reader label for the button that saves metadata edits and returns to the\n    // file list view.\n    finishEditingFile: 'Finish editing file',\n    saveChanges: 'Save changes',\n    // Used as the label for the tab button that opens the system file selection dialog.\n    myDevice: 'My Device',\n    dropHint: 'Drop your files here',\n    // Used as the hover text and screen reader label for file progress indicators when\n    // they have been fully uploaded.\n    uploadComplete: 'Upload complete',\n    uploadPaused: 'Upload paused',\n    // Used as the hover text and screen reader label for the buttons to resume paused uploads.\n    resumeUpload: 'Resume upload',\n    // Used as the hover text and screen reader label for the buttons to pause uploads.\n    pauseUpload: 'Pause upload',\n    // Used as the hover text and screen reader label for the buttons to retry failed uploads.\n    retryUpload: 'Retry upload',\n    // Used as the hover text and screen reader label for the buttons to cancel uploads.\n    cancelUpload: 'Cancel upload',\n    // Used in a title, how many files are currently selected\n    xFilesSelected: {\n      0: '%{smart_count} file selected',\n      1: '%{smart_count} files selected'\n    },\n    uploadingXFiles: {\n      0: 'Uploading %{smart_count} file',\n      1: 'Uploading %{smart_count} files'\n    },\n    processingXFiles: {\n      0: 'Processing %{smart_count} file',\n      1: 'Processing %{smart_count} files'\n    },\n    // The \"powered by Uppy\" link at the bottom of the Dashboard.\n    poweredBy: 'Powered by %{uppy}',\n    addMore: 'Add more',\n    editFileWithFilename: 'Edit file %{file}',\n    save: 'Save',\n    cancel: 'Cancel',\n    dropPasteFiles: 'Drop files here or %{browseFiles}',\n    dropPasteFolders: 'Drop files here or %{browseFolders}',\n    dropPasteBoth: 'Drop files here, %{browseFiles} or %{browseFolders}',\n    dropPasteImportFiles: 'Drop files here, %{browseFiles} or import from:',\n    dropPasteImportFolders: 'Drop files here, %{browseFolders} or import from:',\n    dropPasteImportBoth: 'Drop files here, %{browseFiles}, %{browseFolders} or import from:',\n    importFiles: 'Import files from:',\n    browseFiles: 'browse files',\n    browseFolders: 'browse folders',\n    recoveredXFiles: {\n      0: 'We could not fully recover 1 file. Please re-select it and resume the upload.',\n      1: 'We could not fully recover %{smart_count} files. Please re-select them and resume the upload.'\n    },\n    recoveredAllFiles: 'We restored all files. You can now resume the upload.',\n    sessionRestored: 'Session restored',\n    reSelect: 'Re-select',\n    missingRequiredMetaFields: {\n      0: 'Missing required meta field: %{fields}.',\n      1: 'Missing required meta fields: %{fields}.'\n    }\n  }\n};", "\"use strict\";\n\nvar _preact = require(\"preact\");\n\nvar _core = require(\"@uppy/core\");\n\nvar _nonSecure = require(\"nanoid/non-secure\");\n\nvar trapFocus = require(\"./utils/trapFocus.js\");\n\nfunction _classPrivateFieldLooseBase(receiver, privateKey) { if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) { throw new TypeError(\"attempted to use private field on non-instance\"); } return receiver; }\n\nvar id = 0;\n\nfunction _classPrivateFieldLooseKey(name) { return \"__private_\" + id++ + \"_\" + name; }\n\nconst StatusBar = require(\"@uppy/status-bar\");\n\nconst Informer = require(\"@uppy/informer\");\n\nconst ThumbnailGenerator = require(\"@uppy/thumbnail-generator\");\n\nconst findAllDOMElements = require(\"@uppy/utils/lib/findAllDOMElements\");\n\nconst toArray = require(\"@uppy/utils/lib/toArray\");\n\nconst getDroppedFiles = require(\"@uppy/utils/lib/getDroppedFiles\");\n\nconst memoizeOne = require(\"memoize-one\");\n\nconst FOCUSABLE_ELEMENTS = require(\"@uppy/utils/lib/FOCUSABLE_ELEMENTS.js\");\n\nconst createSuperFocus = require(\"./utils/createSuperFocus.js\");\n\nconst DashboardUI = require(\"./components/Dashboard.js\");\n\nconst packageJson = {\n  \"version\": \"2.4.3\"\n};\n\nconst locale = require(\"./locale.js\");\n\nconst memoize = memoizeOne.default || memoizeOne;\nconst TAB_KEY = 9;\nconst ESC_KEY = 27;\n\nfunction createPromise() {\n  const o = {};\n  o.promise = new Promise((resolve, reject) => {\n    o.resolve = resolve;\n    o.reject = reject;\n  });\n  return o;\n}\n\nfunction defaultPickerIcon() {\n  return (0, _preact.h)(\"svg\", {\n    \"aria-hidden\": \"true\",\n    focusable: \"false\",\n    width: \"30\",\n    height: \"30\",\n    viewBox: \"0 0 30 30\"\n  }, (0, _preact.h)(\"path\", {\n    d: \"M15 30c8.284 0 15-6.716 15-15 0-8.284-6.716-15-15-15C6.716 0 0 6.716 0 15c0 8.284 6.716 15 15 15zm4.258-12.676v6.846h-8.426v-6.846H5.204l9.82-12.364 9.82 12.364H19.26z\"\n  }));\n}\n/**\n * Dashboard UI with previews, metadata editing, tabs for various services and more\n */\n\n\nvar _openFileEditorWhenFilesAdded = /*#__PURE__*/_classPrivateFieldLooseKey(\"openFileEditorWhenFilesAdded\");\n\nvar _attachRenderFunctionToTarget = /*#__PURE__*/_classPrivateFieldLooseKey(\"attachRenderFunctionToTarget\");\n\nvar _isTargetSupported = /*#__PURE__*/_classPrivateFieldLooseKey(\"isTargetSupported\");\n\nvar _getAcquirers = /*#__PURE__*/_classPrivateFieldLooseKey(\"getAcquirers\");\n\nvar _getProgressIndicators = /*#__PURE__*/_classPrivateFieldLooseKey(\"getProgressIndicators\");\n\nvar _getEditors = /*#__PURE__*/_classPrivateFieldLooseKey(\"getEditors\");\n\nclass Dashboard extends _core.UIPlugin {\n  constructor(uppy, _opts) {\n    var _this;\n\n    super(uppy, _opts);\n    _this = this;\n\n    this.removeTarget = plugin => {\n      const pluginState = this.getPluginState(); // filter out the one we want to remove\n\n      const newTargets = pluginState.targets.filter(target => target.id !== plugin.id);\n      this.setPluginState({\n        targets: newTargets\n      });\n    };\n\n    this.addTarget = plugin => {\n      const callerPluginId = plugin.id || plugin.constructor.name;\n      const callerPluginName = plugin.title || callerPluginId;\n      const callerPluginType = plugin.type;\n\n      if (callerPluginType !== 'acquirer' && callerPluginType !== 'progressindicator' && callerPluginType !== 'editor') {\n        const msg = 'Dashboard: can only be targeted by plugins of types: acquirer, progressindicator, editor';\n        this.uppy.log(msg, 'error');\n        return undefined;\n      }\n\n      const target = {\n        id: callerPluginId,\n        name: callerPluginName,\n        type: callerPluginType\n      };\n      const state = this.getPluginState();\n      const newTargets = state.targets.slice();\n      newTargets.push(target);\n      this.setPluginState({\n        targets: newTargets\n      });\n      return this.el;\n    };\n\n    this.hideAllPanels = () => {\n      const state = this.getPluginState();\n      const update = {\n        activePickerPanel: false,\n        showAddFilesPanel: false,\n        activeOverlayType: null,\n        fileCardFor: null,\n        showFileEditor: false\n      };\n\n      if (state.activePickerPanel === update.activePickerPanel && state.showAddFilesPanel === update.showAddFilesPanel && state.showFileEditor === update.showFileEditor && state.activeOverlayType === update.activeOverlayType) {\n        // avoid doing a state update if nothing changed\n        return;\n      }\n\n      this.setPluginState(update);\n    };\n\n    this.showPanel = id => {\n      const {\n        targets\n      } = this.getPluginState();\n      const activePickerPanel = targets.filter(target => {\n        return target.type === 'acquirer' && target.id === id;\n      })[0];\n      this.setPluginState({\n        activePickerPanel,\n        activeOverlayType: 'PickerPanel'\n      });\n    };\n\n    this.canEditFile = file => {\n      const {\n        targets\n      } = this.getPluginState();\n\n      const editors = _classPrivateFieldLooseBase(this, _getEditors)[_getEditors](targets);\n\n      return editors.some(target => this.uppy.getPlugin(target.id).canEditFile(file));\n    };\n\n    this.openFileEditor = file => {\n      const {\n        targets\n      } = this.getPluginState();\n\n      const editors = _classPrivateFieldLooseBase(this, _getEditors)[_getEditors](targets);\n\n      this.setPluginState({\n        showFileEditor: true,\n        fileCardFor: file.id || null,\n        activeOverlayType: 'FileEditor'\n      });\n      editors.forEach(editor => {\n        this.uppy.getPlugin(editor.id).selectFile(file);\n      });\n    };\n\n    this.saveFileEditor = () => {\n      const {\n        targets\n      } = this.getPluginState();\n\n      const editors = _classPrivateFieldLooseBase(this, _getEditors)[_getEditors](targets);\n\n      editors.forEach(editor => {\n        this.uppy.getPlugin(editor.id).save();\n      });\n      this.hideAllPanels();\n    };\n\n    this.openModal = () => {\n      const {\n        promise,\n        resolve\n      } = createPromise(); // save scroll position\n\n      this.savedScrollPosition = window.pageYOffset; // save active element, so we can restore focus when modal is closed\n\n      this.savedActiveElement = document.activeElement;\n\n      if (this.opts.disablePageScrollWhenModalOpen) {\n        document.body.classList.add('uppy-Dashboard-isFixed');\n      }\n\n      if (this.opts.animateOpenClose && this.getPluginState().isClosing) {\n        const handler = () => {\n          this.setPluginState({\n            isHidden: false\n          });\n          this.el.removeEventListener('animationend', handler, false);\n          resolve();\n        };\n\n        this.el.addEventListener('animationend', handler, false);\n      } else {\n        this.setPluginState({\n          isHidden: false\n        });\n        resolve();\n      }\n\n      if (this.opts.browserBackButtonClose) {\n        this.updateBrowserHistory();\n      } // handle ESC and TAB keys in modal dialog\n\n\n      document.addEventListener('keydown', this.handleKeyDownInModal);\n      this.uppy.emit('dashboard:modal-open');\n      return promise;\n    };\n\n    this.closeModal = function (opts) {\n      if (opts === void 0) {\n        opts = {};\n      }\n\n      const {\n        // Whether the modal is being closed by the user (`true`) or by other means (e.g. browser back button)\n        manualClose = true\n      } = opts;\n\n      const {\n        isHidden,\n        isClosing\n      } = _this.getPluginState();\n\n      if (isHidden || isClosing) {\n        // short-circuit if animation is ongoing\n        return undefined;\n      }\n\n      const {\n        promise,\n        resolve\n      } = createPromise();\n\n      if (_this.opts.disablePageScrollWhenModalOpen) {\n        document.body.classList.remove('uppy-Dashboard-isFixed');\n      }\n\n      if (_this.opts.animateOpenClose) {\n        _this.setPluginState({\n          isClosing: true\n        });\n\n        const handler = () => {\n          _this.setPluginState({\n            isHidden: true,\n            isClosing: false\n          });\n\n          _this.superFocus.cancel();\n\n          _this.savedActiveElement.focus();\n\n          _this.el.removeEventListener('animationend', handler, false);\n\n          resolve();\n        };\n\n        _this.el.addEventListener('animationend', handler, false);\n      } else {\n        _this.setPluginState({\n          isHidden: true\n        });\n\n        _this.superFocus.cancel();\n\n        _this.savedActiveElement.focus();\n\n        resolve();\n      } // handle ESC and TAB keys in modal dialog\n\n\n      document.removeEventListener('keydown', _this.handleKeyDownInModal);\n\n      if (manualClose) {\n        if (_this.opts.browserBackButtonClose) {\n          var _history$state;\n\n          // Make sure that the latest entry in the history state is our modal name\n          // eslint-disable-next-line no-restricted-globals\n          if ((_history$state = history.state) != null && _history$state[_this.modalName]) {\n            // Go back in history to clear out the entry we created (ultimately closing the modal)\n            // eslint-disable-next-line no-restricted-globals\n            history.back();\n          }\n        }\n      }\n\n      _this.uppy.emit('dashboard:modal-closed');\n\n      return promise;\n    };\n\n    this.isModalOpen = () => {\n      return !this.getPluginState().isHidden || false;\n    };\n\n    this.requestCloseModal = () => {\n      if (this.opts.onRequestCloseModal) {\n        return this.opts.onRequestCloseModal();\n      }\n\n      return this.closeModal();\n    };\n\n    this.setDarkModeCapability = isDarkModeOn => {\n      const {\n        capabilities\n      } = this.uppy.getState();\n      this.uppy.setState({\n        capabilities: { ...capabilities,\n          darkMode: isDarkModeOn\n        }\n      });\n    };\n\n    this.handleSystemDarkModeChange = event => {\n      const isDarkModeOnNow = event.matches;\n      this.uppy.log(`[Dashboard] Dark mode is ${isDarkModeOnNow ? 'on' : 'off'}`);\n      this.setDarkModeCapability(isDarkModeOnNow);\n    };\n\n    this.toggleFileCard = (show, fileID) => {\n      const file = this.uppy.getFile(fileID);\n\n      if (show) {\n        this.uppy.emit('dashboard:file-edit-start', file);\n      } else {\n        this.uppy.emit('dashboard:file-edit-complete', file);\n      }\n\n      this.setPluginState({\n        fileCardFor: show ? fileID : null,\n        activeOverlayType: show ? 'FileCard' : null\n      });\n    };\n\n    this.toggleAddFilesPanel = show => {\n      this.setPluginState({\n        showAddFilesPanel: show,\n        activeOverlayType: show ? 'AddFiles' : null\n      });\n    };\n\n    this.addFiles = files => {\n      const descriptors = files.map(file => ({\n        source: this.id,\n        name: file.name,\n        type: file.type,\n        data: file,\n        meta: {\n          // path of the file relative to the ancestor directory the user selected.\n          // e.g. 'docs/Old Prague/airbnb.pdf'\n          relativePath: file.relativePath || file.webkitRelativePath || null\n        }\n      }));\n\n      try {\n        this.uppy.addFiles(descriptors);\n      } catch (err) {\n        this.uppy.log(err);\n      }\n    };\n\n    this.startListeningToResize = () => {\n      // Watch for Dashboard container (`.uppy-Dashboard-inner`) resize\n      // and update containerWidth/containerHeight in plugin state accordingly.\n      // Emits first event on initialization.\n      this.resizeObserver = new ResizeObserver(entries => {\n        const uppyDashboardInnerEl = entries[0];\n        const {\n          width,\n          height\n        } = uppyDashboardInnerEl.contentRect;\n        this.uppy.log(`[Dashboard] resized: ${width} / ${height}`, 'debug');\n        this.setPluginState({\n          containerWidth: width,\n          containerHeight: height,\n          areInsidesReadyToBeVisible: true\n        });\n      });\n      this.resizeObserver.observe(this.el.querySelector('.uppy-Dashboard-inner')); // If ResizeObserver fails to emit an event telling us what size to use - default to the mobile view\n\n      this.makeDashboardInsidesVisibleAnywayTimeout = setTimeout(() => {\n        const pluginState = this.getPluginState();\n        const isModalAndClosed = !this.opts.inline && pluginState.isHidden;\n\n        if ( // if ResizeObserver hasn't yet fired,\n        !pluginState.areInsidesReadyToBeVisible // and it's not due to the modal being closed\n        && !isModalAndClosed) {\n          this.uppy.log(\"[Dashboard] resize event didn't fire on time: defaulted to mobile layout\", 'debug');\n          this.setPluginState({\n            areInsidesReadyToBeVisible: true\n          });\n        }\n      }, 1000);\n    };\n\n    this.stopListeningToResize = () => {\n      this.resizeObserver.disconnect();\n      clearTimeout(this.makeDashboardInsidesVisibleAnywayTimeout);\n    };\n\n    this.recordIfFocusedOnUppyRecently = event => {\n      if (this.el.contains(event.target)) {\n        this.ifFocusedOnUppyRecently = true;\n      } else {\n        this.ifFocusedOnUppyRecently = false; // ___Why run this.superFocus.cancel here when it already runs in superFocusOnEachUpdate?\n        //    Because superFocus is debounced, when we move from Uppy to some other element on the page,\n        //    previously run superFocus sometimes hits and moves focus back to Uppy.\n\n        this.superFocus.cancel();\n      }\n    };\n\n    this.disableAllFocusableElements = disable => {\n      const focusableNodes = toArray(this.el.querySelectorAll(FOCUSABLE_ELEMENTS));\n\n      if (disable) {\n        focusableNodes.forEach(node => {\n          // save previous tabindex in a data-attribute, to restore when enabling\n          const currentTabIndex = node.getAttribute('tabindex');\n\n          if (currentTabIndex) {\n            node.dataset.inertTabindex = currentTabIndex; // eslint-disable-line no-param-reassign\n          }\n\n          node.setAttribute('tabindex', '-1');\n        });\n      } else {\n        focusableNodes.forEach(node => {\n          if ('inertTabindex' in node.dataset) {\n            node.setAttribute('tabindex', node.dataset.inertTabindex);\n          } else {\n            node.removeAttribute('tabindex');\n          }\n        });\n      }\n\n      this.dashboardIsDisabled = disable;\n    };\n\n    this.updateBrowserHistory = () => {\n      var _history$state2;\n\n      // Ensure history state does not already contain our modal name to avoid double-pushing\n      // eslint-disable-next-line no-restricted-globals\n      if (!((_history$state2 = history.state) != null && _history$state2[this.modalName])) {\n        // Push to history so that the page is not lost on browser back button press\n        // eslint-disable-next-line no-restricted-globals\n        history.pushState({ // eslint-disable-next-line no-restricted-globals\n          ...history.state,\n          [this.modalName]: true\n        }, '');\n      } // Listen for back button presses\n\n\n      window.addEventListener('popstate', this.handlePopState, false);\n    };\n\n    this.handlePopState = event => {\n      var _event$state;\n\n      // Close the modal if the history state no longer contains our modal name\n      if (this.isModalOpen() && (!event.state || !event.state[this.modalName])) {\n        this.closeModal({\n          manualClose: false\n        });\n      } // When the browser back button is pressed and uppy is now the latest entry\n      // in the history but the modal is closed, fix the history by removing the\n      // uppy history entry.\n      // This occurs when another entry is added into the history state while the\n      // modal is open, and then the modal gets manually closed.\n      // Solves PR #575 (https://github.com/transloadit/uppy/pull/575)\n\n\n      if (!this.isModalOpen() && (_event$state = event.state) != null && _event$state[this.modalName]) {\n        // eslint-disable-next-line no-restricted-globals\n        history.back();\n      }\n    };\n\n    this.handleKeyDownInModal = event => {\n      // close modal on esc key press\n      if (event.keyCode === ESC_KEY) this.requestCloseModal(event); // trap focus on tab key press\n\n      if (event.keyCode === TAB_KEY) trapFocus.forModal(event, this.getPluginState().activeOverlayType, this.el);\n    };\n\n    this.handleClickOutside = () => {\n      if (this.opts.closeModalOnClickOutside) this.requestCloseModal();\n    };\n\n    this.handlePaste = event => {\n      // Let any acquirer plugin (Url/Webcam/etc.) handle pastes to the root\n      this.uppy.iteratePlugins(plugin => {\n        if (plugin.type === 'acquirer') {\n          // Every Plugin with .type acquirer can define handleRootPaste(event)\n          plugin.handleRootPaste == null ? void 0 : plugin.handleRootPaste(event);\n        }\n      }); // Add all dropped files\n\n      const files = toArray(event.clipboardData.files);\n\n      if (files.length > 0) {\n        this.uppy.log('[Dashboard] Files pasted');\n        this.addFiles(files);\n      }\n    };\n\n    this.handleInputChange = event => {\n      event.preventDefault();\n      const files = toArray(event.target.files);\n\n      if (files.length > 0) {\n        this.uppy.log('[Dashboard] Files selected through input');\n        this.addFiles(files);\n      }\n    };\n\n    this.handleDragOver = event => {\n      var _this$opts$onDragOver, _this$opts;\n\n      event.preventDefault();\n      event.stopPropagation(); // Check if some plugin can handle the datatransfer without files \u2014\n      // for instance, the Url plugin can import a url\n\n      const canSomePluginHandleRootDrop = () => {\n        let somePluginCanHandleRootDrop = true;\n        this.uppy.iteratePlugins(plugin => {\n          if (plugin.canHandleRootDrop != null && plugin.canHandleRootDrop(event)) {\n            somePluginCanHandleRootDrop = true;\n          }\n        });\n        return somePluginCanHandleRootDrop;\n      }; // Check if the \"type\" of the datatransfer object includes files\n\n\n      const doesEventHaveFiles = () => {\n        const {\n          types\n        } = event.dataTransfer;\n        return types.some(type => type === 'Files');\n      }; // Deny drop, if no plugins can handle datatransfer, there are no files,\n      // or when opts.disabled is set, or new uploads are not allowed\n\n\n      const somePluginCanHandleRootDrop = canSomePluginHandleRootDrop(event);\n      const hasFiles = doesEventHaveFiles(event);\n\n      if (!somePluginCanHandleRootDrop && !hasFiles || this.opts.disabled // opts.disableLocalFiles should only be taken into account if no plugins\n      // can handle the datatransfer\n      || this.opts.disableLocalFiles && (hasFiles || !somePluginCanHandleRootDrop) || !this.uppy.getState().allowNewUpload) {\n        event.dataTransfer.dropEffect = 'none'; // eslint-disable-line no-param-reassign\n\n        clearTimeout(this.removeDragOverClassTimeout);\n        return;\n      } // Add a small (+) icon on drop\n      // (and prevent browsers from interpreting this as files being _moved_ into the\n      // browser, https://github.com/transloadit/uppy/issues/1978).\n\n\n      event.dataTransfer.dropEffect = 'copy'; // eslint-disable-line no-param-reassign\n\n      clearTimeout(this.removeDragOverClassTimeout);\n      this.setPluginState({\n        isDraggingOver: true\n      });\n      (_this$opts$onDragOver = (_this$opts = this.opts).onDragOver) == null ? void 0 : _this$opts$onDragOver.call(_this$opts, event);\n    };\n\n    this.handleDragLeave = event => {\n      var _this$opts$onDragLeav, _this$opts2;\n\n      event.preventDefault();\n      event.stopPropagation();\n      clearTimeout(this.removeDragOverClassTimeout); // Timeout against flickering, this solution is taken from drag-drop library.\n      // Solution with 'pointer-events: none' didn't work across browsers.\n\n      this.removeDragOverClassTimeout = setTimeout(() => {\n        this.setPluginState({\n          isDraggingOver: false\n        });\n      }, 50);\n      (_this$opts$onDragLeav = (_this$opts2 = this.opts).onDragLeave) == null ? void 0 : _this$opts$onDragLeav.call(_this$opts2, event);\n    };\n\n    this.handleDrop = async event => {\n      var _this$opts$onDrop, _this$opts3;\n\n      event.preventDefault();\n      event.stopPropagation();\n      clearTimeout(this.removeDragOverClassTimeout);\n      this.setPluginState({\n        isDraggingOver: false\n      }); // Let any acquirer plugin (Url/Webcam/etc.) handle drops to the root\n\n      this.uppy.iteratePlugins(plugin => {\n        if (plugin.type === 'acquirer') {\n          // Every Plugin with .type acquirer can define handleRootDrop(event)\n          plugin.handleRootDrop == null ? void 0 : plugin.handleRootDrop(event);\n        }\n      }); // Add all dropped files\n\n      let executedDropErrorOnce = false;\n\n      const logDropError = error => {\n        this.uppy.log(error, 'error'); // In practice all drop errors are most likely the same,\n        // so let's just show one to avoid overwhelming the user\n\n        if (!executedDropErrorOnce) {\n          this.uppy.info(error.message, 'error');\n          executedDropErrorOnce = true;\n        }\n      }; // Add all dropped files\n\n\n      const files = await getDroppedFiles(event.dataTransfer, {\n        logDropError\n      });\n\n      if (files.length > 0) {\n        this.uppy.log('[Dashboard] Files dropped');\n        this.addFiles(files);\n      }\n\n      (_this$opts$onDrop = (_this$opts3 = this.opts).onDrop) == null ? void 0 : _this$opts$onDrop.call(_this$opts3, event);\n    };\n\n    this.handleRequestThumbnail = file => {\n      if (!this.opts.waitForThumbnailsBeforeUpload) {\n        this.uppy.emit('thumbnail:request', file);\n      }\n    };\n\n    this.handleCancelThumbnail = file => {\n      if (!this.opts.waitForThumbnailsBeforeUpload) {\n        this.uppy.emit('thumbnail:cancel', file);\n      }\n    };\n\n    this.handleKeyDownInInline = event => {\n      // Trap focus on tab key press.\n      if (event.keyCode === TAB_KEY) trapFocus.forInline(event, this.getPluginState().activeOverlayType, this.el);\n    };\n\n    this.handlePasteOnBody = event => {\n      const isFocusInOverlay = this.el.contains(document.activeElement);\n\n      if (isFocusInOverlay) {\n        this.handlePaste(event);\n      }\n    };\n\n    this.handleComplete = _ref => {\n      let {\n        failed\n      } = _ref;\n\n      if (this.opts.closeAfterFinish && failed.length === 0) {\n        // All uploads are done\n        this.requestCloseModal();\n      }\n    };\n\n    this.handleCancelRestore = () => {\n      this.uppy.emit('restore-canceled');\n    };\n\n    Object.defineProperty(this, _openFileEditorWhenFilesAdded, {\n      writable: true,\n      value: files => {\n        const firstFile = files[0];\n\n        if (this.canEditFile(firstFile)) {\n          this.openFileEditor(firstFile);\n        }\n      }\n    });\n\n    this.initEvents = () => {\n      // Modal open button\n      if (this.opts.trigger && !this.opts.inline) {\n        const showModalTrigger = findAllDOMElements(this.opts.trigger);\n\n        if (showModalTrigger) {\n          showModalTrigger.forEach(trigger => trigger.addEventListener('click', this.openModal));\n        } else {\n          this.uppy.log('Dashboard modal trigger not found. Make sure `trigger` is set in Dashboard options, unless you are planning to call `dashboard.openModal()` method yourself', 'warning');\n        }\n      }\n\n      this.startListeningToResize();\n      document.addEventListener('paste', this.handlePasteOnBody);\n      this.uppy.on('plugin-remove', this.removeTarget);\n      this.uppy.on('file-added', this.hideAllPanels);\n      this.uppy.on('dashboard:modal-closed', this.hideAllPanels);\n      this.uppy.on('file-editor:complete', this.hideAllPanels);\n      this.uppy.on('complete', this.handleComplete); // ___Why fire on capture?\n      //    Because this.ifFocusedOnUppyRecently needs to change before onUpdate() fires.\n\n      document.addEventListener('focus', this.recordIfFocusedOnUppyRecently, true);\n      document.addEventListener('click', this.recordIfFocusedOnUppyRecently, true);\n\n      if (this.opts.inline) {\n        this.el.addEventListener('keydown', this.handleKeyDownInInline);\n      }\n\n      if (this.opts.autoOpenFileEditor) {\n        this.uppy.on('files-added', _classPrivateFieldLooseBase(this, _openFileEditorWhenFilesAdded)[_openFileEditorWhenFilesAdded]);\n      }\n    };\n\n    this.removeEvents = () => {\n      const showModalTrigger = findAllDOMElements(this.opts.trigger);\n\n      if (!this.opts.inline && showModalTrigger) {\n        showModalTrigger.forEach(trigger => trigger.removeEventListener('click', this.openModal));\n      }\n\n      this.stopListeningToResize();\n      document.removeEventListener('paste', this.handlePasteOnBody);\n      window.removeEventListener('popstate', this.handlePopState, false);\n      this.uppy.off('plugin-remove', this.removeTarget);\n      this.uppy.off('file-added', this.hideAllPanels);\n      this.uppy.off('dashboard:modal-closed', this.hideAllPanels);\n      this.uppy.off('file-editor:complete', this.hideAllPanels);\n      this.uppy.off('complete', this.handleComplete);\n      document.removeEventListener('focus', this.recordIfFocusedOnUppyRecently);\n      document.removeEventListener('click', this.recordIfFocusedOnUppyRecently);\n\n      if (this.opts.inline) {\n        this.el.removeEventListener('keydown', this.handleKeyDownInInline);\n      }\n\n      if (this.opts.autoOpenFileEditor) {\n        this.uppy.off('files-added', _classPrivateFieldLooseBase(this, _openFileEditorWhenFilesAdded)[_openFileEditorWhenFilesAdded]);\n      }\n    };\n\n    this.superFocusOnEachUpdate = () => {\n      const isFocusInUppy = this.el.contains(document.activeElement); // When focus is lost on the page (== focus is on body for most browsers, or focus is null for IE11)\n\n      const isFocusNowhere = document.activeElement === document.body || document.activeElement === null;\n      const isInformerHidden = this.uppy.getState().info.length === 0;\n      const isModal = !this.opts.inline;\n\n      if ( // If update is connected to showing the Informer - let the screen reader calmly read it.\n      isInformerHidden && ( // If we are in a modal - always superfocus without concern for other elements\n      // on the page (user is unlikely to want to interact with the rest of the page)\n      isModal // If we are already inside of Uppy, or\n      || isFocusInUppy // If we are not focused on anything BUT we have already, at least once, focused on uppy\n      //   1. We focus when isFocusNowhere, because when the element we were focused\n      //      on disappears (e.g. an overlay), - focus gets lost. If user is typing\n      //      something somewhere else on the page, - focus won't be 'nowhere'.\n      //   2. We only focus when focus is nowhere AND this.ifFocusedOnUppyRecently,\n      //      to avoid focus jumps if we do something else on the page.\n      //   [Practical check] Without '&& this.ifFocusedOnUppyRecently', in Safari, in inline mode,\n      //                     when file is uploading, - navigate via tab to the checkbox,\n      //                     try to press space multiple times. Focus will jump to Uppy.\n      || isFocusNowhere && this.ifFocusedOnUppyRecently)) {\n        this.superFocus(this.el, this.getPluginState().activeOverlayType);\n      } else {\n        this.superFocus.cancel();\n      }\n    };\n\n    this.afterUpdate = () => {\n      if (this.opts.disabled && !this.dashboardIsDisabled) {\n        this.disableAllFocusableElements(true);\n        return;\n      }\n\n      if (!this.opts.disabled && this.dashboardIsDisabled) {\n        this.disableAllFocusableElements(false);\n      }\n\n      this.superFocusOnEachUpdate();\n    };\n\n    this.saveFileCard = (meta, fileID) => {\n      this.uppy.setFileMeta(fileID, meta);\n      this.toggleFileCard(false, fileID);\n    };\n\n    Object.defineProperty(this, _attachRenderFunctionToTarget, {\n      writable: true,\n      value: target => {\n        const plugin = this.uppy.getPlugin(target.id);\n        return { ...target,\n          icon: plugin.icon || this.opts.defaultPickerIcon,\n          render: plugin.render\n        };\n      }\n    });\n    Object.defineProperty(this, _isTargetSupported, {\n      writable: true,\n      value: target => {\n        const plugin = this.uppy.getPlugin(target.id); // If the plugin does not provide a `supported` check, assume the plugin works everywhere.\n\n        if (typeof plugin.isSupported !== 'function') {\n          return true;\n        }\n\n        return plugin.isSupported();\n      }\n    });\n    Object.defineProperty(this, _getAcquirers, {\n      writable: true,\n      value: memoize(targets => {\n        return targets.filter(target => target.type === 'acquirer' && _classPrivateFieldLooseBase(this, _isTargetSupported)[_isTargetSupported](target)).map(_classPrivateFieldLooseBase(this, _attachRenderFunctionToTarget)[_attachRenderFunctionToTarget]);\n      })\n    });\n    Object.defineProperty(this, _getProgressIndicators, {\n      writable: true,\n      value: memoize(targets => {\n        return targets.filter(target => target.type === 'progressindicator').map(_classPrivateFieldLooseBase(this, _attachRenderFunctionToTarget)[_attachRenderFunctionToTarget]);\n      })\n    });\n    Object.defineProperty(this, _getEditors, {\n      writable: true,\n      value: memoize(targets => {\n        return targets.filter(target => target.type === 'editor').map(_classPrivateFieldLooseBase(this, _attachRenderFunctionToTarget)[_attachRenderFunctionToTarget]);\n      })\n    });\n\n    this.render = state => {\n      const pluginState = this.getPluginState();\n      const {\n        files,\n        capabilities,\n        allowNewUpload\n      } = state;\n      const {\n        newFiles,\n        uploadStartedFiles,\n        completeFiles,\n        erroredFiles,\n        inProgressFiles,\n        inProgressNotPausedFiles,\n        processingFiles,\n        isUploadStarted,\n        isAllComplete,\n        isAllErrored,\n        isAllPaused\n      } = this.uppy.getObjectOfFilesPerState();\n\n      const acquirers = _classPrivateFieldLooseBase(this, _getAcquirers)[_getAcquirers](pluginState.targets);\n\n      const progressindicators = _classPrivateFieldLooseBase(this, _getProgressIndicators)[_getProgressIndicators](pluginState.targets);\n\n      const editors = _classPrivateFieldLooseBase(this, _getEditors)[_getEditors](pluginState.targets);\n\n      let theme;\n\n      if (this.opts.theme === 'auto') {\n        theme = capabilities.darkMode ? 'dark' : 'light';\n      } else {\n        theme = this.opts.theme;\n      }\n\n      if (['files', 'folders', 'both'].indexOf(this.opts.fileManagerSelectionType) < 0) {\n        this.opts.fileManagerSelectionType = 'files'; // eslint-disable-next-line no-console\n\n        console.warn(`Unsupported option for \"fileManagerSelectionType\". Using default of \"${this.opts.fileManagerSelectionType}\".`);\n      }\n\n      return DashboardUI({\n        state,\n        isHidden: pluginState.isHidden,\n        files,\n        newFiles,\n        uploadStartedFiles,\n        completeFiles,\n        erroredFiles,\n        inProgressFiles,\n        inProgressNotPausedFiles,\n        processingFiles,\n        isUploadStarted,\n        isAllComplete,\n        isAllErrored,\n        isAllPaused,\n        totalFileCount: Object.keys(files).length,\n        totalProgress: state.totalProgress,\n        allowNewUpload,\n        acquirers,\n        theme,\n        disabled: this.opts.disabled,\n        disableLocalFiles: this.opts.disableLocalFiles,\n        direction: this.opts.direction,\n        activePickerPanel: pluginState.activePickerPanel,\n        showFileEditor: pluginState.showFileEditor,\n        saveFileEditor: this.saveFileEditor,\n        disableAllFocusableElements: this.disableAllFocusableElements,\n        animateOpenClose: this.opts.animateOpenClose,\n        isClosing: pluginState.isClosing,\n        progressindicators,\n        editors,\n        autoProceed: this.uppy.opts.autoProceed,\n        id: this.id,\n        closeModal: this.requestCloseModal,\n        handleClickOutside: this.handleClickOutside,\n        handleInputChange: this.handleInputChange,\n        handlePaste: this.handlePaste,\n        inline: this.opts.inline,\n        showPanel: this.showPanel,\n        hideAllPanels: this.hideAllPanels,\n        i18n: this.i18n,\n        i18nArray: this.i18nArray,\n        uppy: this.uppy,\n        note: this.opts.note,\n        recoveredState: state.recoveredState,\n        metaFields: pluginState.metaFields,\n        resumableUploads: capabilities.resumableUploads || false,\n        individualCancellation: capabilities.individualCancellation,\n        isMobileDevice: capabilities.isMobileDevice,\n        fileCardFor: pluginState.fileCardFor,\n        toggleFileCard: this.toggleFileCard,\n        toggleAddFilesPanel: this.toggleAddFilesPanel,\n        showAddFilesPanel: pluginState.showAddFilesPanel,\n        saveFileCard: this.saveFileCard,\n        openFileEditor: this.openFileEditor,\n        canEditFile: this.canEditFile,\n        width: this.opts.width,\n        height: this.opts.height,\n        showLinkToFileUploadResult: this.opts.showLinkToFileUploadResult,\n        fileManagerSelectionType: this.opts.fileManagerSelectionType,\n        proudlyDisplayPoweredByUppy: this.opts.proudlyDisplayPoweredByUppy,\n        hideCancelButton: this.opts.hideCancelButton,\n        hideRetryButton: this.opts.hideRetryButton,\n        hidePauseResumeButton: this.opts.hidePauseResumeButton,\n        showRemoveButtonAfterComplete: this.opts.showRemoveButtonAfterComplete,\n        containerWidth: pluginState.containerWidth,\n        containerHeight: pluginState.containerHeight,\n        areInsidesReadyToBeVisible: pluginState.areInsidesReadyToBeVisible,\n        isTargetDOMEl: this.isTargetDOMEl,\n        parentElement: this.el,\n        allowedFileTypes: this.uppy.opts.restrictions.allowedFileTypes,\n        maxNumberOfFiles: this.uppy.opts.restrictions.maxNumberOfFiles,\n        requiredMetaFields: this.uppy.opts.restrictions.requiredMetaFields,\n        showSelectedFiles: this.opts.showSelectedFiles,\n        handleCancelRestore: this.handleCancelRestore,\n        handleRequestThumbnail: this.handleRequestThumbnail,\n        handleCancelThumbnail: this.handleCancelThumbnail,\n        // drag props\n        isDraggingOver: pluginState.isDraggingOver,\n        handleDragOver: this.handleDragOver,\n        handleDragLeave: this.handleDragLeave,\n        handleDrop: this.handleDrop\n      });\n    };\n\n    this.discoverProviderPlugins = () => {\n      this.uppy.iteratePlugins(plugin => {\n        if (plugin && !plugin.target && plugin.opts && plugin.opts.target === this.constructor) {\n          this.addTarget(plugin);\n        }\n      });\n    };\n\n    this.install = () => {\n      // Set default state for Dashboard\n      this.setPluginState({\n        isHidden: true,\n        fileCardFor: null,\n        activeOverlayType: null,\n        showAddFilesPanel: false,\n        activePickerPanel: false,\n        showFileEditor: false,\n        metaFields: this.opts.metaFields,\n        targets: [],\n        // We'll make them visible once .containerWidth is determined\n        areInsidesReadyToBeVisible: false,\n        isDraggingOver: false\n      });\n      const {\n        inline,\n        closeAfterFinish\n      } = this.opts;\n\n      if (inline && closeAfterFinish) {\n        throw new Error('[Dashboard] `closeAfterFinish: true` cannot be used on an inline Dashboard, because an inline Dashboard cannot be closed at all. Either set `inline: false`, or disable the `closeAfterFinish` option.');\n      }\n\n      const {\n        allowMultipleUploads,\n        allowMultipleUploadBatches\n      } = this.uppy.opts;\n\n      if ((allowMultipleUploads || allowMultipleUploadBatches) && closeAfterFinish) {\n        this.uppy.log('[Dashboard] When using `closeAfterFinish`, we recommended setting the `allowMultipleUploadBatches` option to `false` in the Uppy constructor. See https://uppy.io/docs/uppy/#allowMultipleUploads-true', 'warning');\n      }\n\n      const {\n        target\n      } = this.opts;\n\n      if (target) {\n        this.mount(target, this);\n      }\n\n      const plugins = this.opts.plugins || [];\n      plugins.forEach(pluginID => {\n        const plugin = this.uppy.getPlugin(pluginID);\n\n        if (plugin) {\n          plugin.mount(this, plugin);\n        }\n      });\n\n      if (!this.opts.disableStatusBar) {\n        this.uppy.use(StatusBar, {\n          id: `${this.id}:StatusBar`,\n          target: this,\n          hideUploadButton: this.opts.hideUploadButton,\n          hideRetryButton: this.opts.hideRetryButton,\n          hidePauseResumeButton: this.opts.hidePauseResumeButton,\n          hideCancelButton: this.opts.hideCancelButton,\n          showProgressDetails: this.opts.showProgressDetails,\n          hideAfterFinish: this.opts.hideProgressAfterFinish,\n          locale: this.opts.locale,\n          doneButtonHandler: this.opts.doneButtonHandler\n        });\n      }\n\n      if (!this.opts.disableInformer) {\n        this.uppy.use(Informer, {\n          id: `${this.id}:Informer`,\n          target: this\n        });\n      }\n\n      if (!this.opts.disableThumbnailGenerator) {\n        this.uppy.use(ThumbnailGenerator, {\n          id: `${this.id}:ThumbnailGenerator`,\n          thumbnailWidth: this.opts.thumbnailWidth,\n          thumbnailHeight: this.opts.thumbnailHeight,\n          thumbnailType: this.opts.thumbnailType,\n          waitForThumbnailsBeforeUpload: this.opts.waitForThumbnailsBeforeUpload,\n          // If we don't block on thumbnails, we can lazily generate them\n          lazy: !this.opts.waitForThumbnailsBeforeUpload\n        });\n      } // Dark Mode / theme\n\n\n      this.darkModeMediaQuery = typeof window !== 'undefined' && window.matchMedia ? window.matchMedia('(prefers-color-scheme: dark)') : null;\n      const isDarkModeOnFromTheStart = this.darkModeMediaQuery ? this.darkModeMediaQuery.matches : false;\n      this.uppy.log(`[Dashboard] Dark mode is ${isDarkModeOnFromTheStart ? 'on' : 'off'}`);\n      this.setDarkModeCapability(isDarkModeOnFromTheStart);\n\n      if (this.opts.theme === 'auto') {\n        this.darkModeMediaQuery.addListener(this.handleSystemDarkModeChange);\n      }\n\n      this.discoverProviderPlugins();\n      this.initEvents();\n    };\n\n    this.uninstall = () => {\n      if (!this.opts.disableInformer) {\n        const informer = this.uppy.getPlugin(`${this.id}:Informer`); // Checking if this plugin exists, in case it was removed by uppy-core\n        // before the Dashboard was.\n\n        if (informer) this.uppy.removePlugin(informer);\n      }\n\n      if (!this.opts.disableStatusBar) {\n        const statusBar = this.uppy.getPlugin(`${this.id}:StatusBar`);\n        if (statusBar) this.uppy.removePlugin(statusBar);\n      }\n\n      if (!this.opts.disableThumbnailGenerator) {\n        const thumbnail = this.uppy.getPlugin(`${this.id}:ThumbnailGenerator`);\n        if (thumbnail) this.uppy.removePlugin(thumbnail);\n      }\n\n      const plugins = this.opts.plugins || [];\n      plugins.forEach(pluginID => {\n        const plugin = this.uppy.getPlugin(pluginID);\n        if (plugin) plugin.unmount();\n      });\n\n      if (this.opts.theme === 'auto') {\n        this.darkModeMediaQuery.removeListener(this.handleSystemDarkModeChange);\n      }\n\n      this.unmount();\n      this.removeEvents();\n    };\n\n    this.id = this.opts.id || 'Dashboard';\n    this.title = 'Dashboard';\n    this.type = 'orchestrator';\n    this.modalName = `uppy-Dashboard-${(0, _nonSecure.nanoid)()}`;\n    this.defaultLocale = locale; // set default options\n\n    const defaultOptions = {\n      target: 'body',\n      metaFields: [],\n      trigger: null,\n      inline: false,\n      width: 750,\n      height: 550,\n      thumbnailWidth: 280,\n      thumbnailType: 'image/jpeg',\n      waitForThumbnailsBeforeUpload: false,\n      defaultPickerIcon,\n      showLinkToFileUploadResult: false,\n      showProgressDetails: false,\n      hideUploadButton: false,\n      hideCancelButton: false,\n      hideRetryButton: false,\n      hidePauseResumeButton: false,\n      hideProgressAfterFinish: false,\n      doneButtonHandler: () => {\n        this.uppy.reset();\n        this.requestCloseModal();\n      },\n      note: null,\n      closeModalOnClickOutside: false,\n      closeAfterFinish: false,\n      disableStatusBar: false,\n      disableInformer: false,\n      disableThumbnailGenerator: false,\n      disablePageScrollWhenModalOpen: true,\n      animateOpenClose: true,\n      fileManagerSelectionType: 'files',\n      proudlyDisplayPoweredByUppy: true,\n      onRequestCloseModal: () => this.closeModal(),\n      showSelectedFiles: true,\n      showRemoveButtonAfterComplete: false,\n      browserBackButtonClose: false,\n      theme: 'light',\n      autoOpenFileEditor: false,\n      disabled: false,\n      disableLocalFiles: false\n    }; // merge default options with the ones set by user\n\n    this.opts = { ...defaultOptions,\n      ..._opts\n    };\n    this.i18nInit();\n    this.superFocus = createSuperFocus();\n    this.ifFocusedOnUppyRecently = false; // Timeouts\n\n    this.makeDashboardInsidesVisibleAnywayTimeout = null;\n    this.removeDragOverClassTimeout = null;\n  }\n\n}\n\nDashboard.VERSION = packageJson.version;\nmodule.exports = Dashboard;", "\"use strict\";\n\nmodule.exports = require(\"./Dashboard.js\");", "function anumber(n: number) {\n  if (!Number.isSafeInteger(n) || n < 0) throw new Error('positive integer expected, got ' + n);\n}\n\n// copied from utils\nfunction isBytes(a: unknown): a is Uint8Array {\n  return a instanceof Uint8Array || (ArrayBuffer.isView(a) && a.constructor.name === 'Uint8Array');\n}\n\nfunction abytes(b: Uint8Array | undefined, ...lengths: number[]) {\n  if (!isBytes(b)) throw new Error('Uint8Array expected');\n  if (lengths.length > 0 && !lengths.includes(b.length))\n    throw new Error('Uint8Array expected of length ' + lengths + ', got length=' + b.length);\n}\n\ntype Hash = {\n  (data: Uint8Array): Uint8Array;\n  blockLen: number;\n  outputLen: number;\n  create: any;\n};\nfunction ahash(h: Hash) {\n  if (typeof h !== 'function' || typeof h.create !== 'function')\n    throw new Error('Hash should be wrapped by utils.wrapConstructor');\n  anumber(h.outputLen);\n  anumber(h.blockLen);\n}\n\nfunction aexists(instance: any, checkFinished = true) {\n  if (instance.destroyed) throw new Error('Hash instance has been destroyed');\n  if (checkFinished && instance.finished) throw new Error('Hash#digest() has already been called');\n}\nfunction aoutput(out: any, instance: any) {\n  abytes(out);\n  const min = instance.outputLen;\n  if (out.length < min) {\n    throw new Error('digestInto() expects output buffer of length at least ' + min);\n  }\n}\n\nexport { anumber, anumber as number, abytes, abytes as bytes, ahash, aexists, aoutput };\n\nconst assert = {\n  number: anumber,\n  bytes: abytes,\n  hash: ahash,\n  exists: aexists,\n  output: aoutput,\n};\nexport default assert;\n", "const U32_MASK64 = /* @__PURE__ */ BigInt(2 ** 32 - 1);\nconst _32n = /* @__PURE__ */ BigInt(32);\n\n// BigUint64Array is too slow as per 2024, so we implement it using Uint32Array.\n// TODO: re-check https://issues.chromium.org/issues/42212588\n\nfunction fromBig(n: bigint, le = false) {\n  if (le) return { h: Number(n & U32_MASK64), l: Number((n >> _32n) & U32_MASK64) };\n  return { h: Number((n >> _32n) & U32_MASK64) | 0, l: Number(n & U32_MASK64) | 0 };\n}\n\nfunction split(lst: bigint[], le = false) {\n  let Ah = new Uint32Array(lst.length);\n  let Al = new Uint32Array(lst.length);\n  for (let i = 0; i < lst.length; i++) {\n    const { h, l } = fromBig(lst[i], le);\n    [Ah[i], Al[i]] = [h, l];\n  }\n  return [Ah, Al];\n}\n\nconst toBig = (h: number, l: number) => (BigInt(h >>> 0) << _32n) | BigInt(l >>> 0);\n// for Shift in [0, 32)\nconst shrSH = (h: number, _l: number, s: number) => h >>> s;\nconst shrSL = (h: number, l: number, s: number) => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in [1, 32)\nconst rotrSH = (h: number, l: number, s: number) => (h >>> s) | (l << (32 - s));\nconst rotrSL = (h: number, l: number, s: number) => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotrBH = (h: number, l: number, s: number) => (h << (64 - s)) | (l >>> (s - 32));\nconst rotrBL = (h: number, l: number, s: number) => (h >>> (s - 32)) | (l << (64 - s));\n// Right rotate for shift===32 (just swaps l&h)\nconst rotr32H = (_h: number, l: number) => l;\nconst rotr32L = (h: number, _l: number) => h;\n// Left rotate for Shift in [1, 32)\nconst rotlSH = (h: number, l: number, s: number) => (h << s) | (l >>> (32 - s));\nconst rotlSL = (h: number, l: number, s: number) => (l << s) | (h >>> (32 - s));\n// Left rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotlBH = (h: number, l: number, s: number) => (l << (s - 32)) | (h >>> (64 - s));\nconst rotlBL = (h: number, l: number, s: number) => (h << (s - 32)) | (l >>> (64 - s));\n\n// JS uses 32-bit signed integers for bitwise operations which means we cannot\n// simple take carry out of low bit sum by shift, we need to use division.\nfunction add(Ah: number, Al: number, Bh: number, Bl: number) {\n  const l = (Al >>> 0) + (Bl >>> 0);\n  return { h: (Ah + Bh + ((l / 2 ** 32) | 0)) | 0, l: l | 0 };\n}\n// Addition with more than 2 elements\nconst add3L = (Al: number, Bl: number, Cl: number) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0);\nconst add3H = (low: number, Ah: number, Bh: number, Ch: number) =>\n  (Ah + Bh + Ch + ((low / 2 ** 32) | 0)) | 0;\nconst add4L = (Al: number, Bl: number, Cl: number, Dl: number) =>\n  (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0);\nconst add4H = (low: number, Ah: number, Bh: number, Ch: number, Dh: number) =>\n  (Ah + Bh + Ch + Dh + ((low / 2 ** 32) | 0)) | 0;\nconst add5L = (Al: number, Bl: number, Cl: number, Dl: number, El: number) =>\n  (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0) + (El >>> 0);\nconst add5H = (low: number, Ah: number, Bh: number, Ch: number, Dh: number, Eh: number) =>\n  (Ah + Bh + Ch + Dh + Eh + ((low / 2 ** 32) | 0)) | 0;\n\n// prettier-ignore\nexport {\n  fromBig, split, toBig,\n  shrSH, shrSL,\n  rotrSH, rotrSL, rotrBH, rotrBL,\n  rotr32H, rotr32L,\n  rotlSH, rotlSL, rotlBH, rotlBL,\n  add, add3L, add3H, add4L, add4H, add5H, add5L,\n};\n// prettier-ignore\nconst u64 = {\n  fromBig, split, toBig,\n  shrSH, shrSL,\n  rotrSH, rotrSL, rotrBH, rotrBL,\n  rotr32H, rotr32L,\n  rotlSH, rotlSL, rotlBH, rotlBL,\n  add, add3L, add3H, add4L, add4H, add5H, add5L,\n};\nexport default u64;\n", "// We use WebCrypto aka globalThis.crypto, which exists in browsers and node.js 16+.\n// See utils.ts for details.\ndeclare const globalThis: Record<string, any> | undefined;\nexport const crypto =\n  typeof globalThis === 'object' && 'crypto' in globalThis ? globalThis.crypto : undefined;\n", "/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n\n// We use WebCrypto aka globalThis.crypto, which exists in browsers and node.js 16+.\n// node.js versions earlier than v19 don't declare it in global scope.\n// For node.js, package.json#exports field mapping rewrites import\n// from `crypto` to `cryptoNode`, which imports native module.\n// Makes the utils un-importable in browsers without a bundler.\n// Once node.js 18 is deprecated (2025-04-30), we can just drop the import.\nimport { crypto } from '@noble/hashes/crypto';\nimport { abytes } from './_assert.js';\n// export { isBytes } from './_assert.js';\n// We can't reuse isBytes from _assert, because somehow this causes huge perf issues\nexport function isBytes(a: unknown): a is Uint8Array {\n  return a instanceof Uint8Array || (ArrayBuffer.isView(a) && a.constructor.name === 'Uint8Array');\n}\n\n// prettier-ignore\nexport type TypedArray = Int8Array | Uint8ClampedArray | Uint8Array |\n  Uint16Array | Int16Array | Uint32Array | Int32Array;\n\n// Cast array to different type\nexport const u8 = (arr: TypedArray) => new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength);\nexport const u32 = (arr: TypedArray) =>\n  new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4));\n\n// Cast array to view\nexport const createView = (arr: TypedArray) =>\n  new DataView(arr.buffer, arr.byteOffset, arr.byteLength);\n\n// The rotate right (circular right shift) operation for uint32\nexport const rotr = (word: number, shift: number) => (word << (32 - shift)) | (word >>> shift);\n// The rotate left (circular left shift) operation for uint32\nexport const rotl = (word: number, shift: number) =>\n  (word << shift) | ((word >>> (32 - shift)) >>> 0);\n\nexport const isLE = /* @__PURE__ */ (() =>\n  new Uint8Array(new Uint32Array([0x11223344]).buffer)[0] === 0x44)();\n// The byte swap operation for uint32\nexport const byteSwap = (word: number) =>\n  ((word << 24) & 0xff000000) |\n  ((word << 8) & 0xff0000) |\n  ((word >>> 8) & 0xff00) |\n  ((word >>> 24) & 0xff);\n// Conditionally byte swap if on a big-endian platform\nexport const byteSwapIfBE = isLE ? (n: number) => n : (n: number) => byteSwap(n);\n\n// In place byte swap for Uint32Array\nexport function byteSwap32(arr: Uint32Array) {\n  for (let i = 0; i < arr.length; i++) {\n    arr[i] = byteSwap(arr[i]);\n  }\n}\n\n// Array where index 0xf0 (240) is mapped to string 'f0'\nconst hexes = /* @__PURE__ */ Array.from({ length: 256 }, (_, i) =>\n  i.toString(16).padStart(2, '0')\n);\n/**\n * @example bytesToHex(Uint8Array.from([0xca, 0xfe, 0x01, 0x23])) // 'cafe0123'\n */\nexport function bytesToHex(bytes: Uint8Array): string {\n  abytes(bytes);\n  // pre-caching improves the speed 6x\n  let hex = '';\n  for (let i = 0; i < bytes.length; i++) {\n    hex += hexes[bytes[i]];\n  }\n  return hex;\n}\n\n// We use optimized technique to convert hex string to byte array\nconst asciis = { _0: 48, _9: 57, A: 65, F: 70, a: 97, f: 102 } as const;\nfunction asciiToBase16(ch: number): number | undefined {\n  if (ch >= asciis._0 && ch <= asciis._9) return ch - asciis._0; // '2' => 50-48\n  if (ch >= asciis.A && ch <= asciis.F) return ch - (asciis.A - 10); // 'B' => 66-(65-10)\n  if (ch >= asciis.a && ch <= asciis.f) return ch - (asciis.a - 10); // 'b' => 98-(97-10)\n  return;\n}\n\n/**\n * @example hexToBytes('cafe0123') // Uint8Array.from([0xca, 0xfe, 0x01, 0x23])\n */\nexport function hexToBytes(hex: string): Uint8Array {\n  if (typeof hex !== 'string') throw new Error('hex string expected, got ' + typeof hex);\n  const hl = hex.length;\n  const al = hl / 2;\n  if (hl % 2) throw new Error('hex string expected, got unpadded hex of length ' + hl);\n  const array = new Uint8Array(al);\n  for (let ai = 0, hi = 0; ai < al; ai++, hi += 2) {\n    const n1 = asciiToBase16(hex.charCodeAt(hi));\n    const n2 = asciiToBase16(hex.charCodeAt(hi + 1));\n    if (n1 === undefined || n2 === undefined) {\n      const char = hex[hi] + hex[hi + 1];\n      throw new Error('hex string expected, got non-hex character \"' + char + '\" at index ' + hi);\n    }\n    array[ai] = n1 * 16 + n2; // multiply first octet, e.g. 'a3' => 10*16+3 => 160 + 3 => 163\n  }\n  return array;\n}\n\n// There is no setImmediate in browser and setTimeout is slow.\n// call of async fn will return Promise, which will be fullfiled only on\n// next scheduler queue processing step and this is exactly what we need.\nexport const nextTick = async () => {};\n\n// Returns control to thread each 'tick' ms to avoid blocking\nexport async function asyncLoop(iters: number, tick: number, cb: (i: number) => void) {\n  let ts = Date.now();\n  for (let i = 0; i < iters; i++) {\n    cb(i);\n    // Date.now() is not monotonic, so in case if clock goes backwards we return return control too\n    const diff = Date.now() - ts;\n    if (diff >= 0 && diff < tick) continue;\n    await nextTick();\n    ts += diff;\n  }\n}\n\n// Global symbols in both browsers and Node.js since v11\n// See https://github.com/microsoft/TypeScript/issues/31535\ndeclare const TextEncoder: any;\n\n/**\n * @example utf8ToBytes('abc') // new Uint8Array([97, 98, 99])\n */\nexport function utf8ToBytes(str: string): Uint8Array {\n  if (typeof str !== 'string') throw new Error('utf8ToBytes expected string, got ' + typeof str);\n  return new Uint8Array(new TextEncoder().encode(str)); // https://bugzil.la/1681809\n}\n\nexport type Input = Uint8Array | string;\n/**\n * Normalizes (non-hex) string or Uint8Array to Uint8Array.\n * Warning: when Uint8Array is passed, it would NOT get copied.\n * Keep in mind for future mutable operations.\n */\nexport function toBytes(data: Input): Uint8Array {\n  if (typeof data === 'string') data = utf8ToBytes(data);\n  abytes(data);\n  return data;\n}\n\n/**\n * Copies several Uint8Arrays into one.\n */\nexport function concatBytes(...arrays: Uint8Array[]): Uint8Array {\n  let sum = 0;\n  for (let i = 0; i < arrays.length; i++) {\n    const a = arrays[i];\n    abytes(a);\n    sum += a.length;\n  }\n  const res = new Uint8Array(sum);\n  for (let i = 0, pad = 0; i < arrays.length; i++) {\n    const a = arrays[i];\n    res.set(a, pad);\n    pad += a.length;\n  }\n  return res;\n}\n\n// For runtime check if class implements interface\nexport abstract class Hash<T extends Hash<T>> {\n  abstract blockLen: number; // Bytes per block\n  abstract outputLen: number; // Bytes in output\n  abstract update(buf: Input): this;\n  // Writes digest into buf\n  abstract digestInto(buf: Uint8Array): void;\n  abstract digest(): Uint8Array;\n  /**\n   * Resets internal state. Makes Hash instance unusable.\n   * Reset is impossible for keyed hashes if key is consumed into state. If digest is not consumed\n   * by user, they will need to manually call `destroy()` when zeroing is necessary.\n   */\n  abstract destroy(): void;\n  /**\n   * Clones hash instance. Unsafe: doesn't check whether `to` is valid. Can be used as `clone()`\n   * when no options are passed.\n   * Reasons to use `_cloneInto` instead of clone: 1) performance 2) reuse instance => all internal\n   * buffers are overwritten => causes buffer overwrite which is used for digest in some cases.\n   * There are no guarantees for clean-up because it's impossible in JS.\n   */\n  abstract _cloneInto(to?: T): T;\n  // Safe version that clones internal state\n  clone(): T {\n    return this._cloneInto();\n  }\n}\n\n/**\n * XOF: streaming API to read digest in chunks.\n * Same as 'squeeze' in keccak/k12 and 'seek' in blake3, but more generic name.\n * When hash used in XOF mode it is up to user to call '.destroy' afterwards, since we cannot\n * destroy state, next call can require more bytes.\n */\nexport type HashXOF<T extends Hash<T>> = Hash<T> & {\n  xof(bytes: number): Uint8Array; // Read 'bytes' bytes from digest stream\n  xofInto(buf: Uint8Array): Uint8Array; // read buf.length bytes from digest stream into buf\n};\n\ntype EmptyObj = {};\nexport function checkOpts<T1 extends EmptyObj, T2 extends EmptyObj>(\n  defaults: T1,\n  opts?: T2\n): T1 & T2 {\n  if (opts !== undefined && {}.toString.call(opts) !== '[object Object]')\n    throw new Error('Options should be object or undefined');\n  const merged = Object.assign(defaults, opts);\n  return merged as T1 & T2;\n}\n\nexport type CHash = ReturnType<typeof wrapConstructor>;\n\nexport function wrapConstructor<T extends Hash<T>>(hashCons: () => Hash<T>) {\n  const hashC = (msg: Input): Uint8Array => hashCons().update(toBytes(msg)).digest();\n  const tmp = hashCons();\n  hashC.outputLen = tmp.outputLen;\n  hashC.blockLen = tmp.blockLen;\n  hashC.create = () => hashCons();\n  return hashC;\n}\n\nexport function wrapConstructorWithOpts<H extends Hash<H>, T extends Object>(\n  hashCons: (opts?: T) => Hash<H>\n) {\n  const hashC = (msg: Input, opts?: T): Uint8Array => hashCons(opts).update(toBytes(msg)).digest();\n  const tmp = hashCons({} as T);\n  hashC.outputLen = tmp.outputLen;\n  hashC.blockLen = tmp.blockLen;\n  hashC.create = (opts: T) => hashCons(opts);\n  return hashC;\n}\n\nexport function wrapXOFConstructorWithOpts<H extends HashXOF<H>, T extends Object>(\n  hashCons: (opts?: T) => HashXOF<H>\n) {\n  const hashC = (msg: Input, opts?: T): Uint8Array => hashCons(opts).update(toBytes(msg)).digest();\n  const tmp = hashCons({} as T);\n  hashC.outputLen = tmp.outputLen;\n  hashC.blockLen = tmp.blockLen;\n  hashC.create = (opts: T) => hashCons(opts);\n  return hashC;\n}\n\n/**\n * Secure PRNG. Uses `crypto.getRandomValues`, which defers to OS.\n */\nexport function randomBytes(bytesLength = 32): Uint8Array {\n  if (crypto && typeof crypto.getRandomValues === 'function') {\n    return crypto.getRandomValues(new Uint8Array(bytesLength));\n  }\n  // Legacy Node.js compatibility\n  if (crypto && typeof crypto.randomBytes === 'function') {\n    return crypto.randomBytes(bytesLength);\n  }\n  throw new Error('crypto.getRandomValues must be defined');\n}\n", "import { abytes, aexists, anumber, aoutput } from './_assert.js';\nimport { rotlBH, rotlBL, rotlSH, rotlSL, split } from './_u64.js';\nimport {\n  Hash,\n  u32,\n  Input,\n  toBytes,\n  wrapConstructor,\n  wrapXOFConstructorWithOpts,\n  HashXOF,\n  isLE,\n  byteSwap32,\n} from './utils.js';\n\n// SHA3 (keccak) is based on a new design: basically, the internal state is bigger than output size.\n// It's called a sponge function.\n\n// Various per round constants calculations\nconst SHA3_PI: number[] = [];\nconst SHA3_ROTL: number[] = [];\nconst _SHA3_IOTA: bigint[] = [];\nconst _0n = /* @__PURE__ */ BigInt(0);\nconst _1n = /* @__PURE__ */ BigInt(1);\nconst _2n = /* @__PURE__ */ BigInt(2);\nconst _7n = /* @__PURE__ */ BigInt(7);\nconst _256n = /* @__PURE__ */ BigInt(256);\nconst _0x71n = /* @__PURE__ */ BigInt(0x71);\nfor (let round = 0, R = _1n, x = 1, y = 0; round < 24; round++) {\n  // Pi\n  [x, y] = [y, (2 * x + 3 * y) % 5];\n  SHA3_PI.push(2 * (5 * y + x));\n  // Rotational\n  SHA3_ROTL.push((((round + 1) * (round + 2)) / 2) % 64);\n  // Iota\n  let t = _0n;\n  for (let j = 0; j < 7; j++) {\n    R = ((R << _1n) ^ ((R >> _7n) * _0x71n)) % _256n;\n    if (R & _2n) t ^= _1n << ((_1n << /* @__PURE__ */ BigInt(j)) - _1n);\n  }\n  _SHA3_IOTA.push(t);\n}\nconst [SHA3_IOTA_H, SHA3_IOTA_L] = /* @__PURE__ */ split(_SHA3_IOTA, true);\n\n// Left rotation (without 0, 32, 64)\nconst rotlH = (h: number, l: number, s: number) => (s > 32 ? rotlBH(h, l, s) : rotlSH(h, l, s));\nconst rotlL = (h: number, l: number, s: number) => (s > 32 ? rotlBL(h, l, s) : rotlSL(h, l, s));\n\n// Same as keccakf1600, but allows to skip some rounds\nexport function keccakP(s: Uint32Array, rounds: number = 24) {\n  const B = new Uint32Array(5 * 2);\n  // NOTE: all indices are x2 since we store state as u32 instead of u64 (bigints to slow in js)\n  for (let round = 24 - rounds; round < 24; round++) {\n    // Theta \u03B8\n    for (let x = 0; x < 10; x++) B[x] = s[x] ^ s[x + 10] ^ s[x + 20] ^ s[x + 30] ^ s[x + 40];\n    for (let x = 0; x < 10; x += 2) {\n      const idx1 = (x + 8) % 10;\n      const idx0 = (x + 2) % 10;\n      const B0 = B[idx0];\n      const B1 = B[idx0 + 1];\n      const Th = rotlH(B0, B1, 1) ^ B[idx1];\n      const Tl = rotlL(B0, B1, 1) ^ B[idx1 + 1];\n      for (let y = 0; y < 50; y += 10) {\n        s[x + y] ^= Th;\n        s[x + y + 1] ^= Tl;\n      }\n    }\n    // Rho (\u03C1) and Pi (\u03C0)\n    let curH = s[2];\n    let curL = s[3];\n    for (let t = 0; t < 24; t++) {\n      const shift = SHA3_ROTL[t];\n      const Th = rotlH(curH, curL, shift);\n      const Tl = rotlL(curH, curL, shift);\n      const PI = SHA3_PI[t];\n      curH = s[PI];\n      curL = s[PI + 1];\n      s[PI] = Th;\n      s[PI + 1] = Tl;\n    }\n    // Chi (\u03C7)\n    for (let y = 0; y < 50; y += 10) {\n      for (let x = 0; x < 10; x++) B[x] = s[y + x];\n      for (let x = 0; x < 10; x++) s[y + x] ^= ~B[(x + 2) % 10] & B[(x + 4) % 10];\n    }\n    // Iota (\u03B9)\n    s[0] ^= SHA3_IOTA_H[round];\n    s[1] ^= SHA3_IOTA_L[round];\n  }\n  B.fill(0);\n}\n\nexport class Keccak extends Hash<Keccak> implements HashXOF<Keccak> {\n  protected state: Uint8Array;\n  protected pos = 0;\n  protected posOut = 0;\n  protected finished = false;\n  protected state32: Uint32Array;\n  protected destroyed = false;\n  // NOTE: we accept arguments in bytes instead of bits here.\n  constructor(\n    public blockLen: number,\n    public suffix: number,\n    public outputLen: number,\n    protected enableXOF = false,\n    protected rounds: number = 24\n  ) {\n    super();\n    // Can be passed from user as dkLen\n    anumber(outputLen);\n    // 1600 = 5x5 matrix of 64bit.  1600 bits === 200 bytes\n    if (0 >= this.blockLen || this.blockLen >= 200)\n      throw new Error('Sha3 supports only keccak-f1600 function');\n    this.state = new Uint8Array(200);\n    this.state32 = u32(this.state);\n  }\n  protected keccak() {\n    if (!isLE) byteSwap32(this.state32);\n    keccakP(this.state32, this.rounds);\n    if (!isLE) byteSwap32(this.state32);\n    this.posOut = 0;\n    this.pos = 0;\n  }\n  update(data: Input) {\n    aexists(this);\n    const { blockLen, state } = this;\n    data = toBytes(data);\n    const len = data.length;\n    for (let pos = 0; pos < len; ) {\n      const take = Math.min(blockLen - this.pos, len - pos);\n      for (let i = 0; i < take; i++) state[this.pos++] ^= data[pos++];\n      if (this.pos === blockLen) this.keccak();\n    }\n    return this;\n  }\n  protected finish() {\n    if (this.finished) return;\n    this.finished = true;\n    const { state, suffix, pos, blockLen } = this;\n    // Do the padding\n    state[pos] ^= suffix;\n    if ((suffix & 0x80) !== 0 && pos === blockLen - 1) this.keccak();\n    state[blockLen - 1] ^= 0x80;\n    this.keccak();\n  }\n  protected writeInto(out: Uint8Array): Uint8Array {\n    aexists(this, false);\n    abytes(out);\n    this.finish();\n    const bufferOut = this.state;\n    const { blockLen } = this;\n    for (let pos = 0, len = out.length; pos < len; ) {\n      if (this.posOut >= blockLen) this.keccak();\n      const take = Math.min(blockLen - this.posOut, len - pos);\n      out.set(bufferOut.subarray(this.posOut, this.posOut + take), pos);\n      this.posOut += take;\n      pos += take;\n    }\n    return out;\n  }\n  xofInto(out: Uint8Array): Uint8Array {\n    // Sha3/Keccak usage with XOF is probably mistake, only SHAKE instances can do XOF\n    if (!this.enableXOF) throw new Error('XOF is not possible for this instance');\n    return this.writeInto(out);\n  }\n  xof(bytes: number): Uint8Array {\n    anumber(bytes);\n    return this.xofInto(new Uint8Array(bytes));\n  }\n  digestInto(out: Uint8Array) {\n    aoutput(out, this);\n    if (this.finished) throw new Error('digest() was already called');\n    this.writeInto(out);\n    this.destroy();\n    return out;\n  }\n  digest() {\n    return this.digestInto(new Uint8Array(this.outputLen));\n  }\n  destroy() {\n    this.destroyed = true;\n    this.state.fill(0);\n  }\n  _cloneInto(to?: Keccak): Keccak {\n    const { blockLen, suffix, outputLen, rounds, enableXOF } = this;\n    to ||= new Keccak(blockLen, suffix, outputLen, enableXOF, rounds);\n    to.state32.set(this.state32);\n    to.pos = this.pos;\n    to.posOut = this.posOut;\n    to.finished = this.finished;\n    to.rounds = rounds;\n    // Suffix can change in cSHAKE\n    to.suffix = suffix;\n    to.outputLen = outputLen;\n    to.enableXOF = enableXOF;\n    to.destroyed = this.destroyed;\n    return to;\n  }\n}\n\nconst gen = (suffix: number, blockLen: number, outputLen: number) =>\n  wrapConstructor(() => new Keccak(blockLen, suffix, outputLen));\n\nexport const sha3_224 = /* @__PURE__ */ gen(0x06, 144, 224 / 8);\n/**\n * SHA3-256 hash function\n * @param message - that would be hashed\n */\nexport const sha3_256 = /* @__PURE__ */ gen(0x06, 136, 256 / 8);\nexport const sha3_384 = /* @__PURE__ */ gen(0x06, 104, 384 / 8);\nexport const sha3_512 = /* @__PURE__ */ gen(0x06, 72, 512 / 8);\nexport const keccak_224 = /* @__PURE__ */ gen(0x01, 144, 224 / 8);\n/**\n * keccak-256 hash function. Different from SHA3-256.\n * @param message - that would be hashed\n */\nexport const keccak_256 = /* @__PURE__ */ gen(0x01, 136, 256 / 8);\nexport const keccak_384 = /* @__PURE__ */ gen(0x01, 104, 384 / 8);\nexport const keccak_512 = /* @__PURE__ */ gen(0x01, 72, 512 / 8);\n\nexport type ShakeOpts = { dkLen?: number };\n\nconst genShake = (suffix: number, blockLen: number, outputLen: number) =>\n  wrapXOFConstructorWithOpts<HashXOF<Keccak>, ShakeOpts>(\n    (opts: ShakeOpts = {}) =>\n      new Keccak(blockLen, suffix, opts.dkLen === undefined ? outputLen : opts.dkLen, true)\n  );\n\nexport const shake128 = /* @__PURE__ */ genShake(0x1f, 168, 128 / 8);\nexport const shake256 = /* @__PURE__ */ genShake(0x1f, 136, 256 / 8);\n", "/* global global, window, module */\nconst { sha3_512: sha3 } = require(\"@noble/hashes/sha3\");\n\nconst defaultLength = 24;\nconst bigLength = 32;\n\nconst createEntropy = (length = 4, random = Math.random) => {\n  let entropy = \"\";\n\n  while (entropy.length < length) {\n    entropy = entropy + Math.floor(random() * 36).toString(36);\n  }\n  return entropy;\n};\n\n/*\n * Adapted from https://github.com/juanelas/bigint-conversion\n * MIT License Copyright (c) 2018 Juan Hern\u00E1ndez Serrano\n */\nfunction bufToBigInt(buf) {\n  let bits = 8n;\n\n  let value = 0n;\n  for (const i of buf.values()) {\n    const bi = BigInt(i);\n    value = (value << bits) + bi;\n  }\n  return value;\n}\n\nconst hash = (input = \"\") => {\n  // Drop the first character because it will bias the histogram\n  // to the left.\n  return bufToBigInt(sha3(input)).toString(36).slice(1);\n};\n\nconst alphabet = Array.from({ length: 26 }, (x, i) =>\n  String.fromCharCode(i + 97)\n);\n\nconst randomLetter = (random) =>\n  alphabet[Math.floor(random() * alphabet.length)];\n\n/*\nThis is a fingerprint of the host environment. It is used to help\nprevent collisions when generating ids in a distributed system.\nIf no global object is available, you can pass in your own, or fall back\non a random string.\n*/\nconst createFingerprint = ({\n  globalObj = typeof global !== \"undefined\"\n    ? global\n    : typeof window !== \"undefined\"\n    ? window\n    : {},\n  random = Math.random,\n} = {}) => {\n  const globals = Object.keys(globalObj).toString();\n  const sourceString = globals.length\n    ? globals + createEntropy(bigLength, random)\n    : createEntropy(bigLength, random);\n\n  return hash(sourceString).substring(0, bigLength);\n};\n\nconst createCounter = (count) => () => {\n  return count++;\n};\n\n// ~22k hosts before 50% chance of initial counter collision\n// with a remaining counter range of 9.0e+15 in JavaScript.\nconst initialCountMax = 476782367;\n\nconst init = ({\n  // Fallback if the user does not pass in a CSPRNG. This should be OK\n  // because we don't rely solely on the random number generator for entropy.\n  // We also use the host fingerprint, current time, and a session counter.\n  random = Math.random,\n  counter = createCounter(Math.floor(random() * initialCountMax)),\n  length = defaultLength,\n  fingerprint = createFingerprint({ random }),\n} = {}) => {\n  return function cuid2() {\n    const firstLetter = randomLetter(random);\n\n    // If we're lucky, the `.toString(36)` calls may reduce hashing rounds\n    // by shortening the input to the hash function a little.\n    const time = Date.now().toString(36);\n    const count = counter().toString(36);\n\n    // The salt should be long enough to be globally unique across the full\n    // length of the hash. For simplicity, we use the same length as the\n    // intended id output.\n    const salt = createEntropy(length, random);\n    const hashInput = `${time + salt + count + fingerprint}`;\n\n    return `${firstLetter + hash(hashInput).substring(1, length)}`;\n  };\n};\n\nconst createId = init();\n\nconst isCuid = (id, { minLength = 2, maxLength = bigLength } = {}) => {\n  const length = id.length;\n  const regex = /^[0-9a-z]+$/;\n\n  try {\n    if (\n      typeof id === \"string\" &&\n      length >= minLength &&\n      length <= maxLength &&\n      regex.test(id)\n    )\n      return true;\n  } finally {\n  }\n\n  return false;\n};\n\nmodule.exports.getConstants = () => ({ defaultLength, bigLength });\nmodule.exports.init = init;\nmodule.exports.createId = createId;\nmodule.exports.bufToBigInt = bufToBigInt;\nmodule.exports.createCounter = createCounter;\nmodule.exports.createFingerprint = createFingerprint;\nmodule.exports.isCuid = isCuid;\n", "const { createId, init, getConstants, isCuid } = require(\"./src/index\");\n\nmodule.exports.createId = createId;\nmodule.exports.init = init;\nmodule.exports.getConstants = getConstants;\nmodule.exports.isCuid = isCuid;\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.internalRateLimitedQueue = exports.RateLimitedQueue = void 0;\n\nfunction _classPrivateFieldLooseBase(receiver, privateKey) { if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) { throw new TypeError(\"attempted to use private field on non-instance\"); } return receiver; }\n\nvar id = 0;\n\nfunction _classPrivateFieldLooseKey(name) { return \"__private_\" + id++ + \"_\" + name; }\n\nfunction createCancelError() {\n  return new Error('Cancelled');\n}\n\nvar _activeRequests = /*#__PURE__*/_classPrivateFieldLooseKey(\"activeRequests\");\n\nvar _queuedHandlers = /*#__PURE__*/_classPrivateFieldLooseKey(\"queuedHandlers\");\n\nvar _paused = /*#__PURE__*/_classPrivateFieldLooseKey(\"paused\");\n\nvar _pauseTimer = /*#__PURE__*/_classPrivateFieldLooseKey(\"pauseTimer\");\n\nvar _downLimit = /*#__PURE__*/_classPrivateFieldLooseKey(\"downLimit\");\n\nvar _upperLimit = /*#__PURE__*/_classPrivateFieldLooseKey(\"upperLimit\");\n\nvar _rateLimitingTimer = /*#__PURE__*/_classPrivateFieldLooseKey(\"rateLimitingTimer\");\n\nvar _call = /*#__PURE__*/_classPrivateFieldLooseKey(\"call\");\n\nvar _queueNext = /*#__PURE__*/_classPrivateFieldLooseKey(\"queueNext\");\n\nvar _next = /*#__PURE__*/_classPrivateFieldLooseKey(\"next\");\n\nvar _queue = /*#__PURE__*/_classPrivateFieldLooseKey(\"queue\");\n\nvar _dequeue = /*#__PURE__*/_classPrivateFieldLooseKey(\"dequeue\");\n\nvar _resume = /*#__PURE__*/_classPrivateFieldLooseKey(\"resume\");\n\nvar _increaseLimit = /*#__PURE__*/_classPrivateFieldLooseKey(\"increaseLimit\");\n\nclass RateLimitedQueue {\n  constructor(limit) {\n    Object.defineProperty(this, _dequeue, {\n      value: _dequeue2\n    });\n    Object.defineProperty(this, _queue, {\n      value: _queue2\n    });\n    Object.defineProperty(this, _next, {\n      value: _next2\n    });\n    Object.defineProperty(this, _queueNext, {\n      value: _queueNext2\n    });\n    Object.defineProperty(this, _call, {\n      value: _call2\n    });\n    Object.defineProperty(this, _activeRequests, {\n      writable: true,\n      value: 0\n    });\n    Object.defineProperty(this, _queuedHandlers, {\n      writable: true,\n      value: []\n    });\n    Object.defineProperty(this, _paused, {\n      writable: true,\n      value: false\n    });\n    Object.defineProperty(this, _pauseTimer, {\n      writable: true,\n      value: void 0\n    });\n    Object.defineProperty(this, _downLimit, {\n      writable: true,\n      value: 1\n    });\n    Object.defineProperty(this, _upperLimit, {\n      writable: true,\n      value: void 0\n    });\n    Object.defineProperty(this, _rateLimitingTimer, {\n      writable: true,\n      value: void 0\n    });\n    Object.defineProperty(this, _resume, {\n      writable: true,\n      value: () => this.resume()\n    });\n    Object.defineProperty(this, _increaseLimit, {\n      writable: true,\n      value: () => {\n        if (_classPrivateFieldLooseBase(this, _paused)[_paused]) {\n          _classPrivateFieldLooseBase(this, _rateLimitingTimer)[_rateLimitingTimer] = setTimeout(_classPrivateFieldLooseBase(this, _increaseLimit)[_increaseLimit], 0);\n          return;\n        }\n\n        _classPrivateFieldLooseBase(this, _downLimit)[_downLimit] = this.limit;\n        this.limit = Math.ceil((_classPrivateFieldLooseBase(this, _upperLimit)[_upperLimit] + _classPrivateFieldLooseBase(this, _downLimit)[_downLimit]) / 2);\n\n        for (let i = _classPrivateFieldLooseBase(this, _downLimit)[_downLimit]; i <= this.limit; i++) {\n          _classPrivateFieldLooseBase(this, _queueNext)[_queueNext]();\n        }\n\n        if (_classPrivateFieldLooseBase(this, _upperLimit)[_upperLimit] - _classPrivateFieldLooseBase(this, _downLimit)[_downLimit] > 3) {\n          _classPrivateFieldLooseBase(this, _rateLimitingTimer)[_rateLimitingTimer] = setTimeout(_classPrivateFieldLooseBase(this, _increaseLimit)[_increaseLimit], 2000);\n        } else {\n          _classPrivateFieldLooseBase(this, _downLimit)[_downLimit] = Math.floor(_classPrivateFieldLooseBase(this, _downLimit)[_downLimit] / 2);\n        }\n      }\n    });\n\n    if (typeof limit !== 'number' || limit === 0) {\n      this.limit = Infinity;\n    } else {\n      this.limit = limit;\n    }\n  }\n\n  run(fn, queueOptions) {\n    if (!_classPrivateFieldLooseBase(this, _paused)[_paused] && _classPrivateFieldLooseBase(this, _activeRequests)[_activeRequests] < this.limit) {\n      return _classPrivateFieldLooseBase(this, _call)[_call](fn);\n    }\n\n    return _classPrivateFieldLooseBase(this, _queue)[_queue](fn, queueOptions);\n  }\n\n  wrapPromiseFunction(fn, queueOptions) {\n    var _this = this;\n\n    return function () {\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n\n      let queuedRequest;\n      const outerPromise = new Promise((resolve, reject) => {\n        queuedRequest = _this.run(() => {\n          let cancelError;\n          let innerPromise;\n\n          try {\n            innerPromise = Promise.resolve(fn(...args));\n          } catch (err) {\n            innerPromise = Promise.reject(err);\n          }\n\n          innerPromise.then(result => {\n            if (cancelError) {\n              reject(cancelError);\n            } else {\n              queuedRequest.done();\n              resolve(result);\n            }\n          }, err => {\n            if (cancelError) {\n              reject(cancelError);\n            } else {\n              queuedRequest.done();\n              reject(err);\n            }\n          });\n          return () => {\n            cancelError = createCancelError();\n          };\n        }, queueOptions);\n      });\n\n      outerPromise.abort = () => {\n        queuedRequest.abort();\n      };\n\n      return outerPromise;\n    };\n  }\n\n  resume() {\n    _classPrivateFieldLooseBase(this, _paused)[_paused] = false;\n    clearTimeout(_classPrivateFieldLooseBase(this, _pauseTimer)[_pauseTimer]);\n\n    for (let i = 0; i < this.limit; i++) {\n      _classPrivateFieldLooseBase(this, _queueNext)[_queueNext]();\n    }\n  }\n\n  /**\n   * Freezes the queue for a while or indefinitely.\n   *\n   * @param {number | null } [duration] Duration for the pause to happen, in milliseconds.\n   *                                    If omitted, the queue won't resume automatically.\n   */\n  pause(duration) {\n    if (duration === void 0) {\n      duration = null;\n    }\n\n    _classPrivateFieldLooseBase(this, _paused)[_paused] = true;\n    clearTimeout(_classPrivateFieldLooseBase(this, _pauseTimer)[_pauseTimer]);\n\n    if (duration != null) {\n      _classPrivateFieldLooseBase(this, _pauseTimer)[_pauseTimer] = setTimeout(_classPrivateFieldLooseBase(this, _resume)[_resume], duration);\n    }\n  }\n  /**\n   * Pauses the queue for a duration, and lower the limit of concurrent requests\n   * when the queue resumes. When the queue resumes, it tries to progressively\n   * increase the limit in `this.#increaseLimit` until another call is made to\n   * `this.rateLimit`.\n   * Call this function when using the RateLimitedQueue for network requests and\n   * the remote server responds with 429 HTTP code.\n   *\n   * @param {number} duration in milliseconds.\n   */\n\n\n  rateLimit(duration) {\n    clearTimeout(_classPrivateFieldLooseBase(this, _rateLimitingTimer)[_rateLimitingTimer]);\n    this.pause(duration);\n\n    if (this.limit > 1 && Number.isFinite(this.limit)) {\n      _classPrivateFieldLooseBase(this, _upperLimit)[_upperLimit] = this.limit - 1;\n      this.limit = _classPrivateFieldLooseBase(this, _downLimit)[_downLimit];\n      _classPrivateFieldLooseBase(this, _rateLimitingTimer)[_rateLimitingTimer] = setTimeout(_classPrivateFieldLooseBase(this, _increaseLimit)[_increaseLimit], duration);\n    }\n  }\n\n  get isPaused() {\n    return _classPrivateFieldLooseBase(this, _paused)[_paused];\n  }\n\n}\n\nexports.RateLimitedQueue = RateLimitedQueue;\n\nfunction _call2(fn) {\n  _classPrivateFieldLooseBase(this, _activeRequests)[_activeRequests] += 1;\n  let done = false;\n  let cancelActive;\n\n  try {\n    cancelActive = fn();\n  } catch (err) {\n    _classPrivateFieldLooseBase(this, _activeRequests)[_activeRequests] -= 1;\n    throw err;\n  }\n\n  return {\n    abort: () => {\n      if (done) return;\n      done = true;\n      _classPrivateFieldLooseBase(this, _activeRequests)[_activeRequests] -= 1;\n      cancelActive();\n\n      _classPrivateFieldLooseBase(this, _queueNext)[_queueNext]();\n    },\n    done: () => {\n      if (done) return;\n      done = true;\n      _classPrivateFieldLooseBase(this, _activeRequests)[_activeRequests] -= 1;\n\n      _classPrivateFieldLooseBase(this, _queueNext)[_queueNext]();\n    }\n  };\n}\n\nfunction _queueNext2() {\n  // Do it soon but not immediately, this allows clearing out the entire queue synchronously\n  // one by one without continuously _advancing_ it (and starting new tasks before immediately\n  // aborting them)\n  queueMicrotask(() => _classPrivateFieldLooseBase(this, _next)[_next]());\n}\n\nfunction _next2() {\n  if (_classPrivateFieldLooseBase(this, _paused)[_paused] || _classPrivateFieldLooseBase(this, _activeRequests)[_activeRequests] >= this.limit) {\n    return;\n  }\n\n  if (_classPrivateFieldLooseBase(this, _queuedHandlers)[_queuedHandlers].length === 0) {\n    return;\n  } // Dispatch the next request, and update the abort/done handlers\n  // so that cancelling it does the Right Thing (and doesn't just try\n  // to dequeue an already-running request).\n\n\n  const next = _classPrivateFieldLooseBase(this, _queuedHandlers)[_queuedHandlers].shift();\n\n  const handler = _classPrivateFieldLooseBase(this, _call)[_call](next.fn);\n\n  next.abort = handler.abort;\n  next.done = handler.done;\n}\n\nfunction _queue2(fn, options) {\n  if (options === void 0) {\n    options = {};\n  }\n\n  const handler = {\n    fn,\n    priority: options.priority || 0,\n    abort: () => {\n      _classPrivateFieldLooseBase(this, _dequeue)[_dequeue](handler);\n    },\n    done: () => {\n      throw new Error('Cannot mark a queued request as done: this indicates a bug');\n    }\n  };\n\n  const index = _classPrivateFieldLooseBase(this, _queuedHandlers)[_queuedHandlers].findIndex(other => {\n    return handler.priority > other.priority;\n  });\n\n  if (index === -1) {\n    _classPrivateFieldLooseBase(this, _queuedHandlers)[_queuedHandlers].push(handler);\n  } else {\n    _classPrivateFieldLooseBase(this, _queuedHandlers)[_queuedHandlers].splice(index, 0, handler);\n  }\n\n  return handler;\n}\n\nfunction _dequeue2(handler) {\n  const index = _classPrivateFieldLooseBase(this, _queuedHandlers)[_queuedHandlers].indexOf(handler);\n\n  if (index !== -1) {\n    _classPrivateFieldLooseBase(this, _queuedHandlers)[_queuedHandlers].splice(index, 1);\n  }\n}\n\nconst internalRateLimitedQueue = Symbol('__queue');\nexports.internalRateLimitedQueue = internalRateLimitedQueue;", "/*!\n * Cropper.js v1.5.7\n * https://fengyuanchen.github.io/cropperjs\n *\n * Copyright 2015-present Chen Fengyuan\n * Released under the MIT license\n *\n * Date: 2020-05-23T05:23:00.081Z\n */\n\n(function (global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n  typeof define === 'function' && define.amd ? define(factory) :\n  (global = global || self, global.Cropper = factory());\n}(this, (function () { 'use strict';\n\n  function _typeof(obj) {\n    \"@babel/helpers - typeof\";\n\n    if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n      _typeof = function (obj) {\n        return typeof obj;\n      };\n    } else {\n      _typeof = function (obj) {\n        return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n      };\n    }\n\n    return _typeof(obj);\n  }\n\n  function _classCallCheck(instance, Constructor) {\n    if (!(instance instanceof Constructor)) {\n      throw new TypeError(\"Cannot call a class as a function\");\n    }\n  }\n\n  function _defineProperties(target, props) {\n    for (var i = 0; i < props.length; i++) {\n      var descriptor = props[i];\n      descriptor.enumerable = descriptor.enumerable || false;\n      descriptor.configurable = true;\n      if (\"value\" in descriptor) descriptor.writable = true;\n      Object.defineProperty(target, descriptor.key, descriptor);\n    }\n  }\n\n  function _createClass(Constructor, protoProps, staticProps) {\n    if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n    if (staticProps) _defineProperties(Constructor, staticProps);\n    return Constructor;\n  }\n\n  function _defineProperty(obj, key, value) {\n    if (key in obj) {\n      Object.defineProperty(obj, key, {\n        value: value,\n        enumerable: true,\n        configurable: true,\n        writable: true\n      });\n    } else {\n      obj[key] = value;\n    }\n\n    return obj;\n  }\n\n  function ownKeys(object, enumerableOnly) {\n    var keys = Object.keys(object);\n\n    if (Object.getOwnPropertySymbols) {\n      var symbols = Object.getOwnPropertySymbols(object);\n      if (enumerableOnly) symbols = symbols.filter(function (sym) {\n        return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n      });\n      keys.push.apply(keys, symbols);\n    }\n\n    return keys;\n  }\n\n  function _objectSpread2(target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i] != null ? arguments[i] : {};\n\n      if (i % 2) {\n        ownKeys(Object(source), true).forEach(function (key) {\n          _defineProperty(target, key, source[key]);\n        });\n      } else if (Object.getOwnPropertyDescriptors) {\n        Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n      } else {\n        ownKeys(Object(source)).forEach(function (key) {\n          Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n        });\n      }\n    }\n\n    return target;\n  }\n\n  function _toConsumableArray(arr) {\n    return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n  }\n\n  function _arrayWithoutHoles(arr) {\n    if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n  }\n\n  function _iterableToArray(iter) {\n    if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n  }\n\n  function _unsupportedIterableToArray(o, minLen) {\n    if (!o) return;\n    if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n    var n = Object.prototype.toString.call(o).slice(8, -1);\n    if (n === \"Object\" && o.constructor) n = o.constructor.name;\n    if (n === \"Map\" || n === \"Set\") return Array.from(o);\n    if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n  }\n\n  function _arrayLikeToArray(arr, len) {\n    if (len == null || len > arr.length) len = arr.length;\n\n    for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n    return arr2;\n  }\n\n  function _nonIterableSpread() {\n    throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n  }\n\n  var IS_BROWSER = typeof window !== 'undefined' && typeof window.document !== 'undefined';\n  var WINDOW = IS_BROWSER ? window : {};\n  var IS_TOUCH_DEVICE = IS_BROWSER && WINDOW.document.documentElement ? 'ontouchstart' in WINDOW.document.documentElement : false;\n  var HAS_POINTER_EVENT = IS_BROWSER ? 'PointerEvent' in WINDOW : false;\n  var NAMESPACE = 'cropper'; // Actions\n\n  var ACTION_ALL = 'all';\n  var ACTION_CROP = 'crop';\n  var ACTION_MOVE = 'move';\n  var ACTION_ZOOM = 'zoom';\n  var ACTION_EAST = 'e';\n  var ACTION_WEST = 'w';\n  var ACTION_SOUTH = 's';\n  var ACTION_NORTH = 'n';\n  var ACTION_NORTH_EAST = 'ne';\n  var ACTION_NORTH_WEST = 'nw';\n  var ACTION_SOUTH_EAST = 'se';\n  var ACTION_SOUTH_WEST = 'sw'; // Classes\n\n  var CLASS_CROP = \"\".concat(NAMESPACE, \"-crop\");\n  var CLASS_DISABLED = \"\".concat(NAMESPACE, \"-disabled\");\n  var CLASS_HIDDEN = \"\".concat(NAMESPACE, \"-hidden\");\n  var CLASS_HIDE = \"\".concat(NAMESPACE, \"-hide\");\n  var CLASS_INVISIBLE = \"\".concat(NAMESPACE, \"-invisible\");\n  var CLASS_MODAL = \"\".concat(NAMESPACE, \"-modal\");\n  var CLASS_MOVE = \"\".concat(NAMESPACE, \"-move\"); // Data keys\n\n  var DATA_ACTION = \"\".concat(NAMESPACE, \"Action\");\n  var DATA_PREVIEW = \"\".concat(NAMESPACE, \"Preview\"); // Drag modes\n\n  var DRAG_MODE_CROP = 'crop';\n  var DRAG_MODE_MOVE = 'move';\n  var DRAG_MODE_NONE = 'none'; // Events\n\n  var EVENT_CROP = 'crop';\n  var EVENT_CROP_END = 'cropend';\n  var EVENT_CROP_MOVE = 'cropmove';\n  var EVENT_CROP_START = 'cropstart';\n  var EVENT_DBLCLICK = 'dblclick';\n  var EVENT_TOUCH_START = IS_TOUCH_DEVICE ? 'touchstart' : 'mousedown';\n  var EVENT_TOUCH_MOVE = IS_TOUCH_DEVICE ? 'touchmove' : 'mousemove';\n  var EVENT_TOUCH_END = IS_TOUCH_DEVICE ? 'touchend touchcancel' : 'mouseup';\n  var EVENT_POINTER_DOWN = HAS_POINTER_EVENT ? 'pointerdown' : EVENT_TOUCH_START;\n  var EVENT_POINTER_MOVE = HAS_POINTER_EVENT ? 'pointermove' : EVENT_TOUCH_MOVE;\n  var EVENT_POINTER_UP = HAS_POINTER_EVENT ? 'pointerup pointercancel' : EVENT_TOUCH_END;\n  var EVENT_READY = 'ready';\n  var EVENT_RESIZE = 'resize';\n  var EVENT_WHEEL = 'wheel';\n  var EVENT_ZOOM = 'zoom'; // Mime types\n\n  var MIME_TYPE_JPEG = 'image/jpeg'; // RegExps\n\n  var REGEXP_ACTIONS = /^e|w|s|n|se|sw|ne|nw|all|crop|move|zoom$/;\n  var REGEXP_DATA_URL = /^data:/;\n  var REGEXP_DATA_URL_JPEG = /^data:image\\/jpeg;base64,/;\n  var REGEXP_TAG_NAME = /^img|canvas$/i; // Misc\n\n  var DEFAULTS = {\n    // Define the view mode of the cropper\n    viewMode: 0,\n    // 0, 1, 2, 3\n    // Define the dragging mode of the cropper\n    dragMode: DRAG_MODE_CROP,\n    // 'crop', 'move' or 'none'\n    // Define the initial aspect ratio of the crop box\n    initialAspectRatio: NaN,\n    // Define the aspect ratio of the crop box\n    aspectRatio: NaN,\n    // An object with the previous cropping result data\n    data: null,\n    // A selector for adding extra containers to preview\n    preview: '',\n    // Re-render the cropper when resize the window\n    responsive: true,\n    // Restore the cropped area after resize the window\n    restore: true,\n    // Check if the current image is a cross-origin image\n    checkCrossOrigin: true,\n    // Check the current image's Exif Orientation information\n    checkOrientation: true,\n    // Show the black modal\n    modal: true,\n    // Show the dashed lines for guiding\n    guides: true,\n    // Show the center indicator for guiding\n    center: true,\n    // Show the white modal to highlight the crop box\n    highlight: true,\n    // Show the grid background\n    background: true,\n    // Enable to crop the image automatically when initialize\n    autoCrop: true,\n    // Define the percentage of automatic cropping area when initializes\n    autoCropArea: 0.8,\n    // Enable to move the image\n    movable: true,\n    // Enable to rotate the image\n    rotatable: true,\n    // Enable to scale the image\n    scalable: true,\n    // Enable to zoom the image\n    zoomable: true,\n    // Enable to zoom the image by dragging touch\n    zoomOnTouch: true,\n    // Enable to zoom the image by wheeling mouse\n    zoomOnWheel: true,\n    // Define zoom ratio when zoom the image by wheeling mouse\n    wheelZoomRatio: 0.1,\n    // Enable to move the crop box\n    cropBoxMovable: true,\n    // Enable to resize the crop box\n    cropBoxResizable: true,\n    // Toggle drag mode between \"crop\" and \"move\" when click twice on the cropper\n    toggleDragModeOnDblclick: true,\n    // Size limitation\n    minCanvasWidth: 0,\n    minCanvasHeight: 0,\n    minCropBoxWidth: 0,\n    minCropBoxHeight: 0,\n    minContainerWidth: 200,\n    minContainerHeight: 100,\n    // Shortcuts of events\n    ready: null,\n    cropstart: null,\n    cropmove: null,\n    cropend: null,\n    crop: null,\n    zoom: null\n  };\n\n  var TEMPLATE = '<div class=\"cropper-container\" touch-action=\"none\">' + '<div class=\"cropper-wrap-box\">' + '<div class=\"cropper-canvas\"></div>' + '</div>' + '<div class=\"cropper-drag-box\"></div>' + '<div class=\"cropper-crop-box\">' + '<span class=\"cropper-view-box\"></span>' + '<span class=\"cropper-dashed dashed-h\"></span>' + '<span class=\"cropper-dashed dashed-v\"></span>' + '<span class=\"cropper-center\"></span>' + '<span class=\"cropper-face\"></span>' + '<span class=\"cropper-line line-e\" data-cropper-action=\"e\"></span>' + '<span class=\"cropper-line line-n\" data-cropper-action=\"n\"></span>' + '<span class=\"cropper-line line-w\" data-cropper-action=\"w\"></span>' + '<span class=\"cropper-line line-s\" data-cropper-action=\"s\"></span>' + '<span class=\"cropper-point point-e\" data-cropper-action=\"e\"></span>' + '<span class=\"cropper-point point-n\" data-cropper-action=\"n\"></span>' + '<span class=\"cropper-point point-w\" data-cropper-action=\"w\"></span>' + '<span class=\"cropper-point point-s\" data-cropper-action=\"s\"></span>' + '<span class=\"cropper-point point-ne\" data-cropper-action=\"ne\"></span>' + '<span class=\"cropper-point point-nw\" data-cropper-action=\"nw\"></span>' + '<span class=\"cropper-point point-sw\" data-cropper-action=\"sw\"></span>' + '<span class=\"cropper-point point-se\" data-cropper-action=\"se\"></span>' + '</div>' + '</div>';\n\n  /**\n   * Check if the given value is not a number.\n   */\n\n  var isNaN = Number.isNaN || WINDOW.isNaN;\n  /**\n   * Check if the given value is a number.\n   * @param {*} value - The value to check.\n   * @returns {boolean} Returns `true` if the given value is a number, else `false`.\n   */\n\n  function isNumber(value) {\n    return typeof value === 'number' && !isNaN(value);\n  }\n  /**\n   * Check if the given value is a positive number.\n   * @param {*} value - The value to check.\n   * @returns {boolean} Returns `true` if the given value is a positive number, else `false`.\n   */\n\n  var isPositiveNumber = function isPositiveNumber(value) {\n    return value > 0 && value < Infinity;\n  };\n  /**\n   * Check if the given value is undefined.\n   * @param {*} value - The value to check.\n   * @returns {boolean} Returns `true` if the given value is undefined, else `false`.\n   */\n\n  function isUndefined(value) {\n    return typeof value === 'undefined';\n  }\n  /**\n   * Check if the given value is an object.\n   * @param {*} value - The value to check.\n   * @returns {boolean} Returns `true` if the given value is an object, else `false`.\n   */\n\n  function isObject(value) {\n    return _typeof(value) === 'object' && value !== null;\n  }\n  var hasOwnProperty = Object.prototype.hasOwnProperty;\n  /**\n   * Check if the given value is a plain object.\n   * @param {*} value - The value to check.\n   * @returns {boolean} Returns `true` if the given value is a plain object, else `false`.\n   */\n\n  function isPlainObject(value) {\n    if (!isObject(value)) {\n      return false;\n    }\n\n    try {\n      var _constructor = value.constructor;\n      var prototype = _constructor.prototype;\n      return _constructor && prototype && hasOwnProperty.call(prototype, 'isPrototypeOf');\n    } catch (error) {\n      return false;\n    }\n  }\n  /**\n   * Check if the given value is a function.\n   * @param {*} value - The value to check.\n   * @returns {boolean} Returns `true` if the given value is a function, else `false`.\n   */\n\n  function isFunction(value) {\n    return typeof value === 'function';\n  }\n  var slice = Array.prototype.slice;\n  /**\n   * Convert array-like or iterable object to an array.\n   * @param {*} value - The value to convert.\n   * @returns {Array} Returns a new array.\n   */\n\n  function toArray(value) {\n    return Array.from ? Array.from(value) : slice.call(value);\n  }\n  /**\n   * Iterate the given data.\n   * @param {*} data - The data to iterate.\n   * @param {Function} callback - The process function for each element.\n   * @returns {*} The original data.\n   */\n\n  function forEach(data, callback) {\n    if (data && isFunction(callback)) {\n      if (Array.isArray(data) || isNumber(data.length)\n      /* array-like */\n      ) {\n          toArray(data).forEach(function (value, key) {\n            callback.call(data, value, key, data);\n          });\n        } else if (isObject(data)) {\n        Object.keys(data).forEach(function (key) {\n          callback.call(data, data[key], key, data);\n        });\n      }\n    }\n\n    return data;\n  }\n  /**\n   * Extend the given object.\n   * @param {*} target - The target object to extend.\n   * @param {*} args - The rest objects for merging to the target object.\n   * @returns {Object} The extended object.\n   */\n\n  var assign = Object.assign || function assign(target) {\n    for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n      args[_key - 1] = arguments[_key];\n    }\n\n    if (isObject(target) && args.length > 0) {\n      args.forEach(function (arg) {\n        if (isObject(arg)) {\n          Object.keys(arg).forEach(function (key) {\n            target[key] = arg[key];\n          });\n        }\n      });\n    }\n\n    return target;\n  };\n  var REGEXP_DECIMALS = /\\.\\d*(?:0|9){12}\\d*$/;\n  /**\n   * Normalize decimal number.\n   * Check out {@link https://0.30000000000000004.com/}\n   * @param {number} value - The value to normalize.\n   * @param {number} [times=100000000000] - The times for normalizing.\n   * @returns {number} Returns the normalized number.\n   */\n\n  function normalizeDecimalNumber(value) {\n    var times = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 100000000000;\n    return REGEXP_DECIMALS.test(value) ? Math.round(value * times) / times : value;\n  }\n  var REGEXP_SUFFIX = /^width|height|left|top|marginLeft|marginTop$/;\n  /**\n   * Apply styles to the given element.\n   * @param {Element} element - The target element.\n   * @param {Object} styles - The styles for applying.\n   */\n\n  function setStyle(element, styles) {\n    var style = element.style;\n    forEach(styles, function (value, property) {\n      if (REGEXP_SUFFIX.test(property) && isNumber(value)) {\n        value = \"\".concat(value, \"px\");\n      }\n\n      style[property] = value;\n    });\n  }\n  /**\n   * Check if the given element has a special class.\n   * @param {Element} element - The element to check.\n   * @param {string} value - The class to search.\n   * @returns {boolean} Returns `true` if the special class was found.\n   */\n\n  function hasClass(element, value) {\n    return element.classList ? element.classList.contains(value) : element.className.indexOf(value) > -1;\n  }\n  /**\n   * Add classes to the given element.\n   * @param {Element} element - The target element.\n   * @param {string} value - The classes to be added.\n   */\n\n  function addClass(element, value) {\n    if (!value) {\n      return;\n    }\n\n    if (isNumber(element.length)) {\n      forEach(element, function (elem) {\n        addClass(elem, value);\n      });\n      return;\n    }\n\n    if (element.classList) {\n      element.classList.add(value);\n      return;\n    }\n\n    var className = element.className.trim();\n\n    if (!className) {\n      element.className = value;\n    } else if (className.indexOf(value) < 0) {\n      element.className = \"\".concat(className, \" \").concat(value);\n    }\n  }\n  /**\n   * Remove classes from the given element.\n   * @param {Element} element - The target element.\n   * @param {string} value - The classes to be removed.\n   */\n\n  function removeClass(element, value) {\n    if (!value) {\n      return;\n    }\n\n    if (isNumber(element.length)) {\n      forEach(element, function (elem) {\n        removeClass(elem, value);\n      });\n      return;\n    }\n\n    if (element.classList) {\n      element.classList.remove(value);\n      return;\n    }\n\n    if (element.className.indexOf(value) >= 0) {\n      element.className = element.className.replace(value, '');\n    }\n  }\n  /**\n   * Add or remove classes from the given element.\n   * @param {Element} element - The target element.\n   * @param {string} value - The classes to be toggled.\n   * @param {boolean} added - Add only.\n   */\n\n  function toggleClass(element, value, added) {\n    if (!value) {\n      return;\n    }\n\n    if (isNumber(element.length)) {\n      forEach(element, function (elem) {\n        toggleClass(elem, value, added);\n      });\n      return;\n    } // IE10-11 doesn't support the second parameter of `classList.toggle`\n\n\n    if (added) {\n      addClass(element, value);\n    } else {\n      removeClass(element, value);\n    }\n  }\n  var REGEXP_CAMEL_CASE = /([a-z\\d])([A-Z])/g;\n  /**\n   * Transform the given string from camelCase to kebab-case\n   * @param {string} value - The value to transform.\n   * @returns {string} The transformed value.\n   */\n\n  function toParamCase(value) {\n    return value.replace(REGEXP_CAMEL_CASE, '$1-$2').toLowerCase();\n  }\n  /**\n   * Get data from the given element.\n   * @param {Element} element - The target element.\n   * @param {string} name - The data key to get.\n   * @returns {string} The data value.\n   */\n\n  function getData(element, name) {\n    if (isObject(element[name])) {\n      return element[name];\n    }\n\n    if (element.dataset) {\n      return element.dataset[name];\n    }\n\n    return element.getAttribute(\"data-\".concat(toParamCase(name)));\n  }\n  /**\n   * Set data to the given element.\n   * @param {Element} element - The target element.\n   * @param {string} name - The data key to set.\n   * @param {string} data - The data value.\n   */\n\n  function setData(element, name, data) {\n    if (isObject(data)) {\n      element[name] = data;\n    } else if (element.dataset) {\n      element.dataset[name] = data;\n    } else {\n      element.setAttribute(\"data-\".concat(toParamCase(name)), data);\n    }\n  }\n  /**\n   * Remove data from the given element.\n   * @param {Element} element - The target element.\n   * @param {string} name - The data key to remove.\n   */\n\n  function removeData(element, name) {\n    if (isObject(element[name])) {\n      try {\n        delete element[name];\n      } catch (error) {\n        element[name] = undefined;\n      }\n    } else if (element.dataset) {\n      // #128 Safari not allows to delete dataset property\n      try {\n        delete element.dataset[name];\n      } catch (error) {\n        element.dataset[name] = undefined;\n      }\n    } else {\n      element.removeAttribute(\"data-\".concat(toParamCase(name)));\n    }\n  }\n  var REGEXP_SPACES = /\\s\\s*/;\n\n  var onceSupported = function () {\n    var supported = false;\n\n    if (IS_BROWSER) {\n      var once = false;\n\n      var listener = function listener() {};\n\n      var options = Object.defineProperty({}, 'once', {\n        get: function get() {\n          supported = true;\n          return once;\n        },\n\n        /**\n         * This setter can fix a `TypeError` in strict mode\n         * {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Getter_only}\n         * @param {boolean} value - The value to set\n         */\n        set: function set(value) {\n          once = value;\n        }\n      });\n      WINDOW.addEventListener('test', listener, options);\n      WINDOW.removeEventListener('test', listener, options);\n    }\n\n    return supported;\n  }();\n  /**\n   * Remove event listener from the target element.\n   * @param {Element} element - The event target.\n   * @param {string} type - The event type(s).\n   * @param {Function} listener - The event listener.\n   * @param {Object} options - The event options.\n   */\n\n\n  function removeListener(element, type, listener) {\n    var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n    var handler = listener;\n    type.trim().split(REGEXP_SPACES).forEach(function (event) {\n      if (!onceSupported) {\n        var listeners = element.listeners;\n\n        if (listeners && listeners[event] && listeners[event][listener]) {\n          handler = listeners[event][listener];\n          delete listeners[event][listener];\n\n          if (Object.keys(listeners[event]).length === 0) {\n            delete listeners[event];\n          }\n\n          if (Object.keys(listeners).length === 0) {\n            delete element.listeners;\n          }\n        }\n      }\n\n      element.removeEventListener(event, handler, options);\n    });\n  }\n  /**\n   * Add event listener to the target element.\n   * @param {Element} element - The event target.\n   * @param {string} type - The event type(s).\n   * @param {Function} listener - The event listener.\n   * @param {Object} options - The event options.\n   */\n\n  function addListener(element, type, listener) {\n    var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n    var _handler = listener;\n    type.trim().split(REGEXP_SPACES).forEach(function (event) {\n      if (options.once && !onceSupported) {\n        var _element$listeners = element.listeners,\n            listeners = _element$listeners === void 0 ? {} : _element$listeners;\n\n        _handler = function handler() {\n          delete listeners[event][listener];\n          element.removeEventListener(event, _handler, options);\n\n          for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n            args[_key2] = arguments[_key2];\n          }\n\n          listener.apply(element, args);\n        };\n\n        if (!listeners[event]) {\n          listeners[event] = {};\n        }\n\n        if (listeners[event][listener]) {\n          element.removeEventListener(event, listeners[event][listener], options);\n        }\n\n        listeners[event][listener] = _handler;\n        element.listeners = listeners;\n      }\n\n      element.addEventListener(event, _handler, options);\n    });\n  }\n  /**\n   * Dispatch event on the target element.\n   * @param {Element} element - The event target.\n   * @param {string} type - The event type(s).\n   * @param {Object} data - The additional event data.\n   * @returns {boolean} Indicate if the event is default prevented or not.\n   */\n\n  function dispatchEvent(element, type, data) {\n    var event; // Event and CustomEvent on IE9-11 are global objects, not constructors\n\n    if (isFunction(Event) && isFunction(CustomEvent)) {\n      event = new CustomEvent(type, {\n        detail: data,\n        bubbles: true,\n        cancelable: true\n      });\n    } else {\n      event = document.createEvent('CustomEvent');\n      event.initCustomEvent(type, true, true, data);\n    }\n\n    return element.dispatchEvent(event);\n  }\n  /**\n   * Get the offset base on the document.\n   * @param {Element} element - The target element.\n   * @returns {Object} The offset data.\n   */\n\n  function getOffset(element) {\n    var box = element.getBoundingClientRect();\n    return {\n      left: box.left + (window.pageXOffset - document.documentElement.clientLeft),\n      top: box.top + (window.pageYOffset - document.documentElement.clientTop)\n    };\n  }\n  var location = WINDOW.location;\n  var REGEXP_ORIGINS = /^(\\w+:)\\/\\/([^:/?#]*):?(\\d*)/i;\n  /**\n   * Check if the given URL is a cross origin URL.\n   * @param {string} url - The target URL.\n   * @returns {boolean} Returns `true` if the given URL is a cross origin URL, else `false`.\n   */\n\n  function isCrossOriginURL(url) {\n    var parts = url.match(REGEXP_ORIGINS);\n    return parts !== null && (parts[1] !== location.protocol || parts[2] !== location.hostname || parts[3] !== location.port);\n  }\n  /**\n   * Add timestamp to the given URL.\n   * @param {string} url - The target URL.\n   * @returns {string} The result URL.\n   */\n\n  function addTimestamp(url) {\n    var timestamp = \"timestamp=\".concat(new Date().getTime());\n    return url + (url.indexOf('?') === -1 ? '?' : '&') + timestamp;\n  }\n  /**\n   * Get transforms base on the given object.\n   * @param {Object} obj - The target object.\n   * @returns {string} A string contains transform values.\n   */\n\n  function getTransforms(_ref) {\n    var rotate = _ref.rotate,\n        scaleX = _ref.scaleX,\n        scaleY = _ref.scaleY,\n        translateX = _ref.translateX,\n        translateY = _ref.translateY;\n    var values = [];\n\n    if (isNumber(translateX) && translateX !== 0) {\n      values.push(\"translateX(\".concat(translateX, \"px)\"));\n    }\n\n    if (isNumber(translateY) && translateY !== 0) {\n      values.push(\"translateY(\".concat(translateY, \"px)\"));\n    } // Rotate should come first before scale to match orientation transform\n\n\n    if (isNumber(rotate) && rotate !== 0) {\n      values.push(\"rotate(\".concat(rotate, \"deg)\"));\n    }\n\n    if (isNumber(scaleX) && scaleX !== 1) {\n      values.push(\"scaleX(\".concat(scaleX, \")\"));\n    }\n\n    if (isNumber(scaleY) && scaleY !== 1) {\n      values.push(\"scaleY(\".concat(scaleY, \")\"));\n    }\n\n    var transform = values.length ? values.join(' ') : 'none';\n    return {\n      WebkitTransform: transform,\n      msTransform: transform,\n      transform: transform\n    };\n  }\n  /**\n   * Get the max ratio of a group of pointers.\n   * @param {string} pointers - The target pointers.\n   * @returns {number} The result ratio.\n   */\n\n  function getMaxZoomRatio(pointers) {\n    var pointers2 = _objectSpread2({}, pointers);\n\n    var ratios = [];\n    forEach(pointers, function (pointer, pointerId) {\n      delete pointers2[pointerId];\n      forEach(pointers2, function (pointer2) {\n        var x1 = Math.abs(pointer.startX - pointer2.startX);\n        var y1 = Math.abs(pointer.startY - pointer2.startY);\n        var x2 = Math.abs(pointer.endX - pointer2.endX);\n        var y2 = Math.abs(pointer.endY - pointer2.endY);\n        var z1 = Math.sqrt(x1 * x1 + y1 * y1);\n        var z2 = Math.sqrt(x2 * x2 + y2 * y2);\n        var ratio = (z2 - z1) / z1;\n        ratios.push(ratio);\n      });\n    });\n    ratios.sort(function (a, b) {\n      return Math.abs(a) < Math.abs(b);\n    });\n    return ratios[0];\n  }\n  /**\n   * Get a pointer from an event object.\n   * @param {Object} event - The target event object.\n   * @param {boolean} endOnly - Indicates if only returns the end point coordinate or not.\n   * @returns {Object} The result pointer contains start and/or end point coordinates.\n   */\n\n  function getPointer(_ref2, endOnly) {\n    var pageX = _ref2.pageX,\n        pageY = _ref2.pageY;\n    var end = {\n      endX: pageX,\n      endY: pageY\n    };\n    return endOnly ? end : _objectSpread2({\n      startX: pageX,\n      startY: pageY\n    }, end);\n  }\n  /**\n   * Get the center point coordinate of a group of pointers.\n   * @param {Object} pointers - The target pointers.\n   * @returns {Object} The center point coordinate.\n   */\n\n  function getPointersCenter(pointers) {\n    var pageX = 0;\n    var pageY = 0;\n    var count = 0;\n    forEach(pointers, function (_ref3) {\n      var startX = _ref3.startX,\n          startY = _ref3.startY;\n      pageX += startX;\n      pageY += startY;\n      count += 1;\n    });\n    pageX /= count;\n    pageY /= count;\n    return {\n      pageX: pageX,\n      pageY: pageY\n    };\n  }\n  /**\n   * Get the max sizes in a rectangle under the given aspect ratio.\n   * @param {Object} data - The original sizes.\n   * @param {string} [type='contain'] - The adjust type.\n   * @returns {Object} The result sizes.\n   */\n\n  function getAdjustedSizes(_ref4) // or 'cover'\n  {\n    var aspectRatio = _ref4.aspectRatio,\n        height = _ref4.height,\n        width = _ref4.width;\n    var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'contain';\n    var isValidWidth = isPositiveNumber(width);\n    var isValidHeight = isPositiveNumber(height);\n\n    if (isValidWidth && isValidHeight) {\n      var adjustedWidth = height * aspectRatio;\n\n      if (type === 'contain' && adjustedWidth > width || type === 'cover' && adjustedWidth < width) {\n        height = width / aspectRatio;\n      } else {\n        width = height * aspectRatio;\n      }\n    } else if (isValidWidth) {\n      height = width / aspectRatio;\n    } else if (isValidHeight) {\n      width = height * aspectRatio;\n    }\n\n    return {\n      width: width,\n      height: height\n    };\n  }\n  /**\n   * Get the new sizes of a rectangle after rotated.\n   * @param {Object} data - The original sizes.\n   * @returns {Object} The result sizes.\n   */\n\n  function getRotatedSizes(_ref5) {\n    var width = _ref5.width,\n        height = _ref5.height,\n        degree = _ref5.degree;\n    degree = Math.abs(degree) % 180;\n\n    if (degree === 90) {\n      return {\n        width: height,\n        height: width\n      };\n    }\n\n    var arc = degree % 90 * Math.PI / 180;\n    var sinArc = Math.sin(arc);\n    var cosArc = Math.cos(arc);\n    var newWidth = width * cosArc + height * sinArc;\n    var newHeight = width * sinArc + height * cosArc;\n    return degree > 90 ? {\n      width: newHeight,\n      height: newWidth\n    } : {\n      width: newWidth,\n      height: newHeight\n    };\n  }\n  /**\n   * Get a canvas which drew the given image.\n   * @param {HTMLImageElement} image - The image for drawing.\n   * @param {Object} imageData - The image data.\n   * @param {Object} canvasData - The canvas data.\n   * @param {Object} options - The options.\n   * @returns {HTMLCanvasElement} The result canvas.\n   */\n\n  function getSourceCanvas(image, _ref6, _ref7, _ref8) {\n    var imageAspectRatio = _ref6.aspectRatio,\n        imageNaturalWidth = _ref6.naturalWidth,\n        imageNaturalHeight = _ref6.naturalHeight,\n        _ref6$rotate = _ref6.rotate,\n        rotate = _ref6$rotate === void 0 ? 0 : _ref6$rotate,\n        _ref6$scaleX = _ref6.scaleX,\n        scaleX = _ref6$scaleX === void 0 ? 1 : _ref6$scaleX,\n        _ref6$scaleY = _ref6.scaleY,\n        scaleY = _ref6$scaleY === void 0 ? 1 : _ref6$scaleY;\n    var aspectRatio = _ref7.aspectRatio,\n        naturalWidth = _ref7.naturalWidth,\n        naturalHeight = _ref7.naturalHeight;\n    var _ref8$fillColor = _ref8.fillColor,\n        fillColor = _ref8$fillColor === void 0 ? 'transparent' : _ref8$fillColor,\n        _ref8$imageSmoothingE = _ref8.imageSmoothingEnabled,\n        imageSmoothingEnabled = _ref8$imageSmoothingE === void 0 ? true : _ref8$imageSmoothingE,\n        _ref8$imageSmoothingQ = _ref8.imageSmoothingQuality,\n        imageSmoothingQuality = _ref8$imageSmoothingQ === void 0 ? 'low' : _ref8$imageSmoothingQ,\n        _ref8$maxWidth = _ref8.maxWidth,\n        maxWidth = _ref8$maxWidth === void 0 ? Infinity : _ref8$maxWidth,\n        _ref8$maxHeight = _ref8.maxHeight,\n        maxHeight = _ref8$maxHeight === void 0 ? Infinity : _ref8$maxHeight,\n        _ref8$minWidth = _ref8.minWidth,\n        minWidth = _ref8$minWidth === void 0 ? 0 : _ref8$minWidth,\n        _ref8$minHeight = _ref8.minHeight,\n        minHeight = _ref8$minHeight === void 0 ? 0 : _ref8$minHeight;\n    var canvas = document.createElement('canvas');\n    var context = canvas.getContext('2d');\n    var maxSizes = getAdjustedSizes({\n      aspectRatio: aspectRatio,\n      width: maxWidth,\n      height: maxHeight\n    });\n    var minSizes = getAdjustedSizes({\n      aspectRatio: aspectRatio,\n      width: minWidth,\n      height: minHeight\n    }, 'cover');\n    var width = Math.min(maxSizes.width, Math.max(minSizes.width, naturalWidth));\n    var height = Math.min(maxSizes.height, Math.max(minSizes.height, naturalHeight)); // Note: should always use image's natural sizes for drawing as\n    // imageData.naturalWidth === canvasData.naturalHeight when rotate % 180 === 90\n\n    var destMaxSizes = getAdjustedSizes({\n      aspectRatio: imageAspectRatio,\n      width: maxWidth,\n      height: maxHeight\n    });\n    var destMinSizes = getAdjustedSizes({\n      aspectRatio: imageAspectRatio,\n      width: minWidth,\n      height: minHeight\n    }, 'cover');\n    var destWidth = Math.min(destMaxSizes.width, Math.max(destMinSizes.width, imageNaturalWidth));\n    var destHeight = Math.min(destMaxSizes.height, Math.max(destMinSizes.height, imageNaturalHeight));\n    var params = [-destWidth / 2, -destHeight / 2, destWidth, destHeight];\n    canvas.width = normalizeDecimalNumber(width);\n    canvas.height = normalizeDecimalNumber(height);\n    context.fillStyle = fillColor;\n    context.fillRect(0, 0, width, height);\n    context.save();\n    context.translate(width / 2, height / 2);\n    context.rotate(rotate * Math.PI / 180);\n    context.scale(scaleX, scaleY);\n    context.imageSmoothingEnabled = imageSmoothingEnabled;\n    context.imageSmoothingQuality = imageSmoothingQuality;\n    context.drawImage.apply(context, [image].concat(_toConsumableArray(params.map(function (param) {\n      return Math.floor(normalizeDecimalNumber(param));\n    }))));\n    context.restore();\n    return canvas;\n  }\n  var fromCharCode = String.fromCharCode;\n  /**\n   * Get string from char code in data view.\n   * @param {DataView} dataView - The data view for read.\n   * @param {number} start - The start index.\n   * @param {number} length - The read length.\n   * @returns {string} The read result.\n   */\n\n  function getStringFromCharCode(dataView, start, length) {\n    var str = '';\n    length += start;\n\n    for (var i = start; i < length; i += 1) {\n      str += fromCharCode(dataView.getUint8(i));\n    }\n\n    return str;\n  }\n  var REGEXP_DATA_URL_HEAD = /^data:.*,/;\n  /**\n   * Transform Data URL to array buffer.\n   * @param {string} dataURL - The Data URL to transform.\n   * @returns {ArrayBuffer} The result array buffer.\n   */\n\n  function dataURLToArrayBuffer(dataURL) {\n    var base64 = dataURL.replace(REGEXP_DATA_URL_HEAD, '');\n    var binary = atob(base64);\n    var arrayBuffer = new ArrayBuffer(binary.length);\n    var uint8 = new Uint8Array(arrayBuffer);\n    forEach(uint8, function (value, i) {\n      uint8[i] = binary.charCodeAt(i);\n    });\n    return arrayBuffer;\n  }\n  /**\n   * Transform array buffer to Data URL.\n   * @param {ArrayBuffer} arrayBuffer - The array buffer to transform.\n   * @param {string} mimeType - The mime type of the Data URL.\n   * @returns {string} The result Data URL.\n   */\n\n  function arrayBufferToDataURL(arrayBuffer, mimeType) {\n    var chunks = []; // Chunk Typed Array for better performance (#435)\n\n    var chunkSize = 8192;\n    var uint8 = new Uint8Array(arrayBuffer);\n\n    while (uint8.length > 0) {\n      // XXX: Babel's `toConsumableArray` helper will throw error in IE or Safari 9\n      // eslint-disable-next-line prefer-spread\n      chunks.push(fromCharCode.apply(null, toArray(uint8.subarray(0, chunkSize))));\n      uint8 = uint8.subarray(chunkSize);\n    }\n\n    return \"data:\".concat(mimeType, \";base64,\").concat(btoa(chunks.join('')));\n  }\n  /**\n   * Get orientation value from given array buffer.\n   * @param {ArrayBuffer} arrayBuffer - The array buffer to read.\n   * @returns {number} The read orientation value.\n   */\n\n  function resetAndGetOrientation(arrayBuffer) {\n    var dataView = new DataView(arrayBuffer);\n    var orientation; // Ignores range error when the image does not have correct Exif information\n\n    try {\n      var littleEndian;\n      var app1Start;\n      var ifdStart; // Only handle JPEG image (start by 0xFFD8)\n\n      if (dataView.getUint8(0) === 0xFF && dataView.getUint8(1) === 0xD8) {\n        var length = dataView.byteLength;\n        var offset = 2;\n\n        while (offset + 1 < length) {\n          if (dataView.getUint8(offset) === 0xFF && dataView.getUint8(offset + 1) === 0xE1) {\n            app1Start = offset;\n            break;\n          }\n\n          offset += 1;\n        }\n      }\n\n      if (app1Start) {\n        var exifIDCode = app1Start + 4;\n        var tiffOffset = app1Start + 10;\n\n        if (getStringFromCharCode(dataView, exifIDCode, 4) === 'Exif') {\n          var endianness = dataView.getUint16(tiffOffset);\n          littleEndian = endianness === 0x4949;\n\n          if (littleEndian || endianness === 0x4D4D\n          /* bigEndian */\n          ) {\n              if (dataView.getUint16(tiffOffset + 2, littleEndian) === 0x002A) {\n                var firstIFDOffset = dataView.getUint32(tiffOffset + 4, littleEndian);\n\n                if (firstIFDOffset >= 0x00000008) {\n                  ifdStart = tiffOffset + firstIFDOffset;\n                }\n              }\n            }\n        }\n      }\n\n      if (ifdStart) {\n        var _length = dataView.getUint16(ifdStart, littleEndian);\n\n        var _offset;\n\n        var i;\n\n        for (i = 0; i < _length; i += 1) {\n          _offset = ifdStart + i * 12 + 2;\n\n          if (dataView.getUint16(_offset, littleEndian) === 0x0112\n          /* Orientation */\n          ) {\n              // 8 is the offset of the current tag's value\n              _offset += 8; // Get the original orientation value\n\n              orientation = dataView.getUint16(_offset, littleEndian); // Override the orientation with its default value\n\n              dataView.setUint16(_offset, 1, littleEndian);\n              break;\n            }\n        }\n      }\n    } catch (error) {\n      orientation = 1;\n    }\n\n    return orientation;\n  }\n  /**\n   * Parse Exif Orientation value.\n   * @param {number} orientation - The orientation to parse.\n   * @returns {Object} The parsed result.\n   */\n\n  function parseOrientation(orientation) {\n    var rotate = 0;\n    var scaleX = 1;\n    var scaleY = 1;\n\n    switch (orientation) {\n      // Flip horizontal\n      case 2:\n        scaleX = -1;\n        break;\n      // Rotate left 180\u00B0\n\n      case 3:\n        rotate = -180;\n        break;\n      // Flip vertical\n\n      case 4:\n        scaleY = -1;\n        break;\n      // Flip vertical and rotate right 90\u00B0\n\n      case 5:\n        rotate = 90;\n        scaleY = -1;\n        break;\n      // Rotate right 90\u00B0\n\n      case 6:\n        rotate = 90;\n        break;\n      // Flip horizontal and rotate right 90\u00B0\n\n      case 7:\n        rotate = 90;\n        scaleX = -1;\n        break;\n      // Rotate left 90\u00B0\n\n      case 8:\n        rotate = -90;\n        break;\n    }\n\n    return {\n      rotate: rotate,\n      scaleX: scaleX,\n      scaleY: scaleY\n    };\n  }\n\n  var render = {\n    render: function render() {\n      this.initContainer();\n      this.initCanvas();\n      this.initCropBox();\n      this.renderCanvas();\n\n      if (this.cropped) {\n        this.renderCropBox();\n      }\n    },\n    initContainer: function initContainer() {\n      var element = this.element,\n          options = this.options,\n          container = this.container,\n          cropper = this.cropper;\n      addClass(cropper, CLASS_HIDDEN);\n      removeClass(element, CLASS_HIDDEN);\n      var containerData = {\n        width: Math.max(container.offsetWidth, Number(options.minContainerWidth) || 200),\n        height: Math.max(container.offsetHeight, Number(options.minContainerHeight) || 100)\n      };\n      this.containerData = containerData;\n      setStyle(cropper, {\n        width: containerData.width,\n        height: containerData.height\n      });\n      addClass(element, CLASS_HIDDEN);\n      removeClass(cropper, CLASS_HIDDEN);\n    },\n    // Canvas (image wrapper)\n    initCanvas: function initCanvas() {\n      var containerData = this.containerData,\n          imageData = this.imageData;\n      var viewMode = this.options.viewMode;\n      var rotated = Math.abs(imageData.rotate) % 180 === 90;\n      var naturalWidth = rotated ? imageData.naturalHeight : imageData.naturalWidth;\n      var naturalHeight = rotated ? imageData.naturalWidth : imageData.naturalHeight;\n      var aspectRatio = naturalWidth / naturalHeight;\n      var canvasWidth = containerData.width;\n      var canvasHeight = containerData.height;\n\n      if (containerData.height * aspectRatio > containerData.width) {\n        if (viewMode === 3) {\n          canvasWidth = containerData.height * aspectRatio;\n        } else {\n          canvasHeight = containerData.width / aspectRatio;\n        }\n      } else if (viewMode === 3) {\n        canvasHeight = containerData.width / aspectRatio;\n      } else {\n        canvasWidth = containerData.height * aspectRatio;\n      }\n\n      var canvasData = {\n        aspectRatio: aspectRatio,\n        naturalWidth: naturalWidth,\n        naturalHeight: naturalHeight,\n        width: canvasWidth,\n        height: canvasHeight\n      };\n      canvasData.left = (containerData.width - canvasWidth) / 2;\n      canvasData.top = (containerData.height - canvasHeight) / 2;\n      canvasData.oldLeft = canvasData.left;\n      canvasData.oldTop = canvasData.top;\n      this.canvasData = canvasData;\n      this.limited = viewMode === 1 || viewMode === 2;\n      this.limitCanvas(true, true);\n      this.initialImageData = assign({}, imageData);\n      this.initialCanvasData = assign({}, canvasData);\n    },\n    limitCanvas: function limitCanvas(sizeLimited, positionLimited) {\n      var options = this.options,\n          containerData = this.containerData,\n          canvasData = this.canvasData,\n          cropBoxData = this.cropBoxData;\n      var viewMode = options.viewMode;\n      var aspectRatio = canvasData.aspectRatio;\n      var cropped = this.cropped && cropBoxData;\n\n      if (sizeLimited) {\n        var minCanvasWidth = Number(options.minCanvasWidth) || 0;\n        var minCanvasHeight = Number(options.minCanvasHeight) || 0;\n\n        if (viewMode > 1) {\n          minCanvasWidth = Math.max(minCanvasWidth, containerData.width);\n          minCanvasHeight = Math.max(minCanvasHeight, containerData.height);\n\n          if (viewMode === 3) {\n            if (minCanvasHeight * aspectRatio > minCanvasWidth) {\n              minCanvasWidth = minCanvasHeight * aspectRatio;\n            } else {\n              minCanvasHeight = minCanvasWidth / aspectRatio;\n            }\n          }\n        } else if (viewMode > 0) {\n          if (minCanvasWidth) {\n            minCanvasWidth = Math.max(minCanvasWidth, cropped ? cropBoxData.width : 0);\n          } else if (minCanvasHeight) {\n            minCanvasHeight = Math.max(minCanvasHeight, cropped ? cropBoxData.height : 0);\n          } else if (cropped) {\n            minCanvasWidth = cropBoxData.width;\n            minCanvasHeight = cropBoxData.height;\n\n            if (minCanvasHeight * aspectRatio > minCanvasWidth) {\n              minCanvasWidth = minCanvasHeight * aspectRatio;\n            } else {\n              minCanvasHeight = minCanvasWidth / aspectRatio;\n            }\n          }\n        }\n\n        var _getAdjustedSizes = getAdjustedSizes({\n          aspectRatio: aspectRatio,\n          width: minCanvasWidth,\n          height: minCanvasHeight\n        });\n\n        minCanvasWidth = _getAdjustedSizes.width;\n        minCanvasHeight = _getAdjustedSizes.height;\n        canvasData.minWidth = minCanvasWidth;\n        canvasData.minHeight = minCanvasHeight;\n        canvasData.maxWidth = Infinity;\n        canvasData.maxHeight = Infinity;\n      }\n\n      if (positionLimited) {\n        if (viewMode > (cropped ? 0 : 1)) {\n          var newCanvasLeft = containerData.width - canvasData.width;\n          var newCanvasTop = containerData.height - canvasData.height;\n          canvasData.minLeft = Math.min(0, newCanvasLeft);\n          canvasData.minTop = Math.min(0, newCanvasTop);\n          canvasData.maxLeft = Math.max(0, newCanvasLeft);\n          canvasData.maxTop = Math.max(0, newCanvasTop);\n\n          if (cropped && this.limited) {\n            canvasData.minLeft = Math.min(cropBoxData.left, cropBoxData.left + (cropBoxData.width - canvasData.width));\n            canvasData.minTop = Math.min(cropBoxData.top, cropBoxData.top + (cropBoxData.height - canvasData.height));\n            canvasData.maxLeft = cropBoxData.left;\n            canvasData.maxTop = cropBoxData.top;\n\n            if (viewMode === 2) {\n              if (canvasData.width >= containerData.width) {\n                canvasData.minLeft = Math.min(0, newCanvasLeft);\n                canvasData.maxLeft = Math.max(0, newCanvasLeft);\n              }\n\n              if (canvasData.height >= containerData.height) {\n                canvasData.minTop = Math.min(0, newCanvasTop);\n                canvasData.maxTop = Math.max(0, newCanvasTop);\n              }\n            }\n          }\n        } else {\n          canvasData.minLeft = -canvasData.width;\n          canvasData.minTop = -canvasData.height;\n          canvasData.maxLeft = containerData.width;\n          canvasData.maxTop = containerData.height;\n        }\n      }\n    },\n    renderCanvas: function renderCanvas(changed, transformed) {\n      var canvasData = this.canvasData,\n          imageData = this.imageData;\n\n      if (transformed) {\n        var _getRotatedSizes = getRotatedSizes({\n          width: imageData.naturalWidth * Math.abs(imageData.scaleX || 1),\n          height: imageData.naturalHeight * Math.abs(imageData.scaleY || 1),\n          degree: imageData.rotate || 0\n        }),\n            naturalWidth = _getRotatedSizes.width,\n            naturalHeight = _getRotatedSizes.height;\n\n        var width = canvasData.width * (naturalWidth / canvasData.naturalWidth);\n        var height = canvasData.height * (naturalHeight / canvasData.naturalHeight);\n        canvasData.left -= (width - canvasData.width) / 2;\n        canvasData.top -= (height - canvasData.height) / 2;\n        canvasData.width = width;\n        canvasData.height = height;\n        canvasData.aspectRatio = naturalWidth / naturalHeight;\n        canvasData.naturalWidth = naturalWidth;\n        canvasData.naturalHeight = naturalHeight;\n        this.limitCanvas(true, false);\n      }\n\n      if (canvasData.width > canvasData.maxWidth || canvasData.width < canvasData.minWidth) {\n        canvasData.left = canvasData.oldLeft;\n      }\n\n      if (canvasData.height > canvasData.maxHeight || canvasData.height < canvasData.minHeight) {\n        canvasData.top = canvasData.oldTop;\n      }\n\n      canvasData.width = Math.min(Math.max(canvasData.width, canvasData.minWidth), canvasData.maxWidth);\n      canvasData.height = Math.min(Math.max(canvasData.height, canvasData.minHeight), canvasData.maxHeight);\n      this.limitCanvas(false, true);\n      canvasData.left = Math.min(Math.max(canvasData.left, canvasData.minLeft), canvasData.maxLeft);\n      canvasData.top = Math.min(Math.max(canvasData.top, canvasData.minTop), canvasData.maxTop);\n      canvasData.oldLeft = canvasData.left;\n      canvasData.oldTop = canvasData.top;\n      setStyle(this.canvas, assign({\n        width: canvasData.width,\n        height: canvasData.height\n      }, getTransforms({\n        translateX: canvasData.left,\n        translateY: canvasData.top\n      })));\n      this.renderImage(changed);\n\n      if (this.cropped && this.limited) {\n        this.limitCropBox(true, true);\n      }\n    },\n    renderImage: function renderImage(changed) {\n      var canvasData = this.canvasData,\n          imageData = this.imageData;\n      var width = imageData.naturalWidth * (canvasData.width / canvasData.naturalWidth);\n      var height = imageData.naturalHeight * (canvasData.height / canvasData.naturalHeight);\n      assign(imageData, {\n        width: width,\n        height: height,\n        left: (canvasData.width - width) / 2,\n        top: (canvasData.height - height) / 2\n      });\n      setStyle(this.image, assign({\n        width: imageData.width,\n        height: imageData.height\n      }, getTransforms(assign({\n        translateX: imageData.left,\n        translateY: imageData.top\n      }, imageData))));\n\n      if (changed) {\n        this.output();\n      }\n    },\n    initCropBox: function initCropBox() {\n      var options = this.options,\n          canvasData = this.canvasData;\n      var aspectRatio = options.aspectRatio || options.initialAspectRatio;\n      var autoCropArea = Number(options.autoCropArea) || 0.8;\n      var cropBoxData = {\n        width: canvasData.width,\n        height: canvasData.height\n      };\n\n      if (aspectRatio) {\n        if (canvasData.height * aspectRatio > canvasData.width) {\n          cropBoxData.height = cropBoxData.width / aspectRatio;\n        } else {\n          cropBoxData.width = cropBoxData.height * aspectRatio;\n        }\n      }\n\n      this.cropBoxData = cropBoxData;\n      this.limitCropBox(true, true); // Initialize auto crop area\n\n      cropBoxData.width = Math.min(Math.max(cropBoxData.width, cropBoxData.minWidth), cropBoxData.maxWidth);\n      cropBoxData.height = Math.min(Math.max(cropBoxData.height, cropBoxData.minHeight), cropBoxData.maxHeight); // The width/height of auto crop area must large than \"minWidth/Height\"\n\n      cropBoxData.width = Math.max(cropBoxData.minWidth, cropBoxData.width * autoCropArea);\n      cropBoxData.height = Math.max(cropBoxData.minHeight, cropBoxData.height * autoCropArea);\n      cropBoxData.left = canvasData.left + (canvasData.width - cropBoxData.width) / 2;\n      cropBoxData.top = canvasData.top + (canvasData.height - cropBoxData.height) / 2;\n      cropBoxData.oldLeft = cropBoxData.left;\n      cropBoxData.oldTop = cropBoxData.top;\n      this.initialCropBoxData = assign({}, cropBoxData);\n    },\n    limitCropBox: function limitCropBox(sizeLimited, positionLimited) {\n      var options = this.options,\n          containerData = this.containerData,\n          canvasData = this.canvasData,\n          cropBoxData = this.cropBoxData,\n          limited = this.limited;\n      var aspectRatio = options.aspectRatio;\n\n      if (sizeLimited) {\n        var minCropBoxWidth = Number(options.minCropBoxWidth) || 0;\n        var minCropBoxHeight = Number(options.minCropBoxHeight) || 0;\n        var maxCropBoxWidth = limited ? Math.min(containerData.width, canvasData.width, canvasData.width + canvasData.left, containerData.width - canvasData.left) : containerData.width;\n        var maxCropBoxHeight = limited ? Math.min(containerData.height, canvasData.height, canvasData.height + canvasData.top, containerData.height - canvasData.top) : containerData.height; // The min/maxCropBoxWidth/Height must be less than container's width/height\n\n        minCropBoxWidth = Math.min(minCropBoxWidth, containerData.width);\n        minCropBoxHeight = Math.min(minCropBoxHeight, containerData.height);\n\n        if (aspectRatio) {\n          if (minCropBoxWidth && minCropBoxHeight) {\n            if (minCropBoxHeight * aspectRatio > minCropBoxWidth) {\n              minCropBoxHeight = minCropBoxWidth / aspectRatio;\n            } else {\n              minCropBoxWidth = minCropBoxHeight * aspectRatio;\n            }\n          } else if (minCropBoxWidth) {\n            minCropBoxHeight = minCropBoxWidth / aspectRatio;\n          } else if (minCropBoxHeight) {\n            minCropBoxWidth = minCropBoxHeight * aspectRatio;\n          }\n\n          if (maxCropBoxHeight * aspectRatio > maxCropBoxWidth) {\n            maxCropBoxHeight = maxCropBoxWidth / aspectRatio;\n          } else {\n            maxCropBoxWidth = maxCropBoxHeight * aspectRatio;\n          }\n        } // The minWidth/Height must be less than maxWidth/Height\n\n\n        cropBoxData.minWidth = Math.min(minCropBoxWidth, maxCropBoxWidth);\n        cropBoxData.minHeight = Math.min(minCropBoxHeight, maxCropBoxHeight);\n        cropBoxData.maxWidth = maxCropBoxWidth;\n        cropBoxData.maxHeight = maxCropBoxHeight;\n      }\n\n      if (positionLimited) {\n        if (limited) {\n          cropBoxData.minLeft = Math.max(0, canvasData.left);\n          cropBoxData.minTop = Math.max(0, canvasData.top);\n          cropBoxData.maxLeft = Math.min(containerData.width, canvasData.left + canvasData.width) - cropBoxData.width;\n          cropBoxData.maxTop = Math.min(containerData.height, canvasData.top + canvasData.height) - cropBoxData.height;\n        } else {\n          cropBoxData.minLeft = 0;\n          cropBoxData.minTop = 0;\n          cropBoxData.maxLeft = containerData.width - cropBoxData.width;\n          cropBoxData.maxTop = containerData.height - cropBoxData.height;\n        }\n      }\n    },\n    renderCropBox: function renderCropBox() {\n      var options = this.options,\n          containerData = this.containerData,\n          cropBoxData = this.cropBoxData;\n\n      if (cropBoxData.width > cropBoxData.maxWidth || cropBoxData.width < cropBoxData.minWidth) {\n        cropBoxData.left = cropBoxData.oldLeft;\n      }\n\n      if (cropBoxData.height > cropBoxData.maxHeight || cropBoxData.height < cropBoxData.minHeight) {\n        cropBoxData.top = cropBoxData.oldTop;\n      }\n\n      cropBoxData.width = Math.min(Math.max(cropBoxData.width, cropBoxData.minWidth), cropBoxData.maxWidth);\n      cropBoxData.height = Math.min(Math.max(cropBoxData.height, cropBoxData.minHeight), cropBoxData.maxHeight);\n      this.limitCropBox(false, true);\n      cropBoxData.left = Math.min(Math.max(cropBoxData.left, cropBoxData.minLeft), cropBoxData.maxLeft);\n      cropBoxData.top = Math.min(Math.max(cropBoxData.top, cropBoxData.minTop), cropBoxData.maxTop);\n      cropBoxData.oldLeft = cropBoxData.left;\n      cropBoxData.oldTop = cropBoxData.top;\n\n      if (options.movable && options.cropBoxMovable) {\n        // Turn to move the canvas when the crop box is equal to the container\n        setData(this.face, DATA_ACTION, cropBoxData.width >= containerData.width && cropBoxData.height >= containerData.height ? ACTION_MOVE : ACTION_ALL);\n      }\n\n      setStyle(this.cropBox, assign({\n        width: cropBoxData.width,\n        height: cropBoxData.height\n      }, getTransforms({\n        translateX: cropBoxData.left,\n        translateY: cropBoxData.top\n      })));\n\n      if (this.cropped && this.limited) {\n        this.limitCanvas(true, true);\n      }\n\n      if (!this.disabled) {\n        this.output();\n      }\n    },\n    output: function output() {\n      this.preview();\n      dispatchEvent(this.element, EVENT_CROP, this.getData());\n    }\n  };\n\n  var preview = {\n    initPreview: function initPreview() {\n      var element = this.element,\n          crossOrigin = this.crossOrigin;\n      var preview = this.options.preview;\n      var url = crossOrigin ? this.crossOriginUrl : this.url;\n      var alt = element.alt || 'The image to preview';\n      var image = document.createElement('img');\n\n      if (crossOrigin) {\n        image.crossOrigin = crossOrigin;\n      }\n\n      image.src = url;\n      image.alt = alt;\n      this.viewBox.appendChild(image);\n      this.viewBoxImage = image;\n\n      if (!preview) {\n        return;\n      }\n\n      var previews = preview;\n\n      if (typeof preview === 'string') {\n        previews = element.ownerDocument.querySelectorAll(preview);\n      } else if (preview.querySelector) {\n        previews = [preview];\n      }\n\n      this.previews = previews;\n      forEach(previews, function (el) {\n        var img = document.createElement('img'); // Save the original size for recover\n\n        setData(el, DATA_PREVIEW, {\n          width: el.offsetWidth,\n          height: el.offsetHeight,\n          html: el.innerHTML\n        });\n\n        if (crossOrigin) {\n          img.crossOrigin = crossOrigin;\n        }\n\n        img.src = url;\n        img.alt = alt;\n        /**\n         * Override img element styles\n         * Add `display:block` to avoid margin top issue\n         * Add `height:auto` to override `height` attribute on IE8\n         * (Occur only when margin-top <= -height)\n         */\n\n        img.style.cssText = 'display:block;' + 'width:100%;' + 'height:auto;' + 'min-width:0!important;' + 'min-height:0!important;' + 'max-width:none!important;' + 'max-height:none!important;' + 'image-orientation:0deg!important;\"';\n        el.innerHTML = '';\n        el.appendChild(img);\n      });\n    },\n    resetPreview: function resetPreview() {\n      forEach(this.previews, function (element) {\n        var data = getData(element, DATA_PREVIEW);\n        setStyle(element, {\n          width: data.width,\n          height: data.height\n        });\n        element.innerHTML = data.html;\n        removeData(element, DATA_PREVIEW);\n      });\n    },\n    preview: function preview() {\n      var imageData = this.imageData,\n          canvasData = this.canvasData,\n          cropBoxData = this.cropBoxData;\n      var cropBoxWidth = cropBoxData.width,\n          cropBoxHeight = cropBoxData.height;\n      var width = imageData.width,\n          height = imageData.height;\n      var left = cropBoxData.left - canvasData.left - imageData.left;\n      var top = cropBoxData.top - canvasData.top - imageData.top;\n\n      if (!this.cropped || this.disabled) {\n        return;\n      }\n\n      setStyle(this.viewBoxImage, assign({\n        width: width,\n        height: height\n      }, getTransforms(assign({\n        translateX: -left,\n        translateY: -top\n      }, imageData))));\n      forEach(this.previews, function (element) {\n        var data = getData(element, DATA_PREVIEW);\n        var originalWidth = data.width;\n        var originalHeight = data.height;\n        var newWidth = originalWidth;\n        var newHeight = originalHeight;\n        var ratio = 1;\n\n        if (cropBoxWidth) {\n          ratio = originalWidth / cropBoxWidth;\n          newHeight = cropBoxHeight * ratio;\n        }\n\n        if (cropBoxHeight && newHeight > originalHeight) {\n          ratio = originalHeight / cropBoxHeight;\n          newWidth = cropBoxWidth * ratio;\n          newHeight = originalHeight;\n        }\n\n        setStyle(element, {\n          width: newWidth,\n          height: newHeight\n        });\n        setStyle(element.getElementsByTagName('img')[0], assign({\n          width: width * ratio,\n          height: height * ratio\n        }, getTransforms(assign({\n          translateX: -left * ratio,\n          translateY: -top * ratio\n        }, imageData))));\n      });\n    }\n  };\n\n  var events = {\n    bind: function bind() {\n      var element = this.element,\n          options = this.options,\n          cropper = this.cropper;\n\n      if (isFunction(options.cropstart)) {\n        addListener(element, EVENT_CROP_START, options.cropstart);\n      }\n\n      if (isFunction(options.cropmove)) {\n        addListener(element, EVENT_CROP_MOVE, options.cropmove);\n      }\n\n      if (isFunction(options.cropend)) {\n        addListener(element, EVENT_CROP_END, options.cropend);\n      }\n\n      if (isFunction(options.crop)) {\n        addListener(element, EVENT_CROP, options.crop);\n      }\n\n      if (isFunction(options.zoom)) {\n        addListener(element, EVENT_ZOOM, options.zoom);\n      }\n\n      addListener(cropper, EVENT_POINTER_DOWN, this.onCropStart = this.cropStart.bind(this));\n\n      if (options.zoomable && options.zoomOnWheel) {\n        addListener(cropper, EVENT_WHEEL, this.onWheel = this.wheel.bind(this), {\n          passive: false,\n          capture: true\n        });\n      }\n\n      if (options.toggleDragModeOnDblclick) {\n        addListener(cropper, EVENT_DBLCLICK, this.onDblclick = this.dblclick.bind(this));\n      }\n\n      addListener(element.ownerDocument, EVENT_POINTER_MOVE, this.onCropMove = this.cropMove.bind(this));\n      addListener(element.ownerDocument, EVENT_POINTER_UP, this.onCropEnd = this.cropEnd.bind(this));\n\n      if (options.responsive) {\n        addListener(window, EVENT_RESIZE, this.onResize = this.resize.bind(this));\n      }\n    },\n    unbind: function unbind() {\n      var element = this.element,\n          options = this.options,\n          cropper = this.cropper;\n\n      if (isFunction(options.cropstart)) {\n        removeListener(element, EVENT_CROP_START, options.cropstart);\n      }\n\n      if (isFunction(options.cropmove)) {\n        removeListener(element, EVENT_CROP_MOVE, options.cropmove);\n      }\n\n      if (isFunction(options.cropend)) {\n        removeListener(element, EVENT_CROP_END, options.cropend);\n      }\n\n      if (isFunction(options.crop)) {\n        removeListener(element, EVENT_CROP, options.crop);\n      }\n\n      if (isFunction(options.zoom)) {\n        removeListener(element, EVENT_ZOOM, options.zoom);\n      }\n\n      removeListener(cropper, EVENT_POINTER_DOWN, this.onCropStart);\n\n      if (options.zoomable && options.zoomOnWheel) {\n        removeListener(cropper, EVENT_WHEEL, this.onWheel, {\n          passive: false,\n          capture: true\n        });\n      }\n\n      if (options.toggleDragModeOnDblclick) {\n        removeListener(cropper, EVENT_DBLCLICK, this.onDblclick);\n      }\n\n      removeListener(element.ownerDocument, EVENT_POINTER_MOVE, this.onCropMove);\n      removeListener(element.ownerDocument, EVENT_POINTER_UP, this.onCropEnd);\n\n      if (options.responsive) {\n        removeListener(window, EVENT_RESIZE, this.onResize);\n      }\n    }\n  };\n\n  var handlers = {\n    resize: function resize() {\n      if (this.disabled) {\n        return;\n      }\n\n      var options = this.options,\n          container = this.container,\n          containerData = this.containerData;\n      var ratio = container.offsetWidth / containerData.width; // Resize when width changed or height changed\n\n      if (ratio !== 1 || container.offsetHeight !== containerData.height) {\n        var canvasData;\n        var cropBoxData;\n\n        if (options.restore) {\n          canvasData = this.getCanvasData();\n          cropBoxData = this.getCropBoxData();\n        }\n\n        this.render();\n\n        if (options.restore) {\n          this.setCanvasData(forEach(canvasData, function (n, i) {\n            canvasData[i] = n * ratio;\n          }));\n          this.setCropBoxData(forEach(cropBoxData, function (n, i) {\n            cropBoxData[i] = n * ratio;\n          }));\n        }\n      }\n    },\n    dblclick: function dblclick() {\n      if (this.disabled || this.options.dragMode === DRAG_MODE_NONE) {\n        return;\n      }\n\n      this.setDragMode(hasClass(this.dragBox, CLASS_CROP) ? DRAG_MODE_MOVE : DRAG_MODE_CROP);\n    },\n    wheel: function wheel(event) {\n      var _this = this;\n\n      var ratio = Number(this.options.wheelZoomRatio) || 0.1;\n      var delta = 1;\n\n      if (this.disabled) {\n        return;\n      }\n\n      event.preventDefault(); // Limit wheel speed to prevent zoom too fast (#21)\n\n      if (this.wheeling) {\n        return;\n      }\n\n      this.wheeling = true;\n      setTimeout(function () {\n        _this.wheeling = false;\n      }, 50);\n\n      if (event.deltaY) {\n        delta = event.deltaY > 0 ? 1 : -1;\n      } else if (event.wheelDelta) {\n        delta = -event.wheelDelta / 120;\n      } else if (event.detail) {\n        delta = event.detail > 0 ? 1 : -1;\n      }\n\n      this.zoom(-delta * ratio, event);\n    },\n    cropStart: function cropStart(event) {\n      var buttons = event.buttons,\n          button = event.button;\n\n      if (this.disabled // Handle mouse event and pointer event and ignore touch event\n      || (event.type === 'mousedown' || event.type === 'pointerdown' && event.pointerType === 'mouse') && ( // No primary button (Usually the left button)\n      isNumber(buttons) && buttons !== 1 || isNumber(button) && button !== 0 // Open context menu\n      || event.ctrlKey)) {\n        return;\n      }\n\n      var options = this.options,\n          pointers = this.pointers;\n      var action;\n\n      if (event.changedTouches) {\n        // Handle touch event\n        forEach(event.changedTouches, function (touch) {\n          pointers[touch.identifier] = getPointer(touch);\n        });\n      } else {\n        // Handle mouse event and pointer event\n        pointers[event.pointerId || 0] = getPointer(event);\n      }\n\n      if (Object.keys(pointers).length > 1 && options.zoomable && options.zoomOnTouch) {\n        action = ACTION_ZOOM;\n      } else {\n        action = getData(event.target, DATA_ACTION);\n      }\n\n      if (!REGEXP_ACTIONS.test(action)) {\n        return;\n      }\n\n      if (dispatchEvent(this.element, EVENT_CROP_START, {\n        originalEvent: event,\n        action: action\n      }) === false) {\n        return;\n      } // This line is required for preventing page zooming in iOS browsers\n\n\n      event.preventDefault();\n      this.action = action;\n      this.cropping = false;\n\n      if (action === ACTION_CROP) {\n        this.cropping = true;\n        addClass(this.dragBox, CLASS_MODAL);\n      }\n    },\n    cropMove: function cropMove(event) {\n      var action = this.action;\n\n      if (this.disabled || !action) {\n        return;\n      }\n\n      var pointers = this.pointers;\n      event.preventDefault();\n\n      if (dispatchEvent(this.element, EVENT_CROP_MOVE, {\n        originalEvent: event,\n        action: action\n      }) === false) {\n        return;\n      }\n\n      if (event.changedTouches) {\n        forEach(event.changedTouches, function (touch) {\n          // The first parameter should not be undefined (#432)\n          assign(pointers[touch.identifier] || {}, getPointer(touch, true));\n        });\n      } else {\n        assign(pointers[event.pointerId || 0] || {}, getPointer(event, true));\n      }\n\n      this.change(event);\n    },\n    cropEnd: function cropEnd(event) {\n      if (this.disabled) {\n        return;\n      }\n\n      var action = this.action,\n          pointers = this.pointers;\n\n      if (event.changedTouches) {\n        forEach(event.changedTouches, function (touch) {\n          delete pointers[touch.identifier];\n        });\n      } else {\n        delete pointers[event.pointerId || 0];\n      }\n\n      if (!action) {\n        return;\n      }\n\n      event.preventDefault();\n\n      if (!Object.keys(pointers).length) {\n        this.action = '';\n      }\n\n      if (this.cropping) {\n        this.cropping = false;\n        toggleClass(this.dragBox, CLASS_MODAL, this.cropped && this.options.modal);\n      }\n\n      dispatchEvent(this.element, EVENT_CROP_END, {\n        originalEvent: event,\n        action: action\n      });\n    }\n  };\n\n  var change = {\n    change: function change(event) {\n      var options = this.options,\n          canvasData = this.canvasData,\n          containerData = this.containerData,\n          cropBoxData = this.cropBoxData,\n          pointers = this.pointers;\n      var action = this.action;\n      var aspectRatio = options.aspectRatio;\n      var left = cropBoxData.left,\n          top = cropBoxData.top,\n          width = cropBoxData.width,\n          height = cropBoxData.height;\n      var right = left + width;\n      var bottom = top + height;\n      var minLeft = 0;\n      var minTop = 0;\n      var maxWidth = containerData.width;\n      var maxHeight = containerData.height;\n      var renderable = true;\n      var offset; // Locking aspect ratio in \"free mode\" by holding shift key\n\n      if (!aspectRatio && event.shiftKey) {\n        aspectRatio = width && height ? width / height : 1;\n      }\n\n      if (this.limited) {\n        minLeft = cropBoxData.minLeft;\n        minTop = cropBoxData.minTop;\n        maxWidth = minLeft + Math.min(containerData.width, canvasData.width, canvasData.left + canvasData.width);\n        maxHeight = minTop + Math.min(containerData.height, canvasData.height, canvasData.top + canvasData.height);\n      }\n\n      var pointer = pointers[Object.keys(pointers)[0]];\n      var range = {\n        x: pointer.endX - pointer.startX,\n        y: pointer.endY - pointer.startY\n      };\n\n      var check = function check(side) {\n        switch (side) {\n          case ACTION_EAST:\n            if (right + range.x > maxWidth) {\n              range.x = maxWidth - right;\n            }\n\n            break;\n\n          case ACTION_WEST:\n            if (left + range.x < minLeft) {\n              range.x = minLeft - left;\n            }\n\n            break;\n\n          case ACTION_NORTH:\n            if (top + range.y < minTop) {\n              range.y = minTop - top;\n            }\n\n            break;\n\n          case ACTION_SOUTH:\n            if (bottom + range.y > maxHeight) {\n              range.y = maxHeight - bottom;\n            }\n\n            break;\n        }\n      };\n\n      switch (action) {\n        // Move crop box\n        case ACTION_ALL:\n          left += range.x;\n          top += range.y;\n          break;\n        // Resize crop box\n\n        case ACTION_EAST:\n          if (range.x >= 0 && (right >= maxWidth || aspectRatio && (top <= minTop || bottom >= maxHeight))) {\n            renderable = false;\n            break;\n          }\n\n          check(ACTION_EAST);\n          width += range.x;\n\n          if (width < 0) {\n            action = ACTION_WEST;\n            width = -width;\n            left -= width;\n          }\n\n          if (aspectRatio) {\n            height = width / aspectRatio;\n            top += (cropBoxData.height - height) / 2;\n          }\n\n          break;\n\n        case ACTION_NORTH:\n          if (range.y <= 0 && (top <= minTop || aspectRatio && (left <= minLeft || right >= maxWidth))) {\n            renderable = false;\n            break;\n          }\n\n          check(ACTION_NORTH);\n          height -= range.y;\n          top += range.y;\n\n          if (height < 0) {\n            action = ACTION_SOUTH;\n            height = -height;\n            top -= height;\n          }\n\n          if (aspectRatio) {\n            width = height * aspectRatio;\n            left += (cropBoxData.width - width) / 2;\n          }\n\n          break;\n\n        case ACTION_WEST:\n          if (range.x <= 0 && (left <= minLeft || aspectRatio && (top <= minTop || bottom >= maxHeight))) {\n            renderable = false;\n            break;\n          }\n\n          check(ACTION_WEST);\n          width -= range.x;\n          left += range.x;\n\n          if (width < 0) {\n            action = ACTION_EAST;\n            width = -width;\n            left -= width;\n          }\n\n          if (aspectRatio) {\n            height = width / aspectRatio;\n            top += (cropBoxData.height - height) / 2;\n          }\n\n          break;\n\n        case ACTION_SOUTH:\n          if (range.y >= 0 && (bottom >= maxHeight || aspectRatio && (left <= minLeft || right >= maxWidth))) {\n            renderable = false;\n            break;\n          }\n\n          check(ACTION_SOUTH);\n          height += range.y;\n\n          if (height < 0) {\n            action = ACTION_NORTH;\n            height = -height;\n            top -= height;\n          }\n\n          if (aspectRatio) {\n            width = height * aspectRatio;\n            left += (cropBoxData.width - width) / 2;\n          }\n\n          break;\n\n        case ACTION_NORTH_EAST:\n          if (aspectRatio) {\n            if (range.y <= 0 && (top <= minTop || right >= maxWidth)) {\n              renderable = false;\n              break;\n            }\n\n            check(ACTION_NORTH);\n            height -= range.y;\n            top += range.y;\n            width = height * aspectRatio;\n          } else {\n            check(ACTION_NORTH);\n            check(ACTION_EAST);\n\n            if (range.x >= 0) {\n              if (right < maxWidth) {\n                width += range.x;\n              } else if (range.y <= 0 && top <= minTop) {\n                renderable = false;\n              }\n            } else {\n              width += range.x;\n            }\n\n            if (range.y <= 0) {\n              if (top > minTop) {\n                height -= range.y;\n                top += range.y;\n              }\n            } else {\n              height -= range.y;\n              top += range.y;\n            }\n          }\n\n          if (width < 0 && height < 0) {\n            action = ACTION_SOUTH_WEST;\n            height = -height;\n            width = -width;\n            top -= height;\n            left -= width;\n          } else if (width < 0) {\n            action = ACTION_NORTH_WEST;\n            width = -width;\n            left -= width;\n          } else if (height < 0) {\n            action = ACTION_SOUTH_EAST;\n            height = -height;\n            top -= height;\n          }\n\n          break;\n\n        case ACTION_NORTH_WEST:\n          if (aspectRatio) {\n            if (range.y <= 0 && (top <= minTop || left <= minLeft)) {\n              renderable = false;\n              break;\n            }\n\n            check(ACTION_NORTH);\n            height -= range.y;\n            top += range.y;\n            width = height * aspectRatio;\n            left += cropBoxData.width - width;\n          } else {\n            check(ACTION_NORTH);\n            check(ACTION_WEST);\n\n            if (range.x <= 0) {\n              if (left > minLeft) {\n                width -= range.x;\n                left += range.x;\n              } else if (range.y <= 0 && top <= minTop) {\n                renderable = false;\n              }\n            } else {\n              width -= range.x;\n              left += range.x;\n            }\n\n            if (range.y <= 0) {\n              if (top > minTop) {\n                height -= range.y;\n                top += range.y;\n              }\n            } else {\n              height -= range.y;\n              top += range.y;\n            }\n          }\n\n          if (width < 0 && height < 0) {\n            action = ACTION_SOUTH_EAST;\n            height = -height;\n            width = -width;\n            top -= height;\n            left -= width;\n          } else if (width < 0) {\n            action = ACTION_NORTH_EAST;\n            width = -width;\n            left -= width;\n          } else if (height < 0) {\n            action = ACTION_SOUTH_WEST;\n            height = -height;\n            top -= height;\n          }\n\n          break;\n\n        case ACTION_SOUTH_WEST:\n          if (aspectRatio) {\n            if (range.x <= 0 && (left <= minLeft || bottom >= maxHeight)) {\n              renderable = false;\n              break;\n            }\n\n            check(ACTION_WEST);\n            width -= range.x;\n            left += range.x;\n            height = width / aspectRatio;\n          } else {\n            check(ACTION_SOUTH);\n            check(ACTION_WEST);\n\n            if (range.x <= 0) {\n              if (left > minLeft) {\n                width -= range.x;\n                left += range.x;\n              } else if (range.y >= 0 && bottom >= maxHeight) {\n                renderable = false;\n              }\n            } else {\n              width -= range.x;\n              left += range.x;\n            }\n\n            if (range.y >= 0) {\n              if (bottom < maxHeight) {\n                height += range.y;\n              }\n            } else {\n              height += range.y;\n            }\n          }\n\n          if (width < 0 && height < 0) {\n            action = ACTION_NORTH_EAST;\n            height = -height;\n            width = -width;\n            top -= height;\n            left -= width;\n          } else if (width < 0) {\n            action = ACTION_SOUTH_EAST;\n            width = -width;\n            left -= width;\n          } else if (height < 0) {\n            action = ACTION_NORTH_WEST;\n            height = -height;\n            top -= height;\n          }\n\n          break;\n\n        case ACTION_SOUTH_EAST:\n          if (aspectRatio) {\n            if (range.x >= 0 && (right >= maxWidth || bottom >= maxHeight)) {\n              renderable = false;\n              break;\n            }\n\n            check(ACTION_EAST);\n            width += range.x;\n            height = width / aspectRatio;\n          } else {\n            check(ACTION_SOUTH);\n            check(ACTION_EAST);\n\n            if (range.x >= 0) {\n              if (right < maxWidth) {\n                width += range.x;\n              } else if (range.y >= 0 && bottom >= maxHeight) {\n                renderable = false;\n              }\n            } else {\n              width += range.x;\n            }\n\n            if (range.y >= 0) {\n              if (bottom < maxHeight) {\n                height += range.y;\n              }\n            } else {\n              height += range.y;\n            }\n          }\n\n          if (width < 0 && height < 0) {\n            action = ACTION_NORTH_WEST;\n            height = -height;\n            width = -width;\n            top -= height;\n            left -= width;\n          } else if (width < 0) {\n            action = ACTION_SOUTH_WEST;\n            width = -width;\n            left -= width;\n          } else if (height < 0) {\n            action = ACTION_NORTH_EAST;\n            height = -height;\n            top -= height;\n          }\n\n          break;\n        // Move canvas\n\n        case ACTION_MOVE:\n          this.move(range.x, range.y);\n          renderable = false;\n          break;\n        // Zoom canvas\n\n        case ACTION_ZOOM:\n          this.zoom(getMaxZoomRatio(pointers), event);\n          renderable = false;\n          break;\n        // Create crop box\n\n        case ACTION_CROP:\n          if (!range.x || !range.y) {\n            renderable = false;\n            break;\n          }\n\n          offset = getOffset(this.cropper);\n          left = pointer.startX - offset.left;\n          top = pointer.startY - offset.top;\n          width = cropBoxData.minWidth;\n          height = cropBoxData.minHeight;\n\n          if (range.x > 0) {\n            action = range.y > 0 ? ACTION_SOUTH_EAST : ACTION_NORTH_EAST;\n          } else if (range.x < 0) {\n            left -= width;\n            action = range.y > 0 ? ACTION_SOUTH_WEST : ACTION_NORTH_WEST;\n          }\n\n          if (range.y < 0) {\n            top -= height;\n          } // Show the crop box if is hidden\n\n\n          if (!this.cropped) {\n            removeClass(this.cropBox, CLASS_HIDDEN);\n            this.cropped = true;\n\n            if (this.limited) {\n              this.limitCropBox(true, true);\n            }\n          }\n\n          break;\n      }\n\n      if (renderable) {\n        cropBoxData.width = width;\n        cropBoxData.height = height;\n        cropBoxData.left = left;\n        cropBoxData.top = top;\n        this.action = action;\n        this.renderCropBox();\n      } // Override\n\n\n      forEach(pointers, function (p) {\n        p.startX = p.endX;\n        p.startY = p.endY;\n      });\n    }\n  };\n\n  var methods = {\n    // Show the crop box manually\n    crop: function crop() {\n      if (this.ready && !this.cropped && !this.disabled) {\n        this.cropped = true;\n        this.limitCropBox(true, true);\n\n        if (this.options.modal) {\n          addClass(this.dragBox, CLASS_MODAL);\n        }\n\n        removeClass(this.cropBox, CLASS_HIDDEN);\n        this.setCropBoxData(this.initialCropBoxData);\n      }\n\n      return this;\n    },\n    // Reset the image and crop box to their initial states\n    reset: function reset() {\n      if (this.ready && !this.disabled) {\n        this.imageData = assign({}, this.initialImageData);\n        this.canvasData = assign({}, this.initialCanvasData);\n        this.cropBoxData = assign({}, this.initialCropBoxData);\n        this.renderCanvas();\n\n        if (this.cropped) {\n          this.renderCropBox();\n        }\n      }\n\n      return this;\n    },\n    // Clear the crop box\n    clear: function clear() {\n      if (this.cropped && !this.disabled) {\n        assign(this.cropBoxData, {\n          left: 0,\n          top: 0,\n          width: 0,\n          height: 0\n        });\n        this.cropped = false;\n        this.renderCropBox();\n        this.limitCanvas(true, true); // Render canvas after crop box rendered\n\n        this.renderCanvas();\n        removeClass(this.dragBox, CLASS_MODAL);\n        addClass(this.cropBox, CLASS_HIDDEN);\n      }\n\n      return this;\n    },\n\n    /**\n     * Replace the image's src and rebuild the cropper\n     * @param {string} url - The new URL.\n     * @param {boolean} [hasSameSize] - Indicate if the new image has the same size as the old one.\n     * @returns {Cropper} this\n     */\n    replace: function replace(url) {\n      var hasSameSize = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n      if (!this.disabled && url) {\n        if (this.isImg) {\n          this.element.src = url;\n        }\n\n        if (hasSameSize) {\n          this.url = url;\n          this.image.src = url;\n\n          if (this.ready) {\n            this.viewBoxImage.src = url;\n            forEach(this.previews, function (element) {\n              element.getElementsByTagName('img')[0].src = url;\n            });\n          }\n        } else {\n          if (this.isImg) {\n            this.replaced = true;\n          }\n\n          this.options.data = null;\n          this.uncreate();\n          this.load(url);\n        }\n      }\n\n      return this;\n    },\n    // Enable (unfreeze) the cropper\n    enable: function enable() {\n      if (this.ready && this.disabled) {\n        this.disabled = false;\n        removeClass(this.cropper, CLASS_DISABLED);\n      }\n\n      return this;\n    },\n    // Disable (freeze) the cropper\n    disable: function disable() {\n      if (this.ready && !this.disabled) {\n        this.disabled = true;\n        addClass(this.cropper, CLASS_DISABLED);\n      }\n\n      return this;\n    },\n\n    /**\n     * Destroy the cropper and remove the instance from the image\n     * @returns {Cropper} this\n     */\n    destroy: function destroy() {\n      var element = this.element;\n\n      if (!element[NAMESPACE]) {\n        return this;\n      }\n\n      element[NAMESPACE] = undefined;\n\n      if (this.isImg && this.replaced) {\n        element.src = this.originalUrl;\n      }\n\n      this.uncreate();\n      return this;\n    },\n\n    /**\n     * Move the canvas with relative offsets\n     * @param {number} offsetX - The relative offset distance on the x-axis.\n     * @param {number} [offsetY=offsetX] - The relative offset distance on the y-axis.\n     * @returns {Cropper} this\n     */\n    move: function move(offsetX) {\n      var offsetY = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : offsetX;\n      var _this$canvasData = this.canvasData,\n          left = _this$canvasData.left,\n          top = _this$canvasData.top;\n      return this.moveTo(isUndefined(offsetX) ? offsetX : left + Number(offsetX), isUndefined(offsetY) ? offsetY : top + Number(offsetY));\n    },\n\n    /**\n     * Move the canvas to an absolute point\n     * @param {number} x - The x-axis coordinate.\n     * @param {number} [y=x] - The y-axis coordinate.\n     * @returns {Cropper} this\n     */\n    moveTo: function moveTo(x) {\n      var y = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : x;\n      var canvasData = this.canvasData;\n      var changed = false;\n      x = Number(x);\n      y = Number(y);\n\n      if (this.ready && !this.disabled && this.options.movable) {\n        if (isNumber(x)) {\n          canvasData.left = x;\n          changed = true;\n        }\n\n        if (isNumber(y)) {\n          canvasData.top = y;\n          changed = true;\n        }\n\n        if (changed) {\n          this.renderCanvas(true);\n        }\n      }\n\n      return this;\n    },\n\n    /**\n     * Zoom the canvas with a relative ratio\n     * @param {number} ratio - The target ratio.\n     * @param {Event} _originalEvent - The original event if any.\n     * @returns {Cropper} this\n     */\n    zoom: function zoom(ratio, _originalEvent) {\n      var canvasData = this.canvasData;\n      ratio = Number(ratio);\n\n      if (ratio < 0) {\n        ratio = 1 / (1 - ratio);\n      } else {\n        ratio = 1 + ratio;\n      }\n\n      return this.zoomTo(canvasData.width * ratio / canvasData.naturalWidth, null, _originalEvent);\n    },\n\n    /**\n     * Zoom the canvas to an absolute ratio\n     * @param {number} ratio - The target ratio.\n     * @param {Object} pivot - The zoom pivot point coordinate.\n     * @param {Event} _originalEvent - The original event if any.\n     * @returns {Cropper} this\n     */\n    zoomTo: function zoomTo(ratio, pivot, _originalEvent) {\n      var options = this.options,\n          canvasData = this.canvasData;\n      var width = canvasData.width,\n          height = canvasData.height,\n          naturalWidth = canvasData.naturalWidth,\n          naturalHeight = canvasData.naturalHeight;\n      ratio = Number(ratio);\n\n      if (ratio >= 0 && this.ready && !this.disabled && options.zoomable) {\n        var newWidth = naturalWidth * ratio;\n        var newHeight = naturalHeight * ratio;\n\n        if (dispatchEvent(this.element, EVENT_ZOOM, {\n          ratio: ratio,\n          oldRatio: width / naturalWidth,\n          originalEvent: _originalEvent\n        }) === false) {\n          return this;\n        }\n\n        if (_originalEvent) {\n          var pointers = this.pointers;\n          var offset = getOffset(this.cropper);\n          var center = pointers && Object.keys(pointers).length ? getPointersCenter(pointers) : {\n            pageX: _originalEvent.pageX,\n            pageY: _originalEvent.pageY\n          }; // Zoom from the triggering point of the event\n\n          canvasData.left -= (newWidth - width) * ((center.pageX - offset.left - canvasData.left) / width);\n          canvasData.top -= (newHeight - height) * ((center.pageY - offset.top - canvasData.top) / height);\n        } else if (isPlainObject(pivot) && isNumber(pivot.x) && isNumber(pivot.y)) {\n          canvasData.left -= (newWidth - width) * ((pivot.x - canvasData.left) / width);\n          canvasData.top -= (newHeight - height) * ((pivot.y - canvasData.top) / height);\n        } else {\n          // Zoom from the center of the canvas\n          canvasData.left -= (newWidth - width) / 2;\n          canvasData.top -= (newHeight - height) / 2;\n        }\n\n        canvasData.width = newWidth;\n        canvasData.height = newHeight;\n        this.renderCanvas(true);\n      }\n\n      return this;\n    },\n\n    /**\n     * Rotate the canvas with a relative degree\n     * @param {number} degree - The rotate degree.\n     * @returns {Cropper} this\n     */\n    rotate: function rotate(degree) {\n      return this.rotateTo((this.imageData.rotate || 0) + Number(degree));\n    },\n\n    /**\n     * Rotate the canvas to an absolute degree\n     * @param {number} degree - The rotate degree.\n     * @returns {Cropper} this\n     */\n    rotateTo: function rotateTo(degree) {\n      degree = Number(degree);\n\n      if (isNumber(degree) && this.ready && !this.disabled && this.options.rotatable) {\n        this.imageData.rotate = degree % 360;\n        this.renderCanvas(true, true);\n      }\n\n      return this;\n    },\n\n    /**\n     * Scale the image on the x-axis.\n     * @param {number} scaleX - The scale ratio on the x-axis.\n     * @returns {Cropper} this\n     */\n    scaleX: function scaleX(_scaleX) {\n      var scaleY = this.imageData.scaleY;\n      return this.scale(_scaleX, isNumber(scaleY) ? scaleY : 1);\n    },\n\n    /**\n     * Scale the image on the y-axis.\n     * @param {number} scaleY - The scale ratio on the y-axis.\n     * @returns {Cropper} this\n     */\n    scaleY: function scaleY(_scaleY) {\n      var scaleX = this.imageData.scaleX;\n      return this.scale(isNumber(scaleX) ? scaleX : 1, _scaleY);\n    },\n\n    /**\n     * Scale the image\n     * @param {number} scaleX - The scale ratio on the x-axis.\n     * @param {number} [scaleY=scaleX] - The scale ratio on the y-axis.\n     * @returns {Cropper} this\n     */\n    scale: function scale(scaleX) {\n      var scaleY = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : scaleX;\n      var imageData = this.imageData;\n      var transformed = false;\n      scaleX = Number(scaleX);\n      scaleY = Number(scaleY);\n\n      if (this.ready && !this.disabled && this.options.scalable) {\n        if (isNumber(scaleX)) {\n          imageData.scaleX = scaleX;\n          transformed = true;\n        }\n\n        if (isNumber(scaleY)) {\n          imageData.scaleY = scaleY;\n          transformed = true;\n        }\n\n        if (transformed) {\n          this.renderCanvas(true, true);\n        }\n      }\n\n      return this;\n    },\n\n    /**\n     * Get the cropped area position and size data (base on the original image)\n     * @param {boolean} [rounded=false] - Indicate if round the data values or not.\n     * @returns {Object} The result cropped data.\n     */\n    getData: function getData() {\n      var rounded = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n      var options = this.options,\n          imageData = this.imageData,\n          canvasData = this.canvasData,\n          cropBoxData = this.cropBoxData;\n      var data;\n\n      if (this.ready && this.cropped) {\n        data = {\n          x: cropBoxData.left - canvasData.left,\n          y: cropBoxData.top - canvasData.top,\n          width: cropBoxData.width,\n          height: cropBoxData.height\n        };\n        var ratio = imageData.width / imageData.naturalWidth;\n        forEach(data, function (n, i) {\n          data[i] = n / ratio;\n        });\n\n        if (rounded) {\n          // In case rounding off leads to extra 1px in right or bottom border\n          // we should round the top-left corner and the dimension (#343).\n          var bottom = Math.round(data.y + data.height);\n          var right = Math.round(data.x + data.width);\n          data.x = Math.round(data.x);\n          data.y = Math.round(data.y);\n          data.width = right - data.x;\n          data.height = bottom - data.y;\n        }\n      } else {\n        data = {\n          x: 0,\n          y: 0,\n          width: 0,\n          height: 0\n        };\n      }\n\n      if (options.rotatable) {\n        data.rotate = imageData.rotate || 0;\n      }\n\n      if (options.scalable) {\n        data.scaleX = imageData.scaleX || 1;\n        data.scaleY = imageData.scaleY || 1;\n      }\n\n      return data;\n    },\n\n    /**\n     * Set the cropped area position and size with new data\n     * @param {Object} data - The new data.\n     * @returns {Cropper} this\n     */\n    setData: function setData(data) {\n      var options = this.options,\n          imageData = this.imageData,\n          canvasData = this.canvasData;\n      var cropBoxData = {};\n\n      if (this.ready && !this.disabled && isPlainObject(data)) {\n        var transformed = false;\n\n        if (options.rotatable) {\n          if (isNumber(data.rotate) && data.rotate !== imageData.rotate) {\n            imageData.rotate = data.rotate;\n            transformed = true;\n          }\n        }\n\n        if (options.scalable) {\n          if (isNumber(data.scaleX) && data.scaleX !== imageData.scaleX) {\n            imageData.scaleX = data.scaleX;\n            transformed = true;\n          }\n\n          if (isNumber(data.scaleY) && data.scaleY !== imageData.scaleY) {\n            imageData.scaleY = data.scaleY;\n            transformed = true;\n          }\n        }\n\n        if (transformed) {\n          this.renderCanvas(true, true);\n        }\n\n        var ratio = imageData.width / imageData.naturalWidth;\n\n        if (isNumber(data.x)) {\n          cropBoxData.left = data.x * ratio + canvasData.left;\n        }\n\n        if (isNumber(data.y)) {\n          cropBoxData.top = data.y * ratio + canvasData.top;\n        }\n\n        if (isNumber(data.width)) {\n          cropBoxData.width = data.width * ratio;\n        }\n\n        if (isNumber(data.height)) {\n          cropBoxData.height = data.height * ratio;\n        }\n\n        this.setCropBoxData(cropBoxData);\n      }\n\n      return this;\n    },\n\n    /**\n     * Get the container size data.\n     * @returns {Object} The result container data.\n     */\n    getContainerData: function getContainerData() {\n      return this.ready ? assign({}, this.containerData) : {};\n    },\n\n    /**\n     * Get the image position and size data.\n     * @returns {Object} The result image data.\n     */\n    getImageData: function getImageData() {\n      return this.sized ? assign({}, this.imageData) : {};\n    },\n\n    /**\n     * Get the canvas position and size data.\n     * @returns {Object} The result canvas data.\n     */\n    getCanvasData: function getCanvasData() {\n      var canvasData = this.canvasData;\n      var data = {};\n\n      if (this.ready) {\n        forEach(['left', 'top', 'width', 'height', 'naturalWidth', 'naturalHeight'], function (n) {\n          data[n] = canvasData[n];\n        });\n      }\n\n      return data;\n    },\n\n    /**\n     * Set the canvas position and size with new data.\n     * @param {Object} data - The new canvas data.\n     * @returns {Cropper} this\n     */\n    setCanvasData: function setCanvasData(data) {\n      var canvasData = this.canvasData;\n      var aspectRatio = canvasData.aspectRatio;\n\n      if (this.ready && !this.disabled && isPlainObject(data)) {\n        if (isNumber(data.left)) {\n          canvasData.left = data.left;\n        }\n\n        if (isNumber(data.top)) {\n          canvasData.top = data.top;\n        }\n\n        if (isNumber(data.width)) {\n          canvasData.width = data.width;\n          canvasData.height = data.width / aspectRatio;\n        } else if (isNumber(data.height)) {\n          canvasData.height = data.height;\n          canvasData.width = data.height * aspectRatio;\n        }\n\n        this.renderCanvas(true);\n      }\n\n      return this;\n    },\n\n    /**\n     * Get the crop box position and size data.\n     * @returns {Object} The result crop box data.\n     */\n    getCropBoxData: function getCropBoxData() {\n      var cropBoxData = this.cropBoxData;\n      var data;\n\n      if (this.ready && this.cropped) {\n        data = {\n          left: cropBoxData.left,\n          top: cropBoxData.top,\n          width: cropBoxData.width,\n          height: cropBoxData.height\n        };\n      }\n\n      return data || {};\n    },\n\n    /**\n     * Set the crop box position and size with new data.\n     * @param {Object} data - The new crop box data.\n     * @returns {Cropper} this\n     */\n    setCropBoxData: function setCropBoxData(data) {\n      var cropBoxData = this.cropBoxData;\n      var aspectRatio = this.options.aspectRatio;\n      var widthChanged;\n      var heightChanged;\n\n      if (this.ready && this.cropped && !this.disabled && isPlainObject(data)) {\n        if (isNumber(data.left)) {\n          cropBoxData.left = data.left;\n        }\n\n        if (isNumber(data.top)) {\n          cropBoxData.top = data.top;\n        }\n\n        if (isNumber(data.width) && data.width !== cropBoxData.width) {\n          widthChanged = true;\n          cropBoxData.width = data.width;\n        }\n\n        if (isNumber(data.height) && data.height !== cropBoxData.height) {\n          heightChanged = true;\n          cropBoxData.height = data.height;\n        }\n\n        if (aspectRatio) {\n          if (widthChanged) {\n            cropBoxData.height = cropBoxData.width / aspectRatio;\n          } else if (heightChanged) {\n            cropBoxData.width = cropBoxData.height * aspectRatio;\n          }\n        }\n\n        this.renderCropBox();\n      }\n\n      return this;\n    },\n\n    /**\n     * Get a canvas drawn the cropped image.\n     * @param {Object} [options={}] - The config options.\n     * @returns {HTMLCanvasElement} - The result canvas.\n     */\n    getCroppedCanvas: function getCroppedCanvas() {\n      var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n      if (!this.ready || !window.HTMLCanvasElement) {\n        return null;\n      }\n\n      var canvasData = this.canvasData;\n      var source = getSourceCanvas(this.image, this.imageData, canvasData, options); // Returns the source canvas if it is not cropped.\n\n      if (!this.cropped) {\n        return source;\n      }\n\n      var _this$getData = this.getData(),\n          initialX = _this$getData.x,\n          initialY = _this$getData.y,\n          initialWidth = _this$getData.width,\n          initialHeight = _this$getData.height;\n\n      var ratio = source.width / Math.floor(canvasData.naturalWidth);\n\n      if (ratio !== 1) {\n        initialX *= ratio;\n        initialY *= ratio;\n        initialWidth *= ratio;\n        initialHeight *= ratio;\n      }\n\n      var aspectRatio = initialWidth / initialHeight;\n      var maxSizes = getAdjustedSizes({\n        aspectRatio: aspectRatio,\n        width: options.maxWidth || Infinity,\n        height: options.maxHeight || Infinity\n      });\n      var minSizes = getAdjustedSizes({\n        aspectRatio: aspectRatio,\n        width: options.minWidth || 0,\n        height: options.minHeight || 0\n      }, 'cover');\n\n      var _getAdjustedSizes = getAdjustedSizes({\n        aspectRatio: aspectRatio,\n        width: options.width || (ratio !== 1 ? source.width : initialWidth),\n        height: options.height || (ratio !== 1 ? source.height : initialHeight)\n      }),\n          width = _getAdjustedSizes.width,\n          height = _getAdjustedSizes.height;\n\n      width = Math.min(maxSizes.width, Math.max(minSizes.width, width));\n      height = Math.min(maxSizes.height, Math.max(minSizes.height, height));\n      var canvas = document.createElement('canvas');\n      var context = canvas.getContext('2d');\n      canvas.width = normalizeDecimalNumber(width);\n      canvas.height = normalizeDecimalNumber(height);\n      context.fillStyle = options.fillColor || 'transparent';\n      context.fillRect(0, 0, width, height);\n      var _options$imageSmoothi = options.imageSmoothingEnabled,\n          imageSmoothingEnabled = _options$imageSmoothi === void 0 ? true : _options$imageSmoothi,\n          imageSmoothingQuality = options.imageSmoothingQuality;\n      context.imageSmoothingEnabled = imageSmoothingEnabled;\n\n      if (imageSmoothingQuality) {\n        context.imageSmoothingQuality = imageSmoothingQuality;\n      } // https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.drawImage\n\n\n      var sourceWidth = source.width;\n      var sourceHeight = source.height; // Source canvas parameters\n\n      var srcX = initialX;\n      var srcY = initialY;\n      var srcWidth;\n      var srcHeight; // Destination canvas parameters\n\n      var dstX;\n      var dstY;\n      var dstWidth;\n      var dstHeight;\n\n      if (srcX <= -initialWidth || srcX > sourceWidth) {\n        srcX = 0;\n        srcWidth = 0;\n        dstX = 0;\n        dstWidth = 0;\n      } else if (srcX <= 0) {\n        dstX = -srcX;\n        srcX = 0;\n        srcWidth = Math.min(sourceWidth, initialWidth + srcX);\n        dstWidth = srcWidth;\n      } else if (srcX <= sourceWidth) {\n        dstX = 0;\n        srcWidth = Math.min(initialWidth, sourceWidth - srcX);\n        dstWidth = srcWidth;\n      }\n\n      if (srcWidth <= 0 || srcY <= -initialHeight || srcY > sourceHeight) {\n        srcY = 0;\n        srcHeight = 0;\n        dstY = 0;\n        dstHeight = 0;\n      } else if (srcY <= 0) {\n        dstY = -srcY;\n        srcY = 0;\n        srcHeight = Math.min(sourceHeight, initialHeight + srcY);\n        dstHeight = srcHeight;\n      } else if (srcY <= sourceHeight) {\n        dstY = 0;\n        srcHeight = Math.min(initialHeight, sourceHeight - srcY);\n        dstHeight = srcHeight;\n      }\n\n      var params = [srcX, srcY, srcWidth, srcHeight]; // Avoid \"IndexSizeError\"\n\n      if (dstWidth > 0 && dstHeight > 0) {\n        var scale = width / initialWidth;\n        params.push(dstX * scale, dstY * scale, dstWidth * scale, dstHeight * scale);\n      } // All the numerical parameters should be integer for `drawImage`\n      // https://github.com/fengyuanchen/cropper/issues/476\n\n\n      context.drawImage.apply(context, [source].concat(_toConsumableArray(params.map(function (param) {\n        return Math.floor(normalizeDecimalNumber(param));\n      }))));\n      return canvas;\n    },\n\n    /**\n     * Change the aspect ratio of the crop box.\n     * @param {number} aspectRatio - The new aspect ratio.\n     * @returns {Cropper} this\n     */\n    setAspectRatio: function setAspectRatio(aspectRatio) {\n      var options = this.options;\n\n      if (!this.disabled && !isUndefined(aspectRatio)) {\n        // 0 -> NaN\n        options.aspectRatio = Math.max(0, aspectRatio) || NaN;\n\n        if (this.ready) {\n          this.initCropBox();\n\n          if (this.cropped) {\n            this.renderCropBox();\n          }\n        }\n      }\n\n      return this;\n    },\n\n    /**\n     * Change the drag mode.\n     * @param {string} mode - The new drag mode.\n     * @returns {Cropper} this\n     */\n    setDragMode: function setDragMode(mode) {\n      var options = this.options,\n          dragBox = this.dragBox,\n          face = this.face;\n\n      if (this.ready && !this.disabled) {\n        var croppable = mode === DRAG_MODE_CROP;\n        var movable = options.movable && mode === DRAG_MODE_MOVE;\n        mode = croppable || movable ? mode : DRAG_MODE_NONE;\n        options.dragMode = mode;\n        setData(dragBox, DATA_ACTION, mode);\n        toggleClass(dragBox, CLASS_CROP, croppable);\n        toggleClass(dragBox, CLASS_MOVE, movable);\n\n        if (!options.cropBoxMovable) {\n          // Sync drag mode to crop box when it is not movable\n          setData(face, DATA_ACTION, mode);\n          toggleClass(face, CLASS_CROP, croppable);\n          toggleClass(face, CLASS_MOVE, movable);\n        }\n      }\n\n      return this;\n    }\n  };\n\n  var AnotherCropper = WINDOW.Cropper;\n\n  var Cropper = /*#__PURE__*/function () {\n    /**\n     * Create a new Cropper.\n     * @param {Element} element - The target element for cropping.\n     * @param {Object} [options={}] - The configuration options.\n     */\n    function Cropper(element) {\n      var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n      _classCallCheck(this, Cropper);\n\n      if (!element || !REGEXP_TAG_NAME.test(element.tagName)) {\n        throw new Error('The first argument is required and must be an <img> or <canvas> element.');\n      }\n\n      this.element = element;\n      this.options = assign({}, DEFAULTS, isPlainObject(options) && options);\n      this.cropped = false;\n      this.disabled = false;\n      this.pointers = {};\n      this.ready = false;\n      this.reloading = false;\n      this.replaced = false;\n      this.sized = false;\n      this.sizing = false;\n      this.init();\n    }\n\n    _createClass(Cropper, [{\n      key: \"init\",\n      value: function init() {\n        var element = this.element;\n        var tagName = element.tagName.toLowerCase();\n        var url;\n\n        if (element[NAMESPACE]) {\n          return;\n        }\n\n        element[NAMESPACE] = this;\n\n        if (tagName === 'img') {\n          this.isImg = true; // e.g.: \"img/picture.jpg\"\n\n          url = element.getAttribute('src') || '';\n          this.originalUrl = url; // Stop when it's a blank image\n\n          if (!url) {\n            return;\n          } // e.g.: \"https://example.com/img/picture.jpg\"\n\n\n          url = element.src;\n        } else if (tagName === 'canvas' && window.HTMLCanvasElement) {\n          url = element.toDataURL();\n        }\n\n        this.load(url);\n      }\n    }, {\n      key: \"load\",\n      value: function load(url) {\n        var _this = this;\n\n        if (!url) {\n          return;\n        }\n\n        this.url = url;\n        this.imageData = {};\n        var element = this.element,\n            options = this.options;\n\n        if (!options.rotatable && !options.scalable) {\n          options.checkOrientation = false;\n        } // Only IE10+ supports Typed Arrays\n\n\n        if (!options.checkOrientation || !window.ArrayBuffer) {\n          this.clone();\n          return;\n        } // Detect the mime type of the image directly if it is a Data URL\n\n\n        if (REGEXP_DATA_URL.test(url)) {\n          // Read ArrayBuffer from Data URL of JPEG images directly for better performance\n          if (REGEXP_DATA_URL_JPEG.test(url)) {\n            this.read(dataURLToArrayBuffer(url));\n          } else {\n            // Only a JPEG image may contains Exif Orientation information,\n            // the rest types of Data URLs are not necessary to check orientation at all.\n            this.clone();\n          }\n\n          return;\n        } // 1. Detect the mime type of the image by a XMLHttpRequest.\n        // 2. Load the image as ArrayBuffer for reading orientation if its a JPEG image.\n\n\n        var xhr = new XMLHttpRequest();\n        var clone = this.clone.bind(this);\n        this.reloading = true;\n        this.xhr = xhr; // 1. Cross origin requests are only supported for protocol schemes:\n        // http, https, data, chrome, chrome-extension.\n        // 2. Access to XMLHttpRequest from a Data URL will be blocked by CORS policy\n        // in some browsers as IE11 and Safari.\n\n        xhr.onabort = clone;\n        xhr.onerror = clone;\n        xhr.ontimeout = clone;\n\n        xhr.onprogress = function () {\n          // Abort the request directly if it not a JPEG image for better performance\n          if (xhr.getResponseHeader('content-type') !== MIME_TYPE_JPEG) {\n            xhr.abort();\n          }\n        };\n\n        xhr.onload = function () {\n          _this.read(xhr.response);\n        };\n\n        xhr.onloadend = function () {\n          _this.reloading = false;\n          _this.xhr = null;\n        }; // Bust cache when there is a \"crossOrigin\" property to avoid browser cache error\n\n\n        if (options.checkCrossOrigin && isCrossOriginURL(url) && element.crossOrigin) {\n          url = addTimestamp(url);\n        }\n\n        xhr.open('GET', url);\n        xhr.responseType = 'arraybuffer';\n        xhr.withCredentials = element.crossOrigin === 'use-credentials';\n        xhr.send();\n      }\n    }, {\n      key: \"read\",\n      value: function read(arrayBuffer) {\n        var options = this.options,\n            imageData = this.imageData; // Reset the orientation value to its default value 1\n        // as some iOS browsers will render image with its orientation\n\n        var orientation = resetAndGetOrientation(arrayBuffer);\n        var rotate = 0;\n        var scaleX = 1;\n        var scaleY = 1;\n\n        if (orientation > 1) {\n          // Generate a new URL which has the default orientation value\n          this.url = arrayBufferToDataURL(arrayBuffer, MIME_TYPE_JPEG);\n\n          var _parseOrientation = parseOrientation(orientation);\n\n          rotate = _parseOrientation.rotate;\n          scaleX = _parseOrientation.scaleX;\n          scaleY = _parseOrientation.scaleY;\n        }\n\n        if (options.rotatable) {\n          imageData.rotate = rotate;\n        }\n\n        if (options.scalable) {\n          imageData.scaleX = scaleX;\n          imageData.scaleY = scaleY;\n        }\n\n        this.clone();\n      }\n    }, {\n      key: \"clone\",\n      value: function clone() {\n        var element = this.element,\n            url = this.url;\n        var crossOrigin = element.crossOrigin;\n        var crossOriginUrl = url;\n\n        if (this.options.checkCrossOrigin && isCrossOriginURL(url)) {\n          if (!crossOrigin) {\n            crossOrigin = 'anonymous';\n          } // Bust cache when there is not a \"crossOrigin\" property (#519)\n\n\n          crossOriginUrl = addTimestamp(url);\n        }\n\n        this.crossOrigin = crossOrigin;\n        this.crossOriginUrl = crossOriginUrl;\n        var image = document.createElement('img');\n\n        if (crossOrigin) {\n          image.crossOrigin = crossOrigin;\n        }\n\n        image.src = crossOriginUrl || url;\n        image.alt = element.alt || 'The image to crop';\n        this.image = image;\n        image.onload = this.start.bind(this);\n        image.onerror = this.stop.bind(this);\n        addClass(image, CLASS_HIDE);\n        element.parentNode.insertBefore(image, element.nextSibling);\n      }\n    }, {\n      key: \"start\",\n      value: function start() {\n        var _this2 = this;\n\n        var image = this.image;\n        image.onload = null;\n        image.onerror = null;\n        this.sizing = true; // Match all browsers that use WebKit as the layout engine in iOS devices,\n        // such as Safari for iOS, Chrome for iOS, and in-app browsers.\n\n        var isIOSWebKit = WINDOW.navigator && /(?:iPad|iPhone|iPod).*?AppleWebKit/i.test(WINDOW.navigator.userAgent);\n\n        var done = function done(naturalWidth, naturalHeight) {\n          assign(_this2.imageData, {\n            naturalWidth: naturalWidth,\n            naturalHeight: naturalHeight,\n            aspectRatio: naturalWidth / naturalHeight\n          });\n          _this2.sizing = false;\n          _this2.sized = true;\n\n          _this2.build();\n        }; // Most modern browsers (excepts iOS WebKit)\n\n\n        if (image.naturalWidth && !isIOSWebKit) {\n          done(image.naturalWidth, image.naturalHeight);\n          return;\n        }\n\n        var sizingImage = document.createElement('img');\n        var body = document.body || document.documentElement;\n        this.sizingImage = sizingImage;\n\n        sizingImage.onload = function () {\n          done(sizingImage.width, sizingImage.height);\n\n          if (!isIOSWebKit) {\n            body.removeChild(sizingImage);\n          }\n        };\n\n        sizingImage.src = image.src; // iOS WebKit will convert the image automatically\n        // with its orientation once append it into DOM (#279)\n\n        if (!isIOSWebKit) {\n          sizingImage.style.cssText = 'left:0;' + 'max-height:none!important;' + 'max-width:none!important;' + 'min-height:0!important;' + 'min-width:0!important;' + 'opacity:0;' + 'position:absolute;' + 'top:0;' + 'z-index:-1;';\n          body.appendChild(sizingImage);\n        }\n      }\n    }, {\n      key: \"stop\",\n      value: function stop() {\n        var image = this.image;\n        image.onload = null;\n        image.onerror = null;\n        image.parentNode.removeChild(image);\n        this.image = null;\n      }\n    }, {\n      key: \"build\",\n      value: function build() {\n        if (!this.sized || this.ready) {\n          return;\n        }\n\n        var element = this.element,\n            options = this.options,\n            image = this.image; // Create cropper elements\n\n        var container = element.parentNode;\n        var template = document.createElement('div');\n        template.innerHTML = TEMPLATE;\n        var cropper = template.querySelector(\".\".concat(NAMESPACE, \"-container\"));\n        var canvas = cropper.querySelector(\".\".concat(NAMESPACE, \"-canvas\"));\n        var dragBox = cropper.querySelector(\".\".concat(NAMESPACE, \"-drag-box\"));\n        var cropBox = cropper.querySelector(\".\".concat(NAMESPACE, \"-crop-box\"));\n        var face = cropBox.querySelector(\".\".concat(NAMESPACE, \"-face\"));\n        this.container = container;\n        this.cropper = cropper;\n        this.canvas = canvas;\n        this.dragBox = dragBox;\n        this.cropBox = cropBox;\n        this.viewBox = cropper.querySelector(\".\".concat(NAMESPACE, \"-view-box\"));\n        this.face = face;\n        canvas.appendChild(image); // Hide the original image\n\n        addClass(element, CLASS_HIDDEN); // Inserts the cropper after to the current image\n\n        container.insertBefore(cropper, element.nextSibling); // Show the image if is hidden\n\n        if (!this.isImg) {\n          removeClass(image, CLASS_HIDE);\n        }\n\n        this.initPreview();\n        this.bind();\n        options.initialAspectRatio = Math.max(0, options.initialAspectRatio) || NaN;\n        options.aspectRatio = Math.max(0, options.aspectRatio) || NaN;\n        options.viewMode = Math.max(0, Math.min(3, Math.round(options.viewMode))) || 0;\n        addClass(cropBox, CLASS_HIDDEN);\n\n        if (!options.guides) {\n          addClass(cropBox.getElementsByClassName(\"\".concat(NAMESPACE, \"-dashed\")), CLASS_HIDDEN);\n        }\n\n        if (!options.center) {\n          addClass(cropBox.getElementsByClassName(\"\".concat(NAMESPACE, \"-center\")), CLASS_HIDDEN);\n        }\n\n        if (options.background) {\n          addClass(cropper, \"\".concat(NAMESPACE, \"-bg\"));\n        }\n\n        if (!options.highlight) {\n          addClass(face, CLASS_INVISIBLE);\n        }\n\n        if (options.cropBoxMovable) {\n          addClass(face, CLASS_MOVE);\n          setData(face, DATA_ACTION, ACTION_ALL);\n        }\n\n        if (!options.cropBoxResizable) {\n          addClass(cropBox.getElementsByClassName(\"\".concat(NAMESPACE, \"-line\")), CLASS_HIDDEN);\n          addClass(cropBox.getElementsByClassName(\"\".concat(NAMESPACE, \"-point\")), CLASS_HIDDEN);\n        }\n\n        this.render();\n        this.ready = true;\n        this.setDragMode(options.dragMode);\n\n        if (options.autoCrop) {\n          this.crop();\n        }\n\n        this.setData(options.data);\n\n        if (isFunction(options.ready)) {\n          addListener(element, EVENT_READY, options.ready, {\n            once: true\n          });\n        }\n\n        dispatchEvent(element, EVENT_READY);\n      }\n    }, {\n      key: \"unbuild\",\n      value: function unbuild() {\n        if (!this.ready) {\n          return;\n        }\n\n        this.ready = false;\n        this.unbind();\n        this.resetPreview();\n        this.cropper.parentNode.removeChild(this.cropper);\n        removeClass(this.element, CLASS_HIDDEN);\n      }\n    }, {\n      key: \"uncreate\",\n      value: function uncreate() {\n        if (this.ready) {\n          this.unbuild();\n          this.ready = false;\n          this.cropped = false;\n        } else if (this.sizing) {\n          this.sizingImage.onload = null;\n          this.sizing = false;\n          this.sized = false;\n        } else if (this.reloading) {\n          this.xhr.onabort = null;\n          this.xhr.abort();\n        } else if (this.image) {\n          this.stop();\n        }\n      }\n      /**\n       * Get the no conflict cropper class.\n       * @returns {Cropper} The cropper class.\n       */\n\n    }], [{\n      key: \"noConflict\",\n      value: function noConflict() {\n        window.Cropper = AnotherCropper;\n        return Cropper;\n      }\n      /**\n       * Change the default options.\n       * @param {Object} options - The new default options.\n       */\n\n    }, {\n      key: \"setDefaults\",\n      value: function setDefaults(options) {\n        assign(DEFAULTS, isPlainObject(options) && options);\n      }\n    }]);\n\n    return Cropper;\n  }();\n\n  assign(Cropper.prototype, render, preview, events, handlers, change, methods);\n\n  return Cropper;\n\n})));\n", "\"use strict\";\n\nvar _preact = require(\"preact\");\n\nconst Cropper = require(\"cropperjs\").default || require(\"cropperjs\");\n\nclass Editor extends _preact.Component {\n  constructor(props) {\n    super(props);\n\n    this.granularRotateOnChange = ev => {\n      const {\n        rotationAngle,\n        rotationDelta\n      } = this.state;\n      const pendingRotationDelta = Number(ev.target.value) - rotationDelta;\n      cancelAnimationFrame(this.granularRotateOnInputNextFrame);\n\n      if (pendingRotationDelta !== 0) {\n        const pendingRotationAngle = rotationAngle + pendingRotationDelta;\n        this.granularRotateOnInputNextFrame = requestAnimationFrame(() => {\n          this.cropper.rotateTo(pendingRotationAngle);\n        });\n      }\n    };\n\n    this.state = {\n      rotationAngle: 0,\n      rotationDelta: 0\n    };\n  }\n\n  componentDidMount() {\n    const {\n      opts,\n      storeCropperInstance\n    } = this.props;\n    this.cropper = new Cropper(this.imgElement, opts.cropperOptions);\n    storeCropperInstance(this.cropper);\n\n    if (opts.actions.granularRotate) {\n      this.imgElement.addEventListener('crop', ev => {\n        const rotationAngle = ev.detail.rotate;\n        this.setState({\n          rotationAngle,\n          // 405 == 360 + 45\n          rotationDelta: (rotationAngle + 405) % 90 - 45\n        });\n      });\n    }\n  }\n\n  componentWillUnmount() {\n    this.cropper.destroy();\n  }\n\n  renderGranularRotate() {\n    const {\n      i18n\n    } = this.props;\n    const {\n      rotationDelta,\n      rotationAngle\n    } = this.state;\n    return (// eslint-disable-next-line jsx-a11y/label-has-associated-control\n      (0, _preact.h)(\"label\", {\n        \"data-microtip-position\": \"top\",\n        role: \"tooltip\",\n        \"aria-label\": `${rotationAngle}\u00BA`,\n        className: \"uppy-ImageCropper-rangeWrapper uppy-u-reset\"\n      }, (0, _preact.h)(\"input\", {\n        className: \"uppy-ImageCropper-range uppy-u-reset\",\n        type: \"range\",\n        onInput: this.granularRotateOnChange,\n        onChange: this.granularRotateOnChange,\n        value: rotationDelta,\n        min: \"-45\",\n        max: \"44\",\n        \"aria-label\": i18n('rotate')\n      }))\n    );\n  }\n\n  renderRevert() {\n    const {\n      i18n\n    } = this.props;\n    return (0, _preact.h)(\"button\", {\n      type: \"button\",\n      className: \"uppy-u-reset uppy-c-btn\",\n      \"aria-label\": i18n('revert'),\n      \"data-microtip-position\": \"top\",\n      onClick: () => {\n        this.cropper.reset();\n        this.cropper.setAspectRatio(0);\n      }\n    }, (0, _preact.h)(\"svg\", {\n      \"aria-hidden\": \"true\",\n      className: \"uppy-c-icon\",\n      width: \"24\",\n      height: \"24\",\n      viewBox: \"0 0 24 24\"\n    }, (0, _preact.h)(\"path\", {\n      d: \"M0 0h24v24H0z\",\n      fill: \"none\"\n    }), (0, _preact.h)(\"path\", {\n      d: \"M13 3c-4.97 0-9 4.03-9 9H1l3.89 3.89.07.14L9 12H6c0-3.87 3.13-7 7-7s7 3.13 7 7-3.13 7-7 7c-1.93 0-3.68-.79-4.94-2.06l-1.42 1.42C8.27 19.99 10.51 21 13 21c4.97 0 9-4.03 9-9s-4.03-9-9-9zm-1 5v5l4.28 2.54.72-1.21-3.5-2.08V8H12z\"\n    })));\n  }\n\n  renderRotate() {\n    const {\n      i18n\n    } = this.props;\n    return (0, _preact.h)(\"button\", {\n      type: \"button\",\n      className: \"uppy-u-reset uppy-c-btn\",\n      onClick: () => this.cropper.rotate(-90),\n      \"aria-label\": i18n('rotate'),\n      \"data-microtip-position\": \"top\"\n    }, (0, _preact.h)(\"svg\", {\n      \"aria-hidden\": \"true\",\n      className: \"uppy-c-icon\",\n      width: \"24\",\n      height: \"24\",\n      viewBox: \"0 0 24 24\"\n    }, (0, _preact.h)(\"path\", {\n      d: \"M0 0h24v24H0V0zm0 0h24v24H0V0z\",\n      fill: \"none\"\n    }), (0, _preact.h)(\"path\", {\n      d: \"M14 10a2 2 0 012 2v7a2 2 0 01-2 2H6a2 2 0 01-2-2v-7a2 2 0 012-2h8zm0 1.75H6a.25.25 0 00-.243.193L5.75 12v7a.25.25 0 00.193.243L6 19.25h8a.25.25 0 00.243-.193L14.25 19v-7a.25.25 0 00-.193-.243L14 11.75zM12 .76V4c2.3 0 4.61.88 6.36 2.64a8.95 8.95 0 012.634 6.025L21 13a1 1 0 01-1.993.117L19 13h-.003a6.979 6.979 0 00-2.047-4.95 6.97 6.97 0 00-4.652-2.044L12 6v3.24L7.76 5 12 .76z\"\n    })));\n  }\n\n  renderFlip() {\n    const {\n      i18n\n    } = this.props;\n    return (0, _preact.h)(\"button\", {\n      type: \"button\",\n      className: \"uppy-u-reset uppy-c-btn\",\n      \"aria-label\": i18n('flipHorizontal'),\n      \"data-microtip-position\": \"top\",\n      onClick: () => this.cropper.scaleX(-this.cropper.getData().scaleX || -1)\n    }, (0, _preact.h)(\"svg\", {\n      \"aria-hidden\": \"true\",\n      className: \"uppy-c-icon\",\n      width: \"24\",\n      height: \"24\",\n      viewBox: \"0 0 24 24\"\n    }, (0, _preact.h)(\"path\", {\n      d: \"M0 0h24v24H0z\",\n      fill: \"none\"\n    }), (0, _preact.h)(\"path\", {\n      d: \"M15 21h2v-2h-2v2zm4-12h2V7h-2v2zM3 5v14c0 1.1.9 2 2 2h4v-2H5V5h4V3H5c-1.1 0-2 .9-2 2zm16-2v2h2c0-1.1-.9-2-2-2zm-8 20h2V1h-2v22zm8-6h2v-2h-2v2zM15 5h2V3h-2v2zm4 8h2v-2h-2v2zm0 8c1.1 0 2-.9 2-2h-2v2z\"\n    })));\n  }\n\n  renderZoomIn() {\n    const {\n      i18n\n    } = this.props;\n    return (0, _preact.h)(\"button\", {\n      type: \"button\",\n      className: \"uppy-u-reset uppy-c-btn\",\n      \"aria-label\": i18n('zoomIn'),\n      \"data-microtip-position\": \"top\",\n      onClick: () => this.cropper.zoom(0.1)\n    }, (0, _preact.h)(\"svg\", {\n      \"aria-hidden\": \"true\",\n      className: \"uppy-c-icon\",\n      height: \"24\",\n      viewBox: \"0 0 24 24\",\n      width: \"24\"\n    }, (0, _preact.h)(\"path\", {\n      d: \"M0 0h24v24H0V0z\",\n      fill: \"none\"\n    }), (0, _preact.h)(\"path\", {\n      d: \"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z\"\n    }), (0, _preact.h)(\"path\", {\n      d: \"M12 10h-2v2H9v-2H7V9h2V7h1v2h2v1z\"\n    })));\n  }\n\n  renderZoomOut() {\n    const {\n      i18n\n    } = this.props;\n    return (0, _preact.h)(\"button\", {\n      type: \"button\",\n      className: \"uppy-u-reset uppy-c-btn\",\n      \"aria-label\": i18n('zoomOut'),\n      \"data-microtip-position\": \"top\",\n      onClick: () => this.cropper.zoom(-0.1)\n    }, (0, _preact.h)(\"svg\", {\n      \"aria-hidden\": \"true\",\n      className: \"uppy-c-icon\",\n      width: \"24\",\n      height: \"24\",\n      viewBox: \"0 0 24 24\"\n    }, (0, _preact.h)(\"path\", {\n      d: \"M0 0h24v24H0V0z\",\n      fill: \"none\"\n    }), (0, _preact.h)(\"path\", {\n      d: \"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14zM7 9h5v1H7z\"\n    })));\n  }\n\n  renderCropSquare() {\n    const {\n      i18n\n    } = this.props;\n    return (0, _preact.h)(\"button\", {\n      type: \"button\",\n      className: \"uppy-u-reset uppy-c-btn\",\n      \"aria-label\": i18n('aspectRatioSquare'),\n      \"data-microtip-position\": \"top\",\n      onClick: () => this.cropper.setAspectRatio(1)\n    }, (0, _preact.h)(\"svg\", {\n      \"aria-hidden\": \"true\",\n      className: \"uppy-c-icon\",\n      width: \"24\",\n      height: \"24\",\n      viewBox: \"0 0 24 24\"\n    }, (0, _preact.h)(\"path\", {\n      d: \"M0 0h24v24H0z\",\n      fill: \"none\"\n    }), (0, _preact.h)(\"path\", {\n      d: \"M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z\"\n    })));\n  }\n\n  renderCropWidescreen() {\n    const {\n      i18n\n    } = this.props;\n    return (0, _preact.h)(\"button\", {\n      type: \"button\",\n      className: \"uppy-u-reset uppy-c-btn\",\n      \"aria-label\": i18n('aspectRatioLandscape'),\n      \"data-microtip-position\": \"top\",\n      onClick: () => this.cropper.setAspectRatio(16 / 9)\n    }, (0, _preact.h)(\"svg\", {\n      \"aria-hidden\": \"true\",\n      className: \"uppy-c-icon\",\n      width: \"24\",\n      height: \"24\",\n      viewBox: \"0 0 24 24\"\n    }, (0, _preact.h)(\"path\", {\n      d: \"M 19,4.9999992 V 17.000001 H 4.9999998 V 6.9999992 H 19 m 0,-2 H 4.9999998 c -1.0999999,0 -1.9999999,0.9000001 -1.9999999,2 V 17.000001 c 0,1.1 0.9,2 1.9999999,2 H 19 c 1.1,0 2,-0.9 2,-2 V 6.9999992 c 0,-1.0999999 -0.9,-2 -2,-2 z\"\n    }), (0, _preact.h)(\"path\", {\n      fill: \"none\",\n      d: \"M0 0h24v24H0z\"\n    })));\n  }\n\n  renderCropWidescreenVertical() {\n    const {\n      i18n\n    } = this.props;\n    return (0, _preact.h)(\"button\", {\n      type: \"button\",\n      className: \"uppy-u-reset uppy-c-btn\",\n      \"aria-label\": i18n('aspectRatioPortrait'),\n      \"data-microtip-position\": \"top\",\n      onClick: () => this.cropper.setAspectRatio(9 / 16)\n    }, (0, _preact.h)(\"svg\", {\n      \"aria-hidden\": \"true\",\n      className: \"uppy-c-icon\",\n      width: \"24\",\n      height: \"24\",\n      viewBox: \"0 0 24 24\"\n    }, (0, _preact.h)(\"path\", {\n      d: \"M 19.000001,19 H 6.999999 V 5 h 10.000002 v 14 m 2,0 V 5 c 0,-1.0999999 -0.9,-1.9999999 -2,-1.9999999 H 6.999999 c -1.1,0 -2,0.9 -2,1.9999999 v 14 c 0,1.1 0.9,2 2,2 h 10.000002 c 1.1,0 2,-0.9 2,-2 z\"\n    }), (0, _preact.h)(\"path\", {\n      d: \"M0 0h24v24H0z\",\n      fill: \"none\"\n    })));\n  }\n\n  render() {\n    const {\n      currentImage,\n      opts\n    } = this.props;\n    const {\n      actions\n    } = opts;\n    const imageURL = URL.createObjectURL(currentImage.data);\n    return (0, _preact.h)(\"div\", {\n      className: \"uppy-ImageCropper\"\n    }, (0, _preact.h)(\"div\", {\n      className: \"uppy-ImageCropper-container\"\n    }, (0, _preact.h)(\"img\", {\n      className: \"uppy-ImageCropper-image\",\n      alt: currentImage.name,\n      src: imageURL,\n      ref: ref => {\n        this.imgElement = ref;\n      }\n    })), (0, _preact.h)(\"div\", {\n      className: \"uppy-ImageCropper-controls\"\n    }, actions.revert && this.renderRevert(), actions.rotate && this.renderRotate(), actions.granularRotate && this.renderGranularRotate(), actions.flip && this.renderFlip(), actions.zoomIn && this.renderZoomIn(), actions.zoomOut && this.renderZoomOut(), actions.cropSquare && this.renderCropSquare(), actions.cropWidescreen && this.renderCropWidescreen(), actions.cropWidescreenVertical && this.renderCropWidescreenVertical()));\n  }\n\n}\n\nmodule.exports = Editor;", "\"use strict\";\n\nmodule.exports = {\n  strings: {\n    revert: 'Revert',\n    rotate: 'Rotate',\n    zoomIn: 'Zoom in',\n    zoomOut: 'Zoom out',\n    flipHorizontal: 'Flip horizontal',\n    aspectRatioSquare: 'Crop square',\n    aspectRatioLandscape: 'Crop landscape (16:9)',\n    aspectRatioPortrait: 'Crop portrait (9:16)'\n  }\n};", "\"use strict\";\n\nvar _core = require(\"@uppy/core\");\n\nvar _preact = require(\"preact\");\n\nconst Editor = require(\"./Editor.js\");\n\nconst packageJson = {\n  \"version\": \"1.4.2\"\n};\n\nconst locale = require(\"./locale.js\");\n\nclass ImageEditor extends _core.UIPlugin {\n  constructor(uppy, opts) {\n    super(uppy, opts);\n\n    this.save = () => {\n      const saveBlobCallback = blob => {\n        const {\n          currentImage\n        } = this.getPluginState();\n        this.uppy.setFileState(currentImage.id, {\n          data: blob,\n          size: blob.size,\n          preview: null\n        });\n        const updatedFile = this.uppy.getFile(currentImage.id);\n        this.uppy.emit('thumbnail:request', updatedFile);\n        this.setPluginState({\n          currentImage: updatedFile\n        });\n        this.uppy.emit('file-editor:complete', updatedFile);\n      };\n\n      const {\n        currentImage\n      } = this.getPluginState();\n      this.cropper.getCroppedCanvas(this.opts.cropperOptions.croppedCanvasOptions).toBlob(saveBlobCallback, currentImage.type, this.opts.quality);\n    };\n\n    this.storeCropperInstance = cropper => {\n      this.cropper = cropper;\n    };\n\n    this.selectFile = file => {\n      this.uppy.emit('file-editor:start', file);\n      this.setPluginState({\n        currentImage: file\n      });\n    };\n\n    this.id = this.opts.id || 'ImageEditor';\n    this.title = 'Image Editor';\n    this.type = 'editor';\n    this.defaultLocale = locale;\n    const defaultCropperOptions = {\n      viewMode: 1,\n      background: false,\n      autoCropArea: 1,\n      responsive: true,\n      croppedCanvasOptions: {}\n    };\n    const defaultActions = {\n      revert: true,\n      rotate: true,\n      granularRotate: true,\n      flip: true,\n      zoomIn: true,\n      zoomOut: true,\n      cropSquare: true,\n      cropWidescreen: true,\n      cropWidescreenVertical: true\n    };\n    const defaultOptions = {\n      quality: 0.8\n    };\n    this.opts = { ...defaultOptions,\n      ...opts,\n      actions: { ...defaultActions,\n        ...opts.actions\n      },\n      cropperOptions: { ...defaultCropperOptions,\n        ...opts.cropperOptions\n      }\n    };\n    this.i18nInit();\n  } // eslint-disable-next-line class-methods-use-this\n\n\n  canEditFile(file) {\n    if (!file.type || file.isRemote) {\n      return false;\n    }\n\n    const fileTypeSpecific = file.type.split('/')[1];\n\n    if (/^(jpe?g|gif|png|bmp|webp)$/.test(fileTypeSpecific)) {\n      return true;\n    }\n\n    return false;\n  }\n\n  install() {\n    this.setPluginState({\n      currentImage: null\n    });\n    const {\n      target\n    } = this.opts;\n\n    if (target) {\n      this.mount(target, this);\n    }\n  }\n\n  uninstall() {\n    const {\n      currentImage\n    } = this.getPluginState();\n\n    if (currentImage) {\n      const file = this.uppy.getFile(currentImage.id);\n      this.uppy.emit('file-editor:cancel', file);\n    }\n\n    this.unmount();\n  }\n\n  render() {\n    const {\n      currentImage\n    } = this.getPluginState();\n\n    if (currentImage === null || currentImage.isRemote) {\n      return null;\n    }\n\n    return (0, _preact.h)(Editor, {\n      currentImage: currentImage,\n      storeCropperInstance: this.storeCropperInstance,\n      save: this.save,\n      opts: this.opts,\n      i18n: this.i18n\n    });\n  }\n\n}\n\nImageEditor.VERSION = packageJson.version;\nmodule.exports = ImageEditor;", "\"use strict\";\n\nmodule.exports = require(\"./ImageEditor.js\");", "(function (global, factory) {\n    typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n    typeof define === 'function' && define.amd ? define(['exports'], factory) :\n    (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.ZXing = {}));\n}(this, (function (exports) { 'use strict';\n\n    function isNullOrUndefined(obj) {\n        return obj === null || obj === undefined;\n    }\n\n    /*\n     * Copyright 2008 ZXing authors\n     *\n     * Licensed under the Apache License, Version 2.0 (the \"License\");\n     * you may not use this file except in compliance with the License.\n     * You may obtain a copy of the License at\n     *\n     *      http://www.apache.org/licenses/LICENSE-2.0\n     *\n     * Unless required by applicable law or agreed to in writing, software\n     * distributed under the License is distributed on an \"AS IS\" BASIS,\n     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n     * See the License for the specific language governing permissions and\n     * limitations under the License.\n     */\n    /* global Reflect, Promise */\n\n    var extendStatics = Object.setPrototypeOf ||\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n\n    function __extends(d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    }\n\n    function fixProto(target, prototype) {\n        var setPrototypeOf = Object.setPrototypeOf;\n        setPrototypeOf ? setPrototypeOf(target, prototype) : (target.__proto__ = prototype);\n    }\n\n    function fixStack(target, fn) {\n        if (fn === void 0) {\n            fn = target.constructor;\n        }\n        var captureStackTrace = Error.captureStackTrace;\n        captureStackTrace && captureStackTrace(target, fn);\n    }\n\n    var CustomError = (function (_super) {\n        __extends(CustomError, _super);\n        function CustomError(message) {\n            var _newTarget = this.constructor;\n            var _this = _super.call(this, message) || this;\n            Object.defineProperty(_this, 'name', {\n                value: _newTarget.name,\n                enumerable: false\n            });\n            fixProto(_this, _newTarget.prototype);\n            fixStack(_this);\n            return _this;\n        }\n        \n        return CustomError;\n    })(Error);\n\n    /**\n     * Custom Error class of type Exception.\n     */\n    class Exception extends CustomError {\n        /**\n         * Allows Exception to be constructed directly\n         * with some message and prototype definition.\n         */\n        constructor(message = undefined) {\n            super(message);\n            this.message = message;\n        }\n        getKind() {\n            const ex = this.constructor;\n            return ex.kind;\n        }\n    }\n    /**\n     * It's typed as string so it can be extended and overriden.\n     */\n    Exception.kind = 'Exception';\n\n    /**\n     * Custom Error class of type Exception.\n     */\n    class ArgumentException extends Exception {\n    }\n    ArgumentException.kind = 'ArgumentException';\n\n    /**\n     * Custom Error class of type Exception.\n     */\n    class IllegalArgumentException extends Exception {\n    }\n    IllegalArgumentException.kind = 'IllegalArgumentException';\n\n    /*\n     * Copyright 2009 ZXing authors\n     *\n     * Licensed under the Apache License, Version 2.0 (the \"License\");\n     * you may not use this file except in compliance with the License.\n     * You may obtain a copy of the License at\n     *\n     *      http://www.apache.org/licenses/LICENSE-2.0\n     *\n     * Unless required by applicable law or agreed to in writing, software\n     * distributed under the License is distributed on an \"AS IS\" BASIS,\n     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n     * See the License for the specific language governing permissions and\n     * limitations under the License.\n     */\n    class BinaryBitmap {\n        constructor(binarizer) {\n            this.binarizer = binarizer;\n            if (binarizer === null) {\n                throw new IllegalArgumentException('Binarizer must be non-null.');\n            }\n        }\n        /**\n         * @return The width of the bitmap.\n         */\n        getWidth() {\n            return this.binarizer.getWidth();\n        }\n        /**\n         * @return The height of the bitmap.\n         */\n        getHeight() {\n            return this.binarizer.getHeight();\n        }\n        /**\n         * Converts one row of luminance data to 1 bit data. May actually do the conversion, or return\n         * cached data. Callers should assume this method is expensive and call it as seldom as possible.\n         * This method is intended for decoding 1D barcodes and may choose to apply sharpening.\n         *\n         * @param y The row to fetch, which must be in [0, bitmap height)\n         * @param row An optional preallocated array. If null or too small, it will be ignored.\n         *            If used, the Binarizer will call BitArray.clear(). Always use the returned object.\n         * @return The array of bits for this row (true means black).\n         * @throws NotFoundException if row can't be binarized\n         */\n        getBlackRow(y /*int*/, row) {\n            return this.binarizer.getBlackRow(y, row);\n        }\n        /**\n         * Converts a 2D array of luminance data to 1 bit. As above, assume this method is expensive\n         * and do not call it repeatedly. This method is intended for decoding 2D barcodes and may or\n         * may not apply sharpening. Therefore, a row from this matrix may not be identical to one\n         * fetched using getBlackRow(), so don't mix and match between them.\n         *\n         * @return The 2D array of bits for the image (true means black).\n         * @throws NotFoundException if image can't be binarized to make a matrix\n         */\n        getBlackMatrix() {\n            // The matrix is created on demand the first time it is requested, then cached. There are two\n            // reasons for this:\n            // 1. This work will never be done if the caller only installs 1D Reader objects, or if a\n            //    1D Reader finds a barcode before the 2D Readers run.\n            // 2. This work will only be done once even if the caller installs multiple 2D Readers.\n            if (this.matrix === null || this.matrix === undefined) {\n                this.matrix = this.binarizer.getBlackMatrix();\n            }\n            return this.matrix;\n        }\n        /**\n         * @return Whether this bitmap can be cropped.\n         */\n        isCropSupported() {\n            return this.binarizer.getLuminanceSource().isCropSupported();\n        }\n        /**\n         * Returns a new object with cropped image data. Implementations may keep a reference to the\n         * original data rather than a copy. Only callable if isCropSupported() is true.\n         *\n         * @param left The left coordinate, which must be in [0,getWidth())\n         * @param top The top coordinate, which must be in [0,getHeight())\n         * @param width The width of the rectangle to crop.\n         * @param height The height of the rectangle to crop.\n         * @return A cropped version of this object.\n         */\n        crop(left /*int*/, top /*int*/, width /*int*/, height /*int*/) {\n            const newSource = this.binarizer.getLuminanceSource().crop(left, top, width, height);\n            return new BinaryBitmap(this.binarizer.createBinarizer(newSource));\n        }\n        /**\n         * @return Whether this bitmap supports counter-clockwise rotation.\n         */\n        isRotateSupported() {\n            return this.binarizer.getLuminanceSource().isRotateSupported();\n        }\n        /**\n         * Returns a new object with rotated image data by 90 degrees counterclockwise.\n         * Only callable if {@link #isRotateSupported()} is true.\n         *\n         * @return A rotated version of this object.\n         */\n        rotateCounterClockwise() {\n            const newSource = this.binarizer.getLuminanceSource().rotateCounterClockwise();\n            return new BinaryBitmap(this.binarizer.createBinarizer(newSource));\n        }\n        /**\n         * Returns a new object with rotated image data by 45 degrees counterclockwise.\n         * Only callable if {@link #isRotateSupported()} is true.\n         *\n         * @return A rotated version of this object.\n         */\n        rotateCounterClockwise45() {\n            const newSource = this.binarizer.getLuminanceSource().rotateCounterClockwise45();\n            return new BinaryBitmap(this.binarizer.createBinarizer(newSource));\n        }\n        /*@Override*/\n        toString() {\n            try {\n                return this.getBlackMatrix().toString();\n            }\n            catch (e /*: NotFoundException*/) {\n                return '';\n            }\n        }\n    }\n\n    /**\n     * Custom Error class of type Exception.\n     */\n    class ChecksumException extends Exception {\n        static getChecksumInstance() {\n            return new ChecksumException();\n        }\n    }\n    ChecksumException.kind = 'ChecksumException';\n\n    /*\n     * Copyright 2009 ZXing authors\n     *\n     * Licensed under the Apache License, Version 2.0 (the \"License\");\n     * you may not use this file except in compliance with the License.\n     * You may obtain a copy of the License at\n     *\n     *      http://www.apache.org/licenses/LICENSE-2.0\n     *\n     * Unless required by applicable law or agreed to in writing, software\n     * distributed under the License is distributed on an \"AS IS\" BASIS,\n     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n     * See the License for the specific language governing permissions and\n     * limitations under the License.\n     */\n    /**\n     * This class hierarchy provides a set of methods to convert luminance data to 1 bit data.\n     * It allows the algorithm to vary polymorphically, for example allowing a very expensive\n     * thresholding technique for servers and a fast one for mobile. It also permits the implementation\n     * to vary, e.g. a JNI version for Android and a Java fallback version for other platforms.\n     *\n     * @author dswitkin@google.com (Daniel Switkin)\n     */\n    class Binarizer {\n        constructor(source) {\n            this.source = source;\n        }\n        getLuminanceSource() {\n            return this.source;\n        }\n        getWidth() {\n            return this.source.getWidth();\n        }\n        getHeight() {\n            return this.source.getHeight();\n        }\n    }\n\n    class System {\n        // public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)\n        /**\n         * Makes a copy of a array.\n         */\n        static arraycopy(src, srcPos, dest, destPos, length) {\n            // TODO: better use split or set?\n            while (length--) {\n                dest[destPos++] = src[srcPos++];\n            }\n        }\n        /**\n         * Returns the current time in milliseconds.\n         */\n        static currentTimeMillis() {\n            return Date.now();\n        }\n    }\n\n    /**\n     * Custom Error class of type Exception.\n     */\n    class IndexOutOfBoundsException extends Exception {\n    }\n    IndexOutOfBoundsException.kind = 'IndexOutOfBoundsException';\n\n    /**\n     * Custom Error class of type Exception.\n     */\n    class ArrayIndexOutOfBoundsException extends IndexOutOfBoundsException {\n        constructor(index = undefined, message = undefined) {\n            super(message);\n            this.index = index;\n            this.message = message;\n        }\n    }\n    ArrayIndexOutOfBoundsException.kind = 'ArrayIndexOutOfBoundsException';\n\n    class Arrays {\n        /**\n         * Assigns the specified int value to each element of the specified array\n         * of ints.\n         *\n         * @param a the array to be filled\n         * @param val the value to be stored in all elements of the array\n         */\n        static fill(a, val) {\n            for (let i = 0, len = a.length; i < len; i++)\n                a[i] = val;\n        }\n        /**\n         * Assigns the specified int value to each element of the specified\n         * range of the specified array of ints.  The range to be filled\n         * extends from index {@code fromIndex}, inclusive, to index\n         * {@code toIndex}, exclusive.  (If {@code fromIndex==toIndex}, the\n         * range to be filled is empty.)\n         *\n         * @param a the array to be filled\n         * @param fromIndex the index of the first element (inclusive) to be\n         *        filled with the specified value\n         * @param toIndex the index of the last element (exclusive) to be\n         *        filled with the specified value\n         * @param val the value to be stored in all elements of the array\n         * @throws IllegalArgumentException if {@code fromIndex > toIndex}\n         * @throws ArrayIndexOutOfBoundsException if {@code fromIndex < 0} or\n         *         {@code toIndex > a.length}\n         */\n        static fillWithin(a, fromIndex, toIndex, val) {\n            Arrays.rangeCheck(a.length, fromIndex, toIndex);\n            for (let i = fromIndex; i < toIndex; i++)\n                a[i] = val;\n        }\n        /**\n         * Checks that {@code fromIndex} and {@code toIndex} are in\n         * the range and throws an exception if they aren't.\n         */\n        static rangeCheck(arrayLength, fromIndex, toIndex) {\n            if (fromIndex > toIndex) {\n                throw new IllegalArgumentException('fromIndex(' + fromIndex + ') > toIndex(' + toIndex + ')');\n            }\n            if (fromIndex < 0) {\n                throw new ArrayIndexOutOfBoundsException(fromIndex);\n            }\n            if (toIndex > arrayLength) {\n                throw new ArrayIndexOutOfBoundsException(toIndex);\n            }\n        }\n        static asList(...args) {\n            return args;\n        }\n        static create(rows, cols, value) {\n            let arr = Array.from({ length: rows });\n            return arr.map(x => Array.from({ length: cols }).fill(value));\n        }\n        static createInt32Array(rows, cols, value) {\n            let arr = Array.from({ length: rows });\n            return arr.map(x => Int32Array.from({ length: cols }).fill(value));\n        }\n        static equals(first, second) {\n            if (!first) {\n                return false;\n            }\n            if (!second) {\n                return false;\n            }\n            if (!first.length) {\n                return false;\n            }\n            if (!second.length) {\n                return false;\n            }\n            if (first.length !== second.length) {\n                return false;\n            }\n            for (let i = 0, length = first.length; i < length; i++) {\n                if (first[i] !== second[i]) {\n                    return false;\n                }\n            }\n            return true;\n        }\n        static hashCode(a) {\n            if (a === null) {\n                return 0;\n            }\n            let result = 1;\n            for (const element of a) {\n                result = 31 * result + element;\n            }\n            return result;\n        }\n        static fillUint8Array(a, value) {\n            for (let i = 0; i !== a.length; i++) {\n                a[i] = value;\n            }\n        }\n        static copyOf(original, newLength) {\n            return original.slice(0, newLength);\n        }\n        static copyOfUint8Array(original, newLength) {\n            if (original.length <= newLength) {\n                const newArray = new Uint8Array(newLength);\n                newArray.set(original);\n                return newArray;\n            }\n            return original.slice(0, newLength);\n        }\n        static copyOfRange(original, from, to) {\n            const newLength = to - from;\n            const copy = new Int32Array(newLength);\n            System.arraycopy(original, from, copy, 0, newLength);\n            return copy;\n        }\n        /*\n        * Returns the index of of the element in a sorted array or (-n-1) where n is the insertion point\n        * for the new element.\n        * Parameters:\n        *     ar - A sorted array\n        *     el - An element to search for\n        *     comparator - A comparator function. The function takes two arguments: (a, b) and returns:\n        *        a negative number  if a is less than b;\n        *        0 if a is equal to b;\n        *        a positive number of a is greater than b.\n        * The array may contain duplicate elements. If there are more than one equal elements in the array,\n        * the returned value can be the index of any one of the equal elements.\n        *\n        * http://jsfiddle.net/aryzhov/pkfst550/\n        */\n        static binarySearch(ar, el, comparator) {\n            if (undefined === comparator) {\n                comparator = Arrays.numberComparator;\n            }\n            let m = 0;\n            let n = ar.length - 1;\n            while (m <= n) {\n                const k = (n + m) >> 1;\n                const cmp = comparator(el, ar[k]);\n                if (cmp > 0) {\n                    m = k + 1;\n                }\n                else if (cmp < 0) {\n                    n = k - 1;\n                }\n                else {\n                    return k;\n                }\n            }\n            return -m - 1;\n        }\n        static numberComparator(a, b) {\n            return a - b;\n        }\n    }\n\n    /**\n     * Ponyfill for Java's Integer class.\n     */\n    class Integer {\n        static numberOfTrailingZeros(i) {\n            let y;\n            if (i === 0)\n                return 32;\n            let n = 31;\n            y = i << 16;\n            if (y !== 0) {\n                n -= 16;\n                i = y;\n            }\n            y = i << 8;\n            if (y !== 0) {\n                n -= 8;\n                i = y;\n            }\n            y = i << 4;\n            if (y !== 0) {\n                n -= 4;\n                i = y;\n            }\n            y = i << 2;\n            if (y !== 0) {\n                n -= 2;\n                i = y;\n            }\n            return n - ((i << 1) >>> 31);\n        }\n        static numberOfLeadingZeros(i) {\n            // HD, Figure 5-6\n            if (i === 0) {\n                return 32;\n            }\n            let n = 1;\n            if (i >>> 16 === 0) {\n                n += 16;\n                i <<= 16;\n            }\n            if (i >>> 24 === 0) {\n                n += 8;\n                i <<= 8;\n            }\n            if (i >>> 28 === 0) {\n                n += 4;\n                i <<= 4;\n            }\n            if (i >>> 30 === 0) {\n                n += 2;\n                i <<= 2;\n            }\n            n -= i >>> 31;\n            return n;\n        }\n        static toHexString(i) {\n            return i.toString(16);\n        }\n        static toBinaryString(intNumber) {\n            return String(parseInt(String(intNumber), 2));\n        }\n        // Returns the number of one-bits in the two's complement binary representation of the specified int value. This function is sometimes referred to as the population count.\n        // Returns:\n        // the number of one-bits in the two's complement binary representation of the specified int value.\n        static bitCount(i) {\n            // HD, Figure 5-2\n            i = i - ((i >>> 1) & 0x55555555);\n            i = (i & 0x33333333) + ((i >>> 2) & 0x33333333);\n            i = (i + (i >>> 4)) & 0x0f0f0f0f;\n            i = i + (i >>> 8);\n            i = i + (i >>> 16);\n            return i & 0x3f;\n        }\n        static truncDivision(dividend, divisor) {\n            return Math.trunc(dividend / divisor);\n        }\n        /**\n         * Converts A string to an integer.\n         * @param s A string to convert into a number.\n         * @param radix A value between 2 and 36 that specifies the base of the number in numString. If this argument is not supplied, strings with a prefix of '0x' are considered hexadecimal. All other strings are considered decimal.\n         */\n        static parseInt(num, radix = undefined) {\n            return parseInt(num, radix);\n        }\n    }\n    Integer.MIN_VALUE_32_BITS = -2147483648;\n    Integer.MAX_VALUE = Number.MAX_SAFE_INTEGER;\n\n    /**\n     * <p>A simple, fast array of bits, represented compactly by an array of ints internally.</p>\n     *\n     * @author Sean Owen\n     */\n    class BitArray /*implements Cloneable*/ {\n        // For testing only\n        constructor(size /*int*/, bits) {\n            if (undefined === size) {\n                this.size = 0;\n                this.bits = new Int32Array(1);\n            }\n            else {\n                this.size = size;\n                if (undefined === bits || null === bits) {\n                    this.bits = BitArray.makeArray(size);\n                }\n                else {\n                    this.bits = bits;\n                }\n            }\n        }\n        getSize() {\n            return this.size;\n        }\n        getSizeInBytes() {\n            return Math.floor((this.size + 7) / 8);\n        }\n        ensureCapacity(size /*int*/) {\n            if (size > this.bits.length * 32) {\n                const newBits = BitArray.makeArray(size);\n                System.arraycopy(this.bits, 0, newBits, 0, this.bits.length);\n                this.bits = newBits;\n            }\n        }\n        /**\n         * @param i bit to get\n         * @return true iff bit i is set\n         */\n        get(i /*int*/) {\n            return (this.bits[Math.floor(i / 32)] & (1 << (i & 0x1F))) !== 0;\n        }\n        /**\n         * Sets bit i.\n         *\n         * @param i bit to set\n         */\n        set(i /*int*/) {\n            this.bits[Math.floor(i / 32)] |= 1 << (i & 0x1F);\n        }\n        /**\n         * Flips bit i.\n         *\n         * @param i bit to set\n         */\n        flip(i /*int*/) {\n            this.bits[Math.floor(i / 32)] ^= 1 << (i & 0x1F);\n        }\n        /**\n         * @param from first bit to check\n         * @return index of first bit that is set, starting from the given index, or size if none are set\n         *  at or beyond this given index\n         * @see #getNextUnset(int)\n         */\n        getNextSet(from /*int*/) {\n            const size = this.size;\n            if (from >= size) {\n                return size;\n            }\n            const bits = this.bits;\n            let bitsOffset = Math.floor(from / 32);\n            let currentBits = bits[bitsOffset];\n            // mask off lesser bits first\n            currentBits &= ~((1 << (from & 0x1F)) - 1);\n            const length = bits.length;\n            while (currentBits === 0) {\n                if (++bitsOffset === length) {\n                    return size;\n                }\n                currentBits = bits[bitsOffset];\n            }\n            const result = (bitsOffset * 32) + Integer.numberOfTrailingZeros(currentBits);\n            return result > size ? size : result;\n        }\n        /**\n         * @param from index to start looking for unset bit\n         * @return index of next unset bit, or {@code size} if none are unset until the end\n         * @see #getNextSet(int)\n         */\n        getNextUnset(from /*int*/) {\n            const size = this.size;\n            if (from >= size) {\n                return size;\n            }\n            const bits = this.bits;\n            let bitsOffset = Math.floor(from / 32);\n            let currentBits = ~bits[bitsOffset];\n            // mask off lesser bits first\n            currentBits &= ~((1 << (from & 0x1F)) - 1);\n            const length = bits.length;\n            while (currentBits === 0) {\n                if (++bitsOffset === length) {\n                    return size;\n                }\n                currentBits = ~bits[bitsOffset];\n            }\n            const result = (bitsOffset * 32) + Integer.numberOfTrailingZeros(currentBits);\n            return result > size ? size : result;\n        }\n        /**\n         * Sets a block of 32 bits, starting at bit i.\n         *\n         * @param i first bit to set\n         * @param newBits the new value of the next 32 bits. Note again that the least-significant bit\n         * corresponds to bit i, the next-least-significant to i+1, and so on.\n         */\n        setBulk(i /*int*/, newBits /*int*/) {\n            this.bits[Math.floor(i / 32)] = newBits;\n        }\n        /**\n         * Sets a range of bits.\n         *\n         * @param start start of range, inclusive.\n         * @param end end of range, exclusive\n         */\n        setRange(start /*int*/, end /*int*/) {\n            if (end < start || start < 0 || end > this.size) {\n                throw new IllegalArgumentException();\n            }\n            if (end === start) {\n                return;\n            }\n            end--; // will be easier to treat this as the last actually set bit -- inclusive\n            const firstInt = Math.floor(start / 32);\n            const lastInt = Math.floor(end / 32);\n            const bits = this.bits;\n            for (let i = firstInt; i <= lastInt; i++) {\n                const firstBit = i > firstInt ? 0 : start & 0x1F;\n                const lastBit = i < lastInt ? 31 : end & 0x1F;\n                // Ones from firstBit to lastBit, inclusive\n                const mask = (2 << lastBit) - (1 << firstBit);\n                bits[i] |= mask;\n            }\n        }\n        /**\n         * Clears all bits (sets to false).\n         */\n        clear() {\n            const max = this.bits.length;\n            const bits = this.bits;\n            for (let i = 0; i < max; i++) {\n                bits[i] = 0;\n            }\n        }\n        /**\n         * Efficient method to check if a range of bits is set, or not set.\n         *\n         * @param start start of range, inclusive.\n         * @param end end of range, exclusive\n         * @param value if true, checks that bits in range are set, otherwise checks that they are not set\n         * \n         * @return true iff all bits are set or not set in range, according to value argument\n         * @throws IllegalArgumentException if end is less than start or the range is not contained in the array\n         */\n        isRange(start /*int*/, end /*int*/, value) {\n            if (end < start || start < 0 || end > this.size) {\n                throw new IllegalArgumentException();\n            }\n            if (end === start) {\n                return true; // empty range matches\n            }\n            end--; // will be easier to treat this as the last actually set bit -- inclusive\n            const firstInt = Math.floor(start / 32);\n            const lastInt = Math.floor(end / 32);\n            const bits = this.bits;\n            for (let i = firstInt; i <= lastInt; i++) {\n                const firstBit = i > firstInt ? 0 : start & 0x1F;\n                const lastBit = i < lastInt ? 31 : end & 0x1F;\n                // Ones from firstBit to lastBit, inclusive\n                const mask = (2 << lastBit) - (1 << firstBit) & 0xFFFFFFFF;\n                // TYPESCRIPTPORT: & 0xFFFFFFFF added to discard anything after 32 bits, as ES has 53 bits\n                // Return false if we're looking for 1s and the masked bits[i] isn't all 1s (is: that,\n                // equals the mask, or we're looking for 0s and the masked portion is not all 0s\n                if ((bits[i] & mask) !== (value ? mask : 0)) {\n                    return false;\n                }\n            }\n            return true;\n        }\n        appendBit(bit) {\n            this.ensureCapacity(this.size + 1);\n            if (bit) {\n                this.bits[Math.floor(this.size / 32)] |= 1 << (this.size & 0x1F);\n            }\n            this.size++;\n        }\n        /**\n         * Appends the least-significant bits, from value, in order from most-significant to\n         * least-significant. For example, appending 6 bits from 0x000001E will append the bits\n         * 0, 1, 1, 1, 1, 0 in that order.\n         *\n         * @param value {@code int} containing bits to append\n         * @param numBits bits from value to append\n         */\n        appendBits(value /*int*/, numBits /*int*/) {\n            if (numBits < 0 || numBits > 32) {\n                throw new IllegalArgumentException('Num bits must be between 0 and 32');\n            }\n            this.ensureCapacity(this.size + numBits);\n            // const appendBit = this.appendBit;\n            for (let numBitsLeft = numBits; numBitsLeft > 0; numBitsLeft--) {\n                this.appendBit(((value >> (numBitsLeft - 1)) & 0x01) === 1);\n            }\n        }\n        appendBitArray(other) {\n            const otherSize = other.size;\n            this.ensureCapacity(this.size + otherSize);\n            // const appendBit = this.appendBit;\n            for (let i = 0; i < otherSize; i++) {\n                this.appendBit(other.get(i));\n            }\n        }\n        xor(other) {\n            if (this.size !== other.size) {\n                throw new IllegalArgumentException('Sizes don\\'t match');\n            }\n            const bits = this.bits;\n            for (let i = 0, length = bits.length; i < length; i++) {\n                // The last int could be incomplete (i.e. not have 32 bits in\n                // it) but there is no problem since 0 XOR 0 == 0.\n                bits[i] ^= other.bits[i];\n            }\n        }\n        /**\n         *\n         * @param bitOffset first bit to start writing\n         * @param array array to write into. Bytes are written most-significant byte first. This is the opposite\n         *  of the internal representation, which is exposed by {@link #getBitArray()}\n         * @param offset position in array to start writing\n         * @param numBytes how many bytes to write\n         */\n        toBytes(bitOffset /*int*/, array, offset /*int*/, numBytes /*int*/) {\n            for (let i = 0; i < numBytes; i++) {\n                let theByte = 0;\n                for (let j = 0; j < 8; j++) {\n                    if (this.get(bitOffset)) {\n                        theByte |= 1 << (7 - j);\n                    }\n                    bitOffset++;\n                }\n                array[offset + i] = /*(byte)*/ theByte;\n            }\n        }\n        /**\n         * @return underlying array of ints. The first element holds the first 32 bits, and the least\n         *         significant bit is bit 0.\n         */\n        getBitArray() {\n            return this.bits;\n        }\n        /**\n         * Reverses all bits in the array.\n         */\n        reverse() {\n            const newBits = new Int32Array(this.bits.length);\n            // reverse all int's first\n            const len = Math.floor((this.size - 1) / 32);\n            const oldBitsLen = len + 1;\n            const bits = this.bits;\n            for (let i = 0; i < oldBitsLen; i++) {\n                let x = bits[i];\n                x = ((x >> 1) & 0x55555555) | ((x & 0x55555555) << 1);\n                x = ((x >> 2) & 0x33333333) | ((x & 0x33333333) << 2);\n                x = ((x >> 4) & 0x0f0f0f0f) | ((x & 0x0f0f0f0f) << 4);\n                x = ((x >> 8) & 0x00ff00ff) | ((x & 0x00ff00ff) << 8);\n                x = ((x >> 16) & 0x0000ffff) | ((x & 0x0000ffff) << 16);\n                newBits[len - i] = /*(int)*/ x;\n            }\n            // now correct the int's if the bit size isn't a multiple of 32\n            if (this.size !== oldBitsLen * 32) {\n                const leftOffset = oldBitsLen * 32 - this.size;\n                let currentInt = newBits[0] >>> leftOffset;\n                for (let i = 1; i < oldBitsLen; i++) {\n                    const nextInt = newBits[i];\n                    currentInt |= nextInt << (32 - leftOffset);\n                    newBits[i - 1] = currentInt;\n                    currentInt = nextInt >>> leftOffset;\n                }\n                newBits[oldBitsLen - 1] = currentInt;\n            }\n            this.bits = newBits;\n        }\n        static makeArray(size /*int*/) {\n            return new Int32Array(Math.floor((size + 31) / 32));\n        }\n        /*@Override*/\n        equals(o) {\n            if (!(o instanceof BitArray)) {\n                return false;\n            }\n            const other = o;\n            return this.size === other.size && Arrays.equals(this.bits, other.bits);\n        }\n        /*@Override*/\n        hashCode() {\n            return 31 * this.size + Arrays.hashCode(this.bits);\n        }\n        /*@Override*/\n        toString() {\n            let result = '';\n            for (let i = 0, size = this.size; i < size; i++) {\n                if ((i & 0x07) === 0) {\n                    result += ' ';\n                }\n                result += this.get(i) ? 'X' : '.';\n            }\n            return result;\n        }\n        /*@Override*/\n        clone() {\n            return new BitArray(this.size, this.bits.slice());\n        }\n    }\n\n    /*\n     * Copyright 2009 ZXing authors\n     *\n     * Licensed under the Apache License, Version 2.0 (the \"License\");\n     * you may not use this file except in compliance with the License.\n     * You may obtain a copy of the License at\n     *\n     *      http://www.apache.org/licenses/LICENSE-2.0\n     *\n     * Unless required by applicable law or agreed to in writing, software\n     * distributed under the License is distributed on an \"AS IS\" BASIS,\n     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n     * See the License for the specific language governing permissions and\n     * limitations under the License.\n     */\n    /*namespace com.google.zxing {*/\n    /**\n     * Encapsulates a type of hint that a caller may pass to a barcode reader to help it\n     * more quickly or accurately decode it. It is up to implementations to decide what,\n     * if anything, to do with the information that is supplied.\n     *\n     * @author Sean Owen\n     * @author dswitkin@google.com (Daniel Switkin)\n     * @see Reader#decode(BinaryBitmap,java.util.Map)\n     */\n    var DecodeHintType;\n    (function (DecodeHintType) {\n        /**\n         * Unspecified, application-specific hint. Maps to an unspecified {@link Object}.\n         */\n        DecodeHintType[DecodeHintType[\"OTHER\"] = 0] = \"OTHER\"; /*(Object.class)*/\n        /**\n         * Image is a pure monochrome image of a barcode. Doesn't matter what it maps to;\n         * use {@link Boolean#TRUE}.\n         */\n        DecodeHintType[DecodeHintType[\"PURE_BARCODE\"] = 1] = \"PURE_BARCODE\"; /*(Void.class)*/\n        /**\n         * Image is known to be of one of a few possible formats.\n         * Maps to a {@link List} of {@link BarcodeFormat}s.\n         */\n        DecodeHintType[DecodeHintType[\"POSSIBLE_FORMATS\"] = 2] = \"POSSIBLE_FORMATS\"; /*(List.class)*/\n        /**\n         * Spend more time to try to find a barcode; optimize for accuracy, not speed.\n         * Doesn't matter what it maps to; use {@link Boolean#TRUE}.\n         */\n        DecodeHintType[DecodeHintType[\"TRY_HARDER\"] = 3] = \"TRY_HARDER\"; /*(Void.class)*/\n        /**\n         * Specifies what character encoding to use when decoding, where applicable (type String)\n         */\n        DecodeHintType[DecodeHintType[\"CHARACTER_SET\"] = 4] = \"CHARACTER_SET\"; /*(String.class)*/\n        /**\n         * Allowed lengths of encoded data -- reject anything else. Maps to an {@code Int32Array}.\n         */\n        DecodeHintType[DecodeHintType[\"ALLOWED_LENGTHS\"] = 5] = \"ALLOWED_LENGTHS\"; /*(Int32Array.class)*/\n        /**\n         * Assume Code 39 codes employ a check digit. Doesn't matter what it maps to;\n         * use {@link Boolean#TRUE}.\n         */\n        DecodeHintType[DecodeHintType[\"ASSUME_CODE_39_CHECK_DIGIT\"] = 6] = \"ASSUME_CODE_39_CHECK_DIGIT\"; /*(Void.class)*/\n        /**\n         * Assume the barcode is being processed as a GS1 barcode, and modify behavior as needed.\n         * For example this affects FNC1 handling for Code 128 (aka GS1-128). Doesn't matter what it maps to;\n         * use {@link Boolean#TRUE}.\n         */\n        DecodeHintType[DecodeHintType[\"ASSUME_GS1\"] = 7] = \"ASSUME_GS1\"; /*(Void.class)*/\n        /**\n         * If true, return the start and end digits in a Codabar barcode instead of stripping them. They\n         * are alpha, whereas the rest are numeric. By default, they are stripped, but this causes them\n         * to not be. Doesn't matter what it maps to; use {@link Boolean#TRUE}.\n         */\n        DecodeHintType[DecodeHintType[\"RETURN_CODABAR_START_END\"] = 8] = \"RETURN_CODABAR_START_END\"; /*(Void.class)*/\n        /**\n         * The caller needs to be notified via callback when a possible {@link ResultPoint}\n         * is found. Maps to a {@link ResultPointCallback}.\n         */\n        DecodeHintType[DecodeHintType[\"NEED_RESULT_POINT_CALLBACK\"] = 9] = \"NEED_RESULT_POINT_CALLBACK\"; /*(ResultPointCallback.class)*/\n        /**\n         * Allowed extension lengths for EAN or UPC barcodes. Other formats will ignore this.\n         * Maps to an {@code Int32Array} of the allowed extension lengths, for example [2], [5], or [2, 5].\n         * If it is optional to have an extension, do not set this hint. If this is set,\n         * and a UPC or EAN barcode is found but an extension is not, then no result will be returned\n         * at all.\n         */\n        DecodeHintType[DecodeHintType[\"ALLOWED_EAN_EXTENSIONS\"] = 10] = \"ALLOWED_EAN_EXTENSIONS\"; /*(Int32Array.class)*/\n        // End of enumeration values.\n        /**\n         * Data type the hint is expecting.\n         * Among the possible values the {@link Void} stands out as being used for\n         * hints that do not expect a value to be supplied (flag hints). Such hints\n         * will possibly have their value ignored, or replaced by a\n         * {@link Boolean#TRUE}. Hint suppliers should probably use\n         * {@link Boolean#TRUE} as directed by the actual hint documentation.\n         */\n        // private valueType: Class<?>\n        // DecodeHintType(valueType: Class<?>) {\n        //   this.valueType = valueType\n        // }\n        // public getValueType(): Class<?> {\n        //   return valueType\n        // }\n    })(DecodeHintType || (DecodeHintType = {}));\n    var DecodeHintType$1 = DecodeHintType;\n\n    /**\n     * Custom Error class of type Exception.\n     */\n    class FormatException extends Exception {\n        static getFormatInstance() {\n            return new FormatException();\n        }\n    }\n    FormatException.kind = 'FormatException';\n\n    /*import java.util.HashMap;*/\n    /*import java.util.Map;*/\n    var CharacterSetValueIdentifiers;\n    (function (CharacterSetValueIdentifiers) {\n        CharacterSetValueIdentifiers[CharacterSetValueIdentifiers[\"Cp437\"] = 0] = \"Cp437\";\n        CharacterSetValueIdentifiers[CharacterSetValueIdentifiers[\"ISO8859_1\"] = 1] = \"ISO8859_1\";\n        CharacterSetValueIdentifiers[CharacterSetValueIdentifiers[\"ISO8859_2\"] = 2] = \"ISO8859_2\";\n        CharacterSetValueIdentifiers[CharacterSetValueIdentifiers[\"ISO8859_3\"] = 3] = \"ISO8859_3\";\n        CharacterSetValueIdentifiers[CharacterSetValueIdentifiers[\"ISO8859_4\"] = 4] = \"ISO8859_4\";\n        CharacterSetValueIdentifiers[CharacterSetValueIdentifiers[\"ISO8859_5\"] = 5] = \"ISO8859_5\";\n        CharacterSetValueIdentifiers[CharacterSetValueIdentifiers[\"ISO8859_6\"] = 6] = \"ISO8859_6\";\n        CharacterSetValueIdentifiers[CharacterSetValueIdentifiers[\"ISO8859_7\"] = 7] = \"ISO8859_7\";\n        CharacterSetValueIdentifiers[CharacterSetValueIdentifiers[\"ISO8859_8\"] = 8] = \"ISO8859_8\";\n        CharacterSetValueIdentifiers[CharacterSetValueIdentifiers[\"ISO8859_9\"] = 9] = \"ISO8859_9\";\n        CharacterSetValueIdentifiers[CharacterSetValueIdentifiers[\"ISO8859_10\"] = 10] = \"ISO8859_10\";\n        CharacterSetValueIdentifiers[CharacterSetValueIdentifiers[\"ISO8859_11\"] = 11] = \"ISO8859_11\";\n        CharacterSetValueIdentifiers[CharacterSetValueIdentifiers[\"ISO8859_13\"] = 12] = \"ISO8859_13\";\n        CharacterSetValueIdentifiers[CharacterSetValueIdentifiers[\"ISO8859_14\"] = 13] = \"ISO8859_14\";\n        CharacterSetValueIdentifiers[CharacterSetValueIdentifiers[\"ISO8859_15\"] = 14] = \"ISO8859_15\";\n        CharacterSetValueIdentifiers[CharacterSetValueIdentifiers[\"ISO8859_16\"] = 15] = \"ISO8859_16\";\n        CharacterSetValueIdentifiers[CharacterSetValueIdentifiers[\"SJIS\"] = 16] = \"SJIS\";\n        CharacterSetValueIdentifiers[CharacterSetValueIdentifiers[\"Cp1250\"] = 17] = \"Cp1250\";\n        CharacterSetValueIdentifiers[CharacterSetValueIdentifiers[\"Cp1251\"] = 18] = \"Cp1251\";\n        CharacterSetValueIdentifiers[CharacterSetValueIdentifiers[\"Cp1252\"] = 19] = \"Cp1252\";\n        CharacterSetValueIdentifiers[CharacterSetValueIdentifiers[\"Cp1256\"] = 20] = \"Cp1256\";\n        CharacterSetValueIdentifiers[CharacterSetValueIdentifiers[\"UnicodeBigUnmarked\"] = 21] = \"UnicodeBigUnmarked\";\n        CharacterSetValueIdentifiers[CharacterSetValueIdentifiers[\"UTF8\"] = 22] = \"UTF8\";\n        CharacterSetValueIdentifiers[CharacterSetValueIdentifiers[\"ASCII\"] = 23] = \"ASCII\";\n        CharacterSetValueIdentifiers[CharacterSetValueIdentifiers[\"Big5\"] = 24] = \"Big5\";\n        CharacterSetValueIdentifiers[CharacterSetValueIdentifiers[\"GB18030\"] = 25] = \"GB18030\";\n        CharacterSetValueIdentifiers[CharacterSetValueIdentifiers[\"EUC_KR\"] = 26] = \"EUC_KR\";\n    })(CharacterSetValueIdentifiers || (CharacterSetValueIdentifiers = {}));\n    /**\n     * Encapsulates a Character Set ECI, according to \"Extended Channel Interpretations\" 5.3.1.1\n     * of ISO 18004.\n     *\n     * @author Sean Owen\n     */\n    class CharacterSetECI {\n        constructor(valueIdentifier, valuesParam, name, ...otherEncodingNames) {\n            this.valueIdentifier = valueIdentifier;\n            this.name = name;\n            if (typeof valuesParam === 'number') {\n                this.values = Int32Array.from([valuesParam]);\n            }\n            else {\n                this.values = valuesParam;\n            }\n            this.otherEncodingNames = otherEncodingNames;\n            CharacterSetECI.VALUE_IDENTIFIER_TO_ECI.set(valueIdentifier, this);\n            CharacterSetECI.NAME_TO_ECI.set(name, this);\n            const values = this.values;\n            for (let i = 0, length = values.length; i !== length; i++) {\n                const v = values[i];\n                CharacterSetECI.VALUES_TO_ECI.set(v, this);\n            }\n            for (const otherName of otherEncodingNames) {\n                CharacterSetECI.NAME_TO_ECI.set(otherName, this);\n            }\n        }\n        // CharacterSetECI(value: number /*int*/) {\n        //   this(new Int32Array {value})\n        // }\n        // CharacterSetECI(value: number /*int*/, String... otherEncodingNames) {\n        //   this.values = new Int32Array {value}\n        //   this.otherEncodingNames = otherEncodingNames\n        // }\n        // CharacterSetECI(values: Int32Array, String... otherEncodingNames) {\n        //   this.values = values\n        //   this.otherEncodingNames = otherEncodingNames\n        // }\n        getValueIdentifier() {\n            return this.valueIdentifier;\n        }\n        getName() {\n            return this.name;\n        }\n        getValue() {\n            return this.values[0];\n        }\n        /**\n         * @param value character set ECI value\n         * @return {@code CharacterSetECI} representing ECI of given value, or null if it is legal but\n         *   unsupported\n         * @throws FormatException if ECI value is invalid\n         */\n        static getCharacterSetECIByValue(value /*int*/) {\n            if (value < 0 || value >= 900) {\n                throw new FormatException('incorect value');\n            }\n            const characterSet = CharacterSetECI.VALUES_TO_ECI.get(value);\n            if (undefined === characterSet) {\n                throw new FormatException('incorect value');\n            }\n            return characterSet;\n        }\n        /**\n         * @param name character set ECI encoding name\n         * @return CharacterSetECI representing ECI for character encoding, or null if it is legal\n         *   but unsupported\n         */\n        static getCharacterSetECIByName(name) {\n            const characterSet = CharacterSetECI.NAME_TO_ECI.get(name);\n            if (undefined === characterSet) {\n                throw new FormatException('incorect value');\n            }\n            return characterSet;\n        }\n        equals(o) {\n            if (!(o instanceof CharacterSetECI)) {\n                return false;\n            }\n            const other = o;\n            return this.getName() === other.getName();\n        }\n    }\n    CharacterSetECI.VALUE_IDENTIFIER_TO_ECI = new Map();\n    CharacterSetECI.VALUES_TO_ECI = new Map();\n    CharacterSetECI.NAME_TO_ECI = new Map();\n    // Enum name is a Java encoding valid for java.lang and java.io\n    // TYPESCRIPTPORT: changed the main label for ISO as the TextEncoder did not recognized them in the form from java\n    // (eg ISO8859_1 must be ISO88591 or ISO8859-1 or ISO-8859-1)\n    // later on: well, except 16 wich does not work with ISO885916 so used ISO-8859-1 form for default\n    CharacterSetECI.Cp437 = new CharacterSetECI(CharacterSetValueIdentifiers.Cp437, Int32Array.from([0, 2]), 'Cp437');\n    CharacterSetECI.ISO8859_1 = new CharacterSetECI(CharacterSetValueIdentifiers.ISO8859_1, Int32Array.from([1, 3]), 'ISO-8859-1', 'ISO88591', 'ISO8859_1');\n    CharacterSetECI.ISO8859_2 = new CharacterSetECI(CharacterSetValueIdentifiers.ISO8859_2, 4, 'ISO-8859-2', 'ISO88592', 'ISO8859_2');\n    CharacterSetECI.ISO8859_3 = new CharacterSetECI(CharacterSetValueIdentifiers.ISO8859_3, 5, 'ISO-8859-3', 'ISO88593', 'ISO8859_3');\n    CharacterSetECI.ISO8859_4 = new CharacterSetECI(CharacterSetValueIdentifiers.ISO8859_4, 6, 'ISO-8859-4', 'ISO88594', 'ISO8859_4');\n    CharacterSetECI.ISO8859_5 = new CharacterSetECI(CharacterSetValueIdentifiers.ISO8859_5, 7, 'ISO-8859-5', 'ISO88595', 'ISO8859_5');\n    CharacterSetECI.ISO8859_6 = new CharacterSetECI(CharacterSetValueIdentifiers.ISO8859_6, 8, 'ISO-8859-6', 'ISO88596', 'ISO8859_6');\n    CharacterSetECI.ISO8859_7 = new CharacterSetECI(CharacterSetValueIdentifiers.ISO8859_7, 9, 'ISO-8859-7', 'ISO88597', 'ISO8859_7');\n    CharacterSetECI.ISO8859_8 = new CharacterSetECI(CharacterSetValueIdentifiers.ISO8859_8, 10, 'ISO-8859-8', 'ISO88598', 'ISO8859_8');\n    CharacterSetECI.ISO8859_9 = new CharacterSetECI(CharacterSetValueIdentifiers.ISO8859_9, 11, 'ISO-8859-9', 'ISO88599', 'ISO8859_9');\n    CharacterSetECI.ISO8859_10 = new CharacterSetECI(CharacterSetValueIdentifiers.ISO8859_10, 12, 'ISO-8859-10', 'ISO885910', 'ISO8859_10');\n    CharacterSetECI.ISO8859_11 = new CharacterSetECI(CharacterSetValueIdentifiers.ISO8859_11, 13, 'ISO-8859-11', 'ISO885911', 'ISO8859_11');\n    CharacterSetECI.ISO8859_13 = new CharacterSetECI(CharacterSetValueIdentifiers.ISO8859_13, 15, 'ISO-8859-13', 'ISO885913', 'ISO8859_13');\n    CharacterSetECI.ISO8859_14 = new CharacterSetECI(CharacterSetValueIdentifiers.ISO8859_14, 16, 'ISO-8859-14', 'ISO885914', 'ISO8859_14');\n    CharacterSetECI.ISO8859_15 = new CharacterSetECI(CharacterSetValueIdentifiers.ISO8859_15, 17, 'ISO-8859-15', 'ISO885915', 'ISO8859_15');\n    CharacterSetECI.ISO8859_16 = new CharacterSetECI(CharacterSetValueIdentifiers.ISO8859_16, 18, 'ISO-8859-16', 'ISO885916', 'ISO8859_16');\n    CharacterSetECI.SJIS = new CharacterSetECI(CharacterSetValueIdentifiers.SJIS, 20, 'SJIS', 'Shift_JIS');\n    CharacterSetECI.Cp1250 = new CharacterSetECI(CharacterSetValueIdentifiers.Cp1250, 21, 'Cp1250', 'windows-1250');\n    CharacterSetECI.Cp1251 = new CharacterSetECI(CharacterSetValueIdentifiers.Cp1251, 22, 'Cp1251', 'windows-1251');\n    CharacterSetECI.Cp1252 = new CharacterSetECI(CharacterSetValueIdentifiers.Cp1252, 23, 'Cp1252', 'windows-1252');\n    CharacterSetECI.Cp1256 = new CharacterSetECI(CharacterSetValueIdentifiers.Cp1256, 24, 'Cp1256', 'windows-1256');\n    CharacterSetECI.UnicodeBigUnmarked = new CharacterSetECI(CharacterSetValueIdentifiers.UnicodeBigUnmarked, 25, 'UnicodeBigUnmarked', 'UTF-16BE', 'UnicodeBig');\n    CharacterSetECI.UTF8 = new CharacterSetECI(CharacterSetValueIdentifiers.UTF8, 26, 'UTF8', 'UTF-8');\n    CharacterSetECI.ASCII = new CharacterSetECI(CharacterSetValueIdentifiers.ASCII, Int32Array.from([27, 170]), 'ASCII', 'US-ASCII');\n    CharacterSetECI.Big5 = new CharacterSetECI(CharacterSetValueIdentifiers.Big5, 28, 'Big5');\n    CharacterSetECI.GB18030 = new CharacterSetECI(CharacterSetValueIdentifiers.GB18030, 29, 'GB18030', 'GB2312', 'EUC_CN', 'GBK');\n    CharacterSetECI.EUC_KR = new CharacterSetECI(CharacterSetValueIdentifiers.EUC_KR, 30, 'EUC_KR', 'EUC-KR');\n\n    /**\n     * Custom Error class of type Exception.\n     */\n    class UnsupportedOperationException extends Exception {\n    }\n    UnsupportedOperationException.kind = 'UnsupportedOperationException';\n\n    /**\n     * Responsible for en/decoding strings.\n     */\n    class StringEncoding {\n        /**\n         * Decodes some Uint8Array to a string format.\n         */\n        static decode(bytes, encoding) {\n            const encodingName = this.encodingName(encoding);\n            if (this.customDecoder) {\n                return this.customDecoder(bytes, encodingName);\n            }\n            // Increases browser support.\n            if (typeof TextDecoder === 'undefined' || this.shouldDecodeOnFallback(encodingName)) {\n                return this.decodeFallback(bytes, encodingName);\n            }\n            return new TextDecoder(encodingName).decode(bytes);\n        }\n        /**\n         * Checks if the decoding method should use the fallback for decoding\n         * once Node TextDecoder doesn't support all encoding formats.\n         *\n         * @param encodingName\n         */\n        static shouldDecodeOnFallback(encodingName) {\n            return !StringEncoding.isBrowser() && encodingName === 'ISO-8859-1';\n        }\n        /**\n         * Encodes some string into a Uint8Array.\n         */\n        static encode(s, encoding) {\n            const encodingName = this.encodingName(encoding);\n            if (this.customEncoder) {\n                return this.customEncoder(s, encodingName);\n            }\n            // Increases browser support.\n            if (typeof TextEncoder === 'undefined') {\n                return this.encodeFallback(s);\n            }\n            // TextEncoder only encodes to UTF8 by default as specified by encoding.spec.whatwg.org\n            return new TextEncoder().encode(s);\n        }\n        static isBrowser() {\n            return (typeof window !== 'undefined' && {}.toString.call(window) === '[object Window]');\n        }\n        /**\n         * Returns the string value from some encoding character set.\n         */\n        static encodingName(encoding) {\n            return typeof encoding === 'string'\n                ? encoding\n                : encoding.getName();\n        }\n        /**\n         * Returns character set from some encoding character set.\n         */\n        static encodingCharacterSet(encoding) {\n            if (encoding instanceof CharacterSetECI) {\n                return encoding;\n            }\n            return CharacterSetECI.getCharacterSetECIByName(encoding);\n        }\n        /**\n         * Runs a fallback for the native decoding funcion.\n         */\n        static decodeFallback(bytes, encoding) {\n            const characterSet = this.encodingCharacterSet(encoding);\n            if (StringEncoding.isDecodeFallbackSupported(characterSet)) {\n                let s = '';\n                for (let i = 0, length = bytes.length; i < length; i++) {\n                    let h = bytes[i].toString(16);\n                    if (h.length < 2) {\n                        h = '0' + h;\n                    }\n                    s += '%' + h;\n                }\n                return decodeURIComponent(s);\n            }\n            if (characterSet.equals(CharacterSetECI.UnicodeBigUnmarked)) {\n                return String.fromCharCode.apply(null, new Uint16Array(bytes.buffer));\n            }\n            throw new UnsupportedOperationException(`Encoding ${this.encodingName(encoding)} not supported by fallback.`);\n        }\n        static isDecodeFallbackSupported(characterSet) {\n            return characterSet.equals(CharacterSetECI.UTF8) ||\n                characterSet.equals(CharacterSetECI.ISO8859_1) ||\n                characterSet.equals(CharacterSetECI.ASCII);\n        }\n        /**\n         * Runs a fallback for the native encoding funcion.\n         *\n         * @see https://stackoverflow.com/a/17192845/4367683\n         */\n        static encodeFallback(s) {\n            const encodedURIstring = btoa(unescape(encodeURIComponent(s)));\n            const charList = encodedURIstring.split('');\n            const uintArray = [];\n            for (let i = 0; i < charList.length; i++) {\n                uintArray.push(charList[i].charCodeAt(0));\n            }\n            return new Uint8Array(uintArray);\n        }\n    }\n\n    /*\n     * Copyright (C) 2010 ZXing authors\n     *\n     * Licensed under the Apache License, Version 2.0 (the \"License\");\n     * you may not use this file except in compliance with the License.\n     * You may obtain a copy of the License at\n     *\n     *      http://www.apache.org/licenses/LICENSE-2.0\n     *\n     * Unless required by applicable law or agreed to in writing, software\n     * distributed under the License is distributed on an \"AS IS\" BASIS,\n     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n     * See the License for the specific language governing permissions and\n     * limitations under the License.\n     */\n    /**\n     * Common string-related functions.\n     *\n     * @author Sean Owen\n     * @author Alex Dupre\n     */\n    class StringUtils {\n        // SHIFT_JIS.equalsIgnoreCase(PLATFORM_DEFAULT_ENCODING) ||\n        // EUC_JP.equalsIgnoreCase(PLATFORM_DEFAULT_ENCODING);\n        static castAsNonUtf8Char(code, encoding = null) {\n            // ISO 8859-1 is the Java default as UTF-8 is JavaScripts\n            // you can see this method as a Java version of String.fromCharCode\n            const e = encoding ? encoding.getName() : this.ISO88591;\n            // use passed format (fromCharCode will return UTF8 encoding)\n            return StringEncoding.decode(new Uint8Array([code]), e);\n        }\n        /**\n         * @param bytes bytes encoding a string, whose encoding should be guessed\n         * @param hints decode hints if applicable\n         * @return name of guessed encoding; at the moment will only guess one of:\n         *  {@link #SHIFT_JIS}, {@link #UTF8}, {@link #ISO88591}, or the platform\n         *  default encoding if none of these can possibly be correct\n         */\n        static guessEncoding(bytes, hints) {\n            if (hints !== null && hints !== undefined && undefined !== hints.get(DecodeHintType$1.CHARACTER_SET)) {\n                return hints.get(DecodeHintType$1.CHARACTER_SET).toString();\n            }\n            // For now, merely tries to distinguish ISO-8859-1, UTF-8 and Shift_JIS,\n            // which should be by far the most common encodings.\n            const length = bytes.length;\n            let canBeISO88591 = true;\n            let canBeShiftJIS = true;\n            let canBeUTF8 = true;\n            let utf8BytesLeft = 0;\n            // int utf8LowChars = 0\n            let utf2BytesChars = 0;\n            let utf3BytesChars = 0;\n            let utf4BytesChars = 0;\n            let sjisBytesLeft = 0;\n            // int sjisLowChars = 0\n            let sjisKatakanaChars = 0;\n            // int sjisDoubleBytesChars = 0\n            let sjisCurKatakanaWordLength = 0;\n            let sjisCurDoubleBytesWordLength = 0;\n            let sjisMaxKatakanaWordLength = 0;\n            let sjisMaxDoubleBytesWordLength = 0;\n            // int isoLowChars = 0\n            // int isoHighChars = 0\n            let isoHighOther = 0;\n            const utf8bom = bytes.length > 3 &&\n                bytes[0] === /*(byte) */ 0xEF &&\n                bytes[1] === /*(byte) */ 0xBB &&\n                bytes[2] === /*(byte) */ 0xBF;\n            for (let i = 0; i < length && (canBeISO88591 || canBeShiftJIS || canBeUTF8); i++) {\n                const value = bytes[i] & 0xFF;\n                // UTF-8 stuff\n                if (canBeUTF8) {\n                    if (utf8BytesLeft > 0) {\n                        if ((value & 0x80) === 0) {\n                            canBeUTF8 = false;\n                        }\n                        else {\n                            utf8BytesLeft--;\n                        }\n                    }\n                    else if ((value & 0x80) !== 0) {\n                        if ((value & 0x40) === 0) {\n                            canBeUTF8 = false;\n                        }\n                        else {\n                            utf8BytesLeft++;\n                            if ((value & 0x20) === 0) {\n                                utf2BytesChars++;\n                            }\n                            else {\n                                utf8BytesLeft++;\n                                if ((value & 0x10) === 0) {\n                                    utf3BytesChars++;\n                                }\n                                else {\n                                    utf8BytesLeft++;\n                                    if ((value & 0x08) === 0) {\n                                        utf4BytesChars++;\n                                    }\n                                    else {\n                                        canBeUTF8 = false;\n                                    }\n                                }\n                            }\n                        }\n                    } // else {\n                    // utf8LowChars++\n                    // }\n                }\n                // ISO-8859-1 stuff\n                if (canBeISO88591) {\n                    if (value > 0x7F && value < 0xA0) {\n                        canBeISO88591 = false;\n                    }\n                    else if (value > 0x9F) {\n                        if (value < 0xC0 || value === 0xD7 || value === 0xF7) {\n                            isoHighOther++;\n                        } // else {\n                        // isoHighChars++\n                        // }\n                    } // else {\n                    // isoLowChars++\n                    // }\n                }\n                // Shift_JIS stuff\n                if (canBeShiftJIS) {\n                    if (sjisBytesLeft > 0) {\n                        if (value < 0x40 || value === 0x7F || value > 0xFC) {\n                            canBeShiftJIS = false;\n                        }\n                        else {\n                            sjisBytesLeft--;\n                        }\n                    }\n                    else if (value === 0x80 || value === 0xA0 || value > 0xEF) {\n                        canBeShiftJIS = false;\n                    }\n                    else if (value > 0xA0 && value < 0xE0) {\n                        sjisKatakanaChars++;\n                        sjisCurDoubleBytesWordLength = 0;\n                        sjisCurKatakanaWordLength++;\n                        if (sjisCurKatakanaWordLength > sjisMaxKatakanaWordLength) {\n                            sjisMaxKatakanaWordLength = sjisCurKatakanaWordLength;\n                        }\n                    }\n                    else if (value > 0x7F) {\n                        sjisBytesLeft++;\n                        // sjisDoubleBytesChars++\n                        sjisCurKatakanaWordLength = 0;\n                        sjisCurDoubleBytesWordLength++;\n                        if (sjisCurDoubleBytesWordLength > sjisMaxDoubleBytesWordLength) {\n                            sjisMaxDoubleBytesWordLength = sjisCurDoubleBytesWordLength;\n                        }\n                    }\n                    else {\n                        // sjisLowChars++\n                        sjisCurKatakanaWordLength = 0;\n                        sjisCurDoubleBytesWordLength = 0;\n                    }\n                }\n            }\n            if (canBeUTF8 && utf8BytesLeft > 0) {\n                canBeUTF8 = false;\n            }\n            if (canBeShiftJIS && sjisBytesLeft > 0) {\n                canBeShiftJIS = false;\n            }\n            // Easy -- if there is BOM or at least 1 valid not-single byte character (and no evidence it can't be UTF-8), done\n            if (canBeUTF8 && (utf8bom || utf2BytesChars + utf3BytesChars + utf4BytesChars > 0)) {\n                return StringUtils.UTF8;\n            }\n            // Easy -- if assuming Shift_JIS or at least 3 valid consecutive not-ascii characters (and no evidence it can't be), done\n            if (canBeShiftJIS && (StringUtils.ASSUME_SHIFT_JIS || sjisMaxKatakanaWordLength >= 3 || sjisMaxDoubleBytesWordLength >= 3)) {\n                return StringUtils.SHIFT_JIS;\n            }\n            // Distinguishing Shift_JIS and ISO-8859-1 can be a little tough for short words. The crude heuristic is:\n            // - If we saw\n            //   - only two consecutive katakana chars in the whole text, or\n            //   - at least 10% of bytes that could be \"upper\" not-alphanumeric Latin1,\n            // - then we conclude Shift_JIS, else ISO-8859-1\n            if (canBeISO88591 && canBeShiftJIS) {\n                return (sjisMaxKatakanaWordLength === 2 && sjisKatakanaChars === 2) || isoHighOther * 10 >= length\n                    ? StringUtils.SHIFT_JIS : StringUtils.ISO88591;\n            }\n            // Otherwise, try in order ISO-8859-1, Shift JIS, UTF-8 and fall back to default platform encoding\n            if (canBeISO88591) {\n                return StringUtils.ISO88591;\n            }\n            if (canBeShiftJIS) {\n                return StringUtils.SHIFT_JIS;\n            }\n            if (canBeUTF8) {\n                return StringUtils.UTF8;\n            }\n            // Otherwise, we take a wild guess with platform encoding\n            return StringUtils.PLATFORM_DEFAULT_ENCODING;\n        }\n        /**\n         *\n         * @see https://stackoverflow.com/a/13439711/4367683\n         *\n         * @param append The new string to append.\n         * @param args Argumets values to be formated.\n         */\n        static format(append, ...args) {\n            let i = -1;\n            function callback(exp, p0, p1, p2, p3, p4) {\n                if (exp === '%%')\n                    return '%';\n                if (args[++i] === undefined)\n                    return undefined;\n                exp = p2 ? parseInt(p2.substr(1)) : undefined;\n                let base = p3 ? parseInt(p3.substr(1)) : undefined;\n                let val;\n                switch (p4) {\n                    case 's':\n                        val = args[i];\n                        break;\n                    case 'c':\n                        val = args[i][0];\n                        break;\n                    case 'f':\n                        val = parseFloat(args[i]).toFixed(exp);\n                        break;\n                    case 'p':\n                        val = parseFloat(args[i]).toPrecision(exp);\n                        break;\n                    case 'e':\n                        val = parseFloat(args[i]).toExponential(exp);\n                        break;\n                    case 'x':\n                        val = parseInt(args[i]).toString(base ? base : 16);\n                        break;\n                    case 'd':\n                        val = parseFloat(parseInt(args[i], base ? base : 10).toPrecision(exp)).toFixed(0);\n                        break;\n                }\n                val = typeof val === 'object' ? JSON.stringify(val) : (+val).toString(base);\n                let size = parseInt(p1); /* padding size */\n                let ch = p1 && (p1[0] + '') === '0' ? '0' : ' '; /* isnull? */\n                while (val.length < size)\n                    val = p0 !== undefined ? val + ch : ch + val; /* isminus? */\n                return val;\n            }\n            let regex = /%(-)?(0?[0-9]+)?([.][0-9]+)?([#][0-9]+)?([scfpexd%])/g;\n            return append.replace(regex, callback);\n        }\n        /**\n         *\n         */\n        static getBytes(str, encoding) {\n            return StringEncoding.encode(str, encoding);\n        }\n        /**\n         * Returns the charcode at the specified index or at index zero.\n         */\n        static getCharCode(str, index = 0) {\n            return str.charCodeAt(index);\n        }\n        /**\n         * Returns char for given charcode\n         */\n        static getCharAt(charCode) {\n            return String.fromCharCode(charCode);\n        }\n    }\n    StringUtils.SHIFT_JIS = CharacterSetECI.SJIS.getName(); // \"SJIS\"\n    StringUtils.GB2312 = 'GB2312';\n    StringUtils.ISO88591 = CharacterSetECI.ISO8859_1.getName(); // \"ISO8859_1\"\n    StringUtils.EUC_JP = 'EUC_JP';\n    StringUtils.UTF8 = CharacterSetECI.UTF8.getName(); // \"UTF8\"\n    StringUtils.PLATFORM_DEFAULT_ENCODING = StringUtils.UTF8; // \"UTF8\"//Charset.defaultCharset().name()\n    StringUtils.ASSUME_SHIFT_JIS = false;\n\n    class StringBuilder {\n        constructor(value = '') {\n            this.value = value;\n        }\n        enableDecoding(encoding) {\n            this.encoding = encoding;\n            return this;\n        }\n        append(s) {\n            if (typeof s === 'string') {\n                this.value += s.toString();\n            }\n            else if (this.encoding) {\n                // use passed format (fromCharCode will return UTF8 encoding)\n                this.value += StringUtils.castAsNonUtf8Char(s, this.encoding);\n            }\n            else {\n                // correctly converts from UTF-8, but not other encodings\n                this.value += String.fromCharCode(s);\n            }\n            return this;\n        }\n        appendChars(str, offset, len) {\n            for (let i = offset; offset < offset + len; i++) {\n                this.append(str[i]);\n            }\n            return this;\n        }\n        length() {\n            return this.value.length;\n        }\n        charAt(n) {\n            return this.value.charAt(n);\n        }\n        deleteCharAt(n) {\n            this.value = this.value.substr(0, n) + this.value.substring(n + 1);\n        }\n        setCharAt(n, c) {\n            this.value = this.value.substr(0, n) + c + this.value.substr(n + 1);\n        }\n        substring(start, end) {\n            return this.value.substring(start, end);\n        }\n        /**\n         * @note helper method for RSS Expanded\n         */\n        setLengthToZero() {\n            this.value = '';\n        }\n        toString() {\n            return this.value;\n        }\n        insert(n, c) {\n            this.value = this.value.substr(0, n) + c + this.value.substr(n + c.length);\n        }\n    }\n\n    /*\n     * Copyright 2007 ZXing authors\n     *\n     * Licensed under the Apache License, Version 2.0 (the \"License\");\n     * you may not use this file except in compliance with the License.\n     * You may obtain a copy of the License at\n     *\n     *      http://www.apache.org/licenses/LICENSE-2.0\n     *\n     * Unless required by applicable law or agreed to in writing, software\n     * distributed under the License is distributed on an \"AS IS\" BASIS,\n     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n     * See the License for the specific language governing permissions and\n     * limitations under the License.\n     */\n    /**\n     * <p>Represents a 2D matrix of bits. In function arguments below, and throughout the common\n     * module, x is the column position, and y is the row position. The ordering is always x, y.\n     * The origin is at the top-left.</p>\n     *\n     * <p>Internally the bits are represented in a 1-D array of 32-bit ints. However, each row begins\n     * with a new int. This is done intentionally so that we can copy out a row into a BitArray very\n     * efficiently.</p>\n     *\n     * <p>The ordering of bits is row-major. Within each int, the least significant bits are used first,\n     * meaning they represent lower x values. This is compatible with BitArray's implementation.</p>\n     *\n     * @author Sean Owen\n     * @author dswitkin@google.com (Daniel Switkin)\n     */\n    class BitMatrix /*implements Cloneable*/ {\n        /**\n         * Creates an empty square {@link BitMatrix}.\n         *\n         * @param dimension height and width\n         */\n        // public constructor(dimension: number /*int*/) {\n        //   this(dimension, dimension)\n        // }\n        /**\n         * Creates an empty {@link BitMatrix}.\n         *\n         * @param width bit matrix width\n         * @param height bit matrix height\n         */\n        // public constructor(width: number /*int*/, height: number /*int*/) {\n        //   if (width < 1 || height < 1) {\n        //     throw new IllegalArgumentException(\"Both dimensions must be greater than 0\")\n        //   }\n        //   this.width = width\n        //   this.height = height\n        //   this.rowSize = (width + 31) / 32\n        //   bits = new int[rowSize * height];\n        // }\n        constructor(width /*int*/, height /*int*/, rowSize /*int*/, bits) {\n            this.width = width;\n            this.height = height;\n            this.rowSize = rowSize;\n            this.bits = bits;\n            if (undefined === height || null === height) {\n                height = width;\n            }\n            this.height = height;\n            if (width < 1 || height < 1) {\n                throw new IllegalArgumentException('Both dimensions must be greater than 0');\n            }\n            if (undefined === rowSize || null === rowSize) {\n                rowSize = Math.floor((width + 31) / 32);\n            }\n            this.rowSize = rowSize;\n            if (undefined === bits || null === bits) {\n                this.bits = new Int32Array(this.rowSize * this.height);\n            }\n        }\n        /**\n         * Interprets a 2D array of booleans as a {@link BitMatrix}, where \"true\" means an \"on\" bit.\n         *\n         * @function parse\n         * @param image bits of the image, as a row-major 2D array. Elements are arrays representing rows\n         * @return {@link BitMatrix} representation of image\n         */\n        static parseFromBooleanArray(image) {\n            const height = image.length;\n            const width = image[0].length;\n            const bits = new BitMatrix(width, height);\n            for (let i = 0; i < height; i++) {\n                const imageI = image[i];\n                for (let j = 0; j < width; j++) {\n                    if (imageI[j]) {\n                        bits.set(j, i);\n                    }\n                }\n            }\n            return bits;\n        }\n        /**\n         *\n         * @function parse\n         * @param stringRepresentation\n         * @param setString\n         * @param unsetString\n         */\n        static parseFromString(stringRepresentation, setString, unsetString) {\n            if (stringRepresentation === null) {\n                throw new IllegalArgumentException('stringRepresentation cannot be null');\n            }\n            const bits = new Array(stringRepresentation.length);\n            let bitsPos = 0;\n            let rowStartPos = 0;\n            let rowLength = -1;\n            let nRows = 0;\n            let pos = 0;\n            while (pos < stringRepresentation.length) {\n                if (stringRepresentation.charAt(pos) === '\\n' ||\n                    stringRepresentation.charAt(pos) === '\\r') {\n                    if (bitsPos > rowStartPos) {\n                        if (rowLength === -1) {\n                            rowLength = bitsPos - rowStartPos;\n                        }\n                        else if (bitsPos - rowStartPos !== rowLength) {\n                            throw new IllegalArgumentException('row lengths do not match');\n                        }\n                        rowStartPos = bitsPos;\n                        nRows++;\n                    }\n                    pos++;\n                }\n                else if (stringRepresentation.substring(pos, pos + setString.length) === setString) {\n                    pos += setString.length;\n                    bits[bitsPos] = true;\n                    bitsPos++;\n                }\n                else if (stringRepresentation.substring(pos, pos + unsetString.length) === unsetString) {\n                    pos += unsetString.length;\n                    bits[bitsPos] = false;\n                    bitsPos++;\n                }\n                else {\n                    throw new IllegalArgumentException('illegal character encountered: ' + stringRepresentation.substring(pos));\n                }\n            }\n            // no EOL at end?\n            if (bitsPos > rowStartPos) {\n                if (rowLength === -1) {\n                    rowLength = bitsPos - rowStartPos;\n                }\n                else if (bitsPos - rowStartPos !== rowLength) {\n                    throw new IllegalArgumentException('row lengths do not match');\n                }\n                nRows++;\n            }\n            const matrix = new BitMatrix(rowLength, nRows);\n            for (let i = 0; i < bitsPos; i++) {\n                if (bits[i]) {\n                    matrix.set(Math.floor(i % rowLength), Math.floor(i / rowLength));\n                }\n            }\n            return matrix;\n        }\n        /**\n         * <p>Gets the requested bit, where true means black.</p>\n         *\n         * @param x The horizontal component (i.e. which column)\n         * @param y The vertical component (i.e. which row)\n         * @return value of given bit in matrix\n         */\n        get(x /*int*/, y /*int*/) {\n            const offset = y * this.rowSize + Math.floor(x / 32);\n            return ((this.bits[offset] >>> (x & 0x1f)) & 1) !== 0;\n        }\n        /**\n         * <p>Sets the given bit to true.</p>\n         *\n         * @param x The horizontal component (i.e. which column)\n         * @param y The vertical component (i.e. which row)\n         */\n        set(x /*int*/, y /*int*/) {\n            const offset = y * this.rowSize + Math.floor(x / 32);\n            this.bits[offset] |= (1 << (x & 0x1f)) & 0xFFFFFFFF;\n        }\n        unset(x /*int*/, y /*int*/) {\n            const offset = y * this.rowSize + Math.floor(x / 32);\n            this.bits[offset] &= ~((1 << (x & 0x1f)) & 0xFFFFFFFF);\n        }\n        /**\n         * <p>Flips the given bit.</p>\n         *\n         * @param x The horizontal component (i.e. which column)\n         * @param y The vertical component (i.e. which row)\n         */\n        flip(x /*int*/, y /*int*/) {\n            const offset = y * this.rowSize + Math.floor(x / 32);\n            this.bits[offset] ^= ((1 << (x & 0x1f)) & 0xFFFFFFFF);\n        }\n        /**\n         * Exclusive-or (XOR): Flip the bit in this {@code BitMatrix} if the corresponding\n         * mask bit is set.\n         *\n         * @param mask XOR mask\n         */\n        xor(mask) {\n            if (this.width !== mask.getWidth() || this.height !== mask.getHeight()\n                || this.rowSize !== mask.getRowSize()) {\n                throw new IllegalArgumentException('input matrix dimensions do not match');\n            }\n            const rowArray = new BitArray(Math.floor(this.width / 32) + 1);\n            const rowSize = this.rowSize;\n            const bits = this.bits;\n            for (let y = 0, height = this.height; y < height; y++) {\n                const offset = y * rowSize;\n                const row = mask.getRow(y, rowArray).getBitArray();\n                for (let x = 0; x < rowSize; x++) {\n                    bits[offset + x] ^= row[x];\n                }\n            }\n        }\n        /**\n         * Clears all bits (sets to false).\n         */\n        clear() {\n            const bits = this.bits;\n            const max = bits.length;\n            for (let i = 0; i < max; i++) {\n                bits[i] = 0;\n            }\n        }\n        /**\n         * <p>Sets a square region of the bit matrix to true.</p>\n         *\n         * @param left The horizontal position to begin at (inclusive)\n         * @param top The vertical position to begin at (inclusive)\n         * @param width The width of the region\n         * @param height The height of the region\n         */\n        setRegion(left /*int*/, top /*int*/, width /*int*/, height /*int*/) {\n            if (top < 0 || left < 0) {\n                throw new IllegalArgumentException('Left and top must be nonnegative');\n            }\n            if (height < 1 || width < 1) {\n                throw new IllegalArgumentException('Height and width must be at least 1');\n            }\n            const right = left + width;\n            const bottom = top + height;\n            if (bottom > this.height || right > this.width) {\n                throw new IllegalArgumentException('The region must fit inside the matrix');\n            }\n            const rowSize = this.rowSize;\n            const bits = this.bits;\n            for (let y = top; y < bottom; y++) {\n                const offset = y * rowSize;\n                for (let x = left; x < right; x++) {\n                    bits[offset + Math.floor(x / 32)] |= ((1 << (x & 0x1f)) & 0xFFFFFFFF);\n                }\n            }\n        }\n        /**\n         * A fast method to retrieve one row of data from the matrix as a BitArray.\n         *\n         * @param y The row to retrieve\n         * @param row An optional caller-allocated BitArray, will be allocated if null or too small\n         * @return The resulting BitArray - this reference should always be used even when passing\n         *         your own row\n         */\n        getRow(y /*int*/, row) {\n            if (row === null || row === undefined || row.getSize() < this.width) {\n                row = new BitArray(this.width);\n            }\n            else {\n                row.clear();\n            }\n            const rowSize = this.rowSize;\n            const bits = this.bits;\n            const offset = y * rowSize;\n            for (let x = 0; x < rowSize; x++) {\n                row.setBulk(x * 32, bits[offset + x]);\n            }\n            return row;\n        }\n        /**\n         * @param y row to set\n         * @param row {@link BitArray} to copy from\n         */\n        setRow(y /*int*/, row) {\n            System.arraycopy(row.getBitArray(), 0, this.bits, y * this.rowSize, this.rowSize);\n        }\n        /**\n         * Modifies this {@code BitMatrix} to represent the same but rotated 180 degrees\n         */\n        rotate180() {\n            const width = this.getWidth();\n            const height = this.getHeight();\n            let topRow = new BitArray(width);\n            let bottomRow = new BitArray(width);\n            for (let i = 0, length = Math.floor((height + 1) / 2); i < length; i++) {\n                topRow = this.getRow(i, topRow);\n                bottomRow = this.getRow(height - 1 - i, bottomRow);\n                topRow.reverse();\n                bottomRow.reverse();\n                this.setRow(i, bottomRow);\n                this.setRow(height - 1 - i, topRow);\n            }\n        }\n        /**\n         * This is useful in detecting the enclosing rectangle of a 'pure' barcode.\n         *\n         * @return {@code left,top,width,height} enclosing rectangle of all 1 bits, or null if it is all white\n         */\n        getEnclosingRectangle() {\n            const width = this.width;\n            const height = this.height;\n            const rowSize = this.rowSize;\n            const bits = this.bits;\n            let left = width;\n            let top = height;\n            let right = -1;\n            let bottom = -1;\n            for (let y = 0; y < height; y++) {\n                for (let x32 = 0; x32 < rowSize; x32++) {\n                    const theBits = bits[y * rowSize + x32];\n                    if (theBits !== 0) {\n                        if (y < top) {\n                            top = y;\n                        }\n                        if (y > bottom) {\n                            bottom = y;\n                        }\n                        if (x32 * 32 < left) {\n                            let bit = 0;\n                            while (((theBits << (31 - bit)) & 0xFFFFFFFF) === 0) {\n                                bit++;\n                            }\n                            if ((x32 * 32 + bit) < left) {\n                                left = x32 * 32 + bit;\n                            }\n                        }\n                        if (x32 * 32 + 31 > right) {\n                            let bit = 31;\n                            while ((theBits >>> bit) === 0) {\n                                bit--;\n                            }\n                            if ((x32 * 32 + bit) > right) {\n                                right = x32 * 32 + bit;\n                            }\n                        }\n                    }\n                }\n            }\n            if (right < left || bottom < top) {\n                return null;\n            }\n            return Int32Array.from([left, top, right - left + 1, bottom - top + 1]);\n        }\n        /**\n         * This is useful in detecting a corner of a 'pure' barcode.\n         *\n         * @return {@code x,y} coordinate of top-left-most 1 bit, or null if it is all white\n         */\n        getTopLeftOnBit() {\n            const rowSize = this.rowSize;\n            const bits = this.bits;\n            let bitsOffset = 0;\n            while (bitsOffset < bits.length && bits[bitsOffset] === 0) {\n                bitsOffset++;\n            }\n            if (bitsOffset === bits.length) {\n                return null;\n            }\n            const y = bitsOffset / rowSize;\n            let x = (bitsOffset % rowSize) * 32;\n            const theBits = bits[bitsOffset];\n            let bit = 0;\n            while (((theBits << (31 - bit)) & 0xFFFFFFFF) === 0) {\n                bit++;\n            }\n            x += bit;\n            return Int32Array.from([x, y]);\n        }\n        getBottomRightOnBit() {\n            const rowSize = this.rowSize;\n            const bits = this.bits;\n            let bitsOffset = bits.length - 1;\n            while (bitsOffset >= 0 && bits[bitsOffset] === 0) {\n                bitsOffset--;\n            }\n            if (bitsOffset < 0) {\n                return null;\n            }\n            const y = Math.floor(bitsOffset / rowSize);\n            let x = Math.floor(bitsOffset % rowSize) * 32;\n            const theBits = bits[bitsOffset];\n            let bit = 31;\n            while ((theBits >>> bit) === 0) {\n                bit--;\n            }\n            x += bit;\n            return Int32Array.from([x, y]);\n        }\n        /**\n         * @return The width of the matrix\n         */\n        getWidth() {\n            return this.width;\n        }\n        /**\n         * @return The height of the matrix\n         */\n        getHeight() {\n            return this.height;\n        }\n        /**\n         * @return The row size of the matrix\n         */\n        getRowSize() {\n            return this.rowSize;\n        }\n        /*@Override*/\n        equals(o) {\n            if (!(o instanceof BitMatrix)) {\n                return false;\n            }\n            const other = o;\n            return this.width === other.width && this.height === other.height && this.rowSize === other.rowSize &&\n                Arrays.equals(this.bits, other.bits);\n        }\n        /*@Override*/\n        hashCode() {\n            let hash = this.width;\n            hash = 31 * hash + this.width;\n            hash = 31 * hash + this.height;\n            hash = 31 * hash + this.rowSize;\n            hash = 31 * hash + Arrays.hashCode(this.bits);\n            return hash;\n        }\n        /**\n         * @return string representation using \"X\" for set and \" \" for unset bits\n         */\n        /*@Override*/\n        // public toString(): string {\n        //   return toString(\": \"X, \"  \")\n        // }\n        /**\n         * @param setString representation of a set bit\n         * @param unsetString representation of an unset bit\n         * @return string representation of entire matrix utilizing given strings\n         */\n        // public toString(setString: string = \"X \", unsetString: string = \"  \"): string {\n        //   return this.buildToString(setString, unsetString, \"\\n\")\n        // }\n        /**\n         * @param setString representation of a set bit\n         * @param unsetString representation of an unset bit\n         * @param lineSeparator newline character in string representation\n         * @return string representation of entire matrix utilizing given strings and line separator\n         * @deprecated call {@link #toString(String,String)} only, which uses \\n line separator always\n         */\n        // @Deprecated\n        toString(setString = 'X ', unsetString = '  ', lineSeparator = '\\n') {\n            return this.buildToString(setString, unsetString, lineSeparator);\n        }\n        buildToString(setString, unsetString, lineSeparator) {\n            let result = new StringBuilder();\n            // result.append(lineSeparator);\n            for (let y = 0, height = this.height; y < height; y++) {\n                for (let x = 0, width = this.width; x < width; x++) {\n                    result.append(this.get(x, y) ? setString : unsetString);\n                }\n                result.append(lineSeparator);\n            }\n            return result.toString();\n        }\n        /*@Override*/\n        clone() {\n            return new BitMatrix(this.width, this.height, this.rowSize, this.bits.slice());\n        }\n    }\n\n    /**\n     * Custom Error class of type Exception.\n     */\n    class NotFoundException extends Exception {\n        static getNotFoundInstance() {\n            return new NotFoundException();\n        }\n    }\n    NotFoundException.kind = 'NotFoundException';\n\n    /*\n     * Copyright 2009 ZXing authors\n     *\n     * Licensed under the Apache License, Version 2.0 (the \"License\");\n     * you may not use this file except in compliance with the License.\n     * You may obtain a copy of the License at\n     *\n     *      http://www.apache.org/licenses/LICENSE-2.0\n     *\n     * Unless required by applicable law or agreed to in writing, software\n     * distributed under the License is distributed on an \"AS IS\" BASIS,\n     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n     * See the License for the specific language governing permissions and\n     * limitations under the License.\n     */\n    /**\n     * This Binarizer implementation uses the old ZXing global histogram approach. It is suitable\n     * for low-end mobile devices which don't have enough CPU or memory to use a local thresholding\n     * algorithm. However, because it picks a global black point, it cannot handle difficult shadows\n     * and gradients.\n     *\n     * Faster mobile devices and all desktop applications should probably use HybridBinarizer instead.\n     *\n     * @author dswitkin@google.com (Daniel Switkin)\n     * @author Sean Owen\n     */\n    class GlobalHistogramBinarizer extends Binarizer {\n        constructor(source) {\n            super(source);\n            this.luminances = GlobalHistogramBinarizer.EMPTY;\n            this.buckets = new Int32Array(GlobalHistogramBinarizer.LUMINANCE_BUCKETS);\n        }\n        // Applies simple sharpening to the row data to improve performance of the 1D Readers.\n        /*@Override*/\n        getBlackRow(y /*int*/, row) {\n            const source = this.getLuminanceSource();\n            const width = source.getWidth();\n            if (row === undefined || row === null || row.getSize() < width) {\n                row = new BitArray(width);\n            }\n            else {\n                row.clear();\n            }\n            this.initArrays(width);\n            const localLuminances = source.getRow(y, this.luminances);\n            const localBuckets = this.buckets;\n            for (let x = 0; x < width; x++) {\n                localBuckets[(localLuminances[x] & 0xff) >> GlobalHistogramBinarizer.LUMINANCE_SHIFT]++;\n            }\n            const blackPoint = GlobalHistogramBinarizer.estimateBlackPoint(localBuckets);\n            if (width < 3) {\n                // Special case for very small images\n                for (let x = 0; x < width; x++) {\n                    if ((localLuminances[x] & 0xff) < blackPoint) {\n                        row.set(x);\n                    }\n                }\n            }\n            else {\n                let left = localLuminances[0] & 0xff;\n                let center = localLuminances[1] & 0xff;\n                for (let x = 1; x < width - 1; x++) {\n                    const right = localLuminances[x + 1] & 0xff;\n                    // A simple -1 4 -1 box filter with a weight of 2.\n                    if (((center * 4) - left - right) / 2 < blackPoint) {\n                        row.set(x);\n                    }\n                    left = center;\n                    center = right;\n                }\n            }\n            return row;\n        }\n        // Does not sharpen the data, as this call is intended to only be used by 2D Readers.\n        /*@Override*/\n        getBlackMatrix() {\n            const source = this.getLuminanceSource();\n            const width = source.getWidth();\n            const height = source.getHeight();\n            const matrix = new BitMatrix(width, height);\n            // Quickly calculates the histogram by sampling four rows from the image. This proved to be\n            // more robust on the blackbox tests than sampling a diagonal as we used to do.\n            this.initArrays(width);\n            const localBuckets = this.buckets;\n            for (let y = 1; y < 5; y++) {\n                const row = Math.floor((height * y) / 5);\n                const localLuminances = source.getRow(row, this.luminances);\n                const right = Math.floor((width * 4) / 5);\n                for (let x = Math.floor(width / 5); x < right; x++) {\n                    const pixel = localLuminances[x] & 0xff;\n                    localBuckets[pixel >> GlobalHistogramBinarizer.LUMINANCE_SHIFT]++;\n                }\n            }\n            const blackPoint = GlobalHistogramBinarizer.estimateBlackPoint(localBuckets);\n            // We delay reading the entire image luminance until the black point estimation succeeds.\n            // Although we end up reading four rows twice, it is consistent with our motto of\n            // \"fail quickly\" which is necessary for continuous scanning.\n            const localLuminances = source.getMatrix();\n            for (let y = 0; y < height; y++) {\n                const offset = y * width;\n                for (let x = 0; x < width; x++) {\n                    const pixel = localLuminances[offset + x] & 0xff;\n                    if (pixel < blackPoint) {\n                        matrix.set(x, y);\n                    }\n                }\n            }\n            return matrix;\n        }\n        /*@Override*/\n        createBinarizer(source) {\n            return new GlobalHistogramBinarizer(source);\n        }\n        initArrays(luminanceSize /*int*/) {\n            if (this.luminances.length < luminanceSize) {\n                this.luminances = new Uint8ClampedArray(luminanceSize);\n            }\n            const buckets = this.buckets;\n            for (let x = 0; x < GlobalHistogramBinarizer.LUMINANCE_BUCKETS; x++) {\n                buckets[x] = 0;\n            }\n        }\n        static estimateBlackPoint(buckets) {\n            // Find the tallest peak in the histogram.\n            const numBuckets = buckets.length;\n            let maxBucketCount = 0;\n            let firstPeak = 0;\n            let firstPeakSize = 0;\n            for (let x = 0; x < numBuckets; x++) {\n                if (buckets[x] > firstPeakSize) {\n                    firstPeak = x;\n                    firstPeakSize = buckets[x];\n                }\n                if (buckets[x] > maxBucketCount) {\n                    maxBucketCount = buckets[x];\n                }\n            }\n            // Find the second-tallest peak which is somewhat far from the tallest peak.\n            let secondPeak = 0;\n            let secondPeakScore = 0;\n            for (let x = 0; x < numBuckets; x++) {\n                const distanceToBiggest = x - firstPeak;\n                // Encourage more distant second peaks by multiplying by square of distance.\n                const score = buckets[x] * distanceToBiggest * distanceToBiggest;\n                if (score > secondPeakScore) {\n                    secondPeak = x;\n                    secondPeakScore = score;\n                }\n            }\n            // Make sure firstPeak corresponds to the black peak.\n            if (firstPeak > secondPeak) {\n                const temp = firstPeak;\n                firstPeak = secondPeak;\n                secondPeak = temp;\n            }\n            // If there is too little contrast in the image to pick a meaningful black point, throw rather\n            // than waste time trying to decode the image, and risk false positives.\n            if (secondPeak - firstPeak <= numBuckets / 16) {\n                throw new NotFoundException();\n            }\n            // Find a valley between them that is low and closer to the white peak.\n            let bestValley = secondPeak - 1;\n            let bestValleyScore = -1;\n            for (let x = secondPeak - 1; x > firstPeak; x--) {\n                const fromFirst = x - firstPeak;\n                const score = fromFirst * fromFirst * (secondPeak - x) * (maxBucketCount - buckets[x]);\n                if (score > bestValleyScore) {\n                    bestValley = x;\n                    bestValleyScore = score;\n                }\n            }\n            return bestValley << GlobalHistogramBinarizer.LUMINANCE_SHIFT;\n        }\n    }\n    GlobalHistogramBinarizer.LUMINANCE_BITS = 5;\n    GlobalHistogramBinarizer.LUMINANCE_SHIFT = 8 - GlobalHistogramBinarizer.LUMINANCE_BITS;\n    GlobalHistogramBinarizer.LUMINANCE_BUCKETS = 1 << GlobalHistogramBinarizer.LUMINANCE_BITS;\n    GlobalHistogramBinarizer.EMPTY = Uint8ClampedArray.from([0]);\n\n    /*\n     * Copyright 2009 ZXing authors\n     *\n     * Licensed under the Apache License, Version 2.0 (the \"License\");\n     * you may not use this file except in compliance with the License.\n     * You may obtain a copy of the License at\n     *\n     *      http://www.apache.org/licenses/LICENSE-2.0\n     *\n     * Unless required by applicable law or agreed to in writing, software\n     * distributed under the License is distributed on an \"AS IS\" BASIS,\n     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n     * See the License for the specific language governing permissions and\n     * limitations under the License.\n     */\n    /**\n     * This class implements a local thresholding algorithm, which while slower than the\n     * GlobalHistogramBinarizer, is fairly efficient for what it does. It is designed for\n     * high frequency images of barcodes with black data on white backgrounds. For this application,\n     * it does a much better job than a global blackpoint with severe shadows and gradients.\n     * However it tends to produce artifacts on lower frequency images and is therefore not\n     * a good general purpose binarizer for uses outside ZXing.\n     *\n     * This class extends GlobalHistogramBinarizer, using the older histogram approach for 1D readers,\n     * and the newer local approach for 2D readers. 1D decoding using a per-row histogram is already\n     * inherently local, and only fails for horizontal gradients. We can revisit that problem later,\n     * but for now it was not a win to use local blocks for 1D.\n     *\n     * This Binarizer is the default for the unit tests and the recommended class for library users.\n     *\n     * @author dswitkin@google.com (Daniel Switkin)\n     */\n    class HybridBinarizer extends GlobalHistogramBinarizer {\n        constructor(source) {\n            super(source);\n            this.matrix = null;\n        }\n        /**\n         * Calculates the final BitMatrix once for all requests. This could be called once from the\n         * constructor instead, but there are some advantages to doing it lazily, such as making\n         * profiling easier, and not doing heavy lifting when callers don't expect it.\n         */\n        /*@Override*/\n        getBlackMatrix() {\n            if (this.matrix !== null) {\n                return this.matrix;\n            }\n            const source = this.getLuminanceSource();\n            const width = source.getWidth();\n            const height = source.getHeight();\n            if (width >= HybridBinarizer.MINIMUM_DIMENSION && height >= HybridBinarizer.MINIMUM_DIMENSION) {\n                const luminances = source.getMatrix();\n                let subWidth = width >> HybridBinarizer.BLOCK_SIZE_POWER;\n                if ((width & HybridBinarizer.BLOCK_SIZE_MASK) !== 0) {\n                    subWidth++;\n                }\n                let subHeight = height >> HybridBinarizer.BLOCK_SIZE_POWER;\n                if ((height & HybridBinarizer.BLOCK_SIZE_MASK) !== 0) {\n                    subHeight++;\n                }\n                const blackPoints = HybridBinarizer.calculateBlackPoints(luminances, subWidth, subHeight, width, height);\n                const newMatrix = new BitMatrix(width, height);\n                HybridBinarizer.calculateThresholdForBlock(luminances, subWidth, subHeight, width, height, blackPoints, newMatrix);\n                this.matrix = newMatrix;\n            }\n            else {\n                // If the image is too small, fall back to the global histogram approach.\n                this.matrix = super.getBlackMatrix();\n            }\n            return this.matrix;\n        }\n        /*@Override*/\n        createBinarizer(source) {\n            return new HybridBinarizer(source);\n        }\n        /**\n         * For each block in the image, calculate the average black point using a 5x5 grid\n         * of the blocks around it. Also handles the corner cases (fractional blocks are computed based\n         * on the last pixels in the row/column which are also used in the previous block).\n         */\n        static calculateThresholdForBlock(luminances, subWidth /*int*/, subHeight /*int*/, width /*int*/, height /*int*/, blackPoints, matrix) {\n            const maxYOffset = height - HybridBinarizer.BLOCK_SIZE;\n            const maxXOffset = width - HybridBinarizer.BLOCK_SIZE;\n            for (let y = 0; y < subHeight; y++) {\n                let yoffset = y << HybridBinarizer.BLOCK_SIZE_POWER;\n                if (yoffset > maxYOffset) {\n                    yoffset = maxYOffset;\n                }\n                const top = HybridBinarizer.cap(y, 2, subHeight - 3);\n                for (let x = 0; x < subWidth; x++) {\n                    let xoffset = x << HybridBinarizer.BLOCK_SIZE_POWER;\n                    if (xoffset > maxXOffset) {\n                        xoffset = maxXOffset;\n                    }\n                    const left = HybridBinarizer.cap(x, 2, subWidth - 3);\n                    let sum = 0;\n                    for (let z = -2; z <= 2; z++) {\n                        const blackRow = blackPoints[top + z];\n                        sum += blackRow[left - 2] + blackRow[left - 1] + blackRow[left] + blackRow[left + 1] + blackRow[left + 2];\n                    }\n                    const average = sum / 25;\n                    HybridBinarizer.thresholdBlock(luminances, xoffset, yoffset, average, width, matrix);\n                }\n            }\n        }\n        static cap(value /*int*/, min /*int*/, max /*int*/) {\n            return value < min ? min : value > max ? max : value;\n        }\n        /**\n         * Applies a single threshold to a block of pixels.\n         */\n        static thresholdBlock(luminances, xoffset /*int*/, yoffset /*int*/, threshold /*int*/, stride /*int*/, matrix) {\n            for (let y = 0, offset = yoffset * stride + xoffset; y < HybridBinarizer.BLOCK_SIZE; y++, offset += stride) {\n                for (let x = 0; x < HybridBinarizer.BLOCK_SIZE; x++) {\n                    // Comparison needs to be <= so that black == 0 pixels are black even if the threshold is 0.\n                    if ((luminances[offset + x] & 0xFF) <= threshold) {\n                        matrix.set(xoffset + x, yoffset + y);\n                    }\n                }\n            }\n        }\n        /**\n         * Calculates a single black point for each block of pixels and saves it away.\n         * See the following thread for a discussion of this algorithm:\n         *  http://groups.google.com/group/zxing/browse_thread/thread/d06efa2c35a7ddc0\n         */\n        static calculateBlackPoints(luminances, subWidth /*int*/, subHeight /*int*/, width /*int*/, height /*int*/) {\n            const maxYOffset = height - HybridBinarizer.BLOCK_SIZE;\n            const maxXOffset = width - HybridBinarizer.BLOCK_SIZE;\n            // tslint:disable-next-line:whitespace\n            const blackPoints = new Array(subHeight); // subWidth\n            for (let y = 0; y < subHeight; y++) {\n                blackPoints[y] = new Int32Array(subWidth);\n                let yoffset = y << HybridBinarizer.BLOCK_SIZE_POWER;\n                if (yoffset > maxYOffset) {\n                    yoffset = maxYOffset;\n                }\n                for (let x = 0; x < subWidth; x++) {\n                    let xoffset = x << HybridBinarizer.BLOCK_SIZE_POWER;\n                    if (xoffset > maxXOffset) {\n                        xoffset = maxXOffset;\n                    }\n                    let sum = 0;\n                    let min = 0xFF;\n                    let max = 0;\n                    for (let yy = 0, offset = yoffset * width + xoffset; yy < HybridBinarizer.BLOCK_SIZE; yy++, offset += width) {\n                        for (let xx = 0; xx < HybridBinarizer.BLOCK_SIZE; xx++) {\n                            const pixel = luminances[offset + xx] & 0xFF;\n                            sum += pixel;\n                            // still looking for good contrast\n                            if (pixel < min) {\n                                min = pixel;\n                            }\n                            if (pixel > max) {\n                                max = pixel;\n                            }\n                        }\n                        // short-circuit min/max tests once dynamic range is met\n                        if (max - min > HybridBinarizer.MIN_DYNAMIC_RANGE) {\n                            // finish the rest of the rows quickly\n                            for (yy++, offset += width; yy < HybridBinarizer.BLOCK_SIZE; yy++, offset += width) {\n                                for (let xx = 0; xx < HybridBinarizer.BLOCK_SIZE; xx++) {\n                                    sum += luminances[offset + xx] & 0xFF;\n                                }\n                            }\n                        }\n                    }\n                    // The default estimate is the average of the values in the block.\n                    let average = sum >> (HybridBinarizer.BLOCK_SIZE_POWER * 2);\n                    if (max - min <= HybridBinarizer.MIN_DYNAMIC_RANGE) {\n                        // If variation within the block is low, assume this is a block with only light or only\n                        // dark pixels. In that case we do not want to use the average, as it would divide this\n                        // low contrast area into black and white pixels, essentially creating data out of noise.\n                        //\n                        // The default assumption is that the block is light/background. Since no estimate for\n                        // the level of dark pixels exists locally, use half the min for the block.\n                        average = min / 2;\n                        if (y > 0 && x > 0) {\n                            // Correct the \"white background\" assumption for blocks that have neighbors by comparing\n                            // the pixels in this block to the previously calculated black points. This is based on\n                            // the fact that dark barcode symbology is always surrounded by some amount of light\n                            // background for which reasonable black point estimates were made. The bp estimated at\n                            // the boundaries is used for the interior.\n                            // The (min < bp) is arbitrary but works better than other heuristics that were tried.\n                            const averageNeighborBlackPoint = (blackPoints[y - 1][x] + (2 * blackPoints[y][x - 1]) + blackPoints[y - 1][x - 1]) / 4;\n                            if (min < averageNeighborBlackPoint) {\n                                average = averageNeighborBlackPoint;\n                            }\n                        }\n                    }\n                    blackPoints[y][x] = average;\n                }\n            }\n            return blackPoints;\n        }\n    }\n    // This class uses 5x5 blocks to compute local luminance, where each block is 8x8 pixels.\n    // So this is the smallest dimension in each axis we can accept.\n    HybridBinarizer.BLOCK_SIZE_POWER = 3;\n    HybridBinarizer.BLOCK_SIZE = 1 << HybridBinarizer.BLOCK_SIZE_POWER; // ...0100...00\n    HybridBinarizer.BLOCK_SIZE_MASK = HybridBinarizer.BLOCK_SIZE - 1; // ...0011...11\n    HybridBinarizer.MINIMUM_DIMENSION = HybridBinarizer.BLOCK_SIZE * 5;\n    HybridBinarizer.MIN_DYNAMIC_RANGE = 24;\n\n    /*\n     * Copyright 2009 ZXing authors\n     *\n     * Licensed under the Apache License, Version 2.0 (the \"License\");\n     * you may not use this file except in compliance with the License.\n     * You may obtain a copy of the License at\n     *\n     *      http://www.apache.org/licenses/LICENSE-2.0\n     *\n     * Unless required by applicable law or agreed to in writing, software\n     * distributed under the License is distributed on an \"AS IS\" BASIS,\n     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n     * See the License for the specific language governing permissions and\n     * limitations under the License.\n     */\n    /*namespace com.google.zxing {*/\n    /**\n     * The purpose of this class hierarchy is to abstract different bitmap implementations across\n     * platforms into a standard interface for requesting greyscale luminance values. The interface\n     * only provides immutable methods; therefore crop and rotation create copies. This is to ensure\n     * that one Reader does not modify the original luminance source and leave it in an unknown state\n     * for other Readers in the chain.\n     *\n     * @author dswitkin@google.com (Daniel Switkin)\n     */\n    class LuminanceSource {\n        constructor(width /*int*/, height /*int*/) {\n            this.width = width;\n            this.height = height;\n        }\n        /**\n         * @return The width of the bitmap.\n         */\n        getWidth() {\n            return this.width;\n        }\n        /**\n         * @return The height of the bitmap.\n         */\n        getHeight() {\n            return this.height;\n        }\n        /**\n         * @return Whether this subclass supports cropping.\n         */\n        isCropSupported() {\n            return false;\n        }\n        /**\n         * Returns a new object with cropped image data. Implementations may keep a reference to the\n         * original data rather than a copy. Only callable if isCropSupported() is true.\n         *\n         * @param left The left coordinate, which must be in [0,getWidth())\n         * @param top The top coordinate, which must be in [0,getHeight())\n         * @param width The width of the rectangle to crop.\n         * @param height The height of the rectangle to crop.\n         * @return A cropped version of this object.\n         */\n        crop(left /*int*/, top /*int*/, width /*int*/, height /*int*/) {\n            throw new UnsupportedOperationException('This luminance source does not support cropping.');\n        }\n        /**\n         * @return Whether this subclass supports counter-clockwise rotation.\n         */\n        isRotateSupported() {\n            return false;\n        }\n        /**\n         * Returns a new object with rotated image data by 90 degrees counterclockwise.\n         * Only callable if {@link #isRotateSupported()} is true.\n         *\n         * @return A rotated version of this object.\n         */\n        rotateCounterClockwise() {\n            throw new UnsupportedOperationException('This luminance source does not support rotation by 90 degrees.');\n        }\n        /**\n         * Returns a new object with rotated image data by 45 degrees counterclockwise.\n         * Only callable if {@link #isRotateSupported()} is true.\n         *\n         * @return A rotated version of this object.\n         */\n        rotateCounterClockwise45() {\n            throw new UnsupportedOperationException('This luminance source does not support rotation by 45 degrees.');\n        }\n        /*@Override*/\n        toString() {\n            const row = new Uint8ClampedArray(this.width);\n            let result = new StringBuilder();\n            for (let y = 0; y < this.height; y++) {\n                const sourceRow = this.getRow(y, row);\n                for (let x = 0; x < this.width; x++) {\n                    const luminance = sourceRow[x] & 0xFF;\n                    let c;\n                    if (luminance < 0x40) {\n                        c = '#';\n                    }\n                    else if (luminance < 0x80) {\n                        c = '+';\n                    }\n                    else if (luminance < 0xC0) {\n                        c = '.';\n                    }\n                    else {\n                        c = ' ';\n                    }\n                    result.append(c);\n                }\n                result.append('\\n');\n            }\n            return result.toString();\n        }\n    }\n\n    /*\n     * Copyright 2009 ZXing authors\n     *\n     * Licensed under the Apache License, Version 2.0 (the \"License\");\n     * you may not use this file except in compliance with the License.\n     * You may obtain a copy of the License at\n     *\n     *      http://www.apache.org/licenses/LICENSE-2.0\n     *\n     * Unless required by applicable law or agreed to in writing, software\n     * distributed under the License is distributed on an \"AS IS\" BASIS,\n     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n     * See the License for the specific language governing permissions and\n     * limitations under the License.\n     */\n    /*namespace com.google.zxing {*/\n    /**\n     * A wrapper implementation of {@link LuminanceSource} which inverts the luminances it returns -- black becomes\n     * white and vice versa, and each value becomes (255-value).\n     *\n     * @author Sean Owen\n     */\n    class InvertedLuminanceSource extends LuminanceSource {\n        constructor(delegate) {\n            super(delegate.getWidth(), delegate.getHeight());\n            this.delegate = delegate;\n        }\n        /*@Override*/\n        getRow(y /*int*/, row) {\n            const sourceRow = this.delegate.getRow(y, row);\n            const width = this.getWidth();\n            for (let i = 0; i < width; i++) {\n                sourceRow[i] = /*(byte)*/ (255 - (sourceRow[i] & 0xFF));\n            }\n            return sourceRow;\n        }\n        /*@Override*/\n        getMatrix() {\n            const matrix = this.delegate.getMatrix();\n            const length = this.getWidth() * this.getHeight();\n            const invertedMatrix = new Uint8ClampedArray(length);\n            for (let i = 0; i < length; i++) {\n                invertedMatrix[i] = /*(byte)*/ (255 - (matrix[i] & 0xFF));\n            }\n            return invertedMatrix;\n        }\n        /*@Override*/\n        isCropSupported() {\n            return this.delegate.isCropSupported();\n        }\n        /*@Override*/\n        crop(left /*int*/, top /*int*/, width /*int*/, height /*int*/) {\n            return new InvertedLuminanceSource(this.delegate.crop(left, top, width, height));\n        }\n        /*@Override*/\n        isRotateSupported() {\n            return this.delegate.isRotateSupported();\n        }\n        /**\n         * @return original delegate {@link LuminanceSource} since invert undoes itself\n         */\n        /*@Override*/\n        invert() {\n            return this.delegate;\n        }\n        /*@Override*/\n        rotateCounterClockwise() {\n            return new InvertedLuminanceSource(this.delegate.rotateCounterClockwise());\n        }\n        /*@Override*/\n        rotateCounterClockwise45() {\n            return new InvertedLuminanceSource(this.delegate.rotateCounterClockwise45());\n        }\n    }\n\n    /**\n     * @deprecated Moving to @zxing/browser\n     */\n    class HTMLCanvasElementLuminanceSource extends LuminanceSource {\n        constructor(canvas) {\n            super(canvas.width, canvas.height);\n            this.canvas = canvas;\n            this.tempCanvasElement = null;\n            this.buffer = HTMLCanvasElementLuminanceSource.makeBufferFromCanvasImageData(canvas);\n        }\n        static makeBufferFromCanvasImageData(canvas) {\n            const imageData = canvas.getContext('2d').getImageData(0, 0, canvas.width, canvas.height);\n            return HTMLCanvasElementLuminanceSource.toGrayscaleBuffer(imageData.data, canvas.width, canvas.height);\n        }\n        static toGrayscaleBuffer(imageBuffer, width, height) {\n            const grayscaleBuffer = new Uint8ClampedArray(width * height);\n            for (let i = 0, j = 0, length = imageBuffer.length; i < length; i += 4, j++) {\n                let gray;\n                const alpha = imageBuffer[i + 3];\n                // The color of fully-transparent pixels is irrelevant. They are often, technically, fully-transparent\n                // black (0 alpha, and then 0 RGB). They are often used, of course as the \"white\" area in a\n                // barcode image. Force any such pixel to be white:\n                if (alpha === 0) {\n                    gray = 0xFF;\n                }\n                else {\n                    const pixelR = imageBuffer[i];\n                    const pixelG = imageBuffer[i + 1];\n                    const pixelB = imageBuffer[i + 2];\n                    // .299R + 0.587G + 0.114B (YUV/YIQ for PAL and NTSC),\n                    // (306*R) >> 10 is approximately equal to R*0.299, and so on.\n                    // 0x200 >> 10 is 0.5, it implements rounding.\n                    gray = (306 * pixelR +\n                        601 * pixelG +\n                        117 * pixelB +\n                        0x200) >> 10;\n                }\n                grayscaleBuffer[j] = gray;\n            }\n            return grayscaleBuffer;\n        }\n        getRow(y /*int*/, row) {\n            if (y < 0 || y >= this.getHeight()) {\n                throw new IllegalArgumentException('Requested row is outside the image: ' + y);\n            }\n            const width = this.getWidth();\n            const start = y * width;\n            if (row === null) {\n                row = this.buffer.slice(start, start + width);\n            }\n            else {\n                if (row.length < width) {\n                    row = new Uint8ClampedArray(width);\n                }\n                // The underlying raster of image consists of bytes with the luminance values\n                // TODO: can avoid set/slice?\n                row.set(this.buffer.slice(start, start + width));\n            }\n            return row;\n        }\n        getMatrix() {\n            return this.buffer;\n        }\n        isCropSupported() {\n            return true;\n        }\n        crop(left /*int*/, top /*int*/, width /*int*/, height /*int*/) {\n            super.crop(left, top, width, height);\n            return this;\n        }\n        /**\n         * This is always true, since the image is a gray-scale image.\n         *\n         * @return true\n         */\n        isRotateSupported() {\n            return true;\n        }\n        rotateCounterClockwise() {\n            this.rotate(-90);\n            return this;\n        }\n        rotateCounterClockwise45() {\n            this.rotate(-45);\n            return this;\n        }\n        getTempCanvasElement() {\n            if (null === this.tempCanvasElement) {\n                const tempCanvasElement = this.canvas.ownerDocument.createElement('canvas');\n                tempCanvasElement.width = this.canvas.width;\n                tempCanvasElement.height = this.canvas.height;\n                this.tempCanvasElement = tempCanvasElement;\n            }\n            return this.tempCanvasElement;\n        }\n        rotate(angle) {\n            const tempCanvasElement = this.getTempCanvasElement();\n            const tempContext = tempCanvasElement.getContext('2d');\n            const angleRadians = angle * HTMLCanvasElementLuminanceSource.DEGREE_TO_RADIANS;\n            // Calculate and set new dimensions for temp canvas\n            const width = this.canvas.width;\n            const height = this.canvas.height;\n            const newWidth = Math.ceil(Math.abs(Math.cos(angleRadians)) * width + Math.abs(Math.sin(angleRadians)) * height);\n            const newHeight = Math.ceil(Math.abs(Math.sin(angleRadians)) * width + Math.abs(Math.cos(angleRadians)) * height);\n            tempCanvasElement.width = newWidth;\n            tempCanvasElement.height = newHeight;\n            // Draw at center of temp canvas to prevent clipping of image data\n            tempContext.translate(newWidth / 2, newHeight / 2);\n            tempContext.rotate(angleRadians);\n            tempContext.drawImage(this.canvas, width / -2, height / -2);\n            this.buffer = HTMLCanvasElementLuminanceSource.makeBufferFromCanvasImageData(tempCanvasElement);\n            return this;\n        }\n        invert() {\n            return new InvertedLuminanceSource(this);\n        }\n    }\n    HTMLCanvasElementLuminanceSource.DEGREE_TO_RADIANS = Math.PI / 180;\n\n    /**\n     * @deprecated Moving to @zxing/browser\n     *\n     * Video input device metadata containing the id and label of the device if available.\n     */\n    class VideoInputDevice {\n        /**\n         * Creates an instance of VideoInputDevice.\n         *\n         * @param {string} deviceId the video input device id\n         * @param {string} label the label of the device if available\n         */\n        constructor(deviceId, label, groupId) {\n            this.deviceId = deviceId;\n            this.label = label;\n            /** @inheritdoc */\n            this.kind = 'videoinput';\n            this.groupId = groupId || undefined;\n        }\n        /** @inheritdoc */\n        toJSON() {\n            return {\n                kind: this.kind,\n                groupId: this.groupId,\n                deviceId: this.deviceId,\n                label: this.label,\n            };\n        }\n    }\n\n    var __awaiter = ((globalThis || global || self || window || undefined) && (globalThis || global || self || window || undefined).__awaiter) || function (thisArg, _arguments, P, generator) {\n        function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n        return new (P || (P = Promise))(function (resolve, reject) {\n            function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n            function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n            function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n            step((generator = generator.apply(thisArg, _arguments || [])).next());\n        });\n    };\n    /**\n     * @deprecated Moving to @zxing/browser\n     *\n     * Base class for browser code reader.\n     */\n    class BrowserCodeReader {\n        /**\n         * Creates an instance of BrowserCodeReader.\n         * @param {Reader} reader The reader instance to decode the barcode\n         * @param {number} [timeBetweenScansMillis=500] the time delay between subsequent successful decode tries\n         *\n         * @memberOf BrowserCodeReader\n         */\n        constructor(reader, timeBetweenScansMillis = 500, _hints) {\n            this.reader = reader;\n            this.timeBetweenScansMillis = timeBetweenScansMillis;\n            this._hints = _hints;\n            /**\n             * This will break the loop.\n             */\n            this._stopContinuousDecode = false;\n            /**\n             * This will break the loop.\n             */\n            this._stopAsyncDecode = false;\n            /**\n             * Delay time between decode attempts made by the scanner.\n             */\n            this._timeBetweenDecodingAttempts = 0;\n        }\n        /**\n         * If navigator is present.\n         */\n        get hasNavigator() {\n            return typeof navigator !== 'undefined';\n        }\n        /**\n         * If mediaDevices under navigator is supported.\n         */\n        get isMediaDevicesSuported() {\n            return this.hasNavigator && !!navigator.mediaDevices;\n        }\n        /**\n         * If enumerateDevices under navigator is supported.\n         */\n        get canEnumerateDevices() {\n            return !!(this.isMediaDevicesSuported && navigator.mediaDevices.enumerateDevices);\n        }\n        /** Time between two decoding tries in milli seconds. */\n        get timeBetweenDecodingAttempts() {\n            return this._timeBetweenDecodingAttempts;\n        }\n        /**\n         * Change the time span the decoder waits between two decoding tries.\n         *\n         * @param {number} millis Time between two decoding tries in milli seconds.\n         */\n        set timeBetweenDecodingAttempts(millis) {\n            this._timeBetweenDecodingAttempts = millis < 0 ? 0 : millis;\n        }\n        /**\n         * Sets the hints.\n         */\n        set hints(hints) {\n            this._hints = hints || null;\n        }\n        /**\n         * Sets the hints.\n         */\n        get hints() {\n            return this._hints;\n        }\n        /**\n         * Lists all the available video input devices.\n         */\n        listVideoInputDevices() {\n            return __awaiter(this, void 0, void 0, function* () {\n                if (!this.hasNavigator) {\n                    throw new Error('Can\\'t enumerate devices, navigator is not present.');\n                }\n                if (!this.canEnumerateDevices) {\n                    throw new Error('Can\\'t enumerate devices, method not supported.');\n                }\n                const devices = yield navigator.mediaDevices.enumerateDevices();\n                const videoDevices = [];\n                for (const device of devices) {\n                    const kind = device.kind === 'video' ? 'videoinput' : device.kind;\n                    if (kind !== 'videoinput') {\n                        continue;\n                    }\n                    const deviceId = device.deviceId || device.id;\n                    const label = device.label || `Video device ${videoDevices.length + 1}`;\n                    const groupId = device.groupId;\n                    const videoDevice = { deviceId, label, kind, groupId };\n                    videoDevices.push(videoDevice);\n                }\n                return videoDevices;\n            });\n        }\n        /**\n         * Obtain the list of available devices with type 'videoinput'.\n         *\n         * @returns {Promise<VideoInputDevice[]>} an array of available video input devices\n         *\n         * @memberOf BrowserCodeReader\n         *\n         * @deprecated Use `listVideoInputDevices` instead.\n         */\n        getVideoInputDevices() {\n            return __awaiter(this, void 0, void 0, function* () {\n                const devices = yield this.listVideoInputDevices();\n                return devices.map(d => new VideoInputDevice(d.deviceId, d.label));\n            });\n        }\n        /**\n         * Let's you find a device using it's Id.\n         */\n        findDeviceById(deviceId) {\n            return __awaiter(this, void 0, void 0, function* () {\n                const devices = yield this.listVideoInputDevices();\n                if (!devices) {\n                    return null;\n                }\n                return devices.find(x => x.deviceId === deviceId);\n            });\n        }\n        /**\n         * Decodes the barcode from the device specified by deviceId while showing the video in the specified video element.\n         *\n         * @param deviceId the id of one of the devices obtained after calling getVideoInputDevices. Can be undefined, in this case it will decode from one of the available devices, preffering the main camera (environment facing) if available.\n         * @param video the video element in page where to show the video while decoding. Can be either an element id or directly an HTMLVideoElement. Can be undefined, in which case no video will be shown.\n         * @returns The decoding result.\n         *\n         * @memberOf BrowserCodeReader\n         *\n         * @deprecated Use `decodeOnceFromVideoDevice` instead.\n         */\n        decodeFromInputVideoDevice(deviceId, videoSource) {\n            return __awaiter(this, void 0, void 0, function* () {\n                return yield this.decodeOnceFromVideoDevice(deviceId, videoSource);\n            });\n        }\n        /**\n         * In one attempt, tries to decode the barcode from the device specified by deviceId while showing the video in the specified video element.\n         *\n         * @param deviceId the id of one of the devices obtained after calling getVideoInputDevices. Can be undefined, in this case it will decode from one of the available devices, preffering the main camera (environment facing) if available.\n         * @param video the video element in page where to show the video while decoding. Can be either an element id or directly an HTMLVideoElement. Can be undefined, in which case no video will be shown.\n         * @returns The decoding result.\n         *\n         * @memberOf BrowserCodeReader\n         */\n        decodeOnceFromVideoDevice(deviceId, videoSource) {\n            return __awaiter(this, void 0, void 0, function* () {\n                this.reset();\n                let videoConstraints;\n                if (!deviceId) {\n                    videoConstraints = { facingMode: 'environment' };\n                }\n                else {\n                    videoConstraints = { deviceId: { exact: deviceId } };\n                }\n                const constraints = { video: videoConstraints };\n                return yield this.decodeOnceFromConstraints(constraints, videoSource);\n            });\n        }\n        /**\n         * In one attempt, tries to decode the barcode from a stream obtained from the given constraints while showing the video in the specified video element.\n         *\n         * @param constraints the media stream constraints to get s valid media stream to decode from\n         * @param video the video element in page where to show the video while decoding. Can be either an element id or directly an HTMLVideoElement. Can be undefined, in which case no video will be shown.\n         * @returns The decoding result.\n         *\n         * @memberOf BrowserCodeReader\n         */\n        decodeOnceFromConstraints(constraints, videoSource) {\n            return __awaiter(this, void 0, void 0, function* () {\n                const stream = yield navigator.mediaDevices.getUserMedia(constraints);\n                return yield this.decodeOnceFromStream(stream, videoSource);\n            });\n        }\n        /**\n         * In one attempt, tries to decode the barcode from a stream obtained from the given constraints while showing the video in the specified video element.\n         *\n         * @param {MediaStream} [constraints] the media stream constraints to get s valid media stream to decode from\n         * @param {string|HTMLVideoElement} [video] the video element in page where to show the video while decoding. Can be either an element id or directly an HTMLVideoElement. Can be undefined, in which case no video will be shown.\n         * @returns {Promise<Result>} The decoding result.\n         *\n         * @memberOf BrowserCodeReader\n         */\n        decodeOnceFromStream(stream, videoSource) {\n            return __awaiter(this, void 0, void 0, function* () {\n                this.reset();\n                const video = yield this.attachStreamToVideo(stream, videoSource);\n                const result = yield this.decodeOnce(video);\n                return result;\n            });\n        }\n        /**\n         * Continuously decodes the barcode from the device specified by device while showing the video in the specified video element.\n         *\n         * @param {string|null} [deviceId] the id of one of the devices obtained after calling getVideoInputDevices. Can be undefined, in this case it will decode from one of the available devices, preffering the main camera (environment facing) if available.\n         * @param {string|HTMLVideoElement|null} [video] the video element in page where to show the video while decoding. Can be either an element id or directly an HTMLVideoElement. Can be undefined, in which case no video will be shown.\n         * @returns {Promise<void>}\n         *\n         * @memberOf BrowserCodeReader\n         *\n         * @deprecated Use `decodeFromVideoDevice` instead.\n         */\n        decodeFromInputVideoDeviceContinuously(deviceId, videoSource, callbackFn) {\n            return __awaiter(this, void 0, void 0, function* () {\n                return yield this.decodeFromVideoDevice(deviceId, videoSource, callbackFn);\n            });\n        }\n        /**\n         * Continuously tries to decode the barcode from the device specified by device while showing the video in the specified video element.\n         *\n         * @param {string|null} [deviceId] the id of one of the devices obtained after calling getVideoInputDevices. Can be undefined, in this case it will decode from one of the available devices, preffering the main camera (environment facing) if available.\n         * @param {string|HTMLVideoElement|null} [video] the video element in page where to show the video while decoding. Can be either an element id or directly an HTMLVideoElement. Can be undefined, in which case no video will be shown.\n         * @returns {Promise<void>}\n         *\n         * @memberOf BrowserCodeReader\n         */\n        decodeFromVideoDevice(deviceId, videoSource, callbackFn) {\n            return __awaiter(this, void 0, void 0, function* () {\n                let videoConstraints;\n                if (!deviceId) {\n                    videoConstraints = { facingMode: 'environment' };\n                }\n                else {\n                    videoConstraints = { deviceId: { exact: deviceId } };\n                }\n                const constraints = { video: videoConstraints };\n                return yield this.decodeFromConstraints(constraints, videoSource, callbackFn);\n            });\n        }\n        /**\n         * Continuously tries to decode the barcode from a stream obtained from the given constraints while showing the video in the specified video element.\n         *\n         * @param {MediaStream} [constraints] the media stream constraints to get s valid media stream to decode from\n         * @param {string|HTMLVideoElement} [video] the video element in page where to show the video while decoding. Can be either an element id or directly an HTMLVideoElement. Can be undefined, in which case no video will be shown.\n         * @returns {Promise<Result>} The decoding result.\n         *\n         * @memberOf BrowserCodeReader\n         */\n        decodeFromConstraints(constraints, videoSource, callbackFn) {\n            return __awaiter(this, void 0, void 0, function* () {\n                const stream = yield navigator.mediaDevices.getUserMedia(constraints);\n                return yield this.decodeFromStream(stream, videoSource, callbackFn);\n            });\n        }\n        /**\n         * In one attempt, tries to decode the barcode from a stream obtained from the given constraints while showing the video in the specified video element.\n         *\n         * @param {MediaStream} [constraints] the media stream constraints to get s valid media stream to decode from\n         * @param {string|HTMLVideoElement} [video] the video element in page where to show the video while decoding. Can be either an element id or directly an HTMLVideoElement. Can be undefined, in which case no video will be shown.\n         * @returns {Promise<Result>} The decoding result.\n         *\n         * @memberOf BrowserCodeReader\n         */\n        decodeFromStream(stream, videoSource, callbackFn) {\n            return __awaiter(this, void 0, void 0, function* () {\n                this.reset();\n                const video = yield this.attachStreamToVideo(stream, videoSource);\n                return yield this.decodeContinuously(video, callbackFn);\n            });\n        }\n        /**\n         * Breaks the decoding loop.\n         */\n        stopAsyncDecode() {\n            this._stopAsyncDecode = true;\n        }\n        /**\n         * Breaks the decoding loop.\n         */\n        stopContinuousDecode() {\n            this._stopContinuousDecode = true;\n        }\n        /**\n         * Sets the new stream and request a new decoding-with-delay.\n         *\n         * @param stream The stream to be shown in the video element.\n         * @param decodeFn A callback for the decode method.\n         */\n        attachStreamToVideo(stream, videoSource) {\n            return __awaiter(this, void 0, void 0, function* () {\n                const videoElement = this.prepareVideoElement(videoSource);\n                this.addVideoSource(videoElement, stream);\n                this.videoElement = videoElement;\n                this.stream = stream;\n                yield this.playVideoOnLoadAsync(videoElement);\n                return videoElement;\n            });\n        }\n        /**\n         *\n         * @param videoElement\n         */\n        playVideoOnLoadAsync(videoElement) {\n            return new Promise((resolve, reject) => this.playVideoOnLoad(videoElement, () => resolve()));\n        }\n        /**\n         * Binds listeners and callbacks to the videoElement.\n         *\n         * @param element\n         * @param callbackFn\n         */\n        playVideoOnLoad(element, callbackFn) {\n            this.videoEndedListener = () => this.stopStreams();\n            this.videoCanPlayListener = () => this.tryPlayVideo(element);\n            element.addEventListener('ended', this.videoEndedListener);\n            element.addEventListener('canplay', this.videoCanPlayListener);\n            element.addEventListener('playing', callbackFn);\n            // if canplay was already fired, we won't know when to play, so just give it a try\n            this.tryPlayVideo(element);\n        }\n        /**\n         * Checks if the given video element is currently playing.\n         */\n        isVideoPlaying(video) {\n            return video.currentTime > 0 && !video.paused && !video.ended && video.readyState > 2;\n        }\n        /**\n         * Just tries to play the video and logs any errors.\n         * The play call is only made is the video is not already playing.\n         */\n        tryPlayVideo(videoElement) {\n            return __awaiter(this, void 0, void 0, function* () {\n                if (this.isVideoPlaying(videoElement)) {\n                    console.warn('Trying to play video that is already playing.');\n                    return;\n                }\n                try {\n                    yield videoElement.play();\n                }\n                catch (_a) {\n                    console.warn('It was not possible to play the video.');\n                }\n            });\n        }\n        /**\n         * Searches and validates a media element.\n         */\n        getMediaElement(mediaElementId, type) {\n            const mediaElement = document.getElementById(mediaElementId);\n            if (!mediaElement) {\n                throw new ArgumentException(`element with id '${mediaElementId}' not found`);\n            }\n            if (mediaElement.nodeName.toLowerCase() !== type.toLowerCase()) {\n                throw new ArgumentException(`element with id '${mediaElementId}' must be an ${type} element`);\n            }\n            return mediaElement;\n        }\n        /**\n         * Decodes the barcode from an image.\n         *\n         * @param {(string|HTMLImageElement)} [source] The image element that can be either an element id or the element itself. Can be undefined in which case the decoding will be done from the imageUrl parameter.\n         * @param {string} [url]\n         * @returns {Promise<Result>} The decoding result.\n         *\n         * @memberOf BrowserCodeReader\n         */\n        decodeFromImage(source, url) {\n            if (!source && !url) {\n                throw new ArgumentException('either imageElement with a src set or an url must be provided');\n            }\n            if (url && !source) {\n                return this.decodeFromImageUrl(url);\n            }\n            return this.decodeFromImageElement(source);\n        }\n        /**\n         * Decodes the barcode from a video.\n         *\n         * @param {(string|HTMLImageElement)} [source] The image element that can be either an element id or the element itself. Can be undefined in which case the decoding will be done from the imageUrl parameter.\n         * @param {string} [url]\n         * @returns {Promise<Result>} The decoding result.\n         *\n         * @memberOf BrowserCodeReader\n         */\n        decodeFromVideo(source, url) {\n            if (!source && !url) {\n                throw new ArgumentException('Either an element with a src set or an URL must be provided');\n            }\n            if (url && !source) {\n                return this.decodeFromVideoUrl(url);\n            }\n            return this.decodeFromVideoElement(source);\n        }\n        /**\n         * Decodes continuously the barcode from a video.\n         *\n         * @param {(string|HTMLImageElement)} [source] The image element that can be either an element id or the element itself. Can be undefined in which case the decoding will be done from the imageUrl parameter.\n         * @param {string} [url]\n         * @returns {Promise<Result>} The decoding result.\n         *\n         * @memberOf BrowserCodeReader\n         *\n         * @experimental\n         */\n        decodeFromVideoContinuously(source, url, callbackFn) {\n            if (undefined === source && undefined === url) {\n                throw new ArgumentException('Either an element with a src set or an URL must be provided');\n            }\n            if (url && !source) {\n                return this.decodeFromVideoUrlContinuously(url, callbackFn);\n            }\n            return this.decodeFromVideoElementContinuously(source, callbackFn);\n        }\n        /**\n         * Decodes something from an image HTML element.\n         */\n        decodeFromImageElement(source) {\n            if (!source) {\n                throw new ArgumentException('An image element must be provided.');\n            }\n            this.reset();\n            const element = this.prepareImageElement(source);\n            this.imageElement = element;\n            let task;\n            if (this.isImageLoaded(element)) {\n                task = this.decodeOnce(element, false, true);\n            }\n            else {\n                task = this._decodeOnLoadImage(element);\n            }\n            return task;\n        }\n        /**\n         * Decodes something from an image HTML element.\n         */\n        decodeFromVideoElement(source) {\n            const element = this._decodeFromVideoElementSetup(source);\n            return this._decodeOnLoadVideo(element);\n        }\n        /**\n         * Decodes something from an image HTML element.\n         */\n        decodeFromVideoElementContinuously(source, callbackFn) {\n            const element = this._decodeFromVideoElementSetup(source);\n            return this._decodeOnLoadVideoContinuously(element, callbackFn);\n        }\n        /**\n         * Sets up the video source so it can be decoded when loaded.\n         *\n         * @param source The video source element.\n         */\n        _decodeFromVideoElementSetup(source) {\n            if (!source) {\n                throw new ArgumentException('A video element must be provided.');\n            }\n            this.reset();\n            const element = this.prepareVideoElement(source);\n            // defines the video element before starts decoding\n            this.videoElement = element;\n            return element;\n        }\n        /**\n         * Decodes an image from a URL.\n         */\n        decodeFromImageUrl(url) {\n            if (!url) {\n                throw new ArgumentException('An URL must be provided.');\n            }\n            this.reset();\n            const element = this.prepareImageElement();\n            this.imageElement = element;\n            const decodeTask = this._decodeOnLoadImage(element);\n            element.src = url;\n            return decodeTask;\n        }\n        /**\n         * Decodes an image from a URL.\n         */\n        decodeFromVideoUrl(url) {\n            if (!url) {\n                throw new ArgumentException('An URL must be provided.');\n            }\n            this.reset();\n            // creates a new element\n            const element = this.prepareVideoElement();\n            const decodeTask = this.decodeFromVideoElement(element);\n            element.src = url;\n            return decodeTask;\n        }\n        /**\n         * Decodes an image from a URL.\n         *\n         * @experimental\n         */\n        decodeFromVideoUrlContinuously(url, callbackFn) {\n            if (!url) {\n                throw new ArgumentException('An URL must be provided.');\n            }\n            this.reset();\n            // creates a new element\n            const element = this.prepareVideoElement();\n            const decodeTask = this.decodeFromVideoElementContinuously(element, callbackFn);\n            element.src = url;\n            return decodeTask;\n        }\n        _decodeOnLoadImage(element) {\n            return new Promise((resolve, reject) => {\n                this.imageLoadedListener = () => this.decodeOnce(element, false, true).then(resolve, reject);\n                element.addEventListener('load', this.imageLoadedListener);\n            });\n        }\n        _decodeOnLoadVideo(videoElement) {\n            return __awaiter(this, void 0, void 0, function* () {\n                // plays the video\n                yield this.playVideoOnLoadAsync(videoElement);\n                // starts decoding after played the video\n                return yield this.decodeOnce(videoElement);\n            });\n        }\n        _decodeOnLoadVideoContinuously(videoElement, callbackFn) {\n            return __awaiter(this, void 0, void 0, function* () {\n                // plays the video\n                yield this.playVideoOnLoadAsync(videoElement);\n                // starts decoding after played the video\n                this.decodeContinuously(videoElement, callbackFn);\n            });\n        }\n        isImageLoaded(img) {\n            // During the onload event, IE correctly identifies any images that\n            // weren\u2019t downloaded as not complete. Others should too. Gecko-based\n            // browsers act like NS4 in that they report this incorrectly.\n            if (!img.complete) {\n                return false;\n            }\n            // However, they do have two very useful properties: naturalWidth and\n            // naturalHeight. These give the true size of the image. If it failed\n            // to load, either of these should be zero.\n            if (img.naturalWidth === 0) {\n                return false;\n            }\n            // No other way of checking: assume it\u2019s ok.\n            return true;\n        }\n        prepareImageElement(imageSource) {\n            let imageElement;\n            if (typeof imageSource === 'undefined') {\n                imageElement = document.createElement('img');\n                imageElement.width = 200;\n                imageElement.height = 200;\n            }\n            if (typeof imageSource === 'string') {\n                imageElement = this.getMediaElement(imageSource, 'img');\n            }\n            if (imageSource instanceof HTMLImageElement) {\n                imageElement = imageSource;\n            }\n            return imageElement;\n        }\n        /**\n         * Sets a HTMLVideoElement for scanning or creates a new one.\n         *\n         * @param videoSource The HTMLVideoElement to be set.\n         */\n        prepareVideoElement(videoSource) {\n            let videoElement;\n            if (!videoSource && typeof document !== 'undefined') {\n                videoElement = document.createElement('video');\n                videoElement.width = 200;\n                videoElement.height = 200;\n            }\n            if (typeof videoSource === 'string') {\n                videoElement = this.getMediaElement(videoSource, 'video');\n            }\n            if (videoSource instanceof HTMLVideoElement) {\n                videoElement = videoSource;\n            }\n            // Needed for iOS 11\n            videoElement.setAttribute('autoplay', 'true');\n            videoElement.setAttribute('muted', 'true');\n            videoElement.setAttribute('playsinline', 'true');\n            return videoElement;\n        }\n        /**\n         * Tries to decode from the video input until it finds some value.\n         */\n        decodeOnce(element, retryIfNotFound = true, retryIfChecksumOrFormatError = true) {\n            this._stopAsyncDecode = false;\n            const loop = (resolve, reject) => {\n                if (this._stopAsyncDecode) {\n                    reject(new NotFoundException('Video stream has ended before any code could be detected.'));\n                    this._stopAsyncDecode = undefined;\n                    return;\n                }\n                try {\n                    const result = this.decode(element);\n                    resolve(result);\n                }\n                catch (e) {\n                    const ifNotFound = retryIfNotFound && e instanceof NotFoundException;\n                    const isChecksumOrFormatError = e instanceof ChecksumException || e instanceof FormatException;\n                    const ifChecksumOrFormat = isChecksumOrFormatError && retryIfChecksumOrFormatError;\n                    if (ifNotFound || ifChecksumOrFormat) {\n                        // trying again\n                        return setTimeout(loop, this._timeBetweenDecodingAttempts, resolve, reject);\n                    }\n                    reject(e);\n                }\n            };\n            return new Promise((resolve, reject) => loop(resolve, reject));\n        }\n        /**\n         * Continuously decodes from video input.\n         */\n        decodeContinuously(element, callbackFn) {\n            this._stopContinuousDecode = false;\n            const loop = () => {\n                if (this._stopContinuousDecode) {\n                    this._stopContinuousDecode = undefined;\n                    return;\n                }\n                try {\n                    const result = this.decode(element);\n                    callbackFn(result, null);\n                    setTimeout(loop, this.timeBetweenScansMillis);\n                }\n                catch (e) {\n                    callbackFn(null, e);\n                    const isChecksumOrFormatError = e instanceof ChecksumException || e instanceof FormatException;\n                    const isNotFound = e instanceof NotFoundException;\n                    if (isChecksumOrFormatError || isNotFound) {\n                        // trying again\n                        setTimeout(loop, this._timeBetweenDecodingAttempts);\n                    }\n                }\n            };\n            loop();\n        }\n        /**\n         * Gets the BinaryBitmap for ya! (and decodes it)\n         */\n        decode(element) {\n            // get binary bitmap for decode function\n            const binaryBitmap = this.createBinaryBitmap(element);\n            return this.decodeBitmap(binaryBitmap);\n        }\n        /**\n         * Returns true if media element is indeed a {@link HtmlVideoElement}.\n         */\n        _isHTMLVideoElement(mediaElement) {\n            const potentialVideo = mediaElement;\n            return potentialVideo.videoWidth !== 0;\n        }\n        /**\n         * Overwriting this allows you to manipulate the next frame in anyway\n         * you want before decode.\n         */\n        drawFrameOnCanvas(\n            srcElement, dimensions, canvasElementContext) {\n            if (!dimensions) {\n                dimensions = {\n                    sx: 0,\n                    sy: 0,\n                    sWidth: srcElement.videoWidth,\n                    sHeight: srcElement.videoHeight,\n                    dx: 0,\n                    dy: 0,\n                    dWidth: srcElement.videoWidth,\n                    dHeight: srcElement.videoHeight};\n            }\n            if (!canvasElementContext) {\n                canvasElementContext = this.captureCanvasContext;\n            }\n            canvasElementContext.drawImage(\n                srcElement,\n                dimensions.sx,\n                dimensions.sy,\n                dimensions.sWidth,\n                dimensions.sHeight,\n                dimensions.dx,\n                dimensions.dy,\n                dimensions.dWidth,\n                dimensions.dHeight);\n        }\n        /**\n         * Ovewriting this allows you to manipulate the snapshot image in anyway\n         *  you want before decode.\n         */\n        drawImageOnCanvas(\n            srcElement,\n            dimensions,\n            canvasElementContext = this.captureCanvasContext) {\n            if (!dimensions) {\n                dimensions = {\n                    sx: 0,\n                    sy: 0,\n                    sWidth: srcElement.naturalWidth,\n                    sHeight: srcElement.naturalHeight,\n                    dx: 0,\n                    dy: 0,\n                    dWidth: srcElement.naturalWidth,\n                    dHeight: srcElement.naturalHeight\n                };\n            }\n            if (!canvasElementContext) {\n                canvasElementContext = this.captureCanvasContext;\n            }\n            canvasElementContext.drawImage(\n                srcElement,\n                dimensions.sx,\n                dimensions.sy,\n                dimensions.sWidth,\n                dimensions.sHeight,\n                dimensions.dx,\n                dimensions.dy,\n                dimensions.dWidth,\n                dimensions.dHeight);\n        }\n        /**\n         * Creates a binaryBitmap based in some image source.\n         *\n         * @param mediaElement HTML element containing drawable image source.\n         */\n        createBinaryBitmap(mediaElement) {\n            const ctx = this.getCaptureCanvasContext(mediaElement);\n            if (this._isHTMLVideoElement(mediaElement)) {\n                this.drawFrameOnCanvas(mediaElement);\n            } else {\n                this.drawImageOnCanvas(mediaElement);\n            }\n            const canvas = this.getCaptureCanvas(mediaElement);\n            const luminanceSource = new HTMLCanvasElementLuminanceSource(canvas);\n            const hybridBinarizer = new HybridBinarizer(luminanceSource);\n\n            return new BinaryBitmap(hybridBinarizer);\n        }\n\n        getCaptureCanvasContext(mediaElement) {\n            if (!this.captureCanvasContext) {\n                const elem = this.getCaptureCanvas(mediaElement);\n                const ctx = elem.getContext('2d');\n                this.captureCanvasContext = ctx;\n            }\n            return this.captureCanvasContext;\n        }\n        getCaptureCanvas(mediaElement) {\n            if (!this.captureCanvas) {\n                const elem = this.createCaptureCanvas(mediaElement);\n                this.captureCanvas = elem;\n            }\n            return this.captureCanvas;\n        }\n        /**\n         * Call the encapsulated readers decode\n         */\n        decodeBitmap(binaryBitmap) {\n            return this.reader.decode(binaryBitmap, this._hints);\n        }\n        /**\n         * \uD83D\uDD8C Prepares the canvas for capture and scan frames.\n         */\n        createCaptureCanvas(mediaElement) {\n            if (typeof document === 'undefined') {\n                this._destroyCaptureCanvas();\n                return null;\n            }\n            const canvasElement = document.createElement('canvas');\n            let width;\n            let height;\n            if (typeof mediaElement !== 'undefined') {\n                if (mediaElement instanceof HTMLVideoElement) {\n                    width = mediaElement.videoWidth;\n                    height = mediaElement.videoHeight;\n                }\n                else if (mediaElement instanceof HTMLImageElement) {\n                    width = mediaElement.naturalWidth || mediaElement.width;\n                    height = mediaElement.naturalHeight || mediaElement.height;\n                }\n            }\n            canvasElement.style.width = width + 'px';\n            canvasElement.style.height = height + 'px';\n            canvasElement.width = width;\n            canvasElement.height = height;\n            return canvasElement;\n        }\n        /**\n         * Stops the continuous scan and cleans the stream.\n         */\n        stopStreams() {\n            if (this.stream) {\n                this.stream.getVideoTracks().forEach(t => t.stop());\n                this.stream = undefined;\n            }\n            if (this._stopAsyncDecode === false) {\n                this.stopAsyncDecode();\n            }\n            if (this._stopContinuousDecode === false) {\n                this.stopContinuousDecode();\n            }\n        }\n        /**\n         * Resets the code reader to the initial state. Cancels any ongoing barcode scanning from video or camera.\n         *\n         * @memberOf BrowserCodeReader\n         */\n        reset() {\n            // stops the camera, preview and scan \uD83D\uDD34\n            this.stopStreams();\n            // clean and forget about HTML elements\n            this._destroyVideoElement();\n            this._destroyImageElement();\n            this._destroyCaptureCanvas();\n        }\n        _destroyVideoElement() {\n            if (!this.videoElement) {\n                return;\n            }\n            // first gives freedon to the element \uD83D\uDD4A\n            if (typeof this.videoEndedListener !== 'undefined') {\n                this.videoElement.removeEventListener('ended', this.videoEndedListener);\n            }\n            if (typeof this.videoPlayingEventListener !== 'undefined') {\n                this.videoElement.removeEventListener('playing', this.videoPlayingEventListener);\n            }\n            if (typeof this.videoCanPlayListener !== 'undefined') {\n                this.videoElement.removeEventListener('loadedmetadata', this.videoCanPlayListener);\n            }\n            // then forgets about that element \uD83D\uDE22\n            this.cleanVideoSource(this.videoElement);\n            this.videoElement = undefined;\n        }\n        _destroyImageElement() {\n            if (!this.imageElement) {\n                return;\n            }\n            // first gives freedon to the element \uD83D\uDD4A\n            if (undefined !== this.imageLoadedListener) {\n                this.imageElement.removeEventListener('load', this.imageLoadedListener);\n            }\n            // then forget about that element \uD83D\uDE22\n            this.imageElement.src = undefined;\n            this.imageElement.removeAttribute('src');\n            this.imageElement = undefined;\n        }\n        /**\n         * Cleans canvas references \uD83D\uDD8C\n         */\n        _destroyCaptureCanvas() {\n            // then forget about that element \uD83D\uDE22\n            this.captureCanvasContext = undefined;\n            this.captureCanvas = undefined;\n        }\n        /**\n         * Defines what the videoElement src will be.\n         *\n         * @param videoElement\n         * @param stream\n         */\n        addVideoSource(videoElement, stream) {\n            // Older browsers may not have `srcObject`\n            try {\n                // @note Throws Exception if interrupted by a new loaded request\n                videoElement.srcObject = stream;\n            }\n            catch (err) {\n                // @note Avoid using this in new browsers, as it is going away.\n                videoElement.src = URL.createObjectURL(stream);\n            }\n        }\n        /**\n         * Unbinds a HTML video src property.\n         *\n         * @param videoElement\n         */\n        cleanVideoSource(videoElement) {\n            try {\n                videoElement.srcObject = null;\n            }\n            catch (err) {\n                videoElement.src = '';\n            }\n            this.videoElement.removeAttribute('src');\n        }\n    }\n\n    /*\n     * Copyright 2007 ZXing authors\n     *\n     * Licensed under the Apache License, Version 2.0 (the \"License\");\n     * you may not use this file except in compliance with the License.\n     * You may obtain a copy of the License at\n     *\n     *      http://www.apache.org/licenses/LICENSE-2.0\n     *\n     * Unless required by applicable law or agreed to in writing, software\n     * distributed under the License is distributed on an \"AS IS\" BASIS,\n     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n     * See the License for the specific language governing permissions and\n     * limitations under the License.\n     */\n    /**\n     * <p>Encapsulates the result of decoding a barcode within an image.</p>\n     *\n     * @author Sean Owen\n     */\n    class Result {\n        // public constructor(private text: string,\n        //               Uint8Array rawBytes,\n        //               ResultPoconst resultPoints: Int32Array,\n        //               BarcodeFormat format) {\n        //   this(text, rawBytes, resultPoints, format, System.currentTimeMillis())\n        // }\n        // public constructor(text: string,\n        //               Uint8Array rawBytes,\n        //               ResultPoconst resultPoints: Int32Array,\n        //               BarcodeFormat format,\n        //               long timestamp) {\n        //   this(text, rawBytes, rawBytes == null ? 0 : 8 * rawBytes.length,\n        //        resultPoints, format, timestamp)\n        // }\n        constructor(text, rawBytes, numBits = rawBytes == null ? 0 : 8 * rawBytes.length, resultPoints, format, timestamp = System.currentTimeMillis()) {\n            this.text = text;\n            this.rawBytes = rawBytes;\n            this.numBits = numBits;\n            this.resultPoints = resultPoints;\n            this.format = format;\n            this.timestamp = timestamp;\n            this.text = text;\n            this.rawBytes = rawBytes;\n            if (undefined === numBits || null === numBits) {\n                this.numBits = (rawBytes === null || rawBytes === undefined) ? 0 : 8 * rawBytes.length;\n            }\n            else {\n                this.numBits = numBits;\n            }\n            this.resultPoints = resultPoints;\n            this.format = format;\n            this.resultMetadata = null;\n            if (undefined === timestamp || null === timestamp) {\n                this.timestamp = System.currentTimeMillis();\n            }\n            else {\n                this.timestamp = timestamp;\n            }\n        }\n        /**\n         * @return raw text encoded by the barcode\n         */\n        getText() {\n            return this.text;\n        }\n        /**\n         * @return raw bytes encoded by the barcode, if applicable, otherwise {@code null}\n         */\n        getRawBytes() {\n            return this.rawBytes;\n        }\n        /**\n         * @return how many bits of {@link #getRawBytes()} are valid; typically 8 times its length\n         * @since 3.3.0\n         */\n        getNumBits() {\n            return this.numBits;\n        }\n        /**\n         * @return points related to the barcode in the image. These are typically points\n         *         identifying finder patterns or the corners of the barcode. The exact meaning is\n         *         specific to the type of barcode that was decoded.\n         */\n        getResultPoints() {\n            return this.resultPoints;\n        }\n        /**\n         * @return {@link BarcodeFormat} representing the format of the barcode that was decoded\n         */\n        getBarcodeFormat() {\n            return this.format;\n        }\n        /**\n         * @return {@link Map} mapping {@link ResultMetadataType} keys to values. May be\n         *   {@code null}. This contains optional metadata about what was detected about the barcode,\n         *   like orientation.\n         */\n        getResultMetadata() {\n            return this.resultMetadata;\n        }\n        putMetadata(type, value) {\n            if (this.resultMetadata === null) {\n                this.resultMetadata = new Map();\n            }\n            this.resultMetadata.set(type, value);\n        }\n        putAllMetadata(metadata) {\n            if (metadata !== null) {\n                if (this.resultMetadata === null) {\n                    this.resultMetadata = metadata;\n                }\n                else {\n                    this.resultMetadata = new Map(metadata);\n                }\n            }\n        }\n        addResultPoints(newPoints) {\n            const oldPoints = this.resultPoints;\n            if (oldPoints === null) {\n                this.resultPoints = newPoints;\n            }\n            else if (newPoints !== null && newPoints.length > 0) {\n                const allPoints = new Array(oldPoints.length + newPoints.length);\n                System.arraycopy(oldPoints, 0, allPoints, 0, oldPoints.length);\n                System.arraycopy(newPoints, 0, allPoints, oldPoints.length, newPoints.length);\n                this.resultPoints = allPoints;\n            }\n        }\n        getTimestamp() {\n            return this.timestamp;\n        }\n        /*@Override*/\n        toString() {\n            return this.text;\n        }\n    }\n\n    /*\n     * Direct port to TypeScript of ZXing by Adrian To\u0219c\u0103\n     */\n    /*\n     * Copyright 2009 ZXing authors\n     *\n     * Licensed under the Apache License, Version 2.0 (the \"License\");\n     * you may not use this file except in compliance with the License.\n     * You may obtain a copy of the License at\n     *\n     *      http://www.apache.org/licenses/LICENSE-2.0\n     *\n     * Unless required by applicable law or agreed to in writing, software\n     * distributed under the License is distributed on an \"AS IS\" BASIS,\n     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n     * See the License for the specific language governing permissions and\n     * limitations under the License.\n     */\n    /*namespace com.google.zxing {*/\n    /**\n     * Enumerates barcode formats known to this package. Please keep alphabetized.\n     *\n     * @author Sean Owen\n     */\n    var BarcodeFormat;\n    (function (BarcodeFormat) {\n        /** Aztec 2D barcode format. */\n        BarcodeFormat[BarcodeFormat[\"AZTEC\"] = 0] = \"AZTEC\";\n        /** CODABAR 1D format. */\n        BarcodeFormat[BarcodeFormat[\"CODABAR\"] = 1] = \"CODABAR\";\n        /** Code 39 1D format. */\n        BarcodeFormat[BarcodeFormat[\"CODE_39\"] = 2] = \"CODE_39\";\n        /** Code 93 1D format. */\n        BarcodeFormat[BarcodeFormat[\"CODE_93\"] = 3] = \"CODE_93\";\n        /** Code 128 1D format. */\n        BarcodeFormat[BarcodeFormat[\"CODE_128\"] = 4] = \"CODE_128\";\n        /** Data Matrix 2D barcode format. */\n        BarcodeFormat[BarcodeFormat[\"DATA_MATRIX\"] = 5] = \"DATA_MATRIX\";\n        /** EAN-8 1D format. */\n        BarcodeFormat[BarcodeFormat[\"EAN_8\"] = 6] = \"EAN_8\";\n        /** EAN-13 1D format. */\n        BarcodeFormat[BarcodeFormat[\"EAN_13\"] = 7] = \"EAN_13\";\n        /** ITF (Interleaved Two of Five) 1D format. */\n        BarcodeFormat[BarcodeFormat[\"ITF\"] = 8] = \"ITF\";\n        /** MaxiCode 2D barcode format. */\n        BarcodeFormat[BarcodeFormat[\"MAXICODE\"] = 9] = \"MAXICODE\";\n        /** PDF417 format. */\n        BarcodeFormat[BarcodeFormat[\"PDF_417\"] = 10] = \"PDF_417\";\n        /** QR Code 2D barcode format. */\n        BarcodeFormat[BarcodeFormat[\"QR_CODE\"] = 11] = \"QR_CODE\";\n        /** RSS 14 */\n        BarcodeFormat[BarcodeFormat[\"RSS_14\"] = 12] = \"RSS_14\";\n        /** RSS EXPANDED */\n        BarcodeFormat[BarcodeFormat[\"RSS_EXPANDED\"] = 13] = \"RSS_EXPANDED\";\n        /** UPC-A 1D format. */\n        BarcodeFormat[BarcodeFormat[\"UPC_A\"] = 14] = \"UPC_A\";\n        /** UPC-E 1D format. */\n        BarcodeFormat[BarcodeFormat[\"UPC_E\"] = 15] = \"UPC_E\";\n        /** UPC/EAN extension format. Not a stand-alone format. */\n        BarcodeFormat[BarcodeFormat[\"UPC_EAN_EXTENSION\"] = 16] = \"UPC_EAN_EXTENSION\";\n    })(BarcodeFormat || (BarcodeFormat = {}));\n    var BarcodeFormat$1 = BarcodeFormat;\n\n    /*namespace com.google.zxing {*/\n    /**\n     * Represents some type of metadata about the result of the decoding that the decoder\n     * wishes to communicate back to the caller.\n     *\n     * @author Sean Owen\n     */\n    var ResultMetadataType;\n    (function (ResultMetadataType) {\n        /**\n         * Unspecified, application-specific metadata. Maps to an unspecified {@link Object}.\n         */\n        ResultMetadataType[ResultMetadataType[\"OTHER\"] = 0] = \"OTHER\";\n        /**\n         * Denotes the likely approximate orientation of the barcode in the image. This value\n         * is given as degrees rotated clockwise from the normal, upright orientation.\n         * For example a 1D barcode which was found by reading top-to-bottom would be\n         * said to have orientation \"90\". This key maps to an {@link Integer} whose\n         * value is in the range [0,360).\n         */\n        ResultMetadataType[ResultMetadataType[\"ORIENTATION\"] = 1] = \"ORIENTATION\";\n        /**\n         * <p>2D barcode formats typically encode text, but allow for a sort of 'byte mode'\n         * which is sometimes used to encode binary data. While {@link Result} makes available\n         * the complete raw bytes in the barcode for these formats, it does not offer the bytes\n         * from the byte segments alone.</p>\n         *\n         * <p>This maps to a {@link java.util.List} of byte arrays corresponding to the\n         * raw bytes in the byte segments in the barcode, in order.</p>\n         */\n        ResultMetadataType[ResultMetadataType[\"BYTE_SEGMENTS\"] = 2] = \"BYTE_SEGMENTS\";\n        /**\n         * Error correction level used, if applicable. The value type depends on the\n         * format, but is typically a String.\n         */\n        ResultMetadataType[ResultMetadataType[\"ERROR_CORRECTION_LEVEL\"] = 3] = \"ERROR_CORRECTION_LEVEL\";\n        /**\n         * For some periodicals, indicates the issue number as an {@link Integer}.\n         */\n        ResultMetadataType[ResultMetadataType[\"ISSUE_NUMBER\"] = 4] = \"ISSUE_NUMBER\";\n        /**\n         * For some products, indicates the suggested retail price in the barcode as a\n         * formatted {@link String}.\n         */\n        ResultMetadataType[ResultMetadataType[\"SUGGESTED_PRICE\"] = 5] = \"SUGGESTED_PRICE\";\n        /**\n         * For some products, the possible country of manufacture as a {@link String} denoting the\n         * ISO country code. Some map to multiple possible countries, like \"US/CA\".\n         */\n        ResultMetadataType[ResultMetadataType[\"POSSIBLE_COUNTRY\"] = 6] = \"POSSIBLE_COUNTRY\";\n        /**\n         * For some products, the extension text\n         */\n        ResultMetadataType[ResultMetadataType[\"UPC_EAN_EXTENSION\"] = 7] = \"UPC_EAN_EXTENSION\";\n        /**\n         * PDF417-specific metadata\n         */\n        ResultMetadataType[ResultMetadataType[\"PDF417_EXTRA_METADATA\"] = 8] = \"PDF417_EXTRA_METADATA\";\n        /**\n         * If the code format supports structured append and the current scanned code is part of one then the\n         * sequence number is given with it.\n         */\n        ResultMetadataType[ResultMetadataType[\"STRUCTURED_APPEND_SEQUENCE\"] = 9] = \"STRUCTURED_APPEND_SEQUENCE\";\n        /**\n         * If the code format supports structured append and the current scanned code is part of one then the\n         * parity is given with it.\n         */\n        ResultMetadataType[ResultMetadataType[\"STRUCTURED_APPEND_PARITY\"] = 10] = \"STRUCTURED_APPEND_PARITY\";\n    })(ResultMetadataType || (ResultMetadataType = {}));\n    var ResultMetadataType$1 = ResultMetadataType;\n\n    /*\n     * Copyright 2007 ZXing authors\n     *\n     * Licensed under the Apache License, Version 2.0 (the \"License\");\n     * you may not use this file except in compliance with the License.\n     * You may obtain a copy of the License at\n     *\n     *      http://www.apache.org/licenses/LICENSE-2.0\n     *\n     * Unless required by applicable law or agreed to in writing, software\n     * distributed under the License is distributed on an \"AS IS\" BASIS,\n     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n     * See the License for the specific language governing permissions and\n     * limitations under the License.\n     */\n    /*namespace com.google.zxing.common {*/\n    /*import java.util.List;*/\n    /**\n     * <p>Encapsulates the result of decoding a matrix of bits. This typically\n     * applies to 2D barcode formats. For now it contains the raw bytes obtained,\n     * as well as a String interpretation of those bytes, if applicable.</p>\n     *\n     * @author Sean Owen\n     */\n    class DecoderResult {\n        // public constructor(rawBytes: Uint8Array,\n        //                      text: string,\n        //                      List<Uint8Array> byteSegments,\n        //                      String ecLevel) {\n        //   this(rawBytes, text, byteSegments, ecLevel, -1, -1)\n        // }\n        constructor(rawBytes, text, byteSegments, ecLevel, structuredAppendSequenceNumber = -1, structuredAppendParity = -1) {\n            this.rawBytes = rawBytes;\n            this.text = text;\n            this.byteSegments = byteSegments;\n            this.ecLevel = ecLevel;\n            this.structuredAppendSequenceNumber = structuredAppendSequenceNumber;\n            this.structuredAppendParity = structuredAppendParity;\n            this.numBits = (rawBytes === undefined || rawBytes === null) ? 0 : 8 * rawBytes.length;\n        }\n        /**\n         * @return raw bytes representing the result, or {@code null} if not applicable\n         */\n        getRawBytes() {\n            return this.rawBytes;\n        }\n        /**\n         * @return how many bits of {@link #getRawBytes()} are valid; typically 8 times its length\n         * @since 3.3.0\n         */\n        getNumBits() {\n            return this.numBits;\n        }\n        /**\n         * @param numBits overrides the number of bits that are valid in {@link #getRawBytes()}\n         * @since 3.3.0\n         */\n        setNumBits(numBits /*int*/) {\n            this.numBits = numBits;\n        }\n        /**\n         * @return text representation of the result\n         */\n        getText() {\n            return this.text;\n        }\n        /**\n         * @return list of byte segments in the result, or {@code null} if not applicable\n         */\n        getByteSegments() {\n            return this.byteSegments;\n        }\n        /**\n         * @return name of error correction level used, or {@code null} if not applicable\n         */\n        getECLevel() {\n            return this.ecLevel;\n        }\n        /**\n         * @return number of errors corrected, or {@code null} if not applicable\n         */\n        getErrorsCorrected() {\n            return this.errorsCorrected;\n        }\n        setErrorsCorrected(errorsCorrected /*Integer*/) {\n            this.errorsCorrected = errorsCorrected;\n        }\n        /**\n         * @return number of erasures corrected, or {@code null} if not applicable\n         */\n        getErasures() {\n            return this.erasures;\n        }\n        setErasures(erasures /*Integer*/) {\n            this.erasures = erasures;\n        }\n        /**\n         * @return arbitrary additional metadata\n         */\n        getOther() {\n            return this.other;\n        }\n        setOther(other) {\n            this.other = other;\n        }\n        hasStructuredAppend() {\n            return this.structuredAppendParity >= 0 && this.structuredAppendSequenceNumber >= 0;\n        }\n        getStructuredAppendParity() {\n            return this.structuredAppendParity;\n        }\n        getStructuredAppendSequenceNumber() {\n            return this.structuredAppendSequenceNumber;\n        }\n    }\n\n    /*\n     * Copyright 2007 ZXing authors\n     *\n     * Licensed under the Apache License, Version 2.0 (the \"License\");\n     * you may not use this file except in compliance with the License.\n     * You may obtain a copy of the License at\n     *\n     *      http://www.apache.org/licenses/LICENSE-2.0\n     *\n     * Unless required by applicable law or agreed to in writing, software\n     * distributed under the License is distributed on an \"AS IS\" BASIS,\n     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n     * See the License for the specific language governing permissions and\n     * limitations under the License.\n     */\n    /**\n     * <p>This class contains utility methods for performing mathematical operations over\n     * the Galois Fields. Operations use a given primitive polynomial in calculations.</p>\n     *\n     * <p>Throughout this package, elements of the GF are represented as an {@code int}\n     * for convenience and speed (but at the cost of memory).\n     * </p>\n     *\n     * @author Sean Owen\n     * @author David Olivier\n     */\n    class AbstractGenericGF {\n        /**\n         * @return 2 to the power of a in GF(size)\n         */\n        exp(a) {\n            return this.expTable[a];\n        }\n        /**\n         * @return base 2 log of a in GF(size)\n         */\n        log(a /*int*/) {\n            if (a === 0) {\n                throw new IllegalArgumentException();\n            }\n            return this.logTable[a];\n        }\n        /**\n         * Implements both addition and subtraction -- they are the same in GF(size).\n         *\n         * @return sum/difference of a and b\n         */\n        static addOrSubtract(a /*int*/, b /*int*/) {\n            return a ^ b;\n        }\n    }\n\n    /*\n     * Copyright 2007 ZXing authors\n     *\n     * Licensed under the Apache License, Version 2.0 (the \"License\");\n     * you may not use this file except in compliance with the License.\n     * You may obtain a copy of the License at\n     *\n     *      http://www.apache.org/licenses/LICENSE-2.0\n     *\n     * Unless required by applicable law or agreed to in writing, software\n     * distributed under the License is distributed on an \"AS IS\" BASIS,\n     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n     * See the License for the specific language governing permissions and\n     * limitations under the License.\n     */\n    /**\n     * <p>Represents a polynomial whose coefficients are elements of a GF.\n     * Instances of this class are immutable.</p>\n     *\n     * <p>Much credit is due to William Rucklidge since portions of this code are an indirect\n     * port of his C++ Reed-Solomon implementation.</p>\n     *\n     * @author Sean Owen\n     */\n    class GenericGFPoly {\n        /**\n         * @param field the {@link GenericGF} instance representing the field to use\n         * to perform computations\n         * @param coefficients coefficients as ints representing elements of GF(size), arranged\n         * from most significant (highest-power term) coefficient to least significant\n         * @throws IllegalArgumentException if argument is null or empty,\n         * or if leading coefficient is 0 and this is not a\n         * constant polynomial (that is, it is not the monomial \"0\")\n         */\n        constructor(field, coefficients) {\n            if (coefficients.length === 0) {\n                throw new IllegalArgumentException();\n            }\n            this.field = field;\n            const coefficientsLength = coefficients.length;\n            if (coefficientsLength > 1 && coefficients[0] === 0) {\n                // Leading term must be non-zero for anything except the constant polynomial \"0\"\n                let firstNonZero = 1;\n                while (firstNonZero < coefficientsLength && coefficients[firstNonZero] === 0) {\n                    firstNonZero++;\n                }\n                if (firstNonZero === coefficientsLength) {\n                    this.coefficients = Int32Array.from([0]);\n                }\n                else {\n                    this.coefficients = new Int32Array(coefficientsLength - firstNonZero);\n                    System.arraycopy(coefficients, firstNonZero, this.coefficients, 0, this.coefficients.length);\n                }\n            }\n            else {\n                this.coefficients = coefficients;\n            }\n        }\n        getCoefficients() {\n            return this.coefficients;\n        }\n        /**\n         * @return degree of this polynomial\n         */\n        getDegree() {\n            return this.coefficients.length - 1;\n        }\n        /**\n         * @return true iff this polynomial is the monomial \"0\"\n         */\n        isZero() {\n            return this.coefficients[0] === 0;\n        }\n        /**\n         * @return coefficient of x^degree term in this polynomial\n         */\n        getCoefficient(degree /*int*/) {\n            return this.coefficients[this.coefficients.length - 1 - degree];\n        }\n        /**\n         * @return evaluation of this polynomial at a given point\n         */\n        evaluateAt(a /*int*/) {\n            if (a === 0) {\n                // Just return the x^0 coefficient\n                return this.getCoefficient(0);\n            }\n            const coefficients = this.coefficients;\n            let result;\n            if (a === 1) {\n                // Just the sum of the coefficients\n                result = 0;\n                for (let i = 0, length = coefficients.length; i !== length; i++) {\n                    const coefficient = coefficients[i];\n                    result = AbstractGenericGF.addOrSubtract(result, coefficient);\n                }\n                return result;\n            }\n            result = coefficients[0];\n            const size = coefficients.length;\n            const field = this.field;\n            for (let i = 1; i < size; i++) {\n                result = AbstractGenericGF.addOrSubtract(field.multiply(a, result), coefficients[i]);\n            }\n            return result;\n        }\n        addOrSubtract(other) {\n            if (!this.field.equals(other.field)) {\n                throw new IllegalArgumentException('GenericGFPolys do not have same GenericGF field');\n            }\n            if (this.isZero()) {\n                return other;\n            }\n            if (other.isZero()) {\n                return this;\n            }\n            let smallerCoefficients = this.coefficients;\n            let largerCoefficients = other.coefficients;\n            if (smallerCoefficients.length > largerCoefficients.length) {\n                const temp = smallerCoefficients;\n                smallerCoefficients = largerCoefficients;\n                largerCoefficients = temp;\n            }\n            let sumDiff = new Int32Array(largerCoefficients.length);\n            const lengthDiff = largerCoefficients.length - smallerCoefficients.length;\n            // Copy high-order terms only found in higher-degree polynomial's coefficients\n            System.arraycopy(largerCoefficients, 0, sumDiff, 0, lengthDiff);\n            for (let i = lengthDiff; i < largerCoefficients.length; i++) {\n                sumDiff[i] = AbstractGenericGF.addOrSubtract(smallerCoefficients[i - lengthDiff], largerCoefficients[i]);\n            }\n            return new GenericGFPoly(this.field, sumDiff);\n        }\n        multiply(other) {\n            if (!this.field.equals(other.field)) {\n                throw new IllegalArgumentException('GenericGFPolys do not have same GenericGF field');\n            }\n            if (this.isZero() || other.isZero()) {\n                return this.field.getZero();\n            }\n            const aCoefficients = this.coefficients;\n            const aLength = aCoefficients.length;\n            const bCoefficients = other.coefficients;\n            const bLength = bCoefficients.length;\n            const product = new Int32Array(aLength + bLength - 1);\n            const field = this.field;\n            for (let i = 0; i < aLength; i++) {\n                const aCoeff = aCoefficients[i];\n                for (let j = 0; j < bLength; j++) {\n                    product[i + j] = AbstractGenericGF.addOrSubtract(product[i + j], field.multiply(aCoeff, bCoefficients[j]));\n                }\n            }\n            return new GenericGFPoly(field, product);\n        }\n        multiplyScalar(scalar /*int*/) {\n            if (scalar === 0) {\n                return this.field.getZero();\n            }\n            if (scalar === 1) {\n                return this;\n            }\n            const size = this.coefficients.length;\n            const field = this.field;\n            const product = new Int32Array(size);\n            const coefficients = this.coefficients;\n            for (let i = 0; i < size; i++) {\n                product[i] = field.multiply(coefficients[i], scalar);\n            }\n            return new GenericGFPoly(field, product);\n        }\n        multiplyByMonomial(degree /*int*/, coefficient /*int*/) {\n            if (degree < 0) {\n                throw new IllegalArgumentException();\n            }\n            if (coefficient === 0) {\n                return this.field.getZero();\n            }\n            const coefficients = this.coefficients;\n            const size = coefficients.length;\n            const product = new Int32Array(size + degree);\n            const field = this.field;\n            for (let i = 0; i < size; i++) {\n                product[i] = field.multiply(coefficients[i], coefficient);\n            }\n            return new GenericGFPoly(field, product);\n        }\n        divide(other) {\n            if (!this.field.equals(other.field)) {\n                throw new IllegalArgumentException('GenericGFPolys do not have same GenericGF field');\n            }\n            if (other.isZero()) {\n                throw new IllegalArgumentException('Divide by 0');\n            }\n            const field = this.field;\n            let quotient = field.getZero();\n            let remainder = this;\n            const denominatorLeadingTerm = other.getCoefficient(other.getDegree());\n            const inverseDenominatorLeadingTerm = field.inverse(denominatorLeadingTerm);\n            while (remainder.getDegree() >= other.getDegree() && !remainder.isZero()) {\n                const degreeDifference = remainder.getDegree() - other.getDegree();\n                const scale = field.multiply(remainder.getCoefficient(remainder.getDegree()), inverseDenominatorLeadingTerm);\n                const term = other.multiplyByMonomial(degreeDifference, scale);\n                const iterationQuotient = field.buildMonomial(degreeDifference, scale);\n                quotient = quotient.addOrSubtract(iterationQuotient);\n                remainder = remainder.addOrSubtract(term);\n            }\n            return [quotient, remainder];\n        }\n        /*@Override*/\n        toString() {\n            let result = '';\n            for (let degree = this.getDegree(); degree >= 0; degree--) {\n                let coefficient = this.getCoefficient(degree);\n                if (coefficient !== 0) {\n                    if (coefficient < 0) {\n                        result += ' - ';\n                        coefficient = -coefficient;\n                    }\n                    else {\n                        if (result.length > 0) {\n                            result += ' + ';\n                        }\n                    }\n                    if (degree === 0 || coefficient !== 1) {\n                        const alphaPower = this.field.log(coefficient);\n                        if (alphaPower === 0) {\n                            result += '1';\n                        }\n                        else if (alphaPower === 1) {\n                            result += 'a';\n                        }\n                        else {\n                            result += 'a^';\n                            result += alphaPower;\n                        }\n                    }\n                    if (degree !== 0) {\n                        if (degree === 1) {\n                            result += 'x';\n                        }\n                        else {\n                            result += 'x^';\n                            result += degree;\n                        }\n                    }\n                }\n            }\n            return result;\n        }\n    }\n\n    /**\n     * Custom Error class of type Exception.\n     */\n    class ArithmeticException extends Exception {\n    }\n    ArithmeticException.kind = 'ArithmeticException';\n\n    /*\n     * Copyright 2007 ZXing authors\n     *\n     * Licensed under the Apache License, Version 2.0 (the \"License\");\n     * you may not use this file except in compliance with the License.\n     * You may obtain a copy of the License at\n     *\n     *      http://www.apache.org/licenses/LICENSE-2.0\n     *\n     * Unless required by applicable law or agreed to in writing, software\n     * distributed under the License is distributed on an \"AS IS\" BASIS,\n     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n     * See the License for the specific language governing permissions and\n     * limitations under the License.\n     */\n    /**\n     * <p>This class contains utility methods for performing mathematical operations over\n     * the Galois Fields. Operations use a given primitive polynomial in calculations.</p>\n     *\n     * <p>Throughout this package, elements of the GF are represented as an {@code int}\n     * for convenience and speed (but at the cost of memory).\n     * </p>\n     *\n     * @author Sean Owen\n     * @author David Olivier\n     */\n    class GenericGF extends AbstractGenericGF {\n        /**\n         * Create a representation of GF(size) using the given primitive polynomial.\n         *\n         * @param primitive irreducible polynomial whose coefficients are represented by\n         *  the bits of an int, where the least-significant bit represents the constant\n         *  coefficient\n         * @param size the size of the field\n         * @param b the factor b in the generator polynomial can be 0- or 1-based\n         *  (g(x) = (x+a^b)(x+a^(b+1))...(x+a^(b+2t-1))).\n         *  In most cases it should be 1, but for QR code it is 0.\n         */\n        constructor(primitive /*int*/, size /*int*/, generatorBase /*int*/) {\n            super();\n            this.primitive = primitive;\n            this.size = size;\n            this.generatorBase = generatorBase;\n            const expTable = new Int32Array(size);\n            let x = 1;\n            for (let i = 0; i < size; i++) {\n                expTable[i] = x;\n                x *= 2; // we're assuming the generator alpha is 2\n                if (x >= size) {\n                    x ^= primitive;\n                    x &= size - 1;\n                }\n            }\n            this.expTable = expTable;\n            const logTable = new Int32Array(size);\n            for (let i = 0; i < size - 1; i++) {\n                logTable[expTable[i]] = i;\n            }\n            this.logTable = logTable;\n            // logTable[0] == 0 but this should never be used\n            this.zero = new GenericGFPoly(this, Int32Array.from([0]));\n            this.one = new GenericGFPoly(this, Int32Array.from([1]));\n        }\n        getZero() {\n            return this.zero;\n        }\n        getOne() {\n            return this.one;\n        }\n        /**\n         * @return the monomial representing coefficient * x^degree\n         */\n        buildMonomial(degree /*int*/, coefficient /*int*/) {\n            if (degree < 0) {\n                throw new IllegalArgumentException();\n            }\n            if (coefficient === 0) {\n                return this.zero;\n            }\n            const coefficients = new Int32Array(degree + 1);\n            coefficients[0] = coefficient;\n            return new GenericGFPoly(this, coefficients);\n        }\n        /**\n         * @return multiplicative inverse of a\n         */\n        inverse(a /*int*/) {\n            if (a === 0) {\n                throw new ArithmeticException();\n            }\n            return this.expTable[this.size - this.logTable[a] - 1];\n        }\n        /**\n         * @return product of a and b in GF(size)\n         */\n        multiply(a /*int*/, b /*int*/) {\n            if (a === 0 || b === 0) {\n                return 0;\n            }\n            return this.expTable[(this.logTable[a] + this.logTable[b]) % (this.size - 1)];\n        }\n        getSize() {\n            return this.size;\n        }\n        getGeneratorBase() {\n            return this.generatorBase;\n        }\n        /*@Override*/\n        toString() {\n            return ('GF(0x' + Integer.toHexString(this.primitive) + ',' + this.size + ')');\n        }\n        equals(o) {\n            return o === this;\n        }\n    }\n    GenericGF.AZTEC_DATA_12 = new GenericGF(0x1069, 4096, 1); // x^12 + x^6 + x^5 + x^3 + 1\n    GenericGF.AZTEC_DATA_10 = new GenericGF(0x409, 1024, 1); // x^10 + x^3 + 1\n    GenericGF.AZTEC_DATA_6 = new GenericGF(0x43, 64, 1); // x^6 + x + 1\n    GenericGF.AZTEC_PARAM = new GenericGF(0x13, 16, 1); // x^4 + x + 1\n    GenericGF.QR_CODE_FIELD_256 = new GenericGF(0x011d, 256, 0); // x^8 + x^4 + x^3 + x^2 + 1\n    GenericGF.DATA_MATRIX_FIELD_256 = new GenericGF(0x012d, 256, 1); // x^8 + x^5 + x^3 + x^2 + 1\n    GenericGF.AZTEC_DATA_8 = GenericGF.DATA_MATRIX_FIELD_256;\n    GenericGF.MAXICODE_FIELD_64 = GenericGF.AZTEC_DATA_6;\n\n    /**\n     * Custom Error class of type Exception.\n     */\n    class ReedSolomonException extends Exception {\n    }\n    ReedSolomonException.kind = 'ReedSolomonException';\n\n    /**\n     * Custom Error class of type Exception.\n     */\n    class IllegalStateException extends Exception {\n    }\n    IllegalStateException.kind = 'IllegalStateException';\n\n    /*\n     * Copyright 2007 ZXing authors\n     *\n     * Licensed under the Apache License, Version 2.0 (the \"License\");\n     * you may not use this file except in compliance with the License.\n     * You may obtain a copy of the License at\n     *\n     *      http://www.apache.org/licenses/LICENSE-2.0\n     *\n     * Unless required by applicable law or agreed to in writing, software\n     * distributed under the License is distributed on an \"AS IS\" BASIS,\n     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n     * See the License for the specific language governing permissions and\n     * limitations under the License.\n     */\n    /**\n     * <p>Implements Reed-Solomon decoding, as the name implies.</p>\n     *\n     * <p>The algorithm will not be explained here, but the following references were helpful\n     * in creating this implementation:</p>\n     *\n     * <ul>\n     * <li>Bruce Maggs.\n     * <a href=\"http://www.cs.cmu.edu/afs/cs.cmu.edu/project/pscico-guyb/realworld/www/rs_decode.ps\">\n     * \"Decoding Reed-Solomon Codes\"</a> (see discussion of Forney's Formula)</li>\n     * <li>J.I. Hall. <a href=\"www.mth.msu.edu/~jhall/classes/codenotes/GRS.pdf\">\n     * \"Chapter 5. Generalized Reed-Solomon Codes\"</a>\n     * (see discussion of Euclidean algorithm)</li>\n     * </ul>\n     *\n     * <p>Much credit is due to William Rucklidge since portions of this code are an indirect\n     * port of his C++ Reed-Solomon implementation.</p>\n     *\n     * @author Sean Owen\n     * @author William Rucklidge\n     * @author sanfordsquires\n     */\n    class ReedSolomonDecoder {\n        constructor(field) {\n            this.field = field;\n        }\n        /**\n         * <p>Decodes given set of received codewords, which include both data and error-correction\n         * codewords. Really, this means it uses Reed-Solomon to detect and correct errors, in-place,\n         * in the input.</p>\n         *\n         * @param received data and error-correction codewords\n         * @param twoS number of error-correction codewords available\n         * @throws ReedSolomonException if decoding fails for any reason\n         */\n        decode(received, twoS /*int*/) {\n            const field = this.field;\n            const poly = new GenericGFPoly(field, received);\n            const syndromeCoefficients = new Int32Array(twoS);\n            let noError = true;\n            for (let i = 0; i < twoS; i++) {\n                const evalResult = poly.evaluateAt(field.exp(i + field.getGeneratorBase()));\n                syndromeCoefficients[syndromeCoefficients.length - 1 - i] = evalResult;\n                if (evalResult !== 0) {\n                    noError = false;\n                }\n            }\n            if (noError) {\n                return;\n            }\n            const syndrome = new GenericGFPoly(field, syndromeCoefficients);\n            const sigmaOmega = this.runEuclideanAlgorithm(field.buildMonomial(twoS, 1), syndrome, twoS);\n            const sigma = sigmaOmega[0];\n            const omega = sigmaOmega[1];\n            const errorLocations = this.findErrorLocations(sigma);\n            const errorMagnitudes = this.findErrorMagnitudes(omega, errorLocations);\n            for (let i = 0; i < errorLocations.length; i++) {\n                const position = received.length - 1 - field.log(errorLocations[i]);\n                if (position < 0) {\n                    throw new ReedSolomonException('Bad error location');\n                }\n                received[position] = GenericGF.addOrSubtract(received[position], errorMagnitudes[i]);\n            }\n        }\n        runEuclideanAlgorithm(a, b, R /*int*/) {\n            // Assume a's degree is >= b's\n            if (a.getDegree() < b.getDegree()) {\n                const temp = a;\n                a = b;\n                b = temp;\n            }\n            const field = this.field;\n            let rLast = a;\n            let r = b;\n            let tLast = field.getZero();\n            let t = field.getOne();\n            // Run Euclidean algorithm until r's degree is less than R/2\n            while (r.getDegree() >= (R / 2 | 0)) {\n                let rLastLast = rLast;\n                let tLastLast = tLast;\n                rLast = r;\n                tLast = t;\n                // Divide rLastLast by rLast, with quotient in q and remainder in r\n                if (rLast.isZero()) {\n                    // Oops, Euclidean algorithm already terminated?\n                    throw new ReedSolomonException('r_{i-1} was zero');\n                }\n                r = rLastLast;\n                let q = field.getZero();\n                const denominatorLeadingTerm = rLast.getCoefficient(rLast.getDegree());\n                const dltInverse = field.inverse(denominatorLeadingTerm);\n                while (r.getDegree() >= rLast.getDegree() && !r.isZero()) {\n                    const degreeDiff = r.getDegree() - rLast.getDegree();\n                    const scale = field.multiply(r.getCoefficient(r.getDegree()), dltInverse);\n                    q = q.addOrSubtract(field.buildMonomial(degreeDiff, scale));\n                    r = r.addOrSubtract(rLast.multiplyByMonomial(degreeDiff, scale));\n                }\n                t = q.multiply(tLast).addOrSubtract(tLastLast);\n                if (r.getDegree() >= rLast.getDegree()) {\n                    throw new IllegalStateException('Division algorithm failed to reduce polynomial?');\n                }\n            }\n            const sigmaTildeAtZero = t.getCoefficient(0);\n            if (sigmaTildeAtZero === 0) {\n                throw new ReedSolomonException('sigmaTilde(0) was zero');\n            }\n            const inverse = field.inverse(sigmaTildeAtZero);\n            const sigma = t.multiplyScalar(inverse);\n            const omega = r.multiplyScalar(inverse);\n            return [sigma, omega];\n        }\n        findErrorLocations(errorLocator) {\n            // This is a direct application of Chien's search\n            const numErrors = errorLocator.getDegree();\n            if (numErrors === 1) { // shortcut\n                return Int32Array.from([errorLocator.getCoefficient(1)]);\n            }\n            const result = new Int32Array(numErrors);\n            let e = 0;\n            const field = this.field;\n            for (let i = 1; i < field.getSize() && e < numErrors; i++) {\n                if (errorLocator.evaluateAt(i) === 0) {\n                    result[e] = field.inverse(i);\n                    e++;\n                }\n            }\n            if (e !== numErrors) {\n                throw new ReedSolomonException('Error locator degree does not match number of roots');\n            }\n            return result;\n        }\n        findErrorMagnitudes(errorEvaluator, errorLocations) {\n            // This is directly applying Forney's Formula\n            const s = errorLocations.length;\n            const result = new Int32Array(s);\n            const field = this.field;\n            for (let i = 0; i < s; i++) {\n                const xiInverse = field.inverse(errorLocations[i]);\n                let denominator = 1;\n                for (let j = 0; j < s; j++) {\n                    if (i !== j) {\n                        // denominator = field.multiply(denominator,\n                        //    GenericGF.addOrSubtract(1, field.multiply(errorLocations[j], xiInverse)))\n                        // Above should work but fails on some Apple and Linux JDKs due to a Hotspot bug.\n                        // Below is a funny-looking workaround from Steven Parkes\n                        const term = field.multiply(errorLocations[j], xiInverse);\n                        const termPlus1 = (term & 0x1) === 0 ? term | 1 : term & ~1;\n                        denominator = field.multiply(denominator, termPlus1);\n                    }\n                }\n                result[i] = field.multiply(errorEvaluator.evaluateAt(xiInverse), field.inverse(denominator));\n                if (field.getGeneratorBase() !== 0) {\n                    result[i] = field.multiply(result[i], xiInverse);\n                }\n            }\n            return result;\n        }\n    }\n\n    /*\n     * Copyright 2010 ZXing authors\n     *\n     * Licensed under the Apache License, Version 2.0 (the \"License\");\n     * you may not use this file except in compliance with the License.\n     * You may obtain a copy of the License at\n     *\n     *      http://www.apache.org/licenses/LICENSE-2.0\n     *\n     * Unless required by applicable law or agreed to in writing, software\n     * distributed under the License is distributed on an \"AS IS\" BASIS,\n     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n     * See the License for the specific language governing permissions and\n     * limitations under the License.\n     */\n    // import java.util.Arrays;\n    var Table;\n    (function (Table) {\n        Table[Table[\"UPPER\"] = 0] = \"UPPER\";\n        Table[Table[\"LOWER\"] = 1] = \"LOWER\";\n        Table[Table[\"MIXED\"] = 2] = \"MIXED\";\n        Table[Table[\"DIGIT\"] = 3] = \"DIGIT\";\n        Table[Table[\"PUNCT\"] = 4] = \"PUNCT\";\n        Table[Table[\"BINARY\"] = 5] = \"BINARY\";\n    })(Table || (Table = {}));\n    /**\n     * <p>The main class which implements Aztec Code decoding -- as opposed to locating and extracting\n     * the Aztec Code from an image.</p>\n     *\n     * @author David Olivier\n     */\n    class Decoder {\n        decode(detectorResult) {\n            this.ddata = detectorResult;\n            let matrix = detectorResult.getBits();\n            let rawbits = this.extractBits(matrix);\n            let correctedBits = this.correctBits(rawbits);\n            let rawBytes = Decoder.convertBoolArrayToByteArray(correctedBits);\n            let result = Decoder.getEncodedData(correctedBits);\n            let decoderResult = new DecoderResult(rawBytes, result, null, null);\n            decoderResult.setNumBits(correctedBits.length);\n            return decoderResult;\n        }\n        // This method is used for testing the high-level encoder\n        static highLevelDecode(correctedBits) {\n            return this.getEncodedData(correctedBits);\n        }\n        /**\n         * Gets the string encoded in the aztec code bits\n         *\n         * @return the decoded string\n         */\n        static getEncodedData(correctedBits) {\n            let endIndex = correctedBits.length;\n            let latchTable = Table.UPPER; // table most recently latched to\n            let shiftTable = Table.UPPER; // table to use for the next read\n            let result = '';\n            let index = 0;\n            while (index < endIndex) {\n                if (shiftTable === Table.BINARY) {\n                    if (endIndex - index < 5) {\n                        break;\n                    }\n                    let length = Decoder.readCode(correctedBits, index, 5);\n                    index += 5;\n                    if (length === 0) {\n                        if (endIndex - index < 11) {\n                            break;\n                        }\n                        length = Decoder.readCode(correctedBits, index, 11) + 31;\n                        index += 11;\n                    }\n                    for (let charCount = 0; charCount < length; charCount++) {\n                        if (endIndex - index < 8) {\n                            index = endIndex; // Force outer loop to exit\n                            break;\n                        }\n                        const code = Decoder.readCode(correctedBits, index, 8);\n                        result += /*(char)*/ StringUtils.castAsNonUtf8Char(code);\n                        index += 8;\n                    }\n                    // Go back to whatever mode we had been in\n                    shiftTable = latchTable;\n                }\n                else {\n                    let size = shiftTable === Table.DIGIT ? 4 : 5;\n                    if (endIndex - index < size) {\n                        break;\n                    }\n                    let code = Decoder.readCode(correctedBits, index, size);\n                    index += size;\n                    let str = Decoder.getCharacter(shiftTable, code);\n                    if (str.startsWith('CTRL_')) {\n                        // Table changes\n                        // ISO/IEC 24778:2008 prescribes ending a shift sequence in the mode from which it was invoked.\n                        // That's including when that mode is a shift.\n                        // Our test case dlusbs.png for issue #642 exercises that.\n                        latchTable = shiftTable; // Latch the current mode, so as to return to Upper after U/S B/S\n                        shiftTable = Decoder.getTable(str.charAt(5));\n                        if (str.charAt(6) === 'L') {\n                            latchTable = shiftTable;\n                        }\n                    }\n                    else {\n                        result += str;\n                        // Go back to whatever mode we had been in\n                        shiftTable = latchTable;\n                    }\n                }\n            }\n            return result;\n        }\n        /**\n         * gets the table corresponding to the char passed\n         */\n        static getTable(t) {\n            switch (t) {\n                case 'L':\n                    return Table.LOWER;\n                case 'P':\n                    return Table.PUNCT;\n                case 'M':\n                    return Table.MIXED;\n                case 'D':\n                    return Table.DIGIT;\n                case 'B':\n                    return Table.BINARY;\n                case 'U':\n                default:\n                    return Table.UPPER;\n            }\n        }\n        /**\n         * Gets the character (or string) corresponding to the passed code in the given table\n         *\n         * @param table the table used\n         * @param code the code of the character\n         */\n        static getCharacter(table, code) {\n            switch (table) {\n                case Table.UPPER:\n                    return Decoder.UPPER_TABLE[code];\n                case Table.LOWER:\n                    return Decoder.LOWER_TABLE[code];\n                case Table.MIXED:\n                    return Decoder.MIXED_TABLE[code];\n                case Table.PUNCT:\n                    return Decoder.PUNCT_TABLE[code];\n                case Table.DIGIT:\n                    return Decoder.DIGIT_TABLE[code];\n                default:\n                    // Should not reach here.\n                    throw new IllegalStateException('Bad table');\n            }\n        }\n        /**\n         * <p>Performs RS error correction on an array of bits.</p>\n         *\n         * @return the corrected array\n         * @throws FormatException if the input contains too many errors\n         */\n        correctBits(rawbits) {\n            let gf;\n            let codewordSize;\n            if (this.ddata.getNbLayers() <= 2) {\n                codewordSize = 6;\n                gf = GenericGF.AZTEC_DATA_6;\n            }\n            else if (this.ddata.getNbLayers() <= 8) {\n                codewordSize = 8;\n                gf = GenericGF.AZTEC_DATA_8;\n            }\n            else if (this.ddata.getNbLayers() <= 22) {\n                codewordSize = 10;\n                gf = GenericGF.AZTEC_DATA_10;\n            }\n            else {\n                codewordSize = 12;\n                gf = GenericGF.AZTEC_DATA_12;\n            }\n            let numDataCodewords = this.ddata.getNbDatablocks();\n            let numCodewords = rawbits.length / codewordSize;\n            if (numCodewords < numDataCodewords) {\n                throw new FormatException();\n            }\n            let offset = rawbits.length % codewordSize;\n            let dataWords = new Int32Array(numCodewords);\n            for (let i = 0; i < numCodewords; i++, offset += codewordSize) {\n                dataWords[i] = Decoder.readCode(rawbits, offset, codewordSize);\n            }\n            try {\n                let rsDecoder = new ReedSolomonDecoder(gf);\n                rsDecoder.decode(dataWords, numCodewords - numDataCodewords);\n            }\n            catch (ex) {\n                throw new FormatException(ex);\n            }\n            // Now perform the unstuffing operation.\n            // First, count how many bits are going to be thrown out as stuffing\n            let mask = (1 << codewordSize) - 1;\n            let stuffedBits = 0;\n            for (let i = 0; i < numDataCodewords; i++) {\n                let dataWord = dataWords[i];\n                if (dataWord === 0 || dataWord === mask) {\n                    throw new FormatException();\n                }\n                else if (dataWord === 1 || dataWord === mask - 1) {\n                    stuffedBits++;\n                }\n            }\n            // Now, actually unpack the bits and remove the stuffing\n            let correctedBits = new Array(numDataCodewords * codewordSize - stuffedBits);\n            let index = 0;\n            for (let i = 0; i < numDataCodewords; i++) {\n                let dataWord = dataWords[i];\n                if (dataWord === 1 || dataWord === mask - 1) {\n                    // next codewordSize-1 bits are all zeros or all ones\n                    correctedBits.fill(dataWord > 1, index, index + codewordSize - 1);\n                    // Arrays.fill(correctedBits, index, index + codewordSize - 1, dataWord > 1);\n                    index += codewordSize - 1;\n                }\n                else {\n                    for (let bit = codewordSize - 1; bit >= 0; --bit) {\n                        correctedBits[index++] = (dataWord & (1 << bit)) !== 0;\n                    }\n                }\n            }\n            return correctedBits;\n        }\n        /**\n         * Gets the array of bits from an Aztec Code matrix\n         *\n         * @return the array of bits\n         */\n        extractBits(matrix) {\n            let compact = this.ddata.isCompact();\n            let layers = this.ddata.getNbLayers();\n            let baseMatrixSize = (compact ? 11 : 14) + layers * 4; // not including alignment lines\n            let alignmentMap = new Int32Array(baseMatrixSize);\n            let rawbits = new Array(this.totalBitsInLayer(layers, compact));\n            if (compact) {\n                for (let i = 0; i < alignmentMap.length; i++) {\n                    alignmentMap[i] = i;\n                }\n            }\n            else {\n                let matrixSize = baseMatrixSize + 1 + 2 * Integer.truncDivision((Integer.truncDivision(baseMatrixSize, 2) - 1), 15);\n                let origCenter = baseMatrixSize / 2;\n                let center = Integer.truncDivision(matrixSize, 2);\n                for (let i = 0; i < origCenter; i++) {\n                    let newOffset = i + Integer.truncDivision(i, 15);\n                    alignmentMap[origCenter - i - 1] = center - newOffset - 1;\n                    alignmentMap[origCenter + i] = center + newOffset + 1;\n                }\n            }\n            for (let i = 0, rowOffset = 0; i < layers; i++) {\n                let rowSize = (layers - i) * 4 + (compact ? 9 : 12);\n                // The top-left most point of this layer is <low, low> (not including alignment lines)\n                let low = i * 2;\n                // The bottom-right most point of this layer is <high, high> (not including alignment lines)\n                let high = baseMatrixSize - 1 - low;\n                // We pull bits from the two 2 x rowSize columns and two rowSize x 2 rows\n                for (let j = 0; j < rowSize; j++) {\n                    let columnOffset = j * 2;\n                    for (let k = 0; k < 2; k++) {\n                        // left column\n                        rawbits[rowOffset + columnOffset + k] =\n                            matrix.get(alignmentMap[low + k], alignmentMap[low + j]);\n                        // bottom row\n                        rawbits[rowOffset + 2 * rowSize + columnOffset + k] =\n                            matrix.get(alignmentMap[low + j], alignmentMap[high - k]);\n                        // right column\n                        rawbits[rowOffset + 4 * rowSize + columnOffset + k] =\n                            matrix.get(alignmentMap[high - k], alignmentMap[high - j]);\n                        // top row\n                        rawbits[rowOffset + 6 * rowSize + columnOffset + k] =\n                            matrix.get(alignmentMap[high - j], alignmentMap[low + k]);\n                    }\n                }\n                rowOffset += rowSize * 8;\n            }\n            return rawbits;\n        }\n        /**\n         * Reads a code of given length and at given index in an array of bits\n         */\n        static readCode(rawbits, startIndex, length) {\n            let res = 0;\n            for (let i = startIndex; i < startIndex + length; i++) {\n                res <<= 1;\n                if (rawbits[i]) {\n                    res |= 0x01;\n                }\n            }\n            return res;\n        }\n        /**\n         * Reads a code of length 8 in an array of bits, padding with zeros\n         */\n        static readByte(rawbits, startIndex) {\n            let n = rawbits.length - startIndex;\n            if (n >= 8) {\n                return Decoder.readCode(rawbits, startIndex, 8);\n            }\n            return Decoder.readCode(rawbits, startIndex, n) << (8 - n);\n        }\n        /**\n         * Packs a bit array into bytes, most significant bit first\n         */\n        static convertBoolArrayToByteArray(boolArr) {\n            let byteArr = new Uint8Array((boolArr.length + 7) / 8);\n            for (let i = 0; i < byteArr.length; i++) {\n                byteArr[i] = Decoder.readByte(boolArr, 8 * i);\n            }\n            return byteArr;\n        }\n        totalBitsInLayer(layers, compact) {\n            return ((compact ? 88 : 112) + 16 * layers) * layers;\n        }\n    }\n    Decoder.UPPER_TABLE = [\n        'CTRL_PS', ' ', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P',\n        'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'CTRL_LL', 'CTRL_ML', 'CTRL_DL', 'CTRL_BS'\n    ];\n    Decoder.LOWER_TABLE = [\n        'CTRL_PS', ' ', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p',\n        'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'CTRL_US', 'CTRL_ML', 'CTRL_DL', 'CTRL_BS'\n    ];\n    Decoder.MIXED_TABLE = [\n        // Module parse failed: Octal literal in strict mode (50:29)\n        // so number string were scaped\n        'CTRL_PS', ' ', '\\\\1', '\\\\2', '\\\\3', '\\\\4', '\\\\5', '\\\\6', '\\\\7', '\\b', '\\t', '\\n',\n        '\\\\13', '\\f', '\\r', '\\\\33', '\\\\34', '\\\\35', '\\\\36', '\\\\37', '@', '\\\\', '^', '_',\n        '`', '|', '~', '\\\\177', 'CTRL_LL', 'CTRL_UL', 'CTRL_PL', 'CTRL_BS'\n    ];\n    Decoder.PUNCT_TABLE = [\n        '', '\\r', '\\r\\n', '. ', ', ', ': ', '!', '\"', '#', '$', '%', '&', '\\'', '(', ')',\n        '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '{', '}', 'CTRL_UL'\n    ];\n    Decoder.DIGIT_TABLE = [\n        'CTRL_PS', ' ', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', ',', '.', 'CTRL_UL', 'CTRL_US'\n    ];\n\n    /*\n     * Copyright 2012 ZXing authors\n     *\n     * Licensed under the Apache License, Version 2.0 (the \"License\");\n     * you may not use this file except in compliance with the License.\n     * You may obtain a copy of the License at\n     *\n     *      http://www.apache.org/licenses/LICENSE-2.0\n     *\n     * Unless required by applicable law or agreed to in writing, software\n     * distributed under the License is distributed on an \"AS IS\" BASIS,\n     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n     * See the License for the specific language governing permissions and\n     * limitations under the License.\n     */\n    /*namespace com.google.zxing.common.detector {*/\n    /**\n     * General math-related and numeric utility functions.\n     */\n    class MathUtils {\n        constructor() { }\n        /**\n         * Ends up being a bit faster than {@link Math#round(float)}. This merely rounds its\n         * argument to the nearest int, where x.5 rounds up to x+1. Semantics of this shortcut\n         * differ slightly from {@link Math#round(float)} in that half rounds down for negative\n         * values. -2.5 rounds to -3, not -2. For purposes here it makes no difference.\n         *\n         * @param d real value to round\n         * @return nearest {@code int}\n         */\n        static round(d /*float*/) {\n            if (NaN === d)\n                return 0;\n            if (d <= Number.MIN_SAFE_INTEGER)\n                return Number.MIN_SAFE_INTEGER;\n            if (d >= Number.MAX_SAFE_INTEGER)\n                return Number.MAX_SAFE_INTEGER;\n            return /*(int) */ (d + (d < 0.0 ? -0.5 : 0.5)) | 0;\n        }\n        // TYPESCRIPTPORT: maybe remove round method and call directly Math.round, it looks like it doesn't make sense for js\n        /**\n         * @param aX point A x coordinate\n         * @param aY point A y coordinate\n         * @param bX point B x coordinate\n         * @param bY point B y coordinate\n         * @return Euclidean distance between points A and B\n         */\n        static distance(aX /*float|int*/, aY /*float|int*/, bX /*float|int*/, bY /*float|int*/) {\n            const xDiff = aX - bX;\n            const yDiff = aY - bY;\n            return /*(float) */ Math.sqrt(xDiff * xDiff + yDiff * yDiff);\n        }\n        /**\n         * @param aX point A x coordinate\n         * @param aY point A y coordinate\n         * @param bX point B x coordinate\n         * @param bY point B y coordinate\n         * @return Euclidean distance between points A and B\n         */\n        // public static distance(aX: number /*int*/, aY: number /*int*/, bX: number /*int*/, bY: number /*int*/): float {\n        //   const xDiff = aX - bX\n        //   const yDiff = aY - bY\n        //   return (float) Math.sqrt(xDiff * xDiff + yDiff * yDiff);\n        // }\n        /**\n         * @param array values to sum\n         * @return sum of values in array\n         */\n        static sum(array) {\n            let count = 0;\n            for (let i = 0, length = array.length; i !== length; i++) {\n                const a = array[i];\n                count += a;\n            }\n            return count;\n        }\n    }\n\n    /**\n     * Ponyfill for Java's Float class.\n     */\n    class Float {\n        /**\n         * SincTS has no difference between int and float, there's all numbers,\n         * this is used only to polyfill Java code.\n         */\n        static floatToIntBits(f) {\n            return f;\n        }\n    }\n    /**\n     * The float max value in JS is the number max value.\n     */\n    Float.MAX_VALUE = Number.MAX_SAFE_INTEGER;\n\n    /*\n     * Copyright 2007 ZXing authors\n     *\n     * Licensed under the Apache License, Version 2.0 (the \"License\");\n     * you may not use this file except in compliance with the License.\n     * You may obtain a copy of the License at\n     *\n     *      http://www.apache.org/licenses/LICENSE-2.0\n     *\n     * Unless required by applicable law or agreed to in writing, software\n     * distributed under the License is distributed on an \"AS IS\" BASIS,\n     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n     * See the License for the specific language governing permissions and\n     * limitations under the License.\n     */\n    /**\n     * <p>Encapsulates a point of interest in an image containing a barcode. Typically, this\n     * would be the location of a finder pattern or the corner of the barcode, for example.</p>\n     *\n     * @author Sean Owen\n     */\n    class ResultPoint {\n        constructor(x, y) {\n            this.x = x;\n            this.y = y;\n        }\n        getX() {\n            return this.x;\n        }\n        getY() {\n            return this.y;\n        }\n        /*@Override*/\n        equals(other) {\n            if (other instanceof ResultPoint) {\n                const otherPoint = other;\n                return this.x === otherPoint.x && this.y === otherPoint.y;\n            }\n            return false;\n        }\n        /*@Override*/\n        hashCode() {\n            return 31 * Float.floatToIntBits(this.x) + Float.floatToIntBits(this.y);\n        }\n        /*@Override*/\n        toString() {\n            return '(' + this.x + ',' + this.y + ')';\n        }\n        /**\n         * Orders an array of three ResultPoints in an order [A,B,C] such that AB is less than AC\n         * and BC is less than AC, and the angle between BC and BA is less than 180 degrees.\n         *\n         * @param patterns array of three {@code ResultPoint} to order\n         */\n        static orderBestPatterns(patterns) {\n            // Find distances between pattern centers\n            const zeroOneDistance = this.distance(patterns[0], patterns[1]);\n            const oneTwoDistance = this.distance(patterns[1], patterns[2]);\n            const zeroTwoDistance = this.distance(patterns[0], patterns[2]);\n            let pointA;\n            let pointB;\n            let pointC;\n            // Assume one closest to other two is B; A and C will just be guesses at first\n            if (oneTwoDistance >= zeroOneDistance && oneTwoDistance >= zeroTwoDistance) {\n                pointB = patterns[0];\n                pointA = patterns[1];\n                pointC = patterns[2];\n            }\n            else if (zeroTwoDistance >= oneTwoDistance && zeroTwoDistance >= zeroOneDistance) {\n                pointB = patterns[1];\n                pointA = patterns[0];\n                pointC = patterns[2];\n            }\n            else {\n                pointB = patterns[2];\n                pointA = patterns[0];\n                pointC = patterns[1];\n            }\n            // Use cross product to figure out whether A and C are correct or flipped.\n            // This asks whether BC x BA has a positive z component, which is the arrangement\n            // we want for A, B, C. If it's negative, then we've got it flipped around and\n            // should swap A and C.\n            if (this.crossProductZ(pointA, pointB, pointC) < 0.0) {\n                const temp = pointA;\n                pointA = pointC;\n                pointC = temp;\n            }\n            patterns[0] = pointA;\n            patterns[1] = pointB;\n            patterns[2] = pointC;\n        }\n        /**\n         * @param pattern1 first pattern\n         * @param pattern2 second pattern\n         * @return distance between two points\n         */\n        static distance(pattern1, pattern2) {\n            return MathUtils.distance(pattern1.x, pattern1.y, pattern2.x, pattern2.y);\n        }\n        /**\n         * Returns the z component of the cross product between vectors BC and BA.\n         */\n        static crossProductZ(pointA, pointB, pointC) {\n            const bX = pointB.x;\n            const bY = pointB.y;\n            return ((pointC.x - bX) * (pointA.y - bY)) - ((pointC.y - bY) * (pointA.x - bX));\n        }\n    }\n\n    /*\n     * Copyright 2007 ZXing authors\n     *\n     * Licensed under the Apache License, Version 2.0 (the \"License\");\n     * you may not use this file except in compliance with the License.\n     * You may obtain a copy of the License at\n     *\n     *      http://www.apache.org/licenses/LICENSE-2.0\n     *\n     * Unless required by applicable law or agreed to in writing, software\n     * distributed under the License is distributed on an \"AS IS\" BASIS,\n     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n     * See the License for the specific language governing permissions and\n     * limitations under the License.\n     */\n    /**\n     * <p>Encapsulates the result of detecting a barcode in an image. This includes the raw\n     * matrix of black/white pixels corresponding to the barcode, and possibly points of interest\n     * in the image, like the location of finder patterns or corners of the barcode in the image.</p>\n     *\n     * @author Sean Owen\n     */\n    class DetectorResult {\n        constructor(bits, points) {\n            this.bits = bits;\n            this.points = points;\n        }\n        getBits() {\n            return this.bits;\n        }\n        getPoints() {\n            return this.points;\n        }\n    }\n\n    /*\n     * Copyright 2010 ZXing authors\n     *\n     * Licensed under the Apache License, Version 2.0 (the \"License\");\n     * you may not use this file except in compliance with the License.\n     * You may obtain a copy of the License at\n     *\n     *      http://www.apache.org/licenses/LICENSE-2.0\n     *\n     * Unless required by applicable law or agreed to in writing, software\n     * distributed under the License is distributed on an \"AS IS\" BASIS,\n     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n     * See the License for the specific language governing permissions and\n     * limitations under the License.\n     */\n    /**\n     * <p>Extends {@link DetectorResult} with more information specific to the Aztec format,\n     * like the number of layers and whether it's compact.</p>\n     *\n     * @author Sean Owen\n     */\n    class AztecDetectorResult extends DetectorResult {\n        constructor(bits, points, compact, nbDatablocks, nbLayers) {\n            super(bits, points);\n            this.compact = compact;\n            this.nbDatablocks = nbDatablocks;\n            this.nbLayers = nbLayers;\n        }\n        getNbLayers() {\n            return this.nbLayers;\n        }\n        getNbDatablocks() {\n            return this.nbDatablocks;\n        }\n        isCompact() {\n            return this.compact;\n        }\n    }\n\n    /*\n     * Copyright 2010 ZXing authors\n     *\n     * Licensed under the Apache License, Version 2.0 (the \"License\");\n     * you may not use this file except in compliance with the License.\n     * You may obtain a copy of the License at\n     *\n     *      http://www.apache.org/licenses/LICENSE-2.0\n     *\n     * Unless required by applicable law or agreed to in writing, software\n     * distributed under the License is distributed on an \"AS IS\" BASIS,\n     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n     * See the License for the specific language governing permissions and\n     * limitations under the License.\n     */\n    /**\n     * <p>\n     * Detects a candidate barcode-like rectangular region within an image. It\n     * starts around the center of the image, increases the size of the candidate\n     * region until it finds a white rectangular region. By keeping track of the\n     * last black points it encountered, it determines the corners of the barcode.\n     * </p>\n     *\n     * @author David Olivier\n     */\n    class WhiteRectangleDetector {\n        // public constructor(private image: BitMatrix) /*throws NotFoundException*/ {\n        //   this(image, INIT_SIZE, image.getWidth() / 2, image.getHeight() / 2)\n        // }\n        /**\n         * @param image barcode image to find a rectangle in\n         * @param initSize initial size of search area around center\n         * @param x x position of search center\n         * @param y y position of search center\n         * @throws NotFoundException if image is too small to accommodate {@code initSize}\n         */\n        constructor(image, initSize /*int*/, x /*int*/, y /*int*/) {\n            this.image = image;\n            this.height = image.getHeight();\n            this.width = image.getWidth();\n            if (undefined === initSize || null === initSize) {\n                initSize = WhiteRectangleDetector.INIT_SIZE;\n            }\n            if (undefined === x || null === x) {\n                x = image.getWidth() / 2 | 0;\n            }\n            if (undefined === y || null === y) {\n                y = image.getHeight() / 2 | 0;\n            }\n            const halfsize = initSize / 2 | 0;\n            this.leftInit = x - halfsize;\n            this.rightInit = x + halfsize;\n            this.upInit = y - halfsize;\n            this.downInit = y + halfsize;\n            if (this.upInit < 0 || this.leftInit < 0 || this.downInit >= this.height || this.rightInit >= this.width) {\n                throw new NotFoundException();\n            }\n        }\n        /**\n         * <p>\n         * Detects a candidate barcode-like rectangular region within an image. It\n         * starts around the center of the image, increases the size of the candidate\n         * region until it finds a white rectangular region.\n         * </p>\n         *\n         * @return {@link ResultPoint}[] describing the corners of the rectangular\n         *         region. The first and last points are opposed on the diagonal, as\n         *         are the second and third. The first point will be the topmost\n         *         point and the last, the bottommost. The second point will be\n         *         leftmost and the third, the rightmost\n         * @throws NotFoundException if no Data Matrix Code can be found\n         */\n        detect() {\n            let left = this.leftInit;\n            let right = this.rightInit;\n            let up = this.upInit;\n            let down = this.downInit;\n            let sizeExceeded = false;\n            let aBlackPointFoundOnBorder = true;\n            let atLeastOneBlackPointFoundOnBorder = false;\n            let atLeastOneBlackPointFoundOnRight = false;\n            let atLeastOneBlackPointFoundOnBottom = false;\n            let atLeastOneBlackPointFoundOnLeft = false;\n            let atLeastOneBlackPointFoundOnTop = false;\n            const width = this.width;\n            const height = this.height;\n            while (aBlackPointFoundOnBorder) {\n                aBlackPointFoundOnBorder = false;\n                // .....\n                // .   |\n                // .....\n                let rightBorderNotWhite = true;\n                while ((rightBorderNotWhite || !atLeastOneBlackPointFoundOnRight) && right < width) {\n                    rightBorderNotWhite = this.containsBlackPoint(up, down, right, false);\n                    if (rightBorderNotWhite) {\n                        right++;\n                        aBlackPointFoundOnBorder = true;\n                        atLeastOneBlackPointFoundOnRight = true;\n                    }\n                    else if (!atLeastOneBlackPointFoundOnRight) {\n                        right++;\n                    }\n                }\n                if (right >= width) {\n                    sizeExceeded = true;\n                    break;\n                }\n                // .....\n                // .   .\n                // .___.\n                let bottomBorderNotWhite = true;\n                while ((bottomBorderNotWhite || !atLeastOneBlackPointFoundOnBottom) && down < height) {\n                    bottomBorderNotWhite = this.containsBlackPoint(left, right, down, true);\n                    if (bottomBorderNotWhite) {\n                        down++;\n                        aBlackPointFoundOnBorder = true;\n                        atLeastOneBlackPointFoundOnBottom = true;\n                    }\n                    else if (!atLeastOneBlackPointFoundOnBottom) {\n                        down++;\n                    }\n                }\n                if (down >= height) {\n                    sizeExceeded = true;\n                    break;\n                }\n                // .....\n                // |   .\n                // .....\n                let leftBorderNotWhite = true;\n                while ((leftBorderNotWhite || !atLeastOneBlackPointFoundOnLeft) && left >= 0) {\n                    leftBorderNotWhite = this.containsBlackPoint(up, down, left, false);\n                    if (leftBorderNotWhite) {\n                        left--;\n                        aBlackPointFoundOnBorder = true;\n                        atLeastOneBlackPointFoundOnLeft = true;\n                    }\n                    else if (!atLeastOneBlackPointFoundOnLeft) {\n                        left--;\n                    }\n                }\n                if (left < 0) {\n                    sizeExceeded = true;\n                    break;\n                }\n                // .___.\n                // .   .\n                // .....\n                let topBorderNotWhite = true;\n                while ((topBorderNotWhite || !atLeastOneBlackPointFoundOnTop) && up >= 0) {\n                    topBorderNotWhite = this.containsBlackPoint(left, right, up, true);\n                    if (topBorderNotWhite) {\n                        up--;\n                        aBlackPointFoundOnBorder = true;\n                        atLeastOneBlackPointFoundOnTop = true;\n                    }\n                    else if (!atLeastOneBlackPointFoundOnTop) {\n                        up--;\n                    }\n                }\n                if (up < 0) {\n                    sizeExceeded = true;\n                    break;\n                }\n                if (aBlackPointFoundOnBorder) {\n                    atLeastOneBlackPointFoundOnBorder = true;\n                }\n            }\n            if (!sizeExceeded && atLeastOneBlackPointFoundOnBorder) {\n                const maxSize = right - left;\n                let z = null;\n                for (let i = 1; z === null && i < maxSize; i++) {\n                    z = this.getBlackPointOnSegment(left, down - i, left + i, down);\n                }\n                if (z == null) {\n                    throw new NotFoundException();\n                }\n                let t = null;\n                // go down right\n                for (let i = 1; t === null && i < maxSize; i++) {\n                    t = this.getBlackPointOnSegment(left, up + i, left + i, up);\n                }\n                if (t == null) {\n                    throw new NotFoundException();\n                }\n                let x = null;\n                // go down left\n                for (let i = 1; x === null && i < maxSize; i++) {\n                    x = this.getBlackPointOnSegment(right, up + i, right - i, up);\n                }\n                if (x == null) {\n                    throw new NotFoundException();\n                }\n                let y = null;\n                // go up left\n                for (let i = 1; y === null && i < maxSize; i++) {\n                    y = this.getBlackPointOnSegment(right, down - i, right - i, down);\n                }\n                if (y == null) {\n                    throw new NotFoundException();\n                }\n                return this.centerEdges(y, z, x, t);\n            }\n            else {\n                throw new NotFoundException();\n            }\n        }\n        getBlackPointOnSegment(aX /*float*/, aY /*float*/, bX /*float*/, bY /*float*/) {\n            const dist = MathUtils.round(MathUtils.distance(aX, aY, bX, bY));\n            const xStep = (bX - aX) / dist;\n            const yStep = (bY - aY) / dist;\n            const image = this.image;\n            for (let i = 0; i < dist; i++) {\n                const x = MathUtils.round(aX + i * xStep);\n                const y = MathUtils.round(aY + i * yStep);\n                if (image.get(x, y)) {\n                    return new ResultPoint(x, y);\n                }\n            }\n            return null;\n        }\n        /**\n         * recenters the points of a constant distance towards the center\n         *\n         * @param y bottom most point\n         * @param z left most point\n         * @param x right most point\n         * @param t top most point\n         * @return {@link ResultPoint}[] describing the corners of the rectangular\n         *         region. The first and last points are opposed on the diagonal, as\n         *         are the second and third. The first point will be the topmost\n         *         point and the last, the bottommost. The second point will be\n         *         leftmost and the third, the rightmost\n         */\n        centerEdges(y, z, x, t) {\n            //\n            //       t            t\n            //  z                      x\n            //        x    OR    z\n            //   y                    y\n            //\n            const yi = y.getX();\n            const yj = y.getY();\n            const zi = z.getX();\n            const zj = z.getY();\n            const xi = x.getX();\n            const xj = x.getY();\n            const ti = t.getX();\n            const tj = t.getY();\n            const CORR = WhiteRectangleDetector.CORR;\n            if (yi < this.width / 2.0) {\n                return [\n                    new ResultPoint(ti - CORR, tj + CORR),\n                    new ResultPoint(zi + CORR, zj + CORR),\n                    new ResultPoint(xi - CORR, xj - CORR),\n                    new ResultPoint(yi + CORR, yj - CORR)\n                ];\n            }\n            else {\n                return [\n                    new ResultPoint(ti + CORR, tj + CORR),\n                    new ResultPoint(zi + CORR, zj - CORR),\n                    new ResultPoint(xi - CORR, xj + CORR),\n                    new ResultPoint(yi - CORR, yj - CORR)\n                ];\n            }\n        }\n        /**\n         * Determines whether a segment contains a black point\n         *\n         * @param a          min value of the scanned coordinate\n         * @param b          max value of the scanned coordinate\n         * @param fixed      value of fixed coordinate\n         * @param horizontal set to true if scan must be horizontal, false if vertical\n         * @return true if a black point has been found, else false.\n         */\n        containsBlackPoint(a /*int*/, b /*int*/, fixed /*int*/, horizontal) {\n            const image = this.image;\n            if (horizontal) {\n                for (let x = a; x <= b; x++) {\n                    if (image.get(x, fixed)) {\n                        return true;\n                    }\n                }\n            }\n            else {\n                for (let y = a; y <= b; y++) {\n                    if (image.get(fixed, y)) {\n                        return true;\n                    }\n                }\n            }\n            return false;\n        }\n    }\n    WhiteRectangleDetector.INIT_SIZE = 10;\n    WhiteRectangleDetector.CORR = 1;\n\n    /*\n     * Copyright 2007 ZXing authors\n     *\n     * Licensed under the Apache License, Version 2.0 (the \"License\");\n     * you may not use this file except in compliance with the License.\n     * You may obtain a copy of the License at\n     *\n     *      http://www.apache.org/licenses/LICENSE-2.0\n     *\n     * Unless required by applicable law or agreed to in writing, software\n     * distributed under the License is distributed on an \"AS IS\" BASIS,\n     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n     * See the License for the specific language governing permissions and\n     * limitations under the License.\n     */\n    /**\n     * Implementations of this class can, given locations of finder patterns for a QR code in an\n     * image, sample the right points in the image to reconstruct the QR code, accounting for\n     * perspective distortion. It is abstracted since it is relatively expensive and should be allowed\n     * to take advantage of platform-specific optimized implementations, like Sun's Java Advanced\n     * Imaging library, but which may not be available in other environments such as J2ME, and vice\n     * versa.\n     *\n     * The implementation used can be controlled by calling {@link #setGridSampler(GridSampler)}\n     * with an instance of a class which implements this interface.\n     *\n     * @author Sean Owen\n     */\n    class GridSampler {\n        /**\n         * <p>Checks a set of points that have been transformed to sample points on an image against\n         * the image's dimensions to see if the point are even within the image.</p>\n         *\n         * <p>This method will actually \"nudge\" the endpoints back onto the image if they are found to be\n         * barely (less than 1 pixel) off the image. This accounts for imperfect detection of finder\n         * patterns in an image where the QR Code runs all the way to the image border.</p>\n         *\n         * <p>For efficiency, the method will check points from either end of the line until one is found\n         * to be within the image. Because the set of points are assumed to be linear, this is valid.</p>\n         *\n         * @param image image into which the points should map\n         * @param points actual points in x1,y1,...,xn,yn form\n         * @throws NotFoundException if an endpoint is lies outside the image boundaries\n         */\n        static checkAndNudgePoints(image, points) {\n            const width = image.getWidth();\n            const height = image.getHeight();\n            // Check and nudge points from start until we see some that are OK:\n            let nudged = true;\n            for (let offset = 0; offset < points.length && nudged; offset += 2) {\n                const x = Math.floor(points[offset]);\n                const y = Math.floor(points[offset + 1]);\n                if (x < -1 || x > width || y < -1 || y > height) {\n                    throw new NotFoundException();\n                }\n                nudged = false;\n                if (x === -1) {\n                    points[offset] = 0.0;\n                    nudged = true;\n                }\n                else if (x === width) {\n                    points[offset] = width - 1;\n                    nudged = true;\n                }\n                if (y === -1) {\n                    points[offset + 1] = 0.0;\n                    nudged = true;\n                }\n                else if (y === height) {\n                    points[offset + 1] = height - 1;\n                    nudged = true;\n                }\n            }\n            // Check and nudge points from end:\n            nudged = true;\n            for (let offset = points.length - 2; offset >= 0 && nudged; offset -= 2) {\n                const x = Math.floor(points[offset]);\n                const y = Math.floor(points[offset + 1]);\n                if (x < -1 || x > width || y < -1 || y > height) {\n                    throw new NotFoundException();\n                }\n                nudged = false;\n                if (x === -1) {\n                    points[offset] = 0.0;\n                    nudged = true;\n                }\n                else if (x === width) {\n                    points[offset] = width - 1;\n                    nudged = true;\n                }\n                if (y === -1) {\n                    points[offset + 1] = 0.0;\n                    nudged = true;\n                }\n                else if (y === height) {\n                    points[offset + 1] = height - 1;\n                    nudged = true;\n                }\n            }\n        }\n    }\n\n    /*\n     * Copyright 2007 ZXing authors\n     *\n     * Licensed under the Apache License, Version 2.0 (the \"License\");\n     * you may not use this file except in compliance with the License.\n     * You may obtain a copy of the License at\n     *\n     *      http://www.apache.org/licenses/LICENSE-2.0\n     *\n     * Unless required by applicable law or agreed to in writing, software\n     * distributed under the License is distributed on an \"AS IS\" BASIS,\n     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n     * See the License for the specific language governing permissions and\n     * limitations under the License.\n     */\n    /*namespace com.google.zxing.common {*/\n    /**\n     * <p>This class implements a perspective transform in two dimensions. Given four source and four\n     * destination points, it will compute the transformation implied between them. The code is based\n     * directly upon section 3.4.2 of George Wolberg's \"Digital Image Warping\"; see pages 54-56.</p>\n     *\n     * @author Sean Owen\n     */\n    class PerspectiveTransform {\n        constructor(a11 /*float*/, a21 /*float*/, a31 /*float*/, a12 /*float*/, a22 /*float*/, a32 /*float*/, a13 /*float*/, a23 /*float*/, a33 /*float*/) {\n            this.a11 = a11;\n            this.a21 = a21;\n            this.a31 = a31;\n            this.a12 = a12;\n            this.a22 = a22;\n            this.a32 = a32;\n            this.a13 = a13;\n            this.a23 = a23;\n            this.a33 = a33;\n        }\n        static quadrilateralToQuadrilateral(x0 /*float*/, y0 /*float*/, x1 /*float*/, y1 /*float*/, x2 /*float*/, y2 /*float*/, x3 /*float*/, y3 /*float*/, x0p /*float*/, y0p /*float*/, x1p /*float*/, y1p /*float*/, x2p /*float*/, y2p /*float*/, x3p /*float*/, y3p /*float*/) {\n            const qToS = PerspectiveTransform.quadrilateralToSquare(x0, y0, x1, y1, x2, y2, x3, y3);\n            const sToQ = PerspectiveTransform.squareToQuadrilateral(x0p, y0p, x1p, y1p, x2p, y2p, x3p, y3p);\n            return sToQ.times(qToS);\n        }\n        transformPoints(points) {\n            const max = points.length;\n            const a11 = this.a11;\n            const a12 = this.a12;\n            const a13 = this.a13;\n            const a21 = this.a21;\n            const a22 = this.a22;\n            const a23 = this.a23;\n            const a31 = this.a31;\n            const a32 = this.a32;\n            const a33 = this.a33;\n            for (let i = 0; i < max; i += 2) {\n                const x = points[i];\n                const y = points[i + 1];\n                const denominator = a13 * x + a23 * y + a33;\n                points[i] = (a11 * x + a21 * y + a31) / denominator;\n                points[i + 1] = (a12 * x + a22 * y + a32) / denominator;\n            }\n        }\n        transformPointsWithValues(xValues, yValues) {\n            const a11 = this.a11;\n            const a12 = this.a12;\n            const a13 = this.a13;\n            const a21 = this.a21;\n            const a22 = this.a22;\n            const a23 = this.a23;\n            const a31 = this.a31;\n            const a32 = this.a32;\n            const a33 = this.a33;\n            const n = xValues.length;\n            for (let i = 0; i < n; i++) {\n                const x = xValues[i];\n                const y = yValues[i];\n                const denominator = a13 * x + a23 * y + a33;\n                xValues[i] = (a11 * x + a21 * y + a31) / denominator;\n                yValues[i] = (a12 * x + a22 * y + a32) / denominator;\n            }\n        }\n        static squareToQuadrilateral(x0 /*float*/, y0 /*float*/, x1 /*float*/, y1 /*float*/, x2 /*float*/, y2 /*float*/, x3 /*float*/, y3 /*float*/) {\n            const dx3 = x0 - x1 + x2 - x3;\n            const dy3 = y0 - y1 + y2 - y3;\n            if (dx3 === 0.0 && dy3 === 0.0) {\n                // Affine\n                return new PerspectiveTransform(x1 - x0, x2 - x1, x0, y1 - y0, y2 - y1, y0, 0.0, 0.0, 1.0);\n            }\n            else {\n                const dx1 = x1 - x2;\n                const dx2 = x3 - x2;\n                const dy1 = y1 - y2;\n                const dy2 = y3 - y2;\n                const denominator = dx1 * dy2 - dx2 * dy1;\n                const a13 = (dx3 * dy2 - dx2 * dy3) / denominator;\n                const a23 = (dx1 * dy3 - dx3 * dy1) / denominator;\n                return new PerspectiveTransform(x1 - x0 + a13 * x1, x3 - x0 + a23 * x3, x0, y1 - y0 + a13 * y1, y3 - y0 + a23 * y3, y0, a13, a23, 1.0);\n            }\n        }\n        static quadrilateralToSquare(x0 /*float*/, y0 /*float*/, x1 /*float*/, y1 /*float*/, x2 /*float*/, y2 /*float*/, x3 /*float*/, y3 /*float*/) {\n            // Here, the adjoint serves as the inverse:\n            return PerspectiveTransform.squareToQuadrilateral(x0, y0, x1, y1, x2, y2, x3, y3).buildAdjoint();\n        }\n        buildAdjoint() {\n            // Adjoint is the transpose of the cofactor matrix:\n            return new PerspectiveTransform(this.a22 * this.a33 - this.a23 * this.a32, this.a23 * this.a31 - this.a21 * this.a33, this.a21 * this.a32 - this.a22 * this.a31, this.a13 * this.a32 - this.a12 * this.a33, this.a11 * this.a33 - this.a13 * this.a31, this.a12 * this.a31 - this.a11 * this.a32, this.a12 * this.a23 - this.a13 * this.a22, this.a13 * this.a21 - this.a11 * this.a23, this.a11 * this.a22 - this.a12 * this.a21);\n        }\n        times(other) {\n            return new PerspectiveTransform(this.a11 * other.a11 + this.a21 * other.a12 + this.a31 * other.a13, this.a11 * other.a21 + this.a21 * other.a22 + this.a31 * other.a23, this.a11 * other.a31 + this.a21 * other.a32 + this.a31 * other.a33, this.a12 * other.a11 + this.a22 * other.a12 + this.a32 * other.a13, this.a12 * other.a21 + this.a22 * other.a22 + this.a32 * other.a23, this.a12 * other.a31 + this.a22 * other.a32 + this.a32 * other.a33, this.a13 * other.a11 + this.a23 * other.a12 + this.a33 * other.a13, this.a13 * other.a21 + this.a23 * other.a22 + this.a33 * other.a23, this.a13 * other.a31 + this.a23 * other.a32 + this.a33 * other.a33);\n        }\n    }\n\n    /*\n     * Copyright 2007 ZXing authors\n     *\n     * Licensed under the Apache License, Version 2.0 (the \"License\");\n     * you may not use this file except in compliance with the License.\n     * You may obtain a copy of the License at\n     *\n     *      http://www.apache.org/licenses/LICENSE-2.0\n     *\n     * Unless required by applicable law or agreed to in writing, software\n     * distributed under the License is distributed on an \"AS IS\" BASIS,\n     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n     * See the License for the specific language governing permissions and\n     * limitations under the License.\n     */\n    /**\n     * @author Sean Owen\n     */\n    class DefaultGridSampler extends GridSampler {\n        /*@Override*/\n        sampleGrid(image, dimensionX /*int*/, dimensionY /*int*/, p1ToX /*float*/, p1ToY /*float*/, p2ToX /*float*/, p2ToY /*float*/, p3ToX /*float*/, p3ToY /*float*/, p4ToX /*float*/, p4ToY /*float*/, p1FromX /*float*/, p1FromY /*float*/, p2FromX /*float*/, p2FromY /*float*/, p3FromX /*float*/, p3FromY /*float*/, p4FromX /*float*/, p4FromY /*float*/) {\n            const transform = PerspectiveTransform.quadrilateralToQuadrilateral(p1ToX, p1ToY, p2ToX, p2ToY, p3ToX, p3ToY, p4ToX, p4ToY, p1FromX, p1FromY, p2FromX, p2FromY, p3FromX, p3FromY, p4FromX, p4FromY);\n            return this.sampleGridWithTransform(image, dimensionX, dimensionY, transform);\n        }\n        /*@Override*/\n        sampleGridWithTransform(image, dimensionX /*int*/, dimensionY /*int*/, transform) {\n            if (dimensionX <= 0 || dimensionY <= 0) {\n                throw new NotFoundException();\n            }\n            const bits = new BitMatrix(dimensionX, dimensionY);\n            const points = new Float32Array(2 * dimensionX);\n            for (let y = 0; y < dimensionY; y++) {\n                const max = points.length;\n                const iValue = y + 0.5;\n                for (let x = 0; x < max; x += 2) {\n                    points[x] = (x / 2) + 0.5;\n                    points[x + 1] = iValue;\n                }\n                transform.transformPoints(points);\n                // Quick check to see if points transformed to something inside the image\n                // sufficient to check the endpoints\n                GridSampler.checkAndNudgePoints(image, points);\n                try {\n                    for (let x = 0; x < max; x += 2) {\n                        if (image.get(Math.floor(points[x]), Math.floor(points[x + 1]))) {\n                            // Black(-ish) pixel\n                            bits.set(x / 2, y);\n                        }\n                    }\n                }\n                catch (aioobe /*: ArrayIndexOutOfBoundsException*/) {\n                    // This feels wrong, but, sometimes if the finder patterns are misidentified, the resulting\n                    // transform gets \"twisted\" such that it maps a straight line of points to a set of points\n                    // whose endpoints are in bounds, but others are not. There is probably some mathematical\n                    // way to detect this about the transformation that I don't know yet.\n                    // This results in an ugly runtime exception despite our clever checks above -- can't have\n                    // that. We could check each point's coordinates but that feels duplicative. We settle for\n                    // catching and wrapping ArrayIndexOutOfBoundsException.\n                    throw new NotFoundException();\n                }\n            }\n            return bits;\n        }\n    }\n\n    class GridSamplerInstance {\n        /**\n         * Sets the implementation of GridSampler used by the library. One global\n         * instance is stored, which may sound problematic. But, the implementation provided\n         * ought to be appropriate for the entire platform, and all uses of this library\n         * in the whole lifetime of the JVM. For instance, an Android activity can swap in\n         * an implementation that takes advantage of native platform libraries.\n         *\n         * @param newGridSampler The platform-specific object to install.\n         */\n        static setGridSampler(newGridSampler) {\n            GridSamplerInstance.gridSampler = newGridSampler;\n        }\n        /**\n         * @return the current implementation of GridSampler\n         */\n        static getInstance() {\n            return GridSamplerInstance.gridSampler;\n        }\n    }\n    GridSamplerInstance.gridSampler = new DefaultGridSampler();\n\n    /*\n     * Copyright 2010 ZXing authors\n     *\n     * Licensed under the Apache License, Version 2.0 (the \"License\");\n     * you may not use this file except in compliance with the License.\n     * You may obtain a copy of the License at\n     *\n     *      http://www.apache.org/licenses/LICENSE-2.0\n     *\n     * Unless required by applicable law or agreed to in writing, software\n     * distributed under the License is distributed on an \"AS IS\" BASIS,\n     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n     * See the License for the specific language governing permissions and\n     * limitations under the License.\n     */\n    class Point {\n        constructor(x, y) {\n            this.x = x;\n            this.y = y;\n        }\n        toResultPoint() {\n            return new ResultPoint(this.getX(), this.getY());\n        }\n        getX() {\n            return this.x;\n        }\n        getY() {\n            return this.y;\n        }\n    }\n    /**\n     * Encapsulates logic that can detect an Aztec Code in an image, even if the Aztec Code\n     * is rotated or skewed, or partially obscured.\n     *\n     * @author David Olivier\n     * @author Frank Yellin\n     */\n    class Detector {\n        constructor(image) {\n            this.EXPECTED_CORNER_BITS = new Int32Array([\n                0xee0,\n                0x1dc,\n                0x83b,\n                0x707,\n            ]);\n            this.image = image;\n        }\n        detect() {\n            return this.detectMirror(false);\n        }\n        /**\n         * Detects an Aztec Code in an image.\n         *\n         * @param isMirror if true, image is a mirror-image of original\n         * @return {@link AztecDetectorResult} encapsulating results of detecting an Aztec Code\n         * @throws NotFoundException if no Aztec Code can be found\n         */\n        detectMirror(isMirror) {\n            // 1. Get the center of the aztec matrix\n            let pCenter = this.getMatrixCenter();\n            // 2. Get the center points of the four diagonal points just outside the bull's eye\n            //  [topRight, bottomRight, bottomLeft, topLeft]\n            let bullsEyeCorners = this.getBullsEyeCorners(pCenter);\n            if (isMirror) {\n                let temp = bullsEyeCorners[0];\n                bullsEyeCorners[0] = bullsEyeCorners[2];\n                bullsEyeCorners[2] = temp;\n            }\n            // 3. Get the size of the matrix and other parameters from the bull's eye\n            this.extractParameters(bullsEyeCorners);\n            // 4. Sample the grid\n            let bits = this.sampleGrid(this.image, bullsEyeCorners[this.shift % 4], bullsEyeCorners[(this.shift + 1) % 4], bullsEyeCorners[(this.shift + 2) % 4], bullsEyeCorners[(this.shift + 3) % 4]);\n            // 5. Get the corners of the matrix.\n            let corners = this.getMatrixCornerPoints(bullsEyeCorners);\n            return new AztecDetectorResult(bits, corners, this.compact, this.nbDataBlocks, this.nbLayers);\n        }\n        /**\n         * Extracts the number of data layers and data blocks from the layer around the bull's eye.\n         *\n         * @param bullsEyeCorners the array of bull's eye corners\n         * @throws NotFoundException in case of too many errors or invalid parameters\n         */\n        extractParameters(bullsEyeCorners) {\n            if (!this.isValidPoint(bullsEyeCorners[0]) || !this.isValidPoint(bullsEyeCorners[1]) ||\n                !this.isValidPoint(bullsEyeCorners[2]) || !this.isValidPoint(bullsEyeCorners[3])) {\n                throw new NotFoundException();\n            }\n            let length = 2 * this.nbCenterLayers;\n            // Get the bits around the bull's eye\n            let sides = new Int32Array([\n                this.sampleLine(bullsEyeCorners[0], bullsEyeCorners[1], length),\n                this.sampleLine(bullsEyeCorners[1], bullsEyeCorners[2], length),\n                this.sampleLine(bullsEyeCorners[2], bullsEyeCorners[3], length),\n                this.sampleLine(bullsEyeCorners[3], bullsEyeCorners[0], length) // Top\n            ]);\n            // bullsEyeCorners[shift] is the corner of the bulls'eye that has three\n            // orientation marks.\n            // sides[shift] is the row/column that goes from the corner with three\n            // orientation marks to the corner with two.\n            this.shift = this.getRotation(sides, length);\n            // Flatten the parameter bits into a single 28- or 40-bit long\n            let parameterData = 0;\n            for (let i = 0; i < 4; i++) {\n                let side = sides[(this.shift + i) % 4];\n                if (this.compact) {\n                    // Each side of the form ..XXXXXXX. where Xs are parameter data\n                    parameterData <<= 7;\n                    parameterData += (side >> 1) & 0x7F;\n                }\n                else {\n                    // Each side of the form ..XXXXX.XXXXX. where Xs are parameter data\n                    parameterData <<= 10;\n                    parameterData += ((side >> 2) & (0x1f << 5)) + ((side >> 1) & 0x1F);\n                }\n            }\n            // Corrects parameter data using RS.  Returns just the data portion\n            // without the error correction.\n            let correctedData = this.getCorrectedParameterData(parameterData, this.compact);\n            if (this.compact) {\n                // 8 bits:  2 bits layers and 6 bits data blocks\n                this.nbLayers = (correctedData >> 6) + 1;\n                this.nbDataBlocks = (correctedData & 0x3F) + 1;\n            }\n            else {\n                // 16 bits:  5 bits layers and 11 bits data blocks\n                this.nbLayers = (correctedData >> 11) + 1;\n                this.nbDataBlocks = (correctedData & 0x7FF) + 1;\n            }\n        }\n        getRotation(sides, length) {\n            // In a normal pattern, we expect to See\n            //   **    .*             D       A\n            //   *      *\n            //\n            //   .      *\n            //   ..    ..             C       B\n            //\n            // Grab the 3 bits from each of the sides the form the locator pattern and concatenate\n            // into a 12-bit integer.  Start with the bit at A\n            let cornerBits = 0;\n            sides.forEach((side, idx, arr) => {\n                // XX......X where X's are orientation marks\n                let t = ((side >> (length - 2)) << 1) + (side & 1);\n                cornerBits = (cornerBits << 3) + t;\n            });\n            // for (var side in sides) {\n            //     // XX......X where X's are orientation marks\n            //     var t = ((side >> (length - 2)) << 1) + (side & 1);\n            //     cornerBits = (cornerBits << 3) + t;\n            // }\n            // Mov the bottom bit to the top, so that the three bits of the locator pattern at A are\n            // together.  cornerBits is now:\n            //  3 orientation bits at A || 3 orientation bits at B || ... || 3 orientation bits at D\n            cornerBits = ((cornerBits & 1) << 11) + (cornerBits >> 1);\n            // The result shift indicates which element of BullsEyeCorners[] goes into the top-left\n            // corner. Since the four rotation values have a Hamming distance of 8, we\n            // can easily tolerate two errors.\n            for (let shift = 0; shift < 4; shift++) {\n                if (Integer.bitCount(cornerBits ^ this.EXPECTED_CORNER_BITS[shift]) <= 2) {\n                    return shift;\n                }\n            }\n            throw new NotFoundException();\n        }\n        /**\n         * Corrects the parameter bits using Reed-Solomon algorithm.\n         *\n         * @param parameterData parameter bits\n         * @param compact true if this is a compact Aztec code\n         * @throws NotFoundException if the array contains too many errors\n         */\n        getCorrectedParameterData(parameterData, compact) {\n            let numCodewords;\n            let numDataCodewords;\n            if (compact) {\n                numCodewords = 7;\n                numDataCodewords = 2;\n            }\n            else {\n                numCodewords = 10;\n                numDataCodewords = 4;\n            }\n            let numECCodewords = numCodewords - numDataCodewords;\n            let parameterWords = new Int32Array(numCodewords);\n            for (let i = numCodewords - 1; i >= 0; --i) {\n                parameterWords[i] = parameterData & 0xF;\n                parameterData >>= 4;\n            }\n            try {\n                let rsDecoder = new ReedSolomonDecoder(GenericGF.AZTEC_PARAM);\n                rsDecoder.decode(parameterWords, numECCodewords);\n            }\n            catch (ignored) {\n                throw new NotFoundException();\n            }\n            // Toss the error correction.  Just return the data as an integer\n            let result = 0;\n            for (let i = 0; i < numDataCodewords; i++) {\n                result = (result << 4) + parameterWords[i];\n            }\n            return result;\n        }\n        /**\n         * Finds the corners of a bull-eye centered on the passed point.\n         * This returns the centers of the diagonal points just outside the bull's eye\n         * Returns [topRight, bottomRight, bottomLeft, topLeft]\n         *\n         * @param pCenter Center point\n         * @return The corners of the bull-eye\n         * @throws NotFoundException If no valid bull-eye can be found\n         */\n        getBullsEyeCorners(pCenter) {\n            let pina = pCenter;\n            let pinb = pCenter;\n            let pinc = pCenter;\n            let pind = pCenter;\n            let color = true;\n            for (this.nbCenterLayers = 1; this.nbCenterLayers < 9; this.nbCenterLayers++) {\n                let pouta = this.getFirstDifferent(pina, color, 1, -1);\n                let poutb = this.getFirstDifferent(pinb, color, 1, 1);\n                let poutc = this.getFirstDifferent(pinc, color, -1, 1);\n                let poutd = this.getFirstDifferent(pind, color, -1, -1);\n                // d      a\n                //\n                // c      b\n                if (this.nbCenterLayers > 2) {\n                    let q = (this.distancePoint(poutd, pouta) * this.nbCenterLayers) / (this.distancePoint(pind, pina) * (this.nbCenterLayers + 2));\n                    if (q < 0.75 || q > 1.25 || !this.isWhiteOrBlackRectangle(pouta, poutb, poutc, poutd)) {\n                        break;\n                    }\n                }\n                pina = pouta;\n                pinb = poutb;\n                pinc = poutc;\n                pind = poutd;\n                color = !color;\n            }\n            if (this.nbCenterLayers !== 5 && this.nbCenterLayers !== 7) {\n                throw new NotFoundException();\n            }\n            this.compact = this.nbCenterLayers === 5;\n            // Expand the square by .5 pixel in each direction so that we're on the border\n            // between the white square and the black square\n            let pinax = new ResultPoint(pina.getX() + 0.5, pina.getY() - 0.5);\n            let pinbx = new ResultPoint(pinb.getX() + 0.5, pinb.getY() + 0.5);\n            let pincx = new ResultPoint(pinc.getX() - 0.5, pinc.getY() + 0.5);\n            let pindx = new ResultPoint(pind.getX() - 0.5, pind.getY() - 0.5);\n            // Expand the square so that its corners are the centers of the points\n            // just outside the bull's eye.\n            return this.expandSquare([pinax, pinbx, pincx, pindx], 2 * this.nbCenterLayers - 3, 2 * this.nbCenterLayers);\n        }\n        /**\n         * Finds a candidate center point of an Aztec code from an image\n         *\n         * @return the center point\n         */\n        getMatrixCenter() {\n            let pointA;\n            let pointB;\n            let pointC;\n            let pointD;\n            // Get a white rectangle that can be the border of the matrix in center bull's eye or\n            try {\n                let cornerPoints = new WhiteRectangleDetector(this.image).detect();\n                pointA = cornerPoints[0];\n                pointB = cornerPoints[1];\n                pointC = cornerPoints[2];\n                pointD = cornerPoints[3];\n            }\n            catch (e) {\n                // This exception can be in case the initial rectangle is white\n                // In that case, surely in the bull's eye, we try to expand the rectangle.\n                let cx = this.image.getWidth() / 2;\n                let cy = this.image.getHeight() / 2;\n                pointA = this.getFirstDifferent(new Point(cx + 7, cy - 7), false, 1, -1).toResultPoint();\n                pointB = this.getFirstDifferent(new Point(cx + 7, cy + 7), false, 1, 1).toResultPoint();\n                pointC = this.getFirstDifferent(new Point(cx - 7, cy + 7), false, -1, 1).toResultPoint();\n                pointD = this.getFirstDifferent(new Point(cx - 7, cy - 7), false, -1, -1).toResultPoint();\n            }\n            // Compute the center of the rectangle\n            let cx = MathUtils.round((pointA.getX() + pointD.getX() + pointB.getX() + pointC.getX()) / 4.0);\n            let cy = MathUtils.round((pointA.getY() + pointD.getY() + pointB.getY() + pointC.getY()) / 4.0);\n            // Redetermine the white rectangle starting from previously computed center.\n            // This will ensure that we end up with a white rectangle in center bull's eye\n            // in order to compute a more accurate center.\n            try {\n                let cornerPoints = new WhiteRectangleDetector(this.image, 15, cx, cy).detect();\n                pointA = cornerPoints[0];\n                pointB = cornerPoints[1];\n                pointC = cornerPoints[2];\n                pointD = cornerPoints[3];\n            }\n            catch (e) {\n                // This exception can be in case the initial rectangle is white\n                // In that case we try to expand the rectangle.\n                pointA = this.getFirstDifferent(new Point(cx + 7, cy - 7), false, 1, -1).toResultPoint();\n                pointB = this.getFirstDifferent(new Point(cx + 7, cy + 7), false, 1, 1).toResultPoint();\n                pointC = this.getFirstDifferent(new Point(cx - 7, cy + 7), false, -1, 1).toResultPoint();\n                pointD = this.getFirstDifferent(new Point(cx - 7, cy - 7), false, -1, -1).toResultPoint();\n            }\n            // Recompute the center of the rectangle\n            cx = MathUtils.round((pointA.getX() + pointD.getX() + pointB.getX() + pointC.getX()) / 4.0);\n            cy = MathUtils.round((pointA.getY() + pointD.getY() + pointB.getY() + pointC.getY()) / 4.0);\n            return new Point(cx, cy);\n        }\n        /**\n         * Gets the Aztec code corners from the bull's eye corners and the parameters.\n         *\n         * @param bullsEyeCorners the array of bull's eye corners\n         * @return the array of aztec code corners\n         */\n        getMatrixCornerPoints(bullsEyeCorners) {\n            return this.expandSquare(bullsEyeCorners, 2 * this.nbCenterLayers, this.getDimension());\n        }\n        /**\n         * Creates a BitMatrix by sampling the provided image.\n         * topLeft, topRight, bottomRight, and bottomLeft are the centers of the squares on the\n         * diagonal just outside the bull's eye.\n         */\n        sampleGrid(image, topLeft, topRight, bottomRight, bottomLeft) {\n            let sampler = GridSamplerInstance.getInstance();\n            let dimension = this.getDimension();\n            let low = dimension / 2 - this.nbCenterLayers;\n            let high = dimension / 2 + this.nbCenterLayers;\n            return sampler.sampleGrid(image, dimension, dimension, low, low, // topleft\n            high, low, // topright\n            high, high, // bottomright\n            low, high, // bottomleft\n            topLeft.getX(), topLeft.getY(), topRight.getX(), topRight.getY(), bottomRight.getX(), bottomRight.getY(), bottomLeft.getX(), bottomLeft.getY());\n        }\n        /**\n         * Samples a line.\n         *\n         * @param p1   start point (inclusive)\n         * @param p2   end point (exclusive)\n         * @param size number of bits\n         * @return the array of bits as an int (first bit is high-order bit of result)\n         */\n        sampleLine(p1, p2, size) {\n            let result = 0;\n            let d = this.distanceResultPoint(p1, p2);\n            let moduleSize = d / size;\n            let px = p1.getX();\n            let py = p1.getY();\n            let dx = moduleSize * (p2.getX() - p1.getX()) / d;\n            let dy = moduleSize * (p2.getY() - p1.getY()) / d;\n            for (let i = 0; i < size; i++) {\n                if (this.image.get(MathUtils.round(px + i * dx), MathUtils.round(py + i * dy))) {\n                    result |= 1 << (size - i - 1);\n                }\n            }\n            return result;\n        }\n        /**\n         * @return true if the border of the rectangle passed in parameter is compound of white points only\n         *         or black points only\n         */\n        isWhiteOrBlackRectangle(p1, p2, p3, p4) {\n            let corr = 3;\n            p1 = new Point(p1.getX() - corr, p1.getY() + corr);\n            p2 = new Point(p2.getX() - corr, p2.getY() - corr);\n            p3 = new Point(p3.getX() + corr, p3.getY() - corr);\n            p4 = new Point(p4.getX() + corr, p4.getY() + corr);\n            let cInit = this.getColor(p4, p1);\n            if (cInit === 0) {\n                return false;\n            }\n            let c = this.getColor(p1, p2);\n            if (c !== cInit) {\n                return false;\n            }\n            c = this.getColor(p2, p3);\n            if (c !== cInit) {\n                return false;\n            }\n            c = this.getColor(p3, p4);\n            return c === cInit;\n        }\n        /**\n         * Gets the color of a segment\n         *\n         * @return 1 if segment more than 90% black, -1 if segment is more than 90% white, 0 else\n         */\n        getColor(p1, p2) {\n            let d = this.distancePoint(p1, p2);\n            let dx = (p2.getX() - p1.getX()) / d;\n            let dy = (p2.getY() - p1.getY()) / d;\n            let error = 0;\n            let px = p1.getX();\n            let py = p1.getY();\n            let colorModel = this.image.get(p1.getX(), p1.getY());\n            let iMax = Math.ceil(d);\n            for (let i = 0; i < iMax; i++) {\n                px += dx;\n                py += dy;\n                if (this.image.get(MathUtils.round(px), MathUtils.round(py)) !== colorModel) {\n                    error++;\n                }\n            }\n            let errRatio = error / d;\n            if (errRatio > 0.1 && errRatio < 0.9) {\n                return 0;\n            }\n            return (errRatio <= 0.1) === colorModel ? 1 : -1;\n        }\n        /**\n         * Gets the coordinate of the first point with a different color in the given direction\n         */\n        getFirstDifferent(init, color, dx, dy) {\n            let x = init.getX() + dx;\n            let y = init.getY() + dy;\n            while (this.isValid(x, y) && this.image.get(x, y) === color) {\n                x += dx;\n                y += dy;\n            }\n            x -= dx;\n            y -= dy;\n            while (this.isValid(x, y) && this.image.get(x, y) === color) {\n                x += dx;\n            }\n            x -= dx;\n            while (this.isValid(x, y) && this.image.get(x, y) === color) {\n                y += dy;\n            }\n            y -= dy;\n            return new Point(x, y);\n        }\n        /**\n         * Expand the square represented by the corner points by pushing out equally in all directions\n         *\n         * @param cornerPoints the corners of the square, which has the bull's eye at its center\n         * @param oldSide the original length of the side of the square in the target bit matrix\n         * @param newSide the new length of the size of the square in the target bit matrix\n         * @return the corners of the expanded square\n         */\n        expandSquare(cornerPoints, oldSide, newSide) {\n            let ratio = newSide / (2.0 * oldSide);\n            let dx = cornerPoints[0].getX() - cornerPoints[2].getX();\n            let dy = cornerPoints[0].getY() - cornerPoints[2].getY();\n            let centerx = (cornerPoints[0].getX() + cornerPoints[2].getX()) / 2.0;\n            let centery = (cornerPoints[0].getY() + cornerPoints[2].getY()) / 2.0;\n            let result0 = new ResultPoint(centerx + ratio * dx, centery + ratio * dy);\n            let result2 = new ResultPoint(centerx - ratio * dx, centery - ratio * dy);\n            dx = cornerPoints[1].getX() - cornerPoints[3].getX();\n            dy = cornerPoints[1].getY() - cornerPoints[3].getY();\n            centerx = (cornerPoints[1].getX() + cornerPoints[3].getX()) / 2.0;\n            centery = (cornerPoints[1].getY() + cornerPoints[3].getY()) / 2.0;\n            let result1 = new ResultPoint(centerx + ratio * dx, centery + ratio * dy);\n            let result3 = new ResultPoint(centerx - ratio * dx, centery - ratio * dy);\n            let results = [result0, result1, result2, result3];\n            return results;\n        }\n        isValid(x, y) {\n            return x >= 0 && x < this.image.getWidth() && y > 0 && y < this.image.getHeight();\n        }\n        isValidPoint(point) {\n            let x = MathUtils.round(point.getX());\n            let y = MathUtils.round(point.getY());\n            return this.isValid(x, y);\n        }\n        distancePoint(a, b) {\n            return MathUtils.distance(a.getX(), a.getY(), b.getX(), b.getY());\n        }\n        distanceResultPoint(a, b) {\n            return MathUtils.distance(a.getX(), a.getY(), b.getX(), b.getY());\n        }\n        getDimension() {\n            if (this.compact) {\n                return 4 * this.nbLayers + 11;\n            }\n            if (this.nbLayers <= 4) {\n                return 4 * this.nbLayers + 15;\n            }\n            return 4 * this.nbLayers + 2 * (Integer.truncDivision((this.nbLayers - 4), 8) + 1) + 15;\n        }\n    }\n\n    /*\n     * Copyright 2010 ZXing authors\n     *\n     * Licensed under the Apache License, Version 2.0 (the \"License\");\n     * you may not use this file except in compliance with the License.\n     * You may obtain a copy of the License at\n     *\n     *      http://www.apache.org/licenses/LICENSE-2.0\n     *\n     * Unless required by applicable law or agreed to in writing, software\n     * distributed under the License is distributed on an \"AS IS\" BASIS,\n     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n     * See the License for the specific language governing permissions and\n     * limitations under the License.\n     */\n    // import java.util.List;\n    // import java.util.Map;\n    /**\n     * This implementation can detect and decode Aztec codes in an image.\n     *\n     * @author David Olivier\n     */\n    class AztecReader {\n        /**\n         * Locates and decodes a Data Matrix code in an image.\n         *\n         * @return a String representing the content encoded by the Data Matrix code\n         * @throws NotFoundException if a Data Matrix code cannot be found\n         * @throws FormatException if a Data Matrix code cannot be decoded\n         */\n        decode(image, hints = null) {\n            let exception = null;\n            let detector = new Detector(image.getBlackMatrix());\n            let points = null;\n            let decoderResult = null;\n            try {\n                let detectorResult = detector.detectMirror(false);\n                points = detectorResult.getPoints();\n                this.reportFoundResultPoints(hints, points);\n                decoderResult = new Decoder().decode(detectorResult);\n            }\n            catch (e) {\n                exception = e;\n            }\n            if (decoderResult == null) {\n                try {\n                    let detectorResult = detector.detectMirror(true);\n                    points = detectorResult.getPoints();\n                    this.reportFoundResultPoints(hints, points);\n                    decoderResult = new Decoder().decode(detectorResult);\n                }\n                catch (e) {\n                    if (exception != null) {\n                        throw exception;\n                    }\n                    throw e;\n                }\n            }\n            let result = new Result(decoderResult.getText(), decoderResult.getRawBytes(), decoderResult.getNumBits(), points, BarcodeFormat$1.AZTEC, System.currentTimeMillis());\n            let byteSegments = decoderResult.getByteSegments();\n            if (byteSegments != null) {\n                result.putMetadata(ResultMetadataType$1.BYTE_SEGMENTS, byteSegments);\n            }\n            let ecLevel = decoderResult.getECLevel();\n            if (ecLevel != null) {\n                result.putMetadata(ResultMetadataType$1.ERROR_CORRECTION_LEVEL, ecLevel);\n            }\n            return result;\n        }\n        reportFoundResultPoints(hints, points) {\n            if (hints != null) {\n                let rpcb = hints.get(DecodeHintType$1.NEED_RESULT_POINT_CALLBACK);\n                if (rpcb != null) {\n                    points.forEach((point, idx, arr) => {\n                        rpcb.foundPossibleResultPoint(point);\n                    });\n                }\n            }\n        }\n        // @Override\n        reset() {\n            // do nothing\n        }\n    }\n\n    /**\n     * Aztec Code reader to use from browser.\n     *\n     * @class BrowserAztecCodeReader\n     * @extends {BrowserCodeReader}\n     */\n    class BrowserAztecCodeReader extends BrowserCodeReader {\n        /**\n         * Creates an instance of BrowserAztecCodeReader.\n         * @param {number} [timeBetweenScansMillis=500] the time delay between subsequent decode tries\n         *\n         * @memberOf BrowserAztecCodeReader\n         */\n        constructor(timeBetweenScansMillis = 500) {\n            super(new AztecReader(), timeBetweenScansMillis);\n        }\n    }\n\n    /**\n     * Encapsulates functionality and implementation that is common to all families\n     * of one-dimensional barcodes.\n     *\n     * @author dswitkin@google.com (Daniel Switkin)\n     * @author Sean Owen\n     */\n    class OneDReader {\n        /*\n        @Override\n        public Result decode(BinaryBitmap image) throws NotFoundException, FormatException {\n          return decode(image, null);\n        }\n        */\n        // Note that we don't try rotation without the try harder flag, even if rotation was supported.\n        // @Override\n        decode(image, hints) {\n            try {\n                return this.doDecode(image, hints);\n            }\n            catch (nfe) {\n                const tryHarder = hints && (hints.get(DecodeHintType$1.TRY_HARDER) === true);\n                if (tryHarder && image.isRotateSupported()) {\n                    const rotatedImage = image.rotateCounterClockwise();\n                    const result = this.doDecode(rotatedImage, hints);\n                    // Record that we found it rotated 90 degrees CCW / 270 degrees CW\n                    const metadata = result.getResultMetadata();\n                    let orientation = 270;\n                    if (metadata !== null && (metadata.get(ResultMetadataType$1.ORIENTATION) === true)) {\n                        // But if we found it reversed in doDecode(), add in that result here:\n                        orientation = (orientation + metadata.get(ResultMetadataType$1.ORIENTATION) % 360);\n                    }\n                    result.putMetadata(ResultMetadataType$1.ORIENTATION, orientation);\n                    // Update result points\n                    const points = result.getResultPoints();\n                    if (points !== null) {\n                        const height = rotatedImage.getHeight();\n                        for (let i = 0; i < points.length; i++) {\n                            points[i] = new ResultPoint(height - points[i].getY() - 1, points[i].getX());\n                        }\n                    }\n                    return result;\n                }\n                else {\n                    throw new NotFoundException();\n                }\n            }\n        }\n        // @Override\n        reset() {\n            // do nothing\n        }\n        /**\n         * We're going to examine rows from the middle outward, searching alternately above and below the\n         * middle, and farther out each time. rowStep is the number of rows between each successive\n         * attempt above and below the middle. So we'd scan row middle, then middle - rowStep, then\n         * middle + rowStep, then middle - (2 * rowStep), etc.\n         * rowStep is bigger as the image is taller, but is always at least 1. We've somewhat arbitrarily\n         * decided that moving up and down by about 1/16 of the image is pretty good; we try more of the\n         * image if \"trying harder\".\n         *\n         * @param image The image to decode\n         * @param hints Any hints that were requested\n         * @return The contents of the decoded barcode\n         * @throws NotFoundException Any spontaneous errors which occur\n         */\n        doDecode(image, hints) {\n            const width = image.getWidth();\n            const height = image.getHeight();\n            let row = new BitArray(width);\n            const tryHarder = hints && (hints.get(DecodeHintType$1.TRY_HARDER) === true);\n            const rowStep = Math.max(1, height >> (tryHarder ? 8 : 5));\n            let maxLines;\n            if (tryHarder) {\n                maxLines = height; // Look at the whole image, not just the center\n            }\n            else {\n                maxLines = 15; // 15 rows spaced 1/32 apart is roughly the middle half of the image\n            }\n            const middle = Math.trunc(height / 2);\n            for (let x = 0; x < maxLines; x++) {\n                // Scanning from the middle out. Determine which row we're looking at next:\n                const rowStepsAboveOrBelow = Math.trunc((x + 1) / 2);\n                const isAbove = (x & 0x01) === 0; // i.e. is x even?\n                const rowNumber = middle + rowStep * (isAbove ? rowStepsAboveOrBelow : -rowStepsAboveOrBelow);\n                if (rowNumber < 0 || rowNumber >= height) {\n                    // Oops, if we run off the top or bottom, stop\n                    break;\n                }\n                // Estimate black point for this row and load it:\n                try {\n                    row = image.getBlackRow(rowNumber, row);\n                }\n                catch (ignored) {\n                    continue;\n                }\n                // While we have the image data in a BitArray, it's fairly cheap to reverse it in place to\n                // handle decoding upside down barcodes.\n                for (let attempt = 0; attempt < 2; attempt++) {\n                    if (attempt === 1) { // trying again?\n                        row.reverse(); // reverse the row and continue\n                        // This means we will only ever draw result points *once* in the life of this method\n                        // since we want to avoid drawing the wrong points after flipping the row, and,\n                        // don't want to clutter with noise from every single row scan -- just the scans\n                        // that start on the center line.\n                        if (hints && (hints.get(DecodeHintType$1.NEED_RESULT_POINT_CALLBACK) === true)) {\n                            const newHints = new Map();\n                            hints.forEach((hint, key) => newHints.set(key, hint));\n                            newHints.delete(DecodeHintType$1.NEED_RESULT_POINT_CALLBACK);\n                            hints = newHints;\n                        }\n                    }\n                    try {\n                        // Look for a barcode\n                        const result = this.decodeRow(rowNumber, row, hints);\n                        // We found our barcode\n                        if (attempt === 1) {\n                            // But it was upside down, so note that\n                            result.putMetadata(ResultMetadataType$1.ORIENTATION, 180);\n                            // And remember to flip the result points horizontally.\n                            const points = result.getResultPoints();\n                            if (points !== null) {\n                                points[0] = new ResultPoint(width - points[0].getX() - 1, points[0].getY());\n                                points[1] = new ResultPoint(width - points[1].getX() - 1, points[1].getY());\n                            }\n                        }\n                        return result;\n                    }\n                    catch (re) {\n                        // continue -- just couldn't decode this row\n                    }\n                }\n            }\n            throw new NotFoundException();\n        }\n        /**\n         * Records the size of successive runs of white and black pixels in a row, starting at a given point.\n         * The values are recorded in the given array, and the number of runs recorded is equal to the size\n         * of the array. If the row starts on a white pixel at the given start point, then the first count\n         * recorded is the run of white pixels starting from that point; likewise it is the count of a run\n         * of black pixels if the row begin on a black pixels at that point.\n         *\n         * @param row row to count from\n         * @param start offset into row to start at\n         * @param counters array into which to record counts\n         * @throws NotFoundException if counters cannot be filled entirely from row before running out\n         *  of pixels\n         */\n        static recordPattern(row, start, counters) {\n            const numCounters = counters.length;\n            for (let index = 0; index < numCounters; index++)\n                counters[index] = 0;\n            const end = row.getSize();\n            if (start >= end) {\n                throw new NotFoundException();\n            }\n            let isWhite = !row.get(start);\n            let counterPosition = 0;\n            let i = start;\n            while (i < end) {\n                if (row.get(i) !== isWhite) {\n                    counters[counterPosition]++;\n                }\n                else {\n                    if (++counterPosition === numCounters) {\n                        break;\n                    }\n                    else {\n                        counters[counterPosition] = 1;\n                        isWhite = !isWhite;\n                    }\n                }\n                i++;\n            }\n            // If we read fully the last section of pixels and filled up our counters -- or filled\n            // the last counter but ran off the side of the image, OK. Otherwise, a problem.\n            if (!(counterPosition === numCounters || (counterPosition === numCounters - 1 && i === end))) {\n                throw new NotFoundException();\n            }\n        }\n        static recordPatternInReverse(row, start, counters) {\n            // This could be more efficient I guess\n            let numTransitionsLeft = counters.length;\n            let last = row.get(start);\n            while (start > 0 && numTransitionsLeft >= 0) {\n                if (row.get(--start) !== last) {\n                    numTransitionsLeft--;\n                    last = !last;\n                }\n            }\n            if (numTransitionsLeft >= 0) {\n                throw new NotFoundException();\n            }\n            OneDReader.recordPattern(row, start + 1, counters);\n        }\n        /**\n         * Determines how closely a set of observed counts of runs of black/white values matches a given\n         * target pattern. This is reported as the ratio of the total variance from the expected pattern\n         * proportions across all pattern elements, to the length of the pattern.\n         *\n         * @param counters observed counters\n         * @param pattern expected pattern\n         * @param maxIndividualVariance The most any counter can differ before we give up\n         * @return ratio of total variance between counters and pattern compared to total pattern size\n         */\n        static patternMatchVariance(counters, pattern, maxIndividualVariance) {\n            const numCounters = counters.length;\n            let total = 0;\n            let patternLength = 0;\n            for (let i = 0; i < numCounters; i++) {\n                total += counters[i];\n                patternLength += pattern[i];\n            }\n            if (total < patternLength) {\n                // If we don't even have one pixel per unit of bar width, assume this is too small\n                // to reliably match, so fail:\n                return Number.POSITIVE_INFINITY;\n            }\n            const unitBarWidth = total / patternLength;\n            maxIndividualVariance *= unitBarWidth;\n            let totalVariance = 0.0;\n            for (let x = 0; x < numCounters; x++) {\n                const counter = counters[x];\n                const scaledPattern = pattern[x] * unitBarWidth;\n                const variance = counter > scaledPattern ? counter - scaledPattern : scaledPattern - counter;\n                if (variance > maxIndividualVariance) {\n                    return Number.POSITIVE_INFINITY;\n                }\n                totalVariance += variance;\n            }\n            return totalVariance / total;\n        }\n    }\n\n    /**\n     * <p>Decodes Code 128 barcodes.</p>\n     *\n     * @author Sean Owen\n     */\n    class Code128Reader extends OneDReader {\n        static findStartPattern(row) {\n            const width = row.getSize();\n            const rowOffset = row.getNextSet(0);\n            let counterPosition = 0;\n            let counters = Int32Array.from([0, 0, 0, 0, 0, 0]);\n            let patternStart = rowOffset;\n            let isWhite = false;\n            const patternLength = 6;\n            for (let i = rowOffset; i < width; i++) {\n                if (row.get(i) !== isWhite) {\n                    counters[counterPosition]++;\n                }\n                else {\n                    if (counterPosition === (patternLength - 1)) {\n                        let bestVariance = Code128Reader.MAX_AVG_VARIANCE;\n                        let bestMatch = -1;\n                        for (let startCode = Code128Reader.CODE_START_A; startCode <= Code128Reader.CODE_START_C; startCode++) {\n                            const variance = OneDReader.patternMatchVariance(counters, Code128Reader.CODE_PATTERNS[startCode], Code128Reader.MAX_INDIVIDUAL_VARIANCE);\n                            if (variance < bestVariance) {\n                                bestVariance = variance;\n                                bestMatch = startCode;\n                            }\n                        }\n                        // Look for whitespace before start pattern, >= 50% of width of start pattern\n                        if (bestMatch >= 0 &&\n                            row.isRange(Math.max(0, patternStart - (i - patternStart) / 2), patternStart, false)) {\n                            return Int32Array.from([patternStart, i, bestMatch]);\n                        }\n                        patternStart += counters[0] + counters[1];\n                        counters = counters.slice(2, counters.length - 1);\n                        counters[counterPosition - 1] = 0;\n                        counters[counterPosition] = 0;\n                        counterPosition--;\n                    }\n                    else {\n                        counterPosition++;\n                    }\n                    counters[counterPosition] = 1;\n                    isWhite = !isWhite;\n                }\n            }\n            throw new NotFoundException();\n        }\n        static decodeCode(row, counters, rowOffset) {\n            OneDReader.recordPattern(row, rowOffset, counters);\n            let bestVariance = Code128Reader.MAX_AVG_VARIANCE; // worst variance we'll accept\n            let bestMatch = -1;\n            for (let d = 0; d < Code128Reader.CODE_PATTERNS.length; d++) {\n                const pattern = Code128Reader.CODE_PATTERNS[d];\n                const variance = this.patternMatchVariance(counters, pattern, Code128Reader.MAX_INDIVIDUAL_VARIANCE);\n                if (variance < bestVariance) {\n                    bestVariance = variance;\n                    bestMatch = d;\n                }\n            }\n            // TODO We're overlooking the fact that the STOP pattern has 7 values, not 6.\n            if (bestMatch >= 0) {\n                return bestMatch;\n            }\n            else {\n                throw new NotFoundException();\n            }\n        }\n        decodeRow(rowNumber, row, hints) {\n            const convertFNC1 = hints && (hints.get(DecodeHintType$1.ASSUME_GS1) === true);\n            const startPatternInfo = Code128Reader.findStartPattern(row);\n            const startCode = startPatternInfo[2];\n            let currentRawCodesIndex = 0;\n            const rawCodes = new Uint8Array(20);\n            rawCodes[currentRawCodesIndex++] = startCode;\n            let codeSet;\n            switch (startCode) {\n                case Code128Reader.CODE_START_A:\n                    codeSet = Code128Reader.CODE_CODE_A;\n                    break;\n                case Code128Reader.CODE_START_B:\n                    codeSet = Code128Reader.CODE_CODE_B;\n                    break;\n                case Code128Reader.CODE_START_C:\n                    codeSet = Code128Reader.CODE_CODE_C;\n                    break;\n                default:\n                    throw new FormatException();\n            }\n            let done = false;\n            let isNextShifted = false;\n            let result = '';\n            let lastStart = startPatternInfo[0];\n            let nextStart = startPatternInfo[1];\n            const counters = Int32Array.from([0, 0, 0, 0, 0, 0]);\n            let lastCode = 0;\n            let code = 0;\n            let checksumTotal = startCode;\n            let multiplier = 0;\n            let lastCharacterWasPrintable = true;\n            let upperMode = false;\n            let shiftUpperMode = false;\n            while (!done) {\n                const unshift = isNextShifted;\n                isNextShifted = false;\n                // Save off last code\n                lastCode = code;\n                // Decode another code from image\n                code = Code128Reader.decodeCode(row, counters, nextStart);\n                rawCodes[currentRawCodesIndex++] = code;\n                // Remember whether the last code was printable or not (excluding CODE_STOP)\n                if (code !== Code128Reader.CODE_STOP) {\n                    lastCharacterWasPrintable = true;\n                }\n                // Add to checksum computation (if not CODE_STOP of course)\n                if (code !== Code128Reader.CODE_STOP) {\n                    multiplier++;\n                    checksumTotal += multiplier * code;\n                }\n                // Advance to where the next code will to start\n                lastStart = nextStart;\n                nextStart += counters.reduce((previous, current) => previous + current, 0);\n                // Take care of illegal start codes\n                switch (code) {\n                    case Code128Reader.CODE_START_A:\n                    case Code128Reader.CODE_START_B:\n                    case Code128Reader.CODE_START_C:\n                        throw new FormatException();\n                }\n                switch (codeSet) {\n                    case Code128Reader.CODE_CODE_A:\n                        if (code < 64) {\n                            if (shiftUpperMode === upperMode) {\n                                result += String.fromCharCode((' '.charCodeAt(0) + code));\n                            }\n                            else {\n                                result += String.fromCharCode((' '.charCodeAt(0) + code + 128));\n                            }\n                            shiftUpperMode = false;\n                        }\n                        else if (code < 96) {\n                            if (shiftUpperMode === upperMode) {\n                                result += String.fromCharCode((code - 64));\n                            }\n                            else {\n                                result += String.fromCharCode((code + 64));\n                            }\n                            shiftUpperMode = false;\n                        }\n                        else {\n                            // Don't let CODE_STOP, which always appears, affect whether whether we think the last\n                            // code was printable or not.\n                            if (code !== Code128Reader.CODE_STOP) {\n                                lastCharacterWasPrintable = false;\n                            }\n                            switch (code) {\n                                case Code128Reader.CODE_FNC_1:\n                                    if (convertFNC1) {\n                                        if (result.length === 0) {\n                                            // GS1 specification 5.4.3.7. and 5.4.6.4. If the first char after the start code\n                                            // is FNC1 then this is GS1-128. We add the symbology identifier.\n                                            result += ']C1';\n                                        }\n                                        else {\n                                            // GS1 specification 5.4.7.5. Every subsequent FNC1 is returned as ASCII 29 (GS)\n                                            result += String.fromCharCode(29);\n                                        }\n                                    }\n                                    break;\n                                case Code128Reader.CODE_FNC_2:\n                                case Code128Reader.CODE_FNC_3:\n                                    // do nothing?\n                                    break;\n                                case Code128Reader.CODE_FNC_4_A:\n                                    if (!upperMode && shiftUpperMode) {\n                                        upperMode = true;\n                                        shiftUpperMode = false;\n                                    }\n                                    else if (upperMode && shiftUpperMode) {\n                                        upperMode = false;\n                                        shiftUpperMode = false;\n                                    }\n                                    else {\n                                        shiftUpperMode = true;\n                                    }\n                                    break;\n                                case Code128Reader.CODE_SHIFT:\n                                    isNextShifted = true;\n                                    codeSet = Code128Reader.CODE_CODE_B;\n                                    break;\n                                case Code128Reader.CODE_CODE_B:\n                                    codeSet = Code128Reader.CODE_CODE_B;\n                                    break;\n                                case Code128Reader.CODE_CODE_C:\n                                    codeSet = Code128Reader.CODE_CODE_C;\n                                    break;\n                                case Code128Reader.CODE_STOP:\n                                    done = true;\n                                    break;\n                            }\n                        }\n                        break;\n                    case Code128Reader.CODE_CODE_B:\n                        if (code < 96) {\n                            if (shiftUpperMode === upperMode) {\n                                result += String.fromCharCode((' '.charCodeAt(0) + code));\n                            }\n                            else {\n                                result += String.fromCharCode((' '.charCodeAt(0) + code + 128));\n                            }\n                            shiftUpperMode = false;\n                        }\n                        else {\n                            if (code !== Code128Reader.CODE_STOP) {\n                                lastCharacterWasPrintable = false;\n                            }\n                            switch (code) {\n                                case Code128Reader.CODE_FNC_1:\n                                    if (convertFNC1) {\n                                        if (result.length === 0) {\n                                            // GS1 specification 5.4.3.7. and 5.4.6.4. If the first char after the start code\n                                            // is FNC1 then this is GS1-128. We add the symbology identifier.\n                                            result += ']C1';\n                                        }\n                                        else {\n                                            // GS1 specification 5.4.7.5. Every subsequent FNC1 is returned as ASCII 29 (GS)\n                                            result += String.fromCharCode(29);\n                                        }\n                                    }\n                                    break;\n                                case Code128Reader.CODE_FNC_2:\n                                case Code128Reader.CODE_FNC_3:\n                                    // do nothing?\n                                    break;\n                                case Code128Reader.CODE_FNC_4_B:\n                                    if (!upperMode && shiftUpperMode) {\n                                        upperMode = true;\n                                        shiftUpperMode = false;\n                                    }\n                                    else if (upperMode && shiftUpperMode) {\n                                        upperMode = false;\n                                        shiftUpperMode = false;\n                                    }\n                                    else {\n                                        shiftUpperMode = true;\n                                    }\n                                    break;\n                                case Code128Reader.CODE_SHIFT:\n                                    isNextShifted = true;\n                                    codeSet = Code128Reader.CODE_CODE_A;\n                                    break;\n                                case Code128Reader.CODE_CODE_A:\n                                    codeSet = Code128Reader.CODE_CODE_A;\n                                    break;\n                                case Code128Reader.CODE_CODE_C:\n                                    codeSet = Code128Reader.CODE_CODE_C;\n                                    break;\n                                case Code128Reader.CODE_STOP:\n                                    done = true;\n                                    break;\n                            }\n                        }\n                        break;\n                    case Code128Reader.CODE_CODE_C:\n                        if (code < 100) {\n                            if (code < 10) {\n                                result += '0';\n                            }\n                            result += code;\n                        }\n                        else {\n                            if (code !== Code128Reader.CODE_STOP) {\n                                lastCharacterWasPrintable = false;\n                            }\n                            switch (code) {\n                                case Code128Reader.CODE_FNC_1:\n                                    if (convertFNC1) {\n                                        if (result.length === 0) {\n                                            // GS1 specification 5.4.3.7. and 5.4.6.4. If the first char after the start code\n                                            // is FNC1 then this is GS1-128. We add the symbology identifier.\n                                            result += ']C1';\n                                        }\n                                        else {\n                                            // GS1 specification 5.4.7.5. Every subsequent FNC1 is returned as ASCII 29 (GS)\n                                            result += String.fromCharCode(29);\n                                        }\n                                    }\n                                    break;\n                                case Code128Reader.CODE_CODE_A:\n                                    codeSet = Code128Reader.CODE_CODE_A;\n                                    break;\n                                case Code128Reader.CODE_CODE_B:\n                                    codeSet = Code128Reader.CODE_CODE_B;\n                                    break;\n                                case Code128Reader.CODE_STOP:\n                                    done = true;\n                                    break;\n                            }\n                        }\n                        break;\n                }\n                // Unshift back to another code set if we were shifted\n                if (unshift) {\n                    codeSet = codeSet === Code128Reader.CODE_CODE_A ? Code128Reader.CODE_CODE_B : Code128Reader.CODE_CODE_A;\n                }\n            }\n            const lastPatternSize = nextStart - lastStart;\n            // Check for ample whitespace following pattern, but, to do this we first need to remember that\n            // we fudged decoding CODE_STOP since it actually has 7 bars, not 6. There is a black bar left\n            // to read off. Would be slightly better to properly read. Here we just skip it:\n            nextStart = row.getNextUnset(nextStart);\n            if (!row.isRange(nextStart, Math.min(row.getSize(), nextStart + (nextStart - lastStart) / 2), false)) {\n                throw new NotFoundException();\n            }\n            // Pull out from sum the value of the penultimate check code\n            checksumTotal -= multiplier * lastCode;\n            // lastCode is the checksum then:\n            if (checksumTotal % 103 !== lastCode) {\n                throw new ChecksumException();\n            }\n            // Need to pull out the check digits from string\n            const resultLength = result.length;\n            if (resultLength === 0) {\n                // false positive\n                throw new NotFoundException();\n            }\n            // Only bother if the result had at least one character, and if the checksum digit happened to\n            // be a printable character. If it was just interpreted as a control code, nothing to remove.\n            if (resultLength > 0 && lastCharacterWasPrintable) {\n                if (codeSet === Code128Reader.CODE_CODE_C) {\n                    result = result.substring(0, resultLength - 2);\n                }\n                else {\n                    result = result.substring(0, resultLength - 1);\n                }\n            }\n            const left = (startPatternInfo[1] + startPatternInfo[0]) / 2.0;\n            const right = lastStart + lastPatternSize / 2.0;\n            const rawCodesSize = rawCodes.length;\n            const rawBytes = new Uint8Array(rawCodesSize);\n            for (let i = 0; i < rawCodesSize; i++) {\n                rawBytes[i] = rawCodes[i];\n            }\n            const points = [new ResultPoint(left, rowNumber), new ResultPoint(right, rowNumber)];\n            return new Result(result, rawBytes, 0, points, BarcodeFormat$1.CODE_128, new Date().getTime());\n        }\n    }\n    Code128Reader.CODE_PATTERNS = [\n        Int32Array.from([2, 1, 2, 2, 2, 2]),\n        Int32Array.from([2, 2, 2, 1, 2, 2]),\n        Int32Array.from([2, 2, 2, 2, 2, 1]),\n        Int32Array.from([1, 2, 1, 2, 2, 3]),\n        Int32Array.from([1, 2, 1, 3, 2, 2]),\n        Int32Array.from([1, 3, 1, 2, 2, 2]),\n        Int32Array.from([1, 2, 2, 2, 1, 3]),\n        Int32Array.from([1, 2, 2, 3, 1, 2]),\n        Int32Array.from([1, 3, 2, 2, 1, 2]),\n        Int32Array.from([2, 2, 1, 2, 1, 3]),\n        Int32Array.from([2, 2, 1, 3, 1, 2]),\n        Int32Array.from([2, 3, 1, 2, 1, 2]),\n        Int32Array.from([1, 1, 2, 2, 3, 2]),\n        Int32Array.from([1, 2, 2, 1, 3, 2]),\n        Int32Array.from([1, 2, 2, 2, 3, 1]),\n        Int32Array.from([1, 1, 3, 2, 2, 2]),\n        Int32Array.from([1, 2, 3, 1, 2, 2]),\n        Int32Array.from([1, 2, 3, 2, 2, 1]),\n        Int32Array.from([2, 2, 3, 2, 1, 1]),\n        Int32Array.from([2, 2, 1, 1, 3, 2]),\n        Int32Array.from([2, 2, 1, 2, 3, 1]),\n        Int32Array.from([2, 1, 3, 2, 1, 2]),\n        Int32Array.from([2, 2, 3, 1, 1, 2]),\n        Int32Array.from([3, 1, 2, 1, 3, 1]),\n        Int32Array.from([3, 1, 1, 2, 2, 2]),\n        Int32Array.from([3, 2, 1, 1, 2, 2]),\n        Int32Array.from([3, 2, 1, 2, 2, 1]),\n        Int32Array.from([3, 1, 2, 2, 1, 2]),\n        Int32Array.from([3, 2, 2, 1, 1, 2]),\n        Int32Array.from([3, 2, 2, 2, 1, 1]),\n        Int32Array.from([2, 1, 2, 1, 2, 3]),\n        Int32Array.from([2, 1, 2, 3, 2, 1]),\n        Int32Array.from([2, 3, 2, 1, 2, 1]),\n        Int32Array.from([1, 1, 1, 3, 2, 3]),\n        Int32Array.from([1, 3, 1, 1, 2, 3]),\n        Int32Array.from([1, 3, 1, 3, 2, 1]),\n        Int32Array.from([1, 1, 2, 3, 1, 3]),\n        Int32Array.from([1, 3, 2, 1, 1, 3]),\n        Int32Array.from([1, 3, 2, 3, 1, 1]),\n        Int32Array.from([2, 1, 1, 3, 1, 3]),\n        Int32Array.from([2, 3, 1, 1, 1, 3]),\n        Int32Array.from([2, 3, 1, 3, 1, 1]),\n        Int32Array.from([1, 1, 2, 1, 3, 3]),\n        Int32Array.from([1, 1, 2, 3, 3, 1]),\n        Int32Array.from([1, 3, 2, 1, 3, 1]),\n        Int32Array.from([1, 1, 3, 1, 2, 3]),\n        Int32Array.from([1, 1, 3, 3, 2, 1]),\n        Int32Array.from([1, 3, 3, 1, 2, 1]),\n        Int32Array.from([3, 1, 3, 1, 2, 1]),\n        Int32Array.from([2, 1, 1, 3, 3, 1]),\n        Int32Array.from([2, 3, 1, 1, 3, 1]),\n        Int32Array.from([2, 1, 3, 1, 1, 3]),\n        Int32Array.from([2, 1, 3, 3, 1, 1]),\n        Int32Array.from([2, 1, 3, 1, 3, 1]),\n        Int32Array.from([3, 1, 1, 1, 2, 3]),\n        Int32Array.from([3, 1, 1, 3, 2, 1]),\n        Int32Array.from([3, 3, 1, 1, 2, 1]),\n        Int32Array.from([3, 1, 2, 1, 1, 3]),\n        Int32Array.from([3, 1, 2, 3, 1, 1]),\n        Int32Array.from([3, 3, 2, 1, 1, 1]),\n        Int32Array.from([3, 1, 4, 1, 1, 1]),\n        Int32Array.from([2, 2, 1, 4, 1, 1]),\n        Int32Array.from([4, 3, 1, 1, 1, 1]),\n        Int32Array.from([1, 1, 1, 2, 2, 4]),\n        Int32Array.from([1, 1, 1, 4, 2, 2]),\n        Int32Array.from([1, 2, 1, 1, 2, 4]),\n        Int32Array.from([1, 2, 1, 4, 2, 1]),\n        Int32Array.from([1, 4, 1, 1, 2, 2]),\n        Int32Array.from([1, 4, 1, 2, 2, 1]),\n        Int32Array.from([1, 1, 2, 2, 1, 4]),\n        Int32Array.from([1, 1, 2, 4, 1, 2]),\n        Int32Array.from([1, 2, 2, 1, 1, 4]),\n        Int32Array.from([1, 2, 2, 4, 1, 1]),\n        Int32Array.from([1, 4, 2, 1, 1, 2]),\n        Int32Array.from([1, 4, 2, 2, 1, 1]),\n        Int32Array.from([2, 4, 1, 2, 1, 1]),\n        Int32Array.from([2, 2, 1, 1, 1, 4]),\n        Int32Array.from([4, 1, 3, 1, 1, 1]),\n        Int32Array.from([2, 4, 1, 1, 1, 2]),\n        Int32Array.from([1, 3, 4, 1, 1, 1]),\n        Int32Array.from([1, 1, 1, 2, 4, 2]),\n        Int32Array.from([1, 2, 1, 1, 4, 2]),\n        Int32Array.from([1, 2, 1, 2, 4, 1]),\n        Int32Array.from([1, 1, 4, 2, 1, 2]),\n        Int32Array.from([1, 2, 4, 1, 1, 2]),\n        Int32Array.from([1, 2, 4, 2, 1, 1]),\n        Int32Array.from([4, 1, 1, 2, 1, 2]),\n        Int32Array.from([4, 2, 1, 1, 1, 2]),\n        Int32Array.from([4, 2, 1, 2, 1, 1]),\n        Int32Array.from([2, 1, 2, 1, 4, 1]),\n        Int32Array.from([2, 1, 4, 1, 2, 1]),\n        Int32Array.from([4, 1, 2, 1, 2, 1]),\n        Int32Array.from([1, 1, 1, 1, 4, 3]),\n        Int32Array.from([1, 1, 1, 3, 4, 1]),\n        Int32Array.from([1, 3, 1, 1, 4, 1]),\n        Int32Array.from([1, 1, 4, 1, 1, 3]),\n        Int32Array.from([1, 1, 4, 3, 1, 1]),\n        Int32Array.from([4, 1, 1, 1, 1, 3]),\n        Int32Array.from([4, 1, 1, 3, 1, 1]),\n        Int32Array.from([1, 1, 3, 1, 4, 1]),\n        Int32Array.from([1, 1, 4, 1, 3, 1]),\n        Int32Array.from([3, 1, 1, 1, 4, 1]),\n        Int32Array.from([4, 1, 1, 1, 3, 1]),\n        Int32Array.from([2, 1, 1, 4, 1, 2]),\n        Int32Array.from([2, 1, 1, 2, 1, 4]),\n        Int32Array.from([2, 1, 1, 2, 3, 2]),\n        Int32Array.from([2, 3, 3, 1, 1, 1, 2]),\n    ];\n    Code128Reader.MAX_AVG_VARIANCE = 0.25;\n    Code128Reader.MAX_INDIVIDUAL_VARIANCE = 0.7;\n    Code128Reader.CODE_SHIFT = 98;\n    Code128Reader.CODE_CODE_C = 99;\n    Code128Reader.CODE_CODE_B = 100;\n    Code128Reader.CODE_CODE_A = 101;\n    Code128Reader.CODE_FNC_1 = 102;\n    Code128Reader.CODE_FNC_2 = 97;\n    Code128Reader.CODE_FNC_3 = 96;\n    Code128Reader.CODE_FNC_4_A = 101;\n    Code128Reader.CODE_FNC_4_B = 100;\n    Code128Reader.CODE_START_A = 103;\n    Code128Reader.CODE_START_B = 104;\n    Code128Reader.CODE_START_C = 105;\n    Code128Reader.CODE_STOP = 106;\n\n    /**\n     * <p>Decodes Code 39 barcodes. Supports \"Full ASCII Code 39\" if USE_CODE_39_EXTENDED_MODE is set.</p>\n     *\n     * @author Sean Owen\n     * @see Code93Reader\n     */\n    class Code39Reader extends OneDReader {\n        /**\n         * Creates a reader that assumes all encoded data is data, and does not treat the final\n         * character as a check digit. It will not decoded \"extended Code 39\" sequences.\n         */\n        // public Code39Reader() {\n        //   this(false);\n        // }\n        /**\n         * Creates a reader that can be configured to check the last character as a check digit.\n         * It will not decoded \"extended Code 39\" sequences.\n         *\n         * @param usingCheckDigit if true, treat the last data character as a check digit, not\n         * data, and verify that the checksum passes.\n         */\n        // public Code39Reader(boolean usingCheckDigit) {\n        //   this(usingCheckDigit, false);\n        // }\n        /**\n         * Creates a reader that can be configured to check the last character as a check digit,\n         * or optionally attempt to decode \"extended Code 39\" sequences that are used to encode\n         * the full ASCII character set.\n         *\n         * @param usingCheckDigit if true, treat the last data character as a check digit, not\n         * data, and verify that the checksum passes.\n         * @param extendedMode if true, will attempt to decode extended Code 39 sequences in the\n         * text.\n         */\n        constructor(usingCheckDigit = false, extendedMode = false) {\n            super();\n            this.usingCheckDigit = usingCheckDigit;\n            this.extendedMode = extendedMode;\n            this.decodeRowResult = '';\n            this.counters = new Int32Array(9);\n        }\n        decodeRow(rowNumber, row, hints) {\n            let theCounters = this.counters;\n            theCounters.fill(0);\n            this.decodeRowResult = '';\n            let start = Code39Reader.findAsteriskPattern(row, theCounters);\n            // Read off white space\n            let nextStart = row.getNextSet(start[1]);\n            let end = row.getSize();\n            let decodedChar;\n            let lastStart;\n            do {\n                Code39Reader.recordPattern(row, nextStart, theCounters);\n                let pattern = Code39Reader.toNarrowWidePattern(theCounters);\n                if (pattern < 0) {\n                    throw new NotFoundException();\n                }\n                decodedChar = Code39Reader.patternToChar(pattern);\n                this.decodeRowResult += decodedChar;\n                lastStart = nextStart;\n                for (let counter of theCounters) {\n                    nextStart += counter;\n                }\n                // Read off white space\n                nextStart = row.getNextSet(nextStart);\n            } while (decodedChar !== '*');\n            this.decodeRowResult = this.decodeRowResult.substring(0, this.decodeRowResult.length - 1); // remove asterisk\n            // Look for whitespace after pattern:\n            let lastPatternSize = 0;\n            for (let counter of theCounters) {\n                lastPatternSize += counter;\n            }\n            let whiteSpaceAfterEnd = nextStart - lastStart - lastPatternSize;\n            // If 50% of last pattern size, following last pattern, is not whitespace, fail\n            // (but if it's whitespace to the very end of the image, that's OK)\n            if (nextStart !== end && (whiteSpaceAfterEnd * 2) < lastPatternSize) {\n                throw new NotFoundException();\n            }\n            if (this.usingCheckDigit) {\n                let max = this.decodeRowResult.length - 1;\n                let total = 0;\n                for (let i = 0; i < max; i++) {\n                    total += Code39Reader.ALPHABET_STRING.indexOf(this.decodeRowResult.charAt(i));\n                }\n                if (this.decodeRowResult.charAt(max) !== Code39Reader.ALPHABET_STRING.charAt(total % 43)) {\n                    throw new ChecksumException();\n                }\n                this.decodeRowResult = this.decodeRowResult.substring(0, max);\n            }\n            if (this.decodeRowResult.length === 0) {\n                // false positive\n                throw new NotFoundException();\n            }\n            let resultString;\n            if (this.extendedMode) {\n                resultString = Code39Reader.decodeExtended(this.decodeRowResult);\n            }\n            else {\n                resultString = this.decodeRowResult;\n            }\n            let left = (start[1] + start[0]) / 2.0;\n            let right = lastStart + lastPatternSize / 2.0;\n            return new Result(resultString, null, 0, [new ResultPoint(left, rowNumber), new ResultPoint(right, rowNumber)], BarcodeFormat$1.CODE_39, new Date().getTime());\n        }\n        static findAsteriskPattern(row, counters) {\n            let width = row.getSize();\n            let rowOffset = row.getNextSet(0);\n            let counterPosition = 0;\n            let patternStart = rowOffset;\n            let isWhite = false;\n            let patternLength = counters.length;\n            for (let i = rowOffset; i < width; i++) {\n                if (row.get(i) !== isWhite) {\n                    counters[counterPosition]++;\n                }\n                else {\n                    if (counterPosition === patternLength - 1) {\n                        // Look for whitespace before start pattern, >= 50% of width of start pattern\n                        if (this.toNarrowWidePattern(counters) === Code39Reader.ASTERISK_ENCODING &&\n                            row.isRange(Math.max(0, patternStart - Math.floor((i - patternStart) / 2)), patternStart, false)) {\n                            return [patternStart, i];\n                        }\n                        patternStart += counters[0] + counters[1];\n                        counters.copyWithin(0, 2, 2 + counterPosition - 1);\n                        counters[counterPosition - 1] = 0;\n                        counters[counterPosition] = 0;\n                        counterPosition--;\n                    }\n                    else {\n                        counterPosition++;\n                    }\n                    counters[counterPosition] = 1;\n                    isWhite = !isWhite;\n                }\n            }\n            throw new NotFoundException();\n        }\n        // For efficiency, returns -1 on failure. Not throwing here saved as many as 700 exceptions\n        // per image when using some of our blackbox images.\n        static toNarrowWidePattern(counters) {\n            let numCounters = counters.length;\n            let maxNarrowCounter = 0;\n            let wideCounters;\n            do {\n                let minCounter = 0x7fffffff;\n                for (let counter of counters) {\n                    if (counter < minCounter && counter > maxNarrowCounter) {\n                        minCounter = counter;\n                    }\n                }\n                maxNarrowCounter = minCounter;\n                wideCounters = 0;\n                let totalWideCountersWidth = 0;\n                let pattern = 0;\n                for (let i = 0; i < numCounters; i++) {\n                    let counter = counters[i];\n                    if (counter > maxNarrowCounter) {\n                        pattern |= 1 << (numCounters - 1 - i);\n                        wideCounters++;\n                        totalWideCountersWidth += counter;\n                    }\n                }\n                if (wideCounters === 3) {\n                    // Found 3 wide counters, but are they close enough in width?\n                    // We can perform a cheap, conservative check to see if any individual\n                    // counter is more than 1.5 times the average:\n                    for (let i = 0; i < numCounters && wideCounters > 0; i++) {\n                        let counter = counters[i];\n                        if (counter > maxNarrowCounter) {\n                            wideCounters--;\n                            // totalWideCountersWidth = 3 * average, so this checks if counter >= 3/2 * average\n                            if ((counter * 2) >= totalWideCountersWidth) {\n                                return -1;\n                            }\n                        }\n                    }\n                    return pattern;\n                }\n            } while (wideCounters > 3);\n            return -1;\n        }\n        static patternToChar(pattern) {\n            for (let i = 0; i < Code39Reader.CHARACTER_ENCODINGS.length; i++) {\n                if (Code39Reader.CHARACTER_ENCODINGS[i] === pattern) {\n                    return Code39Reader.ALPHABET_STRING.charAt(i);\n                }\n            }\n            if (pattern === Code39Reader.ASTERISK_ENCODING) {\n                return '*';\n            }\n            throw new NotFoundException();\n        }\n        static decodeExtended(encoded) {\n            let length = encoded.length;\n            let decoded = '';\n            for (let i = 0; i < length; i++) {\n                let c = encoded.charAt(i);\n                if (c === '+' || c === '$' || c === '%' || c === '/') {\n                    let next = encoded.charAt(i + 1);\n                    let decodedChar = '\\0';\n                    switch (c) {\n                        case '+':\n                            // +A to +Z map to a to z\n                            if (next >= 'A' && next <= 'Z') {\n                                decodedChar = String.fromCharCode(next.charCodeAt(0) + 32);\n                            }\n                            else {\n                                throw new FormatException();\n                            }\n                            break;\n                        case '$':\n                            // $A to $Z map to control codes SH to SB\n                            if (next >= 'A' && next <= 'Z') {\n                                decodedChar = String.fromCharCode(next.charCodeAt(0) - 64);\n                            }\n                            else {\n                                throw new FormatException();\n                            }\n                            break;\n                        case '%':\n                            // %A to %E map to control codes ESC to US\n                            if (next >= 'A' && next <= 'E') {\n                                decodedChar = String.fromCharCode(next.charCodeAt(0) - 38);\n                            }\n                            else if (next >= 'F' && next <= 'J') {\n                                decodedChar = String.fromCharCode(next.charCodeAt(0) - 11);\n                            }\n                            else if (next >= 'K' && next <= 'O') {\n                                decodedChar = String.fromCharCode(next.charCodeAt(0) + 16);\n                            }\n                            else if (next >= 'P' && next <= 'T') {\n                                decodedChar = String.fromCharCode(next.charCodeAt(0) + 43);\n                            }\n                            else if (next === 'U') {\n                                decodedChar = '\\0';\n                            }\n                            else if (next === 'V') {\n                                decodedChar = '@';\n                            }\n                            else if (next === 'W') {\n                                decodedChar = '`';\n                            }\n                            else if (next === 'X' || next === 'Y' || next === 'Z') {\n                                decodedChar = '\\x7f';\n                            }\n                            else {\n                                throw new FormatException();\n                            }\n                            break;\n                        case '/':\n                            // /A to /O map to ! to , and /Z maps to :\n                            if (next >= 'A' && next <= 'O') {\n                                decodedChar = String.fromCharCode(next.charCodeAt(0) - 32);\n                            }\n                            else if (next === 'Z') {\n                                decodedChar = ':';\n                            }\n                            else {\n                                throw new FormatException();\n                            }\n                            break;\n                    }\n                    decoded += decodedChar;\n                    // bump up i again since we read two characters\n                    i++;\n                }\n                else {\n                    decoded += c;\n                }\n            }\n            return decoded;\n        }\n    }\n    Code39Reader.ALPHABET_STRING = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-. $/+%';\n    /**\n     * These represent the encodings of characters, as patterns of wide and narrow bars.\n     * The 9 least-significant bits of each int correspond to the pattern of wide and narrow,\n     * with 1s representing \"wide\" and 0s representing narrow.\n     */\n    Code39Reader.CHARACTER_ENCODINGS = [\n        0x034, 0x121, 0x061, 0x160, 0x031, 0x130, 0x070, 0x025, 0x124, 0x064,\n        0x109, 0x049, 0x148, 0x019, 0x118, 0x058, 0x00D, 0x10C, 0x04C, 0x01C,\n        0x103, 0x043, 0x142, 0x013, 0x112, 0x052, 0x007, 0x106, 0x046, 0x016,\n        0x181, 0x0C1, 0x1C0, 0x091, 0x190, 0x0D0, 0x085, 0x184, 0x0C4, 0x0A8,\n        0x0A2, 0x08A, 0x02A // /-%\n    ];\n    Code39Reader.ASTERISK_ENCODING = 0x094;\n\n    /**\n     * <p>Decodes ITF barcodes.</p>\n     *\n     * @author Tjieco\n     */\n    class ITFReader extends OneDReader {\n        constructor() {\n            // private static W = 3; // Pixel width of a 3x wide line\n            // private static w = 2; // Pixel width of a 2x wide line\n            // private static N = 1; // Pixed width of a narrow line\n            super(...arguments);\n            // Stores the actual narrow line width of the image being decoded.\n            this.narrowLineWidth = -1;\n        }\n        // See ITFWriter.PATTERNS\n        /*\n      \n        /!**\n         * Patterns of Wide / Narrow lines to indicate each digit\n         *!/\n        */\n        decodeRow(rowNumber, row, hints) {\n            // Find out where the Middle section (payload) starts & ends\n            let startRange = this.decodeStart(row);\n            let endRange = this.decodeEnd(row);\n            let result = new StringBuilder();\n            ITFReader.decodeMiddle(row, startRange[1], endRange[0], result);\n            let resultString = result.toString();\n            let allowedLengths = null;\n            if (hints != null) {\n                allowedLengths = hints.get(DecodeHintType$1.ALLOWED_LENGTHS);\n            }\n            if (allowedLengths == null) {\n                allowedLengths = ITFReader.DEFAULT_ALLOWED_LENGTHS;\n            }\n            // To avoid false positives with 2D barcodes (and other patterns), make\n            // an assumption that the decoded string must be a 'standard' length if it's short\n            let length = resultString.length;\n            let lengthOK = false;\n            let maxAllowedLength = 0;\n            for (let value of allowedLengths) {\n                if (length === value) {\n                    lengthOK = true;\n                    break;\n                }\n                if (value > maxAllowedLength) {\n                    maxAllowedLength = value;\n                }\n            }\n            if (!lengthOK && length > maxAllowedLength) {\n                lengthOK = true;\n            }\n            if (!lengthOK) {\n                throw new FormatException();\n            }\n            const points = [new ResultPoint(startRange[1], rowNumber), new ResultPoint(endRange[0], rowNumber)];\n            let resultReturn = new Result(resultString, null, // no natural byte representation for these barcodes\n            0, points, BarcodeFormat$1.ITF, new Date().getTime());\n            return resultReturn;\n        }\n        /*\n        /!**\n         * @param row          row of black/white values to search\n         * @param payloadStart offset of start pattern\n         * @param resultString {@link StringBuilder} to append decoded chars to\n         * @throws NotFoundException if decoding could not complete successfully\n         *!/*/\n        static decodeMiddle(row, payloadStart, payloadEnd, resultString) {\n            // Digits are interleaved in pairs - 5 black lines for one digit, and the\n            // 5\n            // interleaved white lines for the second digit.\n            // Therefore, need to scan 10 lines and then\n            // split these into two arrays\n            let counterDigitPair = new Int32Array(10); // 10\n            let counterBlack = new Int32Array(5); // 5\n            let counterWhite = new Int32Array(5); // 5\n            counterDigitPair.fill(0);\n            counterBlack.fill(0);\n            counterWhite.fill(0);\n            while (payloadStart < payloadEnd) {\n                // Get 10 runs of black/white.\n                OneDReader.recordPattern(row, payloadStart, counterDigitPair);\n                // Split them into each array\n                for (let k = 0; k < 5; k++) {\n                    let twoK = 2 * k;\n                    counterBlack[k] = counterDigitPair[twoK];\n                    counterWhite[k] = counterDigitPair[twoK + 1];\n                }\n                let bestMatch = ITFReader.decodeDigit(counterBlack);\n                resultString.append(bestMatch.toString());\n                bestMatch = this.decodeDigit(counterWhite);\n                resultString.append(bestMatch.toString());\n                counterDigitPair.forEach(function (counterDigit) {\n                    payloadStart += counterDigit;\n                });\n            }\n        }\n        /*/!**\n         * Identify where the start of the middle / payload section starts.\n         *\n         * @param row row of black/white values to search\n         * @return Array, containing index of start of 'start block' and end of\n         *         'start block'\n         *!/*/\n        decodeStart(row) {\n            let endStart = ITFReader.skipWhiteSpace(row);\n            let startPattern = ITFReader.findGuardPattern(row, endStart, ITFReader.START_PATTERN);\n            // Determine the width of a narrow line in pixels. We can do this by\n            // getting the width of the start pattern and dividing by 4 because its\n            // made up of 4 narrow lines.\n            this.narrowLineWidth = (startPattern[1] - startPattern[0]) / 4;\n            this.validateQuietZone(row, startPattern[0]);\n            return startPattern;\n        }\n        /*/!**\n         * The start & end patterns must be pre/post fixed by a quiet zone. This\n         * zone must be at least 10 times the width of a narrow line.  Scan back until\n         * we either get to the start of the barcode or match the necessary number of\n         * quiet zone pixels.\n         *\n         * Note: Its assumed the row is reversed when using this method to find\n         * quiet zone after the end pattern.\n         *\n         * ref: http://www.barcode-1.net/i25code.html\n         *\n         * @param row bit array representing the scanned barcode.\n         * @param startPattern index into row of the start or end pattern.\n         * @throws NotFoundException if the quiet zone cannot be found\n         *!/*/\n        validateQuietZone(row, startPattern) {\n            let quietCount = this.narrowLineWidth * 10; // expect to find this many pixels of quiet zone\n            // if there are not so many pixel at all let's try as many as possible\n            quietCount = quietCount < startPattern ? quietCount : startPattern;\n            for (let i = startPattern - 1; quietCount > 0 && i >= 0; i--) {\n                if (row.get(i)) {\n                    break;\n                }\n                quietCount--;\n            }\n            if (quietCount !== 0) {\n                // Unable to find the necessary number of quiet zone pixels.\n                throw new NotFoundException();\n            }\n        }\n        /*\n        /!**\n         * Skip all whitespace until we get to the first black line.\n         *\n         * @param row row of black/white values to search\n         * @return index of the first black line.\n         * @throws NotFoundException Throws exception if no black lines are found in the row\n         *!/*/\n        static skipWhiteSpace(row) {\n            const width = row.getSize();\n            const endStart = row.getNextSet(0);\n            if (endStart === width) {\n                throw new NotFoundException();\n            }\n            return endStart;\n        }\n        /*/!**\n         * Identify where the end of the middle / payload section ends.\n         *\n         * @param row row of black/white values to search\n         * @return Array, containing index of start of 'end block' and end of 'end\n         *         block'\n         *!/*/\n        decodeEnd(row) {\n            // For convenience, reverse the row and then\n            // search from 'the start' for the end block\n            row.reverse();\n            try {\n                let endStart = ITFReader.skipWhiteSpace(row);\n                let endPattern;\n                try {\n                    endPattern = ITFReader.findGuardPattern(row, endStart, ITFReader.END_PATTERN_REVERSED[0]);\n                }\n                catch (error) {\n                    if (error instanceof NotFoundException) {\n                        endPattern = ITFReader.findGuardPattern(row, endStart, ITFReader.END_PATTERN_REVERSED[1]);\n                    }\n                }\n                // The start & end patterns must be pre/post fixed by a quiet zone. This\n                // zone must be at least 10 times the width of a narrow line.\n                // ref: http://www.barcode-1.net/i25code.html\n                this.validateQuietZone(row, endPattern[0]);\n                // Now recalculate the indices of where the 'endblock' starts & stops to\n                // accommodate\n                // the reversed nature of the search\n                let temp = endPattern[0];\n                endPattern[0] = row.getSize() - endPattern[1];\n                endPattern[1] = row.getSize() - temp;\n                return endPattern;\n            }\n            finally {\n                // Put the row back the right way.\n                row.reverse();\n            }\n        }\n        /*\n        /!**\n         * @param row       row of black/white values to search\n         * @param rowOffset position to start search\n         * @param pattern   pattern of counts of number of black and white pixels that are\n         *                  being searched for as a pattern\n         * @return start/end horizontal offset of guard pattern, as an array of two\n         *         ints\n         * @throws NotFoundException if pattern is not found\n         *!/*/\n        static findGuardPattern(row, rowOffset, pattern) {\n            let patternLength = pattern.length;\n            let counters = new Int32Array(patternLength);\n            let width = row.getSize();\n            let isWhite = false;\n            let counterPosition = 0;\n            let patternStart = rowOffset;\n            counters.fill(0);\n            for (let x = rowOffset; x < width; x++) {\n                if (row.get(x) !== isWhite) {\n                    counters[counterPosition]++;\n                }\n                else {\n                    if (counterPosition === patternLength - 1) {\n                        if (OneDReader.patternMatchVariance(counters, pattern, ITFReader.MAX_INDIVIDUAL_VARIANCE) < ITFReader.MAX_AVG_VARIANCE) {\n                            return [patternStart, x];\n                        }\n                        patternStart += counters[0] + counters[1];\n                        System.arraycopy(counters, 2, counters, 0, counterPosition - 1);\n                        counters[counterPosition - 1] = 0;\n                        counters[counterPosition] = 0;\n                        counterPosition--;\n                    }\n                    else {\n                        counterPosition++;\n                    }\n                    counters[counterPosition] = 1;\n                    isWhite = !isWhite;\n                }\n            }\n            throw new NotFoundException();\n        }\n        /*/!**\n         * Attempts to decode a sequence of ITF black/white lines into single\n         * digit.\n         *\n         * @param counters the counts of runs of observed black/white/black/... values\n         * @return The decoded digit\n         * @throws NotFoundException if digit cannot be decoded\n         *!/*/\n        static decodeDigit(counters) {\n            let bestVariance = ITFReader.MAX_AVG_VARIANCE; // worst variance we'll accept\n            let bestMatch = -1;\n            let max = ITFReader.PATTERNS.length;\n            for (let i = 0; i < max; i++) {\n                let pattern = ITFReader.PATTERNS[i];\n                let variance = OneDReader.patternMatchVariance(counters, pattern, ITFReader.MAX_INDIVIDUAL_VARIANCE);\n                if (variance < bestVariance) {\n                    bestVariance = variance;\n                    bestMatch = i;\n                }\n                else if (variance === bestVariance) {\n                    // if we find a second 'best match' with the same variance, we can not reliably report to have a suitable match\n                    bestMatch = -1;\n                }\n            }\n            if (bestMatch >= 0) {\n                return bestMatch % 10;\n            }\n            else {\n                throw new NotFoundException();\n            }\n        }\n    }\n    ITFReader.PATTERNS = [\n        Int32Array.from([1, 1, 2, 2, 1]),\n        Int32Array.from([2, 1, 1, 1, 2]),\n        Int32Array.from([1, 2, 1, 1, 2]),\n        Int32Array.from([2, 2, 1, 1, 1]),\n        Int32Array.from([1, 1, 2, 1, 2]),\n        Int32Array.from([2, 1, 2, 1, 1]),\n        Int32Array.from([1, 2, 2, 1, 1]),\n        Int32Array.from([1, 1, 1, 2, 2]),\n        Int32Array.from([2, 1, 1, 2, 1]),\n        Int32Array.from([1, 2, 1, 2, 1]),\n        Int32Array.from([1, 1, 3, 3, 1]),\n        Int32Array.from([3, 1, 1, 1, 3]),\n        Int32Array.from([1, 3, 1, 1, 3]),\n        Int32Array.from([3, 3, 1, 1, 1]),\n        Int32Array.from([1, 1, 3, 1, 3]),\n        Int32Array.from([3, 1, 3, 1, 1]),\n        Int32Array.from([1, 3, 3, 1, 1]),\n        Int32Array.from([1, 1, 1, 3, 3]),\n        Int32Array.from([3, 1, 1, 3, 1]),\n        Int32Array.from([1, 3, 1, 3, 1]) // 9\n    ];\n    ITFReader.MAX_AVG_VARIANCE = 0.38;\n    ITFReader.MAX_INDIVIDUAL_VARIANCE = 0.5;\n    /* /!** Valid ITF lengths. Anything longer than the largest value is also allowed. *!/*/\n    ITFReader.DEFAULT_ALLOWED_LENGTHS = [6, 8, 10, 12, 14];\n    /*/!**\n     * Start/end guard pattern.\n     *\n     * Note: The end pattern is reversed because the row is reversed before\n     * searching for the END_PATTERN\n     *!/*/\n    ITFReader.START_PATTERN = Int32Array.from([1, 1, 1, 1]);\n    ITFReader.END_PATTERN_REVERSED = [\n        Int32Array.from([1, 1, 2]),\n        Int32Array.from([1, 1, 3]) // 3x\n    ];\n\n    /**\n     * <p>Encapsulates functionality and implementation that is common to UPC and EAN families\n     * of one-dimensional barcodes.</p>\n     *\n     * @author dswitkin@google.com (Daniel Switkin)\n     * @author Sean Owen\n     * @author alasdair@google.com (Alasdair Mackintosh)\n     */\n    class AbstractUPCEANReader extends OneDReader {\n        constructor() {\n            super(...arguments);\n            this.decodeRowStringBuffer = '';\n        }\n\n        static findStartGuardPattern(row) {\n            let foundStart = false;\n            let startRange;\n            let nextStart = 0;\n            let counters = Int32Array.from([0, 0, 0]);\n            while (!foundStart) {\n                counters = Int32Array.from([0, 0, 0]);\n                startRange = AbstractUPCEANReader.findGuardPattern(row, nextStart, false, this.START_END_PATTERN, counters);\n                let start = startRange[0];\n                nextStart = startRange[1];\n                let quietStart = start - (nextStart - start);\n                if (quietStart >= 0) {\n                    foundStart = row.isRange(quietStart, start, false);\n                }\n            }\n            return startRange;\n        }\n        static checkChecksum(s) {\n            return AbstractUPCEANReader.checkStandardUPCEANChecksum(s);\n        }\n        static checkStandardUPCEANChecksum(s) {\n            let length = s.length;\n            if (length === 0)\n                return false;\n            let check = parseInt(s.charAt(length - 1), 10);\n            return AbstractUPCEANReader.getStandardUPCEANChecksum(s.substring(0, length - 1)) === check;\n        }\n        static getStandardUPCEANChecksum(s) {\n            let length = s.length;\n            let sum = 0;\n            for (let i = length - 1; i >= 0; i -= 2) {\n                let digit = s.charAt(i).charCodeAt(0) - '0'.charCodeAt(0);\n                if (digit < 0 || digit > 9) {\n                    throw new FormatException();\n                }\n                sum += digit;\n            }\n            sum *= 3;\n            for (let i = length - 2; i >= 0; i -= 2) {\n                let digit = s.charAt(i).charCodeAt(0) - '0'.charCodeAt(0);\n                if (digit < 0 || digit > 9) {\n                    throw new FormatException();\n                }\n                sum += digit;\n            }\n            return (1000 - sum) % 10;\n        }\n        static decodeEnd(row, endStart) {\n            return AbstractUPCEANReader.findGuardPattern(row, endStart, false, AbstractUPCEANReader.START_END_PATTERN, new Int32Array(AbstractUPCEANReader.START_END_PATTERN.length).fill(0));\n        }\n        /**\n         * @throws NotFoundException\n         */\n        static findGuardPatternWithoutCounters(row, rowOffset, whiteFirst, pattern) {\n            return this.findGuardPattern(row, rowOffset, whiteFirst, pattern, new Int32Array(pattern.length));\n        }\n        /**\n         * @param row row of black/white values to search\n         * @param rowOffset position to start search\n         * @param whiteFirst if true, indicates that the pattern specifies white/black/white/...\n         * pixel counts, otherwise, it is interpreted as black/white/black/...\n         * @param pattern pattern of counts of number of black and white pixels that are being\n         * searched for as a pattern\n         * @param counters array of counters, as long as pattern, to re-use\n         * @return start/end horizontal offset of guard pattern, as an array of two ints\n         * @throws NotFoundException if pattern is not found\n         */\n        static findGuardPattern(row, rowOffset, whiteFirst, pattern, counters) {\n            let width = row.getSize();\n            rowOffset = whiteFirst ? row.getNextUnset(rowOffset) : row.getNextSet(rowOffset);\n            let counterPosition = 0;\n            let patternStart = rowOffset;\n            let patternLength = pattern.length;\n            let isWhite = whiteFirst;\n            for (let x = rowOffset; x < width; x++) {\n                if (row.get(x) !== isWhite) {\n                    counters[counterPosition]++;\n                }\n                else {\n                    if (counterPosition === patternLength - 1) {\n                        if (OneDReader.patternMatchVariance(counters, pattern, AbstractUPCEANReader.MAX_INDIVIDUAL_VARIANCE) < AbstractUPCEANReader.MAX_AVG_VARIANCE) {\n                            return Int32Array.from([patternStart, x]);\n                        }\n                        patternStart += counters[0] + counters[1];\n                        let slice = counters.slice(2, counters.length - 1);\n                        for (let i = 0; i < counterPosition - 1; i++) {\n                            counters[i] = slice[i];\n                        }\n                        counters[counterPosition - 1] = 0;\n                        counters[counterPosition] = 0;\n                        counterPosition--;\n                    }\n                    else {\n                        counterPosition++;\n                    }\n                    counters[counterPosition] = 1;\n                    isWhite = !isWhite;\n                }\n            }\n            throw new NotFoundException();\n        }\n        static decodeDigit(row, counters, rowOffset, patterns) {\n            this.recordPattern(row, rowOffset, counters);\n            let bestVariance = this.MAX_AVG_VARIANCE;\n            let bestMatch = -1;\n            let max = patterns.length;\n            for (let i = 0; i < max; i++) {\n                let pattern = patterns[i];\n                let variance = OneDReader.patternMatchVariance(counters, pattern, AbstractUPCEANReader.MAX_INDIVIDUAL_VARIANCE);\n                if (variance < bestVariance) {\n                    bestVariance = variance;\n                    bestMatch = i;\n                }\n            }\n            if (bestMatch >= 0) {\n                return bestMatch;\n            }\n            else {\n                throw new NotFoundException();\n            }\n        }\n    }\n    // These two values are critical for determining how permissive the decoding will be.\n    // We've arrived at these values through a lot of trial and error. Setting them any higher\n    // lets false positives creep in quickly.\n    AbstractUPCEANReader.MAX_AVG_VARIANCE = 0.48;\n    AbstractUPCEANReader.MAX_INDIVIDUAL_VARIANCE = 0.7;\n    /**\n     * Start/end guard pattern.\n     */\n    AbstractUPCEANReader.START_END_PATTERN = Int32Array.from([1, 1, 1]);\n    /**\n     * Pattern marking the middle of a UPC/EAN pattern, separating the two halves.\n     */\n    AbstractUPCEANReader.MIDDLE_PATTERN = Int32Array.from([1, 1, 1, 1, 1]);\n    /**\n     * end guard pattern.\n     */\n    AbstractUPCEANReader.END_PATTERN = Int32Array.from([1, 1, 1, 1, 1, 1]);\n    /**\n     * \"Odd\", or \"L\" patterns used to encode UPC/EAN digits.\n     */\n    AbstractUPCEANReader.L_PATTERNS = [\n        Int32Array.from([3, 2, 1, 1]),\n        Int32Array.from([2, 2, 2, 1]),\n        Int32Array.from([2, 1, 2, 2]),\n        Int32Array.from([1, 4, 1, 1]),\n        Int32Array.from([1, 1, 3, 2]),\n        Int32Array.from([1, 2, 3, 1]),\n        Int32Array.from([1, 1, 1, 4]),\n        Int32Array.from([1, 3, 1, 2]),\n        Int32Array.from([1, 2, 1, 3]),\n        Int32Array.from([3, 1, 1, 2]),\n    ];\n\n    /**\n     * @see UPCEANExtension2Support\n     */\n    class UPCEANExtension5Support {\n        constructor() {\n            this.CHECK_DIGIT_ENCODINGS = [0x18, 0x14, 0x12, 0x11, 0x0C, 0x06, 0x03, 0x0A, 0x09, 0x05];\n            this.decodeMiddleCounters = Int32Array.from([0, 0, 0, 0]);\n            this.decodeRowStringBuffer = '';\n        }\n        decodeRow(rowNumber, row, extensionStartRange) {\n            let result = this.decodeRowStringBuffer;\n            let end = this.decodeMiddle(row, extensionStartRange, result);\n            let resultString = result.toString();\n            let extensionData = UPCEANExtension5Support.parseExtensionString(resultString);\n            let resultPoints = [\n                new ResultPoint((extensionStartRange[0] + extensionStartRange[1]) / 2.0, rowNumber),\n                new ResultPoint(end, rowNumber)\n            ];\n            let extensionResult = new Result(resultString, null, 0, resultPoints, BarcodeFormat$1.UPC_EAN_EXTENSION, new Date().getTime());\n            if (extensionData != null) {\n                extensionResult.putAllMetadata(extensionData);\n            }\n            return extensionResult;\n        }\n        decodeMiddle(row, startRange, resultString) {\n            let counters = this.decodeMiddleCounters;\n            counters[0] = 0;\n            counters[1] = 0;\n            counters[2] = 0;\n            counters[3] = 0;\n            let end = row.getSize();\n            let rowOffset = startRange[1];\n            let lgPatternFound = 0;\n            for (let x = 0; x < 5 && rowOffset < end; x++) {\n                let bestMatch = AbstractUPCEANReader.decodeDigit(\n                    row,\n                    counters,\n                    rowOffset,\n                    AbstractUPCEANReader.L_AND_G_PATTERNS);\n                resultString += String.fromCharCode(('0'.charCodeAt(0) + bestMatch % 10));\n                for (let counter of counters) {\n                    rowOffset += counter;\n                }\n                if (bestMatch >= 10) {\n                    lgPatternFound |= 1 << (4 - x);\n                }\n                if (x !== 4) {\n                    // Read off separator if not last\n                    rowOffset = row.getNextSet(rowOffset);\n                    rowOffset = row.getNextUnset(rowOffset);\n                }\n            }\n            if (resultString.length !== 5) {\n                throw new NotFoundException();\n            }\n            let checkDigit = this.determineCheckDigit(lgPatternFound);\n            if (UPCEANExtension5Support.extensionChecksum(resultString.toString()) !== checkDigit) {\n                throw new NotFoundException();\n            }\n            return rowOffset;\n        }\n        static extensionChecksum(s) {\n            let length = s.length;\n            let sum = 0;\n            for (let i = length - 2; i >= 0; i -= 2) {\n                sum += s.charAt(i).charCodeAt(0) - '0'.charCodeAt(0);\n            }\n            sum *= 3;\n            for (let i = length - 1; i >= 0; i -= 2) {\n                sum += s.charAt(i).charCodeAt(0) - '0'.charCodeAt(0);\n            }\n            sum *= 3;\n            return sum % 10;\n        }\n        determineCheckDigit(lgPatternFound) {\n            for (let d = 0; d < 10; d++) {\n                if (lgPatternFound === this.CHECK_DIGIT_ENCODINGS[d]) {\n                    return d;\n                }\n            }\n            throw new NotFoundException();\n        }\n        static parseExtensionString(raw) {\n            if (raw.length !== 5) {\n                return null;\n            }\n            let value = UPCEANExtension5Support.parseExtension5String(raw);\n            if (value == null) {\n                return null;\n            }\n            return new Map([[ResultMetadataType$1.SUGGESTED_PRICE, value]]);\n        }\n        static parseExtension5String(raw) {\n            let currency;\n            switch (raw.charAt(0)) {\n                case '0':\n                    currency = '\u00A3';\n                    break;\n                case '5':\n                    currency = '$';\n                    break;\n                case '9':\n                    // Reference: http://www.jollytech.com\n                    switch (raw) {\n                        case '90000':\n                            // No suggested retail price\n                            return null;\n                        case '99991':\n                            // Complementary\n                            return '0.00';\n                        case '99990':\n                            return 'Used';\n                    }\n                    // Otherwise... unknown currency?\n                    currency = '';\n                    break;\n                default:\n                    currency = '';\n                    break;\n            }\n            let rawAmount = parseInt(raw.substring(1));\n            let unitsString = (rawAmount / 100).toString();\n            let hundredths = rawAmount % 100;\n            let hundredthsString = hundredths < 10 ? '0' + hundredths : hundredths.toString(); // fixme\n            return currency + unitsString + '.' + hundredthsString;\n        }\n    }\n\n    /**\n     * @see UPCEANExtension5Support\n     */\n    class UPCEANExtension2Support {\n        constructor() {\n            this.decodeMiddleCounters = Int32Array.from([0, 0, 0, 0]);\n            this.decodeRowStringBuffer = '';\n        }\n        decodeRow(rowNumber, row, extensionStartRange) {\n            let result = this.decodeRowStringBuffer;\n            let end = this.decodeMiddle(row, extensionStartRange, result);\n            let resultString = result.toString();\n            let extensionData = UPCEANExtension2Support.parseExtensionString(resultString);\n            let resultPoints = [\n                new ResultPoint((extensionStartRange[0] + extensionStartRange[1]) / 2.0, rowNumber),\n                new ResultPoint(end, rowNumber)\n            ];\n            let extensionResult = new Result(resultString, null, 0, resultPoints, BarcodeFormat$1.UPC_EAN_EXTENSION, new Date().getTime());\n            if (extensionData != null) {\n                extensionResult.putAllMetadata(extensionData);\n            }\n            return extensionResult;\n        }\n        decodeMiddle(row, startRange, resultString) {\n            let counters = this.decodeMiddleCounters;\n            counters[0] = 0;\n            counters[1] = 0;\n            counters[2] = 0;\n            counters[3] = 0;\n            let end = row.getSize();\n            let rowOffset = startRange[1];\n            let checkParity = 0;\n            for (let x = 0; x < 2 && rowOffset < end; x++) {\n                let bestMatch = AbstractUPCEANReader.decodeDigit(row, counters, rowOffset, AbstractUPCEANReader.L_AND_G_PATTERNS);\n                resultString += String.fromCharCode(('0'.charCodeAt(0) + bestMatch % 10));\n                for (let counter of counters) {\n                    rowOffset += counter;\n                }\n                if (bestMatch >= 10) {\n                    checkParity |= 1 << (1 - x);\n                }\n                if (x !== 1) {\n                    // Read off separator if not last\n                    rowOffset = row.getNextSet(rowOffset);\n                    rowOffset = row.getNextUnset(rowOffset);\n                }\n            }\n            if (resultString.length !== 2) {\n                throw new NotFoundException();\n            }\n            if (parseInt(resultString.toString()) % 4 !== checkParity) {\n                throw new NotFoundException();\n            }\n            return rowOffset;\n        }\n        static parseExtensionString(raw) {\n            if (raw.length !== 2) {\n                return null;\n            }\n            return new Map([[ResultMetadataType$1.ISSUE_NUMBER, parseInt(raw)]]);\n        }\n    }\n\n    class UPCEANExtensionSupport {\n        static decodeRow(rowNumber, row, rowOffset) {\n            let extensionStartRange = AbstractUPCEANReader.findGuardPattern(\n                row,\n                rowOffset,\n                false,\n                this.EXTENSION_START_PATTERN,\n                new Int32Array(this.EXTENSION_START_PATTERN.length).fill(0));\n            try {\n                // return null;\n                let fiveSupport = new UPCEANExtension5Support();\n                return fiveSupport.decodeRow(rowNumber, row, extensionStartRange);\n            }\n            catch (err) {\n                // return null;\n                let twoSupport = new UPCEANExtension2Support();\n                return twoSupport.decodeRow(rowNumber, row, extensionStartRange);\n            }\n        }\n    }\n    UPCEANExtensionSupport.EXTENSION_START_PATTERN = Int32Array.from([1, 1, 2]);\n\n    /**\n     * <p>Encapsulates functionality and implementation that is common to UPC and EAN families\n     * of one-dimensional barcodes.</p>\n     *\n     * @author dswitkin@google.com (Daniel Switkin)\n     * @author Sean Owen\n     * @author alasdair@google.com (Alasdair Mackintosh)\n     */\n    class UPCEANReader extends AbstractUPCEANReader {\n        constructor() {\n            super();\n            this.decodeRowStringBuffer = '';\n            UPCEANReader.L_AND_G_PATTERNS = UPCEANReader.L_PATTERNS.map(arr => Int32Array.from(arr));\n            for (let i = 10; i < 20; i++) {\n                let widths = UPCEANReader.L_PATTERNS[i - 10];\n                let reversedWidths = new Int32Array(widths.length);\n                for (let j = 0; j < widths.length; j++) {\n                    reversedWidths[j] = widths[widths.length - j - 1];\n                }\n                UPCEANReader.L_AND_G_PATTERNS[i] = reversedWidths;\n            }\n        }\n        decodeRow(rowNumber, row, hints) {\n            let startGuardRange = UPCEANReader.findStartGuardPattern(row);\n            let resultPointCallback = hints == null ? null : hints.get(DecodeHintType$1.NEED_RESULT_POINT_CALLBACK);\n            if (resultPointCallback != null) {\n                const resultPoint = new ResultPoint((startGuardRange[0] + startGuardRange[1]) / 2.0, rowNumber);\n                resultPointCallback.foundPossibleResultPoint(resultPoint);\n            }\n            let budello = this.decodeMiddle(row, startGuardRange, this.decodeRowStringBuffer);\n            let endStart = budello.rowOffset;\n            let result = budello.resultString;\n            if (resultPointCallback != null) {\n                const resultPoint = new ResultPoint(endStart, rowNumber);\n                resultPointCallback.foundPossibleResultPoint(resultPoint);\n            }\n            let endRange = this.decodeEnd(row, endStart);\n            if (resultPointCallback != null) {\n                const resultPoint = new ResultPoint((endRange[0] + endRange[1]) / 2.0, rowNumber);\n                resultPointCallback.foundPossibleResultPoint(resultPoint);\n            }\n            // Make sure there is a quiet zone at least as big as the end pattern after the barcode. The\n            // spec might want more whitespace, but in practice this is the maximum we can count on.\n            let end = endRange[1];\n            let quietEnd = end + (end - endRange[0]);\n            if (quietEnd >= row.getSize() || !row.isRange(end, quietEnd, false)) {\n                throw new NotFoundException();\n            }\n            let resultString = result.toString();\n            // UPC/EAN should never be less than 8 chars anyway\n            if (resultString.length < 8) {\n                throw new FormatException();\n            }\n            if (!UPCEANReader.checkChecksum(resultString)) {\n                throw new ChecksumException();\n            }\n            let left = (startGuardRange[1] + startGuardRange[0]) / 2.0;\n            let right = (endRange[1] + endRange[0]) / 2.0;\n            let format = this.getBarcodeFormat();\n            let resultPoint = [new ResultPoint(left, rowNumber), new ResultPoint(right, rowNumber)];\n            let decodeResult = new Result(resultString, null, 0, resultPoint, format, new Date().getTime());\n            let extensionLength = 0;\n            try {\n                let extensionResult = UPCEANExtensionSupport.decodeRow(rowNumber, row, endRange[1]);\n                decodeResult.putMetadata(ResultMetadataType$1.UPC_EAN_EXTENSION, extensionResult.getText());\n                decodeResult.putAllMetadata(extensionResult.getResultMetadata());\n                decodeResult.addResultPoints(extensionResult.getResultPoints());\n                extensionLength = extensionResult.getText().length;\n            }\n            catch (ignoreError) {}\n            let allowedExtensions = hints == null ? null : hints.get(DecodeHintType$1.ALLOWED_EAN_EXTENSIONS);\n            if (allowedExtensions != null) {\n                let valid = false;\n                for (let length in allowedExtensions) {\n                    if (extensionLength.toString() === length) { // check me\n                        valid = true;\n                        break;\n                    }\n                }\n                if (!valid) {\n                    throw new NotFoundException();\n                }\n            }\n            return decodeResult;\n        }\n        decodeEnd(row, endStart) {\n            return UPCEANReader.findGuardPattern(\n                row, endStart, false, UPCEANReader.START_END_PATTERN,\n                new Int32Array(UPCEANReader.START_END_PATTERN.length).fill(0));\n        }\n        static checkChecksum(s) {\n            return UPCEANReader.checkStandardUPCEANChecksum(s);\n        }\n        static checkStandardUPCEANChecksum(s) {\n            let length = s.length;\n            if (length === 0)\n                return false;\n            let check = parseInt(s.charAt(length - 1), 10);\n            return UPCEANReader.getStandardUPCEANChecksum(s.substring(0, length - 1)) === check;\n        }\n        static getStandardUPCEANChecksum(s) {\n            let length = s.length;\n            let sum = 0;\n            for (let i = length - 1; i >= 0; i -= 2) {\n                let digit = s.charAt(i).charCodeAt(0) - '0'.charCodeAt(0);\n                if (digit < 0 || digit > 9) {\n                    throw new FormatException();\n                }\n                sum += digit;\n            }\n            sum *= 3;\n            for (let i = length - 2; i >= 0; i -= 2) {\n                let digit = s.charAt(i).charCodeAt(0) - '0'.charCodeAt(0);\n                if (digit < 0 || digit > 9) {\n                    throw new FormatException();\n                }\n                sum += digit;\n            }\n            return (1000 - sum) % 10;\n        }\n    }\n\n    /**\n     * <p>Implements decoding of the EAN-13 format.</p>\n     *\n     * @author dswitkin@google.com (Daniel Switkin)\n     * @author Sean Owen\n     * @author alasdair@google.com (Alasdair Mackintosh)\n     */\n    class EAN13Reader extends UPCEANReader {\n        constructor() {\n            super();\n            this.decodeMiddleCounters = Int32Array.from([0, 0, 0, 0]);\n        }\n        decodeMiddle(row, startRange, resultString) {\n            let counters = this.decodeMiddleCounters;\n            counters[0] = 0;\n            counters[1] = 0;\n            counters[2] = 0;\n            counters[3] = 0;\n            let end = row.getSize();\n            let rowOffset = startRange[1];\n            let lgPatternFound = 0;\n            for (let x = 0; x < 6 && rowOffset < end; x++) {\n                let bestMatch = UPCEANReader.decodeDigit(row, counters, rowOffset, UPCEANReader.L_AND_G_PATTERNS);\n                resultString += String.fromCharCode(('0'.charCodeAt(0) + bestMatch % 10));\n                for (let counter of counters) {\n                    rowOffset += counter;\n                }\n                if (bestMatch >= 10) {\n                    lgPatternFound |= 1 << (5 - x);\n                }\n            }\n            resultString = EAN13Reader.determineFirstDigit(resultString, lgPatternFound);\n            let middleRange = UPCEANReader.findGuardPattern(\n                row,\n                rowOffset,\n                true,\n                UPCEANReader.MIDDLE_PATTERN,\n                new Int32Array(UPCEANReader.MIDDLE_PATTERN.length).fill(0));\n            rowOffset = middleRange[1];\n            for (let x = 0; x < 6 && rowOffset < end; x++) {\n                let bestMatch = UPCEANReader.decodeDigit(row, counters, rowOffset, UPCEANReader.L_PATTERNS);\n                resultString += String.fromCharCode(('0'.charCodeAt(0) + bestMatch));\n                for (let counter of counters) {\n                    rowOffset += counter;\n                }\n            }\n            return { rowOffset, resultString };\n        }\n        getBarcodeFormat() {\n            return BarcodeFormat$1.EAN_13;\n        }\n        static determineFirstDigit(resultString, lgPatternFound) {\n            for (let d = 0; d < 10; d++) {\n                if (lgPatternFound === this.FIRST_DIGIT_ENCODINGS[d]) {\n                    resultString = String.fromCharCode(('0'.charCodeAt(0) + d)) + resultString;\n                    return resultString;\n                }\n            }\n            throw new NotFoundException();\n        }\n    }\n    EAN13Reader.FIRST_DIGIT_ENCODINGS = [0x00, 0x0B, 0x0D, 0xE, 0x13, 0x19, 0x1C, 0x15, 0x16, 0x1A];\n\n    /**\n     * <p>Implements decoding of the EAN-8 format.</p>\n     *\n     * @author Sean Owen\n     */\n    class EAN8Reader extends UPCEANReader {\n        constructor() {\n            super();\n            this.decodeMiddleCounters = Int32Array.from([0, 0, 0, 0]);\n        }\n        decodeMiddle(row, startRange, resultString) {\n            const counters = this.decodeMiddleCounters;\n            counters[0] = 0;\n            counters[1] = 0;\n            counters[2] = 0;\n            counters[3] = 0;\n            let end = row.getSize();\n            let rowOffset = startRange[1];\n            for (let x = 0; x < 4 && rowOffset < end; x++) {\n                let bestMatch = UPCEANReader.decodeDigit(row, counters, rowOffset, UPCEANReader.L_PATTERNS);\n                resultString += String.fromCharCode(('0'.charCodeAt(0) + bestMatch));\n                for (let counter of counters) {\n                    rowOffset += counter;\n                }\n            }\n            let middleRange = UPCEANReader.findGuardPattern(row, rowOffset, true, UPCEANReader.MIDDLE_PATTERN, new Int32Array(UPCEANReader.MIDDLE_PATTERN.length).fill(0));\n            rowOffset = middleRange[1];\n            for (let x = 0; x < 4 && rowOffset < end; x++) {\n                let bestMatch = UPCEANReader.decodeDigit(row, counters, rowOffset, UPCEANReader.L_PATTERNS);\n                resultString += String.fromCharCode(('0'.charCodeAt(0) + bestMatch));\n                for (let counter of counters) {\n                    rowOffset += counter;\n                }\n            }\n            return { rowOffset, resultString };\n        }\n        getBarcodeFormat() {\n            return BarcodeFormat$1.EAN_8;\n        }\n    }\n\n    /**\n     * Encapsulates functionality and implementation that is common to all families\n     * of one-dimensional barcodes.\n     *\n     * @author dswitkin@google.com (Daniel Switkin)\n     * @author Sean Owen\n     * @author sam2332 (Sam Rudloff)\n     *\n     * @source https://github.com/zxing/zxing/blob/3c96923276dd5785d58eb970b6ba3f80d36a9505/core/src/main/java/com/google/zxing/oned/UPCAReader.java\n     *\n     * @experimental\n     */\n    class UPCAReader extends UPCEANReader {\n        constructor() {\n            super(...arguments);\n            this.ean13Reader = new EAN13Reader();\n        }\n        // @Override\n        getBarcodeFormat() {\n            return BarcodeFormat$1.UPC_A;\n        }\n        // Note that we don't try rotation without the try harder flag, even if rotation was supported.\n        // @Override\n        decode(image, hints) {\n            return this.maybeReturnResult(this.ean13Reader.decode(image));\n        }\n        // @Override\n        decodeRow(rowNumber, row, hints) {\n            return this.maybeReturnResult(this.ean13Reader.decodeRow(rowNumber, row, hints));\n        }\n        // @Override\n        decodeMiddle(row, startRange, resultString) {\n            return this.ean13Reader.decodeMiddle(row, startRange, resultString);\n        }\n        maybeReturnResult(result) {\n            let text = result.getText();\n            if (text.charAt(0) === '0') {\n                let upcaResult = new Result(text.substring(1), null, null, result.getResultPoints(), BarcodeFormat$1.UPC_A);\n                if (result.getResultMetadata() != null) {\n                    upcaResult.putAllMetadata(result.getResultMetadata());\n                }\n                return upcaResult;\n            }\n            else {\n                throw new NotFoundException();\n            }\n        }\n        reset() {\n            this.ean13Reader.reset();\n        }\n    }\n\n    /**\n     * <p>Implements decoding of the UPC-E format.</p>\n     * <p><a href=\"http://www.barcodeisland.com/upce.phtml\">This</a> is a great reference for\n     * UPC-E information.</p>\n     *\n     * @author Sean Owen\n     *\n     * @source https://github.com/zxing/zxing/blob/3c96923276dd5785d58eb970b6ba3f80d36a9505/core/src/main/java/com/google/zxing/oned/UPCEReader.java\n     *\n     * @experimental\n     */\n    /* final */ class UPCEReader extends UPCEANReader {\n        constructor() {\n            super();\n            this.decodeMiddleCounters = new Int32Array(4);\n        }\n        /**\n         * @throws NotFoundException\n         */\n        // @Override\n        decodeMiddle(row, startRange, result) {\n            const counters = this.decodeMiddleCounters.map(x => x);\n            counters[0] = 0;\n            counters[1] = 0;\n            counters[2] = 0;\n            counters[3] = 0;\n            const end = row.getSize();\n            let rowOffset = startRange[1];\n            let lgPatternFound = 0;\n            for (let x = 0; x < 6 && rowOffset < end; x++) {\n                const bestMatch = UPCEReader.decodeDigit(\n                    row, counters, rowOffset, UPCEReader.L_AND_G_PATTERNS);\n                result += String.fromCharCode(('0'.charCodeAt(0) + (bestMatch % 10)));\n                for (let counter of counters) {\n                    rowOffset += counter;\n                }\n                if (bestMatch >= 10) {\n                    lgPatternFound |= (1 << (5 - x));\n                }\n            }\n            let resultString = UPCEReader.determineNumSysAndCheckDigit(\n                result, lgPatternFound);\n            return {rowOffset, resultString};\n        }\n        /**\n         * @throws NotFoundException\n         */\n        // @Override\n        decodeEnd(row, endStart) {\n            return UPCEReader.findGuardPatternWithoutCounters(\n                row, endStart, true, UPCEReader.MIDDLE_END_PATTERN);\n        }\n        /**\n         * @throws FormatException\n         */\n        // @Override\n        checkChecksum(s) {\n            return UPCEANReader.checkChecksum(UPCEReader.convertUPCEtoUPCA(s));\n        }\n        /**\n         * @throws NotFoundException\n         */\n        static determineNumSysAndCheckDigit(resultString, lgPatternFound) {\n            for (let numSys = 0; numSys <= 1; numSys++) {\n                for (let d = 0; d < 10; d++) {\n                    if (lgPatternFound === this.NUMSYS_AND_CHECK_DIGIT_PATTERNS[numSys][d]) {\n                        let prefix = String.fromCharCode('0'.charCodeAt(0) + numSys);\n                        let suffix = String.fromCharCode('0'.charCodeAt(0) + d);\n                        return prefix + resultString + suffix;\n                    }\n                }\n            }\n            throw NotFoundException.getNotFoundInstance();\n        }\n        // @Override\n        getBarcodeFormat() {\n            return BarcodeFormat$1.UPC_E;\n        }\n        /**\n         * Expands a UPC-E value back into its full, equivalent UPC-A code value.\n         *\n         * @param upce UPC-E code as string of digits\n         * @return equivalent UPC-A code as string of digits\n         */\n        static convertUPCEtoUPCA(upce) {\n            // the following line is equivalent to upce.getChars(1, 7, upceChars, 0);\n            const upceChars = upce.slice(1, 7).split('').map(x => x.charCodeAt(0));\n            const result = new StringBuilder( /*12*/);\n            result.append(upce.charAt(0));\n            let lastChar = upceChars[5];\n            switch (lastChar) {\n                case 0:\n                case 1:\n                case 2:\n                    result.appendChars(upceChars, 0, 2);\n                    result.append(lastChar);\n                    result.append('0000');\n                    result.appendChars(upceChars, 2, 3);\n                    break;\n                case 3:\n                    result.appendChars(upceChars, 0, 3);\n                    result.append('00000');\n                    result.appendChars(upceChars, 3, 2);\n                    break;\n                case 4:\n                    result.appendChars(upceChars, 0, 4);\n                    result.append('00000');\n                    result.append(upceChars[4]);\n                    break;\n                default:\n                    result.appendChars(upceChars, 0, 5);\n                    result.append('0000');\n                    result.append(lastChar);\n                    break;\n            }\n            // Only append check digit in conversion if supplied\n            if (upce.length >= 8) {\n                result.append(upce.charAt(7));\n            }\n            return result.toString();\n        }\n    }\n    /**\n     * The pattern that marks the middle, and end, of a UPC-E pattern.\n     * There is no \"second half\" to a UPC-E barcode.\n     */\n    UPCEReader.MIDDLE_END_PATTERN = Int32Array.from([1, 1, 1, 1, 1, 1]);\n    // For an UPC-E barcode, the final digit is represented by the parities used\n    // to encode the middle six digits, according to the table below.\n    //\n    //                Parity of next 6 digits\n    //    Digit   0     1     2     3     4     5\n    //       0    Even   Even  Even Odd  Odd   Odd\n    //       1    Even   Even  Odd  Even Odd   Odd\n    //       2    Even   Even  Odd  Odd  Even  Odd\n    //       3    Even   Even  Odd  Odd  Odd   Even\n    //       4    Even   Odd   Even Even Odd   Odd\n    //       5    Even   Odd   Odd  Even Even  Odd\n    //       6    Even   Odd   Odd  Odd  Even  Even\n    //       7    Even   Odd   Even Odd  Even  Odd\n    //       8    Even   Odd   Even Odd  Odd   Even\n    //       9    Even   Odd   Odd  Even Odd   Even\n    //\n    // The encoding is represented by the following array, which is a bit pattern\n    // using Odd = 0 and Even = 1. For example, 5 is represented by:\n    //\n    //              Odd Even Even Odd Odd Even\n    // in binary:\n    //                0    1    1   0   0    1   == 0x19\n    //\n    /**\n     * See {@link #L_AND_G_PATTERNS}; these values similarly represent patterns of\n     * even-odd parity encodings of digits that imply both the number system (0 or 1)\n     * used, and the check digit.\n     */\n    UPCEReader.NUMSYS_AND_CHECK_DIGIT_PATTERNS = [\n        Int32Array.from([0x38, 0x34, 0x32, 0x31, 0x2C, 0x26, 0x23, 0x2A, 0x29, 0x25]),\n        Int32Array.from([0x07, 0x0B, 0x0D, 0x0E, 0x13, 0x19, 0x1C, 0x15, 0x16, 0x1A]),\n    ];\n\n    /**\n     * <p>A reader that can read all available UPC/EAN formats. If a caller wants to try to\n     * read all such formats, it is most efficient to use this implementation rather than invoke\n     * individual readers.</p>\n     *\n     * @author Sean Owen\n     */\n    class MultiFormatUPCEANReader extends OneDReader {\n        constructor(hints) {\n            super();\n            let possibleFormats = hints == null ? null : hints.get(DecodeHintType$1.POSSIBLE_FORMATS);\n            let readers = [];\n            if (!isNullOrUndefined(possibleFormats)) {\n                if (possibleFormats.indexOf(BarcodeFormat$1.EAN_13) > -1) {\n                    readers.push(new EAN13Reader());\n                }\n                if (possibleFormats.indexOf(BarcodeFormat$1.UPC_A) > -1) {\n                    readers.push(new UPCAReader());\n                }\n                if (possibleFormats.indexOf(BarcodeFormat$1.EAN_8) > -1) {\n                    readers.push(new EAN8Reader());\n                }\n                if (possibleFormats.indexOf(BarcodeFormat$1.UPC_E) > -1) {\n                    readers.push(new UPCEReader());\n                }\n            } else {\n                // No hints provided.\n                readers.push(new EAN13Reader());\n                readers.push(new UPCAReader());\n                readers.push(new EAN8Reader());\n                readers.push(new UPCEReader());\n            }\n            this.readers = readers;\n        }\n        decodeRow(rowNumber, row, hints) {\n            for (let reader of this.readers) {\n                try {\n                    // const result: Result = reader.decodeRow(rowNumber, row, startGuardPattern, hints);\n                    const result = reader.decodeRow(rowNumber, row, hints);\n                    // Special case: a 12-digit code encoded in UPC-A is identical to a \"0\"\n                    // followed by those 12 digits encoded as EAN-13. Each will recognize such a code,\n                    // UPC-A as a 12-digit string and EAN-13 as a 13-digit string starting with \"0\".\n                    // Individually these are correct and their readers will both read such a code\n                    // and correctly call it EAN-13, or UPC-A, respectively.\n                    //\n                    // In this case, if we've been looking for both types, we'd like to call it\n                    // a UPC-A code. But for efficiency we only run the EAN-13 decoder to also read\n                    // UPC-A. So we special case it here, and convert an EAN-13 result to a UPC-A\n                    // result if appropriate.\n                    //\n                    // But, don't return UPC-A if UPC-A was not a requested format!\n                    const ean13MayBeUPCA = result.getBarcodeFormat() === BarcodeFormat$1.EAN_13 &&\n                        result.getText().charAt(0) === '0';\n                    // @SuppressWarnings(\"unchecked\")\n                    const possibleFormats = hints == null ? null : hints.get(DecodeHintType$1.POSSIBLE_FORMATS);\n                    const canReturnUPCA = possibleFormats == null || possibleFormats.includes(BarcodeFormat$1.UPC_A);\n                    if (ean13MayBeUPCA && canReturnUPCA) {\n                        const rawBytes = result.getRawBytes();\n                        // Transfer the metadata across\n                        const resultUPCA = new Result(\n                            result.getText().substring(1),\n                            rawBytes,\n                            (rawBytes ? rawBytes.length : null),\n                            result.getResultPoints(),\n                            BarcodeFormat$1.UPC_A);\n                        resultUPCA.putAllMetadata(result.getResultMetadata());\n                        return resultUPCA;\n                    }\n                    return result;\n                }\n                catch (err) {\n                    // continue;\n                }\n            }\n            throw new NotFoundException();\n        }\n        reset() {\n            for (let reader of this.readers) {\n                reader.reset();\n            }\n        }\n    }\n\n    // import Integer from '../../util/Integer';\n    // import Float from '../../util/Float';\n    class AbstractRSSReader extends OneDReader {\n        constructor() {\n            super();\n            this.decodeFinderCounters = new Int32Array(4);\n            this.dataCharacterCounters = new Int32Array(8);\n            this.oddRoundingErrors = new Array(4);\n            this.evenRoundingErrors = new Array(4);\n            this.oddCounts = new Array(this.dataCharacterCounters.length / 2);\n            this.evenCounts = new Array(this.dataCharacterCounters.length / 2);\n        }\n        getDecodeFinderCounters() {\n            return this.decodeFinderCounters;\n        }\n        getDataCharacterCounters() {\n            return this.dataCharacterCounters;\n        }\n        getOddRoundingErrors() {\n            return this.oddRoundingErrors;\n        }\n        getEvenRoundingErrors() {\n            return this.evenRoundingErrors;\n        }\n        getOddCounts() {\n            return this.oddCounts;\n        }\n        getEvenCounts() {\n            return this.evenCounts;\n        }\n        parseFinderValue(counters, finderPatterns) {\n            for (let value = 0; value < finderPatterns.length; value++) {\n                if (OneDReader.patternMatchVariance(counters, finderPatterns[value], AbstractRSSReader.MAX_INDIVIDUAL_VARIANCE) < AbstractRSSReader.MAX_AVG_VARIANCE) {\n                    return value;\n                }\n            }\n            throw new NotFoundException();\n        }\n        /**\n         * @param array values to sum\n         * @return sum of values\n         * @deprecated call {@link MathUtils#sum(int[])}\n         */\n        static count(array) {\n            return MathUtils.sum(new Int32Array(array));\n        }\n        static increment(array, errors) {\n            let index = 0;\n            let biggestError = errors[0];\n            for (let i = 1; i < array.length; i++) {\n                if (errors[i] > biggestError) {\n                    biggestError = errors[i];\n                    index = i;\n                }\n            }\n            array[index]++;\n        }\n        static decrement(array, errors) {\n            let index = 0;\n            let biggestError = errors[0];\n            for (let i = 1; i < array.length; i++) {\n                if (errors[i] < biggestError) {\n                    biggestError = errors[i];\n                    index = i;\n                }\n            }\n            array[index]--;\n        }\n        static isFinderPattern(counters) {\n            let firstTwoSum = counters[0] + counters[1];\n            let sum = firstTwoSum + counters[2] + counters[3];\n            let ratio = firstTwoSum / sum;\n            if (ratio >= AbstractRSSReader.MIN_FINDER_PATTERN_RATIO && ratio <= AbstractRSSReader.MAX_FINDER_PATTERN_RATIO) {\n                // passes ratio test in spec, but see if the counts are unreasonable\n                let minCounter = Number.MAX_SAFE_INTEGER;\n                let maxCounter = Number.MIN_SAFE_INTEGER;\n                for (let counter of counters) {\n                    if (counter > maxCounter) {\n                        maxCounter = counter;\n                    }\n                    if (counter < minCounter) {\n                        minCounter = counter;\n                    }\n                }\n                return maxCounter < 10 * minCounter;\n            }\n            return false;\n        }\n    }\n    AbstractRSSReader.MAX_AVG_VARIANCE = 0.2;\n    AbstractRSSReader.MAX_INDIVIDUAL_VARIANCE = 0.45;\n    AbstractRSSReader.MIN_FINDER_PATTERN_RATIO = 9.5 / 12.0;\n    AbstractRSSReader.MAX_FINDER_PATTERN_RATIO = 12.5 / 14.0;\n\n    class DataCharacter {\n        constructor(value, checksumPortion) {\n            this.value = value;\n            this.checksumPortion = checksumPortion;\n        }\n        getValue() {\n            return this.value;\n        }\n        getChecksumPortion() {\n            return this.checksumPortion;\n        }\n        toString() {\n            return this.value + '(' + this.checksumPortion + ')';\n        }\n        equals(o) {\n            if (!(o instanceof DataCharacter)) {\n                return false;\n            }\n            const that = o;\n            return this.value === that.value && this.checksumPortion === that.checksumPortion;\n        }\n        hashCode() {\n            return this.value ^ this.checksumPortion;\n        }\n    }\n\n    class FinderPattern {\n        constructor(value, startEnd, start, end, rowNumber) {\n            this.value = value;\n            this.startEnd = startEnd;\n            this.value = value;\n            this.startEnd = startEnd;\n            this.resultPoints = new Array();\n            this.resultPoints.push(new ResultPoint(start, rowNumber));\n            this.resultPoints.push(new ResultPoint(end, rowNumber));\n        }\n        getValue() {\n            return this.value;\n        }\n        getStartEnd() {\n            return this.startEnd;\n        }\n        getResultPoints() {\n            return this.resultPoints;\n        }\n        equals(o) {\n            if (!(o instanceof FinderPattern)) {\n                return false;\n            }\n            const that = o;\n            return this.value === that.value;\n        }\n        hashCode() {\n            return this.value;\n        }\n    }\n\n    /**\n     * RSS util functions.\n     */\n    class RSSUtils {\n        constructor() { }\n        static getRSSvalue(widths, maxWidth, noNarrow) {\n            let n = 0;\n            for (let width of widths) {\n                n += width;\n            }\n            let val = 0;\n            let narrowMask = 0;\n            let elements = widths.length;\n            for (let bar = 0; bar < elements - 1; bar++) {\n                let elmWidth;\n                for (elmWidth = 1, narrowMask |= 1 << bar; elmWidth < widths[bar]; elmWidth++, narrowMask &= ~(1 << bar)) {\n                    let subVal = RSSUtils.combins(n - elmWidth - 1, elements - bar - 2);\n                    if (noNarrow && (narrowMask === 0) && (n - elmWidth - (elements - bar - 1) >= elements - bar - 1)) {\n                        subVal -= RSSUtils.combins(n - elmWidth - (elements - bar), elements - bar - 2);\n                    }\n                    if (elements - bar - 1 > 1) {\n                        let lessVal = 0;\n                        for (let mxwElement = n - elmWidth - (elements - bar - 2); mxwElement > maxWidth; mxwElement--) {\n                            lessVal += RSSUtils.combins(n - elmWidth - mxwElement - 1, elements - bar - 3);\n                        }\n                        subVal -= lessVal * (elements - 1 - bar);\n                    }\n                    else if (n - elmWidth > maxWidth) {\n                        subVal--;\n                    }\n                    val += subVal;\n                }\n                n -= elmWidth;\n            }\n            return val;\n        }\n        static combins(n, r) {\n            let maxDenom;\n            let minDenom;\n            if (n - r > r) {\n                minDenom = r;\n                maxDenom = n - r;\n            }\n            else {\n                minDenom = n - r;\n                maxDenom = r;\n            }\n            let val = 1;\n            let j = 1;\n            for (let i = n; i > maxDenom; i--) {\n                val *= i;\n                if (j <= minDenom) {\n                    val /= j;\n                    j++;\n                }\n            }\n            while ((j <= minDenom)) {\n                val /= j;\n                j++;\n            }\n            return val;\n        }\n    }\n\n    class BitArrayBuilder {\n        static buildBitArray(pairs) {\n            let charNumber = (pairs.length * 2) - 1;\n            if (pairs[pairs.length - 1].getRightChar() == null) {\n                charNumber -= 1;\n            }\n            let size = 12 * charNumber;\n            let binary = new BitArray(size);\n            let accPos = 0;\n            let firstPair = pairs[0];\n            let firstValue = firstPair.getRightChar().getValue();\n            for (let i = 11; i >= 0; --i) {\n                if ((firstValue & (1 << i)) != 0) {\n                    binary.set(accPos);\n                }\n                accPos++;\n            }\n            for (let i = 1; i < pairs.length; ++i) {\n                let currentPair = pairs[i];\n                let leftValue = currentPair.getLeftChar().getValue();\n                for (let j = 11; j >= 0; --j) {\n                    if ((leftValue & (1 << j)) != 0) {\n                        binary.set(accPos);\n                    }\n                    accPos++;\n                }\n                if (currentPair.getRightChar() != null) {\n                    let rightValue = currentPair.getRightChar().getValue();\n                    for (let j = 11; j >= 0; --j) {\n                        if ((rightValue & (1 << j)) != 0) {\n                            binary.set(accPos);\n                        }\n                        accPos++;\n                    }\n                }\n            }\n            return binary;\n        }\n    }\n\n    class BlockParsedResult {\n        constructor(finished, decodedInformation) {\n            if (decodedInformation) {\n                this.decodedInformation = null;\n            }\n            else {\n                this.finished = finished;\n                this.decodedInformation = decodedInformation;\n            }\n        }\n        getDecodedInformation() {\n            return this.decodedInformation;\n        }\n        isFinished() {\n            return this.finished;\n        }\n    }\n\n    class DecodedObject {\n        constructor(newPosition) {\n            this.newPosition = newPosition;\n        }\n        getNewPosition() {\n            return this.newPosition;\n        }\n    }\n\n    class DecodedChar extends DecodedObject {\n        constructor(newPosition, value) {\n            super(newPosition);\n            this.value = value;\n        }\n        getValue() {\n            return this.value;\n        }\n        isFNC1() {\n            return this.value === DecodedChar.FNC1;\n        }\n    }\n    DecodedChar.FNC1 = '$';\n\n    class DecodedInformation extends DecodedObject {\n        constructor(newPosition, newString, remainingValue) {\n            super(newPosition);\n            if (remainingValue) {\n                this.remaining = true;\n                this.remainingValue = this.remainingValue;\n            }\n            else {\n                this.remaining = false;\n                this.remainingValue = 0;\n            }\n            this.newString = newString;\n        }\n        getNewString() {\n            return this.newString;\n        }\n        isRemaining() {\n            return this.remaining;\n        }\n        getRemainingValue() {\n            return this.remainingValue;\n        }\n    }\n\n    class DecodedNumeric extends DecodedObject {\n        constructor(newPosition, firstDigit, secondDigit) {\n            super(newPosition);\n            if (firstDigit < 0 || firstDigit > 10 || secondDigit < 0 || secondDigit > 10) {\n                throw new FormatException();\n            }\n            this.firstDigit = firstDigit;\n            this.secondDigit = secondDigit;\n        }\n        getFirstDigit() {\n            return this.firstDigit;\n        }\n        getSecondDigit() {\n            return this.secondDigit;\n        }\n        getValue() {\n            return this.firstDigit * 10 + this.secondDigit;\n        }\n        isFirstDigitFNC1() {\n            return this.firstDigit === DecodedNumeric.FNC1;\n        }\n        isSecondDigitFNC1() {\n            return this.secondDigit === DecodedNumeric.FNC1;\n        }\n        isAnyFNC1() {\n            return this.firstDigit === DecodedNumeric.FNC1 || this.secondDigit === DecodedNumeric.FNC1;\n        }\n    }\n    DecodedNumeric.FNC1 = 10;\n\n    class FieldParser {\n        constructor() {\n        }\n        static parseFieldsInGeneralPurpose(rawInformation) {\n            if (!rawInformation) {\n                return null;\n            }\n            // Processing 2-digit AIs\n            if (rawInformation.length < 2) {\n                throw new NotFoundException();\n            }\n            let firstTwoDigits = rawInformation.substring(0, 2);\n            for (let dataLength of FieldParser.TWO_DIGIT_DATA_LENGTH) {\n                if (dataLength[0] === firstTwoDigits) {\n                    if (dataLength[1] === FieldParser.VARIABLE_LENGTH) {\n                        return FieldParser.processVariableAI(2, dataLength[2], rawInformation);\n                    }\n                    return FieldParser.processFixedAI(2, dataLength[1], rawInformation);\n                }\n            }\n            if (rawInformation.length < 3) {\n                throw new NotFoundException();\n            }\n            let firstThreeDigits = rawInformation.substring(0, 3);\n            for (let dataLength of FieldParser.THREE_DIGIT_DATA_LENGTH) {\n                if (dataLength[0] === firstThreeDigits) {\n                    if (dataLength[1] === FieldParser.VARIABLE_LENGTH) {\n                        return FieldParser.processVariableAI(3, dataLength[2], rawInformation);\n                    }\n                    return FieldParser.processFixedAI(3, dataLength[1], rawInformation);\n                }\n            }\n            for (let dataLength of FieldParser.THREE_DIGIT_PLUS_DIGIT_DATA_LENGTH) {\n                if (dataLength[0] === firstThreeDigits) {\n                    if (dataLength[1] === FieldParser.VARIABLE_LENGTH) {\n                        return FieldParser.processVariableAI(4, dataLength[2], rawInformation);\n                    }\n                    return FieldParser.processFixedAI(4, dataLength[1], rawInformation);\n                }\n            }\n            if (rawInformation.length < 4) {\n                throw new NotFoundException();\n            }\n            let firstFourDigits = rawInformation.substring(0, 4);\n            for (let dataLength of FieldParser.FOUR_DIGIT_DATA_LENGTH) {\n                if (dataLength[0] === firstFourDigits) {\n                    if (dataLength[1] === FieldParser.VARIABLE_LENGTH) {\n                        return FieldParser.processVariableAI(4, dataLength[2], rawInformation);\n                    }\n                    return FieldParser.processFixedAI(4, dataLength[1], rawInformation);\n                }\n            }\n            throw new NotFoundException();\n        }\n        static processFixedAI(aiSize, fieldSize, rawInformation) {\n            if (rawInformation.length < aiSize) {\n                throw new NotFoundException();\n            }\n            let ai = rawInformation.substring(0, aiSize);\n            if (rawInformation.length < aiSize + fieldSize) {\n                throw new NotFoundException();\n            }\n            let field = rawInformation.substring(aiSize, aiSize + fieldSize);\n            let remaining = rawInformation.substring(aiSize + fieldSize);\n            let result = '(' + ai + ')' + field;\n            let parsedAI = FieldParser.parseFieldsInGeneralPurpose(remaining);\n            return parsedAI == null ? result : result + parsedAI;\n        }\n        static processVariableAI(aiSize, variableFieldSize, rawInformation) {\n            let ai = rawInformation.substring(0, aiSize);\n            let maxSize;\n            if (rawInformation.length < aiSize + variableFieldSize) {\n                maxSize = rawInformation.length;\n            }\n            else {\n                maxSize = aiSize + variableFieldSize;\n            }\n            let field = rawInformation.substring(aiSize, maxSize);\n            let remaining = rawInformation.substring(maxSize);\n            let result = '(' + ai + ')' + field;\n            let parsedAI = FieldParser.parseFieldsInGeneralPurpose(remaining);\n            return parsedAI == null ? result : result + parsedAI;\n        }\n    }\n    FieldParser.VARIABLE_LENGTH = [];\n    FieldParser.TWO_DIGIT_DATA_LENGTH = [\n        ['00', 18],\n        ['01', 14],\n        ['02', 14],\n        ['10', FieldParser.VARIABLE_LENGTH, 20],\n        ['11', 6],\n        ['12', 6],\n        ['13', 6],\n        ['15', 6],\n        ['17', 6],\n        ['20', 2],\n        ['21', FieldParser.VARIABLE_LENGTH, 20],\n        ['22', FieldParser.VARIABLE_LENGTH, 29],\n        ['30', FieldParser.VARIABLE_LENGTH, 8],\n        ['37', FieldParser.VARIABLE_LENGTH, 8],\n        // internal company codes\n        ['90', FieldParser.VARIABLE_LENGTH, 30],\n        ['91', FieldParser.VARIABLE_LENGTH, 30],\n        ['92', FieldParser.VARIABLE_LENGTH, 30],\n        ['93', FieldParser.VARIABLE_LENGTH, 30],\n        ['94', FieldParser.VARIABLE_LENGTH, 30],\n        ['95', FieldParser.VARIABLE_LENGTH, 30],\n        ['96', FieldParser.VARIABLE_LENGTH, 30],\n        ['97', FieldParser.VARIABLE_LENGTH, 3],\n        ['98', FieldParser.VARIABLE_LENGTH, 30],\n        ['99', FieldParser.VARIABLE_LENGTH, 30],\n    ];\n    FieldParser.THREE_DIGIT_DATA_LENGTH = [\n        // Same format as above\n        ['240', FieldParser.VARIABLE_LENGTH, 30],\n        ['241', FieldParser.VARIABLE_LENGTH, 30],\n        ['242', FieldParser.VARIABLE_LENGTH, 6],\n        ['250', FieldParser.VARIABLE_LENGTH, 30],\n        ['251', FieldParser.VARIABLE_LENGTH, 30],\n        ['253', FieldParser.VARIABLE_LENGTH, 17],\n        ['254', FieldParser.VARIABLE_LENGTH, 20],\n        ['400', FieldParser.VARIABLE_LENGTH, 30],\n        ['401', FieldParser.VARIABLE_LENGTH, 30],\n        ['402', 17],\n        ['403', FieldParser.VARIABLE_LENGTH, 30],\n        ['410', 13],\n        ['411', 13],\n        ['412', 13],\n        ['413', 13],\n        ['414', 13],\n        ['420', FieldParser.VARIABLE_LENGTH, 20],\n        ['421', FieldParser.VARIABLE_LENGTH, 15],\n        ['422', 3],\n        ['423', FieldParser.VARIABLE_LENGTH, 15],\n        ['424', 3],\n        ['425', 3],\n        ['426', 3],\n    ];\n    FieldParser.THREE_DIGIT_PLUS_DIGIT_DATA_LENGTH = [\n        // Same format as above\n        ['310', 6],\n        ['311', 6],\n        ['312', 6],\n        ['313', 6],\n        ['314', 6],\n        ['315', 6],\n        ['316', 6],\n        ['320', 6],\n        ['321', 6],\n        ['322', 6],\n        ['323', 6],\n        ['324', 6],\n        ['325', 6],\n        ['326', 6],\n        ['327', 6],\n        ['328', 6],\n        ['329', 6],\n        ['330', 6],\n        ['331', 6],\n        ['332', 6],\n        ['333', 6],\n        ['334', 6],\n        ['335', 6],\n        ['336', 6],\n        ['340', 6],\n        ['341', 6],\n        ['342', 6],\n        ['343', 6],\n        ['344', 6],\n        ['345', 6],\n        ['346', 6],\n        ['347', 6],\n        ['348', 6],\n        ['349', 6],\n        ['350', 6],\n        ['351', 6],\n        ['352', 6],\n        ['353', 6],\n        ['354', 6],\n        ['355', 6],\n        ['356', 6],\n        ['357', 6],\n        ['360', 6],\n        ['361', 6],\n        ['362', 6],\n        ['363', 6],\n        ['364', 6],\n        ['365', 6],\n        ['366', 6],\n        ['367', 6],\n        ['368', 6],\n        ['369', 6],\n        ['390', FieldParser.VARIABLE_LENGTH, 15],\n        ['391', FieldParser.VARIABLE_LENGTH, 18],\n        ['392', FieldParser.VARIABLE_LENGTH, 15],\n        ['393', FieldParser.VARIABLE_LENGTH, 18],\n        ['703', FieldParser.VARIABLE_LENGTH, 30],\n    ];\n    FieldParser.FOUR_DIGIT_DATA_LENGTH = [\n        // Same format as above\n        ['7001', 13],\n        ['7002', FieldParser.VARIABLE_LENGTH, 30],\n        ['7003', 10],\n        ['8001', 14],\n        ['8002', FieldParser.VARIABLE_LENGTH, 20],\n        ['8003', FieldParser.VARIABLE_LENGTH, 30],\n        ['8004', FieldParser.VARIABLE_LENGTH, 30],\n        ['8005', 6],\n        ['8006', 18],\n        ['8007', FieldParser.VARIABLE_LENGTH, 30],\n        ['8008', FieldParser.VARIABLE_LENGTH, 12],\n        ['8018', 18],\n        ['8020', FieldParser.VARIABLE_LENGTH, 25],\n        ['8100', 6],\n        ['8101', 10],\n        ['8102', 2],\n        ['8110', FieldParser.VARIABLE_LENGTH, 70],\n        ['8200', FieldParser.VARIABLE_LENGTH, 70],\n    ];\n\n    class GeneralAppIdDecoder {\n        constructor(information) {\n            this.buffer = new StringBuilder();\n            this.information = information;\n        }\n        decodeAllCodes(buff, initialPosition) {\n            let currentPosition = initialPosition;\n            let remaining = null;\n            do {\n                let info = this.decodeGeneralPurposeField(currentPosition, remaining);\n                let parsedFields = FieldParser.parseFieldsInGeneralPurpose(info.getNewString());\n                if (parsedFields != null) {\n                    buff.append(parsedFields);\n                }\n                if (info.isRemaining()) {\n                    remaining = '' + info.getRemainingValue();\n                }\n                else {\n                    remaining = null;\n                }\n                if (currentPosition === info.getNewPosition()) { // No step forward!\n                    break;\n                }\n                currentPosition = info.getNewPosition();\n            } while (true);\n            return buff.toString();\n        }\n        isStillNumeric(pos) {\n            // It's numeric if it still has 7 positions\n            // and one of the first 4 bits is \"1\".\n            if (pos + 7 > this.information.getSize()) {\n                return pos + 4 <= this.information.getSize();\n            }\n            for (let i = pos; i < pos + 3; ++i) {\n                if (this.information.get(i)) {\n                    return true;\n                }\n            }\n            return this.information.get(pos + 3);\n        }\n        decodeNumeric(pos) {\n            if (pos + 7 > this.information.getSize()) {\n                let numeric = this.extractNumericValueFromBitArray(pos, 4);\n                if (numeric === 0) {\n                    return new DecodedNumeric(this.information.getSize(), DecodedNumeric.FNC1, DecodedNumeric.FNC1);\n                }\n                return new DecodedNumeric(this.information.getSize(), numeric - 1, DecodedNumeric.FNC1);\n            }\n            let numeric = this.extractNumericValueFromBitArray(pos, 7);\n            let digit1 = (numeric - 8) / 11;\n            let digit2 = (numeric - 8) % 11;\n            return new DecodedNumeric(pos + 7, digit1, digit2);\n        }\n        extractNumericValueFromBitArray(pos, bits) {\n            return GeneralAppIdDecoder.extractNumericValueFromBitArray(this.information, pos, bits);\n        }\n        static extractNumericValueFromBitArray(information, pos, bits) {\n            let value = 0;\n            for (let i = 0; i < bits; ++i) {\n                if (information.get(pos + i)) {\n                    value |= 1 << (bits - i - 1);\n                }\n            }\n            return value;\n        }\n        decodeGeneralPurposeField(pos, remaining) {\n            // this.buffer.setLength(0);\n            this.buffer.setLengthToZero();\n            if (remaining != null) {\n                this.buffer.append(remaining);\n            }\n            this.current.setPosition(pos);\n            let lastDecoded = this.parseBlocks();\n            if (lastDecoded != null && lastDecoded.isRemaining()) {\n                return new DecodedInformation(this.current.getPosition(), this.buffer.toString(), lastDecoded.getRemainingValue());\n            }\n            return new DecodedInformation(this.current.getPosition(), this.buffer.toString());\n        }\n        parseBlocks() {\n            let isFinished;\n            let result;\n            do {\n                let initialPosition = this.current.getPosition();\n                if (this.current.isAlpha()) {\n                    result = this.parseAlphaBlock();\n                    isFinished = result.isFinished();\n                }\n                else if (this.current.isIsoIec646()) {\n                    result = this.parseIsoIec646Block();\n                    isFinished = result.isFinished();\n                }\n                else { // it must be numeric\n                    result = this.parseNumericBlock();\n                    isFinished = result.isFinished();\n                }\n                let positionChanged = initialPosition !== this.current.getPosition();\n                if (!positionChanged && !isFinished) {\n                    break;\n                }\n            } while (!isFinished);\n            return result.getDecodedInformation();\n        }\n        parseNumericBlock() {\n            while (this.isStillNumeric(this.current.getPosition())) {\n                let numeric = this.decodeNumeric(this.current.getPosition());\n                this.current.setPosition(numeric.getNewPosition());\n                if (numeric.isFirstDigitFNC1()) {\n                    let information;\n                    if (numeric.isSecondDigitFNC1()) {\n                        information = new DecodedInformation(this.current.getPosition(), this.buffer.toString());\n                    }\n                    else {\n                        information = new DecodedInformation(this.current.getPosition(), this.buffer.toString(), numeric.getSecondDigit());\n                    }\n                    return new BlockParsedResult(true, information);\n                }\n                this.buffer.append(numeric.getFirstDigit());\n                if (numeric.isSecondDigitFNC1()) {\n                    let information = new DecodedInformation(this.current.getPosition(), this.buffer.toString());\n                    return new BlockParsedResult(true, information);\n                }\n                this.buffer.append(numeric.getSecondDigit());\n            }\n            if (this.isNumericToAlphaNumericLatch(this.current.getPosition())) {\n                this.current.setAlpha();\n                this.current.incrementPosition(4);\n            }\n            return new BlockParsedResult(false);\n        }\n        parseIsoIec646Block() {\n            while (this.isStillIsoIec646(this.current.getPosition())) {\n                let iso = this.decodeIsoIec646(this.current.getPosition());\n                this.current.setPosition(iso.getNewPosition());\n                if (iso.isFNC1()) {\n                    let information = new DecodedInformation(this.current.getPosition(), this.buffer.toString());\n                    return new BlockParsedResult(true, information);\n                }\n                this.buffer.append(iso.getValue());\n            }\n            if (this.isAlphaOr646ToNumericLatch(this.current.getPosition())) {\n                this.current.incrementPosition(3);\n                this.current.setNumeric();\n            }\n            else if (this.isAlphaTo646ToAlphaLatch(this.current.getPosition())) {\n                if (this.current.getPosition() + 5 < this.information.getSize()) {\n                    this.current.incrementPosition(5);\n                }\n                else {\n                    this.current.setPosition(this.information.getSize());\n                }\n                this.current.setAlpha();\n            }\n            return new BlockParsedResult(false);\n        }\n        parseAlphaBlock() {\n            while (this.isStillAlpha(this.current.getPosition())) {\n                let alpha = this.decodeAlphanumeric(this.current.getPosition());\n                this.current.setPosition(alpha.getNewPosition());\n                if (alpha.isFNC1()) {\n                    let information = new DecodedInformation(this.current.getPosition(), this.buffer.toString());\n                    return new BlockParsedResult(true, information); // end of the char block\n                }\n                this.buffer.append(alpha.getValue());\n            }\n            if (this.isAlphaOr646ToNumericLatch(this.current.getPosition())) {\n                this.current.incrementPosition(3);\n                this.current.setNumeric();\n            }\n            else if (this.isAlphaTo646ToAlphaLatch(this.current.getPosition())) {\n                if (this.current.getPosition() + 5 < this.information.getSize()) {\n                    this.current.incrementPosition(5);\n                }\n                else {\n                    this.current.setPosition(this.information.getSize());\n                }\n                this.current.setIsoIec646();\n            }\n            return new BlockParsedResult(false);\n        }\n        isStillIsoIec646(pos) {\n            if (pos + 5 > this.information.getSize()) {\n                return false;\n            }\n            let fiveBitValue = this.extractNumericValueFromBitArray(pos, 5);\n            if (fiveBitValue >= 5 && fiveBitValue < 16) {\n                return true;\n            }\n            if (pos + 7 > this.information.getSize()) {\n                return false;\n            }\n            let sevenBitValue = this.extractNumericValueFromBitArray(pos, 7);\n            if (sevenBitValue >= 64 && sevenBitValue < 116) {\n                return true;\n            }\n            if (pos + 8 > this.information.getSize()) {\n                return false;\n            }\n            let eightBitValue = this.extractNumericValueFromBitArray(pos, 8);\n            return eightBitValue >= 232 && eightBitValue < 253;\n        }\n        decodeIsoIec646(pos) {\n            let fiveBitValue = this.extractNumericValueFromBitArray(pos, 5);\n            if (fiveBitValue === 15) {\n                return new DecodedChar(pos + 5, DecodedChar.FNC1);\n            }\n            if (fiveBitValue >= 5 && fiveBitValue < 15) {\n                return new DecodedChar(pos + 5, ('0' + (fiveBitValue - 5)));\n            }\n            let sevenBitValue = this.extractNumericValueFromBitArray(pos, 7);\n            if (sevenBitValue >= 64 && sevenBitValue < 90) {\n                return new DecodedChar(pos + 7, ('' + (sevenBitValue + 1)));\n            }\n            if (sevenBitValue >= 90 && sevenBitValue < 116) {\n                return new DecodedChar(pos + 7, ('' + (sevenBitValue + 7)));\n            }\n            let eightBitValue = this.extractNumericValueFromBitArray(pos, 8);\n            let c;\n            switch (eightBitValue) {\n                case 232:\n                    c = '!';\n                    break;\n                case 233:\n                    c = '\"';\n                    break;\n                case 234:\n                    c = '%';\n                    break;\n                case 235:\n                    c = '&';\n                    break;\n                case 236:\n                    c = '\\'';\n                    break;\n                case 237:\n                    c = '(';\n                    break;\n                case 238:\n                    c = ')';\n                    break;\n                case 239:\n                    c = '*';\n                    break;\n                case 240:\n                    c = '+';\n                    break;\n                case 241:\n                    c = ',';\n                    break;\n                case 242:\n                    c = '-';\n                    break;\n                case 243:\n                    c = '.';\n                    break;\n                case 244:\n                    c = '/';\n                    break;\n                case 245:\n                    c = ':';\n                    break;\n                case 246:\n                    c = ';';\n                    break;\n                case 247:\n                    c = '<';\n                    break;\n                case 248:\n                    c = '=';\n                    break;\n                case 249:\n                    c = '>';\n                    break;\n                case 250:\n                    c = '?';\n                    break;\n                case 251:\n                    c = '_';\n                    break;\n                case 252:\n                    c = ' ';\n                    break;\n                default:\n                    throw new FormatException();\n            }\n            return new DecodedChar(pos + 8, c);\n        }\n        isStillAlpha(pos) {\n            if (pos + 5 > this.information.getSize()) {\n                return false;\n            }\n            // We now check if it's a valid 5-bit value (0..9 and FNC1)\n            let fiveBitValue = this.extractNumericValueFromBitArray(pos, 5);\n            if (fiveBitValue >= 5 && fiveBitValue < 16) {\n                return true;\n            }\n            if (pos + 6 > this.information.getSize()) {\n                return false;\n            }\n            let sixBitValue = this.extractNumericValueFromBitArray(pos, 6);\n            return sixBitValue >= 16 && sixBitValue < 63; // 63 not included\n        }\n        decodeAlphanumeric(pos) {\n            let fiveBitValue = this.extractNumericValueFromBitArray(pos, 5);\n            if (fiveBitValue === 15) {\n                return new DecodedChar(pos + 5, DecodedChar.FNC1);\n            }\n            if (fiveBitValue >= 5 && fiveBitValue < 15) {\n                return new DecodedChar(pos + 5, ('0' + (fiveBitValue - 5)));\n            }\n            let sixBitValue = this.extractNumericValueFromBitArray(pos, 6);\n            if (sixBitValue >= 32 && sixBitValue < 58) {\n                return new DecodedChar(pos + 6, ('' + (sixBitValue + 33)));\n            }\n            let c;\n            switch (sixBitValue) {\n                case 58:\n                    c = '*';\n                    break;\n                case 59:\n                    c = ',';\n                    break;\n                case 60:\n                    c = '-';\n                    break;\n                case 61:\n                    c = '.';\n                    break;\n                case 62:\n                    c = '/';\n                    break;\n                default:\n                    throw new IllegalStateException('Decoding invalid alphanumeric value: ' + sixBitValue);\n            }\n            return new DecodedChar(pos + 6, c);\n        }\n        isAlphaTo646ToAlphaLatch(pos) {\n            if (pos + 1 > this.information.getSize()) {\n                return false;\n            }\n            for (let i = 0; i < 5 && i + pos < this.information.getSize(); ++i) {\n                if (i === 2) {\n                    if (!this.information.get(pos + 2)) {\n                        return false;\n                    }\n                }\n                else if (this.information.get(pos + i)) {\n                    return false;\n                }\n            }\n            return true;\n        }\n        isAlphaOr646ToNumericLatch(pos) {\n            // Next is alphanumeric if there are 3 positions and they are all zeros\n            if (pos + 3 > this.information.getSize()) {\n                return false;\n            }\n            for (let i = pos; i < pos + 3; ++i) {\n                if (this.information.get(i)) {\n                    return false;\n                }\n            }\n            return true;\n        }\n        isNumericToAlphaNumericLatch(pos) {\n            // Next is alphanumeric if there are 4 positions and they are all zeros, or\n            // if there is a subset of this just before the end of the symbol\n            if (pos + 1 > this.information.getSize()) {\n                return false;\n            }\n            for (let i = 0; i < 4 && i + pos < this.information.getSize(); ++i) {\n                if (this.information.get(pos + i)) {\n                    return false;\n                }\n            }\n            return true;\n        }\n    }\n\n    class AbstractExpandedDecoder {\n        constructor(information) {\n            this.information = information;\n            this.generalDecoder = new GeneralAppIdDecoder(information);\n        }\n        getInformation() {\n            return this.information;\n        }\n        getGeneralDecoder() {\n            return this.generalDecoder;\n        }\n    }\n\n    class AI01decoder extends AbstractExpandedDecoder {\n        constructor(information) {\n            super(information);\n        }\n        encodeCompressedGtin(buf, currentPos) {\n            buf.append('(01)');\n            let initialPosition = buf.length();\n            buf.append('9');\n            this.encodeCompressedGtinWithoutAI(buf, currentPos, initialPosition);\n        }\n        encodeCompressedGtinWithoutAI(buf, currentPos, initialBufferPosition) {\n            for (let i = 0; i < 4; ++i) {\n                let currentBlock = this.getGeneralDecoder().extractNumericValueFromBitArray(currentPos + 10 * i, 10);\n                if (currentBlock / 100 === 0) {\n                    buf.append('0');\n                }\n                if (currentBlock / 10 === 0) {\n                    buf.append('0');\n                }\n                buf.append(currentBlock);\n            }\n            AI01decoder.appendCheckDigit(buf, initialBufferPosition);\n        }\n        static appendCheckDigit(buf, currentPos) {\n            let checkDigit = 0;\n            for (let i = 0; i < 13; i++) {\n                // let digit = buf.charAt(i + currentPos) - '0';\n                // To be checked\n                let digit = buf.charAt(i + currentPos).charCodeAt(0) - '0'.charCodeAt(0);\n                checkDigit += (i & 0x01) === 0 ? 3 * digit : digit;\n            }\n            checkDigit = 10 - (checkDigit % 10);\n            if (checkDigit === 10) {\n                checkDigit = 0;\n            }\n            buf.append(checkDigit);\n        }\n    }\n    AI01decoder.GTIN_SIZE = 40;\n\n    class AI01AndOtherAIs extends AI01decoder {\n        // the second one is the encodation method, and the other two are for the variable length\n        constructor(information) {\n            super(information);\n        }\n        parseInformation() {\n            let buff = new StringBuilder();\n            buff.append('(01)');\n            let initialGtinPosition = buff.length();\n            let firstGtinDigit = this.getGeneralDecoder().extractNumericValueFromBitArray(AI01AndOtherAIs.HEADER_SIZE, 4);\n            buff.append(firstGtinDigit);\n            this.encodeCompressedGtinWithoutAI(buff, AI01AndOtherAIs.HEADER_SIZE + 4, initialGtinPosition);\n            return this.getGeneralDecoder().decodeAllCodes(buff, AI01AndOtherAIs.HEADER_SIZE + 44);\n        }\n    }\n    AI01AndOtherAIs.HEADER_SIZE = 1 + 1 + 2; // first bit encodes the linkage flag,\n\n    class AnyAIDecoder extends AbstractExpandedDecoder {\n        constructor(information) {\n            super(information);\n        }\n        parseInformation() {\n            let buf = new StringBuilder();\n            return this.getGeneralDecoder().decodeAllCodes(buf, AnyAIDecoder.HEADER_SIZE);\n        }\n    }\n    AnyAIDecoder.HEADER_SIZE = 2 + 1 + 2;\n\n    class AI01weightDecoder extends AI01decoder {\n        constructor(information) {\n            super(information);\n        }\n        encodeCompressedWeight(buf, currentPos, weightSize) {\n            let originalWeightNumeric = this.getGeneralDecoder().extractNumericValueFromBitArray(currentPos, weightSize);\n            this.addWeightCode(buf, originalWeightNumeric);\n            let weightNumeric = this.checkWeight(originalWeightNumeric);\n            let currentDivisor = 100000;\n            for (let i = 0; i < 5; ++i) {\n                if (weightNumeric / currentDivisor === 0) {\n                    buf.append('0');\n                }\n                currentDivisor /= 10;\n            }\n            buf.append(weightNumeric);\n        }\n    }\n\n    class AI013x0xDecoder extends AI01weightDecoder {\n        constructor(information) {\n            super(information);\n        }\n        parseInformation() {\n            if (this.getInformation().getSize() != AI013x0xDecoder.HEADER_SIZE + AI01weightDecoder.GTIN_SIZE + AI013x0xDecoder.WEIGHT_SIZE) {\n                throw new NotFoundException();\n            }\n            let buf = new StringBuilder();\n            this.encodeCompressedGtin(buf, AI013x0xDecoder.HEADER_SIZE);\n            this.encodeCompressedWeight(buf, AI013x0xDecoder.HEADER_SIZE + AI01weightDecoder.GTIN_SIZE, AI013x0xDecoder.WEIGHT_SIZE);\n            return buf.toString();\n        }\n    }\n    AI013x0xDecoder.HEADER_SIZE = 4 + 1;\n    AI013x0xDecoder.WEIGHT_SIZE = 15;\n\n    class AI013103decoder extends AI013x0xDecoder {\n        constructor(information) {\n            super(information);\n        }\n        addWeightCode(buf, weight) {\n            buf.append('(3103)');\n        }\n        checkWeight(weight) {\n            return weight;\n        }\n    }\n\n    class AI01320xDecoder extends AI013x0xDecoder {\n        constructor(information) {\n            super(information);\n        }\n        addWeightCode(buf, weight) {\n            if (weight < 10000) {\n                buf.append('(3202)');\n            }\n            else {\n                buf.append('(3203)');\n            }\n        }\n        checkWeight(weight) {\n            if (weight < 10000) {\n                return weight;\n            }\n            return weight - 10000;\n        }\n    }\n\n    class AI01392xDecoder extends AI01decoder {\n        constructor(information) {\n            super(information);\n        }\n        parseInformation() {\n            if (this.getInformation().getSize() < AI01392xDecoder.HEADER_SIZE + AI01decoder.GTIN_SIZE) {\n                throw new NotFoundException();\n            }\n            let buf = new StringBuilder();\n            this.encodeCompressedGtin(buf, AI01392xDecoder.HEADER_SIZE);\n            let lastAIdigit = this.getGeneralDecoder().extractNumericValueFromBitArray(AI01392xDecoder.HEADER_SIZE + AI01decoder.GTIN_SIZE, AI01392xDecoder.LAST_DIGIT_SIZE);\n            buf.append('(392');\n            buf.append(lastAIdigit);\n            buf.append(')');\n            let decodedInformation = this.getGeneralDecoder().decodeGeneralPurposeField(AI01392xDecoder.HEADER_SIZE + AI01decoder.GTIN_SIZE + AI01392xDecoder.LAST_DIGIT_SIZE, null);\n            buf.append(decodedInformation.getNewString());\n            return buf.toString();\n        }\n    }\n    AI01392xDecoder.HEADER_SIZE = 5 + 1 + 2;\n    AI01392xDecoder.LAST_DIGIT_SIZE = 2;\n\n    class AI01393xDecoder extends AI01decoder {\n        constructor(information) {\n            super(information);\n        }\n        parseInformation() {\n            if (this.getInformation().getSize() < AI01393xDecoder.HEADER_SIZE + AI01decoder.GTIN_SIZE) {\n                throw new NotFoundException();\n            }\n            let buf = new StringBuilder();\n            this.encodeCompressedGtin(buf, AI01393xDecoder.HEADER_SIZE);\n            let lastAIdigit = this.getGeneralDecoder().extractNumericValueFromBitArray(AI01393xDecoder.HEADER_SIZE + AI01decoder.GTIN_SIZE, AI01393xDecoder.LAST_DIGIT_SIZE);\n            buf.append('(393');\n            buf.append(lastAIdigit);\n            buf.append(')');\n            let firstThreeDigits = this.getGeneralDecoder().extractNumericValueFromBitArray(AI01393xDecoder.HEADER_SIZE + AI01decoder.GTIN_SIZE + AI01393xDecoder.LAST_DIGIT_SIZE, AI01393xDecoder.FIRST_THREE_DIGITS_SIZE);\n            if (firstThreeDigits / 100 == 0) {\n                buf.append('0');\n            }\n            if (firstThreeDigits / 10 == 0) {\n                buf.append('0');\n            }\n            buf.append(firstThreeDigits);\n            let generalInformation = this.getGeneralDecoder().decodeGeneralPurposeField(AI01393xDecoder.HEADER_SIZE + AI01decoder.GTIN_SIZE + AI01393xDecoder.LAST_DIGIT_SIZE + AI01393xDecoder.FIRST_THREE_DIGITS_SIZE, null);\n            buf.append(generalInformation.getNewString());\n            return buf.toString();\n        }\n    }\n    AI01393xDecoder.HEADER_SIZE = 5 + 1 + 2;\n    AI01393xDecoder.LAST_DIGIT_SIZE = 2;\n    AI01393xDecoder.FIRST_THREE_DIGITS_SIZE = 10;\n\n    class AI013x0x1xDecoder extends AI01weightDecoder {\n        constructor(information, firstAIdigits, dateCode) {\n            super(information);\n            this.dateCode = dateCode;\n            this.firstAIdigits = firstAIdigits;\n        }\n        parseInformation() {\n            if (this.getInformation().getSize() != AI013x0x1xDecoder.HEADER_SIZE + AI013x0x1xDecoder.GTIN_SIZE + AI013x0x1xDecoder.WEIGHT_SIZE + AI013x0x1xDecoder.DATE_SIZE) {\n                throw new NotFoundException();\n            }\n            let buf = new StringBuilder();\n            this.encodeCompressedGtin(buf, AI013x0x1xDecoder.HEADER_SIZE);\n            this.encodeCompressedWeight(buf, AI013x0x1xDecoder.HEADER_SIZE + AI013x0x1xDecoder.GTIN_SIZE, AI013x0x1xDecoder.WEIGHT_SIZE);\n            this.encodeCompressedDate(buf, AI013x0x1xDecoder.HEADER_SIZE + AI013x0x1xDecoder.GTIN_SIZE + AI013x0x1xDecoder.WEIGHT_SIZE);\n            return buf.toString();\n        }\n        encodeCompressedDate(buf, currentPos) {\n            let numericDate = this.getGeneralDecoder().extractNumericValueFromBitArray(currentPos, AI013x0x1xDecoder.DATE_SIZE);\n            if (numericDate == 38400) {\n                return;\n            }\n            buf.append('(');\n            buf.append(this.dateCode);\n            buf.append(')');\n            let day = numericDate % 32;\n            numericDate /= 32;\n            let month = numericDate % 12 + 1;\n            numericDate /= 12;\n            let year = numericDate;\n            if (year / 10 == 0) {\n                buf.append('0');\n            }\n            buf.append(year);\n            if (month / 10 == 0) {\n                buf.append('0');\n            }\n            buf.append(month);\n            if (day / 10 == 0) {\n                buf.append('0');\n            }\n            buf.append(day);\n        }\n        addWeightCode(buf, weight) {\n            buf.append('(');\n            buf.append(this.firstAIdigits);\n            buf.append(weight / 100000);\n            buf.append(')');\n        }\n        checkWeight(weight) {\n            return weight % 100000;\n        }\n    }\n    AI013x0x1xDecoder.HEADER_SIZE = 7 + 1;\n    AI013x0x1xDecoder.WEIGHT_SIZE = 20;\n    AI013x0x1xDecoder.DATE_SIZE = 16;\n\n    function createDecoder(information) {\n        try {\n            if (information.get(1)) {\n                return new AI01AndOtherAIs(information);\n            }\n            if (!information.get(2)) {\n                return new AnyAIDecoder(information);\n            }\n            let fourBitEncodationMethod = GeneralAppIdDecoder.extractNumericValueFromBitArray(information, 1, 4);\n            switch (fourBitEncodationMethod) {\n                case 4: return new AI013103decoder(information);\n                case 5: return new AI01320xDecoder(information);\n            }\n            let fiveBitEncodationMethod = GeneralAppIdDecoder.extractNumericValueFromBitArray(information, 1, 5);\n            switch (fiveBitEncodationMethod) {\n                case 12: return new AI01392xDecoder(information);\n                case 13: return new AI01393xDecoder(information);\n            }\n            let sevenBitEncodationMethod = GeneralAppIdDecoder.extractNumericValueFromBitArray(information, 1, 7);\n            switch (sevenBitEncodationMethod) {\n                case 56: return new AI013x0x1xDecoder(information, '310', '11');\n                case 57: return new AI013x0x1xDecoder(information, '320', '11');\n                case 58: return new AI013x0x1xDecoder(information, '310', '13');\n                case 59: return new AI013x0x1xDecoder(information, '320', '13');\n                case 60: return new AI013x0x1xDecoder(information, '310', '15');\n                case 61: return new AI013x0x1xDecoder(information, '320', '15');\n                case 62: return new AI013x0x1xDecoder(information, '310', '17');\n                case 63: return new AI013x0x1xDecoder(information, '320', '17');\n            }\n        }\n        catch (e) {\n            console.log(e);\n            throw new IllegalStateException('unknown decoder: ' + information);\n        }\n    }\n\n    class ExpandedPair {\n        constructor(leftChar, rightChar, finderPatter, mayBeLast) {\n            this.leftchar = leftChar;\n            this.rightchar = rightChar;\n            this.finderpattern = finderPatter;\n            this.maybeLast = mayBeLast;\n        }\n        mayBeLast() {\n            return this.maybeLast;\n        }\n        getLeftChar() {\n            return this.leftchar;\n        }\n        getRightChar() {\n            return this.rightchar;\n        }\n        getFinderPattern() {\n            return this.finderpattern;\n        }\n        mustBeLast() {\n            return this.rightchar == null;\n        }\n        toString() {\n            return '[ ' + this.leftchar + ', ' + this.rightchar + ' : ' + (this.finderpattern == null ? 'null' : this.finderpattern.getValue()) + ' ]';\n        }\n        static equals(o1, o2) {\n            if (!(o1 instanceof ExpandedPair)) {\n                return false;\n            }\n            return ExpandedPair.equalsOrNull(o1.leftchar, o2.leftchar) &&\n                ExpandedPair.equalsOrNull(o1.rightchar, o2.rightchar) &&\n                ExpandedPair.equalsOrNull(o1.finderpattern, o2.finderpattern);\n        }\n        static equalsOrNull(o1, o2) {\n            return o1 === null ? o2 === null : ExpandedPair.equals(o1, o2);\n        }\n        hashCode() {\n            // return ExpandedPair.hashNotNull(leftChar) ^ hashNotNull(rightChar) ^ hashNotNull(finderPattern);\n            let value = this.leftchar.getValue() ^ this.rightchar.getValue() ^ this.finderpattern.getValue();\n            return value;\n        }\n    }\n\n    class ExpandedRow {\n        constructor(pairs, rowNumber, wasReversed) {\n            this.pairs = pairs;\n            this.rowNumber = rowNumber;\n            this.wasReversed = wasReversed;\n        }\n        getPairs() {\n            return this.pairs;\n        }\n        getRowNumber() {\n            return this.rowNumber;\n        }\n        isReversed() {\n            return this.wasReversed;\n        }\n        // check implementation\n        isEquivalent(otherPairs) {\n            return this.checkEqualitity(this, otherPairs);\n        }\n        // @Override\n        toString() {\n            return '{ ' + this.pairs + ' }';\n        }\n        /**\n         * Two rows are equal if they contain the same pairs in the same order.\n         */\n        // @Override\n        // check implementation\n        equals(o1, o2) {\n            if (!(o1 instanceof ExpandedRow)) {\n                return false;\n            }\n            return this.checkEqualitity(o1, o2) && o1.wasReversed === o2.wasReversed;\n        }\n        checkEqualitity(pair1, pair2) {\n            if (!pair1 || !pair2)\n                return;\n            let result;\n            pair1.forEach((e1, i) => {\n                pair2.forEach(e2 => {\n                    if (e1.getLeftChar().getValue() === e2.getLeftChar().getValue() && e1.getRightChar().getValue() === e2.getRightChar().getValue() && e1.getFinderPatter().getValue() === e2.getFinderPatter().getValue()) {\n                        result = true;\n                    }\n                });\n            });\n            return result;\n        }\n    }\n\n    // import java.util.ArrayList;\n    // import java.util.Iterator;\n    // import java.util.List;\n    // import java.util.Map;\n    // import java.util.Collections;\n    class RSSExpandedReader extends AbstractRSSReader {\n        constructor(verbose) {\n            super(...arguments);\n            this.pairs = new Array(RSSExpandedReader.MAX_PAIRS);\n            this.rows = new Array();\n            this.startEnd = [2];\n            this.verbose = (verbose === true);\n        }\n        decodeRow(rowNumber, row, hints) {\n            // Rows can start with even pattern in case in prev rows there where odd number of patters.\n            // So lets try twice\n            // this.pairs.clear();\n            this.pairs.length = 0;\n            this.startFromEven = false;\n            try {\n                return RSSExpandedReader.constructResult(this.decodeRow2pairs(rowNumber, row));\n            }\n            catch (e) {\n                // OK\n                if (this.verbose) {\n                    console.log(e);\n                }\n            }\n            this.pairs.length = 0;\n            this.startFromEven = true;\n            return RSSExpandedReader.constructResult(this.decodeRow2pairs(rowNumber, row));\n        }\n        reset() {\n            this.pairs.length = 0;\n            this.rows.length = 0;\n        }\n        // Not private for testing\n        decodeRow2pairs(rowNumber, row) {\n            let done = false;\n            while (!done) {\n                try {\n                    this.pairs.push(this.retrieveNextPair(row, this.pairs, rowNumber));\n                }\n                catch (error) {\n                    if (error instanceof NotFoundException) {\n                        if (!this.pairs.length) {\n                            throw new NotFoundException();\n                        }\n                        // exit this loop when retrieveNextPair() fails and throws\n                        done = true;\n                    }\n                }\n            }\n            // TODO: verify sequence of finder patterns as in checkPairSequence()\n            if (this.checkChecksum()) {\n                return this.pairs;\n            }\n            let tryStackedDecode;\n            if (this.rows.length) {\n                tryStackedDecode = true;\n            }\n            else {\n                tryStackedDecode = false;\n            }\n            // let tryStackedDecode = !this.rows.isEmpty();\n            this.storeRow(rowNumber, false); // TODO: deal with reversed rows\n            if (tryStackedDecode) {\n                // When the image is 180-rotated, then rows are sorted in wrong direction.\n                // Try twice with both the directions.\n                let ps = this.checkRowsBoolean(false);\n                if (ps != null) {\n                    return ps;\n                }\n                ps = this.checkRowsBoolean(true);\n                if (ps != null) {\n                    return ps;\n                }\n            }\n            throw new NotFoundException();\n        }\n        // Need to Verify\n        checkRowsBoolean(reverse) {\n            // Limit number of rows we are checking\n            // We use recursive algorithm with pure complexity and don't want it to take forever\n            // Stacked barcode can have up to 11 rows, so 25 seems reasonable enough\n            if (this.rows.length > 25) {\n                this.rows.length = 0; // We will never have a chance to get result, so clear it\n                return null;\n            }\n            this.pairs.length = 0;\n            if (reverse) {\n                this.rows = this.rows.reverse();\n                // Collections.reverse(this.rows);\n            }\n            let ps = null;\n            try {\n                ps = this.checkRows(new Array(), 0);\n            }\n            catch (e) {\n                // OK\n                if (this.verbose) {\n                    console.log(e);\n                }\n            }\n            if (reverse) {\n                this.rows = this.rows.reverse();\n                // Collections.reverse(this.rows);\n            }\n            return ps;\n        }\n        // Try to construct a valid rows sequence\n        // Recursion is used to implement backtracking\n        checkRows(collectedRows, currentRow) {\n            for (let i = currentRow; i < this.rows.length; i++) {\n                let row = this.rows[i];\n                this.pairs.length = 0;\n                for (let collectedRow of collectedRows) {\n                    this.pairs.push(collectedRow.getPairs());\n                }\n                this.pairs.push(row.getPairs());\n                if (!RSSExpandedReader.isValidSequence(this.pairs)) {\n                    continue;\n                }\n                if (this.checkChecksum()) {\n                    return this.pairs;\n                }\n                let rs = new Array(collectedRows);\n                rs.push(row);\n                try {\n                    // Recursion: try to add more rows\n                    return this.checkRows(rs, i + 1);\n                }\n                catch (e) {\n                    // We failed, try the next candidate\n                    if (this.verbose) {\n                        console.log(e);\n                    }\n                }\n            }\n            throw new NotFoundException();\n        }\n        // Whether the pairs form a valid find pattern sequence,\n        // either complete or a prefix\n        static isValidSequence(pairs) {\n            for (let sequence of RSSExpandedReader.FINDER_PATTERN_SEQUENCES) {\n                if (pairs.length > sequence.length) {\n                    continue;\n                }\n                let stop = true;\n                for (let j = 0; j < pairs.length; j++) {\n                    if (pairs[j].getFinderPattern().getValue() != sequence[j]) {\n                        stop = false;\n                        break;\n                    }\n                }\n                if (stop) {\n                    return true;\n                }\n            }\n            return false;\n        }\n        storeRow(rowNumber, wasReversed) {\n            // Discard if duplicate above or below; otherwise insert in order by row number.\n            let insertPos = 0;\n            let prevIsSame = false;\n            let nextIsSame = false;\n            while (insertPos < this.rows.length) {\n                let erow = this.rows[insertPos];\n                if (erow.getRowNumber() > rowNumber) {\n                    nextIsSame = erow.isEquivalent(this.pairs);\n                    break;\n                }\n                prevIsSame = erow.isEquivalent(this.pairs);\n                insertPos++;\n            }\n            if (nextIsSame || prevIsSame) {\n                return;\n            }\n            // When the row was partially decoded (e.g. 2 pairs found instead of 3),\n            // it will prevent us from detecting the barcode.\n            // Try to merge partial rows\n            // Check whether the row is part of an allready detected row\n            if (RSSExpandedReader.isPartialRow(this.pairs, this.rows)) {\n                return;\n            }\n            this.rows.push(insertPos, new ExpandedRow(this.pairs, rowNumber, wasReversed));\n            this.removePartialRows(this.pairs, this.rows);\n        }\n        // Remove all the rows that contains only specified pairs\n        removePartialRows(pairs, rows) {\n            // for (Iterator<ExpandedRow> iterator = rows.iterator(); iterator.hasNext();) {\n            //   ExpandedRow r = iterator.next();\n            //   if (r.getPairs().size() == pairs.size()) {\n            //     continue;\n            //   }\n            //   boolean allFound = true;\n            //   for (ExpandedPair p : r.getPairs()) {\n            //     boolean found = false;\n            //     for (ExpandedPair pp : pairs) {\n            //       if (p.equals(pp)) {\n            //         found = true;\n            //         break;\n            //       }\n            //     }\n            //     if (!found) {\n            //       allFound = false;\n            //       break;\n            //     }\n            //   }\n            //   if (allFound) {\n            //     // 'pairs' contains all the pairs from the row 'r'\n            //     iterator.remove();\n            //   }\n            // }\n            for (let row of rows) {\n                if (row.getPairs().length === pairs.length) {\n                    continue;\n                }\n                for (let p of row.getPairs()) {\n                    for (let pp of pairs) {\n                        if (ExpandedPair.equals(p, pp)) {\n                            break;\n                        }\n                    }\n                }\n            }\n        }\n        // Returns true when one of the rows already contains all the pairs\n        static isPartialRow(pairs, rows) {\n            for (let r of rows) {\n                let allFound = true;\n                for (let p of pairs) {\n                    let found = false;\n                    for (let pp of r.getPairs()) {\n                        if (p.equals(pp)) {\n                            found = true;\n                            break;\n                        }\n                    }\n                    if (!found) {\n                        allFound = false;\n                        break;\n                    }\n                }\n                if (allFound) {\n                    // the row 'r' contain all the pairs from 'pairs'\n                    return true;\n                }\n            }\n            return false;\n        }\n        // Only used for unit testing\n        getRows() {\n            return this.rows;\n        }\n        // Not private for unit testing\n        static constructResult(pairs) {\n            let binary = BitArrayBuilder.buildBitArray(pairs);\n            let decoder = createDecoder(binary);\n            let resultingString = decoder.parseInformation();\n            let firstPoints = pairs[0].getFinderPattern().getResultPoints();\n            let lastPoints = pairs[pairs.length - 1].getFinderPattern().getResultPoints();\n            let points = [firstPoints[0], firstPoints[1], lastPoints[0], lastPoints[1]];\n            return new Result(resultingString, null, null, points, BarcodeFormat$1.RSS_EXPANDED, null);\n        }\n        checkChecksum() {\n            let firstPair = this.pairs.get(0);\n            let checkCharacter = firstPair.getLeftChar();\n            let firstCharacter = firstPair.getRightChar();\n            if (firstCharacter == null) {\n                return false;\n            }\n            let checksum = firstCharacter.getChecksumPortion();\n            let s = 2;\n            for (let i = 1; i < this.pairs.size(); ++i) {\n                let currentPair = this.pairs.get(i);\n                checksum += currentPair.getLeftChar().getChecksumPortion();\n                s++;\n                let currentRightChar = currentPair.getRightChar();\n                if (currentRightChar != null) {\n                    checksum += currentRightChar.getChecksumPortion();\n                    s++;\n                }\n            }\n            checksum %= 211;\n            let checkCharacterValue = 211 * (s - 4) + checksum;\n            return checkCharacterValue == checkCharacter.getValue();\n        }\n        static getNextSecondBar(row, initialPos) {\n            let currentPos;\n            if (row.get(initialPos)) {\n                currentPos = row.getNextUnset(initialPos);\n                currentPos = row.getNextSet(currentPos);\n            }\n            else {\n                currentPos = row.getNextSet(initialPos);\n                currentPos = row.getNextUnset(currentPos);\n            }\n            return currentPos;\n        }\n        // not private for testing\n        retrieveNextPair(row, previousPairs, rowNumber) {\n            let isOddPattern = previousPairs.length % 2 == 0;\n            if (this.startFromEven) {\n                isOddPattern = !isOddPattern;\n            }\n            let pattern;\n            let keepFinding = true;\n            let forcedOffset = -1;\n            do {\n                this.findNextPair(row, previousPairs, forcedOffset);\n                pattern = this.parseFoundFinderPattern(row, rowNumber, isOddPattern);\n                if (pattern == null) {\n                    forcedOffset = RSSExpandedReader.getNextSecondBar(row, this.startEnd[0]);\n                }\n                else {\n                    keepFinding = false;\n                }\n            } while (keepFinding);\n            // When stacked symbol is split over multiple rows, there's no way to guess if this pair can be last or not.\n            // boolean mayBeLast = checkPairSequence(previousPairs, pattern);\n            let leftChar = this.decodeDataCharacter(row, pattern, isOddPattern, true);\n            if (!this.isEmptyPair(previousPairs) && previousPairs[previousPairs.length - 1].mustBeLast()) {\n                throw new NotFoundException();\n            }\n            let rightChar;\n            try {\n                rightChar = this.decodeDataCharacter(row, pattern, isOddPattern, false);\n            }\n            catch (e) {\n                rightChar = null;\n                if (this.verbose) {\n                    console.log(e);\n                }\n            }\n            return new ExpandedPair(leftChar, rightChar, pattern, true);\n        }\n        isEmptyPair(pairs) {\n            if (pairs.length === 0) {\n                return true;\n            }\n            return false;\n        }\n        findNextPair(row, previousPairs, forcedOffset) {\n            let counters = this.getDecodeFinderCounters();\n            counters[0] = 0;\n            counters[1] = 0;\n            counters[2] = 0;\n            counters[3] = 0;\n            let width = row.getSize();\n            let rowOffset;\n            if (forcedOffset >= 0) {\n                rowOffset = forcedOffset;\n            }\n            else if (this.isEmptyPair(previousPairs)) {\n                rowOffset = 0;\n            }\n            else {\n                let lastPair = previousPairs[previousPairs.length - 1];\n                rowOffset = lastPair.getFinderPattern().getStartEnd()[1];\n            }\n            let searchingEvenPair = previousPairs.length % 2 != 0;\n            if (this.startFromEven) {\n                searchingEvenPair = !searchingEvenPair;\n            }\n            let isWhite = false;\n            while (rowOffset < width) {\n                isWhite = !row.get(rowOffset);\n                if (!isWhite) {\n                    break;\n                }\n                rowOffset++;\n            }\n            let counterPosition = 0;\n            let patternStart = rowOffset;\n            for (let x = rowOffset; x < width; x++) {\n                if (row.get(x) != isWhite) {\n                    counters[counterPosition]++;\n                }\n                else {\n                    if (counterPosition == 3) {\n                        if (searchingEvenPair) {\n                            RSSExpandedReader.reverseCounters(counters);\n                        }\n                        if (RSSExpandedReader.isFinderPattern(counters)) {\n                            this.startEnd[0] = patternStart;\n                            this.startEnd[1] = x;\n                            return;\n                        }\n                        if (searchingEvenPair) {\n                            RSSExpandedReader.reverseCounters(counters);\n                        }\n                        patternStart += counters[0] + counters[1];\n                        counters[0] = counters[2];\n                        counters[1] = counters[3];\n                        counters[2] = 0;\n                        counters[3] = 0;\n                        counterPosition--;\n                    }\n                    else {\n                        counterPosition++;\n                    }\n                    counters[counterPosition] = 1;\n                    isWhite = !isWhite;\n                }\n            }\n            throw new NotFoundException();\n        }\n        static reverseCounters(counters) {\n            let length = counters.length;\n            for (let i = 0; i < length / 2; ++i) {\n                let tmp = counters[i];\n                counters[i] = counters[length - i - 1];\n                counters[length - i - 1] = tmp;\n            }\n        }\n        parseFoundFinderPattern(row, rowNumber, oddPattern) {\n            // Actually we found elements 2-5.\n            let firstCounter;\n            let start;\n            let end;\n            if (oddPattern) {\n                // If pattern number is odd, we need to locate element 1 *before* the current block.\n                let firstElementStart = this.startEnd[0] - 1;\n                // Locate element 1\n                while (firstElementStart >= 0 && !row.get(firstElementStart)) {\n                    firstElementStart--;\n                }\n                firstElementStart++;\n                firstCounter = this.startEnd[0] - firstElementStart;\n                start = firstElementStart;\n                end = this.startEnd[1];\n            }\n            else {\n                // If pattern number is even, the pattern is reversed, so we need to locate element 1 *after* the current block.\n                start = this.startEnd[0];\n                end = row.getNextUnset(this.startEnd[1] + 1);\n                firstCounter = end - this.startEnd[1];\n            }\n            // Make 'counters' hold 1-4\n            let counters = this.getDecodeFinderCounters();\n            System.arraycopy(counters, 0, counters, 1, counters.length - 1);\n            counters[0] = firstCounter;\n            let value;\n            try {\n                value = this.parseFinderValue(counters, RSSExpandedReader.FINDER_PATTERNS);\n            }\n            catch (e) {\n                return null;\n            }\n            // return new FinderPattern(value, new int[] { start, end }, start, end, rowNumber});\n            return new FinderPattern(value, [start, end], start, end, rowNumber);\n        }\n        decodeDataCharacter(row, pattern, isOddPattern, leftChar) {\n            let counters = this.getDataCharacterCounters();\n            for (let x = 0; x < counters.length; x++) {\n                counters[x] = 0;\n            }\n            if (leftChar) {\n                RSSExpandedReader.recordPatternInReverse(row, pattern.getStartEnd()[0], counters);\n            }\n            else {\n                RSSExpandedReader.recordPattern(row, pattern.getStartEnd()[1], counters);\n                // reverse it\n                for (let i = 0, j = counters.length - 1; i < j; i++, j--) {\n                    let temp = counters[i];\n                    counters[i] = counters[j];\n                    counters[j] = temp;\n                }\n            } // counters[] has the pixels of the module\n            let numModules = 17; // left and right data characters have all the same length\n            let elementWidth = MathUtils.sum(new Int32Array(counters)) / numModules;\n            // Sanity check: element width for pattern and the character should match\n            let expectedElementWidth = (pattern.getStartEnd()[1] - pattern.getStartEnd()[0]) / 15.0;\n            if (Math.abs(elementWidth - expectedElementWidth) / expectedElementWidth > 0.3) {\n                throw new NotFoundException();\n            }\n            let oddCounts = this.getOddCounts();\n            let evenCounts = this.getEvenCounts();\n            let oddRoundingErrors = this.getOddRoundingErrors();\n            let evenRoundingErrors = this.getEvenRoundingErrors();\n            for (let i = 0; i < counters.length; i++) {\n                let value = 1.0 * counters[i] / elementWidth;\n                let count = value + 0.5; // Round\n                if (count < 1) {\n                    if (value < 0.3) {\n                        throw new NotFoundException();\n                    }\n                    count = 1;\n                }\n                else if (count > 8) {\n                    if (value > 8.7) {\n                        throw new NotFoundException();\n                    }\n                    count = 8;\n                }\n                let offset = i / 2;\n                if ((i & 0x01) == 0) {\n                    oddCounts[offset] = count;\n                    oddRoundingErrors[offset] = value - count;\n                }\n                else {\n                    evenCounts[offset] = count;\n                    evenRoundingErrors[offset] = value - count;\n                }\n            }\n            this.adjustOddEvenCounts(numModules);\n            let weightRowNumber = 4 * pattern.getValue() + (isOddPattern ? 0 : 2) + (leftChar ? 0 : 1) - 1;\n            let oddSum = 0;\n            let oddChecksumPortion = 0;\n            for (let i = oddCounts.length - 1; i >= 0; i--) {\n                if (RSSExpandedReader.isNotA1left(pattern, isOddPattern, leftChar)) {\n                    let weight = RSSExpandedReader.WEIGHTS[weightRowNumber][2 * i];\n                    oddChecksumPortion += oddCounts[i] * weight;\n                }\n                oddSum += oddCounts[i];\n            }\n            let evenChecksumPortion = 0;\n            // int evenSum = 0;\n            for (let i = evenCounts.length - 1; i >= 0; i--) {\n                if (RSSExpandedReader.isNotA1left(pattern, isOddPattern, leftChar)) {\n                    let weight = RSSExpandedReader.WEIGHTS[weightRowNumber][2 * i + 1];\n                    evenChecksumPortion += evenCounts[i] * weight;\n                }\n                // evenSum += evenCounts[i];\n            }\n            let checksumPortion = oddChecksumPortion + evenChecksumPortion;\n            if ((oddSum & 0x01) != 0 || oddSum > 13 || oddSum < 4) {\n                throw new NotFoundException();\n            }\n            let group = (13 - oddSum) / 2;\n            let oddWidest = RSSExpandedReader.SYMBOL_WIDEST[group];\n            let evenWidest = 9 - oddWidest;\n            let vOdd = RSSUtils.getRSSvalue(oddCounts, oddWidest, true);\n            let vEven = RSSUtils.getRSSvalue(evenCounts, evenWidest, false);\n            let tEven = RSSExpandedReader.EVEN_TOTAL_SUBSET[group];\n            let gSum = RSSExpandedReader.GSUM[group];\n            let value = vOdd * tEven + vEven + gSum;\n            return new DataCharacter(value, checksumPortion);\n        }\n        static isNotA1left(pattern, isOddPattern, leftChar) {\n            // A1: pattern.getValue is 0 (A), and it's an oddPattern, and it is a left char\n            return !(pattern.getValue() == 0 && isOddPattern && leftChar);\n        }\n        adjustOddEvenCounts(numModules) {\n            let oddSum = MathUtils.sum(new Int32Array(this.getOddCounts()));\n            let evenSum = MathUtils.sum(new Int32Array(this.getEvenCounts()));\n            let incrementOdd = false;\n            let decrementOdd = false;\n            if (oddSum > 13) {\n                decrementOdd = true;\n            }\n            else if (oddSum < 4) {\n                incrementOdd = true;\n            }\n            let incrementEven = false;\n            let decrementEven = false;\n            if (evenSum > 13) {\n                decrementEven = true;\n            }\n            else if (evenSum < 4) {\n                incrementEven = true;\n            }\n            let mismatch = oddSum + evenSum - numModules;\n            let oddParityBad = (oddSum & 0x01) == 1;\n            let evenParityBad = (evenSum & 0x01) == 0;\n            if (mismatch == 1) {\n                if (oddParityBad) {\n                    if (evenParityBad) {\n                        throw new NotFoundException();\n                    }\n                    decrementOdd = true;\n                }\n                else {\n                    if (!evenParityBad) {\n                        throw new NotFoundException();\n                    }\n                    decrementEven = true;\n                }\n            }\n            else if (mismatch == -1) {\n                if (oddParityBad) {\n                    if (evenParityBad) {\n                        throw new NotFoundException();\n                    }\n                    incrementOdd = true;\n                }\n                else {\n                    if (!evenParityBad) {\n                        throw new NotFoundException();\n                    }\n                    incrementEven = true;\n                }\n            }\n            else if (mismatch == 0) {\n                if (oddParityBad) {\n                    if (!evenParityBad) {\n                        throw new NotFoundException();\n                    }\n                    // Both bad\n                    if (oddSum < evenSum) {\n                        incrementOdd = true;\n                        decrementEven = true;\n                    }\n                    else {\n                        decrementOdd = true;\n                        incrementEven = true;\n                    }\n                }\n                else {\n                    if (evenParityBad) {\n                        throw new NotFoundException();\n                    }\n                    // Nothing to do!\n                }\n            }\n            else {\n                throw new NotFoundException();\n            }\n            if (incrementOdd) {\n                if (decrementOdd) {\n                    throw new NotFoundException();\n                }\n                RSSExpandedReader.increment(this.getOddCounts(), this.getOddRoundingErrors());\n            }\n            if (decrementOdd) {\n                RSSExpandedReader.decrement(this.getOddCounts(), this.getOddRoundingErrors());\n            }\n            if (incrementEven) {\n                if (decrementEven) {\n                    throw new NotFoundException();\n                }\n                RSSExpandedReader.increment(this.getEvenCounts(), this.getOddRoundingErrors());\n            }\n            if (decrementEven) {\n                RSSExpandedReader.decrement(this.getEvenCounts(), this.getEvenRoundingErrors());\n            }\n        }\n    }\n    RSSExpandedReader.SYMBOL_WIDEST = [7, 5, 4, 3, 1];\n    RSSExpandedReader.EVEN_TOTAL_SUBSET = [4, 20, 52, 104, 204];\n    RSSExpandedReader.GSUM = [0, 348, 1388, 2948, 3988];\n    RSSExpandedReader.FINDER_PATTERNS = [\n        Int32Array.from([1, 8, 4, 1]),\n        Int32Array.from([3, 6, 4, 1]),\n        Int32Array.from([3, 4, 6, 1]),\n        Int32Array.from([3, 2, 8, 1]),\n        Int32Array.from([2, 6, 5, 1]),\n        Int32Array.from([2, 2, 9, 1]) // F\n    ];\n    RSSExpandedReader.WEIGHTS = [\n        [1, 3, 9, 27, 81, 32, 96, 77],\n        [20, 60, 180, 118, 143, 7, 21, 63],\n        [189, 145, 13, 39, 117, 140, 209, 205],\n        [193, 157, 49, 147, 19, 57, 171, 91],\n        [62, 186, 136, 197, 169, 85, 44, 132],\n        [185, 133, 188, 142, 4, 12, 36, 108],\n        [113, 128, 173, 97, 80, 29, 87, 50],\n        [150, 28, 84, 41, 123, 158, 52, 156],\n        [46, 138, 203, 187, 139, 206, 196, 166],\n        [76, 17, 51, 153, 37, 111, 122, 155],\n        [43, 129, 176, 106, 107, 110, 119, 146],\n        [16, 48, 144, 10, 30, 90, 59, 177],\n        [109, 116, 137, 200, 178, 112, 125, 164],\n        [70, 210, 208, 202, 184, 130, 179, 115],\n        [134, 191, 151, 31, 93, 68, 204, 190],\n        [148, 22, 66, 198, 172, 94, 71, 2],\n        [6, 18, 54, 162, 64, 192, 154, 40],\n        [120, 149, 25, 75, 14, 42, 126, 167],\n        [79, 26, 78, 23, 69, 207, 199, 175],\n        [103, 98, 83, 38, 114, 131, 182, 124],\n        [161, 61, 183, 127, 170, 88, 53, 159],\n        [55, 165, 73, 8, 24, 72, 5, 15],\n        [45, 135, 194, 160, 58, 174, 100, 89]\n    ];\n    RSSExpandedReader.FINDER_PAT_A = 0;\n    RSSExpandedReader.FINDER_PAT_B = 1;\n    RSSExpandedReader.FINDER_PAT_C = 2;\n    RSSExpandedReader.FINDER_PAT_D = 3;\n    RSSExpandedReader.FINDER_PAT_E = 4;\n    RSSExpandedReader.FINDER_PAT_F = 5;\n    RSSExpandedReader.FINDER_PATTERN_SEQUENCES = [\n        [RSSExpandedReader.FINDER_PAT_A, RSSExpandedReader.FINDER_PAT_A],\n        [RSSExpandedReader.FINDER_PAT_A, RSSExpandedReader.FINDER_PAT_B, RSSExpandedReader.FINDER_PAT_B],\n        [RSSExpandedReader.FINDER_PAT_A, RSSExpandedReader.FINDER_PAT_C, RSSExpandedReader.FINDER_PAT_B, RSSExpandedReader.FINDER_PAT_D],\n        [RSSExpandedReader.FINDER_PAT_A, RSSExpandedReader.FINDER_PAT_E, RSSExpandedReader.FINDER_PAT_B, RSSExpandedReader.FINDER_PAT_D, RSSExpandedReader.FINDER_PAT_C],\n        [RSSExpandedReader.FINDER_PAT_A, RSSExpandedReader.FINDER_PAT_E, RSSExpandedReader.FINDER_PAT_B, RSSExpandedReader.FINDER_PAT_D, RSSExpandedReader.FINDER_PAT_D, RSSExpandedReader.FINDER_PAT_F],\n        [RSSExpandedReader.FINDER_PAT_A, RSSExpandedReader.FINDER_PAT_E, RSSExpandedReader.FINDER_PAT_B, RSSExpandedReader.FINDER_PAT_D, RSSExpandedReader.FINDER_PAT_E, RSSExpandedReader.FINDER_PAT_F, RSSExpandedReader.FINDER_PAT_F],\n        [RSSExpandedReader.FINDER_PAT_A, RSSExpandedReader.FINDER_PAT_A, RSSExpandedReader.FINDER_PAT_B, RSSExpandedReader.FINDER_PAT_B, RSSExpandedReader.FINDER_PAT_C, RSSExpandedReader.FINDER_PAT_C, RSSExpandedReader.FINDER_PAT_D, RSSExpandedReader.FINDER_PAT_D],\n        [RSSExpandedReader.FINDER_PAT_A, RSSExpandedReader.FINDER_PAT_A, RSSExpandedReader.FINDER_PAT_B, RSSExpandedReader.FINDER_PAT_B, RSSExpandedReader.FINDER_PAT_C, RSSExpandedReader.FINDER_PAT_C, RSSExpandedReader.FINDER_PAT_D, RSSExpandedReader.FINDER_PAT_E, RSSExpandedReader.FINDER_PAT_E],\n        [RSSExpandedReader.FINDER_PAT_A, RSSExpandedReader.FINDER_PAT_A, RSSExpandedReader.FINDER_PAT_B, RSSExpandedReader.FINDER_PAT_B, RSSExpandedReader.FINDER_PAT_C, RSSExpandedReader.FINDER_PAT_C, RSSExpandedReader.FINDER_PAT_D, RSSExpandedReader.FINDER_PAT_E, RSSExpandedReader.FINDER_PAT_F, RSSExpandedReader.FINDER_PAT_F],\n        [RSSExpandedReader.FINDER_PAT_A, RSSExpandedReader.FINDER_PAT_A, RSSExpandedReader.FINDER_PAT_B, RSSExpandedReader.FINDER_PAT_B, RSSExpandedReader.FINDER_PAT_C, RSSExpandedReader.FINDER_PAT_D, RSSExpandedReader.FINDER_PAT_D, RSSExpandedReader.FINDER_PAT_E, RSSExpandedReader.FINDER_PAT_E, RSSExpandedReader.FINDER_PAT_F, RSSExpandedReader.FINDER_PAT_F],\n    ];\n    RSSExpandedReader.MAX_PAIRS = 11;\n\n    class Pair extends DataCharacter {\n        constructor(value, checksumPortion, finderPattern) {\n            super(value, checksumPortion);\n            this.count = 0;\n            this.finderPattern = finderPattern;\n        }\n        getFinderPattern() {\n            return this.finderPattern;\n        }\n        getCount() {\n            return this.count;\n        }\n        incrementCount() {\n            this.count++;\n        }\n    }\n\n    class RSS14Reader extends AbstractRSSReader {\n        constructor() {\n            super(...arguments);\n            this.possibleLeftPairs = [];\n            this.possibleRightPairs = [];\n        }\n        decodeRow(rowNumber, row, hints) {\n            const leftPair = this.decodePair(row, false, rowNumber, hints);\n            RSS14Reader.addOrTally(this.possibleLeftPairs, leftPair);\n            row.reverse();\n            let rightPair = this.decodePair(row, true, rowNumber, hints);\n            RSS14Reader.addOrTally(this.possibleRightPairs, rightPair);\n            row.reverse();\n            for (let left of this.possibleLeftPairs) {\n                if (left.getCount() > 1) {\n                    for (let right of this.possibleRightPairs) {\n                        if (right.getCount() > 1 && RSS14Reader.checkChecksum(left, right)) {\n                            return RSS14Reader.constructResult(left, right);\n                        }\n                    }\n                }\n            }\n            throw new NotFoundException();\n        }\n        static addOrTally(possiblePairs, pair) {\n            if (pair == null) {\n                return;\n            }\n            let found = false;\n            for (let other of possiblePairs) {\n                if (other.getValue() === pair.getValue()) {\n                    other.incrementCount();\n                    found = true;\n                    break;\n                }\n            }\n            if (!found) {\n                possiblePairs.push(pair);\n            }\n        }\n        reset() {\n            this.possibleLeftPairs.length = 0;\n            this.possibleRightPairs.length = 0;\n        }\n        static constructResult(leftPair, rightPair) {\n            let symbolValue = 4537077 * leftPair.getValue() + rightPair.getValue();\n            let text = new String(symbolValue).toString();\n            let buffer = new StringBuilder();\n            for (let i = 13 - text.length; i > 0; i--) {\n                buffer.append('0');\n            }\n            buffer.append(text);\n            let checkDigit = 0;\n            for (let i = 0; i < 13; i++) {\n                let digit = buffer.charAt(i).charCodeAt(0) - '0'.charCodeAt(0);\n                checkDigit += ((i & 0x01) === 0) ? 3 * digit : digit;\n            }\n            checkDigit = 10 - (checkDigit % 10);\n            if (checkDigit === 10) {\n                checkDigit = 0;\n            }\n            buffer.append(checkDigit.toString());\n            let leftPoints = leftPair.getFinderPattern().getResultPoints();\n            let rightPoints = rightPair.getFinderPattern().getResultPoints();\n            return new Result(buffer.toString(), null, 0, [leftPoints[0], leftPoints[1], rightPoints[0], rightPoints[1]], BarcodeFormat$1.RSS_14, new Date().getTime());\n        }\n        static checkChecksum(leftPair, rightPair) {\n            let checkValue = (leftPair.getChecksumPortion() + 16 * rightPair.getChecksumPortion()) % 79;\n            let targetCheckValue = 9 * leftPair.getFinderPattern().getValue() + rightPair.getFinderPattern().getValue();\n            if (targetCheckValue > 72) {\n                targetCheckValue--;\n            }\n            if (targetCheckValue > 8) {\n                targetCheckValue--;\n            }\n            return checkValue === targetCheckValue;\n        }\n        decodePair(row, right, rowNumber, hints) {\n            try {\n                let startEnd = this.findFinderPattern(row, right);\n                let pattern = this.parseFoundFinderPattern(row, rowNumber, right, startEnd);\n                let resultPointCallback = hints == null ? null : hints.get(DecodeHintType$1.NEED_RESULT_POINT_CALLBACK);\n                if (resultPointCallback != null) {\n                    let center = (startEnd[0] + startEnd[1]) / 2.0;\n                    if (right) {\n                        // row is actually reversed\n                        center = row.getSize() - 1 - center;\n                    }\n                    resultPointCallback.foundPossibleResultPoint(new ResultPoint(center, rowNumber));\n                }\n                let outside = this.decodeDataCharacter(row, pattern, true);\n                let inside = this.decodeDataCharacter(row, pattern, false);\n                return new Pair(1597 * outside.getValue() + inside.getValue(), outside.getChecksumPortion() + 4 * inside.getChecksumPortion(), pattern);\n            }\n            catch (err) {\n                return null;\n            }\n        }\n        decodeDataCharacter(row, pattern, outsideChar) {\n            let counters = this.getDataCharacterCounters();\n            for (let x = 0; x < counters.length; x++) {\n                counters[x] = 0;\n            }\n            if (outsideChar) {\n                OneDReader.recordPatternInReverse(row, pattern.getStartEnd()[0], counters);\n            }\n            else {\n                OneDReader.recordPattern(row, pattern.getStartEnd()[1] + 1, counters);\n                // reverse it\n                for (let i = 0, j = counters.length - 1; i < j; i++, j--) {\n                    let temp = counters[i];\n                    counters[i] = counters[j];\n                    counters[j] = temp;\n                }\n            }\n            let numModules = outsideChar ? 16 : 15;\n            let elementWidth = MathUtils.sum(new Int32Array(counters)) / numModules;\n            let oddCounts = this.getOddCounts();\n            let evenCounts = this.getEvenCounts();\n            let oddRoundingErrors = this.getOddRoundingErrors();\n            let evenRoundingErrors = this.getEvenRoundingErrors();\n            for (let i = 0; i < counters.length; i++) {\n                let value = counters[i] / elementWidth;\n                let count = Math.floor(value + 0.5);\n                if (count < 1) {\n                    count = 1;\n                }\n                else if (count > 8) {\n                    count = 8;\n                }\n                let offset = Math.floor(i / 2);\n                if ((i & 0x01) === 0) {\n                    oddCounts[offset] = count;\n                    oddRoundingErrors[offset] = value - count;\n                }\n                else {\n                    evenCounts[offset] = count;\n                    evenRoundingErrors[offset] = value - count;\n                }\n            }\n            this.adjustOddEvenCounts(outsideChar, numModules);\n            let oddSum = 0;\n            let oddChecksumPortion = 0;\n            for (let i = oddCounts.length - 1; i >= 0; i--) {\n                oddChecksumPortion *= 9;\n                oddChecksumPortion += oddCounts[i];\n                oddSum += oddCounts[i];\n            }\n            let evenChecksumPortion = 0;\n            let evenSum = 0;\n            for (let i = evenCounts.length - 1; i >= 0; i--) {\n                evenChecksumPortion *= 9;\n                evenChecksumPortion += evenCounts[i];\n                evenSum += evenCounts[i];\n            }\n            let checksumPortion = oddChecksumPortion + 3 * evenChecksumPortion;\n            if (outsideChar) {\n                if ((oddSum & 0x01) !== 0 || oddSum > 12 || oddSum < 4) {\n                    throw new NotFoundException();\n                }\n                let group = (12 - oddSum) / 2;\n                let oddWidest = RSS14Reader.OUTSIDE_ODD_WIDEST[group];\n                let evenWidest = 9 - oddWidest;\n                let vOdd = RSSUtils.getRSSvalue(oddCounts, oddWidest, false);\n                let vEven = RSSUtils.getRSSvalue(evenCounts, evenWidest, true);\n                let tEven = RSS14Reader.OUTSIDE_EVEN_TOTAL_SUBSET[group];\n                let gSum = RSS14Reader.OUTSIDE_GSUM[group];\n                return new DataCharacter(vOdd * tEven + vEven + gSum, checksumPortion);\n            }\n            else {\n                if ((evenSum & 0x01) !== 0 || evenSum > 10 || evenSum < 4) {\n                    throw new NotFoundException();\n                }\n                let group = (10 - evenSum) / 2;\n                let oddWidest = RSS14Reader.INSIDE_ODD_WIDEST[group];\n                let evenWidest = 9 - oddWidest;\n                let vOdd = RSSUtils.getRSSvalue(oddCounts, oddWidest, true);\n                let vEven = RSSUtils.getRSSvalue(evenCounts, evenWidest, false);\n                let tOdd = RSS14Reader.INSIDE_ODD_TOTAL_SUBSET[group];\n                let gSum = RSS14Reader.INSIDE_GSUM[group];\n                return new DataCharacter(vEven * tOdd + vOdd + gSum, checksumPortion);\n            }\n        }\n        findFinderPattern(row, rightFinderPattern) {\n            let counters = this.getDecodeFinderCounters();\n            counters[0] = 0;\n            counters[1] = 0;\n            counters[2] = 0;\n            counters[3] = 0;\n            let width = row.getSize();\n            let isWhite = false;\n            let rowOffset = 0;\n            while (rowOffset < width) {\n                isWhite = !row.get(rowOffset);\n                if (rightFinderPattern === isWhite) {\n                    // Will encounter white first when searching for right finder pattern\n                    break;\n                }\n                rowOffset++;\n            }\n            let counterPosition = 0;\n            let patternStart = rowOffset;\n            for (let x = rowOffset; x < width; x++) {\n                if (row.get(x) !== isWhite) {\n                    counters[counterPosition]++;\n                }\n                else {\n                    if (counterPosition === 3) {\n                        if (AbstractRSSReader.isFinderPattern(counters)) {\n                            return [patternStart, x];\n                        }\n                        patternStart += counters[0] + counters[1];\n                        counters[0] = counters[2];\n                        counters[1] = counters[3];\n                        counters[2] = 0;\n                        counters[3] = 0;\n                        counterPosition--;\n                    }\n                    else {\n                        counterPosition++;\n                    }\n                    counters[counterPosition] = 1;\n                    isWhite = !isWhite;\n                }\n            }\n            throw new NotFoundException();\n        }\n        parseFoundFinderPattern(row, rowNumber, right, startEnd) {\n            // Actually we found elements 2-5\n            let firstIsBlack = row.get(startEnd[0]);\n            let firstElementStart = startEnd[0] - 1;\n            // Locate element 1\n            while (firstElementStart >= 0 && firstIsBlack !== row.get(firstElementStart)) {\n                firstElementStart--;\n            }\n            firstElementStart++;\n            const firstCounter = startEnd[0] - firstElementStart;\n            // Make 'counters' hold 1-4\n            const counters = this.getDecodeFinderCounters();\n            const copy = new Int32Array(counters.length);\n            System.arraycopy(counters, 0, copy, 1, counters.length - 1);\n            copy[0] = firstCounter;\n            const value = this.parseFinderValue(copy, RSS14Reader.FINDER_PATTERNS);\n            let start = firstElementStart;\n            let end = startEnd[1];\n            if (right) {\n                // row is actually reversed\n                start = row.getSize() - 1 - start;\n                end = row.getSize() - 1 - end;\n            }\n            return new FinderPattern(value, [firstElementStart, startEnd[1]], start, end, rowNumber);\n        }\n        adjustOddEvenCounts(outsideChar, numModules) {\n            let oddSum = MathUtils.sum(new Int32Array(this.getOddCounts()));\n            let evenSum = MathUtils.sum(new Int32Array(this.getEvenCounts()));\n            let incrementOdd = false;\n            let decrementOdd = false;\n            let incrementEven = false;\n            let decrementEven = false;\n            if (outsideChar) {\n                if (oddSum > 12) {\n                    decrementOdd = true;\n                }\n                else if (oddSum < 4) {\n                    incrementOdd = true;\n                }\n                if (evenSum > 12) {\n                    decrementEven = true;\n                }\n                else if (evenSum < 4) {\n                    incrementEven = true;\n                }\n            }\n            else {\n                if (oddSum > 11) {\n                    decrementOdd = true;\n                }\n                else if (oddSum < 5) {\n                    incrementOdd = true;\n                }\n                if (evenSum > 10) {\n                    decrementEven = true;\n                }\n                else if (evenSum < 4) {\n                    incrementEven = true;\n                }\n            }\n            let mismatch = oddSum + evenSum - numModules;\n            let oddParityBad = (oddSum & 0x01) === (outsideChar ? 1 : 0);\n            let evenParityBad = (evenSum & 0x01) === 1;\n            if (mismatch === 1) {\n                if (oddParityBad) {\n                    if (evenParityBad) {\n                        throw new NotFoundException();\n                    }\n                    decrementOdd = true;\n                }\n                else {\n                    if (!evenParityBad) {\n                        throw new NotFoundException();\n                    }\n                    decrementEven = true;\n                }\n            }\n            else if (mismatch === -1) {\n                if (oddParityBad) {\n                    if (evenParityBad) {\n                        throw new NotFoundException();\n                    }\n                    incrementOdd = true;\n                }\n                else {\n                    if (!evenParityBad) {\n                        throw new NotFoundException();\n                    }\n                    incrementEven = true;\n                }\n            }\n            else if (mismatch === 0) {\n                if (oddParityBad) {\n                    if (!evenParityBad) {\n                        throw new NotFoundException();\n                    }\n                    // Both bad\n                    if (oddSum < evenSum) {\n                        incrementOdd = true;\n                        decrementEven = true;\n                    }\n                    else {\n                        decrementOdd = true;\n                        incrementEven = true;\n                    }\n                }\n                else {\n                    if (evenParityBad) {\n                        throw new NotFoundException();\n                    }\n                    // Nothing to do!\n                }\n            }\n            else {\n                throw new NotFoundException();\n            }\n            if (incrementOdd) {\n                if (decrementOdd) {\n                    throw new NotFoundException();\n                }\n                AbstractRSSReader.increment(this.getOddCounts(), this.getOddRoundingErrors());\n            }\n            if (decrementOdd) {\n                AbstractRSSReader.decrement(this.getOddCounts(), this.getOddRoundingErrors());\n            }\n            if (incrementEven) {\n                if (decrementEven) {\n                    throw new NotFoundException();\n                }\n                AbstractRSSReader.increment(this.getEvenCounts(), this.getOddRoundingErrors());\n            }\n            if (decrementEven) {\n                AbstractRSSReader.decrement(this.getEvenCounts(), this.getEvenRoundingErrors());\n            }\n        }\n    }\n    RSS14Reader.OUTSIDE_EVEN_TOTAL_SUBSET = [1, 10, 34, 70, 126];\n    RSS14Reader.INSIDE_ODD_TOTAL_SUBSET = [4, 20, 48, 81];\n    RSS14Reader.OUTSIDE_GSUM = [0, 161, 961, 2015, 2715];\n    RSS14Reader.INSIDE_GSUM = [0, 336, 1036, 1516];\n    RSS14Reader.OUTSIDE_ODD_WIDEST = [8, 6, 4, 3, 1];\n    RSS14Reader.INSIDE_ODD_WIDEST = [2, 4, 6, 8];\n    RSS14Reader.FINDER_PATTERNS = [\n        Int32Array.from([3, 8, 2, 1]),\n        Int32Array.from([3, 5, 5, 1]),\n        Int32Array.from([3, 3, 7, 1]),\n        Int32Array.from([3, 1, 9, 1]),\n        Int32Array.from([2, 7, 4, 1]),\n        Int32Array.from([2, 5, 6, 1]),\n        Int32Array.from([2, 3, 8, 1]),\n        Int32Array.from([1, 5, 7, 1]),\n        Int32Array.from([1, 3, 9, 1]),\n    ];\n\n    /**\n     * @author Daniel Switkin <dswitkin@google.com>\n     * @author Sean Owen\n     */\n    class MultiFormatOneDReader extends OneDReader {\n        constructor(hints, verbose) {\n            super();\n            this.readers = [];\n            this.verbose = (verbose === true);\n            const possibleFormats = !hints ? null : hints.get(DecodeHintType$1.POSSIBLE_FORMATS);\n            const useCode39CheckDigit = hints && hints.get(DecodeHintType$1.ASSUME_CODE_39_CHECK_DIGIT) !== undefined;\n            if (possibleFormats) {\n                if (possibleFormats.includes(BarcodeFormat$1.EAN_13) ||\n                    possibleFormats.includes(BarcodeFormat$1.UPC_A) ||\n                    possibleFormats.includes(BarcodeFormat$1.EAN_8) ||\n                    possibleFormats.includes(BarcodeFormat$1.UPC_E)) {\n                    this.readers.push(new MultiFormatUPCEANReader(hints));\n                }\n                if (possibleFormats.includes(BarcodeFormat$1.CODE_39)) {\n                    this.readers.push(new Code39Reader(useCode39CheckDigit));\n                }\n                // if (possibleFormats.includes(BarcodeFormat.CODE_93)) {\n                //    this.readers.push(new Code93Reader());\n                // }\n                if (possibleFormats.includes(BarcodeFormat$1.CODE_128)) {\n                    this.readers.push(new Code128Reader());\n                }\n                if (possibleFormats.includes(BarcodeFormat$1.ITF)) {\n                    this.readers.push(new ITFReader());\n                }\n                // if (possibleFormats.includes(BarcodeFormat.CODABAR)) {\n                //    this.readers.push(new CodaBarReader());\n                // }\n                if (possibleFormats.includes(BarcodeFormat$1.RSS_14)) {\n                    this.readers.push(new RSS14Reader());\n                }\n                if (possibleFormats.includes(BarcodeFormat$1.RSS_EXPANDED)) {\n                    this.readers.push(new RSSExpandedReader(this.verbose));\n                }\n            } else {\n                // Case when no hints were provided -> add all.\n                this.readers.push(new MultiFormatUPCEANReader(hints));\n                this.readers.push(new Code39Reader());\n                // this.readers.push(new CodaBarReader());\n                // this.readers.push(new Code93Reader());\n                this.readers.push(new MultiFormatUPCEANReader(hints));\n                this.readers.push(new Code128Reader());\n                this.readers.push(new ITFReader());\n                this.readers.push(new RSS14Reader());\n                this.readers.push(new RSSExpandedReader(this.verbose));\n            }\n        }\n        // @Override\n        decodeRow(rowNumber, row, hints) {\n            for (let i = 0; i < this.readers.length; i++) {\n                try {\n                    return this.readers[i].decodeRow(rowNumber, row, hints);\n                }\n                catch (re) {\n                    // continue\n                }\n            }\n            throw new NotFoundException();\n        }\n        // @Override\n        reset() {\n            this.readers.forEach(reader => reader.reset());\n        }\n    }\n\n    /**\n     * @deprecated Moving to @zxing/browser\n     *\n     * Barcode reader reader to use from browser.\n     */\n    class BrowserBarcodeReader extends BrowserCodeReader {\n        /**\n         * Creates an instance of BrowserBarcodeReader.\n         * @param {number} [timeBetweenScansMillis=500] the time delay between subsequent decode tries\n         * @param {Map<DecodeHintType, any>} hints\n         */\n        constructor(timeBetweenScansMillis = 500, hints) {\n            super(new MultiFormatOneDReader(hints), timeBetweenScansMillis, hints);\n        }\n    }\n\n    /*\n     * Copyright 2007 ZXing authors\n     *\n     * Licensed under the Apache License, Version 2.0 (the \"License\");\n     * you may not use this file except in compliance with the License.\n     * You may obtain a copy of the License at\n     *\n     *      http://www.apache.org/licenses/LICENSE-2.0\n     *\n     * Unless required by applicable law or agreed to in writing, software\n     * distributed under the License is distributed on an \"AS IS\" BASIS,\n     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n     * See the License for the specific language governing permissions and\n     * limitations under the License.\n     */\n    /**\n     * <p>Encapsulates a set of error-correction blocks in one symbol version. Most versions will\n     * use blocks of differing sizes within one version, so, this encapsulates the parameters for\n     * each set of blocks. It also holds the number of error-correction codewords per block since it\n     * will be the same across all blocks within one version.</p>\n     */\n    class ECBlocks {\n        constructor(ecCodewords, ecBlocks1, ecBlocks2) {\n            this.ecCodewords = ecCodewords;\n            this.ecBlocks = [ecBlocks1];\n            ecBlocks2 && this.ecBlocks.push(ecBlocks2);\n        }\n        getECCodewords() {\n            return this.ecCodewords;\n        }\n        getECBlocks() {\n            return this.ecBlocks;\n        }\n    }\n    /**\n     * <p>Encapsulates the parameters for one error-correction block in one symbol version.\n     * This includes the number of data codewords, and the number of times a block with these\n     * parameters is used consecutively in the Data Matrix code version's format.</p>\n     */\n    class ECB {\n        constructor(count, dataCodewords) {\n            this.count = count;\n            this.dataCodewords = dataCodewords;\n        }\n        getCount() {\n            return this.count;\n        }\n        getDataCodewords() {\n            return this.dataCodewords;\n        }\n    }\n    /**\n     * The Version object encapsulates attributes about a particular\n     * size Data Matrix Code.\n     *\n     * @author bbrown@google.com (Brian Brown)\n     */\n    class Version {\n        constructor(versionNumber, symbolSizeRows, symbolSizeColumns, dataRegionSizeRows, dataRegionSizeColumns, ecBlocks) {\n            this.versionNumber = versionNumber;\n            this.symbolSizeRows = symbolSizeRows;\n            this.symbolSizeColumns = symbolSizeColumns;\n            this.dataRegionSizeRows = dataRegionSizeRows;\n            this.dataRegionSizeColumns = dataRegionSizeColumns;\n            this.ecBlocks = ecBlocks;\n            // Calculate the total number of codewords\n            let total = 0;\n            const ecCodewords = ecBlocks.getECCodewords();\n            const ecbArray = ecBlocks.getECBlocks();\n            for (let ecBlock of ecbArray) {\n                total += ecBlock.getCount() * (ecBlock.getDataCodewords() + ecCodewords);\n            }\n            this.totalCodewords = total;\n        }\n        getVersionNumber() {\n            return this.versionNumber;\n        }\n        getSymbolSizeRows() {\n            return this.symbolSizeRows;\n        }\n        getSymbolSizeColumns() {\n            return this.symbolSizeColumns;\n        }\n        getDataRegionSizeRows() {\n            return this.dataRegionSizeRows;\n        }\n        getDataRegionSizeColumns() {\n            return this.dataRegionSizeColumns;\n        }\n        getTotalCodewords() {\n            return this.totalCodewords;\n        }\n        getECBlocks() {\n            return this.ecBlocks;\n        }\n        /**\n         * <p>Deduces version information from Data Matrix dimensions.</p>\n         *\n         * @param numRows Number of rows in modules\n         * @param numColumns Number of columns in modules\n         * @return Version for a Data Matrix Code of those dimensions\n         * @throws FormatException if dimensions do correspond to a valid Data Matrix size\n         */\n        static getVersionForDimensions(numRows, numColumns) {\n            if ((numRows & 0x01) !== 0 || (numColumns & 0x01) !== 0) {\n                throw new FormatException();\n            }\n            for (let version of Version.VERSIONS) {\n                if (version.symbolSizeRows === numRows && version.symbolSizeColumns === numColumns) {\n                    return version;\n                }\n            }\n            throw new FormatException();\n        }\n        //  @Override\n        toString() {\n            return '' + this.versionNumber;\n        }\n        /**\n         * See ISO 16022:2006 5.5.1 Table 7\n         */\n        static buildVersions() {\n            return [\n                new Version(1, 10, 10, 8, 8, new ECBlocks(5, new ECB(1, 3))),\n                new Version(2, 12, 12, 10, 10, new ECBlocks(7, new ECB(1, 5))),\n                new Version(3, 14, 14, 12, 12, new ECBlocks(10, new ECB(1, 8))),\n                new Version(4, 16, 16, 14, 14, new ECBlocks(12, new ECB(1, 12))),\n                new Version(5, 18, 18, 16, 16, new ECBlocks(14, new ECB(1, 18))),\n                new Version(6, 20, 20, 18, 18, new ECBlocks(18, new ECB(1, 22))),\n                new Version(7, 22, 22, 20, 20, new ECBlocks(20, new ECB(1, 30))),\n                new Version(8, 24, 24, 22, 22, new ECBlocks(24, new ECB(1, 36))),\n                new Version(9, 26, 26, 24, 24, new ECBlocks(28, new ECB(1, 44))),\n                new Version(10, 32, 32, 14, 14, new ECBlocks(36, new ECB(1, 62))),\n                new Version(11, 36, 36, 16, 16, new ECBlocks(42, new ECB(1, 86))),\n                new Version(12, 40, 40, 18, 18, new ECBlocks(48, new ECB(1, 114))),\n                new Version(13, 44, 44, 20, 20, new ECBlocks(56, new ECB(1, 144))),\n                new Version(14, 48, 48, 22, 22, new ECBlocks(68, new ECB(1, 174))),\n                new Version(15, 52, 52, 24, 24, new ECBlocks(42, new ECB(2, 102))),\n                new Version(16, 64, 64, 14, 14, new ECBlocks(56, new ECB(2, 140))),\n                new Version(17, 72, 72, 16, 16, new ECBlocks(36, new ECB(4, 92))),\n                new Version(18, 80, 80, 18, 18, new ECBlocks(48, new ECB(4, 114))),\n                new Version(19, 88, 88, 20, 20, new ECBlocks(56, new ECB(4, 144))),\n                new Version(20, 96, 96, 22, 22, new ECBlocks(68, new ECB(4, 174))),\n                new Version(21, 104, 104, 24, 24, new ECBlocks(56, new ECB(6, 136))),\n                new Version(22, 120, 120, 18, 18, new ECBlocks(68, new ECB(6, 175))),\n                new Version(23, 132, 132, 20, 20, new ECBlocks(62, new ECB(8, 163))),\n                new Version(24, 144, 144, 22, 22, new ECBlocks(62, new ECB(8, 156), new ECB(2, 155))),\n                new Version(25, 8, 18, 6, 16, new ECBlocks(7, new ECB(1, 5))),\n                new Version(26, 8, 32, 6, 14, new ECBlocks(11, new ECB(1, 10))),\n                new Version(27, 12, 26, 10, 24, new ECBlocks(14, new ECB(1, 16))),\n                new Version(28, 12, 36, 10, 16, new ECBlocks(18, new ECB(1, 22))),\n                new Version(29, 16, 36, 14, 16, new ECBlocks(24, new ECB(1, 32))),\n                new Version(30, 16, 48, 14, 22, new ECBlocks(28, new ECB(1, 49)))\n            ];\n        }\n    }\n    Version.VERSIONS = Version.buildVersions();\n\n    /*\n     * Copyright 2007 ZXing authors\n     *\n     * Licensed under the Apache License, Version 2.0 (the \"License\");\n     * you may not use this file except in compliance with the License.\n     * You may obtain a copy of the License at\n     *\n     *      http://www.apache.org/licenses/LICENSE-2.0\n     *\n     * Unless required by applicable law or agreed to in writing, software\n     * distributed under the License is distributed on an \"AS IS\" BASIS,\n     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n     * See the License for the specific language governing permissions and\n     * limitations under the License.\n     */\n    /**\n     * @author bbrown@google.com (Brian Brown)\n     */\n    class BitMatrixParser {\n        /**\n         * @param bitMatrix {@link BitMatrix} to parse\n         * @throws FormatException if dimension is < 8 or > 144 or not 0 mod 2\n         */\n        constructor(bitMatrix) {\n            const dimension = bitMatrix.getHeight();\n            if (dimension < 8 || dimension > 144 || (dimension & 0x01) !== 0) {\n                throw new FormatException();\n            }\n            this.version = BitMatrixParser.readVersion(bitMatrix);\n            this.mappingBitMatrix = this.extractDataRegion(bitMatrix);\n            this.readMappingMatrix = new BitMatrix(this.mappingBitMatrix.getWidth(), this.mappingBitMatrix.getHeight());\n        }\n        getVersion() {\n            return this.version;\n        }\n        /**\n         * <p>Creates the version object based on the dimension of the original bit matrix from\n         * the datamatrix code.</p>\n         *\n         * <p>See ISO 16022:2006 Table 7 - ECC 200 symbol attributes</p>\n         *\n         * @param bitMatrix Original {@link BitMatrix} including alignment patterns\n         * @return {@link Version} encapsulating the Data Matrix Code's \"version\"\n         * @throws FormatException if the dimensions of the mapping matrix are not valid\n         * Data Matrix dimensions.\n         */\n        static readVersion(bitMatrix) {\n            const numRows = bitMatrix.getHeight();\n            const numColumns = bitMatrix.getWidth();\n            return Version.getVersionForDimensions(numRows, numColumns);\n        }\n        /**\n         * <p>Reads the bits in the {@link BitMatrix} representing the mapping matrix (No alignment patterns)\n         * in the correct order in order to reconstitute the codewords bytes contained within the\n         * Data Matrix Code.</p>\n         *\n         * @return bytes encoded within the Data Matrix Code\n         * @throws FormatException if the exact number of bytes expected is not read\n         */\n        readCodewords() {\n            const result = new Int8Array(this.version.getTotalCodewords());\n            let resultOffset = 0;\n            let row = 4;\n            let column = 0;\n            const numRows = this.mappingBitMatrix.getHeight();\n            const numColumns = this.mappingBitMatrix.getWidth();\n            let corner1Read = false;\n            let corner2Read = false;\n            let corner3Read = false;\n            let corner4Read = false;\n            // Read all of the codewords\n            do {\n                // Check the four corner cases\n                if ((row === numRows) && (column === 0) && !corner1Read) {\n                    result[resultOffset++] = this.readCorner1(numRows, numColumns) & 0xff;\n                    row -= 2;\n                    column += 2;\n                    corner1Read = true;\n                }\n                else if ((row === numRows - 2) && (column === 0) && ((numColumns & 0x03) !== 0) && !corner2Read) {\n                    result[resultOffset++] = this.readCorner2(numRows, numColumns) & 0xff;\n                    row -= 2;\n                    column += 2;\n                    corner2Read = true;\n                }\n                else if ((row === numRows + 4) && (column === 2) && ((numColumns & 0x07) === 0) && !corner3Read) {\n                    result[resultOffset++] = this.readCorner3(numRows, numColumns) & 0xff;\n                    row -= 2;\n                    column += 2;\n                    corner3Read = true;\n                }\n                else if ((row === numRows - 2) && (column === 0) && ((numColumns & 0x07) === 4) && !corner4Read) {\n                    result[resultOffset++] = this.readCorner4(numRows, numColumns) & 0xff;\n                    row -= 2;\n                    column += 2;\n                    corner4Read = true;\n                }\n                else {\n                    // Sweep upward diagonally to the right\n                    do {\n                        if ((row < numRows) && (column >= 0) && !this.readMappingMatrix.get(column, row)) {\n                            result[resultOffset++] = this.readUtah(row, column, numRows, numColumns) & 0xff;\n                        }\n                        row -= 2;\n                        column += 2;\n                    } while ((row >= 0) && (column < numColumns));\n                    row += 1;\n                    column += 3;\n                    // Sweep downward diagonally to the left\n                    do {\n                        if ((row >= 0) && (column < numColumns) && !this.readMappingMatrix.get(column, row)) {\n                            result[resultOffset++] = this.readUtah(row, column, numRows, numColumns) & 0xff;\n                        }\n                        row += 2;\n                        column -= 2;\n                    } while ((row < numRows) && (column >= 0));\n                    row += 3;\n                    column += 1;\n                }\n            } while ((row < numRows) || (column < numColumns));\n            if (resultOffset !== this.version.getTotalCodewords()) {\n                throw new FormatException();\n            }\n            return result;\n        }\n        /**\n         * <p>Reads a bit of the mapping matrix accounting for boundary wrapping.</p>\n         *\n         * @param row Row to read in the mapping matrix\n         * @param column Column to read in the mapping matrix\n         * @param numRows Number of rows in the mapping matrix\n         * @param numColumns Number of columns in the mapping matrix\n         * @return value of the given bit in the mapping matrix\n         */\n        readModule(row, column, numRows, numColumns) {\n            // Adjust the row and column indices based on boundary wrapping\n            if (row < 0) {\n                row += numRows;\n                column += 4 - ((numRows + 4) & 0x07);\n            }\n            if (column < 0) {\n                column += numColumns;\n                row += 4 - ((numColumns + 4) & 0x07);\n            }\n            this.readMappingMatrix.set(column, row);\n            return this.mappingBitMatrix.get(column, row);\n        }\n        /**\n         * <p>Reads the 8 bits of the standard Utah-shaped pattern.</p>\n         *\n         * <p>See ISO 16022:2006, 5.8.1 Figure 6</p>\n         *\n         * @param row Current row in the mapping matrix, anchored at the 8th bit (LSB) of the pattern\n         * @param column Current column in the mapping matrix, anchored at the 8th bit (LSB) of the pattern\n         * @param numRows Number of rows in the mapping matrix\n         * @param numColumns Number of columns in the mapping matrix\n         * @return byte from the utah shape\n         */\n        readUtah(row, column, numRows, numColumns) {\n            let currentByte = 0;\n            if (this.readModule(row - 2, column - 2, numRows, numColumns)) {\n                currentByte |= 1;\n            }\n            currentByte <<= 1;\n            if (this.readModule(row - 2, column - 1, numRows, numColumns)) {\n                currentByte |= 1;\n            }\n            currentByte <<= 1;\n            if (this.readModule(row - 1, column - 2, numRows, numColumns)) {\n                currentByte |= 1;\n            }\n            currentByte <<= 1;\n            if (this.readModule(row - 1, column - 1, numRows, numColumns)) {\n                currentByte |= 1;\n            }\n            currentByte <<= 1;\n            if (this.readModule(row - 1, column, numRows, numColumns)) {\n                currentByte |= 1;\n            }\n            currentByte <<= 1;\n            if (this.readModule(row, column - 2, numRows, numColumns)) {\n                currentByte |= 1;\n            }\n            currentByte <<= 1;\n            if (this.readModule(row, column - 1, numRows, numColumns)) {\n                currentByte |= 1;\n            }\n            currentByte <<= 1;\n            if (this.readModule(row, column, numRows, numColumns)) {\n                currentByte |= 1;\n            }\n            return currentByte;\n        }\n        /**\n         * <p>Reads the 8 bits of the special corner condition 1.</p>\n         *\n         * <p>See ISO 16022:2006, Figure F.3</p>\n         *\n         * @param numRows Number of rows in the mapping matrix\n         * @param numColumns Number of columns in the mapping matrix\n         * @return byte from the Corner condition 1\n         */\n        readCorner1(numRows, numColumns) {\n            let currentByte = 0;\n            if (this.readModule(numRows - 1, 0, numRows, numColumns)) {\n                currentByte |= 1;\n            }\n            currentByte <<= 1;\n            if (this.readModule(numRows - 1, 1, numRows, numColumns)) {\n                currentByte |= 1;\n            }\n            currentByte <<= 1;\n            if (this.readModule(numRows - 1, 2, numRows, numColumns)) {\n                currentByte |= 1;\n            }\n            currentByte <<= 1;\n            if (this.readModule(0, numColumns - 2, numRows, numColumns)) {\n                currentByte |= 1;\n            }\n            currentByte <<= 1;\n            if (this.readModule(0, numColumns - 1, numRows, numColumns)) {\n                currentByte |= 1;\n            }\n            currentByte <<= 1;\n            if (this.readModule(1, numColumns - 1, numRows, numColumns)) {\n                currentByte |= 1;\n            }\n            currentByte <<= 1;\n            if (this.readModule(2, numColumns - 1, numRows, numColumns)) {\n                currentByte |= 1;\n            }\n            currentByte <<= 1;\n            if (this.readModule(3, numColumns - 1, numRows, numColumns)) {\n                currentByte |= 1;\n            }\n            return currentByte;\n        }\n        /**\n         * <p>Reads the 8 bits of the special corner condition 2.</p>\n         *\n         * <p>See ISO 16022:2006, Figure F.4</p>\n         *\n         * @param numRows Number of rows in the mapping matrix\n         * @param numColumns Number of columns in the mapping matrix\n         * @return byte from the Corner condition 2\n         */\n        readCorner2(numRows, numColumns) {\n            let currentByte = 0;\n            if (this.readModule(numRows - 3, 0, numRows, numColumns)) {\n                currentByte |= 1;\n            }\n            currentByte <<= 1;\n            if (this.readModule(numRows - 2, 0, numRows, numColumns)) {\n                currentByte |= 1;\n            }\n            currentByte <<= 1;\n            if (this.readModule(numRows - 1, 0, numRows, numColumns)) {\n                currentByte |= 1;\n            }\n            currentByte <<= 1;\n            if (this.readModule(0, numColumns - 4, numRows, numColumns)) {\n                currentByte |= 1;\n            }\n            currentByte <<= 1;\n            if (this.readModule(0, numColumns - 3, numRows, numColumns)) {\n                currentByte |= 1;\n            }\n            currentByte <<= 1;\n            if (this.readModule(0, numColumns - 2, numRows, numColumns)) {\n                currentByte |= 1;\n            }\n            currentByte <<= 1;\n            if (this.readModule(0, numColumns - 1, numRows, numColumns)) {\n                currentByte |= 1;\n            }\n            currentByte <<= 1;\n            if (this.readModule(1, numColumns - 1, numRows, numColumns)) {\n                currentByte |= 1;\n            }\n            return currentByte;\n        }\n        /**\n         * <p>Reads the 8 bits of the special corner condition 3.</p>\n         *\n         * <p>See ISO 16022:2006, Figure F.5</p>\n         *\n         * @param numRows Number of rows in the mapping matrix\n         * @param numColumns Number of columns in the mapping matrix\n         * @return byte from the Corner condition 3\n         */\n        readCorner3(numRows, numColumns) {\n            let currentByte = 0;\n            if (this.readModule(numRows - 1, 0, numRows, numColumns)) {\n                currentByte |= 1;\n            }\n            currentByte <<= 1;\n            if (this.readModule(numRows - 1, numColumns - 1, numRows, numColumns)) {\n                currentByte |= 1;\n            }\n            currentByte <<= 1;\n            if (this.readModule(0, numColumns - 3, numRows, numColumns)) {\n                currentByte |= 1;\n            }\n            currentByte <<= 1;\n            if (this.readModule(0, numColumns - 2, numRows, numColumns)) {\n                currentByte |= 1;\n            }\n            currentByte <<= 1;\n            if (this.readModule(0, numColumns - 1, numRows, numColumns)) {\n                currentByte |= 1;\n            }\n            currentByte <<= 1;\n            if (this.readModule(1, numColumns - 3, numRows, numColumns)) {\n                currentByte |= 1;\n            }\n            currentByte <<= 1;\n            if (this.readModule(1, numColumns - 2, numRows, numColumns)) {\n                currentByte |= 1;\n            }\n            currentByte <<= 1;\n            if (this.readModule(1, numColumns - 1, numRows, numColumns)) {\n                currentByte |= 1;\n            }\n            return currentByte;\n        }\n        /**\n         * <p>Reads the 8 bits of the special corner condition 4.</p>\n         *\n         * <p>See ISO 16022:2006, Figure F.6</p>\n         *\n         * @param numRows Number of rows in the mapping matrix\n         * @param numColumns Number of columns in the mapping matrix\n         * @return byte from the Corner condition 4\n         */\n        readCorner4(numRows, numColumns) {\n            let currentByte = 0;\n            if (this.readModule(numRows - 3, 0, numRows, numColumns)) {\n                currentByte |= 1;\n            }\n            currentByte <<= 1;\n            if (this.readModule(numRows - 2, 0, numRows, numColumns)) {\n                currentByte |= 1;\n            }\n            currentByte <<= 1;\n            if (this.readModule(numRows - 1, 0, numRows, numColumns)) {\n                currentByte |= 1;\n            }\n            currentByte <<= 1;\n            if (this.readModule(0, numColumns - 2, numRows, numColumns)) {\n                currentByte |= 1;\n            }\n            currentByte <<= 1;\n            if (this.readModule(0, numColumns - 1, numRows, numColumns)) {\n                currentByte |= 1;\n            }\n            currentByte <<= 1;\n            if (this.readModule(1, numColumns - 1, numRows, numColumns)) {\n                currentByte |= 1;\n            }\n            currentByte <<= 1;\n            if (this.readModule(2, numColumns - 1, numRows, numColumns)) {\n                currentByte |= 1;\n            }\n            currentByte <<= 1;\n            if (this.readModule(3, numColumns - 1, numRows, numColumns)) {\n                currentByte |= 1;\n            }\n            return currentByte;\n        }\n        /**\n         * <p>Extracts the data region from a {@link BitMatrix} that contains\n         * alignment patterns.</p>\n         *\n         * @param bitMatrix Original {@link BitMatrix} with alignment patterns\n         * @return BitMatrix that has the alignment patterns removed\n         */\n        extractDataRegion(bitMatrix) {\n            const symbolSizeRows = this.version.getSymbolSizeRows();\n            const symbolSizeColumns = this.version.getSymbolSizeColumns();\n            if (bitMatrix.getHeight() !== symbolSizeRows) {\n                throw new IllegalArgumentException('Dimension of bitMatrix must match the version size');\n            }\n            const dataRegionSizeRows = this.version.getDataRegionSizeRows();\n            const dataRegionSizeColumns = this.version.getDataRegionSizeColumns();\n            const numDataRegionsRow = symbolSizeRows / dataRegionSizeRows | 0;\n            const numDataRegionsColumn = symbolSizeColumns / dataRegionSizeColumns | 0;\n            const sizeDataRegionRow = numDataRegionsRow * dataRegionSizeRows;\n            const sizeDataRegionColumn = numDataRegionsColumn * dataRegionSizeColumns;\n            const bitMatrixWithoutAlignment = new BitMatrix(sizeDataRegionColumn, sizeDataRegionRow);\n            for (let dataRegionRow = 0; dataRegionRow < numDataRegionsRow; ++dataRegionRow) {\n                const dataRegionRowOffset = dataRegionRow * dataRegionSizeRows;\n                for (let dataRegionColumn = 0; dataRegionColumn < numDataRegionsColumn; ++dataRegionColumn) {\n                    const dataRegionColumnOffset = dataRegionColumn * dataRegionSizeColumns;\n                    for (let i = 0; i < dataRegionSizeRows; ++i) {\n                        const readRowOffset = dataRegionRow * (dataRegionSizeRows + 2) + 1 + i;\n                        const writeRowOffset = dataRegionRowOffset + i;\n                        for (let j = 0; j < dataRegionSizeColumns; ++j) {\n                            const readColumnOffset = dataRegionColumn * (dataRegionSizeColumns + 2) + 1 + j;\n                            if (bitMatrix.get(readColumnOffset, readRowOffset)) {\n                                const writeColumnOffset = dataRegionColumnOffset + j;\n                                bitMatrixWithoutAlignment.set(writeColumnOffset, writeRowOffset);\n                            }\n                        }\n                    }\n                }\n            }\n            return bitMatrixWithoutAlignment;\n        }\n    }\n\n    /**\n     * <p>Encapsulates a block of data within a Data Matrix Code. Data Matrix Codes may split their data into\n     * multiple blocks, each of which is a unit of data and error-correction codewords. Each\n     * is represented by an instance of this class.</p>\n     *\n     * @author bbrown@google.com (Brian Brown)\n     */\n    class DataBlock {\n        constructor(numDataCodewords, codewords) {\n            this.numDataCodewords = numDataCodewords;\n            this.codewords = codewords;\n        }\n        /**\n         * <p>When Data Matrix Codes use multiple data blocks, they actually interleave the bytes of each of them.\n         * That is, the first byte of data block 1 to n is written, then the second bytes, and so on. This\n         * method will separate the data into original blocks.</p>\n         *\n         * @param rawCodewords bytes as read directly from the Data Matrix Code\n         * @param version version of the Data Matrix Code\n         * @return DataBlocks containing original bytes, \"de-interleaved\" from representation in the\n         *         Data Matrix Code\n         */\n        static getDataBlocks(rawCodewords, version) {\n            // Figure out the number and size of data blocks used by this version\n            const ecBlocks = version.getECBlocks();\n            // First count the total number of data blocks\n            let totalBlocks = 0;\n            const ecBlockArray = ecBlocks.getECBlocks();\n            for (let ecBlock of ecBlockArray) {\n                totalBlocks += ecBlock.getCount();\n            }\n            // Now establish DataBlocks of the appropriate size and number of data codewords\n            const result = new Array(totalBlocks);\n            let numResultBlocks = 0;\n            for (let ecBlock of ecBlockArray) {\n                for (let i = 0; i < ecBlock.getCount(); i++) {\n                    const numDataCodewords = ecBlock.getDataCodewords();\n                    const numBlockCodewords = ecBlocks.getECCodewords() + numDataCodewords;\n                    result[numResultBlocks++] = new DataBlock(numDataCodewords, new Uint8Array(numBlockCodewords));\n                }\n            }\n            // All blocks have the same amount of data, except that the last n\n            // (where n may be 0) have 1 less byte. Figure out where these start.\n            // TODO(bbrown): There is only one case where there is a difference for Data Matrix for size 144\n            const longerBlocksTotalCodewords = result[0].codewords.length;\n            // int shorterBlocksTotalCodewords = longerBlocksTotalCodewords - 1;\n            const longerBlocksNumDataCodewords = longerBlocksTotalCodewords - ecBlocks.getECCodewords();\n            const shorterBlocksNumDataCodewords = longerBlocksNumDataCodewords - 1;\n            // The last elements of result may be 1 element shorter for 144 matrix\n            // first fill out as many elements as all of them have minus 1\n            let rawCodewordsOffset = 0;\n            for (let i = 0; i < shorterBlocksNumDataCodewords; i++) {\n                for (let j = 0; j < numResultBlocks; j++) {\n                    result[j].codewords[i] = rawCodewords[rawCodewordsOffset++];\n                }\n            }\n            // Fill out the last data block in the longer ones\n            const specialVersion = version.getVersionNumber() === 24;\n            const numLongerBlocks = specialVersion ? 8 : numResultBlocks;\n            for (let j = 0; j < numLongerBlocks; j++) {\n                result[j].codewords[longerBlocksNumDataCodewords - 1] = rawCodewords[rawCodewordsOffset++];\n            }\n            // Now add in error correction blocks\n            const max = result[0].codewords.length;\n            for (let i = longerBlocksNumDataCodewords; i < max; i++) {\n                for (let j = 0; j < numResultBlocks; j++) {\n                    const jOffset = specialVersion ? (j + 8) % numResultBlocks : j;\n                    const iOffset = specialVersion && jOffset > 7 ? i - 1 : i;\n                    result[jOffset].codewords[iOffset] = rawCodewords[rawCodewordsOffset++];\n                }\n            }\n            if (rawCodewordsOffset !== rawCodewords.length) {\n                throw new IllegalArgumentException();\n            }\n            return result;\n        }\n        getNumDataCodewords() {\n            return this.numDataCodewords;\n        }\n        getCodewords() {\n            return this.codewords;\n        }\n    }\n\n    /*\n     * Copyright 2007 ZXing authors\n     *\n     * Licensed under the Apache License, Version 2.0 (the \"License\");\n     * you may not use this file except in compliance with the License.\n     * You may obtain a copy of the License at\n     *\n     *      http://www.apache.org/licenses/LICENSE-2.0\n     *\n     * Unless required by applicable law or agreed to in writing, software\n     * distributed under the License is distributed on an \"AS IS\" BASIS,\n     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n     * See the License for the specific language governing permissions and\n     * limitations under the License.\n     */\n    /**\n     * <p>This provides an easy abstraction to read bits at a time from a sequence of bytes, where the\n     * number of bits read is not often a multiple of 8.</p>\n     *\n     * <p>This class is thread-safe but not reentrant -- unless the caller modifies the bytes array\n     * it passed in, in which case all bets are off.</p>\n     *\n     * @author Sean Owen\n     */\n    class BitSource {\n        /**\n         * @param bytes bytes from which this will read bits. Bits will be read from the first byte first.\n         * Bits are read within a byte from most-significant to least-significant bit.\n         */\n        constructor(bytes) {\n            this.bytes = bytes;\n            this.byteOffset = 0;\n            this.bitOffset = 0;\n        }\n        /**\n         * @return index of next bit in current byte which would be read by the next call to {@link #readBits(int)}.\n         */\n        getBitOffset() {\n            return this.bitOffset;\n        }\n        /**\n         * @return index of next byte in input byte array which would be read by the next call to {@link #readBits(int)}.\n         */\n        getByteOffset() {\n            return this.byteOffset;\n        }\n        /**\n         * @param numBits number of bits to read\n         * @return int representing the bits read. The bits will appear as the least-significant\n         *         bits of the int\n         * @throws IllegalArgumentException if numBits isn't in [1,32] or more than is available\n         */\n        readBits(numBits /*int*/) {\n            if (numBits < 1 || numBits > 32 || numBits > this.available()) {\n                throw new IllegalArgumentException('' + numBits);\n            }\n            let result = 0;\n            let bitOffset = this.bitOffset;\n            let byteOffset = this.byteOffset;\n            const bytes = this.bytes;\n            // First, read remainder from current byte\n            if (bitOffset > 0) {\n                const bitsLeft = 8 - bitOffset;\n                const toRead = numBits < bitsLeft ? numBits : bitsLeft;\n                const bitsToNotRead = bitsLeft - toRead;\n                const mask = (0xFF >> (8 - toRead)) << bitsToNotRead;\n                result = (bytes[byteOffset] & mask) >> bitsToNotRead;\n                numBits -= toRead;\n                bitOffset += toRead;\n                if (bitOffset === 8) {\n                    bitOffset = 0;\n                    byteOffset++;\n                }\n            }\n            // Next read whole bytes\n            if (numBits > 0) {\n                while (numBits >= 8) {\n                    result = (result << 8) | (bytes[byteOffset] & 0xFF);\n                    byteOffset++;\n                    numBits -= 8;\n                }\n                // Finally read a partial byte\n                if (numBits > 0) {\n                    const bitsToNotRead = 8 - numBits;\n                    const mask = (0xFF >> bitsToNotRead) << bitsToNotRead;\n                    result = (result << numBits) | ((bytes[byteOffset] & mask) >> bitsToNotRead);\n                    bitOffset += numBits;\n                }\n            }\n            this.bitOffset = bitOffset;\n            this.byteOffset = byteOffset;\n            return result;\n        }\n        /**\n         * @return number of bits that can be read successfully\n         */\n        available() {\n            return 8 * (this.bytes.length - this.byteOffset) - this.bitOffset;\n        }\n    }\n\n    var Mode;\n    (function (Mode) {\n        Mode[Mode[\"PAD_ENCODE\"] = 0] = \"PAD_ENCODE\";\n        Mode[Mode[\"ASCII_ENCODE\"] = 1] = \"ASCII_ENCODE\";\n        Mode[Mode[\"C40_ENCODE\"] = 2] = \"C40_ENCODE\";\n        Mode[Mode[\"TEXT_ENCODE\"] = 3] = \"TEXT_ENCODE\";\n        Mode[Mode[\"ANSIX12_ENCODE\"] = 4] = \"ANSIX12_ENCODE\";\n        Mode[Mode[\"EDIFACT_ENCODE\"] = 5] = \"EDIFACT_ENCODE\";\n        Mode[Mode[\"BASE256_ENCODE\"] = 6] = \"BASE256_ENCODE\";\n    })(Mode || (Mode = {}));\n    /**\n     * <p>Data Matrix Codes can encode text as bits in one of several modes, and can use multiple modes\n     * in one Data Matrix Code. This class decodes the bits back into text.</p>\n     *\n     * <p>See ISO 16022:2006, 5.2.1 - 5.2.9.2</p>\n     *\n     * @author bbrown@google.com (Brian Brown)\n     * @author Sean Owen\n     */\n    class DecodedBitStreamParser {\n        static decode(bytes) {\n            const bits = new BitSource(bytes);\n            const result = new StringBuilder();\n            const resultTrailer = new StringBuilder();\n            const byteSegments = new Array();\n            let mode = Mode.ASCII_ENCODE;\n            do {\n                if (mode === Mode.ASCII_ENCODE) {\n                    mode = this.decodeAsciiSegment(bits, result, resultTrailer);\n                }\n                else {\n                    switch (mode) {\n                        case Mode.C40_ENCODE:\n                            this.decodeC40Segment(bits, result);\n                            break;\n                        case Mode.TEXT_ENCODE:\n                            this.decodeTextSegment(bits, result);\n                            break;\n                        case Mode.ANSIX12_ENCODE:\n                            this.decodeAnsiX12Segment(bits, result);\n                            break;\n                        case Mode.EDIFACT_ENCODE:\n                            this.decodeEdifactSegment(bits, result);\n                            break;\n                        case Mode.BASE256_ENCODE:\n                            this.decodeBase256Segment(bits, result, byteSegments);\n                            break;\n                        default:\n                            throw new FormatException();\n                    }\n                    mode = Mode.ASCII_ENCODE;\n                }\n            } while (mode !== Mode.PAD_ENCODE && bits.available() > 0);\n            if (resultTrailer.length() > 0) {\n                result.append(resultTrailer.toString());\n            }\n            return new DecoderResult(bytes, result.toString(), byteSegments.length === 0 ? null : byteSegments, null);\n        }\n        /**\n         * See ISO 16022:2006, 5.2.3 and Annex C, Table C.2\n         */\n        static decodeAsciiSegment(bits, result, resultTrailer) {\n            let upperShift = false;\n            do {\n                let oneByte = bits.readBits(8);\n                if (oneByte === 0) {\n                    throw new FormatException();\n                }\n                else if (oneByte <= 128) { // ASCII data (ASCII value + 1)\n                    if (upperShift) {\n                        oneByte += 128;\n                        // upperShift = false;\n                    }\n                    result.append(String.fromCharCode(oneByte - 1));\n                    return Mode.ASCII_ENCODE;\n                }\n                else if (oneByte === 129) { // Pad\n                    return Mode.PAD_ENCODE;\n                }\n                else if (oneByte <= 229) { // 2-digit data 00-99 (Numeric Value + 130)\n                    const value = oneByte - 130;\n                    if (value < 10) { // pad with '0' for single digit values\n                        result.append('0');\n                    }\n                    result.append('' + value);\n                }\n                else {\n                    switch (oneByte) {\n                        case 230: // Latch to C40 encodation\n                            return Mode.C40_ENCODE;\n                        case 231: // Latch to Base 256 encodation\n                            return Mode.BASE256_ENCODE;\n                        case 232: // FNC1\n                            result.append(String.fromCharCode(29)); // translate as ASCII 29\n                            break;\n                        case 233: // Structured Append\n                        case 234: // Reader Programming\n                            // Ignore these symbols for now\n                            // throw ReaderException.getInstance();\n                            break;\n                        case 235: // Upper Shift (shift to Extended ASCII)\n                            upperShift = true;\n                            break;\n                        case 236: // 05 Macro\n                            result.append('[)>\\u001E05\\u001D');\n                            resultTrailer.insert(0, '\\u001E\\u0004');\n                            break;\n                        case 237: // 06 Macro\n                            result.append('[)>\\u001E06\\u001D');\n                            resultTrailer.insert(0, '\\u001E\\u0004');\n                            break;\n                        case 238: // Latch to ANSI X12 encodation\n                            return Mode.ANSIX12_ENCODE;\n                        case 239: // Latch to Text encodation\n                            return Mode.TEXT_ENCODE;\n                        case 240: // Latch to EDIFACT encodation\n                            return Mode.EDIFACT_ENCODE;\n                        case 241: // ECI Character\n                            // TODO(bbrown): I think we need to support ECI\n                            // throw ReaderException.getInstance();\n                            // Ignore this symbol for now\n                            break;\n                        default:\n                            // Not to be used in ASCII encodation\n                            // but work around encoders that end with 254, latch back to ASCII\n                            if (oneByte !== 254 || bits.available() !== 0) {\n                                throw new FormatException();\n                            }\n                            break;\n                    }\n                }\n            } while (bits.available() > 0);\n            return Mode.ASCII_ENCODE;\n        }\n        /**\n         * See ISO 16022:2006, 5.2.5 and Annex C, Table C.1\n         */\n        static decodeC40Segment(bits, result) {\n            // Three C40 values are encoded in a 16-bit value as\n            // (1600 * C1) + (40 * C2) + C3 + 1\n            // TODO(bbrown): The Upper Shift with C40 doesn't work in the 4 value scenario all the time\n            let upperShift = false;\n            const cValues = [];\n            let shift = 0;\n            do {\n                // If there is only one byte left then it will be encoded as ASCII\n                if (bits.available() === 8) {\n                    return;\n                }\n                const firstByte = bits.readBits(8);\n                if (firstByte === 254) { // Unlatch codeword\n                    return;\n                }\n                this.parseTwoBytes(firstByte, bits.readBits(8), cValues);\n                for (let i = 0; i < 3; i++) {\n                    const cValue = cValues[i];\n                    switch (shift) {\n                        case 0:\n                            if (cValue < 3) {\n                                shift = cValue + 1;\n                            }\n                            else if (cValue < this.C40_BASIC_SET_CHARS.length) {\n                                const c40char = this.C40_BASIC_SET_CHARS[cValue];\n                                if (upperShift) {\n                                    result.append(String.fromCharCode(c40char.charCodeAt(0) + 128));\n                                    upperShift = false;\n                                }\n                                else {\n                                    result.append(c40char);\n                                }\n                            }\n                            else {\n                                throw new FormatException();\n                            }\n                            break;\n                        case 1:\n                            if (upperShift) {\n                                result.append(String.fromCharCode(cValue + 128));\n                                upperShift = false;\n                            }\n                            else {\n                                result.append(String.fromCharCode(cValue));\n                            }\n                            shift = 0;\n                            break;\n                        case 2:\n                            if (cValue < this.C40_SHIFT2_SET_CHARS.length) {\n                                const c40char = this.C40_SHIFT2_SET_CHARS[cValue];\n                                if (upperShift) {\n                                    result.append(String.fromCharCode(c40char.charCodeAt(0) + 128));\n                                    upperShift = false;\n                                }\n                                else {\n                                    result.append(c40char);\n                                }\n                            }\n                            else {\n                                switch (cValue) {\n                                    case 27: // FNC1\n                                        result.append(String.fromCharCode(29)); // translate as ASCII 29\n                                        break;\n                                    case 30: // Upper Shift\n                                        upperShift = true;\n                                        break;\n                                    default:\n                                        throw new FormatException();\n                                }\n                            }\n                            shift = 0;\n                            break;\n                        case 3:\n                            if (upperShift) {\n                                result.append(String.fromCharCode(cValue + 224));\n                                upperShift = false;\n                            }\n                            else {\n                                result.append(String.fromCharCode(cValue + 96));\n                            }\n                            shift = 0;\n                            break;\n                        default:\n                            throw new FormatException();\n                    }\n                }\n            } while (bits.available() > 0);\n        }\n        /**\n         * See ISO 16022:2006, 5.2.6 and Annex C, Table C.2\n         */\n        static decodeTextSegment(bits, result) {\n            // Three Text values are encoded in a 16-bit value as\n            // (1600 * C1) + (40 * C2) + C3 + 1\n            // TODO(bbrown): The Upper Shift with Text doesn't work in the 4 value scenario all the time\n            let upperShift = false;\n            let cValues = [];\n            let shift = 0;\n            do {\n                // If there is only one byte left then it will be encoded as ASCII\n                if (bits.available() === 8) {\n                    return;\n                }\n                const firstByte = bits.readBits(8);\n                if (firstByte === 254) { // Unlatch codeword\n                    return;\n                }\n                this.parseTwoBytes(firstByte, bits.readBits(8), cValues);\n                for (let i = 0; i < 3; i++) {\n                    const cValue = cValues[i];\n                    switch (shift) {\n                        case 0:\n                            if (cValue < 3) {\n                                shift = cValue + 1;\n                            }\n                            else if (cValue < this.TEXT_BASIC_SET_CHARS.length) {\n                                const textChar = this.TEXT_BASIC_SET_CHARS[cValue];\n                                if (upperShift) {\n                                    result.append(String.fromCharCode(textChar.charCodeAt(0) + 128));\n                                    upperShift = false;\n                                }\n                                else {\n                                    result.append(textChar);\n                                }\n                            }\n                            else {\n                                throw new FormatException();\n                            }\n                            break;\n                        case 1:\n                            if (upperShift) {\n                                result.append(String.fromCharCode(cValue + 128));\n                                upperShift = false;\n                            }\n                            else {\n                                result.append(String.fromCharCode(cValue));\n                            }\n                            shift = 0;\n                            break;\n                        case 2:\n                            // Shift 2 for Text is the same encoding as C40\n                            if (cValue < this.TEXT_SHIFT2_SET_CHARS.length) {\n                                const textChar = this.TEXT_SHIFT2_SET_CHARS[cValue];\n                                if (upperShift) {\n                                    result.append(String.fromCharCode(textChar.charCodeAt(0) + 128));\n                                    upperShift = false;\n                                }\n                                else {\n                                    result.append(textChar);\n                                }\n                            }\n                            else {\n                                switch (cValue) {\n                                    case 27: // FNC1\n                                        result.append(String.fromCharCode(29)); // translate as ASCII 29\n                                        break;\n                                    case 30: // Upper Shift\n                                        upperShift = true;\n                                        break;\n                                    default:\n                                        throw new FormatException();\n                                }\n                            }\n                            shift = 0;\n                            break;\n                        case 3:\n                            if (cValue < this.TEXT_SHIFT3_SET_CHARS.length) {\n                                const textChar = this.TEXT_SHIFT3_SET_CHARS[cValue];\n                                if (upperShift) {\n                                    result.append(String.fromCharCode(textChar.charCodeAt(0) + 128));\n                                    upperShift = false;\n                                }\n                                else {\n                                    result.append(textChar);\n                                }\n                                shift = 0;\n                            }\n                            else {\n                                throw new FormatException();\n                            }\n                            break;\n                        default:\n                            throw new FormatException();\n                    }\n                }\n            } while (bits.available() > 0);\n        }\n        /**\n         * See ISO 16022:2006, 5.2.7\n         */\n        static decodeAnsiX12Segment(bits, result) {\n            // Three ANSI X12 values are encoded in a 16-bit value as\n            // (1600 * C1) + (40 * C2) + C3 + 1\n            const cValues = [];\n            do {\n                // If there is only one byte left then it will be encoded as ASCII\n                if (bits.available() === 8) {\n                    return;\n                }\n                const firstByte = bits.readBits(8);\n                if (firstByte === 254) { // Unlatch codeword\n                    return;\n                }\n                this.parseTwoBytes(firstByte, bits.readBits(8), cValues);\n                for (let i = 0; i < 3; i++) {\n                    const cValue = cValues[i];\n                    switch (cValue) {\n                        case 0: // X12 segment terminator <CR>\n                            result.append('\\r');\n                            break;\n                        case 1: // X12 segment separator *\n                            result.append('*');\n                            break;\n                        case 2: // X12 sub-element separator >\n                            result.append('>');\n                            break;\n                        case 3: // space\n                            result.append(' ');\n                            break;\n                        default:\n                            if (cValue < 14) { // 0 - 9\n                                result.append(String.fromCharCode(cValue + 44));\n                            }\n                            else if (cValue < 40) { // A - Z\n                                result.append(String.fromCharCode(cValue + 51));\n                            }\n                            else {\n                                throw new FormatException();\n                            }\n                            break;\n                    }\n                }\n            } while (bits.available() > 0);\n        }\n        static parseTwoBytes(firstByte, secondByte, result) {\n            let fullBitValue = (firstByte << 8) + secondByte - 1;\n            let temp = Math.floor(fullBitValue / 1600);\n            result[0] = temp;\n            fullBitValue -= temp * 1600;\n            temp = Math.floor(fullBitValue / 40);\n            result[1] = temp;\n            result[2] = fullBitValue - temp * 40;\n        }\n        /**\n         * See ISO 16022:2006, 5.2.8 and Annex C Table C.3\n         */\n        static decodeEdifactSegment(bits, result) {\n            do {\n                // If there is only two or less bytes left then it will be encoded as ASCII\n                if (bits.available() <= 16) {\n                    return;\n                }\n                for (let i = 0; i < 4; i++) {\n                    let edifactValue = bits.readBits(6);\n                    // Check for the unlatch character\n                    if (edifactValue === 0x1F) { // 011111\n                        // Read rest of byte, which should be 0, and stop\n                        const bitsLeft = 8 - bits.getBitOffset();\n                        if (bitsLeft !== 8) {\n                            bits.readBits(bitsLeft);\n                        }\n                        return;\n                    }\n                    if ((edifactValue & 0x20) === 0) { // no 1 in the leading (6th) bit\n                        edifactValue |= 0x40; // Add a leading 01 to the 6 bit binary value\n                    }\n                    result.append(String.fromCharCode(edifactValue));\n                }\n            } while (bits.available() > 0);\n        }\n        /**\n         * See ISO 16022:2006, 5.2.9 and Annex B, B.2\n         */\n        static decodeBase256Segment(bits, result, byteSegments) {\n            // Figure out how long the Base 256 Segment is.\n            let codewordPosition = 1 + bits.getByteOffset(); // position is 1-indexed\n            const d1 = this.unrandomize255State(bits.readBits(8), codewordPosition++);\n            let count;\n            if (d1 === 0) { // Read the remainder of the symbol\n                count = bits.available() / 8 | 0;\n            }\n            else if (d1 < 250) {\n                count = d1;\n            }\n            else {\n                count = 250 * (d1 - 249) + this.unrandomize255State(bits.readBits(8), codewordPosition++);\n            }\n            // We're seeing NegativeArraySizeException errors from users.\n            if (count < 0) {\n                throw new FormatException();\n            }\n            const bytes = new Uint8Array(count);\n            for (let i = 0; i < count; i++) {\n                // Have seen this particular error in the wild, such as at\n                // http://www.bcgen.com/demo/IDAutomationStreamingDataMatrix.aspx?MODE=3&D=Fred&PFMT=3&PT=F&X=0.3&O=0&LM=0.2\n                if (bits.available() < 8) {\n                    throw new FormatException();\n                }\n                bytes[i] = this.unrandomize255State(bits.readBits(8), codewordPosition++);\n            }\n            byteSegments.push(bytes);\n            try {\n                result.append(StringEncoding.decode(bytes, StringUtils.ISO88591));\n            }\n            catch (uee) {\n                throw new IllegalStateException('Platform does not support required encoding: ' + uee.message);\n            }\n        }\n        /**\n         * See ISO 16022:2006, Annex B, B.2\n         */\n        static unrandomize255State(randomizedBase256Codeword, base256CodewordPosition) {\n            const pseudoRandomNumber = ((149 * base256CodewordPosition) % 255) + 1;\n            const tempVariable = randomizedBase256Codeword - pseudoRandomNumber;\n            return tempVariable >= 0 ? tempVariable : tempVariable + 256;\n        }\n    }\n    /**\n     * See ISO 16022:2006, Annex C Table C.1\n     * The C40 Basic Character Set (*'s used for placeholders for the shift values)\n     */\n    DecodedBitStreamParser.C40_BASIC_SET_CHARS = [\n        '*', '*', '*', ' ', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',\n        'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N',\n        'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'\n    ];\n    DecodedBitStreamParser.C40_SHIFT2_SET_CHARS = [\n        '!', '\"', '#', '$', '%', '&', '\\'', '(', ')', '*', '+', ',', '-', '.',\n        '/', ':', ';', '<', '=', '>', '?', '@', '[', '\\\\', ']', '^', '_'\n    ];\n    /**\n     * See ISO 16022:2006, Annex C Table C.2\n     * The Text Basic Character Set (*'s used for placeholders for the shift values)\n     */\n    DecodedBitStreamParser.TEXT_BASIC_SET_CHARS = [\n        '*', '*', '*', ' ', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',\n        'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n',\n        'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'\n    ];\n    // Shift 2 for Text is the same encoding as C40\n    DecodedBitStreamParser.TEXT_SHIFT2_SET_CHARS = DecodedBitStreamParser.C40_SHIFT2_SET_CHARS;\n    DecodedBitStreamParser.TEXT_SHIFT3_SET_CHARS = [\n        '`', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N',\n        'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '{', '|', '}', '~', String.fromCharCode(127)\n    ];\n\n    /*\n     * Copyright 2007 ZXing authors\n     *\n     * Licensed under the Apache License, Version 2.0 (the \"License\");\n     * you may not use this file except in compliance with the License.\n     * You may obtain a copy of the License at\n     *\n     *      http://www.apache.org/licenses/LICENSE-2.0\n     *\n     * Unless required by applicable law or agreed to in writing, software\n     * distributed under the License is distributed on an \"AS IS\" BASIS,\n     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n     * See the License for the specific language governing permissions and\n     * limitations under the License.\n     */\n    /**\n     * <p>The main class which implements Data Matrix Code decoding -- as opposed to locating and extracting\n     * the Data Matrix Code from an image.</p>\n     *\n     * @author bbrown@google.com (Brian Brown)\n     */\n    class Decoder$1 {\n        constructor() {\n            this.rsDecoder = new ReedSolomonDecoder(GenericGF.DATA_MATRIX_FIELD_256);\n        }\n        /**\n         * <p>Decodes a Data Matrix Code represented as a {@link BitMatrix}. A 1 or \"true\" is taken\n         * to mean a black module.</p>\n         *\n         * @param bits booleans representing white/black Data Matrix Code modules\n         * @return text and bytes encoded within the Data Matrix Code\n         * @throws FormatException if the Data Matrix Code cannot be decoded\n         * @throws ChecksumException if error correction fails\n         */\n        decode(bits) {\n            // Construct a parser and read version, error-correction level\n            const parser = new BitMatrixParser(bits);\n            const version = parser.getVersion();\n            // Read codewords\n            const codewords = parser.readCodewords();\n            // Separate into data blocks\n            const dataBlocks = DataBlock.getDataBlocks(codewords, version);\n            // Count total number of data bytes\n            let totalBytes = 0;\n            for (let db of dataBlocks) {\n                totalBytes += db.getNumDataCodewords();\n            }\n            const resultBytes = new Uint8Array(totalBytes);\n            const dataBlocksCount = dataBlocks.length;\n            // Error-correct and copy data blocks together into a stream of bytes\n            for (let j = 0; j < dataBlocksCount; j++) {\n                const dataBlock = dataBlocks[j];\n                const codewordBytes = dataBlock.getCodewords();\n                const numDataCodewords = dataBlock.getNumDataCodewords();\n                this.correctErrors(codewordBytes, numDataCodewords);\n                for (let i = 0; i < numDataCodewords; i++) {\n                    // De-interlace data blocks.\n                    resultBytes[i * dataBlocksCount + j] = codewordBytes[i];\n                }\n            }\n            // Decode the contents of that stream of bytes\n            return DecodedBitStreamParser.decode(resultBytes);\n        }\n        /**\n         * <p>Given data and error-correction codewords received, possibly corrupted by errors, attempts to\n         * correct the errors in-place using Reed-Solomon error correction.</p>\n         *\n         * @param codewordBytes data and error correction codewords\n         * @param numDataCodewords number of codewords that are data bytes\n         * @throws ChecksumException if error correction fails\n         */\n        correctErrors(codewordBytes, numDataCodewords) {\n            // const numCodewords = codewordBytes.length;\n            // First read into an array of ints\n            const codewordsInts = new Int32Array(codewordBytes);\n            // for (let i = 0; i < numCodewords; i++) {\n            //   codewordsInts[i] = codewordBytes[i] & 0xFF;\n            // }\n            try {\n                this.rsDecoder.decode(codewordsInts, codewordBytes.length - numDataCodewords);\n            }\n            catch (ignored /* ReedSolomonException */) {\n                throw new ChecksumException();\n            }\n            // Copy back into array of bytes -- only need to worry about the bytes that were data\n            // We don't care about errors in the error-correction codewords\n            for (let i = 0; i < numDataCodewords; i++) {\n                codewordBytes[i] = codewordsInts[i];\n            }\n        }\n    }\n\n    /**\n     * <p>Encapsulates logic that can detect a Data Matrix Code in an image, even if the Data Matrix Code\n     * is rotated or skewed, or partially obscured.</p>\n     *\n     * @author Sean Owen\n     */\n    class Detector$1 {\n        constructor(image) {\n            this.image = image;\n            this.rectangleDetector = new WhiteRectangleDetector(this.image);\n        }\n        /**\n         * <p>Detects a Data Matrix Code in an image.</p>\n         *\n         * @return {@link DetectorResult} encapsulating results of detecting a Data Matrix Code\n         * @throws NotFoundException if no Data Matrix Code can be found\n         */\n        detect() {\n            const cornerPoints = this.rectangleDetector.detect();\n            let points = this.detectSolid1(cornerPoints);\n            points = this.detectSolid2(points);\n            points[3] = this.correctTopRight(points);\n            if (!points[3]) {\n                throw new NotFoundException();\n            }\n            points = this.shiftToModuleCenter(points);\n            const topLeft = points[0];\n            const bottomLeft = points[1];\n            const bottomRight = points[2];\n            const topRight = points[3];\n            let dimensionTop = this.transitionsBetween(topLeft, topRight) + 1;\n            let dimensionRight = this.transitionsBetween(bottomRight, topRight) + 1;\n            if ((dimensionTop & 0x01) === 1) {\n                dimensionTop += 1;\n            }\n            if ((dimensionRight & 0x01) === 1) {\n                dimensionRight += 1;\n            }\n            if (4 * dimensionTop < 7 * dimensionRight && 4 * dimensionRight < 7 * dimensionTop) {\n                // The matrix is square\n                dimensionTop = dimensionRight = Math.max(dimensionTop, dimensionRight);\n            }\n            let bits = Detector$1.sampleGrid(this.image, topLeft, bottomLeft, bottomRight, topRight, dimensionTop, dimensionRight);\n            return new DetectorResult(bits, [topLeft, bottomLeft, bottomRight, topRight]);\n        }\n        static shiftPoint(point, to, div) {\n            let x = (to.getX() - point.getX()) / (div + 1);\n            let y = (to.getY() - point.getY()) / (div + 1);\n            return new ResultPoint(point.getX() + x, point.getY() + y);\n        }\n        static moveAway(point, fromX, fromY) {\n            let x = point.getX();\n            let y = point.getY();\n            if (x < fromX) {\n                x -= 1;\n            }\n            else {\n                x += 1;\n            }\n            if (y < fromY) {\n                y -= 1;\n            }\n            else {\n                y += 1;\n            }\n            return new ResultPoint(x, y);\n        }\n        /**\n         * Detect a solid side which has minimum transition.\n         */\n        detectSolid1(cornerPoints) {\n            // 0  2\n            // 1  3\n            let pointA = cornerPoints[0];\n            let pointB = cornerPoints[1];\n            let pointC = cornerPoints[3];\n            let pointD = cornerPoints[2];\n            let trAB = this.transitionsBetween(pointA, pointB);\n            let trBC = this.transitionsBetween(pointB, pointC);\n            let trCD = this.transitionsBetween(pointC, pointD);\n            let trDA = this.transitionsBetween(pointD, pointA);\n            // 0..3\n            // :  :\n            // 1--2\n            let min = trAB;\n            let points = [pointD, pointA, pointB, pointC];\n            if (min > trBC) {\n                min = trBC;\n                points[0] = pointA;\n                points[1] = pointB;\n                points[2] = pointC;\n                points[3] = pointD;\n            }\n            if (min > trCD) {\n                min = trCD;\n                points[0] = pointB;\n                points[1] = pointC;\n                points[2] = pointD;\n                points[3] = pointA;\n            }\n            if (min > trDA) {\n                points[0] = pointC;\n                points[1] = pointD;\n                points[2] = pointA;\n                points[3] = pointB;\n            }\n            return points;\n        }\n        /**\n         * Detect a second solid side next to first solid side.\n         */\n        detectSolid2(points) {\n            // A..D\n            // :  :\n            // B--C\n            let pointA = points[0];\n            let pointB = points[1];\n            let pointC = points[2];\n            let pointD = points[3];\n            // Transition detection on the edge is not stable.\n            // To safely detect, shift the points to the module center.\n            let tr = this.transitionsBetween(pointA, pointD);\n            let pointBs = Detector$1.shiftPoint(pointB, pointC, (tr + 1) * 4);\n            let pointCs = Detector$1.shiftPoint(pointC, pointB, (tr + 1) * 4);\n            let trBA = this.transitionsBetween(pointBs, pointA);\n            let trCD = this.transitionsBetween(pointCs, pointD);\n            // 0..3\n            // |  :\n            // 1--2\n            if (trBA < trCD) {\n                // solid sides: A-B-C\n                points[0] = pointA;\n                points[1] = pointB;\n                points[2] = pointC;\n                points[3] = pointD;\n            }\n            else {\n                // solid sides: B-C-D\n                points[0] = pointB;\n                points[1] = pointC;\n                points[2] = pointD;\n                points[3] = pointA;\n            }\n            return points;\n        }\n        /**\n         * Calculates the corner position of the white top right module.\n         */\n        correctTopRight(points) {\n            // A..D\n            // |  :\n            // B--C\n            let pointA = points[0];\n            let pointB = points[1];\n            let pointC = points[2];\n            let pointD = points[3];\n            // shift points for safe transition detection.\n            let trTop = this.transitionsBetween(pointA, pointD);\n            let trRight = this.transitionsBetween(pointB, pointD);\n            let pointAs = Detector$1.shiftPoint(pointA, pointB, (trRight + 1) * 4);\n            let pointCs = Detector$1.shiftPoint(pointC, pointB, (trTop + 1) * 4);\n            trTop = this.transitionsBetween(pointAs, pointD);\n            trRight = this.transitionsBetween(pointCs, pointD);\n            let candidate1 = new ResultPoint(pointD.getX() + (pointC.getX() - pointB.getX()) / (trTop + 1), pointD.getY() + (pointC.getY() - pointB.getY()) / (trTop + 1));\n            let candidate2 = new ResultPoint(pointD.getX() + (pointA.getX() - pointB.getX()) / (trRight + 1), pointD.getY() + (pointA.getY() - pointB.getY()) / (trRight + 1));\n            if (!this.isValid(candidate1)) {\n                if (this.isValid(candidate2)) {\n                    return candidate2;\n                }\n                return null;\n            }\n            if (!this.isValid(candidate2)) {\n                return candidate1;\n            }\n            let sumc1 = this.transitionsBetween(pointAs, candidate1) + this.transitionsBetween(pointCs, candidate1);\n            let sumc2 = this.transitionsBetween(pointAs, candidate2) + this.transitionsBetween(pointCs, candidate2);\n            if (sumc1 > sumc2) {\n                return candidate1;\n            }\n            else {\n                return candidate2;\n            }\n        }\n        /**\n         * Shift the edge points to the module center.\n         */\n        shiftToModuleCenter(points) {\n            // A..D\n            // |  :\n            // B--C\n            let pointA = points[0];\n            let pointB = points[1];\n            let pointC = points[2];\n            let pointD = points[3];\n            // calculate pseudo dimensions\n            let dimH = this.transitionsBetween(pointA, pointD) + 1;\n            let dimV = this.transitionsBetween(pointC, pointD) + 1;\n            // shift points for safe dimension detection\n            let pointAs = Detector$1.shiftPoint(pointA, pointB, dimV * 4);\n            let pointCs = Detector$1.shiftPoint(pointC, pointB, dimH * 4);\n            //  calculate more precise dimensions\n            dimH = this.transitionsBetween(pointAs, pointD) + 1;\n            dimV = this.transitionsBetween(pointCs, pointD) + 1;\n            if ((dimH & 0x01) === 1) {\n                dimH += 1;\n            }\n            if ((dimV & 0x01) === 1) {\n                dimV += 1;\n            }\n            // WhiteRectangleDetector returns points inside of the rectangle.\n            // I want points on the edges.\n            let centerX = (pointA.getX() + pointB.getX() + pointC.getX() + pointD.getX()) / 4;\n            let centerY = (pointA.getY() + pointB.getY() + pointC.getY() + pointD.getY()) / 4;\n            pointA = Detector$1.moveAway(pointA, centerX, centerY);\n            pointB = Detector$1.moveAway(pointB, centerX, centerY);\n            pointC = Detector$1.moveAway(pointC, centerX, centerY);\n            pointD = Detector$1.moveAway(pointD, centerX, centerY);\n            let pointBs;\n            let pointDs;\n            // shift points to the center of each modules\n            pointAs = Detector$1.shiftPoint(pointA, pointB, dimV * 4);\n            pointAs = Detector$1.shiftPoint(pointAs, pointD, dimH * 4);\n            pointBs = Detector$1.shiftPoint(pointB, pointA, dimV * 4);\n            pointBs = Detector$1.shiftPoint(pointBs, pointC, dimH * 4);\n            pointCs = Detector$1.shiftPoint(pointC, pointD, dimV * 4);\n            pointCs = Detector$1.shiftPoint(pointCs, pointB, dimH * 4);\n            pointDs = Detector$1.shiftPoint(pointD, pointC, dimV * 4);\n            pointDs = Detector$1.shiftPoint(pointDs, pointA, dimH * 4);\n            return [pointAs, pointBs, pointCs, pointDs];\n        }\n        isValid(p) {\n            return p.getX() >= 0 && p.getX() < this.image.getWidth() && p.getY() > 0 && p.getY() < this.image.getHeight();\n        }\n        static sampleGrid(image, topLeft, bottomLeft, bottomRight, topRight, dimensionX, dimensionY) {\n            const sampler = GridSamplerInstance.getInstance();\n            return sampler.sampleGrid(image, dimensionX, dimensionY, 0.5, 0.5, dimensionX - 0.5, 0.5, dimensionX - 0.5, dimensionY - 0.5, 0.5, dimensionY - 0.5, topLeft.getX(), topLeft.getY(), topRight.getX(), topRight.getY(), bottomRight.getX(), bottomRight.getY(), bottomLeft.getX(), bottomLeft.getY());\n        }\n        /**\n         * Counts the number of black/white transitions between two points, using something like Bresenham's algorithm.\n         */\n        transitionsBetween(from, to) {\n            // See QR Code Detector, sizeOfBlackWhiteBlackRun()\n            let fromX = Math.trunc(from.getX());\n            let fromY = Math.trunc(from.getY());\n            let toX = Math.trunc(to.getX());\n            let toY = Math.trunc(to.getY());\n            let steep = Math.abs(toY - fromY) > Math.abs(toX - fromX);\n            if (steep) {\n                let temp = fromX;\n                fromX = fromY;\n                fromY = temp;\n                temp = toX;\n                toX = toY;\n                toY = temp;\n            }\n            let dx = Math.abs(toX - fromX);\n            let dy = Math.abs(toY - fromY);\n            let error = -dx / 2;\n            let ystep = fromY < toY ? 1 : -1;\n            let xstep = fromX < toX ? 1 : -1;\n            let transitions = 0;\n            let inBlack = this.image.get(steep ? fromY : fromX, steep ? fromX : fromY);\n            for (let x = fromX, y = fromY; x !== toX; x += xstep) {\n                let isBlack = this.image.get(steep ? y : x, steep ? x : y);\n                if (isBlack !== inBlack) {\n                    transitions++;\n                    inBlack = isBlack;\n                }\n                error += dy;\n                if (error > 0) {\n                    if (y === toY) {\n                        break;\n                    }\n                    y += ystep;\n                    error -= dx;\n                }\n            }\n            return transitions;\n        }\n    }\n\n    /*\n     * Copyright 2007 ZXing authors\n     *\n     * Licensed under the Apache License, Version 2.0 (the \"License\");\n     * you may not use this file except in compliance with the License.\n     * You may obtain a copy of the License at\n     *\n     *      http://www.apache.org/licenses/LICENSE-2.0\n     *\n     * Unless required by applicable law or agreed to in writing, software\n     * distributed under the License is distributed on an \"AS IS\" BASIS,\n     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n     * See the License for the specific language governing permissions and\n     * limitations under the License.\n     */\n    /**\n     * This implementation can detect and decode Data Matrix codes in an image.\n     *\n     * @author bbrown@google.com (Brian Brown)\n     */\n    class DataMatrixReader {\n        constructor() {\n            this.decoder = new Decoder$1();\n        }\n        /**\n         * Locates and decodes a Data Matrix code in an image.\n         *\n         * @return a String representing the content encoded by the Data Matrix code\n         * @throws NotFoundException if a Data Matrix code cannot be found\n         * @throws FormatException if a Data Matrix code cannot be decoded\n         * @throws ChecksumException if error correction fails\n         */\n        // @Override\n        // public Result decode(BinaryBitmap image) throws NotFoundException, ChecksumException, FormatException {\n        //   return decode(image, null);\n        // }\n        // @Override\n        decode(image, hints = null) {\n            let decoderResult;\n            let points;\n            if (hints != null && hints.has(DecodeHintType$1.PURE_BARCODE)) {\n                const bits = DataMatrixReader.extractPureBits(image.getBlackMatrix());\n                decoderResult = this.decoder.decode(bits);\n                points = DataMatrixReader.NO_POINTS;\n            }\n            else {\n                const detectorResult = new Detector$1(image.getBlackMatrix()).detect();\n                decoderResult = this.decoder.decode(detectorResult.getBits());\n                points = detectorResult.getPoints();\n            }\n            const rawBytes = decoderResult.getRawBytes();\n            const result = new Result(decoderResult.getText(), rawBytes, 8 * rawBytes.length, points, BarcodeFormat$1.DATA_MATRIX, System.currentTimeMillis());\n            const byteSegments = decoderResult.getByteSegments();\n            if (byteSegments != null) {\n                result.putMetadata(ResultMetadataType$1.BYTE_SEGMENTS, byteSegments);\n            }\n            const ecLevel = decoderResult.getECLevel();\n            if (ecLevel != null) {\n                result.putMetadata(ResultMetadataType$1.ERROR_CORRECTION_LEVEL, ecLevel);\n            }\n            return result;\n        }\n        // @Override\n        reset() {\n            // do nothing\n        }\n        /**\n         * This method detects a code in a \"pure\" image -- that is, pure monochrome image\n         * which contains only an unrotated, unskewed, image of a code, with some white border\n         * around it. This is a specialized method that works exceptionally fast in this special\n         * case.\n         *\n         * @see com.google.zxing.qrcode.QRCodeReader#extractPureBits(BitMatrix)\n         */\n        static extractPureBits(image) {\n            const leftTopBlack = image.getTopLeftOnBit();\n            const rightBottomBlack = image.getBottomRightOnBit();\n            if (leftTopBlack == null || rightBottomBlack == null) {\n                throw new NotFoundException();\n            }\n            const moduleSize = this.moduleSize(leftTopBlack, image);\n            let top = leftTopBlack[1];\n            const bottom = rightBottomBlack[1];\n            let left = leftTopBlack[0];\n            const right = rightBottomBlack[0];\n            const matrixWidth = (right - left + 1) / moduleSize;\n            const matrixHeight = (bottom - top + 1) / moduleSize;\n            if (matrixWidth <= 0 || matrixHeight <= 0) {\n                throw new NotFoundException();\n            }\n            // Push in the \"border\" by half the module width so that we start\n            // sampling in the middle of the module. Just in case the image is a\n            // little off, this will help recover.\n            const nudge = moduleSize / 2;\n            top += nudge;\n            left += nudge;\n            // Now just read off the bits\n            const bits = new BitMatrix(matrixWidth, matrixHeight);\n            for (let y = 0; y < matrixHeight; y++) {\n                const iOffset = top + y * moduleSize;\n                for (let x = 0; x < matrixWidth; x++) {\n                    if (image.get(left + x * moduleSize, iOffset)) {\n                        bits.set(x, y);\n                    }\n                }\n            }\n            return bits;\n        }\n        static moduleSize(leftTopBlack, image) {\n            const width = image.getWidth();\n            let x = leftTopBlack[0];\n            const y = leftTopBlack[1];\n            while (x < width && image.get(x, y)) {\n                x++;\n            }\n            if (x === width) {\n                throw new NotFoundException();\n            }\n            const moduleSize = x - leftTopBlack[0];\n            if (moduleSize === 0) {\n                throw new NotFoundException();\n            }\n            return moduleSize;\n        }\n    }\n    DataMatrixReader.NO_POINTS = [];\n\n    /**\n     * @deprecated Moving to @zxing/browser\n     *\n     * QR Code reader to use from browser.\n     */\n    class BrowserDatamatrixCodeReader extends BrowserCodeReader {\n        /**\n         * Creates an instance of BrowserQRCodeReader.\n         * @param {number} [timeBetweenScansMillis=500] the time delay between subsequent decode tries\n         */\n        constructor(timeBetweenScansMillis = 500) {\n            super(new DataMatrixReader(), timeBetweenScansMillis);\n        }\n    }\n\n    /*\n     * Copyright 2007 ZXing authors\n     *\n     * Licensed under the Apache License, Version 2.0 (the \"License\");\n     * you may not use this file except in compliance with the License.\n     * You may obtain a copy of the License at\n     *\n     *      http://www.apache.org/licenses/LICENSE-2.0\n     *\n     * Unless required by applicable law or agreed to in writing, software\n     * distributed under the License is distributed on an \"AS IS\" BASIS,\n     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n     * See the License for the specific language governing permissions and\n     * limitations under the License.\n     */\n    var ErrorCorrectionLevelValues;\n    (function (ErrorCorrectionLevelValues) {\n        ErrorCorrectionLevelValues[ErrorCorrectionLevelValues[\"L\"] = 0] = \"L\";\n        ErrorCorrectionLevelValues[ErrorCorrectionLevelValues[\"M\"] = 1] = \"M\";\n        ErrorCorrectionLevelValues[ErrorCorrectionLevelValues[\"Q\"] = 2] = \"Q\";\n        ErrorCorrectionLevelValues[ErrorCorrectionLevelValues[\"H\"] = 3] = \"H\";\n    })(ErrorCorrectionLevelValues || (ErrorCorrectionLevelValues = {}));\n    /**\n     * <p>See ISO 18004:2006, 6.5.1. This enum encapsulates the four error correction levels\n     * defined by the QR code standard.</p>\n     *\n     * @author Sean Owen\n     */\n    class ErrorCorrectionLevel {\n        constructor(value, stringValue, bits /*int*/) {\n            this.value = value;\n            this.stringValue = stringValue;\n            this.bits = bits;\n            ErrorCorrectionLevel.FOR_BITS.set(bits, this);\n            ErrorCorrectionLevel.FOR_VALUE.set(value, this);\n        }\n        getValue() {\n            return this.value;\n        }\n        getBits() {\n            return this.bits;\n        }\n        static fromString(s) {\n            switch (s) {\n                case 'L': return ErrorCorrectionLevel.L;\n                case 'M': return ErrorCorrectionLevel.M;\n                case 'Q': return ErrorCorrectionLevel.Q;\n                case 'H': return ErrorCorrectionLevel.H;\n                default: throw new ArgumentException(s + 'not available');\n            }\n        }\n        toString() {\n            return this.stringValue;\n        }\n        equals(o) {\n            if (!(o instanceof ErrorCorrectionLevel)) {\n                return false;\n            }\n            const other = o;\n            return this.value === other.value;\n        }\n        /**\n         * @param bits int containing the two bits encoding a QR Code's error correction level\n         * @return ErrorCorrectionLevel representing the encoded error correction level\n         */\n        static forBits(bits /*int*/) {\n            if (bits < 0 || bits >= ErrorCorrectionLevel.FOR_BITS.size) {\n                throw new IllegalArgumentException();\n            }\n            return ErrorCorrectionLevel.FOR_BITS.get(bits);\n        }\n    }\n    ErrorCorrectionLevel.FOR_BITS = new Map();\n    ErrorCorrectionLevel.FOR_VALUE = new Map();\n    /** L = ~7% correction */\n    ErrorCorrectionLevel.L = new ErrorCorrectionLevel(ErrorCorrectionLevelValues.L, 'L', 0x01);\n    /** M = ~15% correction */\n    ErrorCorrectionLevel.M = new ErrorCorrectionLevel(ErrorCorrectionLevelValues.M, 'M', 0x00);\n    /** Q = ~25% correction */\n    ErrorCorrectionLevel.Q = new ErrorCorrectionLevel(ErrorCorrectionLevelValues.Q, 'Q', 0x03);\n    /** H = ~30% correction */\n    ErrorCorrectionLevel.H = new ErrorCorrectionLevel(ErrorCorrectionLevelValues.H, 'H', 0x02);\n\n    /*\n     * Copyright 2007 ZXing authors\n     *\n     * Licensed under the Apache License, Version 2.0 (the \"License\");\n     * you may not use this file except in compliance with the License.\n     * You may obtain a copy of the License at\n     *\n     *      http://www.apache.org/licenses/LICENSE-2.0\n     *\n     * Unless required by applicable law or agreed to in writing, software\n     * distributed under the License is distributed on an \"AS IS\" BASIS,\n     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n     * See the License for the specific language governing permissions and\n     * limitations under the License.\n     */\n    /**\n     * <p>Encapsulates a QR Code's format information, including the data mask used and\n     * error correction level.</p>\n     *\n     * @author Sean Owen\n     * @see DataMask\n     * @see ErrorCorrectionLevel\n     */\n    class FormatInformation {\n        constructor(formatInfo /*int*/) {\n            // Bits 3,4\n            this.errorCorrectionLevel = ErrorCorrectionLevel.forBits((formatInfo >> 3) & 0x03);\n            // Bottom 3 bits\n            this.dataMask = /*(byte) */ (formatInfo & 0x07);\n        }\n        static numBitsDiffering(a /*int*/, b /*int*/) {\n            return Integer.bitCount(a ^ b);\n        }\n        /**\n         * @param maskedFormatInfo1 format info indicator, with mask still applied\n         * @param maskedFormatInfo2 second copy of same info; both are checked at the same time\n         *  to establish best match\n         * @return information about the format it specifies, or {@code null}\n         *  if doesn't seem to match any known pattern\n         */\n        static decodeFormatInformation(maskedFormatInfo1 /*int*/, maskedFormatInfo2 /*int*/) {\n            const formatInfo = FormatInformation.doDecodeFormatInformation(maskedFormatInfo1, maskedFormatInfo2);\n            if (formatInfo !== null) {\n                return formatInfo;\n            }\n            // Should return null, but, some QR codes apparently\n            // do not mask this info. Try again by actually masking the pattern\n            // first\n            return FormatInformation.doDecodeFormatInformation(maskedFormatInfo1 ^ FormatInformation.FORMAT_INFO_MASK_QR, maskedFormatInfo2 ^ FormatInformation.FORMAT_INFO_MASK_QR);\n        }\n        static doDecodeFormatInformation(maskedFormatInfo1 /*int*/, maskedFormatInfo2 /*int*/) {\n            // Find the int in FORMAT_INFO_DECODE_LOOKUP with fewest bits differing\n            let bestDifference = Number.MAX_SAFE_INTEGER;\n            let bestFormatInfo = 0;\n            for (const decodeInfo of FormatInformation.FORMAT_INFO_DECODE_LOOKUP) {\n                const targetInfo = decodeInfo[0];\n                if (targetInfo === maskedFormatInfo1 || targetInfo === maskedFormatInfo2) {\n                    // Found an exact match\n                    return new FormatInformation(decodeInfo[1]);\n                }\n                let bitsDifference = FormatInformation.numBitsDiffering(maskedFormatInfo1, targetInfo);\n                if (bitsDifference < bestDifference) {\n                    bestFormatInfo = decodeInfo[1];\n                    bestDifference = bitsDifference;\n                }\n                if (maskedFormatInfo1 !== maskedFormatInfo2) {\n                    // also try the other option\n                    bitsDifference = FormatInformation.numBitsDiffering(maskedFormatInfo2, targetInfo);\n                    if (bitsDifference < bestDifference) {\n                        bestFormatInfo = decodeInfo[1];\n                        bestDifference = bitsDifference;\n                    }\n                }\n            }\n            // Hamming distance of the 32 masked codes is 7, by construction, so <= 3 bits\n            // differing means we found a match\n            if (bestDifference <= 3) {\n                return new FormatInformation(bestFormatInfo);\n            }\n            return null;\n        }\n        getErrorCorrectionLevel() {\n            return this.errorCorrectionLevel;\n        }\n        getDataMask() {\n            return this.dataMask;\n        }\n        /*@Override*/\n        hashCode() {\n            return (this.errorCorrectionLevel.getBits() << 3) | this.dataMask;\n        }\n        /*@Override*/\n        equals(o) {\n            if (!(o instanceof FormatInformation)) {\n                return false;\n            }\n            const other = o;\n            return this.errorCorrectionLevel === other.errorCorrectionLevel &&\n                this.dataMask === other.dataMask;\n        }\n    }\n    FormatInformation.FORMAT_INFO_MASK_QR = 0x5412;\n    /**\n     * See ISO 18004:2006, Annex C, Table C.1\n     */\n    FormatInformation.FORMAT_INFO_DECODE_LOOKUP = [\n        Int32Array.from([0x5412, 0x00]),\n        Int32Array.from([0x5125, 0x01]),\n        Int32Array.from([0x5E7C, 0x02]),\n        Int32Array.from([0x5B4B, 0x03]),\n        Int32Array.from([0x45F9, 0x04]),\n        Int32Array.from([0x40CE, 0x05]),\n        Int32Array.from([0x4F97, 0x06]),\n        Int32Array.from([0x4AA0, 0x07]),\n        Int32Array.from([0x77C4, 0x08]),\n        Int32Array.from([0x72F3, 0x09]),\n        Int32Array.from([0x7DAA, 0x0A]),\n        Int32Array.from([0x789D, 0x0B]),\n        Int32Array.from([0x662F, 0x0C]),\n        Int32Array.from([0x6318, 0x0D]),\n        Int32Array.from([0x6C41, 0x0E]),\n        Int32Array.from([0x6976, 0x0F]),\n        Int32Array.from([0x1689, 0x10]),\n        Int32Array.from([0x13BE, 0x11]),\n        Int32Array.from([0x1CE7, 0x12]),\n        Int32Array.from([0x19D0, 0x13]),\n        Int32Array.from([0x0762, 0x14]),\n        Int32Array.from([0x0255, 0x15]),\n        Int32Array.from([0x0D0C, 0x16]),\n        Int32Array.from([0x083B, 0x17]),\n        Int32Array.from([0x355F, 0x18]),\n        Int32Array.from([0x3068, 0x19]),\n        Int32Array.from([0x3F31, 0x1A]),\n        Int32Array.from([0x3A06, 0x1B]),\n        Int32Array.from([0x24B4, 0x1C]),\n        Int32Array.from([0x2183, 0x1D]),\n        Int32Array.from([0x2EDA, 0x1E]),\n        Int32Array.from([0x2BED, 0x1F]),\n    ];\n\n    /**\n     * <p>Encapsulates a set of error-correction blocks in one symbol version. Most versions will\n     * use blocks of differing sizes within one version, so, this encapsulates the parameters for\n     * each set of blocks. It also holds the number of error-correction codewords per block since it\n     * will be the same across all blocks within one version.</p>\n     */\n    class ECBlocks$1 {\n        constructor(ecCodewordsPerBlock /*int*/, ...ecBlocks) {\n            this.ecCodewordsPerBlock = ecCodewordsPerBlock;\n            this.ecBlocks = ecBlocks;\n        }\n        getECCodewordsPerBlock() {\n            return this.ecCodewordsPerBlock;\n        }\n        getNumBlocks() {\n            let total = 0;\n            const ecBlocks = this.ecBlocks;\n            for (const ecBlock of ecBlocks) {\n                total += ecBlock.getCount();\n            }\n            return total;\n        }\n        getTotalECCodewords() {\n            return this.ecCodewordsPerBlock * this.getNumBlocks();\n        }\n        getECBlocks() {\n            return this.ecBlocks;\n        }\n    }\n\n    /**\n     * <p>Encapsulates the parameters for one error-correction block in one symbol version.\n     * This includes the number of data codewords, and the number of times a block with these\n     * parameters is used consecutively in the QR code version's format.</p>\n     */\n    class ECB$1 {\n        constructor(count /*int*/, dataCodewords /*int*/) {\n            this.count = count;\n            this.dataCodewords = dataCodewords;\n        }\n        getCount() {\n            return this.count;\n        }\n        getDataCodewords() {\n            return this.dataCodewords;\n        }\n    }\n\n    /*\n     * Copyright 2007 ZXing authors\n     *\n     * Licensed under the Apache License, Version 2.0 (the \"License\");\n     * you may not use this file except in compliance with the License.\n     * You may obtain a copy of the License at\n     *\n     *      http://www.apache.org/licenses/LICENSE-2.0\n     *\n     * Unless required by applicable law or agreed to in writing, software\n     * distributed under the License is distributed on an \"AS IS\" BASIS,\n     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n     * See the License for the specific language governing permissions and\n     * limitations under the License.\n     */\n    /**\n     * See ISO 18004:2006 Annex D\n     *\n     * @author Sean Owen\n     */\n    class Version$1 {\n        constructor(versionNumber /*int*/, alignmentPatternCenters, ...ecBlocks) {\n            this.versionNumber = versionNumber;\n            this.alignmentPatternCenters = alignmentPatternCenters;\n            this.ecBlocks = ecBlocks;\n            let total = 0;\n            const ecCodewords = ecBlocks[0].getECCodewordsPerBlock();\n            const ecbArray = ecBlocks[0].getECBlocks();\n            for (const ecBlock of ecbArray) {\n                total += ecBlock.getCount() * (ecBlock.getDataCodewords() + ecCodewords);\n            }\n            this.totalCodewords = total;\n        }\n        getVersionNumber() {\n            return this.versionNumber;\n        }\n        getAlignmentPatternCenters() {\n            return this.alignmentPatternCenters;\n        }\n        getTotalCodewords() {\n            return this.totalCodewords;\n        }\n        getDimensionForVersion() {\n            return 17 + 4 * this.versionNumber;\n        }\n        getECBlocksForLevel(ecLevel) {\n            return this.ecBlocks[ecLevel.getValue()];\n            // TYPESCRIPTPORT: original was using ordinal, and using the order of levels as defined in ErrorCorrectionLevel enum (LMQH)\n            // I will use the direct value from ErrorCorrectionLevelValues enum which in typescript goes to a number\n        }\n        /**\n         * <p>Deduces version information purely from QR Code dimensions.</p>\n         *\n         * @param dimension dimension in modules\n         * @return Version for a QR Code of that dimension\n         * @throws FormatException if dimension is not 1 mod 4\n         */\n        static getProvisionalVersionForDimension(dimension /*int*/) {\n            if (dimension % 4 !== 1) {\n                throw new FormatException();\n            }\n            try {\n                return this.getVersionForNumber((dimension - 17) / 4);\n            }\n            catch (ignored /*: IllegalArgumentException*/) {\n                throw new FormatException();\n            }\n        }\n        static getVersionForNumber(versionNumber /*int*/) {\n            if (versionNumber < 1 || versionNumber > 40) {\n                throw new IllegalArgumentException();\n            }\n            return Version$1.VERSIONS[versionNumber - 1];\n        }\n        static decodeVersionInformation(versionBits /*int*/) {\n            let bestDifference = Number.MAX_SAFE_INTEGER;\n            let bestVersion = 0;\n            for (let i = 0; i < Version$1.VERSION_DECODE_INFO.length; i++) {\n                const targetVersion = Version$1.VERSION_DECODE_INFO[i];\n                // Do the version info bits match exactly? done.\n                if (targetVersion === versionBits) {\n                    return Version$1.getVersionForNumber(i + 7);\n                }\n                // Otherwise see if this is the closest to a real version info bit string\n                // we have seen so far\n                const bitsDifference = FormatInformation.numBitsDiffering(versionBits, targetVersion);\n                if (bitsDifference < bestDifference) {\n                    bestVersion = i + 7;\n                    bestDifference = bitsDifference;\n                }\n            }\n            // We can tolerate up to 3 bits of error since no two version info codewords will\n            // differ in less than 8 bits.\n            if (bestDifference <= 3) {\n                return Version$1.getVersionForNumber(bestVersion);\n            }\n            // If we didn't find a close enough match, fail\n            return null;\n        }\n        /**\n         * See ISO 18004:2006 Annex E\n         */\n        buildFunctionPattern() {\n            const dimension = this.getDimensionForVersion();\n            const bitMatrix = new BitMatrix(dimension);\n            // Top left finder pattern + separator + format\n            bitMatrix.setRegion(0, 0, 9, 9);\n            // Top right finder pattern + separator + format\n            bitMatrix.setRegion(dimension - 8, 0, 8, 9);\n            // Bottom left finder pattern + separator + format\n            bitMatrix.setRegion(0, dimension - 8, 9, 8);\n            // Alignment patterns\n            const max = this.alignmentPatternCenters.length;\n            for (let x = 0; x < max; x++) {\n                const i = this.alignmentPatternCenters[x] - 2;\n                for (let y = 0; y < max; y++) {\n                    if ((x === 0 && (y === 0 || y === max - 1)) || (x === max - 1 && y === 0)) {\n                        // No alignment patterns near the three finder patterns\n                        continue;\n                    }\n                    bitMatrix.setRegion(this.alignmentPatternCenters[y] - 2, i, 5, 5);\n                }\n            }\n            // Vertical timing pattern\n            bitMatrix.setRegion(6, 9, 1, dimension - 17);\n            // Horizontal timing pattern\n            bitMatrix.setRegion(9, 6, dimension - 17, 1);\n            if (this.versionNumber > 6) {\n                // Version info, top right\n                bitMatrix.setRegion(dimension - 11, 0, 3, 6);\n                // Version info, bottom left\n                bitMatrix.setRegion(0, dimension - 11, 6, 3);\n            }\n            return bitMatrix;\n        }\n        /*@Override*/\n        toString() {\n            return '' + this.versionNumber;\n        }\n    }\n    /**\n       * See ISO 18004:2006 Annex D.\n       * Element i represents the raw version bits that specify version i + 7\n       */\n    Version$1.VERSION_DECODE_INFO = Int32Array.from([\n        0x07C94, 0x085BC, 0x09A99, 0x0A4D3, 0x0BBF6,\n        0x0C762, 0x0D847, 0x0E60D, 0x0F928, 0x10B78,\n        0x1145D, 0x12A17, 0x13532, 0x149A6, 0x15683,\n        0x168C9, 0x177EC, 0x18EC4, 0x191E1, 0x1AFAB,\n        0x1B08E, 0x1CC1A, 0x1D33F, 0x1ED75, 0x1F250,\n        0x209D5, 0x216F0, 0x228BA, 0x2379F, 0x24B0B,\n        0x2542E, 0x26A64, 0x27541, 0x28C69\n    ]);\n    /**\n       * See ISO 18004:2006 6.5.1 Table 9\n       */\n    Version$1.VERSIONS = [\n        new Version$1(1, new Int32Array(0), new ECBlocks$1(7, new ECB$1(1, 19)), new ECBlocks$1(10, new ECB$1(1, 16)), new ECBlocks$1(13, new ECB$1(1, 13)), new ECBlocks$1(17, new ECB$1(1, 9))),\n        new Version$1(2, Int32Array.from([6, 18]), new ECBlocks$1(10, new ECB$1(1, 34)), new ECBlocks$1(16, new ECB$1(1, 28)), new ECBlocks$1(22, new ECB$1(1, 22)), new ECBlocks$1(28, new ECB$1(1, 16))),\n        new Version$1(3, Int32Array.from([6, 22]), new ECBlocks$1(15, new ECB$1(1, 55)), new ECBlocks$1(26, new ECB$1(1, 44)), new ECBlocks$1(18, new ECB$1(2, 17)), new ECBlocks$1(22, new ECB$1(2, 13))),\n        new Version$1(4, Int32Array.from([6, 26]), new ECBlocks$1(20, new ECB$1(1, 80)), new ECBlocks$1(18, new ECB$1(2, 32)), new ECBlocks$1(26, new ECB$1(2, 24)), new ECBlocks$1(16, new ECB$1(4, 9))),\n        new Version$1(5, Int32Array.from([6, 30]), new ECBlocks$1(26, new ECB$1(1, 108)), new ECBlocks$1(24, new ECB$1(2, 43)), new ECBlocks$1(18, new ECB$1(2, 15), new ECB$1(2, 16)), new ECBlocks$1(22, new ECB$1(2, 11), new ECB$1(2, 12))),\n        new Version$1(6, Int32Array.from([6, 34]), new ECBlocks$1(18, new ECB$1(2, 68)), new ECBlocks$1(16, new ECB$1(4, 27)), new ECBlocks$1(24, new ECB$1(4, 19)), new ECBlocks$1(28, new ECB$1(4, 15))),\n        new Version$1(7, Int32Array.from([6, 22, 38]), new ECBlocks$1(20, new ECB$1(2, 78)), new ECBlocks$1(18, new ECB$1(4, 31)), new ECBlocks$1(18, new ECB$1(2, 14), new ECB$1(4, 15)), new ECBlocks$1(26, new ECB$1(4, 13), new ECB$1(1, 14))),\n        new Version$1(8, Int32Array.from([6, 24, 42]), new ECBlocks$1(24, new ECB$1(2, 97)), new ECBlocks$1(22, new ECB$1(2, 38), new ECB$1(2, 39)), new ECBlocks$1(22, new ECB$1(4, 18), new ECB$1(2, 19)), new ECBlocks$1(26, new ECB$1(4, 14), new ECB$1(2, 15))),\n        new Version$1(9, Int32Array.from([6, 26, 46]), new ECBlocks$1(30, new ECB$1(2, 116)), new ECBlocks$1(22, new ECB$1(3, 36), new ECB$1(2, 37)), new ECBlocks$1(20, new ECB$1(4, 16), new ECB$1(4, 17)), new ECBlocks$1(24, new ECB$1(4, 12), new ECB$1(4, 13))),\n        new Version$1(10, Int32Array.from([6, 28, 50]), new ECBlocks$1(18, new ECB$1(2, 68), new ECB$1(2, 69)), new ECBlocks$1(26, new ECB$1(4, 43), new ECB$1(1, 44)), new ECBlocks$1(24, new ECB$1(6, 19), new ECB$1(2, 20)), new ECBlocks$1(28, new ECB$1(6, 15), new ECB$1(2, 16))),\n        new Version$1(11, Int32Array.from([6, 30, 54]), new ECBlocks$1(20, new ECB$1(4, 81)), new ECBlocks$1(30, new ECB$1(1, 50), new ECB$1(4, 51)), new ECBlocks$1(28, new ECB$1(4, 22), new ECB$1(4, 23)), new ECBlocks$1(24, new ECB$1(3, 12), new ECB$1(8, 13))),\n        new Version$1(12, Int32Array.from([6, 32, 58]), new ECBlocks$1(24, new ECB$1(2, 92), new ECB$1(2, 93)), new ECBlocks$1(22, new ECB$1(6, 36), new ECB$1(2, 37)), new ECBlocks$1(26, new ECB$1(4, 20), new ECB$1(6, 21)), new ECBlocks$1(28, new ECB$1(7, 14), new ECB$1(4, 15))),\n        new Version$1(13, Int32Array.from([6, 34, 62]), new ECBlocks$1(26, new ECB$1(4, 107)), new ECBlocks$1(22, new ECB$1(8, 37), new ECB$1(1, 38)), new ECBlocks$1(24, new ECB$1(8, 20), new ECB$1(4, 21)), new ECBlocks$1(22, new ECB$1(12, 11), new ECB$1(4, 12))),\n        new Version$1(14, Int32Array.from([6, 26, 46, 66]), new ECBlocks$1(30, new ECB$1(3, 115), new ECB$1(1, 116)), new ECBlocks$1(24, new ECB$1(4, 40), new ECB$1(5, 41)), new ECBlocks$1(20, new ECB$1(11, 16), new ECB$1(5, 17)), new ECBlocks$1(24, new ECB$1(11, 12), new ECB$1(5, 13))),\n        new Version$1(15, Int32Array.from([6, 26, 48, 70]), new ECBlocks$1(22, new ECB$1(5, 87), new ECB$1(1, 88)), new ECBlocks$1(24, new ECB$1(5, 41), new ECB$1(5, 42)), new ECBlocks$1(30, new ECB$1(5, 24), new ECB$1(7, 25)), new ECBlocks$1(24, new ECB$1(11, 12), new ECB$1(7, 13))),\n        new Version$1(16, Int32Array.from([6, 26, 50, 74]), new ECBlocks$1(24, new ECB$1(5, 98), new ECB$1(1, 99)), new ECBlocks$1(28, new ECB$1(7, 45), new ECB$1(3, 46)), new ECBlocks$1(24, new ECB$1(15, 19), new ECB$1(2, 20)), new ECBlocks$1(30, new ECB$1(3, 15), new ECB$1(13, 16))),\n        new Version$1(17, Int32Array.from([6, 30, 54, 78]), new ECBlocks$1(28, new ECB$1(1, 107), new ECB$1(5, 108)), new ECBlocks$1(28, new ECB$1(10, 46), new ECB$1(1, 47)), new ECBlocks$1(28, new ECB$1(1, 22), new ECB$1(15, 23)), new ECBlocks$1(28, new ECB$1(2, 14), new ECB$1(17, 15))),\n        new Version$1(18, Int32Array.from([6, 30, 56, 82]), new ECBlocks$1(30, new ECB$1(5, 120), new ECB$1(1, 121)), new ECBlocks$1(26, new ECB$1(9, 43), new ECB$1(4, 44)), new ECBlocks$1(28, new ECB$1(17, 22), new ECB$1(1, 23)), new ECBlocks$1(28, new ECB$1(2, 14), new ECB$1(19, 15))),\n        new Version$1(19, Int32Array.from([6, 30, 58, 86]), new ECBlocks$1(28, new ECB$1(3, 113), new ECB$1(4, 114)), new ECBlocks$1(26, new ECB$1(3, 44), new ECB$1(11, 45)), new ECBlocks$1(26, new ECB$1(17, 21), new ECB$1(4, 22)), new ECBlocks$1(26, new ECB$1(9, 13), new ECB$1(16, 14))),\n        new Version$1(20, Int32Array.from([6, 34, 62, 90]), new ECBlocks$1(28, new ECB$1(3, 107), new ECB$1(5, 108)), new ECBlocks$1(26, new ECB$1(3, 41), new ECB$1(13, 42)), new ECBlocks$1(30, new ECB$1(15, 24), new ECB$1(5, 25)), new ECBlocks$1(28, new ECB$1(15, 15), new ECB$1(10, 16))),\n        new Version$1(21, Int32Array.from([6, 28, 50, 72, 94]), new ECBlocks$1(28, new ECB$1(4, 116), new ECB$1(4, 117)), new ECBlocks$1(26, new ECB$1(17, 42)), new ECBlocks$1(28, new ECB$1(17, 22), new ECB$1(6, 23)), new ECBlocks$1(30, new ECB$1(19, 16), new ECB$1(6, 17))),\n        new Version$1(22, Int32Array.from([6, 26, 50, 74, 98]), new ECBlocks$1(28, new ECB$1(2, 111), new ECB$1(7, 112)), new ECBlocks$1(28, new ECB$1(17, 46)), new ECBlocks$1(30, new ECB$1(7, 24), new ECB$1(16, 25)), new ECBlocks$1(24, new ECB$1(34, 13))),\n        new Version$1(23, Int32Array.from([6, 30, 54, 78, 102]), new ECBlocks$1(30, new ECB$1(4, 121), new ECB$1(5, 122)), new ECBlocks$1(28, new ECB$1(4, 47), new ECB$1(14, 48)), new ECBlocks$1(30, new ECB$1(11, 24), new ECB$1(14, 25)), new ECBlocks$1(30, new ECB$1(16, 15), new ECB$1(14, 16))),\n        new Version$1(24, Int32Array.from([6, 28, 54, 80, 106]), new ECBlocks$1(30, new ECB$1(6, 117), new ECB$1(4, 118)), new ECBlocks$1(28, new ECB$1(6, 45), new ECB$1(14, 46)), new ECBlocks$1(30, new ECB$1(11, 24), new ECB$1(16, 25)), new ECBlocks$1(30, new ECB$1(30, 16), new ECB$1(2, 17))),\n        new Version$1(25, Int32Array.from([6, 32, 58, 84, 110]), new ECBlocks$1(26, new ECB$1(8, 106), new ECB$1(4, 107)), new ECBlocks$1(28, new ECB$1(8, 47), new ECB$1(13, 48)), new ECBlocks$1(30, new ECB$1(7, 24), new ECB$1(22, 25)), new ECBlocks$1(30, new ECB$1(22, 15), new ECB$1(13, 16))),\n        new Version$1(26, Int32Array.from([6, 30, 58, 86, 114]), new ECBlocks$1(28, new ECB$1(10, 114), new ECB$1(2, 115)), new ECBlocks$1(28, new ECB$1(19, 46), new ECB$1(4, 47)), new ECBlocks$1(28, new ECB$1(28, 22), new ECB$1(6, 23)), new ECBlocks$1(30, new ECB$1(33, 16), new ECB$1(4, 17))),\n        new Version$1(27, Int32Array.from([6, 34, 62, 90, 118]), new ECBlocks$1(30, new ECB$1(8, 122), new ECB$1(4, 123)), new ECBlocks$1(28, new ECB$1(22, 45), new ECB$1(3, 46)), new ECBlocks$1(30, new ECB$1(8, 23), new ECB$1(26, 24)), new ECBlocks$1(30, new ECB$1(12, 15), new ECB$1(28, 16))),\n        new Version$1(28, Int32Array.from([6, 26, 50, 74, 98, 122]), new ECBlocks$1(30, new ECB$1(3, 117), new ECB$1(10, 118)), new ECBlocks$1(28, new ECB$1(3, 45), new ECB$1(23, 46)), new ECBlocks$1(30, new ECB$1(4, 24), new ECB$1(31, 25)), new ECBlocks$1(30, new ECB$1(11, 15), new ECB$1(31, 16))),\n        new Version$1(29, Int32Array.from([6, 30, 54, 78, 102, 126]), new ECBlocks$1(30, new ECB$1(7, 116), new ECB$1(7, 117)), new ECBlocks$1(28, new ECB$1(21, 45), new ECB$1(7, 46)), new ECBlocks$1(30, new ECB$1(1, 23), new ECB$1(37, 24)), new ECBlocks$1(30, new ECB$1(19, 15), new ECB$1(26, 16))),\n        new Version$1(30, Int32Array.from([6, 26, 52, 78, 104, 130]), new ECBlocks$1(30, new ECB$1(5, 115), new ECB$1(10, 116)), new ECBlocks$1(28, new ECB$1(19, 47), new ECB$1(10, 48)), new ECBlocks$1(30, new ECB$1(15, 24), new ECB$1(25, 25)), new ECBlocks$1(30, new ECB$1(23, 15), new ECB$1(25, 16))),\n        new Version$1(31, Int32Array.from([6, 30, 56, 82, 108, 134]), new ECBlocks$1(30, new ECB$1(13, 115), new ECB$1(3, 116)), new ECBlocks$1(28, new ECB$1(2, 46), new ECB$1(29, 47)), new ECBlocks$1(30, new ECB$1(42, 24), new ECB$1(1, 25)), new ECBlocks$1(30, new ECB$1(23, 15), new ECB$1(28, 16))),\n        new Version$1(32, Int32Array.from([6, 34, 60, 86, 112, 138]), new ECBlocks$1(30, new ECB$1(17, 115)), new ECBlocks$1(28, new ECB$1(10, 46), new ECB$1(23, 47)), new ECBlocks$1(30, new ECB$1(10, 24), new ECB$1(35, 25)), new ECBlocks$1(30, new ECB$1(19, 15), new ECB$1(35, 16))),\n        new Version$1(33, Int32Array.from([6, 30, 58, 86, 114, 142]), new ECBlocks$1(30, new ECB$1(17, 115), new ECB$1(1, 116)), new ECBlocks$1(28, new ECB$1(14, 46), new ECB$1(21, 47)), new ECBlocks$1(30, new ECB$1(29, 24), new ECB$1(19, 25)), new ECBlocks$1(30, new ECB$1(11, 15), new ECB$1(46, 16))),\n        new Version$1(34, Int32Array.from([6, 34, 62, 90, 118, 146]), new ECBlocks$1(30, new ECB$1(13, 115), new ECB$1(6, 116)), new ECBlocks$1(28, new ECB$1(14, 46), new ECB$1(23, 47)), new ECBlocks$1(30, new ECB$1(44, 24), new ECB$1(7, 25)), new ECBlocks$1(30, new ECB$1(59, 16), new ECB$1(1, 17))),\n        new Version$1(35, Int32Array.from([6, 30, 54, 78, 102, 126, 150]), new ECBlocks$1(30, new ECB$1(12, 121), new ECB$1(7, 122)), new ECBlocks$1(28, new ECB$1(12, 47), new ECB$1(26, 48)), new ECBlocks$1(30, new ECB$1(39, 24), new ECB$1(14, 25)), new ECBlocks$1(30, new ECB$1(22, 15), new ECB$1(41, 16))),\n        new Version$1(36, Int32Array.from([6, 24, 50, 76, 102, 128, 154]), new ECBlocks$1(30, new ECB$1(6, 121), new ECB$1(14, 122)), new ECBlocks$1(28, new ECB$1(6, 47), new ECB$1(34, 48)), new ECBlocks$1(30, new ECB$1(46, 24), new ECB$1(10, 25)), new ECBlocks$1(30, new ECB$1(2, 15), new ECB$1(64, 16))),\n        new Version$1(37, Int32Array.from([6, 28, 54, 80, 106, 132, 158]), new ECBlocks$1(30, new ECB$1(17, 122), new ECB$1(4, 123)), new ECBlocks$1(28, new ECB$1(29, 46), new ECB$1(14, 47)), new ECBlocks$1(30, new ECB$1(49, 24), new ECB$1(10, 25)), new ECBlocks$1(30, new ECB$1(24, 15), new ECB$1(46, 16))),\n        new Version$1(38, Int32Array.from([6, 32, 58, 84, 110, 136, 162]), new ECBlocks$1(30, new ECB$1(4, 122), new ECB$1(18, 123)), new ECBlocks$1(28, new ECB$1(13, 46), new ECB$1(32, 47)), new ECBlocks$1(30, new ECB$1(48, 24), new ECB$1(14, 25)), new ECBlocks$1(30, new ECB$1(42, 15), new ECB$1(32, 16))),\n        new Version$1(39, Int32Array.from([6, 26, 54, 82, 110, 138, 166]), new ECBlocks$1(30, new ECB$1(20, 117), new ECB$1(4, 118)), new ECBlocks$1(28, new ECB$1(40, 47), new ECB$1(7, 48)), new ECBlocks$1(30, new ECB$1(43, 24), new ECB$1(22, 25)), new ECBlocks$1(30, new ECB$1(10, 15), new ECB$1(67, 16))),\n        new Version$1(40, Int32Array.from([6, 30, 58, 86, 114, 142, 170]), new ECBlocks$1(30, new ECB$1(19, 118), new ECB$1(6, 119)), new ECBlocks$1(28, new ECB$1(18, 47), new ECB$1(31, 48)), new ECBlocks$1(30, new ECB$1(34, 24), new ECB$1(34, 25)), new ECBlocks$1(30, new ECB$1(20, 15), new ECB$1(61, 16)))\n    ];\n\n    /*\n     * Copyright 2007 ZXing authors\n     *\n     * Licensed under the Apache License, Version 2.0 (the \"License\");\n     * you may not use this file except in compliance with the License.\n     * You may obtain a copy of the License at\n     *\n     *      http://www.apache.org/licenses/LICENSE-2.0\n     *\n     * Unless required by applicable law or agreed to in writing, software\n     * distributed under the License is distributed on an \"AS IS\" BASIS,\n     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n     * See the License for the specific language governing permissions and\n     * limitations under the License.\n     */\n    var DataMaskValues;\n    (function (DataMaskValues) {\n        DataMaskValues[DataMaskValues[\"DATA_MASK_000\"] = 0] = \"DATA_MASK_000\";\n        DataMaskValues[DataMaskValues[\"DATA_MASK_001\"] = 1] = \"DATA_MASK_001\";\n        DataMaskValues[DataMaskValues[\"DATA_MASK_010\"] = 2] = \"DATA_MASK_010\";\n        DataMaskValues[DataMaskValues[\"DATA_MASK_011\"] = 3] = \"DATA_MASK_011\";\n        DataMaskValues[DataMaskValues[\"DATA_MASK_100\"] = 4] = \"DATA_MASK_100\";\n        DataMaskValues[DataMaskValues[\"DATA_MASK_101\"] = 5] = \"DATA_MASK_101\";\n        DataMaskValues[DataMaskValues[\"DATA_MASK_110\"] = 6] = \"DATA_MASK_110\";\n        DataMaskValues[DataMaskValues[\"DATA_MASK_111\"] = 7] = \"DATA_MASK_111\";\n    })(DataMaskValues || (DataMaskValues = {}));\n    /**\n     * <p>Encapsulates data masks for the data bits in a QR code, per ISO 18004:2006 6.8. Implementations\n     * of this class can un-mask a raw BitMatrix. For simplicity, they will unmask the entire BitMatrix,\n     * including areas used for finder patterns, timing patterns, etc. These areas should be unused\n     * after the point they are unmasked anyway.</p>\n     *\n     * <p>Note that the diagram in section 6.8.1 is misleading since it indicates that i is column position\n     * and j is row position. In fact, as the text says, i is row position and j is column position.</p>\n     *\n     * @author Sean Owen\n     */\n    class DataMask {\n        // See ISO 18004:2006 6.8.1\n        constructor(value, isMasked) {\n            this.value = value;\n            this.isMasked = isMasked;\n        }\n        // End of enum constants.\n        /**\n         * <p>Implementations of this method reverse the data masking process applied to a QR Code and\n         * make its bits ready to read.</p>\n         *\n         * @param bits representation of QR Code bits\n         * @param dimension dimension of QR Code, represented by bits, being unmasked\n         */\n        unmaskBitMatrix(bits, dimension /*int*/) {\n            for (let i = 0; i < dimension; i++) {\n                for (let j = 0; j < dimension; j++) {\n                    if (this.isMasked(i, j)) {\n                        bits.flip(j, i);\n                    }\n                }\n            }\n        }\n    }\n    DataMask.values = new Map([\n        /**\n         * 000: mask bits for which (x + y) mod 2 == 0\n         */\n        [DataMaskValues.DATA_MASK_000, new DataMask(DataMaskValues.DATA_MASK_000, (i /*int*/, j /*int*/) => { return ((i + j) & 0x01) === 0; })],\n        /**\n         * 001: mask bits for which x mod 2 == 0\n         */\n        [DataMaskValues.DATA_MASK_001, new DataMask(DataMaskValues.DATA_MASK_001, (i /*int*/, j /*int*/) => { return (i & 0x01) === 0; })],\n        /**\n         * 010: mask bits for which y mod 3 == 0\n         */\n        [DataMaskValues.DATA_MASK_010, new DataMask(DataMaskValues.DATA_MASK_010, (i /*int*/, j /*int*/) => { return j % 3 === 0; })],\n        /**\n         * 011: mask bits for which (x + y) mod 3 == 0\n         */\n        [DataMaskValues.DATA_MASK_011, new DataMask(DataMaskValues.DATA_MASK_011, (i /*int*/, j /*int*/) => { return (i + j) % 3 === 0; })],\n        /**\n         * 100: mask bits for which (x/2 + y/3) mod 2 == 0\n         */\n        [DataMaskValues.DATA_MASK_100, new DataMask(DataMaskValues.DATA_MASK_100, (i /*int*/, j /*int*/) => { return ((Math.floor(i / 2) + Math.floor(j / 3)) & 0x01) === 0; })],\n        /**\n         * 101: mask bits for which xy mod 2 + xy mod 3 == 0\n         * equivalently, such that xy mod 6 == 0\n         */\n        [DataMaskValues.DATA_MASK_101, new DataMask(DataMaskValues.DATA_MASK_101, (i /*int*/, j /*int*/) => { return (i * j) % 6 === 0; })],\n        /**\n         * 110: mask bits for which (xy mod 2 + xy mod 3) mod 2 == 0\n         * equivalently, such that xy mod 6 < 3\n         */\n        [DataMaskValues.DATA_MASK_110, new DataMask(DataMaskValues.DATA_MASK_110, (i /*int*/, j /*int*/) => { return ((i * j) % 6) < 3; })],\n        /**\n         * 111: mask bits for which ((x+y)mod 2 + xy mod 3) mod 2 == 0\n         * equivalently, such that (x + y + xy mod 3) mod 2 == 0\n         */\n        [DataMaskValues.DATA_MASK_111, new DataMask(DataMaskValues.DATA_MASK_111, (i /*int*/, j /*int*/) => { return ((i + j + ((i * j) % 3)) & 0x01) === 0; })],\n    ]);\n\n    /*\n     * Copyright 2007 ZXing authors\n     *\n     * Licensed under the Apache License, Version 2.0 (the \"License\");\n     * you may not use this file except in compliance with the License.\n     * You may obtain a copy of the License at\n     *\n     *      http://www.apache.org/licenses/LICENSE-2.0\n     *\n     * Unless required by applicable law or agreed to in writing, software\n     * distributed under the License is distributed on an \"AS IS\" BASIS,\n     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n     * See the License for the specific language governing permissions and\n     * limitations under the License.\n     */\n    /**\n     * @author Sean Owen\n     */\n    class BitMatrixParser$1 {\n        /**\n         * @param bitMatrix {@link BitMatrix} to parse\n         * @throws FormatException if dimension is not >= 21 and 1 mod 4\n         */\n        constructor(bitMatrix) {\n            const dimension = bitMatrix.getHeight();\n            if (dimension < 21 || (dimension & 0x03) !== 1) {\n                throw new FormatException();\n            }\n            this.bitMatrix = bitMatrix;\n        }\n        /**\n         * <p>Reads format information from one of its two locations within the QR Code.</p>\n         *\n         * @return {@link FormatInformation} encapsulating the QR Code's format info\n         * @throws FormatException if both format information locations cannot be parsed as\n         * the valid encoding of format information\n         */\n        readFormatInformation() {\n            if (this.parsedFormatInfo !== null && this.parsedFormatInfo !== undefined) {\n                return this.parsedFormatInfo;\n            }\n            // Read top-left format info bits\n            let formatInfoBits1 = 0;\n            for (let i = 0; i < 6; i++) {\n                formatInfoBits1 = this.copyBit(i, 8, formatInfoBits1);\n            }\n            // .. and skip a bit in the timing pattern ...\n            formatInfoBits1 = this.copyBit(7, 8, formatInfoBits1);\n            formatInfoBits1 = this.copyBit(8, 8, formatInfoBits1);\n            formatInfoBits1 = this.copyBit(8, 7, formatInfoBits1);\n            // .. and skip a bit in the timing pattern ...\n            for (let j = 5; j >= 0; j--) {\n                formatInfoBits1 = this.copyBit(8, j, formatInfoBits1);\n            }\n            // Read the top-right/bottom-left pattern too\n            const dimension = this.bitMatrix.getHeight();\n            let formatInfoBits2 = 0;\n            const jMin = dimension - 7;\n            for (let j = dimension - 1; j >= jMin; j--) {\n                formatInfoBits2 = this.copyBit(8, j, formatInfoBits2);\n            }\n            for (let i = dimension - 8; i < dimension; i++) {\n                formatInfoBits2 = this.copyBit(i, 8, formatInfoBits2);\n            }\n            this.parsedFormatInfo = FormatInformation.decodeFormatInformation(formatInfoBits1, formatInfoBits2);\n            if (this.parsedFormatInfo !== null) {\n                return this.parsedFormatInfo;\n            }\n            throw new FormatException();\n        }\n        /**\n         * <p>Reads version information from one of its two locations within the QR Code.</p>\n         *\n         * @return {@link Version} encapsulating the QR Code's version\n         * @throws FormatException if both version information locations cannot be parsed as\n         * the valid encoding of version information\n         */\n        readVersion() {\n            if (this.parsedVersion !== null && this.parsedVersion !== undefined) {\n                return this.parsedVersion;\n            }\n            const dimension = this.bitMatrix.getHeight();\n            const provisionalVersion = Math.floor((dimension - 17) / 4);\n            if (provisionalVersion <= 6) {\n                return Version$1.getVersionForNumber(provisionalVersion);\n            }\n            // Read top-right version info: 3 wide by 6 tall\n            let versionBits = 0;\n            const ijMin = dimension - 11;\n            for (let j = 5; j >= 0; j--) {\n                for (let i = dimension - 9; i >= ijMin; i--) {\n                    versionBits = this.copyBit(i, j, versionBits);\n                }\n            }\n            let theParsedVersion = Version$1.decodeVersionInformation(versionBits);\n            if (theParsedVersion !== null && theParsedVersion.getDimensionForVersion() === dimension) {\n                this.parsedVersion = theParsedVersion;\n                return theParsedVersion;\n            }\n            // Hmm, failed. Try bottom left: 6 wide by 3 tall\n            versionBits = 0;\n            for (let i = 5; i >= 0; i--) {\n                for (let j = dimension - 9; j >= ijMin; j--) {\n                    versionBits = this.copyBit(i, j, versionBits);\n                }\n            }\n            theParsedVersion = Version$1.decodeVersionInformation(versionBits);\n            if (theParsedVersion !== null && theParsedVersion.getDimensionForVersion() === dimension) {\n                this.parsedVersion = theParsedVersion;\n                return theParsedVersion;\n            }\n            throw new FormatException();\n        }\n        copyBit(i /*int*/, j /*int*/, versionBits /*int*/) {\n            const bit = this.isMirror ? this.bitMatrix.get(j, i) : this.bitMatrix.get(i, j);\n            return bit ? (versionBits << 1) | 0x1 : versionBits << 1;\n        }\n        /**\n         * <p>Reads the bits in the {@link BitMatrix} representing the finder pattern in the\n         * correct order in order to reconstruct the codewords bytes contained within the\n         * QR Code.</p>\n         *\n         * @return bytes encoded within the QR Code\n         * @throws FormatException if the exact number of bytes expected is not read\n         */\n        readCodewords() {\n            const formatInfo = this.readFormatInformation();\n            const version = this.readVersion();\n            // Get the data mask for the format used in this QR Code. This will exclude\n            // some bits from reading as we wind through the bit matrix.\n            const dataMask = DataMask.values.get(formatInfo.getDataMask());\n            const dimension = this.bitMatrix.getHeight();\n            dataMask.unmaskBitMatrix(this.bitMatrix, dimension);\n            const functionPattern = version.buildFunctionPattern();\n            let readingUp = true;\n            const result = new Uint8Array(version.getTotalCodewords());\n            let resultOffset = 0;\n            let currentByte = 0;\n            let bitsRead = 0;\n            // Read columns in pairs, from right to left\n            for (let j = dimension - 1; j > 0; j -= 2) {\n                if (j === 6) {\n                    // Skip whole column with vertical alignment pattern\n                    // saves time and makes the other code proceed more cleanly\n                    j--;\n                }\n                // Read alternatingly from bottom to top then top to bottom\n                for (let count = 0; count < dimension; count++) {\n                    const i = readingUp ? dimension - 1 - count : count;\n                    for (let col = 0; col < 2; col++) {\n                        // Ignore bits covered by the function pattern\n                        if (!functionPattern.get(j - col, i)) {\n                            // Read a bit\n                            bitsRead++;\n                            currentByte <<= 1;\n                            if (this.bitMatrix.get(j - col, i)) {\n                                currentByte |= 1;\n                            }\n                            // If we've made a whole byte, save it off\n                            if (bitsRead === 8) {\n                                result[resultOffset++] = /*(byte) */ currentByte;\n                                bitsRead = 0;\n                                currentByte = 0;\n                            }\n                        }\n                    }\n                }\n                readingUp = !readingUp; // readingUp ^= true; // readingUp = !readingUp; // switch directions\n            }\n            if (resultOffset !== version.getTotalCodewords()) {\n                throw new FormatException();\n            }\n            return result;\n        }\n        /**\n         * Revert the mask removal done while reading the code words. The bit matrix should revert to its original state.\n         */\n        remask() {\n            if (this.parsedFormatInfo === null) {\n                return; // We have no format information, and have no data mask\n            }\n            const dataMask = DataMask.values[this.parsedFormatInfo.getDataMask()];\n            const dimension = this.bitMatrix.getHeight();\n            dataMask.unmaskBitMatrix(this.bitMatrix, dimension);\n        }\n        /**\n         * Prepare the parser for a mirrored operation.\n         * This flag has effect only on the {@link #readFormatInformation()} and the\n         * {@link #readVersion()}. Before proceeding with {@link #readCodewords()} the\n         * {@link #mirror()} method should be called.\n         *\n         * @param mirror Whether to read version and format information mirrored.\n         */\n        setMirror(isMirror) {\n            this.parsedVersion = null;\n            this.parsedFormatInfo = null;\n            this.isMirror = isMirror;\n        }\n        /** Mirror the bit matrix in order to attempt a second reading. */\n        mirror() {\n            const bitMatrix = this.bitMatrix;\n            for (let x = 0, width = bitMatrix.getWidth(); x < width; x++) {\n                for (let y = x + 1, height = bitMatrix.getHeight(); y < height; y++) {\n                    if (bitMatrix.get(x, y) !== bitMatrix.get(y, x)) {\n                        bitMatrix.flip(y, x);\n                        bitMatrix.flip(x, y);\n                    }\n                }\n            }\n        }\n    }\n\n    /*\n     * Copyright 2007 ZXing authors\n     *\n     * Licensed under the Apache License, Version 2.0 (the \"License\");\n     * you may not use this file except in compliance with the License.\n     * You may obtain a copy of the License at\n     *\n     *      http://www.apache.org/licenses/LICENSE-2.0\n     *\n     * Unless required by applicable law or agreed to in writing, software\n     * distributed under the License is distributed on an \"AS IS\" BASIS,\n     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n     * See the License for the specific language governing permissions and\n     * limitations under the License.\n     */\n    /**\n     * <p>Encapsulates a block of data within a QR Code. QR Codes may split their data into\n     * multiple blocks, each of which is a unit of data and error-correction codewords. Each\n     * is represented by an instance of this class.</p>\n     *\n     * @author Sean Owen\n     */\n    class DataBlock$1 {\n        constructor(numDataCodewords /*int*/, codewords) {\n            this.numDataCodewords = numDataCodewords;\n            this.codewords = codewords;\n        }\n        /**\n         * <p>When QR Codes use multiple data blocks, they are actually interleaved.\n         * That is, the first byte of data block 1 to n is written, then the second bytes, and so on. This\n         * method will separate the data into original blocks.</p>\n         *\n         * @param rawCodewords bytes as read directly from the QR Code\n         * @param version version of the QR Code\n         * @param ecLevel error-correction level of the QR Code\n         * @return DataBlocks containing original bytes, \"de-interleaved\" from representation in the\n         *         QR Code\n         */\n        static getDataBlocks(rawCodewords, version, ecLevel) {\n            if (rawCodewords.length !== version.getTotalCodewords()) {\n                throw new IllegalArgumentException();\n            }\n            // Figure out the number and size of data blocks used by this version and\n            // error correction level\n            const ecBlocks = version.getECBlocksForLevel(ecLevel);\n            // First count the total number of data blocks\n            let totalBlocks = 0;\n            const ecBlockArray = ecBlocks.getECBlocks();\n            for (const ecBlock of ecBlockArray) {\n                totalBlocks += ecBlock.getCount();\n            }\n            // Now establish DataBlocks of the appropriate size and number of data codewords\n            const result = new Array(totalBlocks);\n            let numResultBlocks = 0;\n            for (const ecBlock of ecBlockArray) {\n                for (let i = 0; i < ecBlock.getCount(); i++) {\n                    const numDataCodewords = ecBlock.getDataCodewords();\n                    const numBlockCodewords = ecBlocks.getECCodewordsPerBlock() + numDataCodewords;\n                    result[numResultBlocks++] = new DataBlock$1(numDataCodewords, new Uint8Array(numBlockCodewords));\n                }\n            }\n            // All blocks have the same amount of data, except that the last n\n            // (where n may be 0) have 1 more byte. Figure out where these start.\n            const shorterBlocksTotalCodewords = result[0].codewords.length;\n            let longerBlocksStartAt = result.length - 1;\n            // TYPESCRIPTPORT: check length is correct here\n            while (longerBlocksStartAt >= 0) {\n                const numCodewords = result[longerBlocksStartAt].codewords.length;\n                if (numCodewords === shorterBlocksTotalCodewords) {\n                    break;\n                }\n                longerBlocksStartAt--;\n            }\n            longerBlocksStartAt++;\n            const shorterBlocksNumDataCodewords = shorterBlocksTotalCodewords - ecBlocks.getECCodewordsPerBlock();\n            // The last elements of result may be 1 element longer\n            // first fill out as many elements as all of them have\n            let rawCodewordsOffset = 0;\n            for (let i = 0; i < shorterBlocksNumDataCodewords; i++) {\n                for (let j = 0; j < numResultBlocks; j++) {\n                    result[j].codewords[i] = rawCodewords[rawCodewordsOffset++];\n                }\n            }\n            // Fill out the last data block in the longer ones\n            for (let j = longerBlocksStartAt; j < numResultBlocks; j++) {\n                result[j].codewords[shorterBlocksNumDataCodewords] = rawCodewords[rawCodewordsOffset++];\n            }\n            // Now add in error correction blocks\n            const max = result[0].codewords.length;\n            for (let i = shorterBlocksNumDataCodewords; i < max; i++) {\n                for (let j = 0; j < numResultBlocks; j++) {\n                    const iOffset = j < longerBlocksStartAt ? i : i + 1;\n                    result[j].codewords[iOffset] = rawCodewords[rawCodewordsOffset++];\n                }\n            }\n            return result;\n        }\n        getNumDataCodewords() {\n            return this.numDataCodewords;\n        }\n        getCodewords() {\n            return this.codewords;\n        }\n    }\n\n    /*\n     * Copyright 2007 ZXing authors\n     *\n     * Licensed under the Apache License, Version 2.0 (the \"License\");\n     * you may not use this file except in compliance with the License.\n     * You may obtain a copy of the License at\n     *\n     *      http://www.apache.org/licenses/LICENSE-2.0\n     *\n     * Unless required by applicable law or agreed to in writing, software\n     * distributed under the License is distributed on an \"AS IS\" BASIS,\n     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n     * See the License for the specific language governing permissions and\n     * limitations under the License.\n     */\n    var ModeValues;\n    (function (ModeValues) {\n        ModeValues[ModeValues[\"TERMINATOR\"] = 0] = \"TERMINATOR\";\n        ModeValues[ModeValues[\"NUMERIC\"] = 1] = \"NUMERIC\";\n        ModeValues[ModeValues[\"ALPHANUMERIC\"] = 2] = \"ALPHANUMERIC\";\n        ModeValues[ModeValues[\"STRUCTURED_APPEND\"] = 3] = \"STRUCTURED_APPEND\";\n        ModeValues[ModeValues[\"BYTE\"] = 4] = \"BYTE\";\n        ModeValues[ModeValues[\"ECI\"] = 5] = \"ECI\";\n        ModeValues[ModeValues[\"KANJI\"] = 6] = \"KANJI\";\n        ModeValues[ModeValues[\"FNC1_FIRST_POSITION\"] = 7] = \"FNC1_FIRST_POSITION\";\n        ModeValues[ModeValues[\"FNC1_SECOND_POSITION\"] = 8] = \"FNC1_SECOND_POSITION\";\n        /** See GBT 18284-2000; \"Hanzi\" is a transliteration of this mode name. */\n        ModeValues[ModeValues[\"HANZI\"] = 9] = \"HANZI\";\n    })(ModeValues || (ModeValues = {}));\n    /**\n     * <p>See ISO 18004:2006, 6.4.1, Tables 2 and 3. This enum encapsulates the various modes in which\n     * data can be encoded to bits in the QR code standard.</p>\n     *\n     * @author Sean Owen\n     */\n    class Mode$1 {\n        constructor(value, stringValue, characterCountBitsForVersions, bits /*int*/) {\n            this.value = value;\n            this.stringValue = stringValue;\n            this.characterCountBitsForVersions = characterCountBitsForVersions;\n            this.bits = bits;\n            Mode$1.FOR_BITS.set(bits, this);\n            Mode$1.FOR_VALUE.set(value, this);\n        }\n        /**\n         * @param bits four bits encoding a QR Code data mode\n         * @return Mode encoded by these bits\n         * @throws IllegalArgumentException if bits do not correspond to a known mode\n         */\n        static forBits(bits /*int*/) {\n            const mode = Mode$1.FOR_BITS.get(bits);\n            if (undefined === mode) {\n                throw new IllegalArgumentException();\n            }\n            return mode;\n        }\n        /**\n         * @param version version in question\n         * @return number of bits used, in this QR Code symbol {@link Version}, to encode the\n         *         count of characters that will follow encoded in this Mode\n         */\n        getCharacterCountBits(version) {\n            const versionNumber = version.getVersionNumber();\n            let offset;\n            if (versionNumber <= 9) {\n                offset = 0;\n            }\n            else if (versionNumber <= 26) {\n                offset = 1;\n            }\n            else {\n                offset = 2;\n            }\n            return this.characterCountBitsForVersions[offset];\n        }\n        getValue() {\n            return this.value;\n        }\n        getBits() {\n            return this.bits;\n        }\n        equals(o) {\n            if (!(o instanceof Mode$1)) {\n                return false;\n            }\n            const other = o;\n            return this.value === other.value;\n        }\n        toString() {\n            return this.stringValue;\n        }\n    }\n    Mode$1.FOR_BITS = new Map();\n    Mode$1.FOR_VALUE = new Map();\n    Mode$1.TERMINATOR = new Mode$1(ModeValues.TERMINATOR, 'TERMINATOR', Int32Array.from([0, 0, 0]), 0x00); // Not really a mode...\n    Mode$1.NUMERIC = new Mode$1(ModeValues.NUMERIC, 'NUMERIC', Int32Array.from([10, 12, 14]), 0x01);\n    Mode$1.ALPHANUMERIC = new Mode$1(ModeValues.ALPHANUMERIC, 'ALPHANUMERIC', Int32Array.from([9, 11, 13]), 0x02);\n    Mode$1.STRUCTURED_APPEND = new Mode$1(ModeValues.STRUCTURED_APPEND, 'STRUCTURED_APPEND', Int32Array.from([0, 0, 0]), 0x03); // Not supported\n    Mode$1.BYTE = new Mode$1(ModeValues.BYTE, 'BYTE', Int32Array.from([8, 16, 16]), 0x04);\n    Mode$1.ECI = new Mode$1(ModeValues.ECI, 'ECI', Int32Array.from([0, 0, 0]), 0x07); // character counts don't apply\n    Mode$1.KANJI = new Mode$1(ModeValues.KANJI, 'KANJI', Int32Array.from([8, 10, 12]), 0x08);\n    Mode$1.FNC1_FIRST_POSITION = new Mode$1(ModeValues.FNC1_FIRST_POSITION, 'FNC1_FIRST_POSITION', Int32Array.from([0, 0, 0]), 0x05);\n    Mode$1.FNC1_SECOND_POSITION = new Mode$1(ModeValues.FNC1_SECOND_POSITION, 'FNC1_SECOND_POSITION', Int32Array.from([0, 0, 0]), 0x09);\n    /** See GBT 18284-2000; \"Hanzi\" is a transliteration of this mode name. */\n    Mode$1.HANZI = new Mode$1(ModeValues.HANZI, 'HANZI', Int32Array.from([8, 10, 12]), 0x0D);\n\n    /*\n     * Copyright 2007 ZXing authors\n     *\n     * Licensed under the Apache License, Version 2.0 (the \"License\");\n     * you may not use this file except in compliance with the License.\n     * You may obtain a copy of the License at\n     *\n     *      http://www.apache.org/licenses/LICENSE-2.0\n     *\n     * Unless required by applicable law or agreed to in writing, software\n     * distributed under the License is distributed on an \"AS IS\" BASIS,\n     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n     * See the License for the specific language governing permissions and\n     * limitations under the License.\n     */\n    /*import java.io.UnsupportedEncodingException;*/\n    /*import java.util.ArrayList;*/\n    /*import java.util.Collection;*/\n    /*import java.util.List;*/\n    /*import java.util.Map;*/\n    /**\n     * <p>QR Codes can encode text as bits in one of several modes, and can use multiple modes\n     * in one QR Code. This class decodes the bits back into text.</p>\n     *\n     * <p>See ISO 18004:2006, 6.4.3 - 6.4.7</p>\n     *\n     * @author Sean Owen\n     */\n    class DecodedBitStreamParser$1 {\n        static decode(bytes, version, ecLevel, hints) {\n            const bits = new BitSource(bytes);\n            let result = new StringBuilder();\n            const byteSegments = new Array(); // 1\n            // TYPESCRIPTPORT: I do not use constructor with size 1 as in original Java means capacity and the array length is checked below\n            let symbolSequence = -1;\n            let parityData = -1;\n            try {\n                let currentCharacterSetECI = null;\n                let fc1InEffect = false;\n                let mode;\n                do {\n                    // While still another segment to read...\n                    if (bits.available() < 4) {\n                        // OK, assume we're done. Really, a TERMINATOR mode should have been recorded here\n                        mode = Mode$1.TERMINATOR;\n                    }\n                    else {\n                        const modeBits = bits.readBits(4);\n                        mode = Mode$1.forBits(modeBits); // mode is encoded by 4 bits\n                    }\n                    switch (mode) {\n                        case Mode$1.TERMINATOR:\n                            break;\n                        case Mode$1.FNC1_FIRST_POSITION:\n                        case Mode$1.FNC1_SECOND_POSITION:\n                            // We do little with FNC1 except alter the parsed result a bit according to the spec\n                            fc1InEffect = true;\n                            break;\n                        case Mode$1.STRUCTURED_APPEND:\n                            if (bits.available() < 16) {\n                                throw new FormatException();\n                            }\n                            // sequence number and parity is added later to the result metadata\n                            // Read next 8 bits (symbol sequence #) and 8 bits (data: parity), then continue\n                            symbolSequence = bits.readBits(8);\n                            parityData = bits.readBits(8);\n                            break;\n                        case Mode$1.ECI:\n                            // Count doesn't apply to ECI\n                            const value = DecodedBitStreamParser$1.parseECIValue(bits);\n                            currentCharacterSetECI = CharacterSetECI.getCharacterSetECIByValue(value);\n                            if (currentCharacterSetECI === null) {\n                                throw new FormatException();\n                            }\n                            break;\n                        case Mode$1.HANZI:\n                            // First handle Hanzi mode which does not start with character count\n                            // Chinese mode contains a sub set indicator right after mode indicator\n                            const subset = bits.readBits(4);\n                            const countHanzi = bits.readBits(mode.getCharacterCountBits(version));\n                            if (subset === DecodedBitStreamParser$1.GB2312_SUBSET) {\n                                DecodedBitStreamParser$1.decodeHanziSegment(bits, result, countHanzi);\n                            }\n                            break;\n                        default:\n                            // \"Normal\" QR code modes:\n                            // How many characters will follow, encoded in this mode?\n                            const count = bits.readBits(mode.getCharacterCountBits(version));\n                            switch (mode) {\n                                case Mode$1.NUMERIC:\n                                    DecodedBitStreamParser$1.decodeNumericSegment(bits, result, count);\n                                    break;\n                                case Mode$1.ALPHANUMERIC:\n                                    DecodedBitStreamParser$1.decodeAlphanumericSegment(bits, result, count, fc1InEffect);\n                                    break;\n                                case Mode$1.BYTE:\n                                    DecodedBitStreamParser$1.decodeByteSegment(bits, result, count, currentCharacterSetECI, byteSegments, hints);\n                                    break;\n                                case Mode$1.KANJI:\n                                    DecodedBitStreamParser$1.decodeKanjiSegment(bits, result, count);\n                                    break;\n                                default:\n                                    throw new FormatException();\n                            }\n                            break;\n                    }\n                } while (mode !== Mode$1.TERMINATOR);\n            }\n            catch (iae /*: IllegalArgumentException*/) {\n                // from readBits() calls\n                throw new FormatException();\n            }\n            return new DecoderResult(bytes, result.toString(), byteSegments.length === 0 ? null : byteSegments, ecLevel === null ? null : ecLevel.toString(), symbolSequence, parityData);\n        }\n        /**\n         * See specification GBT 18284-2000\n         */\n        static decodeHanziSegment(bits, result, count /*int*/) {\n            // Don't crash trying to read more bits than we have available.\n            if (count * 13 > bits.available()) {\n                throw new FormatException();\n            }\n            // Each character will require 2 bytes. Read the characters as 2-byte pairs\n            // and decode as GB2312 afterwards\n            const buffer = new Uint8Array(2 * count);\n            let offset = 0;\n            while (count > 0) {\n                // Each 13 bits encodes a 2-byte character\n                const twoBytes = bits.readBits(13);\n                let assembledTwoBytes = (((twoBytes / 0x060) << 8) & 0xFFFFFFFF) | (twoBytes % 0x060);\n                if (assembledTwoBytes < 0x003BF) {\n                    // In the 0xA1A1 to 0xAAFE range\n                    assembledTwoBytes += 0x0A1A1;\n                }\n                else {\n                    // In the 0xB0A1 to 0xFAFE range\n                    assembledTwoBytes += 0x0A6A1;\n                }\n                buffer[offset] = /*(byte) */ ((assembledTwoBytes >> 8) & 0xFF);\n                buffer[offset + 1] = /*(byte) */ (assembledTwoBytes & 0xFF);\n                offset += 2;\n                count--;\n            }\n            try {\n                result.append(StringEncoding.decode(buffer, StringUtils.GB2312));\n                // TYPESCRIPTPORT: TODO: implement GB2312 decode. StringView from MDN could be a starting point\n            }\n            catch (ignored /*: UnsupportedEncodingException*/) {\n                throw new FormatException(ignored);\n            }\n        }\n        static decodeKanjiSegment(bits, result, count /*int*/) {\n            // Don't crash trying to read more bits than we have available.\n            if (count * 13 > bits.available()) {\n                throw new FormatException();\n            }\n            // Each character will require 2 bytes. Read the characters as 2-byte pairs\n            // and decode as Shift_JIS afterwards\n            const buffer = new Uint8Array(2 * count);\n            let offset = 0;\n            while (count > 0) {\n                // Each 13 bits encodes a 2-byte character\n                const twoBytes = bits.readBits(13);\n                let assembledTwoBytes = (((twoBytes / 0x0C0) << 8) & 0xFFFFFFFF) | (twoBytes % 0x0C0);\n                if (assembledTwoBytes < 0x01F00) {\n                    // In the 0x8140 to 0x9FFC range\n                    assembledTwoBytes += 0x08140;\n                }\n                else {\n                    // In the 0xE040 to 0xEBBF range\n                    assembledTwoBytes += 0x0C140;\n                }\n                buffer[offset] = /*(byte) */ (assembledTwoBytes >> 8);\n                buffer[offset + 1] = /*(byte) */ assembledTwoBytes;\n                offset += 2;\n                count--;\n            }\n            // Shift_JIS may not be supported in some environments:\n            try {\n                result.append(StringEncoding.decode(buffer, StringUtils.SHIFT_JIS));\n                // TYPESCRIPTPORT: TODO: implement SHIFT_JIS decode. StringView from MDN could be a starting point\n            }\n            catch (ignored /*: UnsupportedEncodingException*/) {\n                throw new FormatException(ignored);\n            }\n        }\n        static decodeByteSegment(bits, result, count /*int*/, currentCharacterSetECI, byteSegments, hints) {\n            // Don't crash trying to read more bits than we have available.\n            if (8 * count > bits.available()) {\n                throw new FormatException();\n            }\n            const readBytes = new Uint8Array(count);\n            for (let i = 0; i < count; i++) {\n                readBytes[i] = /*(byte) */ bits.readBits(8);\n            }\n            let encoding;\n            if (currentCharacterSetECI === null) {\n                // The spec isn't clear on this mode; see\n                // section 6.4.5: t does not say which encoding to assuming\n                // upon decoding. I have seen ISO-8859-1 used as well as\n                // Shift_JIS -- without anything like an ECI designator to\n                // give a hint.\n                encoding = StringUtils.guessEncoding(readBytes, hints);\n            }\n            else {\n                encoding = currentCharacterSetECI.getName();\n            }\n            try {\n                result.append(StringEncoding.decode(readBytes, encoding));\n            }\n            catch (ignored /*: UnsupportedEncodingException*/) {\n                throw new FormatException(ignored);\n            }\n            byteSegments.push(readBytes);\n        }\n        static toAlphaNumericChar(value /*int*/) {\n            if (value >= DecodedBitStreamParser$1.ALPHANUMERIC_CHARS.length) {\n                throw new FormatException();\n            }\n            return DecodedBitStreamParser$1.ALPHANUMERIC_CHARS[value];\n        }\n        static decodeAlphanumericSegment(bits, result, count /*int*/, fc1InEffect) {\n            // Read two characters at a time\n            const start = result.length();\n            while (count > 1) {\n                if (bits.available() < 11) {\n                    throw new FormatException();\n                }\n                const nextTwoCharsBits = bits.readBits(11);\n                result.append(DecodedBitStreamParser$1.toAlphaNumericChar(Math.floor(nextTwoCharsBits / 45)));\n                result.append(DecodedBitStreamParser$1.toAlphaNumericChar(nextTwoCharsBits % 45));\n                count -= 2;\n            }\n            if (count === 1) {\n                // special case: one character left\n                if (bits.available() < 6) {\n                    throw new FormatException();\n                }\n                result.append(DecodedBitStreamParser$1.toAlphaNumericChar(bits.readBits(6)));\n            }\n            // See section 6.4.8.1, 6.4.8.2\n            if (fc1InEffect) {\n                // We need to massage the result a bit if in an FNC1 mode:\n                for (let i = start; i < result.length(); i++) {\n                    if (result.charAt(i) === '%') {\n                        if (i < result.length() - 1 && result.charAt(i + 1) === '%') {\n                            // %% is rendered as %\n                            result.deleteCharAt(i + 1);\n                        }\n                        else {\n                            // In alpha mode, % should be converted to FNC1 separator 0x1D\n                            result.setCharAt(i, String.fromCharCode(0x1D));\n                        }\n                    }\n                }\n            }\n        }\n        static decodeNumericSegment(bits, result, count /*int*/) {\n            // Read three digits at a time\n            while (count >= 3) {\n                // Each 10 bits encodes three digits\n                if (bits.available() < 10) {\n                    throw new FormatException();\n                }\n                const threeDigitsBits = bits.readBits(10);\n                if (threeDigitsBits >= 1000) {\n                    throw new FormatException();\n                }\n                result.append(DecodedBitStreamParser$1.toAlphaNumericChar(Math.floor(threeDigitsBits / 100)));\n                result.append(DecodedBitStreamParser$1.toAlphaNumericChar(Math.floor(threeDigitsBits / 10) % 10));\n                result.append(DecodedBitStreamParser$1.toAlphaNumericChar(threeDigitsBits % 10));\n                count -= 3;\n            }\n            if (count === 2) {\n                // Two digits left over to read, encoded in 7 bits\n                if (bits.available() < 7) {\n                    throw new FormatException();\n                }\n                const twoDigitsBits = bits.readBits(7);\n                if (twoDigitsBits >= 100) {\n                    throw new FormatException();\n                }\n                result.append(DecodedBitStreamParser$1.toAlphaNumericChar(Math.floor(twoDigitsBits / 10)));\n                result.append(DecodedBitStreamParser$1.toAlphaNumericChar(twoDigitsBits % 10));\n            }\n            else if (count === 1) {\n                // One digit left over to read\n                if (bits.available() < 4) {\n                    throw new FormatException();\n                }\n                const digitBits = bits.readBits(4);\n                if (digitBits >= 10) {\n                    throw new FormatException();\n                }\n                result.append(DecodedBitStreamParser$1.toAlphaNumericChar(digitBits));\n            }\n        }\n        static parseECIValue(bits) {\n            const firstByte = bits.readBits(8);\n            if ((firstByte & 0x80) === 0) {\n                // just one byte\n                return firstByte & 0x7F;\n            }\n            if ((firstByte & 0xC0) === 0x80) {\n                // two bytes\n                const secondByte = bits.readBits(8);\n                return (((firstByte & 0x3F) << 8) & 0xFFFFFFFF) | secondByte;\n            }\n            if ((firstByte & 0xE0) === 0xC0) {\n                // three bytes\n                const secondThirdBytes = bits.readBits(16);\n                return (((firstByte & 0x1F) << 16) & 0xFFFFFFFF) | secondThirdBytes;\n            }\n            throw new FormatException();\n        }\n    }\n    /**\n     * See ISO 18004:2006, 6.4.4 Table 5\n     */\n    DecodedBitStreamParser$1.ALPHANUMERIC_CHARS = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:';\n    DecodedBitStreamParser$1.GB2312_SUBSET = 1;\n    // function Uint8ArrayToString(a: Uint8Array): string {\n    //     const CHUNK_SZ = 0x8000;\n    //     const c = new StringBuilder();\n    //     for (let i = 0, length = a.length; i < length; i += CHUNK_SZ) {\n    //         c.append(String.fromCharCode.apply(null, a.subarray(i, i + CHUNK_SZ)));\n    //     }\n    //     return c.toString();\n    // }\n\n    /*\n     * Copyright 2013 ZXing authors\n     *\n     * Licensed under the Apache License, Version 2.0 (the \"License\");\n     * you may not use this file except in compliance with the License.\n     * You may obtain a copy of the License at\n     *\n     *      http://www.apache.org/licenses/LICENSE-2.0\n     *\n     * Unless required by applicable law or agreed to in writing, software\n     * distributed under the License is distributed on an \"AS IS\" BASIS,\n     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n     * See the License for the specific language governing permissions and\n     * limitations under the License.\n     */\n    /**\n     * Meta-data container for QR Code decoding. Instances of this class may be used to convey information back to the\n     * decoding caller. Callers are expected to process this.\n     *\n     * @see com.google.zxing.common.DecoderResult#getOther()\n     */\n    class QRCodeDecoderMetaData {\n        constructor(mirrored) {\n            this.mirrored = mirrored;\n        }\n        /**\n         * @return true if the QR Code was mirrored.\n         */\n        isMirrored() {\n            return this.mirrored;\n        }\n        /**\n         * Apply the result points' order correction due to mirroring.\n         *\n         * @param points Array of points to apply mirror correction to.\n         */\n        applyMirroredCorrection(points) {\n            if (!this.mirrored || points === null || points.length < 3) {\n                return;\n            }\n            const bottomLeft = points[0];\n            points[0] = points[2];\n            points[2] = bottomLeft;\n            // No need to 'fix' top-left and alignment pattern.\n        }\n    }\n\n    /*\n     * Copyright 2007 ZXing authors\n     *\n     * Licensed under the Apache License, Version 2.0 (the \"License\");\n     * you may not use this file except in compliance with the License.\n     * You may obtain a copy of the License at\n     *\n     *      http://www.apache.org/licenses/LICENSE-2.0\n     *\n     * Unless required by applicable law or agreed to in writing, software\n     * distributed under the License is distributed on an \"AS IS\" BASIS,\n     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n     * See the License for the specific language governing permissions and\n     * limitations under the License.\n     */\n    /*import java.util.Map;*/\n    /**\n     * <p>The main class which implements QR Code decoding -- as opposed to locating and extracting\n     * the QR Code from an image.</p>\n     *\n     * @author Sean Owen\n     */\n    class Decoder$2 {\n        constructor() {\n            this.rsDecoder = new ReedSolomonDecoder(GenericGF.QR_CODE_FIELD_256);\n        }\n        // public decode(image: boolean[][]): DecoderResult /*throws ChecksumException, FormatException*/ {\n        //   return decode(image, null)\n        // }\n        /**\n         * <p>Convenience method that can decode a QR Code represented as a 2D array of booleans.\n         * \"true\" is taken to mean a black module.</p>\n         *\n         * @param image booleans representing white/black QR Code modules\n         * @param hints decoding hints that should be used to influence decoding\n         * @return text and bytes encoded within the QR Code\n         * @throws FormatException if the QR Code cannot be decoded\n         * @throws ChecksumException if error correction fails\n         */\n        decodeBooleanArray(image, hints) {\n            return this.decodeBitMatrix(BitMatrix.parseFromBooleanArray(image), hints);\n        }\n        // public decodeBitMatrix(bits: BitMatrix): DecoderResult /*throws ChecksumException, FormatException*/ {\n        //   return decode(bits, null)\n        // }\n        /**\n         * <p>Decodes a QR Code represented as a {@link BitMatrix}. A 1 or \"true\" is taken to mean a black module.</p>\n         *\n         * @param bits booleans representing white/black QR Code modules\n         * @param hints decoding hints that should be used to influence decoding\n         * @return text and bytes encoded within the QR Code\n         * @throws FormatException if the QR Code cannot be decoded\n         * @throws ChecksumException if error correction fails\n         */\n        decodeBitMatrix(bits, hints) {\n            // Construct a parser and read version, error-correction level\n            const parser = new BitMatrixParser$1(bits);\n            let ex = null;\n            try {\n                return this.decodeBitMatrixParser(parser, hints);\n            }\n            catch (e /*: FormatException, ChecksumException*/) {\n                ex = e;\n            }\n            try {\n                // Revert the bit matrix\n                parser.remask();\n                // Will be attempting a mirrored reading of the version and format info.\n                parser.setMirror(true);\n                // Preemptively read the version.\n                parser.readVersion();\n                // Preemptively read the format information.\n                parser.readFormatInformation();\n                /*\n                 * Since we're here, this means we have successfully detected some kind\n                 * of version and format information when mirrored. This is a good sign,\n                 * that the QR code may be mirrored, and we should try once more with a\n                 * mirrored content.\n                 */\n                // Prepare for a mirrored reading.\n                parser.mirror();\n                const result = this.decodeBitMatrixParser(parser, hints);\n                // Success! Notify the caller that the code was mirrored.\n                result.setOther(new QRCodeDecoderMetaData(true));\n                return result;\n            }\n            catch (e /*FormatException | ChecksumException*/) {\n                // Throw the exception from the original reading\n                if (ex !== null) {\n                    throw ex;\n                }\n                throw e;\n            }\n        }\n        decodeBitMatrixParser(parser, hints) {\n            const version = parser.readVersion();\n            const ecLevel = parser.readFormatInformation().getErrorCorrectionLevel();\n            // Read codewords\n            const codewords = parser.readCodewords();\n            // Separate into data blocks\n            const dataBlocks = DataBlock$1.getDataBlocks(codewords, version, ecLevel);\n            // Count total number of data bytes\n            let totalBytes = 0;\n            for (const dataBlock of dataBlocks) {\n                totalBytes += dataBlock.getNumDataCodewords();\n            }\n            const resultBytes = new Uint8Array(totalBytes);\n            let resultOffset = 0;\n            // Error-correct and copy data blocks together into a stream of bytes\n            for (const dataBlock of dataBlocks) {\n                const codewordBytes = dataBlock.getCodewords();\n                const numDataCodewords = dataBlock.getNumDataCodewords();\n                this.correctErrors(codewordBytes, numDataCodewords);\n                for (let i = 0; i < numDataCodewords; i++) {\n                    resultBytes[resultOffset++] = codewordBytes[i];\n                }\n            }\n            // Decode the contents of that stream of bytes\n            return DecodedBitStreamParser$1.decode(resultBytes, version, ecLevel, hints);\n        }\n        /**\n         * <p>Given data and error-correction codewords received, possibly corrupted by errors, attempts to\n         * correct the errors in-place using Reed-Solomon error correction.</p>\n         *\n         * @param codewordBytes data and error correction codewords\n         * @param numDataCodewords number of codewords that are data bytes\n         * @throws ChecksumException if error correction fails\n         */\n        correctErrors(codewordBytes, numDataCodewords /*int*/) {\n            // const numCodewords = codewordBytes.length;\n            // First read into an array of ints\n            const codewordsInts = new Int32Array(codewordBytes);\n            // TYPESCRIPTPORT: not realy necessary to transform to ints? could redesign everything to work with unsigned bytes?\n            // const codewordsInts = new Int32Array(numCodewords)\n            // for (let i = 0; i < numCodewords; i++) {\n            //   codewordsInts[i] = codewordBytes[i] & 0xFF\n            // }\n            try {\n                this.rsDecoder.decode(codewordsInts, codewordBytes.length - numDataCodewords);\n            }\n            catch (ignored /*: ReedSolomonException*/) {\n                throw new ChecksumException();\n            }\n            // Copy back into array of bytes -- only need to worry about the bytes that were data\n            // We don't care about errors in the error-correction codewords\n            for (let i = 0; i < numDataCodewords; i++) {\n                codewordBytes[i] = /*(byte) */ codewordsInts[i];\n            }\n        }\n    }\n\n    /*\n     * Copyright 2007 ZXing authors\n     *\n     * Licensed under the Apache License, Version 2.0 (the \"License\");\n     * you may not use this file except in compliance with the License.\n     * You may obtain a copy of the License at\n     *\n     *      http://www.apache.org/licenses/LICENSE-2.0\n     *\n     * Unless required by applicable law or agreed to in writing, software\n     * distributed under the License is distributed on an \"AS IS\" BASIS,\n     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n     * See the License for the specific language governing permissions and\n     * limitations under the License.\n     */\n    /**\n     * <p>Encapsulates an alignment pattern, which are the smaller square patterns found in\n     * all but the simplest QR Codes.</p>\n     *\n     * @author Sean Owen\n     */\n    class AlignmentPattern extends ResultPoint {\n        constructor(posX /*float*/, posY /*float*/, estimatedModuleSize /*float*/) {\n            super(posX, posY);\n            this.estimatedModuleSize = estimatedModuleSize;\n        }\n        /**\n         * <p>Determines if this alignment pattern \"about equals\" an alignment pattern at the stated\n         * position and size -- meaning, it is at nearly the same center with nearly the same size.</p>\n         */\n        aboutEquals(moduleSize /*float*/, i /*float*/, j /*float*/) {\n            if (Math.abs(i - this.getY()) <= moduleSize && Math.abs(j - this.getX()) <= moduleSize) {\n                const moduleSizeDiff = Math.abs(moduleSize - this.estimatedModuleSize);\n                return moduleSizeDiff <= 1.0 || moduleSizeDiff <= this.estimatedModuleSize;\n            }\n            return false;\n        }\n        /**\n         * Combines this object's current estimate of a finder pattern position and module size\n         * with a new estimate. It returns a new {@code FinderPattern} containing an average of the two.\n         */\n        combineEstimate(i /*float*/, j /*float*/, newModuleSize /*float*/) {\n            const combinedX = (this.getX() + j) / 2.0;\n            const combinedY = (this.getY() + i) / 2.0;\n            const combinedModuleSize = (this.estimatedModuleSize + newModuleSize) / 2.0;\n            return new AlignmentPattern(combinedX, combinedY, combinedModuleSize);\n        }\n    }\n\n    /*\n     * Copyright 2007 ZXing authors\n     *\n     * Licensed under the Apache License, Version 2.0 (the \"License\");\n     * you may not use this file except in compliance with the License.\n     * You may obtain a copy of the License at\n     *\n     *      http://www.apache.org/licenses/LICENSE-2.0\n     *\n     * Unless required by applicable law or agreed to in writing, software\n     * distributed under the License is distributed on an \"AS IS\" BASIS,\n     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n     * See the License for the specific language governing permissions and\n     * limitations under the License.\n     */\n    /*import java.util.ArrayList;*/\n    /*import java.util.List;*/\n    /**\n     * <p>This class attempts to find alignment patterns in a QR Code. Alignment patterns look like finder\n     * patterns but are smaller and appear at regular intervals throughout the image.</p>\n     *\n     * <p>At the moment this only looks for the bottom-right alignment pattern.</p>\n     *\n     * <p>This is mostly a simplified copy of {@link FinderPatternFinder}. It is copied,\n     * pasted and stripped down here for maximum performance but does unfortunately duplicate\n     * some code.</p>\n     *\n     * <p>This class is thread-safe but not reentrant. Each thread must allocate its own object.</p>\n     *\n     * @author Sean Owen\n     */\n    class AlignmentPatternFinder {\n        /**\n         * <p>Creates a finder that will look in a portion of the whole image.</p>\n         *\n         * @param image image to search\n         * @param startX left column from which to start searching\n         * @param startY top row from which to start searching\n         * @param width width of region to search\n         * @param height height of region to search\n         * @param moduleSize estimated module size so far\n         */\n        constructor(image, startX /*int*/, startY /*int*/, width /*int*/, height /*int*/, moduleSize /*float*/, resultPointCallback) {\n            this.image = image;\n            this.startX = startX;\n            this.startY = startY;\n            this.width = width;\n            this.height = height;\n            this.moduleSize = moduleSize;\n            this.resultPointCallback = resultPointCallback;\n            this.possibleCenters = []; // new Array<any>(5))\n            // TYPESCRIPTPORT: array initialization without size as the length is checked below\n            this.crossCheckStateCount = new Int32Array(3);\n        }\n        /**\n         * <p>This method attempts to find the bottom-right alignment pattern in the image. It is a bit messy since\n         * it's pretty performance-critical and so is written to be fast foremost.</p>\n         *\n         * @return {@link AlignmentPattern} if found\n         * @throws NotFoundException if not found\n         */\n        find() {\n            const startX = this.startX;\n            const height = this.height;\n            const width = this.width;\n            const maxJ = startX + width;\n            const middleI = this.startY + (height / 2);\n            // We are looking for black/white/black modules in 1:1:1 ratio\n            // this tracks the number of black/white/black modules seen so far\n            const stateCount = new Int32Array(3);\n            const image = this.image;\n            for (let iGen = 0; iGen < height; iGen++) {\n                // Search from middle outwards\n                const i = middleI + ((iGen & 0x01) === 0 ? Math.floor((iGen + 1) / 2) : -Math.floor((iGen + 1) / 2));\n                stateCount[0] = 0;\n                stateCount[1] = 0;\n                stateCount[2] = 0;\n                let j = startX;\n                // Burn off leading white pixels before anything else; if we start in the middle of\n                // a white run, it doesn't make sense to count its length, since we don't know if the\n                // white run continued to the left of the start point\n                while (j < maxJ && !image.get(j, i)) {\n                    j++;\n                }\n                let currentState = 0;\n                while (j < maxJ) {\n                    if (image.get(j, i)) {\n                        // Black pixel\n                        if (currentState === 1) { // Counting black pixels\n                            stateCount[1]++;\n                        }\n                        else { // Counting white pixels\n                            if (currentState === 2) { // A winner?\n                                if (this.foundPatternCross(stateCount)) { // Yes\n                                    const confirmed = this.handlePossibleCenter(stateCount, i, j);\n                                    if (confirmed !== null) {\n                                        return confirmed;\n                                    }\n                                }\n                                stateCount[0] = stateCount[2];\n                                stateCount[1] = 1;\n                                stateCount[2] = 0;\n                                currentState = 1;\n                            }\n                            else {\n                                stateCount[++currentState]++;\n                            }\n                        }\n                    }\n                    else { // White pixel\n                        if (currentState === 1) { // Counting black pixels\n                            currentState++;\n                        }\n                        stateCount[currentState]++;\n                    }\n                    j++;\n                }\n                if (this.foundPatternCross(stateCount)) {\n                    const confirmed = this.handlePossibleCenter(stateCount, i, maxJ);\n                    if (confirmed !== null) {\n                        return confirmed;\n                    }\n                }\n            }\n            // Hmm, nothing we saw was observed and confirmed twice. If we had\n            // any guess at all, return it.\n            if (this.possibleCenters.length !== 0) {\n                return this.possibleCenters[0];\n            }\n            throw new NotFoundException();\n        }\n        /**\n         * Given a count of black/white/black pixels just seen and an end position,\n         * figures the location of the center of this black/white/black run.\n         */\n        static centerFromEnd(stateCount, end /*int*/) {\n            return (end - stateCount[2]) - stateCount[1] / 2.0;\n        }\n        /**\n         * @param stateCount count of black/white/black pixels just read\n         * @return true iff the proportions of the counts is close enough to the 1/1/1 ratios\n         *         used by alignment patterns to be considered a match\n         */\n        foundPatternCross(stateCount) {\n            const moduleSize = this.moduleSize;\n            const maxVariance = moduleSize / 2.0;\n            for (let i = 0; i < 3; i++) {\n                if (Math.abs(moduleSize - stateCount[i]) >= maxVariance) {\n                    return false;\n                }\n            }\n            return true;\n        }\n        /**\n         * <p>After a horizontal scan finds a potential alignment pattern, this method\n         * \"cross-checks\" by scanning down vertically through the center of the possible\n         * alignment pattern to see if the same proportion is detected.</p>\n         *\n         * @param startI row where an alignment pattern was detected\n         * @param centerJ center of the section that appears to cross an alignment pattern\n         * @param maxCount maximum reasonable number of modules that should be\n         * observed in any reading state, based on the results of the horizontal scan\n         * @return vertical center of alignment pattern, or {@link Float#NaN} if not found\n         */\n        crossCheckVertical(startI /*int*/, centerJ /*int*/, maxCount /*int*/, originalStateCountTotal /*int*/) {\n            const image = this.image;\n            const maxI = image.getHeight();\n            const stateCount = this.crossCheckStateCount;\n            stateCount[0] = 0;\n            stateCount[1] = 0;\n            stateCount[2] = 0;\n            // Start counting up from center\n            let i = startI;\n            while (i >= 0 && image.get(centerJ, i) && stateCount[1] <= maxCount) {\n                stateCount[1]++;\n                i--;\n            }\n            // If already too many modules in this state or ran off the edge:\n            if (i < 0 || stateCount[1] > maxCount) {\n                return NaN;\n            }\n            while (i >= 0 && !image.get(centerJ, i) && stateCount[0] <= maxCount) {\n                stateCount[0]++;\n                i--;\n            }\n            if (stateCount[0] > maxCount) {\n                return NaN;\n            }\n            // Now also count down from center\n            i = startI + 1;\n            while (i < maxI && image.get(centerJ, i) && stateCount[1] <= maxCount) {\n                stateCount[1]++;\n                i++;\n            }\n            if (i === maxI || stateCount[1] > maxCount) {\n                return NaN;\n            }\n            while (i < maxI && !image.get(centerJ, i) && stateCount[2] <= maxCount) {\n                stateCount[2]++;\n                i++;\n            }\n            if (stateCount[2] > maxCount) {\n                return NaN;\n            }\n            const stateCountTotal = stateCount[0] + stateCount[1] + stateCount[2];\n            if (5 * Math.abs(stateCountTotal - originalStateCountTotal) >= 2 * originalStateCountTotal) {\n                return NaN;\n            }\n            return this.foundPatternCross(stateCount) ? AlignmentPatternFinder.centerFromEnd(stateCount, i) : NaN;\n        }\n        /**\n         * <p>This is called when a horizontal scan finds a possible alignment pattern. It will\n         * cross check with a vertical scan, and if successful, will see if this pattern had been\n         * found on a previous horizontal scan. If so, we consider it confirmed and conclude we have\n         * found the alignment pattern.</p>\n         *\n         * @param stateCount reading state module counts from horizontal scan\n         * @param i row where alignment pattern may be found\n         * @param j end of possible alignment pattern in row\n         * @return {@link AlignmentPattern} if we have found the same pattern twice, or null if not\n         */\n        handlePossibleCenter(stateCount, i /*int*/, j /*int*/) {\n            const stateCountTotal = stateCount[0] + stateCount[1] + stateCount[2];\n            const centerJ = AlignmentPatternFinder.centerFromEnd(stateCount, j);\n            const centerI = this.crossCheckVertical(i, /*(int) */ centerJ, 2 * stateCount[1], stateCountTotal);\n            if (!isNaN(centerI)) {\n                const estimatedModuleSize = (stateCount[0] + stateCount[1] + stateCount[2]) / 3.0;\n                for (const center of this.possibleCenters) {\n                    // Look for about the same center and module size:\n                    if (center.aboutEquals(estimatedModuleSize, centerI, centerJ)) {\n                        return center.combineEstimate(centerI, centerJ, estimatedModuleSize);\n                    }\n                }\n                // Hadn't found this before; save it\n                const point = new AlignmentPattern(centerJ, centerI, estimatedModuleSize);\n                this.possibleCenters.push(point);\n                if (this.resultPointCallback !== null && this.resultPointCallback !== undefined) {\n                    this.resultPointCallback.foundPossibleResultPoint(point);\n                }\n            }\n            return null;\n        }\n    }\n\n    /*\n     * Copyright 2007 ZXing authors\n     *\n     * Licensed under the Apache License, Version 2.0 (the \"License\");\n     * you may not use this file except in compliance with the License.\n     * You may obtain a copy of the License at\n     *\n     *      http://www.apache.org/licenses/LICENSE-2.0\n     *\n     * Unless required by applicable law or agreed to in writing, software\n     * distributed under the License is distributed on an \"AS IS\" BASIS,\n     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n     * See the License for the specific language governing permissions and\n     * limitations under the License.\n     */\n    /**\n     * <p>Encapsulates a finder pattern, which are the three square patterns found in\n     * the corners of QR Codes. It also encapsulates a count of similar finder patterns,\n     * as a convenience to the finder's bookkeeping.</p>\n     *\n     * @author Sean Owen\n     */\n    class FinderPattern$1 extends ResultPoint {\n        // FinderPattern(posX: number/*float*/, posY: number/*float*/, estimatedModuleSize: number/*float*/) {\n        //   this(posX, posY, estimatedModuleSize, 1)\n        // }\n        constructor(posX /*float*/, posY /*float*/, estimatedModuleSize /*float*/, count /*int*/) {\n            super(posX, posY);\n            this.estimatedModuleSize = estimatedModuleSize;\n            this.count = count;\n            if (undefined === count) {\n                this.count = 1;\n            }\n        }\n        getEstimatedModuleSize() {\n            return this.estimatedModuleSize;\n        }\n        getCount() {\n            return this.count;\n        }\n        /*\n        void incrementCount() {\n          this.count++\n        }\n         */\n        /**\n         * <p>Determines if this finder pattern \"about equals\" a finder pattern at the stated\n         * position and size -- meaning, it is at nearly the same center with nearly the same size.</p>\n         */\n        aboutEquals(moduleSize /*float*/, i /*float*/, j /*float*/) {\n            if (Math.abs(i - this.getY()) <= moduleSize && Math.abs(j - this.getX()) <= moduleSize) {\n                const moduleSizeDiff = Math.abs(moduleSize - this.estimatedModuleSize);\n                return moduleSizeDiff <= 1.0 || moduleSizeDiff <= this.estimatedModuleSize;\n            }\n            return false;\n        }\n        /**\n         * Combines this object's current estimate of a finder pattern position and module size\n         * with a new estimate. It returns a new {@code FinderPattern} containing a weighted average\n         * based on count.\n         */\n        combineEstimate(i /*float*/, j /*float*/, newModuleSize /*float*/) {\n            const combinedCount = this.count + 1;\n            const combinedX = (this.count * this.getX() + j) / combinedCount;\n            const combinedY = (this.count * this.getY() + i) / combinedCount;\n            const combinedModuleSize = (this.count * this.estimatedModuleSize + newModuleSize) / combinedCount;\n            return new FinderPattern$1(combinedX, combinedY, combinedModuleSize, combinedCount);\n        }\n    }\n\n    /*\n     * Copyright 2007 ZXing authors\n     *\n     * Licensed under the Apache License, Version 2.0 (the \"License\");\n     * you may not use this file except in compliance with the License.\n     * You may obtain a copy of the License at\n     *\n     *      http://www.apache.org/licenses/LICENSE-2.0\n     *\n     * Unless required by applicable law or agreed to in writing, software\n     * distributed under the License is distributed on an \"AS IS\" BASIS,\n     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n     * See the License for the specific language governing permissions and\n     * limitations under the License.\n     */\n    /**\n     * <p>Encapsulates information about finder patterns in an image, including the location of\n     * the three finder patterns, and their estimated module size.</p>\n     *\n     * @author Sean Owen\n     */\n    class FinderPatternInfo {\n        constructor(patternCenters) {\n            this.bottomLeft = patternCenters[0];\n            this.topLeft = patternCenters[1];\n            this.topRight = patternCenters[2];\n        }\n        getBottomLeft() {\n            return this.bottomLeft;\n        }\n        getTopLeft() {\n            return this.topLeft;\n        }\n        getTopRight() {\n            return this.topRight;\n        }\n    }\n\n    /*\n     * Copyright 2007 ZXing authors\n     *\n     * Licensed under the Apache License, Version 2.0 (the \"License\");\n     * you may not use this file except in compliance with the License.\n     * You may obtain a copy of the License at\n     *\n     *      http://www.apache.org/licenses/LICENSE-2.0\n     *\n     * Unless required by applicable law or agreed to in writing, software\n     * distributed under the License is distributed on an \"AS IS\" BASIS,\n     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n     * See the License for the specific language governing permissions and\n     * limitations under the License.\n     */\n    /*import java.io.Serializable;*/\n    /*import java.util.ArrayList;*/\n    /*import java.util.Collections;*/\n    /*import java.util.Comparator;*/\n    /*import java.util.List;*/\n    /*import java.util.Map;*/\n    /**\n     * <p>This class attempts to find finder patterns in a QR Code. Finder patterns are the square\n     * markers at three corners of a QR Code.</p>\n     *\n     * <p>This class is thread-safe but not reentrant. Each thread must allocate its own object.\n     *\n     * @author Sean Owen\n     */\n    class FinderPatternFinder {\n        /**\n         * <p>Creates a finder that will search the image for three finder patterns.</p>\n         *\n         * @param image image to search\n         */\n        // public constructor(image: BitMatrix) {\n        //   this(image, null)\n        // }\n        constructor(image, resultPointCallback) {\n            this.image = image;\n            this.resultPointCallback = resultPointCallback;\n            this.possibleCenters = [];\n            this.crossCheckStateCount = new Int32Array(5);\n            this.resultPointCallback = resultPointCallback;\n        }\n        getImage() {\n            return this.image;\n        }\n        getPossibleCenters() {\n            return this.possibleCenters;\n        }\n        find(hints) {\n            const tryHarder = (hints !== null && hints !== undefined) && undefined !== hints.get(DecodeHintType$1.TRY_HARDER);\n            const pureBarcode = (hints !== null && hints !== undefined) && undefined !== hints.get(DecodeHintType$1.PURE_BARCODE);\n            const image = this.image;\n            const maxI = image.getHeight();\n            const maxJ = image.getWidth();\n            // We are looking for black/white/black/white/black modules in\n            // 1:1:3:1:1 ratio; this tracks the number of such modules seen so far\n            // Let's assume that the maximum version QR Code we support takes up 1/4 the height of the\n            // image, and then account for the center being 3 modules in size. This gives the smallest\n            // number of pixels the center could be, so skip this often. When trying harder, look for all\n            // QR versions regardless of how dense they are.\n            let iSkip = Math.floor((3 * maxI) / (4 * FinderPatternFinder.MAX_MODULES));\n            if (iSkip < FinderPatternFinder.MIN_SKIP || tryHarder) {\n                iSkip = FinderPatternFinder.MIN_SKIP;\n            }\n            let done = false;\n            const stateCount = new Int32Array(5);\n            for (let i = iSkip - 1; i < maxI && !done; i += iSkip) {\n                // Get a row of black/white values\n                stateCount[0] = 0;\n                stateCount[1] = 0;\n                stateCount[2] = 0;\n                stateCount[3] = 0;\n                stateCount[4] = 0;\n                let currentState = 0;\n                for (let j = 0; j < maxJ; j++) {\n                    if (image.get(j, i)) {\n                        // Black pixel\n                        if ((currentState & 1) === 1) { // Counting white pixels\n                            currentState++;\n                        }\n                        stateCount[currentState]++;\n                    }\n                    else { // White pixel\n                        if ((currentState & 1) === 0) { // Counting black pixels\n                            if (currentState === 4) { // A winner?\n                                if (FinderPatternFinder.foundPatternCross(stateCount)) { // Yes\n                                    const confirmed = this.handlePossibleCenter(stateCount, i, j, pureBarcode);\n                                    if (confirmed === true) {\n                                        // Start examining every other line. Checking each line turned out to be too\n                                        // expensive and didn't improve performance.\n                                        iSkip = 2;\n                                        if (this.hasSkipped === true) {\n                                            done = this.haveMultiplyConfirmedCenters();\n                                        }\n                                        else {\n                                            const rowSkip = this.findRowSkip();\n                                            if (rowSkip > stateCount[2]) {\n                                                // Skip rows between row of lower confirmed center\n                                                // and top of presumed third confirmed center\n                                                // but back up a bit to get a full chance of detecting\n                                                // it, entire width of center of finder pattern\n                                                // Skip by rowSkip, but back off by stateCount[2] (size of last center\n                                                // of pattern we saw) to be conservative, and also back off by iSkip which\n                                                // is about to be re-added\n                                                i += rowSkip - stateCount[2] - iSkip;\n                                                j = maxJ - 1;\n                                            }\n                                        }\n                                    }\n                                    else {\n                                        stateCount[0] = stateCount[2];\n                                        stateCount[1] = stateCount[3];\n                                        stateCount[2] = stateCount[4];\n                                        stateCount[3] = 1;\n                                        stateCount[4] = 0;\n                                        currentState = 3;\n                                        continue;\n                                    }\n                                    // Clear state to start looking again\n                                    currentState = 0;\n                                    stateCount[0] = 0;\n                                    stateCount[1] = 0;\n                                    stateCount[2] = 0;\n                                    stateCount[3] = 0;\n                                    stateCount[4] = 0;\n                                }\n                                else { // No, shift counts back by two\n                                    stateCount[0] = stateCount[2];\n                                    stateCount[1] = stateCount[3];\n                                    stateCount[2] = stateCount[4];\n                                    stateCount[3] = 1;\n                                    stateCount[4] = 0;\n                                    currentState = 3;\n                                }\n                            }\n                            else {\n                                stateCount[++currentState]++;\n                            }\n                        }\n                        else { // Counting white pixels\n                            stateCount[currentState]++;\n                        }\n                    }\n                }\n                if (FinderPatternFinder.foundPatternCross(stateCount)) {\n                    const confirmed = this.handlePossibleCenter(stateCount, i, maxJ, pureBarcode);\n                    if (confirmed === true) {\n                        iSkip = stateCount[0];\n                        if (this.hasSkipped) {\n                            // Found a third one\n                            done = this.haveMultiplyConfirmedCenters();\n                        }\n                    }\n                }\n            }\n            const patternInfo = this.selectBestPatterns();\n            ResultPoint.orderBestPatterns(patternInfo);\n            return new FinderPatternInfo(patternInfo);\n        }\n        /**\n         * Given a count of black/white/black/white/black pixels just seen and an end position,\n         * figures the location of the center of this run.\n         */\n        static centerFromEnd(stateCount, end /*int*/) {\n            return (end - stateCount[4] - stateCount[3]) - stateCount[2] / 2.0;\n        }\n        /**\n         * @param stateCount count of black/white/black/white/black pixels just read\n         * @return true iff the proportions of the counts is close enough to the 1/1/3/1/1 ratios\n         *         used by finder patterns to be considered a match\n         */\n        static foundPatternCross(stateCount) {\n            let totalModuleSize = 0;\n            for (let i = 0; i < 5; i++) {\n                const count = stateCount[i];\n                if (count === 0) {\n                    return false;\n                }\n                totalModuleSize += count;\n            }\n            if (totalModuleSize < 7) {\n                return false;\n            }\n            const moduleSize = totalModuleSize / 7.0;\n            const maxVariance = moduleSize / 2.0;\n            // Allow less than 50% variance from 1-1-3-1-1 proportions\n            return Math.abs(moduleSize - stateCount[0]) < maxVariance &&\n                Math.abs(moduleSize - stateCount[1]) < maxVariance &&\n                Math.abs(3.0 * moduleSize - stateCount[2]) < 3 * maxVariance &&\n                Math.abs(moduleSize - stateCount[3]) < maxVariance &&\n                Math.abs(moduleSize - stateCount[4]) < maxVariance;\n        }\n        getCrossCheckStateCount() {\n            const crossCheckStateCount = this.crossCheckStateCount;\n            crossCheckStateCount[0] = 0;\n            crossCheckStateCount[1] = 0;\n            crossCheckStateCount[2] = 0;\n            crossCheckStateCount[3] = 0;\n            crossCheckStateCount[4] = 0;\n            return crossCheckStateCount;\n        }\n        /**\n         * After a vertical and horizontal scan finds a potential finder pattern, this method\n         * \"cross-cross-cross-checks\" by scanning down diagonally through the center of the possible\n         * finder pattern to see if the same proportion is detected.\n         *\n         * @param startI row where a finder pattern was detected\n         * @param centerJ center of the section that appears to cross a finder pattern\n         * @param maxCount maximum reasonable number of modules that should be\n         *  observed in any reading state, based on the results of the horizontal scan\n         * @param originalStateCountTotal The original state count total.\n         * @return true if proportions are withing expected limits\n         */\n        crossCheckDiagonal(startI /*int*/, centerJ /*int*/, maxCount /*int*/, originalStateCountTotal /*int*/) {\n            const stateCount = this.getCrossCheckStateCount();\n            // Start counting up, left from center finding black center mass\n            let i = 0;\n            const image = this.image;\n            while (startI >= i && centerJ >= i && image.get(centerJ - i, startI - i)) {\n                stateCount[2]++;\n                i++;\n            }\n            if (startI < i || centerJ < i) {\n                return false;\n            }\n            // Continue up, left finding white space\n            while (startI >= i && centerJ >= i && !image.get(centerJ - i, startI - i) &&\n                stateCount[1] <= maxCount) {\n                stateCount[1]++;\n                i++;\n            }\n            // If already too many modules in this state or ran off the edge:\n            if (startI < i || centerJ < i || stateCount[1] > maxCount) {\n                return false;\n            }\n            // Continue up, left finding black border\n            while (startI >= i && centerJ >= i && image.get(centerJ - i, startI - i) &&\n                stateCount[0] <= maxCount) {\n                stateCount[0]++;\n                i++;\n            }\n            if (stateCount[0] > maxCount) {\n                return false;\n            }\n            const maxI = image.getHeight();\n            const maxJ = image.getWidth();\n            // Now also count down, right from center\n            i = 1;\n            while (startI + i < maxI && centerJ + i < maxJ && image.get(centerJ + i, startI + i)) {\n                stateCount[2]++;\n                i++;\n            }\n            // Ran off the edge?\n            if (startI + i >= maxI || centerJ + i >= maxJ) {\n                return false;\n            }\n            while (startI + i < maxI && centerJ + i < maxJ && !image.get(centerJ + i, startI + i) &&\n                stateCount[3] < maxCount) {\n                stateCount[3]++;\n                i++;\n            }\n            if (startI + i >= maxI || centerJ + i >= maxJ || stateCount[3] >= maxCount) {\n                return false;\n            }\n            while (startI + i < maxI && centerJ + i < maxJ && image.get(centerJ + i, startI + i) &&\n                stateCount[4] < maxCount) {\n                stateCount[4]++;\n                i++;\n            }\n            if (stateCount[4] >= maxCount) {\n                return false;\n            }\n            // If we found a finder-pattern-like section, but its size is more than 100% different than\n            // the original, assume it's a false positive\n            const stateCountTotal = stateCount[0] + stateCount[1] + stateCount[2] + stateCount[3] + stateCount[4];\n            return Math.abs(stateCountTotal - originalStateCountTotal) < 2 * originalStateCountTotal &&\n                FinderPatternFinder.foundPatternCross(stateCount);\n        }\n        /**\n         * <p>After a horizontal scan finds a potential finder pattern, this method\n         * \"cross-checks\" by scanning down vertically through the center of the possible\n         * finder pattern to see if the same proportion is detected.</p>\n         *\n         * @param startI row where a finder pattern was detected\n         * @param centerJ center of the section that appears to cross a finder pattern\n         * @param maxCount maximum reasonable number of modules that should be\n         * observed in any reading state, based on the results of the horizontal scan\n         * @return vertical center of finder pattern, or {@link Float#NaN} if not found\n         */\n        crossCheckVertical(startI /*int*/, centerJ /*int*/, maxCount /*int*/, originalStateCountTotal /*int*/) {\n            const image = this.image;\n            const maxI = image.getHeight();\n            const stateCount = this.getCrossCheckStateCount();\n            // Start counting up from center\n            let i = startI;\n            while (i >= 0 && image.get(centerJ, i)) {\n                stateCount[2]++;\n                i--;\n            }\n            if (i < 0) {\n                return NaN;\n            }\n            while (i >= 0 && !image.get(centerJ, i) && stateCount[1] <= maxCount) {\n                stateCount[1]++;\n                i--;\n            }\n            // If already too many modules in this state or ran off the edge:\n            if (i < 0 || stateCount[1] > maxCount) {\n                return NaN;\n            }\n            while (i >= 0 && image.get(centerJ, i) && stateCount[0] <= maxCount) {\n                stateCount[0]++;\n                i--;\n            }\n            if (stateCount[0] > maxCount) {\n                return NaN;\n            }\n            // Now also count down from center\n            i = startI + 1;\n            while (i < maxI && image.get(centerJ, i)) {\n                stateCount[2]++;\n                i++;\n            }\n            if (i === maxI) {\n                return NaN;\n            }\n            while (i < maxI && !image.get(centerJ, i) && stateCount[3] < maxCount) {\n                stateCount[3]++;\n                i++;\n            }\n            if (i === maxI || stateCount[3] >= maxCount) {\n                return NaN;\n            }\n            while (i < maxI && image.get(centerJ, i) && stateCount[4] < maxCount) {\n                stateCount[4]++;\n                i++;\n            }\n            if (stateCount[4] >= maxCount) {\n                return NaN;\n            }\n            // If we found a finder-pattern-like section, but its size is more than 40% different than\n            // the original, assume it's a false positive\n            const stateCountTotal = stateCount[0] + stateCount[1] + stateCount[2] + stateCount[3] +\n                stateCount[4];\n            if (5 * Math.abs(stateCountTotal - originalStateCountTotal) >= 2 * originalStateCountTotal) {\n                return NaN;\n            }\n            return FinderPatternFinder.foundPatternCross(stateCount) ? FinderPatternFinder.centerFromEnd(stateCount, i) : NaN;\n        }\n        /**\n         * <p>Like {@link #crossCheckVertical(int, int, int, int)}, and in fact is basically identical,\n         * except it reads horizontally instead of vertically. This is used to cross-cross\n         * check a vertical cross check and locate the real center of the alignment pattern.</p>\n         */\n        crossCheckHorizontal(startJ /*int*/, centerI /*int*/, maxCount /*int*/, originalStateCountTotal /*int*/) {\n            const image = this.image;\n            const maxJ = image.getWidth();\n            const stateCount = this.getCrossCheckStateCount();\n            let j = startJ;\n            while (j >= 0 && image.get(j, centerI)) {\n                stateCount[2]++;\n                j--;\n            }\n            if (j < 0) {\n                return NaN;\n            }\n            while (j >= 0 && !image.get(j, centerI) && stateCount[1] <= maxCount) {\n                stateCount[1]++;\n                j--;\n            }\n            if (j < 0 || stateCount[1] > maxCount) {\n                return NaN;\n            }\n            while (j >= 0 && image.get(j, centerI) && stateCount[0] <= maxCount) {\n                stateCount[0]++;\n                j--;\n            }\n            if (stateCount[0] > maxCount) {\n                return NaN;\n            }\n            j = startJ + 1;\n            while (j < maxJ && image.get(j, centerI)) {\n                stateCount[2]++;\n                j++;\n            }\n            if (j === maxJ) {\n                return NaN;\n            }\n            while (j < maxJ && !image.get(j, centerI) && stateCount[3] < maxCount) {\n                stateCount[3]++;\n                j++;\n            }\n            if (j === maxJ || stateCount[3] >= maxCount) {\n                return NaN;\n            }\n            while (j < maxJ && image.get(j, centerI) && stateCount[4] < maxCount) {\n                stateCount[4]++;\n                j++;\n            }\n            if (stateCount[4] >= maxCount) {\n                return NaN;\n            }\n            // If we found a finder-pattern-like section, but its size is significantly different than\n            // the original, assume it's a false positive\n            const stateCountTotal = stateCount[0] + stateCount[1] + stateCount[2] + stateCount[3] +\n                stateCount[4];\n            if (5 * Math.abs(stateCountTotal - originalStateCountTotal) >= originalStateCountTotal) {\n                return NaN;\n            }\n            return FinderPatternFinder.foundPatternCross(stateCount) ? FinderPatternFinder.centerFromEnd(stateCount, j) : NaN;\n        }\n        /**\n         * <p>This is called when a horizontal scan finds a possible alignment pattern. It will\n         * cross check with a vertical scan, and if successful, will, ah, cross-cross-check\n         * with another horizontal scan. This is needed primarily to locate the real horizontal\n         * center of the pattern in cases of extreme skew.\n         * And then we cross-cross-cross check with another diagonal scan.</p>\n         *\n         * <p>If that succeeds the finder pattern location is added to a list that tracks\n         * the number of times each location has been nearly-matched as a finder pattern.\n         * Each additional find is more evidence that the location is in fact a finder\n         * pattern center\n         *\n         * @param stateCount reading state module counts from horizontal scan\n         * @param i row where finder pattern may be found\n         * @param j end of possible finder pattern in row\n         * @param pureBarcode true if in \"pure barcode\" mode\n         * @return true if a finder pattern candidate was found this time\n         */\n        handlePossibleCenter(stateCount, i /*int*/, j /*int*/, pureBarcode) {\n            const stateCountTotal = stateCount[0] + stateCount[1] + stateCount[2] + stateCount[3] +\n                stateCount[4];\n            let centerJ = FinderPatternFinder.centerFromEnd(stateCount, j);\n            let centerI = this.crossCheckVertical(i, /*(int) */ Math.floor(centerJ), stateCount[2], stateCountTotal);\n            if (!isNaN(centerI)) {\n                // Re-cross check\n                centerJ = this.crossCheckHorizontal(/*(int) */ Math.floor(centerJ), /*(int) */ Math.floor(centerI), stateCount[2], stateCountTotal);\n                if (!isNaN(centerJ) &&\n                    (!pureBarcode || this.crossCheckDiagonal(/*(int) */ Math.floor(centerI), /*(int) */ Math.floor(centerJ), stateCount[2], stateCountTotal))) {\n                    const estimatedModuleSize = stateCountTotal / 7.0;\n                    let found = false;\n                    const possibleCenters = this.possibleCenters;\n                    for (let index = 0, length = possibleCenters.length; index < length; index++) {\n                        const center = possibleCenters[index];\n                        // Look for about the same center and module size:\n                        if (center.aboutEquals(estimatedModuleSize, centerI, centerJ)) {\n                            possibleCenters[index] = center.combineEstimate(centerI, centerJ, estimatedModuleSize);\n                            found = true;\n                            break;\n                        }\n                    }\n                    if (!found) {\n                        const point = new FinderPattern$1(centerJ, centerI, estimatedModuleSize);\n                        possibleCenters.push(point);\n                        if (this.resultPointCallback !== null && this.resultPointCallback !== undefined) {\n                            this.resultPointCallback.foundPossibleResultPoint(point);\n                        }\n                    }\n                    return true;\n                }\n            }\n            return false;\n        }\n        /**\n         * @return number of rows we could safely skip during scanning, based on the first\n         *         two finder patterns that have been located. In some cases their position will\n         *         allow us to infer that the third pattern must lie below a certain point farther\n         *         down in the image.\n         */\n        findRowSkip() {\n            const max = this.possibleCenters.length;\n            if (max <= 1) {\n                return 0;\n            }\n            let firstConfirmedCenter = null;\n            for (const center of this.possibleCenters) {\n                if (center.getCount() >= FinderPatternFinder.CENTER_QUORUM) {\n                    if (firstConfirmedCenter == null) {\n                        firstConfirmedCenter = center;\n                    }\n                    else {\n                        // We have two confirmed centers\n                        // How far down can we skip before resuming looking for the next\n                        // pattern? In the worst case, only the difference between the\n                        // difference in the x / y coordinates of the two centers.\n                        // This is the case where you find top left last.\n                        this.hasSkipped = true;\n                        return /*(int) */ Math.floor((Math.abs(firstConfirmedCenter.getX() - center.getX()) -\n                            Math.abs(firstConfirmedCenter.getY() - center.getY())) / 2);\n                    }\n                }\n            }\n            return 0;\n        }\n        /**\n         * @return true iff we have found at least 3 finder patterns that have been detected\n         *         at least {@link #CENTER_QUORUM} times each, and, the estimated module size of the\n         *         candidates is \"pretty similar\"\n         */\n        haveMultiplyConfirmedCenters() {\n            let confirmedCount = 0;\n            let totalModuleSize = 0.0;\n            const max = this.possibleCenters.length;\n            for (const pattern of this.possibleCenters) {\n                if (pattern.getCount() >= FinderPatternFinder.CENTER_QUORUM) {\n                    confirmedCount++;\n                    totalModuleSize += pattern.getEstimatedModuleSize();\n                }\n            }\n            if (confirmedCount < 3) {\n                return false;\n            }\n            // OK, we have at least 3 confirmed centers, but, it's possible that one is a \"false positive\"\n            // and that we need to keep looking. We detect this by asking if the estimated module sizes\n            // vary too much. We arbitrarily say that when the total deviation from average exceeds\n            // 5% of the total module size estimates, it's too much.\n            const average = totalModuleSize / max;\n            let totalDeviation = 0.0;\n            for (const pattern of this.possibleCenters) {\n                totalDeviation += Math.abs(pattern.getEstimatedModuleSize() - average);\n            }\n            return totalDeviation <= 0.05 * totalModuleSize;\n        }\n        /**\n         * @return the 3 best {@link FinderPattern}s from our list of candidates. The \"best\" are\n         *         those that have been detected at least {@link #CENTER_QUORUM} times, and whose module\n         *         size differs from the average among those patterns the least\n         * @throws NotFoundException if 3 such finder patterns do not exist\n         */\n        selectBestPatterns() {\n            const startSize = this.possibleCenters.length;\n            if (startSize < 3) {\n                // Couldn't find enough finder patterns\n                throw new NotFoundException();\n            }\n            const possibleCenters = this.possibleCenters;\n            let average;\n            // Filter outlier possibilities whose module size is too different\n            if (startSize > 3) {\n                // But we can only afford to do so if we have at least 4 possibilities to choose from\n                let totalModuleSize = 0.0;\n                let square = 0.0;\n                for (const center of this.possibleCenters) {\n                    const size = center.getEstimatedModuleSize();\n                    totalModuleSize += size;\n                    square += size * size;\n                }\n                average = totalModuleSize / startSize;\n                let stdDev = Math.sqrt(square / startSize - average * average);\n                possibleCenters.sort(\n                /**\n                 * <p>Orders by furthest from average</p>\n                 */\n                // FurthestFromAverageComparator implements Comparator<FinderPattern>\n                (center1, center2) => {\n                    const dA = Math.abs(center2.getEstimatedModuleSize() - average);\n                    const dB = Math.abs(center1.getEstimatedModuleSize() - average);\n                    return dA < dB ? -1 : dA > dB ? 1 : 0;\n                });\n                const limit = Math.max(0.2 * average, stdDev);\n                for (let i = 0; i < possibleCenters.length && possibleCenters.length > 3; i++) {\n                    const pattern = possibleCenters[i];\n                    if (Math.abs(pattern.getEstimatedModuleSize() - average) > limit) {\n                        possibleCenters.splice(i, 1);\n                        i--;\n                    }\n                }\n            }\n            if (possibleCenters.length > 3) {\n                // Throw away all but those first size candidate points we found.\n                let totalModuleSize = 0.0;\n                for (const possibleCenter of possibleCenters) {\n                    totalModuleSize += possibleCenter.getEstimatedModuleSize();\n                }\n                average = totalModuleSize / possibleCenters.length;\n                possibleCenters.sort(\n                /**\n                 * <p>Orders by {@link FinderPattern#getCount()}, descending.</p>\n                 */\n                // CenterComparator implements Comparator<FinderPattern>\n                (center1, center2) => {\n                    if (center2.getCount() === center1.getCount()) {\n                        const dA = Math.abs(center2.getEstimatedModuleSize() - average);\n                        const dB = Math.abs(center1.getEstimatedModuleSize() - average);\n                        return dA < dB ? 1 : dA > dB ? -1 : 0;\n                    }\n                    else {\n                        return center2.getCount() - center1.getCount();\n                    }\n                });\n                possibleCenters.splice(3); // this is not realy necessary as we only return first 3 anyway\n            }\n            return [\n                possibleCenters[0],\n                possibleCenters[1],\n                possibleCenters[2]\n            ];\n        }\n    }\n    FinderPatternFinder.CENTER_QUORUM = 2;\n    FinderPatternFinder.MIN_SKIP = 3; // 1 pixel/module times 3 modules/center\n    FinderPatternFinder.MAX_MODULES = 57; // support up to version 10 for mobile clients\n\n    /*\n     * Copyright 2007 ZXing authors\n     *\n     * Licensed under the Apache License, Version 2.0 (the \"License\");\n     * you may not use this file except in compliance with the License.\n     * You may obtain a copy of the License at\n     *\n     *      http://www.apache.org/licenses/LICENSE-2.0\n     *\n     * Unless required by applicable law or agreed to in writing, software\n     * distributed under the License is distributed on an \"AS IS\" BASIS,\n     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n     * See the License for the specific language governing permissions and\n     * limitations under the License.\n     */\n    /*import java.util.Map;*/\n    /**\n     * <p>Encapsulates logic that can detect a QR Code in an image, even if the QR Code\n     * is rotated or skewed, or partially obscured.</p>\n     *\n     * @author Sean Owen\n     */\n    class Detector$2 {\n        constructor(image) {\n            this.image = image;\n        }\n        getImage() {\n            return this.image;\n        }\n        getResultPointCallback() {\n            return this.resultPointCallback;\n        }\n        /**\n         * <p>Detects a QR Code in an image.</p>\n         *\n         * @return {@link DetectorResult} encapsulating results of detecting a QR Code\n         * @throws NotFoundException if QR Code cannot be found\n         * @throws FormatException if a QR Code cannot be decoded\n         */\n        // public detect(): DetectorResult /*throws NotFoundException, FormatException*/ {\n        //   return detect(null)\n        // }\n        /**\n         * <p>Detects a QR Code in an image.</p>\n         *\n         * @param hints optional hints to detector\n         * @return {@link DetectorResult} encapsulating results of detecting a QR Code\n         * @throws NotFoundException if QR Code cannot be found\n         * @throws FormatException if a QR Code cannot be decoded\n         */\n        detect(hints) {\n            this.resultPointCallback = (hints === null || hints === undefined) ? null :\n                /*(ResultPointCallback) */ hints.get(DecodeHintType$1.NEED_RESULT_POINT_CALLBACK);\n            const finder = new FinderPatternFinder(this.image, this.resultPointCallback);\n            const info = finder.find(hints);\n            return this.processFinderPatternInfo(info);\n        }\n        processFinderPatternInfo(info) {\n            const topLeft = info.getTopLeft();\n            const topRight = info.getTopRight();\n            const bottomLeft = info.getBottomLeft();\n            const moduleSize = this.calculateModuleSize(topLeft, topRight, bottomLeft);\n            if (moduleSize < 1.0) {\n                throw new NotFoundException('No pattern found in proccess finder.');\n            }\n            const dimension = Detector$2.computeDimension(topLeft, topRight, bottomLeft, moduleSize);\n            const provisionalVersion = Version$1.getProvisionalVersionForDimension(dimension);\n            const modulesBetweenFPCenters = provisionalVersion.getDimensionForVersion() - 7;\n            let alignmentPattern = null;\n            // Anything above version 1 has an alignment pattern\n            if (provisionalVersion.getAlignmentPatternCenters().length > 0) {\n                // Guess where a \"bottom right\" finder pattern would have been\n                const bottomRightX = topRight.getX() - topLeft.getX() + bottomLeft.getX();\n                const bottomRightY = topRight.getY() - topLeft.getY() + bottomLeft.getY();\n                // Estimate that alignment pattern is closer by 3 modules\n                // from \"bottom right\" to known top left location\n                const correctionToTopLeft = 1.0 - 3.0 / modulesBetweenFPCenters;\n                const estAlignmentX = /*(int) */ Math.floor(topLeft.getX() + correctionToTopLeft * (bottomRightX - topLeft.getX()));\n                const estAlignmentY = /*(int) */ Math.floor(topLeft.getY() + correctionToTopLeft * (bottomRightY - topLeft.getY()));\n                // Kind of arbitrary -- expand search radius before giving up\n                for (let i = 4; i <= 16; i <<= 1) {\n                    try {\n                        alignmentPattern = this.findAlignmentInRegion(moduleSize, estAlignmentX, estAlignmentY, i);\n                        break;\n                    }\n                    catch (re /*NotFoundException*/) {\n                        if (!(re instanceof NotFoundException)) {\n                            throw re;\n                        }\n                        // try next round\n                    }\n                }\n                // If we didn't find alignment pattern... well try anyway without it\n            }\n            const transform = Detector$2.createTransform(topLeft, topRight, bottomLeft, alignmentPattern, dimension);\n            const bits = Detector$2.sampleGrid(this.image, transform, dimension);\n            let points;\n            if (alignmentPattern === null) {\n                points = [bottomLeft, topLeft, topRight];\n            }\n            else {\n                points = [bottomLeft, topLeft, topRight, alignmentPattern];\n            }\n            return new DetectorResult(bits, points);\n        }\n        static createTransform(topLeft, topRight, bottomLeft, alignmentPattern, dimension /*int*/) {\n            const dimMinusThree = dimension - 3.5;\n            let bottomRightX; /*float*/\n            let bottomRightY; /*float*/\n            let sourceBottomRightX; /*float*/\n            let sourceBottomRightY; /*float*/\n            if (alignmentPattern !== null) {\n                bottomRightX = alignmentPattern.getX();\n                bottomRightY = alignmentPattern.getY();\n                sourceBottomRightX = dimMinusThree - 3.0;\n                sourceBottomRightY = sourceBottomRightX;\n            }\n            else {\n                // Don't have an alignment pattern, just make up the bottom-right point\n                bottomRightX = (topRight.getX() - topLeft.getX()) + bottomLeft.getX();\n                bottomRightY = (topRight.getY() - topLeft.getY()) + bottomLeft.getY();\n                sourceBottomRightX = dimMinusThree;\n                sourceBottomRightY = dimMinusThree;\n            }\n            return PerspectiveTransform.quadrilateralToQuadrilateral(3.5, 3.5, dimMinusThree, 3.5, sourceBottomRightX, sourceBottomRightY, 3.5, dimMinusThree, topLeft.getX(), topLeft.getY(), topRight.getX(), topRight.getY(), bottomRightX, bottomRightY, bottomLeft.getX(), bottomLeft.getY());\n        }\n        static sampleGrid(image, transform, dimension /*int*/) {\n            const sampler = GridSamplerInstance.getInstance();\n            return sampler.sampleGridWithTransform(image, dimension, dimension, transform);\n        }\n        /**\n         * <p>Computes the dimension (number of modules on a size) of the QR Code based on the position\n         * of the finder patterns and estimated module size.</p>\n         */\n        static computeDimension(topLeft, topRight, bottomLeft, moduleSize /*float*/) {\n            const tltrCentersDimension = MathUtils.round(ResultPoint.distance(topLeft, topRight) / moduleSize);\n            const tlblCentersDimension = MathUtils.round(ResultPoint.distance(topLeft, bottomLeft) / moduleSize);\n            let dimension = Math.floor((tltrCentersDimension + tlblCentersDimension) / 2) + 7;\n            switch (dimension & 0x03) { // mod 4\n                case 0:\n                    dimension++;\n                    break;\n                // 1? do nothing\n                case 2:\n                    dimension--;\n                    break;\n                case 3:\n                    throw new NotFoundException('Dimensions could be not found.');\n            }\n            return dimension;\n        }\n        /**\n         * <p>Computes an average estimated module size based on estimated derived from the positions\n         * of the three finder patterns.</p>\n         *\n         * @param topLeft detected top-left finder pattern center\n         * @param topRight detected top-right finder pattern center\n         * @param bottomLeft detected bottom-left finder pattern center\n         * @return estimated module size\n         */\n        calculateModuleSize(topLeft, topRight, bottomLeft) {\n            // Take the average\n            return (this.calculateModuleSizeOneWay(topLeft, topRight) +\n                this.calculateModuleSizeOneWay(topLeft, bottomLeft)) / 2.0;\n        }\n        /**\n         * <p>Estimates module size based on two finder patterns -- it uses\n         * {@link #sizeOfBlackWhiteBlackRunBothWays(int, int, int, int)} to figure the\n         * width of each, measuring along the axis between their centers.</p>\n         */\n        calculateModuleSizeOneWay(pattern, otherPattern) {\n            const moduleSizeEst1 = this.sizeOfBlackWhiteBlackRunBothWays(/*(int) */ Math.floor(pattern.getX()), \n            /*(int) */ Math.floor(pattern.getY()), \n            /*(int) */ Math.floor(otherPattern.getX()), \n            /*(int) */ Math.floor(otherPattern.getY()));\n            const moduleSizeEst2 = this.sizeOfBlackWhiteBlackRunBothWays(/*(int) */ Math.floor(otherPattern.getX()), \n            /*(int) */ Math.floor(otherPattern.getY()), \n            /*(int) */ Math.floor(pattern.getX()), \n            /*(int) */ Math.floor(pattern.getY()));\n            if (isNaN(moduleSizeEst1)) {\n                return moduleSizeEst2 / 7.0;\n            }\n            if (isNaN(moduleSizeEst2)) {\n                return moduleSizeEst1 / 7.0;\n            }\n            // Average them, and divide by 7 since we've counted the width of 3 black modules,\n            // and 1 white and 1 black module on either side. Ergo, divide sum by 14.\n            return (moduleSizeEst1 + moduleSizeEst2) / 14.0;\n        }\n        /**\n         * See {@link #sizeOfBlackWhiteBlackRun(int, int, int, int)}; computes the total width of\n         * a finder pattern by looking for a black-white-black run from the center in the direction\n         * of another point (another finder pattern center), and in the opposite direction too.\n         */\n        sizeOfBlackWhiteBlackRunBothWays(fromX /*int*/, fromY /*int*/, toX /*int*/, toY /*int*/) {\n            let result = this.sizeOfBlackWhiteBlackRun(fromX, fromY, toX, toY);\n            // Now count other way -- don't run off image though of course\n            let scale = 1.0;\n            let otherToX = fromX - (toX - fromX);\n            if (otherToX < 0) {\n                scale = fromX / /*(float) */ (fromX - otherToX);\n                otherToX = 0;\n            }\n            else if (otherToX >= this.image.getWidth()) {\n                scale = (this.image.getWidth() - 1 - fromX) / /*(float) */ (otherToX - fromX);\n                otherToX = this.image.getWidth() - 1;\n            }\n            let otherToY = /*(int) */ Math.floor(fromY - (toY - fromY) * scale);\n            scale = 1.0;\n            if (otherToY < 0) {\n                scale = fromY / /*(float) */ (fromY - otherToY);\n                otherToY = 0;\n            }\n            else if (otherToY >= this.image.getHeight()) {\n                scale = (this.image.getHeight() - 1 - fromY) / /*(float) */ (otherToY - fromY);\n                otherToY = this.image.getHeight() - 1;\n            }\n            otherToX = /*(int) */ Math.floor(fromX + (otherToX - fromX) * scale);\n            result += this.sizeOfBlackWhiteBlackRun(fromX, fromY, otherToX, otherToY);\n            // Middle pixel is double-counted this way; subtract 1\n            return result - 1.0;\n        }\n        /**\n         * <p>This method traces a line from a point in the image, in the direction towards another point.\n         * It begins in a black region, and keeps going until it finds white, then black, then white again.\n         * It reports the distance from the start to this point.</p>\n         *\n         * <p>This is used when figuring out how wide a finder pattern is, when the finder pattern\n         * may be skewed or rotated.</p>\n         */\n        sizeOfBlackWhiteBlackRun(fromX /*int*/, fromY /*int*/, toX /*int*/, toY /*int*/) {\n            // Mild variant of Bresenham's algorithm\n            // see http://en.wikipedia.org/wiki/Bresenham's_line_algorithm\n            const steep = Math.abs(toY - fromY) > Math.abs(toX - fromX);\n            if (steep) {\n                let temp = fromX;\n                fromX = fromY;\n                fromY = temp;\n                temp = toX;\n                toX = toY;\n                toY = temp;\n            }\n            const dx = Math.abs(toX - fromX);\n            const dy = Math.abs(toY - fromY);\n            let error = -dx / 2;\n            const xstep = fromX < toX ? 1 : -1;\n            const ystep = fromY < toY ? 1 : -1;\n            // In black pixels, looking for white, first or second time.\n            let state = 0;\n            // Loop up until x == toX, but not beyond\n            const xLimit = toX + xstep;\n            for (let x = fromX, y = fromY; x !== xLimit; x += xstep) {\n                const realX = steep ? y : x;\n                const realY = steep ? x : y;\n                // Does current pixel mean we have moved white to black or vice versa?\n                // Scanning black in state 0,2 and white in state 1, so if we find the wrong\n                // color, advance to next state or end if we are in state 2 already\n                if ((state === 1) === this.image.get(realX, realY)) {\n                    if (state === 2) {\n                        return MathUtils.distance(x, y, fromX, fromY);\n                    }\n                    state++;\n                }\n                error += dy;\n                if (error > 0) {\n                    if (y === toY) {\n                        break;\n                    }\n                    y += ystep;\n                    error -= dx;\n                }\n            }\n            // Found black-white-black; give the benefit of the doubt that the next pixel outside the image\n            // is \"white\" so this last point at (toX+xStep,toY) is the right ending. This is really a\n            // small approximation; (toX+xStep,toY+yStep) might be really correct. Ignore this.\n            if (state === 2) {\n                return MathUtils.distance(toX + xstep, toY, fromX, fromY);\n            }\n            // else we didn't find even black-white-black; no estimate is really possible\n            return NaN;\n        }\n        /**\n         * <p>Attempts to locate an alignment pattern in a limited region of the image, which is\n         * guessed to contain it. This method uses {@link AlignmentPattern}.</p>\n         *\n         * @param overallEstModuleSize estimated module size so far\n         * @param estAlignmentX x coordinate of center of area probably containing alignment pattern\n         * @param estAlignmentY y coordinate of above\n         * @param allowanceFactor number of pixels in all directions to search from the center\n         * @return {@link AlignmentPattern} if found, or null otherwise\n         * @throws NotFoundException if an unexpected error occurs during detection\n         */\n        findAlignmentInRegion(overallEstModuleSize /*float*/, estAlignmentX /*int*/, estAlignmentY /*int*/, allowanceFactor /*float*/) {\n            // Look for an alignment pattern (3 modules in size) around where it\n            // should be\n            const allowance = /*(int) */ Math.floor(allowanceFactor * overallEstModuleSize);\n            const alignmentAreaLeftX = Math.max(0, estAlignmentX - allowance);\n            const alignmentAreaRightX = Math.min(this.image.getWidth() - 1, estAlignmentX + allowance);\n            if (alignmentAreaRightX - alignmentAreaLeftX < overallEstModuleSize * 3) {\n                throw new NotFoundException('Alignment top exceeds estimated module size.');\n            }\n            const alignmentAreaTopY = Math.max(0, estAlignmentY - allowance);\n            const alignmentAreaBottomY = Math.min(this.image.getHeight() - 1, estAlignmentY + allowance);\n            if (alignmentAreaBottomY - alignmentAreaTopY < overallEstModuleSize * 3) {\n                throw new NotFoundException('Alignment bottom exceeds estimated module size.');\n            }\n            const alignmentFinder = new AlignmentPatternFinder(this.image, alignmentAreaLeftX, alignmentAreaTopY, alignmentAreaRightX - alignmentAreaLeftX, alignmentAreaBottomY - alignmentAreaTopY, overallEstModuleSize, this.resultPointCallback);\n            return alignmentFinder.find();\n        }\n    }\n\n    /*\n     * Copyright 2007 ZXing authors\n     *\n     * Licensed under the Apache License, Version 2.0 (the \"License\");\n     * you may not use this file except in compliance with the License.\n     * You may obtain a copy of the License at\n     *\n     *      http://www.apache.org/licenses/LICENSE-2.0\n     *\n     * Unless required by applicable law or agreed to in writing, software\n     * distributed under the License is distributed on an \"AS IS\" BASIS,\n     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n     * See the License for the specific language governing permissions and\n     * limitations under the License.\n     */\n    /*import java.util.List;*/\n    /*import java.util.Map;*/\n    /**\n     * This implementation can detect and decode QR Codes in an image.\n     *\n     * @author Sean Owen\n     */\n    class QRCodeReader {\n        constructor() {\n            this.decoder = new Decoder$2();\n        }\n        getDecoder() {\n            return this.decoder;\n        }\n        /**\n         * Locates and decodes a QR code in an image.\n         *\n         * @return a representing: string the content encoded by the QR code\n         * @throws NotFoundException if a QR code cannot be found\n         * @throws FormatException if a QR code cannot be decoded\n         * @throws ChecksumException if error correction fails\n         */\n        /*@Override*/\n        // public decode(image: BinaryBitmap): Result /*throws NotFoundException, ChecksumException, FormatException */ {\n        //   return this.decode(image, null)\n        // }\n        /*@Override*/\n        decode(image, hints) {\n            let decoderResult;\n            let points;\n            if (hints !== undefined && hints !== null && undefined !== hints.get(DecodeHintType$1.PURE_BARCODE)) {\n                const bits = QRCodeReader.extractPureBits(image.getBlackMatrix());\n                decoderResult = this.decoder.decodeBitMatrix(bits, hints);\n                points = QRCodeReader.NO_POINTS;\n            }\n            else {\n                const detectorResult = new Detector$2(image.getBlackMatrix()).detect(hints);\n                decoderResult = this.decoder.decodeBitMatrix(detectorResult.getBits(), hints);\n                points = detectorResult.getPoints();\n            }\n            // If the code was mirrored: swap the bottom-left and the top-right points.\n            if (decoderResult.getOther() instanceof QRCodeDecoderMetaData) {\n                decoderResult.getOther().applyMirroredCorrection(points);\n            }\n            const result = new Result(decoderResult.getText(), decoderResult.getRawBytes(), undefined, points, BarcodeFormat$1.QR_CODE, undefined);\n            const byteSegments = decoderResult.getByteSegments();\n            if (byteSegments !== null) {\n                result.putMetadata(ResultMetadataType$1.BYTE_SEGMENTS, byteSegments);\n            }\n            const ecLevel = decoderResult.getECLevel();\n            if (ecLevel !== null) {\n                result.putMetadata(ResultMetadataType$1.ERROR_CORRECTION_LEVEL, ecLevel);\n            }\n            if (decoderResult.hasStructuredAppend()) {\n                result.putMetadata(ResultMetadataType$1.STRUCTURED_APPEND_SEQUENCE, decoderResult.getStructuredAppendSequenceNumber());\n                result.putMetadata(ResultMetadataType$1.STRUCTURED_APPEND_PARITY, decoderResult.getStructuredAppendParity());\n            }\n            return result;\n        }\n        /*@Override*/\n        reset() {\n            // do nothing\n        }\n        /**\n         * This method detects a code in a \"pure\" image -- that is, pure monochrome image\n         * which contains only an unrotated, unskewed, image of a code, with some white border\n         * around it. This is a specialized method that works exceptionally fast in this special\n         * case.\n         *\n         * @see com.google.zxing.datamatrix.DataMatrixReader#extractPureBits(BitMatrix)\n         */\n        static extractPureBits(image) {\n            const leftTopBlack = image.getTopLeftOnBit();\n            const rightBottomBlack = image.getBottomRightOnBit();\n            if (leftTopBlack === null || rightBottomBlack === null) {\n                throw new NotFoundException();\n            }\n            const moduleSize = this.moduleSize(leftTopBlack, image);\n            let top = leftTopBlack[1];\n            let bottom = rightBottomBlack[1];\n            let left = leftTopBlack[0];\n            let right = rightBottomBlack[0];\n            // Sanity check!\n            if (left >= right || top >= bottom) {\n                throw new NotFoundException();\n            }\n            if (bottom - top !== right - left) {\n                // Special case, where bottom-right module wasn't black so we found something else in the last row\n                // Assume it's a square, so use height as the width\n                right = left + (bottom - top);\n                if (right >= image.getWidth()) {\n                    // Abort if that would not make sense -- off image\n                    throw new NotFoundException();\n                }\n            }\n            const matrixWidth = Math.round((right - left + 1) / moduleSize);\n            const matrixHeight = Math.round((bottom - top + 1) / moduleSize);\n            if (matrixWidth <= 0 || matrixHeight <= 0) {\n                throw new NotFoundException();\n            }\n            if (matrixHeight !== matrixWidth) {\n                // Only possibly decode square regions\n                throw new NotFoundException();\n            }\n            // Push in the \"border\" by half the module width so that we start\n            // sampling in the middle of the module. Just in case the image is a\n            // little off, this will help recover.\n            const nudge = /*(int) */ Math.floor(moduleSize / 2.0);\n            top += nudge;\n            left += nudge;\n            // But careful that this does not sample off the edge\n            // \"right\" is the farthest-right valid pixel location -- right+1 is not necessarily\n            // This is positive by how much the inner x loop below would be too large\n            const nudgedTooFarRight = left + /*(int) */ Math.floor((matrixWidth - 1) * moduleSize) - right;\n            if (nudgedTooFarRight > 0) {\n                if (nudgedTooFarRight > nudge) {\n                    // Neither way fits; abort\n                    throw new NotFoundException();\n                }\n                left -= nudgedTooFarRight;\n            }\n            // See logic above\n            const nudgedTooFarDown = top + /*(int) */ Math.floor((matrixHeight - 1) * moduleSize) - bottom;\n            if (nudgedTooFarDown > 0) {\n                if (nudgedTooFarDown > nudge) {\n                    // Neither way fits; abort\n                    throw new NotFoundException();\n                }\n                top -= nudgedTooFarDown;\n            }\n            // Now just read off the bits\n            const bits = new BitMatrix(matrixWidth, matrixHeight);\n            for (let y = 0; y < matrixHeight; y++) {\n                const iOffset = top + /*(int) */ Math.floor(y * moduleSize);\n                for (let x = 0; x < matrixWidth; x++) {\n                    if (image.get(left + /*(int) */ Math.floor(x * moduleSize), iOffset)) {\n                        bits.set(x, y);\n                    }\n                }\n            }\n            return bits;\n        }\n        static moduleSize(leftTopBlack, image) {\n            const height = image.getHeight();\n            const width = image.getWidth();\n            let x = leftTopBlack[0];\n            let y = leftTopBlack[1];\n            let inBlack = true;\n            let transitions = 0;\n            while (x < width && y < height) {\n                if (inBlack !== image.get(x, y)) {\n                    if (++transitions === 5) {\n                        break;\n                    }\n                    inBlack = !inBlack;\n                }\n                x++;\n                y++;\n            }\n            if (x === width || y === height) {\n                throw new NotFoundException();\n            }\n            return (x - leftTopBlack[0]) / 7.0;\n        }\n    }\n    QRCodeReader.NO_POINTS = new Array();\n\n    /*\n    * Copyright 2009 ZXing authors\n    *\n    * Licensed under the Apache License, Version 2.0 (the \"License\");\n    * you may not use this file except in compliance with the License.\n    * You may obtain a copy of the License at\n    *\n    *      http://www.apache.org/licenses/LICENSE-2.0\n    *\n    * Unless required by applicable law or agreed to in writing, software\n    * distributed under the License is distributed on an \"AS IS\" BASIS,\n    * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n    * See the License for the specific language governing permissions and\n    * limitations under the License.\n    */\n    /**\n     * @author SITA Lab (kevin.osullivan@sita.aero)\n     * @author Guenther Grau\n     */\n    /*public final*/ class PDF417Common {\n        PDF417Common() {\n        }\n        /**\n         * @param moduleBitCount values to sum\n         * @return sum of values\n         * @deprecated call {@link MathUtils#sum(int[])}\n         */\n        // @Deprecated\n        static getBitCountSum(moduleBitCount) {\n            return MathUtils.sum(moduleBitCount);\n        }\n        static toIntArray(list) {\n            if (list == null || !list.length) {\n                return PDF417Common.EMPTY_INT_ARRAY;\n            }\n            const result = new Int32Array(list.length);\n            let i = 0;\n            for (const integer of list) {\n                result[i++] = integer;\n            }\n            return result;\n        }\n        /**\n         * @param symbol encoded symbol to translate to a codeword\n         * @return the codeword corresponding to the symbol.\n         */\n        static getCodeword(symbol /*int*/) {\n            const i = Arrays.binarySearch(PDF417Common.SYMBOL_TABLE, symbol & 0x3FFFF);\n            if (i < 0) {\n                return -1;\n            }\n            return (PDF417Common.CODEWORD_TABLE[i] - 1) % PDF417Common.NUMBER_OF_CODEWORDS;\n        }\n    }\n    PDF417Common.NUMBER_OF_CODEWORDS = 929;\n    // Maximum Codewords (Data + Error).\n    PDF417Common.MAX_CODEWORDS_IN_BARCODE = PDF417Common.NUMBER_OF_CODEWORDS - 1;\n    PDF417Common.MIN_ROWS_IN_BARCODE = 3;\n    PDF417Common.MAX_ROWS_IN_BARCODE = 90;\n    // One left row indication column + max 30 data columns + one right row indicator column\n    // public static /*final*/ MAX_CODEWORDS_IN_ROW: /*int*/ number = 32;\n    PDF417Common.MODULES_IN_CODEWORD = 17;\n    PDF417Common.MODULES_IN_STOP_PATTERN = 18;\n    PDF417Common.BARS_IN_MODULE = 8;\n    PDF417Common.EMPTY_INT_ARRAY = new Int32Array([]);\n    /**\n     * The sorted table of all possible symbols. Extracted from the PDF417\n     * specification. The index of a symbol in this table corresponds to the\n     * index into the codeword table.\n     */\n    PDF417Common.SYMBOL_TABLE = Int32Array.from([\n        0x1025e, 0x1027a, 0x1029e, 0x102bc, 0x102f2, 0x102f4, 0x1032e, 0x1034e, 0x1035c, 0x10396, 0x103a6, 0x103ac,\n        0x10422, 0x10428, 0x10436, 0x10442, 0x10444, 0x10448, 0x10450, 0x1045e, 0x10466, 0x1046c, 0x1047a, 0x10482,\n        0x1049e, 0x104a0, 0x104bc, 0x104c6, 0x104d8, 0x104ee, 0x104f2, 0x104f4, 0x10504, 0x10508, 0x10510, 0x1051e,\n        0x10520, 0x1053c, 0x10540, 0x10578, 0x10586, 0x1058c, 0x10598, 0x105b0, 0x105be, 0x105ce, 0x105dc, 0x105e2,\n        0x105e4, 0x105e8, 0x105f6, 0x1062e, 0x1064e, 0x1065c, 0x1068e, 0x1069c, 0x106b8, 0x106de, 0x106fa, 0x10716,\n        0x10726, 0x1072c, 0x10746, 0x1074c, 0x10758, 0x1076e, 0x10792, 0x10794, 0x107a2, 0x107a4, 0x107a8, 0x107b6,\n        0x10822, 0x10828, 0x10842, 0x10848, 0x10850, 0x1085e, 0x10866, 0x1086c, 0x1087a, 0x10882, 0x10884, 0x10890,\n        0x1089e, 0x108a0, 0x108bc, 0x108c6, 0x108cc, 0x108d8, 0x108ee, 0x108f2, 0x108f4, 0x10902, 0x10908, 0x1091e,\n        0x10920, 0x1093c, 0x10940, 0x10978, 0x10986, 0x10998, 0x109b0, 0x109be, 0x109ce, 0x109dc, 0x109e2, 0x109e4,\n        0x109e8, 0x109f6, 0x10a08, 0x10a10, 0x10a1e, 0x10a20, 0x10a3c, 0x10a40, 0x10a78, 0x10af0, 0x10b06, 0x10b0c,\n        0x10b18, 0x10b30, 0x10b3e, 0x10b60, 0x10b7c, 0x10b8e, 0x10b9c, 0x10bb8, 0x10bc2, 0x10bc4, 0x10bc8, 0x10bd0,\n        0x10bde, 0x10be6, 0x10bec, 0x10c2e, 0x10c4e, 0x10c5c, 0x10c62, 0x10c64, 0x10c68, 0x10c76, 0x10c8e, 0x10c9c,\n        0x10cb8, 0x10cc2, 0x10cc4, 0x10cc8, 0x10cd0, 0x10cde, 0x10ce6, 0x10cec, 0x10cfa, 0x10d0e, 0x10d1c, 0x10d38,\n        0x10d70, 0x10d7e, 0x10d82, 0x10d84, 0x10d88, 0x10d90, 0x10d9e, 0x10da0, 0x10dbc, 0x10dc6, 0x10dcc, 0x10dd8,\n        0x10dee, 0x10df2, 0x10df4, 0x10e16, 0x10e26, 0x10e2c, 0x10e46, 0x10e58, 0x10e6e, 0x10e86, 0x10e8c, 0x10e98,\n        0x10eb0, 0x10ebe, 0x10ece, 0x10edc, 0x10f0a, 0x10f12, 0x10f14, 0x10f22, 0x10f28, 0x10f36, 0x10f42, 0x10f44,\n        0x10f48, 0x10f50, 0x10f5e, 0x10f66, 0x10f6c, 0x10fb2, 0x10fb4, 0x11022, 0x11028, 0x11042, 0x11048, 0x11050,\n        0x1105e, 0x1107a, 0x11082, 0x11084, 0x11090, 0x1109e, 0x110a0, 0x110bc, 0x110c6, 0x110cc, 0x110d8, 0x110ee,\n        0x110f2, 0x110f4, 0x11102, 0x1111e, 0x11120, 0x1113c, 0x11140, 0x11178, 0x11186, 0x11198, 0x111b0, 0x111be,\n        0x111ce, 0x111dc, 0x111e2, 0x111e4, 0x111e8, 0x111f6, 0x11208, 0x1121e, 0x11220, 0x11278, 0x112f0, 0x1130c,\n        0x11330, 0x1133e, 0x11360, 0x1137c, 0x1138e, 0x1139c, 0x113b8, 0x113c2, 0x113c8, 0x113d0, 0x113de, 0x113e6,\n        0x113ec, 0x11408, 0x11410, 0x1141e, 0x11420, 0x1143c, 0x11440, 0x11478, 0x114f0, 0x115e0, 0x1160c, 0x11618,\n        0x11630, 0x1163e, 0x11660, 0x1167c, 0x116c0, 0x116f8, 0x1171c, 0x11738, 0x11770, 0x1177e, 0x11782, 0x11784,\n        0x11788, 0x11790, 0x1179e, 0x117a0, 0x117bc, 0x117c6, 0x117cc, 0x117d8, 0x117ee, 0x1182e, 0x11834, 0x1184e,\n        0x1185c, 0x11862, 0x11864, 0x11868, 0x11876, 0x1188e, 0x1189c, 0x118b8, 0x118c2, 0x118c8, 0x118d0, 0x118de,\n        0x118e6, 0x118ec, 0x118fa, 0x1190e, 0x1191c, 0x11938, 0x11970, 0x1197e, 0x11982, 0x11984, 0x11990, 0x1199e,\n        0x119a0, 0x119bc, 0x119c6, 0x119cc, 0x119d8, 0x119ee, 0x119f2, 0x119f4, 0x11a0e, 0x11a1c, 0x11a38, 0x11a70,\n        0x11a7e, 0x11ae0, 0x11afc, 0x11b08, 0x11b10, 0x11b1e, 0x11b20, 0x11b3c, 0x11b40, 0x11b78, 0x11b8c, 0x11b98,\n        0x11bb0, 0x11bbe, 0x11bce, 0x11bdc, 0x11be2, 0x11be4, 0x11be8, 0x11bf6, 0x11c16, 0x11c26, 0x11c2c, 0x11c46,\n        0x11c4c, 0x11c58, 0x11c6e, 0x11c86, 0x11c98, 0x11cb0, 0x11cbe, 0x11cce, 0x11cdc, 0x11ce2, 0x11ce4, 0x11ce8,\n        0x11cf6, 0x11d06, 0x11d0c, 0x11d18, 0x11d30, 0x11d3e, 0x11d60, 0x11d7c, 0x11d8e, 0x11d9c, 0x11db8, 0x11dc4,\n        0x11dc8, 0x11dd0, 0x11dde, 0x11de6, 0x11dec, 0x11dfa, 0x11e0a, 0x11e12, 0x11e14, 0x11e22, 0x11e24, 0x11e28,\n        0x11e36, 0x11e42, 0x11e44, 0x11e50, 0x11e5e, 0x11e66, 0x11e6c, 0x11e82, 0x11e84, 0x11e88, 0x11e90, 0x11e9e,\n        0x11ea0, 0x11ebc, 0x11ec6, 0x11ecc, 0x11ed8, 0x11eee, 0x11f1a, 0x11f2e, 0x11f32, 0x11f34, 0x11f4e, 0x11f5c,\n        0x11f62, 0x11f64, 0x11f68, 0x11f76, 0x12048, 0x1205e, 0x12082, 0x12084, 0x12090, 0x1209e, 0x120a0, 0x120bc,\n        0x120d8, 0x120f2, 0x120f4, 0x12108, 0x1211e, 0x12120, 0x1213c, 0x12140, 0x12178, 0x12186, 0x12198, 0x121b0,\n        0x121be, 0x121e2, 0x121e4, 0x121e8, 0x121f6, 0x12204, 0x12210, 0x1221e, 0x12220, 0x12278, 0x122f0, 0x12306,\n        0x1230c, 0x12330, 0x1233e, 0x12360, 0x1237c, 0x1238e, 0x1239c, 0x123b8, 0x123c2, 0x123c8, 0x123d0, 0x123e6,\n        0x123ec, 0x1241e, 0x12420, 0x1243c, 0x124f0, 0x125e0, 0x12618, 0x1263e, 0x12660, 0x1267c, 0x126c0, 0x126f8,\n        0x12738, 0x12770, 0x1277e, 0x12782, 0x12784, 0x12790, 0x1279e, 0x127a0, 0x127bc, 0x127c6, 0x127cc, 0x127d8,\n        0x127ee, 0x12820, 0x1283c, 0x12840, 0x12878, 0x128f0, 0x129e0, 0x12bc0, 0x12c18, 0x12c30, 0x12c3e, 0x12c60,\n        0x12c7c, 0x12cc0, 0x12cf8, 0x12df0, 0x12e1c, 0x12e38, 0x12e70, 0x12e7e, 0x12ee0, 0x12efc, 0x12f04, 0x12f08,\n        0x12f10, 0x12f20, 0x12f3c, 0x12f40, 0x12f78, 0x12f86, 0x12f8c, 0x12f98, 0x12fb0, 0x12fbe, 0x12fce, 0x12fdc,\n        0x1302e, 0x1304e, 0x1305c, 0x13062, 0x13068, 0x1308e, 0x1309c, 0x130b8, 0x130c2, 0x130c8, 0x130d0, 0x130de,\n        0x130ec, 0x130fa, 0x1310e, 0x13138, 0x13170, 0x1317e, 0x13182, 0x13184, 0x13190, 0x1319e, 0x131a0, 0x131bc,\n        0x131c6, 0x131cc, 0x131d8, 0x131f2, 0x131f4, 0x1320e, 0x1321c, 0x13270, 0x1327e, 0x132e0, 0x132fc, 0x13308,\n        0x1331e, 0x13320, 0x1333c, 0x13340, 0x13378, 0x13386, 0x13398, 0x133b0, 0x133be, 0x133ce, 0x133dc, 0x133e2,\n        0x133e4, 0x133e8, 0x133f6, 0x1340e, 0x1341c, 0x13438, 0x13470, 0x1347e, 0x134e0, 0x134fc, 0x135c0, 0x135f8,\n        0x13608, 0x13610, 0x1361e, 0x13620, 0x1363c, 0x13640, 0x13678, 0x136f0, 0x1370c, 0x13718, 0x13730, 0x1373e,\n        0x13760, 0x1377c, 0x1379c, 0x137b8, 0x137c2, 0x137c4, 0x137c8, 0x137d0, 0x137de, 0x137e6, 0x137ec, 0x13816,\n        0x13826, 0x1382c, 0x13846, 0x1384c, 0x13858, 0x1386e, 0x13874, 0x13886, 0x13898, 0x138b0, 0x138be, 0x138ce,\n        0x138dc, 0x138e2, 0x138e4, 0x138e8, 0x13906, 0x1390c, 0x13930, 0x1393e, 0x13960, 0x1397c, 0x1398e, 0x1399c,\n        0x139b8, 0x139c8, 0x139d0, 0x139de, 0x139e6, 0x139ec, 0x139fa, 0x13a06, 0x13a0c, 0x13a18, 0x13a30, 0x13a3e,\n        0x13a60, 0x13a7c, 0x13ac0, 0x13af8, 0x13b0e, 0x13b1c, 0x13b38, 0x13b70, 0x13b7e, 0x13b88, 0x13b90, 0x13b9e,\n        0x13ba0, 0x13bbc, 0x13bcc, 0x13bd8, 0x13bee, 0x13bf2, 0x13bf4, 0x13c12, 0x13c14, 0x13c22, 0x13c24, 0x13c28,\n        0x13c36, 0x13c42, 0x13c48, 0x13c50, 0x13c5e, 0x13c66, 0x13c6c, 0x13c82, 0x13c84, 0x13c90, 0x13c9e, 0x13ca0,\n        0x13cbc, 0x13cc6, 0x13ccc, 0x13cd8, 0x13cee, 0x13d02, 0x13d04, 0x13d08, 0x13d10, 0x13d1e, 0x13d20, 0x13d3c,\n        0x13d40, 0x13d78, 0x13d86, 0x13d8c, 0x13d98, 0x13db0, 0x13dbe, 0x13dce, 0x13ddc, 0x13de4, 0x13de8, 0x13df6,\n        0x13e1a, 0x13e2e, 0x13e32, 0x13e34, 0x13e4e, 0x13e5c, 0x13e62, 0x13e64, 0x13e68, 0x13e76, 0x13e8e, 0x13e9c,\n        0x13eb8, 0x13ec2, 0x13ec4, 0x13ec8, 0x13ed0, 0x13ede, 0x13ee6, 0x13eec, 0x13f26, 0x13f2c, 0x13f3a, 0x13f46,\n        0x13f4c, 0x13f58, 0x13f6e, 0x13f72, 0x13f74, 0x14082, 0x1409e, 0x140a0, 0x140bc, 0x14104, 0x14108, 0x14110,\n        0x1411e, 0x14120, 0x1413c, 0x14140, 0x14178, 0x1418c, 0x14198, 0x141b0, 0x141be, 0x141e2, 0x141e4, 0x141e8,\n        0x14208, 0x14210, 0x1421e, 0x14220, 0x1423c, 0x14240, 0x14278, 0x142f0, 0x14306, 0x1430c, 0x14318, 0x14330,\n        0x1433e, 0x14360, 0x1437c, 0x1438e, 0x143c2, 0x143c4, 0x143c8, 0x143d0, 0x143e6, 0x143ec, 0x14408, 0x14410,\n        0x1441e, 0x14420, 0x1443c, 0x14440, 0x14478, 0x144f0, 0x145e0, 0x1460c, 0x14618, 0x14630, 0x1463e, 0x14660,\n        0x1467c, 0x146c0, 0x146f8, 0x1471c, 0x14738, 0x14770, 0x1477e, 0x14782, 0x14784, 0x14788, 0x14790, 0x147a0,\n        0x147bc, 0x147c6, 0x147cc, 0x147d8, 0x147ee, 0x14810, 0x14820, 0x1483c, 0x14840, 0x14878, 0x148f0, 0x149e0,\n        0x14bc0, 0x14c30, 0x14c3e, 0x14c60, 0x14c7c, 0x14cc0, 0x14cf8, 0x14df0, 0x14e38, 0x14e70, 0x14e7e, 0x14ee0,\n        0x14efc, 0x14f04, 0x14f08, 0x14f10, 0x14f1e, 0x14f20, 0x14f3c, 0x14f40, 0x14f78, 0x14f86, 0x14f8c, 0x14f98,\n        0x14fb0, 0x14fce, 0x14fdc, 0x15020, 0x15040, 0x15078, 0x150f0, 0x151e0, 0x153c0, 0x15860, 0x1587c, 0x158c0,\n        0x158f8, 0x159f0, 0x15be0, 0x15c70, 0x15c7e, 0x15ce0, 0x15cfc, 0x15dc0, 0x15df8, 0x15e08, 0x15e10, 0x15e20,\n        0x15e40, 0x15e78, 0x15ef0, 0x15f0c, 0x15f18, 0x15f30, 0x15f60, 0x15f7c, 0x15f8e, 0x15f9c, 0x15fb8, 0x1604e,\n        0x1605c, 0x1608e, 0x1609c, 0x160b8, 0x160c2, 0x160c4, 0x160c8, 0x160de, 0x1610e, 0x1611c, 0x16138, 0x16170,\n        0x1617e, 0x16184, 0x16188, 0x16190, 0x1619e, 0x161a0, 0x161bc, 0x161c6, 0x161cc, 0x161d8, 0x161f2, 0x161f4,\n        0x1620e, 0x1621c, 0x16238, 0x16270, 0x1627e, 0x162e0, 0x162fc, 0x16304, 0x16308, 0x16310, 0x1631e, 0x16320,\n        0x1633c, 0x16340, 0x16378, 0x16386, 0x1638c, 0x16398, 0x163b0, 0x163be, 0x163ce, 0x163dc, 0x163e2, 0x163e4,\n        0x163e8, 0x163f6, 0x1640e, 0x1641c, 0x16438, 0x16470, 0x1647e, 0x164e0, 0x164fc, 0x165c0, 0x165f8, 0x16610,\n        0x1661e, 0x16620, 0x1663c, 0x16640, 0x16678, 0x166f0, 0x16718, 0x16730, 0x1673e, 0x16760, 0x1677c, 0x1678e,\n        0x1679c, 0x167b8, 0x167c2, 0x167c4, 0x167c8, 0x167d0, 0x167de, 0x167e6, 0x167ec, 0x1681c, 0x16838, 0x16870,\n        0x168e0, 0x168fc, 0x169c0, 0x169f8, 0x16bf0, 0x16c10, 0x16c1e, 0x16c20, 0x16c3c, 0x16c40, 0x16c78, 0x16cf0,\n        0x16de0, 0x16e18, 0x16e30, 0x16e3e, 0x16e60, 0x16e7c, 0x16ec0, 0x16ef8, 0x16f1c, 0x16f38, 0x16f70, 0x16f7e,\n        0x16f84, 0x16f88, 0x16f90, 0x16f9e, 0x16fa0, 0x16fbc, 0x16fc6, 0x16fcc, 0x16fd8, 0x17026, 0x1702c, 0x17046,\n        0x1704c, 0x17058, 0x1706e, 0x17086, 0x1708c, 0x17098, 0x170b0, 0x170be, 0x170ce, 0x170dc, 0x170e8, 0x17106,\n        0x1710c, 0x17118, 0x17130, 0x1713e, 0x17160, 0x1717c, 0x1718e, 0x1719c, 0x171b8, 0x171c2, 0x171c4, 0x171c8,\n        0x171d0, 0x171de, 0x171e6, 0x171ec, 0x171fa, 0x17206, 0x1720c, 0x17218, 0x17230, 0x1723e, 0x17260, 0x1727c,\n        0x172c0, 0x172f8, 0x1730e, 0x1731c, 0x17338, 0x17370, 0x1737e, 0x17388, 0x17390, 0x1739e, 0x173a0, 0x173bc,\n        0x173cc, 0x173d8, 0x173ee, 0x173f2, 0x173f4, 0x1740c, 0x17418, 0x17430, 0x1743e, 0x17460, 0x1747c, 0x174c0,\n        0x174f8, 0x175f0, 0x1760e, 0x1761c, 0x17638, 0x17670, 0x1767e, 0x176e0, 0x176fc, 0x17708, 0x17710, 0x1771e,\n        0x17720, 0x1773c, 0x17740, 0x17778, 0x17798, 0x177b0, 0x177be, 0x177dc, 0x177e2, 0x177e4, 0x177e8, 0x17822,\n        0x17824, 0x17828, 0x17836, 0x17842, 0x17844, 0x17848, 0x17850, 0x1785e, 0x17866, 0x1786c, 0x17882, 0x17884,\n        0x17888, 0x17890, 0x1789e, 0x178a0, 0x178bc, 0x178c6, 0x178cc, 0x178d8, 0x178ee, 0x178f2, 0x178f4, 0x17902,\n        0x17904, 0x17908, 0x17910, 0x1791e, 0x17920, 0x1793c, 0x17940, 0x17978, 0x17986, 0x1798c, 0x17998, 0x179b0,\n        0x179be, 0x179ce, 0x179dc, 0x179e2, 0x179e4, 0x179e8, 0x179f6, 0x17a04, 0x17a08, 0x17a10, 0x17a1e, 0x17a20,\n        0x17a3c, 0x17a40, 0x17a78, 0x17af0, 0x17b06, 0x17b0c, 0x17b18, 0x17b30, 0x17b3e, 0x17b60, 0x17b7c, 0x17b8e,\n        0x17b9c, 0x17bb8, 0x17bc4, 0x17bc8, 0x17bd0, 0x17bde, 0x17be6, 0x17bec, 0x17c2e, 0x17c32, 0x17c34, 0x17c4e,\n        0x17c5c, 0x17c62, 0x17c64, 0x17c68, 0x17c76, 0x17c8e, 0x17c9c, 0x17cb8, 0x17cc2, 0x17cc4, 0x17cc8, 0x17cd0,\n        0x17cde, 0x17ce6, 0x17cec, 0x17d0e, 0x17d1c, 0x17d38, 0x17d70, 0x17d82, 0x17d84, 0x17d88, 0x17d90, 0x17d9e,\n        0x17da0, 0x17dbc, 0x17dc6, 0x17dcc, 0x17dd8, 0x17dee, 0x17e26, 0x17e2c, 0x17e3a, 0x17e46, 0x17e4c, 0x17e58,\n        0x17e6e, 0x17e72, 0x17e74, 0x17e86, 0x17e8c, 0x17e98, 0x17eb0, 0x17ece, 0x17edc, 0x17ee2, 0x17ee4, 0x17ee8,\n        0x17ef6, 0x1813a, 0x18172, 0x18174, 0x18216, 0x18226, 0x1823a, 0x1824c, 0x18258, 0x1826e, 0x18272, 0x18274,\n        0x18298, 0x182be, 0x182e2, 0x182e4, 0x182e8, 0x182f6, 0x1835e, 0x1837a, 0x183ae, 0x183d6, 0x18416, 0x18426,\n        0x1842c, 0x1843a, 0x18446, 0x18458, 0x1846e, 0x18472, 0x18474, 0x18486, 0x184b0, 0x184be, 0x184ce, 0x184dc,\n        0x184e2, 0x184e4, 0x184e8, 0x184f6, 0x18506, 0x1850c, 0x18518, 0x18530, 0x1853e, 0x18560, 0x1857c, 0x1858e,\n        0x1859c, 0x185b8, 0x185c2, 0x185c4, 0x185c8, 0x185d0, 0x185de, 0x185e6, 0x185ec, 0x185fa, 0x18612, 0x18614,\n        0x18622, 0x18628, 0x18636, 0x18642, 0x18650, 0x1865e, 0x1867a, 0x18682, 0x18684, 0x18688, 0x18690, 0x1869e,\n        0x186a0, 0x186bc, 0x186c6, 0x186cc, 0x186d8, 0x186ee, 0x186f2, 0x186f4, 0x1872e, 0x1874e, 0x1875c, 0x18796,\n        0x187a6, 0x187ac, 0x187d2, 0x187d4, 0x18826, 0x1882c, 0x1883a, 0x18846, 0x1884c, 0x18858, 0x1886e, 0x18872,\n        0x18874, 0x18886, 0x18898, 0x188b0, 0x188be, 0x188ce, 0x188dc, 0x188e2, 0x188e4, 0x188e8, 0x188f6, 0x1890c,\n        0x18930, 0x1893e, 0x18960, 0x1897c, 0x1898e, 0x189b8, 0x189c2, 0x189c8, 0x189d0, 0x189de, 0x189e6, 0x189ec,\n        0x189fa, 0x18a18, 0x18a30, 0x18a3e, 0x18a60, 0x18a7c, 0x18ac0, 0x18af8, 0x18b1c, 0x18b38, 0x18b70, 0x18b7e,\n        0x18b82, 0x18b84, 0x18b88, 0x18b90, 0x18b9e, 0x18ba0, 0x18bbc, 0x18bc6, 0x18bcc, 0x18bd8, 0x18bee, 0x18bf2,\n        0x18bf4, 0x18c22, 0x18c24, 0x18c28, 0x18c36, 0x18c42, 0x18c48, 0x18c50, 0x18c5e, 0x18c66, 0x18c7a, 0x18c82,\n        0x18c84, 0x18c90, 0x18c9e, 0x18ca0, 0x18cbc, 0x18ccc, 0x18cf2, 0x18cf4, 0x18d04, 0x18d08, 0x18d10, 0x18d1e,\n        0x18d20, 0x18d3c, 0x18d40, 0x18d78, 0x18d86, 0x18d98, 0x18dce, 0x18de2, 0x18de4, 0x18de8, 0x18e2e, 0x18e32,\n        0x18e34, 0x18e4e, 0x18e5c, 0x18e62, 0x18e64, 0x18e68, 0x18e8e, 0x18e9c, 0x18eb8, 0x18ec2, 0x18ec4, 0x18ec8,\n        0x18ed0, 0x18efa, 0x18f16, 0x18f26, 0x18f2c, 0x18f46, 0x18f4c, 0x18f58, 0x18f6e, 0x18f8a, 0x18f92, 0x18f94,\n        0x18fa2, 0x18fa4, 0x18fa8, 0x18fb6, 0x1902c, 0x1903a, 0x19046, 0x1904c, 0x19058, 0x19072, 0x19074, 0x19086,\n        0x19098, 0x190b0, 0x190be, 0x190ce, 0x190dc, 0x190e2, 0x190e8, 0x190f6, 0x19106, 0x1910c, 0x19130, 0x1913e,\n        0x19160, 0x1917c, 0x1918e, 0x1919c, 0x191b8, 0x191c2, 0x191c8, 0x191d0, 0x191de, 0x191e6, 0x191ec, 0x191fa,\n        0x19218, 0x1923e, 0x19260, 0x1927c, 0x192c0, 0x192f8, 0x19338, 0x19370, 0x1937e, 0x19382, 0x19384, 0x19390,\n        0x1939e, 0x193a0, 0x193bc, 0x193c6, 0x193cc, 0x193d8, 0x193ee, 0x193f2, 0x193f4, 0x19430, 0x1943e, 0x19460,\n        0x1947c, 0x194c0, 0x194f8, 0x195f0, 0x19638, 0x19670, 0x1967e, 0x196e0, 0x196fc, 0x19702, 0x19704, 0x19708,\n        0x19710, 0x19720, 0x1973c, 0x19740, 0x19778, 0x19786, 0x1978c, 0x19798, 0x197b0, 0x197be, 0x197ce, 0x197dc,\n        0x197e2, 0x197e4, 0x197e8, 0x19822, 0x19824, 0x19842, 0x19848, 0x19850, 0x1985e, 0x19866, 0x1987a, 0x19882,\n        0x19884, 0x19890, 0x1989e, 0x198a0, 0x198bc, 0x198cc, 0x198f2, 0x198f4, 0x19902, 0x19908, 0x1991e, 0x19920,\n        0x1993c, 0x19940, 0x19978, 0x19986, 0x19998, 0x199ce, 0x199e2, 0x199e4, 0x199e8, 0x19a08, 0x19a10, 0x19a1e,\n        0x19a20, 0x19a3c, 0x19a40, 0x19a78, 0x19af0, 0x19b18, 0x19b3e, 0x19b60, 0x19b9c, 0x19bc2, 0x19bc4, 0x19bc8,\n        0x19bd0, 0x19be6, 0x19c2e, 0x19c34, 0x19c4e, 0x19c5c, 0x19c62, 0x19c64, 0x19c68, 0x19c8e, 0x19c9c, 0x19cb8,\n        0x19cc2, 0x19cc8, 0x19cd0, 0x19ce6, 0x19cfa, 0x19d0e, 0x19d1c, 0x19d38, 0x19d70, 0x19d7e, 0x19d82, 0x19d84,\n        0x19d88, 0x19d90, 0x19da0, 0x19dcc, 0x19df2, 0x19df4, 0x19e16, 0x19e26, 0x19e2c, 0x19e46, 0x19e4c, 0x19e58,\n        0x19e74, 0x19e86, 0x19e8c, 0x19e98, 0x19eb0, 0x19ebe, 0x19ece, 0x19ee2, 0x19ee4, 0x19ee8, 0x19f0a, 0x19f12,\n        0x19f14, 0x19f22, 0x19f24, 0x19f28, 0x19f42, 0x19f44, 0x19f48, 0x19f50, 0x19f5e, 0x19f6c, 0x19f9a, 0x19fae,\n        0x19fb2, 0x19fb4, 0x1a046, 0x1a04c, 0x1a072, 0x1a074, 0x1a086, 0x1a08c, 0x1a098, 0x1a0b0, 0x1a0be, 0x1a0e2,\n        0x1a0e4, 0x1a0e8, 0x1a0f6, 0x1a106, 0x1a10c, 0x1a118, 0x1a130, 0x1a13e, 0x1a160, 0x1a17c, 0x1a18e, 0x1a19c,\n        0x1a1b8, 0x1a1c2, 0x1a1c4, 0x1a1c8, 0x1a1d0, 0x1a1de, 0x1a1e6, 0x1a1ec, 0x1a218, 0x1a230, 0x1a23e, 0x1a260,\n        0x1a27c, 0x1a2c0, 0x1a2f8, 0x1a31c, 0x1a338, 0x1a370, 0x1a37e, 0x1a382, 0x1a384, 0x1a388, 0x1a390, 0x1a39e,\n        0x1a3a0, 0x1a3bc, 0x1a3c6, 0x1a3cc, 0x1a3d8, 0x1a3ee, 0x1a3f2, 0x1a3f4, 0x1a418, 0x1a430, 0x1a43e, 0x1a460,\n        0x1a47c, 0x1a4c0, 0x1a4f8, 0x1a5f0, 0x1a61c, 0x1a638, 0x1a670, 0x1a67e, 0x1a6e0, 0x1a6fc, 0x1a702, 0x1a704,\n        0x1a708, 0x1a710, 0x1a71e, 0x1a720, 0x1a73c, 0x1a740, 0x1a778, 0x1a786, 0x1a78c, 0x1a798, 0x1a7b0, 0x1a7be,\n        0x1a7ce, 0x1a7dc, 0x1a7e2, 0x1a7e4, 0x1a7e8, 0x1a830, 0x1a860, 0x1a87c, 0x1a8c0, 0x1a8f8, 0x1a9f0, 0x1abe0,\n        0x1ac70, 0x1ac7e, 0x1ace0, 0x1acfc, 0x1adc0, 0x1adf8, 0x1ae04, 0x1ae08, 0x1ae10, 0x1ae20, 0x1ae3c, 0x1ae40,\n        0x1ae78, 0x1aef0, 0x1af06, 0x1af0c, 0x1af18, 0x1af30, 0x1af3e, 0x1af60, 0x1af7c, 0x1af8e, 0x1af9c, 0x1afb8,\n        0x1afc4, 0x1afc8, 0x1afd0, 0x1afde, 0x1b042, 0x1b05e, 0x1b07a, 0x1b082, 0x1b084, 0x1b088, 0x1b090, 0x1b09e,\n        0x1b0a0, 0x1b0bc, 0x1b0cc, 0x1b0f2, 0x1b0f4, 0x1b102, 0x1b104, 0x1b108, 0x1b110, 0x1b11e, 0x1b120, 0x1b13c,\n        0x1b140, 0x1b178, 0x1b186, 0x1b198, 0x1b1ce, 0x1b1e2, 0x1b1e4, 0x1b1e8, 0x1b204, 0x1b208, 0x1b210, 0x1b21e,\n        0x1b220, 0x1b23c, 0x1b240, 0x1b278, 0x1b2f0, 0x1b30c, 0x1b33e, 0x1b360, 0x1b39c, 0x1b3c2, 0x1b3c4, 0x1b3c8,\n        0x1b3d0, 0x1b3e6, 0x1b410, 0x1b41e, 0x1b420, 0x1b43c, 0x1b440, 0x1b478, 0x1b4f0, 0x1b5e0, 0x1b618, 0x1b660,\n        0x1b67c, 0x1b6c0, 0x1b738, 0x1b782, 0x1b784, 0x1b788, 0x1b790, 0x1b79e, 0x1b7a0, 0x1b7cc, 0x1b82e, 0x1b84e,\n        0x1b85c, 0x1b88e, 0x1b89c, 0x1b8b8, 0x1b8c2, 0x1b8c4, 0x1b8c8, 0x1b8d0, 0x1b8e6, 0x1b8fa, 0x1b90e, 0x1b91c,\n        0x1b938, 0x1b970, 0x1b97e, 0x1b982, 0x1b984, 0x1b988, 0x1b990, 0x1b99e, 0x1b9a0, 0x1b9cc, 0x1b9f2, 0x1b9f4,\n        0x1ba0e, 0x1ba1c, 0x1ba38, 0x1ba70, 0x1ba7e, 0x1bae0, 0x1bafc, 0x1bb08, 0x1bb10, 0x1bb20, 0x1bb3c, 0x1bb40,\n        0x1bb98, 0x1bbce, 0x1bbe2, 0x1bbe4, 0x1bbe8, 0x1bc16, 0x1bc26, 0x1bc2c, 0x1bc46, 0x1bc4c, 0x1bc58, 0x1bc72,\n        0x1bc74, 0x1bc86, 0x1bc8c, 0x1bc98, 0x1bcb0, 0x1bcbe, 0x1bcce, 0x1bce2, 0x1bce4, 0x1bce8, 0x1bd06, 0x1bd0c,\n        0x1bd18, 0x1bd30, 0x1bd3e, 0x1bd60, 0x1bd7c, 0x1bd9c, 0x1bdc2, 0x1bdc4, 0x1bdc8, 0x1bdd0, 0x1bde6, 0x1bdfa,\n        0x1be12, 0x1be14, 0x1be22, 0x1be24, 0x1be28, 0x1be42, 0x1be44, 0x1be48, 0x1be50, 0x1be5e, 0x1be66, 0x1be82,\n        0x1be84, 0x1be88, 0x1be90, 0x1be9e, 0x1bea0, 0x1bebc, 0x1becc, 0x1bef4, 0x1bf1a, 0x1bf2e, 0x1bf32, 0x1bf34,\n        0x1bf4e, 0x1bf5c, 0x1bf62, 0x1bf64, 0x1bf68, 0x1c09a, 0x1c0b2, 0x1c0b4, 0x1c11a, 0x1c132, 0x1c134, 0x1c162,\n        0x1c164, 0x1c168, 0x1c176, 0x1c1ba, 0x1c21a, 0x1c232, 0x1c234, 0x1c24e, 0x1c25c, 0x1c262, 0x1c264, 0x1c268,\n        0x1c276, 0x1c28e, 0x1c2c2, 0x1c2c4, 0x1c2c8, 0x1c2d0, 0x1c2de, 0x1c2e6, 0x1c2ec, 0x1c2fa, 0x1c316, 0x1c326,\n        0x1c33a, 0x1c346, 0x1c34c, 0x1c372, 0x1c374, 0x1c41a, 0x1c42e, 0x1c432, 0x1c434, 0x1c44e, 0x1c45c, 0x1c462,\n        0x1c464, 0x1c468, 0x1c476, 0x1c48e, 0x1c49c, 0x1c4b8, 0x1c4c2, 0x1c4c8, 0x1c4d0, 0x1c4de, 0x1c4e6, 0x1c4ec,\n        0x1c4fa, 0x1c51c, 0x1c538, 0x1c570, 0x1c57e, 0x1c582, 0x1c584, 0x1c588, 0x1c590, 0x1c59e, 0x1c5a0, 0x1c5bc,\n        0x1c5c6, 0x1c5cc, 0x1c5d8, 0x1c5ee, 0x1c5f2, 0x1c5f4, 0x1c616, 0x1c626, 0x1c62c, 0x1c63a, 0x1c646, 0x1c64c,\n        0x1c658, 0x1c66e, 0x1c672, 0x1c674, 0x1c686, 0x1c68c, 0x1c698, 0x1c6b0, 0x1c6be, 0x1c6ce, 0x1c6dc, 0x1c6e2,\n        0x1c6e4, 0x1c6e8, 0x1c712, 0x1c714, 0x1c722, 0x1c728, 0x1c736, 0x1c742, 0x1c744, 0x1c748, 0x1c750, 0x1c75e,\n        0x1c766, 0x1c76c, 0x1c77a, 0x1c7ae, 0x1c7d6, 0x1c7ea, 0x1c81a, 0x1c82e, 0x1c832, 0x1c834, 0x1c84e, 0x1c85c,\n        0x1c862, 0x1c864, 0x1c868, 0x1c876, 0x1c88e, 0x1c89c, 0x1c8b8, 0x1c8c2, 0x1c8c8, 0x1c8d0, 0x1c8de, 0x1c8e6,\n        0x1c8ec, 0x1c8fa, 0x1c90e, 0x1c938, 0x1c970, 0x1c97e, 0x1c982, 0x1c984, 0x1c990, 0x1c99e, 0x1c9a0, 0x1c9bc,\n        0x1c9c6, 0x1c9cc, 0x1c9d8, 0x1c9ee, 0x1c9f2, 0x1c9f4, 0x1ca38, 0x1ca70, 0x1ca7e, 0x1cae0, 0x1cafc, 0x1cb02,\n        0x1cb04, 0x1cb08, 0x1cb10, 0x1cb20, 0x1cb3c, 0x1cb40, 0x1cb78, 0x1cb86, 0x1cb8c, 0x1cb98, 0x1cbb0, 0x1cbbe,\n        0x1cbce, 0x1cbdc, 0x1cbe2, 0x1cbe4, 0x1cbe8, 0x1cbf6, 0x1cc16, 0x1cc26, 0x1cc2c, 0x1cc3a, 0x1cc46, 0x1cc58,\n        0x1cc72, 0x1cc74, 0x1cc86, 0x1ccb0, 0x1ccbe, 0x1ccce, 0x1cce2, 0x1cce4, 0x1cce8, 0x1cd06, 0x1cd0c, 0x1cd18,\n        0x1cd30, 0x1cd3e, 0x1cd60, 0x1cd7c, 0x1cd9c, 0x1cdc2, 0x1cdc4, 0x1cdc8, 0x1cdd0, 0x1cdde, 0x1cde6, 0x1cdfa,\n        0x1ce22, 0x1ce28, 0x1ce42, 0x1ce50, 0x1ce5e, 0x1ce66, 0x1ce7a, 0x1ce82, 0x1ce84, 0x1ce88, 0x1ce90, 0x1ce9e,\n        0x1cea0, 0x1cebc, 0x1cecc, 0x1cef2, 0x1cef4, 0x1cf2e, 0x1cf32, 0x1cf34, 0x1cf4e, 0x1cf5c, 0x1cf62, 0x1cf64,\n        0x1cf68, 0x1cf96, 0x1cfa6, 0x1cfac, 0x1cfca, 0x1cfd2, 0x1cfd4, 0x1d02e, 0x1d032, 0x1d034, 0x1d04e, 0x1d05c,\n        0x1d062, 0x1d064, 0x1d068, 0x1d076, 0x1d08e, 0x1d09c, 0x1d0b8, 0x1d0c2, 0x1d0c4, 0x1d0c8, 0x1d0d0, 0x1d0de,\n        0x1d0e6, 0x1d0ec, 0x1d0fa, 0x1d11c, 0x1d138, 0x1d170, 0x1d17e, 0x1d182, 0x1d184, 0x1d188, 0x1d190, 0x1d19e,\n        0x1d1a0, 0x1d1bc, 0x1d1c6, 0x1d1cc, 0x1d1d8, 0x1d1ee, 0x1d1f2, 0x1d1f4, 0x1d21c, 0x1d238, 0x1d270, 0x1d27e,\n        0x1d2e0, 0x1d2fc, 0x1d302, 0x1d304, 0x1d308, 0x1d310, 0x1d31e, 0x1d320, 0x1d33c, 0x1d340, 0x1d378, 0x1d386,\n        0x1d38c, 0x1d398, 0x1d3b0, 0x1d3be, 0x1d3ce, 0x1d3dc, 0x1d3e2, 0x1d3e4, 0x1d3e8, 0x1d3f6, 0x1d470, 0x1d47e,\n        0x1d4e0, 0x1d4fc, 0x1d5c0, 0x1d5f8, 0x1d604, 0x1d608, 0x1d610, 0x1d620, 0x1d640, 0x1d678, 0x1d6f0, 0x1d706,\n        0x1d70c, 0x1d718, 0x1d730, 0x1d73e, 0x1d760, 0x1d77c, 0x1d78e, 0x1d79c, 0x1d7b8, 0x1d7c2, 0x1d7c4, 0x1d7c8,\n        0x1d7d0, 0x1d7de, 0x1d7e6, 0x1d7ec, 0x1d826, 0x1d82c, 0x1d83a, 0x1d846, 0x1d84c, 0x1d858, 0x1d872, 0x1d874,\n        0x1d886, 0x1d88c, 0x1d898, 0x1d8b0, 0x1d8be, 0x1d8ce, 0x1d8e2, 0x1d8e4, 0x1d8e8, 0x1d8f6, 0x1d90c, 0x1d918,\n        0x1d930, 0x1d93e, 0x1d960, 0x1d97c, 0x1d99c, 0x1d9c2, 0x1d9c4, 0x1d9c8, 0x1d9d0, 0x1d9e6, 0x1d9fa, 0x1da0c,\n        0x1da18, 0x1da30, 0x1da3e, 0x1da60, 0x1da7c, 0x1dac0, 0x1daf8, 0x1db38, 0x1db82, 0x1db84, 0x1db88, 0x1db90,\n        0x1db9e, 0x1dba0, 0x1dbcc, 0x1dbf2, 0x1dbf4, 0x1dc22, 0x1dc42, 0x1dc44, 0x1dc48, 0x1dc50, 0x1dc5e, 0x1dc66,\n        0x1dc7a, 0x1dc82, 0x1dc84, 0x1dc88, 0x1dc90, 0x1dc9e, 0x1dca0, 0x1dcbc, 0x1dccc, 0x1dcf2, 0x1dcf4, 0x1dd04,\n        0x1dd08, 0x1dd10, 0x1dd1e, 0x1dd20, 0x1dd3c, 0x1dd40, 0x1dd78, 0x1dd86, 0x1dd98, 0x1ddce, 0x1dde2, 0x1dde4,\n        0x1dde8, 0x1de2e, 0x1de32, 0x1de34, 0x1de4e, 0x1de5c, 0x1de62, 0x1de64, 0x1de68, 0x1de8e, 0x1de9c, 0x1deb8,\n        0x1dec2, 0x1dec4, 0x1dec8, 0x1ded0, 0x1dee6, 0x1defa, 0x1df16, 0x1df26, 0x1df2c, 0x1df46, 0x1df4c, 0x1df58,\n        0x1df72, 0x1df74, 0x1df8a, 0x1df92, 0x1df94, 0x1dfa2, 0x1dfa4, 0x1dfa8, 0x1e08a, 0x1e092, 0x1e094, 0x1e0a2,\n        0x1e0a4, 0x1e0a8, 0x1e0b6, 0x1e0da, 0x1e10a, 0x1e112, 0x1e114, 0x1e122, 0x1e124, 0x1e128, 0x1e136, 0x1e142,\n        0x1e144, 0x1e148, 0x1e150, 0x1e166, 0x1e16c, 0x1e17a, 0x1e19a, 0x1e1b2, 0x1e1b4, 0x1e20a, 0x1e212, 0x1e214,\n        0x1e222, 0x1e224, 0x1e228, 0x1e236, 0x1e242, 0x1e248, 0x1e250, 0x1e25e, 0x1e266, 0x1e26c, 0x1e27a, 0x1e282,\n        0x1e284, 0x1e288, 0x1e290, 0x1e2a0, 0x1e2bc, 0x1e2c6, 0x1e2cc, 0x1e2d8, 0x1e2ee, 0x1e2f2, 0x1e2f4, 0x1e31a,\n        0x1e332, 0x1e334, 0x1e35c, 0x1e362, 0x1e364, 0x1e368, 0x1e3ba, 0x1e40a, 0x1e412, 0x1e414, 0x1e422, 0x1e428,\n        0x1e436, 0x1e442, 0x1e448, 0x1e450, 0x1e45e, 0x1e466, 0x1e46c, 0x1e47a, 0x1e482, 0x1e484, 0x1e490, 0x1e49e,\n        0x1e4a0, 0x1e4bc, 0x1e4c6, 0x1e4cc, 0x1e4d8, 0x1e4ee, 0x1e4f2, 0x1e4f4, 0x1e502, 0x1e504, 0x1e508, 0x1e510,\n        0x1e51e, 0x1e520, 0x1e53c, 0x1e540, 0x1e578, 0x1e586, 0x1e58c, 0x1e598, 0x1e5b0, 0x1e5be, 0x1e5ce, 0x1e5dc,\n        0x1e5e2, 0x1e5e4, 0x1e5e8, 0x1e5f6, 0x1e61a, 0x1e62e, 0x1e632, 0x1e634, 0x1e64e, 0x1e65c, 0x1e662, 0x1e668,\n        0x1e68e, 0x1e69c, 0x1e6b8, 0x1e6c2, 0x1e6c4, 0x1e6c8, 0x1e6d0, 0x1e6e6, 0x1e6fa, 0x1e716, 0x1e726, 0x1e72c,\n        0x1e73a, 0x1e746, 0x1e74c, 0x1e758, 0x1e772, 0x1e774, 0x1e792, 0x1e794, 0x1e7a2, 0x1e7a4, 0x1e7a8, 0x1e7b6,\n        0x1e812, 0x1e814, 0x1e822, 0x1e824, 0x1e828, 0x1e836, 0x1e842, 0x1e844, 0x1e848, 0x1e850, 0x1e85e, 0x1e866,\n        0x1e86c, 0x1e87a, 0x1e882, 0x1e884, 0x1e888, 0x1e890, 0x1e89e, 0x1e8a0, 0x1e8bc, 0x1e8c6, 0x1e8cc, 0x1e8d8,\n        0x1e8ee, 0x1e8f2, 0x1e8f4, 0x1e902, 0x1e904, 0x1e908, 0x1e910, 0x1e920, 0x1e93c, 0x1e940, 0x1e978, 0x1e986,\n        0x1e98c, 0x1e998, 0x1e9b0, 0x1e9be, 0x1e9ce, 0x1e9dc, 0x1e9e2, 0x1e9e4, 0x1e9e8, 0x1e9f6, 0x1ea04, 0x1ea08,\n        0x1ea10, 0x1ea20, 0x1ea40, 0x1ea78, 0x1eaf0, 0x1eb06, 0x1eb0c, 0x1eb18, 0x1eb30, 0x1eb3e, 0x1eb60, 0x1eb7c,\n        0x1eb8e, 0x1eb9c, 0x1ebb8, 0x1ebc2, 0x1ebc4, 0x1ebc8, 0x1ebd0, 0x1ebde, 0x1ebe6, 0x1ebec, 0x1ec1a, 0x1ec2e,\n        0x1ec32, 0x1ec34, 0x1ec4e, 0x1ec5c, 0x1ec62, 0x1ec64, 0x1ec68, 0x1ec8e, 0x1ec9c, 0x1ecb8, 0x1ecc2, 0x1ecc4,\n        0x1ecc8, 0x1ecd0, 0x1ece6, 0x1ecfa, 0x1ed0e, 0x1ed1c, 0x1ed38, 0x1ed70, 0x1ed7e, 0x1ed82, 0x1ed84, 0x1ed88,\n        0x1ed90, 0x1ed9e, 0x1eda0, 0x1edcc, 0x1edf2, 0x1edf4, 0x1ee16, 0x1ee26, 0x1ee2c, 0x1ee3a, 0x1ee46, 0x1ee4c,\n        0x1ee58, 0x1ee6e, 0x1ee72, 0x1ee74, 0x1ee86, 0x1ee8c, 0x1ee98, 0x1eeb0, 0x1eebe, 0x1eece, 0x1eedc, 0x1eee2,\n        0x1eee4, 0x1eee8, 0x1ef12, 0x1ef22, 0x1ef24, 0x1ef28, 0x1ef36, 0x1ef42, 0x1ef44, 0x1ef48, 0x1ef50, 0x1ef5e,\n        0x1ef66, 0x1ef6c, 0x1ef7a, 0x1efae, 0x1efb2, 0x1efb4, 0x1efd6, 0x1f096, 0x1f0a6, 0x1f0ac, 0x1f0ba, 0x1f0ca,\n        0x1f0d2, 0x1f0d4, 0x1f116, 0x1f126, 0x1f12c, 0x1f13a, 0x1f146, 0x1f14c, 0x1f158, 0x1f16e, 0x1f172, 0x1f174,\n        0x1f18a, 0x1f192, 0x1f194, 0x1f1a2, 0x1f1a4, 0x1f1a8, 0x1f1da, 0x1f216, 0x1f226, 0x1f22c, 0x1f23a, 0x1f246,\n        0x1f258, 0x1f26e, 0x1f272, 0x1f274, 0x1f286, 0x1f28c, 0x1f298, 0x1f2b0, 0x1f2be, 0x1f2ce, 0x1f2dc, 0x1f2e2,\n        0x1f2e4, 0x1f2e8, 0x1f2f6, 0x1f30a, 0x1f312, 0x1f314, 0x1f322, 0x1f328, 0x1f342, 0x1f344, 0x1f348, 0x1f350,\n        0x1f35e, 0x1f366, 0x1f37a, 0x1f39a, 0x1f3ae, 0x1f3b2, 0x1f3b4, 0x1f416, 0x1f426, 0x1f42c, 0x1f43a, 0x1f446,\n        0x1f44c, 0x1f458, 0x1f46e, 0x1f472, 0x1f474, 0x1f486, 0x1f48c, 0x1f498, 0x1f4b0, 0x1f4be, 0x1f4ce, 0x1f4dc,\n        0x1f4e2, 0x1f4e4, 0x1f4e8, 0x1f4f6, 0x1f506, 0x1f50c, 0x1f518, 0x1f530, 0x1f53e, 0x1f560, 0x1f57c, 0x1f58e,\n        0x1f59c, 0x1f5b8, 0x1f5c2, 0x1f5c4, 0x1f5c8, 0x1f5d0, 0x1f5de, 0x1f5e6, 0x1f5ec, 0x1f5fa, 0x1f60a, 0x1f612,\n        0x1f614, 0x1f622, 0x1f624, 0x1f628, 0x1f636, 0x1f642, 0x1f644, 0x1f648, 0x1f650, 0x1f65e, 0x1f666, 0x1f67a,\n        0x1f682, 0x1f684, 0x1f688, 0x1f690, 0x1f69e, 0x1f6a0, 0x1f6bc, 0x1f6cc, 0x1f6f2, 0x1f6f4, 0x1f71a, 0x1f72e,\n        0x1f732, 0x1f734, 0x1f74e, 0x1f75c, 0x1f762, 0x1f764, 0x1f768, 0x1f776, 0x1f796, 0x1f7a6, 0x1f7ac, 0x1f7ba,\n        0x1f7d2, 0x1f7d4, 0x1f89a, 0x1f8ae, 0x1f8b2, 0x1f8b4, 0x1f8d6, 0x1f8ea, 0x1f91a, 0x1f92e, 0x1f932, 0x1f934,\n        0x1f94e, 0x1f95c, 0x1f962, 0x1f964, 0x1f968, 0x1f976, 0x1f996, 0x1f9a6, 0x1f9ac, 0x1f9ba, 0x1f9ca, 0x1f9d2,\n        0x1f9d4, 0x1fa1a, 0x1fa2e, 0x1fa32, 0x1fa34, 0x1fa4e, 0x1fa5c, 0x1fa62, 0x1fa64, 0x1fa68, 0x1fa76, 0x1fa8e,\n        0x1fa9c, 0x1fab8, 0x1fac2, 0x1fac4, 0x1fac8, 0x1fad0, 0x1fade, 0x1fae6, 0x1faec, 0x1fb16, 0x1fb26, 0x1fb2c,\n        0x1fb3a, 0x1fb46, 0x1fb4c, 0x1fb58, 0x1fb6e, 0x1fb72, 0x1fb74, 0x1fb8a, 0x1fb92, 0x1fb94, 0x1fba2, 0x1fba4,\n        0x1fba8, 0x1fbb6, 0x1fbda\n    ]);\n    /**\n     * This table contains to codewords for all symbols.\n     */\n    PDF417Common.CODEWORD_TABLE = Int32Array.from([\n        2627, 1819, 2622, 2621, 1813, 1812, 2729, 2724, 2723, 2779, 2774, 2773, 902, 896, 908, 868, 865, 861, 859, 2511,\n        873, 871, 1780, 835, 2493, 825, 2491, 842, 837, 844, 1764, 1762, 811, 810, 809, 2483, 807, 2482, 806, 2480, 815,\n        814, 813, 812, 2484, 817, 816, 1745, 1744, 1742, 1746, 2655, 2637, 2635, 2626, 2625, 2623, 2628, 1820, 2752,\n        2739, 2737, 2728, 2727, 2725, 2730, 2785, 2783, 2778, 2777, 2775, 2780, 787, 781, 747, 739, 736, 2413, 754, 752,\n        1719, 692, 689, 681, 2371, 678, 2369, 700, 697, 694, 703, 1688, 1686, 642, 638, 2343, 631, 2341, 627, 2338, 651,\n        646, 643, 2345, 654, 652, 1652, 1650, 1647, 1654, 601, 599, 2322, 596, 2321, 594, 2319, 2317, 611, 610, 608, 606,\n        2324, 603, 2323, 615, 614, 612, 1617, 1616, 1614, 1612, 616, 1619, 1618, 2575, 2538, 2536, 905, 901, 898, 909,\n        2509, 2507, 2504, 870, 867, 864, 860, 2512, 875, 872, 1781, 2490, 2489, 2487, 2485, 1748, 836, 834, 832, 830,\n        2494, 827, 2492, 843, 841, 839, 845, 1765, 1763, 2701, 2676, 2674, 2653, 2648, 2656, 2634, 2633, 2631, 2629,\n        1821, 2638, 2636, 2770, 2763, 2761, 2750, 2745, 2753, 2736, 2735, 2733, 2731, 1848, 2740, 2738, 2786, 2784, 591,\n        588, 576, 569, 566, 2296, 1590, 537, 534, 526, 2276, 522, 2274, 545, 542, 539, 548, 1572, 1570, 481, 2245, 466,\n        2242, 462, 2239, 492, 485, 482, 2249, 496, 494, 1534, 1531, 1528, 1538, 413, 2196, 406, 2191, 2188, 425, 419,\n        2202, 415, 2199, 432, 430, 427, 1472, 1467, 1464, 433, 1476, 1474, 368, 367, 2160, 365, 2159, 362, 2157, 2155,\n        2152, 378, 377, 375, 2166, 372, 2165, 369, 2162, 383, 381, 379, 2168, 1419, 1418, 1416, 1414, 385, 1411, 384,\n        1423, 1422, 1420, 1424, 2461, 802, 2441, 2439, 790, 786, 783, 794, 2409, 2406, 2403, 750, 742, 738, 2414, 756,\n        753, 1720, 2367, 2365, 2362, 2359, 1663, 693, 691, 684, 2373, 680, 2370, 702, 699, 696, 704, 1690, 1687, 2337,\n        2336, 2334, 2332, 1624, 2329, 1622, 640, 637, 2344, 634, 2342, 630, 2340, 650, 648, 645, 2346, 655, 653, 1653,\n        1651, 1649, 1655, 2612, 2597, 2595, 2571, 2568, 2565, 2576, 2534, 2529, 2526, 1787, 2540, 2537, 907, 904, 900,\n        910, 2503, 2502, 2500, 2498, 1768, 2495, 1767, 2510, 2508, 2506, 869, 866, 863, 2513, 876, 874, 1782, 2720, 2713,\n        2711, 2697, 2694, 2691, 2702, 2672, 2670, 2664, 1828, 2678, 2675, 2647, 2646, 2644, 2642, 1823, 2639, 1822, 2654,\n        2652, 2650, 2657, 2771, 1855, 2765, 2762, 1850, 1849, 2751, 2749, 2747, 2754, 353, 2148, 344, 342, 336, 2142,\n        332, 2140, 345, 1375, 1373, 306, 2130, 299, 2128, 295, 2125, 319, 314, 311, 2132, 1354, 1352, 1349, 1356, 262,\n        257, 2101, 253, 2096, 2093, 274, 273, 267, 2107, 263, 2104, 280, 278, 275, 1316, 1311, 1308, 1320, 1318, 2052,\n        202, 2050, 2044, 2040, 219, 2063, 212, 2060, 208, 2055, 224, 221, 2066, 1260, 1258, 1252, 231, 1248, 229, 1266,\n        1264, 1261, 1268, 155, 1998, 153, 1996, 1994, 1991, 1988, 165, 164, 2007, 162, 2006, 159, 2003, 2000, 172, 171,\n        169, 2012, 166, 2010, 1186, 1184, 1182, 1179, 175, 1176, 173, 1192, 1191, 1189, 1187, 176, 1194, 1193, 2313,\n        2307, 2305, 592, 589, 2294, 2292, 2289, 578, 572, 568, 2297, 580, 1591, 2272, 2267, 2264, 1547, 538, 536, 529,\n        2278, 525, 2275, 547, 544, 541, 1574, 1571, 2237, 2235, 2229, 1493, 2225, 1489, 478, 2247, 470, 2244, 465, 2241,\n        493, 488, 484, 2250, 498, 495, 1536, 1533, 1530, 1539, 2187, 2186, 2184, 2182, 1432, 2179, 1430, 2176, 1427, 414,\n        412, 2197, 409, 2195, 405, 2193, 2190, 426, 424, 421, 2203, 418, 2201, 431, 429, 1473, 1471, 1469, 1466, 434,\n        1477, 1475, 2478, 2472, 2470, 2459, 2457, 2454, 2462, 803, 2437, 2432, 2429, 1726, 2443, 2440, 792, 789, 785,\n        2401, 2399, 2393, 1702, 2389, 1699, 2411, 2408, 2405, 745, 741, 2415, 758, 755, 1721, 2358, 2357, 2355, 2353,\n        1661, 2350, 1660, 2347, 1657, 2368, 2366, 2364, 2361, 1666, 690, 687, 2374, 683, 2372, 701, 698, 705, 1691, 1689,\n        2619, 2617, 2610, 2608, 2605, 2613, 2593, 2588, 2585, 1803, 2599, 2596, 2563, 2561, 2555, 1797, 2551, 1795, 2573,\n        2570, 2567, 2577, 2525, 2524, 2522, 2520, 1786, 2517, 1785, 2514, 1783, 2535, 2533, 2531, 2528, 1788, 2541, 2539,\n        906, 903, 911, 2721, 1844, 2715, 2712, 1838, 1836, 2699, 2696, 2693, 2703, 1827, 1826, 1824, 2673, 2671, 2669,\n        2666, 1829, 2679, 2677, 1858, 1857, 2772, 1854, 1853, 1851, 1856, 2766, 2764, 143, 1987, 139, 1986, 135, 133,\n        131, 1984, 128, 1983, 125, 1981, 138, 137, 136, 1985, 1133, 1132, 1130, 112, 110, 1974, 107, 1973, 104, 1971,\n        1969, 122, 121, 119, 117, 1977, 114, 1976, 124, 1115, 1114, 1112, 1110, 1117, 1116, 84, 83, 1953, 81, 1952, 78,\n        1950, 1948, 1945, 94, 93, 91, 1959, 88, 1958, 85, 1955, 99, 97, 95, 1961, 1086, 1085, 1083, 1081, 1078, 100,\n        1090, 1089, 1087, 1091, 49, 47, 1917, 44, 1915, 1913, 1910, 1907, 59, 1926, 56, 1925, 53, 1922, 1919, 66, 64,\n        1931, 61, 1929, 1042, 1040, 1038, 71, 1035, 70, 1032, 68, 1048, 1047, 1045, 1043, 1050, 1049, 12, 10, 1869, 1867,\n        1864, 1861, 21, 1880, 19, 1877, 1874, 1871, 28, 1888, 25, 1886, 22, 1883, 982, 980, 977, 974, 32, 30, 991, 989,\n        987, 984, 34, 995, 994, 992, 2151, 2150, 2147, 2146, 2144, 356, 355, 354, 2149, 2139, 2138, 2136, 2134, 1359,\n        343, 341, 338, 2143, 335, 2141, 348, 347, 346, 1376, 1374, 2124, 2123, 2121, 2119, 1326, 2116, 1324, 310, 308,\n        305, 2131, 302, 2129, 298, 2127, 320, 318, 316, 313, 2133, 322, 321, 1355, 1353, 1351, 1357, 2092, 2091, 2089,\n        2087, 1276, 2084, 1274, 2081, 1271, 259, 2102, 256, 2100, 252, 2098, 2095, 272, 269, 2108, 266, 2106, 281, 279,\n        277, 1317, 1315, 1313, 1310, 282, 1321, 1319, 2039, 2037, 2035, 2032, 1203, 2029, 1200, 1197, 207, 2053, 205,\n        2051, 201, 2049, 2046, 2043, 220, 218, 2064, 215, 2062, 211, 2059, 228, 226, 223, 2069, 1259, 1257, 1254, 232,\n        1251, 230, 1267, 1265, 1263, 2316, 2315, 2312, 2311, 2309, 2314, 2304, 2303, 2301, 2299, 1593, 2308, 2306, 590,\n        2288, 2287, 2285, 2283, 1578, 2280, 1577, 2295, 2293, 2291, 579, 577, 574, 571, 2298, 582, 581, 1592, 2263, 2262,\n        2260, 2258, 1545, 2255, 1544, 2252, 1541, 2273, 2271, 2269, 2266, 1550, 535, 532, 2279, 528, 2277, 546, 543, 549,\n        1575, 1573, 2224, 2222, 2220, 1486, 2217, 1485, 2214, 1482, 1479, 2238, 2236, 2234, 2231, 1496, 2228, 1492, 480,\n        477, 2248, 473, 2246, 469, 2243, 490, 487, 2251, 497, 1537, 1535, 1532, 2477, 2476, 2474, 2479, 2469, 2468, 2466,\n        2464, 1730, 2473, 2471, 2453, 2452, 2450, 2448, 1729, 2445, 1728, 2460, 2458, 2456, 2463, 805, 804, 2428, 2427,\n        2425, 2423, 1725, 2420, 1724, 2417, 1722, 2438, 2436, 2434, 2431, 1727, 2444, 2442, 793, 791, 788, 795, 2388,\n        2386, 2384, 1697, 2381, 1696, 2378, 1694, 1692, 2402, 2400, 2398, 2395, 1703, 2392, 1701, 2412, 2410, 2407, 751,\n        748, 744, 2416, 759, 757, 1807, 2620, 2618, 1806, 1805, 2611, 2609, 2607, 2614, 1802, 1801, 1799, 2594, 2592,\n        2590, 2587, 1804, 2600, 2598, 1794, 1793, 1791, 1789, 2564, 2562, 2560, 2557, 1798, 2554, 1796, 2574, 2572, 2569,\n        2578, 1847, 1846, 2722, 1843, 1842, 1840, 1845, 2716, 2714, 1835, 1834, 1832, 1830, 1839, 1837, 2700, 2698, 2695,\n        2704, 1817, 1811, 1810, 897, 862, 1777, 829, 826, 838, 1760, 1758, 808, 2481, 1741, 1740, 1738, 1743, 2624, 1818,\n        2726, 2776, 782, 740, 737, 1715, 686, 679, 695, 1682, 1680, 639, 628, 2339, 647, 644, 1645, 1643, 1640, 1648,\n        602, 600, 597, 595, 2320, 593, 2318, 609, 607, 604, 1611, 1610, 1608, 1606, 613, 1615, 1613, 2328, 926, 924, 892,\n        886, 899, 857, 850, 2505, 1778, 824, 823, 821, 819, 2488, 818, 2486, 833, 831, 828, 840, 1761, 1759, 2649, 2632,\n        2630, 2746, 2734, 2732, 2782, 2781, 570, 567, 1587, 531, 527, 523, 540, 1566, 1564, 476, 467, 463, 2240, 486,\n        483, 1524, 1521, 1518, 1529, 411, 403, 2192, 399, 2189, 423, 416, 1462, 1457, 1454, 428, 1468, 1465, 2210, 366,\n        363, 2158, 360, 2156, 357, 2153, 376, 373, 370, 2163, 1410, 1409, 1407, 1405, 382, 1402, 380, 1417, 1415, 1412,\n        1421, 2175, 2174, 777, 774, 771, 784, 732, 725, 722, 2404, 743, 1716, 676, 674, 668, 2363, 665, 2360, 685, 1684,\n        1681, 626, 624, 622, 2335, 620, 2333, 617, 2330, 641, 635, 649, 1646, 1644, 1642, 2566, 928, 925, 2530, 2527,\n        894, 891, 888, 2501, 2499, 2496, 858, 856, 854, 851, 1779, 2692, 2668, 2665, 2645, 2643, 2640, 2651, 2768, 2759,\n        2757, 2744, 2743, 2741, 2748, 352, 1382, 340, 337, 333, 1371, 1369, 307, 300, 296, 2126, 315, 312, 1347, 1342,\n        1350, 261, 258, 250, 2097, 246, 2094, 271, 268, 264, 1306, 1301, 1298, 276, 1312, 1309, 2115, 203, 2048, 195,\n        2045, 191, 2041, 213, 209, 2056, 1246, 1244, 1238, 225, 1234, 222, 1256, 1253, 1249, 1262, 2080, 2079, 154, 1997,\n        150, 1995, 147, 1992, 1989, 163, 160, 2004, 156, 2001, 1175, 1174, 1172, 1170, 1167, 170, 1164, 167, 1185, 1183,\n        1180, 1177, 174, 1190, 1188, 2025, 2024, 2022, 587, 586, 564, 559, 556, 2290, 573, 1588, 520, 518, 512, 2268,\n        508, 2265, 530, 1568, 1565, 461, 457, 2233, 450, 2230, 446, 2226, 479, 471, 489, 1526, 1523, 1520, 397, 395,\n        2185, 392, 2183, 389, 2180, 2177, 410, 2194, 402, 422, 1463, 1461, 1459, 1456, 1470, 2455, 799, 2433, 2430, 779,\n        776, 773, 2397, 2394, 2390, 734, 728, 724, 746, 1717, 2356, 2354, 2351, 2348, 1658, 677, 675, 673, 670, 667, 688,\n        1685, 1683, 2606, 2589, 2586, 2559, 2556, 2552, 927, 2523, 2521, 2518, 2515, 1784, 2532, 895, 893, 890, 2718,\n        2709, 2707, 2689, 2687, 2684, 2663, 2662, 2660, 2658, 1825, 2667, 2769, 1852, 2760, 2758, 142, 141, 1139, 1138,\n        134, 132, 129, 126, 1982, 1129, 1128, 1126, 1131, 113, 111, 108, 105, 1972, 101, 1970, 120, 118, 115, 1109, 1108,\n        1106, 1104, 123, 1113, 1111, 82, 79, 1951, 75, 1949, 72, 1946, 92, 89, 86, 1956, 1077, 1076, 1074, 1072, 98,\n        1069, 96, 1084, 1082, 1079, 1088, 1968, 1967, 48, 45, 1916, 42, 1914, 39, 1911, 1908, 60, 57, 54, 1923, 50, 1920,\n        1031, 1030, 1028, 1026, 67, 1023, 65, 1020, 62, 1041, 1039, 1036, 1033, 69, 1046, 1044, 1944, 1943, 1941, 11, 9,\n        1868, 7, 1865, 1862, 1859, 20, 1878, 16, 1875, 13, 1872, 970, 968, 966, 963, 29, 960, 26, 23, 983, 981, 978, 975,\n        33, 971, 31, 990, 988, 985, 1906, 1904, 1902, 993, 351, 2145, 1383, 331, 330, 328, 326, 2137, 323, 2135, 339,\n        1372, 1370, 294, 293, 291, 289, 2122, 286, 2120, 283, 2117, 309, 303, 317, 1348, 1346, 1344, 245, 244, 242, 2090,\n        239, 2088, 236, 2085, 2082, 260, 2099, 249, 270, 1307, 1305, 1303, 1300, 1314, 189, 2038, 186, 2036, 183, 2033,\n        2030, 2026, 206, 198, 2047, 194, 216, 1247, 1245, 1243, 1240, 227, 1237, 1255, 2310, 2302, 2300, 2286, 2284,\n        2281, 565, 563, 561, 558, 575, 1589, 2261, 2259, 2256, 2253, 1542, 521, 519, 517, 514, 2270, 511, 533, 1569,\n        1567, 2223, 2221, 2218, 2215, 1483, 2211, 1480, 459, 456, 453, 2232, 449, 474, 491, 1527, 1525, 1522, 2475, 2467,\n        2465, 2451, 2449, 2446, 801, 800, 2426, 2424, 2421, 2418, 1723, 2435, 780, 778, 775, 2387, 2385, 2382, 2379,\n        1695, 2375, 1693, 2396, 735, 733, 730, 727, 749, 1718, 2616, 2615, 2604, 2603, 2601, 2584, 2583, 2581, 2579,\n        1800, 2591, 2550, 2549, 2547, 2545, 1792, 2542, 1790, 2558, 929, 2719, 1841, 2710, 2708, 1833, 1831, 2690, 2688,\n        2686, 1815, 1809, 1808, 1774, 1756, 1754, 1737, 1736, 1734, 1739, 1816, 1711, 1676, 1674, 633, 629, 1638, 1636,\n        1633, 1641, 598, 1605, 1604, 1602, 1600, 605, 1609, 1607, 2327, 887, 853, 1775, 822, 820, 1757, 1755, 1584, 524,\n        1560, 1558, 468, 464, 1514, 1511, 1508, 1519, 408, 404, 400, 1452, 1447, 1444, 417, 1458, 1455, 2208, 364, 361,\n        358, 2154, 1401, 1400, 1398, 1396, 374, 1393, 371, 1408, 1406, 1403, 1413, 2173, 2172, 772, 726, 723, 1712, 672,\n        669, 666, 682, 1678, 1675, 625, 623, 621, 618, 2331, 636, 632, 1639, 1637, 1635, 920, 918, 884, 880, 889, 849,\n        848, 847, 846, 2497, 855, 852, 1776, 2641, 2742, 2787, 1380, 334, 1367, 1365, 301, 297, 1340, 1338, 1335, 1343,\n        255, 251, 247, 1296, 1291, 1288, 265, 1302, 1299, 2113, 204, 196, 192, 2042, 1232, 1230, 1224, 214, 1220, 210,\n        1242, 1239, 1235, 1250, 2077, 2075, 151, 148, 1993, 144, 1990, 1163, 1162, 1160, 1158, 1155, 161, 1152, 157,\n        1173, 1171, 1168, 1165, 168, 1181, 1178, 2021, 2020, 2018, 2023, 585, 560, 557, 1585, 516, 509, 1562, 1559, 458,\n        447, 2227, 472, 1516, 1513, 1510, 398, 396, 393, 390, 2181, 386, 2178, 407, 1453, 1451, 1449, 1446, 420, 1460,\n        2209, 769, 764, 720, 712, 2391, 729, 1713, 664, 663, 661, 659, 2352, 656, 2349, 671, 1679, 1677, 2553, 922, 919,\n        2519, 2516, 885, 883, 881, 2685, 2661, 2659, 2767, 2756, 2755, 140, 1137, 1136, 130, 127, 1125, 1124, 1122, 1127,\n        109, 106, 102, 1103, 1102, 1100, 1098, 116, 1107, 1105, 1980, 80, 76, 73, 1947, 1068, 1067, 1065, 1063, 90, 1060,\n        87, 1075, 1073, 1070, 1080, 1966, 1965, 46, 43, 40, 1912, 36, 1909, 1019, 1018, 1016, 1014, 58, 1011, 55, 1008,\n        51, 1029, 1027, 1024, 1021, 63, 1037, 1034, 1940, 1939, 1937, 1942, 8, 1866, 4, 1863, 1, 1860, 956, 954, 952,\n        949, 946, 17, 14, 969, 967, 964, 961, 27, 957, 24, 979, 976, 972, 1901, 1900, 1898, 1896, 986, 1905, 1903, 350,\n        349, 1381, 329, 327, 324, 1368, 1366, 292, 290, 287, 284, 2118, 304, 1341, 1339, 1337, 1345, 243, 240, 237, 2086,\n        233, 2083, 254, 1297, 1295, 1293, 1290, 1304, 2114, 190, 187, 184, 2034, 180, 2031, 177, 2027, 199, 1233, 1231,\n        1229, 1226, 217, 1223, 1241, 2078, 2076, 584, 555, 554, 552, 550, 2282, 562, 1586, 507, 506, 504, 502, 2257, 499,\n        2254, 515, 1563, 1561, 445, 443, 441, 2219, 438, 2216, 435, 2212, 460, 454, 475, 1517, 1515, 1512, 2447, 798,\n        797, 2422, 2419, 770, 768, 766, 2383, 2380, 2376, 721, 719, 717, 714, 731, 1714, 2602, 2582, 2580, 2548, 2546,\n        2543, 923, 921, 2717, 2706, 2705, 2683, 2682, 2680, 1771, 1752, 1750, 1733, 1732, 1731, 1735, 1814, 1707, 1670,\n        1668, 1631, 1629, 1626, 1634, 1599, 1598, 1596, 1594, 1603, 1601, 2326, 1772, 1753, 1751, 1581, 1554, 1552, 1504,\n        1501, 1498, 1509, 1442, 1437, 1434, 401, 1448, 1445, 2206, 1392, 1391, 1389, 1387, 1384, 359, 1399, 1397, 1394,\n        1404, 2171, 2170, 1708, 1672, 1669, 619, 1632, 1630, 1628, 1773, 1378, 1363, 1361, 1333, 1328, 1336, 1286, 1281,\n        1278, 248, 1292, 1289, 2111, 1218, 1216, 1210, 197, 1206, 193, 1228, 1225, 1221, 1236, 2073, 2071, 1151, 1150,\n        1148, 1146, 152, 1143, 149, 1140, 145, 1161, 1159, 1156, 1153, 158, 1169, 1166, 2017, 2016, 2014, 2019, 1582,\n        510, 1556, 1553, 452, 448, 1506, 1500, 394, 391, 387, 1443, 1441, 1439, 1436, 1450, 2207, 765, 716, 713, 1709,\n        662, 660, 657, 1673, 1671, 916, 914, 879, 878, 877, 882, 1135, 1134, 1121, 1120, 1118, 1123, 1097, 1096, 1094,\n        1092, 103, 1101, 1099, 1979, 1059, 1058, 1056, 1054, 77, 1051, 74, 1066, 1064, 1061, 1071, 1964, 1963, 1007,\n        1006, 1004, 1002, 999, 41, 996, 37, 1017, 1015, 1012, 1009, 52, 1025, 1022, 1936, 1935, 1933, 1938, 942, 940,\n        938, 935, 932, 5, 2, 955, 953, 950, 947, 18, 943, 15, 965, 962, 958, 1895, 1894, 1892, 1890, 973, 1899, 1897,\n        1379, 325, 1364, 1362, 288, 285, 1334, 1332, 1330, 241, 238, 234, 1287, 1285, 1283, 1280, 1294, 2112, 188, 185,\n        181, 178, 2028, 1219, 1217, 1215, 1212, 200, 1209, 1227, 2074, 2072, 583, 553, 551, 1583, 505, 503, 500, 513,\n        1557, 1555, 444, 442, 439, 436, 2213, 455, 451, 1507, 1505, 1502, 796, 763, 762, 760, 767, 711, 710, 708, 706,\n        2377, 718, 715, 1710, 2544, 917, 915, 2681, 1627, 1597, 1595, 2325, 1769, 1749, 1747, 1499, 1438, 1435, 2204,\n        1390, 1388, 1385, 1395, 2169, 2167, 1704, 1665, 1662, 1625, 1623, 1620, 1770, 1329, 1282, 1279, 2109, 1214, 1207,\n        1222, 2068, 2065, 1149, 1147, 1144, 1141, 146, 1157, 1154, 2013, 2011, 2008, 2015, 1579, 1549, 1546, 1495, 1487,\n        1433, 1431, 1428, 1425, 388, 1440, 2205, 1705, 658, 1667, 1664, 1119, 1095, 1093, 1978, 1057, 1055, 1052, 1062,\n        1962, 1960, 1005, 1003, 1000, 997, 38, 1013, 1010, 1932, 1930, 1927, 1934, 941, 939, 936, 933, 6, 930, 3, 951,\n        948, 944, 1889, 1887, 1884, 1881, 959, 1893, 1891, 35, 1377, 1360, 1358, 1327, 1325, 1322, 1331, 1277, 1275,\n        1272, 1269, 235, 1284, 2110, 1205, 1204, 1201, 1198, 182, 1195, 179, 1213, 2070, 2067, 1580, 501, 1551, 1548,\n        440, 437, 1497, 1494, 1490, 1503, 761, 709, 707, 1706, 913, 912, 2198, 1386, 2164, 2161, 1621, 1766, 2103, 1208,\n        2058, 2054, 1145, 1142, 2005, 2002, 1999, 2009, 1488, 1429, 1426, 2200, 1698, 1659, 1656, 1975, 1053, 1957, 1954,\n        1001, 998, 1924, 1921, 1918, 1928, 937, 934, 931, 1879, 1876, 1873, 1870, 945, 1885, 1882, 1323, 1273, 1270,\n        2105, 1202, 1199, 1196, 1211, 2061, 2057, 1576, 1543, 1540, 1484, 1481, 1478, 1491, 1700\n    ]);\n\n    /*\n    * Copyright 2007 ZXing authors\n    *\n    * Licensed under the Apache License, Version 2.0 (the \"License\");\n    * you may not use this file except in compliance with the License.\n    * You may obtain a copy of the License at\n    *\n    *      http://www.apache.org/licenses/LICENSE-2.0\n    *\n    * Unless required by applicable law or agreed to in writing, software\n    * distributed under the License is distributed on an \"AS IS\" BASIS,\n    * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n    * See the License for the specific language governing permissions and\n    * limitations under the License.\n    */\n    // import java.util.List;\n    /**\n     * @author Guenther Grau\n     */\n    /*public final*/ class PDF417DetectorResult {\n        constructor(bits, points) {\n            this.bits = bits;\n            this.points = points;\n        }\n        getBits() {\n            return this.bits;\n        }\n        getPoints() {\n            return this.points;\n        }\n    }\n\n    /*\n    * Copyright 2009 ZXing authors\n    *\n    * Licensed under the Apache License, Version 2.0 (the \"License\");\n    * you may not use this file except in compliance with the License.\n    * You may obtain a copy of the License at\n    *\n    *      http://www.apache.org/licenses/LICENSE-2.0\n    *\n    * Unless required by applicable law or agreed to in writing, software\n    * distributed under the License is distributed on an \"AS IS\" BASIS,\n    * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n    * See the License for the specific language governing permissions and\n    * limitations under the License.\n    */\n    // import java.util.ArrayList;\n    // import java.util.Arrays;\n    // import java.util.List;\n    // import java.util.Map;\n    /**\n     * <p>Encapsulates logic that can detect a PDF417 Code in an image, even if the\n     * PDF417 Code is rotated or skewed, or partially obscured.</p>\n     *\n     * @author SITA Lab (kevin.osullivan@sita.aero)\n     * @author dswitkin@google.com (Daniel Switkin)\n     * @author Guenther Grau\n     */\n    /*public*/ /*final*/ class Detector$3 {\n        /**\n         * <p>Detects a PDF417 Code in an image. Only checks 0 and 180 degree rotations.</p>\n         *\n         * @param image barcode image to decode\n         * @param hints optional hints to detector\n         * @param multiple if true, then the image is searched for multiple codes. If false, then at most one code will\n         * be found and returned\n         * @return {@link PDF417DetectorResult} encapsulating results of detecting a PDF417 code\n         * @throws NotFoundException if no PDF417 Code can be found\n         */\n        static detectMultiple(image, hints, multiple) {\n            // TODO detection improvement, tryHarder could try several different luminance thresholds/blackpoints or even\n            // different binarizers\n            // boolean tryHarder = hints != null && hints.containsKey(DecodeHintType.TRY_HARDER);\n            let bitMatrix = image.getBlackMatrix();\n            let barcodeCoordinates = Detector$3.detect(multiple, bitMatrix);\n            if (!barcodeCoordinates.length) {\n                bitMatrix = bitMatrix.clone();\n                bitMatrix.rotate180();\n                barcodeCoordinates = Detector$3.detect(multiple, bitMatrix);\n            }\n            return new PDF417DetectorResult(bitMatrix, barcodeCoordinates);\n        }\n        /**\n         * Detects PDF417 codes in an image. Only checks 0 degree rotation\n         * @param multiple if true, then the image is searched for multiple codes. If false, then at most one code will\n         * be found and returned\n         * @param bitMatrix bit matrix to detect barcodes in\n         * @return List of ResultPoint arrays containing the coordinates of found barcodes\n         */\n        static detect(multiple, bitMatrix) {\n            const barcodeCoordinates = new Array();\n            let row = 0;\n            let column = 0;\n            let foundBarcodeInRow = false;\n            while (row < bitMatrix.getHeight()) {\n                const vertices = Detector$3.findVertices(bitMatrix, row, column);\n                if (vertices[0] == null && vertices[3] == null) {\n                    if (!foundBarcodeInRow) {\n                        // we didn't find any barcode so that's the end of searching\n                        break;\n                    }\n                    // we didn't find a barcode starting at the given column and row. Try again from the first column and slightly\n                    // below the lowest barcode we found so far.\n                    foundBarcodeInRow = false;\n                    column = 0;\n                    for (const barcodeCoordinate of barcodeCoordinates) {\n                        if (barcodeCoordinate[1] != null) {\n                            row = Math.trunc(Math.max(row, barcodeCoordinate[1].getY()));\n                        }\n                        if (barcodeCoordinate[3] != null) {\n                            row = Math.max(row, Math.trunc(barcodeCoordinate[3].getY()));\n                        }\n                    }\n                    row += Detector$3.ROW_STEP;\n                    continue;\n                }\n                foundBarcodeInRow = true;\n                barcodeCoordinates.push(vertices);\n                if (!multiple) {\n                    break;\n                }\n                // if we didn't find a right row indicator column, then continue the search for the next barcode after the\n                // start pattern of the barcode just found.\n                if (vertices[2] != null) {\n                    column = Math.trunc(vertices[2].getX());\n                    row = Math.trunc(vertices[2].getY());\n                }\n                else {\n                    column = Math.trunc(vertices[4].getX());\n                    row = Math.trunc(vertices[4].getY());\n                }\n            }\n            return barcodeCoordinates;\n        }\n        /**\n         * Locate the vertices and the codewords area of a black blob using the Start\n         * and Stop patterns as locators.\n         *\n         * @param matrix the scanned barcode image.\n         * @return an array containing the vertices:\n         *           vertices[0] x, y top left barcode\n         *           vertices[1] x, y bottom left barcode\n         *           vertices[2] x, y top right barcode\n         *           vertices[3] x, y bottom right barcode\n         *           vertices[4] x, y top left codeword area\n         *           vertices[5] x, y bottom left codeword area\n         *           vertices[6] x, y top right codeword area\n         *           vertices[7] x, y bottom right codeword area\n         */\n        static findVertices(matrix, startRow, startColumn) {\n            const height = matrix.getHeight();\n            const width = matrix.getWidth();\n            // const result = new ResultPoint[8];\n            const result = new Array(8);\n            Detector$3.copyToResult(result, Detector$3.findRowsWithPattern(matrix, height, width, startRow, startColumn, Detector$3.START_PATTERN), Detector$3.INDEXES_START_PATTERN);\n            if (result[4] != null) {\n                startColumn = Math.trunc(result[4].getX());\n                startRow = Math.trunc(result[4].getY());\n            }\n            Detector$3.copyToResult(result, Detector$3.findRowsWithPattern(matrix, height, width, startRow, startColumn, Detector$3.STOP_PATTERN), Detector$3.INDEXES_STOP_PATTERN);\n            return result;\n        }\n        static copyToResult(result, tmpResult, destinationIndexes) {\n            for (let i = 0; i < destinationIndexes.length; i++) {\n                result[destinationIndexes[i]] = tmpResult[i];\n            }\n        }\n        static findRowsWithPattern(matrix, height, width, startRow, startColumn, pattern) {\n            // const result = new ResultPoint[4];\n            const result = new Array(4);\n            let found = false;\n            const counters = new Int32Array(pattern.length);\n            for (; startRow < height; startRow += Detector$3.ROW_STEP) {\n                let loc = Detector$3.findGuardPattern(matrix, startColumn, startRow, width, false, pattern, counters);\n                if (loc != null) {\n                    while (startRow > 0) {\n                        const previousRowLoc = Detector$3.findGuardPattern(matrix, startColumn, --startRow, width, false, pattern, counters);\n                        if (previousRowLoc != null) {\n                            loc = previousRowLoc;\n                        }\n                        else {\n                            startRow++;\n                            break;\n                        }\n                    }\n                    result[0] = new ResultPoint(loc[0], startRow);\n                    result[1] = new ResultPoint(loc[1], startRow);\n                    found = true;\n                    break;\n                }\n            }\n            let stopRow = startRow + 1;\n            // Last row of the current symbol that contains pattern\n            if (found) {\n                let skippedRowCount = 0;\n                let previousRowLoc = Int32Array.from([Math.trunc(result[0].getX()), Math.trunc(result[1].getX())]);\n                for (; stopRow < height; stopRow++) {\n                    const loc = Detector$3.findGuardPattern(matrix, previousRowLoc[0], stopRow, width, false, pattern, counters);\n                    // a found pattern is only considered to belong to the same barcode if the start and end positions\n                    // don't differ too much. Pattern drift should be not bigger than two for consecutive rows. With\n                    // a higher number of skipped rows drift could be larger. To keep it simple for now, we allow a slightly\n                    // larger drift and don't check for skipped rows.\n                    if (loc != null &&\n                        Math.abs(previousRowLoc[0] - loc[0]) < Detector$3.MAX_PATTERN_DRIFT &&\n                        Math.abs(previousRowLoc[1] - loc[1]) < Detector$3.MAX_PATTERN_DRIFT) {\n                        previousRowLoc = loc;\n                        skippedRowCount = 0;\n                    }\n                    else {\n                        if (skippedRowCount > Detector$3.SKIPPED_ROW_COUNT_MAX) {\n                            break;\n                        }\n                        else {\n                            skippedRowCount++;\n                        }\n                    }\n                }\n                stopRow -= skippedRowCount + 1;\n                result[2] = new ResultPoint(previousRowLoc[0], stopRow);\n                result[3] = new ResultPoint(previousRowLoc[1], stopRow);\n            }\n            if (stopRow - startRow < Detector$3.BARCODE_MIN_HEIGHT) {\n                Arrays.fill(result, null);\n            }\n            return result;\n        }\n        /**\n         * @param matrix row of black/white values to search\n         * @param column x position to start search\n         * @param row y position to start search\n         * @param width the number of pixels to search on this row\n         * @param pattern pattern of counts of number of black and white pixels that are\n         *                 being searched for as a pattern\n         * @param counters array of counters, as long as pattern, to re-use\n         * @return start/end horizontal offset of guard pattern, as an array of two ints.\n         */\n        static findGuardPattern(matrix, column, row, width, whiteFirst, pattern, counters) {\n            Arrays.fillWithin(counters, 0, counters.length, 0);\n            let patternStart = column;\n            let pixelDrift = 0;\n            // if there are black pixels left of the current pixel shift to the left, but only for MAX_PIXEL_DRIFT pixels\n            while (matrix.get(patternStart, row) && patternStart > 0 && pixelDrift++ < Detector$3.MAX_PIXEL_DRIFT) {\n                patternStart--;\n            }\n            let x = patternStart;\n            let counterPosition = 0;\n            let patternLength = pattern.length;\n            for (let isWhite = whiteFirst; x < width; x++) {\n                let pixel = matrix.get(x, row);\n                if (pixel !== isWhite) {\n                    counters[counterPosition]++;\n                }\n                else {\n                    if (counterPosition === patternLength - 1) {\n                        if (Detector$3.patternMatchVariance(counters, pattern, Detector$3.MAX_INDIVIDUAL_VARIANCE) < Detector$3.MAX_AVG_VARIANCE) {\n                            return new Int32Array([patternStart, x]);\n                        }\n                        patternStart += counters[0] + counters[1];\n                        System.arraycopy(counters, 2, counters, 0, counterPosition - 1);\n                        counters[counterPosition - 1] = 0;\n                        counters[counterPosition] = 0;\n                        counterPosition--;\n                    }\n                    else {\n                        counterPosition++;\n                    }\n                    counters[counterPosition] = 1;\n                    isWhite = !isWhite;\n                }\n            }\n            if (counterPosition === patternLength - 1 &&\n                Detector$3.patternMatchVariance(counters, pattern, Detector$3.MAX_INDIVIDUAL_VARIANCE) < Detector$3.MAX_AVG_VARIANCE) {\n                return new Int32Array([patternStart, x - 1]);\n            }\n            return null;\n        }\n        /**\n         * Determines how closely a set of observed counts of runs of black/white\n         * values matches a given target pattern. This is reported as the ratio of\n         * the total variance from the expected pattern proportions across all\n         * pattern elements, to the length of the pattern.\n         *\n         * @param counters observed counters\n         * @param pattern expected pattern\n         * @param maxIndividualVariance The most any counter can differ before we give up\n         * @return ratio of total variance between counters and pattern compared to total pattern size\n         */\n        static patternMatchVariance(counters, pattern, maxIndividualVariance) {\n            let numCounters = counters.length;\n            let total = 0;\n            let patternLength = 0;\n            for (let i = 0; i < numCounters; i++) {\n                total += counters[i];\n                patternLength += pattern[i];\n            }\n            if (total < patternLength) {\n                // If we don't even have one pixel per unit of bar width, assume this\n                // is too small to reliably match, so fail:\n                return /*Float.POSITIVE_INFINITY*/ Infinity;\n            }\n            // We're going to fake floating-point math in integers. We just need to use more bits.\n            // Scale up patternLength so that intermediate values below like scaledCounter will have\n            // more \"significant digits\".\n            let unitBarWidth = total / patternLength;\n            maxIndividualVariance *= unitBarWidth;\n            let totalVariance = 0.0;\n            for (let x = 0; x < numCounters; x++) {\n                let counter = counters[x];\n                let scaledPattern = pattern[x] * unitBarWidth;\n                let variance = counter > scaledPattern ? counter - scaledPattern : scaledPattern - counter;\n                if (variance > maxIndividualVariance) {\n                    return /*Float.POSITIVE_INFINITY*/ Infinity;\n                }\n                totalVariance += variance;\n            }\n            return totalVariance / total;\n        }\n    }\n    Detector$3.INDEXES_START_PATTERN = Int32Array.from([0, 4, 1, 5]);\n    Detector$3.INDEXES_STOP_PATTERN = Int32Array.from([6, 2, 7, 3]);\n    Detector$3.MAX_AVG_VARIANCE = 0.42;\n    Detector$3.MAX_INDIVIDUAL_VARIANCE = 0.8;\n    // B S B S B S B S Bar/Space pattern\n    // 11111111 0 1 0 1 0 1 000\n    Detector$3.START_PATTERN = Int32Array.from([8, 1, 1, 1, 1, 1, 1, 3]);\n    // 1111111 0 1 000 1 0 1 00 1\n    Detector$3.STOP_PATTERN = Int32Array.from([7, 1, 1, 3, 1, 1, 1, 2, 1]);\n    Detector$3.MAX_PIXEL_DRIFT = 3;\n    Detector$3.MAX_PATTERN_DRIFT = 5;\n    // if we set the value too low, then we don't detect the correct height of the bar if the start patterns are damaged.\n    // if we set the value too high, then we might detect the start pattern from a neighbor barcode.\n    Detector$3.SKIPPED_ROW_COUNT_MAX = 25;\n    // A PDF471 barcode should have at least 3 rows, with each row being >= 3 times the module width. Therefore it should be at least\n    // 9 pixels tall. To be conservative, we use about half the size to ensure we don't miss it.\n    Detector$3.ROW_STEP = 5;\n    Detector$3.BARCODE_MIN_HEIGHT = 10;\n\n    /*\n    * Copyright 2012 ZXing authors\n    *\n    * Licensed under the Apache License, Version 2.0 (the \"License\");\n    * you may not use this file except in compliance with the License.\n    * You may obtain a copy of the License at\n    *\n    *      http://www.apache.org/licenses/LICENSE-2.0\n    *\n    * Unless required by applicable law or agreed to in writing, software\n    * distributed under the License is distributed on an \"AS IS\" BASIS,\n    * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n    * See the License for the specific language governing permissions and\n    * limitations under the License.\n    */\n    /**\n     * @author Sean Owen\n     * @see com.google.zxing.common.reedsolomon.GenericGFPoly\n     */\n    /*final*/ class ModulusPoly {\n        constructor(field, coefficients) {\n            if (coefficients.length === 0) {\n                throw new IllegalArgumentException();\n            }\n            this.field = field;\n            let coefficientsLength = /*int*/ coefficients.length;\n            if (coefficientsLength > 1 && coefficients[0] === 0) {\n                // Leading term must be non-zero for anything except the constant polynomial \"0\"\n                let firstNonZero = /*int*/ 1;\n                while (firstNonZero < coefficientsLength && coefficients[firstNonZero] === 0) {\n                    firstNonZero++;\n                }\n                if (firstNonZero === coefficientsLength) {\n                    this.coefficients = new Int32Array([0]);\n                }\n                else {\n                    this.coefficients = new Int32Array(coefficientsLength - firstNonZero);\n                    System.arraycopy(coefficients, firstNonZero, this.coefficients, 0, this.coefficients.length);\n                }\n            }\n            else {\n                this.coefficients = coefficients;\n            }\n        }\n        getCoefficients() {\n            return this.coefficients;\n        }\n        /**\n         * @return degree of this polynomial\n         */\n        getDegree() {\n            return this.coefficients.length - 1;\n        }\n        /**\n         * @return true iff this polynomial is the monomial \"0\"\n         */\n        isZero() {\n            return this.coefficients[0] === 0;\n        }\n        /**\n         * @return coefficient of x^degree term in this polynomial\n         */\n        getCoefficient(degree) {\n            return this.coefficients[this.coefficients.length - 1 - degree];\n        }\n        /**\n         * @return evaluation of this polynomial at a given point\n         */\n        evaluateAt(a) {\n            if (a === 0) {\n                // Just return the x^0 coefficient\n                return this.getCoefficient(0);\n            }\n            if (a === 1) {\n                // Just the sum of the coefficients\n                let sum = /*int*/ 0;\n                for (let coefficient /*int*/ of this.coefficients) {\n                    sum = this.field.add(sum, coefficient);\n                }\n                return sum;\n            }\n            let result = /*int*/ this.coefficients[0];\n            let size = /*int*/ this.coefficients.length;\n            for (let i /*int*/ = 1; i < size; i++) {\n                result = this.field.add(this.field.multiply(a, result), this.coefficients[i]);\n            }\n            return result;\n        }\n        add(other) {\n            if (!this.field.equals(other.field)) {\n                throw new IllegalArgumentException('ModulusPolys do not have same ModulusGF field');\n            }\n            if (this.isZero()) {\n                return other;\n            }\n            if (other.isZero()) {\n                return this;\n            }\n            let smallerCoefficients = this.coefficients;\n            let largerCoefficients = other.coefficients;\n            if (smallerCoefficients.length > largerCoefficients.length) {\n                let temp = smallerCoefficients;\n                smallerCoefficients = largerCoefficients;\n                largerCoefficients = temp;\n            }\n            let sumDiff = new Int32Array(largerCoefficients.length);\n            let lengthDiff = /*int*/ largerCoefficients.length - smallerCoefficients.length;\n            // Copy high-order terms only found in higher-degree polynomial's coefficients\n            System.arraycopy(largerCoefficients, 0, sumDiff, 0, lengthDiff);\n            for (let i /*int*/ = lengthDiff; i < largerCoefficients.length; i++) {\n                sumDiff[i] = this.field.add(smallerCoefficients[i - lengthDiff], largerCoefficients[i]);\n            }\n            return new ModulusPoly(this.field, sumDiff);\n        }\n        subtract(other) {\n            if (!this.field.equals(other.field)) {\n                throw new IllegalArgumentException('ModulusPolys do not have same ModulusGF field');\n            }\n            if (other.isZero()) {\n                return this;\n            }\n            return this.add(other.negative());\n        }\n        multiply(other) {\n            if (other instanceof ModulusPoly) {\n                return this.multiplyOther(other);\n            }\n            return this.multiplyScalar(other);\n        }\n        multiplyOther(other) {\n            if (!this.field.equals(other.field)) {\n                throw new IllegalArgumentException('ModulusPolys do not have same ModulusGF field');\n            }\n            if (this.isZero() || other.isZero()) {\n                // return this.field.getZero();\n                return new ModulusPoly(this.field, new Int32Array([0]));\n            }\n            let aCoefficients = this.coefficients;\n            let aLength = /*int*/ aCoefficients.length;\n            let bCoefficients = other.coefficients;\n            let bLength = /*int*/ bCoefficients.length;\n            let product = new Int32Array(aLength + bLength - 1);\n            for (let i /*int*/ = 0; i < aLength; i++) {\n                let aCoeff = /*int*/ aCoefficients[i];\n                for (let j /*int*/ = 0; j < bLength; j++) {\n                    product[i + j] = this.field.add(product[i + j], this.field.multiply(aCoeff, bCoefficients[j]));\n                }\n            }\n            return new ModulusPoly(this.field, product);\n        }\n        negative() {\n            let size = /*int*/ this.coefficients.length;\n            let negativeCoefficients = new Int32Array(size);\n            for (let i /*int*/ = 0; i < size; i++) {\n                negativeCoefficients[i] = this.field.subtract(0, this.coefficients[i]);\n            }\n            return new ModulusPoly(this.field, negativeCoefficients);\n        }\n        multiplyScalar(scalar) {\n            if (scalar === 0) {\n                return new ModulusPoly(this.field, new Int32Array([0]));\n            }\n            if (scalar === 1) {\n                return this;\n            }\n            let size = /*int*/ this.coefficients.length;\n            let product = new Int32Array(size);\n            for (let i /*int*/ = 0; i < size; i++) {\n                product[i] = this.field.multiply(this.coefficients[i], scalar);\n            }\n            return new ModulusPoly(this.field, product);\n        }\n        multiplyByMonomial(degree, coefficient) {\n            if (degree < 0) {\n                throw new IllegalArgumentException();\n            }\n            if (coefficient === 0) {\n                return new ModulusPoly(this.field, new Int32Array([0]));\n            }\n            let size = /*int*/ this.coefficients.length;\n            let product = new Int32Array(size + degree);\n            for (let i /*int*/ = 0; i < size; i++) {\n                product[i] = this.field.multiply(this.coefficients[i], coefficient);\n            }\n            return new ModulusPoly(this.field, product);\n        }\n        /*\n        ModulusPoly[] divide(other: ModulusPoly) {\n          if (!field.equals(other.field)) {\n            throw new IllegalArgumentException(\"ModulusPolys do not have same ModulusGF field\");\n          }\n          if (other.isZero()) {\n            throw new IllegalArgumentException(\"Divide by 0\");\n          }\n      \n          let quotient: ModulusPoly = field.getZero();\n          let remainder: ModulusPoly = this;\n      \n          let denominatorLeadingTerm: /*int/ number = other.getCoefficient(other.getDegree());\n          let inverseDenominatorLeadingTerm: /*int/ number = field.inverse(denominatorLeadingTerm);\n      \n          while (remainder.getDegree() >= other.getDegree() && !remainder.isZero()) {\n            let degreeDifference: /*int/ number = remainder.getDegree() - other.getDegree();\n            let scale: /*int/ number = field.multiply(remainder.getCoefficient(remainder.getDegree()), inverseDenominatorLeadingTerm);\n            let term: ModulusPoly = other.multiplyByMonomial(degreeDifference, scale);\n            let iterationQuotient: ModulusPoly = field.buildMonomial(degreeDifference, scale);\n            quotient = quotient.add(iterationQuotient);\n            remainder = remainder.subtract(term);\n          }\n      \n          return new ModulusPoly[] { quotient, remainder };\n        }\n        */\n        // @Override\n        toString() {\n            let result = new StringBuilder( /*8 * this.getDegree()*/); // dynamic string size in JS\n            for (let degree /*int*/ = this.getDegree(); degree >= 0; degree--) {\n                let coefficient = /*int*/ this.getCoefficient(degree);\n                if (coefficient !== 0) {\n                    if (coefficient < 0) {\n                        result.append(' - ');\n                        coefficient = -coefficient;\n                    }\n                    else {\n                        if (result.length() > 0) {\n                            result.append(' + ');\n                        }\n                    }\n                    if (degree === 0 || coefficient !== 1) {\n                        result.append(coefficient);\n                    }\n                    if (degree !== 0) {\n                        if (degree === 1) {\n                            result.append('x');\n                        }\n                        else {\n                            result.append('x^');\n                            result.append(degree);\n                        }\n                    }\n                }\n            }\n            return result.toString();\n        }\n    }\n\n    class ModulusBase {\n        add(a, b) {\n            return (a + b) % this.modulus;\n        }\n        subtract(a, b) {\n            return (this.modulus + a - b) % this.modulus;\n        }\n        exp(a) {\n            return this.expTable[a];\n        }\n        log(a) {\n            if (a === 0) {\n                throw new IllegalArgumentException();\n            }\n            return this.logTable[a];\n        }\n        inverse(a) {\n            if (a === 0) {\n                throw new ArithmeticException();\n            }\n            return this.expTable[this.modulus - this.logTable[a] - 1];\n        }\n        multiply(a, b) {\n            if (a === 0 || b === 0) {\n                return 0;\n            }\n            return this.expTable[(this.logTable[a] + this.logTable[b]) % (this.modulus - 1)];\n        }\n        getSize() {\n            return this.modulus;\n        }\n        equals(o) {\n            return o === this;\n        }\n    }\n\n    /*\n     * Copyright 2012 ZXing authors\n     *\n     * Licensed under the Apache License, Version 2.0 (the \"License\");\n     * you may not use this file except in compliance with the License.\n     * You may obtain a copy of the License at\n     *\n     *      http://www.apache.org/licenses/LICENSE-2.0\n     *\n     * Unless required by applicable law or agreed to in writing, software\n     * distributed under the License is distributed on an \"AS IS\" BASIS,\n     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n     * See the License for the specific language governing permissions and\n     * limitations under the License.\n     */\n    /**\n     * <p>A field based on powers of a generator integer, modulo some modulus.</p>\n     *\n     * @author Sean Owen\n     * @see com.google.zxing.common.reedsolomon.GenericGF\n     */\n    /*public final*/ class ModulusGF extends ModulusBase {\n        // private /*final*/ modulus: /*int*/ number;\n        constructor(modulus, generator) {\n            super();\n            this.modulus = modulus;\n            this.expTable = new Int32Array(modulus);\n            this.logTable = new Int32Array(modulus);\n            let x = /*int*/ 1;\n            for (let i /*int*/ = 0; i < modulus; i++) {\n                this.expTable[i] = x;\n                x = (x * generator) % modulus;\n            }\n            for (let i /*int*/ = 0; i < modulus - 1; i++) {\n                this.logTable[this.expTable[i]] = i;\n            }\n            // logTable[0] == 0 but this should never be used\n            this.zero = new ModulusPoly(this, new Int32Array([0]));\n            this.one = new ModulusPoly(this, new Int32Array([1]));\n        }\n        getZero() {\n            return this.zero;\n        }\n        getOne() {\n            return this.one;\n        }\n        buildMonomial(degree, coefficient) {\n            if (degree < 0) {\n                throw new IllegalArgumentException();\n            }\n            if (coefficient === 0) {\n                return this.zero;\n            }\n            let coefficients = new Int32Array(degree + 1);\n            coefficients[0] = coefficient;\n            return new ModulusPoly(this, coefficients);\n        }\n    }\n    ModulusGF.PDF417_GF = new ModulusGF(PDF417Common.NUMBER_OF_CODEWORDS, 3);\n\n    /*\n    * Copyright 2012 ZXing authors\n    *\n    * Licensed under the Apache License, Version 2.0 (the \"License\");\n    * you may not use this file except in compliance with the License.\n    * You may obtain a copy of the License at\n    *\n    *      http://www.apache.org/licenses/LICENSE-2.0\n    *\n    * Unless required by applicable law or agreed to in writing, software\n    * distributed under the License is distributed on an \"AS IS\" BASIS,\n    * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n    * See the License for the specific language governing permissions and\n    * limitations under the License.\n    */\n    /**\n     * <p>PDF417 error correction implementation.</p>\n     *\n     * <p>This <a href=\"http://en.wikipedia.org/wiki/Reed%E2%80%93Solomon_error_correction#Example\">example</a>\n     * is quite useful in understanding the algorithm.</p>\n     *\n     * @author Sean Owen\n     * @see com.google.zxing.common.reedsolomon.ReedSolomonDecoder\n     */\n    /*public final*/ class ErrorCorrection {\n        constructor() {\n            this.field = ModulusGF.PDF417_GF;\n        }\n        /**\n         * @param received received codewords\n         * @param numECCodewords number of those codewords used for EC\n         * @param erasures location of erasures\n         * @return number of errors\n         * @throws ChecksumException if errors cannot be corrected, maybe because of too many errors\n         */\n        decode(received, numECCodewords, erasures) {\n            let poly = new ModulusPoly(this.field, received);\n            let S = new Int32Array(numECCodewords);\n            let error = false;\n            for (let i /*int*/ = numECCodewords; i > 0; i--) {\n                let evaluation = poly.evaluateAt(this.field.exp(i));\n                S[numECCodewords - i] = evaluation;\n                if (evaluation !== 0) {\n                    error = true;\n                }\n            }\n            if (!error) {\n                return 0;\n            }\n            let knownErrors = this.field.getOne();\n            if (erasures != null) {\n                for (const erasure of erasures) {\n                    let b = this.field.exp(received.length - 1 - erasure);\n                    // Add (1 - bx) term:\n                    let term = new ModulusPoly(this.field, new Int32Array([this.field.subtract(0, b), 1]));\n                    knownErrors = knownErrors.multiply(term);\n                }\n            }\n            let syndrome = new ModulusPoly(this.field, S);\n            // syndrome = syndrome.multiply(knownErrors);\n            let sigmaOmega = this.runEuclideanAlgorithm(this.field.buildMonomial(numECCodewords, 1), syndrome, numECCodewords);\n            let sigma = sigmaOmega[0];\n            let omega = sigmaOmega[1];\n            // sigma = sigma.multiply(knownErrors);\n            let errorLocations = this.findErrorLocations(sigma);\n            let errorMagnitudes = this.findErrorMagnitudes(omega, sigma, errorLocations);\n            for (let i /*int*/ = 0; i < errorLocations.length; i++) {\n                let position = received.length - 1 - this.field.log(errorLocations[i]);\n                if (position < 0) {\n                    throw ChecksumException.getChecksumInstance();\n                }\n                received[position] = this.field.subtract(received[position], errorMagnitudes[i]);\n            }\n            return errorLocations.length;\n        }\n        /**\n         *\n         * @param ModulusPoly\n         * @param a\n         * @param ModulusPoly\n         * @param b\n         * @param int\n         * @param R\n         * @throws ChecksumException\n         */\n        runEuclideanAlgorithm(a, b, R) {\n            // Assume a's degree is >= b's\n            if (a.getDegree() < b.getDegree()) {\n                let temp = a;\n                a = b;\n                b = temp;\n            }\n            let rLast = a;\n            let r = b;\n            let tLast = this.field.getZero();\n            let t = this.field.getOne();\n            // Run Euclidean algorithm until r's degree is less than R/2\n            while (r.getDegree() >= Math.round(R / 2)) {\n                let rLastLast = rLast;\n                let tLastLast = tLast;\n                rLast = r;\n                tLast = t;\n                // Divide rLastLast by rLast, with quotient in q and remainder in r\n                if (rLast.isZero()) {\n                    // Oops, Euclidean algorithm already terminated?\n                    throw ChecksumException.getChecksumInstance();\n                }\n                r = rLastLast;\n                let q = this.field.getZero();\n                let denominatorLeadingTerm = rLast.getCoefficient(rLast.getDegree());\n                let dltInverse = this.field.inverse(denominatorLeadingTerm);\n                while (r.getDegree() >= rLast.getDegree() && !r.isZero()) {\n                    let degreeDiff = r.getDegree() - rLast.getDegree();\n                    let scale = this.field.multiply(r.getCoefficient(r.getDegree()), dltInverse);\n                    q = q.add(this.field.buildMonomial(degreeDiff, scale));\n                    r = r.subtract(rLast.multiplyByMonomial(degreeDiff, scale));\n                }\n                t = q.multiply(tLast).subtract(tLastLast).negative();\n            }\n            let sigmaTildeAtZero = t.getCoefficient(0);\n            if (sigmaTildeAtZero === 0) {\n                throw ChecksumException.getChecksumInstance();\n            }\n            let inverse = this.field.inverse(sigmaTildeAtZero);\n            let sigma = t.multiply(inverse);\n            let omega = r.multiply(inverse);\n            return [sigma, omega];\n        }\n        /**\n         *\n         * @param errorLocator\n         * @throws ChecksumException\n         */\n        findErrorLocations(errorLocator) {\n            // This is a direct application of Chien's search\n            let numErrors = errorLocator.getDegree();\n            let result = new Int32Array(numErrors);\n            let e = 0;\n            for (let i /*int*/ = 1; i < this.field.getSize() && e < numErrors; i++) {\n                if (errorLocator.evaluateAt(i) === 0) {\n                    result[e] = this.field.inverse(i);\n                    e++;\n                }\n            }\n            if (e !== numErrors) {\n                throw ChecksumException.getChecksumInstance();\n            }\n            return result;\n        }\n        findErrorMagnitudes(errorEvaluator, errorLocator, errorLocations) {\n            let errorLocatorDegree = errorLocator.getDegree();\n            let formalDerivativeCoefficients = new Int32Array(errorLocatorDegree);\n            for (let i /*int*/ = 1; i <= errorLocatorDegree; i++) {\n                formalDerivativeCoefficients[errorLocatorDegree - i] =\n                    this.field.multiply(i, errorLocator.getCoefficient(i));\n            }\n            let formalDerivative = new ModulusPoly(this.field, formalDerivativeCoefficients);\n            // This is directly applying Forney's Formula\n            let s = errorLocations.length;\n            let result = new Int32Array(s);\n            for (let i /*int*/ = 0; i < s; i++) {\n                let xiInverse = this.field.inverse(errorLocations[i]);\n                let numerator = this.field.subtract(0, errorEvaluator.evaluateAt(xiInverse));\n                let denominator = this.field.inverse(formalDerivative.evaluateAt(xiInverse));\n                result[i] = this.field.multiply(numerator, denominator);\n            }\n            return result;\n        }\n    }\n\n    /*\n    * Copyright 2013 ZXing authors\n    *\n    * Licensed under the Apache License, Version 2.0 (the \"License\");\n    * you may not use this file except in compliance with the License.\n    * You may obtain a copy of the License at\n    *\n    *      http://www.apache.org/licenses/LICENSE-2.0\n    *\n    * Unless required by applicable law or agreed to in writing, software\n    * distributed under the License is distributed on an \"AS IS\" BASIS,\n    * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n    * See the License for the specific language governing permissions and\n    * limitations under the License.\n    */\n    /**\n     * @author Guenther Grau\n     */\n    /*final*/ class BoundingBox {\n        constructor(image, topLeft, bottomLeft, topRight, bottomRight) {\n            if (image instanceof BoundingBox) {\n                this.constructor_2(image);\n            }\n            else {\n                this.constructor_1(image, topLeft, bottomLeft, topRight, bottomRight);\n            }\n        }\n        /**\n         *\n         * @param image\n         * @param topLeft\n         * @param bottomLeft\n         * @param topRight\n         * @param bottomRight\n         *\n         * @throws NotFoundException\n         */\n        constructor_1(image, topLeft, bottomLeft, topRight, bottomRight) {\n            const leftUnspecified = topLeft == null || bottomLeft == null;\n            const rightUnspecified = topRight == null || bottomRight == null;\n            if (leftUnspecified && rightUnspecified) {\n                throw new NotFoundException();\n            }\n            if (leftUnspecified) {\n                topLeft = new ResultPoint(0, topRight.getY());\n                bottomLeft = new ResultPoint(0, bottomRight.getY());\n            }\n            else if (rightUnspecified) {\n                topRight = new ResultPoint(image.getWidth() - 1, topLeft.getY());\n                bottomRight = new ResultPoint(image.getWidth() - 1, bottomLeft.getY());\n            }\n            this.image = image;\n            this.topLeft = topLeft;\n            this.bottomLeft = bottomLeft;\n            this.topRight = topRight;\n            this.bottomRight = bottomRight;\n            this.minX = Math.trunc(Math.min(topLeft.getX(), bottomLeft.getX()));\n            this.maxX = Math.trunc(Math.max(topRight.getX(), bottomRight.getX()));\n            this.minY = Math.trunc(Math.min(topLeft.getY(), topRight.getY()));\n            this.maxY = Math.trunc(Math.max(bottomLeft.getY(), bottomRight.getY()));\n        }\n        constructor_2(boundingBox) {\n            this.image = boundingBox.image;\n            this.topLeft = boundingBox.getTopLeft();\n            this.bottomLeft = boundingBox.getBottomLeft();\n            this.topRight = boundingBox.getTopRight();\n            this.bottomRight = boundingBox.getBottomRight();\n            this.minX = boundingBox.getMinX();\n            this.maxX = boundingBox.getMaxX();\n            this.minY = boundingBox.getMinY();\n            this.maxY = boundingBox.getMaxY();\n        }\n        /**\n         * @throws NotFoundException\n         */\n        static merge(leftBox, rightBox) {\n            if (leftBox == null) {\n                return rightBox;\n            }\n            if (rightBox == null) {\n                return leftBox;\n            }\n            return new BoundingBox(leftBox.image, leftBox.topLeft, leftBox.bottomLeft, rightBox.topRight, rightBox.bottomRight);\n        }\n        /**\n         * @throws NotFoundException\n         */\n        addMissingRows(missingStartRows, missingEndRows, isLeft) {\n            let newTopLeft = this.topLeft;\n            let newBottomLeft = this.bottomLeft;\n            let newTopRight = this.topRight;\n            let newBottomRight = this.bottomRight;\n            if (missingStartRows > 0) {\n                let top = isLeft ? this.topLeft : this.topRight;\n                let newMinY = Math.trunc(top.getY() - missingStartRows);\n                if (newMinY < 0) {\n                    newMinY = 0;\n                }\n                let newTop = new ResultPoint(top.getX(), newMinY);\n                if (isLeft) {\n                    newTopLeft = newTop;\n                }\n                else {\n                    newTopRight = newTop;\n                }\n            }\n            if (missingEndRows > 0) {\n                let bottom = isLeft ? this.bottomLeft : this.bottomRight;\n                let newMaxY = Math.trunc(bottom.getY() + missingEndRows);\n                if (newMaxY >= this.image.getHeight()) {\n                    newMaxY = this.image.getHeight() - 1;\n                }\n                let newBottom = new ResultPoint(bottom.getX(), newMaxY);\n                if (isLeft) {\n                    newBottomLeft = newBottom;\n                }\n                else {\n                    newBottomRight = newBottom;\n                }\n            }\n            return new BoundingBox(this.image, newTopLeft, newBottomLeft, newTopRight, newBottomRight);\n        }\n        getMinX() {\n            return this.minX;\n        }\n        getMaxX() {\n            return this.maxX;\n        }\n        getMinY() {\n            return this.minY;\n        }\n        getMaxY() {\n            return this.maxY;\n        }\n        getTopLeft() {\n            return this.topLeft;\n        }\n        getTopRight() {\n            return this.topRight;\n        }\n        getBottomLeft() {\n            return this.bottomLeft;\n        }\n        getBottomRight() {\n            return this.bottomRight;\n        }\n    }\n\n    /*\n     * Copyright 2013 ZXing authors\n     *\n     * Licensed under the Apache License, Version 2.0 (the \"License\");\n     * you may not use this file except in compliance with the License.\n     * You may obtain a copy of the License at\n     *\n     *      http://www.apache.org/licenses/LICENSE-2.0\n     *\n     * Unless required by applicable law or agreed to in writing, software\n     * distributed under the License is distributed on an \"AS IS\" BASIS,\n     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n     * See the License for the specific language governing permissions and\n     * limitations under the License.\n     */\n    // package com.google.zxing.pdf417.decoder;\n    /**\n     * @author Guenther Grau\n     */\n    /*final*/ class BarcodeMetadata {\n        constructor(columnCount, rowCountUpperPart, rowCountLowerPart, errorCorrectionLevel) {\n            this.columnCount = columnCount;\n            this.errorCorrectionLevel = errorCorrectionLevel;\n            this.rowCountUpperPart = rowCountUpperPart;\n            this.rowCountLowerPart = rowCountLowerPart;\n            this.rowCount = rowCountUpperPart + rowCountLowerPart;\n        }\n        getColumnCount() {\n            return this.columnCount;\n        }\n        getErrorCorrectionLevel() {\n            return this.errorCorrectionLevel;\n        }\n        getRowCount() {\n            return this.rowCount;\n        }\n        getRowCountUpperPart() {\n            return this.rowCountUpperPart;\n        }\n        getRowCountLowerPart() {\n            return this.rowCountLowerPart;\n        }\n    }\n\n    /**\n     * Java Formatter class polyfill that works in the JS way.\n     */\n    class Formatter {\n        constructor() {\n            this.buffer = '';\n        }\n        /**\n         *\n         * @see https://stackoverflow.com/a/13439711/4367683\n         *\n         * @param str\n         * @param arr\n         */\n        static form(str, arr) {\n            let i = -1;\n            function callback(exp, p0, p1, p2, p3, p4) {\n                if (exp === '%%')\n                    return '%';\n                if (arr[++i] === undefined)\n                    return undefined;\n                exp = p2 ? parseInt(p2.substr(1)) : undefined;\n                let base = p3 ? parseInt(p3.substr(1)) : undefined;\n                let val;\n                switch (p4) {\n                    case 's':\n                        val = arr[i];\n                        break;\n                    case 'c':\n                        val = arr[i][0];\n                        break;\n                    case 'f':\n                        val = parseFloat(arr[i]).toFixed(exp);\n                        break;\n                    case 'p':\n                        val = parseFloat(arr[i]).toPrecision(exp);\n                        break;\n                    case 'e':\n                        val = parseFloat(arr[i]).toExponential(exp);\n                        break;\n                    case 'x':\n                        val = parseInt(arr[i]).toString(base ? base : 16);\n                        break;\n                    case 'd':\n                        val = parseFloat(parseInt(arr[i], base ? base : 10).toPrecision(exp)).toFixed(0);\n                        break;\n                }\n                val = typeof val === 'object' ? JSON.stringify(val) : (+val).toString(base);\n                let size = parseInt(p1); /* padding size */\n                let ch = p1 && (p1[0] + '') === '0' ? '0' : ' '; /* isnull? */\n                while (val.length < size)\n                    val = p0 !== undefined ? val + ch : ch + val; /* isminus? */\n                return val;\n            }\n            let regex = /%(-)?(0?[0-9]+)?([.][0-9]+)?([#][0-9]+)?([scfpexd%])/g;\n            return str.replace(regex, callback);\n        }\n        /**\n         *\n         * @param append The new string to append.\n         * @param args Argumets values to be formated.\n         */\n        format(append, ...args) {\n            this.buffer += Formatter.form(append, args);\n        }\n        /**\n         * Returns the Formatter string value.\n         */\n        toString() {\n            return this.buffer;\n        }\n    }\n\n    /*\n     * Copyright 2013 ZXing authors\n     *\n     * Licensed under the Apache License, Version 2.0 (the \"License\");\n     * you may not use this file except in compliance with the License.\n     * You may obtain a copy of the License at\n     *\n     *      http://www.apache.org/licenses/LICENSE-2.0\n     *\n     * Unless required by applicable law or agreed to in writing, software\n     * distributed under the License is distributed on an \"AS IS\" BASIS,\n     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n     * See the License for the specific language governing permissions and\n     * limitations under the License.\n     */\n    /**\n     * @author Guenther Grau\n     */\n    class DetectionResultColumn {\n        constructor(boundingBox) {\n            this.boundingBox = new BoundingBox(boundingBox);\n            // this.codewords = new Codeword[boundingBox.getMaxY() - boundingBox.getMinY() + 1];\n            this.codewords = new Array(boundingBox.getMaxY() - boundingBox.getMinY() + 1);\n        }\n        /*final*/ getCodewordNearby(imageRow) {\n            let codeword = this.getCodeword(imageRow);\n            if (codeword != null) {\n                return codeword;\n            }\n            for (let i = 1; i < DetectionResultColumn.MAX_NEARBY_DISTANCE; i++) {\n                let nearImageRow = this.imageRowToCodewordIndex(imageRow) - i;\n                if (nearImageRow >= 0) {\n                    codeword = this.codewords[nearImageRow];\n                    if (codeword != null) {\n                        return codeword;\n                    }\n                }\n                nearImageRow = this.imageRowToCodewordIndex(imageRow) + i;\n                if (nearImageRow < this.codewords.length) {\n                    codeword = this.codewords[nearImageRow];\n                    if (codeword != null) {\n                        return codeword;\n                    }\n                }\n            }\n            return null;\n        }\n        /*final int*/ imageRowToCodewordIndex(imageRow) {\n            return imageRow - this.boundingBox.getMinY();\n        }\n        /*final void*/ setCodeword(imageRow, codeword) {\n            this.codewords[this.imageRowToCodewordIndex(imageRow)] = codeword;\n        }\n        /*final*/ getCodeword(imageRow) {\n            return this.codewords[this.imageRowToCodewordIndex(imageRow)];\n        }\n        /*final*/ getBoundingBox() {\n            return this.boundingBox;\n        }\n        /*final*/ getCodewords() {\n            return this.codewords;\n        }\n        // @Override\n        toString() {\n            const formatter = new Formatter();\n            let row = 0;\n            for (const codeword of this.codewords) {\n                if (codeword == null) {\n                    formatter.format('%3d:    |   %n', row++);\n                    continue;\n                }\n                formatter.format('%3d: %3d|%3d%n', row++, codeword.getRowNumber(), codeword.getValue());\n            }\n            return formatter.toString();\n        }\n    }\n    DetectionResultColumn.MAX_NEARBY_DISTANCE = 5;\n\n    /*\n     * Copyright 2013 ZXing authors\n     *\n     * Licensed under the Apache License, Version 2.0 (the \"License\");\n     * you may not use this file except in compliance with the License.\n     * You may obtain a copy of the License at\n     *\n     *      http://www.apache.org/licenses/LICENSE-2.0\n     *\n     * Unless required by applicable law or agreed to in writing, software\n     * distributed under the License is distributed on an \"AS IS\" BASIS,\n     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n     * See the License for the specific language governing permissions and\n     * limitations under the License.\n     */\n    // import java.util.ArrayList;\n    // import java.util.Collection;\n    // import java.util.HashMap;\n    // import java.util.Map;\n    // import java.util.Map.Entry;\n    /**\n     * @author Guenther Grau\n     */\n    /*final*/ class BarcodeValue {\n        constructor() {\n            this.values = new Map();\n        }\n        /**\n         * Add an occurrence of a value\n         */\n        setValue(value) {\n            value = Math.trunc(value);\n            let confidence = this.values.get(value);\n            if (confidence == null) {\n                confidence = 0;\n            }\n            confidence++;\n            this.values.set(value, confidence);\n        }\n        /**\n         * Determines the maximum occurrence of a set value and returns all values which were set with this occurrence.\n         * @return an array of int, containing the values with the highest occurrence, or null, if no value was set\n         */\n        getValue() {\n            let maxConfidence = -1;\n            let result = new Array();\n            for (const [key, value] of this.values.entries()) {\n                const entry = {\n                    getKey: () => key,\n                    getValue: () => value,\n                };\n                if (entry.getValue() > maxConfidence) {\n                    maxConfidence = entry.getValue();\n                    result = [];\n                    result.push(entry.getKey());\n                }\n                else if (entry.getValue() === maxConfidence) {\n                    result.push(entry.getKey());\n                }\n            }\n            return PDF417Common.toIntArray(result);\n        }\n        getConfidence(value) {\n            return this.values.get(value);\n        }\n    }\n\n    /*\n     * Copyright 2013 ZXing authors\n     *\n     * Licensed under the Apache License, Version 2.0 (the \"License\");\n     * you may not use this file except in compliance with the License.\n     * You may obtain a copy of the License at\n     *\n     *      http://www.apache.org/licenses/LICENSE-2.0\n     *\n     * Unless required by applicable law or agreed to in writing, software\n     * distributed under the License is distributed on an \"AS IS\" BASIS,\n     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n     * See the License for the specific language governing permissions and\n     * limitations under the License.\n     */\n    /**\n     * @author Guenther Grau\n     */\n    /*final*/ class DetectionResultRowIndicatorColumn extends DetectionResultColumn {\n        constructor(boundingBox, isLeft) {\n            super(boundingBox);\n            this._isLeft = isLeft;\n        }\n        setRowNumbers() {\n            for (let codeword /*Codeword*/ of this.getCodewords()) {\n                if (codeword != null) {\n                    codeword.setRowNumberAsRowIndicatorColumn();\n                }\n            }\n        }\n        // TODO implement properly\n        // TODO maybe we should add missing codewords to store the correct row number to make\n        // finding row numbers for other columns easier\n        // use row height count to make detection of invalid row numbers more reliable\n        adjustCompleteIndicatorColumnRowNumbers(barcodeMetadata) {\n            let codewords = this.getCodewords();\n            this.setRowNumbers();\n            this.removeIncorrectCodewords(codewords, barcodeMetadata);\n            let boundingBox = this.getBoundingBox();\n            let top = this._isLeft ? boundingBox.getTopLeft() : boundingBox.getTopRight();\n            let bottom = this._isLeft ? boundingBox.getBottomLeft() : boundingBox.getBottomRight();\n            let firstRow = this.imageRowToCodewordIndex(Math.trunc(top.getY()));\n            let lastRow = this.imageRowToCodewordIndex(Math.trunc(bottom.getY()));\n            // We need to be careful using the average row height. Barcode could be skewed so that we have smaller and\n            // taller rows\n            // float averageRowHeight = (lastRow - firstRow) / /*(float)*/ barcodeMetadata.getRowCount();\n            let barcodeRow = -1;\n            let maxRowHeight = 1;\n            let currentRowHeight = 0;\n            for (let codewordsRow /*int*/ = firstRow; codewordsRow < lastRow; codewordsRow++) {\n                if (codewords[codewordsRow] == null) {\n                    continue;\n                }\n                let codeword = codewords[codewordsRow];\n                //      float expectedRowNumber = (codewordsRow - firstRow) / averageRowHeight;\n                //      if (Math.abs(codeword.getRowNumber() - expectedRowNumber) > 2) {\n                //        SimpleLog.log(LEVEL.WARNING,\n                //            \"Removing codeword, rowNumberSkew too high, codeword[\" + codewordsRow + \"]: Expected Row: \" +\n                //                expectedRowNumber + \", RealRow: \" + codeword.getRowNumber() + \", value: \" + codeword.getValue());\n                //        codewords[codewordsRow] = null;\n                //      }\n                let rowDifference = codeword.getRowNumber() - barcodeRow;\n                // TODO improve handling with case where first row indicator doesn't start with 0\n                if (rowDifference === 0) {\n                    currentRowHeight++;\n                }\n                else if (rowDifference === 1) {\n                    maxRowHeight = Math.max(maxRowHeight, currentRowHeight);\n                    currentRowHeight = 1;\n                    barcodeRow = codeword.getRowNumber();\n                }\n                else if (rowDifference < 0 ||\n                    codeword.getRowNumber() >= barcodeMetadata.getRowCount() ||\n                    rowDifference > codewordsRow) {\n                    codewords[codewordsRow] = null;\n                }\n                else {\n                    let checkedRows;\n                    if (maxRowHeight > 2) {\n                        checkedRows = (maxRowHeight - 2) * rowDifference;\n                    }\n                    else {\n                        checkedRows = rowDifference;\n                    }\n                    let closePreviousCodewordFound = checkedRows >= codewordsRow;\n                    for (let i /*int*/ = 1; i <= checkedRows && !closePreviousCodewordFound; i++) {\n                        // there must be (height * rowDifference) number of codewords missing. For now we assume height = 1.\n                        // This should hopefully get rid of most problems already.\n                        closePreviousCodewordFound = codewords[codewordsRow - i] != null;\n                    }\n                    if (closePreviousCodewordFound) {\n                        codewords[codewordsRow] = null;\n                    }\n                    else {\n                        barcodeRow = codeword.getRowNumber();\n                        currentRowHeight = 1;\n                    }\n                }\n            }\n            // return (int) (averageRowHeight + 0.5);\n        }\n        getRowHeights() {\n            let barcodeMetadata = this.getBarcodeMetadata();\n            if (barcodeMetadata == null) {\n                return null;\n            }\n            this.adjustIncompleteIndicatorColumnRowNumbers(barcodeMetadata);\n            let result = new Int32Array(barcodeMetadata.getRowCount());\n            for (let codeword /*Codeword*/ of this.getCodewords()) {\n                if (codeword != null) {\n                    let rowNumber = codeword.getRowNumber();\n                    if (rowNumber >= result.length) {\n                        // We have more rows than the barcode metadata allows for, ignore them.\n                        continue;\n                    }\n                    result[rowNumber]++;\n                } // else throw exception?\n            }\n            return result;\n        }\n        // TODO maybe we should add missing codewords to store the correct row number to make\n        // finding row numbers for other columns easier\n        // use row height count to make detection of invalid row numbers more reliable\n        adjustIncompleteIndicatorColumnRowNumbers(barcodeMetadata) {\n            let boundingBox = this.getBoundingBox();\n            let top = this._isLeft ? boundingBox.getTopLeft() : boundingBox.getTopRight();\n            let bottom = this._isLeft ? boundingBox.getBottomLeft() : boundingBox.getBottomRight();\n            let firstRow = this.imageRowToCodewordIndex(Math.trunc(top.getY()));\n            let lastRow = this.imageRowToCodewordIndex(Math.trunc(bottom.getY()));\n            // float averageRowHeight = (lastRow - firstRow) / /*(float)*/ barcodeMetadata.getRowCount();\n            let codewords = this.getCodewords();\n            let barcodeRow = -1;\n            for (let codewordsRow /*int*/ = firstRow; codewordsRow < lastRow; codewordsRow++) {\n                if (codewords[codewordsRow] == null) {\n                    continue;\n                }\n                let codeword = codewords[codewordsRow];\n                codeword.setRowNumberAsRowIndicatorColumn();\n                let rowDifference = codeword.getRowNumber() - barcodeRow;\n                // TODO improve handling with case where first row indicator doesn't start with 0\n                if (rowDifference === 0) ;\n                else if (rowDifference === 1) {\n                    barcodeRow = codeword.getRowNumber();\n                }\n                else if (codeword.getRowNumber() >= barcodeMetadata.getRowCount()) {\n                    codewords[codewordsRow] = null;\n                }\n                else {\n                    barcodeRow = codeword.getRowNumber();\n                }\n            }\n            // return (int) (averageRowHeight + 0.5);\n        }\n        getBarcodeMetadata() {\n            let codewords = this.getCodewords();\n            let barcodeColumnCount = new BarcodeValue();\n            let barcodeRowCountUpperPart = new BarcodeValue();\n            let barcodeRowCountLowerPart = new BarcodeValue();\n            let barcodeECLevel = new BarcodeValue();\n            for (let codeword /*Codeword*/ of codewords) {\n                if (codeword == null) {\n                    continue;\n                }\n                codeword.setRowNumberAsRowIndicatorColumn();\n                let rowIndicatorValue = codeword.getValue() % 30;\n                let codewordRowNumber = codeword.getRowNumber();\n                if (!this._isLeft) {\n                    codewordRowNumber += 2;\n                }\n                switch (codewordRowNumber % 3) {\n                    case 0:\n                        barcodeRowCountUpperPart.setValue(rowIndicatorValue * 3 + 1);\n                        break;\n                    case 1:\n                        barcodeECLevel.setValue(rowIndicatorValue / 3);\n                        barcodeRowCountLowerPart.setValue(rowIndicatorValue % 3);\n                        break;\n                    case 2:\n                        barcodeColumnCount.setValue(rowIndicatorValue + 1);\n                        break;\n                }\n            }\n            // Maybe we should check if we have ambiguous values?\n            if ((barcodeColumnCount.getValue().length === 0) ||\n                (barcodeRowCountUpperPart.getValue().length === 0) ||\n                (barcodeRowCountLowerPart.getValue().length === 0) ||\n                (barcodeECLevel.getValue().length === 0) ||\n                barcodeColumnCount.getValue()[0] < 1 ||\n                barcodeRowCountUpperPart.getValue()[0] + barcodeRowCountLowerPart.getValue()[0] < PDF417Common.MIN_ROWS_IN_BARCODE ||\n                barcodeRowCountUpperPart.getValue()[0] + barcodeRowCountLowerPart.getValue()[0] > PDF417Common.MAX_ROWS_IN_BARCODE) {\n                return null;\n            }\n            let barcodeMetadata = new BarcodeMetadata(barcodeColumnCount.getValue()[0], barcodeRowCountUpperPart.getValue()[0], barcodeRowCountLowerPart.getValue()[0], barcodeECLevel.getValue()[0]);\n            this.removeIncorrectCodewords(codewords, barcodeMetadata);\n            return barcodeMetadata;\n        }\n        removeIncorrectCodewords(codewords, barcodeMetadata) {\n            // Remove codewords which do not match the metadata\n            // TODO Maybe we should keep the incorrect codewords for the start and end positions?\n            for (let codewordRow /*int*/ = 0; codewordRow < codewords.length; codewordRow++) {\n                let codeword = codewords[codewordRow];\n                if (codewords[codewordRow] == null) {\n                    continue;\n                }\n                let rowIndicatorValue = codeword.getValue() % 30;\n                let codewordRowNumber = codeword.getRowNumber();\n                if (codewordRowNumber > barcodeMetadata.getRowCount()) {\n                    codewords[codewordRow] = null;\n                    continue;\n                }\n                if (!this._isLeft) {\n                    codewordRowNumber += 2;\n                }\n                switch (codewordRowNumber % 3) {\n                    case 0:\n                        if (rowIndicatorValue * 3 + 1 !== barcodeMetadata.getRowCountUpperPart()) {\n                            codewords[codewordRow] = null;\n                        }\n                        break;\n                    case 1:\n                        if (Math.trunc(rowIndicatorValue / 3) !== barcodeMetadata.getErrorCorrectionLevel() ||\n                            rowIndicatorValue % 3 !== barcodeMetadata.getRowCountLowerPart()) {\n                            codewords[codewordRow] = null;\n                        }\n                        break;\n                    case 2:\n                        if (rowIndicatorValue + 1 !== barcodeMetadata.getColumnCount()) {\n                            codewords[codewordRow] = null;\n                        }\n                        break;\n                }\n            }\n        }\n        isLeft() {\n            return this._isLeft;\n        }\n        // @Override\n        toString() {\n            return 'IsLeft: ' + this._isLeft + '\\n' + super.toString();\n        }\n    }\n\n    /*\n     * Copyright 2013 ZXing authors\n     *\n     * Licensed under the Apache License, Version 2.0 (the \"License\");\n     * you may not use this file except in compliance with the License.\n     * You may obtain a copy of the License at\n     *\n     *      http://www.apache.org/licenses/LICENSE-2.0\n     *\n     * Unless required by applicable law or agreed to in writing, software\n     * distributed under the License is distributed on an \"AS IS\" BASIS,\n     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n     * See the License for the specific language governing permissions and\n     * limitations under the License.\n     */\n    /**\n     * @author Guenther Grau\n     */\n    /*final*/ class DetectionResult {\n        constructor(barcodeMetadata, boundingBox) {\n            /*final*/ this.ADJUST_ROW_NUMBER_SKIP = 2;\n            this.barcodeMetadata = barcodeMetadata;\n            this.barcodeColumnCount = barcodeMetadata.getColumnCount();\n            this.boundingBox = boundingBox;\n            // this.detectionResultColumns = new DetectionResultColumn[this.barcodeColumnCount + 2];\n            this.detectionResultColumns = new Array(this.barcodeColumnCount + 2);\n        }\n        getDetectionResultColumns() {\n            this.adjustIndicatorColumnRowNumbers(this.detectionResultColumns[0]);\n            this.adjustIndicatorColumnRowNumbers(this.detectionResultColumns[this.barcodeColumnCount + 1]);\n            let unadjustedCodewordCount = PDF417Common.MAX_CODEWORDS_IN_BARCODE;\n            let previousUnadjustedCount;\n            do {\n                previousUnadjustedCount = unadjustedCodewordCount;\n                unadjustedCodewordCount = this.adjustRowNumbersAndGetCount();\n            } while (unadjustedCodewordCount > 0 && unadjustedCodewordCount < previousUnadjustedCount);\n            return this.detectionResultColumns;\n        }\n        adjustIndicatorColumnRowNumbers(detectionResultColumn) {\n            if (detectionResultColumn != null) {\n                detectionResultColumn\n                    .adjustCompleteIndicatorColumnRowNumbers(this.barcodeMetadata);\n            }\n        }\n        // TODO ensure that no detected codewords with unknown row number are left\n        // we should be able to estimate the row height and use it as a hint for the row number\n        // we should also fill the rows top to bottom and bottom to top\n        /**\n         * @return number of codewords which don't have a valid row number. Note that the count is not accurate as codewords\n         * will be counted several times. It just serves as an indicator to see when we can stop adjusting row numbers\n         */\n        adjustRowNumbersAndGetCount() {\n            let unadjustedCount = this.adjustRowNumbersByRow();\n            if (unadjustedCount === 0) {\n                return 0;\n            }\n            for (let barcodeColumn /*int*/ = 1; barcodeColumn < this.barcodeColumnCount + 1; barcodeColumn++) {\n                let codewords = this.detectionResultColumns[barcodeColumn].getCodewords();\n                for (let codewordsRow /*int*/ = 0; codewordsRow < codewords.length; codewordsRow++) {\n                    if (codewords[codewordsRow] == null) {\n                        continue;\n                    }\n                    if (!codewords[codewordsRow].hasValidRowNumber()) {\n                        this.adjustRowNumbers(barcodeColumn, codewordsRow, codewords);\n                    }\n                }\n            }\n            return unadjustedCount;\n        }\n        adjustRowNumbersByRow() {\n            this.adjustRowNumbersFromBothRI();\n            // TODO we should only do full row adjustments if row numbers of left and right row indicator column match.\n            // Maybe it's even better to calculated the height (rows: d) and divide it by the number of barcode\n            // rows. This, together with the LRI and RRI row numbers should allow us to get a good estimate where a row\n            // number starts and ends.\n            let unadjustedCount = this.adjustRowNumbersFromLRI();\n            return unadjustedCount + this.adjustRowNumbersFromRRI();\n        }\n        adjustRowNumbersFromBothRI() {\n            if (this.detectionResultColumns[0] == null || this.detectionResultColumns[this.barcodeColumnCount + 1] == null) {\n                return;\n            }\n            let LRIcodewords = this.detectionResultColumns[0].getCodewords();\n            let RRIcodewords = this.detectionResultColumns[this.barcodeColumnCount + 1].getCodewords();\n            for (let codewordsRow /*int*/ = 0; codewordsRow < LRIcodewords.length; codewordsRow++) {\n                if (LRIcodewords[codewordsRow] != null &&\n                    RRIcodewords[codewordsRow] != null &&\n                    LRIcodewords[codewordsRow].getRowNumber() === RRIcodewords[codewordsRow].getRowNumber()) {\n                    for (let barcodeColumn /*int*/ = 1; barcodeColumn <= this.barcodeColumnCount; barcodeColumn++) {\n                        let codeword = this.detectionResultColumns[barcodeColumn].getCodewords()[codewordsRow];\n                        if (codeword == null) {\n                            continue;\n                        }\n                        codeword.setRowNumber(LRIcodewords[codewordsRow].getRowNumber());\n                        if (!codeword.hasValidRowNumber()) {\n                            this.detectionResultColumns[barcodeColumn].getCodewords()[codewordsRow] = null;\n                        }\n                    }\n                }\n            }\n        }\n        adjustRowNumbersFromRRI() {\n            if (this.detectionResultColumns[this.barcodeColumnCount + 1] == null) {\n                return 0;\n            }\n            let unadjustedCount = 0;\n            let codewords = this.detectionResultColumns[this.barcodeColumnCount + 1].getCodewords();\n            for (let codewordsRow /*int*/ = 0; codewordsRow < codewords.length; codewordsRow++) {\n                if (codewords[codewordsRow] == null) {\n                    continue;\n                }\n                let rowIndicatorRowNumber = codewords[codewordsRow].getRowNumber();\n                let invalidRowCounts = 0;\n                for (let barcodeColumn /*int*/ = this.barcodeColumnCount + 1; barcodeColumn > 0 && invalidRowCounts < this.ADJUST_ROW_NUMBER_SKIP; barcodeColumn--) {\n                    let codeword = this.detectionResultColumns[barcodeColumn].getCodewords()[codewordsRow];\n                    if (codeword != null) {\n                        invalidRowCounts = DetectionResult.adjustRowNumberIfValid(rowIndicatorRowNumber, invalidRowCounts, codeword);\n                        if (!codeword.hasValidRowNumber()) {\n                            unadjustedCount++;\n                        }\n                    }\n                }\n            }\n            return unadjustedCount;\n        }\n        adjustRowNumbersFromLRI() {\n            if (this.detectionResultColumns[0] == null) {\n                return 0;\n            }\n            let unadjustedCount = 0;\n            let codewords = this.detectionResultColumns[0].getCodewords();\n            for (let codewordsRow /*int*/ = 0; codewordsRow < codewords.length; codewordsRow++) {\n                if (codewords[codewordsRow] == null) {\n                    continue;\n                }\n                let rowIndicatorRowNumber = codewords[codewordsRow].getRowNumber();\n                let invalidRowCounts = 0;\n                for (let barcodeColumn /*int*/ = 1; barcodeColumn < this.barcodeColumnCount + 1 && invalidRowCounts < this.ADJUST_ROW_NUMBER_SKIP; barcodeColumn++) {\n                    let codeword = this.detectionResultColumns[barcodeColumn].getCodewords()[codewordsRow];\n                    if (codeword != null) {\n                        invalidRowCounts = DetectionResult.adjustRowNumberIfValid(rowIndicatorRowNumber, invalidRowCounts, codeword);\n                        if (!codeword.hasValidRowNumber()) {\n                            unadjustedCount++;\n                        }\n                    }\n                }\n            }\n            return unadjustedCount;\n        }\n        static adjustRowNumberIfValid(rowIndicatorRowNumber, invalidRowCounts, codeword) {\n            if (codeword == null) {\n                return invalidRowCounts;\n            }\n            if (!codeword.hasValidRowNumber()) {\n                if (codeword.isValidRowNumber(rowIndicatorRowNumber)) {\n                    codeword.setRowNumber(rowIndicatorRowNumber);\n                    invalidRowCounts = 0;\n                }\n                else {\n                    ++invalidRowCounts;\n                }\n            }\n            return invalidRowCounts;\n        }\n        adjustRowNumbers(barcodeColumn, codewordsRow, codewords) {\n            if (!this.detectionResultColumns[barcodeColumn - 1]) {\n                return;\n            }\n            let codeword = codewords[codewordsRow];\n            let previousColumnCodewords = this.detectionResultColumns[barcodeColumn - 1].getCodewords();\n            let nextColumnCodewords = previousColumnCodewords;\n            if (this.detectionResultColumns[barcodeColumn + 1] != null) {\n                nextColumnCodewords = this.detectionResultColumns[barcodeColumn + 1].getCodewords();\n            }\n            // let otherCodewords: Codeword[] = new Codeword[14];\n            let otherCodewords = new Array(14);\n            otherCodewords[2] = previousColumnCodewords[codewordsRow];\n            otherCodewords[3] = nextColumnCodewords[codewordsRow];\n            if (codewordsRow > 0) {\n                otherCodewords[0] = codewords[codewordsRow - 1];\n                otherCodewords[4] = previousColumnCodewords[codewordsRow - 1];\n                otherCodewords[5] = nextColumnCodewords[codewordsRow - 1];\n            }\n            if (codewordsRow > 1) {\n                otherCodewords[8] = codewords[codewordsRow - 2];\n                otherCodewords[10] = previousColumnCodewords[codewordsRow - 2];\n                otherCodewords[11] = nextColumnCodewords[codewordsRow - 2];\n            }\n            if (codewordsRow < codewords.length - 1) {\n                otherCodewords[1] = codewords[codewordsRow + 1];\n                otherCodewords[6] = previousColumnCodewords[codewordsRow + 1];\n                otherCodewords[7] = nextColumnCodewords[codewordsRow + 1];\n            }\n            if (codewordsRow < codewords.length - 2) {\n                otherCodewords[9] = codewords[codewordsRow + 2];\n                otherCodewords[12] = previousColumnCodewords[codewordsRow + 2];\n                otherCodewords[13] = nextColumnCodewords[codewordsRow + 2];\n            }\n            for (let otherCodeword of otherCodewords) {\n                if (DetectionResult.adjustRowNumber(codeword, otherCodeword)) {\n                    return;\n                }\n            }\n        }\n        /**\n         * @return true, if row number was adjusted, false otherwise\n         */\n        static adjustRowNumber(codeword, otherCodeword) {\n            if (otherCodeword == null) {\n                return false;\n            }\n            if (otherCodeword.hasValidRowNumber() && otherCodeword.getBucket() === codeword.getBucket()) {\n                codeword.setRowNumber(otherCodeword.getRowNumber());\n                return true;\n            }\n            return false;\n        }\n        getBarcodeColumnCount() {\n            return this.barcodeColumnCount;\n        }\n        getBarcodeRowCount() {\n            return this.barcodeMetadata.getRowCount();\n        }\n        getBarcodeECLevel() {\n            return this.barcodeMetadata.getErrorCorrectionLevel();\n        }\n        setBoundingBox(boundingBox) {\n            this.boundingBox = boundingBox;\n        }\n        getBoundingBox() {\n            return this.boundingBox;\n        }\n        setDetectionResultColumn(barcodeColumn, detectionResultColumn) {\n            this.detectionResultColumns[barcodeColumn] = detectionResultColumn;\n        }\n        getDetectionResultColumn(barcodeColumn) {\n            return this.detectionResultColumns[barcodeColumn];\n        }\n        // @Override\n        toString() {\n            let rowIndicatorColumn = this.detectionResultColumns[0];\n            if (rowIndicatorColumn == null) {\n                rowIndicatorColumn = this.detectionResultColumns[this.barcodeColumnCount + 1];\n            }\n            // try (\n            let formatter = new Formatter();\n            // ) {\n            for (let codewordsRow /*int*/ = 0; codewordsRow < rowIndicatorColumn.getCodewords().length; codewordsRow++) {\n                formatter.format('CW %3d:', codewordsRow);\n                for (let barcodeColumn /*int*/ = 0; barcodeColumn < this.barcodeColumnCount + 2; barcodeColumn++) {\n                    if (this.detectionResultColumns[barcodeColumn] == null) {\n                        formatter.format('    |   ');\n                        continue;\n                    }\n                    let codeword = this.detectionResultColumns[barcodeColumn].getCodewords()[codewordsRow];\n                    if (codeword == null) {\n                        formatter.format('    |   ');\n                        continue;\n                    }\n                    formatter.format(' %3d|%3d', codeword.getRowNumber(), codeword.getValue());\n                }\n                formatter.format('%n');\n            }\n            return formatter.toString();\n            // }\n        }\n    }\n\n    /*\n     * Copyright 2013 ZXing authors\n     *\n     * Licensed under the Apache License, Version 2.0 (the \"License\");\n     * you may not use this file except in compliance with the License.\n     * You may obtain a copy of the License at\n     *\n     *      http://www.apache.org/licenses/LICENSE-2.0\n     *\n     * Unless required by applicable law or agreed to in writing, software\n     * distributed under the License is distributed on an \"AS IS\" BASIS,\n     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n     * See the License for the specific language governing permissions and\n     * limitations under the License.\n     */\n    // package com.google.zxing.pdf417.decoder;\n    /**\n     * @author Guenther Grau\n     */\n    /*final*/ class Codeword {\n        constructor(startX, endX, bucket, value) {\n            this.rowNumber = Codeword.BARCODE_ROW_UNKNOWN;\n            this.startX = Math.trunc(startX);\n            this.endX = Math.trunc(endX);\n            this.bucket = Math.trunc(bucket);\n            this.value = Math.trunc(value);\n        }\n        hasValidRowNumber() {\n            return this.isValidRowNumber(this.rowNumber);\n        }\n        isValidRowNumber(rowNumber) {\n            return rowNumber !== Codeword.BARCODE_ROW_UNKNOWN && this.bucket === (rowNumber % 3) * 3;\n        }\n        setRowNumberAsRowIndicatorColumn() {\n            this.rowNumber = Math.trunc((Math.trunc(this.value / 30)) * 3 + Math.trunc(this.bucket / 3));\n        }\n        getWidth() {\n            return this.endX - this.startX;\n        }\n        getStartX() {\n            return this.startX;\n        }\n        getEndX() {\n            return this.endX;\n        }\n        getBucket() {\n            return this.bucket;\n        }\n        getValue() {\n            return this.value;\n        }\n        getRowNumber() {\n            return this.rowNumber;\n        }\n        setRowNumber(rowNumber) {\n            this.rowNumber = rowNumber;\n        }\n        //   @Override\n        toString() {\n            return this.rowNumber + '|' + this.value;\n        }\n    }\n    Codeword.BARCODE_ROW_UNKNOWN = -1;\n\n    /*\n    * Copyright 2013 ZXing authors\n    *\n    * Licensed under the Apache License, Version 2.0 (the \"License\");\n    * you may not use this file except in compliance with the License.\n    * You may obtain a copy of the License at\n    *\n    *      http://www.apache.org/licenses/LICENSE-2.0\n    *\n    * Unless required by applicable law or agreed to in writing, software\n    * distributed under the License is distributed on an \"AS IS\" BASIS,\n    * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n    * See the License for the specific language governing permissions and\n    * limitations under the License.\n    */\n    /**\n     * @author Guenther Grau\n     * @author creatale GmbH (christoph.schulz@creatale.de)\n     */\n    /*final*/ class PDF417CodewordDecoder {\n        /* @note\n         * this action have to be performed before first use of class\n         * - static constructor\n         * working with 32bit float (based from Java logic)\n        */\n        static initialize() {\n            // Pre-computes the symbol ratio table.\n            for ( /*int*/let i = 0; i < PDF417Common.SYMBOL_TABLE.length; i++) {\n                let currentSymbol = PDF417Common.SYMBOL_TABLE[i];\n                let currentBit = currentSymbol & 0x1;\n                for ( /*int*/let j = 0; j < PDF417Common.BARS_IN_MODULE; j++) {\n                    let size = 0.0;\n                    while ((currentSymbol & 0x1) === currentBit) {\n                        size += 1.0;\n                        currentSymbol >>= 1;\n                    }\n                    currentBit = currentSymbol & 0x1;\n                    if (!PDF417CodewordDecoder.RATIOS_TABLE[i]) {\n                        PDF417CodewordDecoder.RATIOS_TABLE[i] = new Array(PDF417Common.BARS_IN_MODULE);\n                    }\n                    PDF417CodewordDecoder.RATIOS_TABLE[i][PDF417Common.BARS_IN_MODULE - j - 1] = Math.fround(size / PDF417Common.MODULES_IN_CODEWORD);\n                }\n            }\n            this.bSymbolTableReady = true;\n        }\n        static getDecodedValue(moduleBitCount) {\n            let decodedValue = PDF417CodewordDecoder.getDecodedCodewordValue(PDF417CodewordDecoder.sampleBitCounts(moduleBitCount));\n            if (decodedValue !== -1) {\n                return decodedValue;\n            }\n            return PDF417CodewordDecoder.getClosestDecodedValue(moduleBitCount);\n        }\n        static sampleBitCounts(moduleBitCount) {\n            let bitCountSum = MathUtils.sum(moduleBitCount);\n            let result = new Int32Array(PDF417Common.BARS_IN_MODULE);\n            let bitCountIndex = 0;\n            let sumPreviousBits = 0;\n            for ( /*int*/let i = 0; i < PDF417Common.MODULES_IN_CODEWORD; i++) {\n                let sampleIndex = bitCountSum / (2 * PDF417Common.MODULES_IN_CODEWORD) +\n                    (i * bitCountSum) / PDF417Common.MODULES_IN_CODEWORD;\n                if (sumPreviousBits + moduleBitCount[bitCountIndex] <= sampleIndex) {\n                    sumPreviousBits += moduleBitCount[bitCountIndex];\n                    bitCountIndex++;\n                }\n                result[bitCountIndex]++;\n            }\n            return result;\n        }\n        static getDecodedCodewordValue(moduleBitCount) {\n            let decodedValue = PDF417CodewordDecoder.getBitValue(moduleBitCount);\n            return PDF417Common.getCodeword(decodedValue) === -1 ? -1 : decodedValue;\n        }\n        static getBitValue(moduleBitCount) {\n            let result = /*long*/ 0;\n            for (let /*int*/ i = 0; i < moduleBitCount.length; i++) {\n                for ( /*int*/let bit = 0; bit < moduleBitCount[i]; bit++) {\n                    result = (result << 1) | (i % 2 === 0 ? 1 : 0);\n                }\n            }\n            return Math.trunc(result);\n        }\n        // working with 32bit float (as in Java)\n        static getClosestDecodedValue(moduleBitCount) {\n            let bitCountSum = MathUtils.sum(moduleBitCount);\n            let bitCountRatios = new Array(PDF417Common.BARS_IN_MODULE);\n            if (bitCountSum > 1) {\n                for (let /*int*/ i = 0; i < bitCountRatios.length; i++) {\n                    bitCountRatios[i] = Math.fround(moduleBitCount[i] / bitCountSum);\n                }\n            }\n            let bestMatchError = Float.MAX_VALUE;\n            let bestMatch = -1;\n            if (!this.bSymbolTableReady) {\n                PDF417CodewordDecoder.initialize();\n            }\n            for ( /*int*/let j = 0; j < PDF417CodewordDecoder.RATIOS_TABLE.length; j++) {\n                let error = 0.0;\n                let ratioTableRow = PDF417CodewordDecoder.RATIOS_TABLE[j];\n                for ( /*int*/let k = 0; k < PDF417Common.BARS_IN_MODULE; k++) {\n                    let diff = Math.fround(ratioTableRow[k] - bitCountRatios[k]);\n                    error += Math.fround(diff * diff);\n                    if (error >= bestMatchError) {\n                        break;\n                    }\n                }\n                if (error < bestMatchError) {\n                    bestMatchError = error;\n                    bestMatch = PDF417Common.SYMBOL_TABLE[j];\n                }\n            }\n            return bestMatch;\n        }\n    }\n    // flag that the table is ready for use\n    PDF417CodewordDecoder.bSymbolTableReady = false;\n    PDF417CodewordDecoder.RATIOS_TABLE = new Array(PDF417Common.SYMBOL_TABLE.length).map(x => x = new Array(PDF417Common.BARS_IN_MODULE));\n\n    /*\n     * Copyright 2013 ZXing authors\n     *\n     * Licensed under the Apache License, Version 2.0 (the \"License\");\n     * you may not use this file except in compliance with the License.\n     * You may obtain a copy of the License at\n     *\n     *      http://www.apache.org/licenses/LICENSE-2.0\n     *\n     * Unless required by applicable law or agreed to in writing, software\n     * distributed under the License is distributed on an \"AS IS\" BASIS,\n     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n     * See the License for the specific language governing permissions and\n     * limitations under the License.\n     */\n    // package com.google.zxing.pdf417;\n    /**\n     * @author Guenther Grau\n     */\n    /*public final*/ class PDF417ResultMetadata {\n        constructor() {\n            this.segmentCount = -1;\n            this.fileSize = -1;\n            this.timestamp = -1;\n            this.checksum = -1;\n        }\n        /**\n         * The Segment ID represents the segment of the whole file distributed over different symbols.\n         *\n         * @return File segment index\n         */\n        getSegmentIndex() {\n            return this.segmentIndex;\n        }\n        setSegmentIndex(segmentIndex) {\n            this.segmentIndex = segmentIndex;\n        }\n        /**\n         * Is the same for each related PDF417 symbol\n         *\n         * @return File ID\n         */\n        getFileId() {\n            return this.fileId;\n        }\n        setFileId(fileId) {\n            this.fileId = fileId;\n        }\n        /**\n         * @return always null\n         * @deprecated use dedicated already parsed fields\n         */\n        //   @Deprecated\n        getOptionalData() {\n            return this.optionalData;\n        }\n        /**\n         * @param optionalData old optional data format as int array\n         * @deprecated parse and use new fields\n         */\n        //   @Deprecated\n        setOptionalData(optionalData) {\n            this.optionalData = optionalData;\n        }\n        /**\n         * @return true if it is the last segment\n         */\n        isLastSegment() {\n            return this.lastSegment;\n        }\n        setLastSegment(lastSegment) {\n            this.lastSegment = lastSegment;\n        }\n        /**\n         * @return count of segments, -1 if not set\n         */\n        getSegmentCount() {\n            return this.segmentCount;\n        }\n        setSegmentCount(segmentCount /*int*/) {\n            this.segmentCount = segmentCount;\n        }\n        getSender() {\n            return this.sender || null;\n        }\n        setSender(sender) {\n            this.sender = sender;\n        }\n        getAddressee() {\n            return this.addressee || null;\n        }\n        setAddressee(addressee) {\n            this.addressee = addressee;\n        }\n        /**\n         * Filename of the encoded file\n         *\n         * @return filename\n         */\n        getFileName() {\n            return this.fileName;\n        }\n        setFileName(fileName) {\n            this.fileName = fileName;\n        }\n        /**\n         * filesize in bytes of the encoded file\n         *\n         * @return filesize in bytes, -1 if not set\n         */\n        getFileSize() {\n            return this.fileSize;\n        }\n        setFileSize(fileSize /*long*/) {\n            this.fileSize = fileSize;\n        }\n        /**\n         * 16-bit CRC checksum using CCITT-16\n         *\n         * @return crc checksum, -1 if not set\n         */\n        getChecksum() {\n            return this.checksum;\n        }\n        setChecksum(checksum /*int*/) {\n            this.checksum = checksum;\n        }\n        /**\n         * unix epock timestamp, elapsed seconds since 1970-01-01\n         *\n         * @return elapsed seconds, -1 if not set\n         */\n        getTimestamp() {\n            return this.timestamp;\n        }\n        setTimestamp(timestamp /*long*/) {\n            this.timestamp = timestamp;\n        }\n    }\n\n    /**\n     * Ponyfill for Java's Long class.\n     */\n    class Long {\n        /**\n         * Parses a string to a number, since JS has no really Int64.\n         *\n         * @param num Numeric string.\n         * @param radix Destination radix.\n         */\n        static parseLong(num, radix = undefined) {\n            return parseInt(num, radix);\n        }\n    }\n\n    /**\n     * Custom Error class of type Exception.\n     */\n    class NullPointerException extends Exception {\n    }\n    NullPointerException.kind = 'NullPointerException';\n\n    /*\n     * Copyright (c) 1994, 2004, Oracle and/or its affiliates. All rights reserved.\n     * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.\n     *\n     * This code is free software; you can redistribute it and/or modify it\n     * under the terms of the GNU General Public License version 2 only, as\n     * published by the Free Software Foundation.  Oracle designates this\n     * particular file as subject to the \"Classpath\" exception as provided\n     * by Oracle in the LICENSE file that accompanied this code.\n     *\n     * This code is distributed in the hope that it will be useful, but WITHOUT\n     * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or\n     * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License\n     * version 2 for more details (a copy is included in the LICENSE file that\n     * accompanied this code).\n     *\n     * You should have received a copy of the GNU General Public License version\n     * 2 along with this work; if not, write to the Free Software Foundation,\n     * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.\n     *\n     * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA\n     * or visit www.oracle.com if you need additional information or have any\n     * questions.\n     */\n    // package java.io;\n    /**\n     * This abstract class is the superclass of all classes representing\n     * an output stream of bytes. An output stream accepts output bytes\n     * and sends them to some sink.\n     * <p>\n     * Applications that need to define a subclass of\n     * <code>OutputStream</code> must always provide at least a method\n     * that writes one byte of output.\n     *\n     * @author  Arthur van Hoff\n     * @see     java.io.BufferedOutputStream\n     * @see     java.io.ByteArrayOutputStream\n     * @see     java.io.DataOutputStream\n     * @see     java.io.FilterOutputStream\n     * @see     java.io.InputStream\n     * @see     java.io.OutputStream#write(int)\n     * @since   JDK1.0\n     */\n    /*public*/ class OutputStream /*implements Closeable, Flushable*/ {\n        /**\n         * Writes <code>b.length</code> bytes from the specified byte array\n         * to this output stream. The general contract for <code>write(b)</code>\n         * is that it should have exactly the same effect as the call\n         * <code>write(b, 0, b.length)</code>.\n         *\n         * @param      b   the data.\n         * @exception  IOException  if an I/O error occurs.\n         * @see        java.io.OutputStream#write(byte[], int, int)\n         */\n        writeBytes(b) {\n            this.writeBytesOffset(b, 0, b.length);\n        }\n        /**\n         * Writes <code>len</code> bytes from the specified byte array\n         * starting at offset <code>off</code> to this output stream.\n         * The general contract for <code>write(b, off, len)</code> is that\n         * some of the bytes in the array <code>b</code> are written to the\n         * output stream in order; element <code>b[off]</code> is the first\n         * byte written and <code>b[off+len-1]</code> is the last byte written\n         * by this operation.\n         * <p>\n         * The <code>write</code> method of <code>OutputStream</code> calls\n         * the write method of one argument on each of the bytes to be\n         * written out. Subclasses are encouraged to override this method and\n         * provide a more efficient implementation.\n         * <p>\n         * If <code>b</code> is <code>null</code>, a\n         * <code>NullPointerException</code> is thrown.\n         * <p>\n         * If <code>off</code> is negative, or <code>len</code> is negative, or\n         * <code>off+len</code> is greater than the length of the array\n         * <code>b</code>, then an <tt>IndexOutOfBoundsException</tt> is thrown.\n         *\n         * @param      b     the data.\n         * @param      off   the start offset in the data.\n         * @param      len   the number of bytes to write.\n         * @exception  IOException  if an I/O error occurs. In particular,\n         *             an <code>IOException</code> is thrown if the output\n         *             stream is closed.\n         */\n        writeBytesOffset(b, off, len) {\n            if (b == null) {\n                throw new NullPointerException();\n            }\n            else if ((off < 0) || (off > b.length) || (len < 0) ||\n                ((off + len) > b.length) || ((off + len) < 0)) {\n                throw new IndexOutOfBoundsException();\n            }\n            else if (len === 0) {\n                return;\n            }\n            for (let i = 0; i < len; i++) {\n                this.write(b[off + i]);\n            }\n        }\n        /**\n         * Flushes this output stream and forces any buffered output bytes\n         * to be written out. The general contract of <code>flush</code> is\n         * that calling it is an indication that, if any bytes previously\n         * written have been buffered by the implementation of the output\n         * stream, such bytes should immediately be written to their\n         * intended destination.\n         * <p>\n         * If the intended destination of this stream is an abstraction provided by\n         * the underlying operating system, for example a file, then flushing the\n         * stream guarantees only that bytes previously written to the stream are\n         * passed to the operating system for writing; it does not guarantee that\n         * they are actually written to a physical device such as a disk drive.\n         * <p>\n         * The <code>flush</code> method of <code>OutputStream</code> does nothing.\n         *\n         * @exception  IOException  if an I/O error occurs.\n         */\n        flush() {\n        }\n        /**\n         * Closes this output stream and releases any system resources\n         * associated with this stream. The general contract of <code>close</code>\n         * is that it closes the output stream. A closed stream cannot perform\n         * output operations and cannot be reopened.\n         * <p>\n         * The <code>close</code> method of <code>OutputStream</code> does nothing.\n         *\n         * @exception  IOException  if an I/O error occurs.\n         */\n        close() {\n        }\n    }\n\n    /**\n     * Custom Error class of type Exception.\n     */\n    class OutOfMemoryError extends Exception {\n    }\n\n    /*\n     * Copyright (c) 1994, 2010, Oracle and/or its affiliates. All rights reserved.\n     * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.\n     *\n     * This code is free software; you can redistribute it and/or modify it\n     * under the terms of the GNU General Public License version 2 only, as\n     * published by the Free Software Foundation.  Oracle designates this\n     * particular file as subject to the \"Classpath\" exception as provided\n     * by Oracle in the LICENSE file that accompanied this code.\n     *\n     * This code is distributed in the hope that it will be useful, but WITHOUT\n     * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or\n     * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License\n     * version 2 for more details (a copy is included in the LICENSE file that\n     * accompanied this code).\n     *\n     * You should have received a copy of the GNU General Public License version\n     * 2 along with this work; if not, write to the Free Software Foundation,\n     * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.\n     *\n     * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA\n     * or visit www.oracle.com if you need additional information or have any\n     * questions.\n     */\n    /**\n     * This class implements an output stream in which the data is\n     * written into a byte array. The buffer automatically grows as data\n     * is written to it.\n     * The data can be retrieved using <code>toByteArray()</code> and\n     * <code>toString()</code>.\n     * <p>\n     * Closing a <tt>ByteArrayOutputStream</tt> has no effect. The methods in\n     * this class can be called after the stream has been closed without\n     * generating an <tt>IOException</tt>.\n     *\n     * @author  Arthur van Hoff\n     * @since   JDK1.0\n     */\n    /*public*/ class ByteArrayOutputStream extends OutputStream {\n        /**\n         * Creates a new byte array output stream. The buffer capacity is\n         * initially 32 bytes, though its size increases if necessary.\n         */\n        // public constructor() {\n        //     this(32);\n        // }\n        /**\n         * Creates a new byte array output stream, with a buffer capacity of\n         * the specified size, in bytes.\n         *\n         * @param   size   the initial size.\n         * @exception  IllegalArgumentException if size is negative.\n         */\n        constructor(size = 32) {\n            super();\n            /**\n             * The number of valid bytes in the buffer.\n             */\n            this.count = 0;\n            if (size < 0) {\n                throw new IllegalArgumentException('Negative initial size: '\n                    + size);\n            }\n            this.buf = new Uint8Array(size);\n        }\n        /**\n         * Increases the capacity if necessary to ensure that it can hold\n         * at least the number of elements specified by the minimum\n         * capacity argument.\n         *\n         * @param minCapacity the desired minimum capacity\n         * @throws OutOfMemoryError if {@code minCapacity < 0}.  This is\n         * interpreted as a request for the unsatisfiably large capacity\n         * {@code (long) Integer.MAX_VALUE + (minCapacity - Integer.MAX_VALUE)}.\n         */\n        ensureCapacity(minCapacity) {\n            // overflow-conscious code\n            if (minCapacity - this.buf.length > 0)\n                this.grow(minCapacity);\n        }\n        /**\n         * Increases the capacity to ensure that it can hold at least the\n         * number of elements specified by the minimum capacity argument.\n         *\n         * @param minCapacity the desired minimum capacity\n         */\n        grow(minCapacity) {\n            // overflow-conscious code\n            let oldCapacity = this.buf.length;\n            let newCapacity = oldCapacity << 1;\n            if (newCapacity - minCapacity < 0)\n                newCapacity = minCapacity;\n            if (newCapacity < 0) {\n                if (minCapacity < 0) // overflow\n                    throw new OutOfMemoryError();\n                newCapacity = Integer.MAX_VALUE;\n            }\n            this.buf = Arrays.copyOfUint8Array(this.buf, newCapacity);\n        }\n        /**\n         * Writes the specified byte to this byte array output stream.\n         *\n         * @param   b   the byte to be written.\n         */\n        write(b) {\n            this.ensureCapacity(this.count + 1);\n            this.buf[this.count] = /*(byte)*/ b;\n            this.count += 1;\n        }\n        /**\n         * Writes <code>len</code> bytes from the specified byte array\n         * starting at offset <code>off</code> to this byte array output stream.\n         *\n         * @param   b     the data.\n         * @param   off   the start offset in the data.\n         * @param   len   the number of bytes to write.\n         */\n        writeBytesOffset(b, off, len) {\n            if ((off < 0) || (off > b.length) || (len < 0) ||\n                ((off + len) - b.length > 0)) {\n                throw new IndexOutOfBoundsException();\n            }\n            this.ensureCapacity(this.count + len);\n            System.arraycopy(b, off, this.buf, this.count, len);\n            this.count += len;\n        }\n        /**\n         * Writes the complete contents of this byte array output stream to\n         * the specified output stream argument, as if by calling the output\n         * stream's write method using <code>out.write(buf, 0, count)</code>.\n         *\n         * @param      out   the output stream to which to write the data.\n         * @exception  IOException  if an I/O error occurs.\n         */\n        writeTo(out) {\n            out.writeBytesOffset(this.buf, 0, this.count);\n        }\n        /**\n         * Resets the <code>count</code> field of this byte array output\n         * stream to zero, so that all currently accumulated output in the\n         * output stream is discarded. The output stream can be used again,\n         * reusing the already allocated buffer space.\n         *\n         * @see     java.io.ByteArrayInputStream#count\n         */\n        reset() {\n            this.count = 0;\n        }\n        /**\n         * Creates a newly allocated byte array. Its size is the current\n         * size of this output stream and the valid contents of the buffer\n         * have been copied into it.\n         *\n         * @return  the current contents of this output stream, as a byte array.\n         * @see     java.io.ByteArrayOutputStream#size()\n         */\n        toByteArray() {\n            return Arrays.copyOfUint8Array(this.buf, this.count);\n        }\n        /**\n         * Returns the current size of the buffer.\n         *\n         * @return  the value of the <code>count</code> field, which is the number\n         *          of valid bytes in this output stream.\n         * @see     java.io.ByteArrayOutputStream#count\n         */\n        size() {\n            return this.count;\n        }\n        toString(param) {\n            if (!param) {\n                return this.toString_void();\n            }\n            if (typeof param === 'string') {\n                return this.toString_string(param);\n            }\n            return this.toString_number(param);\n        }\n        /**\n         * Converts the buffer's contents into a string decoding bytes using the\n         * platform's default character set. The length of the new <tt>String</tt>\n         * is a function of the character set, and hence may not be equal to the\n         * size of the buffer.\n         *\n         * <p> This method always replaces malformed-input and unmappable-character\n         * sequences with the default replacement string for the platform's\n         * default character set. The {@linkplain java.nio.charset.CharsetDecoder}\n         * class should be used when more control over the decoding process is\n         * required.\n         *\n         * @return String decoded from the buffer's contents.\n         * @since  JDK1.1\n         */\n        toString_void() {\n            return new String(this.buf /*, 0, this.count*/).toString();\n        }\n        /**\n         * Converts the buffer's contents into a string by decoding the bytes using\n         * the specified {@link java.nio.charset.Charset charsetName}. The length of\n         * the new <tt>String</tt> is a function of the charset, and hence may not be\n         * equal to the length of the byte array.\n         *\n         * <p> This method always replaces malformed-input and unmappable-character\n         * sequences with this charset's default replacement string. The {@link\n         * java.nio.charset.CharsetDecoder} class should be used when more control\n         * over the decoding process is required.\n         *\n         * @param  charsetName  the name of a supported\n         *              {@linkplain java.nio.charset.Charset </code>charset<code>}\n         * @return String decoded from the buffer's contents.\n         * @exception  UnsupportedEncodingException\n         *             If the named charset is not supported\n         * @since   JDK1.1\n         */\n        toString_string(charsetName) {\n            return new String(this.buf /*, 0, this.count, charsetName*/).toString();\n        }\n        /**\n         * Creates a newly allocated string. Its size is the current size of\n         * the output stream and the valid contents of the buffer have been\n         * copied into it. Each character <i>c</i> in the resulting string is\n         * constructed from the corresponding element <i>b</i> in the byte\n         * array such that:\n         * <blockquote><pre>\n         *     c == (char)(((hibyte &amp; 0xff) &lt;&lt; 8) | (b &amp; 0xff))\n         * </pre></blockquote>\n         *\n         * @deprecated This method does not properly convert bytes into characters.\n         * As of JDK&nbsp;1.1, the preferred way to do this is via the\n         * <code>toString(String enc)</code> method, which takes an encoding-name\n         * argument, or the <code>toString()</code> method, which uses the\n         * platform's default character encoding.\n         *\n         * @param      hibyte    the high byte of each resulting Unicode character.\n         * @return     the current contents of the output stream, as a string.\n         * @see        java.io.ByteArrayOutputStream#size()\n         * @see        java.io.ByteArrayOutputStream#toString(String)\n         * @see        java.io.ByteArrayOutputStream#toString()\n         */\n        // @Deprecated\n        toString_number(hibyte) {\n            return new String(this.buf /*, hibyte, 0, this.count*/).toString();\n        }\n        /**\n         * Closing a <tt>ByteArrayOutputStream</tt> has no effect. The methods in\n         * this class can be called after the stream has been closed without\n         * generating an <tt>IOException</tt>.\n         * <p>\n         *\n         * @throws IOException\n         */\n        close() {\n        }\n    }\n\n    /*\n     * Copyright 2009 ZXing authors\n     *\n     * Licensed under the Apache License, Version 2.0 (the \"License\");\n     * you may not use this file except in compliance with the License.\n     * You may obtain a copy of the License at\n     *\n     *      http://www.apache.org/licenses/LICENSE-2.0\n     *\n     * Unless required by applicable law or agreed to in writing, software\n     * distributed under the License is distributed on an \"AS IS\" BASIS,\n     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n     * See the License for the specific language governing permissions and\n     * limitations under the License.\n     */\n    /*private*/ var Mode$2;\n    (function (Mode) {\n        Mode[Mode[\"ALPHA\"] = 0] = \"ALPHA\";\n        Mode[Mode[\"LOWER\"] = 1] = \"LOWER\";\n        Mode[Mode[\"MIXED\"] = 2] = \"MIXED\";\n        Mode[Mode[\"PUNCT\"] = 3] = \"PUNCT\";\n        Mode[Mode[\"ALPHA_SHIFT\"] = 4] = \"ALPHA_SHIFT\";\n        Mode[Mode[\"PUNCT_SHIFT\"] = 5] = \"PUNCT_SHIFT\";\n    })(Mode$2 || (Mode$2 = {}));\n    /**\n     * Indirectly access the global BigInt constructor, it\n     * allows browsers that doesn't support BigInt to run\n     * the library without breaking due to \"undefined BigInt\"\n     * errors.\n     */\n    function getBigIntConstructor() {\n        if (typeof window !== 'undefined') {\n            return window['BigInt'] || null;\n        }\n        if (typeof global !== 'undefined') {\n            return global['BigInt'] || null;\n        }\n        if (typeof self !== 'undefined') {\n            return self['BigInt'] || null;\n        }\n        throw new Error('Can\\'t search globals for BigInt!');\n    }\n    /**\n     * Used to store the BigInt constructor.\n     */\n    let BigInteger;\n    /**\n     * This function creates a bigint value. It allows browsers\n     * that doesn't support BigInt to run the rest of the library\n     * by not directly accessing the BigInt constructor.\n     */\n    function createBigInt(num) {\n        if (typeof BigInteger === 'undefined') {\n            BigInteger = getBigIntConstructor();\n        }\n        if (BigInteger === null) {\n            throw new Error('BigInt is not supported!');\n        }\n        return BigInteger(num);\n    }\n    function getEXP900() {\n        // in Java - array with length = 16\n        let EXP900 = [];\n        EXP900[0] = createBigInt(1);\n        let nineHundred = createBigInt(900);\n        EXP900[1] = nineHundred;\n        // in Java - array with length = 16\n        for (let i /*int*/ = 2; i < 16; i++) {\n            EXP900[i] = EXP900[i - 1] * nineHundred;\n        }\n        return EXP900;\n    }\n    /**\n     * <p>This class contains the methods for decoding the PDF417 codewords.</p>\n     *\n     * @author SITA Lab (kevin.osullivan@sita.aero)\n     * @author Guenther Grau\n     */\n    /*final*/ class DecodedBitStreamParser$2 {\n        //   private DecodedBitStreamParser() {\n        // }\n        /**\n         *\n         * @param codewords\n         * @param ecLevel\n         *\n         * @throws FormatException\n         */\n        static decode(codewords, ecLevel) {\n            // pass encoding to result (will be used for decode symbols in byte mode)\n            let result = new StringBuilder('');\n            // let encoding: Charset = StandardCharsets.ISO_8859_1;\n            let encoding = CharacterSetECI.ISO8859_1;\n            /**\n             * @note the next command is specific from this TypeScript library\n             * because TS can't properly cast some values to char and\n             * convert it to string later correctly due to encoding\n             * differences from Java version. As reported here:\n             * https://github.com/zxing-js/library/pull/264/files#r382831593\n             */\n            result.enableDecoding(encoding);\n            // Get compaction mode\n            let codeIndex = 1;\n            let code = codewords[codeIndex++];\n            let resultMetadata = new PDF417ResultMetadata();\n            while (codeIndex < codewords[0]) {\n                switch (code) {\n                    case DecodedBitStreamParser$2.TEXT_COMPACTION_MODE_LATCH:\n                        codeIndex = DecodedBitStreamParser$2.textCompaction(codewords, codeIndex, result);\n                        break;\n                    case DecodedBitStreamParser$2.BYTE_COMPACTION_MODE_LATCH:\n                    case DecodedBitStreamParser$2.BYTE_COMPACTION_MODE_LATCH_6:\n                        codeIndex = DecodedBitStreamParser$2.byteCompaction(code, codewords, encoding, codeIndex, result);\n                        break;\n                    case DecodedBitStreamParser$2.MODE_SHIFT_TO_BYTE_COMPACTION_MODE:\n                        result.append(/*(char)*/ codewords[codeIndex++]);\n                        break;\n                    case DecodedBitStreamParser$2.NUMERIC_COMPACTION_MODE_LATCH:\n                        codeIndex = DecodedBitStreamParser$2.numericCompaction(codewords, codeIndex, result);\n                        break;\n                    case DecodedBitStreamParser$2.ECI_CHARSET:\n                        let charsetECI = CharacterSetECI.getCharacterSetECIByValue(codewords[codeIndex++]);\n                        // encoding = Charset.forName(charsetECI.getName());\n                        break;\n                    case DecodedBitStreamParser$2.ECI_GENERAL_PURPOSE:\n                        // Can't do anything with generic ECI; skip its 2 characters\n                        codeIndex += 2;\n                        break;\n                    case DecodedBitStreamParser$2.ECI_USER_DEFINED:\n                        // Can't do anything with user ECI; skip its 1 character\n                        codeIndex++;\n                        break;\n                    case DecodedBitStreamParser$2.BEGIN_MACRO_PDF417_CONTROL_BLOCK:\n                        codeIndex = DecodedBitStreamParser$2.decodeMacroBlock(codewords, codeIndex, resultMetadata);\n                        break;\n                    case DecodedBitStreamParser$2.BEGIN_MACRO_PDF417_OPTIONAL_FIELD:\n                    case DecodedBitStreamParser$2.MACRO_PDF417_TERMINATOR:\n                        // Should not see these outside a macro block\n                        throw new FormatException();\n                    default:\n                        // Default to text compaction. During testing numerous barcodes\n                        // appeared to be missing the starting mode. In these cases defaulting\n                        // to text compaction seems to work.\n                        codeIndex--;\n                        codeIndex = DecodedBitStreamParser$2.textCompaction(codewords, codeIndex, result);\n                        break;\n                }\n                if (codeIndex < codewords.length) {\n                    code = codewords[codeIndex++];\n                }\n                else {\n                    throw FormatException.getFormatInstance();\n                }\n            }\n            if (result.length() === 0) {\n                throw FormatException.getFormatInstance();\n            }\n            let decoderResult = new DecoderResult(null, result.toString(), null, ecLevel);\n            decoderResult.setOther(resultMetadata);\n            return decoderResult;\n        }\n        /**\n         *\n         * @param int\n         * @param param1\n         * @param codewords\n         * @param int\n         * @param codeIndex\n         * @param PDF417ResultMetadata\n         * @param resultMetadata\n         *\n         * @throws FormatException\n         */\n        // @SuppressWarnings(\"deprecation\")\n        static decodeMacroBlock(codewords, codeIndex, resultMetadata) {\n            if (codeIndex + DecodedBitStreamParser$2.NUMBER_OF_SEQUENCE_CODEWORDS > codewords[0]) {\n                // we must have at least two bytes left for the segment index\n                throw FormatException.getFormatInstance();\n            }\n            let segmentIndexArray = new Int32Array(DecodedBitStreamParser$2.NUMBER_OF_SEQUENCE_CODEWORDS);\n            for (let i /*int*/ = 0; i < DecodedBitStreamParser$2.NUMBER_OF_SEQUENCE_CODEWORDS; i++, codeIndex++) {\n                segmentIndexArray[i] = codewords[codeIndex];\n            }\n            resultMetadata.setSegmentIndex(Integer.parseInt(DecodedBitStreamParser$2.decodeBase900toBase10(segmentIndexArray, DecodedBitStreamParser$2.NUMBER_OF_SEQUENCE_CODEWORDS)));\n            let fileId = new StringBuilder();\n            codeIndex = DecodedBitStreamParser$2.textCompaction(codewords, codeIndex, fileId);\n            resultMetadata.setFileId(fileId.toString());\n            let optionalFieldsStart = -1;\n            if (codewords[codeIndex] === DecodedBitStreamParser$2.BEGIN_MACRO_PDF417_OPTIONAL_FIELD) {\n                optionalFieldsStart = codeIndex + 1;\n            }\n            while (codeIndex < codewords[0]) {\n                switch (codewords[codeIndex]) {\n                    case DecodedBitStreamParser$2.BEGIN_MACRO_PDF417_OPTIONAL_FIELD:\n                        codeIndex++;\n                        switch (codewords[codeIndex]) {\n                            case DecodedBitStreamParser$2.MACRO_PDF417_OPTIONAL_FIELD_FILE_NAME:\n                                let fileName = new StringBuilder();\n                                codeIndex = DecodedBitStreamParser$2.textCompaction(codewords, codeIndex + 1, fileName);\n                                resultMetadata.setFileName(fileName.toString());\n                                break;\n                            case DecodedBitStreamParser$2.MACRO_PDF417_OPTIONAL_FIELD_SENDER:\n                                let sender = new StringBuilder();\n                                codeIndex = DecodedBitStreamParser$2.textCompaction(codewords, codeIndex + 1, sender);\n                                resultMetadata.setSender(sender.toString());\n                                break;\n                            case DecodedBitStreamParser$2.MACRO_PDF417_OPTIONAL_FIELD_ADDRESSEE:\n                                let addressee = new StringBuilder();\n                                codeIndex = DecodedBitStreamParser$2.textCompaction(codewords, codeIndex + 1, addressee);\n                                resultMetadata.setAddressee(addressee.toString());\n                                break;\n                            case DecodedBitStreamParser$2.MACRO_PDF417_OPTIONAL_FIELD_SEGMENT_COUNT:\n                                let segmentCount = new StringBuilder();\n                                codeIndex = DecodedBitStreamParser$2.numericCompaction(codewords, codeIndex + 1, segmentCount);\n                                resultMetadata.setSegmentCount(Integer.parseInt(segmentCount.toString()));\n                                break;\n                            case DecodedBitStreamParser$2.MACRO_PDF417_OPTIONAL_FIELD_TIME_STAMP:\n                                let timestamp = new StringBuilder();\n                                codeIndex = DecodedBitStreamParser$2.numericCompaction(codewords, codeIndex + 1, timestamp);\n                                resultMetadata.setTimestamp(Long.parseLong(timestamp.toString()));\n                                break;\n                            case DecodedBitStreamParser$2.MACRO_PDF417_OPTIONAL_FIELD_CHECKSUM:\n                                let checksum = new StringBuilder();\n                                codeIndex = DecodedBitStreamParser$2.numericCompaction(codewords, codeIndex + 1, checksum);\n                                resultMetadata.setChecksum(Integer.parseInt(checksum.toString()));\n                                break;\n                            case DecodedBitStreamParser$2.MACRO_PDF417_OPTIONAL_FIELD_FILE_SIZE:\n                                let fileSize = new StringBuilder();\n                                codeIndex = DecodedBitStreamParser$2.numericCompaction(codewords, codeIndex + 1, fileSize);\n                                resultMetadata.setFileSize(Long.parseLong(fileSize.toString()));\n                                break;\n                            default:\n                                throw FormatException.getFormatInstance();\n                        }\n                        break;\n                    case DecodedBitStreamParser$2.MACRO_PDF417_TERMINATOR:\n                        codeIndex++;\n                        resultMetadata.setLastSegment(true);\n                        break;\n                    default:\n                        throw FormatException.getFormatInstance();\n                }\n            }\n            // copy optional fields to additional options\n            if (optionalFieldsStart !== -1) {\n                let optionalFieldsLength = codeIndex - optionalFieldsStart;\n                if (resultMetadata.isLastSegment()) {\n                    // do not include terminator\n                    optionalFieldsLength--;\n                }\n                resultMetadata.setOptionalData(Arrays.copyOfRange(codewords, optionalFieldsStart, optionalFieldsStart + optionalFieldsLength));\n            }\n            return codeIndex;\n        }\n        /**\n         * Text Compaction mode (see 5.4.1.5) permits all printable ASCII characters to be\n         * encoded, i.e. values 32 - 126 inclusive in accordance with ISO/IEC 646 (IRV), as\n         * well as selected control characters.\n         *\n         * @param codewords The array of codewords (data + error)\n         * @param codeIndex The current index into the codeword array.\n         * @param result    The decoded data is appended to the result.\n         * @return The next index into the codeword array.\n         */\n        static textCompaction(codewords, codeIndex, result) {\n            // 2 character per codeword\n            let textCompactionData = new Int32Array((codewords[0] - codeIndex) * 2);\n            // Used to hold the byte compaction value if there is a mode shift\n            let byteCompactionData = new Int32Array((codewords[0] - codeIndex) * 2);\n            let index = 0;\n            let end = false;\n            while ((codeIndex < codewords[0]) && !end) {\n                let code = codewords[codeIndex++];\n                if (code < DecodedBitStreamParser$2.TEXT_COMPACTION_MODE_LATCH) {\n                    textCompactionData[index] = code / 30;\n                    textCompactionData[index + 1] = code % 30;\n                    index += 2;\n                }\n                else {\n                    switch (code) {\n                        case DecodedBitStreamParser$2.TEXT_COMPACTION_MODE_LATCH:\n                            // reinitialize text compaction mode to alpha sub mode\n                            textCompactionData[index++] = DecodedBitStreamParser$2.TEXT_COMPACTION_MODE_LATCH;\n                            break;\n                        case DecodedBitStreamParser$2.BYTE_COMPACTION_MODE_LATCH:\n                        case DecodedBitStreamParser$2.BYTE_COMPACTION_MODE_LATCH_6:\n                        case DecodedBitStreamParser$2.NUMERIC_COMPACTION_MODE_LATCH:\n                        case DecodedBitStreamParser$2.BEGIN_MACRO_PDF417_CONTROL_BLOCK:\n                        case DecodedBitStreamParser$2.BEGIN_MACRO_PDF417_OPTIONAL_FIELD:\n                        case DecodedBitStreamParser$2.MACRO_PDF417_TERMINATOR:\n                            codeIndex--;\n                            end = true;\n                            break;\n                        case DecodedBitStreamParser$2.MODE_SHIFT_TO_BYTE_COMPACTION_MODE:\n                            // The Mode Shift codeword 913 shall cause a temporary\n                            // switch from Text Compaction mode to Byte Compaction mode.\n                            // This switch shall be in effect for only the next codeword,\n                            // after which the mode shall revert to the prevailing sub-mode\n                            // of the Text Compaction mode. Codeword 913 is only available\n                            // in Text Compaction mode; its use is described in 5.4.2.4.\n                            textCompactionData[index] = DecodedBitStreamParser$2.MODE_SHIFT_TO_BYTE_COMPACTION_MODE;\n                            code = codewords[codeIndex++];\n                            byteCompactionData[index] = code;\n                            index++;\n                            break;\n                    }\n                }\n            }\n            DecodedBitStreamParser$2.decodeTextCompaction(textCompactionData, byteCompactionData, index, result);\n            return codeIndex;\n        }\n        /**\n         * The Text Compaction mode includes all the printable ASCII characters\n         * (i.e. values from 32 to 126) and three ASCII control characters: HT or tab\n         * (9: e), LF or line feed (10: e), and CR or carriage\n         * return (13: e). The Text Compaction mode also includes various latch\n         * and shift characters which are used exclusively within the mode. The Text\n         * Compaction mode encodes up to 2 characters per codeword. The compaction rules\n         * for converting data into PDF417 codewords are defined in 5.4.2.2. The sub-mode\n         * switches are defined in 5.4.2.3.\n         *\n         * @param textCompactionData The text compaction data.\n         * @param byteCompactionData The byte compaction data if there\n         *                           was a mode shift.\n         * @param length             The size of the text compaction and byte compaction data.\n         * @param result             The decoded data is appended to the result.\n         */\n        static decodeTextCompaction(textCompactionData, byteCompactionData, length, result) {\n            // Beginning from an initial state of the Alpha sub-mode\n            // The default compaction mode for PDF417 in effect at the start of each symbol shall always be Text\n            // Compaction mode Alpha sub-mode (alphabetic: uppercase). A latch codeword from another mode to the Text\n            // Compaction mode shall always switch to the Text Compaction Alpha sub-mode.\n            let subMode = Mode$2.ALPHA;\n            let priorToShiftMode = Mode$2.ALPHA;\n            let i = 0;\n            while (i < length) {\n                let subModeCh = textCompactionData[i];\n                let ch = /*char*/ '';\n                switch (subMode) {\n                    case Mode$2.ALPHA:\n                        // Alpha (alphabetic: uppercase)\n                        if (subModeCh < 26) {\n                            // Upper case Alpha Character\n                            // Note: 65 = 'A' ASCII -> there is byte code of symbol\n                            ch = /*(char)('A' + subModeCh) */ String.fromCharCode(65 + subModeCh);\n                        }\n                        else {\n                            switch (subModeCh) {\n                                case 26:\n                                    ch = ' ';\n                                    break;\n                                case DecodedBitStreamParser$2.LL:\n                                    subMode = Mode$2.LOWER;\n                                    break;\n                                case DecodedBitStreamParser$2.ML:\n                                    subMode = Mode$2.MIXED;\n                                    break;\n                                case DecodedBitStreamParser$2.PS:\n                                    // Shift to punctuation\n                                    priorToShiftMode = subMode;\n                                    subMode = Mode$2.PUNCT_SHIFT;\n                                    break;\n                                case DecodedBitStreamParser$2.MODE_SHIFT_TO_BYTE_COMPACTION_MODE:\n                                    result.append(/*(char)*/ byteCompactionData[i]);\n                                    break;\n                                case DecodedBitStreamParser$2.TEXT_COMPACTION_MODE_LATCH:\n                                    subMode = Mode$2.ALPHA;\n                                    break;\n                            }\n                        }\n                        break;\n                    case Mode$2.LOWER:\n                        // Lower (alphabetic: lowercase)\n                        if (subModeCh < 26) {\n                            ch = /*(char)('a' + subModeCh)*/ String.fromCharCode(97 + subModeCh);\n                        }\n                        else {\n                            switch (subModeCh) {\n                                case 26:\n                                    ch = ' ';\n                                    break;\n                                case DecodedBitStreamParser$2.AS:\n                                    // Shift to alpha\n                                    priorToShiftMode = subMode;\n                                    subMode = Mode$2.ALPHA_SHIFT;\n                                    break;\n                                case DecodedBitStreamParser$2.ML:\n                                    subMode = Mode$2.MIXED;\n                                    break;\n                                case DecodedBitStreamParser$2.PS:\n                                    // Shift to punctuation\n                                    priorToShiftMode = subMode;\n                                    subMode = Mode$2.PUNCT_SHIFT;\n                                    break;\n                                case DecodedBitStreamParser$2.MODE_SHIFT_TO_BYTE_COMPACTION_MODE:\n                                    // TODO Does this need to use the current character encoding? See other occurrences below\n                                    result.append(/*(char)*/ byteCompactionData[i]);\n                                    break;\n                                case DecodedBitStreamParser$2.TEXT_COMPACTION_MODE_LATCH:\n                                    subMode = Mode$2.ALPHA;\n                                    break;\n                            }\n                        }\n                        break;\n                    case Mode$2.MIXED:\n                        // Mixed (punctuation: e)\n                        if (subModeCh < DecodedBitStreamParser$2.PL) {\n                            ch = DecodedBitStreamParser$2.MIXED_CHARS[subModeCh];\n                        }\n                        else {\n                            switch (subModeCh) {\n                                case DecodedBitStreamParser$2.PL:\n                                    subMode = Mode$2.PUNCT;\n                                    break;\n                                case 26:\n                                    ch = ' ';\n                                    break;\n                                case DecodedBitStreamParser$2.LL:\n                                    subMode = Mode$2.LOWER;\n                                    break;\n                                case DecodedBitStreamParser$2.AL:\n                                    subMode = Mode$2.ALPHA;\n                                    break;\n                                case DecodedBitStreamParser$2.PS:\n                                    // Shift to punctuation\n                                    priorToShiftMode = subMode;\n                                    subMode = Mode$2.PUNCT_SHIFT;\n                                    break;\n                                case DecodedBitStreamParser$2.MODE_SHIFT_TO_BYTE_COMPACTION_MODE:\n                                    result.append(/*(char)*/ byteCompactionData[i]);\n                                    break;\n                                case DecodedBitStreamParser$2.TEXT_COMPACTION_MODE_LATCH:\n                                    subMode = Mode$2.ALPHA;\n                                    break;\n                            }\n                        }\n                        break;\n                    case Mode$2.PUNCT:\n                        // Punctuation\n                        if (subModeCh < DecodedBitStreamParser$2.PAL) {\n                            ch = DecodedBitStreamParser$2.PUNCT_CHARS[subModeCh];\n                        }\n                        else {\n                            switch (subModeCh) {\n                                case DecodedBitStreamParser$2.PAL:\n                                    subMode = Mode$2.ALPHA;\n                                    break;\n                                case DecodedBitStreamParser$2.MODE_SHIFT_TO_BYTE_COMPACTION_MODE:\n                                    result.append(/*(char)*/ byteCompactionData[i]);\n                                    break;\n                                case DecodedBitStreamParser$2.TEXT_COMPACTION_MODE_LATCH:\n                                    subMode = Mode$2.ALPHA;\n                                    break;\n                            }\n                        }\n                        break;\n                    case Mode$2.ALPHA_SHIFT:\n                        // Restore sub-mode\n                        subMode = priorToShiftMode;\n                        if (subModeCh < 26) {\n                            ch = /*(char)('A' + subModeCh)*/ String.fromCharCode(65 + subModeCh);\n                        }\n                        else {\n                            switch (subModeCh) {\n                                case 26:\n                                    ch = ' ';\n                                    break;\n                                case DecodedBitStreamParser$2.TEXT_COMPACTION_MODE_LATCH:\n                                    subMode = Mode$2.ALPHA;\n                                    break;\n                            }\n                        }\n                        break;\n                    case Mode$2.PUNCT_SHIFT:\n                        // Restore sub-mode\n                        subMode = priorToShiftMode;\n                        if (subModeCh < DecodedBitStreamParser$2.PAL) {\n                            ch = DecodedBitStreamParser$2.PUNCT_CHARS[subModeCh];\n                        }\n                        else {\n                            switch (subModeCh) {\n                                case DecodedBitStreamParser$2.PAL:\n                                    subMode = Mode$2.ALPHA;\n                                    break;\n                                case DecodedBitStreamParser$2.MODE_SHIFT_TO_BYTE_COMPACTION_MODE:\n                                    // PS before Shift-to-Byte is used as a padding character,\n                                    // see 5.4.2.4 of the specification\n                                    result.append(/*(char)*/ byteCompactionData[i]);\n                                    break;\n                                case DecodedBitStreamParser$2.TEXT_COMPACTION_MODE_LATCH:\n                                    subMode = Mode$2.ALPHA;\n                                    break;\n                            }\n                        }\n                        break;\n                }\n                // if (ch !== 0) {\n                if (ch !== '') {\n                    // Append decoded character to result\n                    result.append(ch);\n                }\n                i++;\n            }\n        }\n        /**\n         * Byte Compaction mode (see 5.4.3) permits all 256 possible 8-bit byte values to be encoded.\n         * This includes all ASCII characters value 0 to 127 inclusive and provides for international\n         * character set support.\n         *\n         * @param mode      The byte compaction mode i.e. 901 or 924\n         * @param codewords The array of codewords (data + error)\n         * @param encoding  Currently active character encoding\n         * @param codeIndex The current index into the codeword array.\n         * @param result    The decoded data is appended to the result.\n         * @return The next index into the codeword array.\n         */\n        static /*int*/ byteCompaction(mode, codewords, encoding, codeIndex, result) {\n            let decodedBytes = new ByteArrayOutputStream();\n            let count = 0;\n            let value = /*long*/ 0;\n            let end = false;\n            switch (mode) {\n                case DecodedBitStreamParser$2.BYTE_COMPACTION_MODE_LATCH:\n                    // Total number of Byte Compaction characters to be encoded\n                    // is not a multiple of 6\n                    let byteCompactedCodewords = new Int32Array(6);\n                    let nextCode = codewords[codeIndex++];\n                    while ((codeIndex < codewords[0]) && !end) {\n                        byteCompactedCodewords[count++] = nextCode;\n                        // Base 900\n                        value = 900 * value + nextCode;\n                        nextCode = codewords[codeIndex++];\n                        // perhaps it should be ok to check only nextCode >= TEXT_COMPACTION_MODE_LATCH\n                        switch (nextCode) {\n                            case DecodedBitStreamParser$2.TEXT_COMPACTION_MODE_LATCH:\n                            case DecodedBitStreamParser$2.BYTE_COMPACTION_MODE_LATCH:\n                            case DecodedBitStreamParser$2.NUMERIC_COMPACTION_MODE_LATCH:\n                            case DecodedBitStreamParser$2.BYTE_COMPACTION_MODE_LATCH_6:\n                            case DecodedBitStreamParser$2.BEGIN_MACRO_PDF417_CONTROL_BLOCK:\n                            case DecodedBitStreamParser$2.BEGIN_MACRO_PDF417_OPTIONAL_FIELD:\n                            case DecodedBitStreamParser$2.MACRO_PDF417_TERMINATOR:\n                                codeIndex--;\n                                end = true;\n                                break;\n                            default:\n                                if ((count % 5 === 0) && (count > 0)) {\n                                    // Decode every 5 codewords\n                                    // Convert to Base 256\n                                    for (let j /*int*/ = 0; j < 6; ++j) {\n                                        /* @note\n                                         * JavaScript stores numbers as 64 bits floating point numbers, but all bitwise operations are performed on 32 bits binary numbers.\n                                         * So the next bitwise operation could not be done with simple numbers\n                                         */\n                                        decodedBytes.write(/*(byte)*/ Number(createBigInt(value) >> createBigInt(8 * (5 - j))));\n                                    }\n                                    value = 0;\n                                    count = 0;\n                                }\n                                break;\n                        }\n                    }\n                    // if the end of all codewords is reached the last codeword needs to be added\n                    if (codeIndex === codewords[0] && nextCode < DecodedBitStreamParser$2.TEXT_COMPACTION_MODE_LATCH) {\n                        byteCompactedCodewords[count++] = nextCode;\n                    }\n                    // If Byte Compaction mode is invoked with codeword 901,\n                    // the last group of codewords is interpreted directly\n                    // as one byte per codeword, without compaction.\n                    for (let i /*int*/ = 0; i < count; i++) {\n                        decodedBytes.write(/*(byte)*/ byteCompactedCodewords[i]);\n                    }\n                    break;\n                case DecodedBitStreamParser$2.BYTE_COMPACTION_MODE_LATCH_6:\n                    // Total number of Byte Compaction characters to be encoded\n                    // is an integer multiple of 6\n                    while (codeIndex < codewords[0] && !end) {\n                        let code = codewords[codeIndex++];\n                        if (code < DecodedBitStreamParser$2.TEXT_COMPACTION_MODE_LATCH) {\n                            count++;\n                            // Base 900\n                            value = 900 * value + code;\n                        }\n                        else {\n                            switch (code) {\n                                case DecodedBitStreamParser$2.TEXT_COMPACTION_MODE_LATCH:\n                                case DecodedBitStreamParser$2.BYTE_COMPACTION_MODE_LATCH:\n                                case DecodedBitStreamParser$2.NUMERIC_COMPACTION_MODE_LATCH:\n                                case DecodedBitStreamParser$2.BYTE_COMPACTION_MODE_LATCH_6:\n                                case DecodedBitStreamParser$2.BEGIN_MACRO_PDF417_CONTROL_BLOCK:\n                                case DecodedBitStreamParser$2.BEGIN_MACRO_PDF417_OPTIONAL_FIELD:\n                                case DecodedBitStreamParser$2.MACRO_PDF417_TERMINATOR:\n                                    codeIndex--;\n                                    end = true;\n                                    break;\n                            }\n                        }\n                        if ((count % 5 === 0) && (count > 0)) {\n                            // Decode every 5 codewords\n                            // Convert to Base 256\n                            /* @note\n                             * JavaScript stores numbers as 64 bits floating point numbers, but all bitwise operations are performed on 32 bits binary numbers.\n                             * So the next bitwise operation could not be done with simple numbers\n                            */\n                            for (let j /*int*/ = 0; j < 6; ++j) {\n                                decodedBytes.write(/*(byte)*/ Number(createBigInt(value) >> createBigInt(8 * (5 - j))));\n                            }\n                            value = 0;\n                            count = 0;\n                        }\n                    }\n                    break;\n            }\n            result.append(StringEncoding.decode(decodedBytes.toByteArray(), encoding));\n            return codeIndex;\n        }\n        /**\n         * Numeric Compaction mode (see 5.4.4) permits efficient encoding of numeric data strings.\n         *\n         * @param codewords The array of codewords (data + error)\n         * @param codeIndex The current index into the codeword array.\n         * @param result    The decoded data is appended to the result.\n         * @return The next index into the codeword array.\n         *\n         * @throws FormatException\n         */\n        static numericCompaction(codewords, codeIndex /*int*/, result) {\n            let count = 0;\n            let end = false;\n            let numericCodewords = new Int32Array(DecodedBitStreamParser$2.MAX_NUMERIC_CODEWORDS);\n            while (codeIndex < codewords[0] && !end) {\n                let code = codewords[codeIndex++];\n                if (codeIndex === codewords[0]) {\n                    end = true;\n                }\n                if (code < DecodedBitStreamParser$2.TEXT_COMPACTION_MODE_LATCH) {\n                    numericCodewords[count] = code;\n                    count++;\n                }\n                else {\n                    switch (code) {\n                        case DecodedBitStreamParser$2.TEXT_COMPACTION_MODE_LATCH:\n                        case DecodedBitStreamParser$2.BYTE_COMPACTION_MODE_LATCH:\n                        case DecodedBitStreamParser$2.BYTE_COMPACTION_MODE_LATCH_6:\n                        case DecodedBitStreamParser$2.BEGIN_MACRO_PDF417_CONTROL_BLOCK:\n                        case DecodedBitStreamParser$2.BEGIN_MACRO_PDF417_OPTIONAL_FIELD:\n                        case DecodedBitStreamParser$2.MACRO_PDF417_TERMINATOR:\n                            codeIndex--;\n                            end = true;\n                            break;\n                    }\n                }\n                if ((count % DecodedBitStreamParser$2.MAX_NUMERIC_CODEWORDS === 0 || code === DecodedBitStreamParser$2.NUMERIC_COMPACTION_MODE_LATCH || end) && count > 0) {\n                    // Re-invoking Numeric Compaction mode (by using codeword 902\n                    // while in Numeric Compaction mode) serves  to terminate the\n                    // current Numeric Compaction mode grouping as described in 5.4.4.2,\n                    // and then to start a new one grouping.\n                    result.append(DecodedBitStreamParser$2.decodeBase900toBase10(numericCodewords, count));\n                    count = 0;\n                }\n            }\n            return codeIndex;\n        }\n        /**\n         * Convert a list of Numeric Compacted codewords from Base 900 to Base 10.\n         *\n         * @param codewords The array of codewords\n         * @param count     The number of codewords\n         * @return The decoded string representing the Numeric data.\n         *\n         * EXAMPLE\n         * Encode the fifteen digit numeric string 000213298174000\n         * Prefix the numeric string with a 1 and set the initial value of\n         * t = 1 000 213 298 174 000\n         * Calculate codeword 0\n         * d0 = 1 000 213 298 174 000 mod 900 = 200\n         *\n         * t = 1 000 213 298 174 000 div 900 = 1 111 348 109 082\n         * Calculate codeword 1\n         * d1 = 1 111 348 109 082 mod 900 = 282\n         *\n         * t = 1 111 348 109 082 div 900 = 1 234 831 232\n         * Calculate codeword 2\n         * d2 = 1 234 831 232 mod 900 = 632\n         *\n         * t = 1 234 831 232 div 900 = 1 372 034\n         * Calculate codeword 3\n         * d3 = 1 372 034 mod 900 = 434\n         *\n         * t = 1 372 034 div 900 = 1 524\n         * Calculate codeword 4\n         * d4 = 1 524 mod 900 = 624\n         *\n         * t = 1 524 div 900 = 1\n         * Calculate codeword 5\n         * d5 = 1 mod 900 = 1\n         * t = 1 div 900 = 0\n         * Codeword sequence is: 1, 624, 434, 632, 282, 200\n         *\n         * Decode the above codewords involves\n         *   1 x 900 power of 5 + 624 x 900 power of 4 + 434 x 900 power of 3 +\n         * 632 x 900 power of 2 + 282 x 900 power of 1 + 200 x 900 power of 0 = 1000213298174000\n         *\n         * Remove leading 1 =>  Result is 000213298174000\n         *\n         * @throws FormatException\n         */\n        static decodeBase900toBase10(codewords, count) {\n            let result = createBigInt(0);\n            for (let i /*int*/ = 0; i < count; i++) {\n                result += DecodedBitStreamParser$2.EXP900[count - i - 1] * createBigInt(codewords[i]);\n            }\n            let resultString = result.toString();\n            if (resultString.charAt(0) !== '1') {\n                throw new FormatException();\n            }\n            return resultString.substring(1);\n        }\n    }\n    DecodedBitStreamParser$2.TEXT_COMPACTION_MODE_LATCH = 900;\n    DecodedBitStreamParser$2.BYTE_COMPACTION_MODE_LATCH = 901;\n    DecodedBitStreamParser$2.NUMERIC_COMPACTION_MODE_LATCH = 902;\n    DecodedBitStreamParser$2.BYTE_COMPACTION_MODE_LATCH_6 = 924;\n    DecodedBitStreamParser$2.ECI_USER_DEFINED = 925;\n    DecodedBitStreamParser$2.ECI_GENERAL_PURPOSE = 926;\n    DecodedBitStreamParser$2.ECI_CHARSET = 927;\n    DecodedBitStreamParser$2.BEGIN_MACRO_PDF417_CONTROL_BLOCK = 928;\n    DecodedBitStreamParser$2.BEGIN_MACRO_PDF417_OPTIONAL_FIELD = 923;\n    DecodedBitStreamParser$2.MACRO_PDF417_TERMINATOR = 922;\n    DecodedBitStreamParser$2.MODE_SHIFT_TO_BYTE_COMPACTION_MODE = 913;\n    DecodedBitStreamParser$2.MAX_NUMERIC_CODEWORDS = 15;\n    DecodedBitStreamParser$2.MACRO_PDF417_OPTIONAL_FIELD_FILE_NAME = 0;\n    DecodedBitStreamParser$2.MACRO_PDF417_OPTIONAL_FIELD_SEGMENT_COUNT = 1;\n    DecodedBitStreamParser$2.MACRO_PDF417_OPTIONAL_FIELD_TIME_STAMP = 2;\n    DecodedBitStreamParser$2.MACRO_PDF417_OPTIONAL_FIELD_SENDER = 3;\n    DecodedBitStreamParser$2.MACRO_PDF417_OPTIONAL_FIELD_ADDRESSEE = 4;\n    DecodedBitStreamParser$2.MACRO_PDF417_OPTIONAL_FIELD_FILE_SIZE = 5;\n    DecodedBitStreamParser$2.MACRO_PDF417_OPTIONAL_FIELD_CHECKSUM = 6;\n    DecodedBitStreamParser$2.PL = 25;\n    DecodedBitStreamParser$2.LL = 27;\n    DecodedBitStreamParser$2.AS = 27;\n    DecodedBitStreamParser$2.ML = 28;\n    DecodedBitStreamParser$2.AL = 28;\n    DecodedBitStreamParser$2.PS = 29;\n    DecodedBitStreamParser$2.PAL = 29;\n    DecodedBitStreamParser$2.PUNCT_CHARS = ';<>@[\\\\]_`~!\\r\\t,:\\n-.$/\"|*()?{}\\'';\n    DecodedBitStreamParser$2.MIXED_CHARS = '0123456789&\\r\\t,:#-.$/+%*=^';\n    /**\n     * Table containing values for the exponent of 900.\n     * This is used in the numeric compaction decode algorithm.\n     */\n    DecodedBitStreamParser$2.EXP900 = getBigIntConstructor() ? getEXP900() : [];\n    DecodedBitStreamParser$2.NUMBER_OF_SEQUENCE_CODEWORDS = 2;\n\n    /*\n    * Copyright 2013 ZXing authors\n    *\n    * Licensed under the Apache License, Version 2.0 (the \"License\");\n    * you may not use this file except in compliance with the License.\n    * You may obtain a copy of the License at\n    *\n    *      http://www.apache.org/licenses/LICENSE-2.0\n    *\n    * Unless required by applicable law or agreed to in writing, software\n    * distributed under the License is distributed on an \"AS IS\" BASIS,\n    * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n    * See the License for the specific language governing permissions and\n    * limitations under the License.\n    */\n    // import java.util.ArrayList;\n    // import java.util.Collection;\n    // import java.util.Formatter;\n    // import java.util.List;\n    /**\n     * @author Guenther Grau\n     */\n    /*public final*/ class PDF417ScanningDecoder {\n        constructor() { }\n        /**\n         * @TODO don't pass in minCodewordWidth and maxCodewordWidth, pass in barcode columns for start and stop pattern\n         *\n         * columns. That way width can be deducted from the pattern column.\n         * This approach also allows to detect more details about the barcode, e.g. if a bar type (white or black) is wider\n         * than it should be. This can happen if the scanner used a bad blackpoint.\n         *\n         * @param BitMatrix\n         * @param image\n         * @param ResultPoint\n         * @param imageTopLeft\n         * @param ResultPoint\n         * @param imageBottomLeft\n         * @param ResultPoint\n         * @param imageTopRight\n         * @param ResultPoint\n         * @param imageBottomRight\n         * @param int\n         * @param minCodewordWidth\n         * @param int\n         * @param maxCodewordWidth\n         *\n         * @throws NotFoundException\n         * @throws FormatException\n         * @throws ChecksumException\n         */\n        static decode(image, imageTopLeft, imageBottomLeft, imageTopRight, imageBottomRight, minCodewordWidth, maxCodewordWidth) {\n            let boundingBox = new BoundingBox(image, imageTopLeft, imageBottomLeft, imageTopRight, imageBottomRight);\n            let leftRowIndicatorColumn = null;\n            let rightRowIndicatorColumn = null;\n            let detectionResult;\n            for (let firstPass /*boolean*/ = true;; firstPass = false) {\n                if (imageTopLeft != null) {\n                    leftRowIndicatorColumn = PDF417ScanningDecoder.getRowIndicatorColumn(image, boundingBox, imageTopLeft, true, minCodewordWidth, maxCodewordWidth);\n                }\n                if (imageTopRight != null) {\n                    rightRowIndicatorColumn = PDF417ScanningDecoder.getRowIndicatorColumn(image, boundingBox, imageTopRight, false, minCodewordWidth, maxCodewordWidth);\n                }\n                detectionResult = PDF417ScanningDecoder.merge(leftRowIndicatorColumn, rightRowIndicatorColumn);\n                if (detectionResult == null) {\n                    throw NotFoundException.getNotFoundInstance();\n                }\n                let resultBox = detectionResult.getBoundingBox();\n                if (firstPass && resultBox != null &&\n                    (resultBox.getMinY() < boundingBox.getMinY() || resultBox.getMaxY() > boundingBox.getMaxY())) {\n                    boundingBox = resultBox;\n                }\n                else {\n                    break;\n                }\n            }\n            detectionResult.setBoundingBox(boundingBox);\n            let maxBarcodeColumn = detectionResult.getBarcodeColumnCount() + 1;\n            detectionResult.setDetectionResultColumn(0, leftRowIndicatorColumn);\n            detectionResult.setDetectionResultColumn(maxBarcodeColumn, rightRowIndicatorColumn);\n            let leftToRight = leftRowIndicatorColumn != null;\n            for (let barcodeColumnCount /*int*/ = 1; barcodeColumnCount <= maxBarcodeColumn; barcodeColumnCount++) {\n                let barcodeColumn = leftToRight ? barcodeColumnCount : maxBarcodeColumn - barcodeColumnCount;\n                if (detectionResult.getDetectionResultColumn(barcodeColumn) !== /* null */ undefined) {\n                    // This will be the case for the opposite row indicator column, which doesn't need to be decoded again.\n                    continue;\n                }\n                let detectionResultColumn;\n                if (barcodeColumn === 0 || barcodeColumn === maxBarcodeColumn) {\n                    detectionResultColumn = new DetectionResultRowIndicatorColumn(boundingBox, barcodeColumn === 0);\n                }\n                else {\n                    detectionResultColumn = new DetectionResultColumn(boundingBox);\n                }\n                detectionResult.setDetectionResultColumn(barcodeColumn, detectionResultColumn);\n                let startColumn = -1;\n                let previousStartColumn = startColumn;\n                // TODO start at a row for which we know the start position, then detect upwards and downwards from there.\n                for (let imageRow /*int*/ = boundingBox.getMinY(); imageRow <= boundingBox.getMaxY(); imageRow++) {\n                    startColumn = PDF417ScanningDecoder.getStartColumn(detectionResult, barcodeColumn, imageRow, leftToRight);\n                    if (startColumn < 0 || startColumn > boundingBox.getMaxX()) {\n                        if (previousStartColumn === -1) {\n                            continue;\n                        }\n                        startColumn = previousStartColumn;\n                    }\n                    let codeword = PDF417ScanningDecoder.detectCodeword(image, boundingBox.getMinX(), boundingBox.getMaxX(), leftToRight, startColumn, imageRow, minCodewordWidth, maxCodewordWidth);\n                    if (codeword != null) {\n                        detectionResultColumn.setCodeword(imageRow, codeword);\n                        previousStartColumn = startColumn;\n                        minCodewordWidth = Math.min(minCodewordWidth, codeword.getWidth());\n                        maxCodewordWidth = Math.max(maxCodewordWidth, codeword.getWidth());\n                    }\n                }\n            }\n            return PDF417ScanningDecoder.createDecoderResult(detectionResult);\n        }\n        /**\n         *\n         * @param leftRowIndicatorColumn\n         * @param rightRowIndicatorColumn\n         *\n         * @throws NotFoundException\n         */\n        static merge(leftRowIndicatorColumn, rightRowIndicatorColumn) {\n            if (leftRowIndicatorColumn == null && rightRowIndicatorColumn == null) {\n                return null;\n            }\n            let barcodeMetadata = PDF417ScanningDecoder.getBarcodeMetadata(leftRowIndicatorColumn, rightRowIndicatorColumn);\n            if (barcodeMetadata == null) {\n                return null;\n            }\n            let boundingBox = BoundingBox.merge(PDF417ScanningDecoder.adjustBoundingBox(leftRowIndicatorColumn), PDF417ScanningDecoder.adjustBoundingBox(rightRowIndicatorColumn));\n            return new DetectionResult(barcodeMetadata, boundingBox);\n        }\n        /**\n         *\n         * @param rowIndicatorColumn\n         *\n         * @throws NotFoundException\n         */\n        static adjustBoundingBox(rowIndicatorColumn) {\n            if (rowIndicatorColumn == null) {\n                return null;\n            }\n            let rowHeights = rowIndicatorColumn.getRowHeights();\n            if (rowHeights == null) {\n                return null;\n            }\n            let maxRowHeight = PDF417ScanningDecoder.getMax(rowHeights);\n            let missingStartRows = 0;\n            for (let rowHeight /*int*/ of rowHeights) {\n                missingStartRows += maxRowHeight - rowHeight;\n                if (rowHeight > 0) {\n                    break;\n                }\n            }\n            let codewords = rowIndicatorColumn.getCodewords();\n            for (let row /*int*/ = 0; missingStartRows > 0 && codewords[row] == null; row++) {\n                missingStartRows--;\n            }\n            let missingEndRows = 0;\n            for (let row /*int*/ = rowHeights.length - 1; row >= 0; row--) {\n                missingEndRows += maxRowHeight - rowHeights[row];\n                if (rowHeights[row] > 0) {\n                    break;\n                }\n            }\n            for (let row /*int*/ = codewords.length - 1; missingEndRows > 0 && codewords[row] == null; row--) {\n                missingEndRows--;\n            }\n            return rowIndicatorColumn.getBoundingBox().addMissingRows(missingStartRows, missingEndRows, rowIndicatorColumn.isLeft());\n        }\n        static getMax(values) {\n            let maxValue = -1;\n            for (let value /*int*/ of values) {\n                maxValue = Math.max(maxValue, value);\n            }\n            return maxValue;\n        }\n        static getBarcodeMetadata(leftRowIndicatorColumn, rightRowIndicatorColumn) {\n            let leftBarcodeMetadata;\n            if (leftRowIndicatorColumn == null ||\n                (leftBarcodeMetadata = leftRowIndicatorColumn.getBarcodeMetadata()) == null) {\n                return rightRowIndicatorColumn == null ? null : rightRowIndicatorColumn.getBarcodeMetadata();\n            }\n            let rightBarcodeMetadata;\n            if (rightRowIndicatorColumn == null ||\n                (rightBarcodeMetadata = rightRowIndicatorColumn.getBarcodeMetadata()) == null) {\n                return leftBarcodeMetadata;\n            }\n            if (leftBarcodeMetadata.getColumnCount() !== rightBarcodeMetadata.getColumnCount() &&\n                leftBarcodeMetadata.getErrorCorrectionLevel() !== rightBarcodeMetadata.getErrorCorrectionLevel() &&\n                leftBarcodeMetadata.getRowCount() !== rightBarcodeMetadata.getRowCount()) {\n                return null;\n            }\n            return leftBarcodeMetadata;\n        }\n        static getRowIndicatorColumn(image, boundingBox, startPoint, leftToRight, minCodewordWidth, maxCodewordWidth) {\n            let rowIndicatorColumn = new DetectionResultRowIndicatorColumn(boundingBox, leftToRight);\n            for (let i /*int*/ = 0; i < 2; i++) {\n                let increment = i === 0 ? 1 : -1;\n                let startColumn = Math.trunc(Math.trunc(startPoint.getX()));\n                for (let imageRow /*int*/ = Math.trunc(Math.trunc(startPoint.getY())); imageRow <= boundingBox.getMaxY() &&\n                    imageRow >= boundingBox.getMinY(); imageRow += increment) {\n                    let codeword = PDF417ScanningDecoder.detectCodeword(image, 0, image.getWidth(), leftToRight, startColumn, imageRow, minCodewordWidth, maxCodewordWidth);\n                    if (codeword != null) {\n                        rowIndicatorColumn.setCodeword(imageRow, codeword);\n                        if (leftToRight) {\n                            startColumn = codeword.getStartX();\n                        }\n                        else {\n                            startColumn = codeword.getEndX();\n                        }\n                    }\n                }\n            }\n            return rowIndicatorColumn;\n        }\n        /**\n         *\n         * @param detectionResult\n         * @param BarcodeValue\n         * @param param2\n         * @param param3\n         * @param barcodeMatrix\n         *\n         * @throws NotFoundException\n         */\n        static adjustCodewordCount(detectionResult, barcodeMatrix) {\n            let barcodeMatrix01 = barcodeMatrix[0][1];\n            let numberOfCodewords = barcodeMatrix01.getValue();\n            let calculatedNumberOfCodewords = detectionResult.getBarcodeColumnCount() *\n                detectionResult.getBarcodeRowCount() -\n                PDF417ScanningDecoder.getNumberOfECCodeWords(detectionResult.getBarcodeECLevel());\n            if (numberOfCodewords.length === 0) {\n                if (calculatedNumberOfCodewords < 1 || calculatedNumberOfCodewords > PDF417Common.MAX_CODEWORDS_IN_BARCODE) {\n                    throw NotFoundException.getNotFoundInstance();\n                }\n                barcodeMatrix01.setValue(calculatedNumberOfCodewords);\n            }\n            else if (numberOfCodewords[0] !== calculatedNumberOfCodewords) {\n                // The calculated one is more reliable as it is derived from the row indicator columns\n                barcodeMatrix01.setValue(calculatedNumberOfCodewords);\n            }\n        }\n        /**\n         *\n         * @param detectionResult\n         *\n         * @throws FormatException\n         * @throws ChecksumException\n         * @throws NotFoundException\n         */\n        static createDecoderResult(detectionResult) {\n            let barcodeMatrix = PDF417ScanningDecoder.createBarcodeMatrix(detectionResult);\n            PDF417ScanningDecoder.adjustCodewordCount(detectionResult, barcodeMatrix);\n            let erasures /*Collection<Integer>*/ = new Array();\n            let codewords = new Int32Array(detectionResult.getBarcodeRowCount() * detectionResult.getBarcodeColumnCount());\n            let ambiguousIndexValuesList = /*List<int[]>*/ [];\n            let ambiguousIndexesList = /*Collection<Integer>*/ new Array();\n            for (let row /*int*/ = 0; row < detectionResult.getBarcodeRowCount(); row++) {\n                for (let column /*int*/ = 0; column < detectionResult.getBarcodeColumnCount(); column++) {\n                    let values = barcodeMatrix[row][column + 1].getValue();\n                    let codewordIndex = row * detectionResult.getBarcodeColumnCount() + column;\n                    if (values.length === 0) {\n                        erasures.push(codewordIndex);\n                    }\n                    else if (values.length === 1) {\n                        codewords[codewordIndex] = values[0];\n                    }\n                    else {\n                        ambiguousIndexesList.push(codewordIndex);\n                        ambiguousIndexValuesList.push(values);\n                    }\n                }\n            }\n            let ambiguousIndexValues = new Array(ambiguousIndexValuesList.length);\n            for (let i /*int*/ = 0; i < ambiguousIndexValues.length; i++) {\n                ambiguousIndexValues[i] = ambiguousIndexValuesList[i];\n            }\n            return PDF417ScanningDecoder.createDecoderResultFromAmbiguousValues(detectionResult.getBarcodeECLevel(), codewords, PDF417Common.toIntArray(erasures), PDF417Common.toIntArray(ambiguousIndexesList), ambiguousIndexValues);\n        }\n        /**\n         * This method deals with the fact, that the decoding process doesn't always yield a single most likely value. The\n         * current error correction implementation doesn't deal with erasures very well, so it's better to provide a value\n         * for these ambiguous codewords instead of treating it as an erasure. The problem is that we don't know which of\n         * the ambiguous values to choose. We try decode using the first value, and if that fails, we use another of the\n         * ambiguous values and try to decode again. This usually only happens on very hard to read and decode barcodes,\n         * so decoding the normal barcodes is not affected by this.\n         *\n         * @param erasureArray contains the indexes of erasures\n         * @param ambiguousIndexes array with the indexes that have more than one most likely value\n         * @param ambiguousIndexValues two dimensional array that contains the ambiguous values. The first dimension must\n         * be the same length as the ambiguousIndexes array\n         *\n         * @throws FormatException\n         * @throws ChecksumException\n         */\n        static createDecoderResultFromAmbiguousValues(ecLevel, codewords, erasureArray, ambiguousIndexes, ambiguousIndexValues) {\n            let ambiguousIndexCount = new Int32Array(ambiguousIndexes.length);\n            let tries = 100;\n            while (tries-- > 0) {\n                for (let i /*int*/ = 0; i < ambiguousIndexCount.length; i++) {\n                    codewords[ambiguousIndexes[i]] = ambiguousIndexValues[i][ambiguousIndexCount[i]];\n                }\n                try {\n                    return PDF417ScanningDecoder.decodeCodewords(codewords, ecLevel, erasureArray);\n                }\n                catch (err) {\n                    let ignored = err instanceof ChecksumException;\n                    if (!ignored) {\n                        throw err;\n                    }\n                }\n                if (ambiguousIndexCount.length === 0) {\n                    throw ChecksumException.getChecksumInstance();\n                }\n                for (let i /*int*/ = 0; i < ambiguousIndexCount.length; i++) {\n                    if (ambiguousIndexCount[i] < ambiguousIndexValues[i].length - 1) {\n                        ambiguousIndexCount[i]++;\n                        break;\n                    }\n                    else {\n                        ambiguousIndexCount[i] = 0;\n                        if (i === ambiguousIndexCount.length - 1) {\n                            throw ChecksumException.getChecksumInstance();\n                        }\n                    }\n                }\n            }\n            throw ChecksumException.getChecksumInstance();\n        }\n        static createBarcodeMatrix(detectionResult) {\n            // let barcodeMatrix: BarcodeValue[][] =\n            // new BarcodeValue[detectionResult.getBarcodeRowCount()][detectionResult.getBarcodeColumnCount() + 2];\n            let barcodeMatrix = Array.from({ length: detectionResult.getBarcodeRowCount() }, () => new Array(detectionResult.getBarcodeColumnCount() + 2));\n            for (let row /*int*/ = 0; row < barcodeMatrix.length; row++) {\n                for (let column /*int*/ = 0; column < barcodeMatrix[row].length; column++) {\n                    barcodeMatrix[row][column] = new BarcodeValue();\n                }\n            }\n            let column = 0;\n            for (let detectionResultColumn /*DetectionResultColumn*/ of detectionResult.getDetectionResultColumns()) {\n                if (detectionResultColumn != null) {\n                    for (let codeword /*Codeword*/ of detectionResultColumn.getCodewords()) {\n                        if (codeword != null) {\n                            let rowNumber = codeword.getRowNumber();\n                            if (rowNumber >= 0) {\n                                if (rowNumber >= barcodeMatrix.length) {\n                                    // We have more rows than the barcode metadata allows for, ignore them.\n                                    continue;\n                                }\n                                barcodeMatrix[rowNumber][column].setValue(codeword.getValue());\n                            }\n                        }\n                    }\n                }\n                column++;\n            }\n            return barcodeMatrix;\n        }\n        static isValidBarcodeColumn(detectionResult, barcodeColumn) {\n            return barcodeColumn >= 0 && barcodeColumn <= detectionResult.getBarcodeColumnCount() + 1;\n        }\n        static getStartColumn(detectionResult, barcodeColumn, imageRow, leftToRight) {\n            let offset = leftToRight ? 1 : -1;\n            let codeword = null;\n            if (PDF417ScanningDecoder.isValidBarcodeColumn(detectionResult, barcodeColumn - offset)) {\n                codeword = detectionResult.getDetectionResultColumn(barcodeColumn - offset).getCodeword(imageRow);\n            }\n            if (codeword != null) {\n                return leftToRight ? codeword.getEndX() : codeword.getStartX();\n            }\n            codeword = detectionResult.getDetectionResultColumn(barcodeColumn).getCodewordNearby(imageRow);\n            if (codeword != null) {\n                return leftToRight ? codeword.getStartX() : codeword.getEndX();\n            }\n            if (PDF417ScanningDecoder.isValidBarcodeColumn(detectionResult, barcodeColumn - offset)) {\n                codeword = detectionResult.getDetectionResultColumn(barcodeColumn - offset).getCodewordNearby(imageRow);\n            }\n            if (codeword != null) {\n                return leftToRight ? codeword.getEndX() : codeword.getStartX();\n            }\n            let skippedColumns = 0;\n            while (PDF417ScanningDecoder.isValidBarcodeColumn(detectionResult, barcodeColumn - offset)) {\n                barcodeColumn -= offset;\n                for (let previousRowCodeword /*Codeword*/ of detectionResult.getDetectionResultColumn(barcodeColumn).getCodewords()) {\n                    if (previousRowCodeword != null) {\n                        return (leftToRight ? previousRowCodeword.getEndX() : previousRowCodeword.getStartX()) +\n                            offset *\n                                skippedColumns *\n                                (previousRowCodeword.getEndX() - previousRowCodeword.getStartX());\n                    }\n                }\n                skippedColumns++;\n            }\n            return leftToRight ? detectionResult.getBoundingBox().getMinX() : detectionResult.getBoundingBox().getMaxX();\n        }\n        static detectCodeword(image, minColumn, maxColumn, leftToRight, startColumn, imageRow, minCodewordWidth, maxCodewordWidth) {\n            startColumn = PDF417ScanningDecoder.adjustCodewordStartColumn(image, minColumn, maxColumn, leftToRight, startColumn, imageRow);\n            // we usually know fairly exact now how long a codeword is. We should provide minimum and maximum expected length\n            // and try to adjust the read pixels, e.g. remove single pixel errors or try to cut off exceeding pixels.\n            // min and maxCodewordWidth should not be used as they are calculated for the whole barcode an can be inaccurate\n            // for the current position\n            let moduleBitCount = PDF417ScanningDecoder.getModuleBitCount(image, minColumn, maxColumn, leftToRight, startColumn, imageRow);\n            if (moduleBitCount == null) {\n                return null;\n            }\n            let endColumn;\n            let codewordBitCount = MathUtils.sum(moduleBitCount);\n            if (leftToRight) {\n                endColumn = startColumn + codewordBitCount;\n            }\n            else {\n                for (let i /*int*/ = 0; i < moduleBitCount.length / 2; i++) {\n                    let tmpCount = moduleBitCount[i];\n                    moduleBitCount[i] = moduleBitCount[moduleBitCount.length - 1 - i];\n                    moduleBitCount[moduleBitCount.length - 1 - i] = tmpCount;\n                }\n                endColumn = startColumn;\n                startColumn = endColumn - codewordBitCount;\n            }\n            // TODO implement check for width and correction of black and white bars\n            // use start (and maybe stop pattern) to determine if black bars are wider than white bars. If so, adjust.\n            // should probably done only for codewords with a lot more than 17 bits.\n            // The following fixes 10-1.png, which has wide black bars and small white bars\n            //    for (let i /*int*/ = 0; i < moduleBitCount.length; i++) {\n            //      if (i % 2 === 0) {\n            //        moduleBitCount[i]--;\n            //      } else {\n            //        moduleBitCount[i]++;\n            //      }\n            //    }\n            // We could also use the width of surrounding codewords for more accurate results, but this seems\n            // sufficient for now\n            if (!PDF417ScanningDecoder.checkCodewordSkew(codewordBitCount, minCodewordWidth, maxCodewordWidth)) {\n                // We could try to use the startX and endX position of the codeword in the same column in the previous row,\n                // create the bit count from it and normalize it to 8. This would help with single pixel errors.\n                return null;\n            }\n            let decodedValue = PDF417CodewordDecoder.getDecodedValue(moduleBitCount);\n            let codeword = PDF417Common.getCodeword(decodedValue);\n            if (codeword === -1) {\n                return null;\n            }\n            return new Codeword(startColumn, endColumn, PDF417ScanningDecoder.getCodewordBucketNumber(decodedValue), codeword);\n        }\n        static getModuleBitCount(image, minColumn, maxColumn, leftToRight, startColumn, imageRow) {\n            let imageColumn = startColumn;\n            let moduleBitCount = new Int32Array(8);\n            let moduleNumber = 0;\n            let increment = leftToRight ? 1 : -1;\n            let previousPixelValue = leftToRight;\n            while ((leftToRight ? imageColumn < maxColumn : imageColumn >= minColumn) &&\n                moduleNumber < moduleBitCount.length) {\n                if (image.get(imageColumn, imageRow) === previousPixelValue) {\n                    moduleBitCount[moduleNumber]++;\n                    imageColumn += increment;\n                }\n                else {\n                    moduleNumber++;\n                    previousPixelValue = !previousPixelValue;\n                }\n            }\n            if (moduleNumber === moduleBitCount.length ||\n                ((imageColumn === (leftToRight ? maxColumn : minColumn)) &&\n                    moduleNumber === moduleBitCount.length - 1)) {\n                return moduleBitCount;\n            }\n            return null;\n        }\n        static getNumberOfECCodeWords(barcodeECLevel) {\n            return 2 << barcodeECLevel;\n        }\n        static adjustCodewordStartColumn(image, minColumn, maxColumn, leftToRight, codewordStartColumn, imageRow) {\n            let correctedStartColumn = codewordStartColumn;\n            let increment = leftToRight ? -1 : 1;\n            // there should be no black pixels before the start column. If there are, then we need to start earlier.\n            for (let i /*int*/ = 0; i < 2; i++) {\n                while ((leftToRight ? correctedStartColumn >= minColumn : correctedStartColumn < maxColumn) &&\n                    leftToRight === image.get(correctedStartColumn, imageRow)) {\n                    if (Math.abs(codewordStartColumn - correctedStartColumn) > PDF417ScanningDecoder.CODEWORD_SKEW_SIZE) {\n                        return codewordStartColumn;\n                    }\n                    correctedStartColumn += increment;\n                }\n                increment = -increment;\n                leftToRight = !leftToRight;\n            }\n            return correctedStartColumn;\n        }\n        static checkCodewordSkew(codewordSize, minCodewordWidth, maxCodewordWidth) {\n            return minCodewordWidth - PDF417ScanningDecoder.CODEWORD_SKEW_SIZE <= codewordSize &&\n                codewordSize <= maxCodewordWidth + PDF417ScanningDecoder.CODEWORD_SKEW_SIZE;\n        }\n        /**\n         * @throws FormatException,\n         * @throws ChecksumException\n         */\n        static decodeCodewords(codewords, ecLevel, erasures) {\n            if (codewords.length === 0) {\n                throw FormatException.getFormatInstance();\n            }\n            let numECCodewords = 1 << (ecLevel + 1);\n            let correctedErrorsCount = PDF417ScanningDecoder.correctErrors(codewords, erasures, numECCodewords);\n            PDF417ScanningDecoder.verifyCodewordCount(codewords, numECCodewords);\n            // Decode the codewords\n            let decoderResult = DecodedBitStreamParser$2.decode(codewords, '' + ecLevel);\n            decoderResult.setErrorsCorrected(correctedErrorsCount);\n            decoderResult.setErasures(erasures.length);\n            return decoderResult;\n        }\n        /**\n         * <p>Given data and error-correction codewords received, possibly corrupted by errors, attempts to\n         * correct the errors in-place.</p>\n         *\n         * @param codewords   data and error correction codewords\n         * @param erasures positions of any known erasures\n         * @param numECCodewords number of error correction codewords that are available in codewords\n         * @throws ChecksumException if error correction fails\n         */\n        static correctErrors(codewords, erasures, numECCodewords) {\n            if (erasures != null &&\n                erasures.length > numECCodewords / 2 + PDF417ScanningDecoder.MAX_ERRORS ||\n                numECCodewords < 0 ||\n                numECCodewords > PDF417ScanningDecoder.MAX_EC_CODEWORDS) {\n                // Too many errors or EC Codewords is corrupted\n                throw ChecksumException.getChecksumInstance();\n            }\n            return PDF417ScanningDecoder.errorCorrection.decode(codewords, numECCodewords, erasures);\n        }\n        /**\n         * Verify that all is OK with the codeword array.\n         * @throws FormatException\n         */\n        static verifyCodewordCount(codewords, numECCodewords) {\n            if (codewords.length < 4) {\n                // Codeword array size should be at least 4 allowing for\n                // Count CW, At least one Data CW, Error Correction CW, Error Correction CW\n                throw FormatException.getFormatInstance();\n            }\n            // The first codeword, the Symbol Length Descriptor, shall always encode the total number of data\n            // codewords in the symbol, including the Symbol Length Descriptor itself, data codewords and pad\n            // codewords, but excluding the number of error correction codewords.\n            let numberOfCodewords = codewords[0];\n            if (numberOfCodewords > codewords.length) {\n                throw FormatException.getFormatInstance();\n            }\n            if (numberOfCodewords === 0) {\n                // Reset to the length of the array - 8 (Allow for at least level 3 Error Correction (8 Error Codewords)\n                if (numECCodewords < codewords.length) {\n                    codewords[0] = codewords.length - numECCodewords;\n                }\n                else {\n                    throw FormatException.getFormatInstance();\n                }\n            }\n        }\n        static getBitCountForCodeword(codeword) {\n            let result = new Int32Array(8);\n            let previousValue = 0;\n            let i = result.length - 1;\n            while (true) {\n                if ((codeword & 0x1) !== previousValue) {\n                    previousValue = codeword & 0x1;\n                    i--;\n                    if (i < 0) {\n                        break;\n                    }\n                }\n                result[i]++;\n                codeword >>= 1;\n            }\n            return result;\n        }\n        static getCodewordBucketNumber(codeword) {\n            if (codeword instanceof Int32Array) {\n                return this.getCodewordBucketNumber_Int32Array(codeword);\n            }\n            return this.getCodewordBucketNumber_number(codeword);\n        }\n        static getCodewordBucketNumber_number(codeword) {\n            return PDF417ScanningDecoder.getCodewordBucketNumber(PDF417ScanningDecoder.getBitCountForCodeword(codeword));\n        }\n        static getCodewordBucketNumber_Int32Array(moduleBitCount) {\n            return (moduleBitCount[0] - moduleBitCount[2] + moduleBitCount[4] - moduleBitCount[6] + 9) % 9;\n        }\n        static toString(barcodeMatrix) {\n            let formatter = new Formatter();\n            // try (let formatter = new Formatter()) {\n            for (let row /*int*/ = 0; row < barcodeMatrix.length; row++) {\n                formatter.format('Row %2d: ', row);\n                for (let column /*int*/ = 0; column < barcodeMatrix[row].length; column++) {\n                    let barcodeValue = barcodeMatrix[row][column];\n                    if (barcodeValue.getValue().length === 0) {\n                        formatter.format('        ', null);\n                    }\n                    else {\n                        formatter.format('%4d(%2d)', barcodeValue.getValue()[0], barcodeValue.getConfidence(barcodeValue.getValue()[0]));\n                    }\n                }\n                formatter.format('%n');\n            }\n            return formatter.toString();\n            // }\n        }\n    }\n    /*final*/ PDF417ScanningDecoder.CODEWORD_SKEW_SIZE = 2;\n    /*final*/ PDF417ScanningDecoder.MAX_ERRORS = 3;\n    /*final*/ PDF417ScanningDecoder.MAX_EC_CODEWORDS = 512;\n    /*final*/ PDF417ScanningDecoder.errorCorrection = new ErrorCorrection();\n\n    /*\n     * Copyright 2009 ZXing authors\n     *\n     * Licensed under the Apache License, Version 2.0 (the \"License\");\n     * you may not use this file except in compliance with the License.\n     * You may obtain a copy of the License at\n     *\n     *      http://www.apache.org/licenses/LICENSE-2.0\n     *\n     * Unless required by applicable law or agreed to in writing, software\n     * distributed under the License is distributed on an \"AS IS\" BASIS,\n     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n     * See the License for the specific language governing permissions and\n     * limitations under the License.\n     */\n    // import java.util.ArrayList;\n    // import java.util.List;\n    // import java.util.Map;\n    /**\n     * This implementation can detect and decode PDF417 codes in an image.\n     *\n     * @author Guenther Grau\n     */\n    /*public final*/ class PDF417Reader {\n        // private static /*final Result[]*/ EMPTY_RESULT_ARRAY: Result[] = new Result([0]);\n        /**\n         * Locates and decodes a PDF417 code in an image.\n         *\n         * @return a String representing the content encoded by the PDF417 code\n         * @throws NotFoundException if a PDF417 code cannot be found,\n         * @throws FormatException if a PDF417 cannot be decoded\n         * @throws ChecksumException\n         */\n        // @Override\n        decode(image, hints = null) {\n            let result = PDF417Reader.decode(image, hints, false);\n            if (result == null || result.length === 0 || result[0] == null) {\n                throw NotFoundException.getNotFoundInstance();\n            }\n            return result[0];\n        }\n        /**\n         *\n         * @param BinaryBitmap\n         * @param image\n         * @throws NotFoundException\n         */\n        //   @Override\n        decodeMultiple(image, hints = null) {\n            try {\n                return PDF417Reader.decode(image, hints, true);\n            }\n            catch (ignored) {\n                if (ignored instanceof FormatException || ignored instanceof ChecksumException) {\n                    throw NotFoundException.getNotFoundInstance();\n                }\n                throw ignored;\n            }\n        }\n        /**\n         *\n         * @param image\n         * @param hints\n         * @param multiple\n         *\n         * @throws NotFoundException\n         * @throws FormatException\u00DF\n         * @throws ChecksumException\n         */\n        static decode(image, hints, multiple) {\n            const results = new Array();\n            const detectorResult = Detector$3.detectMultiple(image, hints, multiple);\n            for (const points of detectorResult.getPoints()) {\n                const decoderResult = PDF417ScanningDecoder.decode(detectorResult.getBits(), points[4], points[5], points[6], points[7], PDF417Reader.getMinCodewordWidth(points), PDF417Reader.getMaxCodewordWidth(points));\n                const result = new Result(decoderResult.getText(), decoderResult.getRawBytes(), undefined, points, BarcodeFormat$1.PDF_417);\n                result.putMetadata(ResultMetadataType$1.ERROR_CORRECTION_LEVEL, decoderResult.getECLevel());\n                const pdf417ResultMetadata = decoderResult.getOther();\n                if (pdf417ResultMetadata != null) {\n                    result.putMetadata(ResultMetadataType$1.PDF417_EXTRA_METADATA, pdf417ResultMetadata);\n                }\n                results.push(result);\n            }\n            return results.map(x => x);\n        }\n        static getMaxWidth(p1, p2) {\n            if (p1 == null || p2 == null) {\n                return 0;\n            }\n            return Math.trunc(Math.abs(p1.getX() - p2.getX()));\n        }\n        static getMinWidth(p1, p2) {\n            if (p1 == null || p2 == null) {\n                return Integer.MAX_VALUE;\n            }\n            return Math.trunc(Math.abs(p1.getX() - p2.getX()));\n        }\n        static getMaxCodewordWidth(p) {\n            return Math.floor(Math.max(Math.max(PDF417Reader.getMaxWidth(p[0], p[4]), PDF417Reader.getMaxWidth(p[6], p[2]) * PDF417Common.MODULES_IN_CODEWORD /\n                PDF417Common.MODULES_IN_STOP_PATTERN), Math.max(PDF417Reader.getMaxWidth(p[1], p[5]), PDF417Reader.getMaxWidth(p[7], p[3]) * PDF417Common.MODULES_IN_CODEWORD /\n                PDF417Common.MODULES_IN_STOP_PATTERN)));\n        }\n        static getMinCodewordWidth(p) {\n            return Math.floor(Math.min(Math.min(PDF417Reader.getMinWidth(p[0], p[4]), PDF417Reader.getMinWidth(p[6], p[2]) * PDF417Common.MODULES_IN_CODEWORD /\n                PDF417Common.MODULES_IN_STOP_PATTERN), Math.min(PDF417Reader.getMinWidth(p[1], p[5]), PDF417Reader.getMinWidth(p[7], p[3]) * PDF417Common.MODULES_IN_CODEWORD /\n                PDF417Common.MODULES_IN_STOP_PATTERN)));\n        }\n        // @Override\n        reset() {\n            // nothing needs to be reset\n        }\n    }\n\n    /**\n     * Custom Error class of type Exception.\n     */\n    class ReaderException extends Exception {\n    }\n    ReaderException.kind = 'ReaderException';\n\n    /*\n     * Copyright 2009 ZXing authors\n     *\n     * Licensed under the Apache License, Version 2.0 (the \"License\");\n     * you may not use this file except in compliance with the License.\n     * You may obtain a copy of the License at\n     *\n     *      http://www.apache.org/licenses/LICENSE-2.0\n     *\n     * Unless required by applicable law or agreed to in writing, software\n     * distributed under the License is distributed on an \"AS IS\" BASIS,\n     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n     * See the License for the specific language governing permissions and\n     * limitations under the License.\n     */\n    /*namespace com.google.zxing {*/\n    /**\n     * MultiFormatReader is a convenience class and the main entry point into the library for most uses.\n     * By default it attempts to decode all barcode formats that the library supports. Optionally, you\n     * can provide a hints object to request different behavior, for example only decoding QR codes.\n     *\n     * @author Sean Owen\n     * @author dswitkin@google.com (Daniel Switkin)\n     */\n    class MultiFormatReader {\n        /**\n         * Creates an instance of this class\n         * \n         * @param {Boolean} verbose if 'true' logs will be dumped to console, otherwise hidden.\n         * @param hints The hints to use, clearing the previous state.\n         */\n        constructor(verbose, hints) {\n            this.verbose = (verbose === true);\n            if (hints) {\n                this.setHints(hints);\n            }\n        }\n        /**\n         * This version of decode honors the intent of Reader.decode(BinaryBitmap) in that it\n         * passes null as a hint to the decoders. However, that makes it inefficient to call repeatedly.\n         * Use setHints() followed by decodeWithState() for continuous scan applications.\n         *\n         * @param image The pixel data to decode\n         * @return The contents of the image\n         *\n         * @throws NotFoundException Any errors which occurred\n         */\n        /*@Override*/\n        // public decode(image: BinaryBitmap): Result {\n        //   setHints(null)\n        //   return decodeInternal(image)\n        // }\n        /**\n         * Decode an image using the hints provided. Does not honor existing state.\n         *\n         * @param image The pixel data to decode\n         * @param hints The hints to use, clearing the previous state.\n         * @return The contents of the image\n         *\n         * @throws NotFoundException Any errors which occurred\n         */\n        /*@Override*/\n        decode(image, hints) {\n            if (hints) {\n                this.setHints(hints);\n            }\n            return this.decodeInternal(image);\n        }\n        /**\n         * Decode an image using the state set up by calling setHints() previously. Continuous scan\n         * clients will get a <b>large</b> speed increase by using this instead of decode().\n         *\n         * @param image The pixel data to decode\n         * @return The contents of the image\n         *\n         * @throws NotFoundException Any errors which occurred\n         */\n        decodeWithState(image) {\n            // Make sure to set up the default state so we don't crash\n            if (this.readers === null || this.readers === undefined) {\n                this.setHints(null);\n            }\n            return this.decodeInternal(image);\n        }\n        /**\n         * This method adds state to the MultiFormatReader. By setting the hints once, subsequent calls\n         * to decodeWithState(image) can reuse the same set of readers without reallocating memory. This\n         * is important for performance in continuous scan clients.\n         *\n         * @param hints The set of hints to use for subsequent calls to decode(image)\n         */\n        setHints(hints) {\n            this.hints = hints;\n            const tryHarder = !isNullOrUndefined(hints)\n                && hints.get(DecodeHintType$1.TRY_HARDER) === true;\n            const formats = isNullOrUndefined(hints) ? null : hints.get(DecodeHintType$1.POSSIBLE_FORMATS);\n            const readers = new Array();\n            if (!isNullOrUndefined(formats)) {\n                const addOneDReader = formats.some(f => {\n                    return (\n                        f === BarcodeFormat$1.UPC_A ||\n                        f === BarcodeFormat$1.UPC_E ||\n                        f === BarcodeFormat$1.EAN_13 ||\n                        f === BarcodeFormat$1.EAN_8 ||\n                        f === BarcodeFormat$1.CODABAR ||\n                        f === BarcodeFormat$1.CODE_39 ||\n                        f === BarcodeFormat$1.CODE_93 ||\n                        f === BarcodeFormat$1.CODE_128 ||\n                        f === BarcodeFormat$1.ITF ||\n                        f === BarcodeFormat$1.RSS_14 ||\n                        f === BarcodeFormat$1.RSS_EXPANDED);\n                });\n                // Put 1D readers upfront in \"normal\" mode\n                if (addOneDReader && !tryHarder) {\n                    readers.push(new MultiFormatOneDReader(hints, this.verbose));\n                }\n                if (formats.includes(BarcodeFormat$1.QR_CODE)) {\n                    readers.push(new QRCodeReader());\n                }\n                if (formats.includes(BarcodeFormat$1.DATA_MATRIX)) {\n                    readers.push(new DataMatrixReader());\n                }\n                if (formats.includes(BarcodeFormat$1.AZTEC)) {\n                    readers.push(new AztecReader());\n                }\n                if (formats.includes(BarcodeFormat$1.PDF_417)) {\n                    readers.push(new PDF417Reader());\n                }\n                // if (formats.includes(BarcodeFormat.MAXICODE)) {\n                //    readers.push(new MaxiCodeReader())\n                // }\n                // At end in \"try harder\" mode\n                if (addOneDReader && tryHarder) {\n                    readers.push(new MultiFormatOneDReader(hints, this.verbose));\n                }\n            }\n            if (readers.length === 0) {\n                if (!tryHarder) {\n                    readers.push(new MultiFormatOneDReader(hints, this.verbose));\n                }\n                readers.push(new QRCodeReader());\n                readers.push(new DataMatrixReader());\n                readers.push(new AztecReader());\n                readers.push(new PDF417Reader());\n                // readers.push(new MaxiCodeReader())\n                if (tryHarder) {\n                    readers.push(new MultiFormatOneDReader(hints, this.verbose));\n                }\n            }\n            this.readers = readers; // .toArray(new Reader[readers.size()])\n        }\n        /*@Override*/\n        reset() {\n            if (this.readers !== null) {\n                for (const reader of this.readers) {\n                    reader.reset();\n                }\n            }\n        }\n        /**\n         * @throws NotFoundException\n         */\n        decodeInternal(image) {\n            if (this.readers === null) {\n                throw new ReaderException('No readers where selected, nothing can be read.');\n            }\n            for (const reader of this.readers) {\n                // Trying to decode with ${reader} reader.\n                try {\n                    return reader.decode(image, this.hints);\n                }\n                catch (ex) {\n                    if (ex instanceof ReaderException) {\n                        continue;\n                    }\n                    // Bad Exception.\n                }\n            }\n            throw new NotFoundException('No MultiFormat Readers were able to detect the code.');\n        }\n    }\n\n    class BrowserMultiFormatReader extends BrowserCodeReader {\n        constructor(hints = null, timeBetweenScansMillis = 500) {\n            const reader = new MultiFormatReader();\n            reader.setHints(hints);\n            super(reader, timeBetweenScansMillis);\n        }\n        /**\n         * Overwrite decodeBitmap to call decodeWithState, which will pay\n         * attention to the hints set in the constructor function\n         */\n        decodeBitmap(binaryBitmap) {\n            return this.reader.decodeWithState(binaryBitmap);\n        }\n    }\n\n    /**\n     * @deprecated Moving to @zxing/browser\n     *\n     * QR Code reader to use from browser.\n     */\n    class BrowserPDF417Reader extends BrowserCodeReader {\n        /**\n         * Creates an instance of BrowserPDF417Reader.\n         * @param {number} [timeBetweenScansMillis=500] the time delay between subsequent decode tries\n         */\n        constructor(timeBetweenScansMillis = 500) {\n            super(new PDF417Reader(), timeBetweenScansMillis);\n        }\n    }\n\n    /**\n     * @deprecated Moving to @zxing/browser\n     *\n     * QR Code reader to use from browser.\n     */\n    class BrowserQRCodeReader extends BrowserCodeReader {\n        /**\n         * Creates an instance of BrowserQRCodeReader.\n         * @param {number} [timeBetweenScansMillis=500] the time delay between subsequent decode tries\n         */\n        constructor(timeBetweenScansMillis = 500) {\n            super(new QRCodeReader(), timeBetweenScansMillis);\n        }\n    }\n\n    /*\n     * Copyright 2009 ZXing authors\n     *\n     * Licensed under the Apache License, Version 2.0 (the \"License\");\n     * you may not use this file except in compliance with the License.\n     * You may obtain a copy of the License at\n     *\n     *      http://www.apache.org/licenses/LICENSE-2.0\n     *\n     * Unless required by applicable law or agreed to in writing, software\n     * distributed under the License is distributed on an \"AS IS\" BASIS,\n     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n     * See the License for the specific language governing permissions and\n     * limitations under the License.\n     */\n    /*namespace com.google.zxing {*/\n    /**\n     * These are a set of hints that you may pass to Writers to specify their behavior.\n     *\n     * @author dswitkin@google.com (Daniel Switkin)\n     */\n    var EncodeHintType;\n    (function (EncodeHintType) {\n        /**\n         * Specifies what degree of error correction to use, for example in QR Codes.\n         * Type depends on the encoder. For example for QR codes it's type\n         * {@link com.google.zxing.qrcode.decoder.ErrorCorrectionLevel ErrorCorrectionLevel}.\n         * For Aztec it is of type {@link Integer}, representing the minimal percentage of error correction words.\n         * For PDF417 it is of type {@link Integer}, valid values being 0 to 8.\n         * In all cases, it can also be a {@link String} representation of the desired value as well.\n         * Note: an Aztec symbol should have a minimum of 25% EC words.\n         */\n        EncodeHintType[EncodeHintType[\"ERROR_CORRECTION\"] = 0] = \"ERROR_CORRECTION\";\n        /**\n         * Specifies what character encoding to use where applicable (type {@link String})\n         */\n        EncodeHintType[EncodeHintType[\"CHARACTER_SET\"] = 1] = \"CHARACTER_SET\";\n        /**\n         * Specifies the matrix shape for Data Matrix (type {@link com.google.zxing.datamatrix.encoder.SymbolShapeHint})\n         */\n        EncodeHintType[EncodeHintType[\"DATA_MATRIX_SHAPE\"] = 2] = \"DATA_MATRIX_SHAPE\";\n        /**\n         * Specifies a minimum barcode size (type {@link Dimension}). Only applicable to Data Matrix now.\n         *\n         * @deprecated use width/height params in\n         * {@link com.google.zxing.datamatrix.DataMatrixWriter#encode(String, BarcodeFormat, int, int)}\n         */\n        /*@Deprecated*/\n        EncodeHintType[EncodeHintType[\"MIN_SIZE\"] = 3] = \"MIN_SIZE\";\n        /**\n         * Specifies a maximum barcode size (type {@link Dimension}). Only applicable to Data Matrix now.\n         *\n         * @deprecated without replacement\n         */\n        /*@Deprecated*/\n        EncodeHintType[EncodeHintType[\"MAX_SIZE\"] = 4] = \"MAX_SIZE\";\n        /**\n         * Specifies margin, in pixels, to use when generating the barcode. The meaning can vary\n         * by format; for example it controls margin before and after the barcode horizontally for\n         * most 1D formats. (Type {@link Integer}, or {@link String} representation of the integer value).\n         */\n        EncodeHintType[EncodeHintType[\"MARGIN\"] = 5] = \"MARGIN\";\n        /**\n         * Specifies whether to use compact mode for PDF417 (type {@link Boolean}, or \"true\" or \"false\"\n         * {@link String} value).\n         */\n        EncodeHintType[EncodeHintType[\"PDF417_COMPACT\"] = 6] = \"PDF417_COMPACT\";\n        /**\n         * Specifies what compaction mode to use for PDF417 (type\n         * {@link com.google.zxing.pdf417.encoder.Compaction Compaction} or {@link String} value of one of its\n         * enum values).\n         */\n        EncodeHintType[EncodeHintType[\"PDF417_COMPACTION\"] = 7] = \"PDF417_COMPACTION\";\n        /**\n         * Specifies the minimum and maximum number of rows and columns for PDF417 (type\n         * {@link com.google.zxing.pdf417.encoder.Dimensions Dimensions}).\n         */\n        EncodeHintType[EncodeHintType[\"PDF417_DIMENSIONS\"] = 8] = \"PDF417_DIMENSIONS\";\n        /**\n         * Specifies the required number of layers for an Aztec code.\n         * A negative number (-1, -2, -3, -4) specifies a compact Aztec code.\n         * 0 indicates to use the minimum number of layers (the default).\n         * A positive number (1, 2, .. 32) specifies a normal (non-compact) Aztec code.\n         * (Type {@link Integer}, or {@link String} representation of the integer value).\n         */\n        EncodeHintType[EncodeHintType[\"AZTEC_LAYERS\"] = 9] = \"AZTEC_LAYERS\";\n        /**\n         * Specifies the exact version of QR code to be encoded.\n         * (Type {@link Integer}, or {@link String} representation of the integer value).\n         */\n        EncodeHintType[EncodeHintType[\"QR_VERSION\"] = 10] = \"QR_VERSION\";\n    })(EncodeHintType || (EncodeHintType = {}));\n    var EncodeHintType$1 = EncodeHintType;\n\n    /**\n     * <p>Implements Reed-Solomon encoding, as the name implies.</p>\n     *\n     * @author Sean Owen\n     * @author William Rucklidge\n     */\n    class ReedSolomonEncoder {\n        /**\n         * A reed solomon error-correcting encoding constructor is created by\n         * passing as Galois Field with of size equal to the number of code\n         * words (symbols) in the alphabet (the number of values in each\n         * element of arrays that are encoded/decoded).\n         * @param field A galois field with a number of elements equal to the size\n         * of the alphabet of symbols to encode.\n         */\n        constructor(field) {\n            this.field = field;\n            this.cachedGenerators = [];\n            this.cachedGenerators.push(new GenericGFPoly(field, Int32Array.from([1])));\n        }\n        buildGenerator(degree /*int*/) {\n            const cachedGenerators = this.cachedGenerators;\n            if (degree >= cachedGenerators.length) {\n                let lastGenerator = cachedGenerators[cachedGenerators.length - 1];\n                const field = this.field;\n                for (let d = cachedGenerators.length; d <= degree; d++) {\n                    const nextGenerator = lastGenerator.multiply(new GenericGFPoly(field, Int32Array.from([1, field.exp(d - 1 + field.getGeneratorBase())])));\n                    cachedGenerators.push(nextGenerator);\n                    lastGenerator = nextGenerator;\n                }\n            }\n            return cachedGenerators[degree];\n        }\n        /**\n         * <p>Encode a sequence of code words (symbols) using Reed-Solomon to allow decoders\n         * to detect and correct errors that may have been introduced when the resulting\n         * data is stored or transmitted.</p>\n         *\n         * @param toEncode array used for both and output. Caller initializes the array with\n         * the code words (symbols) to be encoded followed by empty elements allocated to make\n         * space for error-correction code words in the encoded output. The array contains\n         * the encdoded output when encode returns. Code words are encoded as numbers from\n         * 0 to n-1, where n is the number of possible code words (symbols), as determined\n         * by the size of the Galois Field passed in the constructor of this object.\n         * @param ecBytes the number of elements reserved in the array (first parameter)\n         * to store error-correction code words. Thus, the number of code words (symbols)\n         * to encode in the first parameter is thus toEncode.length - ecBytes.\n         * Note, the use of \"bytes\" in the name of this parameter is misleading, as there may\n         * be more or fewer than 256 symbols being encoded, as determined by the number of\n         * elements in the Galois Field passed as a constructor to this object.\n         * @throws IllegalArgumentException thrown in response to validation errros.\n         */\n        encode(toEncode, ecBytes /*int*/) {\n            if (ecBytes === 0) {\n                throw new IllegalArgumentException('No error correction bytes');\n            }\n            const dataBytes = toEncode.length - ecBytes;\n            if (dataBytes <= 0) {\n                throw new IllegalArgumentException('No data bytes provided');\n            }\n            const generator = this.buildGenerator(ecBytes);\n            const infoCoefficients = new Int32Array(dataBytes);\n            System.arraycopy(toEncode, 0, infoCoefficients, 0, dataBytes);\n            let info = new GenericGFPoly(this.field, infoCoefficients);\n            info = info.multiplyByMonomial(ecBytes, 1);\n            const remainder = info.divide(generator)[1];\n            const coefficients = remainder.getCoefficients();\n            const numZeroCoefficients = ecBytes - coefficients.length;\n            for (let i = 0; i < numZeroCoefficients; i++) {\n                toEncode[dataBytes + i] = 0;\n            }\n            System.arraycopy(coefficients, 0, toEncode, dataBytes + numZeroCoefficients, coefficients.length);\n        }\n    }\n\n    /**\n     * @author Satoru Takabayashi\n     * @author Daniel Switkin\n     * @author Sean Owen\n     */\n    class MaskUtil {\n        constructor() {\n            // do nothing\n        }\n        /**\n         * Apply mask penalty rule 1 and return the penalty. Find repetitive cells with the same color and\n         * give penalty to them. Example: 00000 or 11111.\n         */\n        static applyMaskPenaltyRule1(matrix) {\n            return MaskUtil.applyMaskPenaltyRule1Internal(matrix, true) + MaskUtil.applyMaskPenaltyRule1Internal(matrix, false);\n        }\n        /**\n         * Apply mask penalty rule 2 and return the penalty. Find 2x2 blocks with the same color and give\n         * penalty to them. This is actually equivalent to the spec's rule, which is to find MxN blocks and give a\n         * penalty proportional to (M-1)x(N-1), because this is the number of 2x2 blocks inside such a block.\n         */\n        static applyMaskPenaltyRule2(matrix) {\n            let penalty = 0;\n            const array = matrix.getArray();\n            const width = matrix.getWidth();\n            const height = matrix.getHeight();\n            for (let y = 0; y < height - 1; y++) {\n                const arrayY = array[y];\n                for (let x = 0; x < width - 1; x++) {\n                    const value = arrayY[x];\n                    if (value === arrayY[x + 1] && value === array[y + 1][x] && value === array[y + 1][x + 1]) {\n                        penalty++;\n                    }\n                }\n            }\n            return MaskUtil.N2 * penalty;\n        }\n        /**\n         * Apply mask penalty rule 3 and return the penalty. Find consecutive runs of 1:1:3:1:1:4\n         * starting with black, or 4:1:1:3:1:1 starting with white, and give penalty to them.  If we\n         * find patterns like 000010111010000, we give penalty once.\n         */\n        static applyMaskPenaltyRule3(matrix) {\n            let numPenalties = 0;\n            const array = matrix.getArray();\n            const width = matrix.getWidth();\n            const height = matrix.getHeight();\n            for (let y = 0; y < height; y++) {\n                for (let x = 0; x < width; x++) {\n                    const arrayY = array[y]; // We can at least optimize this access\n                    if (x + 6 < width &&\n                        arrayY[x] === 1 &&\n                        arrayY[x + 1] === 0 &&\n                        arrayY[x + 2] === 1 &&\n                        arrayY[x + 3] === 1 &&\n                        arrayY[x + 4] === 1 &&\n                        arrayY[x + 5] === 0 &&\n                        arrayY[x + 6] === 1 &&\n                        (MaskUtil.isWhiteHorizontal(arrayY, x - 4, x) || MaskUtil.isWhiteHorizontal(arrayY, x + 7, x + 11))) {\n                        numPenalties++;\n                    }\n                    if (y + 6 < height &&\n                        array[y][x] === 1 &&\n                        array[y + 1][x] === 0 &&\n                        array[y + 2][x] === 1 &&\n                        array[y + 3][x] === 1 &&\n                        array[y + 4][x] === 1 &&\n                        array[y + 5][x] === 0 &&\n                        array[y + 6][x] === 1 &&\n                        (MaskUtil.isWhiteVertical(array, x, y - 4, y) || MaskUtil.isWhiteVertical(array, x, y + 7, y + 11))) {\n                        numPenalties++;\n                    }\n                }\n            }\n            return numPenalties * MaskUtil.N3;\n        }\n        static isWhiteHorizontal(rowArray, from /*int*/, to /*int*/) {\n            from = Math.max(from, 0);\n            to = Math.min(to, rowArray.length);\n            for (let i = from; i < to; i++) {\n                if (rowArray[i] === 1) {\n                    return false;\n                }\n            }\n            return true;\n        }\n        static isWhiteVertical(array, col /*int*/, from /*int*/, to /*int*/) {\n            from = Math.max(from, 0);\n            to = Math.min(to, array.length);\n            for (let i = from; i < to; i++) {\n                if (array[i][col] === 1) {\n                    return false;\n                }\n            }\n            return true;\n        }\n        /**\n         * Apply mask penalty rule 4 and return the penalty. Calculate the ratio of dark cells and give\n         * penalty if the ratio is far from 50%. It gives 10 penalty for 5% distance.\n         */\n        static applyMaskPenaltyRule4(matrix) {\n            let numDarkCells = 0;\n            const array = matrix.getArray();\n            const width = matrix.getWidth();\n            const height = matrix.getHeight();\n            for (let y = 0; y < height; y++) {\n                const arrayY = array[y];\n                for (let x = 0; x < width; x++) {\n                    if (arrayY[x] === 1) {\n                        numDarkCells++;\n                    }\n                }\n            }\n            const numTotalCells = matrix.getHeight() * matrix.getWidth();\n            const fivePercentVariances = Math.floor(Math.abs(numDarkCells * 2 - numTotalCells) * 10 / numTotalCells);\n            return fivePercentVariances * MaskUtil.N4;\n        }\n        /**\n         * Return the mask bit for \"getMaskPattern\" at \"x\" and \"y\". See 8.8 of JISX0510:2004 for mask\n         * pattern conditions.\n         */\n        static getDataMaskBit(maskPattern /*int*/, x /*int*/, y /*int*/) {\n            let intermediate; /*int*/\n            let temp; /*int*/\n            switch (maskPattern) {\n                case 0:\n                    intermediate = (y + x) & 0x1;\n                    break;\n                case 1:\n                    intermediate = y & 0x1;\n                    break;\n                case 2:\n                    intermediate = x % 3;\n                    break;\n                case 3:\n                    intermediate = (y + x) % 3;\n                    break;\n                case 4:\n                    intermediate = (Math.floor(y / 2) + Math.floor(x / 3)) & 0x1;\n                    break;\n                case 5:\n                    temp = y * x;\n                    intermediate = (temp & 0x1) + (temp % 3);\n                    break;\n                case 6:\n                    temp = y * x;\n                    intermediate = ((temp & 0x1) + (temp % 3)) & 0x1;\n                    break;\n                case 7:\n                    temp = y * x;\n                    intermediate = ((temp % 3) + ((y + x) & 0x1)) & 0x1;\n                    break;\n                default:\n                    throw new IllegalArgumentException('Invalid mask pattern: ' + maskPattern);\n            }\n            return intermediate === 0;\n        }\n        /**\n         * Helper function for applyMaskPenaltyRule1. We need this for doing this calculation in both\n         * vertical and horizontal orders respectively.\n         */\n        static applyMaskPenaltyRule1Internal(matrix, isHorizontal) {\n            let penalty = 0;\n            const iLimit = isHorizontal ? matrix.getHeight() : matrix.getWidth();\n            const jLimit = isHorizontal ? matrix.getWidth() : matrix.getHeight();\n            const array = matrix.getArray();\n            for (let i = 0; i < iLimit; i++) {\n                let numSameBitCells = 0;\n                let prevBit = -1;\n                for (let j = 0; j < jLimit; j++) {\n                    const bit = isHorizontal ? array[i][j] : array[j][i];\n                    if (bit === prevBit) {\n                        numSameBitCells++;\n                    }\n                    else {\n                        if (numSameBitCells >= 5) {\n                            penalty += MaskUtil.N1 + (numSameBitCells - 5);\n                        }\n                        numSameBitCells = 1; // Include the cell itself.\n                        prevBit = bit;\n                    }\n                }\n                if (numSameBitCells >= 5) {\n                    penalty += MaskUtil.N1 + (numSameBitCells - 5);\n                }\n            }\n            return penalty;\n        }\n    }\n    // Penalty weights from section 6.8.2.1\n    MaskUtil.N1 = 3;\n    MaskUtil.N2 = 3;\n    MaskUtil.N3 = 40;\n    MaskUtil.N4 = 10;\n\n    /**\n     * JAVAPORT: The original code was a 2D array of ints, but since it only ever gets assigned\n     * -1, 0, and 1, I'm going to use less memory and go with bytes.\n     *\n     * @author dswitkin@google.com (Daniel Switkin)\n     */\n    class ByteMatrix {\n        constructor(width /*int*/, height /*int*/) {\n            this.width = width;\n            this.height = height;\n            const bytes = new Array(height); // [height][width]\n            for (let i = 0; i !== height; i++) {\n                bytes[i] = new Uint8Array(width);\n            }\n            this.bytes = bytes;\n        }\n        getHeight() {\n            return this.height;\n        }\n        getWidth() {\n            return this.width;\n        }\n        get(x /*int*/, y /*int*/) {\n            return this.bytes[y][x];\n        }\n        /**\n         * @return an internal representation as bytes, in row-major order. array[y][x] represents point (x,y)\n         */\n        getArray() {\n            return this.bytes;\n        }\n        // TYPESCRIPTPORT: preffer to let two methods instead of override to avoid type comparison inside\n        setNumber(x /*int*/, y /*int*/, value /*byte|int*/) {\n            this.bytes[y][x] = value;\n        }\n        // public set(x: number /*int*/, y: number /*int*/, value: number /*int*/): void {\n        //   bytes[y][x] = (byte) value\n        // }\n        setBoolean(x /*int*/, y /*int*/, value) {\n            this.bytes[y][x] = /*(byte) */ (value ? 1 : 0);\n        }\n        clear(value /*byte*/) {\n            for (const aByte of this.bytes) {\n                Arrays.fill(aByte, value);\n            }\n        }\n        equals(o) {\n            if (!(o instanceof ByteMatrix)) {\n                return false;\n            }\n            const other = o;\n            if (this.width !== other.width) {\n                return false;\n            }\n            if (this.height !== other.height) {\n                return false;\n            }\n            for (let y = 0, height = this.height; y < height; ++y) {\n                const bytesY = this.bytes[y];\n                const otherBytesY = other.bytes[y];\n                for (let x = 0, width = this.width; x < width; ++x) {\n                    if (bytesY[x] !== otherBytesY[x]) {\n                        return false;\n                    }\n                }\n            }\n            return true;\n        }\n        /*@Override*/\n        toString() {\n            const result = new StringBuilder(); // (2 * width * height + 2)\n            for (let y = 0, height = this.height; y < height; ++y) {\n                const bytesY = this.bytes[y];\n                for (let x = 0, width = this.width; x < width; ++x) {\n                    switch (bytesY[x]) {\n                        case 0:\n                            result.append(' 0');\n                            break;\n                        case 1:\n                            result.append(' 1');\n                            break;\n                        default:\n                            result.append('  ');\n                            break;\n                    }\n                }\n                result.append('\\n');\n            }\n            return result.toString();\n        }\n    }\n\n    /**\n     * @author satorux@google.com (Satoru Takabayashi) - creator\n     * @author dswitkin@google.com (Daniel Switkin) - ported from C++\n     */\n    class QRCode {\n        constructor() {\n            this.maskPattern = -1;\n        }\n        getMode() {\n            return this.mode;\n        }\n        getECLevel() {\n            return this.ecLevel;\n        }\n        getVersion() {\n            return this.version;\n        }\n        getMaskPattern() {\n            return this.maskPattern;\n        }\n        getMatrix() {\n            return this.matrix;\n        }\n        /*@Override*/\n        toString() {\n            const result = new StringBuilder(); // (200)\n            result.append('<<\\n');\n            result.append(' mode: ');\n            result.append(this.mode ? this.mode.toString() : 'null');\n            result.append('\\n ecLevel: ');\n            result.append(this.ecLevel ? this.ecLevel.toString() : 'null');\n            result.append('\\n version: ');\n            result.append(this.version ? this.version.toString() : 'null');\n            result.append('\\n maskPattern: ');\n            result.append(this.maskPattern.toString());\n            if (this.matrix) {\n                result.append('\\n matrix:\\n');\n                result.append(this.matrix.toString());\n            }\n            else {\n                result.append('\\n matrix: null\\n');\n            }\n            result.append('>>\\n');\n            return result.toString();\n        }\n        setMode(value) {\n            this.mode = value;\n        }\n        setECLevel(value) {\n            this.ecLevel = value;\n        }\n        setVersion(version) {\n            this.version = version;\n        }\n        setMaskPattern(value /*int*/) {\n            this.maskPattern = value;\n        }\n        setMatrix(value) {\n            this.matrix = value;\n        }\n        // Check if \"mask_pattern\" is valid.\n        static isValidMaskPattern(maskPattern /*int*/) {\n            return maskPattern >= 0 && maskPattern < QRCode.NUM_MASK_PATTERNS;\n        }\n    }\n    QRCode.NUM_MASK_PATTERNS = 8;\n\n    /**\n     * Custom Error class of type Exception.\n     */\n    class WriterException extends Exception {\n    }\n    WriterException.kind = 'WriterException';\n\n    /**\n     * @author satorux@google.com (Satoru Takabayashi) - creator\n     * @author dswitkin@google.com (Daniel Switkin) - ported from C++\n     */\n    class MatrixUtil {\n        constructor() {\n            // do nothing\n        }\n        // Set all cells to -1 (TYPESCRIPTPORT: 255).  -1 (TYPESCRIPTPORT: 255) means that the cell is empty (not set yet).\n        //\n        // JAVAPORT: We shouldn't need to do this at all. The code should be rewritten to begin encoding\n        // with the ByteMatrix initialized all to zero.\n        static clearMatrix(matrix) {\n            // TYPESCRIPTPORT: we use UintArray se changed here from -1 to 255\n            matrix.clear(/*(byte) */ /*-1*/ 255);\n        }\n        // Build 2D matrix of QR Code from \"dataBits\" with \"ecLevel\", \"version\" and \"getMaskPattern\". On\n        // success, store the result in \"matrix\" and return true.\n        static buildMatrix(dataBits, ecLevel, version, maskPattern /*int*/, matrix) {\n            MatrixUtil.clearMatrix(matrix);\n            MatrixUtil.embedBasicPatterns(version, matrix);\n            // Type information appear with any version.\n            MatrixUtil.embedTypeInfo(ecLevel, maskPattern, matrix);\n            // Version info appear if version >= 7.\n            MatrixUtil.maybeEmbedVersionInfo(version, matrix);\n            // Data should be embedded at end.\n            MatrixUtil.embedDataBits(dataBits, maskPattern, matrix);\n        }\n        // Embed basic patterns. On success, modify the matrix and return true.\n        // The basic patterns are:\n        // - Position detection patterns\n        // - Timing patterns\n        // - Dark dot at the left bottom corner\n        // - Position adjustment patterns, if need be\n        static embedBasicPatterns(version, matrix) {\n            // Let's get started with embedding big squares at corners.\n            MatrixUtil.embedPositionDetectionPatternsAndSeparators(matrix);\n            // Then, embed the dark dot at the left bottom corner.\n            MatrixUtil.embedDarkDotAtLeftBottomCorner(matrix);\n            // Position adjustment patterns appear if version >= 2.\n            MatrixUtil.maybeEmbedPositionAdjustmentPatterns(version, matrix);\n            // Timing patterns should be embedded after position adj. patterns.\n            MatrixUtil.embedTimingPatterns(matrix);\n        }\n        // Embed type information. On success, modify the matrix.\n        static embedTypeInfo(ecLevel, maskPattern /*int*/, matrix) {\n            const typeInfoBits = new BitArray();\n            MatrixUtil.makeTypeInfoBits(ecLevel, maskPattern, typeInfoBits);\n            for (let i = 0, size = typeInfoBits.getSize(); i < size; ++i) {\n                // Place bits in LSB to MSB order.  LSB (least significant bit) is the last value in\n                // \"typeInfoBits\".\n                const bit = typeInfoBits.get(typeInfoBits.getSize() - 1 - i);\n                // Type info bits at the left top corner. See 8.9 of JISX0510:2004 (p.46).\n                const coordinates = MatrixUtil.TYPE_INFO_COORDINATES[i];\n                const x1 = coordinates[0];\n                const y1 = coordinates[1];\n                matrix.setBoolean(x1, y1, bit);\n                if (i < 8) {\n                    // Right top corner.\n                    const x2 = matrix.getWidth() - i - 1;\n                    const y2 = 8;\n                    matrix.setBoolean(x2, y2, bit);\n                }\n                else {\n                    // Left bottom corner.\n                    const x2 = 8;\n                    const y2 = matrix.getHeight() - 7 + (i - 8);\n                    matrix.setBoolean(x2, y2, bit);\n                }\n            }\n        }\n        // Embed version information if need be. On success, modify the matrix and return true.\n        // See 8.10 of JISX0510:2004 (p.47) for how to embed version information.\n        static maybeEmbedVersionInfo(version, matrix) {\n            if (version.getVersionNumber() < 7) { // Version info is necessary if version >= 7.\n                return; // Don't need version info.\n            }\n            const versionInfoBits = new BitArray();\n            MatrixUtil.makeVersionInfoBits(version, versionInfoBits);\n            let bitIndex = 6 * 3 - 1; // It will decrease from 17 to 0.\n            for (let i = 0; i < 6; ++i) {\n                for (let j = 0; j < 3; ++j) {\n                    // Place bits in LSB (least significant bit) to MSB order.\n                    const bit = versionInfoBits.get(bitIndex);\n                    bitIndex--;\n                    // Left bottom corner.\n                    matrix.setBoolean(i, matrix.getHeight() - 11 + j, bit);\n                    // Right bottom corner.\n                    matrix.setBoolean(matrix.getHeight() - 11 + j, i, bit);\n                }\n            }\n        }\n        // Embed \"dataBits\" using \"getMaskPattern\". On success, modify the matrix and return true.\n        // For debugging purposes, it skips masking process if \"getMaskPattern\" is -1(TYPESCRIPTPORT: 255).\n        // See 8.7 of JISX0510:2004 (p.38) for how to embed data bits.\n        static embedDataBits(dataBits, maskPattern /*int*/, matrix) {\n            let bitIndex = 0;\n            let direction = -1;\n            // Start from the right bottom cell.\n            let x = matrix.getWidth() - 1;\n            let y = matrix.getHeight() - 1;\n            while (x > 0) {\n                // Skip the vertical timing pattern.\n                if (x === 6) {\n                    x -= 1;\n                }\n                while (y >= 0 && y < matrix.getHeight()) {\n                    for (let i = 0; i < 2; ++i) {\n                        const xx = x - i;\n                        // Skip the cell if it's not empty.\n                        if (!MatrixUtil.isEmpty(matrix.get(xx, y))) {\n                            continue;\n                        }\n                        let bit;\n                        if (bitIndex < dataBits.getSize()) {\n                            bit = dataBits.get(bitIndex);\n                            ++bitIndex;\n                        }\n                        else {\n                            // Padding bit. If there is no bit left, we'll fill the left cells with 0, as described\n                            // in 8.4.9 of JISX0510:2004 (p. 24).\n                            bit = false;\n                        }\n                        // Skip masking if mask_pattern is -1 (TYPESCRIPTPORT: 255).\n                        if (maskPattern !== 255 && MaskUtil.getDataMaskBit(maskPattern, xx, y)) {\n                            bit = !bit;\n                        }\n                        matrix.setBoolean(xx, y, bit);\n                    }\n                    y += direction;\n                }\n                direction = -direction; // Reverse the direction.\n                y += direction;\n                x -= 2; // Move to the left.\n            }\n            // All bits should be consumed.\n            if (bitIndex !== dataBits.getSize()) {\n                throw new WriterException('Not all bits consumed: ' + bitIndex + '/' + dataBits.getSize());\n            }\n        }\n        // Return the position of the most significant bit set (one: to) in the \"value\". The most\n        // significant bit is position 32. If there is no bit set, return 0. Examples:\n        // - findMSBSet(0) => 0\n        // - findMSBSet(1) => 1\n        // - findMSBSet(255) => 8\n        static findMSBSet(value /*int*/) {\n            return 32 - Integer.numberOfLeadingZeros(value);\n        }\n        // Calculate BCH (Bose-Chaudhuri-Hocquenghem) code for \"value\" using polynomial \"poly\". The BCH\n        // code is used for encoding type information and version information.\n        // Example: Calculation of version information of 7.\n        // f(x) is created from 7.\n        //   - 7 = 000111 in 6 bits\n        //   - f(x) = x^2 + x^1 + x^0\n        // g(x) is given by the standard (p. 67)\n        //   - g(x) = x^12 + x^11 + x^10 + x^9 + x^8 + x^5 + x^2 + 1\n        // Multiply f(x) by x^(18 - 6)\n        //   - f'(x) = f(x) * x^(18 - 6)\n        //   - f'(x) = x^14 + x^13 + x^12\n        // Calculate the remainder of f'(x) / g(x)\n        //         x^2\n        //         __________________________________________________\n        //   g(x) )x^14 + x^13 + x^12\n        //         x^14 + x^13 + x^12 + x^11 + x^10 + x^7 + x^4 + x^2\n        //         --------------------------------------------------\n        //                              x^11 + x^10 + x^7 + x^4 + x^2\n        //\n        // The remainder is x^11 + x^10 + x^7 + x^4 + x^2\n        // Encode it in binary: 110010010100\n        // The return value is 0xc94 (1100 1001 0100)\n        //\n        // Since all coefficients in the polynomials are 1 or 0, we can do the calculation by bit\n        // operations. We don't care if coefficients are positive or negative.\n        static calculateBCHCode(value /*int*/, poly /*int*/) {\n            if (poly === 0) {\n                throw new IllegalArgumentException('0 polynomial');\n            }\n            // If poly is \"1 1111 0010 0101\" (version info poly), msbSetInPoly is 13. We'll subtract 1\n            // from 13 to make it 12.\n            const msbSetInPoly = MatrixUtil.findMSBSet(poly);\n            value <<= msbSetInPoly - 1;\n            // Do the division business using exclusive-or operations.\n            while (MatrixUtil.findMSBSet(value) >= msbSetInPoly) {\n                value ^= poly << (MatrixUtil.findMSBSet(value) - msbSetInPoly);\n            }\n            // Now the \"value\" is the remainder (i.e. the BCH code)\n            return value;\n        }\n        // Make bit vector of type information. On success, store the result in \"bits\" and return true.\n        // Encode error correction level and mask pattern. See 8.9 of\n        // JISX0510:2004 (p.45) for details.\n        static makeTypeInfoBits(ecLevel, maskPattern /*int*/, bits) {\n            if (!QRCode.isValidMaskPattern(maskPattern)) {\n                throw new WriterException('Invalid mask pattern');\n            }\n            const typeInfo = (ecLevel.getBits() << 3) | maskPattern;\n            bits.appendBits(typeInfo, 5);\n            const bchCode = MatrixUtil.calculateBCHCode(typeInfo, MatrixUtil.TYPE_INFO_POLY);\n            bits.appendBits(bchCode, 10);\n            const maskBits = new BitArray();\n            maskBits.appendBits(MatrixUtil.TYPE_INFO_MASK_PATTERN, 15);\n            bits.xor(maskBits);\n            if (bits.getSize() !== 15) { // Just in case.\n                throw new WriterException('should not happen but we got: ' + bits.getSize());\n            }\n        }\n        // Make bit vector of version information. On success, store the result in \"bits\" and return true.\n        // See 8.10 of JISX0510:2004 (p.45) for details.\n        static makeVersionInfoBits(version, bits) {\n            bits.appendBits(version.getVersionNumber(), 6);\n            const bchCode = MatrixUtil.calculateBCHCode(version.getVersionNumber(), MatrixUtil.VERSION_INFO_POLY);\n            bits.appendBits(bchCode, 12);\n            if (bits.getSize() !== 18) { // Just in case.\n                throw new WriterException('should not happen but we got: ' + bits.getSize());\n            }\n        }\n        // Check if \"value\" is empty.\n        static isEmpty(value /*int*/) {\n            return value === 255; // -1\n        }\n        static embedTimingPatterns(matrix) {\n            // -8 is for skipping position detection patterns (7: size), and two horizontal/vertical\n            // separation patterns (1: size). Thus, 8 = 7 + 1.\n            for (let i = 8; i < matrix.getWidth() - 8; ++i) {\n                const bit = (i + 1) % 2;\n                // Horizontal line.\n                if (MatrixUtil.isEmpty(matrix.get(i, 6))) {\n                    matrix.setNumber(i, 6, bit);\n                }\n                // Vertical line.\n                if (MatrixUtil.isEmpty(matrix.get(6, i))) {\n                    matrix.setNumber(6, i, bit);\n                }\n            }\n        }\n        // Embed the lonely dark dot at left bottom corner. JISX0510:2004 (p.46)\n        static embedDarkDotAtLeftBottomCorner(matrix) {\n            if (matrix.get(8, matrix.getHeight() - 8) === 0) {\n                throw new WriterException();\n            }\n            matrix.setNumber(8, matrix.getHeight() - 8, 1);\n        }\n        static embedHorizontalSeparationPattern(xStart /*int*/, yStart /*int*/, matrix) {\n            for (let x = 0; x < 8; ++x) {\n                if (!MatrixUtil.isEmpty(matrix.get(xStart + x, yStart))) {\n                    throw new WriterException();\n                }\n                matrix.setNumber(xStart + x, yStart, 0);\n            }\n        }\n        static embedVerticalSeparationPattern(xStart /*int*/, yStart /*int*/, matrix) {\n            for (let y = 0; y < 7; ++y) {\n                if (!MatrixUtil.isEmpty(matrix.get(xStart, yStart + y))) {\n                    throw new WriterException();\n                }\n                matrix.setNumber(xStart, yStart + y, 0);\n            }\n        }\n        static embedPositionAdjustmentPattern(xStart /*int*/, yStart /*int*/, matrix) {\n            for (let y = 0; y < 5; ++y) {\n                const patternY = MatrixUtil.POSITION_ADJUSTMENT_PATTERN[y];\n                for (let x = 0; x < 5; ++x) {\n                    matrix.setNumber(xStart + x, yStart + y, patternY[x]);\n                }\n            }\n        }\n        static embedPositionDetectionPattern(xStart /*int*/, yStart /*int*/, matrix) {\n            for (let y = 0; y < 7; ++y) {\n                const patternY = MatrixUtil.POSITION_DETECTION_PATTERN[y];\n                for (let x = 0; x < 7; ++x) {\n                    matrix.setNumber(xStart + x, yStart + y, patternY[x]);\n                }\n            }\n        }\n        // Embed position detection patterns and surrounding vertical/horizontal separators.\n        static embedPositionDetectionPatternsAndSeparators(matrix) {\n            // Embed three big squares at corners.\n            const pdpWidth = MatrixUtil.POSITION_DETECTION_PATTERN[0].length;\n            // Left top corner.\n            MatrixUtil.embedPositionDetectionPattern(0, 0, matrix);\n            // Right top corner.\n            MatrixUtil.embedPositionDetectionPattern(matrix.getWidth() - pdpWidth, 0, matrix);\n            // Left bottom corner.\n            MatrixUtil.embedPositionDetectionPattern(0, matrix.getWidth() - pdpWidth, matrix);\n            // Embed horizontal separation patterns around the squares.\n            const hspWidth = 8;\n            // Left top corner.\n            MatrixUtil.embedHorizontalSeparationPattern(0, hspWidth - 1, matrix);\n            // Right top corner.\n            MatrixUtil.embedHorizontalSeparationPattern(matrix.getWidth() - hspWidth, hspWidth - 1, matrix);\n            // Left bottom corner.\n            MatrixUtil.embedHorizontalSeparationPattern(0, matrix.getWidth() - hspWidth, matrix);\n            // Embed vertical separation patterns around the squares.\n            const vspSize = 7;\n            // Left top corner.\n            MatrixUtil.embedVerticalSeparationPattern(vspSize, 0, matrix);\n            // Right top corner.\n            MatrixUtil.embedVerticalSeparationPattern(matrix.getHeight() - vspSize - 1, 0, matrix);\n            // Left bottom corner.\n            MatrixUtil.embedVerticalSeparationPattern(vspSize, matrix.getHeight() - vspSize, matrix);\n        }\n        // Embed position adjustment patterns if need be.\n        static maybeEmbedPositionAdjustmentPatterns(version, matrix) {\n            if (version.getVersionNumber() < 2) { // The patterns appear if version >= 2\n                return;\n            }\n            const index = version.getVersionNumber() - 1;\n            const coordinates = MatrixUtil.POSITION_ADJUSTMENT_PATTERN_COORDINATE_TABLE[index];\n            for (let i = 0, length = coordinates.length; i !== length; i++) {\n                const y = coordinates[i];\n                if (y >= 0) {\n                    for (let j = 0; j !== length; j++) {\n                        const x = coordinates[j];\n                        if (x >= 0 && MatrixUtil.isEmpty(matrix.get(x, y))) {\n                            // If the cell is unset, we embed the position adjustment pattern here.\n                            // -2 is necessary since the x/y coordinates point to the center of the pattern, not the\n                            // left top corner.\n                            MatrixUtil.embedPositionAdjustmentPattern(x - 2, y - 2, matrix);\n                        }\n                    }\n                }\n            }\n        }\n    }\n    MatrixUtil.POSITION_DETECTION_PATTERN = Array.from([\n        Int32Array.from([1, 1, 1, 1, 1, 1, 1]),\n        Int32Array.from([1, 0, 0, 0, 0, 0, 1]),\n        Int32Array.from([1, 0, 1, 1, 1, 0, 1]),\n        Int32Array.from([1, 0, 1, 1, 1, 0, 1]),\n        Int32Array.from([1, 0, 1, 1, 1, 0, 1]),\n        Int32Array.from([1, 0, 0, 0, 0, 0, 1]),\n        Int32Array.from([1, 1, 1, 1, 1, 1, 1]),\n    ]);\n    MatrixUtil.POSITION_ADJUSTMENT_PATTERN = Array.from([\n        Int32Array.from([1, 1, 1, 1, 1]),\n        Int32Array.from([1, 0, 0, 0, 1]),\n        Int32Array.from([1, 0, 1, 0, 1]),\n        Int32Array.from([1, 0, 0, 0, 1]),\n        Int32Array.from([1, 1, 1, 1, 1]),\n    ]);\n    // From Appendix E. Table 1, JIS0510X:2004 (71: p). The table was double-checked by komatsu.\n    MatrixUtil.POSITION_ADJUSTMENT_PATTERN_COORDINATE_TABLE = Array.from([\n        Int32Array.from([-1, -1, -1, -1, -1, -1, -1]),\n        Int32Array.from([6, 18, -1, -1, -1, -1, -1]),\n        Int32Array.from([6, 22, -1, -1, -1, -1, -1]),\n        Int32Array.from([6, 26, -1, -1, -1, -1, -1]),\n        Int32Array.from([6, 30, -1, -1, -1, -1, -1]),\n        Int32Array.from([6, 34, -1, -1, -1, -1, -1]),\n        Int32Array.from([6, 22, 38, -1, -1, -1, -1]),\n        Int32Array.from([6, 24, 42, -1, -1, -1, -1]),\n        Int32Array.from([6, 26, 46, -1, -1, -1, -1]),\n        Int32Array.from([6, 28, 50, -1, -1, -1, -1]),\n        Int32Array.from([6, 30, 54, -1, -1, -1, -1]),\n        Int32Array.from([6, 32, 58, -1, -1, -1, -1]),\n        Int32Array.from([6, 34, 62, -1, -1, -1, -1]),\n        Int32Array.from([6, 26, 46, 66, -1, -1, -1]),\n        Int32Array.from([6, 26, 48, 70, -1, -1, -1]),\n        Int32Array.from([6, 26, 50, 74, -1, -1, -1]),\n        Int32Array.from([6, 30, 54, 78, -1, -1, -1]),\n        Int32Array.from([6, 30, 56, 82, -1, -1, -1]),\n        Int32Array.from([6, 30, 58, 86, -1, -1, -1]),\n        Int32Array.from([6, 34, 62, 90, -1, -1, -1]),\n        Int32Array.from([6, 28, 50, 72, 94, -1, -1]),\n        Int32Array.from([6, 26, 50, 74, 98, -1, -1]),\n        Int32Array.from([6, 30, 54, 78, 102, -1, -1]),\n        Int32Array.from([6, 28, 54, 80, 106, -1, -1]),\n        Int32Array.from([6, 32, 58, 84, 110, -1, -1]),\n        Int32Array.from([6, 30, 58, 86, 114, -1, -1]),\n        Int32Array.from([6, 34, 62, 90, 118, -1, -1]),\n        Int32Array.from([6, 26, 50, 74, 98, 122, -1]),\n        Int32Array.from([6, 30, 54, 78, 102, 126, -1]),\n        Int32Array.from([6, 26, 52, 78, 104, 130, -1]),\n        Int32Array.from([6, 30, 56, 82, 108, 134, -1]),\n        Int32Array.from([6, 34, 60, 86, 112, 138, -1]),\n        Int32Array.from([6, 30, 58, 86, 114, 142, -1]),\n        Int32Array.from([6, 34, 62, 90, 118, 146, -1]),\n        Int32Array.from([6, 30, 54, 78, 102, 126, 150]),\n        Int32Array.from([6, 24, 50, 76, 102, 128, 154]),\n        Int32Array.from([6, 28, 54, 80, 106, 132, 158]),\n        Int32Array.from([6, 32, 58, 84, 110, 136, 162]),\n        Int32Array.from([6, 26, 54, 82, 110, 138, 166]),\n        Int32Array.from([6, 30, 58, 86, 114, 142, 170]),\n    ]);\n    // Type info cells at the left top corner.\n    MatrixUtil.TYPE_INFO_COORDINATES = Array.from([\n        Int32Array.from([8, 0]),\n        Int32Array.from([8, 1]),\n        Int32Array.from([8, 2]),\n        Int32Array.from([8, 3]),\n        Int32Array.from([8, 4]),\n        Int32Array.from([8, 5]),\n        Int32Array.from([8, 7]),\n        Int32Array.from([8, 8]),\n        Int32Array.from([7, 8]),\n        Int32Array.from([5, 8]),\n        Int32Array.from([4, 8]),\n        Int32Array.from([3, 8]),\n        Int32Array.from([2, 8]),\n        Int32Array.from([1, 8]),\n        Int32Array.from([0, 8]),\n    ]);\n    // From Appendix D in JISX0510:2004 (p. 67)\n    MatrixUtil.VERSION_INFO_POLY = 0x1f25; // 1 1111 0010 0101\n    // From Appendix C in JISX0510:2004 (p.65).\n    MatrixUtil.TYPE_INFO_POLY = 0x537;\n    MatrixUtil.TYPE_INFO_MASK_PATTERN = 0x5412;\n\n    /*namespace com.google.zxing.qrcode.encoder {*/\n    class BlockPair {\n        constructor(dataBytes, errorCorrectionBytes) {\n            this.dataBytes = dataBytes;\n            this.errorCorrectionBytes = errorCorrectionBytes;\n        }\n        getDataBytes() {\n            return this.dataBytes;\n        }\n        getErrorCorrectionBytes() {\n            return this.errorCorrectionBytes;\n        }\n    }\n\n    /*import java.io.UnsupportedEncodingException;*/\n    /*import java.util.ArrayList;*/\n    /*import java.util.Collection;*/\n    /*import java.util.Map;*/\n    /**\n     * @author satorux@google.com (Satoru Takabayashi) - creator\n     * @author dswitkin@google.com (Daniel Switkin) - ported from C++\n     */\n    class Encoder {\n        // TYPESCRIPTPORT: changed to UTF8, the default for js\n        constructor() { }\n        // The mask penalty calculation is complicated.  See Table 21 of JISX0510:2004 (p.45) for details.\n        // Basically it applies four rules and summate all penalties.\n        static calculateMaskPenalty(matrix) {\n            return MaskUtil.applyMaskPenaltyRule1(matrix)\n                + MaskUtil.applyMaskPenaltyRule2(matrix)\n                + MaskUtil.applyMaskPenaltyRule3(matrix)\n                + MaskUtil.applyMaskPenaltyRule4(matrix);\n        }\n        /**\n         * @param content text to encode\n         * @param ecLevel error correction level to use\n         * @return {@link QRCode} representing the encoded QR code\n         * @throws WriterException if encoding can't succeed, because of for example invalid content\n         *   or configuration\n         */\n        // public static encode(content: string, ecLevel: ErrorCorrectionLevel): QRCode /*throws WriterException*/ {\n        //   return encode(content, ecLevel, null)\n        // }\n        static encode(content, ecLevel, hints = null) {\n            // Determine what character encoding has been specified by the caller, if any\n            let encoding = Encoder.DEFAULT_BYTE_MODE_ENCODING;\n            const hasEncodingHint = hints !== null && undefined !== hints.get(EncodeHintType$1.CHARACTER_SET);\n            if (hasEncodingHint) {\n                encoding = hints.get(EncodeHintType$1.CHARACTER_SET).toString();\n            }\n            // Pick an encoding mode appropriate for the content. Note that this will not attempt to use\n            // multiple modes / segments even if that were more efficient. Twould be nice.\n            const mode = this.chooseMode(content, encoding);\n            // This will store the header information, like mode and\n            // length, as well as \"header\" segments like an ECI segment.\n            const headerBits = new BitArray();\n            // Append ECI segment if applicable\n            if (mode === Mode$1.BYTE && (hasEncodingHint || Encoder.DEFAULT_BYTE_MODE_ENCODING !== encoding)) {\n                const eci = CharacterSetECI.getCharacterSetECIByName(encoding);\n                if (eci !== undefined) {\n                    this.appendECI(eci, headerBits);\n                }\n            }\n            // (With ECI in place,) Write the mode marker\n            this.appendModeInfo(mode, headerBits);\n            // Collect data within the main segment, separately, to count its size if needed. Don't add it to\n            // main payload yet.\n            const dataBits = new BitArray();\n            this.appendBytes(content, mode, dataBits, encoding);\n            let version;\n            if (hints !== null && undefined !== hints.get(EncodeHintType$1.QR_VERSION)) {\n                const versionNumber = Number.parseInt(hints.get(EncodeHintType$1.QR_VERSION).toString(), 10);\n                version = Version$1.getVersionForNumber(versionNumber);\n                const bitsNeeded = this.calculateBitsNeeded(mode, headerBits, dataBits, version);\n                if (!this.willFit(bitsNeeded, version, ecLevel)) {\n                    throw new WriterException('Data too big for requested version');\n                }\n            }\n            else {\n                version = this.recommendVersion(ecLevel, mode, headerBits, dataBits);\n            }\n            const headerAndDataBits = new BitArray();\n            headerAndDataBits.appendBitArray(headerBits);\n            // Find \"length\" of main segment and write it\n            const numLetters = mode === Mode$1.BYTE ? dataBits.getSizeInBytes() : content.length;\n            this.appendLengthInfo(numLetters, version, mode, headerAndDataBits);\n            // Put data together into the overall payload\n            headerAndDataBits.appendBitArray(dataBits);\n            const ecBlocks = version.getECBlocksForLevel(ecLevel);\n            const numDataBytes = version.getTotalCodewords() - ecBlocks.getTotalECCodewords();\n            // Terminate the bits properly.\n            this.terminateBits(numDataBytes, headerAndDataBits);\n            // Interleave data bits with error correction code.\n            const finalBits = this.interleaveWithECBytes(headerAndDataBits, version.getTotalCodewords(), numDataBytes, ecBlocks.getNumBlocks());\n            const qrCode = new QRCode();\n            qrCode.setECLevel(ecLevel);\n            qrCode.setMode(mode);\n            qrCode.setVersion(version);\n            //  Choose the mask pattern and set to \"qrCode\".\n            const dimension = version.getDimensionForVersion();\n            const matrix = new ByteMatrix(dimension, dimension);\n            const maskPattern = this.chooseMaskPattern(finalBits, ecLevel, version, matrix);\n            qrCode.setMaskPattern(maskPattern);\n            // Build the matrix and set it to \"qrCode\".\n            MatrixUtil.buildMatrix(finalBits, ecLevel, version, maskPattern, matrix);\n            qrCode.setMatrix(matrix);\n            return qrCode;\n        }\n        /**\n         * Decides the smallest version of QR code that will contain all of the provided data.\n         *\n         * @throws WriterException if the data cannot fit in any version\n         */\n        static recommendVersion(ecLevel, mode, headerBits, dataBits) {\n            // Hard part: need to know version to know how many bits length takes. But need to know how many\n            // bits it takes to know version. First we take a guess at version by assuming version will be\n            // the minimum, 1:\n            const provisionalBitsNeeded = this.calculateBitsNeeded(mode, headerBits, dataBits, Version$1.getVersionForNumber(1));\n            const provisionalVersion = this.chooseVersion(provisionalBitsNeeded, ecLevel);\n            // Use that guess to calculate the right version. I am still not sure this works in 100% of cases.\n            const bitsNeeded = this.calculateBitsNeeded(mode, headerBits, dataBits, provisionalVersion);\n            return this.chooseVersion(bitsNeeded, ecLevel);\n        }\n        static calculateBitsNeeded(mode, headerBits, dataBits, version) {\n            return headerBits.getSize() + mode.getCharacterCountBits(version) + dataBits.getSize();\n        }\n        /**\n         * @return the code point of the table used in alphanumeric mode or\n         *  -1 if there is no corresponding code in the table.\n         */\n        static getAlphanumericCode(code /*int*/) {\n            if (code < Encoder.ALPHANUMERIC_TABLE.length) {\n                return Encoder.ALPHANUMERIC_TABLE[code];\n            }\n            return -1;\n        }\n        // public static chooseMode(content: string): Mode {\n        //   return chooseMode(content, null);\n        // }\n        /**\n         * Choose the best mode by examining the content. Note that 'encoding' is used as a hint;\n         * if it is Shift_JIS, and the input is only double-byte Kanji, then we return {@link Mode#KANJI}.\n         */\n        static chooseMode(content, encoding = null) {\n            if (CharacterSetECI.SJIS.getName() === encoding && this.isOnlyDoubleByteKanji(content)) {\n                // Choose Kanji mode if all input are double-byte characters\n                return Mode$1.KANJI;\n            }\n            let hasNumeric = false;\n            let hasAlphanumeric = false;\n            for (let i = 0, length = content.length; i < length; ++i) {\n                const c = content.charAt(i);\n                if (Encoder.isDigit(c)) {\n                    hasNumeric = true;\n                }\n                else if (this.getAlphanumericCode(c.charCodeAt(0)) !== -1) {\n                    hasAlphanumeric = true;\n                }\n                else {\n                    return Mode$1.BYTE;\n                }\n            }\n            if (hasAlphanumeric) {\n                return Mode$1.ALPHANUMERIC;\n            }\n            if (hasNumeric) {\n                return Mode$1.NUMERIC;\n            }\n            return Mode$1.BYTE;\n        }\n        static isOnlyDoubleByteKanji(content) {\n            let bytes;\n            try {\n                bytes = StringEncoding.encode(content, CharacterSetECI.SJIS); // content.getBytes(\"Shift_JIS\"))\n            }\n            catch (ignored /*: UnsupportedEncodingException*/) {\n                return false;\n            }\n            const length = bytes.length;\n            if (length % 2 !== 0) {\n                return false;\n            }\n            for (let i = 0; i < length; i += 2) {\n                const byte1 = bytes[i] & 0xFF;\n                if ((byte1 < 0x81 || byte1 > 0x9F) && (byte1 < 0xE0 || byte1 > 0xEB)) {\n                    return false;\n                }\n            }\n            return true;\n        }\n        static chooseMaskPattern(bits, ecLevel, version, matrix) {\n            let minPenalty = Number.MAX_SAFE_INTEGER; // Lower penalty is better.\n            let bestMaskPattern = -1;\n            // We try all mask patterns to choose the best one.\n            for (let maskPattern = 0; maskPattern < QRCode.NUM_MASK_PATTERNS; maskPattern++) {\n                MatrixUtil.buildMatrix(bits, ecLevel, version, maskPattern, matrix);\n                let penalty = this.calculateMaskPenalty(matrix);\n                if (penalty < minPenalty) {\n                    minPenalty = penalty;\n                    bestMaskPattern = maskPattern;\n                }\n            }\n            return bestMaskPattern;\n        }\n        static chooseVersion(numInputBits /*int*/, ecLevel) {\n            for (let versionNum = 1; versionNum <= 40; versionNum++) {\n                const version = Version$1.getVersionForNumber(versionNum);\n                if (Encoder.willFit(numInputBits, version, ecLevel)) {\n                    return version;\n                }\n            }\n            throw new WriterException('Data too big');\n        }\n        /**\n         * @return true if the number of input bits will fit in a code with the specified version and\n         * error correction level.\n         */\n        static willFit(numInputBits /*int*/, version, ecLevel) {\n            // In the following comments, we use numbers of Version 7-H.\n            // numBytes = 196\n            const numBytes = version.getTotalCodewords();\n            // getNumECBytes = 130\n            const ecBlocks = version.getECBlocksForLevel(ecLevel);\n            const numEcBytes = ecBlocks.getTotalECCodewords();\n            // getNumDataBytes = 196 - 130 = 66\n            const numDataBytes = numBytes - numEcBytes;\n            const totalInputBytes = (numInputBits + 7) / 8;\n            return numDataBytes >= totalInputBytes;\n        }\n        /**\n         * Terminate bits as described in 8.4.8 and 8.4.9 of JISX0510:2004 (p.24).\n         */\n        static terminateBits(numDataBytes /*int*/, bits) {\n            const capacity = numDataBytes * 8;\n            if (bits.getSize() > capacity) {\n                throw new WriterException('data bits cannot fit in the QR Code' + bits.getSize() + ' > ' +\n                    capacity);\n            }\n            for (let i = 0; i < 4 && bits.getSize() < capacity; ++i) {\n                bits.appendBit(false);\n            }\n            // Append termination bits. See 8.4.8 of JISX0510:2004 (p.24) for details.\n            // If the last byte isn't 8-bit aligned, we'll add padding bits.\n            const numBitsInLastByte = bits.getSize() & 0x07;\n            if (numBitsInLastByte > 0) {\n                for (let i = numBitsInLastByte; i < 8; i++) {\n                    bits.appendBit(false);\n                }\n            }\n            // If we have more space, we'll fill the space with padding patterns defined in 8.4.9 (p.24).\n            const numPaddingBytes = numDataBytes - bits.getSizeInBytes();\n            for (let i = 0; i < numPaddingBytes; ++i) {\n                bits.appendBits((i & 0x01) === 0 ? 0xEC : 0x11, 8);\n            }\n            if (bits.getSize() !== capacity) {\n                throw new WriterException('Bits size does not equal capacity');\n            }\n        }\n        /**\n         * Get number of data bytes and number of error correction bytes for block id \"blockID\". Store\n         * the result in \"numDataBytesInBlock\", and \"numECBytesInBlock\". See table 12 in 8.5.1 of\n         * JISX0510:2004 (p.30)\n         */\n        static getNumDataBytesAndNumECBytesForBlockID(numTotalBytes /*int*/, numDataBytes /*int*/, numRSBlocks /*int*/, blockID /*int*/, numDataBytesInBlock, numECBytesInBlock) {\n            if (blockID >= numRSBlocks) {\n                throw new WriterException('Block ID too large');\n            }\n            // numRsBlocksInGroup2 = 196 % 5 = 1\n            const numRsBlocksInGroup2 = numTotalBytes % numRSBlocks;\n            // numRsBlocksInGroup1 = 5 - 1 = 4\n            const numRsBlocksInGroup1 = numRSBlocks - numRsBlocksInGroup2;\n            // numTotalBytesInGroup1 = 196 / 5 = 39\n            const numTotalBytesInGroup1 = Math.floor(numTotalBytes / numRSBlocks);\n            // numTotalBytesInGroup2 = 39 + 1 = 40\n            const numTotalBytesInGroup2 = numTotalBytesInGroup1 + 1;\n            // numDataBytesInGroup1 = 66 / 5 = 13\n            const numDataBytesInGroup1 = Math.floor(numDataBytes / numRSBlocks);\n            // numDataBytesInGroup2 = 13 + 1 = 14\n            const numDataBytesInGroup2 = numDataBytesInGroup1 + 1;\n            // numEcBytesInGroup1 = 39 - 13 = 26\n            const numEcBytesInGroup1 = numTotalBytesInGroup1 - numDataBytesInGroup1;\n            // numEcBytesInGroup2 = 40 - 14 = 26\n            const numEcBytesInGroup2 = numTotalBytesInGroup2 - numDataBytesInGroup2;\n            // Sanity checks.\n            // 26 = 26\n            if (numEcBytesInGroup1 !== numEcBytesInGroup2) {\n                throw new WriterException('EC bytes mismatch');\n            }\n            // 5 = 4 + 1.\n            if (numRSBlocks !== numRsBlocksInGroup1 + numRsBlocksInGroup2) {\n                throw new WriterException('RS blocks mismatch');\n            }\n            // 196 = (13 + 26) * 4 + (14 + 26) * 1\n            if (numTotalBytes !==\n                ((numDataBytesInGroup1 + numEcBytesInGroup1) *\n                    numRsBlocksInGroup1) +\n                    ((numDataBytesInGroup2 + numEcBytesInGroup2) *\n                        numRsBlocksInGroup2)) {\n                throw new WriterException('Total bytes mismatch');\n            }\n            if (blockID < numRsBlocksInGroup1) {\n                numDataBytesInBlock[0] = numDataBytesInGroup1;\n                numECBytesInBlock[0] = numEcBytesInGroup1;\n            }\n            else {\n                numDataBytesInBlock[0] = numDataBytesInGroup2;\n                numECBytesInBlock[0] = numEcBytesInGroup2;\n            }\n        }\n        /**\n         * Interleave \"bits\" with corresponding error correction bytes. On success, store the result in\n         * \"result\". The interleave rule is complicated. See 8.6 of JISX0510:2004 (p.37) for details.\n         */\n        static interleaveWithECBytes(bits, numTotalBytes /*int*/, numDataBytes /*int*/, numRSBlocks /*int*/) {\n            // \"bits\" must have \"getNumDataBytes\" bytes of data.\n            if (bits.getSizeInBytes() !== numDataBytes) {\n                throw new WriterException('Number of bits and data bytes does not match');\n            }\n            // Step 1.  Divide data bytes into blocks and generate error correction bytes for them. We'll\n            // store the divided data bytes blocks and error correction bytes blocks into \"blocks\".\n            let dataBytesOffset = 0;\n            let maxNumDataBytes = 0;\n            let maxNumEcBytes = 0;\n            // Since, we know the number of reedsolmon blocks, we can initialize the vector with the number.\n            const blocks = new Array(); // new Array<BlockPair>(numRSBlocks)\n            for (let i = 0; i < numRSBlocks; ++i) {\n                const numDataBytesInBlock = new Int32Array(1);\n                const numEcBytesInBlock = new Int32Array(1);\n                Encoder.getNumDataBytesAndNumECBytesForBlockID(numTotalBytes, numDataBytes, numRSBlocks, i, numDataBytesInBlock, numEcBytesInBlock);\n                const size = numDataBytesInBlock[0];\n                const dataBytes = new Uint8Array(size);\n                bits.toBytes(8 * dataBytesOffset, dataBytes, 0, size);\n                const ecBytes = Encoder.generateECBytes(dataBytes, numEcBytesInBlock[0]);\n                blocks.push(new BlockPair(dataBytes, ecBytes));\n                maxNumDataBytes = Math.max(maxNumDataBytes, size);\n                maxNumEcBytes = Math.max(maxNumEcBytes, ecBytes.length);\n                dataBytesOffset += numDataBytesInBlock[0];\n            }\n            if (numDataBytes !== dataBytesOffset) {\n                throw new WriterException('Data bytes does not match offset');\n            }\n            const result = new BitArray();\n            // First, place data blocks.\n            for (let i = 0; i < maxNumDataBytes; ++i) {\n                for (const block of blocks) {\n                    const dataBytes = block.getDataBytes();\n                    if (i < dataBytes.length) {\n                        result.appendBits(dataBytes[i], 8);\n                    }\n                }\n            }\n            // Then, place error correction blocks.\n            for (let i = 0; i < maxNumEcBytes; ++i) {\n                for (const block of blocks) {\n                    const ecBytes = block.getErrorCorrectionBytes();\n                    if (i < ecBytes.length) {\n                        result.appendBits(ecBytes[i], 8);\n                    }\n                }\n            }\n            if (numTotalBytes !== result.getSizeInBytes()) { // Should be same.\n                throw new WriterException('Interleaving error: ' + numTotalBytes + ' and ' +\n                    result.getSizeInBytes() + ' differ.');\n            }\n            return result;\n        }\n        static generateECBytes(dataBytes, numEcBytesInBlock /*int*/) {\n            const numDataBytes = dataBytes.length;\n            const toEncode = new Int32Array(numDataBytes + numEcBytesInBlock); // int[numDataBytes + numEcBytesInBlock]\n            for (let i = 0; i < numDataBytes; i++) {\n                toEncode[i] = dataBytes[i] & 0xFF;\n            }\n            new ReedSolomonEncoder(GenericGF.QR_CODE_FIELD_256).encode(toEncode, numEcBytesInBlock);\n            const ecBytes = new Uint8Array(numEcBytesInBlock);\n            for (let i = 0; i < numEcBytesInBlock; i++) {\n                ecBytes[i] = /*(byte) */ toEncode[numDataBytes + i];\n            }\n            return ecBytes;\n        }\n        /**\n         * Append mode info. On success, store the result in \"bits\".\n         */\n        static appendModeInfo(mode, bits) {\n            bits.appendBits(mode.getBits(), 4);\n        }\n        /**\n         * Append length info. On success, store the result in \"bits\".\n         */\n        static appendLengthInfo(numLetters /*int*/, version, mode, bits) {\n            const numBits = mode.getCharacterCountBits(version);\n            if (numLetters >= (1 << numBits)) {\n                throw new WriterException(numLetters + ' is bigger than ' + ((1 << numBits) - 1));\n            }\n            bits.appendBits(numLetters, numBits);\n        }\n        /**\n         * Append \"bytes\" in \"mode\" mode (encoding) into \"bits\". On success, store the result in \"bits\".\n         */\n        static appendBytes(content, mode, bits, encoding) {\n            switch (mode) {\n                case Mode$1.NUMERIC:\n                    Encoder.appendNumericBytes(content, bits);\n                    break;\n                case Mode$1.ALPHANUMERIC:\n                    Encoder.appendAlphanumericBytes(content, bits);\n                    break;\n                case Mode$1.BYTE:\n                    Encoder.append8BitBytes(content, bits, encoding);\n                    break;\n                case Mode$1.KANJI:\n                    Encoder.appendKanjiBytes(content, bits);\n                    break;\n                default:\n                    throw new WriterException('Invalid mode: ' + mode);\n            }\n        }\n        static getDigit(singleCharacter) {\n            return singleCharacter.charCodeAt(0) - 48;\n        }\n        static isDigit(singleCharacter) {\n            const cn = Encoder.getDigit(singleCharacter);\n            return cn >= 0 && cn <= 9;\n        }\n        static appendNumericBytes(content, bits) {\n            const length = content.length;\n            let i = 0;\n            while (i < length) {\n                const num1 = Encoder.getDigit(content.charAt(i));\n                if (i + 2 < length) {\n                    // Encode three numeric letters in ten bits.\n                    const num2 = Encoder.getDigit(content.charAt(i + 1));\n                    const num3 = Encoder.getDigit(content.charAt(i + 2));\n                    bits.appendBits(num1 * 100 + num2 * 10 + num3, 10);\n                    i += 3;\n                }\n                else if (i + 1 < length) {\n                    // Encode two numeric letters in seven bits.\n                    const num2 = Encoder.getDigit(content.charAt(i + 1));\n                    bits.appendBits(num1 * 10 + num2, 7);\n                    i += 2;\n                }\n                else {\n                    // Encode one numeric letter in four bits.\n                    bits.appendBits(num1, 4);\n                    i++;\n                }\n            }\n        }\n        static appendAlphanumericBytes(content, bits) {\n            const length = content.length;\n            let i = 0;\n            while (i < length) {\n                const code1 = Encoder.getAlphanumericCode(content.charCodeAt(i));\n                if (code1 === -1) {\n                    throw new WriterException();\n                }\n                if (i + 1 < length) {\n                    const code2 = Encoder.getAlphanumericCode(content.charCodeAt(i + 1));\n                    if (code2 === -1) {\n                        throw new WriterException();\n                    }\n                    // Encode two alphanumeric letters in 11 bits.\n                    bits.appendBits(code1 * 45 + code2, 11);\n                    i += 2;\n                }\n                else {\n                    // Encode one alphanumeric letter in six bits.\n                    bits.appendBits(code1, 6);\n                    i++;\n                }\n            }\n        }\n        static append8BitBytes(content, bits, encoding) {\n            let bytes;\n            try {\n                bytes = StringEncoding.encode(content, encoding);\n            }\n            catch (uee /*: UnsupportedEncodingException*/) {\n                throw new WriterException(uee);\n            }\n            for (let i = 0, length = bytes.length; i !== length; i++) {\n                const b = bytes[i];\n                bits.appendBits(b, 8);\n            }\n        }\n        /**\n         * @throws WriterException\n         */\n        static appendKanjiBytes(content, bits) {\n            let bytes;\n            try {\n                bytes = StringEncoding.encode(content, CharacterSetECI.SJIS);\n            }\n            catch (uee /*: UnsupportedEncodingException*/) {\n                throw new WriterException(uee);\n            }\n            const length = bytes.length;\n            for (let i = 0; i < length; i += 2) {\n                const byte1 = bytes[i] & 0xFF;\n                const byte2 = bytes[i + 1] & 0xFF;\n                const code = ((byte1 << 8) & 0xFFFFFFFF) | byte2;\n                let subtracted = -1;\n                if (code >= 0x8140 && code <= 0x9ffc) {\n                    subtracted = code - 0x8140;\n                }\n                else if (code >= 0xe040 && code <= 0xebbf) {\n                    subtracted = code - 0xc140;\n                }\n                if (subtracted === -1) {\n                    throw new WriterException('Invalid byte sequence');\n                }\n                const encoded = ((subtracted >> 8) * 0xc0) + (subtracted & 0xff);\n                bits.appendBits(encoded, 13);\n            }\n        }\n        static appendECI(eci, bits) {\n            bits.appendBits(Mode$1.ECI.getBits(), 4);\n            // This is correct for values up to 127, which is all we need now.\n            bits.appendBits(eci.getValue(), 8);\n        }\n    }\n    // The original table is defined in the table 5 of JISX0510:2004 (p.19).\n    Encoder.ALPHANUMERIC_TABLE = Int32Array.from([\n        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n        36, -1, -1, -1, 37, 38, -1, -1, -1, -1, 39, 40, -1, 41, 42, 43,\n        0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 44, -1, -1, -1, -1, -1,\n        -1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,\n        25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, -1, -1, -1, -1, -1,\n    ]);\n    Encoder.DEFAULT_BYTE_MODE_ENCODING = CharacterSetECI.UTF8.getName(); // \"ISO-8859-1\"\n\n    /**\n     * @deprecated Moving to @zxing/browser\n     */\n    class BrowserQRCodeSvgWriter {\n        /**\n         * Writes and renders a QRCode SVG element.\n         *\n         * @param contents\n         * @param width\n         * @param height\n         * @param hints\n         */\n        write(contents, width, height, hints = null) {\n            if (contents.length === 0) {\n                throw new IllegalArgumentException('Found empty contents');\n            }\n            // if (format != BarcodeFormat.QR_CODE) {\n            //   throw new IllegalArgumentException(\"Can only encode QR_CODE, but got \" + format)\n            // }\n            if (width < 0 || height < 0) {\n                throw new IllegalArgumentException('Requested dimensions are too small: ' + width + 'x' + height);\n            }\n            let errorCorrectionLevel = ErrorCorrectionLevel.L;\n            let quietZone = BrowserQRCodeSvgWriter.QUIET_ZONE_SIZE;\n            if (hints !== null) {\n                if (undefined !== hints.get(EncodeHintType$1.ERROR_CORRECTION)) {\n                    errorCorrectionLevel = ErrorCorrectionLevel.fromString(hints.get(EncodeHintType$1.ERROR_CORRECTION).toString());\n                }\n                if (undefined !== hints.get(EncodeHintType$1.MARGIN)) {\n                    quietZone = Number.parseInt(hints.get(EncodeHintType$1.MARGIN).toString(), 10);\n                }\n            }\n            const code = Encoder.encode(contents, errorCorrectionLevel, hints);\n            return this.renderResult(code, width, height, quietZone);\n        }\n        /**\n         * Renders the result and then appends it to the DOM.\n         */\n        writeToDom(containerElement, contents, width, height, hints = null) {\n            if (typeof containerElement === 'string') {\n                containerElement = document.querySelector(containerElement);\n            }\n            const svgElement = this.write(contents, width, height, hints);\n            if (containerElement)\n                containerElement.appendChild(svgElement);\n        }\n        /**\n         * Note that the input matrix uses 0 == white, 1 == black.\n         * The output matrix uses 0 == black, 255 == white (i.e. an 8 bit greyscale bitmap).\n         */\n        renderResult(code, width /*int*/, height /*int*/, quietZone /*int*/) {\n            const input = code.getMatrix();\n            if (input === null) {\n                throw new IllegalStateException();\n            }\n            const inputWidth = input.getWidth();\n            const inputHeight = input.getHeight();\n            const qrWidth = inputWidth + (quietZone * 2);\n            const qrHeight = inputHeight + (quietZone * 2);\n            const outputWidth = Math.max(width, qrWidth);\n            const outputHeight = Math.max(height, qrHeight);\n            const multiple = Math.min(Math.floor(outputWidth / qrWidth), Math.floor(outputHeight / qrHeight));\n            // Padding includes both the quiet zone and the extra white pixels to accommodate the requested\n            // dimensions. For example, if input is 25x25 the QR will be 33x33 including the quiet zone.\n            // If the requested size is 200x160, the multiple will be 4, for a QR of 132x132. These will\n            // handle all the padding from 100x100 (the actual QR) up to 200x160.\n            const leftPadding = Math.floor((outputWidth - (inputWidth * multiple)) / 2);\n            const topPadding = Math.floor((outputHeight - (inputHeight * multiple)) / 2);\n            const svgElement = this.createSVGElement(outputWidth, outputHeight);\n            for (let inputY = 0, outputY = topPadding; inputY < inputHeight; inputY++, outputY += multiple) {\n                // Write the contents of this row of the barcode\n                for (let inputX = 0, outputX = leftPadding; inputX < inputWidth; inputX++, outputX += multiple) {\n                    if (input.get(inputX, inputY) === 1) {\n                        const svgRectElement = this.createSvgRectElement(outputX, outputY, multiple, multiple);\n                        svgElement.appendChild(svgRectElement);\n                    }\n                }\n            }\n            return svgElement;\n        }\n        /**\n         * Creates a SVG element.\n         *\n         * @param w SVG's width attribute\n         * @param h SVG's height attribute\n         */\n        createSVGElement(w, h) {\n            const svgElement = document.createElementNS(BrowserQRCodeSvgWriter.SVG_NS, 'svg');\n            svgElement.setAttributeNS(null, 'height', w.toString());\n            svgElement.setAttributeNS(null, 'width', h.toString());\n            return svgElement;\n        }\n        /**\n         * Creates a SVG rect element.\n         *\n         * @param x Element's x coordinate\n         * @param y Element's y coordinate\n         * @param w Element's width attribute\n         * @param h Element's height attribute\n         */\n        createSvgRectElement(x, y, w, h) {\n            const rect = document.createElementNS(BrowserQRCodeSvgWriter.SVG_NS, 'rect');\n            rect.setAttributeNS(null, 'x', x.toString());\n            rect.setAttributeNS(null, 'y', y.toString());\n            rect.setAttributeNS(null, 'height', w.toString());\n            rect.setAttributeNS(null, 'width', h.toString());\n            rect.setAttributeNS(null, 'fill', '#000000');\n            return rect;\n        }\n    }\n    BrowserQRCodeSvgWriter.QUIET_ZONE_SIZE = 4;\n    /**\n     * SVG markup NameSpace\n     */\n    BrowserQRCodeSvgWriter.SVG_NS = 'http://www.w3.org/2000/svg';\n\n    /*import java.util.Map;*/\n    /**\n     * This object renders a QR Code as a BitMatrix 2D array of greyscale values.\n     *\n     * @author dswitkin@google.com (Daniel Switkin)\n     */\n    class QRCodeWriter {\n        /*@Override*/\n        // public encode(contents: string, format: BarcodeFormat, width: number /*int*/, height: number /*int*/): BitMatrix\n        //     /*throws WriterException */ {\n        //   return encode(contents, format, width, height, null)\n        // }\n        /*@Override*/\n        encode(contents, format, width /*int*/, height /*int*/, hints) {\n            if (contents.length === 0) {\n                throw new IllegalArgumentException('Found empty contents');\n            }\n            if (format !== BarcodeFormat$1.QR_CODE) {\n                throw new IllegalArgumentException('Can only encode QR_CODE, but got ' + format);\n            }\n            if (width < 0 || height < 0) {\n                throw new IllegalArgumentException(`Requested dimensions are too small: ${width}x${height}`);\n            }\n            let errorCorrectionLevel = ErrorCorrectionLevel.L;\n            let quietZone = QRCodeWriter.QUIET_ZONE_SIZE;\n            if (hints !== null) {\n                if (undefined !== hints.get(EncodeHintType$1.ERROR_CORRECTION)) {\n                    errorCorrectionLevel = ErrorCorrectionLevel.fromString(hints.get(EncodeHintType$1.ERROR_CORRECTION).toString());\n                }\n                if (undefined !== hints.get(EncodeHintType$1.MARGIN)) {\n                    quietZone = Number.parseInt(hints.get(EncodeHintType$1.MARGIN).toString(), 10);\n                }\n            }\n            const code = Encoder.encode(contents, errorCorrectionLevel, hints);\n            return QRCodeWriter.renderResult(code, width, height, quietZone);\n        }\n        // Note that the input matrix uses 0 == white, 1 == black, while the output matrix uses\n        // 0 == black, 255 == white (i.e. an 8 bit greyscale bitmap).\n        static renderResult(code, width /*int*/, height /*int*/, quietZone /*int*/) {\n            const input = code.getMatrix();\n            if (input === null) {\n                throw new IllegalStateException();\n            }\n            const inputWidth = input.getWidth();\n            const inputHeight = input.getHeight();\n            const qrWidth = inputWidth + (quietZone * 2);\n            const qrHeight = inputHeight + (quietZone * 2);\n            const outputWidth = Math.max(width, qrWidth);\n            const outputHeight = Math.max(height, qrHeight);\n            const multiple = Math.min(Math.floor(outputWidth / qrWidth), Math.floor(outputHeight / qrHeight));\n            // Padding includes both the quiet zone and the extra white pixels to accommodate the requested\n            // dimensions. For example, if input is 25x25 the QR will be 33x33 including the quiet zone.\n            // If the requested size is 200x160, the multiple will be 4, for a QR of 132x132. These will\n            // handle all the padding from 100x100 (the actual QR) up to 200x160.\n            const leftPadding = Math.floor((outputWidth - (inputWidth * multiple)) / 2);\n            const topPadding = Math.floor((outputHeight - (inputHeight * multiple)) / 2);\n            const output = new BitMatrix(outputWidth, outputHeight);\n            for (let inputY = 0, outputY = topPadding; inputY < inputHeight; inputY++, outputY += multiple) {\n                // Write the contents of this row of the barcode\n                for (let inputX = 0, outputX = leftPadding; inputX < inputWidth; inputX++, outputX += multiple) {\n                    if (input.get(inputX, inputY) === 1) {\n                        output.setRegion(outputX, outputY, multiple, multiple);\n                    }\n                }\n            }\n            return output;\n        }\n    }\n    QRCodeWriter.QUIET_ZONE_SIZE = 4;\n\n    /*import java.util.Map;*/\n    /**\n     * This is a factory class which finds the appropriate Writer subclass for the BarcodeFormat\n     * requested and encodes the barcode with the supplied contents.\n     *\n     * @author dswitkin@google.com (Daniel Switkin)\n     */\n    class MultiFormatWriter {\n        /*@Override*/\n        // public encode(contents: string,\n        //                         format: BarcodeFormat,\n        //                         width: number /*int*/,\n        //                         height: number /*int*/): BitMatrix /*throws WriterException */ {\n        //   return encode(contents, format, width, height, null)\n        // }\n        /*@Override*/\n        encode(contents, format, width /*int*/, height /*int*/, hints) {\n            let writer;\n            switch (format) {\n                // case BarcodeFormat.EAN_8:\n                //   writer = new EAN8Writer()\n                //   break\n                // case BarcodeFormat.UPC_E:\n                //   writer = new UPCEWriter()\n                //   break\n                // case BarcodeFormat.EAN_13:\n                //   writer = new EAN13Writer()\n                //   break\n                // case BarcodeFormat.UPC_A:\n                //   writer = new UPCAWriter()\n                //   break\n                case BarcodeFormat$1.QR_CODE:\n                    writer = new QRCodeWriter();\n                    break;\n                // case BarcodeFormat.CODE_39:\n                //   writer = new Code39Writer()\n                //   break\n                // case BarcodeFormat.CODE_93:\n                //   writer = new Code93Writer()\n                //   break\n                // case BarcodeFormat.CODE_128:\n                //   writer = new Code128Writer()\n                //   break\n                // case BarcodeFormat.ITF:\n                //   writer = new ITFWriter()\n                //   break\n                // case BarcodeFormat.PDF_417:\n                //   writer = new PDF417Writer()\n                //   break\n                // case BarcodeFormat.CODABAR:\n                //   writer = new CodaBarWriter()\n                //   break\n                // case BarcodeFormat.DATA_MATRIX:\n                //   writer = new DataMatrixWriter()\n                //   break\n                // case BarcodeFormat.AZTEC:\n                //   writer = new AztecWriter()\n                //   break\n                default:\n                    throw new IllegalArgumentException('No encoder available for format ' + format);\n            }\n            return writer.encode(contents, format, width, height, hints);\n        }\n    }\n\n    /*\n     * Copyright 2009 ZXing authors\n     *\n     * Licensed under the Apache License, Version 2.0 (the \"License\");\n     * you may not use this file except in compliance with the License.\n     * You may obtain a copy of the License at\n     *\n     *      http://www.apache.org/licenses/LICENSE-2.0\n     *\n     * Unless required by applicable law or agreed to in writing, software\n     * distributed under the License is distributed on an \"AS IS\" BASIS,\n     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n     * See the License for the specific language governing permissions and\n     * limitations under the License.\n     */\n    /**\n     * This object extends LuminanceSource around an array of YUV data returned from the camera driver,\n     * with the option to crop to a rectangle within the full data. This can be used to exclude\n     * superfluous pixels around the perimeter and speed up decoding.\n     *\n     * It works for any pixel format where the Y channel is planar and appears first, including\n     * YCbCr_420_SP and YCbCr_422_SP.\n     *\n     * @author dswitkin@google.com (Daniel Switkin)\n     */\n    class PlanarYUVLuminanceSource extends LuminanceSource {\n        constructor(yuvData, dataWidth /*int*/, dataHeight /*int*/, left /*int*/, top /*int*/, width /*int*/, height /*int*/, reverseHorizontal) {\n            super(width, height);\n            this.yuvData = yuvData;\n            this.dataWidth = dataWidth;\n            this.dataHeight = dataHeight;\n            this.left = left;\n            this.top = top;\n            if (left + width > dataWidth || top + height > dataHeight) {\n                throw new IllegalArgumentException('Crop rectangle does not fit within image data.');\n            }\n            if (reverseHorizontal) {\n                this.reverseHorizontal(width, height);\n            }\n        }\n        /*@Override*/\n        getRow(y /*int*/, row) {\n            if (y < 0 || y >= this.getHeight()) {\n                throw new IllegalArgumentException('Requested row is outside the image: ' + y);\n            }\n            const width = this.getWidth();\n            if (row === null || row === undefined || row.length < width) {\n                row = new Uint8ClampedArray(width);\n            }\n            const offset = (y + this.top) * this.dataWidth + this.left;\n            System.arraycopy(this.yuvData, offset, row, 0, width);\n            return row;\n        }\n        /*@Override*/\n        getMatrix() {\n            const width = this.getWidth();\n            const height = this.getHeight();\n            // If the caller asks for the entire underlying image, save the copy and give them the\n            // original data. The docs specifically warn that result.length must be ignored.\n            if (width === this.dataWidth && height === this.dataHeight) {\n                return this.yuvData;\n            }\n            const area = width * height;\n            const matrix = new Uint8ClampedArray(area);\n            let inputOffset = this.top * this.dataWidth + this.left;\n            // If the width matches the full width of the underlying data, perform a single copy.\n            if (width === this.dataWidth) {\n                System.arraycopy(this.yuvData, inputOffset, matrix, 0, area);\n                return matrix;\n            }\n            // Otherwise copy one cropped row at a time.\n            for (let y = 0; y < height; y++) {\n                const outputOffset = y * width;\n                System.arraycopy(this.yuvData, inputOffset, matrix, outputOffset, width);\n                inputOffset += this.dataWidth;\n            }\n            return matrix;\n        }\n        /*@Override*/\n        isCropSupported() {\n            return true;\n        }\n        /*@Override*/\n        crop(left /*int*/, top /*int*/, width /*int*/, height /*int*/) {\n            return new PlanarYUVLuminanceSource(this.yuvData, this.dataWidth, this.dataHeight, this.left + left, this.top + top, width, height, false);\n        }\n        renderThumbnail() {\n            const width = this.getWidth() / PlanarYUVLuminanceSource.THUMBNAIL_SCALE_FACTOR;\n            const height = this.getHeight() / PlanarYUVLuminanceSource.THUMBNAIL_SCALE_FACTOR;\n            const pixels = new Int32Array(width * height);\n            const yuv = this.yuvData;\n            let inputOffset = this.top * this.dataWidth + this.left;\n            for (let y = 0; y < height; y++) {\n                const outputOffset = y * width;\n                for (let x = 0; x < width; x++) {\n                    const grey = yuv[inputOffset + x * PlanarYUVLuminanceSource.THUMBNAIL_SCALE_FACTOR] & 0xff;\n                    pixels[outputOffset + x] = 0xFF000000 | (grey * 0x00010101);\n                }\n                inputOffset += this.dataWidth * PlanarYUVLuminanceSource.THUMBNAIL_SCALE_FACTOR;\n            }\n            return pixels;\n        }\n        /**\n         * @return width of image from {@link #renderThumbnail()}\n         */\n        getThumbnailWidth() {\n            return this.getWidth() / PlanarYUVLuminanceSource.THUMBNAIL_SCALE_FACTOR;\n        }\n        /**\n         * @return height of image from {@link #renderThumbnail()}\n         */\n        getThumbnailHeight() {\n            return this.getHeight() / PlanarYUVLuminanceSource.THUMBNAIL_SCALE_FACTOR;\n        }\n        reverseHorizontal(width /*int*/, height /*int*/) {\n            const yuvData = this.yuvData;\n            for (let y = 0, rowStart = this.top * this.dataWidth + this.left; y < height; y++, rowStart += this.dataWidth) {\n                const middle = rowStart + width / 2;\n                for (let x1 = rowStart, x2 = rowStart + width - 1; x1 < middle; x1++, x2--) {\n                    const temp = yuvData[x1];\n                    yuvData[x1] = yuvData[x2];\n                    yuvData[x2] = temp;\n                }\n            }\n        }\n        invert() {\n            return new InvertedLuminanceSource(this);\n        }\n    }\n    PlanarYUVLuminanceSource.THUMBNAIL_SCALE_FACTOR = 2;\n\n    /*\n     * Copyright 2009 ZXing authors\n     *\n     * Licensed under the Apache License, Version 2.0 (the \"License\");\n     * you may not use this file except in compliance with the License.\n     * You may obtain a copy of the License at\n     *\n     *      http://www.apache.org/licenses/LICENSE-2.0\n     *\n     * Unless required by applicable law or agreed to in writing, software\n     * distributed under the License is distributed on an \"AS IS\" BASIS,\n     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n     * See the License for the specific language governing permissions and\n     * limitations under the License.\n     */\n    /**\n     * This class is used to help decode images from files which arrive as RGB data from\n     * an ARGB pixel array. It does not support rotation.\n     *\n     * @author dswitkin@google.com (Daniel Switkin)\n     * @author Betaminos\n     */\n    class RGBLuminanceSource extends LuminanceSource {\n        constructor(luminances, width /*int*/, height /*int*/, dataWidth /*int*/, dataHeight /*int*/, left /*int*/, top /*int*/) {\n            super(width, height);\n            this.dataWidth = dataWidth;\n            this.dataHeight = dataHeight;\n            this.left = left;\n            this.top = top;\n            if (luminances.BYTES_PER_ELEMENT === 4) { // Int32Array\n                const size = width * height;\n                const luminancesUint8Array = new Uint8ClampedArray(size);\n                for (let offset = 0; offset < size; offset++) {\n                    const pixel = luminances[offset];\n                    const r = (pixel >> 16) & 0xff; // red\n                    const g2 = (pixel >> 7) & 0x1fe; // 2 * green\n                    const b = pixel & 0xff; // blue\n                    // Calculate green-favouring average cheaply\n                    luminancesUint8Array[offset] = /*(byte) */ ((r + g2 + b) / 4) & 0xFF;\n                }\n                this.luminances = luminancesUint8Array;\n            }\n            else {\n                this.luminances = luminances;\n            }\n            if (undefined === dataWidth) {\n                this.dataWidth = width;\n            }\n            if (undefined === dataHeight) {\n                this.dataHeight = height;\n            }\n            if (undefined === left) {\n                this.left = 0;\n            }\n            if (undefined === top) {\n                this.top = 0;\n            }\n            if (this.left + width > this.dataWidth || this.top + height > this.dataHeight) {\n                throw new IllegalArgumentException('Crop rectangle does not fit within image data.');\n            }\n        }\n        /*@Override*/\n        getRow(y /*int*/, row) {\n            if (y < 0 || y >= this.getHeight()) {\n                throw new IllegalArgumentException('Requested row is outside the image: ' + y);\n            }\n            const width = this.getWidth();\n            if (row === null || row === undefined || row.length < width) {\n                row = new Uint8ClampedArray(width);\n            }\n            const offset = (y + this.top) * this.dataWidth + this.left;\n            System.arraycopy(this.luminances, offset, row, 0, width);\n            return row;\n        }\n        /*@Override*/\n        getMatrix() {\n            const width = this.getWidth();\n            const height = this.getHeight();\n            // If the caller asks for the entire underlying image, save the copy and give them the\n            // original data. The docs specifically warn that result.length must be ignored.\n            if (width === this.dataWidth && height === this.dataHeight) {\n                return this.luminances;\n            }\n            const area = width * height;\n            const matrix = new Uint8ClampedArray(area);\n            let inputOffset = this.top * this.dataWidth + this.left;\n            // If the width matches the full width of the underlying data, perform a single copy.\n            if (width === this.dataWidth) {\n                System.arraycopy(this.luminances, inputOffset, matrix, 0, area);\n                return matrix;\n            }\n            // Otherwise copy one cropped row at a time.\n            for (let y = 0; y < height; y++) {\n                const outputOffset = y * width;\n                System.arraycopy(this.luminances, inputOffset, matrix, outputOffset, width);\n                inputOffset += this.dataWidth;\n            }\n            return matrix;\n        }\n        /*@Override*/\n        isCropSupported() {\n            return true;\n        }\n        /*@Override*/\n        crop(left /*int*/, top /*int*/, width /*int*/, height /*int*/) {\n            return new RGBLuminanceSource(this.luminances, width, height, this.dataWidth, this.dataHeight, this.left + left, this.top + top);\n        }\n        invert() {\n            return new InvertedLuminanceSource(this);\n        }\n    }\n\n    /**\n     * Just to make a shortcut between Java code and TS code.\n     */\n    class Charset extends CharacterSetECI {\n        static forName(name) {\n            return this.getCharacterSetECIByName(name);\n        }\n    }\n\n    /**\n     * Just to make a shortcut between Java code and TS code.\n     */\n    class StandardCharsets {\n    }\n    StandardCharsets.ISO_8859_1 = CharacterSetECI.ISO8859_1;\n\n    /*\n    * Copyright 2013 ZXing authors\n    *\n    * Licensed under the Apache License, Version 2.0 (the \"License\");\n    * you may not use this file except in compliance with the License.\n    * You may obtain a copy of the License at\n    *\n    *      http://www.apache.org/licenses/LICENSE-2.0\n    *\n    * Unless required by applicable law or agreed to in writing, software\n    * distributed under the License is distributed on an \"AS IS\" BASIS,\n    * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n    * See the License for the specific language governing permissions and\n    * limitations under the License.\n    */\n    /**\n     * Aztec 2D code representation\n     *\n     * @author Rustam Abdullaev\n     */\n    /*public final*/ class AztecCode {\n        /**\n         * @return {@code true} if compact instead of full mode\n         */\n        isCompact() {\n            return this.compact;\n        }\n        setCompact(compact) {\n            this.compact = compact;\n        }\n        /**\n         * @return size in pixels (width and height)\n         */\n        getSize() {\n            return this.size;\n        }\n        setSize(size) {\n            this.size = size;\n        }\n        /**\n         * @return number of levels\n         */\n        getLayers() {\n            return this.layers;\n        }\n        setLayers(layers) {\n            this.layers = layers;\n        }\n        /**\n         * @return number of data codewords\n         */\n        getCodeWords() {\n            return this.codeWords;\n        }\n        setCodeWords(codeWords) {\n            this.codeWords = codeWords;\n        }\n        /**\n         * @return the symbol image\n         */\n        getMatrix() {\n            return this.matrix;\n        }\n        setMatrix(matrix) {\n            this.matrix = matrix;\n        }\n    }\n\n    class Collections {\n        /**\n         * The singletonList(T) method is used to return an immutable list containing only the specified object.\n         */\n        static singletonList(item) {\n            return [item];\n        }\n        /**\n         * The min(Collection<? extends T>, Comparator<? super T>) method is used to return the minimum element of the given collection, according to the order induced by the specified comparator.\n         */\n        static min(collection, comparator) {\n            return collection.sort(comparator)[0];\n        }\n    }\n\n    /*\n    * Copyright 2013 ZXing authors\n    *\n    * Licensed under the Apache License, Version 2.0 (the \"License\");\n    * you may not use this file except in compliance with the License.\n    * You may obtain a copy of the License at\n    *\n    *      http://www.apache.org/licenses/LICENSE-2.0\n    *\n    * Unless required by applicable law or agreed to in writing, software\n    * distributed under the License is distributed on an \"AS IS\" BASIS,\n    * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n    * See the License for the specific language governing permissions and\n    * limitations under the License.\n    */\n    class Token {\n        constructor(previous) {\n            this.previous = previous;\n        }\n        getPrevious() {\n            return this.previous;\n        }\n    }\n\n    /*\n    * Copyright 2013 ZXing authors\n    *\n    * Licensed under the Apache License, Version 2.0 (the \"License\");\n    * you may not use this file except in compliance with the License.\n    * You may obtain a copy of the License at\n    *\n    *      http://www.apache.org/licenses/LICENSE-2.0\n    *\n    * Unless required by applicable law or agreed to in writing, software\n    * distributed under the License is distributed on an \"AS IS\" BASIS,\n    * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n    * See the License for the specific language governing permissions and\n    * limitations under the License.\n    */\n    /*final*/ class SimpleToken extends Token {\n        constructor(previous, value, bitCount) {\n            super(previous);\n            this.value = value;\n            this.bitCount = bitCount;\n        }\n        /**\n         * @Override\n         */\n        appendTo(bitArray, text) {\n            bitArray.appendBits(this.value, this.bitCount);\n        }\n        add(value, bitCount) {\n            return new SimpleToken(this, value, bitCount);\n        }\n        addBinaryShift(start, byteCount) {\n            // no-op can't binary shift a simple token\n            console.warn('addBinaryShift on SimpleToken, this simply returns a copy of this token');\n            return new SimpleToken(this, start, byteCount);\n        }\n        /**\n         * @Override\n         */\n        toString() {\n            let value = this.value & ((1 << this.bitCount) - 1);\n            value |= 1 << this.bitCount;\n            return '<' + Integer.toBinaryString(value | (1 << this.bitCount)).substring(1) + '>';\n        }\n    }\n\n    /*\n    * Copyright 2013 ZXing authors\n    *\n    * Licensed under the Apache License, Version 2.0 (the \"License\");\n    * you may not use this file except in compliance with the License.\n    * You may obtain a copy of the License at\n    *\n    *      http://www.apache.org/licenses/LICENSE-2.0\n    *\n    * Unless required by applicable law or agreed to in writing, software\n    * distributed under the License is distributed on an \"AS IS\" BASIS,\n    * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n    * See the License for the specific language governing permissions and\n    * limitations under the License.\n    */\n    /*final*/ class BinaryShiftToken extends SimpleToken {\n        constructor(previous, binaryShiftStart, binaryShiftByteCount) {\n            super(previous, 0, 0);\n            this.binaryShiftStart = binaryShiftStart;\n            this.binaryShiftByteCount = binaryShiftByteCount;\n        }\n        /**\n         * @Override\n         */\n        appendTo(bitArray, text) {\n            for (let i = 0; i < this.binaryShiftByteCount; i++) {\n                if (i === 0 || (i === 31 && this.binaryShiftByteCount <= 62)) {\n                    // We need a header before the first character, and before\n                    // character 31 when the total byte code is <= 62\n                    bitArray.appendBits(31, 5); // BINARY_SHIFT\n                    if (this.binaryShiftByteCount > 62) {\n                        bitArray.appendBits(this.binaryShiftByteCount - 31, 16);\n                    }\n                    else if (i === 0) {\n                        // 1 <= binaryShiftByteCode <= 62\n                        bitArray.appendBits(Math.min(this.binaryShiftByteCount, 31), 5);\n                    }\n                    else {\n                        // 32 <= binaryShiftCount <= 62 and i == 31\n                        bitArray.appendBits(this.binaryShiftByteCount - 31, 5);\n                    }\n                }\n                bitArray.appendBits(text[this.binaryShiftStart + i], 8);\n            }\n        }\n        addBinaryShift(start, byteCount) {\n            // int bitCount = (byteCount * 8) + (byteCount <= 31 ? 10 : byteCount <= 62 ? 20 : 21);\n            return new BinaryShiftToken(this, start, byteCount);\n        }\n        /**\n         * @Override\n         */\n        toString() {\n            return '<' + this.binaryShiftStart + '::' + (this.binaryShiftStart + this.binaryShiftByteCount - 1) + '>';\n        }\n    }\n\n    function addBinaryShift(token, start, byteCount) {\n        // int bitCount = (byteCount * 8) + (byteCount <= 31 ? 10 : byteCount <= 62 ? 20 : 21);\n        return new BinaryShiftToken(token, start, byteCount);\n    }\n    function add(token, value, bitCount) {\n        return new SimpleToken(token, value, bitCount);\n    }\n\n    const /*final*/ MODE_NAMES = [\n        'UPPER',\n        'LOWER',\n        'DIGIT',\n        'MIXED',\n        'PUNCT'\n    ];\n    const /*final*/ MODE_UPPER = 0; // 5 bits\n    const /*final*/ MODE_LOWER = 1; // 5 bits\n    const /*final*/ MODE_DIGIT = 2; // 4 bits\n    const /*final*/ MODE_MIXED = 3; // 5 bits\n    const /*final*/ MODE_PUNCT = 4; // 5 bits\n    const EMPTY_TOKEN = new SimpleToken(null, 0, 0);\n\n    // The Latch Table shows, for each pair of Modes, the optimal method for\n    // getting from one mode to another.  In the worst possible case, this can\n    // be up to 14 bits.  In the best possible case, we are already there!\n    // The high half-word of each entry gives the number of bits.\n    // The low half-word of each entry are the actual bits necessary to change\n    const LATCH_TABLE = [\n        Int32Array.from([\n            0,\n            (5 << 16) + 28,\n            (5 << 16) + 30,\n            (5 << 16) + 29,\n            (10 << 16) + (29 << 5) + 30 // UPPER -> MIXED -> PUNCT\n        ]),\n        Int32Array.from([\n            (9 << 16) + (30 << 4) + 14,\n            0,\n            (5 << 16) + 30,\n            (5 << 16) + 29,\n            (10 << 16) + (29 << 5) + 30 // LOWER -> MIXED -> PUNCT\n        ]),\n        Int32Array.from([\n            (4 << 16) + 14,\n            (9 << 16) + (14 << 5) + 28,\n            0,\n            (9 << 16) + (14 << 5) + 29,\n            (14 << 16) + (14 << 10) + (29 << 5) + 30\n            // DIGIT -> UPPER -> MIXED -> PUNCT\n        ]),\n        Int32Array.from([\n            (5 << 16) + 29,\n            (5 << 16) + 28,\n            (10 << 16) + (29 << 5) + 30,\n            0,\n            (5 << 16) + 30 // MIXED -> PUNCT\n        ]),\n        Int32Array.from([\n            (5 << 16) + 31,\n            (10 << 16) + (31 << 5) + 28,\n            (10 << 16) + (31 << 5) + 30,\n            (10 << 16) + (31 << 5) + 29,\n            0\n        ])\n    ];\n\n    function static_SHIFT_TABLE(SHIFT_TABLE) {\n        for (let table /*Int32Array*/ of SHIFT_TABLE) {\n            Arrays.fill(table, -1);\n        }\n        SHIFT_TABLE[MODE_UPPER][MODE_PUNCT] = 0;\n        SHIFT_TABLE[MODE_LOWER][MODE_PUNCT] = 0;\n        SHIFT_TABLE[MODE_LOWER][MODE_UPPER] = 28;\n        SHIFT_TABLE[MODE_MIXED][MODE_PUNCT] = 0;\n        SHIFT_TABLE[MODE_DIGIT][MODE_PUNCT] = 0;\n        SHIFT_TABLE[MODE_DIGIT][MODE_UPPER] = 15;\n        return SHIFT_TABLE;\n    }\n    const /*final*/ SHIFT_TABLE = static_SHIFT_TABLE(Arrays.createInt32Array(6, 6)); // mode shift codes, per table\n\n    /*\n     * Copyright 2013 ZXing authors\n     *\n     * Licensed under the Apache License, Version 2.0 (the \"License\");\n     * you may not use this file except in compliance with the License.\n     * You may obtain a copy of the License at\n     *\n     *      http://www.apache.org/licenses/LICENSE-2.0\n     *\n     * Unless required by applicable law or agreed to in writing, software\n     * distributed under the License is distributed on an \"AS IS\" BASIS,\n     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n     * See the License for the specific language governing permissions and\n     * limitations under the License.\n     */\n    /**\n     * State represents all information about a sequence necessary to generate the current output.\n     * Note that a state is immutable.\n     */\n    /*final*/ class State {\n        constructor(token, mode, binaryBytes, bitCount) {\n            this.token = token;\n            this.mode = mode;\n            this.binaryShiftByteCount = binaryBytes;\n            this.bitCount = bitCount;\n            // Make sure we match the token\n            // int binaryShiftBitCount = (binaryShiftByteCount * 8) +\n            //    (binaryShiftByteCount === 0 ? 0 :\n            //     binaryShiftByteCount <= 31 ? 10 :\n            //     binaryShiftByteCount <= 62 ? 20 : 21);\n            // assert this.bitCount === token.getTotalBitCount() + binaryShiftBitCount;\n        }\n        getMode() {\n            return this.mode;\n        }\n        getToken() {\n            return this.token;\n        }\n        getBinaryShiftByteCount() {\n            return this.binaryShiftByteCount;\n        }\n        getBitCount() {\n            return this.bitCount;\n        }\n        // Create a new state representing this state with a latch to a (not\n        // necessary different) mode, and then a code.\n        latchAndAppend(mode, value) {\n            // assert binaryShiftByteCount === 0;\n            let bitCount = this.bitCount;\n            let token = this.token;\n            if (mode !== this.mode) {\n                let latch = LATCH_TABLE[this.mode][mode];\n                token = add(token, latch & 0xffff, latch >> 16);\n                bitCount += latch >> 16;\n            }\n            let latchModeBitCount = mode === MODE_DIGIT ? 4 : 5;\n            token = add(token, value, latchModeBitCount);\n            return new State(token, mode, 0, bitCount + latchModeBitCount);\n        }\n        // Create a new state representing this state, with a temporary shift\n        // to a different mode to output a single value.\n        shiftAndAppend(mode, value) {\n            // assert binaryShiftByteCount === 0 && this.mode !== mode;\n            let token = this.token;\n            let thisModeBitCount = this.mode === MODE_DIGIT ? 4 : 5;\n            // Shifts exist only to UPPER and PUNCT, both with tokens size 5.\n            token = add(token, SHIFT_TABLE[this.mode][mode], thisModeBitCount);\n            token = add(token, value, 5);\n            return new State(token, this.mode, 0, this.bitCount + thisModeBitCount + 5);\n        }\n        // Create a new state representing this state, but an additional character\n        // output in Binary Shift mode.\n        addBinaryShiftChar(index) {\n            let token = this.token;\n            let mode = this.mode;\n            let bitCount = this.bitCount;\n            if (this.mode === MODE_PUNCT || this.mode === MODE_DIGIT) {\n                // assert binaryShiftByteCount === 0;\n                let latch = LATCH_TABLE[mode][MODE_UPPER];\n                token = add(token, latch & 0xffff, latch >> 16);\n                bitCount += latch >> 16;\n                mode = MODE_UPPER;\n            }\n            let deltaBitCount = this.binaryShiftByteCount === 0 || this.binaryShiftByteCount === 31\n                ? 18\n                : this.binaryShiftByteCount === 62\n                    ? 9\n                    : 8;\n            let result = new State(token, mode, this.binaryShiftByteCount + 1, bitCount + deltaBitCount);\n            if (result.binaryShiftByteCount === 2047 + 31) {\n                // The string is as long as it's allowed to be.  We should end it.\n                result = result.endBinaryShift(index + 1);\n            }\n            return result;\n        }\n        // Create the state identical to this one, but we are no longer in\n        // Binary Shift mode.\n        endBinaryShift(index) {\n            if (this.binaryShiftByteCount === 0) {\n                return this;\n            }\n            let token = this.token;\n            token = addBinaryShift(token, index - this.binaryShiftByteCount, this.binaryShiftByteCount);\n            // assert token.getTotalBitCount() === this.bitCount;\n            return new State(token, this.mode, 0, this.bitCount);\n        }\n        // Returns true if \"this\" state is better (equal: or) to be in than \"that\"\n        // state under all possible circumstances.\n        isBetterThanOrEqualTo(other) {\n            let newModeBitCount = this.bitCount + (LATCH_TABLE[this.mode][other.mode] >> 16);\n            if (this.binaryShiftByteCount < other.binaryShiftByteCount) {\n                // add additional B/S encoding cost of other, if any\n                newModeBitCount +=\n                    State.calculateBinaryShiftCost(other) -\n                        State.calculateBinaryShiftCost(this);\n            }\n            else if (this.binaryShiftByteCount > other.binaryShiftByteCount &&\n                other.binaryShiftByteCount > 0) {\n                // maximum possible additional cost (it: h)\n                newModeBitCount += 10;\n            }\n            return newModeBitCount <= other.bitCount;\n        }\n        toBitArray(text) {\n            // Reverse the tokens, so that they are in the order that they should\n            // be output\n            let symbols = [];\n            for (let token = this.endBinaryShift(text.length).token; token !== null; token = token.getPrevious()) {\n                symbols.unshift(token);\n            }\n            let bitArray = new BitArray();\n            // Add each token to the result.\n            for (const symbol of symbols) {\n                symbol.appendTo(bitArray, text);\n            }\n            // assert bitArray.getSize() === this.bitCount;\n            return bitArray;\n        }\n        /**\n         * @Override\n         */\n        toString() {\n            return StringUtils.format('%s bits=%d bytes=%d', MODE_NAMES[this.mode], this.bitCount, this.binaryShiftByteCount);\n        }\n        static calculateBinaryShiftCost(state) {\n            if (state.binaryShiftByteCount > 62) {\n                return 21; // B/S with extended length\n            }\n            if (state.binaryShiftByteCount > 31) {\n                return 20; // two B/S\n            }\n            if (state.binaryShiftByteCount > 0) {\n                return 10; // one B/S\n            }\n            return 0;\n        }\n    }\n    State.INITIAL_STATE = new State(EMPTY_TOKEN, MODE_UPPER, 0, 0);\n\n    function static_CHAR_MAP(CHAR_MAP) {\n        const spaceCharCode = StringUtils.getCharCode(' ');\n        const pointCharCode = StringUtils.getCharCode('.');\n        const commaCharCode = StringUtils.getCharCode(',');\n        CHAR_MAP[MODE_UPPER][spaceCharCode] = 1;\n        const zUpperCharCode = StringUtils.getCharCode('Z');\n        const aUpperCharCode = StringUtils.getCharCode('A');\n        for (let c = aUpperCharCode; c <= zUpperCharCode; c++) {\n            CHAR_MAP[MODE_UPPER][c] = c - aUpperCharCode + 2;\n        }\n        CHAR_MAP[MODE_LOWER][spaceCharCode] = 1;\n        const zLowerCharCode = StringUtils.getCharCode('z');\n        const aLowerCharCode = StringUtils.getCharCode('a');\n        for (let c = aLowerCharCode; c <= zLowerCharCode; c++) {\n            CHAR_MAP[MODE_LOWER][c] = c - aLowerCharCode + 2;\n        }\n        CHAR_MAP[MODE_DIGIT][spaceCharCode] = 1;\n        const nineCharCode = StringUtils.getCharCode('9');\n        const zeroCharCode = StringUtils.getCharCode('0');\n        for (let c = zeroCharCode; c <= nineCharCode; c++) {\n            CHAR_MAP[MODE_DIGIT][c] = c - zeroCharCode + 2;\n        }\n        CHAR_MAP[MODE_DIGIT][commaCharCode] = 12;\n        CHAR_MAP[MODE_DIGIT][pointCharCode] = 13;\n        const mixedTable = [\n            '\\x00',\n            ' ',\n            '\\x01',\n            '\\x02',\n            '\\x03',\n            '\\x04',\n            '\\x05',\n            '\\x06',\n            '\\x07',\n            '\\b',\n            '\\t',\n            '\\n',\n            '\\x0b',\n            '\\f',\n            '\\r',\n            '\\x1b',\n            '\\x1c',\n            '\\x1d',\n            '\\x1e',\n            '\\x1f',\n            '@',\n            '\\\\',\n            '^',\n            '_',\n            '`',\n            '|',\n            '~',\n            '\\x7f'\n        ];\n        for (let i = 0; i < mixedTable.length; i++) {\n            CHAR_MAP[MODE_MIXED][StringUtils.getCharCode(mixedTable[i])] = i;\n        }\n        const punctTable = [\n            '\\x00',\n            '\\r',\n            '\\x00',\n            '\\x00',\n            '\\x00',\n            '\\x00',\n            '!',\n            '\\'',\n            '#',\n            '$',\n            '%',\n            '&',\n            '\\'',\n            '(',\n            ')',\n            '*',\n            '+',\n            ',',\n            '-',\n            '.',\n            '/',\n            ':',\n            ';',\n            '<',\n            '=',\n            '>',\n            '?',\n            '[',\n            ']',\n            '{',\n            '}'\n        ];\n        for (let i = 0; i < punctTable.length; i++) {\n            if (StringUtils.getCharCode(punctTable[i]) > 0) {\n                CHAR_MAP[MODE_PUNCT][StringUtils.getCharCode(punctTable[i])] = i;\n            }\n        }\n        return CHAR_MAP;\n    }\n    const CHAR_MAP = static_CHAR_MAP(Arrays.createInt32Array(5, 256));\n\n    /*\n     * Copyright 2013 ZXing authors\n     *\n     * Licensed under the Apache License, Version 2.0 (the \"License\");\n     * you may not use this file except in compliance with the License.\n     * You may obtain a copy of the License at\n     *\n     *      http://www.apache.org/licenses/LICENSE-2.0\n     *\n     * Unless required by applicable law or agreed to in writing, software\n     * distributed under the License is distributed on an \"AS IS\" BASIS,\n     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n     * See the License for the specific language governing permissions and\n     * limitations under the License.\n     */\n    /**\n     * This produces nearly optimal encodings of text into the first-level of\n     * encoding used by Aztec code.\n     *\n     * It uses a dynamic algorithm.  For each prefix of the string, it determines\n     * a set of encodings that could lead to this prefix.  We repeatedly add a\n     * character and generate a new set of optimal encodings until we have read\n     * through the entire input.\n     *\n     * @author Frank Yellin\n     * @author Rustam Abdullaev\n     */\n    /*public final*/ class HighLevelEncoder {\n        constructor(text) {\n            this.text = text;\n        }\n        /**\n         * @return text represented by this encoder encoded as a {@link BitArray}\n         */\n        encode() {\n            const spaceCharCode = StringUtils.getCharCode(' ');\n            const lineBreakCharCode = StringUtils.getCharCode('\\n');\n            let states = Collections.singletonList(State.INITIAL_STATE);\n            for (let index = 0; index < this.text.length; index++) {\n                let pairCode;\n                let nextChar = index + 1 < this.text.length ? this.text[index + 1] : 0;\n                switch (this.text[index]) {\n                    case StringUtils.getCharCode('\\r'):\n                        pairCode = nextChar === lineBreakCharCode ? 2 : 0;\n                        break;\n                    case StringUtils.getCharCode('.'):\n                        pairCode = nextChar === spaceCharCode ? 3 : 0;\n                        break;\n                    case StringUtils.getCharCode(','):\n                        pairCode = nextChar === spaceCharCode ? 4 : 0;\n                        break;\n                    case StringUtils.getCharCode(':'):\n                        pairCode = nextChar === spaceCharCode ? 5 : 0;\n                        break;\n                    default:\n                        pairCode = 0;\n                }\n                if (pairCode > 0) {\n                    // We have one of the four special PUNCT pairs.  Treat them specially.\n                    // Get a new set of states for the two new characters.\n                    states = HighLevelEncoder.updateStateListForPair(states, index, pairCode);\n                    index++;\n                }\n                else {\n                    // Get a new set of states for the new character.\n                    states = this.updateStateListForChar(states, index);\n                }\n            }\n            // We are left with a set of states.  Find the shortest one.\n            const minState = Collections.min(states, (a, b) => {\n                return a.getBitCount() - b.getBitCount();\n            });\n            // Convert it to a bit array, and return.\n            return minState.toBitArray(this.text);\n        }\n        // We update a set of states for a new character by updating each state\n        // for the new character, merging the results, and then removing the\n        // non-optimal states.\n        updateStateListForChar(states, index) {\n            const result = [];\n            for (let state /*State*/ of states) {\n                this.updateStateForChar(state, index, result);\n            }\n            return HighLevelEncoder.simplifyStates(result);\n        }\n        // Return a set of states that represent the possible ways of updating this\n        // state for the next character.  The resulting set of states are added to\n        // the \"result\" list.\n        updateStateForChar(state, index, result) {\n            let ch = (this.text[index] & 0xff);\n            let charInCurrentTable = CHAR_MAP[state.getMode()][ch] > 0;\n            let stateNoBinary = null;\n            for (let mode /*int*/ = 0; mode <= MODE_PUNCT; mode++) {\n                let charInMode = CHAR_MAP[mode][ch];\n                if (charInMode > 0) {\n                    if (stateNoBinary == null) {\n                        // Only create stateNoBinary the first time it's required.\n                        stateNoBinary = state.endBinaryShift(index);\n                    }\n                    // Try generating the character by latching to its mode\n                    if (!charInCurrentTable ||\n                        mode === state.getMode() ||\n                        mode === MODE_DIGIT) {\n                        // If the character is in the current table, we don't want to latch to\n                        // any other mode except possibly digit (which uses only 4 bits).  Any\n                        // other latch would be equally successful *after* this character, and\n                        // so wouldn't save any bits.\n                        const latchState = stateNoBinary.latchAndAppend(mode, charInMode);\n                        result.push(latchState);\n                    }\n                    // Try generating the character by switching to its mode.\n                    if (!charInCurrentTable &&\n                        SHIFT_TABLE[state.getMode()][mode] >= 0) {\n                        // It never makes sense to temporarily shift to another mode if the\n                        // character exists in the current mode.  That can never save bits.\n                        const shiftState = stateNoBinary.shiftAndAppend(mode, charInMode);\n                        result.push(shiftState);\n                    }\n                }\n            }\n            if (state.getBinaryShiftByteCount() > 0 ||\n                CHAR_MAP[state.getMode()][ch] === 0) {\n                // It's never worthwhile to go into binary shift mode if you're not already\n                // in binary shift mode, and the character exists in your current mode.\n                // That can never save bits over just outputting the char in the current mode.\n                let binaryState = state.addBinaryShiftChar(index);\n                result.push(binaryState);\n            }\n        }\n        static updateStateListForPair(states, index, pairCode) {\n            const result = [];\n            for (let state /*State*/ of states) {\n                this.updateStateForPair(state, index, pairCode, result);\n            }\n            return this.simplifyStates(result);\n        }\n        static updateStateForPair(state, index, pairCode, result) {\n            let stateNoBinary = state.endBinaryShift(index);\n            // Possibility 1.  Latch to C.MODE_PUNCT, and then append this code\n            result.push(stateNoBinary.latchAndAppend(MODE_PUNCT, pairCode));\n            if (state.getMode() !== MODE_PUNCT) {\n                // Possibility 2.  Shift to C.MODE_PUNCT, and then append this code.\n                // Every state except C.MODE_PUNCT (handled above) can shift\n                result.push(stateNoBinary.shiftAndAppend(MODE_PUNCT, pairCode));\n            }\n            if (pairCode === 3 || pairCode === 4) {\n                // both characters are in DIGITS.  Sometimes better to just add two digits\n                let digitState = stateNoBinary\n                    .latchAndAppend(MODE_DIGIT, 16 - pairCode) // period or comma in DIGIT\n                    .latchAndAppend(MODE_DIGIT, 1); // space in DIGIT\n                result.push(digitState);\n            }\n            if (state.getBinaryShiftByteCount() > 0) {\n                // It only makes sense to do the characters as binary if we're already\n                // in binary mode.\n                let binaryState = state\n                    .addBinaryShiftChar(index)\n                    .addBinaryShiftChar(index + 1);\n                result.push(binaryState);\n            }\n        }\n        static simplifyStates(states) {\n            let result = [];\n            for (const newState of states) {\n                let add = true;\n                for (const oldState of result) {\n                    if (oldState.isBetterThanOrEqualTo(newState)) {\n                        add = false;\n                        break;\n                    }\n                    if (newState.isBetterThanOrEqualTo(oldState)) {\n                        // iterator.remove();\n                        result = result.filter(x => x !== oldState); // remove old state\n                    }\n                }\n                if (add) {\n                    result.push(newState);\n                }\n            }\n            return result;\n        }\n    }\n\n    /*\n     * Copyright 2013 ZXing authors\n     *\n     * Licensed under the Apache License, Version 2.0 (the \"License\");\n     * you may not use this file except in compliance with the License.\n     * You may obtain a copy of the License at\n     *\n     *      http://www.apache.org/licenses/LICENSE-2.0\n     *\n     * Unless required by applicable law or agreed to in writing, software\n     * distributed under the License is distributed on an \"AS IS\" BASIS,\n     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n     * See the License for the specific language governing permissions and\n     * limitations under the License.\n     */\n    // package com.google.zxing.aztec.encoder;\n    // import com.google.zxing.common.BitArray;\n    // import com.google.zxing.common.BitMatrix;\n    // import com.google.zxing.common.reedsolomon.GenericGF;\n    // import com.google.zxing.common.reedsolomon.ReedSolomonEncoder;\n    /**\n     * Generates Aztec 2D barcodes.\n     *\n     * @author Rustam Abdullaev\n     */\n    /*public final*/ class Encoder$1 {\n        constructor() {\n        }\n        /**\n         * Encodes the given binary content as an Aztec symbol\n         *\n         * @param data input data string\n         * @return Aztec symbol matrix with metadata\n         */\n        static encodeBytes(data) {\n            return Encoder$1.encode(data, Encoder$1.DEFAULT_EC_PERCENT, Encoder$1.DEFAULT_AZTEC_LAYERS);\n        }\n        /**\n         * Encodes the given binary content as an Aztec symbol\n         *\n         * @param data input data string\n         * @param minECCPercent minimal percentage of error check words (According to ISO/IEC 24778:2008,\n         *                      a minimum of 23% + 3 words is recommended)\n         * @param userSpecifiedLayers if non-zero, a user-specified value for the number of layers\n         * @return Aztec symbol matrix with metadata\n         */\n        static encode(data, minECCPercent, userSpecifiedLayers) {\n            // High-level encode\n            let bits = new HighLevelEncoder(data).encode();\n            // stuff bits and choose symbol size\n            let eccBits = Integer.truncDivision((bits.getSize() * minECCPercent), 100) + 11;\n            let totalSizeBits = bits.getSize() + eccBits;\n            let compact;\n            let layers;\n            let totalBitsInLayer;\n            let wordSize;\n            let stuffedBits;\n            if (userSpecifiedLayers !== Encoder$1.DEFAULT_AZTEC_LAYERS) {\n                compact = userSpecifiedLayers < 0;\n                layers = Math.abs(userSpecifiedLayers);\n                if (layers > (compact ? Encoder$1.MAX_NB_BITS_COMPACT : Encoder$1.MAX_NB_BITS)) {\n                    throw new IllegalArgumentException(StringUtils.format('Illegal value %s for layers', userSpecifiedLayers));\n                }\n                totalBitsInLayer = Encoder$1.totalBitsInLayer(layers, compact);\n                wordSize = Encoder$1.WORD_SIZE[layers];\n                let usableBitsInLayers = totalBitsInLayer - (totalBitsInLayer % wordSize);\n                stuffedBits = Encoder$1.stuffBits(bits, wordSize);\n                if (stuffedBits.getSize() + eccBits > usableBitsInLayers) {\n                    throw new IllegalArgumentException('Data to large for user specified layer');\n                }\n                if (compact && stuffedBits.getSize() > wordSize * 64) {\n                    // Compact format only allows 64 data words, though C4 can hold more words than that\n                    throw new IllegalArgumentException('Data to large for user specified layer');\n                }\n            }\n            else {\n                wordSize = 0;\n                stuffedBits = null;\n                // We look at the possible table sizes in the order Compact1, Compact2, Compact3,\n                // Compact4, Normal4,...  Normal(i) for i < 4 isn't typically used since Compact(i+1)\n                // is the same size, but has more data.\n                for (let i /*int*/ = 0;; i++) {\n                    if (i > Encoder$1.MAX_NB_BITS) {\n                        throw new IllegalArgumentException('Data too large for an Aztec code');\n                    }\n                    compact = i <= 3;\n                    layers = compact ? i + 1 : i;\n                    totalBitsInLayer = Encoder$1.totalBitsInLayer(layers, compact);\n                    if (totalSizeBits > totalBitsInLayer) {\n                        continue;\n                    }\n                    // [Re]stuff the bits if this is the first opportunity, or if the\n                    // wordSize has changed\n                    if (stuffedBits == null || wordSize !== Encoder$1.WORD_SIZE[layers]) {\n                        wordSize = Encoder$1.WORD_SIZE[layers];\n                        stuffedBits = Encoder$1.stuffBits(bits, wordSize);\n                    }\n                    let usableBitsInLayers = totalBitsInLayer - (totalBitsInLayer % wordSize);\n                    if (compact && stuffedBits.getSize() > wordSize * 64) {\n                        // Compact format only allows 64 data words, though C4 can hold more words than that\n                        continue;\n                    }\n                    if (stuffedBits.getSize() + eccBits <= usableBitsInLayers) {\n                        break;\n                    }\n                }\n            }\n            let messageBits = Encoder$1.generateCheckWords(stuffedBits, totalBitsInLayer, wordSize);\n            // generate mode message\n            let messageSizeInWords = stuffedBits.getSize() / wordSize;\n            let modeMessage = Encoder$1.generateModeMessage(compact, layers, messageSizeInWords);\n            // allocate symbol\n            let baseMatrixSize = (compact ? 11 : 14) + layers * 4; // not including alignment lines\n            let alignmentMap = new Int32Array(baseMatrixSize);\n            let matrixSize;\n            if (compact) {\n                // no alignment marks in compact mode, alignmentMap is a no-op\n                matrixSize = baseMatrixSize;\n                for (let i /*int*/ = 0; i < alignmentMap.length; i++) {\n                    alignmentMap[i] = i;\n                }\n            }\n            else {\n                matrixSize = baseMatrixSize + 1 + 2 * Integer.truncDivision((Integer.truncDivision(baseMatrixSize, 2) - 1), 15);\n                let origCenter = Integer.truncDivision(baseMatrixSize, 2);\n                let center = Integer.truncDivision(matrixSize, 2);\n                for (let i /*int*/ = 0; i < origCenter; i++) {\n                    let newOffset = i + Integer.truncDivision(i, 15);\n                    alignmentMap[origCenter - i - 1] = center - newOffset - 1;\n                    alignmentMap[origCenter + i] = center + newOffset + 1;\n                }\n            }\n            let matrix = new BitMatrix(matrixSize);\n            // draw data bits\n            for (let i /*int*/ = 0, rowOffset = 0; i < layers; i++) {\n                let rowSize = (layers - i) * 4 + (compact ? 9 : 12);\n                for (let j /*int*/ = 0; j < rowSize; j++) {\n                    let columnOffset = j * 2;\n                    for (let k /*int*/ = 0; k < 2; k++) {\n                        if (messageBits.get(rowOffset + columnOffset + k)) {\n                            matrix.set(alignmentMap[i * 2 + k], alignmentMap[i * 2 + j]);\n                        }\n                        if (messageBits.get(rowOffset + rowSize * 2 + columnOffset + k)) {\n                            matrix.set(alignmentMap[i * 2 + j], alignmentMap[baseMatrixSize - 1 - i * 2 - k]);\n                        }\n                        if (messageBits.get(rowOffset + rowSize * 4 + columnOffset + k)) {\n                            matrix.set(alignmentMap[baseMatrixSize - 1 - i * 2 - k], alignmentMap[baseMatrixSize - 1 - i * 2 - j]);\n                        }\n                        if (messageBits.get(rowOffset + rowSize * 6 + columnOffset + k)) {\n                            matrix.set(alignmentMap[baseMatrixSize - 1 - i * 2 - j], alignmentMap[i * 2 + k]);\n                        }\n                    }\n                }\n                rowOffset += rowSize * 8;\n            }\n            // draw mode message\n            Encoder$1.drawModeMessage(matrix, compact, matrixSize, modeMessage);\n            // draw alignment marks\n            if (compact) {\n                Encoder$1.drawBullsEye(matrix, Integer.truncDivision(matrixSize, 2), 5);\n            }\n            else {\n                Encoder$1.drawBullsEye(matrix, Integer.truncDivision(matrixSize, 2), 7);\n                for (let i /*int*/ = 0, j = 0; i < Integer.truncDivision(baseMatrixSize, 2) - 1; i += 15, j += 16) {\n                    for (let k /*int*/ = Integer.truncDivision(matrixSize, 2) & 1; k < matrixSize; k += 2) {\n                        matrix.set(Integer.truncDivision(matrixSize, 2) - j, k);\n                        matrix.set(Integer.truncDivision(matrixSize, 2) + j, k);\n                        matrix.set(k, Integer.truncDivision(matrixSize, 2) - j);\n                        matrix.set(k, Integer.truncDivision(matrixSize, 2) + j);\n                    }\n                }\n            }\n            let aztec = new AztecCode();\n            aztec.setCompact(compact);\n            aztec.setSize(matrixSize);\n            aztec.setLayers(layers);\n            aztec.setCodeWords(messageSizeInWords);\n            aztec.setMatrix(matrix);\n            return aztec;\n        }\n        static drawBullsEye(matrix, center, size) {\n            for (let i /*int*/ = 0; i < size; i += 2) {\n                for (let j /*int*/ = center - i; j <= center + i; j++) {\n                    matrix.set(j, center - i);\n                    matrix.set(j, center + i);\n                    matrix.set(center - i, j);\n                    matrix.set(center + i, j);\n                }\n            }\n            matrix.set(center - size, center - size);\n            matrix.set(center - size + 1, center - size);\n            matrix.set(center - size, center - size + 1);\n            matrix.set(center + size, center - size);\n            matrix.set(center + size, center - size + 1);\n            matrix.set(center + size, center + size - 1);\n        }\n        static generateModeMessage(compact, layers, messageSizeInWords) {\n            let modeMessage = new BitArray();\n            if (compact) {\n                modeMessage.appendBits(layers - 1, 2);\n                modeMessage.appendBits(messageSizeInWords - 1, 6);\n                modeMessage = Encoder$1.generateCheckWords(modeMessage, 28, 4);\n            }\n            else {\n                modeMessage.appendBits(layers - 1, 5);\n                modeMessage.appendBits(messageSizeInWords - 1, 11);\n                modeMessage = Encoder$1.generateCheckWords(modeMessage, 40, 4);\n            }\n            return modeMessage;\n        }\n        static drawModeMessage(matrix, compact, matrixSize, modeMessage) {\n            let center = Integer.truncDivision(matrixSize, 2);\n            if (compact) {\n                for (let i /*int*/ = 0; i < 7; i++) {\n                    let offset = center - 3 + i;\n                    if (modeMessage.get(i)) {\n                        matrix.set(offset, center - 5);\n                    }\n                    if (modeMessage.get(i + 7)) {\n                        matrix.set(center + 5, offset);\n                    }\n                    if (modeMessage.get(20 - i)) {\n                        matrix.set(offset, center + 5);\n                    }\n                    if (modeMessage.get(27 - i)) {\n                        matrix.set(center - 5, offset);\n                    }\n                }\n            }\n            else {\n                for (let i /*int*/ = 0; i < 10; i++) {\n                    let offset = center - 5 + i + Integer.truncDivision(i, 5);\n                    if (modeMessage.get(i)) {\n                        matrix.set(offset, center - 7);\n                    }\n                    if (modeMessage.get(i + 10)) {\n                        matrix.set(center + 7, offset);\n                    }\n                    if (modeMessage.get(29 - i)) {\n                        matrix.set(offset, center + 7);\n                    }\n                    if (modeMessage.get(39 - i)) {\n                        matrix.set(center - 7, offset);\n                    }\n                }\n            }\n        }\n        static generateCheckWords(bitArray, totalBits, wordSize) {\n            // bitArray is guaranteed to be a multiple of the wordSize, so no padding needed\n            let messageSizeInWords = bitArray.getSize() / wordSize;\n            let rs = new ReedSolomonEncoder(Encoder$1.getGF(wordSize));\n            let totalWords = Integer.truncDivision(totalBits, wordSize);\n            let messageWords = Encoder$1.bitsToWords(bitArray, wordSize, totalWords);\n            rs.encode(messageWords, totalWords - messageSizeInWords);\n            let startPad = totalBits % wordSize;\n            let messageBits = new BitArray();\n            messageBits.appendBits(0, startPad);\n            for (const messageWord /*: int*/ of Array.from(messageWords)) {\n                messageBits.appendBits(messageWord, wordSize);\n            }\n            return messageBits;\n        }\n        static bitsToWords(stuffedBits, wordSize, totalWords) {\n            let message = new Int32Array(totalWords);\n            let i;\n            let n;\n            for (i = 0, n = stuffedBits.getSize() / wordSize; i < n; i++) {\n                let value = 0;\n                for (let j /*int*/ = 0; j < wordSize; j++) {\n                    value |= stuffedBits.get(i * wordSize + j) ? (1 << wordSize - j - 1) : 0;\n                }\n                message[i] = value;\n            }\n            return message;\n        }\n        static getGF(wordSize) {\n            switch (wordSize) {\n                case 4:\n                    return GenericGF.AZTEC_PARAM;\n                case 6:\n                    return GenericGF.AZTEC_DATA_6;\n                case 8:\n                    return GenericGF.AZTEC_DATA_8;\n                case 10:\n                    return GenericGF.AZTEC_DATA_10;\n                case 12:\n                    return GenericGF.AZTEC_DATA_12;\n                default:\n                    throw new IllegalArgumentException('Unsupported word size ' + wordSize);\n            }\n        }\n        static stuffBits(bits, wordSize) {\n            let out = new BitArray();\n            let n = bits.getSize();\n            let mask = (1 << wordSize) - 2;\n            for (let i /*int*/ = 0; i < n; i += wordSize) {\n                let word = 0;\n                for (let j /*int*/ = 0; j < wordSize; j++) {\n                    if (i + j >= n || bits.get(i + j)) {\n                        word |= 1 << (wordSize - 1 - j);\n                    }\n                }\n                if ((word & mask) === mask) {\n                    out.appendBits(word & mask, wordSize);\n                    i--;\n                }\n                else if ((word & mask) === 0) {\n                    out.appendBits(word | 1, wordSize);\n                    i--;\n                }\n                else {\n                    out.appendBits(word, wordSize);\n                }\n            }\n            return out;\n        }\n        static totalBitsInLayer(layers, compact) {\n            return ((compact ? 88 : 112) + 16 * layers) * layers;\n        }\n    }\n    Encoder$1.DEFAULT_EC_PERCENT = 33; // default minimal percentage of error check words\n    Encoder$1.DEFAULT_AZTEC_LAYERS = 0;\n    Encoder$1.MAX_NB_BITS = 32;\n    Encoder$1.MAX_NB_BITS_COMPACT = 4;\n    Encoder$1.WORD_SIZE = Int32Array.from([\n        4, 6, 6, 8, 8, 8, 8, 8, 8, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,\n        12, 12, 12, 12, 12, 12, 12, 12, 12, 12\n    ]);\n\n    /*\n    * Copyright 2013 ZXing authors\n    *\n    * Licensed under the Apache License, Version 2.0 (the \"License\");\n    * you may not use this file except in compliance with the License.\n    * You may obtain a copy of the License at\n    *\n    *      http://www.apache.org/licenses/LICENSE-2.0\n    *\n    * Unless required by applicable law or agreed to in writing, software\n    * distributed under the License is distributed on an \"AS IS\" BASIS,\n    * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n    * See the License for the specific language governing permissions and\n    * limitations under the License.\n    */\n    /**\n     * Renders an Aztec code as a {@link BitMatrix}.\n     */\n    /*public final*/ class AztecWriter {\n        // @Override\n        encode(contents, format, width, height) {\n            return this.encodeWithHints(contents, format, width, height, null);\n        }\n        // @Override\n        encodeWithHints(contents, format, width, height, hints) {\n            let charset = StandardCharsets.ISO_8859_1;\n            let eccPercent = Encoder$1.DEFAULT_EC_PERCENT;\n            let layers = Encoder$1.DEFAULT_AZTEC_LAYERS;\n            if (hints != null) {\n                if (hints.has(EncodeHintType$1.CHARACTER_SET)) {\n                    charset = Charset.forName(hints.get(EncodeHintType$1.CHARACTER_SET).toString());\n                }\n                if (hints.has(EncodeHintType$1.ERROR_CORRECTION)) {\n                    eccPercent = Integer.parseInt(hints.get(EncodeHintType$1.ERROR_CORRECTION).toString());\n                }\n                if (hints.has(EncodeHintType$1.AZTEC_LAYERS)) {\n                    layers = Integer.parseInt(hints.get(EncodeHintType$1.AZTEC_LAYERS).toString());\n                }\n            }\n            return AztecWriter.encodeLayers(contents, format, width, height, charset, eccPercent, layers);\n        }\n        static encodeLayers(contents, format, width, height, charset, eccPercent, layers) {\n            if (format !== BarcodeFormat$1.AZTEC) {\n                throw new IllegalArgumentException('Can only encode AZTEC, but got ' + format);\n            }\n            let aztec = Encoder$1.encode(StringUtils.getBytes(contents, charset), eccPercent, layers);\n            return AztecWriter.renderResult(aztec, width, height);\n        }\n        static renderResult(code, width, height) {\n            let input = code.getMatrix();\n            if (input == null) {\n                throw new IllegalStateException();\n            }\n            let inputWidth = input.getWidth();\n            let inputHeight = input.getHeight();\n            let outputWidth = Math.max(width, inputWidth);\n            let outputHeight = Math.max(height, inputHeight);\n            let multiple = Math.min(outputWidth / inputWidth, outputHeight / inputHeight);\n            let leftPadding = (outputWidth - (inputWidth * multiple)) / 2;\n            let topPadding = (outputHeight - (inputHeight * multiple)) / 2;\n            let output = new BitMatrix(outputWidth, outputHeight);\n            for (let inputY /*int*/ = 0, outputY = topPadding; inputY < inputHeight; inputY++, outputY += multiple) {\n                // Write the contents of this row of the barcode\n                for (let inputX /*int*/ = 0, outputX = leftPadding; inputX < inputWidth; inputX++, outputX += multiple) {\n                    if (input.get(inputX, inputY)) {\n                        output.setRegion(outputX, outputY, multiple, multiple);\n                    }\n                }\n            }\n            return output;\n        }\n    }\n\n    exports.AbstractExpandedDecoder = AbstractExpandedDecoder;\n    exports.ArgumentException = ArgumentException;\n    exports.ArithmeticException = ArithmeticException;\n    exports.AztecCode = AztecCode;\n    exports.AztecCodeReader = AztecReader;\n    exports.AztecCodeWriter = AztecWriter;\n    exports.AztecDecoder = Decoder;\n    exports.AztecDetector = Detector;\n    exports.AztecDetectorResult = AztecDetectorResult;\n    exports.AztecEncoder = Encoder$1;\n    exports.AztecHighLevelEncoder = HighLevelEncoder;\n    exports.AztecPoint = Point;\n    exports.BarcodeFormat = BarcodeFormat$1;\n    exports.Binarizer = Binarizer;\n    exports.BinaryBitmap = BinaryBitmap;\n    exports.BitArray = BitArray;\n    exports.BitMatrix = BitMatrix;\n    exports.BitSource = BitSource;\n    exports.BrowserAztecCodeReader = BrowserAztecCodeReader;\n    exports.BrowserBarcodeReader = BrowserBarcodeReader;\n    exports.BrowserCodeReader = BrowserCodeReader;\n    exports.BrowserDatamatrixCodeReader = BrowserDatamatrixCodeReader;\n    exports.BrowserMultiFormatReader = BrowserMultiFormatReader;\n    exports.BrowserPDF417Reader = BrowserPDF417Reader;\n    exports.BrowserQRCodeReader = BrowserQRCodeReader;\n    exports.BrowserQRCodeSvgWriter = BrowserQRCodeSvgWriter;\n    exports.CharacterSetECI = CharacterSetECI;\n    exports.ChecksumException = ChecksumException;\n    exports.Code128Reader = Code128Reader;\n    exports.Code39Reader = Code39Reader;\n    exports.DataMatrixDecodedBitStreamParser = DecodedBitStreamParser;\n    exports.DataMatrixReader = DataMatrixReader;\n    exports.DecodeHintType = DecodeHintType$1;\n    exports.DecoderResult = DecoderResult;\n    exports.DefaultGridSampler = DefaultGridSampler;\n    exports.DetectorResult = DetectorResult;\n    exports.EAN13Reader = EAN13Reader;\n    exports.EncodeHintType = EncodeHintType$1;\n    exports.Exception = Exception;\n    exports.FormatException = FormatException;\n    exports.GenericGF = GenericGF;\n    exports.GenericGFPoly = GenericGFPoly;\n    exports.GlobalHistogramBinarizer = GlobalHistogramBinarizer;\n    exports.GridSampler = GridSampler;\n    exports.GridSamplerInstance = GridSamplerInstance;\n    exports.HTMLCanvasElementLuminanceSource = HTMLCanvasElementLuminanceSource;\n    exports.HybridBinarizer = HybridBinarizer;\n    exports.ITFReader = ITFReader;\n    exports.IllegalArgumentException = IllegalArgumentException;\n    exports.IllegalStateException = IllegalStateException;\n    exports.InvertedLuminanceSource = InvertedLuminanceSource;\n    exports.LuminanceSource = LuminanceSource;\n    exports.MathUtils = MathUtils;\n    exports.MultiFormatOneDReader = MultiFormatOneDReader;\n    exports.MultiFormatReader = MultiFormatReader;\n    exports.MultiFormatWriter = MultiFormatWriter;\n    exports.NotFoundException = NotFoundException;\n    exports.OneDReader = OneDReader;\n    exports.PDF417DecodedBitStreamParser = DecodedBitStreamParser$2;\n    exports.PDF417DecoderErrorCorrection = ErrorCorrection;\n    exports.PDF417Reader = PDF417Reader;\n    exports.PDF417ResultMetadata = PDF417ResultMetadata;\n    exports.PerspectiveTransform = PerspectiveTransform;\n    exports.PlanarYUVLuminanceSource = PlanarYUVLuminanceSource;\n    exports.QRCodeByteMatrix = ByteMatrix;\n    exports.QRCodeDataMask = DataMask;\n    exports.QRCodeDecodedBitStreamParser = DecodedBitStreamParser$1;\n    exports.QRCodeDecoderErrorCorrectionLevel = ErrorCorrectionLevel;\n    exports.QRCodeDecoderFormatInformation = FormatInformation;\n    exports.QRCodeEncoder = Encoder;\n    exports.QRCodeEncoderQRCode = QRCode;\n    exports.QRCodeMaskUtil = MaskUtil;\n    exports.QRCodeMatrixUtil = MatrixUtil;\n    exports.QRCodeMode = Mode$1;\n    exports.QRCodeReader = QRCodeReader;\n    exports.QRCodeVersion = Version$1;\n    exports.QRCodeWriter = QRCodeWriter;\n    exports.RGBLuminanceSource = RGBLuminanceSource;\n    exports.RSS14Reader = RSS14Reader;\n    exports.RSSExpandedReader = RSSExpandedReader;\n    exports.ReaderException = ReaderException;\n    exports.ReedSolomonDecoder = ReedSolomonDecoder;\n    exports.ReedSolomonEncoder = ReedSolomonEncoder;\n    exports.ReedSolomonException = ReedSolomonException;\n    exports.Result = Result;\n    exports.ResultMetadataType = ResultMetadataType$1;\n    exports.ResultPoint = ResultPoint;\n    exports.StringUtils = StringUtils;\n    exports.UnsupportedOperationException = UnsupportedOperationException;\n    exports.VideoInputDevice = VideoInputDevice;\n    exports.WhiteRectangleDetector = WhiteRectangleDetector;\n    exports.WriterException = WriterException;\n    exports.ZXingArrays = Arrays;\n    exports.ZXingCharset = Charset;\n    exports.ZXingInteger = Integer;\n    exports.ZXingStandardCharsets = StandardCharsets;\n    exports.ZXingStringBuilder = StringBuilder;\n    exports.ZXingStringEncoding = StringEncoding;\n    exports.ZXingSystem = System;\n    exports.createAbstractExpandedDecoder = createDecoder;\n\n    Object.defineProperty(exports, '__esModule', { value: true });\n\n})));\n", "/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n", "/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n", "var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n", "var root = require('./_root');\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n *   console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n  return root.Date.now();\n};\n\nmodule.exports = now;\n", "/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n  var index = string.length;\n\n  while (index-- && reWhitespace.test(string.charAt(index))) {}\n  return index;\n}\n\nmodule.exports = trimmedEndIndex;\n", "var trimmedEndIndex = require('./_trimmedEndIndex');\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n  return string\n    ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n    : string;\n}\n\nmodule.exports = baseTrim;\n", "var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n", "var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n  var isOwn = hasOwnProperty.call(value, symToStringTag),\n      tag = value[symToStringTag];\n\n  try {\n    value[symToStringTag] = undefined;\n    var unmasked = true;\n  } catch (e) {}\n\n  var result = nativeObjectToString.call(value);\n  if (unmasked) {\n    if (isOwn) {\n      value[symToStringTag] = tag;\n    } else {\n      delete value[symToStringTag];\n    }\n  }\n  return result;\n}\n\nmodule.exports = getRawTag;\n", "/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n  return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n", "var Symbol = require('./_Symbol'),\n    getRawTag = require('./_getRawTag'),\n    objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n    undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n  if (value == null) {\n    return value === undefined ? undefinedTag : nullTag;\n  }\n  return (symToStringTag && symToStringTag in Object(value))\n    ? getRawTag(value)\n    : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n", "/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n", "var baseGetTag = require('./_baseGetTag'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n  return typeof value == 'symbol' ||\n    (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n", "var baseTrim = require('./_baseTrim'),\n    isObject = require('./isObject'),\n    isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n  if (typeof value == 'number') {\n    return value;\n  }\n  if (isSymbol(value)) {\n    return NAN;\n  }\n  if (isObject(value)) {\n    var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n    value = isObject(other) ? (other + '') : other;\n  }\n  if (typeof value != 'string') {\n    return value === 0 ? value : +value;\n  }\n  value = baseTrim(value);\n  var isBinary = reIsBinary.test(value);\n  return (isBinary || reIsOctal.test(value))\n    ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n    : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n", "var isObject = require('./isObject'),\n    now = require('./now'),\n    toNumber = require('./toNumber');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n    nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n *  Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n *  The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n *  Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n *   'leading': true,\n *   'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n  var lastArgs,\n      lastThis,\n      maxWait,\n      result,\n      timerId,\n      lastCallTime,\n      lastInvokeTime = 0,\n      leading = false,\n      maxing = false,\n      trailing = true;\n\n  if (typeof func != 'function') {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  wait = toNumber(wait) || 0;\n  if (isObject(options)) {\n    leading = !!options.leading;\n    maxing = 'maxWait' in options;\n    maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n    trailing = 'trailing' in options ? !!options.trailing : trailing;\n  }\n\n  function invokeFunc(time) {\n    var args = lastArgs,\n        thisArg = lastThis;\n\n    lastArgs = lastThis = undefined;\n    lastInvokeTime = time;\n    result = func.apply(thisArg, args);\n    return result;\n  }\n\n  function leadingEdge(time) {\n    // Reset any `maxWait` timer.\n    lastInvokeTime = time;\n    // Start the timer for the trailing edge.\n    timerId = setTimeout(timerExpired, wait);\n    // Invoke the leading edge.\n    return leading ? invokeFunc(time) : result;\n  }\n\n  function remainingWait(time) {\n    var timeSinceLastCall = time - lastCallTime,\n        timeSinceLastInvoke = time - lastInvokeTime,\n        timeWaiting = wait - timeSinceLastCall;\n\n    return maxing\n      ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n      : timeWaiting;\n  }\n\n  function shouldInvoke(time) {\n    var timeSinceLastCall = time - lastCallTime,\n        timeSinceLastInvoke = time - lastInvokeTime;\n\n    // Either this is the first call, activity has stopped and we're at the\n    // trailing edge, the system time has gone backwards and we're treating\n    // it as the trailing edge, or we've hit the `maxWait` limit.\n    return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n      (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n  }\n\n  function timerExpired() {\n    var time = now();\n    if (shouldInvoke(time)) {\n      return trailingEdge(time);\n    }\n    // Restart the timer.\n    timerId = setTimeout(timerExpired, remainingWait(time));\n  }\n\n  function trailingEdge(time) {\n    timerId = undefined;\n\n    // Only invoke if we have `lastArgs` which means `func` has been\n    // debounced at least once.\n    if (trailing && lastArgs) {\n      return invokeFunc(time);\n    }\n    lastArgs = lastThis = undefined;\n    return result;\n  }\n\n  function cancel() {\n    if (timerId !== undefined) {\n      clearTimeout(timerId);\n    }\n    lastInvokeTime = 0;\n    lastArgs = lastCallTime = lastThis = timerId = undefined;\n  }\n\n  function flush() {\n    return timerId === undefined ? result : trailingEdge(now());\n  }\n\n  function debounced() {\n    var time = now(),\n        isInvoking = shouldInvoke(time);\n\n    lastArgs = arguments;\n    lastThis = this;\n    lastCallTime = time;\n\n    if (isInvoking) {\n      if (timerId === undefined) {\n        return leadingEdge(lastCallTime);\n      }\n      if (maxing) {\n        // Handle invocations in a tight loop.\n        clearTimeout(timerId);\n        timerId = setTimeout(timerExpired, wait);\n        return invokeFunc(lastCallTime);\n      }\n    }\n    if (timerId === undefined) {\n      timerId = setTimeout(timerExpired, wait);\n    }\n    return result;\n  }\n  debounced.cancel = cancel;\n  debounced.flush = flush;\n  return debounced;\n}\n\nmodule.exports = debounce;\n", "/*!\n * dist/inputmask\n * https://github.com/RobinHerbots/Inputmask\n * Copyright (c) 2010 - 2024 Robin Herbots\n * Licensed under the MIT license\n * Version: 5.0.9\n */\n!function(e, t) {\n    if (\"object\" == typeof exports && \"object\" == typeof module) module.exports = t(); else if (\"function\" == typeof define && define.amd) define([], t); else {\n        var n = t();\n        for (var i in n) (\"object\" == typeof exports ? exports : e)[i] = n[i];\n    }\n}(\"undefined\" != typeof self ? self : this, (function() {\n    return function() {\n        \"use strict\";\n        var e = {\n            3976: function(e, t) {\n                Object.defineProperty(t, \"__esModule\", {\n                    value: !0\n                }), t.default = void 0;\n                t.default = {\n                    _maxTestPos: 500,\n                    placeholder: \"_\",\n                    optionalmarker: [ \"[\", \"]\" ],\n                    quantifiermarker: [ \"{\", \"}\" ],\n                    groupmarker: [ \"(\", \")\" ],\n                    alternatormarker: \"|\",\n                    escapeChar: \"\\\\\",\n                    mask: null,\n                    regex: null,\n                    oncomplete: function() {},\n                    onincomplete: function() {},\n                    oncleared: function() {},\n                    repeat: 0,\n                    greedy: !1,\n                    autoUnmask: !1,\n                    removeMaskOnSubmit: !1,\n                    clearMaskOnLostFocus: !0,\n                    insertMode: !0,\n                    insertModeVisual: !0,\n                    clearIncomplete: !1,\n                    alias: null,\n                    onKeyDown: function() {},\n                    onBeforeMask: null,\n                    onBeforePaste: function(e, t) {\n                        return \"function\" == typeof t.onBeforeMask ? t.onBeforeMask.call(this, e, t) : e;\n                    },\n                    onBeforeWrite: null,\n                    onUnMask: null,\n                    showMaskOnFocus: !0,\n                    showMaskOnHover: !0,\n                    onKeyValidation: function() {},\n                    skipOptionalPartCharacter: \" \",\n                    numericInput: !1,\n                    rightAlign: !1,\n                    undoOnEscape: !0,\n                    radixPoint: \"\",\n                    _radixDance: !1,\n                    groupSeparator: \"\",\n                    keepStatic: null,\n                    positionCaretOnTab: !0,\n                    tabThrough: !1,\n                    supportsInputType: [ \"text\", \"tel\", \"url\", \"password\", \"search\" ],\n                    isComplete: null,\n                    preValidation: null,\n                    postValidation: null,\n                    staticDefinitionSymbol: void 0,\n                    jitMasking: !1,\n                    nullable: !0,\n                    inputEventOnly: !1,\n                    noValuePatching: !1,\n                    positionCaretOnClick: \"lvp\",\n                    casing: null,\n                    inputmode: \"text\",\n                    importDataAttributes: !0,\n                    shiftPositions: !0,\n                    usePrototypeDefinitions: !0,\n                    validationEventTimeOut: 3e3,\n                    substitutes: {}\n                };\n            },\n            7392: function(e, t) {\n                Object.defineProperty(t, \"__esModule\", {\n                    value: !0\n                }), t.default = void 0;\n                t.default = {\n                    9: {\n                        validator: \"[0-9\\uff10-\\uff19]\",\n                        definitionSymbol: \"*\"\n                    },\n                    a: {\n                        validator: \"[A-Za-z\\u0410-\\u044f\\u0401\\u0451\\xc0-\\xff\\xb5]\",\n                        definitionSymbol: \"*\"\n                    },\n                    \"*\": {\n                        validator: \"[0-9\\uff10-\\uff19A-Za-z\\u0410-\\u044f\\u0401\\u0451\\xc0-\\xff\\xb5]\"\n                    }\n                };\n            },\n            253: function(e, t) {\n                Object.defineProperty(t, \"__esModule\", {\n                    value: !0\n                }), t.default = function(e, t, n) {\n                    if (void 0 === n) return e.__data ? e.__data[t] : null;\n                    e.__data = e.__data || {}, e.__data[t] = n;\n                };\n            },\n            3776: function(e, t, n) {\n                Object.defineProperty(t, \"__esModule\", {\n                    value: !0\n                }), t.Event = void 0, t.off = function(e, t) {\n                    var n, i;\n                    u(this[0]) && e && (n = this[0].eventRegistry, i = this[0], e.split(\" \").forEach((function(e) {\n                        var a = o(e.split(\".\"), 2);\n                        (function(e, i) {\n                            var a, r, o = [];\n                            if (e.length > 0) if (void 0 === t) for (a = 0, r = n[e][i].length; a < r; a++) o.push({\n                                ev: e,\n                                namespace: i && i.length > 0 ? i : \"global\",\n                                handler: n[e][i][a]\n                            }); else o.push({\n                                ev: e,\n                                namespace: i && i.length > 0 ? i : \"global\",\n                                handler: t\n                            }); else if (i.length > 0) for (var l in n) for (var s in n[l]) if (s === i) if (void 0 === t) for (a = 0, \n                            r = n[l][s].length; a < r; a++) o.push({\n                                ev: l,\n                                namespace: s,\n                                handler: n[l][s][a]\n                            }); else o.push({\n                                ev: l,\n                                namespace: s,\n                                handler: t\n                            });\n                            return o;\n                        })(a[0], a[1]).forEach((function(e) {\n                            var t = e.ev, a = e.handler;\n                            !function(e, t, a) {\n                                if (e in n == 1) if (i.removeEventListener ? i.removeEventListener(e, a, !1) : i.detachEvent && i.detachEvent(\"on\".concat(e), a), \n                                \"global\" === t) for (var r in n[e]) n[e][r].splice(n[e][r].indexOf(a), 1); else n[e][t].splice(n[e][t].indexOf(a), 1);\n                            }(t, e.namespace, a);\n                        }));\n                    })));\n                    return this;\n                }, t.on = function(e, t) {\n                    if (u(this[0])) {\n                        var n = this[0].eventRegistry, i = this[0];\n                        e.split(\" \").forEach((function(e) {\n                            var a = o(e.split(\".\"), 2), r = a[0], l = a[1];\n                            !function(e, a) {\n                                i.addEventListener ? i.addEventListener(e, t, !1) : i.attachEvent && i.attachEvent(\"on\".concat(e), t), \n                                n[e] = n[e] || {}, n[e][a] = n[e][a] || [], n[e][a].push(t);\n                            }(r, void 0 === l ? \"global\" : l);\n                        }));\n                    }\n                    return this;\n                }, t.trigger = function(e) {\n                    var t = arguments;\n                    if (u(this[0])) for (var n = this[0].eventRegistry, i = this[0], o = \"string\" == typeof e ? e.split(\" \") : [ e.type ], l = 0; l < o.length; l++) {\n                        var s = o[l].split(\".\"), f = s[0], p = s[1] || \"global\";\n                        if (void 0 !== c && \"global\" === p) {\n                            var d, h = {\n                                bubbles: !0,\n                                cancelable: !0,\n                                composed: !0,\n                                detail: arguments[1]\n                            };\n                            if (c.createEvent) {\n                                try {\n                                    if (\"input\" === f) h.inputType = \"insertText\", d = new InputEvent(f, h); else d = new CustomEvent(f, h);\n                                } catch (e) {\n                                    (d = c.createEvent(\"CustomEvent\")).initCustomEvent(f, h.bubbles, h.cancelable, h.detail);\n                                }\n                                e.type && (0, a.default)(d, e), i.dispatchEvent(d);\n                            } else (d = c.createEventObject()).eventType = f, d.detail = arguments[1], e.type && (0, \n                            a.default)(d, e), i.fireEvent(\"on\" + d.eventType, d);\n                        } else if (void 0 !== n[f]) {\n                            arguments[0] = arguments[0].type ? arguments[0] : r.default.Event(arguments[0]), \n                            arguments[0].detail = arguments.slice(1);\n                            var v = n[f];\n                            (\"global\" === p ? Object.values(v).flat() : v[p]).forEach((function(e) {\n                                return e.apply(i, t);\n                            }));\n                        }\n                    }\n                    return this;\n                };\n                var i = s(n(9380)), a = s(n(600)), r = s(n(4963));\n                function o(e, t) {\n                    return function(e) {\n                        if (Array.isArray(e)) return e;\n                    }(e) || function(e, t) {\n                        var n = null == e ? null : \"undefined\" != typeof Symbol && e[Symbol.iterator] || e[\"@@iterator\"];\n                        if (null != n) {\n                            var i, a, r, o, l = [], s = !0, c = !1;\n                            try {\n                                if (r = (n = n.call(e)).next, 0 === t) {\n                                    if (Object(n) !== n) return;\n                                    s = !1;\n                                } else for (;!(s = (i = r.call(n)).done) && (l.push(i.value), l.length !== t); s = !0) ;\n                            } catch (e) {\n                                c = !0, a = e;\n                            } finally {\n                                try {\n                                    if (!s && null != n.return && (o = n.return(), Object(o) !== o)) return;\n                                } finally {\n                                    if (c) throw a;\n                                }\n                            }\n                            return l;\n                        }\n                    }(e, t) || function(e, t) {\n                        if (!e) return;\n                        if (\"string\" == typeof e) return l(e, t);\n                        var n = Object.prototype.toString.call(e).slice(8, -1);\n                        \"Object\" === n && e.constructor && (n = e.constructor.name);\n                        if (\"Map\" === n || \"Set\" === n) return Array.from(e);\n                        if (\"Arguments\" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return l(e, t);\n                    }(e, t) || function() {\n                        throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n                    }();\n                }\n                function l(e, t) {\n                    (null == t || t > e.length) && (t = e.length);\n                    for (var n = 0, i = new Array(t); n < t; n++) i[n] = e[n];\n                    return i;\n                }\n                function s(e) {\n                    return e && e.__esModule ? e : {\n                        default: e\n                    };\n                }\n                var c = i.default.document;\n                function u(e) {\n                    return e instanceof Element;\n                }\n                var f = t.Event = void 0;\n                \"function\" == typeof i.default.CustomEvent ? t.Event = f = i.default.CustomEvent : i.default.Event && c && c.createEvent ? (t.Event = f = function(e, t) {\n                    t = t || {\n                        bubbles: !1,\n                        cancelable: !1,\n                        composed: !0,\n                        detail: void 0\n                    };\n                    var n = c.createEvent(\"CustomEvent\");\n                    return n.initCustomEvent(e, t.bubbles, t.cancelable, t.detail), n;\n                }, f.prototype = i.default.Event.prototype) : \"undefined\" != typeof Event && (t.Event = f = Event);\n            },\n            600: function(e, t) {\n                function n(e) {\n                    return n = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(e) {\n                        return typeof e;\n                    } : function(e) {\n                        return e && \"function\" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? \"symbol\" : typeof e;\n                    }, n(e);\n                }\n                Object.defineProperty(t, \"__esModule\", {\n                    value: !0\n                }), t.default = function e() {\n                    var t, i, a, r, o, l, s = arguments[0] || {}, c = 1, u = arguments.length, f = !1;\n                    \"boolean\" == typeof s && (f = s, s = arguments[c] || {}, c++);\n                    \"object\" !== n(s) && \"function\" != typeof s && (s = {});\n                    for (;c < u; c++) if (null != (t = arguments[c])) for (i in t) a = s[i], s !== (r = t[i]) && (f && r && (\"[object Object]\" === Object.prototype.toString.call(r) || (o = Array.isArray(r))) ? (o ? (o = !1, \n                    l = a && Array.isArray(a) ? a : []) : l = a && \"[object Object]\" === Object.prototype.toString.call(a) ? a : {}, \n                    s[i] = e(f, l, r)) : void 0 !== r && (s[i] = r));\n                    return s;\n                };\n            },\n            4963: function(e, t, n) {\n                Object.defineProperty(t, \"__esModule\", {\n                    value: !0\n                }), t.default = void 0;\n                var i = l(n(9380)), a = l(n(253)), r = n(3776), o = l(n(600));\n                function l(e) {\n                    return e && e.__esModule ? e : {\n                        default: e\n                    };\n                }\n                var s = i.default.document;\n                function c(e) {\n                    return e instanceof c ? e : this instanceof c ? void (null != e && e !== i.default && (this[0] = e.nodeName ? e : void 0 !== e[0] && e[0].nodeName ? e[0] : s.querySelector(e), \n                    void 0 !== this[0] && null !== this[0] && (this[0].eventRegistry = this[0].eventRegistry || {}))) : new c(e);\n                }\n                c.prototype = {\n                    on: r.on,\n                    off: r.off,\n                    trigger: r.trigger\n                }, c.extend = o.default, c.data = a.default, c.Event = r.Event;\n                t.default = c;\n            },\n            9845: function(e, t, n) {\n                Object.defineProperty(t, \"__esModule\", {\n                    value: !0\n                }), t.mobile = t.iphone = t.ie = void 0;\n                var i, a = (i = n(9380)) && i.__esModule ? i : {\n                    default: i\n                };\n                var r = a.default.navigator && a.default.navigator.userAgent || \"\";\n                t.ie = r.indexOf(\"MSIE \") > 0 || r.indexOf(\"Trident/\") > 0, t.mobile = a.default.navigator && a.default.navigator.userAgentData && a.default.navigator.userAgentData.mobile || a.default.navigator && a.default.navigator.maxTouchPoints || \"ontouchstart\" in a.default, \n                t.iphone = /iphone/i.test(r);\n            },\n            7184: function(e, t) {\n                Object.defineProperty(t, \"__esModule\", {\n                    value: !0\n                }), t.default = function(e) {\n                    return e.replace(n, \"\\\\$1\");\n                };\n                var n = new RegExp(\"(\\\\\" + [ \"/\", \".\", \"*\", \"+\", \"?\", \"|\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", \"\\\\\", \"$\", \"^\" ].join(\"|\\\\\") + \")\", \"gim\");\n            },\n            6030: function(e, t, n) {\n                function i(e) {\n                    return i = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(e) {\n                        return typeof e;\n                    } : function(e) {\n                        return e && \"function\" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? \"symbol\" : typeof e;\n                    }, i(e);\n                }\n                Object.defineProperty(t, \"__esModule\", {\n                    value: !0\n                }), t.EventHandlers = void 0;\n                var a, r = n(9845), o = (a = n(9380)) && a.__esModule ? a : {\n                    default: a\n                }, l = n(7760), s = n(2839), c = n(8711), u = n(7215), f = n(4713);\n                function p() {\n                    /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ p = function() {\n                        return t;\n                    };\n                    var e, t = {}, n = Object.prototype, a = n.hasOwnProperty, r = Object.defineProperty || function(e, t, n) {\n                        e[t] = n.value;\n                    }, o = \"function\" == typeof Symbol ? Symbol : {}, l = o.iterator || \"@@iterator\", s = o.asyncIterator || \"@@asyncIterator\", c = o.toStringTag || \"@@toStringTag\";\n                    function u(e, t, n) {\n                        return Object.defineProperty(e, t, {\n                            value: n,\n                            enumerable: !0,\n                            configurable: !0,\n                            writable: !0\n                        }), e[t];\n                    }\n                    try {\n                        u({}, \"\");\n                    } catch (e) {\n                        u = function(e, t, n) {\n                            return e[t] = n;\n                        };\n                    }\n                    function f(e, t, n, i) {\n                        var a = t && t.prototype instanceof k ? t : k, o = Object.create(a.prototype), l = new D(i || []);\n                        return r(o, \"_invoke\", {\n                            value: E(e, n, l)\n                        }), o;\n                    }\n                    function d(e, t, n) {\n                        try {\n                            return {\n                                type: \"normal\",\n                                arg: e.call(t, n)\n                            };\n                        } catch (e) {\n                            return {\n                                type: \"throw\",\n                                arg: e\n                            };\n                        }\n                    }\n                    t.wrap = f;\n                    var h = \"suspendedStart\", v = \"suspendedYield\", m = \"executing\", g = \"completed\", y = {};\n                    function k() {}\n                    function b() {}\n                    function x() {}\n                    var w = {};\n                    u(w, l, (function() {\n                        return this;\n                    }));\n                    var P = Object.getPrototypeOf, S = P && P(P(L([])));\n                    S && S !== n && a.call(S, l) && (w = S);\n                    var O = x.prototype = k.prototype = Object.create(w);\n                    function _(e) {\n                        [ \"next\", \"throw\", \"return\" ].forEach((function(t) {\n                            u(e, t, (function(e) {\n                                return this._invoke(t, e);\n                            }));\n                        }));\n                    }\n                    function M(e, t) {\n                        function n(r, o, l, s) {\n                            var c = d(e[r], e, o);\n                            if (\"throw\" !== c.type) {\n                                var u = c.arg, f = u.value;\n                                return f && \"object\" == i(f) && a.call(f, \"__await\") ? t.resolve(f.__await).then((function(e) {\n                                    n(\"next\", e, l, s);\n                                }), (function(e) {\n                                    n(\"throw\", e, l, s);\n                                })) : t.resolve(f).then((function(e) {\n                                    u.value = e, l(u);\n                                }), (function(e) {\n                                    return n(\"throw\", e, l, s);\n                                }));\n                            }\n                            s(c.arg);\n                        }\n                        var o;\n                        r(this, \"_invoke\", {\n                            value: function(e, i) {\n                                function a() {\n                                    return new t((function(t, a) {\n                                        n(e, i, t, a);\n                                    }));\n                                }\n                                return o = o ? o.then(a, a) : a();\n                            }\n                        });\n                    }\n                    function E(t, n, i) {\n                        var a = h;\n                        return function(r, o) {\n                            if (a === m) throw new Error(\"Generator is already running\");\n                            if (a === g) {\n                                if (\"throw\" === r) throw o;\n                                return {\n                                    value: e,\n                                    done: !0\n                                };\n                            }\n                            for (i.method = r, i.arg = o; ;) {\n                                var l = i.delegate;\n                                if (l) {\n                                    var s = j(l, i);\n                                    if (s) {\n                                        if (s === y) continue;\n                                        return s;\n                                    }\n                                }\n                                if (\"next\" === i.method) i.sent = i._sent = i.arg; else if (\"throw\" === i.method) {\n                                    if (a === h) throw a = g, i.arg;\n                                    i.dispatchException(i.arg);\n                                } else \"return\" === i.method && i.abrupt(\"return\", i.arg);\n                                a = m;\n                                var c = d(t, n, i);\n                                if (\"normal\" === c.type) {\n                                    if (a = i.done ? g : v, c.arg === y) continue;\n                                    return {\n                                        value: c.arg,\n                                        done: i.done\n                                    };\n                                }\n                                \"throw\" === c.type && (a = g, i.method = \"throw\", i.arg = c.arg);\n                            }\n                        };\n                    }\n                    function j(t, n) {\n                        var i = n.method, a = t.iterator[i];\n                        if (a === e) return n.delegate = null, \"throw\" === i && t.iterator.return && (n.method = \"return\", \n                        n.arg = e, j(t, n), \"throw\" === n.method) || \"return\" !== i && (n.method = \"throw\", \n                        n.arg = new TypeError(\"The iterator does not provide a '\" + i + \"' method\")), y;\n                        var r = d(a, t.iterator, n.arg);\n                        if (\"throw\" === r.type) return n.method = \"throw\", n.arg = r.arg, n.delegate = null, \n                        y;\n                        var o = r.arg;\n                        return o ? o.done ? (n[t.resultName] = o.value, n.next = t.nextLoc, \"return\" !== n.method && (n.method = \"next\", \n                        n.arg = e), n.delegate = null, y) : o : (n.method = \"throw\", n.arg = new TypeError(\"iterator result is not an object\"), \n                        n.delegate = null, y);\n                    }\n                    function T(e) {\n                        var t = {\n                            tryLoc: e[0]\n                        };\n                        1 in e && (t.catchLoc = e[1]), 2 in e && (t.finallyLoc = e[2], t.afterLoc = e[3]), \n                        this.tryEntries.push(t);\n                    }\n                    function A(e) {\n                        var t = e.completion || {};\n                        t.type = \"normal\", delete t.arg, e.completion = t;\n                    }\n                    function D(e) {\n                        this.tryEntries = [ {\n                            tryLoc: \"root\"\n                        } ], e.forEach(T, this), this.reset(!0);\n                    }\n                    function L(t) {\n                        if (t || \"\" === t) {\n                            var n = t[l];\n                            if (n) return n.call(t);\n                            if (\"function\" == typeof t.next) return t;\n                            if (!isNaN(t.length)) {\n                                var r = -1, o = function n() {\n                                    for (;++r < t.length; ) if (a.call(t, r)) return n.value = t[r], n.done = !1, n;\n                                    return n.value = e, n.done = !0, n;\n                                };\n                                return o.next = o;\n                            }\n                        }\n                        throw new TypeError(i(t) + \" is not iterable\");\n                    }\n                    return b.prototype = x, r(O, \"constructor\", {\n                        value: x,\n                        configurable: !0\n                    }), r(x, \"constructor\", {\n                        value: b,\n                        configurable: !0\n                    }), b.displayName = u(x, c, \"GeneratorFunction\"), t.isGeneratorFunction = function(e) {\n                        var t = \"function\" == typeof e && e.constructor;\n                        return !!t && (t === b || \"GeneratorFunction\" === (t.displayName || t.name));\n                    }, t.mark = function(e) {\n                        return Object.setPrototypeOf ? Object.setPrototypeOf(e, x) : (e.__proto__ = x, u(e, c, \"GeneratorFunction\")), \n                        e.prototype = Object.create(O), e;\n                    }, t.awrap = function(e) {\n                        return {\n                            __await: e\n                        };\n                    }, _(M.prototype), u(M.prototype, s, (function() {\n                        return this;\n                    })), t.AsyncIterator = M, t.async = function(e, n, i, a, r) {\n                        void 0 === r && (r = Promise);\n                        var o = new M(f(e, n, i, a), r);\n                        return t.isGeneratorFunction(n) ? o : o.next().then((function(e) {\n                            return e.done ? e.value : o.next();\n                        }));\n                    }, _(O), u(O, c, \"Generator\"), u(O, l, (function() {\n                        return this;\n                    })), u(O, \"toString\", (function() {\n                        return \"[object Generator]\";\n                    })), t.keys = function(e) {\n                        var t = Object(e), n = [];\n                        for (var i in t) n.push(i);\n                        return n.reverse(), function e() {\n                            for (;n.length; ) {\n                                var i = n.pop();\n                                if (i in t) return e.value = i, e.done = !1, e;\n                            }\n                            return e.done = !0, e;\n                        };\n                    }, t.values = L, D.prototype = {\n                        constructor: D,\n                        reset: function(t) {\n                            if (this.prev = 0, this.next = 0, this.sent = this._sent = e, this.done = !1, this.delegate = null, \n                            this.method = \"next\", this.arg = e, this.tryEntries.forEach(A), !t) for (var n in this) \"t\" === n.charAt(0) && a.call(this, n) && !isNaN(+n.slice(1)) && (this[n] = e);\n                        },\n                        stop: function() {\n                            this.done = !0;\n                            var e = this.tryEntries[0].completion;\n                            if (\"throw\" === e.type) throw e.arg;\n                            return this.rval;\n                        },\n                        dispatchException: function(t) {\n                            if (this.done) throw t;\n                            var n = this;\n                            function i(i, a) {\n                                return l.type = \"throw\", l.arg = t, n.next = i, a && (n.method = \"next\", n.arg = e), \n                                !!a;\n                            }\n                            for (var r = this.tryEntries.length - 1; r >= 0; --r) {\n                                var o = this.tryEntries[r], l = o.completion;\n                                if (\"root\" === o.tryLoc) return i(\"end\");\n                                if (o.tryLoc <= this.prev) {\n                                    var s = a.call(o, \"catchLoc\"), c = a.call(o, \"finallyLoc\");\n                                    if (s && c) {\n                                        if (this.prev < o.catchLoc) return i(o.catchLoc, !0);\n                                        if (this.prev < o.finallyLoc) return i(o.finallyLoc);\n                                    } else if (s) {\n                                        if (this.prev < o.catchLoc) return i(o.catchLoc, !0);\n                                    } else {\n                                        if (!c) throw new Error(\"try statement without catch or finally\");\n                                        if (this.prev < o.finallyLoc) return i(o.finallyLoc);\n                                    }\n                                }\n                            }\n                        },\n                        abrupt: function(e, t) {\n                            for (var n = this.tryEntries.length - 1; n >= 0; --n) {\n                                var i = this.tryEntries[n];\n                                if (i.tryLoc <= this.prev && a.call(i, \"finallyLoc\") && this.prev < i.finallyLoc) {\n                                    var r = i;\n                                    break;\n                                }\n                            }\n                            r && (\"break\" === e || \"continue\" === e) && r.tryLoc <= t && t <= r.finallyLoc && (r = null);\n                            var o = r ? r.completion : {};\n                            return o.type = e, o.arg = t, r ? (this.method = \"next\", this.next = r.finallyLoc, \n                            y) : this.complete(o);\n                        },\n                        complete: function(e, t) {\n                            if (\"throw\" === e.type) throw e.arg;\n                            return \"break\" === e.type || \"continue\" === e.type ? this.next = e.arg : \"return\" === e.type ? (this.rval = this.arg = e.arg, \n                            this.method = \"return\", this.next = \"end\") : \"normal\" === e.type && t && (this.next = t), \n                            y;\n                        },\n                        finish: function(e) {\n                            for (var t = this.tryEntries.length - 1; t >= 0; --t) {\n                                var n = this.tryEntries[t];\n                                if (n.finallyLoc === e) return this.complete(n.completion, n.afterLoc), A(n), y;\n                            }\n                        },\n                        catch: function(e) {\n                            for (var t = this.tryEntries.length - 1; t >= 0; --t) {\n                                var n = this.tryEntries[t];\n                                if (n.tryLoc === e) {\n                                    var i = n.completion;\n                                    if (\"throw\" === i.type) {\n                                        var a = i.arg;\n                                        A(n);\n                                    }\n                                    return a;\n                                }\n                            }\n                            throw new Error(\"illegal catch attempt\");\n                        },\n                        delegateYield: function(t, n, i) {\n                            return this.delegate = {\n                                iterator: L(t),\n                                resultName: n,\n                                nextLoc: i\n                            }, \"next\" === this.method && (this.arg = e), y;\n                        }\n                    }, t;\n                }\n                function d(e, t) {\n                    var n = \"undefined\" != typeof Symbol && e[Symbol.iterator] || e[\"@@iterator\"];\n                    if (!n) {\n                        if (Array.isArray(e) || (n = function(e, t) {\n                            if (!e) return;\n                            if (\"string\" == typeof e) return h(e, t);\n                            var n = Object.prototype.toString.call(e).slice(8, -1);\n                            \"Object\" === n && e.constructor && (n = e.constructor.name);\n                            if (\"Map\" === n || \"Set\" === n) return Array.from(e);\n                            if (\"Arguments\" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return h(e, t);\n                        }(e)) || t && e && \"number\" == typeof e.length) {\n                            n && (e = n);\n                            var i = 0, a = function() {};\n                            return {\n                                s: a,\n                                n: function() {\n                                    return i >= e.length ? {\n                                        done: !0\n                                    } : {\n                                        done: !1,\n                                        value: e[i++]\n                                    };\n                                },\n                                e: function(e) {\n                                    throw e;\n                                },\n                                f: a\n                            };\n                        }\n                        throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n                    }\n                    var r, o = !0, l = !1;\n                    return {\n                        s: function() {\n                            n = n.call(e);\n                        },\n                        n: function() {\n                            var e = n.next();\n                            return o = e.done, e;\n                        },\n                        e: function(e) {\n                            l = !0, r = e;\n                        },\n                        f: function() {\n                            try {\n                                o || null == n.return || n.return();\n                            } finally {\n                                if (l) throw r;\n                            }\n                        }\n                    };\n                }\n                function h(e, t) {\n                    (null == t || t > e.length) && (t = e.length);\n                    for (var n = 0, i = new Array(t); n < t; n++) i[n] = e[n];\n                    return i;\n                }\n                function v(e, t, n, i, a, r, o) {\n                    try {\n                        var l = e[r](o), s = l.value;\n                    } catch (e) {\n                        return void n(e);\n                    }\n                    l.done ? t(s) : Promise.resolve(s).then(i, a);\n                }\n                var m, g, y = t.EventHandlers = {\n                    keyEvent: function(e, t, n, i, a) {\n                        var o = this.inputmask, p = o.opts, d = o.dependencyLib, h = o.maskset, v = this, m = d(v), g = e.key, k = c.caret.call(o, v), b = p.onKeyDown.call(this, e, c.getBuffer.call(o), k, p);\n                        if (void 0 !== b) return b;\n                        if (g === s.keys.Backspace || g === s.keys.Delete || r.iphone && g === s.keys.BACKSPACE_SAFARI || e.ctrlKey && g === s.keys.x && !(\"oncut\" in v)) e.preventDefault(), \n                        u.handleRemove.call(o, v, g, k), (0, l.writeBuffer)(v, c.getBuffer.call(o, !0), h.p, e, v.inputmask._valueGet() !== c.getBuffer.call(o).join(\"\")); else if (g === s.keys.End || g === s.keys.PageDown) {\n                            e.preventDefault();\n                            var x = c.seekNext.call(o, c.getLastValidPosition.call(o));\n                            c.caret.call(o, v, e.shiftKey ? k.begin : x, x, !0);\n                        } else g === s.keys.Home && !e.shiftKey || g === s.keys.PageUp ? (e.preventDefault(), \n                        c.caret.call(o, v, 0, e.shiftKey ? k.begin : 0, !0)) : p.undoOnEscape && g === s.keys.Escape && !0 !== e.altKey ? ((0, \n                        l.checkVal)(v, !0, !1, o.undoValue.split(\"\")), m.trigger(\"click\")) : g !== s.keys.Insert || e.shiftKey || e.ctrlKey || void 0 !== o.userOptions.insertMode ? !0 === p.tabThrough && g === s.keys.Tab ? !0 === e.shiftKey ? (k.end = c.seekPrevious.call(o, k.end, !0), \n                        !0 === f.getTest.call(o, k.end - 1).match.static && k.end--, k.begin = c.seekPrevious.call(o, k.end, !0), \n                        k.begin >= 0 && k.end > 0 && (e.preventDefault(), c.caret.call(o, v, k.begin, k.end))) : (k.begin = c.seekNext.call(o, k.begin, !0), \n                        k.end = c.seekNext.call(o, k.begin, !0), k.end < h.maskLength && k.end--, k.begin <= h.maskLength && (e.preventDefault(), \n                        c.caret.call(o, v, k.begin, k.end))) : e.shiftKey || (p.insertModeVisual && !1 === p.insertMode ? g === s.keys.ArrowRight ? setTimeout((function() {\n                            var e = c.caret.call(o, v);\n                            c.caret.call(o, v, e.begin);\n                        }), 0) : g === s.keys.ArrowLeft && setTimeout((function() {\n                            var e = c.translatePosition.call(o, v.inputmask.caretPos.begin);\n                            c.translatePosition.call(o, v.inputmask.caretPos.end);\n                            o.isRTL ? c.caret.call(o, v, e + (e === h.maskLength ? 0 : 1)) : c.caret.call(o, v, e - (0 === e ? 0 : 1));\n                        }), 0) : void 0 === o.keyEventHook || o.keyEventHook(e)) : u.isSelection.call(o, k) ? p.insertMode = !p.insertMode : (p.insertMode = !p.insertMode, \n                        c.caret.call(o, v, k.begin, k.begin));\n                        return o.isComposing = g == s.keys.Process || g == s.keys.Unidentified, o.ignorable = g.length > 1 && !(\"textarea\" === v.tagName.toLowerCase() && g == s.keys.Enter), \n                        y.keypressEvent.call(this, e, t, n, i, a);\n                    },\n                    keypressEvent: function(e, t, n, i, a) {\n                        var r = this.inputmask || this, o = r.opts, f = r.dependencyLib, p = r.maskset, d = r.el, h = f(d), v = e.key;\n                        if (!0 === t || e.ctrlKey && e.altKey && !r.ignorable || !(e.ctrlKey || e.metaKey || r.ignorable)) {\n                            if (v) {\n                                var m, g = t ? {\n                                    begin: a,\n                                    end: a\n                                } : c.caret.call(r, d);\n                                t || (v = o.substitutes[v] || v), p.writeOutBuffer = !0;\n                                var y = u.isValid.call(r, g, v, i, void 0, void 0, void 0, t);\n                                if (!1 !== y && (c.resetMaskSet.call(r, !0), m = void 0 !== y.caret ? y.caret : c.seekNext.call(r, y.pos.begin ? y.pos.begin : y.pos), \n                                p.p = m), m = o.numericInput && void 0 === y.caret ? c.seekPrevious.call(r, m) : m, \n                                !1 !== n && (setTimeout((function() {\n                                    o.onKeyValidation.call(d, v, y);\n                                }), 0), p.writeOutBuffer && !1 !== y)) {\n                                    var k = c.getBuffer.call(r);\n                                    (0, l.writeBuffer)(d, k, m, e, !0 !== t);\n                                }\n                                if (e.preventDefault(), t) return !1 !== y && (y.forwardPosition = m), y;\n                            }\n                        } else v === s.keys.Enter && r.undoValue !== r._valueGet(!0) && (r.undoValue = r._valueGet(!0), \n                        setTimeout((function() {\n                            h.trigger(\"change\");\n                        }), 0));\n                    },\n                    pasteEvent: (m = p().mark((function e(t) {\n                        var n, i, a, r, s, u;\n                        return p().wrap((function(e) {\n                            for (;;) switch (e.prev = e.next) {\n                              case 0:\n                                n = function(e, n, i, a, o) {\n                                    var s = c.caret.call(e, n, void 0, void 0, !0), u = i.substr(0, s.begin), f = i.substr(s.end, i.length);\n                                    if (u == (e.isRTL ? c.getBufferTemplate.call(e).slice().reverse() : c.getBufferTemplate.call(e)).slice(0, s.begin).join(\"\") && (u = \"\"), \n                                    f == (e.isRTL ? c.getBufferTemplate.call(e).slice().reverse() : c.getBufferTemplate.call(e)).slice(s.end).join(\"\") && (f = \"\"), \n                                    a = u + a + f, e.isRTL && !0 !== r.numericInput) {\n                                        a = a.split(\"\");\n                                        var p, h = d(c.getBufferTemplate.call(e));\n                                        try {\n                                            for (h.s(); !(p = h.n()).done; ) {\n                                                var v = p.value;\n                                                a[0] === v && a.shift();\n                                            }\n                                        } catch (e) {\n                                            h.e(e);\n                                        } finally {\n                                            h.f();\n                                        }\n                                        a = a.reverse().join(\"\");\n                                    }\n                                    var m = a;\n                                    if (\"function\" == typeof o) {\n                                        if (!1 === (m = o.call(e, m, r))) return !1;\n                                        m || (m = i);\n                                    }\n                                    (0, l.checkVal)(n, !0, !1, m.toString().split(\"\"), t);\n                                }, i = this, a = this.inputmask, r = a.opts, s = a._valueGet(!0), a.skipInputEvent = !0, \n                                t.clipboardData && t.clipboardData.getData ? u = t.clipboardData.getData(\"text/plain\") : o.default.clipboardData && o.default.clipboardData.getData && (u = o.default.clipboardData.getData(\"Text\")), \n                                n(a, i, s, u, r.onBeforePaste), t.preventDefault();\n\n                              case 7:\n                              case \"end\":\n                                return e.stop();\n                            }\n                        }), e, this);\n                    })), g = function() {\n                        var e = this, t = arguments;\n                        return new Promise((function(n, i) {\n                            var a = m.apply(e, t);\n                            function r(e) {\n                                v(a, n, i, r, o, \"next\", e);\n                            }\n                            function o(e) {\n                                v(a, n, i, r, o, \"throw\", e);\n                            }\n                            r(void 0);\n                        }));\n                    }, function(e) {\n                        return g.apply(this, arguments);\n                    }),\n                    inputFallBackEvent: function(e) {\n                        var t = this.inputmask, n = t.opts, i = t.dependencyLib;\n                        var a, o = this, u = o.inputmask._valueGet(!0), p = (t.isRTL ? c.getBuffer.call(t).slice().reverse() : c.getBuffer.call(t)).join(\"\"), d = c.caret.call(t, o, void 0, void 0, !0);\n                        if (p !== u) {\n                            if (a = function(e, i, a) {\n                                for (var r, o, l, s = e.substr(0, a.begin).split(\"\"), u = e.substr(a.begin).split(\"\"), p = i.substr(0, a.begin).split(\"\"), d = i.substr(a.begin).split(\"\"), h = s.length >= p.length ? s.length : p.length, v = u.length >= d.length ? u.length : d.length, m = \"\", g = [], y = \"~\"; s.length < h; ) s.push(y);\n                                for (;p.length < h; ) p.push(y);\n                                for (;u.length < v; ) u.unshift(y);\n                                for (;d.length < v; ) d.unshift(y);\n                                var k = s.concat(u), b = p.concat(d);\n                                for (o = 0, r = k.length; o < r; o++) switch (l = f.getPlaceholder.call(t, c.translatePosition.call(t, o)), \n                                m) {\n                                  case \"insertText\":\n                                    b[o - 1] === k[o] && a.begin == k.length - 1 && g.push(k[o]), o = r;\n                                    break;\n\n                                  case \"insertReplacementText\":\n                                  case \"deleteContentBackward\":\n                                    k[o] === y ? a.end++ : o = r;\n                                    break;\n\n                                  default:\n                                    k[o] !== b[o] && (k[o + 1] !== y && k[o + 1] !== l && void 0 !== k[o + 1] || (b[o] !== l || b[o + 1] !== y) && b[o] !== y ? b[o + 1] === y && b[o] === k[o + 1] ? (m = \"insertText\", \n                                    g.push(k[o]), a.begin--, a.end--) : k[o] !== l && k[o] !== y && (k[o + 1] === y || b[o] !== k[o] && b[o + 1] === k[o + 1]) ? (m = \"insertReplacementText\", \n                                    g.push(k[o]), a.begin--) : k[o] === y ? (m = \"deleteContentBackward\", (c.isMask.call(t, c.translatePosition.call(t, o), !0) || b[o] === n.radixPoint) && a.end++) : o = r : (m = \"insertText\", \n                                    g.push(k[o]), a.begin--, a.end--));\n                                }\n                                return {\n                                    action: m,\n                                    data: g,\n                                    caret: a\n                                };\n                            }(u, p, d), (o.inputmask.shadowRoot || o.ownerDocument).activeElement !== o && o.focus(), \n                            (0, l.writeBuffer)(o, c.getBuffer.call(t)), c.caret.call(t, o, d.begin, d.end, !0), \n                            !r.mobile && t.skipNextInsert && \"insertText\" === e.inputType && \"insertText\" === a.action && t.isComposing) return !1;\n                            switch (\"insertCompositionText\" === e.inputType && \"insertText\" === a.action && t.isComposing ? t.skipNextInsert = !0 : t.skipNextInsert = !1, \n                            a.action) {\n                              case \"insertText\":\n                              case \"insertReplacementText\":\n                                a.data.forEach((function(e, n) {\n                                    var a = new i.Event(\"keypress\");\n                                    a.key = e, t.ignorable = !1, y.keypressEvent.call(o, a);\n                                })), setTimeout((function() {\n                                    t.$el.trigger(\"keyup\");\n                                }), 0);\n                                break;\n\n                              case \"deleteContentBackward\":\n                                var h = new i.Event(\"keydown\");\n                                h.key = s.keys.Backspace, y.keyEvent.call(o, h);\n                                break;\n\n                              default:\n                                (0, l.applyInputValue)(o, u), c.caret.call(t, o, d.begin, d.end, !0);\n                            }\n                            e.preventDefault();\n                        }\n                    },\n                    setValueEvent: function(e) {\n                        var t = this.inputmask, n = t.dependencyLib, i = this, a = e && e.detail ? e.detail[0] : arguments[1];\n                        void 0 === a && (a = i.inputmask._valueGet(!0)), (0, l.applyInputValue)(i, a, new n.Event(\"input\")), \n                        (e.detail && void 0 !== e.detail[1] || void 0 !== arguments[2]) && c.caret.call(t, i, e.detail ? e.detail[1] : arguments[2]);\n                    },\n                    focusEvent: function(e) {\n                        var t = this.inputmask, n = t.opts, i = t && t._valueGet();\n                        n.showMaskOnFocus && i !== c.getBuffer.call(t).join(\"\") && (0, l.writeBuffer)(this, c.getBuffer.call(t), c.seekNext.call(t, c.getLastValidPosition.call(t))), \n                        !0 !== n.positionCaretOnTab || !1 !== t.mouseEnter || u.isComplete.call(t, c.getBuffer.call(t)) && -1 !== c.getLastValidPosition.call(t) || y.clickEvent.apply(this, [ e, !0 ]), \n                        t.undoValue = t && t._valueGet(!0);\n                    },\n                    invalidEvent: function(e) {\n                        this.inputmask.validationEvent = !0;\n                    },\n                    mouseleaveEvent: function() {\n                        var e = this.inputmask, t = e.opts, n = this;\n                        e.mouseEnter = !1, t.clearMaskOnLostFocus && (n.inputmask.shadowRoot || n.ownerDocument).activeElement !== n && (0, \n                        l.HandleNativePlaceholder)(n, e.originalPlaceholder);\n                    },\n                    clickEvent: function(e, t) {\n                        var n = this.inputmask;\n                        n.clicked++;\n                        var i = this;\n                        if ((i.inputmask.shadowRoot || i.ownerDocument).activeElement === i) {\n                            var a = c.determineNewCaretPosition.call(n, c.caret.call(n, i), t);\n                            void 0 !== a && c.caret.call(n, i, a);\n                        }\n                    },\n                    cutEvent: function(e) {\n                        var t = this.inputmask, n = t.maskset, i = this, a = c.caret.call(t, i), r = t.isRTL ? c.getBuffer.call(t).slice(a.end, a.begin) : c.getBuffer.call(t).slice(a.begin, a.end), f = t.isRTL ? r.reverse().join(\"\") : r.join(\"\");\n                        o.default.navigator && o.default.navigator.clipboard ? o.default.navigator.clipboard.writeText(f) : o.default.clipboardData && o.default.clipboardData.getData && o.default.clipboardData.setData(\"Text\", f), \n                        u.handleRemove.call(t, i, s.keys.Delete, a), (0, l.writeBuffer)(i, c.getBuffer.call(t), n.p, e, t.undoValue !== t._valueGet(!0));\n                    },\n                    blurEvent: function(e) {\n                        var t = this.inputmask, n = t.opts, i = t.dependencyLib;\n                        t.clicked = 0;\n                        var a = i(this), r = this;\n                        if (r.inputmask) {\n                            (0, l.HandleNativePlaceholder)(r, t.originalPlaceholder);\n                            var o = r.inputmask._valueGet(), s = c.getBuffer.call(t).slice();\n                            \"\" !== o && (n.clearMaskOnLostFocus && (-1 === c.getLastValidPosition.call(t) && o === c.getBufferTemplate.call(t).join(\"\") ? s = [] : l.clearOptionalTail.call(t, s)), \n                            !1 === u.isComplete.call(t, s) && (setTimeout((function() {\n                                a.trigger(\"incomplete\");\n                            }), 0), n.clearIncomplete && (c.resetMaskSet.call(t, !1), s = n.clearMaskOnLostFocus ? [] : c.getBufferTemplate.call(t).slice())), \n                            (0, l.writeBuffer)(r, s, void 0, e)), o = t._valueGet(!0), t.undoValue !== o && (\"\" != o || t.undoValue != c.getBufferTemplate.call(t).join(\"\") || t.undoValue == c.getBufferTemplate.call(t).join(\"\") && t.maskset.validPositions.length > 0) && (t.undoValue = o, \n                            a.trigger(\"change\"));\n                        }\n                    },\n                    mouseenterEvent: function() {\n                        var e = this.inputmask, t = e.opts.showMaskOnHover, n = this;\n                        if (e.mouseEnter = !0, (n.inputmask.shadowRoot || n.ownerDocument).activeElement !== n) {\n                            var i = (e.isRTL ? c.getBufferTemplate.call(e).slice().reverse() : c.getBufferTemplate.call(e)).join(\"\");\n                            t && (0, l.HandleNativePlaceholder)(n, i);\n                        }\n                    },\n                    submitEvent: function() {\n                        var e = this.inputmask, t = e.opts;\n                        e.undoValue !== e._valueGet(!0) && e.$el.trigger(\"change\"), -1 === c.getLastValidPosition.call(e) && e._valueGet && e._valueGet() === c.getBufferTemplate.call(e).join(\"\") && e._valueSet(\"\"), \n                        t.clearIncomplete && !1 === u.isComplete.call(e, c.getBuffer.call(e)) && e._valueSet(\"\"), \n                        t.removeMaskOnSubmit && (e._valueSet(e.unmaskedvalue(), !0), setTimeout((function() {\n                            (0, l.writeBuffer)(e.el, c.getBuffer.call(e));\n                        }), 0));\n                    },\n                    resetEvent: function() {\n                        var e = this.inputmask;\n                        e.refreshValue = !0, setTimeout((function() {\n                            (0, l.applyInputValue)(e.el, e._valueGet(!0));\n                        }), 0);\n                    }\n                };\n            },\n            9716: function(e, t, n) {\n                Object.defineProperty(t, \"__esModule\", {\n                    value: !0\n                }), t.EventRuler = void 0;\n                var i, a = n(7760), r = (i = n(2394)) && i.__esModule ? i : {\n                    default: i\n                }, o = n(2839), l = n(8711);\n                t.EventRuler = {\n                    on: function(e, t, n) {\n                        var i = e.inputmask.dependencyLib, s = function(t) {\n                            t.originalEvent && (t = t.originalEvent || t, arguments[0] = t);\n                            var s, c = this, u = c.inputmask, f = u ? u.opts : void 0;\n                            if (void 0 === u && \"FORM\" !== this.nodeName) {\n                                var p = i.data(c, \"_inputmask_opts\");\n                                i(c).off(), p && new r.default(p).mask(c);\n                            } else {\n                                if ([ \"submit\", \"reset\", \"setvalue\" ].includes(t.type) || \"FORM\" === this.nodeName || !(c.disabled || c.readOnly && !(\"keydown\" === t.type && t.ctrlKey && t.key === o.keys.c || !1 === f.tabThrough && t.key === o.keys.Tab))) {\n                                    switch (t.type) {\n                                      case \"input\":\n                                        if (!0 === u.skipInputEvent) return u.skipInputEvent = !1, t.preventDefault();\n                                        break;\n\n                                      case \"click\":\n                                      case \"focus\":\n                                        return u.validationEvent ? (u.validationEvent = !1, e.blur(), (0, a.HandleNativePlaceholder)(e, (u.isRTL ? l.getBufferTemplate.call(u).slice().reverse() : l.getBufferTemplate.call(u)).join(\"\")), \n                                        setTimeout((function() {\n                                            e.focus();\n                                        }), f.validationEventTimeOut), !1) : (s = arguments, void setTimeout((function() {\n                                            e.inputmask && n.apply(c, s);\n                                        }), 0));\n                                    }\n                                    var d = n.apply(c, arguments);\n                                    return !1 === d && (t.preventDefault(), t.stopPropagation()), d;\n                                }\n                                t.preventDefault();\n                            }\n                        };\n                        [ \"submit\", \"reset\" ].includes(t) ? (s = s.bind(e), null !== e.form && i(e.form).on(t, s)) : i(e).on(t, s), \n                        e.inputmask.events[t] = e.inputmask.events[t] || [], e.inputmask.events[t].push(s);\n                    },\n                    off: function(e, t) {\n                        if (e.inputmask && e.inputmask.events) {\n                            var n = e.inputmask.dependencyLib, i = e.inputmask.events;\n                            for (var a in t && ((i = [])[t] = e.inputmask.events[t]), i) {\n                                for (var r = i[a]; r.length > 0; ) {\n                                    var o = r.pop();\n                                    [ \"submit\", \"reset\" ].includes(a) ? null !== e.form && n(e.form).off(a, o) : n(e).off(a, o);\n                                }\n                                delete e.inputmask.events[a];\n                            }\n                        }\n                    }\n                };\n            },\n            219: function(e, t, n) {\n                var i = p(n(7184)), a = p(n(2394)), r = n(2839), o = n(8711), l = n(4713);\n                function s(e, t) {\n                    return function(e) {\n                        if (Array.isArray(e)) return e;\n                    }(e) || function(e, t) {\n                        var n = null == e ? null : \"undefined\" != typeof Symbol && e[Symbol.iterator] || e[\"@@iterator\"];\n                        if (null != n) {\n                            var i, a, r, o, l = [], s = !0, c = !1;\n                            try {\n                                if (r = (n = n.call(e)).next, 0 === t) {\n                                    if (Object(n) !== n) return;\n                                    s = !1;\n                                } else for (;!(s = (i = r.call(n)).done) && (l.push(i.value), l.length !== t); s = !0) ;\n                            } catch (e) {\n                                c = !0, a = e;\n                            } finally {\n                                try {\n                                    if (!s && null != n.return && (o = n.return(), Object(o) !== o)) return;\n                                } finally {\n                                    if (c) throw a;\n                                }\n                            }\n                            return l;\n                        }\n                    }(e, t) || function(e, t) {\n                        if (!e) return;\n                        if (\"string\" == typeof e) return c(e, t);\n                        var n = Object.prototype.toString.call(e).slice(8, -1);\n                        \"Object\" === n && e.constructor && (n = e.constructor.name);\n                        if (\"Map\" === n || \"Set\" === n) return Array.from(e);\n                        if (\"Arguments\" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return c(e, t);\n                    }(e, t) || function() {\n                        throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n                    }();\n                }\n                function c(e, t) {\n                    (null == t || t > e.length) && (t = e.length);\n                    for (var n = 0, i = new Array(t); n < t; n++) i[n] = e[n];\n                    return i;\n                }\n                function u(e) {\n                    return u = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(e) {\n                        return typeof e;\n                    } : function(e) {\n                        return e && \"function\" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? \"symbol\" : typeof e;\n                    }, u(e);\n                }\n                function f(e, t) {\n                    for (var n = 0; n < t.length; n++) {\n                        var i = t[n];\n                        i.enumerable = i.enumerable || !1, i.configurable = !0, \"value\" in i && (i.writable = !0), \n                        Object.defineProperty(e, (a = i.key, r = void 0, r = function(e, t) {\n                            if (\"object\" !== u(e) || null === e) return e;\n                            var n = e[Symbol.toPrimitive];\n                            if (void 0 !== n) {\n                                var i = n.call(e, t || \"default\");\n                                if (\"object\" !== u(i)) return i;\n                                throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n                            }\n                            return (\"string\" === t ? String : Number)(e);\n                        }(a, \"string\"), \"symbol\" === u(r) ? r : String(r)), i);\n                    }\n                    var a, r;\n                }\n                function p(e) {\n                    return e && e.__esModule ? e : {\n                        default: e\n                    };\n                }\n                n(1313);\n                var d = a.default.dependencyLib, h = function() {\n                    function e(t, n, i, a) {\n                        !function(e, t) {\n                            if (!(e instanceof t)) throw new TypeError(\"Cannot call a class as a function\");\n                        }(this, e), this.mask = t, this.format = n, this.opts = i, this.inputmask = a, this._date = new Date(1, 0, 1), \n                        this.initDateObject(t, this.opts, this.inputmask);\n                    }\n                    var t, n, i;\n                    return t = e, (n = [ {\n                        key: \"date\",\n                        get: function() {\n                            return void 0 === this._date && (this._date = new Date(1, 0, 1), this.initDateObject(void 0, this.opts, this.inputmask)), \n                            this._date;\n                        }\n                    }, {\n                        key: \"initDateObject\",\n                        value: function(e, t, n) {\n                            var i;\n                            for (P(t).lastIndex = 0; i = P(t).exec(this.format); ) {\n                                var a = /\\d+$/.exec(i[0]), r = a ? i[0][0] + \"x\" : i[0], o = void 0;\n                                if (void 0 !== e) {\n                                    if (a) {\n                                        var s = P(t).lastIndex, c = j.call(n, i.index, t, n && n.maskset);\n                                        P(t).lastIndex = s, o = e.slice(0, e.indexOf(c.nextMatch[0]));\n                                    } else {\n                                        for (var u = i[0][0], f = i.index; n && (t.placeholder[l.getTest.call(n, f).match.placeholder] || l.getTest.call(n, f).match.placeholder) === u; ) f++;\n                                        var p = f - i.index;\n                                        o = e.slice(0, p || y[r] && y[r][4] || r.length);\n                                    }\n                                    e = e.slice(o.length);\n                                }\n                                Object.prototype.hasOwnProperty.call(y, r) && this.setValue(this, o, r, y[r][2], y[r][1]);\n                            }\n                        }\n                    }, {\n                        key: \"setValue\",\n                        value: function(e, t, n, i, a) {\n                            if (void 0 !== t) switch (i) {\n                              case \"ampm\":\n                                e[i] = t, e[\"raw\" + i] = t.replace(/\\s/g, \"_\");\n                                break;\n\n                              case \"month\":\n                                if (\"mmm\" === n || \"mmmm\" === n) {\n                                    e[i] = _(\"mmm\" === n ? m.monthNames.slice(0, 12).findIndex((function(e) {\n                                        return t.toLowerCase() === e.toLowerCase();\n                                    })) + 1 : m.monthNames.slice(12, 24).findIndex((function(e) {\n                                        return t.toLowerCase() === e.toLowerCase();\n                                    })) + 1, 2), e[i] = \"00\" === e[i] ? \"\" : e[i].toString(), e[\"raw\" + i] = e[i];\n                                    break;\n                                }\n\n                              default:\n                                e[i] = t.replace(/[^0-9]/g, \"0\"), e[\"raw\" + i] = t.replace(/\\s/g, \"_\");\n                            }\n                            if (void 0 !== a) {\n                                var r = e[i];\n                                (\"day\" === i && 29 === parseInt(r) || \"month\" === i && 2 === parseInt(r)) && (29 !== parseInt(e.day) || 2 !== parseInt(e.month) || \"\" !== e.year && void 0 !== e.year || e._date.setFullYear(2012, 1, 29)), \n                                \"day\" === i && (g = !0, 0 === parseInt(r) && (r = 1)), \"month\" === i && (g = !0), \n                                \"year\" === i && (g = !0, r.length < y[n][4] && (r = _(r, y[n][4], !0))), (\"\" !== r && !isNaN(r) || \"ampm\" === i) && a.call(e._date, r);\n                            }\n                        }\n                    }, {\n                        key: \"reset\",\n                        value: function() {\n                            this._date = new Date(1, 0, 1);\n                        }\n                    }, {\n                        key: \"reInit\",\n                        value: function() {\n                            this._date = void 0, this.date;\n                        }\n                    } ]) && f(t.prototype, n), i && f(t, i), Object.defineProperty(t, \"prototype\", {\n                        writable: !1\n                    }), e;\n                }(), v = (new Date).getFullYear(), m = a.default.prototype.i18n, g = !1, y = {\n                    d: [ \"[1-9]|[12][0-9]|3[01]\", Date.prototype.setDate, \"day\", Date.prototype.getDate ],\n                    dd: [ \"0[1-9]|[12][0-9]|3[01]\", Date.prototype.setDate, \"day\", function() {\n                        return _(Date.prototype.getDate.call(this), 2);\n                    } ],\n                    ddd: [ \"\" ],\n                    dddd: [ \"\" ],\n                    m: [ \"[1-9]|1[012]\", function(e) {\n                        var t = e ? parseInt(e) : 0;\n                        return t > 0 && t--, Date.prototype.setMonth.call(this, t);\n                    }, \"month\", function() {\n                        return Date.prototype.getMonth.call(this) + 1;\n                    } ],\n                    mm: [ \"0[1-9]|1[012]\", function(e) {\n                        var t = e ? parseInt(e) : 0;\n                        return t > 0 && t--, Date.prototype.setMonth.call(this, t);\n                    }, \"month\", function() {\n                        return _(Date.prototype.getMonth.call(this) + 1, 2);\n                    } ],\n                    mmm: [ m.monthNames.slice(0, 12).join(\"|\"), function(e) {\n                        var t = m.monthNames.slice(0, 12).findIndex((function(t) {\n                            return e.toLowerCase() === t.toLowerCase();\n                        }));\n                        return -1 !== t && Date.prototype.setMonth.call(this, t);\n                    }, \"month\", function() {\n                        return m.monthNames.slice(0, 12)[Date.prototype.getMonth.call(this)];\n                    } ],\n                    mmmm: [ m.monthNames.slice(12, 24).join(\"|\"), function(e) {\n                        var t = m.monthNames.slice(12, 24).findIndex((function(t) {\n                            return e.toLowerCase() === t.toLowerCase();\n                        }));\n                        return -1 !== t && Date.prototype.setMonth.call(this, t);\n                    }, \"month\", function() {\n                        return m.monthNames.slice(12, 24)[Date.prototype.getMonth.call(this)];\n                    } ],\n                    yy: [ \"[0-9]{2}\", function(e) {\n                        var t = (new Date).getFullYear().toString().slice(0, 2);\n                        Date.prototype.setFullYear.call(this, \"\".concat(t).concat(e));\n                    }, \"year\", function() {\n                        return _(Date.prototype.getFullYear.call(this), 2);\n                    }, 2 ],\n                    yyyy: [ \"[0-9]{4}\", Date.prototype.setFullYear, \"year\", function() {\n                        return _(Date.prototype.getFullYear.call(this), 4);\n                    }, 4 ],\n                    h: [ \"[1-9]|1[0-2]\", Date.prototype.setHours, \"hours\", Date.prototype.getHours ],\n                    hh: [ \"0[1-9]|1[0-2]\", Date.prototype.setHours, \"hours\", function() {\n                        return _(Date.prototype.getHours.call(this), 2);\n                    } ],\n                    hx: [ function(e) {\n                        return \"[0-9]{\".concat(e, \"}\");\n                    }, Date.prototype.setHours, \"hours\", function(e) {\n                        return Date.prototype.getHours;\n                    } ],\n                    H: [ \"1?[0-9]|2[0-3]\", Date.prototype.setHours, \"hours\", Date.prototype.getHours ],\n                    HH: [ \"0[0-9]|1[0-9]|2[0-3]\", Date.prototype.setHours, \"hours\", function() {\n                        return _(Date.prototype.getHours.call(this), 2);\n                    } ],\n                    Hx: [ function(e) {\n                        return \"[0-9]{\".concat(e, \"}\");\n                    }, Date.prototype.setHours, \"hours\", function(e) {\n                        return function() {\n                            return _(Date.prototype.getHours.call(this), e);\n                        };\n                    } ],\n                    M: [ \"[1-5]?[0-9]\", Date.prototype.setMinutes, \"minutes\", Date.prototype.getMinutes ],\n                    MM: [ \"0[0-9]|1[0-9]|2[0-9]|3[0-9]|4[0-9]|5[0-9]\", Date.prototype.setMinutes, \"minutes\", function() {\n                        return _(Date.prototype.getMinutes.call(this), 2);\n                    } ],\n                    s: [ \"[1-5]?[0-9]\", Date.prototype.setSeconds, \"seconds\", Date.prototype.getSeconds ],\n                    ss: [ \"0[0-9]|1[0-9]|2[0-9]|3[0-9]|4[0-9]|5[0-9]\", Date.prototype.setSeconds, \"seconds\", function() {\n                        return _(Date.prototype.getSeconds.call(this), 2);\n                    } ],\n                    l: [ \"[0-9]{3}\", Date.prototype.setMilliseconds, \"milliseconds\", function() {\n                        return _(Date.prototype.getMilliseconds.call(this), 3);\n                    }, 3 ],\n                    L: [ \"[0-9]{2}\", Date.prototype.setMilliseconds, \"milliseconds\", function() {\n                        return _(Date.prototype.getMilliseconds.call(this), 2);\n                    }, 2 ],\n                    t: [ \"[ap]\", b, \"ampm\", x, 1 ],\n                    tt: [ \"[ap]m\", b, \"ampm\", x, 2 ],\n                    T: [ \"[AP]\", b, \"ampm\", x, 1 ],\n                    TT: [ \"[AP]M\", b, \"ampm\", x, 2 ],\n                    Z: [ \".*\", void 0, \"Z\", function() {\n                        var e = this.toString().match(/\\((.+)\\)/)[1];\n                        e.includes(\" \") && (e = (e = e.replace(\"-\", \" \").toUpperCase()).split(\" \").map((function(e) {\n                            return s(e, 1)[0];\n                        })).join(\"\"));\n                        return e;\n                    } ],\n                    o: [ \"\" ],\n                    S: [ \"\" ]\n                }, k = {\n                    isoDate: \"yyyy-mm-dd\",\n                    isoTime: \"HH:MM:ss\",\n                    isoDateTime: \"yyyy-mm-dd'T'HH:MM:ss\",\n                    isoUtcDateTime: \"UTC:yyyy-mm-dd'T'HH:MM:ss'Z'\"\n                };\n                function b(e) {\n                    var t = this.getHours();\n                    e.toLowerCase().includes(\"p\") ? this.setHours(t + 12) : e.toLowerCase().includes(\"a\") && t >= 12 && this.setHours(t - 12);\n                }\n                function x() {\n                    var e = this.getHours();\n                    return (e = e || 12) >= 12 ? \"PM\" : \"AM\";\n                }\n                function w(e) {\n                    var t = /\\d+$/.exec(e[0]);\n                    if (t && void 0 !== t[0]) {\n                        var n = y[e[0][0] + \"x\"].slice(\"\");\n                        return n[0] = n[0](t[0]), n[3] = n[3](t[0]), n;\n                    }\n                    if (y[e[0]]) return y[e[0]];\n                }\n                function P(e) {\n                    if (!e.tokenizer) {\n                        var t = [], n = [];\n                        for (var i in y) if (/\\.*x$/.test(i)) {\n                            var a = i[0] + \"\\\\d+\";\n                            -1 === n.indexOf(a) && n.push(a);\n                        } else -1 === t.indexOf(i[0]) && t.push(i[0]);\n                        e.tokenizer = \"(\" + (n.length > 0 ? n.join(\"|\") + \"|\" : \"\") + t.join(\"+|\") + \")+?|.\", \n                        e.tokenizer = new RegExp(e.tokenizer, \"g\");\n                    }\n                    return e.tokenizer;\n                }\n                function S(e, t, n) {\n                    if (!g) return !0;\n                    if (void 0 === e.rawday || !isFinite(e.rawday) && new Date(e.date.getFullYear(), isFinite(e.rawmonth) ? e.month : e.date.getMonth() + 1, 0).getDate() >= e.day || \"29\" == e.day && (!isFinite(e.rawyear) || void 0 === e.rawyear || \"\" === e.rawyear) || new Date(e.date.getFullYear(), isFinite(e.rawmonth) ? e.month : e.date.getMonth() + 1, 0).getDate() >= e.day) return t;\n                    if (\"29\" == e.day) {\n                        var i = j.call(this, t.pos, n, this.maskset);\n                        if (i.targetMatch && \"yyyy\" === i.targetMatch[0] && t.pos - i.targetMatchIndex == 2) return t.remove = t.pos + 1, \n                        t;\n                    } else if (2 == e.date.getMonth() && \"30\" == e.day && void 0 !== t.c) return e.day = \"03\", \n                    e.date.setDate(3), e.date.setMonth(1), t.insert = [ {\n                        pos: t.pos,\n                        c: \"0\"\n                    }, {\n                        pos: t.pos + 1,\n                        c: t.c\n                    } ], t.caret = o.seekNext.call(this, t.pos + 1), t;\n                    return !1;\n                }\n                function O(e, t, n, a) {\n                    var r, o, l = \"\", s = 0, c = {};\n                    for (P(n).lastIndex = 0; r = P(n).exec(e); ) {\n                        if (void 0 === t) if (o = w(r)) l += \"(\" + o[0] + \")\", n.placeholder && \"\" !== n.placeholder ? (c[s] = n.placeholder[r.index % n.placeholder.length], \n                        c[n.placeholder[r.index % n.placeholder.length]] = r[0].charAt(0)) : c[s] = r[0].charAt(0); else switch (r[0]) {\n                          case \"[\":\n                            l += \"(\";\n                            break;\n\n                          case \"]\":\n                            l += \")?\";\n                            break;\n\n                          default:\n                            l += (0, i.default)(r[0]), c[s] = r[0].charAt(0);\n                        } else if (o = w(r)) if (!0 !== a && o[3]) l += o[3].call(t.date); else o[2] ? l += t[\"raw\" + o[2]] : l += r[0]; else l += r[0];\n                        s++;\n                    }\n                    return void 0 === t && (n.placeholder = c), l;\n                }\n                function _(e, t, n) {\n                    for (e = String(e), t = t || 2; e.length < t; ) e = n ? e + \"0\" : \"0\" + e;\n                    return e;\n                }\n                function M(e, t, n) {\n                    return \"string\" == typeof e ? new h(e, t, n, this) : e && \"object\" === u(e) && Object.prototype.hasOwnProperty.call(e, \"date\") ? e : void 0;\n                }\n                function E(e, t) {\n                    return O(t.inputFormat, {\n                        date: e\n                    }, t);\n                }\n                function j(e, t, n) {\n                    var i, a, r = this, o = n && n.tests[e] ? t.placeholder[n.tests[e][0].match.placeholder] || n.tests[e][0].match.placeholder : \"\", s = 0, c = 0;\n                    for (P(t).lastIndex = 0; a = P(t).exec(t.inputFormat); ) {\n                        var u = /\\d+$/.exec(a[0]);\n                        if (u) c = parseInt(u[0]); else {\n                            for (var f = a[0][0], p = s; r && (t.placeholder[l.getTest.call(r, p).match.placeholder] || l.getTest.call(r, p).match.placeholder) === f; ) p++;\n                            0 === (c = p - s) && (c = a[0].length);\n                        }\n                        if (s += c, -1 != a[0].indexOf(o) || s >= e + 1) {\n                            i = a, a = P(t).exec(t.inputFormat);\n                            break;\n                        }\n                    }\n                    return {\n                        targetMatchIndex: s - c,\n                        nextMatch: a,\n                        targetMatch: i\n                    };\n                }\n                a.default.extendAliases({\n                    datetime: {\n                        mask: function(e) {\n                            return e.numericInput = !1, y.S = m.ordinalSuffix.join(\"|\"), e.inputFormat = k[e.inputFormat] || e.inputFormat, \n                            e.displayFormat = k[e.displayFormat] || e.displayFormat || e.inputFormat, e.outputFormat = k[e.outputFormat] || e.outputFormat || e.inputFormat, \n                            e.regex = O(e.inputFormat, void 0, e), e.min = M(e.min, e.inputFormat, e), e.max = M(e.max, e.inputFormat, e), \n                            null;\n                        },\n                        placeholder: \"\",\n                        inputFormat: \"isoDateTime\",\n                        displayFormat: null,\n                        outputFormat: null,\n                        min: null,\n                        max: null,\n                        skipOptionalPartCharacter: \"\",\n                        preValidation: function(e, t, n, i, a, r, o, l) {\n                            if (l) return !0;\n                            if (isNaN(n) && e[t] !== n) {\n                                var s = j.call(this, t, a, r);\n                                if (s.nextMatch && s.nextMatch[0] === n && s.targetMatch[0].length > 1) {\n                                    var c = w(s.targetMatch)[0];\n                                    if (new RegExp(c).test(\"0\" + e[t - 1])) return e[t] = e[t - 1], e[t - 1] = \"0\", \n                                    {\n                                        fuzzy: !0,\n                                        buffer: e,\n                                        refreshFromBuffer: {\n                                            start: t - 1,\n                                            end: t + 1\n                                        },\n                                        pos: t + 1\n                                    };\n                                }\n                            }\n                            return !0;\n                        },\n                        postValidation: function(e, t, n, i, a, r, o, s) {\n                            var c, u, f = this;\n                            if (o) return !0;\n                            if (!1 === i && (((c = j.call(f, t + 1, a, r)).targetMatch && c.targetMatchIndex === t && c.targetMatch[0].length > 1 && void 0 !== y[c.targetMatch[0]] || (c = j.call(f, t + 2, a, r)).targetMatch && c.targetMatchIndex === t + 1 && c.targetMatch[0].length > 1 && void 0 !== y[c.targetMatch[0]]) && (u = w(c.targetMatch)[0]), \n                            void 0 !== u && (void 0 !== r.validPositions[t + 1] && new RegExp(u).test(n + \"0\") ? (e[t] = n, \n                            e[t + 1] = \"0\", i = {\n                                pos: t + 2,\n                                caret: t\n                            }) : new RegExp(u).test(\"0\" + n) && (e[t] = \"0\", e[t + 1] = n, i = {\n                                pos: t + 2\n                            })), !1 === i)) return i;\n                            if (i.fuzzy && (e = i.buffer, t = i.pos), (c = j.call(f, t, a, r)).targetMatch && c.targetMatch[0] && void 0 !== y[c.targetMatch[0]]) {\n                                var p = w(c.targetMatch);\n                                u = p[0];\n                                var d = e.slice(c.targetMatchIndex, c.targetMatchIndex + c.targetMatch[0].length);\n                                if (!1 === new RegExp(u).test(d.join(\"\")) && 2 === c.targetMatch[0].length && r.validPositions[c.targetMatchIndex] && r.validPositions[c.targetMatchIndex + 1] && (r.validPositions[c.targetMatchIndex + 1].input = \"0\"), \n                                \"year\" == p[2]) for (var h = l.getMaskTemplate.call(f, !1, 1, void 0, !0), m = t + 1; m < e.length; m++) e[m] = h[m], \n                                r.validPositions.splice(t + 1, 1);\n                            }\n                            var g = i, k = M.call(f, e.join(\"\"), a.inputFormat, a);\n                            return g && !isNaN(k.date.getTime()) && (a.prefillYear && (g = function(e, t, n) {\n                                if (e.year !== e.rawyear) {\n                                    var i = v.toString(), a = e.rawyear.replace(/[^0-9]/g, \"\"), r = i.slice(0, a.length), o = i.slice(a.length);\n                                    if (2 === a.length && a === r) {\n                                        var l = new Date(v, e.month - 1, e.day);\n                                        e.day == l.getDate() && (!n.max || n.max.date.getTime() >= l.getTime()) && (e.date.setFullYear(v), \n                                        e.year = i, t.insert = [ {\n                                            pos: t.pos + 1,\n                                            c: o[0]\n                                        }, {\n                                            pos: t.pos + 2,\n                                            c: o[1]\n                                        } ]);\n                                    }\n                                }\n                                return t;\n                            }(k, g, a)), g = function(e, t, n, i, a) {\n                                if (!t) return t;\n                                if (t && n.min && !isNaN(n.min.date.getTime())) {\n                                    var r;\n                                    for (e.reset(), P(n).lastIndex = 0; r = P(n).exec(n.inputFormat); ) {\n                                        var o;\n                                        if ((o = w(r)) && o[3]) {\n                                            for (var l = o[1], s = e[o[2]], c = n.min[o[2]], u = n.max ? n.max[o[2]] : c + 1, f = [], p = !1, d = 0; d < c.length; d++) void 0 !== i.validPositions[d + r.index] || p ? (f[d] = s[d], \n                                            p = p || s[d] > c[d]) : (d + r.index == 0 && s[d] < c[d] ? (f[d] = s[d], p = !0) : f[d] = c[d], \n                                            \"year\" === o[2] && s.length - 1 == d && c != u && (f = (parseInt(f.join(\"\")) + 1).toString().split(\"\")), \n                                            \"ampm\" === o[2] && c != u && n.min.date.getTime() > e.date.getTime() && (f[d] = u[d]));\n                                            l.call(e._date, f.join(\"\"));\n                                        }\n                                    }\n                                    t = n.min.date.getTime() <= e.date.getTime(), e.reInit();\n                                }\n                                return t && n.max && (isNaN(n.max.date.getTime()) || (t = n.max.date.getTime() >= e.date.getTime())), \n                                t;\n                            }(k, g = S.call(f, k, g, a), a, r)), void 0 !== t && g && i.pos !== t ? {\n                                buffer: O(a.inputFormat, k, a).split(\"\"),\n                                refreshFromBuffer: {\n                                    start: t,\n                                    end: i.pos\n                                },\n                                pos: i.caret || i.pos\n                            } : g;\n                        },\n                        onKeyDown: function(e, t, n, i) {\n                            e.ctrlKey && e.key === r.keys.ArrowRight && (this.inputmask._valueSet(E(new Date, i)), \n                            d(this).trigger(\"setvalue\"));\n                        },\n                        onUnMask: function(e, t, n) {\n                            return t ? O(n.outputFormat, M.call(this, e, n.inputFormat, n), n, !0) : t;\n                        },\n                        casing: function(e, t, n, i) {\n                            if (0 == t.nativeDef.indexOf(\"[ap]\")) return e.toLowerCase();\n                            if (0 == t.nativeDef.indexOf(\"[AP]\")) return e.toUpperCase();\n                            var a = l.getTest.call(this, [ n - 1 ]);\n                            return 0 == a.match.def.indexOf(\"[AP]\") || 0 === n || a && a.input === String.fromCharCode(r.keyCode.Space) || a && a.match.def === String.fromCharCode(r.keyCode.Space) ? e.toUpperCase() : e.toLowerCase();\n                        },\n                        onBeforeMask: function(e, t) {\n                            return \"[object Date]\" === Object.prototype.toString.call(e) && (e = E(e, t)), e;\n                        },\n                        insertMode: !1,\n                        insertModeVisual: !1,\n                        shiftPositions: !1,\n                        keepStatic: !1,\n                        inputmode: \"numeric\",\n                        prefillYear: !0\n                    }\n                });\n            },\n            1313: function(e, t, n) {\n                var i, a = (i = n(2394)) && i.__esModule ? i : {\n                    default: i\n                };\n                a.default.dependencyLib.extend(!0, a.default.prototype.i18n, {\n                    dayNames: [ \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\", \"Sun\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\", \"Sunday\" ],\n                    monthNames: [ \"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\", \"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\" ],\n                    ordinalSuffix: [ \"st\", \"nd\", \"rd\", \"th\" ]\n                });\n            },\n            3851: function(e, t, n) {\n                var i, a = (i = n(2394)) && i.__esModule ? i : {\n                    default: i\n                }, r = n(8711), o = n(4713);\n                function l(e) {\n                    return function(e) {\n                        if (Array.isArray(e)) return s(e);\n                    }(e) || function(e) {\n                        if (\"undefined\" != typeof Symbol && null != e[Symbol.iterator] || null != e[\"@@iterator\"]) return Array.from(e);\n                    }(e) || function(e, t) {\n                        if (!e) return;\n                        if (\"string\" == typeof e) return s(e, t);\n                        var n = Object.prototype.toString.call(e).slice(8, -1);\n                        \"Object\" === n && e.constructor && (n = e.constructor.name);\n                        if (\"Map\" === n || \"Set\" === n) return Array.from(e);\n                        if (\"Arguments\" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return s(e, t);\n                    }(e) || function() {\n                        throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n                    }();\n                }\n                function s(e, t) {\n                    (null == t || t > e.length) && (t = e.length);\n                    for (var n = 0, i = new Array(t); n < t; n++) i[n] = e[n];\n                    return i;\n                }\n                a.default.extendDefinitions({\n                    A: {\n                        validator: \"[A-Za-z\\u0410-\\u044f\\u0401\\u0451\\xc0-\\xff\\xb5]\",\n                        casing: \"upper\"\n                    },\n                    \"&\": {\n                        validator: \"[0-9A-Za-z\\u0410-\\u044f\\u0401\\u0451\\xc0-\\xff\\xb5]\",\n                        casing: \"upper\"\n                    },\n                    \"#\": {\n                        validator: \"[0-9A-Fa-f]\",\n                        casing: \"upper\"\n                    }\n                });\n                var c = /25[0-5]|2[0-4][0-9]|[01][0-9][0-9]/;\n                function u(e, t, n, i, a) {\n                    if (n - 1 > -1 && \".\" !== t.buffer[n - 1] ? (e = t.buffer[n - 1] + e, e = n - 2 > -1 && \".\" !== t.buffer[n - 2] ? t.buffer[n - 2] + e : \"0\" + e) : e = \"00\" + e, \n                    a.greedy && parseInt(e) > 255 && c.test(\"00\" + e.charAt(2))) {\n                        var r = [].concat(l(t.buffer.slice(0, n)), [ \".\", e.charAt(2) ]);\n                        if (r.join(\"\").match(/\\./g).length < 4) return {\n                            refreshFromBuffer: !0,\n                            buffer: r,\n                            caret: n + 2\n                        };\n                    }\n                    return c.test(e);\n                }\n                a.default.extendAliases({\n                    cssunit: {\n                        regex: \"[+-]?[0-9]+\\\\.?([0-9]+)?(px|em|rem|ex|%|in|cm|mm|pt|pc)\"\n                    },\n                    url: {\n                        regex: \"(https?|ftp)://.*\",\n                        autoUnmask: !1,\n                        keepStatic: !1,\n                        tabThrough: !0\n                    },\n                    ip: {\n                        mask: \"i{1,3}.j{1,3}.k{1,3}.l{1,3}\",\n                        definitions: {\n                            i: {\n                                validator: u\n                            },\n                            j: {\n                                validator: u\n                            },\n                            k: {\n                                validator: u\n                            },\n                            l: {\n                                validator: u\n                            }\n                        },\n                        onUnMask: function(e, t, n) {\n                            return e;\n                        },\n                        inputmode: \"decimal\",\n                        substitutes: {\n                            \",\": \".\"\n                        }\n                    },\n                    email: {\n                        mask: function(e) {\n                            var t = e.separator, n = e.quantifier, i = \"*{1,64}[.*{1,64}][.*{1,64}][.*{1,63}]@-{1,63}.-{1,63}[.-{1,63}][.-{1,63}]\", a = i;\n                            if (t) for (var r = 0; r < n; r++) a += \"[\".concat(t).concat(i, \"]\");\n                            return a;\n                        },\n                        greedy: !1,\n                        casing: \"lower\",\n                        separator: null,\n                        quantifier: 5,\n                        skipOptionalPartCharacter: \"\",\n                        onBeforePaste: function(e, t) {\n                            return (e = e.toLowerCase()).replace(\"mailto:\", \"\");\n                        },\n                        definitions: {\n                            \"*\": {\n                                validator: \"[0-9\\uff11-\\uff19A-Za-z\\u0410-\\u044f\\u0401\\u0451\\xc0-\\xff\\xb5!#$%&'*+/=?^_`{|}~-]\"\n                            },\n                            \"-\": {\n                                validator: \"[0-9A-Za-z-]\"\n                            }\n                        },\n                        onUnMask: function(e, t, n) {\n                            return e;\n                        },\n                        inputmode: \"email\"\n                    },\n                    mac: {\n                        mask: \"##:##:##:##:##:##\"\n                    },\n                    vin: {\n                        mask: \"V{13}9{4}\",\n                        definitions: {\n                            V: {\n                                validator: \"[A-HJ-NPR-Za-hj-npr-z\\\\d]\",\n                                casing: \"upper\"\n                            }\n                        },\n                        clearIncomplete: !0,\n                        autoUnmask: !0\n                    },\n                    ssn: {\n                        mask: \"999-99-9999\",\n                        postValidation: function(e, t, n, i, a, l, s) {\n                            var c = o.getMaskTemplate.call(this, !0, r.getLastValidPosition.call(this), !0, !0);\n                            return /^(?!219-09-9999|078-05-1120)(?!666|000|9.{2}).{3}-(?!00).{2}-(?!0{4}).{4}$/.test(c.join(\"\"));\n                        }\n                    }\n                });\n            },\n            207: function(e, t, n) {\n                var i = l(n(7184)), a = l(n(2394)), r = n(2839), o = n(8711);\n                function l(e) {\n                    return e && e.__esModule ? e : {\n                        default: e\n                    };\n                }\n                var s = a.default.dependencyLib;\n                function c(e, t) {\n                    for (var n = \"\", i = 0; i < e.length; i++) a.default.prototype.definitions[e.charAt(i)] || t.definitions[e.charAt(i)] || t.optionalmarker[0] === e.charAt(i) || t.optionalmarker[1] === e.charAt(i) || t.quantifiermarker[0] === e.charAt(i) || t.quantifiermarker[1] === e.charAt(i) || t.groupmarker[0] === e.charAt(i) || t.groupmarker[1] === e.charAt(i) || t.alternatormarker === e.charAt(i) ? n += \"\\\\\" + e.charAt(i) : n += e.charAt(i);\n                    return n;\n                }\n                function u(e, t, n, i) {\n                    if (e.length > 0 && t > 0 && (!n.digitsOptional || i)) {\n                        var a = e.indexOf(n.radixPoint), r = !1;\n                        n.negationSymbol.back === e[e.length - 1] && (r = !0, e.length--), -1 === a && (e.push(n.radixPoint), \n                        a = e.length - 1);\n                        for (var o = 1; o <= t; o++) isFinite(e[a + o]) || (e[a + o] = \"0\");\n                    }\n                    return r && e.push(n.negationSymbol.back), e;\n                }\n                function f(e, t) {\n                    var n = 0;\n                    for (var i in \"+\" === e && (n = o.seekNext.call(this, t.validPositions.length - 1)), \n                    t.tests) if ((i = parseInt(i)) >= n) for (var a = 0, r = t.tests[i].length; a < r; a++) if ((void 0 === t.validPositions[i] || \"-\" === e) && t.tests[i][a].match.def === e) return i + (void 0 !== t.validPositions[i] && \"-\" !== e ? 1 : 0);\n                    return n;\n                }\n                function p(e, t) {\n                    for (var n = -1, i = 0, a = t.validPositions.length; i < a; i++) {\n                        var r = t.validPositions[i];\n                        if (r && r.match.def === e) {\n                            n = i;\n                            break;\n                        }\n                    }\n                    return n;\n                }\n                function d(e, t, n, i, a) {\n                    var r = t.buffer ? t.buffer.indexOf(a.radixPoint) : -1, o = (-1 !== r || i && a.jitMasking) && new RegExp(a.definitions[9].validator).test(e);\n                    return !i && a._radixDance && -1 !== r && o && null == t.validPositions[r] ? {\n                        insert: {\n                            pos: r === n ? r + 1 : r,\n                            c: a.radixPoint\n                        },\n                        pos: n\n                    } : o;\n                }\n                a.default.extendAliases({\n                    numeric: {\n                        mask: function(e) {\n                            e.repeat = 0, e.groupSeparator === e.radixPoint && e.digits && \"0\" !== e.digits && (\".\" === e.radixPoint ? e.groupSeparator = \",\" : \",\" === e.radixPoint ? e.groupSeparator = \".\" : e.groupSeparator = \"\"), \n                            \" \" === e.groupSeparator && (e.skipOptionalPartCharacter = void 0), e.placeholder.length > 1 && (e.placeholder = e.placeholder.charAt(0)), \n                            \"radixFocus\" === e.positionCaretOnClick && \"\" === e.placeholder && (e.positionCaretOnClick = \"lvp\");\n                            var t = \"0\", n = e.radixPoint;\n                            !0 === e.numericInput && void 0 === e.__financeInput ? (t = \"1\", e.positionCaretOnClick = \"radixFocus\" === e.positionCaretOnClick ? \"lvp\" : e.positionCaretOnClick, \n                            e.digitsOptional = !1, isNaN(e.digits) && (e.digits = 2), e._radixDance = !1, n = \",\" === e.radixPoint ? \"?\" : \"!\", \n                            \"\" !== e.radixPoint && void 0 === e.definitions[n] && (e.definitions[n] = {}, e.definitions[n].validator = \"[\" + e.radixPoint + \"]\", \n                            e.definitions[n].placeholder = e.radixPoint, e.definitions[n].static = !0, e.definitions[n].generated = !0)) : (e.__financeInput = !1, \n                            e.numericInput = !0);\n                            var a, r = \"[+]\";\n                            if (r += c(e.prefix, e), \"\" !== e.groupSeparator ? (void 0 === e.definitions[e.groupSeparator] && (e.definitions[e.groupSeparator] = {}, \n                            e.definitions[e.groupSeparator].validator = \"[\" + e.groupSeparator + \"]\", e.definitions[e.groupSeparator].placeholder = e.groupSeparator, \n                            e.definitions[e.groupSeparator].static = !0, e.definitions[e.groupSeparator].generated = !0), \n                            r += e._mask(e)) : r += \"9{+}\", void 0 !== e.digits && 0 !== e.digits) {\n                                var o = e.digits.toString().split(\",\");\n                                isFinite(o[0]) && o[1] && isFinite(o[1]) ? r += n + t + \"{\" + e.digits + \"}\" : (isNaN(e.digits) || parseInt(e.digits) > 0) && (e.digitsOptional || e.jitMasking ? (a = r + n + t + \"{0,\" + e.digits + \"}\", \n                                e.keepStatic = !0) : r += n + t + \"{\" + e.digits + \"}\");\n                            } else e.inputmode = \"numeric\";\n                            return r += c(e.suffix, e), r += \"[-]\", a && (r = [ a + c(e.suffix, e) + \"[-]\", r ]), \n                            e.greedy = !1, function(e) {\n                                void 0 === e.parseMinMaxOptions && (null !== e.min && (e.min = e.min.toString().replace(new RegExp((0, \n                                i.default)(e.groupSeparator), \"g\"), \"\"), \",\" === e.radixPoint && (e.min = e.min.replace(e.radixPoint, \".\")), \n                                e.min = isFinite(e.min) ? parseFloat(e.min) : NaN, isNaN(e.min) && (e.min = Number.MIN_VALUE)), \n                                null !== e.max && (e.max = e.max.toString().replace(new RegExp((0, i.default)(e.groupSeparator), \"g\"), \"\"), \n                                \",\" === e.radixPoint && (e.max = e.max.replace(e.radixPoint, \".\")), e.max = isFinite(e.max) ? parseFloat(e.max) : NaN, \n                                isNaN(e.max) && (e.max = Number.MAX_VALUE)), e.parseMinMaxOptions = \"done\");\n                            }(e), \"\" !== e.radixPoint && e.substituteRadixPoint && (e.substitutes[\".\" == e.radixPoint ? \",\" : \".\"] = e.radixPoint), \n                            r;\n                        },\n                        _mask: function(e) {\n                            return \"(\" + e.groupSeparator + \"999){+|1}\";\n                        },\n                        digits: \"*\",\n                        digitsOptional: !0,\n                        enforceDigitsOnBlur: !1,\n                        radixPoint: \".\",\n                        positionCaretOnClick: \"radixFocus\",\n                        _radixDance: !0,\n                        groupSeparator: \"\",\n                        allowMinus: !0,\n                        negationSymbol: {\n                            front: \"-\",\n                            back: \"\"\n                        },\n                        prefix: \"\",\n                        suffix: \"\",\n                        min: null,\n                        max: null,\n                        SetMaxOnOverflow: !1,\n                        step: 1,\n                        inputType: \"text\",\n                        unmaskAsNumber: !1,\n                        roundingFN: Math.round,\n                        inputmode: \"decimal\",\n                        shortcuts: {\n                            k: \"1000\",\n                            m: \"1000000\"\n                        },\n                        placeholder: \"0\",\n                        greedy: !1,\n                        rightAlign: !0,\n                        insertMode: !0,\n                        autoUnmask: !1,\n                        skipOptionalPartCharacter: \"\",\n                        usePrototypeDefinitions: !1,\n                        stripLeadingZeroes: !0,\n                        substituteRadixPoint: !0,\n                        definitions: {\n                            0: {\n                                validator: d\n                            },\n                            1: {\n                                validator: d,\n                                definitionSymbol: \"9\"\n                            },\n                            9: {\n                                validator: \"[0-9\\uff10-\\uff19\\u0660-\\u0669\\u06f0-\\u06f9]\",\n                                definitionSymbol: \"*\"\n                            },\n                            \"+\": {\n                                validator: function(e, t, n, i, a) {\n                                    return a.allowMinus && (\"-\" === e || e === a.negationSymbol.front);\n                                }\n                            },\n                            \"-\": {\n                                validator: function(e, t, n, i, a) {\n                                    return a.allowMinus && e === a.negationSymbol.back;\n                                }\n                            }\n                        },\n                        preValidation: function(e, t, n, i, a, r, o, l) {\n                            var s = this;\n                            if (!1 !== a.__financeInput && n === a.radixPoint) return !1;\n                            var c = e.indexOf(a.radixPoint), u = t;\n                            if (t = function(e, t, n, i, a) {\n                                return a._radixDance && a.numericInput && t !== a.negationSymbol.back && e <= n && (n > 0 || t == a.radixPoint) && (void 0 === i.validPositions[e - 1] || i.validPositions[e - 1].input !== a.negationSymbol.back) && (e -= 1), \n                                e;\n                            }(t, n, c, r, a), \"-\" === n || n === a.negationSymbol.front) {\n                                if (!0 !== a.allowMinus) return !1;\n                                var d = !1, h = p(\"+\", r), v = p(\"-\", r);\n                                return -1 !== h && (d = [ h ], -1 !== v && d.push(v)), !1 !== d ? {\n                                    remove: d,\n                                    caret: u - a.negationSymbol.back.length\n                                } : {\n                                    insert: [ {\n                                        pos: f.call(s, \"+\", r),\n                                        c: a.negationSymbol.front,\n                                        fromIsValid: !0\n                                    }, {\n                                        pos: f.call(s, \"-\", r),\n                                        c: a.negationSymbol.back,\n                                        fromIsValid: void 0\n                                    } ],\n                                    caret: u + a.negationSymbol.back.length\n                                };\n                            }\n                            if (n === a.groupSeparator) return {\n                                caret: u\n                            };\n                            if (l) return !0;\n                            if (-1 !== c && !0 === a._radixDance && !1 === i && n === a.radixPoint && void 0 !== a.digits && (isNaN(a.digits) || parseInt(a.digits) > 0) && c !== t) {\n                                var m = f.call(s, a.radixPoint, r);\n                                return r.validPositions[m] && (r.validPositions[m].generatedInput = r.validPositions[m].generated || !1), \n                                {\n                                    caret: a._radixDance && t === c - 1 ? c + 1 : c\n                                };\n                            }\n                            if (!1 === a.__financeInput) if (i) {\n                                if (a.digitsOptional) return {\n                                    rewritePosition: o.end\n                                };\n                                if (!a.digitsOptional) {\n                                    if (o.begin > c && o.end <= c) return n === a.radixPoint ? {\n                                        insert: {\n                                            pos: c + 1,\n                                            c: \"0\",\n                                            fromIsValid: !0\n                                        },\n                                        rewritePosition: c\n                                    } : {\n                                        rewritePosition: c + 1\n                                    };\n                                    if (o.begin < c) return {\n                                        rewritePosition: o.begin - 1\n                                    };\n                                }\n                            } else if (!a.showMaskOnHover && !a.showMaskOnFocus && !a.digitsOptional && a.digits > 0 && \"\" === this.__valueGet.call(this.el)) return {\n                                rewritePosition: c\n                            };\n                            return {\n                                rewritePosition: t\n                            };\n                        },\n                        postValidation: function(e, t, n, i, a, r, o) {\n                            if (!1 === i) return i;\n                            if (o) return !0;\n                            if (null !== a.min || null !== a.max) {\n                                var l = a.onUnMask(e.slice().reverse().join(\"\"), void 0, s.extend({}, a, {\n                                    unmaskAsNumber: !0\n                                }));\n                                if (null !== a.min && l < a.min && (l.toString().length > a.min.toString().length || l < 0)) return !1;\n                                if (null !== a.max && l > a.max) return !!a.SetMaxOnOverflow && {\n                                    refreshFromBuffer: !0,\n                                    buffer: u(a.max.toString().replace(\".\", a.radixPoint).split(\"\"), a.digits, a).reverse()\n                                };\n                            }\n                            return i;\n                        },\n                        onUnMask: function(e, t, n) {\n                            if (\"\" === t && !0 === n.nullable) return t;\n                            var a = e.replace(n.prefix, \"\");\n                            return a = (a = a.replace(n.suffix, \"\")).replace(new RegExp((0, i.default)(n.groupSeparator), \"g\"), \"\"), \n                            \"\" !== n.placeholder.charAt(0) && (a = a.replace(new RegExp(n.placeholder.charAt(0), \"g\"), \"0\")), \n                            n.unmaskAsNumber ? (\"\" !== n.radixPoint && -1 !== a.indexOf(n.radixPoint) && (a = a.replace(i.default.call(this, n.radixPoint), \".\")), \n                            a = (a = a.replace(new RegExp(\"^\" + (0, i.default)(n.negationSymbol.front)), \"-\")).replace(new RegExp((0, \n                            i.default)(n.negationSymbol.back) + \"$\"), \"\"), Number(a)) : a;\n                        },\n                        isComplete: function(e, t) {\n                            var n = (t.numericInput ? e.slice().reverse() : e).join(\"\");\n                            return n = (n = (n = (n = (n = n.replace(new RegExp(\"^\" + (0, i.default)(t.negationSymbol.front)), \"-\")).replace(new RegExp((0, \n                            i.default)(t.negationSymbol.back) + \"$\"), \"\")).replace(t.prefix, \"\")).replace(t.suffix, \"\")).replace(new RegExp((0, \n                            i.default)(t.groupSeparator) + \"([0-9]{3})\", \"g\"), \"$1\"), \",\" === t.radixPoint && (n = n.replace((0, \n                            i.default)(t.radixPoint), \".\")), isFinite(n);\n                        },\n                        onBeforeMask: function(e, t) {\n                            var n;\n                            e = null !== (n = e) && void 0 !== n ? n : \"\";\n                            var a = t.radixPoint || \",\";\n                            isFinite(t.digits) && (t.digits = parseInt(t.digits)), \"number\" != typeof e && \"number\" !== t.inputType || \"\" === a || (e = e.toString().replace(\".\", a));\n                            var r = \"-\" === e.charAt(0) || e.charAt(0) === t.negationSymbol.front, o = e.split(a), l = o[0].replace(/[^\\-0-9]/g, \"\"), s = o.length > 1 ? o[1].replace(/[^0-9]/g, \"\") : \"\", c = o.length > 1;\n                            e = l + (\"\" !== s ? a + s : s);\n                            var f = 0;\n                            if (\"\" !== a && (f = t.digitsOptional ? t.digits < s.length ? t.digits : s.length : t.digits, \n                            \"\" !== s || !t.digitsOptional)) {\n                                var p = Math.pow(10, f || 1);\n                                e = e.replace((0, i.default)(a), \".\"), isNaN(parseFloat(e)) || (e = (t.roundingFN(parseFloat(e) * p) / p).toFixed(f)), \n                                e = e.toString().replace(\".\", a);\n                            }\n                            if (0 === t.digits && -1 !== e.indexOf(a) && (e = e.substring(0, e.indexOf(a))), \n                            null !== t.min || null !== t.max) {\n                                var d = e.toString().replace(a, \".\");\n                                null !== t.min && d < t.min ? e = t.min.toString().replace(\".\", a) : null !== t.max && d > t.max && (e = t.max.toString().replace(\".\", a));\n                            }\n                            return r && \"-\" !== e.charAt(0) && (e = \"-\" + e), u(e.toString().split(\"\"), f, t, c).join(\"\");\n                        },\n                        onBeforeWrite: function(e, t, n, a) {\n                            function r(e, t) {\n                                if (!1 !== a.__financeInput || t) {\n                                    var n = e.indexOf(a.radixPoint);\n                                    -1 !== n && e.splice(n, 1);\n                                }\n                                if (\"\" !== a.groupSeparator) for (;-1 !== (n = e.indexOf(a.groupSeparator)); ) e.splice(n, 1);\n                                return e;\n                            }\n                            var o, l;\n                            if (a.stripLeadingZeroes && (l = function(e, t) {\n                                var n = new RegExp(\"(^\" + (\"\" !== t.negationSymbol.front ? (0, i.default)(t.negationSymbol.front) + \"?\" : \"\") + (0, \n                                i.default)(t.prefix) + \")(.*)(\" + (0, i.default)(t.suffix) + (\"\" != t.negationSymbol.back ? (0, \n                                i.default)(t.negationSymbol.back) + \"?\" : \"\") + \"$)\").exec(e.slice().reverse().join(\"\")), a = n ? n[2] : \"\", r = !1;\n                                return a && (a = a.split(t.radixPoint.charAt(0))[0], r = new RegExp(\"^[0\" + t.groupSeparator + \"]*\").exec(a)), \n                                !(!r || !(r[0].length > 1 || r[0].length > 0 && r[0].length < a.length)) && r;\n                            }(t, a))) for (var c = t.join(\"\").lastIndexOf(l[0].split(\"\").reverse().join(\"\")) - (l[0] == l.input ? 0 : 1), f = l[0] == l.input ? 1 : 0, p = l[0].length - f; p > 0; p--) this.maskset.validPositions.splice(c + p, 1), \n                            delete t[c + p];\n                            if (e) switch (e.type) {\n                              case \"blur\":\n                              case \"checkval\":\n                                if (null !== a.min) {\n                                    var d = a.onUnMask(t.slice().reverse().join(\"\"), void 0, s.extend({}, a, {\n                                        unmaskAsNumber: !0\n                                    }));\n                                    if (null !== a.min && d < a.min) return {\n                                        refreshFromBuffer: !0,\n                                        buffer: u(a.min.toString().replace(\".\", a.radixPoint).split(\"\"), a.digits, a).reverse()\n                                    };\n                                }\n                                if (t[t.length - 1] === a.negationSymbol.front) {\n                                    var h = new RegExp(\"(^\" + (\"\" != a.negationSymbol.front ? (0, i.default)(a.negationSymbol.front) + \"?\" : \"\") + (0, \n                                    i.default)(a.prefix) + \")(.*)(\" + (0, i.default)(a.suffix) + (\"\" != a.negationSymbol.back ? (0, \n                                    i.default)(a.negationSymbol.back) + \"?\" : \"\") + \"$)\").exec(r(t.slice(), !0).reverse().join(\"\"));\n                                    0 == (h ? h[2] : \"\") && (o = {\n                                        refreshFromBuffer: !0,\n                                        buffer: [ 0 ]\n                                    });\n                                } else if (\"\" !== a.radixPoint) {\n                                    t.indexOf(a.radixPoint) === a.suffix.length && (o && o.buffer ? o.buffer.splice(0, 1 + a.suffix.length) : (t.splice(0, 1 + a.suffix.length), \n                                    o = {\n                                        refreshFromBuffer: !0,\n                                        buffer: r(t)\n                                    }));\n                                }\n                                if (a.enforceDigitsOnBlur) {\n                                    var v = (o = o || {}) && o.buffer || t.slice().reverse();\n                                    o.refreshFromBuffer = !0, o.buffer = u(v, a.digits, a, !0).reverse();\n                                }\n                            }\n                            return o;\n                        },\n                        onKeyDown: function(e, t, n, i) {\n                            var a, o = s(this);\n                            if (3 != e.location) {\n                                var l, c = e.key;\n                                if ((l = i.shortcuts && i.shortcuts[c]) && l.length > 1) return this.inputmask.__valueSet.call(this, parseFloat(this.inputmask.unmaskedvalue()) * parseInt(l)), \n                                o.trigger(\"setvalue\"), !1;\n                            }\n                            if (e.ctrlKey) switch (e.key) {\n                              case r.keys.ArrowUp:\n                                return this.inputmask.__valueSet.call(this, parseFloat(this.inputmask.unmaskedvalue()) + parseInt(i.step)), \n                                o.trigger(\"setvalue\"), !1;\n\n                              case r.keys.ArrowDown:\n                                return this.inputmask.__valueSet.call(this, parseFloat(this.inputmask.unmaskedvalue()) - parseInt(i.step)), \n                                o.trigger(\"setvalue\"), !1;\n                            }\n                            if (!e.shiftKey && (e.key === r.keys.Delete || e.key === r.keys.Backspace || e.key === r.keys.BACKSPACE_SAFARI) && n.begin !== t.length) {\n                                if (t[e.key === r.keys.Delete ? n.begin - 1 : n.end] === i.negationSymbol.front) return a = t.slice().reverse(), \n                                \"\" !== i.negationSymbol.front && a.shift(), \"\" !== i.negationSymbol.back && a.pop(), \n                                o.trigger(\"setvalue\", [ a.join(\"\"), n.begin ]), !1;\n                                if (!0 === i._radixDance) {\n                                    var f, p = t.indexOf(i.radixPoint);\n                                    if (i.digitsOptional) {\n                                        if (0 === p) return (a = t.slice().reverse()).pop(), o.trigger(\"setvalue\", [ a.join(\"\"), n.begin >= a.length ? a.length : n.begin ]), \n                                        !1;\n                                    } else if (-1 !== p && (n.begin < p || n.end < p || e.key === r.keys.Delete && (n.begin === p || n.begin - 1 === p))) return n.begin === n.end && (e.key === r.keys.Backspace || e.key === r.keys.BACKSPACE_SAFARI ? n.begin++ : e.key === r.keys.Delete && n.begin - 1 === p && (f = s.extend({}, n), \n                                    n.begin--, n.end--)), (a = t.slice().reverse()).splice(a.length - n.begin, n.begin - n.end + 1), \n                                    a = u(a, i.digits, i).join(\"\"), f && (n = f), o.trigger(\"setvalue\", [ a, n.begin >= a.length ? p + 1 : n.begin ]), \n                                    !1;\n                                }\n                            }\n                        }\n                    },\n                    currency: {\n                        prefix: \"\",\n                        groupSeparator: \",\",\n                        alias: \"numeric\",\n                        digits: 2,\n                        digitsOptional: !1\n                    },\n                    decimal: {\n                        alias: \"numeric\"\n                    },\n                    integer: {\n                        alias: \"numeric\",\n                        inputmode: \"numeric\",\n                        digits: 0\n                    },\n                    percentage: {\n                        alias: \"numeric\",\n                        min: 0,\n                        max: 100,\n                        suffix: \" %\",\n                        digits: 0,\n                        allowMinus: !1\n                    },\n                    indianns: {\n                        alias: \"numeric\",\n                        _mask: function(e) {\n                            return \"(\" + e.groupSeparator + \"99){*|1}(\" + e.groupSeparator + \"999){1|1}\";\n                        },\n                        groupSeparator: \",\",\n                        radixPoint: \".\",\n                        placeholder: \"0\",\n                        digits: 2,\n                        digitsOptional: !1\n                    }\n                });\n            },\n            9380: function(e, t) {\n                Object.defineProperty(t, \"__esModule\", {\n                    value: !0\n                }), t.default = void 0;\n                var n = !(\"undefined\" == typeof window || !window.document || !window.document.createElement);\n                t.default = n ? window : {};\n            },\n            7760: function(e, t, n) {\n                Object.defineProperty(t, \"__esModule\", {\n                    value: !0\n                }), t.HandleNativePlaceholder = function(e, t) {\n                    var n = e ? e.inputmask : this;\n                    if (i.ie) {\n                        if (e.inputmask._valueGet() !== t && (e.placeholder !== t || \"\" === e.placeholder)) {\n                            var a = o.getBuffer.call(n).slice(), r = e.inputmask._valueGet();\n                            if (r !== t) {\n                                var l = o.getLastValidPosition.call(n);\n                                -1 === l && r === o.getBufferTemplate.call(n).join(\"\") ? a = [] : -1 !== l && u.call(n, a), \n                                p(e, a);\n                            }\n                        }\n                    } else e.placeholder !== t && (e.placeholder = t, \"\" === e.placeholder && e.removeAttribute(\"placeholder\"));\n                }, t.applyInputValue = c, t.checkVal = f, t.clearOptionalTail = u, t.unmaskedvalue = function(e) {\n                    var t = e ? e.inputmask : this, n = t.opts, i = t.maskset;\n                    if (e) {\n                        if (void 0 === e.inputmask) return e.value;\n                        e.inputmask && e.inputmask.refreshValue && c(e, e.inputmask._valueGet(!0));\n                    }\n                    for (var a = [], r = i.validPositions, l = 0, s = r.length; l < s; l++) r[l] && r[l].match && (1 != r[l].match.static || Array.isArray(i.metadata) && !0 !== r[l].generatedInput) && a.push(r[l].input);\n                    var u = 0 === a.length ? \"\" : (t.isRTL ? a.reverse() : a).join(\"\");\n                    if (\"function\" == typeof n.onUnMask) {\n                        var f = (t.isRTL ? o.getBuffer.call(t).slice().reverse() : o.getBuffer.call(t)).join(\"\");\n                        u = n.onUnMask.call(t, f, u, n);\n                    }\n                    return u;\n                }, t.writeBuffer = p;\n                var i = n(9845), a = n(6030), r = n(2839), o = n(8711), l = n(7215), s = n(4713);\n                function c(e, t, n) {\n                    var i = e ? e.inputmask : this, a = i.opts;\n                    e.inputmask.refreshValue = !1, \"function\" == typeof a.onBeforeMask && (t = a.onBeforeMask.call(i, t, a) || t), \n                    f(e, !0, !1, t = (t || \"\").toString().split(\"\"), n), i.undoValue = i._valueGet(!0), \n                    (a.clearMaskOnLostFocus || a.clearIncomplete) && e.inputmask._valueGet() === o.getBufferTemplate.call(i).join(\"\") && -1 === o.getLastValidPosition.call(i) && e.inputmask._valueSet(\"\");\n                }\n                function u(e) {\n                    e.length = 0;\n                    for (var t, n = s.getMaskTemplate.call(this, !0, 0, !0, void 0, !0); void 0 !== (t = n.shift()); ) e.push(t);\n                    return e;\n                }\n                function f(e, t, n, i, r) {\n                    var c, u = e ? e.inputmask : this, f = u.maskset, d = u.opts, h = u.dependencyLib, v = i.slice(), m = \"\", g = -1, y = d.skipOptionalPartCharacter;\n                    d.skipOptionalPartCharacter = \"\", o.resetMaskSet.call(u, !1), u.clicked = 0, g = d.radixPoint ? o.determineNewCaretPosition.call(u, {\n                        begin: 0,\n                        end: 0\n                    }, !1, !1 === d.__financeInput ? \"radixFocus\" : void 0).begin : 0, f.p = g, u.caretPos = {\n                        begin: g\n                    };\n                    var k = [], b = u.caretPos;\n                    if (v.forEach((function(e, t) {\n                        if (void 0 !== e) {\n                            var i = new h.Event(\"_checkval\");\n                            i.key = e, m += e;\n                            var r = o.getLastValidPosition.call(u, void 0, !0);\n                            !function(e, t) {\n                                for (var n = s.getMaskTemplate.call(u, !0, 0).slice(e, o.seekNext.call(u, e, !1, !1)).join(\"\").replace(/'/g, \"\"), i = n.indexOf(t); i > 0 && \" \" === n[i - 1]; ) i--;\n                                var a = 0 === i && !o.isMask.call(u, e) && (s.getTest.call(u, e).match.nativeDef === t.charAt(0) || !0 === s.getTest.call(u, e).match.static && s.getTest.call(u, e).match.nativeDef === \"'\" + t.charAt(0) || \" \" === s.getTest.call(u, e).match.nativeDef && (s.getTest.call(u, e + 1).match.nativeDef === t.charAt(0) || !0 === s.getTest.call(u, e + 1).match.static && s.getTest.call(u, e + 1).match.nativeDef === \"'\" + t.charAt(0)));\n                                if (!a && i > 0 && !o.isMask.call(u, e, !1, !0)) {\n                                    var r = o.seekNext.call(u, e);\n                                    u.caretPos.begin < r && (u.caretPos = {\n                                        begin: r\n                                    });\n                                }\n                                return a;\n                            }(g, m) ? (c = a.EventHandlers.keypressEvent.call(u, i, !0, !1, n, u.caretPos.begin)) && (g = u.caretPos.begin + 1, \n                            m = \"\") : c = a.EventHandlers.keypressEvent.call(u, i, !0, !1, n, r + 1), c ? (void 0 !== c.pos && f.validPositions[c.pos] && !0 === f.validPositions[c.pos].match.static && void 0 === f.validPositions[c.pos].alternation && (k.push(c.pos), \n                            u.isRTL || (c.forwardPosition = c.pos + 1)), p.call(u, void 0, o.getBuffer.call(u), c.forwardPosition, i, !1), \n                            u.caretPos = {\n                                begin: c.forwardPosition,\n                                end: c.forwardPosition\n                            }, b = u.caretPos) : void 0 === f.validPositions[t] && v[t] === s.getPlaceholder.call(u, t) && o.isMask.call(u, t, !0) ? u.caretPos.begin++ : u.caretPos = b;\n                        }\n                    })), k.length > 0) {\n                        var x, w, P = o.seekNext.call(u, -1, void 0, !1);\n                        if (!l.isComplete.call(u, o.getBuffer.call(u)) && k.length <= P || l.isComplete.call(u, o.getBuffer.call(u)) && k.length > 0 && k.length !== P && 0 === k[0]) for (var S = P; void 0 !== (x = k.shift()); ) if (x < S) {\n                            var O = new h.Event(\"_checkval\");\n                            if ((w = f.validPositions[x]).generatedInput = !0, O.key = w.input, (c = a.EventHandlers.keypressEvent.call(u, O, !0, !1, n, S)) && void 0 !== c.pos && c.pos !== x && f.validPositions[c.pos] && !0 === f.validPositions[c.pos].match.static) k.push(c.pos); else if (!c) break;\n                            S++;\n                        }\n                    }\n                    t && p.call(u, e, o.getBuffer.call(u), c ? c.forwardPosition : u.caretPos.begin, r || new h.Event(\"checkval\"), r && (\"input\" === r.type && u.undoValue !== o.getBuffer.call(u).join(\"\") || \"paste\" === r.type)), \n                    d.skipOptionalPartCharacter = y;\n                }\n                function p(e, t, n, i, a) {\n                    var s = e ? e.inputmask : this, c = s.opts, u = s.dependencyLib;\n                    if (i && \"function\" == typeof c.onBeforeWrite) {\n                        var f = c.onBeforeWrite.call(s, i, t, n, c);\n                        if (f) {\n                            if (f.refreshFromBuffer) {\n                                var p = f.refreshFromBuffer;\n                                l.refreshFromBuffer.call(s, !0 === p ? p : p.start, p.end, f.buffer || t), t = o.getBuffer.call(s, !0);\n                            }\n                            void 0 !== n && (n = void 0 !== f.caret ? f.caret : n);\n                        }\n                    }\n                    if (void 0 !== e && (e.inputmask._valueSet(t.join(\"\")), void 0 === n || void 0 !== i && \"blur\" === i.type || o.caret.call(s, e, n, void 0, void 0, void 0 !== i && \"keydown\" === i.type && (i.key === r.keys.Delete || i.key === r.keys.Backspace)), \n                    void 0 === e.inputmask.writeBufferHook || e.inputmask.writeBufferHook(n), !0 === a)) {\n                        var d = u(e), h = e.inputmask._valueGet();\n                        e.inputmask.skipInputEvent = !0, d.trigger(\"input\"), setTimeout((function() {\n                            h === o.getBufferTemplate.call(s).join(\"\") ? d.trigger(\"cleared\") : !0 === l.isComplete.call(s, t) && d.trigger(\"complete\");\n                        }), 0);\n                    }\n                }\n            },\n            2394: function(e, t, n) {\n                Object.defineProperty(t, \"__esModule\", {\n                    value: !0\n                }), t.default = void 0;\n                var i = v(n(3976)), a = v(n(7392)), r = v(n(4963)), o = n(9716), l = v(n(9380)), s = n(7760), c = n(157), u = n(2391), f = n(8711), p = n(7215), d = n(4713);\n                function h(e) {\n                    return h = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(e) {\n                        return typeof e;\n                    } : function(e) {\n                        return e && \"function\" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? \"symbol\" : typeof e;\n                    }, h(e);\n                }\n                function v(e) {\n                    return e && e.__esModule ? e : {\n                        default: e\n                    };\n                }\n                var m = l.default.document, g = \"_inputmask_opts\";\n                function y(e, t, n) {\n                    if (!(this instanceof y)) return new y(e, t, n);\n                    this.dependencyLib = r.default, this.el = void 0, this.events = {}, this.maskset = void 0, \n                    !0 !== n && (\"[object Object]\" === Object.prototype.toString.call(e) ? t = e : (t = t || {}, \n                    e && (t.alias = e)), this.opts = r.default.extend(!0, {}, this.defaults, t), this.noMasksCache = t && void 0 !== t.definitions, \n                    this.userOptions = t || {}, k(this.opts.alias, t, this.opts)), this.refreshValue = !1, \n                    this.undoValue = void 0, this.$el = void 0, this.skipInputEvent = !1, this.validationEvent = !1, \n                    this.ignorable = !1, this.maxLength, this.mouseEnter = !1, this.clicked = 0, this.originalPlaceholder = void 0, \n                    this.isComposing = !1, this.hasAlternator = !1;\n                }\n                function k(e, t, n) {\n                    var i = y.prototype.aliases[e];\n                    return i ? (i.alias && k(i.alias, void 0, n), r.default.extend(!0, n, i), r.default.extend(!0, n, t), \n                    !0) : (null === n.mask && (n.mask = e), !1);\n                }\n                y.prototype = {\n                    dataAttribute: \"data-inputmask\",\n                    defaults: i.default,\n                    definitions: a.default,\n                    aliases: {},\n                    masksCache: {},\n                    i18n: {},\n                    get isRTL() {\n                        return this.opts.isRTL || this.opts.numericInput;\n                    },\n                    mask: function(e) {\n                        var t = this;\n                        return \"string\" == typeof e && (e = m.getElementById(e) || m.querySelectorAll(e)), \n                        (e = e.nodeName ? [ e ] : Array.isArray(e) ? e : [].slice.call(e)).forEach((function(e, n) {\n                            var i = r.default.extend(!0, {}, t.opts);\n                            if (function(e, t, n, i) {\n                                function a(t, a) {\n                                    var r = \"\" === i ? t : i + \"-\" + t;\n                                    null !== (a = void 0 !== a ? a : e.getAttribute(r)) && (\"string\" == typeof a && (0 === t.indexOf(\"on\") ? a = l.default[a] : \"false\" === a ? a = !1 : \"true\" === a && (a = !0)), \n                                    n[t] = a);\n                                }\n                                if (!0 === t.importDataAttributes) {\n                                    var o, s, c, u, f = e.getAttribute(i);\n                                    if (f && \"\" !== f && (f = f.replace(/'/g, '\"'), s = JSON.parse(\"{\" + f + \"}\")), \n                                    s) for (u in c = void 0, s) if (\"alias\" === u.toLowerCase()) {\n                                        c = s[u];\n                                        break;\n                                    }\n                                    for (o in a(\"alias\", c), n.alias && k(n.alias, n, t), t) {\n                                        if (s) for (u in c = void 0, s) if (u.toLowerCase() === o.toLowerCase()) {\n                                            c = s[u];\n                                            break;\n                                        }\n                                        a(o, c);\n                                    }\n                                }\n                                r.default.extend(!0, t, n), (\"rtl\" === e.dir || t.rightAlign) && (e.style.textAlign = \"right\");\n                                (\"rtl\" === e.dir || t.numericInput) && (e.dir = \"ltr\", e.removeAttribute(\"dir\"), \n                                t.isRTL = !0);\n                                return Object.keys(n).length;\n                            }(e, i, r.default.extend(!0, {}, t.userOptions), t.dataAttribute)) {\n                                var a = (0, u.generateMaskSet)(i, t.noMasksCache);\n                                void 0 !== a && (void 0 !== e.inputmask && (e.inputmask.opts.autoUnmask = !0, e.inputmask.remove()), \n                                e.inputmask = new y(void 0, void 0, !0), e.inputmask.opts = i, e.inputmask.noMasksCache = t.noMasksCache, \n                                e.inputmask.userOptions = r.default.extend(!0, {}, t.userOptions), e.inputmask.el = e, \n                                e.inputmask.$el = (0, r.default)(e), e.inputmask.maskset = a, r.default.data(e, g, t.userOptions), \n                                c.mask.call(e.inputmask));\n                            }\n                        })), e && e[0] && e[0].inputmask || this;\n                    },\n                    option: function(e, t) {\n                        return \"string\" == typeof e ? this.opts[e] : \"object\" === h(e) ? (r.default.extend(this.userOptions, e), \n                        this.el && !0 !== t && this.mask(this.el), this) : void 0;\n                    },\n                    unmaskedvalue: function(e) {\n                        if (this.maskset = this.maskset || (0, u.generateMaskSet)(this.opts, this.noMasksCache), \n                        void 0 === this.el || void 0 !== e) {\n                            var t = (\"function\" == typeof this.opts.onBeforeMask && this.opts.onBeforeMask.call(this, e, this.opts) || e).split(\"\");\n                            s.checkVal.call(this, void 0, !1, !1, t), \"function\" == typeof this.opts.onBeforeWrite && this.opts.onBeforeWrite.call(this, void 0, f.getBuffer.call(this), 0, this.opts);\n                        }\n                        return s.unmaskedvalue.call(this, this.el);\n                    },\n                    remove: function() {\n                        if (this.el) {\n                            r.default.data(this.el, g, null);\n                            var e = this.opts.autoUnmask ? (0, s.unmaskedvalue)(this.el) : this._valueGet(this.opts.autoUnmask);\n                            e !== f.getBufferTemplate.call(this).join(\"\") ? this._valueSet(e, this.opts.autoUnmask) : this._valueSet(\"\"), \n                            o.EventRuler.off(this.el), Object.getOwnPropertyDescriptor && Object.getPrototypeOf ? Object.getOwnPropertyDescriptor(Object.getPrototypeOf(this.el), \"value\") && this.__valueGet && Object.defineProperty(this.el, \"value\", {\n                                get: this.__valueGet,\n                                set: this.__valueSet,\n                                configurable: !0\n                            }) : m.__lookupGetter__ && this.el.__lookupGetter__(\"value\") && this.__valueGet && (this.el.__defineGetter__(\"value\", this.__valueGet), \n                            this.el.__defineSetter__(\"value\", this.__valueSet)), this.el.inputmask = void 0;\n                        }\n                        return this.el;\n                    },\n                    getemptymask: function() {\n                        return this.maskset = this.maskset || (0, u.generateMaskSet)(this.opts, this.noMasksCache), \n                        (this.isRTL ? f.getBufferTemplate.call(this).reverse() : f.getBufferTemplate.call(this)).join(\"\");\n                    },\n                    hasMaskedValue: function() {\n                        return !this.opts.autoUnmask;\n                    },\n                    isComplete: function() {\n                        return this.maskset = this.maskset || (0, u.generateMaskSet)(this.opts, this.noMasksCache), \n                        p.isComplete.call(this, f.getBuffer.call(this));\n                    },\n                    getmetadata: function() {\n                        if (this.maskset = this.maskset || (0, u.generateMaskSet)(this.opts, this.noMasksCache), \n                        Array.isArray(this.maskset.metadata)) {\n                            var e = d.getMaskTemplate.call(this, !0, 0, !1).join(\"\");\n                            return this.maskset.metadata.forEach((function(t) {\n                                return t.mask !== e || (e = t, !1);\n                            })), e;\n                        }\n                        return this.maskset.metadata;\n                    },\n                    isValid: function(e) {\n                        if (this.maskset = this.maskset || (0, u.generateMaskSet)(this.opts, this.noMasksCache), \n                        e) {\n                            var t = (\"function\" == typeof this.opts.onBeforeMask && this.opts.onBeforeMask.call(this, e, this.opts) || e).split(\"\");\n                            s.checkVal.call(this, void 0, !0, !1, t);\n                        } else e = this.isRTL ? f.getBuffer.call(this).slice().reverse().join(\"\") : f.getBuffer.call(this).join(\"\");\n                        for (var n = f.getBuffer.call(this), i = f.determineLastRequiredPosition.call(this), a = n.length - 1; a > i && !f.isMask.call(this, a); a--) ;\n                        return n.splice(i, a + 1 - i), p.isComplete.call(this, n) && e === (this.isRTL ? f.getBuffer.call(this).slice().reverse().join(\"\") : f.getBuffer.call(this).join(\"\"));\n                    },\n                    format: function(e, t) {\n                        this.maskset = this.maskset || (0, u.generateMaskSet)(this.opts, this.noMasksCache);\n                        var n = (\"function\" == typeof this.opts.onBeforeMask && this.opts.onBeforeMask.call(this, e, this.opts) || e).split(\"\");\n                        s.checkVal.call(this, void 0, !0, !1, n);\n                        var i = this.isRTL ? f.getBuffer.call(this).slice().reverse().join(\"\") : f.getBuffer.call(this).join(\"\");\n                        return t ? {\n                            value: i,\n                            metadata: this.getmetadata()\n                        } : i;\n                    },\n                    setValue: function(e) {\n                        this.el && (0, r.default)(this.el).trigger(\"setvalue\", [ e ]);\n                    },\n                    analyseMask: u.analyseMask\n                }, y.extendDefaults = function(e) {\n                    r.default.extend(!0, y.prototype.defaults, e);\n                }, y.extendDefinitions = function(e) {\n                    r.default.extend(!0, y.prototype.definitions, e);\n                }, y.extendAliases = function(e) {\n                    r.default.extend(!0, y.prototype.aliases, e);\n                }, y.format = function(e, t, n) {\n                    return y(t).format(e, n);\n                }, y.unmask = function(e, t) {\n                    return y(t).unmaskedvalue(e);\n                }, y.isValid = function(e, t) {\n                    return y(t).isValid(e);\n                }, y.remove = function(e) {\n                    \"string\" == typeof e && (e = m.getElementById(e) || m.querySelectorAll(e)), (e = e.nodeName ? [ e ] : e).forEach((function(e) {\n                        e.inputmask && e.inputmask.remove();\n                    }));\n                }, y.setValue = function(e, t) {\n                    \"string\" == typeof e && (e = m.getElementById(e) || m.querySelectorAll(e)), (e = e.nodeName ? [ e ] : e).forEach((function(e) {\n                        e.inputmask ? e.inputmask.setValue(t) : (0, r.default)(e).trigger(\"setvalue\", [ t ]);\n                    }));\n                }, y.dependencyLib = r.default, l.default.Inputmask = y;\n                t.default = y;\n            },\n            5296: function(e, t, n) {\n                function i(e) {\n                    return i = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(e) {\n                        return typeof e;\n                    } : function(e) {\n                        return e && \"function\" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? \"symbol\" : typeof e;\n                    }, i(e);\n                }\n                var a = d(n(9380)), r = d(n(2394));\n                function o(e, t) {\n                    for (var n = 0; n < t.length; n++) {\n                        var a = t[n];\n                        a.enumerable = a.enumerable || !1, a.configurable = !0, \"value\" in a && (a.writable = !0), \n                        Object.defineProperty(e, (r = a.key, o = void 0, o = function(e, t) {\n                            if (\"object\" !== i(e) || null === e) return e;\n                            var n = e[Symbol.toPrimitive];\n                            if (void 0 !== n) {\n                                var a = n.call(e, t || \"default\");\n                                if (\"object\" !== i(a)) return a;\n                                throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n                            }\n                            return (\"string\" === t ? String : Number)(e);\n                        }(r, \"string\"), \"symbol\" === i(o) ? o : String(o)), a);\n                    }\n                    var r, o;\n                }\n                function l(e) {\n                    var t = u();\n                    return function() {\n                        var n, a = p(e);\n                        if (t) {\n                            var r = p(this).constructor;\n                            n = Reflect.construct(a, arguments, r);\n                        } else n = a.apply(this, arguments);\n                        return function(e, t) {\n                            if (t && (\"object\" === i(t) || \"function\" == typeof t)) return t;\n                            if (void 0 !== t) throw new TypeError(\"Derived constructors may only return object or undefined\");\n                            return function(e) {\n                                if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n                                return e;\n                            }(e);\n                        }(this, n);\n                    };\n                }\n                function s(e) {\n                    var t = \"function\" == typeof Map ? new Map : void 0;\n                    return s = function(e) {\n                        if (null === e || !function(e) {\n                            try {\n                                return -1 !== Function.toString.call(e).indexOf(\"[native code]\");\n                            } catch (t) {\n                                return \"function\" == typeof e;\n                            }\n                        }(e)) return e;\n                        if (\"function\" != typeof e) throw new TypeError(\"Super expression must either be null or a function\");\n                        if (void 0 !== t) {\n                            if (t.has(e)) return t.get(e);\n                            t.set(e, n);\n                        }\n                        function n() {\n                            return c(e, arguments, p(this).constructor);\n                        }\n                        return n.prototype = Object.create(e.prototype, {\n                            constructor: {\n                                value: n,\n                                enumerable: !1,\n                                writable: !0,\n                                configurable: !0\n                            }\n                        }), f(n, e);\n                    }, s(e);\n                }\n                function c(e, t, n) {\n                    return c = u() ? Reflect.construct.bind() : function(e, t, n) {\n                        var i = [ null ];\n                        i.push.apply(i, t);\n                        var a = new (Function.bind.apply(e, i));\n                        return n && f(a, n.prototype), a;\n                    }, c.apply(null, arguments);\n                }\n                function u() {\n                    if (\"undefined\" == typeof Reflect || !Reflect.construct) return !1;\n                    if (Reflect.construct.sham) return !1;\n                    if (\"function\" == typeof Proxy) return !0;\n                    try {\n                        return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], (function() {}))), \n                        !0;\n                    } catch (e) {\n                        return !1;\n                    }\n                }\n                function f(e, t) {\n                    return f = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(e, t) {\n                        return e.__proto__ = t, e;\n                    }, f(e, t);\n                }\n                function p(e) {\n                    return p = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function(e) {\n                        return e.__proto__ || Object.getPrototypeOf(e);\n                    }, p(e);\n                }\n                function d(e) {\n                    return e && e.__esModule ? e : {\n                        default: e\n                    };\n                }\n                var h = a.default.document;\n                if (h && h.head && h.head.attachShadow && a.default.customElements && void 0 === a.default.customElements.get(\"input-mask\")) {\n                    var v = function(e) {\n                        !function(e, t) {\n                            if (\"function\" != typeof t && null !== t) throw new TypeError(\"Super expression must either be null or a function\");\n                            e.prototype = Object.create(t && t.prototype, {\n                                constructor: {\n                                    value: e,\n                                    writable: !0,\n                                    configurable: !0\n                                }\n                            }), Object.defineProperty(e, \"prototype\", {\n                                writable: !1\n                            }), t && f(e, t);\n                        }(s, e);\n                        var t, n, i, a = l(s);\n                        function s() {\n                            var e;\n                            !function(e, t) {\n                                if (!(e instanceof t)) throw new TypeError(\"Cannot call a class as a function\");\n                            }(this, s);\n                            var t = (e = a.call(this)).getAttributeNames(), n = e.attachShadow({\n                                mode: \"closed\"\n                            });\n                            for (var i in e.input = h.createElement(\"input\"), e.input.type = \"text\", n.appendChild(e.input), \n                            t) Object.prototype.hasOwnProperty.call(t, i) && e.input.setAttribute(t[i], e.getAttribute(t[i]));\n                            var o = new r.default;\n                            return o.dataAttribute = \"\", o.mask(e.input), e.input.inputmask.shadowRoot = n, \n                            e;\n                        }\n                        return t = s, (n = [ {\n                            key: \"attributeChangedCallback\",\n                            value: function(e, t, n) {\n                                this.input.setAttribute(e, n);\n                            }\n                        }, {\n                            key: \"value\",\n                            get: function() {\n                                return this.input.value;\n                            },\n                            set: function(e) {\n                                this.input.value = e;\n                            }\n                        } ]) && o(t.prototype, n), i && o(t, i), Object.defineProperty(t, \"prototype\", {\n                            writable: !1\n                        }), s;\n                    }(s(HTMLElement));\n                    a.default.customElements.define(\"input-mask\", v);\n                }\n            },\n            2839: function(e, t) {\n                function n(e) {\n                    return n = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(e) {\n                        return typeof e;\n                    } : function(e) {\n                        return e && \"function\" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? \"symbol\" : typeof e;\n                    }, n(e);\n                }\n                function i(e, t) {\n                    return function(e) {\n                        if (Array.isArray(e)) return e;\n                    }(e) || function(e, t) {\n                        var n = null == e ? null : \"undefined\" != typeof Symbol && e[Symbol.iterator] || e[\"@@iterator\"];\n                        if (null != n) {\n                            var i, a, r, o, l = [], s = !0, c = !1;\n                            try {\n                                if (r = (n = n.call(e)).next, 0 === t) {\n                                    if (Object(n) !== n) return;\n                                    s = !1;\n                                } else for (;!(s = (i = r.call(n)).done) && (l.push(i.value), l.length !== t); s = !0) ;\n                            } catch (e) {\n                                c = !0, a = e;\n                            } finally {\n                                try {\n                                    if (!s && null != n.return && (o = n.return(), Object(o) !== o)) return;\n                                } finally {\n                                    if (c) throw a;\n                                }\n                            }\n                            return l;\n                        }\n                    }(e, t) || function(e, t) {\n                        if (!e) return;\n                        if (\"string\" == typeof e) return a(e, t);\n                        var n = Object.prototype.toString.call(e).slice(8, -1);\n                        \"Object\" === n && e.constructor && (n = e.constructor.name);\n                        if (\"Map\" === n || \"Set\" === n) return Array.from(e);\n                        if (\"Arguments\" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return a(e, t);\n                    }(e, t) || function() {\n                        throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n                    }();\n                }\n                function a(e, t) {\n                    (null == t || t > e.length) && (t = e.length);\n                    for (var n = 0, i = new Array(t); n < t; n++) i[n] = e[n];\n                    return i;\n                }\n                function r(e, t) {\n                    var n = Object.keys(e);\n                    if (Object.getOwnPropertySymbols) {\n                        var i = Object.getOwnPropertySymbols(e);\n                        t && (i = i.filter((function(t) {\n                            return Object.getOwnPropertyDescriptor(e, t).enumerable;\n                        }))), n.push.apply(n, i);\n                    }\n                    return n;\n                }\n                function o(e, t, i) {\n                    return (t = function(e) {\n                        var t = function(e, t) {\n                            if (\"object\" !== n(e) || null === e) return e;\n                            var i = e[Symbol.toPrimitive];\n                            if (void 0 !== i) {\n                                var a = i.call(e, t || \"default\");\n                                if (\"object\" !== n(a)) return a;\n                                throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n                            }\n                            return (\"string\" === t ? String : Number)(e);\n                        }(e, \"string\");\n                        return \"symbol\" === n(t) ? t : String(t);\n                    }(t)) in e ? Object.defineProperty(e, t, {\n                        value: i,\n                        enumerable: !0,\n                        configurable: !0,\n                        writable: !0\n                    }) : e[t] = i, e;\n                }\n                Object.defineProperty(t, \"__esModule\", {\n                    value: !0\n                }), t.keys = t.keyCode = void 0, t.toKey = function(e, t) {\n                    return s[e] || (t ? String.fromCharCode(e) : String.fromCharCode(e).toLowerCase());\n                }, t.toKeyCode = function(e) {\n                    return l[e];\n                };\n                var l = t.keyCode = function(e) {\n                    for (var t = 1; t < arguments.length; t++) {\n                        var n = null != arguments[t] ? arguments[t] : {};\n                        t % 2 ? r(Object(n), !0).forEach((function(t) {\n                            o(e, t, n[t]);\n                        })) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(n)) : r(Object(n)).forEach((function(t) {\n                            Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(n, t));\n                        }));\n                    }\n                    return e;\n                }({\n                    c: 67,\n                    x: 88,\n                    z: 90,\n                    BACKSPACE_SAFARI: 127,\n                    Enter: 13,\n                    Meta_LEFT: 91,\n                    Meta_RIGHT: 92,\n                    Space: 32\n                }, {\n                    Alt: 18,\n                    AltGraph: 18,\n                    ArrowDown: 40,\n                    ArrowLeft: 37,\n                    ArrowRight: 39,\n                    ArrowUp: 38,\n                    Backspace: 8,\n                    CapsLock: 20,\n                    Control: 17,\n                    ContextMenu: 93,\n                    Dead: 221,\n                    Delete: 46,\n                    End: 35,\n                    Escape: 27,\n                    F1: 112,\n                    F2: 113,\n                    F3: 114,\n                    F4: 115,\n                    F5: 116,\n                    F6: 117,\n                    F7: 118,\n                    F8: 119,\n                    F9: 120,\n                    F10: 121,\n                    F11: 122,\n                    F12: 123,\n                    Home: 36,\n                    Insert: 45,\n                    NumLock: 144,\n                    PageDown: 34,\n                    PageUp: 33,\n                    Pause: 19,\n                    PrintScreen: 44,\n                    Process: 229,\n                    Shift: 16,\n                    ScrollLock: 145,\n                    Tab: 9,\n                    Unidentified: 229\n                }), s = Object.entries(l).reduce((function(e, t) {\n                    var n = i(t, 2), a = n[0], r = n[1];\n                    return e[r] = void 0 === e[r] ? a : e[r], e;\n                }), {});\n                t.keys = Object.entries(l).reduce((function(e, t) {\n                    var n = i(t, 2), a = n[0];\n                    n[1];\n                    return e[a] = \"Space\" === a ? \" \" : a, e;\n                }), {});\n            },\n            2391: function(e, t, n) {\n                Object.defineProperty(t, \"__esModule\", {\n                    value: !0\n                }), t.analyseMask = function(e, t, n) {\n                    var i, a, s, c, u, f, p = /(?:[?*+]|\\{[0-9+*]+(?:,[0-9+*]*)?(?:\\|[0-9+*]*)?\\})|[^.?*+^${[]()|\\\\]+|./g, d = /\\[\\^?]?(?:[^\\\\\\]]+|\\\\[\\S\\s]?)*]?|\\\\(?:0(?:[0-3][0-7]{0,2}|[4-7][0-7]?)?|[1-9][0-9]*|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|c[A-Za-z]|[\\S\\s]?)|\\((?:\\?[:=!]?)?|(?:[?*+]|\\{[0-9]+(?:,[0-9]*)?\\})\\??|[^.?*+^${[()|\\\\]+|./g, h = !1, v = new o.default, m = [], g = [], y = !1;\n                    function k(e, i, a) {\n                        a = void 0 !== a ? a : e.matches.length;\n                        var o = e.matches[a - 1];\n                        if (t) {\n                            if (0 === i.indexOf(\"[\") || h && /\\\\d|\\\\s|\\\\w|\\\\p/i.test(i) || \".\" === i) {\n                                var s = n.casing ? \"i\" : \"\";\n                                /\\\\p\\{.*}/i.test(i) && (s += \"u\"), e.matches.splice(a++, 0, {\n                                    fn: new RegExp(i, s),\n                                    static: !1,\n                                    optionality: !1,\n                                    newBlockMarker: void 0 === o ? \"master\" : o.def !== i,\n                                    casing: null,\n                                    def: i,\n                                    placeholder: \"object\" === l(n.placeholder) ? n.placeholder[v.matches.length] : void 0,\n                                    nativeDef: i\n                                });\n                            } else h && (i = i[i.length - 1]), i.split(\"\").forEach((function(t, i) {\n                                o = e.matches[a - 1], e.matches.splice(a++, 0, {\n                                    fn: /[a-z]/i.test(n.staticDefinitionSymbol || t) ? new RegExp(\"[\" + (n.staticDefinitionSymbol || t) + \"]\", n.casing ? \"i\" : \"\") : null,\n                                    static: !0,\n                                    optionality: !1,\n                                    newBlockMarker: void 0 === o ? \"master\" : o.def !== t && !0 !== o.static,\n                                    casing: null,\n                                    def: n.staticDefinitionSymbol || t,\n                                    placeholder: void 0 !== n.staticDefinitionSymbol ? t : \"object\" === l(n.placeholder) ? n.placeholder[v.matches.length] : void 0,\n                                    nativeDef: (h ? \"'\" : \"\") + t\n                                });\n                            }));\n                            h = !1;\n                        } else {\n                            var c = n.definitions && n.definitions[i] || n.usePrototypeDefinitions && r.default.prototype.definitions[i];\n                            c && !h ? e.matches.splice(a++, 0, {\n                                fn: c.validator ? \"string\" == typeof c.validator ? new RegExp(c.validator, n.casing ? \"i\" : \"\") : new function() {\n                                    this.test = c.validator;\n                                } : /./,\n                                static: c.static || !1,\n                                optionality: c.optional || !1,\n                                defOptionality: c.optional || !1,\n                                newBlockMarker: void 0 === o || c.optional ? \"master\" : o.def !== (c.definitionSymbol || i),\n                                casing: c.casing,\n                                def: c.definitionSymbol || i,\n                                placeholder: c.placeholder,\n                                nativeDef: i,\n                                generated: c.generated\n                            }) : (e.matches.splice(a++, 0, {\n                                fn: /[a-z]/i.test(n.staticDefinitionSymbol || i) ? new RegExp(\"[\" + (n.staticDefinitionSymbol || i) + \"]\", n.casing ? \"i\" : \"\") : null,\n                                static: !0,\n                                optionality: !1,\n                                newBlockMarker: void 0 === o ? \"master\" : o.def !== i && !0 !== o.static,\n                                casing: null,\n                                def: n.staticDefinitionSymbol || i,\n                                placeholder: void 0 !== n.staticDefinitionSymbol ? i : void 0,\n                                nativeDef: (h ? \"'\" : \"\") + i\n                            }), h = !1);\n                        }\n                    }\n                    function b() {\n                        if (m.length > 0) {\n                            if (k(c = m[m.length - 1], a), c.isAlternator) {\n                                u = m.pop();\n                                for (var e = 0; e < u.matches.length; e++) u.matches[e].isGroup && (u.matches[e].isGroup = !1);\n                                m.length > 0 ? (c = m[m.length - 1]).matches.push(u) : v.matches.push(u);\n                            }\n                        } else k(v, a);\n                    }\n                    function x(e) {\n                        var t = new o.default(!0);\n                        return t.openGroup = !1, t.matches = e, t;\n                    }\n                    function w() {\n                        if ((s = m.pop()).openGroup = !1, void 0 !== s) if (m.length > 0) {\n                            if ((c = m[m.length - 1]).matches.push(s), c.isAlternator) {\n                                u = m.pop();\n                                for (var e = 0; e < u.matches.length; e++) u.matches[e].isGroup = !1, u.matches[e].alternatorGroup = !1;\n                                m.length > 0 ? (c = m[m.length - 1]).matches.push(u) : v.matches.push(u);\n                            }\n                        } else v.matches.push(s); else b();\n                    }\n                    function P(e) {\n                        var t = e.pop();\n                        return t.isQuantifier && (t = x([ e.pop(), t ])), t;\n                    }\n                    t && (n.optionalmarker[0] = void 0, n.optionalmarker[1] = void 0);\n                    for (;i = t ? d.exec(e) : p.exec(e); ) {\n                        if (a = i[0], t) {\n                            switch (a.charAt(0)) {\n                              case \"?\":\n                                a = \"{0,1}\";\n                                break;\n\n                              case \"+\":\n                              case \"*\":\n                                a = \"{\" + a + \"}\";\n                                break;\n\n                              case \"|\":\n                                if (0 === m.length) {\n                                    var S = x(v.matches);\n                                    S.openGroup = !0, m.push(S), v.matches = [], y = !0;\n                                }\n                            }\n                            switch (a) {\n                              case \"\\\\d\":\n                                a = \"[0-9]\";\n                                break;\n\n                              case \"\\\\p\":\n                                a += d.exec(e)[0], a += d.exec(e)[0];\n                            }\n                        }\n                        if (h) b(); else switch (a.charAt(0)) {\n                          case \"$\":\n                          case \"^\":\n                            t || b();\n                            break;\n\n                          case n.escapeChar:\n                            h = !0, t && b();\n                            break;\n\n                          case n.optionalmarker[1]:\n                          case n.groupmarker[1]:\n                            w();\n                            break;\n\n                          case n.optionalmarker[0]:\n                            m.push(new o.default(!1, !0));\n                            break;\n\n                          case n.groupmarker[0]:\n                            m.push(new o.default(!0));\n                            break;\n\n                          case n.quantifiermarker[0]:\n                            var O = new o.default(!1, !1, !0), _ = (a = a.replace(/[{}?]/g, \"\")).split(\"|\"), M = _[0].split(\",\"), E = isNaN(M[0]) ? M[0] : parseInt(M[0]), j = 1 === M.length ? E : isNaN(M[1]) ? M[1] : parseInt(M[1]), T = isNaN(_[1]) ? _[1] : parseInt(_[1]);\n                            \"*\" !== E && \"+\" !== E || (E = \"*\" === j ? 0 : 1), O.quantifier = {\n                                min: E,\n                                max: j,\n                                jit: T\n                            };\n                            var A = m.length > 0 ? m[m.length - 1].matches : v.matches;\n                            (i = A.pop()).isGroup || (i = x([ i ])), A.push(i), A.push(O);\n                            break;\n\n                          case n.alternatormarker:\n                            if (m.length > 0) {\n                                var D = (c = m[m.length - 1]).matches[c.matches.length - 1];\n                                f = c.openGroup && (void 0 === D.matches || !1 === D.isGroup && !1 === D.isAlternator) ? m.pop() : P(c.matches);\n                            } else f = P(v.matches);\n                            if (f.isAlternator) m.push(f); else if (f.alternatorGroup ? (u = m.pop(), f.alternatorGroup = !1) : u = new o.default(!1, !1, !1, !0), \n                            u.matches.push(f), m.push(u), f.openGroup) {\n                                f.openGroup = !1;\n                                var L = new o.default(!0);\n                                L.alternatorGroup = !0, m.push(L);\n                            }\n                            break;\n\n                          default:\n                            b();\n                        }\n                    }\n                    y && w();\n                    for (;m.length > 0; ) s = m.pop(), v.matches.push(s);\n                    v.matches.length > 0 && (!function e(i) {\n                        i && i.matches && i.matches.forEach((function(a, r) {\n                            var o = i.matches[r + 1];\n                            (void 0 === o || void 0 === o.matches || !1 === o.isQuantifier) && a && a.isGroup && (a.isGroup = !1, \n                            t || (k(a, n.groupmarker[0], 0), !0 !== a.openGroup && k(a, n.groupmarker[1]))), \n                            e(a);\n                        }));\n                    }(v), g.push(v));\n                    (n.numericInput || n.isRTL) && function e(t) {\n                        for (var i in t.matches = t.matches.reverse(), t.matches) if (Object.prototype.hasOwnProperty.call(t.matches, i)) {\n                            var a = parseInt(i);\n                            if (t.matches[i].isQuantifier && t.matches[a + 1] && t.matches[a + 1].isGroup) {\n                                var r = t.matches[i];\n                                t.matches.splice(i, 1), t.matches.splice(a + 1, 0, r);\n                            }\n                            void 0 !== t.matches[i].matches ? t.matches[i] = e(t.matches[i]) : t.matches[i] = ((o = t.matches[i]) === n.optionalmarker[0] ? o = n.optionalmarker[1] : o === n.optionalmarker[1] ? o = n.optionalmarker[0] : o === n.groupmarker[0] ? o = n.groupmarker[1] : o === n.groupmarker[1] && (o = n.groupmarker[0]), \n                            o);\n                        }\n                        var o;\n                        return t;\n                    }(g[0]);\n                    return g;\n                }, t.generateMaskSet = function(e, t) {\n                    var n;\n                    function o(e, t) {\n                        var n = t.repeat, i = t.groupmarker, r = t.quantifiermarker, o = t.keepStatic;\n                        if (n > 0 || \"*\" === n || \"+\" === n) {\n                            var l = \"*\" === n ? 0 : \"+\" === n ? 1 : n;\n                            if (l != n) e = i[0] + e + i[1] + r[0] + l + \",\" + n + r[1]; else for (var c = e, u = 1; u < l; u++) e += c;\n                        }\n                        if (!0 === o) {\n                            var f = e.match(new RegExp(\"(.)\\\\[([^\\\\]]*)\\\\]\", \"g\"));\n                            f && f.forEach((function(t, n) {\n                                var i = function(e, t) {\n                                    return function(e) {\n                                        if (Array.isArray(e)) return e;\n                                    }(e) || function(e, t) {\n                                        var n = null == e ? null : \"undefined\" != typeof Symbol && e[Symbol.iterator] || e[\"@@iterator\"];\n                                        if (null != n) {\n                                            var i, a, r, o, l = [], s = !0, c = !1;\n                                            try {\n                                                if (r = (n = n.call(e)).next, 0 === t) {\n                                                    if (Object(n) !== n) return;\n                                                    s = !1;\n                                                } else for (;!(s = (i = r.call(n)).done) && (l.push(i.value), l.length !== t); s = !0) ;\n                                            } catch (e) {\n                                                c = !0, a = e;\n                                            } finally {\n                                                try {\n                                                    if (!s && null != n.return && (o = n.return(), Object(o) !== o)) return;\n                                                } finally {\n                                                    if (c) throw a;\n                                                }\n                                            }\n                                            return l;\n                                        }\n                                    }(e, t) || function(e, t) {\n                                        if (!e) return;\n                                        if (\"string\" == typeof e) return s(e, t);\n                                        var n = Object.prototype.toString.call(e).slice(8, -1);\n                                        \"Object\" === n && e.constructor && (n = e.constructor.name);\n                                        if (\"Map\" === n || \"Set\" === n) return Array.from(e);\n                                        if (\"Arguments\" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return s(e, t);\n                                    }(e, t) || function() {\n                                        throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n                                    }();\n                                }(t.split(\"[\"), 2), r = i[0], o = i[1];\n                                o = o.replace(\"]\", \"\"), e = e.replace(new RegExp(\"\".concat((0, a.default)(r), \"\\\\[\").concat((0, \n                                a.default)(o), \"\\\\]\")), r.charAt(0) === o.charAt(0) ? \"(\".concat(r, \"|\").concat(r).concat(o, \")\") : \"\".concat(r, \"[\").concat(o, \"]\"));\n                            }));\n                        }\n                        return e;\n                    }\n                    function c(e, n, a) {\n                        var s, c, u = !1;\n                        return null !== e && \"\" !== e || ((u = null !== a.regex) ? e = (e = a.regex).replace(/^(\\^)(.*)(\\$)$/, \"$2\") : (u = !0, \n                        e = \".*\")), 1 === e.length && !1 === a.greedy && 0 !== a.repeat && (a.placeholder = \"\"), \n                        e = o(e, a), c = u ? \"regex_\" + a.regex : a.numericInput ? e.split(\"\").reverse().join(\"\") : e, \n                        null !== a.keepStatic && (c = \"ks_\" + a.keepStatic + c), \"object\" === l(a.placeholder) && (c = \"ph_\" + JSON.stringify(a.placeholder) + c), \n                        void 0 === r.default.prototype.masksCache[c] || !0 === t ? (s = {\n                            mask: e,\n                            maskToken: r.default.prototype.analyseMask(e, u, a),\n                            validPositions: [],\n                            _buffer: void 0,\n                            buffer: void 0,\n                            tests: {},\n                            excludes: {},\n                            metadata: n,\n                            maskLength: void 0,\n                            jitOffset: {}\n                        }, !0 !== t && (r.default.prototype.masksCache[c] = s, s = i.default.extend(!0, {}, r.default.prototype.masksCache[c]))) : s = i.default.extend(!0, {}, r.default.prototype.masksCache[c]), \n                        s;\n                    }\n                    \"function\" == typeof e.mask && (e.mask = e.mask(e));\n                    if (Array.isArray(e.mask)) {\n                        if (e.mask.length > 1) {\n                            null === e.keepStatic && (e.keepStatic = !0);\n                            var u = e.groupmarker[0];\n                            return (e.isRTL ? e.mask.reverse() : e.mask).forEach((function(t) {\n                                u.length > 1 && (u += e.alternatormarker), void 0 !== t.mask && \"function\" != typeof t.mask ? u += t.mask : u += t;\n                            })), c(u += e.groupmarker[1], e.mask, e);\n                        }\n                        e.mask = e.mask.pop();\n                    }\n                    n = e.mask && void 0 !== e.mask.mask && \"function\" != typeof e.mask.mask ? c(e.mask.mask, e.mask, e) : c(e.mask, e.mask, e);\n                    null === e.keepStatic && (e.keepStatic = !1);\n                    return n;\n                };\n                var i = c(n(4963)), a = c(n(7184)), r = c(n(2394)), o = c(n(9695));\n                function l(e) {\n                    return l = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(e) {\n                        return typeof e;\n                    } : function(e) {\n                        return e && \"function\" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? \"symbol\" : typeof e;\n                    }, l(e);\n                }\n                function s(e, t) {\n                    (null == t || t > e.length) && (t = e.length);\n                    for (var n = 0, i = new Array(t); n < t; n++) i[n] = e[n];\n                    return i;\n                }\n                function c(e) {\n                    return e && e.__esModule ? e : {\n                        default: e\n                    };\n                }\n            },\n            157: function(e, t, n) {\n                Object.defineProperty(t, \"__esModule\", {\n                    value: !0\n                }), t.mask = function() {\n                    var e = this, t = this.opts, n = this.el, c = this.dependencyLib;\n                    r.EventRuler.off(n);\n                    var u = function(t, n) {\n                        var i = t.getAttribute(\"type\"), a = \"input\" === t.tagName.toLowerCase() && n.supportsInputType.includes(i) || t.isContentEditable || \"textarea\" === t.tagName.toLowerCase();\n                        if (!a) if (\"input\" === t.tagName.toLowerCase()) {\n                            var s = document.createElement(\"input\");\n                            s.setAttribute(\"type\", i), a = \"text\" === s.type, s = null;\n                        } else a = \"partial\";\n                        return !1 !== a ? function(t) {\n                            var i, a;\n                            function s() {\n                                return this.inputmask ? this.inputmask.opts.autoUnmask ? this.inputmask.unmaskedvalue() : -1 !== l.getLastValidPosition.call(e) || !0 !== n.nullable ? (this.inputmask.shadowRoot || this.ownerDocument).activeElement === this && n.clearMaskOnLostFocus ? (e.isRTL ? o.clearOptionalTail.call(e, l.getBuffer.call(e).slice()).reverse() : o.clearOptionalTail.call(e, l.getBuffer.call(e).slice())).join(\"\") : i.call(this) : \"\" : i.call(this);\n                            }\n                            function u(e) {\n                                a.call(this, e), this.inputmask && (0, o.applyInputValue)(this, e);\n                            }\n                            if (!t.inputmask.__valueGet) {\n                                if (!0 !== n.noValuePatching) {\n                                    if (Object.getOwnPropertyDescriptor) {\n                                        var f = Object.getPrototypeOf ? Object.getOwnPropertyDescriptor(Object.getPrototypeOf(t), \"value\") : void 0;\n                                        f && f.get && f.set ? (i = f.get, a = f.set, Object.defineProperty(t, \"value\", {\n                                            get: s,\n                                            set: u,\n                                            configurable: !0\n                                        })) : \"input\" !== t.tagName.toLowerCase() && (i = function() {\n                                            return this.textContent;\n                                        }, a = function(e) {\n                                            this.textContent = e;\n                                        }, Object.defineProperty(t, \"value\", {\n                                            get: s,\n                                            set: u,\n                                            configurable: !0\n                                        }));\n                                    } else document.__lookupGetter__ && t.__lookupGetter__(\"value\") && (i = t.__lookupGetter__(\"value\"), \n                                    a = t.__lookupSetter__(\"value\"), t.__defineGetter__(\"value\", s), t.__defineSetter__(\"value\", u));\n                                    t.inputmask.__valueGet = i, t.inputmask.__valueSet = a;\n                                }\n                                t.inputmask._valueGet = function(t) {\n                                    return e.isRTL && !0 !== t ? i.call(this.el).split(\"\").reverse().join(\"\") : i.call(this.el);\n                                }, t.inputmask._valueSet = function(t, n) {\n                                    a.call(this.el, null == t ? \"\" : !0 !== n && e.isRTL ? t.split(\"\").reverse().join(\"\") : t);\n                                }, void 0 === i && (i = function() {\n                                    return this.value;\n                                }, a = function(e) {\n                                    this.value = e;\n                                }, function(t) {\n                                    if (c.valHooks && (void 0 === c.valHooks[t] || !0 !== c.valHooks[t].inputmaskpatch)) {\n                                        var i = c.valHooks[t] && c.valHooks[t].get ? c.valHooks[t].get : function(e) {\n                                            return e.value;\n                                        }, a = c.valHooks[t] && c.valHooks[t].set ? c.valHooks[t].set : function(e, t) {\n                                            return e.value = t, e;\n                                        };\n                                        c.valHooks[t] = {\n                                            get: function(t) {\n                                                if (t.inputmask) {\n                                                    if (t.inputmask.opts.autoUnmask) return t.inputmask.unmaskedvalue();\n                                                    var a = i(t);\n                                                    return -1 !== l.getLastValidPosition.call(e, void 0, void 0, t.inputmask.maskset.validPositions) || !0 !== n.nullable ? a : \"\";\n                                                }\n                                                return i(t);\n                                            },\n                                            set: function(e, t) {\n                                                var n = a(e, t);\n                                                return e.inputmask && (0, o.applyInputValue)(e, t), n;\n                                            },\n                                            inputmaskpatch: !0\n                                        };\n                                    }\n                                }(t.type), function(e) {\n                                    r.EventRuler.on(e, \"mouseenter\", (function() {\n                                        var e = this, t = e.inputmask._valueGet(!0);\n                                        t != (e.inputmask.isRTL ? l.getBuffer.call(e.inputmask).slice().reverse() : l.getBuffer.call(e.inputmask)).join(\"\") && (0, \n                                        o.applyInputValue)(e, t);\n                                    }));\n                                }(t));\n                            }\n                        }(t) : t.inputmask = void 0, a;\n                    }(n, t);\n                    if (!1 !== u) {\n                        e.originalPlaceholder = n.placeholder, e.maxLength = void 0 !== n ? n.maxLength : void 0, \n                        -1 === e.maxLength && (e.maxLength = void 0), \"inputMode\" in n && null === n.getAttribute(\"inputmode\") && (n.inputMode = t.inputmode, \n                        n.setAttribute(\"inputmode\", t.inputmode)), !0 === u && (t.showMaskOnFocus = t.showMaskOnFocus && -1 === [ \"cc-number\", \"cc-exp\" ].indexOf(n.autocomplete), \n                        i.iphone && (t.insertModeVisual = !1, n.setAttribute(\"autocorrect\", \"off\")), r.EventRuler.on(n, \"submit\", a.EventHandlers.submitEvent), \n                        r.EventRuler.on(n, \"reset\", a.EventHandlers.resetEvent), r.EventRuler.on(n, \"blur\", a.EventHandlers.blurEvent), \n                        r.EventRuler.on(n, \"focus\", a.EventHandlers.focusEvent), r.EventRuler.on(n, \"invalid\", a.EventHandlers.invalidEvent), \n                        r.EventRuler.on(n, \"click\", a.EventHandlers.clickEvent), r.EventRuler.on(n, \"mouseleave\", a.EventHandlers.mouseleaveEvent), \n                        r.EventRuler.on(n, \"mouseenter\", a.EventHandlers.mouseenterEvent), r.EventRuler.on(n, \"paste\", a.EventHandlers.pasteEvent), \n                        r.EventRuler.on(n, \"cut\", a.EventHandlers.cutEvent), r.EventRuler.on(n, \"complete\", t.oncomplete), \n                        r.EventRuler.on(n, \"incomplete\", t.onincomplete), r.EventRuler.on(n, \"cleared\", t.oncleared), \n                        !0 !== t.inputEventOnly && r.EventRuler.on(n, \"keydown\", a.EventHandlers.keyEvent), \n                        (i.mobile || t.inputEventOnly) && n.removeAttribute(\"maxLength\"), r.EventRuler.on(n, \"input\", a.EventHandlers.inputFallBackEvent)), \n                        r.EventRuler.on(n, \"setvalue\", a.EventHandlers.setValueEvent), void 0 === e.applyMaskHook || e.applyMaskHook(), \n                        l.getBufferTemplate.call(e).join(\"\"), e.undoValue = e._valueGet(!0);\n                        var f = (n.inputmask.shadowRoot || n.ownerDocument).activeElement;\n                        if (\"\" !== n.inputmask._valueGet(!0) || !1 === t.clearMaskOnLostFocus || f === n) {\n                            (0, o.applyInputValue)(n, n.inputmask._valueGet(!0), t);\n                            var p = l.getBuffer.call(e).slice();\n                            !1 === s.isComplete.call(e, p) && t.clearIncomplete && l.resetMaskSet.call(e, !1), \n                            t.clearMaskOnLostFocus && f !== n && (-1 === l.getLastValidPosition.call(e) ? p = [] : o.clearOptionalTail.call(e, p)), \n                            (!1 === t.clearMaskOnLostFocus || t.showMaskOnFocus && f === n || \"\" !== n.inputmask._valueGet(!0)) && (0, \n                            o.writeBuffer)(n, p), f === n && l.caret.call(e, n, l.seekNext.call(e, l.getLastValidPosition.call(e)));\n                        }\n                    }\n                };\n                var i = n(9845), a = n(6030), r = n(9716), o = n(7760), l = n(8711), s = n(7215);\n            },\n            9695: function(e, t) {\n                Object.defineProperty(t, \"__esModule\", {\n                    value: !0\n                }), t.default = function(e, t, n, i) {\n                    this.matches = [], this.openGroup = e || !1, this.alternatorGroup = !1, this.isGroup = e || !1, \n                    this.isOptional = t || !1, this.isQuantifier = n || !1, this.isAlternator = i || !1, \n                    this.quantifier = {\n                        min: 1,\n                        max: 1\n                    };\n                };\n            },\n            3194: function() {\n                Array.prototype.includes || Object.defineProperty(Array.prototype, \"includes\", {\n                    value: function(e, t) {\n                        if (null == this) throw new TypeError('\"this\" is null or not defined');\n                        var n = Object(this), i = n.length >>> 0;\n                        if (0 === i) return !1;\n                        for (var a = 0 | t, r = Math.max(a >= 0 ? a : i - Math.abs(a), 0); r < i; ) {\n                            if (n[r] === e) return !0;\n                            r++;\n                        }\n                        return !1;\n                    }\n                });\n            },\n            9302: function() {\n                var e = Function.bind.call(Function.call, Array.prototype.reduce), t = Function.bind.call(Function.call, Object.prototype.propertyIsEnumerable), n = Function.bind.call(Function.call, Array.prototype.concat), i = Object.keys;\n                Object.entries || (Object.entries = function(a) {\n                    return e(i(a), (function(e, i) {\n                        return n(e, \"string\" == typeof i && t(a, i) ? [ [ i, a[i] ] ] : []);\n                    }), []);\n                });\n            },\n            7149: function() {\n                function e(t) {\n                    return e = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(e) {\n                        return typeof e;\n                    } : function(e) {\n                        return e && \"function\" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? \"symbol\" : typeof e;\n                    }, e(t);\n                }\n                \"function\" != typeof Object.getPrototypeOf && (Object.getPrototypeOf = \"object\" === e(\"test\".__proto__) ? function(e) {\n                    return e.__proto__;\n                } : function(e) {\n                    return e.constructor.prototype;\n                });\n            },\n            4013: function() {\n                String.prototype.includes || (String.prototype.includes = function(e, t) {\n                    return \"number\" != typeof t && (t = 0), !(t + e.length > this.length) && -1 !== this.indexOf(e, t);\n                });\n            },\n            8711: function(e, t, n) {\n                Object.defineProperty(t, \"__esModule\", {\n                    value: !0\n                }), t.caret = function(e, t, n, i, r) {\n                    var o, l = this, s = this.opts;\n                    if (void 0 === t) return \"selectionStart\" in e && \"selectionEnd\" in e ? (t = e.selectionStart, \n                    n = e.selectionEnd) : a.default.getSelection ? (o = a.default.getSelection().getRangeAt(0)).commonAncestorContainer.parentNode !== e && o.commonAncestorContainer !== e || (t = o.startOffset, \n                    n = o.endOffset) : document.selection && document.selection.createRange && (n = (t = 0 - (o = document.selection.createRange()).duplicate().moveStart(\"character\", -e.inputmask._valueGet().length)) + o.text.length), \n                    {\n                        begin: i ? t : f.call(l, t),\n                        end: i ? n : f.call(l, n)\n                    };\n                    if (Array.isArray(t) && (n = l.isRTL ? t[0] : t[1], t = l.isRTL ? t[1] : t[0]), \n                    void 0 !== t.begin && (n = l.isRTL ? t.begin : t.end, t = l.isRTL ? t.end : t.begin), \n                    \"number\" == typeof t) {\n                        t = i ? t : f.call(l, t), n = \"number\" == typeof (n = i ? n : f.call(l, n)) ? n : t;\n                        var c = parseInt(((e.ownerDocument.defaultView || a.default).getComputedStyle ? (e.ownerDocument.defaultView || a.default).getComputedStyle(e, null) : e.currentStyle).fontSize) * n;\n                        if (e.scrollLeft = c > e.scrollWidth ? c : 0, e.inputmask.caretPos = {\n                            begin: t,\n                            end: n\n                        }, s.insertModeVisual && !1 === s.insertMode && t === n && (r || n++), e === (e.inputmask.shadowRoot || e.ownerDocument).activeElement) {\n                            if (\"setSelectionRange\" in e) e.setSelectionRange(t, n); else if (a.default.getSelection) {\n                                if (o = document.createRange(), void 0 === e.firstChild || null === e.firstChild) {\n                                    var u = document.createTextNode(\"\");\n                                    e.appendChild(u);\n                                }\n                                o.setStart(e.firstChild, t < e.inputmask._valueGet().length ? t : e.inputmask._valueGet().length), \n                                o.setEnd(e.firstChild, n < e.inputmask._valueGet().length ? n : e.inputmask._valueGet().length), \n                                o.collapse(!0);\n                                var p = a.default.getSelection();\n                                p.removeAllRanges(), p.addRange(o);\n                            } else e.createTextRange && ((o = e.createTextRange()).collapse(!0), o.moveEnd(\"character\", n), \n                            o.moveStart(\"character\", t), o.select());\n                            void 0 === e.inputmask.caretHook || e.inputmask.caretHook.call(l, {\n                                begin: t,\n                                end: n\n                            });\n                        }\n                    }\n                }, t.determineLastRequiredPosition = function(e) {\n                    var t, n, i = this, a = i.maskset, l = i.dependencyLib, c = s.call(i), u = {}, f = a.validPositions[c], p = o.getMaskTemplate.call(i, !0, s.call(i), !0, !0), d = p.length, h = void 0 !== f ? f.locator.slice() : void 0;\n                    for (t = c + 1; t < p.length; t++) h = (n = o.getTestTemplate.call(i, t, h, t - 1)).locator.slice(), \n                    u[t] = l.extend(!0, {}, n);\n                    var v = f && void 0 !== f.alternation ? f.locator[f.alternation] : void 0;\n                    for (t = d - 1; t > c && (((n = u[t]).match.optionality || n.match.optionalQuantifier && n.match.newBlockMarker || v && (v !== u[t].locator[f.alternation] && !0 !== n.match.static || !0 === n.match.static && n.locator[f.alternation] && r.checkAlternationMatch.call(i, n.locator[f.alternation].toString().split(\",\"), v.toString().split(\",\")) && \"\" !== o.getTests.call(i, t)[0].def)) && p[t] === o.getPlaceholder.call(i, t, n.match)); t--) d--;\n                    return e ? {\n                        l: d,\n                        def: u[d] ? u[d].match : void 0\n                    } : d;\n                }, t.determineNewCaretPosition = function(e, t, n) {\n                    var i, a, r, f = this, p = f.maskset, d = f.opts;\n                    t && (f.isRTL ? e.end = e.begin : e.begin = e.end);\n                    if (e.begin === e.end) {\n                        switch (n = n || d.positionCaretOnClick) {\n                          case \"none\":\n                            break;\n\n                          case \"select\":\n                            e = {\n                                begin: 0,\n                                end: l.call(f).length\n                            };\n                            break;\n\n                          case \"ignore\":\n                            e.end = e.begin = u.call(f, s.call(f));\n                            break;\n\n                          case \"radixFocus\":\n                            if (f.clicked > 1 && 0 === p.validPositions.length) break;\n                            if (function(e) {\n                                if (\"\" !== d.radixPoint && 0 !== d.digits) {\n                                    var t = p.validPositions;\n                                    if (void 0 === t[e] || void 0 === t[e].input) {\n                                        if (e < u.call(f, -1)) return !0;\n                                        var n = l.call(f).indexOf(d.radixPoint);\n                                        if (-1 !== n) {\n                                            for (var i = 0, a = t.length; i < a; i++) if (t[i] && n < i && t[i].input !== o.getPlaceholder.call(f, i)) return !1;\n                                            return !0;\n                                        }\n                                    }\n                                }\n                                return !1;\n                            }(e.begin)) {\n                                var h = l.call(f).join(\"\").indexOf(d.radixPoint);\n                                e.end = e.begin = d.numericInput ? u.call(f, h) : h;\n                                break;\n                            }\n\n                          default:\n                            if (i = e.begin, a = s.call(f, i, !0), i <= (r = u.call(f, -1 !== a || c.call(f, 0) ? a : -1))) e.end = e.begin = c.call(f, i, !1, !0) ? i : u.call(f, i); else {\n                                var v = p.validPositions[a], m = o.getTestTemplate.call(f, r, v ? v.match.locator : void 0, v), g = o.getPlaceholder.call(f, r, m.match);\n                                if (\"\" !== g && l.call(f)[r] !== g && !0 !== m.match.optionalQuantifier && !0 !== m.match.newBlockMarker || !c.call(f, r, d.keepStatic, !0) && m.match.def === g) {\n                                    var y = u.call(f, r);\n                                    (i >= y || i === r) && (r = y);\n                                }\n                                e.end = e.begin = r;\n                            }\n                        }\n                        return e;\n                    }\n                }, t.getBuffer = l, t.getBufferTemplate = function() {\n                    var e = this.maskset;\n                    void 0 === e._buffer && (e._buffer = o.getMaskTemplate.call(this, !1, 1), void 0 === e.buffer && (e.buffer = e._buffer.slice()));\n                    return e._buffer;\n                }, t.getLastValidPosition = s, t.isMask = c, t.resetMaskSet = function(e) {\n                    var t = this.maskset;\n                    t.buffer = void 0, !0 !== e && (t.validPositions = [], t.p = 0);\n                    !1 === e && (t.tests = {}, t.jitOffset = {});\n                }, t.seekNext = u, t.seekPrevious = function(e, t) {\n                    var n = this, i = e - 1;\n                    if (e <= 0) return 0;\n                    for (;i > 0 && (!0 === t && (!0 !== o.getTest.call(n, i).match.newBlockMarker || !c.call(n, i, void 0, !0)) || !0 !== t && !c.call(n, i, void 0, !0)); ) i--;\n                    return i;\n                }, t.translatePosition = f;\n                var i, a = (i = n(9380)) && i.__esModule ? i : {\n                    default: i\n                }, r = n(7215), o = n(4713);\n                function l(e) {\n                    var t = this, n = t.maskset;\n                    return void 0 !== n.buffer && !0 !== e || (n.buffer = o.getMaskTemplate.call(t, !0, s.call(t), !0), \n                    void 0 === n._buffer && (n._buffer = n.buffer.slice())), n.buffer;\n                }\n                function s(e, t, n) {\n                    var i = this.maskset, a = -1, r = -1, o = n || i.validPositions;\n                    void 0 === e && (e = -1);\n                    for (var l = 0, s = o.length; l < s; l++) o[l] && (t || !0 !== o[l].generatedInput) && (l <= e && (a = l), \n                    l >= e && (r = l));\n                    return -1 === a || a === e ? r : -1 === r || e - a < r - e ? a : r;\n                }\n                function c(e, t, n) {\n                    var i = this, a = this.maskset, r = o.getTestTemplate.call(i, e).match;\n                    if (\"\" === r.def && (r = o.getTest.call(i, e).match), !0 !== r.static) return r.fn;\n                    if (!0 === n && void 0 !== a.validPositions[e] && !0 !== a.validPositions[e].generatedInput) return !0;\n                    if (!0 !== t && e > -1) {\n                        if (n) {\n                            var l = o.getTests.call(i, e);\n                            return l.length > 1 + (\"\" === l[l.length - 1].match.def ? 1 : 0);\n                        }\n                        var s = o.determineTestTemplate.call(i, e, o.getTests.call(i, e)), c = o.getPlaceholder.call(i, e, s.match);\n                        return s.match.def !== c;\n                    }\n                    return !1;\n                }\n                function u(e, t, n) {\n                    var i = this;\n                    void 0 === n && (n = !0);\n                    for (var a = e + 1; \"\" !== o.getTest.call(i, a).match.def && (!0 === t && (!0 !== o.getTest.call(i, a).match.newBlockMarker || !c.call(i, a, void 0, !0)) || !0 !== t && !c.call(i, a, void 0, n)); ) a++;\n                    return a;\n                }\n                function f(e) {\n                    var t = this.opts, n = this.el;\n                    return !this.isRTL || \"number\" != typeof e || t.greedy && \"\" === t.placeholder || !n || (e = this._valueGet().length - e) < 0 && (e = 0), \n                    e;\n                }\n            },\n            4713: function(e, t, n) {\n                Object.defineProperty(t, \"__esModule\", {\n                    value: !0\n                }), t.determineTestTemplate = f, t.getDecisionTaker = s, t.getMaskTemplate = function(e, t, n, i, a) {\n                    var r = this, o = this.opts, l = this.maskset, s = o.greedy;\n                    a && o.greedy && (o.greedy = !1, r.maskset.tests = {});\n                    t = t || 0;\n                    var p, d, v, m, g = [], y = 0;\n                    do {\n                        if (!0 === e && l.validPositions[y]) d = (v = a && l.validPositions[y].match.optionality && void 0 === l.validPositions[y + 1] && (!0 === l.validPositions[y].generatedInput || l.validPositions[y].input == o.skipOptionalPartCharacter && y > 0) ? f.call(r, y, h.call(r, y, p, y - 1)) : l.validPositions[y]).match, \n                        p = v.locator.slice(), g.push(!0 === n ? v.input : !1 === n ? d.nativeDef : c.call(r, y, d)); else {\n                            d = (v = u.call(r, y, p, y - 1)).match, p = v.locator.slice();\n                            var k = !0 !== i && (!1 !== o.jitMasking ? o.jitMasking : d.jit);\n                            (m = (m || l.validPositions[y - 1]) && d.static && d.def !== o.groupSeparator && null === d.fn) || !1 === k || void 0 === k || \"number\" == typeof k && isFinite(k) && k > y ? g.push(!1 === n ? d.nativeDef : c.call(r, g.length, d)) : m = !1;\n                        }\n                        y++;\n                    } while (!0 !== d.static || \"\" !== d.def || t > y);\n                    \"\" === g[g.length - 1] && g.pop();\n                    !1 === n && void 0 !== l.maskLength || (l.maskLength = y - 1);\n                    return o.greedy = s, g;\n                }, t.getPlaceholder = c, t.getTest = p, t.getTestTemplate = u, t.getTests = h, t.isSubsetOf = d;\n                var i, a = (i = n(2394)) && i.__esModule ? i : {\n                    default: i\n                }, r = n(8711);\n                function o(e) {\n                    return o = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(e) {\n                        return typeof e;\n                    } : function(e) {\n                        return e && \"function\" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? \"symbol\" : typeof e;\n                    }, o(e);\n                }\n                function l(e, t) {\n                    var n = (null != e.alternation ? e.mloc[s(e)] : e.locator).join(\"\");\n                    if (\"\" !== n) for (n = n.split(\":\")[0]; n.length < t; ) n += \"0\";\n                    return n;\n                }\n                function s(e) {\n                    var t = e.locator[e.alternation];\n                    return \"string\" == typeof t && t.length > 0 && (t = t.split(\",\")[0]), void 0 !== t ? t.toString() : \"\";\n                }\n                function c(e, t, n) {\n                    var i = this, a = this.opts, l = this.maskset;\n                    if (void 0 !== (t = t || p.call(i, e).match).placeholder || !0 === n) {\n                        if (\"\" !== t.placeholder && !0 === t.static && !0 !== t.generated) {\n                            var s = r.getLastValidPosition.call(i, e), c = r.seekNext.call(i, s);\n                            return (n ? e <= c : e < c) ? a.staticDefinitionSymbol && t.static ? t.nativeDef : t.def : \"function\" == typeof t.placeholder ? t.placeholder(a) : t.placeholder;\n                        }\n                        return \"function\" == typeof t.placeholder ? t.placeholder(a) : t.placeholder;\n                    }\n                    if (!0 === t.static) {\n                        if (e > -1 && void 0 === l.validPositions[e]) {\n                            var u, f = h.call(i, e), d = [];\n                            if (\"string\" == typeof a.placeholder && f.length > 1 + (\"\" === f[f.length - 1].match.def ? 1 : 0)) for (var v = 0; v < f.length; v++) if (\"\" !== f[v].match.def && !0 !== f[v].match.optionality && !0 !== f[v].match.optionalQuantifier && (!0 === f[v].match.static || void 0 === u || !1 !== f[v].match.fn.test(u.match.def, l, e, !0, a)) && (d.push(f[v]), \n                            !0 === f[v].match.static && (u = f[v]), d.length > 1 && /[0-9a-bA-Z]/.test(d[0].match.def))) return a.placeholder.charAt(e % a.placeholder.length);\n                        }\n                        return t.def;\n                    }\n                    return \"object\" === o(a.placeholder) ? t.def : a.placeholder.charAt(e % a.placeholder.length);\n                }\n                function u(e, t, n) {\n                    return this.maskset.validPositions[e] || f.call(this, e, h.call(this, e, t ? t.slice() : t, n));\n                }\n                function f(e, t) {\n                    var n = this.opts, i = 0, a = function(e, t) {\n                        var n = 0, i = !1;\n                        t.forEach((function(e) {\n                            e.match.optionality && (0 !== n && n !== e.match.optionality && (i = !0), (0 === n || n > e.match.optionality) && (n = e.match.optionality));\n                        })), n && (0 == e || 1 == t.length ? n = 0 : i || (n = 0));\n                        return n;\n                    }(e, t);\n                    e = e > 0 ? e - 1 : 0;\n                    var r, o, s, c = l(p.call(this, e));\n                    n.greedy && t.length > 1 && \"\" === t[t.length - 1].match.def && (i = 1);\n                    for (var u = 0; u < t.length - i; u++) {\n                        var f = t[u];\n                        r = l(f, c.length);\n                        var d = Math.abs(r - c);\n                        (!0 !== f.unMatchedAlternationStopped || t.filter((function(e) {\n                            return !0 !== e.unMatchedAlternationStopped;\n                        })).length <= 1) && (void 0 === o || \"\" !== r && d < o || s && !n.greedy && s.match.optionality && s.match.optionality - a > 0 && \"master\" === s.match.newBlockMarker && (!f.match.optionality || f.match.optionality - a < 1 || !f.match.newBlockMarker) || s && !n.greedy && s.match.optionalQuantifier && !f.match.optionalQuantifier) && (o = d, \n                        s = f);\n                    }\n                    return s;\n                }\n                function p(e, t) {\n                    var n = this.maskset;\n                    return n.validPositions[e] ? n.validPositions[e] : (t || h.call(this, e))[0];\n                }\n                function d(e, t, n) {\n                    function i(e) {\n                        for (var t, n = [], i = -1, a = 0, r = e.length; a < r; a++) if (\"-\" === e.charAt(a)) for (t = e.charCodeAt(a + 1); ++i < t; ) n.push(String.fromCharCode(i)); else i = e.charCodeAt(a), \n                        n.push(e.charAt(a));\n                        return n.join(\"\");\n                    }\n                    return e.match.def === t.match.nativeDef || !(!(n.regex || e.match.fn instanceof RegExp && t.match.fn instanceof RegExp) || !0 === e.match.static || !0 === t.match.static) && (\".\" === t.match.fn.source || -1 !== i(t.match.fn.source.replace(/[[\\]/]/g, \"\")).indexOf(i(e.match.fn.source.replace(/[[\\]/]/g, \"\"))));\n                }\n                function h(e, t, n) {\n                    var i, r, o = this, l = this.dependencyLib, s = this.maskset, c = this.opts, u = this.el, p = s.maskToken, h = t ? n : 0, v = t ? t.slice() : [ 0 ], m = [], g = !1, y = t ? t.join(\"\") : \"\", k = !1;\n                    function b(t, n, r, l) {\n                        function f(r, l, p) {\n                            function v(e, t) {\n                                var n = 0 === t.matches.indexOf(e);\n                                return n || t.matches.every((function(i, a) {\n                                    return !0 === i.isQuantifier ? n = v(e, t.matches[a - 1]) : Object.prototype.hasOwnProperty.call(i, \"matches\") && (n = v(e, i)), \n                                    !n;\n                                })), n;\n                            }\n                            function w(e, t, n) {\n                                var i, a;\n                                if ((s.tests[e] || s.validPositions[e]) && (s.validPositions[e] ? [ s.validPositions[e] ] : s.tests[e]).every((function(e, r) {\n                                    if (e.mloc[t]) return i = e, !1;\n                                    var o = void 0 !== n ? n : e.alternation, l = void 0 !== e.locator[o] ? e.locator[o].toString().indexOf(t) : -1;\n                                    return (void 0 === a || l < a) && -1 !== l && (i = e, a = l), !0;\n                                })), i) {\n                                    var r = i.locator[i.alternation], o = i.mloc[t] || i.mloc[r] || i.locator;\n                                    if (-1 !== o[o.length - 1].toString().indexOf(\":\")) o.pop();\n                                    return o.slice((void 0 !== n ? n : i.alternation) + 1);\n                                }\n                                return void 0 !== n ? w(e, t) : void 0;\n                            }\n                            function P(t, n) {\n                                return !0 === t.match.static && !0 !== n.match.static && n.match.fn.test(t.match.def, s, e, !1, c, !1);\n                            }\n                            function S(e, t) {\n                                var n = e.alternation, i = void 0 === t || n <= t.alternation && -1 === e.locator[n].toString().indexOf(t.locator[n]);\n                                if (!i && n > t.alternation) for (var a = 0; a < n; a++) if (e.locator[a] !== t.locator[a]) {\n                                    n = a, i = !0;\n                                    break;\n                                }\n                                return !!i && function(n) {\n                                    e.mloc = e.mloc || {};\n                                    var i = e.locator[n];\n                                    if (void 0 !== i) {\n                                        if (\"string\" == typeof i && (i = i.split(\",\")[0]), void 0 === e.mloc[i] && (e.mloc[i] = e.locator.slice(), \n                                        e.mloc[i].push(\":\".concat(e.alternation))), void 0 !== t) {\n                                            for (var a in t.mloc) \"string\" == typeof a && (a = parseInt(a.split(\",\")[0])), e.mloc[a + 0] = t.mloc[a];\n                                            e.locator[n] = Object.keys(e.mloc).join(\",\");\n                                        }\n                                        return e.alternation > n && (e.alternation = n), !0;\n                                    }\n                                    return e.alternation = void 0, !1;\n                                }(n);\n                            }\n                            function O(e, t) {\n                                if (e.locator.length !== t.locator.length) return !1;\n                                for (var n = e.alternation + 1; n < e.locator.length; n++) if (e.locator[n] !== t.locator[n]) return !1;\n                                return !0;\n                            }\n                            if (h > e + c._maxTestPos) throw new Error(\"Inputmask: There is probably an error in your mask definition or in the code. Create an issue on github with an example of the mask you are using. \".concat(s.mask));\n                            if (h === e && void 0 === r.matches) {\n                                if (m.push({\n                                    match: r,\n                                    locator: l.reverse(),\n                                    cd: y,\n                                    mloc: {}\n                                }), !r.optionality || void 0 !== p || !(c.definitions && c.definitions[r.nativeDef] && c.definitions[r.nativeDef].optional || a.default.prototype.definitions[r.nativeDef] && a.default.prototype.definitions[r.nativeDef].optional)) return !0;\n                                g = !0, h = e;\n                            } else if (void 0 !== r.matches) {\n                                if (r.isGroup && p !== r) return function() {\n                                    if (r = f(t.matches[t.matches.indexOf(r) + 1], l, p)) return !0;\n                                }();\n                                if (r.isOptional) return function() {\n                                    var t = r, a = m.length;\n                                    if (r = b(r, n, l, p), m.length > 0) {\n                                        if (m.forEach((function(e, t) {\n                                            t >= a && (e.match.optionality = e.match.optionality ? e.match.optionality + 1 : 1);\n                                        })), i = m[m.length - 1].match, void 0 !== p || !v(i, t)) return r;\n                                        g = !0, h = e;\n                                    }\n                                }();\n                                if (r.isAlternator) return function() {\n                                    function i(e) {\n                                        for (var t, n = e.matches[0].matches ? e.matches[0].matches.length : 1, i = 0; i < e.matches.length && n === (t = e.matches[i].matches ? e.matches[i].matches.length : 1); i++) ;\n                                        return n !== t;\n                                    }\n                                    o.hasAlternator = !0;\n                                    var a, v = r, y = [], b = m.slice(), x = l.length, _ = n.length > 0 ? n.shift() : -1;\n                                    if (-1 === _ || \"string\" == typeof _) {\n                                        var M, E = h, j = n.slice(), T = [];\n                                        if (\"string\" == typeof _) T = _.split(\",\"); else for (M = 0; M < v.matches.length; M++) T.push(M.toString());\n                                        if (void 0 !== s.excludes[e]) {\n                                            for (var A = T.slice(), D = 0, L = s.excludes[e].length; D < L; D++) {\n                                                var C = s.excludes[e][D].toString().split(\":\");\n                                                l.length == C[1] && T.splice(T.indexOf(C[0]), 1);\n                                            }\n                                            0 === T.length && (delete s.excludes[e], T = A);\n                                        }\n                                        (!0 === c.keepStatic || isFinite(parseInt(c.keepStatic)) && E >= c.keepStatic) && (T = T.slice(0, 1));\n                                        for (var B = 0; B < T.length; B++) {\n                                            M = parseInt(T[B]), m = [], n = \"string\" == typeof _ && w(h, M, x) || j.slice();\n                                            var I = v.matches[M];\n                                            if (I && f(I, [ M ].concat(l), p)) r = !0; else if (0 === B && (k = i(v)), I && I.matches && I.matches.length > v.matches[0].matches.length) break;\n                                            a = m.slice(), h = E, m = [];\n                                            for (var R = 0; R < a.length; R++) {\n                                                var F = a[R], N = !1;\n                                                F.alternation = F.alternation || x, S(F);\n                                                for (var V = 0; V < y.length; V++) {\n                                                    var G = y[V];\n                                                    if (\"string\" != typeof _ || void 0 !== F.alternation && T.includes(F.locator[F.alternation].toString())) {\n                                                        if (F.match.nativeDef === G.match.nativeDef) {\n                                                            N = !0, S(G, F);\n                                                            break;\n                                                        }\n                                                        if (d(F, G, c)) {\n                                                            S(F, G) && (N = !0, y.splice(y.indexOf(G), 0, F));\n                                                            break;\n                                                        }\n                                                        if (d(G, F, c)) {\n                                                            S(G, F);\n                                                            break;\n                                                        }\n                                                        if (P(F, G)) {\n                                                            O(F, G) || void 0 !== u.inputmask.userOptions.keepStatic ? S(F, G) && (N = !0, y.splice(y.indexOf(G), 0, F)) : c.keepStatic = !0;\n                                                            break;\n                                                        }\n                                                        if (P(G, F)) {\n                                                            S(G, F);\n                                                            break;\n                                                        }\n                                                    }\n                                                }\n                                                N || y.push(F);\n                                            }\n                                        }\n                                        m = b.concat(y), h = e, g = m.length > 0 && k, r = y.length > 0 && !k, k && g && !r && m.forEach((function(e, t) {\n                                            e.unMatchedAlternationStopped = !0;\n                                        })), n = j.slice();\n                                    } else r = f(v.matches[_] || t.matches[_], [ _ ].concat(l), p);\n                                    if (r) return !0;\n                                }();\n                                if (r.isQuantifier && p !== t.matches[t.matches.indexOf(r) - 1]) return function() {\n                                    for (var a = r, o = !1, u = n.length > 0 ? n.shift() : 0; u < (isNaN(a.quantifier.max) ? u + 1 : a.quantifier.max) && h <= e; u++) {\n                                        var p = t.matches[t.matches.indexOf(a) - 1];\n                                        if (r = f(p, [ u ].concat(l), p)) {\n                                            if (m.forEach((function(t, n) {\n                                                (i = x(p, t.match) ? t.match : m[m.length - 1].match).optionalQuantifier = u >= a.quantifier.min, \n                                                i.jit = (u + 1) * (p.matches.indexOf(i) + 1) > a.quantifier.jit, i.optionalQuantifier && v(i, p) && (g = !0, \n                                                h = e, c.greedy && null == s.validPositions[e - 1] && u > a.quantifier.min && -1 != [ \"*\", \"+\" ].indexOf(a.quantifier.max) && (m.pop(), \n                                                y = void 0), o = !0, r = !1), !o && i.jit && (s.jitOffset[e] = p.matches.length - p.matches.indexOf(i));\n                                            })), o) break;\n                                            return !0;\n                                        }\n                                    }\n                                }();\n                                if (r = b(r, n, l, p)) return !0;\n                            } else h++;\n                        }\n                        for (var p = n.length > 0 ? n.shift() : 0; p < t.matches.length; p++) if (!0 !== t.matches[p].isQuantifier) {\n                            var v = f(t.matches[p], [ p ].concat(r), l);\n                            if (v && h === e) return v;\n                            if (h > e) break;\n                        }\n                    }\n                    function x(e, t) {\n                        var n = -1 != e.matches.indexOf(t);\n                        return n || e.matches.forEach((function(e, i) {\n                            void 0 === e.matches || n || (n = x(e, t));\n                        })), n;\n                    }\n                    if (e > -1) {\n                        if (void 0 === t) {\n                            for (var w, P = e - 1; void 0 === (w = s.validPositions[P] || s.tests[P]) && P > -1; ) P--;\n                            void 0 !== w && P > -1 && (v = function(e, t) {\n                                var n, i = [];\n                                return Array.isArray(t) || (t = [ t ]), t.length > 0 && (void 0 === t[0].alternation || !0 === c.keepStatic ? 0 === (i = f.call(o, e, t.slice()).locator.slice()).length && (i = t[0].locator.slice()) : t.forEach((function(e) {\n                                    \"\" !== e.def && (0 === i.length ? (n = e.alternation, i = e.locator.slice()) : e.locator[n] && -1 === i[n].toString().indexOf(e.locator[n]) && (i[n] += \",\" + e.locator[n]));\n                                }))), i;\n                            }(P, w), y = v.join(\"\"), h = P);\n                        }\n                        if (s.tests[e] && s.tests[e][0].cd === y) return s.tests[e];\n                        for (var S = v.shift(); S < p.length; S++) {\n                            if (b(p[S], v, [ S ]) && h === e || h > e) break;\n                        }\n                    }\n                    return (0 === m.length || g) && m.push({\n                        match: {\n                            fn: null,\n                            static: !0,\n                            optionality: !1,\n                            casing: null,\n                            def: \"\",\n                            placeholder: \"\"\n                        },\n                        locator: k && 0 === m.filter((function(e) {\n                            return !0 !== e.unMatchedAlternationStopped;\n                        })).length ? [ 0 ] : [],\n                        mloc: {},\n                        cd: y\n                    }), void 0 !== t && s.tests[e] ? r = l.extend(!0, [], m) : (s.tests[e] = l.extend(!0, [], m), \n                    r = s.tests[e]), m.forEach((function(e) {\n                        e.match.optionality = e.match.defOptionality || !1;\n                    })), r;\n                }\n            },\n            7215: function(e, t, n) {\n                Object.defineProperty(t, \"__esModule\", {\n                    value: !0\n                }), t.alternate = l, t.checkAlternationMatch = function(e, t, n) {\n                    for (var i, a = this.opts.greedy ? t : t.slice(0, 1), r = !1, o = void 0 !== n ? n.split(\",\") : [], l = 0; l < o.length; l++) -1 !== (i = e.indexOf(o[l])) && e.splice(i, 1);\n                    for (var s = 0; s < e.length; s++) if (a.includes(e[s])) {\n                        r = !0;\n                        break;\n                    }\n                    return r;\n                }, t.handleRemove = function(e, t, n, i, s) {\n                    var c = this, u = this.maskset, f = this.opts;\n                    if ((f.numericInput || c.isRTL) && (t === a.keys.Backspace ? t = a.keys.Delete : t === a.keys.Delete && (t = a.keys.Backspace), \n                    c.isRTL)) {\n                        var p = n.end;\n                        n.end = n.begin, n.begin = p;\n                    }\n                    var d, h = r.getLastValidPosition.call(c, void 0, !0);\n                    n.end >= r.getBuffer.call(c).length && h >= n.end && (n.end = h + 1);\n                    t === a.keys.Backspace ? n.end - n.begin < 1 && (n.begin = r.seekPrevious.call(c, n.begin)) : t === a.keys.Delete && n.begin === n.end && (n.end = r.isMask.call(c, n.end, !0, !0) ? n.end + 1 : r.seekNext.call(c, n.end) + 1);\n                    !1 !== (d = v.call(c, n)) && ((!0 !== i && !1 !== f.keepStatic || null !== f.regex && -1 !== o.getTest.call(c, n.begin).match.def.indexOf(\"|\")) && l.call(c, !0), \n                    !0 !== i && (u.p = t === a.keys.Delete ? n.begin + d : n.begin, u.p = r.determineNewCaretPosition.call(c, {\n                        begin: u.p,\n                        end: u.p\n                    }, !1, !1 === f.insertMode && t === a.keys.Backspace ? \"none\" : void 0).begin));\n                }, t.isComplete = c, t.isSelection = u, t.isValid = f, t.refreshFromBuffer = d, \n                t.revalidateMask = v;\n                var i = n(6030), a = n(2839), r = n(8711), o = n(4713);\n                function l(e, t, n, i, a, s) {\n                    var c = this, u = this.dependencyLib, p = this.opts, d = c.maskset;\n                    if (!c.hasAlternator) return !1;\n                    var h, v, m, g, y, k, b, x, w, P, S, O = u.extend(!0, [], d.validPositions), _ = u.extend(!0, {}, d.tests), M = !1, E = !1, j = void 0 !== a ? a : r.getLastValidPosition.call(c);\n                    if (s && (P = s.begin, S = s.end, s.begin > s.end && (P = s.end, S = s.begin)), \n                    -1 === j && void 0 === a) h = 0, v = (g = o.getTest.call(c, h)).alternation; else for (;j >= 0; j--) if ((m = d.validPositions[j]) && void 0 !== m.alternation) {\n                        if (j <= (e || 0) && g && g.locator[m.alternation] !== m.locator[m.alternation]) break;\n                        h = j, v = d.validPositions[h].alternation, g = m;\n                    }\n                    if (void 0 !== v) {\n                        b = parseInt(h), d.excludes[b] = d.excludes[b] || [], !0 !== e && d.excludes[b].push((0, \n                        o.getDecisionTaker)(g) + \":\" + g.alternation);\n                        var T = [], A = -1;\n                        for (y = b; b < r.getLastValidPosition.call(c, void 0, !0) + 1; y++) -1 === A && e <= y && void 0 !== t && (T.push(t), \n                        A = T.length - 1), (k = d.validPositions[b]) && !0 !== k.generatedInput && (void 0 === s || y < P || y >= S) && T.push(k.input), \n                        d.validPositions.splice(b, 1);\n                        for (-1 === A && void 0 !== t && (T.push(t), A = T.length - 1); void 0 !== d.excludes[b] && d.excludes[b].length < 10; ) {\n                            for (d.tests = {}, r.resetMaskSet.call(c, !0), M = !0, y = 0; y < T.length && (x = M.caret || 0 == p.insertMode && null != x ? r.seekNext.call(c, x) : r.getLastValidPosition.call(c, void 0, !0) + 1, \n                            w = T[y], M = f.call(c, x, w, !1, i, !0)); y++) y === A && (E = M), 1 == e && M && (E = {\n                                caretPos: y\n                            });\n                            if (M) break;\n                            if (r.resetMaskSet.call(c), g = o.getTest.call(c, b), d.validPositions = u.extend(!0, [], O), \n                            d.tests = u.extend(!0, {}, _), !d.excludes[b]) {\n                                E = l.call(c, e, t, n, i, b - 1, s);\n                                break;\n                            }\n                            if (null != g.alternation) {\n                                var D = (0, o.getDecisionTaker)(g);\n                                if (-1 !== d.excludes[b].indexOf(D + \":\" + g.alternation)) {\n                                    E = l.call(c, e, t, n, i, b - 1, s);\n                                    break;\n                                }\n                                for (d.excludes[b].push(D + \":\" + g.alternation), y = b; y < r.getLastValidPosition.call(c, void 0, !0) + 1; y++) d.validPositions.splice(b);\n                            } else delete d.excludes[b];\n                        }\n                    }\n                    return E && !1 === p.keepStatic || delete d.excludes[b], E;\n                }\n                function s(e, t, n) {\n                    var i = this.opts, r = this.maskset;\n                    switch (i.casing || t.casing) {\n                      case \"upper\":\n                        e = e.toUpperCase();\n                        break;\n\n                      case \"lower\":\n                        e = e.toLowerCase();\n                        break;\n\n                      case \"title\":\n                        var o = r.validPositions[n - 1];\n                        e = 0 === n || o && o.input === String.fromCharCode(a.keyCode.Space) ? e.toUpperCase() : e.toLowerCase();\n                        break;\n\n                      default:\n                        if (\"function\" == typeof i.casing) {\n                            var l = Array.prototype.slice.call(arguments);\n                            l.push(r.validPositions), e = i.casing.apply(this, l);\n                        }\n                    }\n                    return e;\n                }\n                function c(e) {\n                    var t = this, n = this.opts, i = this.maskset;\n                    if (\"function\" == typeof n.isComplete) return n.isComplete(e, n);\n                    if (\"*\" !== n.repeat) {\n                        var a = !1, l = r.determineLastRequiredPosition.call(t, !0), s = l.l;\n                        if (void 0 === l.def || l.def.newBlockMarker || l.def.optionality || l.def.optionalQuantifier) {\n                            a = !0;\n                            for (var c = 0; c <= s; c++) {\n                                var u = o.getTestTemplate.call(t, c).match;\n                                if (!0 !== u.static && void 0 === i.validPositions[c] && (!1 === u.optionality || void 0 === u.optionality || u.optionality && 0 == u.newBlockMarker) && (!1 === u.optionalQuantifier || void 0 === u.optionalQuantifier) || !0 === u.static && \"\" != u.def && e[c] !== o.getPlaceholder.call(t, c, u)) {\n                                    a = !1;\n                                    break;\n                                }\n                            }\n                        }\n                        return a;\n                    }\n                }\n                function u(e) {\n                    var t = this.opts.insertMode ? 0 : 1;\n                    return this.isRTL ? e.begin - e.end > t : e.end - e.begin > t;\n                }\n                function f(e, t, n, i, a, p, m) {\n                    var g = this, y = this.dependencyLib, k = this.opts, b = g.maskset;\n                    n = !0 === n;\n                    var x = e;\n                    function w(e) {\n                        if (void 0 !== e) {\n                            if (void 0 !== e.remove && (Array.isArray(e.remove) || (e.remove = [ e.remove ]), \n                            e.remove.sort((function(e, t) {\n                                return g.isRTL ? e.pos - t.pos : t.pos - e.pos;\n                            })).forEach((function(e) {\n                                v.call(g, {\n                                    begin: e,\n                                    end: e + 1\n                                });\n                            })), e.remove = void 0), void 0 !== e.insert && (Array.isArray(e.insert) || (e.insert = [ e.insert ]), \n                            e.insert.sort((function(e, t) {\n                                return g.isRTL ? t.pos - e.pos : e.pos - t.pos;\n                            })).forEach((function(e) {\n                                \"\" !== e.c && f.call(g, e.pos, e.c, void 0 === e.strict || e.strict, void 0 !== e.fromIsValid ? e.fromIsValid : i);\n                            })), e.insert = void 0), e.refreshFromBuffer && e.buffer) {\n                                var t = e.refreshFromBuffer;\n                                d.call(g, !0 === t ? t : t.start, t.end, e.buffer), e.refreshFromBuffer = void 0;\n                            }\n                            void 0 !== e.rewritePosition && (x = e.rewritePosition, e = !0);\n                        }\n                        return e;\n                    }\n                    function P(t, n, a) {\n                        var l = !1;\n                        return o.getTests.call(g, t).every((function(c, f) {\n                            var p = c.match;\n                            if (r.getBuffer.call(g, !0), !1 !== (l = (!p.jit || void 0 !== b.validPositions[r.seekPrevious.call(g, t)]) && (null != p.fn ? p.fn.test(n, b, t, a, k, u.call(g, e)) : (n === p.def || n === k.skipOptionalPartCharacter) && \"\" !== p.def && {\n                                c: o.getPlaceholder.call(g, t, p, !0) || p.def,\n                                pos: t\n                            }))) {\n                                var d = void 0 !== l.c ? l.c : n, h = t;\n                                return d = d === k.skipOptionalPartCharacter && !0 === p.static ? o.getPlaceholder.call(g, t, p, !0) || p.def : d, \n                                !0 !== (l = w(l)) && void 0 !== l.pos && l.pos !== t && (h = l.pos), !0 !== l && void 0 === l.pos && void 0 === l.c ? !1 : (!1 === v.call(g, e, y.extend({}, c, {\n                                    input: s.call(g, d, p, h)\n                                }), i, h) && (l = !1), !1);\n                            }\n                            return !0;\n                        })), l;\n                    }\n                    void 0 !== e.begin && (x = g.isRTL ? e.end : e.begin);\n                    var S = !0, O = y.extend(!0, [], b.validPositions);\n                    if (!1 === k.keepStatic && void 0 !== b.excludes[x] && !0 !== a && !0 !== i) for (var _ = x; _ < (g.isRTL ? e.begin : e.end); _++) void 0 !== b.excludes[_] && (b.excludes[_] = void 0, \n                    delete b.tests[_]);\n                    if (\"function\" == typeof k.preValidation && !0 !== i && !0 !== p && (S = w(S = k.preValidation.call(g, r.getBuffer.call(g), x, t, u.call(g, e), k, b, e, n || a))), \n                    !0 === S) {\n                        if (S = P(x, t, n), (!n || !0 === i) && !1 === S && !0 !== p) {\n                            var M = b.validPositions[x];\n                            if (!M || !0 !== M.match.static || M.match.def !== t && t !== k.skipOptionalPartCharacter) {\n                                if (k.insertMode || void 0 === b.validPositions[r.seekNext.call(g, x)] || e.end > x) {\n                                    var E = !1;\n                                    if (b.jitOffset[x] && void 0 === b.validPositions[r.seekNext.call(g, x)] && !1 !== (S = f.call(g, x + b.jitOffset[x], t, !0, !0)) && (!0 !== a && (S.caret = x), \n                                    E = !0), e.end > x && (b.validPositions[x] = void 0), !E && !r.isMask.call(g, x, k.keepStatic && 0 === x)) for (var j = x + 1, T = r.seekNext.call(g, x, !1, 0 !== x); j <= T; j++) if (!1 !== (S = P(j, t, n))) {\n                                        S = h.call(g, x, void 0 !== S.pos ? S.pos : j) || S, x = j;\n                                        break;\n                                    }\n                                }\n                            } else S = {\n                                caret: r.seekNext.call(g, x)\n                            };\n                        }\n                        g.hasAlternator && !0 !== a && !n && (a = !0, !1 === S && k.keepStatic && (c.call(g, r.getBuffer.call(g)) || 0 === x) ? S = l.call(g, x, t, n, i, void 0, e) : (u.call(g, e) && b.tests[x] && b.tests[x].length > 1 && k.keepStatic || 1 == S && !0 !== k.numericInput && b.tests[x] && b.tests[x].length > 1 && r.getLastValidPosition.call(g, void 0, !0) > x) && (S = l.call(g, !0))), \n                        !0 === S && (S = {\n                            pos: x\n                        });\n                    }\n                    if (\"function\" == typeof k.postValidation && !0 !== i && !0 !== p) {\n                        var A = k.postValidation.call(g, r.getBuffer.call(g, !0), void 0 !== e.begin ? g.isRTL ? e.end : e.begin : e, t, S, k, b, n, m);\n                        void 0 !== A && (S = !0 === A ? S : A);\n                    }\n                    S && void 0 === S.pos && (S.pos = x), !1 === S || !0 === p ? (r.resetMaskSet.call(g, !0), \n                    b.validPositions = y.extend(!0, [], O)) : h.call(g, void 0, x, !0);\n                    var D = w(S);\n                    void 0 !== g.maxLength && (r.getBuffer.call(g).length > g.maxLength && !i && (r.resetMaskSet.call(g, !0), \n                    b.validPositions = y.extend(!0, [], O), D = !1));\n                    return D;\n                }\n                function p(e, t, n) {\n                    for (var i = this.maskset, a = !1, r = o.getTests.call(this, e), l = 0; l < r.length; l++) {\n                        if (r[l].match && (r[l].match.nativeDef === t.match[n.shiftPositions ? \"def\" : \"nativeDef\"] && (!n.shiftPositions || !t.match.static) || r[l].match.nativeDef === t.match.nativeDef || n.regex && !r[l].match.static && r[l].match.fn.test(t.input, i, e, !1, n))) {\n                            a = !0;\n                            break;\n                        }\n                        if (r[l].match && r[l].match.def === t.match.nativeDef) {\n                            a = void 0;\n                            break;\n                        }\n                    }\n                    return !1 === a && void 0 !== i.jitOffset[e] && (a = p.call(this, e + i.jitOffset[e], t, n)), \n                    a;\n                }\n                function d(e, t, n) {\n                    var a, o, l = this, s = this.maskset, c = this.opts, u = this.dependencyLib, f = c.skipOptionalPartCharacter, p = l.isRTL ? n.slice().reverse() : n;\n                    if (c.skipOptionalPartCharacter = \"\", !0 === e) r.resetMaskSet.call(l, !1), e = 0, \n                    t = n.length, o = r.determineNewCaretPosition.call(l, {\n                        begin: 0,\n                        end: 0\n                    }, !1).begin; else {\n                        for (a = e; a < t; a++) s.validPositions.splice(e, 0);\n                        o = e;\n                    }\n                    var d = new u.Event(\"keypress\");\n                    for (a = e; a < t; a++) {\n                        d.key = p[a].toString(), l.ignorable = !1;\n                        var h = i.EventHandlers.keypressEvent.call(l, d, !0, !1, !1, o);\n                        !1 !== h && void 0 !== h && (o = h.forwardPosition);\n                    }\n                    c.skipOptionalPartCharacter = f;\n                }\n                function h(e, t, n) {\n                    var i = this, a = this.maskset, l = this.dependencyLib;\n                    if (void 0 === e) for (e = t - 1; e > 0 && !a.validPositions[e]; e--) ;\n                    for (var s = e; s < t; s++) {\n                        if (void 0 === a.validPositions[s] && !r.isMask.call(i, s, !1)) if (0 == s ? o.getTest.call(i, s) : a.validPositions[s - 1]) {\n                            var c = o.getTests.call(i, s).slice();\n                            \"\" === c[c.length - 1].match.def && c.pop();\n                            var u, p = o.determineTestTemplate.call(i, s, c);\n                            if (p && (!0 !== p.match.jit || \"master\" === p.match.newBlockMarker && (u = a.validPositions[s + 1]) && !0 === u.match.optionalQuantifier) && ((p = l.extend({}, p, {\n                                input: o.getPlaceholder.call(i, s, p.match, !0) || p.match.def\n                            })).generatedInput = !0, v.call(i, s, p, !0), !0 !== n)) {\n                                var d = a.validPositions[t].input;\n                                return a.validPositions[t] = void 0, f.call(i, t, d, !0, !0);\n                            }\n                        }\n                    }\n                }\n                function v(e, t, n, i) {\n                    var a = this, l = this.maskset, s = this.opts, c = this.dependencyLib;\n                    function d(e, t, n) {\n                        var i = t[e];\n                        if (void 0 !== i && !0 === i.match.static && !0 !== i.match.optionality && (void 0 === t[0] || void 0 === t[0].alternation)) {\n                            var a = n.begin <= e - 1 ? t[e - 1] && !0 === t[e - 1].match.static && t[e - 1] : t[e - 1], r = n.end > e + 1 ? t[e + 1] && !0 === t[e + 1].match.static && t[e + 1] : t[e + 1];\n                            return a && r;\n                        }\n                        return !1;\n                    }\n                    var h = 0, v = void 0 !== e.begin ? e.begin : e, m = void 0 !== e.end ? e.end : e, g = !0;\n                    if (e.begin > e.end && (v = e.end, m = e.begin), i = void 0 !== i ? i : v, void 0 === n && (v !== m || s.insertMode && void 0 !== l.validPositions[i] || void 0 === t || t.match.optionalQuantifier || t.match.optionality)) {\n                        var y, k = c.extend(!0, [], l.validPositions), b = r.getLastValidPosition.call(a, void 0, !0);\n                        l.p = v;\n                        var x = u.call(a, e) ? v : i;\n                        for (y = b; y >= x; y--) l.validPositions.splice(y, 1), void 0 === t && delete l.tests[y + 1];\n                        var w, P, S = i, O = S;\n                        for (t && (l.validPositions[i] = c.extend(!0, {}, t), O++, S++), null == k[m] && l.jitOffset[m] && (m += l.jitOffset[m] + 1), \n                        y = t ? m : m - 1; y <= b; y++) {\n                            if (void 0 !== (w = k[y]) && !0 !== w.generatedInput && (y >= m || y >= v && d(y, k, {\n                                begin: v,\n                                end: m\n                            }))) {\n                                for (;\"\" !== o.getTest.call(a, O).match.def; ) {\n                                    if (!1 !== (P = p.call(a, O, w, s)) || \"+\" === w.match.def) {\n                                        \"+\" === w.match.def && r.getBuffer.call(a, !0);\n                                        var _ = f.call(a, O, w.input, \"+\" !== w.match.def, !0);\n                                        if (g = !1 !== _, S = (_.pos || O) + 1, !g && P) break;\n                                    } else g = !1;\n                                    if (g) {\n                                        void 0 === t && w.match.static && y === e.begin && h++;\n                                        break;\n                                    }\n                                    if (!g && r.getBuffer.call(a), O > l.maskLength) break;\n                                    O++;\n                                }\n                                \"\" == o.getTest.call(a, O).match.def && (g = !1), O = S;\n                            }\n                            if (!g) break;\n                        }\n                        if (!g) return l.validPositions = c.extend(!0, [], k), r.resetMaskSet.call(a, !0), \n                        !1;\n                    } else t && o.getTest.call(a, i).match.cd === t.match.cd && (l.validPositions[i] = c.extend(!0, {}, t));\n                    return r.resetMaskSet.call(a, !0), h;\n                }\n            }\n        }, t = {};\n        function n(i) {\n            var a = t[i];\n            if (void 0 !== a) return a.exports;\n            var r = t[i] = {\n                exports: {}\n            };\n            return e[i](r, r.exports, n), r.exports;\n        }\n        var i = {};\n        return function() {\n            var e = i;\n            Object.defineProperty(e, \"__esModule\", {\n                value: !0\n            }), e.default = void 0, n(7149), n(3194), n(9302), n(4013), n(3851), n(219), n(207), \n            n(5296);\n            var t, a = (t = n(2394)) && t.__esModule ? t : {\n                default: t\n            };\n            e.default = a.default;\n        }(), i;\n    }();\n}));", "/*\nTrix 1.3.5\nCopyright \u00A9 2024 37signals, LLC\nhttp://trix-editor.org/\n */\n(function(){}).call(this),function(){var t;null==window.Set&&(window.Set=t=function(){function t(){this.clear()}return t.prototype.clear=function(){return this.values=[]},t.prototype.has=function(t){return-1!==this.values.indexOf(t)},t.prototype.add=function(t){return this.has(t)||this.values.push(t),this},t.prototype[\"delete\"]=function(t){var e;return-1===(e=this.values.indexOf(t))?!1:(this.values.splice(e,1),!0)},t.prototype.forEach=function(){var t;return(t=this.values).forEach.apply(t,arguments)},t}())}.call(this),function(t){function e(){}function n(t,e){return function(){t.apply(e,arguments)}}function i(t){if(\"object\"!=typeof this)throw new TypeError(\"Promises must be constructed via new\");if(\"function\"!=typeof t)throw new TypeError(\"not a function\");this._state=0,this._handled=!1,this._value=void 0,this._deferreds=[],c(t,this)}function o(t,e){for(;3===t._state;)t=t._value;return 0===t._state?void t._deferreds.push(e):(t._handled=!0,void h(function(){var n=1===t._state?e.onFulfilled:e.onRejected;if(null===n)return void(1===t._state?r:s)(e.promise,t._value);var i;try{i=n(t._value)}catch(o){return void s(e.promise,o)}r(e.promise,i)}))}function r(t,e){try{if(e===t)throw new TypeError(\"A promise cannot be resolved with itself.\");if(e&&(\"object\"==typeof e||\"function\"==typeof e)){var o=e.then;if(e instanceof i)return t._state=3,t._value=e,void a(t);if(\"function\"==typeof o)return void c(n(o,e),t)}t._state=1,t._value=e,a(t)}catch(r){s(t,r)}}function s(t,e){t._state=2,t._value=e,a(t)}function a(t){2===t._state&&0===t._deferreds.length&&setTimeout(function(){t._handled||p(t._value)},1);for(var e=0,n=t._deferreds.length;n>e;e++)o(t,t._deferreds[e]);t._deferreds=null}function u(t,e,n){this.onFulfilled=\"function\"==typeof t?t:null,this.onRejected=\"function\"==typeof e?e:null,this.promise=n}function c(t,e){var n=!1;try{t(function(t){n||(n=!0,r(e,t))},function(t){n||(n=!0,s(e,t))})}catch(i){if(n)return;n=!0,s(e,i)}}var l=setTimeout,h=\"function\"==typeof setImmediate&&setImmediate||function(t){l(t,1)},p=function(t){\"undefined\"!=typeof console&&console&&console.warn(\"Possible Unhandled Promise Rejection:\",t)};i.prototype[\"catch\"]=function(t){return this.then(null,t)},i.prototype.then=function(t,n){var r=new i(e);return o(this,new u(t,n,r)),r},i.all=function(t){var e=Array.prototype.slice.call(t);return new i(function(t,n){function i(r,s){try{if(s&&(\"object\"==typeof s||\"function\"==typeof s)){var a=s.then;if(\"function\"==typeof a)return void a.call(s,function(t){i(r,t)},n)}e[r]=s,0===--o&&t(e)}catch(u){n(u)}}if(0===e.length)return t([]);for(var o=e.length,r=0;r<e.length;r++)i(r,e[r])})},i.resolve=function(t){return t&&\"object\"==typeof t&&t.constructor===i?t:new i(function(e){e(t)})},i.reject=function(t){return new i(function(e,n){n(t)})},i.race=function(t){return new i(function(e,n){for(var i=0,o=t.length;o>i;i++)t[i].then(e,n)})},i._setImmediateFn=function(t){h=t},i._setUnhandledRejectionFn=function(t){p=t},\"undefined\"!=typeof module&&module.exports?module.exports=i:t.Promise||(t.Promise=i)}(this),function(){var t=\"object\"==typeof window.customElements,e=\"function\"==typeof document.registerElement,n=t||e;n||(/**\n * @license\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n */\n\"undefined\"==typeof WeakMap&&!function(){var t=Object.defineProperty,e=Date.now()%1e9,n=function(){this.name=\"__st\"+(1e9*Math.random()>>>0)+(e++ +\"__\")};n.prototype={set:function(e,n){var i=e[this.name];return i&&i[0]===e?i[1]=n:t(e,this.name,{value:[e,n],writable:!0}),this},get:function(t){var e;return(e=t[this.name])&&e[0]===t?e[1]:void 0},\"delete\":function(t){var e=t[this.name];return e&&e[0]===t?(e[0]=e[1]=void 0,!0):!1},has:function(t){var e=t[this.name];return e?e[0]===t:!1}},window.WeakMap=n}(),function(t){function e(t){A.push(t),b||(b=!0,g(i))}function n(t){return window.ShadowDOMPolyfill&&window.ShadowDOMPolyfill.wrapIfNeeded(t)||t}function i(){b=!1;var t=A;A=[],t.sort(function(t,e){return t.uid_-e.uid_});var e=!1;t.forEach(function(t){var n=t.takeRecords();o(t),n.length&&(t.callback_(n,t),e=!0)}),e&&i()}function o(t){t.nodes_.forEach(function(e){var n=m.get(e);n&&n.forEach(function(e){e.observer===t&&e.removeTransientObservers()})})}function r(t,e){for(var n=t;n;n=n.parentNode){var i=m.get(n);if(i)for(var o=0;o<i.length;o++){var r=i[o],s=r.options;if(n===t||s.subtree){var a=e(s);a&&r.enqueue(a)}}}}function s(t){this.callback_=t,this.nodes_=[],this.records_=[],this.uid_=++C}function a(t,e){this.type=t,this.target=e,this.addedNodes=[],this.removedNodes=[],this.previousSibling=null,this.nextSibling=null,this.attributeName=null,this.attributeNamespace=null,this.oldValue=null}function u(t){var e=new a(t.type,t.target);return e.addedNodes=t.addedNodes.slice(),e.removedNodes=t.removedNodes.slice(),e.previousSibling=t.previousSibling,e.nextSibling=t.nextSibling,e.attributeName=t.attributeName,e.attributeNamespace=t.attributeNamespace,e.oldValue=t.oldValue,e}function c(t,e){return x=new a(t,e)}function l(t){return w?w:(w=u(x),w.oldValue=t,w)}function h(){x=w=void 0}function p(t){return t===w||t===x}function d(t,e){return t===e?t:w&&p(t)?w:null}function f(t,e,n){this.observer=t,this.target=e,this.options=n,this.transientObservedNodes=[]}if(!t.JsMutationObserver){var g,m=new WeakMap;if(/Trident|Edge/.test(navigator.userAgent))g=setTimeout;else if(window.setImmediate)g=window.setImmediate;else{var v=[],y=String(Math.random());window.addEventListener(\"message\",function(t){if(t.data===y){var e=v;v=[],e.forEach(function(t){t()})}}),g=function(t){v.push(t),window.postMessage(y,\"*\")}}var b=!1,A=[],C=0;s.prototype={observe:function(t,e){if(t=n(t),!e.childList&&!e.attributes&&!e.characterData||e.attributeOldValue&&!e.attributes||e.attributeFilter&&e.attributeFilter.length&&!e.attributes||e.characterDataOldValue&&!e.characterData)throw new SyntaxError;var i=m.get(t);i||m.set(t,i=[]);for(var o,r=0;r<i.length;r++)if(i[r].observer===this){o=i[r],o.removeListeners(),o.options=e;break}o||(o=new f(this,t,e),i.push(o),this.nodes_.push(t)),o.addListeners()},disconnect:function(){this.nodes_.forEach(function(t){for(var e=m.get(t),n=0;n<e.length;n++){var i=e[n];if(i.observer===this){i.removeListeners(),e.splice(n,1);break}}},this),this.records_=[]},takeRecords:function(){var t=this.records_;return this.records_=[],t}};var x,w;f.prototype={enqueue:function(t){var n=this.observer.records_,i=n.length;if(n.length>0){var o=n[i-1],r=d(o,t);if(r)return void(n[i-1]=r)}else e(this.observer);n[i]=t},addListeners:function(){this.addListeners_(this.target)},addListeners_:function(t){var e=this.options;e.attributes&&t.addEventListener(\"DOMAttrModified\",this,!0),e.characterData&&t.addEventListener(\"DOMCharacterDataModified\",this,!0),e.childList&&t.addEventListener(\"DOMNodeInserted\",this,!0),(e.childList||e.subtree)&&t.addEventListener(\"DOMNodeRemoved\",this,!0)},removeListeners:function(){this.removeListeners_(this.target)},removeListeners_:function(t){var e=this.options;e.attributes&&t.removeEventListener(\"DOMAttrModified\",this,!0),e.characterData&&t.removeEventListener(\"DOMCharacterDataModified\",this,!0),e.childList&&t.removeEventListener(\"DOMNodeInserted\",this,!0),(e.childList||e.subtree)&&t.removeEventListener(\"DOMNodeRemoved\",this,!0)},addTransientObserver:function(t){if(t!==this.target){this.addListeners_(t),this.transientObservedNodes.push(t);var e=m.get(t);e||m.set(t,e=[]),e.push(this)}},removeTransientObservers:function(){var t=this.transientObservedNodes;this.transientObservedNodes=[],t.forEach(function(t){this.removeListeners_(t);for(var e=m.get(t),n=0;n<e.length;n++)if(e[n]===this){e.splice(n,1);break}},this)},handleEvent:function(t){switch(t.stopImmediatePropagation(),t.type){case\"DOMAttrModified\":var e=t.attrName,n=t.relatedNode.namespaceURI,i=t.target,o=new c(\"attributes\",i);o.attributeName=e,o.attributeNamespace=n;var s=t.attrChange===MutationEvent.ADDITION?null:t.prevValue;r(i,function(t){return!t.attributes||t.attributeFilter&&t.attributeFilter.length&&-1===t.attributeFilter.indexOf(e)&&-1===t.attributeFilter.indexOf(n)?void 0:t.attributeOldValue?l(s):o});break;case\"DOMCharacterDataModified\":var i=t.target,o=c(\"characterData\",i),s=t.prevValue;r(i,function(t){return t.characterData?t.characterDataOldValue?l(s):o:void 0});break;case\"DOMNodeRemoved\":this.addTransientObserver(t.target);case\"DOMNodeInserted\":var a,u,p=t.target;\"DOMNodeInserted\"===t.type?(a=[p],u=[]):(a=[],u=[p]);var d=p.previousSibling,f=p.nextSibling,o=c(\"childList\",t.target.parentNode);o.addedNodes=a,o.removedNodes=u,o.previousSibling=d,o.nextSibling=f,r(t.relatedNode,function(t){return t.childList?o:void 0})}h()}},t.JsMutationObserver=s,t.MutationObserver||(t.MutationObserver=s,s._isPolyfilled=!0)}}(self),function(){\"use strict\";if(!window.performance||!window.performance.now){var t=Date.now();window.performance={now:function(){return Date.now()-t}}}window.requestAnimationFrame||(window.requestAnimationFrame=function(){var t=window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame;return t?function(e){return t(function(){e(performance.now())})}:function(t){return window.setTimeout(t,1e3/60)}}()),window.cancelAnimationFrame||(window.cancelAnimationFrame=function(){return window.webkitCancelAnimationFrame||window.mozCancelAnimationFrame||function(t){clearTimeout(t)}}());var e=function(){var t=document.createEvent(\"Event\");return t.initEvent(\"foo\",!0,!0),t.preventDefault(),t.defaultPrevented}();if(!e){var n=Event.prototype.preventDefault;Event.prototype.preventDefault=function(){this.cancelable&&(n.call(this),Object.defineProperty(this,\"defaultPrevented\",{get:function(){return!0},configurable:!0}))}}var i=/Trident/.test(navigator.userAgent);if((!window.CustomEvent||i&&\"function\"!=typeof window.CustomEvent)&&(window.CustomEvent=function(t,e){e=e||{};var n=document.createEvent(\"CustomEvent\");return n.initCustomEvent(t,Boolean(e.bubbles),Boolean(e.cancelable),e.detail),n},window.CustomEvent.prototype=window.Event.prototype),!window.Event||i&&\"function\"!=typeof window.Event){var o=window.Event;window.Event=function(t,e){e=e||{};var n=document.createEvent(\"Event\");return n.initEvent(t,Boolean(e.bubbles),Boolean(e.cancelable)),n},window.Event.prototype=o.prototype}}(window.WebComponents),window.CustomElements=window.CustomElements||{flags:{}},function(t){var e=t.flags,n=[],i=function(t){n.push(t)},o=function(){n.forEach(function(e){e(t)})};t.addModule=i,t.initializeModules=o,t.hasNative=Boolean(document.registerElement),t.isIE=/Trident/.test(navigator.userAgent),t.useNative=!e.register&&t.hasNative&&!window.ShadowDOMPolyfill&&(!window.HTMLImports||window.HTMLImports.useNative)}(window.CustomElements),window.CustomElements.addModule(function(t){function e(t,e){n(t,function(t){return e(t)?!0:void i(t,e)}),i(t,e)}function n(t,e,i){var o=t.firstElementChild;if(!o)for(o=t.firstChild;o&&o.nodeType!==Node.ELEMENT_NODE;)o=o.nextSibling;for(;o;)e(o,i)!==!0&&n(o,e,i),o=o.nextElementSibling;return null}function i(t,n){for(var i=t.shadowRoot;i;)e(i,n),i=i.olderShadowRoot}function o(t,e){r(t,e,[])}function r(t,e,n){if(t=window.wrap(t),!(n.indexOf(t)>=0)){n.push(t);for(var i,o=t.querySelectorAll(\"link[rel=\"+s+\"]\"),a=0,u=o.length;u>a&&(i=o[a]);a++)i.import&&r(i.import,e,n);e(t)}}var s=window.HTMLImports?window.HTMLImports.IMPORT_LINK_TYPE:\"none\";t.forDocumentTree=o,t.forSubtree=e}),window.CustomElements.addModule(function(t){function e(t,e){return n(t,e)||i(t,e)}function n(e,n){return t.upgrade(e,n)?!0:void(n&&s(e))}function i(t,e){b(t,function(t){return n(t,e)?!0:void 0})}function o(t){w.push(t),x||(x=!0,setTimeout(r))}function r(){x=!1;for(var t,e=w,n=0,i=e.length;i>n&&(t=e[n]);n++)t();w=[]}function s(t){C?o(function(){a(t)}):a(t)}function a(t){t.__upgraded__&&!t.__attached&&(t.__attached=!0,t.attachedCallback&&t.attachedCallback())}function u(t){c(t),b(t,function(t){c(t)})}function c(t){C?o(function(){l(t)}):l(t)}function l(t){t.__upgraded__&&t.__attached&&(t.__attached=!1,t.detachedCallback&&t.detachedCallback())}function h(t){for(var e=t,n=window.wrap(document);e;){if(e==n)return!0;e=e.parentNode||e.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&e.host}}function p(t){if(t.shadowRoot&&!t.shadowRoot.__watched){y.dom&&console.log(\"watching shadow-root for: \",t.localName);for(var e=t.shadowRoot;e;)g(e),e=e.olderShadowRoot}}function d(t,n){if(y.dom){var i=n[0];if(i&&\"childList\"===i.type&&i.addedNodes&&i.addedNodes){for(var o=i.addedNodes[0];o&&o!==document&&!o.host;)o=o.parentNode;var r=o&&(o.URL||o._URL||o.host&&o.host.localName)||\"\";r=r.split(\"/?\").shift().split(\"/\").pop()}console.group(\"mutations (%d) [%s]\",n.length,r||\"\")}var s=h(t);n.forEach(function(t){\"childList\"===t.type&&(E(t.addedNodes,function(t){t.localName&&e(t,s)}),E(t.removedNodes,function(t){t.localName&&u(t)}))}),y.dom&&console.groupEnd()}function f(t){for(t=window.wrap(t),t||(t=window.wrap(document));t.parentNode;)t=t.parentNode;var e=t.__observer;e&&(d(t,e.takeRecords()),r())}function g(t){if(!t.__observer){var e=new MutationObserver(d.bind(this,t));e.observe(t,{childList:!0,subtree:!0}),t.__observer=e}}function m(t){t=window.wrap(t),y.dom&&console.group(\"upgradeDocument: \",t.baseURI.split(\"/\").pop());var n=t===window.wrap(document);e(t,n),g(t),y.dom&&console.groupEnd()}function v(t){A(t,m)}var y=t.flags,b=t.forSubtree,A=t.forDocumentTree,C=window.MutationObserver._isPolyfilled&&y[\"throttle-attached\"];t.hasPolyfillMutations=C,t.hasThrottledAttached=C;var x=!1,w=[],E=Array.prototype.forEach.call.bind(Array.prototype.forEach),S=Element.prototype.createShadowRoot;S&&(Element.prototype.createShadowRoot=function(){var t=S.call(this);return window.CustomElements.watchShadow(this),t}),t.watchShadow=p,t.upgradeDocumentTree=v,t.upgradeDocument=m,t.upgradeSubtree=i,t.upgradeAll=e,t.attached=s,t.takeRecords=f}),window.CustomElements.addModule(function(t){function e(e,i){if(\"template\"===e.localName&&window.HTMLTemplateElement&&HTMLTemplateElement.decorate&&HTMLTemplateElement.decorate(e),!e.__upgraded__&&e.nodeType===Node.ELEMENT_NODE){var o=e.getAttribute(\"is\"),r=t.getRegisteredDefinition(e.localName)||t.getRegisteredDefinition(o);if(r&&(o&&r.tag==e.localName||!o&&!r.extends))return n(e,r,i)}}function n(e,n,o){return s.upgrade&&console.group(\"upgrade:\",e.localName),n.is&&e.setAttribute(\"is\",n.is),i(e,n),e.__upgraded__=!0,r(e),o&&t.attached(e),t.upgradeSubtree(e,o),s.upgrade&&console.groupEnd(),e}function i(t,e){Object.__proto__?t.__proto__=e.prototype:(o(t,e.prototype,e.native),t.__proto__=e.prototype)}function o(t,e,n){for(var i={},o=e;o!==n&&o!==HTMLElement.prototype;){for(var r,s=Object.getOwnPropertyNames(o),a=0;r=s[a];a++)i[r]||(Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(o,r)),i[r]=1);o=Object.getPrototypeOf(o)}}function r(t){t.createdCallback&&t.createdCallback()}var s=t.flags;t.upgrade=e,t.upgradeWithDefinition=n,t.implementPrototype=i}),window.CustomElements.addModule(function(t){function e(e,i){var u=i||{};if(!e)throw new Error(\"document.registerElement: first argument `name` must not be empty\");if(e.indexOf(\"-\")<0)throw new Error(\"document.registerElement: first argument ('name') must contain a dash ('-'). Argument provided was '\"+String(e)+\"'.\");if(o(e))throw new Error(\"Failed to execute 'registerElement' on 'Document': Registration failed for type '\"+String(e)+\"'. The type name is invalid.\");if(c(e))throw new Error(\"DuplicateDefinitionError: a type with name '\"+String(e)+\"' is already registered\");return u.prototype||(u.prototype=Object.create(HTMLElement.prototype)),u.__name=e.toLowerCase(),u.extends&&(u.extends=u.extends.toLowerCase()),u.lifecycle=u.lifecycle||{},u.ancestry=r(u.extends),s(u),a(u),n(u.prototype),l(u.__name,u),u.ctor=h(u),u.ctor.prototype=u.prototype,u.prototype.constructor=u.ctor,t.ready&&m(document),u.ctor}function n(t){if(!t.setAttribute._polyfilled){var e=t.setAttribute;t.setAttribute=function(t,n){i.call(this,t,n,e)};var n=t.removeAttribute;t.removeAttribute=function(t){i.call(this,t,null,n)},t.setAttribute._polyfilled=!0}}function i(t,e,n){t=t.toLowerCase();var i=this.getAttribute(t);n.apply(this,arguments);var o=this.getAttribute(t);this.attributeChangedCallback&&o!==i&&this.attributeChangedCallback(t,i,o)}function o(t){for(var e=0;e<C.length;e++)if(t===C[e])return!0}function r(t){var e=c(t);return e?r(e.extends).concat([e]):[]}function s(t){for(var e,n=t.extends,i=0;e=t.ancestry[i];i++)n=e.is&&e.tag;t.tag=n||t.__name,n&&(t.is=t.__name)}function a(t){if(!Object.__proto__){var e=HTMLElement.prototype;if(t.is){var n=document.createElement(t.tag);e=Object.getPrototypeOf(n)}for(var i,o=t.prototype,r=!1;o;)o==e&&(r=!0),i=Object.getPrototypeOf(o),i&&(o.__proto__=i),o=i;r||console.warn(t.tag+\" prototype not found in prototype chain for \"+t.is),t.native=e}}function u(t){return y(E(t.tag),t)}function c(t){return t?x[t.toLowerCase()]:void 0}function l(t,e){x[t]=e}function h(t){return function(){return u(t)}}function p(t,e,n){return t===w?d(e,n):S(t,e)}function d(t,e){t&&(t=t.toLowerCase()),e&&(e=e.toLowerCase());var n=c(e||t);if(n){if(t==n.tag&&e==n.is)return new n.ctor;if(!e&&!n.is)return new n.ctor}var i;return e?(i=d(t),i.setAttribute(\"is\",e),i):(i=E(t),t.indexOf(\"-\")>=0&&b(i,HTMLElement),i)}function f(t,e){var n=t[e];t[e]=function(){var t=n.apply(this,arguments);return v(t),t}}var g,m=(t.isIE,t.upgradeDocumentTree),v=t.upgradeAll,y=t.upgradeWithDefinition,b=t.implementPrototype,A=t.useNative,C=[\"annotation-xml\",\"color-profile\",\"font-face\",\"font-face-src\",\"font-face-uri\",\"font-face-format\",\"font-face-name\",\"missing-glyph\"],x={},w=\"http://www.w3.org/1999/xhtml\",E=document.createElement.bind(document),S=document.createElementNS.bind(document);g=Object.__proto__||A?function(t,e){return t instanceof e}:function(t,e){if(t instanceof e)return!0;for(var n=t;n;){if(n===e.prototype)return!0;n=n.__proto__}return!1},f(Node.prototype,\"cloneNode\"),f(document,\"importNode\"),document.registerElement=e,document.createElement=d,document.createElementNS=p,t.registry=x,t.instanceof=g,t.reservedTagList=C,t.getRegisteredDefinition=c,document.register=document.registerElement}),function(t){function e(){r(window.wrap(document)),window.CustomElements.ready=!0;var t=window.requestAnimationFrame||function(t){setTimeout(t,16)};t(function(){setTimeout(function(){window.CustomElements.readyTime=Date.now(),window.HTMLImports&&(window.CustomElements.elapsed=window.CustomElements.readyTime-window.HTMLImports.readyTime),document.dispatchEvent(new CustomEvent(\"WebComponentsReady\",{bubbles:!0}))})})}var n=t.useNative,i=t.initializeModules;if(t.isIE,n){var o=function(){};t.watchShadow=o,t.upgrade=o,t.upgradeAll=o,t.upgradeDocumentTree=o,t.upgradeSubtree=o,t.takeRecords=o,t.instanceof=function(t,e){return t instanceof e}}else i();var r=t.upgradeDocumentTree,s=t.upgradeDocument;if(window.wrap||(window.ShadowDOMPolyfill?(window.wrap=window.ShadowDOMPolyfill.wrapIfNeeded,window.unwrap=window.ShadowDOMPolyfill.unwrapIfNeeded):window.wrap=window.unwrap=function(t){return t}),window.HTMLImports&&(window.HTMLImports.__importsParsingHook=function(t){t.import&&s(wrap(t.import))}),\"complete\"===document.readyState||t.flags.eager)e();else if(\"interactive\"!==document.readyState||window.attachEvent||window.HTMLImports&&!window.HTMLImports.ready){var a=window.HTMLImports&&!window.HTMLImports.ready?\"HTMLImportsLoaded\":\"DOMContentLoaded\";window.addEventListener(a,e)}else e()}(window.CustomElements))}.call(this),function(){}.call(this),function(){var t=this;(function(){(function(){this.Trix={VERSION:\"1.3.5\",ZERO_WIDTH_SPACE:\"\\ufeff\",NON_BREAKING_SPACE:\"\\xa0\",OBJECT_REPLACEMENT_CHARACTER:\"\\ufffc\",browser:{composesExistingText:/Android.*Chrome/.test(navigator.userAgent),forcesObjectResizing:/Trident.*rv:11/.test(navigator.userAgent),supportsInputEvents:function(){var t,e,n,i;if(\"undefined\"==typeof InputEvent)return!1;for(i=[\"data\",\"getTargetRanges\",\"inputType\"],t=0,e=i.length;e>t;t++)if(n=i[t],!(n in InputEvent.prototype))return!1;return!0}()},config:{}}}).call(this)}).call(t);var e=t.Trix;(function(){(function(){e.BasicObject=function(){function t(){}var e,n,i;return t.proxyMethod=function(t){var i,o,r,s,a;return r=n(t),i=r.name,s=r.toMethod,a=r.toProperty,o=r.optional,this.prototype[i]=function(){var t,n;return t=null!=s?o?\"function\"==typeof this[s]?this[s]():void 0:this[s]():null!=a?this[a]:void 0,o?(n=null!=t?t[i]:void 0,null!=n?e.call(n,t,arguments):void 0):(n=t[i],e.call(n,t,arguments))}},n=function(t){var e,n;if(!(n=t.match(i)))throw new Error(\"can't parse @proxyMethod expression: \"+t);return e={name:n[4]},null!=n[2]?e.toMethod=n[1]:e.toProperty=n[1],null!=n[3]&&(e.optional=!0),e},e=Function.prototype.apply,i=/^(.+?)(\\(\\))?(\\?)?\\.(.+?)$/,t}()}).call(this),function(){var t=function(t,e){function i(){this.constructor=t}for(var o in e)n.call(e,o)&&(t[o]=e[o]);return i.prototype=e.prototype,t.prototype=new i,t.__super__=e.prototype,t},n={}.hasOwnProperty;e.Object=function(n){function i(){this.id=++o}var o;return t(i,n),o=0,i.fromJSONString=function(t){return this.fromJSON(JSON.parse(t))},i.prototype.hasSameConstructorAs=function(t){return this.constructor===(null!=t?t.constructor:void 0)},i.prototype.isEqualTo=function(t){return this===t},i.prototype.inspect=function(){var t,e,n;return t=function(){var t,i,o;i=null!=(t=this.contentsForInspection())?t:{},o=[];for(e in i)n=i[e],o.push(e+\"=\"+n);return o}.call(this),\"#<\"+this.constructor.name+\":\"+this.id+(t.length?\" \"+t.join(\", \"):\"\")+\">\"},i.prototype.contentsForInspection=function(){},i.prototype.toJSONString=function(){return JSON.stringify(this)},i.prototype.toUTF16String=function(){return e.UTF16String.box(this)},i.prototype.getCacheKey=function(){return this.id.toString()},i}(e.BasicObject)}.call(this),function(){e.extend=function(t){var e,n;for(e in t)n=t[e],this[e]=n;return this}}.call(this),function(){e.extend({defer:function(t){return setTimeout(t,1)}})}.call(this),function(){var t,n;e.extend({normalizeSpaces:function(t){return t.replace(RegExp(\"\"+e.ZERO_WIDTH_SPACE,\"g\"),\"\").replace(RegExp(\"\"+e.NON_BREAKING_SPACE,\"g\"),\" \")},normalizeNewlines:function(t){return t.replace(/\\r\\n/g,\"\\n\")},breakableWhitespacePattern:RegExp(\"[^\\\\S\"+e.NON_BREAKING_SPACE+\"]\"),squishBreakableWhitespace:function(t){return t.replace(RegExp(\"\"+e.breakableWhitespacePattern.source,\"g\"),\" \").replace(/\\ {2,}/g,\" \")},summarizeStringChange:function(t,i){var o,r,s,a;return t=e.UTF16String.box(t),i=e.UTF16String.box(i),i.length<t.length?(r=n(t,i),a=r[0],o=r[1]):(s=n(i,t),o=s[0],a=s[1]),{added:o,removed:a}}}),n=function(n,i){var o,r,s,a,u;return n.isEqualTo(i)?[\"\",\"\"]:(r=t(n,i),a=r.utf16String.length,s=a?(u=r.offset,r,o=n.codepoints.slice(0,u).concat(n.codepoints.slice(u+a)),t(i,e.UTF16String.fromCodepoints(o))):t(i,n),[r.utf16String.toString(),s.utf16String.toString()])},t=function(t,e){var n,i,o;for(n=0,i=t.length,o=e.length;i>n&&t.charAt(n).isEqualTo(e.charAt(n));)n++;for(;i>n+1&&t.charAt(i-1).isEqualTo(e.charAt(o-1));)i--,o--;return{utf16String:t.slice(n,i),offset:n}}}.call(this),function(){e.extend({copyObject:function(t){var e,n,i;null==t&&(t={}),n={};for(e in t)i=t[e],n[e]=i;return n},objectsAreEqual:function(t,e){var n,i;if(null==t&&(t={}),null==e&&(e={}),Object.keys(t).length!==Object.keys(e).length)return!1;for(n in t)if(i=t[n],i!==e[n])return!1;return!0}})}.call(this),function(){var t=[].slice;e.extend({arraysAreEqual:function(t,e){var n,i,o,r;if(null==t&&(t=[]),null==e&&(e=[]),t.length!==e.length)return!1;for(i=n=0,o=t.length;o>n;i=++n)if(r=t[i],r!==e[i])return!1;return!0},arrayStartsWith:function(t,n){return null==t&&(t=[]),null==n&&(n=[]),e.arraysAreEqual(t.slice(0,n.length),n)},spliceArray:function(){var e,n,i;return n=arguments[0],e=2<=arguments.length?t.call(arguments,1):[],i=n.slice(0),i.splice.apply(i,e),i},summarizeArrayChange:function(t,e){var n,i,o,r,s,a,u,c,l,h,p;for(null==t&&(t=[]),null==e&&(e=[]),n=[],h=[],o=new Set,r=0,u=t.length;u>r;r++)p=t[r],o.add(p);for(i=new Set,s=0,c=e.length;c>s;s++)p=e[s],i.add(p),o.has(p)||n.push(p);for(a=0,l=t.length;l>a;a++)p=t[a],i.has(p)||h.push(p);return{added:n,removed:h}}})}.call(this),function(){var t,n,i,o;t=null,n=null,o=null,i=null,e.extend({getAllAttributeNames:function(){return null!=t?t:t=e.getTextAttributeNames().concat(e.getBlockAttributeNames())},getBlockConfig:function(t){return e.config.blockAttributes[t]},getBlockAttributeNames:function(){return null!=n?n:n=Object.keys(e.config.blockAttributes)},getTextConfig:function(t){return e.config.textAttributes[t]},getTextAttributeNames:function(){return null!=o?o:o=Object.keys(e.config.textAttributes)},getListAttributeNames:function(){var t,n;return null!=i?i:i=function(){var i,o;i=e.config.blockAttributes,o=[];for(t in i)n=i[t].listAttribute,null!=n&&o.push(n);return o}()}})}.call(this),function(){var t,n,i,o,r,s=[].indexOf||function(t){for(var e=0,n=this.length;n>e;e++)if(e in this&&this[e]===t)return e;return-1};t=document.documentElement,n=null!=(i=null!=(o=null!=(r=t.matchesSelector)?r:t.webkitMatchesSelector)?o:t.msMatchesSelector)?i:t.mozMatchesSelector,e.extend({handleEvent:function(n,i){var o,r,s,a,u,c,l,h,p,d,f,g;return h=null!=i?i:{},c=h.onElement,u=h.matchingSelector,g=h.withCallback,a=h.inPhase,l=h.preventDefault,d=h.times,r=null!=c?c:t,p=u,o=g,f=\"capturing\"===a,s=function(t){var n;return null!=d&&0===--d&&s.destroy(),n=e.findClosestElementFromNode(t.target,{matchingSelector:p}),null!=n&&(null!=g&&g.call(n,t,n),l)?t.preventDefault():void 0},s.destroy=function(){return r.removeEventListener(n,s,f)},r.addEventListener(n,s,f),s},handleEventOnce:function(t,n){return null==n&&(n={}),n.times=1,e.handleEvent(t,n)},triggerEvent:function(n,i){var o,r,s,a,u,c,l;return l=null!=i?i:{},c=l.onElement,r=l.bubbles,s=l.cancelable,o=l.attributes,a=null!=c?c:t,r=r!==!1,s=s!==!1,u=document.createEvent(\"Events\"),u.initEvent(n,r,s),null!=o&&e.extend.call(u,o),a.dispatchEvent(u)},elementMatchesSelector:function(t,e){return 1===(null!=t?t.nodeType:void 0)?n.call(t,e):void 0},findClosestElementFromNode:function(t,n){var i,o,r;for(o=null!=n?n:{},i=o.matchingSelector,r=o.untilNode;null!=t&&t.nodeType!==Node.ELEMENT_NODE;)t=t.parentNode;if(null!=t){if(null==i)return t;if(t.closest&&null==r)return t.closest(i);for(;t&&t!==r;){if(e.elementMatchesSelector(t,i))return t;t=t.parentNode}}},findInnerElement:function(t){for(;null!=t?t.firstElementChild:void 0;)t=t.firstElementChild;return t},innerElementIsActive:function(t){return document.activeElement!==t&&e.elementContainsNode(t,document.activeElement)},elementContainsNode:function(t,e){if(t&&e)for(;e;){if(e===t)return!0;e=e.parentNode}},findNodeFromContainerAndOffset:function(t,e){var n;if(t)return t.nodeType===Node.TEXT_NODE?t:0===e?null!=(n=t.firstChild)?n:t:t.childNodes.item(e-1)},findElementFromContainerAndOffset:function(t,n){var i;return i=e.findNodeFromContainerAndOffset(t,n),e.findClosestElementFromNode(i)},findChildIndexOfNode:function(t){var e;if(null!=t?t.parentNode:void 0){for(e=0;t=t.previousSibling;)e++;return e}},removeNode:function(t){var e;return null!=t&&null!=(e=t.parentNode)?e.removeChild(t):void 0},walkTree:function(t,e){var n,i,o,r,s;return o=null!=e?e:{},i=o.onlyNodesOfType,r=o.usingFilter,n=o.expandEntityReferences,s=function(){switch(i){case\"element\":return NodeFilter.SHOW_ELEMENT;case\"text\":return NodeFilter.SHOW_TEXT;case\"comment\":return NodeFilter.SHOW_COMMENT;default:return NodeFilter.SHOW_ALL}}(),document.createTreeWalker(t,s,null!=r?r:null,n===!0)},tagName:function(t){var e;return null!=t&&null!=(e=t.tagName)?e.toLowerCase():void 0},makeElement:function(t,e){var n,i,o,r,s,a,u,c,l,h,p,d,f,g;if(null==e&&(e={}),\"object\"==typeof t?(e=t,t=e.tagName):e={attributes:e},o=document.createElement(t),null!=e.editable&&(null==e.attributes&&(e.attributes={}),e.attributes.contenteditable=e.editable),e.attributes){l=e.attributes;for(a in l)g=l[a],o.setAttribute(a,g)}if(e.style){h=e.style;for(a in h)g=h[a],o.style[a]=g}if(e.data){p=e.data;for(a in p)g=p[a],o.dataset[a]=g}if(e.className)for(d=e.className.split(\" \"),r=0,u=d.length;u>r;r++)i=d[r],o.classList.add(i);if(e.textContent&&(o.textContent=e.textContent),e.childNodes)for(f=[].concat(e.childNodes),s=0,c=f.length;c>s;s++)n=f[s],o.appendChild(n);return o},getBlockTagNames:function(){var t,n;return null!=e.blockTagNames?e.blockTagNames:e.blockTagNames=function(){var i,o;i=e.config.blockAttributes,o=[];for(t in i)n=i[t].tagName,n&&o.push(n);return o}()},nodeIsBlockContainer:function(t){return e.nodeIsBlockStartComment(null!=t?t.firstChild:void 0)},nodeProbablyIsBlockContainer:function(t){var n,i;return n=e.tagName(t),s.call(e.getBlockTagNames(),n)>=0&&(i=e.tagName(t.firstChild),s.call(e.getBlockTagNames(),i)<0)},nodeIsBlockStart:function(t,n){var i;return i=(null!=n?n:{strict:!0}).strict,i?e.nodeIsBlockStartComment(t):e.nodeIsBlockStartComment(t)||!e.nodeIsBlockStartComment(t.firstChild)&&e.nodeProbablyIsBlockContainer(t)},nodeIsBlockStartComment:function(t){return e.nodeIsCommentNode(t)&&\"block\"===(null!=t?t.data:void 0)},nodeIsCommentNode:function(t){return(null!=t?t.nodeType:void 0)===Node.COMMENT_NODE},nodeIsCursorTarget:function(t,n){var i;return i=(null!=n?n:{}).name,t?e.nodeIsTextNode(t)?t.data===e.ZERO_WIDTH_SPACE?i?t.parentNode.dataset.trixCursorTarget===i:!0:void 0:e.nodeIsCursorTarget(t.firstChild):void 0},nodeIsAttachmentElement:function(t){return e.elementMatchesSelector(t,e.AttachmentView.attachmentSelector)},nodeIsEmptyTextNode:function(t){return e.nodeIsTextNode(t)&&\"\"===(null!=t?t.data:void 0)},nodeIsTextNode:function(t){return(null!=t?t.nodeType:void 0)===Node.TEXT_NODE}})}.call(this),function(){var t,n,i,o,r;t=e.copyObject,o=e.objectsAreEqual,e.extend({normalizeRange:i=function(t){var e;if(null!=t)return Array.isArray(t)||(t=[t,t]),[n(t[0]),n(null!=(e=t[1])?e:t[0])]},rangeIsCollapsed:function(t){var e,n,o;if(null!=t)return n=i(t),o=n[0],e=n[1],r(o,e)},rangesAreEqual:function(t,e){var n,o,s,a,u,c;if(null!=t&&null!=e)return s=i(t),o=s[0],n=s[1],a=i(e),c=a[0],u=a[1],r(o,c)&&r(n,u)}}),n=function(e){return\"number\"==typeof e?e:t(e)},r=function(t,e){return\"number\"==typeof t?t===e:o(t,e)}}.call(this),function(){var t,n,i,o,r,s,a;e.registerElement=function(t,e){var n,i;return null==e&&(e={}),t=t.toLowerCase(),e=a(e),i=s(e),(n=i.defaultCSS)&&(delete i.defaultCSS,o(n,t)),r(t,i)},o=function(t,e){var n;return n=i(e),n.textContent=t.replace(/%t/g,e)},i=function(e){var n,i;return n=document.createElement(\"style\"),n.setAttribute(\"type\",\"text/css\"),n.setAttribute(\"data-tag-name\",e.toLowerCase()),(i=t())&&n.setAttribute(\"nonce\",i),document.head.insertBefore(n,document.head.firstChild),n},t=function(){var t;return(t=n(\"trix-csp-nonce\")||n(\"csp-nonce\"))?t.getAttribute(\"content\"):void 0},n=function(t){return document.head.querySelector(\"meta[name=\"+t+\"]\")},s=function(t){var e,n,i;n={};for(e in t)i=t[e],n[e]=\"function\"==typeof i?{value:i}:i;return n},a=function(){var t;return t=function(t){var e,n,i,o,r;for(e={},r=[\"initialize\",\"connect\",\"disconnect\"],n=0,o=r.length;o>n;n++)i=r[n],e[i]=t[i],delete t[i];return e},window.customElements?function(e){var n,i,o,r,s;return s=t(e),o=s.initialize,n=s.connect,i=s.disconnect,o&&(r=n,n=function(){return this.initialized||(this.initialized=!0,o.call(this)),null!=r?r.call(this):void 0}),n&&(e.connectedCallback=n),i&&(e.disconnectedCallback=i),e}:function(e){var n,i,o,r;return r=t(e),o=r.initialize,n=r.connect,i=r.disconnect,o&&(e.createdCallback=o),n&&(e.attachedCallback=n),i&&(e.detachedCallback=i),e}}(),r=function(){return window.customElements?function(t,e){var n;return n=function(){return\"object\"==typeof Reflect?Reflect.construct(HTMLElement,[],n):HTMLElement.apply(this)},Object.setPrototypeOf(n.prototype,HTMLElement.prototype),Object.setPrototypeOf(n,HTMLElement),Object.defineProperties(n.prototype,e),window.customElements.define(t,n),n}:function(t,e){var n,i;return i=Object.create(HTMLElement.prototype,e),n=document.registerElement(t,{prototype:i}),Object.defineProperty(i,\"constructor\",{value:n}),n}}()}.call(this),function(){var t,n;e.extend({getDOMSelection:function(){var t;return t=window.getSelection(),t.rangeCount>0?t:void 0},getDOMRange:function(){var n,i;return(n=null!=(i=e.getDOMSelection())?i.getRangeAt(0):void 0)&&!t(n)?n:void 0},setDOMRange:function(t){var n;return n=window.getSelection(),n.removeAllRanges(),n.addRange(t),e.selectionChangeObserver.update()}}),t=function(t){return n(t.startContainer)||n(t.endContainer)},n=function(t){return!Object.getPrototypeOf(t)}}.call(this),function(){var t;t={\"application/x-trix-feature-detection\":\"test\"},e.extend({dataTransferIsPlainText:function(t){var e,n,i;return i=t.getData(\"text/plain\"),n=t.getData(\"text/html\"),i&&n?(e=(new DOMParser).parseFromString(n,\"text/html\").body,e.textContent===i?!e.querySelector(\"*\"):void 0):null!=i?i.length:void 0},dataTransferIsWritable:function(e){var n,i;if(null!=(null!=e?e.setData:void 0)){for(n in t)if(i=t[n],!function(){try{return e.setData(n,i),e.getData(n)===i}catch(t){}}())return;return!0}},keyEventIsKeyboardCommand:function(){return/Mac|^iP/.test(navigator.platform)?function(t){return t.metaKey}:function(t){return t.ctrlKey}}()})}.call(this),function(){e.extend({RTL_PATTERN:/[\\u05BE\\u05C0\\u05C3\\u05D0-\\u05EA\\u05F0-\\u05F4\\u061B\\u061F\\u0621-\\u063A\\u0640-\\u064A\\u066D\\u0671-\\u06B7\\u06BA-\\u06BE\\u06C0-\\u06CE\\u06D0-\\u06D5\\u06E5\\u06E6\\u200F\\u202B\\u202E\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE72\\uFE74\\uFE76-\\uFEFC]/,getDirection:function(){var t,n,i,o;return n=e.makeElement(\"input\",{dir:\"auto\",name:\"x\",dirName:\"x.dir\"}),t=e.makeElement(\"form\"),t.appendChild(n),i=function(){try{return new FormData(t).has(n.dirName)}catch(e){}}(),o=function(){try{return n.matches(\":dir(ltr),:dir(rtl)\")}catch(t){}}(),i?function(e){return n.value=e,new FormData(t).get(n.dirName)}:o?function(t){return n.value=t,n.matches(\":dir(rtl)\")?\"rtl\":\"ltr\"}:function(t){var n;return n=t.trim().charAt(0),e.RTL_PATTERN.test(n)?\"rtl\":\"ltr\"}}()})}.call(this),function(){}.call(this),function(){var t,n=function(t,e){function n(){this.constructor=t}for(var o in e)i.call(e,o)&&(t[o]=e[o]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},i={}.hasOwnProperty;t=e.arraysAreEqual,e.Hash=function(i){function o(t){null==t&&(t={}),this.values=s(t),o.__super__.constructor.apply(this,arguments)}var r,s,a,u,c;return n(o,i),o.fromCommonAttributesOfObjects=function(t){var e,n,i,o,s,a;if(null==t&&(t=[]),!t.length)return new this;for(e=r(t[0]),i=e.getKeys(),a=t.slice(1),n=0,o=a.length;o>n;n++)s=a[n],i=e.getKeysCommonToHash(r(s)),e=e.slice(i);return e},o.box=function(t){return r(t)},o.prototype.add=function(t,e){return this.merge(u(t,e))},o.prototype.remove=function(t){return new e.Hash(s(this.values,t))},o.prototype.get=function(t){return this.values[t]},o.prototype.has=function(t){return t in this.values},o.prototype.merge=function(t){return new e.Hash(a(this.values,c(t)))},o.prototype.slice=function(t){var n,i,o,r;for(r={},n=0,o=t.length;o>n;n++)i=t[n],this.has(i)&&(r[i]=this.values[i]);return new e.Hash(r)},o.prototype.getKeys=function(){return Object.keys(this.values)},o.prototype.getKeysCommonToHash=function(t){var e,n,i,o,s;for(t=r(t),o=this.getKeys(),s=[],e=0,i=o.length;i>e;e++)n=o[e],this.values[n]===t.values[n]&&s.push(n);return s},o.prototype.isEqualTo=function(e){return t(this.toArray(),r(e).toArray())},o.prototype.isEmpty=function(){return 0===this.getKeys().length},o.prototype.toArray=function(){var t,e,n;return(null!=this.array?this.array:this.array=function(){var i;e=[],i=this.values;for(t in i)n=i[t],e.push(t,n);return e}.call(this)).slice(0)},o.prototype.toObject=function(){return s(this.values)},o.prototype.toJSON=function(){return this.toObject()},o.prototype.contentsForInspection=function(){return{values:JSON.stringify(this.values)}},u=function(t,e){var n;return n={},n[t]=e,n},a=function(t,e){var n,i,o;i=s(t);for(n in e)o=e[n],i[n]=o;return i},s=function(t,e){var n,i,o,r,s;for(r={},s=Object.keys(t).sort(),n=0,o=s.length;o>n;n++)i=s[n],i!==e&&(r[i]=t[i]);return r},r=function(t){return t instanceof e.Hash?t:new e.Hash(t)},c=function(t){return t instanceof e.Hash?t.values:t\n},o}(e.Object)}.call(this),function(){e.ObjectGroup=function(){function t(t,e){var n,i;this.objects=null!=t?t:[],i=e.depth,n=e.asTree,n&&(this.depth=i,this.objects=this.constructor.groupObjects(this.objects,{asTree:n,depth:this.depth+1}))}return t.groupObjects=function(t,e){var n,i,o,r,s,a,u,c,l;for(null==t&&(t=[]),l=null!=e?e:{},o=l.depth,n=l.asTree,n&&null==o&&(o=0),c=[],s=0,a=t.length;a>s;s++){if(u=t[s],r){if((\"function\"==typeof u.canBeGrouped?u.canBeGrouped(o):void 0)&&(\"function\"==typeof(i=r[r.length-1]).canBeGroupedWith?i.canBeGroupedWith(u,o):void 0)){r.push(u);continue}c.push(new this(r,{depth:o,asTree:n})),r=null}(\"function\"==typeof u.canBeGrouped?u.canBeGrouped(o):void 0)?r=[u]:c.push(u)}return r&&c.push(new this(r,{depth:o,asTree:n})),c},t.prototype.getObjects=function(){return this.objects},t.prototype.getDepth=function(){return this.depth},t.prototype.getCacheKey=function(){var t,e,n,i,o;for(e=[\"objectGroup\"],o=this.getObjects(),t=0,n=o.length;n>t;t++)i=o[t],e.push(i.getCacheKey());return e.join(\"/\")},t}()}.call(this),function(){var t=function(t,e){function i(){this.constructor=t}for(var o in e)n.call(e,o)&&(t[o]=e[o]);return i.prototype=e.prototype,t.prototype=new i,t.__super__=e.prototype,t},n={}.hasOwnProperty;e.ObjectMap=function(e){function n(t){var e,n,i,o,r;for(null==t&&(t=[]),this.objects={},i=0,o=t.length;o>i;i++)r=t[i],n=JSON.stringify(r),null==(e=this.objects)[n]&&(e[n]=r)}return t(n,e),n.prototype.find=function(t){var e;return e=JSON.stringify(t),this.objects[e]},n}(e.BasicObject)}.call(this),function(){e.ElementStore=function(){function t(t){this.reset(t)}var e;return t.prototype.add=function(t){var n;return n=e(t),this.elements[n]=t},t.prototype.remove=function(t){var n,i;return n=e(t),(i=this.elements[n])?(delete this.elements[n],i):void 0},t.prototype.reset=function(t){var e,n,i;for(null==t&&(t=[]),this.elements={},n=0,i=t.length;i>n;n++)e=t[n],this.add(e);return t},e=function(t){return t.dataset.trixStoreKey},t}()}.call(this),function(){}.call(this),function(){var t=function(t,e){function i(){this.constructor=t}for(var o in e)n.call(e,o)&&(t[o]=e[o]);return i.prototype=e.prototype,t.prototype=new i,t.__super__=e.prototype,t},n={}.hasOwnProperty;e.Operation=function(e){function n(){return n.__super__.constructor.apply(this,arguments)}return t(n,e),n.prototype.isPerforming=function(){return this.performing===!0},n.prototype.hasPerformed=function(){return this.performed===!0},n.prototype.hasSucceeded=function(){return this.performed&&this.succeeded},n.prototype.hasFailed=function(){return this.performed&&!this.succeeded},n.prototype.getPromise=function(){return null!=this.promise?this.promise:this.promise=new Promise(function(t){return function(e,n){return t.performing=!0,t.perform(function(i,o){return t.succeeded=i,t.performing=!1,t.performed=!0,t.succeeded?e(o):n(o)})}}(this))},n.prototype.perform=function(t){return t(!1)},n.prototype.release=function(){var t;return null!=(t=this.promise)&&\"function\"==typeof t.cancel&&t.cancel(),this.promise=null,this.performing=null,this.performed=null,this.succeeded=null},n.proxyMethod(\"getPromise().then\"),n.proxyMethod(\"getPromise().catch\"),n}(e.BasicObject)}.call(this),function(){var t,n,i,o,r,s=function(t,e){function n(){this.constructor=t}for(var i in e)a.call(e,i)&&(t[i]=e[i]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},a={}.hasOwnProperty;e.UTF16String=function(t){function e(t,e){this.ucs2String=t,this.codepoints=e,this.length=this.codepoints.length,this.ucs2Length=this.ucs2String.length}return s(e,t),e.box=function(t){return null==t&&(t=\"\"),t instanceof this?t:this.fromUCS2String(null!=t?t.toString():void 0)},e.fromUCS2String=function(t){return new this(t,o(t))},e.fromCodepoints=function(t){return new this(r(t),t)},e.prototype.offsetToUCS2Offset=function(t){return r(this.codepoints.slice(0,Math.max(0,t))).length},e.prototype.offsetFromUCS2Offset=function(t){return o(this.ucs2String.slice(0,Math.max(0,t))).length},e.prototype.slice=function(){var t;return this.constructor.fromCodepoints((t=this.codepoints).slice.apply(t,arguments))},e.prototype.charAt=function(t){return this.slice(t,t+1)},e.prototype.isEqualTo=function(t){return this.constructor.box(t).ucs2String===this.ucs2String},e.prototype.toJSON=function(){return this.ucs2String},e.prototype.getCacheKey=function(){return this.ucs2String},e.prototype.toString=function(){return this.ucs2String},e}(e.BasicObject),t=1===(\"function\"==typeof Array.from?Array.from(\"\\ud83d\\udc7c\").length:void 0),n=null!=(\"function\"==typeof\" \".codePointAt?\" \".codePointAt(0):void 0),i=\" \\ud83d\\udc7c\"===(\"function\"==typeof String.fromCodePoint?String.fromCodePoint(32,128124):void 0),o=t&&n?function(t){return Array.from(t).map(function(t){return t.codePointAt(0)})}:function(t){var e,n,i,o,r;for(o=[],e=0,i=t.length;i>e;)r=t.charCodeAt(e++),r>=55296&&56319>=r&&i>e&&(n=t.charCodeAt(e++),56320===(64512&n)?r=((1023&r)<<10)+(1023&n)+65536:e--),o.push(r);return o},r=i?function(t){return String.fromCodePoint.apply(String,t)}:function(t){var e,n,i;return e=function(){var e,o,r;for(r=[],e=0,o=t.length;o>e;e++)i=t[e],n=\"\",i>65535&&(i-=65536,n+=String.fromCharCode(i>>>10&1023|55296),i=56320|1023&i),r.push(n+String.fromCharCode(i));return r}(),e.join(\"\")}}.call(this),function(){}.call(this),function(){}.call(this),function(){e.config.lang={attachFiles:\"Attach Files\",bold:\"Bold\",bullets:\"Bullets\",\"byte\":\"Byte\",bytes:\"Bytes\",captionPlaceholder:\"Add a caption\\u2026\",code:\"Code\",heading1:\"Heading\",indent:\"Increase Level\",italic:\"Italic\",link:\"Link\",numbers:\"Numbers\",outdent:\"Decrease Level\",quote:\"Quote\",redo:\"Redo\",remove:\"Remove\",strike:\"Strikethrough\",undo:\"Undo\",unlink:\"Unlink\",url:\"URL\",urlPlaceholder:\"Enter a URL\\u2026\",GB:\"GB\",KB:\"KB\",MB:\"MB\",PB:\"PB\",TB:\"TB\"}}.call(this),function(){e.config.css={attachment:\"attachment\",attachmentCaption:\"attachment__caption\",attachmentCaptionEditor:\"attachment__caption-editor\",attachmentMetadata:\"attachment__metadata\",attachmentMetadataContainer:\"attachment__metadata-container\",attachmentName:\"attachment__name\",attachmentProgress:\"attachment__progress\",attachmentSize:\"attachment__size\",attachmentToolbar:\"attachment__toolbar\",attachmentGallery:\"attachment-gallery\"}}.call(this),function(){var t;e.config.blockAttributes=t={\"default\":{tagName:\"div\",parse:!1},quote:{tagName:\"blockquote\",nestable:!0},heading1:{tagName:\"h1\",terminal:!0,breakOnReturn:!0,group:!1},code:{tagName:\"pre\",terminal:!0,text:{plaintext:!0}},bulletList:{tagName:\"ul\",parse:!1},bullet:{tagName:\"li\",listAttribute:\"bulletList\",group:!1,nestable:!0,test:function(n){return e.tagName(n.parentNode)===t[this.listAttribute].tagName}},numberList:{tagName:\"ol\",parse:!1},number:{tagName:\"li\",listAttribute:\"numberList\",group:!1,nestable:!0,test:function(n){return e.tagName(n.parentNode)===t[this.listAttribute].tagName}},attachmentGallery:{tagName:\"div\",exclusive:!0,terminal:!0,parse:!1,group:!1}}}.call(this),function(){var t,n;t=e.config.lang,n=[t.bytes,t.KB,t.MB,t.GB,t.TB,t.PB],e.config.fileSize={prefix:\"IEC\",precision:2,formatter:function(e){var i,o,r,s,a;switch(e){case 0:return\"0 \"+t.bytes;case 1:return\"1 \"+t.byte;default:return i=function(){switch(this.prefix){case\"SI\":return 1e3;case\"IEC\":return 1024}}.call(this),o=Math.floor(Math.log(e)/Math.log(i)),r=e/Math.pow(i,o),s=r.toFixed(this.precision),a=s.replace(/0*$/,\"\").replace(/\\.$/,\"\"),a+\" \"+n[o]}}}}.call(this),function(){e.config.textAttributes={bold:{tagName:\"strong\",inheritable:!0,parser:function(t){var e;return e=window.getComputedStyle(t),\"bold\"===e.fontWeight||e.fontWeight>=600}},italic:{tagName:\"em\",inheritable:!0,parser:function(t){var e;return e=window.getComputedStyle(t),\"italic\"===e.fontStyle}},href:{groupTagName:\"a\",parser:function(t){var n,i,o;return n=e.AttachmentView.attachmentSelector,o=\"a:not(\"+n+\")\",(i=e.findClosestElementFromNode(t,{matchingSelector:o}))?i.getAttribute(\"href\"):void 0}},strike:{tagName:\"del\",inheritable:!0},frozen:{style:{backgroundColor:\"highlight\"}}}}.call(this),function(){var t,n,i,o,r;r=\"[data-trix-serialize=false]\",o=[\"contenteditable\",\"data-trix-id\",\"data-trix-store-key\",\"data-trix-mutable\",\"data-trix-placeholder\",\"tabindex\"],n=\"data-trix-serialized-attributes\",i=\"[\"+n+\"]\",t=new RegExp(\"<!--block-->\",\"g\"),e.extend({serializers:{\"application/json\":function(t){var n;if(t instanceof e.Document)n=t;else{if(!(t instanceof HTMLElement))throw new Error(\"unserializable object\");n=e.Document.fromHTML(t.innerHTML)}return n.toSerializableDocument().toJSONString()},\"text/html\":function(s){var a,u,c,l,h,p,d,f,g,m,v,y,b,A,C,x,w;if(s instanceof e.Document)l=e.DocumentView.render(s);else{if(!(s instanceof HTMLElement))throw new Error(\"unserializable object\");l=s.cloneNode(!0)}for(A=l.querySelectorAll(r),h=0,g=A.length;g>h;h++)c=A[h],e.removeNode(c);for(p=0,m=o.length;m>p;p++)for(a=o[p],C=l.querySelectorAll(\"[\"+a+\"]\"),d=0,v=C.length;v>d;d++)c=C[d],c.removeAttribute(a);for(x=l.querySelectorAll(i),f=0,y=x.length;y>f;f++){c=x[f];try{u=JSON.parse(c.getAttribute(n)),c.removeAttribute(n);for(b in u)w=u[b],c.setAttribute(b,w)}catch(E){}}return l.innerHTML.replace(t,\"\")}},deserializers:{\"application/json\":function(t){return e.Document.fromJSONString(t)},\"text/html\":function(t){return e.Document.fromHTML(t)}},serializeToContentType:function(t,n){var i;if(i=e.serializers[n])return i(t);throw new Error(\"unknown content type: \"+n)},deserializeFromContentType:function(t,n){var i;if(i=e.deserializers[n])return i(t);throw new Error(\"unknown content type: \"+n)}})}.call(this),function(){var t;t=e.config.lang,e.config.toolbar={getDefaultHTML:function(){return'<div class=\"trix-button-row\">\\n  <span class=\"trix-button-group trix-button-group--text-tools\" data-trix-button-group=\"text-tools\">\\n    <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-bold\" data-trix-attribute=\"bold\" data-trix-key=\"b\" title=\"'+t.bold+'\" tabindex=\"-1\">'+t.bold+'</button>\\n    <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-italic\" data-trix-attribute=\"italic\" data-trix-key=\"i\" title=\"'+t.italic+'\" tabindex=\"-1\">'+t.italic+'</button>\\n    <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-strike\" data-trix-attribute=\"strike\" title=\"'+t.strike+'\" tabindex=\"-1\">'+t.strike+'</button>\\n    <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-link\" data-trix-attribute=\"href\" data-trix-action=\"link\" data-trix-key=\"k\" title=\"'+t.link+'\" tabindex=\"-1\">'+t.link+'</button>\\n  </span>\\n\\n  <span class=\"trix-button-group trix-button-group--block-tools\" data-trix-button-group=\"block-tools\">\\n    <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-heading-1\" data-trix-attribute=\"heading1\" title=\"'+t.heading1+'\" tabindex=\"-1\">'+t.heading1+'</button>\\n    <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-quote\" data-trix-attribute=\"quote\" title=\"'+t.quote+'\" tabindex=\"-1\">'+t.quote+'</button>\\n    <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-code\" data-trix-attribute=\"code\" title=\"'+t.code+'\" tabindex=\"-1\">'+t.code+'</button>\\n    <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-bullet-list\" data-trix-attribute=\"bullet\" title=\"'+t.bullets+'\" tabindex=\"-1\">'+t.bullets+'</button>\\n    <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-number-list\" data-trix-attribute=\"number\" title=\"'+t.numbers+'\" tabindex=\"-1\">'+t.numbers+'</button>\\n    <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-decrease-nesting-level\" data-trix-action=\"decreaseNestingLevel\" title=\"'+t.outdent+'\" tabindex=\"-1\">'+t.outdent+'</button>\\n    <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-increase-nesting-level\" data-trix-action=\"increaseNestingLevel\" title=\"'+t.indent+'\" tabindex=\"-1\">'+t.indent+'</button>\\n  </span>\\n\\n  <span class=\"trix-button-group trix-button-group--file-tools\" data-trix-button-group=\"file-tools\">\\n    <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-attach\" data-trix-action=\"attachFiles\" title=\"'+t.attachFiles+'\" tabindex=\"-1\">'+t.attachFiles+'</button>\\n  </span>\\n\\n  <span class=\"trix-button-group-spacer\"></span>\\n\\n  <span class=\"trix-button-group trix-button-group--history-tools\" data-trix-button-group=\"history-tools\">\\n    <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-undo\" data-trix-action=\"undo\" data-trix-key=\"z\" title=\"'+t.undo+'\" tabindex=\"-1\">'+t.undo+'</button>\\n    <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-redo\" data-trix-action=\"redo\" data-trix-key=\"shift+z\" title=\"'+t.redo+'\" tabindex=\"-1\">'+t.redo+'</button>\\n  </span>\\n</div>\\n\\n<div class=\"trix-dialogs\" data-trix-dialogs>\\n  <div class=\"trix-dialog trix-dialog--link\" data-trix-dialog=\"href\" data-trix-dialog-attribute=\"href\">\\n    <div class=\"trix-dialog__link-fields\">\\n      <input type=\"url\" name=\"href\" class=\"trix-input trix-input--dialog\" placeholder=\"'+t.urlPlaceholder+'\" aria-label=\"'+t.url+'\" required data-trix-input>\\n      <div class=\"trix-button-group\">\\n        <input type=\"button\" class=\"trix-button trix-button--dialog\" value=\"'+t.link+'\" data-trix-method=\"setAttribute\">\\n        <input type=\"button\" class=\"trix-button trix-button--dialog\" value=\"'+t.unlink+'\" data-trix-method=\"removeAttribute\">\\n      </div>\\n    </div>\\n  </div>\\n</div>'}}}.call(this),function(){e.config.undoInterval=5e3}.call(this),function(){e.config.attachments={preview:{presentation:\"gallery\",caption:{name:!0,size:!0}},file:{caption:{size:!0}}}}.call(this),function(){e.config.keyNames={8:\"backspace\",9:\"tab\",13:\"return\",27:\"escape\",37:\"left\",39:\"right\",46:\"delete\",68:\"d\",72:\"h\",79:\"o\"}}.call(this),function(){e.config.input={level2Enabled:!0,getLevel:function(){return this.level2Enabled&&e.browser.supportsInputEvents?2:0},pickFiles:function(t){var n;return n=e.makeElement(\"input\",{type:\"file\",multiple:!0,hidden:!0,id:this.fileInputId}),n.addEventListener(\"change\",function(){return t(n.files),e.removeNode(n)}),e.removeNode(document.getElementById(this.fileInputId)),document.body.appendChild(n),n.click()},fileInputId:\"trix-file-input-\"+Date.now().toString(16)}}.call(this),function(){}.call(this),function(){e.registerElement(\"trix-toolbar\",{defaultCSS:\"%t {\\n  display: block;\\n}\\n\\n%t {\\n  white-space: nowrap;\\n}\\n\\n%t [data-trix-dialog] {\\n  display: none;\\n}\\n\\n%t [data-trix-dialog][data-trix-active] {\\n  display: block;\\n}\\n\\n%t [data-trix-dialog] [data-trix-validate]:invalid {\\n  background-color: #ffdddd;\\n}\",initialize:function(){return\"\"===this.innerHTML?this.innerHTML=e.config.toolbar.getDefaultHTML():void 0}})}.call(this),function(){var t=function(t,e){function i(){this.constructor=t}for(var o in e)n.call(e,o)&&(t[o]=e[o]);return i.prototype=e.prototype,t.prototype=new i,t.__super__=e.prototype,t},n={}.hasOwnProperty,i=[].indexOf||function(t){for(var e=0,n=this.length;n>e;e++)if(e in this&&this[e]===t)return e;return-1};e.ObjectView=function(n){function o(t,e){this.object=t,this.options=null!=e?e:{},this.childViews=[],this.rootView=this}return t(o,n),o.prototype.getNodes=function(){var t,e,n,i,o;for(null==this.nodes&&(this.nodes=this.createNodes()),i=this.nodes,o=[],t=0,e=i.length;e>t;t++)n=i[t],o.push(n.cloneNode(!0));return o},o.prototype.invalidate=function(){var t;return this.nodes=null,this.childViews=[],null!=(t=this.parentView)?t.invalidate():void 0},o.prototype.invalidateViewForObject=function(t){var e;return null!=(e=this.findViewForObject(t))?e.invalidate():void 0},o.prototype.findOrCreateCachedChildView=function(t,e){var n;return(n=this.getCachedViewForObject(e))?this.recordChildView(n):(n=this.createChildView.apply(this,arguments),this.cacheViewForObject(n,e)),n},o.prototype.createChildView=function(t,n,i){var o;return null==i&&(i={}),n instanceof e.ObjectGroup&&(i.viewClass=t,t=e.ObjectGroupView),o=new t(n,i),this.recordChildView(o)},o.prototype.recordChildView=function(t){return t.parentView=this,t.rootView=this.rootView,this.childViews.push(t),t},o.prototype.getAllChildViews=function(){var t,e,n,i,o;for(o=[],i=this.childViews,e=0,n=i.length;n>e;e++)t=i[e],o.push(t),o=o.concat(t.getAllChildViews());return o},o.prototype.findElement=function(){return this.findElementForObject(this.object)},o.prototype.findElementForObject=function(t){var e;return(e=null!=t?t.id:void 0)?this.rootView.element.querySelector(\"[data-trix-id='\"+e+\"']\"):void 0},o.prototype.findViewForObject=function(t){var e,n,i,o;for(i=this.getAllChildViews(),e=0,n=i.length;n>e;e++)if(o=i[e],o.object===t)return o},o.prototype.getViewCache=function(){return this.rootView!==this?this.rootView.getViewCache():this.isViewCachingEnabled()?null!=this.viewCache?this.viewCache:this.viewCache={}:void 0},o.prototype.isViewCachingEnabled=function(){return this.shouldCacheViews!==!1},o.prototype.enableViewCaching=function(){return this.shouldCacheViews=!0},o.prototype.disableViewCaching=function(){return this.shouldCacheViews=!1},o.prototype.getCachedViewForObject=function(t){var e;return null!=(e=this.getViewCache())?e[t.getCacheKey()]:void 0},o.prototype.cacheViewForObject=function(t,e){var n;return null!=(n=this.getViewCache())?n[e.getCacheKey()]=t:void 0},o.prototype.garbageCollectCachedViews=function(){var t,e,n,o,r,s;if(t=this.getViewCache()){s=this.getAllChildViews().concat(this),n=function(){var t,e,n;for(n=[],t=0,e=s.length;e>t;t++)r=s[t],n.push(r.object.getCacheKey());return n}(),o=[];for(e in t)i.call(n,e)<0&&o.push(delete t[e]);return o}},o}(e.BasicObject)}.call(this),function(){var t=function(t,e){function i(){this.constructor=t}for(var o in e)n.call(e,o)&&(t[o]=e[o]);return i.prototype=e.prototype,t.prototype=new i,t.__super__=e.prototype,t},n={}.hasOwnProperty;e.ObjectGroupView=function(e){function n(){n.__super__.constructor.apply(this,arguments),this.objectGroup=this.object,this.viewClass=this.options.viewClass,delete this.options.viewClass}return t(n,e),n.prototype.getChildViews=function(){var t,e,n,i;if(!this.childViews.length)for(i=this.objectGroup.getObjects(),t=0,e=i.length;e>t;t++)n=i[t],this.findOrCreateCachedChildView(this.viewClass,n,this.options);return this.childViews},n.prototype.createNodes=function(){var t,e,n,i,o,r,s,a,u;for(t=this.createContainerElement(),s=this.getChildViews(),e=0,i=s.length;i>e;e++)for(u=s[e],a=u.getNodes(),n=0,o=a.length;o>n;n++)r=a[n],t.appendChild(r);return[t]},n.prototype.createContainerElement=function(t){return null==t&&(t=this.objectGroup.getDepth()),this.getChildViews()[0].createContainerElement(t)},n}(e.ObjectView)}.call(this),function(){var t=function(t,e){function i(){this.constructor=t}for(var o in e)n.call(e,o)&&(t[o]=e[o]);return i.prototype=e.prototype,t.prototype=new i,t.__super__=e.prototype,t},n={}.hasOwnProperty;e.Controller=function(e){function n(){return n.__super__.constructor.apply(this,arguments)}return t(n,e),n}(e.BasicObject)}.call(this),function(){var t,n,i,o,r,s,a=function(t,e){return function(){return t.apply(e,arguments)}},u=function(t,e){function n(){this.constructor=t}for(var i in e)c.call(e,i)&&(t[i]=e[i]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},c={}.hasOwnProperty,l=[].indexOf||function(t){for(var e=0,n=this.length;n>e;e++)if(e in this&&this[e]===t)return e;return-1};t=e.findClosestElementFromNode,i=e.nodeIsEmptyTextNode,n=e.nodeIsBlockStartComment,o=e.normalizeSpaces,r=e.summarizeStringChange,s=e.tagName,e.MutationObserver=function(e){function c(t){this.element=t,this.didMutate=a(this.didMutate,this),this.observer=new window.MutationObserver(this.didMutate),this.start()}var h,p,d,f;return u(c,e),p=\"data-trix-mutable\",d=\"[\"+p+\"]\",f={attributes:!0,childList:!0,characterData:!0,characterDataOldValue:!0,subtree:!0},c.prototype.start=function(){return this.reset(),this.observer.observe(this.element,f)},c.prototype.stop=function(){return this.observer.disconnect()},c.prototype.didMutate=function(t){var e,n;return(e=this.mutations).push.apply(e,this.findSignificantMutations(t)),this.mutations.length?(null!=(n=this.delegate)&&\"function\"==typeof n.elementDidMutate&&n.elementDidMutate(this.getMutationSummary()),this.reset()):void 0},c.prototype.reset=function(){return this.mutations=[]},c.prototype.findSignificantMutations=function(t){var e,n,i,o;for(o=[],e=0,n=t.length;n>e;e++)i=t[e],this.mutationIsSignificant(i)&&o.push(i);return o},c.prototype.mutationIsSignificant=function(t){var e,n,i,o;if(this.nodeIsMutable(t.target))return!1;for(o=this.nodesModifiedByMutation(t),e=0,n=o.length;n>e;e++)if(i=o[e],this.nodeIsSignificant(i))return!0;return!1},c.prototype.nodeIsSignificant=function(t){return t!==this.element&&!this.nodeIsMutable(t)&&!i(t)},c.prototype.nodeIsMutable=function(e){return t(e,{matchingSelector:d})},c.prototype.nodesModifiedByMutation=function(t){var e;switch(e=[],t.type){case\"attributes\":t.attributeName!==p&&e.push(t.target);break;case\"characterData\":e.push(t.target.parentNode),e.push(t.target);break;case\"childList\":e.push.apply(e,t.addedNodes),e.push.apply(e,t.removedNodes)}return e},c.prototype.getMutationSummary=function(){return this.getTextMutationSummary()},c.prototype.getTextMutationSummary=function(){var t,e,n,i,o,r,s,a,u,c,h;for(a=this.getTextChangesFromCharacterData(),n=a.additions,o=a.deletions,h=this.getTextChangesFromChildList(),u=h.additions,r=0,s=u.length;s>r;r++)e=u[r],l.call(n,e)<0&&n.push(e);return o.push.apply(o,h.deletions),c={},(t=n.join(\"\"))&&(c.textAdded=t),(i=o.join(\"\"))&&(c.textDeleted=i),c},c.prototype.getMutationsByType=function(t){var e,n,i,o,r;for(o=this.mutations,r=[],e=0,n=o.length;n>e;e++)i=o[e],i.type===t&&r.push(i);return r},c.prototype.getTextChangesFromChildList=function(){var t,e,i,r,s,a,u,c,l,p,d;for(t=[],u=[],a=this.getMutationsByType(\"childList\"),e=0,r=a.length;r>e;e++)s=a[e],t.push.apply(t,s.addedNodes),u.push.apply(u,s.removedNodes);return c=0===t.length&&1===u.length&&n(u[0]),c?(p=[],d=[\"\\n\"]):(p=h(t),d=h(u)),{additions:function(){var t,e,n;for(n=[],i=t=0,e=p.length;e>t;i=++t)l=p[i],l!==d[i]&&n.push(o(l));return n}(),deletions:function(){var t,e,n;for(n=[],i=t=0,e=d.length;e>t;i=++t)l=d[i],l!==p[i]&&n.push(o(l));return n}()}},c.prototype.getTextChangesFromCharacterData=function(){var t,e,n,i,s,a,u,c;return e=this.getMutationsByType(\"characterData\"),e.length&&(c=e[0],n=e[e.length-1],s=o(c.oldValue),i=o(n.target.data),a=r(s,i),t=a.added,u=a.removed),{additions:t?[t]:[],deletions:u?[u]:[]}},h=function(t){var e,n,i,o;for(null==t&&(t=[]),o=[],e=0,n=t.length;n>e;e++)switch(i=t[e],i.nodeType){case Node.TEXT_NODE:o.push(i.data);break;case Node.ELEMENT_NODE:\"br\"===s(i)?o.push(\"\\n\"):o.push.apply(o,h(i.childNodes))}return o},c}(e.BasicObject)}.call(this),function(){var t=function(t,e){function i(){this.constructor=t}for(var o in e)n.call(e,o)&&(t[o]=e[o]);return i.prototype=e.prototype,t.prototype=new i,t.__super__=e.prototype,t},n={}.hasOwnProperty;e.FileVerificationOperation=function(e){function n(t){this.file=t}return t(n,e),n.prototype.perform=function(t){var e;return e=new FileReader,e.onerror=function(){return t(!1)},e.onload=function(n){return function(){e.onerror=null;try{e.abort()}catch(i){}return t(!0,n.file)}}(this),e.readAsArrayBuffer(this.file)},n}(e.Operation)}.call(this),function(){var t,n,i=function(t,e){function n(){this.constructor=t}for(var i in e)o.call(e,i)&&(t[i]=e[i]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},o={}.hasOwnProperty;t=e.handleEvent,n=e.innerElementIsActive,e.InputController=function(o){function r(n){var i;this.element=n,this.mutationObserver=new e.MutationObserver(this.element),this.mutationObserver.delegate=this;for(i in this.events)t(i,{onElement:this.element,withCallback:this.handlerFor(i)})}return i(r,o),r.prototype.events={},r.prototype.elementDidMutate=function(){},r.prototype.editorWillSyncDocumentView=function(){return this.mutationObserver.stop()},r.prototype.editorDidSyncDocumentView=function(){return this.mutationObserver.start()},r.prototype.requestRender=function(){var t;return null!=(t=this.delegate)&&\"function\"==typeof t.inputControllerDidRequestRender?t.inputControllerDidRequestRender():void 0},r.prototype.requestReparse=function(){var t;return null!=(t=this.delegate)&&\"function\"==typeof t.inputControllerDidRequestReparse&&t.inputControllerDidRequestReparse(),this.requestRender()},r.prototype.attachFiles=function(t){var n,i;return i=function(){var i,o,r;for(r=[],i=0,o=t.length;o>i;i++)n=t[i],r.push(new e.FileVerificationOperation(n));return r}(),Promise.all(i).then(function(t){return function(e){return t.handleInput(function(){var t,n;return null!=(t=this.delegate)&&t.inputControllerWillAttachFiles(),null!=(n=this.responder)&&n.insertFiles(e),this.requestRender()})}}(this))},r.prototype.handlerFor=function(t){return function(e){return function(i){return i.defaultPrevented?void 0:e.handleInput(function(){return n(this.element)?void 0:(this.eventName=t,this.events[t].call(this,i))})}}(this)},r.prototype.handleInput=function(t){var e,n;try{return null!=(e=this.delegate)&&e.inputControllerWillHandleInput(),t.call(this)}finally{null!=(n=this.delegate)&&n.inputControllerDidHandleInput()}},r.prototype.createLinkHTML=function(t,e){var n;return n=document.createElement(\"a\"),n.href=t,n.textContent=null!=e?e:t,n.outerHTML},r}(e.BasicObject)}.call(this),function(){var t,n,i,o,r,s,a,u,c,l,h,p,d,f=function(t,e){function n(){this.constructor=t}for(var i in e)g.call(e,i)&&(t[i]=e[i]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},g={}.hasOwnProperty,m=[].indexOf||function(t){for(var e=0,n=this.length;n>e;e++)if(e in this&&this[e]===t)return e;return-1};c=e.makeElement,l=e.objectsAreEqual,d=e.tagName,n=e.browser,a=e.keyEventIsKeyboardCommand,o=e.dataTransferIsWritable,i=e.dataTransferIsPlainText,u=e.config.keyNames,e.Level0InputController=function(n){function s(){s.__super__.constructor.apply(this,arguments),this.resetInputSummary()}var d;return f(s,n),d=0,s.prototype.setInputSummary=function(t){var e,n;null==t&&(t={}),this.inputSummary.eventName=this.eventName;for(e in t)n=t[e],this.inputSummary[e]=n;return this.inputSummary},s.prototype.resetInputSummary=function(){return this.inputSummary={}},s.prototype.reset=function(){return this.resetInputSummary(),e.selectionChangeObserver.reset()},s.prototype.elementDidMutate=function(t){var e;return this.isComposing()?null!=(e=this.delegate)&&\"function\"==typeof e.inputControllerDidAllowUnhandledInput?e.inputControllerDidAllowUnhandledInput():void 0:this.handleInput(function(){return this.mutationIsSignificant(t)&&(this.mutationIsExpected(t)?this.requestRender():this.requestReparse()),this.reset()})},s.prototype.mutationIsExpected=function(t){var e,n,i,o,r,s,a,u,c,l;return a=t.textAdded,u=t.textDeleted,this.inputSummary.preferDocument?!0:(e=null!=a?a===this.inputSummary.textAdded:!this.inputSummary.textAdded,n=null!=u?this.inputSummary.didDelete:!this.inputSummary.didDelete,c=(\"\\n\"===a||\" \\n\"===a)&&!e,l=\"\\n\"===u&&!n,s=c&&!l||l&&!c,s&&(o=this.getSelectedRange())&&(i=c?a.replace(/\\n$/,\"\").length||-1:(null!=a?a.length:void 0)||1,null!=(r=this.responder)?r.positionIsBlockBreak(o[1]+i):void 0)?!0:e&&n)},s.prototype.mutationIsSignificant=function(t){var e,n,i;return i=Object.keys(t).length>0,e=\"\"===(null!=(n=this.compositionInput)?n.getEndData():void 0),i||!e},s.prototype.events={keydown:function(t){var n,i,o,r,s,c,l,h,p;if(this.isComposing()||this.resetInputSummary(),this.inputSummary.didInput=!0,r=u[t.keyCode]){for(i=this.keys,h=[\"ctrl\",\"alt\",\"shift\",\"meta\"],o=0,c=h.length;c>o;o++)l=h[o],t[l+\"Key\"]&&(\"ctrl\"===l&&(l=\"control\"),i=null!=i?i[l]:void 0);null!=(null!=i?i[r]:void 0)&&(this.setInputSummary({keyName:r}),e.selectionChangeObserver.reset(),i[r].call(this,t))}return a(t)&&(n=String.fromCharCode(t.keyCode).toLowerCase())&&(s=function(){var e,n,i,o;for(i=[\"alt\",\"shift\"],o=[],e=0,n=i.length;n>e;e++)l=i[e],t[l+\"Key\"]&&o.push(l);return o}(),s.push(n),null!=(p=this.delegate)?p.inputControllerDidReceiveKeyboardCommand(s):void 0)?t.preventDefault():void 0},keypress:function(t){var e,n,i;if(null==this.inputSummary.eventName&&!t.metaKey&&(!t.ctrlKey||t.altKey))return(i=p(t))?(null!=(e=this.delegate)&&e.inputControllerWillPerformTyping(),null!=(n=this.responder)&&n.insertString(i),this.setInputSummary({textAdded:i,didDelete:this.selectionIsExpanded()})):void 0},textInput:function(t){var e,n,i,o;return e=t.data,o=this.inputSummary.textAdded,o&&o!==e&&o.toUpperCase()===e?(n=this.getSelectedRange(),this.setSelectedRange([n[0],n[1]+o.length]),null!=(i=this.responder)&&i.insertString(e),this.setInputSummary({textAdded:e}),this.setSelectedRange(n)):void 0},dragenter:function(t){return t.preventDefault()},dragstart:function(t){var e,n;return n=t.target,this.serializeSelectionToDataTransfer(t.dataTransfer),this.draggedRange=this.getSelectedRange(),null!=(e=this.delegate)&&\"function\"==typeof e.inputControllerDidStartDrag?e.inputControllerDidStartDrag():void 0},dragover:function(t){var e,n;return!this.draggedRange&&!this.canAcceptDataTransfer(t.dataTransfer)||(t.preventDefault(),e={x:t.clientX,y:t.clientY},l(e,this.draggingPoint))?void 0:(this.draggingPoint=e,null!=(n=this.delegate)&&\"function\"==typeof n.inputControllerDidReceiveDragOverPoint?n.inputControllerDidReceiveDragOverPoint(this.draggingPoint):void 0)},dragend:function(){var t;return null!=(t=this.delegate)&&\"function\"==typeof t.inputControllerDidCancelDrag&&t.inputControllerDidCancelDrag(),this.draggedRange=null,this.draggingPoint=null},drop:function(t){var n,i,o,r,s,a,u,c,l;return t.preventDefault(),o=null!=(s=t.dataTransfer)?s.files:void 0,r={x:t.clientX,y:t.clientY},null!=(a=this.responder)&&a.setLocationRangeFromPointRange(r),(null!=o?o.length:void 0)?this.attachFiles(o):this.draggedRange?(null!=(u=this.delegate)&&u.inputControllerWillMoveText(),null!=(c=this.responder)&&c.moveTextFromRange(this.draggedRange),this.draggedRange=null,this.requestRender()):(i=t.dataTransfer.getData(\"application/x-trix-document\"))&&(n=e.Document.fromJSONString(i),null!=(l=this.responder)&&l.insertDocument(n),this.requestRender()),this.draggedRange=null,this.draggingPoint=null},cut:function(t){var e,n;return(null!=(e=this.responder)?e.selectionIsExpanded():void 0)&&(this.serializeSelectionToDataTransfer(t.clipboardData)&&t.preventDefault(),null!=(n=this.delegate)&&n.inputControllerWillCutText(),this.deleteInDirection(\"backward\"),t.defaultPrevented)?this.requestRender():void 0},copy:function(t){var e;return(null!=(e=this.responder)?e.selectionIsExpanded():void 0)&&this.serializeSelectionToDataTransfer(t.clipboardData)?t.preventDefault():void 0},paste:function(t){var n,o,s,a,u,c,l,p,f,g,v,y,b,A,C,x,w,E,S,R,k,D,L;return n=null!=(p=t.clipboardData)?p:t.testClipboardData,l={clipboard:n},null==n||h(t)?void this.getPastedHTMLUsingHiddenElement(function(t){return function(e){var n,i,o;return l.type=\"text/html\",l.html=e,null!=(n=t.delegate)&&n.inputControllerWillPaste(l),null!=(i=t.responder)&&i.insertHTML(l.html),t.requestRender(),null!=(o=t.delegate)?o.inputControllerDidPaste(l):void 0}}(this)):((a=n.getData(\"URL\"))?(l.type=\"text/html\",L=(c=n.getData(\"public.url-name\"))?e.squishBreakableWhitespace(c).trim():a,l.html=this.createLinkHTML(a,L),null!=(f=this.delegate)&&f.inputControllerWillPaste(l),this.setInputSummary({textAdded:L,didDelete:this.selectionIsExpanded()}),null!=(C=this.responder)&&C.insertHTML(l.html),this.requestRender(),null!=(x=this.delegate)&&x.inputControllerDidPaste(l)):i(n)?(l.type=\"text/plain\",l.string=n.getData(\"text/plain\"),null!=(w=this.delegate)&&w.inputControllerWillPaste(l),this.setInputSummary({textAdded:l.string,didDelete:this.selectionIsExpanded()}),null!=(E=this.responder)&&E.insertString(l.string),this.requestRender(),null!=(S=this.delegate)&&S.inputControllerDidPaste(l)):(u=n.getData(\"text/html\"))?(l.type=\"text/html\",l.html=u,null!=(R=this.delegate)&&R.inputControllerWillPaste(l),null!=(k=this.responder)&&k.insertHTML(l.html),this.requestRender(),null!=(D=this.delegate)&&D.inputControllerDidPaste(l)):m.call(n.types,\"Files\")>=0&&(s=null!=(g=n.items)&&null!=(v=g[0])&&\"function\"==typeof v.getAsFile?v.getAsFile():void 0)&&(!s.name&&(o=r(s))&&(s.name=\"pasted-file-\"+ ++d+\".\"+o),l.type=\"File\",l.file=s,null!=(y=this.delegate)&&y.inputControllerWillAttachFiles(),null!=(b=this.responder)&&b.insertFile(l.file),this.requestRender(),null!=(A=this.delegate)&&A.inputControllerDidPaste(l)),t.preventDefault())},compositionstart:function(t){return this.getCompositionInput().start(t.data)},compositionupdate:function(t){return this.getCompositionInput().update(t.data)},compositionend:function(t){return this.getCompositionInput().end(t.data)},beforeinput:function(){return this.inputSummary.didInput=!0\n},input:function(t){return this.inputSummary.didInput=!0,t.stopPropagation()}},s.prototype.keys={backspace:function(t){var e;return null!=(e=this.delegate)&&e.inputControllerWillPerformTyping(),this.deleteInDirection(\"backward\",t)},\"delete\":function(t){var e;return null!=(e=this.delegate)&&e.inputControllerWillPerformTyping(),this.deleteInDirection(\"forward\",t)},\"return\":function(){var t,e;return this.setInputSummary({preferDocument:!0}),null!=(t=this.delegate)&&t.inputControllerWillPerformTyping(),null!=(e=this.responder)?e.insertLineBreak():void 0},tab:function(t){var e,n;return(null!=(e=this.responder)?e.canIncreaseNestingLevel():void 0)?(null!=(n=this.responder)&&n.increaseNestingLevel(),this.requestRender(),t.preventDefault()):void 0},left:function(t){var e;return this.selectionIsInCursorTarget()?(t.preventDefault(),null!=(e=this.responder)?e.moveCursorInDirection(\"backward\"):void 0):void 0},right:function(t){var e;return this.selectionIsInCursorTarget()?(t.preventDefault(),null!=(e=this.responder)?e.moveCursorInDirection(\"forward\"):void 0):void 0},control:{d:function(t){var e;return null!=(e=this.delegate)&&e.inputControllerWillPerformTyping(),this.deleteInDirection(\"forward\",t)},h:function(t){var e;return null!=(e=this.delegate)&&e.inputControllerWillPerformTyping(),this.deleteInDirection(\"backward\",t)},o:function(t){var e,n;return t.preventDefault(),null!=(e=this.delegate)&&e.inputControllerWillPerformTyping(),null!=(n=this.responder)&&n.insertString(\"\\n\",{updatePosition:!1}),this.requestRender()}},shift:{\"return\":function(t){var e,n;return null!=(e=this.delegate)&&e.inputControllerWillPerformTyping(),null!=(n=this.responder)&&n.insertString(\"\\n\"),this.requestRender(),t.preventDefault()},tab:function(t){var e,n;return(null!=(e=this.responder)?e.canDecreaseNestingLevel():void 0)?(null!=(n=this.responder)&&n.decreaseNestingLevel(),this.requestRender(),t.preventDefault()):void 0},left:function(t){return this.selectionIsInCursorTarget()?(t.preventDefault(),this.expandSelectionInDirection(\"backward\")):void 0},right:function(t){return this.selectionIsInCursorTarget()?(t.preventDefault(),this.expandSelectionInDirection(\"forward\")):void 0}},alt:{backspace:function(){var t;return this.setInputSummary({preferDocument:!1}),null!=(t=this.delegate)?t.inputControllerWillPerformTyping():void 0}},meta:{backspace:function(){var t;return this.setInputSummary({preferDocument:!1}),null!=(t=this.delegate)?t.inputControllerWillPerformTyping():void 0}}},s.prototype.getCompositionInput=function(){return this.isComposing()?this.compositionInput:this.compositionInput=new t(this)},s.prototype.isComposing=function(){return null!=this.compositionInput&&!this.compositionInput.isEnded()},s.prototype.deleteInDirection=function(t,e){var n;return(null!=(n=this.responder)?n.deleteInDirection(t):void 0)!==!1?this.setInputSummary({didDelete:!0}):e?(e.preventDefault(),this.requestRender()):void 0},s.prototype.serializeSelectionToDataTransfer=function(t){var n,i;if(o(t))return n=null!=(i=this.responder)?i.getSelectedDocument().toSerializableDocument():void 0,t.setData(\"application/x-trix-document\",JSON.stringify(n)),t.setData(\"text/html\",e.DocumentView.render(n).innerHTML),t.setData(\"text/plain\",n.toString().replace(/\\n$/,\"\")),!0},s.prototype.canAcceptDataTransfer=function(t){var e,n,i,o,r,s;for(s={},o=null!=(i=null!=t?t.types:void 0)?i:[],e=0,n=o.length;n>e;e++)r=o[e],s[r]=!0;return s.Files||s[\"application/x-trix-document\"]||s[\"text/html\"]||s[\"text/plain\"]},s.prototype.getPastedHTMLUsingHiddenElement=function(t){var n,i,o;return i=this.getSelectedRange(),o={position:\"absolute\",left:window.pageXOffset+\"px\",top:window.pageYOffset+\"px\",opacity:0},n=c({style:o,tagName:\"div\",editable:!0}),document.body.appendChild(n),n.focus(),requestAnimationFrame(function(o){return function(){var r;return r=n.innerHTML,e.removeNode(n),o.setSelectedRange(i),t(r)}}(this))},s.proxyMethod(\"responder?.getSelectedRange\"),s.proxyMethod(\"responder?.setSelectedRange\"),s.proxyMethod(\"responder?.expandSelectionInDirection\"),s.proxyMethod(\"responder?.selectionIsInCursorTarget\"),s.proxyMethod(\"responder?.selectionIsExpanded\"),s}(e.InputController),r=function(t){var e,n;return null!=(e=t.type)&&null!=(n=e.match(/\\/(\\w+)$/))?n[1]:void 0},s=null!=(\"function\"==typeof\" \".codePointAt?\" \".codePointAt(0):void 0),p=function(t){var n;return t.key&&s&&t.key.codePointAt(0)===t.keyCode?t.key:(null===t.which?n=t.keyCode:0!==t.which&&0!==t.charCode&&(n=t.charCode),null!=n&&\"escape\"!==u[n]?e.UTF16String.fromCodepoints([n]).toString():void 0)},h=function(t){var e,n,i,o,r,s,a,u,c,l;if(u=t.clipboardData){if(m.call(u.types,\"text/html\")>=0){for(c=u.types,i=0,s=c.length;s>i;i++)if(l=c[i],e=/^CorePasteboardFlavorType/.test(l),n=/^dyn\\./.test(l)&&u.getData(l),a=e||n)return!0;return!1}return o=m.call(u.types,\"com.apple.webarchive\")>=0,r=m.call(u.types,\"com.apple.flat-rtfd\")>=0,o||r}},t=function(t){function e(t){var e;this.inputController=t,e=this.inputController,this.responder=e.responder,this.delegate=e.delegate,this.inputSummary=e.inputSummary,this.data={}}return f(e,t),e.prototype.start=function(t){var e,n;return this.data.start=t,this.isSignificant()?(\"keypress\"===this.inputSummary.eventName&&this.inputSummary.textAdded&&null!=(e=this.responder)&&e.deleteInDirection(\"left\"),this.selectionIsExpanded()||(this.insertPlaceholder(),this.requestRender()),this.range=null!=(n=this.responder)?n.getSelectedRange():void 0):void 0},e.prototype.update=function(t){var e;return this.data.update=t,this.isSignificant()&&(e=this.selectPlaceholder())?(this.forgetPlaceholder(),this.range=e):void 0},e.prototype.end=function(t){var e,n,i,o;return this.data.end=t,this.isSignificant()?(this.forgetPlaceholder(),this.canApplyToDocument()?(this.setInputSummary({preferDocument:!0,didInput:!1}),null!=(e=this.delegate)&&e.inputControllerWillPerformTyping(),null!=(n=this.responder)&&n.setSelectedRange(this.range),null!=(i=this.responder)&&i.insertString(this.data.end),null!=(o=this.responder)?o.setSelectedRange(this.range[0]+this.data.end.length):void 0):null!=this.data.start||null!=this.data.update?(this.requestReparse(),this.inputController.reset()):void 0):this.inputController.reset()},e.prototype.getEndData=function(){return this.data.end},e.prototype.isEnded=function(){return null!=this.getEndData()},e.prototype.isSignificant=function(){return n.composesExistingText?this.inputSummary.didInput:!0},e.prototype.canApplyToDocument=function(){var t,e;return 0===(null!=(t=this.data.start)?t.length:void 0)&&(null!=(e=this.data.end)?e.length:void 0)>0&&null!=this.range},e.proxyMethod(\"inputController.setInputSummary\"),e.proxyMethod(\"inputController.requestRender\"),e.proxyMethod(\"inputController.requestReparse\"),e.proxyMethod(\"responder?.selectionIsExpanded\"),e.proxyMethod(\"responder?.insertPlaceholder\"),e.proxyMethod(\"responder?.selectPlaceholder\"),e.proxyMethod(\"responder?.forgetPlaceholder\"),e}(e.BasicObject)}.call(this),function(){var t,n,i,o=function(t,e){return function(){return t.apply(e,arguments)}},r=function(t,e){function n(){this.constructor=t}for(var i in e)s.call(e,i)&&(t[i]=e[i]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},s={}.hasOwnProperty,a=[].indexOf||function(t){for(var e=0,n=this.length;n>e;e++)if(e in this&&this[e]===t)return e;return-1};t=e.dataTransferIsPlainText,n=e.keyEventIsKeyboardCommand,i=e.objectsAreEqual,e.Level2InputController=function(s){function u(){return this.render=o(this.render,this),u.__super__.constructor.apply(this,arguments)}var c,l,h,p,d,f;return r(u,s),u.prototype.elementDidMutate=function(){var t;return this.scheduledRender?this.composing&&null!=(t=this.delegate)&&\"function\"==typeof t.inputControllerDidAllowUnhandledInput?t.inputControllerDidAllowUnhandledInput():void 0:this.reparse()},u.prototype.scheduleRender=function(){return null!=this.scheduledRender?this.scheduledRender:this.scheduledRender=requestAnimationFrame(this.render)},u.prototype.render=function(){var t;return cancelAnimationFrame(this.scheduledRender),this.scheduledRender=null,this.composing||null!=(t=this.delegate)&&t.render(),\"function\"==typeof this.afterRender&&this.afterRender(),this.afterRender=null},u.prototype.reparse=function(){var t;return null!=(t=this.delegate)?t.reparse():void 0},u.prototype.events={keydown:function(t){var e,i,o,r;if(n(t)){if(e=l(t),null!=(r=this.delegate)?r.inputControllerDidReceiveKeyboardCommand(e):void 0)return t.preventDefault()}else if(o=t.key,t.altKey&&(o+=\"+Alt\"),t.shiftKey&&(o+=\"+Shift\"),i=this.keys[o])return this.withEvent(t,i)},paste:function(t){var e,n,i,o,r,s,a,u,c;return h(t)?(t.preventDefault(),this.attachFiles(t.clipboardData.files)):p(t)?(t.preventDefault(),n={type:\"text/plain\",string:t.clipboardData.getData(\"text/plain\")},null!=(i=this.delegate)&&i.inputControllerWillPaste(n),null!=(o=this.responder)&&o.insertString(n.string),this.render(),null!=(r=this.delegate)?r.inputControllerDidPaste(n):void 0):(e=null!=(s=t.clipboardData)?s.getData(\"URL\"):void 0)?(t.preventDefault(),n={type:\"text/html\",html:this.createLinkHTML(e)},null!=(a=this.delegate)&&a.inputControllerWillPaste(n),null!=(u=this.responder)&&u.insertHTML(n.html),this.render(),null!=(c=this.delegate)?c.inputControllerDidPaste(n):void 0):void 0},beforeinput:function(t){var e;return(e=this.inputTypes[t.inputType])?(this.withEvent(t,e),this.scheduleRender()):void 0},input:function(){return e.selectionChangeObserver.reset()},dragstart:function(t){var e,n;return(null!=(e=this.responder)?e.selectionContainsAttachments():void 0)?(t.dataTransfer.setData(\"application/x-trix-dragging\",!0),this.dragging={range:null!=(n=this.responder)?n.getSelectedRange():void 0,point:d(t)}):void 0},dragenter:function(t){return c(t)?t.preventDefault():void 0},dragover:function(t){var e,n;if(this.dragging){if(t.preventDefault(),e=d(t),!i(e,this.dragging.point))return this.dragging.point=e,null!=(n=this.responder)?n.setLocationRangeFromPointRange(e):void 0}else if(c(t))return t.preventDefault()},drop:function(t){var e,n,i,o;return this.dragging?(t.preventDefault(),null!=(n=this.delegate)&&n.inputControllerWillMoveText(),null!=(i=this.responder)&&i.moveTextFromRange(this.dragging.range),this.dragging=null,this.scheduleRender()):c(t)?(t.preventDefault(),e=d(t),null!=(o=this.responder)&&o.setLocationRangeFromPointRange(e),this.attachFiles(t.dataTransfer.files)):void 0},dragend:function(){var t;return this.dragging?(null!=(t=this.responder)&&t.setSelectedRange(this.dragging.range),this.dragging=null):void 0},compositionend:function(){return this.composing?(this.composing=!1,this.scheduleRender()):void 0}},u.prototype.keys={ArrowLeft:function(){var t,e;return(null!=(t=this.responder)?t.shouldManageMovingCursorInDirection(\"backward\"):void 0)?(this.event.preventDefault(),null!=(e=this.responder)?e.moveCursorInDirection(\"backward\"):void 0):void 0},ArrowRight:function(){var t,e;return(null!=(t=this.responder)?t.shouldManageMovingCursorInDirection(\"forward\"):void 0)?(this.event.preventDefault(),null!=(e=this.responder)?e.moveCursorInDirection(\"forward\"):void 0):void 0},Backspace:function(){var t,e,n;return(null!=(t=this.responder)?t.shouldManageDeletingInDirection(\"backward\"):void 0)?(this.event.preventDefault(),null!=(e=this.delegate)&&e.inputControllerWillPerformTyping(),null!=(n=this.responder)&&n.deleteInDirection(\"backward\"),this.render()):void 0},Tab:function(){var t,e;return(null!=(t=this.responder)?t.canIncreaseNestingLevel():void 0)?(this.event.preventDefault(),null!=(e=this.responder)&&e.increaseNestingLevel(),this.render()):void 0},\"Tab+Shift\":function(){var t,e;return(null!=(t=this.responder)?t.canDecreaseNestingLevel():void 0)?(this.event.preventDefault(),null!=(e=this.responder)&&e.decreaseNestingLevel(),this.render()):void 0}},u.prototype.inputTypes={deleteByComposition:function(){return this.deleteInDirection(\"backward\",{recordUndoEntry:!1})},deleteByCut:function(){return this.deleteInDirection(\"backward\")},deleteByDrag:function(){return this.event.preventDefault(),this.withTargetDOMRange(function(){var t;return this.deleteByDragRange=null!=(t=this.responder)?t.getSelectedRange():void 0})},deleteCompositionText:function(){return this.deleteInDirection(\"backward\",{recordUndoEntry:!1})},deleteContent:function(){return this.deleteInDirection(\"backward\")},deleteContentBackward:function(){return this.deleteInDirection(\"backward\")},deleteContentForward:function(){return this.deleteInDirection(\"forward\")},deleteEntireSoftLine:function(){return this.deleteInDirection(\"forward\")},deleteHardLineBackward:function(){return this.deleteInDirection(\"backward\")},deleteHardLineForward:function(){return this.deleteInDirection(\"forward\")},deleteSoftLineBackward:function(){return this.deleteInDirection(\"backward\")},deleteSoftLineForward:function(){return this.deleteInDirection(\"forward\")},deleteWordBackward:function(){return this.deleteInDirection(\"backward\")},deleteWordForward:function(){return this.deleteInDirection(\"forward\")},formatBackColor:function(){return this.activateAttributeIfSupported(\"backgroundColor\",this.event.data)},formatBold:function(){return this.toggleAttributeIfSupported(\"bold\")},formatFontColor:function(){return this.activateAttributeIfSupported(\"color\",this.event.data)},formatFontName:function(){return this.activateAttributeIfSupported(\"font\",this.event.data)},formatIndent:function(){var t;return(null!=(t=this.responder)?t.canIncreaseNestingLevel():void 0)?this.withTargetDOMRange(function(){var t;return null!=(t=this.responder)?t.increaseNestingLevel():void 0}):void 0},formatItalic:function(){return this.toggleAttributeIfSupported(\"italic\")},formatJustifyCenter:function(){return this.toggleAttributeIfSupported(\"justifyCenter\")},formatJustifyFull:function(){return this.toggleAttributeIfSupported(\"justifyFull\")},formatJustifyLeft:function(){return this.toggleAttributeIfSupported(\"justifyLeft\")},formatJustifyRight:function(){return this.toggleAttributeIfSupported(\"justifyRight\")},formatOutdent:function(){var t;return(null!=(t=this.responder)?t.canDecreaseNestingLevel():void 0)?this.withTargetDOMRange(function(){var t;return null!=(t=this.responder)?t.decreaseNestingLevel():void 0}):void 0},formatRemove:function(){return this.withTargetDOMRange(function(){var t,e,n,i;i=[];for(t in null!=(e=this.responder)?e.getCurrentAttributes():void 0)i.push(null!=(n=this.responder)?n.removeCurrentAttribute(t):void 0);return i})},formatSetBlockTextDirection:function(){return this.activateAttributeIfSupported(\"blockDir\",this.event.data)},formatSetInlineTextDirection:function(){return this.activateAttributeIfSupported(\"textDir\",this.event.data)},formatStrikeThrough:function(){return this.toggleAttributeIfSupported(\"strike\")},formatSubscript:function(){return this.toggleAttributeIfSupported(\"sub\")},formatSuperscript:function(){return this.toggleAttributeIfSupported(\"sup\")},formatUnderline:function(){return this.toggleAttributeIfSupported(\"underline\")},historyRedo:function(){var t;return null!=(t=this.delegate)?t.inputControllerWillPerformRedo():void 0},historyUndo:function(){var t;return null!=(t=this.delegate)?t.inputControllerWillPerformUndo():void 0},insertCompositionText:function(){return this.composing=!0,this.insertString(this.event.data)},insertFromComposition:function(){return this.composing=!1,this.insertString(this.event.data)},insertFromDrop:function(){var t,e;return(t=this.deleteByDragRange)?(this.deleteByDragRange=null,null!=(e=this.delegate)&&e.inputControllerWillMoveText(),this.withTargetDOMRange(function(){var e;return null!=(e=this.responder)?e.moveTextFromRange(t):void 0})):void 0},insertFromPaste:function(){var n,i,o,r,s,a,u,c,l,h,p;return n=this.event.dataTransfer,s={dataTransfer:n},(i=n.getData(\"URL\"))?(this.event.preventDefault(),s.type=\"text/html\",p=(r=n.getData(\"public.url-name\"))?e.squishBreakableWhitespace(r).trim():i,s.html=this.createLinkHTML(i,p),null!=(a=this.delegate)&&a.inputControllerWillPaste(s),this.withTargetDOMRange(function(){var t;return null!=(t=this.responder)?t.insertHTML(s.html):void 0}),this.afterRender=function(t){return function(){var e;return null!=(e=t.delegate)?e.inputControllerDidPaste(s):void 0}}(this)):t(n)?(s.type=\"text/plain\",s.string=n.getData(\"text/plain\"),null!=(u=this.delegate)&&u.inputControllerWillPaste(s),this.withTargetDOMRange(function(){var t;return null!=(t=this.responder)?t.insertString(s.string):void 0}),this.afterRender=function(t){return function(){var e;return null!=(e=t.delegate)?e.inputControllerDidPaste(s):void 0}}(this)):(o=n.getData(\"text/html\"))?(this.event.preventDefault(),s.type=\"text/html\",s.html=o,null!=(c=this.delegate)&&c.inputControllerWillPaste(s),this.withTargetDOMRange(function(){var t;return null!=(t=this.responder)?t.insertHTML(s.html):void 0}),this.afterRender=function(t){return function(){var e;return null!=(e=t.delegate)?e.inputControllerDidPaste(s):void 0}}(this)):(null!=(l=n.files)?l.length:void 0)?(s.type=\"File\",s.file=n.files[0],null!=(h=this.delegate)&&h.inputControllerWillPaste(s),this.withTargetDOMRange(function(){var t;return null!=(t=this.responder)?t.insertFile(s.file):void 0}),this.afterRender=function(t){return function(){var e;return null!=(e=t.delegate)?e.inputControllerDidPaste(s):void 0}}(this)):void 0},insertFromYank:function(){return this.insertString(this.event.data)},insertLineBreak:function(){return this.insertString(\"\\n\")},insertLink:function(){return this.activateAttributeIfSupported(\"href\",this.event.data)},insertOrderedList:function(){return this.toggleAttributeIfSupported(\"number\")},insertParagraph:function(){var t;return null!=(t=this.delegate)&&t.inputControllerWillPerformTyping(),this.withTargetDOMRange(function(){var t;return null!=(t=this.responder)?t.insertLineBreak():void 0})},insertReplacementText:function(){return this.insertString(this.event.dataTransfer.getData(\"text/plain\"),{updatePosition:!1})},insertText:function(){var t,e;return this.insertString(null!=(t=this.event.data)?t:null!=(e=this.event.dataTransfer)?e.getData(\"text/plain\"):void 0)},insertTranspose:function(){return this.insertString(this.event.data)},insertUnorderedList:function(){return this.toggleAttributeIfSupported(\"bullet\")}},u.prototype.insertString=function(t,e){var n;return null==t&&(t=\"\"),null!=(n=this.delegate)&&n.inputControllerWillPerformTyping(),this.withTargetDOMRange(function(){var n;return null!=(n=this.responder)?n.insertString(t,e):void 0})},u.prototype.toggleAttributeIfSupported=function(t){var n;return a.call(e.getAllAttributeNames(),t)>=0?(null!=(n=this.delegate)&&n.inputControllerWillPerformFormatting(t),this.withTargetDOMRange(function(){var e;return null!=(e=this.responder)?e.toggleCurrentAttribute(t):void 0})):void 0},u.prototype.activateAttributeIfSupported=function(t,n){var i;return a.call(e.getAllAttributeNames(),t)>=0?(null!=(i=this.delegate)&&i.inputControllerWillPerformFormatting(t),this.withTargetDOMRange(function(){var e;return null!=(e=this.responder)?e.setCurrentAttribute(t,n):void 0})):void 0},u.prototype.deleteInDirection=function(t,e){var n,i,o,r;return o=(null!=e?e:{recordUndoEntry:!0}).recordUndoEntry,o&&null!=(r=this.delegate)&&r.inputControllerWillPerformTyping(),i=function(e){return function(){var n;return null!=(n=e.responder)?n.deleteInDirection(t):void 0}}(this),(n=this.getTargetDOMRange({minLength:2}))?this.withTargetDOMRange(n,i):i()},u.prototype.withTargetDOMRange=function(t,n){var i;return\"function\"==typeof t&&(n=t,t=this.getTargetDOMRange()),t?null!=(i=this.responder)?i.withTargetDOMRange(t,n.bind(this)):void 0:(e.selectionChangeObserver.reset(),n.call(this))},u.prototype.getTargetDOMRange=function(t){var e,n,i,o;return i=(null!=t?t:{minLength:0}).minLength,(o=\"function\"==typeof(e=this.event).getTargetRanges?e.getTargetRanges():void 0)&&o.length&&(n=f(o[0]),0===i||n.toString().length>=i)?n:void 0},f=function(t){var e;return e=document.createRange(),e.setStart(t.startContainer,t.startOffset),e.setEnd(t.endContainer,t.endOffset),e},u.prototype.withEvent=function(t,e){var n;this.event=t;try{n=e.call(this)}finally{this.event=null}return n},c=function(t){var e,n;return a.call(null!=(e=null!=(n=t.dataTransfer)?n.types:void 0)?e:[],\"Files\")>=0},h=function(t){var e;return(e=t.clipboardData)?a.call(e.types,\"Files\")>=0&&1===e.types.length&&e.files.length>=1:void 0},p=function(t){var e;return(e=t.clipboardData)?a.call(e.types,\"text/plain\")>=0&&1===e.types.length:void 0},l=function(t){var e;return e=[],t.altKey&&e.push(\"alt\"),t.shiftKey&&e.push(\"shift\"),e.push(t.key),e},d=function(t){return{x:t.clientX,y:t.clientY}},u}(e.InputController)}.call(this),function(){var t,n,i,o,r,s,a,u,c=function(t,e){return function(){return t.apply(e,arguments)}},l=function(t,e){function n(){this.constructor=t}for(var i in e)h.call(e,i)&&(t[i]=e[i]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},h={}.hasOwnProperty;n=e.defer,i=e.handleEvent,s=e.makeElement,u=e.tagName,a=e.config,r=a.lang,t=a.css,o=a.keyNames,e.AttachmentEditorController=function(a){function h(t,e,n,i){this.attachmentPiece=t,this.element=e,this.container=n,this.options=null!=i?i:{},this.didBlurCaption=c(this.didBlurCaption,this),this.didChangeCaption=c(this.didChangeCaption,this),this.didInputCaption=c(this.didInputCaption,this),this.didKeyDownCaption=c(this.didKeyDownCaption,this),this.didClickActionButton=c(this.didClickActionButton,this),this.didClickToolbar=c(this.didClickToolbar,this),this.attachment=this.attachmentPiece.attachment,\"a\"===u(this.element)&&(this.element=this.element.firstChild),this.install()}var p;return l(h,a),p=function(t){return function(){var e;return e=t.apply(this,arguments),e[\"do\"](),null==this.undos&&(this.undos=[]),this.undos.push(e.undo)}},h.prototype.install=function(){return this.makeElementMutable(),this.addToolbar(),this.attachment.isPreviewable()?this.installCaptionEditor():void 0},h.prototype.uninstall=function(){var t,e;for(this.savePendingCaption();e=this.undos.pop();)e();return null!=(t=this.delegate)?t.didUninstallAttachmentEditor(this):void 0},h.prototype.savePendingCaption=function(){var t,e,n;return null!=this.pendingCaption?(t=this.pendingCaption,this.pendingCaption=null,t?null!=(e=this.delegate)&&\"function\"==typeof e.attachmentEditorDidRequestUpdatingAttributesForAttachment?e.attachmentEditorDidRequestUpdatingAttributesForAttachment({caption:t},this.attachment):void 0:null!=(n=this.delegate)&&\"function\"==typeof n.attachmentEditorDidRequestRemovingAttributeForAttachment?n.attachmentEditorDidRequestRemovingAttributeForAttachment(\"caption\",this.attachment):void 0):void 0},h.prototype.makeElementMutable=p(function(){return{\"do\":function(t){return function(){return t.element.dataset.trixMutable=!0}}(this),undo:function(t){return function(){return delete t.element.dataset.trixMutable}}(this)}}),h.prototype.addToolbar=p(function(){var n;return n=s({tagName:\"div\",className:t.attachmentToolbar,data:{trixMutable:!0},childNodes:s({tagName:\"div\",className:\"trix-button-row\",childNodes:s({tagName:\"span\",className:\"trix-button-group trix-button-group--actions\",childNodes:s({tagName:\"button\",className:\"trix-button trix-button--remove\",textContent:r.remove,attributes:{title:r.remove},data:{trixAction:\"remove\"}})})})}),this.attachment.isPreviewable()&&n.appendChild(s({tagName:\"div\",className:t.attachmentMetadataContainer,childNodes:s({tagName:\"span\",className:t.attachmentMetadata,childNodes:[s({tagName:\"span\",className:t.attachmentName,textContent:this.attachment.getFilename(),attributes:{title:this.attachment.getFilename()}}),s({tagName:\"span\",className:t.attachmentSize,textContent:this.attachment.getFormattedFilesize()})]})})),i(\"click\",{onElement:n,withCallback:this.didClickToolbar}),i(\"click\",{onElement:n,matchingSelector:\"[data-trix-action]\",withCallback:this.didClickActionButton}),{\"do\":function(t){return function(){return t.element.appendChild(n)}}(this),undo:function(){return function(){return e.removeNode(n)}}(this)}}),h.prototype.installCaptionEditor=p(function(){var o,a,u,c,l;return c=s({tagName:\"textarea\",className:t.attachmentCaptionEditor,attributes:{placeholder:r.captionPlaceholder},data:{trixMutable:!0}}),c.value=this.attachmentPiece.getCaption(),l=c.cloneNode(),l.classList.add(\"trix-autoresize-clone\"),l.tabIndex=-1,o=function(){return l.value=c.value,c.style.height=l.scrollHeight+\"px\"},i(\"input\",{onElement:c,withCallback:o}),i(\"input\",{onElement:c,withCallback:this.didInputCaption}),i(\"keydown\",{onElement:c,withCallback:this.didKeyDownCaption}),i(\"change\",{onElement:c,withCallback:this.didChangeCaption}),i(\"blur\",{onElement:c,withCallback:this.didBlurCaption}),u=this.element.querySelector(\"figcaption\"),a=u.cloneNode(),{\"do\":function(e){return function(){return u.style.display=\"none\",a.appendChild(c),a.appendChild(l),a.classList.add(t.attachmentCaption+\"--editing\"),u.parentElement.insertBefore(a,u),o(),e.options.editCaption?n(function(){return c.focus()}):void 0}}(this),undo:function(){return e.removeNode(a),u.style.display=null}}}),h.prototype.didClickToolbar=function(t){return t.preventDefault(),t.stopPropagation()},h.prototype.didClickActionButton=function(t){var e,n;switch(e=t.target.getAttribute(\"data-trix-action\")){case\"remove\":return null!=(n=this.delegate)?n.attachmentEditorDidRequestRemovalOfAttachment(this.attachment):void 0}},h.prototype.didKeyDownCaption=function(t){var e;return\"return\"===o[t.keyCode]?(t.preventDefault(),this.savePendingCaption(),null!=(e=this.delegate)&&\"function\"==typeof e.attachmentEditorDidRequestDeselectingAttachment?e.attachmentEditorDidRequestDeselectingAttachment(this.attachment):void 0):void 0},h.prototype.didInputCaption=function(t){return this.pendingCaption=t.target.value.replace(/\\s/g,\" \").trim()},h.prototype.didChangeCaption=function(){return this.savePendingCaption()},h.prototype.didBlurCaption=function(){return this.savePendingCaption()},h}(e.BasicObject)}.call(this),function(){var t,n,i,o=function(t,e){function n(){this.constructor=t}for(var i in e)r.call(e,i)&&(t[i]=e[i]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},r={}.hasOwnProperty;i=e.makeElement,t=e.config.css,e.AttachmentView=function(r){function s(){s.__super__.constructor.apply(this,arguments),this.attachment=this.object,this.attachment.uploadProgressDelegate=this,this.attachmentPiece=this.options.piece}var a;return o(s,r),s.attachmentSelector=\"[data-trix-attachment]\",s.prototype.createContentNodes=function(){return[]},s.prototype.createNodes=function(){var n,o,r,s,u,c,l;if(n=s=i({tagName:\"figure\",className:this.getClassName(),data:this.getData(),editable:!1}),(o=this.getHref())&&(s=i({tagName:\"a\",editable:!1,attributes:{href:o,tabindex:-1}}),n.appendChild(s)),this.attachment.hasContent())e.HTMLSanitizer.setHTML(s,this.attachment.getContent());else for(l=this.createContentNodes(),r=0,u=l.length;u>r;r++)c=l[r],s.appendChild(c);return s.appendChild(this.createCaptionElement()),this.attachment.isPending()&&(this.progressElement=i({tagName:\"progress\",attributes:{\"class\":t.attachmentProgress,value:this.attachment.getUploadProgress(),max:100},data:{trixMutable:!0,trixStoreKey:[\"progressElement\",this.attachment.id].join(\"/\")}}),n.appendChild(this.progressElement)),[a(\"left\"),n,a(\"right\")]},s.prototype.createCaptionElement=function(){var e,n,o,r,s,a,u;return o=i({tagName:\"figcaption\",className:t.attachmentCaption}),(e=this.attachmentPiece.getCaption())?(o.classList.add(t.attachmentCaption+\"--edited\"),o.textContent=e):(n=this.getCaptionConfig(),n.name&&(r=this.attachment.getFilename()),n.size&&(a=this.attachment.getFormattedFilesize()),r&&(s=i({tagName:\"span\",className:t.attachmentName,textContent:r}),o.appendChild(s)),a&&(r&&o.appendChild(document.createTextNode(\" \")),u=i({tagName:\"span\",className:t.attachmentSize,textContent:a}),o.appendChild(u))),o},s.prototype.getClassName=function(){var e,n;return n=[t.attachment,t.attachment+\"--\"+this.attachment.getType()],(e=this.attachment.getExtension())&&n.push(t.attachment+\"--\"+e),n.join(\" \")},s.prototype.getData=function(){var t,e;return e={trixAttachment:JSON.stringify(this.attachment),trixContentType:this.attachment.getContentType(),trixId:this.attachment.id},t=this.attachmentPiece.attributes,t.isEmpty()||(e.trixAttributes=JSON.stringify(t)),this.attachment.isPending()&&(e.trixSerialize=!1),e},s.prototype.getHref=function(){return n(this.attachment.getContent(),\"a\")?void 0:this.attachment.getHref()},s.prototype.getCaptionConfig=function(){var t,n,i;return i=this.attachment.getType(),t=e.copyObject(null!=(n=e.config.attachments[i])?n.caption:void 0),\"file\"===i&&(t.name=!0),t},s.prototype.findProgressElement=function(){var t;return null!=(t=this.findElement())?t.querySelector(\"progress\"):void 0},a=function(t){return i({tagName:\"span\",textContent:e.ZERO_WIDTH_SPACE,data:{trixCursorTarget:t,trixSerialize:!1}})},s.prototype.attachmentDidChangeUploadProgress=function(){var t,e;return e=this.attachment.getUploadProgress(),null!=(t=this.findProgressElement())?t.value=e:void 0},s}(e.ObjectView),n=function(t,n){var o;return o=i(\"div\"),e.HTMLSanitizer.setHTML(o,t||\"\"),o.querySelector(n)}}.call(this),function(){var t,n=function(t,e){function n(){this.constructor=t}for(var o in e)i.call(e,o)&&(t[o]=e[o]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},i={}.hasOwnProperty;t=e.makeElement,e.PreviewableAttachmentView=function(i){function o(){o.__super__.constructor.apply(this,arguments),this.attachment.previewDelegate=this}return n(o,i),o.prototype.createContentNodes=function(){return this.image=t({tagName:\"img\",attributes:{src:\"\"},data:{trixMutable:!0}}),this.refresh(this.image),[this.image]},o.prototype.createCaptionElement=function(){var t;return t=o.__super__.createCaptionElement.apply(this,arguments),t.textContent||t.setAttribute(\"data-trix-placeholder\",e.config.lang.captionPlaceholder),t},o.prototype.refresh=function(t){var e;return null==t&&(t=null!=(e=this.findElement())?e.querySelector(\"img\"):void 0),t?this.updateAttributesForImage(t):void 0},o.prototype.updateAttributesForImage=function(t){var e,n,i,o,r,s;return r=this.attachment.getURL(),n=this.attachment.getPreviewURL(),t.src=n||r,n===r?t.removeAttribute(\"data-trix-serialized-attributes\"):(i=JSON.stringify({src:r}),t.setAttribute(\"data-trix-serialized-attributes\",i)),s=this.attachment.getWidth(),e=this.attachment.getHeight(),null!=s&&(t.width=s),null!=e&&(t.height=e),o=[\"imageElement\",this.attachment.id,t.src,t.width,t.height].join(\"/\"),t.dataset.trixStoreKey=o},o.prototype.attachmentDidChangeAttributes=function(){return this.refresh(this.image),this.refresh()},o}(e.AttachmentView)}.call(this),function(){var t,n,i,o=function(t,e){function n(){this.constructor=t}for(var i in e)r.call(e,i)&&(t[i]=e[i]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},r={}.hasOwnProperty;i=e.makeElement,t=e.findInnerElement,n=e.getTextConfig,e.PieceView=function(r){function s(){var t;s.__super__.constructor.apply(this,arguments),this.piece=this.object,this.attributes=this.piece.getAttributes(),t=this.options,this.textConfig=t.textConfig,this.context=t.context,this.piece.attachment?this.attachment=this.piece.attachment:this.string=this.piece.toString()}var a;return o(s,r),s.prototype.createNodes=function(){var e,n,i,o,r,s;if(s=this.attachment?this.createAttachmentNodes():this.createStringNodes(),e=this.createElement()){for(i=t(e),n=0,o=s.length;o>n;n++)r=s[n],i.appendChild(r);s=[e]}return s},s.prototype.createAttachmentNodes=function(){var t,n;return t=this.attachment.isPreviewable()?e.PreviewableAttachmentView:e.AttachmentView,n=this.createChildView(t,this.piece.attachment,{piece:this.piece}),n.getNodes()},s.prototype.createStringNodes=function(){var t,e,n,o,r,s,a,u,c,l;if(null!=(u=this.textConfig)?u.plaintext:void 0)return[document.createTextNode(this.string)];for(a=[],c=this.string.split(\"\\n\"),n=e=0,o=c.length;o>e;n=++e)l=c[n],n>0&&(t=i(\"br\"),a.push(t)),(r=l.length)&&(s=document.createTextNode(this.preserveSpaces(l)),a.push(s));return a},s.prototype.createElement=function(){var t,e,o,r,s,a,u,c,l;c={},a=this.attributes;for(r in a)if(l=a[r],(t=n(r))&&(t.tagName&&(s=i(t.tagName),o?(o.appendChild(s),o=s):e=o=s),t.styleProperty&&(c[t.styleProperty]=l),t.style)){u=t.style;for(r in u)l=u[r],c[r]=l}if(Object.keys(c).length){null==e&&(e=i(\"span\"));for(r in c)l=c[r],e.style[r]=l}return e},s.prototype.createContainerElement=function(){var t,e,o,r,s;r=this.attributes;for(o in r)if(s=r[o],(e=n(o))&&e.groupTagName)return t={},t[o]=s,i(e.groupTagName,t)},a=e.NON_BREAKING_SPACE,s.prototype.preserveSpaces=function(t){return this.context.isLast&&(t=t.replace(/\\ $/,a)),t=t.replace(/(\\S)\\ {3}(\\S)/g,\"$1 \"+a+\" $2\").replace(/\\ {2}/g,a+\" \").replace(/\\ {2}/g,\" \"+a),(this.context.isFirst||this.context.followsWhitespace)&&(t=t.replace(/^\\ /,a)),t},s}(e.ObjectView)}.call(this),function(){var t=function(t,e){function i(){this.constructor=t\n}for(var o in e)n.call(e,o)&&(t[o]=e[o]);return i.prototype=e.prototype,t.prototype=new i,t.__super__=e.prototype,t},n={}.hasOwnProperty;e.TextView=function(n){function i(){i.__super__.constructor.apply(this,arguments),this.text=this.object,this.textConfig=this.options.textConfig}var o;return t(i,n),i.prototype.createNodes=function(){var t,n,i,r,s,a,u,c,l,h;for(a=[],c=e.ObjectGroup.groupObjects(this.getPieces()),r=c.length-1,i=n=0,s=c.length;s>n;i=++n)u=c[i],t={},0===i&&(t.isFirst=!0),i===r&&(t.isLast=!0),o(l)&&(t.followsWhitespace=!0),h=this.findOrCreateCachedChildView(e.PieceView,u,{textConfig:this.textConfig,context:t}),a.push.apply(a,h.getNodes()),l=u;return a},i.prototype.getPieces=function(){var t,e,n,i,o;for(i=this.text.getPieces(),o=[],t=0,e=i.length;e>t;t++)n=i[t],n.hasAttribute(\"blockBreak\")||o.push(n);return o},o=function(t){return/\\s$/.test(null!=t?t.toString():void 0)},i}(e.ObjectView)}.call(this),function(){var t,n,i,o=function(t,e){function n(){this.constructor=t}for(var i in e)r.call(e,i)&&(t[i]=e[i]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},r={}.hasOwnProperty;i=e.makeElement,n=e.getBlockConfig,t=e.config.css,e.BlockView=function(r){function s(){s.__super__.constructor.apply(this,arguments),this.block=this.object,this.attributes=this.block.getAttributes()}return o(s,r),s.prototype.createNodes=function(){var t,o,r,s,a,u,c,l,h,p,d;if(o=document.createComment(\"block\"),c=[o],this.block.isEmpty()?c.push(i(\"br\")):(p=null!=(l=n(this.block.getLastAttribute()))?l.text:void 0,d=this.findOrCreateCachedChildView(e.TextView,this.block.text,{textConfig:p}),c.push.apply(c,d.getNodes()),this.shouldAddExtraNewlineElement()&&c.push(i(\"br\"))),this.attributes.length)return c;for(h=e.config.blockAttributes[\"default\"].tagName,this.block.isRTL()&&(t={dir:\"rtl\"}),r=i({tagName:h,attributes:t}),s=0,a=c.length;a>s;s++)u=c[s],r.appendChild(u);return[r]},s.prototype.createContainerElement=function(e){var o,r,s,a,u;return o=this.attributes[e],u=n(o).tagName,0===e&&this.block.isRTL()&&(r={dir:\"rtl\"}),\"attachmentGallery\"===o&&(a=this.block.getBlockBreakPosition(),s=t.attachmentGallery+\" \"+t.attachmentGallery+\"--\"+a),i({tagName:u,className:s,attributes:r})},s.prototype.shouldAddExtraNewlineElement=function(){return/\\n\\n$/.test(this.block.toString())},s}(e.ObjectView)}.call(this),function(){var t,n,i=function(t,e){function n(){this.constructor=t}for(var i in e)o.call(e,i)&&(t[i]=e[i]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},o={}.hasOwnProperty;t=e.defer,n=e.makeElement,e.DocumentView=function(o){function r(){r.__super__.constructor.apply(this,arguments),this.element=this.options.element,this.elementStore=new e.ElementStore,this.setDocument(this.object)}var s,a,u;return i(r,o),r.render=function(t){var e,i;return e=n(\"div\"),i=new this(t,{element:e}),i.render(),i.sync(),e},r.prototype.setDocument=function(t){return t.isEqualTo(this.document)?void 0:this.document=this.object=t},r.prototype.render=function(){var t,i,o,r,s,a,u;if(this.childViews=[],this.shadowElement=n(\"div\"),!this.document.isEmpty()){for(s=e.ObjectGroup.groupObjects(this.document.getBlocks(),{asTree:!0}),a=[],t=0,i=s.length;i>t;t++)r=s[t],u=this.findOrCreateCachedChildView(e.BlockView,r),a.push(function(){var t,e,n,i;for(n=u.getNodes(),i=[],t=0,e=n.length;e>t;t++)o=n[t],i.push(this.shadowElement.appendChild(o));return i}.call(this));return a}},r.prototype.isSynced=function(){return s(this.shadowElement,this.element)},r.prototype.sync=function(){var t;for(t=this.createDocumentFragmentForSync();this.element.lastChild;)this.element.removeChild(this.element.lastChild);return this.element.appendChild(t),this.didSync()},r.prototype.didSync=function(){return this.elementStore.reset(a(this.element)),t(function(t){return function(){return t.garbageCollectCachedViews()}}(this))},r.prototype.createDocumentFragmentForSync=function(){var t,e,n,i,o,r,s,u,c,l;for(e=document.createDocumentFragment(),u=this.shadowElement.childNodes,n=0,o=u.length;o>n;n++)s=u[n],e.appendChild(s.cloneNode(!0));for(c=a(e),i=0,r=c.length;r>i;i++)t=c[i],(l=this.elementStore.remove(t))&&t.parentNode.replaceChild(l,t);return e},a=function(t){return t.querySelectorAll(\"[data-trix-store-key]\")},s=function(t,e){return u(t.innerHTML)===u(e.innerHTML)},u=function(t){return t.replace(/&nbsp;/g,\" \")},r}(e.ObjectView)}.call(this),function(){var t,n,i,o,r,s=function(t,e){return function(){return t.apply(e,arguments)}},a=function(t,e){function n(){this.constructor=t}for(var i in e)u.call(e,i)&&(t[i]=e[i]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},u={}.hasOwnProperty;i=e.findClosestElementFromNode,o=e.handleEvent,r=e.innerElementIsActive,n=e.defer,t=e.AttachmentView.attachmentSelector,e.CompositionController=function(u){function c(n,i){this.element=n,this.composition=i,this.didClickAttachment=s(this.didClickAttachment,this),this.didBlur=s(this.didBlur,this),this.didFocus=s(this.didFocus,this),this.documentView=new e.DocumentView(this.composition.document,{element:this.element}),o(\"focus\",{onElement:this.element,withCallback:this.didFocus}),o(\"blur\",{onElement:this.element,withCallback:this.didBlur}),o(\"click\",{onElement:this.element,matchingSelector:\"a[contenteditable=false]\",preventDefault:!0}),o(\"mousedown\",{onElement:this.element,matchingSelector:t,withCallback:this.didClickAttachment}),o(\"click\",{onElement:this.element,matchingSelector:\"a\"+t,preventDefault:!0})}return a(c,u),c.prototype.didFocus=function(){var t,e,n;return t=function(t){return function(){var e;return t.focused?void 0:(t.focused=!0,null!=(e=t.delegate)&&\"function\"==typeof e.compositionControllerDidFocus?e.compositionControllerDidFocus():void 0)}}(this),null!=(e=null!=(n=this.blurPromise)?n.then(t):void 0)?e:t()},c.prototype.didBlur=function(){return this.blurPromise=new Promise(function(t){return function(e){return n(function(){var n;return r(t.element)||(t.focused=null,null!=(n=t.delegate)&&\"function\"==typeof n.compositionControllerDidBlur&&n.compositionControllerDidBlur()),t.blurPromise=null,e()})}}(this))},c.prototype.didClickAttachment=function(t,e){var n,o,r;return n=this.findAttachmentForElement(e),o=null!=i(t.target,{matchingSelector:\"figcaption\"}),null!=(r=this.delegate)&&\"function\"==typeof r.compositionControllerDidSelectAttachment?r.compositionControllerDidSelectAttachment(n,{editCaption:o}):void 0},c.prototype.getSerializableElement=function(){return this.isEditingAttachment()?this.documentView.shadowElement:this.element},c.prototype.render=function(){var t,e,n;return this.revision!==this.composition.revision&&(this.documentView.setDocument(this.composition.document),this.documentView.render(),this.revision=this.composition.revision),this.canSyncDocumentView()&&!this.documentView.isSynced()&&(null!=(t=this.delegate)&&\"function\"==typeof t.compositionControllerWillSyncDocumentView&&t.compositionControllerWillSyncDocumentView(),this.documentView.sync(),null!=(e=this.delegate)&&\"function\"==typeof e.compositionControllerDidSyncDocumentView&&e.compositionControllerDidSyncDocumentView()),null!=(n=this.delegate)&&\"function\"==typeof n.compositionControllerDidRender?n.compositionControllerDidRender():void 0},c.prototype.rerenderViewForObject=function(t){return this.invalidateViewForObject(t),this.render()},c.prototype.invalidateViewForObject=function(t){return this.documentView.invalidateViewForObject(t)},c.prototype.isViewCachingEnabled=function(){return this.documentView.isViewCachingEnabled()},c.prototype.enableViewCaching=function(){return this.documentView.enableViewCaching()},c.prototype.disableViewCaching=function(){return this.documentView.disableViewCaching()},c.prototype.refreshViewCache=function(){return this.documentView.garbageCollectCachedViews()},c.prototype.isEditingAttachment=function(){return null!=this.attachmentEditor},c.prototype.installAttachmentEditorForAttachment=function(t,n){var i,o,r;if((null!=(r=this.attachmentEditor)?r.attachment:void 0)!==t&&(o=this.documentView.findElementForObject(t)))return this.uninstallAttachmentEditor(),i=this.composition.document.getAttachmentPieceForAttachment(t),this.attachmentEditor=new e.AttachmentEditorController(i,o,this.element,n),this.attachmentEditor.delegate=this},c.prototype.uninstallAttachmentEditor=function(){var t;return null!=(t=this.attachmentEditor)?t.uninstall():void 0},c.prototype.didUninstallAttachmentEditor=function(){return this.attachmentEditor=null,this.render()},c.prototype.attachmentEditorDidRequestUpdatingAttributesForAttachment=function(t,e){var n;return null!=(n=this.delegate)&&\"function\"==typeof n.compositionControllerWillUpdateAttachment&&n.compositionControllerWillUpdateAttachment(e),this.composition.updateAttributesForAttachment(t,e)},c.prototype.attachmentEditorDidRequestRemovingAttributeForAttachment=function(t,e){var n;return null!=(n=this.delegate)&&\"function\"==typeof n.compositionControllerWillUpdateAttachment&&n.compositionControllerWillUpdateAttachment(e),this.composition.removeAttributeForAttachment(t,e)},c.prototype.attachmentEditorDidRequestRemovalOfAttachment=function(t){var e;return null!=(e=this.delegate)&&\"function\"==typeof e.compositionControllerDidRequestRemovalOfAttachment?e.compositionControllerDidRequestRemovalOfAttachment(t):void 0},c.prototype.attachmentEditorDidRequestDeselectingAttachment=function(t){var e;return null!=(e=this.delegate)&&\"function\"==typeof e.compositionControllerDidRequestDeselectingAttachment?e.compositionControllerDidRequestDeselectingAttachment(t):void 0},c.prototype.canSyncDocumentView=function(){return!this.isEditingAttachment()},c.prototype.findAttachmentForElement=function(t){return this.composition.document.getAttachmentById(parseInt(t.dataset.trixId,10))},c}(e.BasicObject)}.call(this),function(){var t,n,i,o=function(t,e){return function(){return t.apply(e,arguments)}},r=function(t,e){function n(){this.constructor=t}for(var i in e)s.call(e,i)&&(t[i]=e[i]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},s={}.hasOwnProperty;n=e.handleEvent,i=e.triggerEvent,t=e.findClosestElementFromNode,e.ToolbarController=function(e){function s(t){this.element=t,this.didKeyDownDialogInput=o(this.didKeyDownDialogInput,this),this.didClickDialogButton=o(this.didClickDialogButton,this),this.didClickAttributeButton=o(this.didClickAttributeButton,this),this.didClickActionButton=o(this.didClickActionButton,this),this.attributes={},this.actions={},this.resetDialogInputs(),n(\"mousedown\",{onElement:this.element,matchingSelector:a,withCallback:this.didClickActionButton}),n(\"mousedown\",{onElement:this.element,matchingSelector:c,withCallback:this.didClickAttributeButton}),n(\"click\",{onElement:this.element,matchingSelector:v,preventDefault:!0}),n(\"click\",{onElement:this.element,matchingSelector:l,withCallback:this.didClickDialogButton}),n(\"keydown\",{onElement:this.element,matchingSelector:h,withCallback:this.didKeyDownDialogInput})}var a,u,c,l,h,p,d,f,g,m,v;return r(s,e),c=\"[data-trix-attribute]\",a=\"[data-trix-action]\",v=c+\", \"+a,p=\"[data-trix-dialog]\",u=p+\"[data-trix-active]\",l=p+\" [data-trix-method]\",h=p+\" [data-trix-input]\",s.prototype.didClickActionButton=function(t,e){var n,i,o;return null!=(i=this.delegate)&&i.toolbarDidClickButton(),t.preventDefault(),n=d(e),this.getDialog(n)?this.toggleDialog(n):null!=(o=this.delegate)?o.toolbarDidInvokeAction(n):void 0},s.prototype.didClickAttributeButton=function(t,e){var n,i,o;return null!=(i=this.delegate)&&i.toolbarDidClickButton(),t.preventDefault(),n=f(e),this.getDialog(n)?this.toggleDialog(n):null!=(o=this.delegate)&&o.toolbarDidToggleAttribute(n),this.refreshAttributeButtons()},s.prototype.didClickDialogButton=function(e,n){var i,o;return i=t(n,{matchingSelector:p}),o=n.getAttribute(\"data-trix-method\"),this[o].call(this,i)},s.prototype.didKeyDownDialogInput=function(t,e){var n,i;return 13===t.keyCode&&(t.preventDefault(),n=e.getAttribute(\"name\"),i=this.getDialog(n),this.setAttribute(i)),27===t.keyCode?(t.preventDefault(),this.hideDialog()):void 0},s.prototype.updateActions=function(t){return this.actions=t,this.refreshActionButtons()},s.prototype.refreshActionButtons=function(){return this.eachActionButton(function(t){return function(e,n){return e.disabled=t.actions[n]===!1}}(this))},s.prototype.eachActionButton=function(t){var e,n,i,o,r;for(o=this.element.querySelectorAll(a),r=[],n=0,i=o.length;i>n;n++)e=o[n],r.push(t(e,d(e)));return r},s.prototype.updateAttributes=function(t){return this.attributes=t,this.refreshAttributeButtons()},s.prototype.refreshAttributeButtons=function(){return this.eachAttributeButton(function(t){return function(e,n){return e.disabled=t.attributes[n]===!1,t.attributes[n]||t.dialogIsVisible(n)?(e.setAttribute(\"data-trix-active\",\"\"),e.classList.add(\"trix-active\")):(e.removeAttribute(\"data-trix-active\"),e.classList.remove(\"trix-active\"))}}(this))},s.prototype.eachAttributeButton=function(t){var e,n,i,o,r;for(o=this.element.querySelectorAll(c),r=[],n=0,i=o.length;i>n;n++)e=o[n],r.push(t(e,f(e)));return r},s.prototype.applyKeyboardCommand=function(t){var e,n,o,r,s,a,u;for(s=JSON.stringify(t.sort()),u=this.element.querySelectorAll(\"[data-trix-key]\"),r=0,a=u.length;a>r;r++)if(e=u[r],o=e.getAttribute(\"data-trix-key\").split(\"+\"),n=JSON.stringify(o.sort()),n===s)return i(\"mousedown\",{onElement:e}),!0;return!1},s.prototype.dialogIsVisible=function(t){var e;return(e=this.getDialog(t))?e.hasAttribute(\"data-trix-active\"):void 0},s.prototype.toggleDialog=function(t){return this.dialogIsVisible(t)?this.hideDialog():this.showDialog(t)},s.prototype.showDialog=function(t){var e,n,i,o,r,s,a,u,c,l;for(this.hideDialog(),null!=(a=this.delegate)&&a.toolbarWillShowDialog(),i=this.getDialog(t),i.setAttribute(\"data-trix-active\",\"\"),i.classList.add(\"trix-active\"),u=i.querySelectorAll(\"input[disabled]\"),o=0,s=u.length;s>o;o++)n=u[o],n.removeAttribute(\"disabled\");return(e=f(i))&&(r=m(i,t))&&(r.value=null!=(c=this.attributes[e])?c:\"\",r.select()),null!=(l=this.delegate)?l.toolbarDidShowDialog(t):void 0},s.prototype.setAttribute=function(t){var e,n,i;return e=f(t),n=m(t,e),n.willValidate&&!n.checkValidity()?(n.setAttribute(\"data-trix-validate\",\"\"),n.classList.add(\"trix-validate\"),n.focus()):(null!=(i=this.delegate)&&i.toolbarDidUpdateAttribute(e,n.value),this.hideDialog())},s.prototype.removeAttribute=function(t){var e,n;return e=f(t),null!=(n=this.delegate)&&n.toolbarDidRemoveAttribute(e),this.hideDialog()},s.prototype.hideDialog=function(){var t,e;return(t=this.element.querySelector(u))?(t.removeAttribute(\"data-trix-active\"),t.classList.remove(\"trix-active\"),this.resetDialogInputs(),null!=(e=this.delegate)?e.toolbarDidHideDialog(g(t)):void 0):void 0},s.prototype.resetDialogInputs=function(){var t,e,n,i,o;for(i=this.element.querySelectorAll(h),o=[],t=0,n=i.length;n>t;t++)e=i[t],e.setAttribute(\"disabled\",\"disabled\"),e.removeAttribute(\"data-trix-validate\"),o.push(e.classList.remove(\"trix-validate\"));return o},s.prototype.getDialog=function(t){return this.element.querySelector(\"[data-trix-dialog=\"+t+\"]\")},m=function(t,e){return null==e&&(e=f(t)),t.querySelector(\"[data-trix-input][name='\"+e+\"']\")},d=function(t){return t.getAttribute(\"data-trix-action\")},f=function(t){var e;return null!=(e=t.getAttribute(\"data-trix-attribute\"))?e:t.getAttribute(\"data-trix-dialog-attribute\")},g=function(t){return t.getAttribute(\"data-trix-dialog\")},s}(e.BasicObject)}.call(this),function(){var t=function(t,e){function i(){this.constructor=t}for(var o in e)n.call(e,o)&&(t[o]=e[o]);return i.prototype=e.prototype,t.prototype=new i,t.__super__=e.prototype,t},n={}.hasOwnProperty;e.ImagePreloadOperation=function(e){function n(t){this.url=t}return t(n,e),n.prototype.perform=function(t){var e;return e=new Image,e.onload=function(n){return function(){return e.width=n.width=e.naturalWidth,e.height=n.height=e.naturalHeight,t(!0,e)}}(this),e.onerror=function(){return t(!1)},e.src=this.url},n}(e.Operation)}.call(this),function(){var t=function(t,e){return function(){return t.apply(e,arguments)}},n=function(t,e){function n(){this.constructor=t}for(var o in e)i.call(e,o)&&(t[o]=e[o]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},i={}.hasOwnProperty;e.Attachment=function(i){function o(n){null==n&&(n={}),this.releaseFile=t(this.releaseFile,this),o.__super__.constructor.apply(this,arguments),this.attributes=e.Hash.box(n),this.didChangeAttributes()}return n(o,i),o.previewablePattern=/^image(\\/(gif|png|jpe?g)|$)/,o.attachmentForFile=function(t){var e,n;return n=this.attributesForFile(t),e=new this(n),e.setFile(t),e},o.attributesForFile=function(t){return new e.Hash({filename:t.name,filesize:t.size,contentType:t.type})},o.fromJSON=function(t){return new this(t)},o.prototype.getAttribute=function(t){return this.attributes.get(t)},o.prototype.hasAttribute=function(t){return this.attributes.has(t)},o.prototype.getAttributes=function(){return this.attributes.toObject()},o.prototype.setAttributes=function(t){var e,n,i;return null==t&&(t={}),e=this.attributes.merge(t),this.attributes.isEqualTo(e)?void 0:(this.attributes=e,this.didChangeAttributes(),null!=(n=this.previewDelegate)&&\"function\"==typeof n.attachmentDidChangeAttributes&&n.attachmentDidChangeAttributes(this),null!=(i=this.delegate)&&\"function\"==typeof i.attachmentDidChangeAttributes?i.attachmentDidChangeAttributes(this):void 0)},o.prototype.didChangeAttributes=function(){return this.isPreviewable()?this.preloadURL():void 0},o.prototype.isPending=function(){return null!=this.file&&!(this.getURL()||this.getHref())},o.prototype.isPreviewable=function(){return this.attributes.has(\"previewable\")?this.attributes.get(\"previewable\"):this.constructor.previewablePattern.test(this.getContentType())},o.prototype.getType=function(){return this.hasContent()?\"content\":this.isPreviewable()?\"preview\":\"file\"},o.prototype.getURL=function(){return this.attributes.get(\"url\")},o.prototype.getHref=function(){return this.attributes.get(\"href\")},o.prototype.getFilename=function(){var t;return null!=(t=this.attributes.get(\"filename\"))?t:\"\"},o.prototype.getFilesize=function(){return this.attributes.get(\"filesize\")},o.prototype.getFormattedFilesize=function(){var t;return t=this.attributes.get(\"filesize\"),\"number\"==typeof t?e.config.fileSize.formatter(t):\"\"},o.prototype.getExtension=function(){var t;return null!=(t=this.getFilename().match(/\\.(\\w+)$/))?t[1].toLowerCase():void 0},o.prototype.getContentType=function(){return this.attributes.get(\"contentType\")},o.prototype.hasContent=function(){return this.attributes.has(\"content\")},o.prototype.getContent=function(){return this.attributes.get(\"content\")},o.prototype.getWidth=function(){return this.attributes.get(\"width\")},o.prototype.getHeight=function(){return this.attributes.get(\"height\")},o.prototype.getFile=function(){return this.file},o.prototype.setFile=function(t){return this.file=t,this.isPreviewable()?this.preloadFile():void 0},o.prototype.releaseFile=function(){return this.releasePreloadedFile(),this.file=null},o.prototype.getUploadProgress=function(){var t;return null!=(t=this.uploadProgress)?t:0},o.prototype.setUploadProgress=function(t){var e;return this.uploadProgress!==t?(this.uploadProgress=t,null!=(e=this.uploadProgressDelegate)&&\"function\"==typeof e.attachmentDidChangeUploadProgress?e.attachmentDidChangeUploadProgress(this):void 0):void 0},o.prototype.toJSON=function(){return this.getAttributes()},o.prototype.getCacheKey=function(){return[o.__super__.getCacheKey.apply(this,arguments),this.attributes.getCacheKey(),this.getPreviewURL()].join(\"/\")},o.prototype.getPreviewURL=function(){return this.previewURL||this.preloadingURL},o.prototype.setPreviewURL=function(t){var e,n;return t!==this.getPreviewURL()?(this.previewURL=t,null!=(e=this.previewDelegate)&&\"function\"==typeof e.attachmentDidChangeAttributes&&e.attachmentDidChangeAttributes(this),null!=(n=this.delegate)&&\"function\"==typeof n.attachmentDidChangePreviewURL?n.attachmentDidChangePreviewURL(this):void 0):void 0},o.prototype.preloadURL=function(){return this.preload(this.getURL(),this.releaseFile)},o.prototype.preloadFile=function(){return this.file?(this.fileObjectURL=URL.createObjectURL(this.file),this.preload(this.fileObjectURL)):void 0},o.prototype.releasePreloadedFile=function(){return this.fileObjectURL?(URL.revokeObjectURL(this.fileObjectURL),this.fileObjectURL=null):void 0},o.prototype.preload=function(t,n){var i;return t&&t!==this.getPreviewURL()?(this.preloadingURL=t,i=new e.ImagePreloadOperation(t),i.then(function(e){return function(i){var o,r;return r=i.width,o=i.height,e.getWidth()&&e.getHeight()||e.setAttributes({width:r,height:o}),e.preloadingURL=null,e.setPreviewURL(t),\"function\"==typeof n?n():void 0}}(this))[\"catch\"](function(t){return function(){return t.preloadingURL=null,\"function\"==typeof n?n():void 0}}(this))):void 0},o}(e.Object)}.call(this),function(){var t=function(t,e){function i(){this.constructor=t}for(var o in e)n.call(e,o)&&(t[o]=e[o]);return i.prototype=e.prototype,t.prototype=new i,t.__super__=e.prototype,t},n={}.hasOwnProperty;e.Piece=function(n){function i(t,n){null==n&&(n={}),i.__super__.constructor.apply(this,arguments),this.attributes=e.Hash.box(n)}return t(i,n),i.types={},i.registerType=function(t,e){return e.type=t,this.types[t]=e},i.fromJSON=function(t){var e;return(e=this.types[t.type])?e.fromJSON(t):void 0},i.prototype.copyWithAttributes=function(t){return new this.constructor(this.getValue(),t)},i.prototype.copyWithAdditionalAttributes=function(t){return this.copyWithAttributes(this.attributes.merge(t))},i.prototype.copyWithoutAttribute=function(t){return this.copyWithAttributes(this.attributes.remove(t))},i.prototype.copy=function(){return this.copyWithAttributes(this.attributes)},i.prototype.getAttribute=function(t){return this.attributes.get(t)},i.prototype.getAttributesHash=function(){return this.attributes},i.prototype.getAttributes=function(){return this.attributes.toObject()},i.prototype.getCommonAttributes=function(){var t,e,n;return(n=pieceList.getPieceAtIndex(0))?(t=n.attributes,e=t.getKeys(),pieceList.eachPiece(function(n){return e=t.getKeysCommonToHash(n.attributes),t=t.slice(e)}),t.toObject()):{}},i.prototype.hasAttribute=function(t){return this.attributes.has(t)},i.prototype.hasSameStringValueAsPiece=function(t){return null!=t&&this.toString()===t.toString()},i.prototype.hasSameAttributesAsPiece=function(t){return null!=t&&(this.attributes===t.attributes||this.attributes.isEqualTo(t.attributes))},i.prototype.isBlockBreak=function(){return!1},i.prototype.isEqualTo=function(t){return i.__super__.isEqualTo.apply(this,arguments)||this.hasSameConstructorAs(t)&&this.hasSameStringValueAsPiece(t)&&this.hasSameAttributesAsPiece(t)},i.prototype.isEmpty=function(){return 0===this.length},i.prototype.isSerializable=function(){return!0},i.prototype.toJSON=function(){return{type:this.constructor.type,attributes:this.getAttributes()}},i.prototype.contentsForInspection=function(){return{type:this.constructor.type,attributes:this.attributes.inspect()}},i.prototype.canBeGrouped=function(){return this.hasAttribute(\"href\")},i.prototype.canBeGroupedWith=function(t){return this.getAttribute(\"href\")===t.getAttribute(\"href\")},i.prototype.getLength=function(){return this.length},i.prototype.canBeConsolidatedWith=function(){return!1},i}(e.Object)}.call(this),function(){var t=function(t,e){function i(){this.constructor=t}for(var o in e)n.call(e,o)&&(t[o]=e[o]);return i.prototype=e.prototype,t.prototype=new i,t.__super__=e.prototype,t},n={}.hasOwnProperty;e.Piece.registerType(\"attachment\",e.AttachmentPiece=function(n){function i(t){this.attachment=t,i.__super__.constructor.apply(this,arguments),this.length=1,this.ensureAttachmentExclusivelyHasAttribute(\"href\"),this.attachment.hasContent()||this.removeProhibitedAttributes()}return t(i,n),i.fromJSON=function(t){return new this(e.Attachment.fromJSON(t.attachment),t.attributes)},i.permittedAttributes=[\"caption\",\"presentation\"],i.prototype.ensureAttachmentExclusivelyHasAttribute=function(t){return this.hasAttribute(t)?(this.attachment.hasAttribute(t)||this.attachment.setAttributes(this.attributes.slice(t)),this.attributes=this.attributes.remove(t)):void 0},i.prototype.removeProhibitedAttributes=function(){var t;return t=this.attributes.slice(this.constructor.permittedAttributes),t.isEqualTo(this.attributes)?void 0:this.attributes=t},i.prototype.getValue=function(){return this.attachment},i.prototype.isSerializable=function(){return!this.attachment.isPending()},i.prototype.getCaption=function(){var t;return null!=(t=this.attributes.get(\"caption\"))?t:\"\"},i.prototype.isEqualTo=function(t){var e;return i.__super__.isEqualTo.apply(this,arguments)&&this.attachment.id===(null!=t&&null!=(e=t.attachment)?e.id:void 0)},i.prototype.toString=function(){return e.OBJECT_REPLACEMENT_CHARACTER},i.prototype.toJSON=function(){var t;return t=i.__super__.toJSON.apply(this,arguments),t.attachment=this.attachment,t},i.prototype.getCacheKey=function(){return[i.__super__.getCacheKey.apply(this,arguments),this.attachment.getCacheKey()].join(\"/\")},i.prototype.toConsole=function(){return JSON.stringify(this.toString())},i}(e.Piece))}.call(this),function(){var t,n=function(t,e){function n(){this.constructor=t}for(var o in e)i.call(e,o)&&(t[o]=e[o]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},i={}.hasOwnProperty;t=e.normalizeNewlines,e.Piece.registerType(\"string\",e.StringPiece=function(e){function i(e){i.__super__.constructor.apply(this,arguments),this.string=t(e),this.length=this.string.length}return n(i,e),i.fromJSON=function(t){return new this(t.string,t.attributes)},i.prototype.getValue=function(){return this.string},i.prototype.toString=function(){return this.string.toString()},i.prototype.isBlockBreak=function(){return\"\\n\"===this.toString()&&this.getAttribute(\"blockBreak\")===!0},i.prototype.toJSON=function(){var t;return t=i.__super__.toJSON.apply(this,arguments),t.string=this.string,t},i.prototype.canBeConsolidatedWith=function(t){return null!=t&&this.hasSameConstructorAs(t)&&this.hasSameAttributesAsPiece(t)},i.prototype.consolidateWith=function(t){return new this.constructor(this.toString()+t.toString(),this.attributes)},i.prototype.splitAtOffset=function(t){var e,n;return 0===t?(e=null,n=this):t===this.length?(e=this,n=null):(e=new this.constructor(this.string.slice(0,t),this.attributes),n=new this.constructor(this.string.slice(t),this.attributes)),[e,n]},i.prototype.toConsole=function(){var t;return t=this.string,t.length>15&&(t=t.slice(0,14)+\"\\u2026\"),JSON.stringify(t.toString())},i}(e.Piece))}.call(this),function(){var t,n=function(t,e){function n(){this.constructor=t}for(var o in e)i.call(e,o)&&(t[o]=e[o]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},i={}.hasOwnProperty,o=[].slice;t=e.spliceArray,e.SplittableList=function(e){function i(t){null==t&&(t=[]),i.__super__.constructor.apply(this,arguments),this.objects=t.slice(0),this.length=this.objects.length}var r,s,a;return n(i,e),i.box=function(t){return t instanceof this?t:new this(t)},i.prototype.indexOf=function(t){return this.objects.indexOf(t)},i.prototype.splice=function(){var e;return e=1<=arguments.length?o.call(arguments,0):[],new this.constructor(t.apply(null,[this.objects].concat(o.call(e))))},i.prototype.eachObject=function(t){var e,n,i,o,r,s;for(r=this.objects,s=[],n=e=0,i=r.length;i>e;n=++e)o=r[n],s.push(t(o,n));return s},i.prototype.insertObjectAtIndex=function(t,e){return this.splice(e,0,t)},i.prototype.insertSplittableListAtIndex=function(t,e){return this.splice.apply(this,[e,0].concat(o.call(t.objects)))},i.prototype.insertSplittableListAtPosition=function(t,e){var n,i,o;return o=this.splitObjectAtPosition(e),i=o[0],n=o[1],new this.constructor(i).insertSplittableListAtIndex(t,n)},i.prototype.editObjectAtIndex=function(t,e){return this.replaceObjectAtIndex(e(this.objects[t]),t)},i.prototype.replaceObjectAtIndex=function(t,e){return this.splice(e,1,t)},i.prototype.removeObjectAtIndex=function(t){return this.splice(t,1)},i.prototype.getObjectAtIndex=function(t){return this.objects[t]},i.prototype.getSplittableListInRange=function(t){var e,n,i,o;return i=this.splitObjectsAtRange(t),n=i[0],e=i[1],o=i[2],new this.constructor(n.slice(e,o+1))},i.prototype.selectSplittableList=function(t){var e,n;return n=function(){var n,i,o,r;for(o=this.objects,r=[],n=0,i=o.length;i>n;n++)e=o[n],t(e)&&r.push(e);return r}.call(this),new this.constructor(n)},i.prototype.removeObjectsInRange=function(t){var e,n,i,o;return i=this.splitObjectsAtRange(t),n=i[0],e=i[1],o=i[2],new this.constructor(n).splice(e,o-e+1)},i.prototype.transformObjectsInRange=function(t,e){var n,i,o,r,s,a,u;return s=this.splitObjectsAtRange(t),r=s[0],i=s[1],a=s[2],u=function(){var t,s,u;for(u=[],n=t=0,s=r.length;s>t;n=++t)o=r[n],u.push(n>=i&&a>=n?e(o):o);return u}(),new this.constructor(u)},i.prototype.splitObjectsAtRange=function(t){var e,n,i,o,s,u;return o=this.splitObjectAtPosition(a(t)),n=o[0],e=o[1],i=o[2],s=new this.constructor(n).splitObjectAtPosition(r(t)+i),n=s[0],u=s[1],[n,e,u-1]},i.prototype.getObjectAtPosition=function(t){var e,n,i;return i=this.findIndexAndOffsetAtPosition(t),e=i.index,n=i.offset,this.objects[e]},i.prototype.splitObjectAtPosition=function(t){var e,n,i,o,r,s,a,u,c,l;return s=this.findIndexAndOffsetAtPosition(t),e=s.index,r=s.offset,o=this.objects.slice(0),null!=e?0===r?(c=e,l=0):(i=this.getObjectAtIndex(e),a=i.splitAtOffset(r),n=a[0],u=a[1],o.splice(e,1,n,u),c=e+1,l=n.getLength()-r):(c=o.length,l=0),[o,c,l]},i.prototype.consolidate=function(){var t,e,n,i,o,r;for(i=[],o=this.objects[0],r=this.objects.slice(1),t=0,e=r.length;e>t;t++)n=r[t],(\"function\"==typeof o.canBeConsolidatedWith?o.canBeConsolidatedWith(n):void 0)?o=o.consolidateWith(n):(i.push(o),o=n);return null!=o&&i.push(o),new this.constructor(i)},i.prototype.consolidateFromIndexToIndex=function(t,e){var n,i,r;return i=this.objects.slice(0),r=i.slice(t,e+1),n=new this.constructor(r).consolidate().toArray(),this.splice.apply(this,[t,r.length].concat(o.call(n)))},i.prototype.findIndexAndOffsetAtPosition=function(t){var e,n,i,o,r,s,a;for(e=0,a=this.objects,i=n=0,o=a.length;o>n;i=++n){if(s=a[i],r=e+s.getLength(),t>=e&&r>t)return{index:i,offset:t-e};e=r}return{index:null,offset:null}},i.prototype.findPositionAtIndexAndOffset=function(t,e){var n,i,o,r,s,a;for(s=0,a=this.objects,n=i=0,o=a.length;o>i;n=++i)if(r=a[n],t>n)s+=r.getLength();else if(n===t){s+=e;break}return s},i.prototype.getEndPosition=function(){var t,e;return null!=this.endPosition?this.endPosition:this.endPosition=function(){var n,i,o;for(e=0,o=this.objects,n=0,i=o.length;i>n;n++)t=o[n],e+=t.getLength();return e}.call(this)},i.prototype.toString=function(){return this.objects.join(\"\")},i.prototype.toArray=function(){return this.objects.slice(0)},i.prototype.toJSON=function(){return this.toArray()},i.prototype.isEqualTo=function(t){return i.__super__.isEqualTo.apply(this,arguments)||s(this.objects,null!=t?t.objects:void 0)},s=function(t,e){var n,i,o,r,s;if(null==e&&(e=[]),t.length!==e.length)return!1;for(s=!0,i=n=0,o=t.length;o>n;i=++n)r=t[i],s&&!r.isEqualTo(e[i])&&(s=!1);return s},i.prototype.contentsForInspection=function(){var t;return{objects:\"[\"+function(){var e,n,i,o;for(i=this.objects,o=[],e=0,n=i.length;n>e;e++)t=i[e],o.push(t.inspect());return o}.call(this).join(\", \")+\"]\"}},a=function(t){return t[0]},r=function(t){return t[1]},i}(e.Object)}.call(this),function(){var t=function(t,e){function i(){this.constructor=t}for(var o in e)n.call(e,o)&&(t[o]=e[o]);return i.prototype=e.prototype,t.prototype=new i,t.__super__=e.prototype,t},n={}.hasOwnProperty;e.Text=function(n){function i(t){var n;null==t&&(t=[]),i.__super__.constructor.apply(this,arguments),this.pieceList=new e.SplittableList(function(){var e,i,o;for(o=[],e=0,i=t.length;i>e;e++)n=t[e],n.isEmpty()||o.push(n);return o}())}return t(i,n),i.textForAttachmentWithAttributes=function(t,n){var i;return i=new e.AttachmentPiece(t,n),new this([i])},i.textForStringWithAttributes=function(t,n){var i;return i=new e.StringPiece(t,n),new this([i])},i.fromJSON=function(t){var n,i;return i=function(){var i,o,r;for(r=[],i=0,o=t.length;o>i;i++)n=t[i],r.push(e.Piece.fromJSON(n));return r}(),new this(i)},i.prototype.copy=function(){return this.copyWithPieceList(this.pieceList)},i.prototype.copyWithPieceList=function(t){return new this.constructor(t.consolidate().toArray())},i.prototype.copyUsingObjectMap=function(t){var e,n;return n=function(){var n,i,o,r,s;for(o=this.getPieces(),s=[],n=0,i=o.length;i>n;n++)e=o[n],s.push(null!=(r=t.find(e))?r:e);return s}.call(this),new this.constructor(n)},i.prototype.appendText=function(t){return this.insertTextAtPosition(t,this.getLength())},i.prototype.insertTextAtPosition=function(t,e){return this.copyWithPieceList(this.pieceList.insertSplittableListAtPosition(t.pieceList,e))\n},i.prototype.removeTextAtRange=function(t){return this.copyWithPieceList(this.pieceList.removeObjectsInRange(t))},i.prototype.replaceTextAtRange=function(t,e){return this.removeTextAtRange(e).insertTextAtPosition(t,e[0])},i.prototype.moveTextFromRangeToPosition=function(t,e){var n,i;if(!(t[0]<=e&&e<=t[1]))return i=this.getTextAtRange(t),n=i.getLength(),t[0]<e&&(e-=n),this.removeTextAtRange(t).insertTextAtPosition(i,e)},i.prototype.addAttributeAtRange=function(t,e,n){var i;return i={},i[t]=e,this.addAttributesAtRange(i,n)},i.prototype.addAttributesAtRange=function(t,e){return this.copyWithPieceList(this.pieceList.transformObjectsInRange(e,function(e){return e.copyWithAdditionalAttributes(t)}))},i.prototype.removeAttributeAtRange=function(t,e){return this.copyWithPieceList(this.pieceList.transformObjectsInRange(e,function(e){return e.copyWithoutAttribute(t)}))},i.prototype.setAttributesAtRange=function(t,e){return this.copyWithPieceList(this.pieceList.transformObjectsInRange(e,function(e){return e.copyWithAttributes(t)}))},i.prototype.getAttributesAtPosition=function(t){var e,n;return null!=(e=null!=(n=this.pieceList.getObjectAtPosition(t))?n.getAttributes():void 0)?e:{}},i.prototype.getCommonAttributes=function(){var t,n;return t=function(){var t,e,i,o;for(i=this.pieceList.toArray(),o=[],t=0,e=i.length;e>t;t++)n=i[t],o.push(n.getAttributes());return o}.call(this),e.Hash.fromCommonAttributesOfObjects(t).toObject()},i.prototype.getCommonAttributesAtRange=function(t){var e;return null!=(e=this.getTextAtRange(t).getCommonAttributes())?e:{}},i.prototype.getExpandedRangeForAttributeAtOffset=function(t,e){var n,i,o;for(n=o=e,i=this.getLength();n>0&&this.getCommonAttributesAtRange([n-1,o])[t];)n--;for(;i>o&&this.getCommonAttributesAtRange([e,o+1])[t];)o++;return[n,o]},i.prototype.getTextAtRange=function(t){return this.copyWithPieceList(this.pieceList.getSplittableListInRange(t))},i.prototype.getStringAtRange=function(t){return this.pieceList.getSplittableListInRange(t).toString()},i.prototype.getStringAtPosition=function(t){return this.getStringAtRange([t,t+1])},i.prototype.startsWithString=function(t){return this.getStringAtRange([0,t.length])===t},i.prototype.endsWithString=function(t){var e;return e=this.getLength(),this.getStringAtRange([e-t.length,e])===t},i.prototype.getAttachmentPieces=function(){var t,e,n,i,o;for(i=this.pieceList.toArray(),o=[],t=0,e=i.length;e>t;t++)n=i[t],null!=n.attachment&&o.push(n);return o},i.prototype.getAttachments=function(){var t,e,n,i,o;for(i=this.getAttachmentPieces(),o=[],t=0,e=i.length;e>t;t++)n=i[t],o.push(n.attachment);return o},i.prototype.getAttachmentAndPositionById=function(t){var e,n,i,o,r,s;for(o=0,r=this.pieceList.toArray(),e=0,n=r.length;n>e;e++){if(i=r[e],(null!=(s=i.attachment)?s.id:void 0)===t)return{attachment:i.attachment,position:o};o+=i.length}return{attachment:null,position:null}},i.prototype.getAttachmentById=function(t){var e,n,i;return i=this.getAttachmentAndPositionById(t),e=i.attachment,n=i.position,e},i.prototype.getRangeOfAttachment=function(t){var e,n;return n=this.getAttachmentAndPositionById(t.id),t=n.attachment,e=n.position,null!=t?[e,e+1]:void 0},i.prototype.updateAttributesForAttachment=function(t,e){var n;return(n=this.getRangeOfAttachment(e))?this.addAttributesAtRange(t,n):this},i.prototype.getLength=function(){return this.pieceList.getEndPosition()},i.prototype.isEmpty=function(){return 0===this.getLength()},i.prototype.isEqualTo=function(t){var e;return i.__super__.isEqualTo.apply(this,arguments)||(null!=t&&null!=(e=t.pieceList)?e.isEqualTo(this.pieceList):void 0)},i.prototype.isBlockBreak=function(){return 1===this.getLength()&&this.pieceList.getObjectAtIndex(0).isBlockBreak()},i.prototype.eachPiece=function(t){return this.pieceList.eachObject(t)},i.prototype.getPieces=function(){return this.pieceList.toArray()},i.prototype.getPieceAtPosition=function(t){return this.pieceList.getObjectAtPosition(t)},i.prototype.contentsForInspection=function(){return{pieceList:this.pieceList.inspect()}},i.prototype.toSerializableText=function(){var t;return t=this.pieceList.selectSplittableList(function(t){return t.isSerializable()}),this.copyWithPieceList(t)},i.prototype.toString=function(){return this.pieceList.toString()},i.prototype.toJSON=function(){return this.pieceList.toJSON()},i.prototype.toConsole=function(){var t;return JSON.stringify(function(){var e,n,i,o;for(i=this.pieceList.toArray(),o=[],e=0,n=i.length;n>e;e++)t=i[e],o.push(JSON.parse(t.toConsole()));return o}.call(this))},i.prototype.getDirection=function(){return e.getDirection(this.toString())},i.prototype.isRTL=function(){return\"rtl\"===this.getDirection()},i}(e.Object)}.call(this),function(){var t,n,i,o,r,s=function(t,e){function n(){this.constructor=t}for(var i in e)a.call(e,i)&&(t[i]=e[i]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},a={}.hasOwnProperty,u=[].indexOf||function(t){for(var e=0,n=this.length;n>e;e++)if(e in this&&this[e]===t)return e;return-1},c=[].slice;t=e.arraysAreEqual,r=e.spliceArray,i=e.getBlockConfig,n=e.getBlockAttributeNames,o=e.getListAttributeNames,e.Block=function(n){function a(t,n){null==t&&(t=new e.Text),null==n&&(n=[]),a.__super__.constructor.apply(this,arguments),this.text=h(t),this.attributes=n}var l,h,p,d,f,g,m,v,y;return s(a,n),a.fromJSON=function(t){var n;return n=e.Text.fromJSON(t.text),new this(n,t.attributes)},a.prototype.isEmpty=function(){return this.text.isBlockBreak()},a.prototype.isEqualTo=function(e){return a.__super__.isEqualTo.apply(this,arguments)||this.text.isEqualTo(null!=e?e.text:void 0)&&t(this.attributes,null!=e?e.attributes:void 0)},a.prototype.copyWithText=function(t){return new this.constructor(t,this.attributes)},a.prototype.copyWithoutText=function(){return this.copyWithText(null)},a.prototype.copyWithAttributes=function(t){return new this.constructor(this.text,t)},a.prototype.copyWithoutAttributes=function(){return this.copyWithAttributes(null)},a.prototype.copyUsingObjectMap=function(t){var e;return this.copyWithText((e=t.find(this.text))?e:this.text.copyUsingObjectMap(t))},a.prototype.addAttribute=function(t){var e;return e=this.attributes.concat(d(t)),this.copyWithAttributes(e)},a.prototype.removeAttribute=function(t){var e,n;return n=i(t).listAttribute,e=g(g(this.attributes,t),n),this.copyWithAttributes(e)},a.prototype.removeLastAttribute=function(){return this.removeAttribute(this.getLastAttribute())},a.prototype.getLastAttribute=function(){return f(this.attributes)},a.prototype.getAttributes=function(){return this.attributes.slice(0)},a.prototype.getAttributeLevel=function(){return this.attributes.length},a.prototype.getAttributeAtLevel=function(t){return this.attributes[t-1]},a.prototype.hasAttribute=function(t){return u.call(this.attributes,t)>=0},a.prototype.hasAttributes=function(){return this.getAttributeLevel()>0},a.prototype.getLastNestableAttribute=function(){return f(this.getNestableAttributes())},a.prototype.getNestableAttributes=function(){var t,e,n,o,r;for(o=this.attributes,r=[],e=0,n=o.length;n>e;e++)t=o[e],i(t).nestable&&r.push(t);return r},a.prototype.getNestingLevel=function(){return this.getNestableAttributes().length},a.prototype.decreaseNestingLevel=function(){var t;return(t=this.getLastNestableAttribute())?this.removeAttribute(t):this},a.prototype.increaseNestingLevel=function(){var t,e,n;return(t=this.getLastNestableAttribute())?(n=this.attributes.lastIndexOf(t),e=r.apply(null,[this.attributes,n+1,0].concat(c.call(d(t)))),this.copyWithAttributes(e)):this},a.prototype.getListItemAttributes=function(){var t,e,n,o,r;for(o=this.attributes,r=[],e=0,n=o.length;n>e;e++)t=o[e],i(t).listAttribute&&r.push(t);return r},a.prototype.isListItem=function(){var t;return null!=(t=i(this.getLastAttribute()))?t.listAttribute:void 0},a.prototype.isTerminalBlock=function(){var t;return null!=(t=i(this.getLastAttribute()))?t.terminal:void 0},a.prototype.breaksOnReturn=function(){var t;return null!=(t=i(this.getLastAttribute()))?t.breakOnReturn:void 0},a.prototype.findLineBreakInDirectionFromPosition=function(t,e){var n,i;return i=this.toString(),n=function(){switch(t){case\"forward\":return i.indexOf(\"\\n\",e);case\"backward\":return i.slice(0,e).lastIndexOf(\"\\n\")}}(),-1!==n?n:void 0},a.prototype.contentsForInspection=function(){return{text:this.text.inspect(),attributes:this.attributes}},a.prototype.toString=function(){return this.text.toString()},a.prototype.toJSON=function(){return{text:this.text,attributes:this.attributes}},a.prototype.getDirection=function(){return this.text.getDirection()},a.prototype.isRTL=function(){return this.text.isRTL()},a.prototype.getLength=function(){return this.text.getLength()},a.prototype.canBeConsolidatedWith=function(t){return!this.hasAttributes()&&!t.hasAttributes()&&this.getDirection()===t.getDirection()},a.prototype.consolidateWith=function(t){var n,i;return n=e.Text.textForStringWithAttributes(\"\\n\"),i=this.getTextWithoutBlockBreak().appendText(n),this.copyWithText(i.appendText(t.text))},a.prototype.splitAtOffset=function(t){var e,n;return 0===t?(e=null,n=this):t===this.getLength()?(e=this,n=null):(e=this.copyWithText(this.text.getTextAtRange([0,t])),n=this.copyWithText(this.text.getTextAtRange([t,this.getLength()]))),[e,n]},a.prototype.getBlockBreakPosition=function(){return this.text.getLength()-1},a.prototype.getTextWithoutBlockBreak=function(){return m(this.text)?this.text.getTextAtRange([0,this.getBlockBreakPosition()]):this.text.copy()},a.prototype.canBeGrouped=function(t){return this.attributes[t]},a.prototype.canBeGroupedWith=function(t,e){var n,r,s,a;return s=t.getAttributes(),r=s[e],n=this.attributes[e],!(n!==r||i(n).group===!1&&(a=s[e+1],u.call(o(),a)<0)||this.getDirection()!==t.getDirection()&&!t.isEmpty())},h=function(t){return t=y(t),t=l(t)},y=function(t){var n,i,o,r,s,a;return r=!1,a=t.getPieces(),i=2<=a.length?c.call(a,0,n=a.length-1):(n=0,[]),o=a[n++],null==o?t:(i=function(){var t,e,n;for(n=[],t=0,e=i.length;e>t;t++)s=i[t],s.isBlockBreak()?(r=!0,n.push(v(s))):n.push(s);return n}(),r?new e.Text(c.call(i).concat([o])):t)},p=e.Text.textForStringWithAttributes(\"\\n\",{blockBreak:!0}),l=function(t){return m(t)?t:t.appendText(p)},m=function(t){var e,n;return n=t.getLength(),0===n?!1:(e=t.getTextAtRange([n-1,n]),e.isBlockBreak())},v=function(t){return t.copyWithoutAttribute(\"blockBreak\")},d=function(t){var e;return e=i(t).listAttribute,null!=e?[e,t]:[t]},f=function(t){return t.slice(-1)[0]},g=function(t,e){var n;return n=t.lastIndexOf(e),-1===n?t:r(t,n,1)},a}(e.Object)}.call(this),function(){var t,n,i,o=function(t,e){function n(){this.constructor=t}for(var i in e)r.call(e,i)&&(t[i]=e[i]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},r={}.hasOwnProperty,s=[].indexOf||function(t){for(var e=0,n=this.length;n>e;e++)if(e in this&&this[e]===t)return e;return-1},a=[].slice;n=e.tagName,i=e.walkTree,t=e.nodeIsAttachmentElement,e.HTMLSanitizer=function(r){function u(t,e){var n;n=null!=e?e:{},this.allowedAttributes=n.allowedAttributes,this.forbiddenProtocols=n.forbiddenProtocols,this.forbiddenElements=n.forbiddenElements,null==this.allowedAttributes&&(this.allowedAttributes=c),null==this.forbiddenProtocols&&(this.forbiddenProtocols=h),null==this.forbiddenElements&&(this.forbiddenElements=l),this.body=p(t)}var c,l,h,p;return o(u,r),c=\"style href src width height class\".split(\" \"),h=\"javascript:\".split(\" \"),l=\"script iframe form noscript embed math\".split(\" \"),u.setHTML=function(t,e){var n,i,o;return o=new this(e),n=o.sanitize(),i=null!=n.getHTML?n.getHTML():n.outerHTML,t.innerHTML=i},u.sanitize=function(t,e){var n;return n=new this(t,e),n.sanitize(),n},u.prototype.sanitize=function(){return this.sanitizeElements(),this.normalizeListElementNesting()},u.prototype.getHTML=function(){return this.body.innerHTML},u.prototype.getBody=function(){return this.body},u.prototype.sanitizeElements=function(){var t,n,o,r,s;for(s=i(this.body),r=[];s.nextNode();)switch(o=s.currentNode,o.nodeType){case Node.ELEMENT_NODE:this.elementIsRemovable(o)?r.push(o):this.sanitizeElement(o);break;case Node.COMMENT_NODE:r.push(o)}for(t=0,n=r.length;n>t;t++)o=r[t],e.removeNode(o);return this.body},u.prototype.sanitizeElement=function(t){var e,n,i,o,r;for(t.hasAttribute(\"href\")&&(o=t.protocol,s.call(this.forbiddenProtocols,o)>=0&&t.removeAttribute(\"href\")),r=a.call(t.attributes),e=0,n=r.length;n>e;e++)i=r[e].name,s.call(this.allowedAttributes,i)>=0||0===i.indexOf(\"data-trix\")||t.removeAttribute(i);return t},u.prototype.normalizeListElementNesting=function(){var t,e,i,o,r;for(r=a.call(this.body.querySelectorAll(\"ul,ol\")),t=0,e=r.length;e>t;t++)i=r[t],(o=i.previousElementSibling)&&\"li\"===n(o)&&o.appendChild(i);return this.body},u.prototype.elementIsRemovable=function(t){return(null!=t?t.nodeType:void 0)===Node.ELEMENT_NODE?this.elementIsForbidden(t)||this.elementIsntSerializable(t):void 0},u.prototype.elementIsForbidden=function(t){var e;return e=n(t),s.call(this.forbiddenElements,e)>=0},u.prototype.elementIsntSerializable=function(e){return\"false\"===e.getAttribute(\"data-trix-serialize\")&&!t(e)},p=function(t){var e,n,i,o,r;for(null==t&&(t=\"\"),t=t.replace(/<\\/html[^>]*>[^]*$/i,\"</html>\"),e=document.implementation.createHTMLDocument(\"\"),e.documentElement.innerHTML=t,r=e.head.querySelectorAll(\"style\"),i=0,o=r.length;o>i;i++)n=r[i],e.body.appendChild(n);return e.body},u}(e.BasicObject)}.call(this),function(){var t,n,i,o,r,s,a,u,c,l,h,p=function(t,e){function n(){this.constructor=t}for(var i in e)d.call(e,i)&&(t[i]=e[i]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},d={}.hasOwnProperty,f=[].indexOf||function(t){for(var e=0,n=this.length;n>e;e++)if(e in this&&this[e]===t)return e;return-1};t=e.arraysAreEqual,s=e.makeElement,l=e.tagName,r=e.getBlockTagNames,h=e.walkTree,o=e.findClosestElementFromNode,i=e.elementContainsNode,a=e.nodeIsAttachmentElement,u=e.normalizeSpaces,n=e.breakableWhitespacePattern,c=e.squishBreakableWhitespace,e.HTMLParser=function(d){function g(t,e){this.html=t,this.referenceElement=(null!=e?e:{}).referenceElement,this.blocks=[],this.blockElements=[],this.processedElements=[]}var m,v,y,b,A,C,x,w,E,S,R,k;return p(g,d),g.parse=function(t,e){var n;return n=new this(t,e),n.parse(),n},g.prototype.getDocument=function(){return e.Document.fromJSON(this.blocks)},g.prototype.parse=function(){var t;try{for(this.createHiddenContainer(),e.HTMLSanitizer.setHTML(this.containerElement,this.html),t=h(this.containerElement,{usingFilter:x});t.nextNode();)this.processNode(t.currentNode);return this.translateBlockElementMarginsToNewlines()}finally{this.removeHiddenContainer()}},g.prototype.createHiddenContainer=function(){return this.referenceElement?(this.containerElement=this.referenceElement.cloneNode(!1),this.containerElement.removeAttribute(\"id\"),this.containerElement.setAttribute(\"data-trix-internal\",\"\"),this.containerElement.style.display=\"none\",this.referenceElement.parentNode.insertBefore(this.containerElement,this.referenceElement.nextSibling)):(this.containerElement=s({tagName:\"div\",style:{display:\"none\"}}),document.body.appendChild(this.containerElement))},g.prototype.removeHiddenContainer=function(){return e.removeNode(this.containerElement)},x=function(t){return\"style\"===l(t)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT},g.prototype.processNode=function(t){switch(t.nodeType){case Node.TEXT_NODE:if(!this.isInsignificantTextNode(t))return this.appendBlockForTextNode(t),this.processTextNode(t);break;case Node.ELEMENT_NODE:return this.appendBlockForElement(t),this.processElement(t)}},g.prototype.appendBlockForTextNode=function(e){var n,i,o;return i=e.parentNode,i===this.currentBlockElement&&this.isBlockElement(e.previousSibling)?this.appendStringWithAttributes(\"\\n\"):i!==this.containerElement&&!this.isBlockElement(i)||(n=this.getBlockAttributes(i),t(n,null!=(o=this.currentBlock)?o.attributes:void 0))?void 0:(this.currentBlock=this.appendBlockForAttributesWithElement(n,i),this.currentBlockElement=i)},g.prototype.appendBlockForElement=function(e){var n,o,r,s;if(r=this.isBlockElement(e),o=i(this.currentBlockElement,e),r&&!this.isBlockElement(e.firstChild)){if((!this.isInsignificantTextNode(e.firstChild)||!this.isBlockElement(e.firstElementChild))&&(n=this.getBlockAttributes(e),e.firstChild))return o&&t(n,this.currentBlock.attributes)?this.appendStringWithAttributes(\"\\n\"):(this.currentBlock=this.appendBlockForAttributesWithElement(n,e),this.currentBlockElement=e)}else if(this.currentBlockElement&&!o&&!r)return(s=this.findParentBlockElement(e))?this.appendBlockForElement(s):(this.currentBlock=this.appendEmptyBlock(),this.currentBlockElement=null)},g.prototype.findParentBlockElement=function(t){var e;for(e=t.parentElement;e&&e!==this.containerElement;){if(this.isBlockElement(e)&&f.call(this.blockElements,e)>=0)return e;e=e.parentElement}return null},g.prototype.processTextNode=function(t){var e,n;return n=t.data,v(t.parentNode)||(n=c(n),R(null!=(e=t.previousSibling)?e.textContent:void 0)&&(n=A(n))),this.appendStringWithAttributes(n,this.getTextAttributes(t.parentNode))},g.prototype.processElement=function(t){var e,n,i,o,r;if(a(t))return e=w(t,\"attachment\"),Object.keys(e).length&&(o=this.getTextAttributes(t),this.appendAttachmentWithAttributes(e,o),t.innerHTML=\"\"),this.processedElements.push(t);switch(l(t)){case\"br\":return this.isExtraBR(t)||this.isBlockElement(t.nextSibling)||this.appendStringWithAttributes(\"\\n\",this.getTextAttributes(t)),this.processedElements.push(t);case\"img\":e={url:t.getAttribute(\"src\"),contentType:\"image\"},i=b(t);for(n in i)r=i[n],e[n]=r;return this.appendAttachmentWithAttributes(e,this.getTextAttributes(t)),this.processedElements.push(t);case\"tr\":if(t.parentNode.firstChild!==t)return this.appendStringWithAttributes(\"\\n\");break;case\"td\":if(t.parentNode.firstChild!==t)return this.appendStringWithAttributes(\" | \")}},g.prototype.appendBlockForAttributesWithElement=function(t,e){var n;return this.blockElements.push(e),n=m(t),this.blocks.push(n),n},g.prototype.appendEmptyBlock=function(){return this.appendBlockForAttributesWithElement([],null)},g.prototype.appendStringWithAttributes=function(t,e){return this.appendPiece(S(t,e))},g.prototype.appendAttachmentWithAttributes=function(t,e){return this.appendPiece(E(t,e))},g.prototype.appendPiece=function(t){return 0===this.blocks.length&&this.appendEmptyBlock(),this.blocks[this.blocks.length-1].text.push(t)},g.prototype.appendStringToTextAtIndex=function(t,e){var n,i;return i=this.blocks[e].text,n=i[i.length-1],\"string\"===(null!=n?n.type:void 0)?n.string+=t:i.push(S(t))},g.prototype.prependStringToTextAtIndex=function(t,e){var n,i;return i=this.blocks[e].text,n=i[0],\"string\"===(null!=n?n.type:void 0)?n.string=t+n.string:i.unshift(S(t))},S=function(t,e){var n;return null==e&&(e={}),n=\"string\",t=u(t),{string:t,attributes:e,type:n}},E=function(t,e){var n;return null==e&&(e={}),n=\"attachment\",{attachment:t,attributes:e,type:n}},m=function(t){var e;return null==t&&(t={}),e=[],{text:e,attributes:t}},g.prototype.getTextAttributes=function(t){var n,i,r,s,u,c,l,h,p,d,f,g;r={},p=e.config.textAttributes;for(n in p)if(u=p[n],u.tagName&&o(t,{matchingSelector:u.tagName,untilNode:this.containerElement}))r[n]=!0;else if(u.parser){if(g=u.parser(t)){for(i=!1,d=this.findBlockElementAncestors(t),c=0,h=d.length;h>c;c++)if(s=d[c],u.parser(s)===g){i=!0;break}i||(r[n]=g)}}else u.styleProperty&&(g=t.style[u.styleProperty])&&(r[n]=g);if(a(t)){f=w(t,\"attributes\");for(l in f)g=f[l],r[l]=g}return r},g.prototype.getBlockAttributes=function(t){var n,i,o,r;for(i=[];t&&t!==this.containerElement;){r=e.config.blockAttributes;for(n in r)o=r[n],o.parse!==!1&&l(t)===o.tagName&&((\"function\"==typeof o.test?o.test(t):void 0)||!o.test)&&(i.push(n),o.listAttribute&&i.push(o.listAttribute));t=t.parentNode}return i.reverse()},g.prototype.findBlockElementAncestors=function(t){var e,n;for(e=[];t&&t!==this.containerElement;)n=l(t),f.call(r(),n)>=0&&e.push(t),t=t.parentNode;return e},w=function(t,e){try{return JSON.parse(t.getAttribute(\"data-trix-\"+e))}catch(n){return{}}},b=function(t){var e,n,i;return i=t.getAttribute(\"width\"),n=t.getAttribute(\"height\"),e={},i&&(e.width=parseInt(i,10)),n&&(e.height=parseInt(n,10)),e},g.prototype.isBlockElement=function(t){var e;if((null!=t?t.nodeType:void 0)===Node.ELEMENT_NODE&&!a(t)&&!o(t,{matchingSelector:\"td\",untilNode:this.containerElement}))return e=l(t),f.call(r(),e)>=0||\"block\"===window.getComputedStyle(t).display},g.prototype.isInsignificantTextNode=function(t){var e,n,i;if((null!=t?t.nodeType:void 0)===Node.TEXT_NODE&&k(t.data)&&(n=t.parentNode,i=t.previousSibling,e=t.nextSibling,(!C(n.previousSibling)||this.isBlockElement(n.previousSibling))&&!v(n)))return!i||this.isBlockElement(i)||!e||this.isBlockElement(e)},g.prototype.isExtraBR=function(t){return\"br\"===l(t)&&this.isBlockElement(t.parentNode)&&t.parentNode.lastChild===t},v=function(t){var e;return e=window.getComputedStyle(t).whiteSpace,\"pre\"===e||\"pre-wrap\"===e||\"pre-line\"===e},C=function(t){return t&&!R(t.textContent)},g.prototype.translateBlockElementMarginsToNewlines=function(){var t,e,n,i,o,r,s,a;for(e=this.getMarginOfDefaultBlockElement(),s=this.blocks,a=[],i=n=0,o=s.length;o>n;i=++n)t=s[i],(r=this.getMarginOfBlockElementAtIndex(i))&&(r.top>2*e.top&&this.prependStringToTextAtIndex(\"\\n\",i),a.push(r.bottom>2*e.bottom?this.appendStringToTextAtIndex(\"\\n\",i):void 0));return a},g.prototype.getMarginOfBlockElementAtIndex=function(t){var e,n;return!(e=this.blockElements[t])||!e.textContent||(n=l(e),f.call(r(),n)>=0||f.call(this.processedElements,e)>=0)?void 0:y(e)},g.prototype.getMarginOfDefaultBlockElement=function(){var t;return t=s(e.config.blockAttributes[\"default\"].tagName),this.containerElement.appendChild(t),y(t)},y=function(t){var e;return e=window.getComputedStyle(t),\"block\"===e.display?{top:parseInt(e.marginTop),bottom:parseInt(e.marginBottom)}:void 0},A=function(t){return t.replace(RegExp(\"^\"+n.source+\"+\"),\"\")},k=function(t){return RegExp(\"^\"+n.source+\"*$\").test(t)},R=function(t){return/\\s$/.test(t)},g}(e.BasicObject)}.call(this),function(){var t,n,i,o,r=function(t,e){function n(){this.constructor=t}for(var i in e)s.call(e,i)&&(t[i]=e[i]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},s={}.hasOwnProperty,a=[].slice,u=[].indexOf||function(t){for(var e=0,n=this.length;n>e;e++)if(e in this&&this[e]===t)return e;return-1};t=e.arraysAreEqual,i=e.normalizeRange,o=e.rangeIsCollapsed,n=e.getBlockConfig,e.Document=function(s){function c(t){null==t&&(t=[]),c.__super__.constructor.apply(this,arguments),0===t.length&&(t=[new e.Block]),this.blockList=e.SplittableList.box(t)}var l;return r(c,s),c.fromJSON=function(t){var n,i;return i=function(){var i,o,r;for(r=[],i=0,o=t.length;o>i;i++)n=t[i],r.push(e.Block.fromJSON(n));return r}(),new this(i)},c.fromHTML=function(t,n){return e.HTMLParser.parse(t,n).getDocument()},c.fromString=function(t,n){var i;return i=e.Text.textForStringWithAttributes(t,n),new this([new e.Block(i)])},c.prototype.isEmpty=function(){var t;return 1===this.blockList.length&&(t=this.getBlockAtIndex(0),t.isEmpty()&&!t.hasAttributes())},c.prototype.copy=function(t){var e;return null==t&&(t={}),e=t.consolidateBlocks?this.blockList.consolidate().toArray():this.blockList.toArray(),new this.constructor(e)},c.prototype.copyUsingObjectsFromDocument=function(t){var n;return n=new e.ObjectMap(t.getObjects()),this.copyUsingObjectMap(n)},c.prototype.copyUsingObjectMap=function(t){var e,n,i;return n=function(){var n,o,r,s;for(r=this.getBlocks(),s=[],n=0,o=r.length;o>n;n++)e=r[n],s.push((i=t.find(e))?i:e.copyUsingObjectMap(t));return s}.call(this),new this.constructor(n)},c.prototype.copyWithBaseBlockAttributes=function(t){var e,n,i;return null==t&&(t=[]),i=function(){var i,o,r,s;for(r=this.getBlocks(),s=[],i=0,o=r.length;o>i;i++)n=r[i],e=t.concat(n.getAttributes()),s.push(n.copyWithAttributes(e));return s}.call(this),new this.constructor(i)},c.prototype.replaceBlock=function(t,e){var n;return n=this.blockList.indexOf(t),-1===n?this:new this.constructor(this.blockList.replaceObjectAtIndex(e,n))},c.prototype.insertDocumentAtRange=function(t,e){var n,r,s,a,u,c,l;return r=t.blockList,u=(e=i(e))[0],c=this.locationFromPosition(u),s=c.index,a=c.offset,l=this,n=this.getBlockAtPosition(u),o(e)&&n.isEmpty()&&!n.hasAttributes()?l=new this.constructor(l.blockList.removeObjectAtIndex(s)):n.getBlockBreakPosition()===a&&u++,l=l.removeTextAtRange(e),new this.constructor(l.blockList.insertSplittableListAtPosition(r,u))},c.prototype.mergeDocumentAtRange=function(e,n){var o,r,s,a,u,c,l,h,p,d,f,g;return f=(n=i(n))[0],d=this.locationFromPosition(f),r=this.getBlockAtIndex(d.index).getAttributes(),o=e.getBaseBlockAttributes(),g=r.slice(-o.length),t(o,g)?(l=r.slice(0,-o.length),c=e.copyWithBaseBlockAttributes(l)):c=e.copy({consolidateBlocks:!0}).copyWithBaseBlockAttributes(r),s=c.getBlockCount(),a=c.getBlockAtIndex(0),t(r,a.getAttributes())?(u=a.getTextWithoutBlockBreak(),p=this.insertTextAtRange(u,n),s>1&&(c=new this.constructor(c.getBlocks().slice(1)),h=f+u.getLength(),p=p.insertDocumentAtRange(c,h))):p=this.insertDocumentAtRange(c,n),p},c.prototype.insertTextAtRange=function(t,e){var n,o,r,s,a;return a=(e=i(e))[0],s=this.locationFromPosition(a),o=s.index,r=s.offset,n=this.removeTextAtRange(e),new this.constructor(n.blockList.editObjectAtIndex(o,function(e){return e.copyWithText(e.text.insertTextAtPosition(t,r))}))},c.prototype.removeTextAtRange=function(t){var e,n,r,s,a,u,c,l,h,p,d,f,g,m,v,y,b,A,C,x,w;return p=t=i(t),l=p[0],A=p[1],o(t)?this:(d=this.locationRangeFromRange(t),u=d[0],y=d[1],a=u.index,c=u.offset,s=this.getBlockAtIndex(a),v=y.index,b=y.offset,m=this.getBlockAtIndex(v),f=A-l===1&&s.getBlockBreakPosition()===c&&m.getBlockBreakPosition()!==b&&\"\\n\"===m.text.getStringAtPosition(b),f?r=this.blockList.editObjectAtIndex(v,function(t){return t.copyWithText(t.text.removeTextAtRange([b,b+1]))}):(h=s.text.getTextAtRange([0,c]),C=m.text.getTextAtRange([b,m.getLength()]),x=h.appendText(C),g=a!==v&&0===c,w=g&&s.getAttributeLevel()>=m.getAttributeLevel(),n=w?m.copyWithText(x):s.copyWithText(x),e=v+1-a,r=this.blockList.splice(a,e,n)),new this.constructor(r))},c.prototype.moveTextFromRangeToPosition=function(t,e){var n,o,r,s,u,c,l,h,p,d;return c=t=i(t),p=c[0],r=c[1],e>=p&&r>=e?this:(o=this.getDocumentAtRange(t),h=this.removeTextAtRange(t),u=e>p,u&&(e-=o.getLength()),l=o.getBlocks(),s=l[0],n=2<=l.length?a.call(l,1):[],0===n.length?(d=s.getTextWithoutBlockBreak(),u&&(e+=1)):d=s.text,h=h.insertTextAtRange(d,e),0===n.length?h:(o=new this.constructor(n),e+=d.getLength(),h.insertDocumentAtRange(o,e)))},c.prototype.addAttributeAtRange=function(t,e,i){var o;return o=this.blockList,this.eachBlockAtRange(i,function(i,r,s){return o=o.editObjectAtIndex(s,function(){return n(t)?i.addAttribute(t,e):r[0]===r[1]?i:i.copyWithText(i.text.addAttributeAtRange(t,e,r))})}),new this.constructor(o)},c.prototype.addAttribute=function(t,e){var n;return n=this.blockList,this.eachBlock(function(i,o){return n=n.editObjectAtIndex(o,function(){return i.addAttribute(t,e)})}),new this.constructor(n)},c.prototype.removeAttributeAtRange=function(t,e){var i;return i=this.blockList,this.eachBlockAtRange(e,function(e,o,r){return n(t)?i=i.editObjectAtIndex(r,function(){return e.removeAttribute(t)}):o[0]!==o[1]?i=i.editObjectAtIndex(r,function(){return e.copyWithText(e.text.removeAttributeAtRange(t,o))}):void 0}),new this.constructor(i)},c.prototype.updateAttributesForAttachment=function(t,e){var n,i,o,r;return o=(i=this.getRangeOfAttachment(e))[0],n=this.locationFromPosition(o).index,r=this.getTextAtIndex(n),new this.constructor(this.blockList.editObjectAtIndex(n,function(n){return n.copyWithText(r.updateAttributesForAttachment(t,e))}))},c.prototype.removeAttributeForAttachment=function(t,e){var n;return n=this.getRangeOfAttachment(e),this.removeAttributeAtRange(t,n)},c.prototype.insertBlockBreakAtRange=function(t){var n,o,r,s;return s=(t=i(t))[0],r=this.locationFromPosition(s).offset,o=this.removeTextAtRange(t),0===r&&(n=[new e.Block]),new this.constructor(o.blockList.insertSplittableListAtPosition(new e.SplittableList(n),s))},c.prototype.applyBlockAttributeAtRange=function(t,e,i){var o,r,s,a;return s=this.expandRangeToLineBreaksAndSplitBlocks(i),r=s.document,i=s.range,o=n(t),o.listAttribute?(r=r.removeLastListAttributeAtRange(i,{exceptAttributeName:t}),a=r.convertLineBreaksToBlockBreaksInRange(i),r=a.document,i=a.range):r=o.exclusive?r.removeBlockAttributesAtRange(i):o.terminal?r.removeLastTerminalAttributeAtRange(i):r.consolidateBlocksAtRange(i),r.addAttributeAtRange(t,e,i)},c.prototype.removeLastListAttributeAtRange=function(t,e){var i;return null==e&&(e={}),i=this.blockList,this.eachBlockAtRange(t,function(t,o,r){var s;if((s=t.getLastAttribute())&&n(s).listAttribute&&s!==e.exceptAttributeName)return i=i.editObjectAtIndex(r,function(){return t.removeAttribute(s)})}),new this.constructor(i)},c.prototype.removeLastTerminalAttributeAtRange=function(t){var e;return e=this.blockList,this.eachBlockAtRange(t,function(t,i,o){var r;if((r=t.getLastAttribute())&&n(r).terminal)return e=e.editObjectAtIndex(o,function(){return t.removeAttribute(r)})}),new this.constructor(e)},c.prototype.removeBlockAttributesAtRange=function(t){var e;return e=this.blockList,this.eachBlockAtRange(t,function(t,n,i){return t.hasAttributes()?e=e.editObjectAtIndex(i,function(){return t.copyWithoutAttributes()}):void 0}),new this.constructor(e)},c.prototype.expandRangeToLineBreaksAndSplitBlocks=function(t){var e,n,o,r,s,a,u,c,l;return a=t=i(t),l=a[0],r=a[1],c=this.locationFromPosition(l),o=this.locationFromPosition(r),e=this,u=e.getBlockAtIndex(c.index),null!=(c.offset=u.findLineBreakInDirectionFromPosition(\"backward\",c.offset))&&(s=e.positionFromLocation(c),e=e.insertBlockBreakAtRange([s,s+1]),o.index+=1,o.offset-=e.getBlockAtIndex(c.index).getLength(),c.index+=1),c.offset=0,0===o.offset&&o.index>c.index?(o.index-=1,o.offset=e.getBlockAtIndex(o.index).getBlockBreakPosition()):(n=e.getBlockAtIndex(o.index),\"\\n\"===n.text.getStringAtRange([o.offset-1,o.offset])?o.offset-=1:o.offset=n.findLineBreakInDirectionFromPosition(\"forward\",o.offset),o.offset!==n.getBlockBreakPosition()&&(s=e.positionFromLocation(o),e=e.insertBlockBreakAtRange([s,s+1]))),l=e.positionFromLocation(c),r=e.positionFromLocation(o),t=i([l,r]),{document:e,range:t}},c.prototype.convertLineBreaksToBlockBreaksInRange=function(t){var e,n,o;return n=(t=i(t))[0],o=this.getStringAtRange(t).slice(0,-1),e=this,o.replace(/.*?\\n/g,function(t){return n+=t.length,e=e.insertBlockBreakAtRange([n-1,n])}),{document:e,range:t}},c.prototype.consolidateBlocksAtRange=function(t){var e,n,o,r,s;return o=t=i(t),s=o[0],n=o[1],r=this.locationFromPosition(s).index,e=this.locationFromPosition(n).index,new this.constructor(this.blockList.consolidateFromIndexToIndex(r,e))},c.prototype.getDocumentAtRange=function(t){var e;return t=i(t),e=this.blockList.getSplittableListInRange(t).toArray(),new this.constructor(e)},c.prototype.getStringAtRange=function(t){var e,n,o;return o=t=i(t),n=o[o.length-1],n!==this.getLength()&&(e=-1),this.getDocumentAtRange(t).toString().slice(0,e)},c.prototype.getBlockAtIndex=function(t){return this.blockList.getObjectAtIndex(t)},c.prototype.getBlockAtPosition=function(t){var e;return e=this.locationFromPosition(t).index,this.getBlockAtIndex(e)},c.prototype.getTextAtIndex=function(t){var e;return null!=(e=this.getBlockAtIndex(t))?e.text:void 0},c.prototype.getTextAtPosition=function(t){var e;return e=this.locationFromPosition(t).index,this.getTextAtIndex(e)},c.prototype.getPieceAtPosition=function(t){var e,n,i;return i=this.locationFromPosition(t),e=i.index,n=i.offset,this.getTextAtIndex(e).getPieceAtPosition(n)},c.prototype.getCharacterAtPosition=function(t){var e,n,i;return i=this.locationFromPosition(t),e=i.index,n=i.offset,this.getTextAtIndex(e).getStringAtRange([n,n+1])},c.prototype.getLength=function(){return this.blockList.getEndPosition()},c.prototype.getBlocks=function(){return this.blockList.toArray()},c.prototype.getBlockCount=function(){return this.blockList.length},c.prototype.getEditCount=function(){return this.editCount},c.prototype.eachBlock=function(t){return this.blockList.eachObject(t)},c.prototype.eachBlockAtRange=function(t,e){var n,o,r,s,a,u,c,l,h,p,d,f;if(u=t=i(t),d=u[0],r=u[1],p=this.locationFromPosition(d),o=this.locationFromPosition(r),p.index===o.index)return n=this.getBlockAtIndex(p.index),f=[p.offset,o.offset],e(n,f,p.index);for(h=[],a=s=c=p.index,l=o.index;l>=c?l>=s:s>=l;a=l>=c?++s:--s)(n=this.getBlockAtIndex(a))?(f=function(){switch(a){case p.index:return[p.offset,n.text.getLength()];case o.index:return[0,o.offset];default:return[0,n.text.getLength()]}}(),h.push(e(n,f,a))):h.push(void 0);return h},c.prototype.getCommonAttributesAtRange=function(t){var n,r,s;\nreturn r=(t=i(t))[0],o(t)?this.getCommonAttributesAtPosition(r):(s=[],n=[],this.eachBlockAtRange(t,function(t,e){return e[0]!==e[1]?(s.push(t.text.getCommonAttributesAtRange(e)),n.push(l(t))):void 0}),e.Hash.fromCommonAttributesOfObjects(s).merge(e.Hash.fromCommonAttributesOfObjects(n)).toObject())},c.prototype.getCommonAttributesAtPosition=function(t){var n,i,o,r,s,a,c,h,p,d;if(p=this.locationFromPosition(t),s=p.index,h=p.offset,o=this.getBlockAtIndex(s),!o)return{};r=l(o),n=o.text.getAttributesAtPosition(h),i=o.text.getAttributesAtPosition(h-1),a=function(){var t,n;t=e.config.textAttributes,n=[];for(c in t)d=t[c],d.inheritable&&n.push(c);return n}();for(c in i)d=i[c],(d===n[c]||u.call(a,c)>=0)&&(r[c]=d);return r},c.prototype.getRangeOfCommonAttributeAtPosition=function(t,e){var n,o,r,s,a,u,c,l,h;return a=this.locationFromPosition(e),r=a.index,s=a.offset,h=this.getTextAtIndex(r),u=h.getExpandedRangeForAttributeAtOffset(t,s),l=u[0],o=u[1],c=this.positionFromLocation({index:r,offset:l}),n=this.positionFromLocation({index:r,offset:o}),i([c,n])},c.prototype.getBaseBlockAttributes=function(){var t,e,n,i,o,r,s;for(t=this.getBlockAtIndex(0).getAttributes(),n=i=1,s=this.getBlockCount();s>=1?s>i:i>s;n=s>=1?++i:--i)e=this.getBlockAtIndex(n).getAttributes(),r=Math.min(t.length,e.length),t=function(){var n,i,s;for(s=[],o=n=0,i=r;(i>=0?i>n:n>i)&&e[o]===t[o];o=i>=0?++n:--n)s.push(e[o]);return s}();return t},l=function(t){var e,n;return n={},(e=t.getLastAttribute())&&(n[e]=!0),n},c.prototype.getAttachmentById=function(t){var e,n,i,o;for(o=this.getAttachments(),n=0,i=o.length;i>n;n++)if(e=o[n],e.id===t)return e},c.prototype.getAttachmentPieces=function(){var t;return t=[],this.blockList.eachObject(function(e){var n;return n=e.text,t=t.concat(n.getAttachmentPieces())}),t},c.prototype.getAttachments=function(){var t,e,n,i,o;for(i=this.getAttachmentPieces(),o=[],t=0,e=i.length;e>t;t++)n=i[t],o.push(n.attachment);return o},c.prototype.getRangeOfAttachment=function(t){var e,n,o,r,s,a,u;for(r=0,s=this.blockList.toArray(),n=e=0,o=s.length;o>e;n=++e){if(a=s[n].text,u=a.getRangeOfAttachment(t))return i([r+u[0],r+u[1]]);r+=a.getLength()}},c.prototype.getLocationRangeOfAttachment=function(t){var e;return e=this.getRangeOfAttachment(t),this.locationRangeFromRange(e)},c.prototype.getAttachmentPieceForAttachment=function(t){var e,n,i,o;for(o=this.getAttachmentPieces(),e=0,n=o.length;n>e;e++)if(i=o[e],i.attachment===t)return i},c.prototype.findRangesForBlockAttribute=function(t){var e,n,i,o,r,s,a;for(r=0,s=[],a=this.getBlocks(),n=0,i=a.length;i>n;n++)e=a[n],o=e.getLength(),e.hasAttribute(t)&&s.push([r,r+o]),r+=o;return s},c.prototype.findRangesForTextAttribute=function(t,e){var n,i,o,r,s,a,u,c,l,h;for(h=(null!=e?e:{}).withValue,a=0,u=[],c=[],r=function(e){return null!=h?e.getAttribute(t)===h:e.hasAttribute(t)},l=this.getPieces(),n=0,i=l.length;i>n;n++)s=l[n],o=s.getLength(),r(s)&&(u[1]===a?u[1]=a+o:c.push(u=[a,a+o])),a+=o;return c},c.prototype.locationFromPosition=function(t){var e,n;return n=this.blockList.findIndexAndOffsetAtPosition(Math.max(0,t)),null!=n.index?n:(e=this.getBlocks(),{index:e.length-1,offset:e[e.length-1].getLength()})},c.prototype.positionFromLocation=function(t){return this.blockList.findPositionAtIndexAndOffset(t.index,t.offset)},c.prototype.locationRangeFromPosition=function(t){return i(this.locationFromPosition(t))},c.prototype.locationRangeFromRange=function(t){var e,n,o,r;if(t=i(t))return r=t[0],n=t[1],o=this.locationFromPosition(r),e=this.locationFromPosition(n),i([o,e])},c.prototype.rangeFromLocationRange=function(t){var e,n;return t=i(t),e=this.positionFromLocation(t[0]),o(t)||(n=this.positionFromLocation(t[1])),i([e,n])},c.prototype.isEqualTo=function(t){return this.blockList.isEqualTo(null!=t?t.blockList:void 0)},c.prototype.getTexts=function(){var t,e,n,i,o;for(i=this.getBlocks(),o=[],e=0,n=i.length;n>e;e++)t=i[e],o.push(t.text);return o},c.prototype.getPieces=function(){var t,e,n,i,o;for(n=[],i=this.getTexts(),t=0,e=i.length;e>t;t++)o=i[t],n.push.apply(n,o.getPieces());return n},c.prototype.getObjects=function(){return this.getBlocks().concat(this.getTexts()).concat(this.getPieces())},c.prototype.toSerializableDocument=function(){var t;return t=[],this.blockList.eachObject(function(e){return t.push(e.copyWithText(e.text.toSerializableText()))}),new this.constructor(t)},c.prototype.toString=function(){return this.blockList.toString()},c.prototype.toJSON=function(){return this.blockList.toJSON()},c.prototype.toConsole=function(){var t;return JSON.stringify(function(){var e,n,i,o;for(i=this.blockList.toArray(),o=[],e=0,n=i.length;n>e;e++)t=i[e],o.push(JSON.parse(t.text.toConsole()));return o}.call(this))},c}(e.Object)}.call(this),function(){e.LineBreakInsertion=function(){function t(t){var e;this.composition=t,this.document=this.composition.document,e=this.composition.getSelectedRange(),this.startPosition=e[0],this.endPosition=e[1],this.startLocation=this.document.locationFromPosition(this.startPosition),this.endLocation=this.document.locationFromPosition(this.endPosition),this.block=this.document.getBlockAtIndex(this.endLocation.index),this.breaksOnReturn=this.block.breaksOnReturn(),this.previousCharacter=this.block.text.getStringAtPosition(this.endLocation.offset-1),this.nextCharacter=this.block.text.getStringAtPosition(this.endLocation.offset)}return t.prototype.shouldInsertBlockBreak=function(){return this.block.hasAttributes()&&this.block.isListItem()&&!this.block.isEmpty()?0!==this.startLocation.offset:this.breaksOnReturn&&\"\\n\"!==this.nextCharacter},t.prototype.shouldBreakFormattedBlock=function(){return this.block.hasAttributes()&&!this.block.isListItem()&&(this.breaksOnReturn&&\"\\n\"===this.nextCharacter||\"\\n\"===this.previousCharacter)},t.prototype.shouldDecreaseListLevel=function(){return this.block.hasAttributes()&&this.block.isListItem()&&this.block.isEmpty()},t.prototype.shouldPrependListItem=function(){return this.block.isListItem()&&0===this.startLocation.offset&&!this.block.isEmpty()},t.prototype.shouldRemoveLastBlockAttribute=function(){return this.block.hasAttributes()&&!this.block.isListItem()&&this.block.isEmpty()},t}()}.call(this),function(){var t,n,i,o,r,s,a,u,c,l,h=function(t,e){function n(){this.constructor=t}for(var i in e)p.call(e,i)&&(t[i]=e[i]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},p={}.hasOwnProperty;s=e.normalizeRange,c=e.rangesAreEqual,u=e.rangeIsCollapsed,a=e.objectsAreEqual,t=e.arrayStartsWith,l=e.summarizeArrayChange,i=e.getAllAttributeNames,o=e.getBlockConfig,r=e.getTextConfig,n=e.extend,e.Composition=function(p){function d(){this.document=new e.Document,this.attachments=[],this.currentAttributes={},this.revision=0}var f;return h(d,p),d.prototype.setDocument=function(t){var e;return t.isEqualTo(this.document)?void 0:(this.document=t,this.refreshAttachments(),this.revision++,null!=(e=this.delegate)&&\"function\"==typeof e.compositionDidChangeDocument?e.compositionDidChangeDocument(t):void 0)},d.prototype.getSnapshot=function(){return{document:this.document,selectedRange:this.getSelectedRange()}},d.prototype.loadSnapshot=function(t){var n,i,o,r;return n=t.document,r=t.selectedRange,null!=(i=this.delegate)&&\"function\"==typeof i.compositionWillLoadSnapshot&&i.compositionWillLoadSnapshot(),this.setDocument(null!=n?n:new e.Document),this.setSelection(null!=r?r:[0,0]),null!=(o=this.delegate)&&\"function\"==typeof o.compositionDidLoadSnapshot?o.compositionDidLoadSnapshot():void 0},d.prototype.insertText=function(t,e){var n,i,o,r;return r=(null!=e?e:{updatePosition:!0}).updatePosition,i=this.getSelectedRange(),this.setDocument(this.document.insertTextAtRange(t,i)),o=i[0],n=o+t.getLength(),r&&this.setSelection(n),this.notifyDelegateOfInsertionAtRange([o,n])},d.prototype.insertBlock=function(t){var n;return null==t&&(t=new e.Block),n=new e.Document([t]),this.insertDocument(n)},d.prototype.insertDocument=function(t){var n,i,o;return null==t&&(t=new e.Document),i=this.getSelectedRange(),this.setDocument(this.document.insertDocumentAtRange(t,i)),o=i[0],n=o+t.getLength(),this.setSelection(n),this.notifyDelegateOfInsertionAtRange([o,n])},d.prototype.insertString=function(t,n){var i,o;return i=this.getCurrentTextAttributes(),o=e.Text.textForStringWithAttributes(t,i),this.insertText(o,n)},d.prototype.insertBlockBreak=function(){var t,e,n;return e=this.getSelectedRange(),this.setDocument(this.document.insertBlockBreakAtRange(e)),n=e[0],t=n+1,this.setSelection(t),this.notifyDelegateOfInsertionAtRange([n,t])},d.prototype.insertLineBreak=function(){var t,n;return n=new e.LineBreakInsertion(this),n.shouldDecreaseListLevel()?(this.decreaseListLevel(),this.setSelection(n.startPosition)):n.shouldPrependListItem()?(t=new e.Document([n.block.copyWithoutText()]),this.insertDocument(t)):n.shouldInsertBlockBreak()?this.insertBlockBreak():n.shouldRemoveLastBlockAttribute()?this.removeLastBlockAttribute():n.shouldBreakFormattedBlock()?this.breakFormattedBlock(n):this.insertString(\"\\n\")},d.prototype.insertHTML=function(t){var n,i,o,r;return n=e.Document.fromHTML(t),o=this.getSelectedRange(),this.setDocument(this.document.mergeDocumentAtRange(n,o)),r=o[0],i=r+n.getLength()-1,this.setSelection(i),this.notifyDelegateOfInsertionAtRange([r,i])},d.prototype.replaceHTML=function(t){var n,i,o;return n=e.Document.fromHTML(t).copyUsingObjectsFromDocument(this.document),i=this.getLocationRange({strict:!1}),o=this.document.rangeFromLocationRange(i),this.setDocument(n),this.setSelection(o)},d.prototype.insertFile=function(t){return this.insertFiles([t])},d.prototype.insertFiles=function(t){var n,i,o,r,s,a;for(i=[],r=0,s=t.length;s>r;r++)o=t[r],(null!=(a=this.delegate)?a.compositionShouldAcceptFile(o):void 0)&&(n=e.Attachment.attachmentForFile(o),i.push(n));return this.insertAttachments(i)},d.prototype.insertAttachment=function(t){return this.insertAttachments([t])},d.prototype.insertAttachments=function(t){var n,i,o,r,s,a,u,c,l;for(c=new e.Text,r=0,s=t.length;s>r;r++)n=t[r],l=n.getType(),a=null!=(u=e.config.attachments[l])?u.presentation:void 0,o=this.getCurrentTextAttributes(),a&&(o.presentation=a),i=e.Text.textForAttachmentWithAttributes(n,o),c=c.appendText(i);return this.insertText(c)},d.prototype.shouldManageDeletingInDirection=function(t){var e;if(e=this.getLocationRange(),u(e)){if(\"backward\"===t&&0===e[0].offset)return!0;if(this.shouldManageMovingCursorInDirection(t))return!0}else if(e[0].index!==e[1].index)return!0;return!1},d.prototype.deleteInDirection=function(t,e){var n,i,o,r,s,a,c,l;return r=(null!=e?e:{}).length,s=this.getLocationRange(),a=this.getSelectedRange(),c=u(a),c?o=\"backward\"===t&&0===s[0].offset:l=s[0].index!==s[1].index,o&&this.canDecreaseBlockAttributeLevel()&&(i=this.getBlock(),i.isListItem()?this.decreaseListLevel():this.decreaseBlockAttributeLevel(),this.setSelection(a[0]),i.isEmpty())?!1:(c&&(a=this.getExpandedRangeInDirection(t,{length:r}),\"backward\"===t&&(n=this.getAttachmentAtRange(a))),n?(this.editAttachment(n),!1):(this.setDocument(this.document.removeTextAtRange(a)),this.setSelection(a[0]),o||l?!1:void 0))},d.prototype.moveTextFromRange=function(t){var e;return e=this.getSelectedRange()[0],this.setDocument(this.document.moveTextFromRangeToPosition(t,e)),this.setSelection(e)},d.prototype.removeAttachment=function(t){var e;return(e=this.document.getRangeOfAttachment(t))?(this.stopEditingAttachment(),this.setDocument(this.document.removeTextAtRange(e)),this.setSelection(e[0])):void 0},d.prototype.removeLastBlockAttribute=function(){var t,e,n,i;return n=this.getSelectedRange(),i=n[0],e=n[1],t=this.document.getBlockAtPosition(e),this.removeCurrentAttribute(t.getLastAttribute()),this.setSelection(i)},f=\" \",d.prototype.insertPlaceholder=function(){return this.placeholderPosition=this.getPosition(),this.insertString(f)},d.prototype.selectPlaceholder=function(){return null!=this.placeholderPosition?(this.setSelectedRange([this.placeholderPosition,this.placeholderPosition+f.length]),this.getSelectedRange()):void 0},d.prototype.forgetPlaceholder=function(){return this.placeholderPosition=null},d.prototype.hasCurrentAttribute=function(t){var e;return e=this.currentAttributes[t],null!=e&&e!==!1},d.prototype.toggleCurrentAttribute=function(t){var e;return(e=!this.currentAttributes[t])?this.setCurrentAttribute(t,e):this.removeCurrentAttribute(t)},d.prototype.canSetCurrentAttribute=function(t){return o(t)?this.canSetCurrentBlockAttribute(t):this.canSetCurrentTextAttribute(t)},d.prototype.canSetCurrentTextAttribute=function(){var t,e,n,i,o;if(e=this.getSelectedDocument()){for(o=e.getAttachments(),n=0,i=o.length;i>n;n++)if(t=o[n],!t.hasContent())return!1;return!0}},d.prototype.canSetCurrentBlockAttribute=function(){var t;if(t=this.getBlock())return!t.isTerminalBlock()},d.prototype.setCurrentAttribute=function(t,e){return o(t)?this.setBlockAttribute(t,e):(this.setTextAttribute(t,e),this.currentAttributes[t]=e,this.notifyDelegateOfCurrentAttributesChange())},d.prototype.setTextAttribute=function(t,n){var i,o,r,s;if(o=this.getSelectedRange())return r=o[0],i=o[1],r!==i?this.setDocument(this.document.addAttributeAtRange(t,n,o)):\"href\"===t?(s=e.Text.textForStringWithAttributes(n,{href:n}),this.insertText(s)):void 0},d.prototype.setBlockAttribute=function(t,e){var n,i;if(i=this.getSelectedRange())return this.canSetCurrentAttribute(t)?(n=this.getBlock(),this.setDocument(this.document.applyBlockAttributeAtRange(t,e,i)),this.setSelection(i)):void 0},d.prototype.removeCurrentAttribute=function(t){return o(t)?(this.removeBlockAttribute(t),this.updateCurrentAttributes()):(this.removeTextAttribute(t),delete this.currentAttributes[t],this.notifyDelegateOfCurrentAttributesChange())},d.prototype.removeTextAttribute=function(t){var e;if(e=this.getSelectedRange())return this.setDocument(this.document.removeAttributeAtRange(t,e))},d.prototype.removeBlockAttribute=function(t){var e;if(e=this.getSelectedRange())return this.setDocument(this.document.removeAttributeAtRange(t,e))},d.prototype.canDecreaseNestingLevel=function(){var t;return(null!=(t=this.getBlock())?t.getNestingLevel():void 0)>0},d.prototype.canIncreaseNestingLevel=function(){var e,n,i;if(e=this.getBlock())return(null!=(i=o(e.getLastNestableAttribute()))?i.listAttribute:0)?(n=this.getPreviousBlock())?t(n.getListItemAttributes(),e.getListItemAttributes()):void 0:e.getNestingLevel()>0},d.prototype.decreaseNestingLevel=function(){var t;if(t=this.getBlock())return this.setDocument(this.document.replaceBlock(t,t.decreaseNestingLevel()))},d.prototype.increaseNestingLevel=function(){var t;if(t=this.getBlock())return this.setDocument(this.document.replaceBlock(t,t.increaseNestingLevel()))},d.prototype.canDecreaseBlockAttributeLevel=function(){var t;return(null!=(t=this.getBlock())?t.getAttributeLevel():void 0)>0},d.prototype.decreaseBlockAttributeLevel=function(){var t,e;return(t=null!=(e=this.getBlock())?e.getLastAttribute():void 0)?this.removeCurrentAttribute(t):void 0},d.prototype.decreaseListLevel=function(){var t,e,n,i,o,r;for(r=this.getSelectedRange()[0],o=this.document.locationFromPosition(r).index,n=o,t=this.getBlock().getAttributeLevel();(e=this.document.getBlockAtIndex(n+1))&&e.isListItem()&&e.getAttributeLevel()>t;)n++;return r=this.document.positionFromLocation({index:o,offset:0}),i=this.document.positionFromLocation({index:n,offset:0}),this.setDocument(this.document.removeLastListAttributeAtRange([r,i]))},d.prototype.updateCurrentAttributes=function(){var t,e,n,o,r,s;if(s=this.getSelectedRange({ignoreLock:!0})){for(e=this.document.getCommonAttributesAtRange(s),r=i(),n=0,o=r.length;o>n;n++)t=r[n],e[t]||this.canSetCurrentAttribute(t)||(e[t]=!1);if(!a(e,this.currentAttributes))return this.currentAttributes=e,this.notifyDelegateOfCurrentAttributesChange()}},d.prototype.getCurrentAttributes=function(){return n.call({},this.currentAttributes)},d.prototype.getCurrentTextAttributes=function(){var t,e,n,i;t={},n=this.currentAttributes;for(e in n)i=n[e],i!==!1&&r(e)&&(t[e]=i);return t},d.prototype.freezeSelection=function(){return this.setCurrentAttribute(\"frozen\",!0)},d.prototype.thawSelection=function(){return this.removeCurrentAttribute(\"frozen\")},d.prototype.hasFrozenSelection=function(){return this.hasCurrentAttribute(\"frozen\")},d.proxyMethod(\"getSelectionManager().getPointRange\"),d.proxyMethod(\"getSelectionManager().setLocationRangeFromPointRange\"),d.proxyMethod(\"getSelectionManager().createLocationRangeFromDOMRange\"),d.proxyMethod(\"getSelectionManager().locationIsCursorTarget\"),d.proxyMethod(\"getSelectionManager().selectionIsExpanded\"),d.proxyMethod(\"delegate?.getSelectionManager\"),d.prototype.setSelection=function(t){var e,n;return e=this.document.locationRangeFromRange(t),null!=(n=this.delegate)?n.compositionDidRequestChangingSelectionToLocationRange(e):void 0},d.prototype.getSelectedRange=function(){var t;return(t=this.getLocationRange())?this.document.rangeFromLocationRange(t):void 0},d.prototype.setSelectedRange=function(t){var e;return e=this.document.locationRangeFromRange(t),this.getSelectionManager().setLocationRange(e)},d.prototype.getPosition=function(){var t;return(t=this.getLocationRange())?this.document.positionFromLocation(t[0]):void 0},d.prototype.getLocationRange=function(t){var e,n;return null!=(e=null!=(n=this.targetLocationRange)?n:this.getSelectionManager().getLocationRange(t))?e:s({index:0,offset:0})},d.prototype.withTargetLocationRange=function(t,e){var n;this.targetLocationRange=t;try{n=e()}finally{this.targetLocationRange=null}return n},d.prototype.withTargetRange=function(t,e){var n;return n=this.document.locationRangeFromRange(t),this.withTargetLocationRange(n,e)},d.prototype.withTargetDOMRange=function(t,e){var n;return n=this.createLocationRangeFromDOMRange(t,{strict:!1}),this.withTargetLocationRange(n,e)},d.prototype.getExpandedRangeInDirection=function(t,e){var n,i,o,r;return i=(null!=e?e:{}).length,o=this.getSelectedRange(),r=o[0],n=o[1],\"backward\"===t?i?r-=i:r=this.translateUTF16PositionFromOffset(r,-1):i?n+=i:n=this.translateUTF16PositionFromOffset(n,1),s([r,n])},d.prototype.shouldManageMovingCursorInDirection=function(t){var e;return this.editingAttachment?!0:(e=this.getExpandedRangeInDirection(t),null!=this.getAttachmentAtRange(e))},d.prototype.moveCursorInDirection=function(t){var e,n,i,o;return this.editingAttachment?i=this.document.getRangeOfAttachment(this.editingAttachment):(o=this.getSelectedRange(),i=this.getExpandedRangeInDirection(t),n=!c(o,i)),this.setSelectedRange(\"backward\"===t?i[0]:i[1]),n&&(e=this.getAttachmentAtRange(i))?this.editAttachment(e):void 0},d.prototype.expandSelectionInDirection=function(t,e){var n,i;return n=(null!=e?e:{}).length,i=this.getExpandedRangeInDirection(t,{length:n}),this.setSelectedRange(i)},d.prototype.expandSelectionForEditing=function(){return this.hasCurrentAttribute(\"href\")?this.expandSelectionAroundCommonAttribute(\"href\"):void 0},d.prototype.expandSelectionAroundCommonAttribute=function(t){var e,n;return e=this.getPosition(),n=this.document.getRangeOfCommonAttributeAtPosition(t,e),this.setSelectedRange(n)},d.prototype.selectionContainsAttachments=function(){var t;return(null!=(t=this.getSelectedAttachments())?t.length:void 0)>0},d.prototype.selectionIsInCursorTarget=function(){return this.editingAttachment||this.positionIsCursorTarget(this.getPosition())},d.prototype.positionIsCursorTarget=function(t){var e;return(e=this.document.locationFromPosition(t))?this.locationIsCursorTarget(e):void 0},d.prototype.positionIsBlockBreak=function(t){var e;return null!=(e=this.document.getPieceAtPosition(t))?e.isBlockBreak():void 0},d.prototype.getSelectedDocument=function(){var t;return(t=this.getSelectedRange())?this.document.getDocumentAtRange(t):void 0},d.prototype.getSelectedAttachments=function(){var t;return null!=(t=this.getSelectedDocument())?t.getAttachments():void 0},d.prototype.getAttachments=function(){return this.attachments.slice(0)},d.prototype.refreshAttachments=function(){var t,e,n,i,o,r,s,a,u,c,h,p;for(n=this.document.getAttachments(),a=l(this.attachments,n),t=a.added,h=a.removed,this.attachments=n,i=0,r=h.length;r>i;i++)e=h[i],e.delegate=null,null!=(u=this.delegate)&&\"function\"==typeof u.compositionDidRemoveAttachment&&u.compositionDidRemoveAttachment(e);for(p=[],o=0,s=t.length;s>o;o++)e=t[o],e.delegate=this,p.push(null!=(c=this.delegate)&&\"function\"==typeof c.compositionDidAddAttachment?c.compositionDidAddAttachment(e):void 0);return p},d.prototype.attachmentDidChangeAttributes=function(t){var e;return this.revision++,null!=(e=this.delegate)&&\"function\"==typeof e.compositionDidEditAttachment?e.compositionDidEditAttachment(t):void 0},d.prototype.attachmentDidChangePreviewURL=function(t){var e;return this.revision++,null!=(e=this.delegate)&&\"function\"==typeof e.compositionDidChangeAttachmentPreviewURL?e.compositionDidChangeAttachmentPreviewURL(t):void 0},d.prototype.editAttachment=function(t,e){var n;if(t!==this.editingAttachment)return this.stopEditingAttachment(),this.editingAttachment=t,null!=(n=this.delegate)&&\"function\"==typeof n.compositionDidStartEditingAttachment?n.compositionDidStartEditingAttachment(this.editingAttachment,e):void 0},d.prototype.stopEditingAttachment=function(){var t;if(this.editingAttachment)return null!=(t=this.delegate)&&\"function\"==typeof t.compositionDidStopEditingAttachment&&t.compositionDidStopEditingAttachment(this.editingAttachment),this.editingAttachment=null},d.prototype.updateAttributesForAttachment=function(t,e){return this.setDocument(this.document.updateAttributesForAttachment(t,e))},d.prototype.removeAttributeForAttachment=function(t,e){return this.setDocument(this.document.removeAttributeForAttachment(t,e))},d.prototype.breakFormattedBlock=function(t){var n,i,o,r,s;return i=t.document,n=t.block,r=t.startPosition,s=[r-1,r],n.getBlockBreakPosition()===t.startLocation.offset?(n.breaksOnReturn()&&\"\\n\"===t.nextCharacter?r+=1:i=i.removeTextAtRange(s),s=[r,r]):\"\\n\"===t.nextCharacter?\"\\n\"===t.previousCharacter?s=[r-1,r+1]:(s=[r,r+1],r+=1):t.startLocation.offset-1!==0&&(r+=1),o=new e.Document([n.removeLastAttribute().copyWithoutText()]),this.setDocument(i.insertDocumentAtRange(o,s)),this.setSelection(r)},d.prototype.getPreviousBlock=function(){var t,e;return(e=this.getLocationRange())&&(t=e[0].index,t>0)?this.document.getBlockAtIndex(t-1):void 0},d.prototype.getBlock=function(){var t;return(t=this.getLocationRange())?this.document.getBlockAtIndex(t[0].index):void 0},d.prototype.getAttachmentAtRange=function(t){var n;return n=this.document.getDocumentAtRange(t),n.toString()===e.OBJECT_REPLACEMENT_CHARACTER+\"\\n\"?n.getAttachments()[0]:void 0},d.prototype.notifyDelegateOfCurrentAttributesChange=function(){var t;return null!=(t=this.delegate)&&\"function\"==typeof t.compositionDidChangeCurrentAttributes?t.compositionDidChangeCurrentAttributes(this.currentAttributes):void 0},d.prototype.notifyDelegateOfInsertionAtRange=function(t){var e;return null!=(e=this.delegate)&&\"function\"==typeof e.compositionDidPerformInsertionAtRange?e.compositionDidPerformInsertionAtRange(t):void 0},d.prototype.translateUTF16PositionFromOffset=function(t,e){var n,i;return i=this.document.toUTF16String(),n=i.offsetFromUCS2Offset(t),i.offsetToUCS2Offset(n+e)},d}(e.BasicObject)}.call(this),function(){var t=function(t,e){function i(){this.constructor=t}for(var o in e)n.call(e,o)&&(t[o]=e[o]);return i.prototype=e.prototype,t.prototype=new i,t.__super__=e.prototype,t},n={}.hasOwnProperty;e.UndoManager=function(e){function n(t){this.composition=t,this.undoEntries=[],this.redoEntries=[]}var i;return t(n,e),n.prototype.recordUndoEntry=function(t,e){var n,o,r,s,a;return s=null!=e?e:{},o=s.context,n=s.consolidatable,r=this.undoEntries.slice(-1)[0],n&&i(r,t,o)?void 0:(a=this.createEntry({description:t,context:o}),this.undoEntries.push(a),this.redoEntries=[])},n.prototype.undo=function(){var t,e;return(e=this.undoEntries.pop())?(t=this.createEntry(e),this.redoEntries.push(t),this.composition.loadSnapshot(e.snapshot)):void 0},n.prototype.redo=function(){var t,e;return(t=this.redoEntries.pop())?(e=this.createEntry(t),this.undoEntries.push(e),this.composition.loadSnapshot(t.snapshot)):void 0},n.prototype.canUndo=function(){return this.undoEntries.length>0},n.prototype.canRedo=function(){return this.redoEntries.length>0},n.prototype.createEntry=function(t){var e,n,i;return i=null!=t?t:{},n=i.description,e=i.context,{description:null!=n?n.toString():void 0,context:JSON.stringify(e),snapshot:this.composition.getSnapshot()}},i=function(t,e,n){return(null!=t?t.description:void 0)===(null!=e?e.toString():void 0)&&(null!=t?t.context:void 0)===JSON.stringify(n)},n}(e.BasicObject)}.call(this),function(){var t;e.attachmentGalleryFilter=function(e){var n;return n=new t(e),n.perform(),n.getSnapshot()},t=function(){function t(t){this.document=t.document,this.selectedRange=t.selectedRange}var e,n,i;return e=\"attachmentGallery\",n=\"presentation\",i=\"gallery\",t.prototype.perform=function(){return this.removeBlockAttribute(),this.applyBlockAttribute()},t.prototype.getSnapshot=function(){return{document:this.document,selectedRange:this.selectedRange}},t.prototype.removeBlockAttribute=function(){var t,n,i,o,r;for(o=this.findRangesOfBlocks(),r=[],t=0,n=o.length;n>t;t++)i=o[t],r.push(this.document=this.document.removeAttributeAtRange(e,i));return r},t.prototype.applyBlockAttribute=function(){var t,n,i,o,r,s;for(i=0,r=this.findRangesOfPieces(),s=[],t=0,n=r.length;n>t;t++)o=r[t],o[1]-o[0]>1&&(o[0]+=i,o[1]+=i,\"\\n\"!==this.document.getCharacterAtPosition(o[1])&&(this.document=this.document.insertBlockBreakAtRange(o[1]),o[1]<this.selectedRange[1]&&this.moveSelectedRangeForward(),o[1]++,i++),0!==o[0]&&\"\\n\"!==this.document.getCharacterAtPosition(o[0]-1)&&(this.document=this.document.insertBlockBreakAtRange(o[0]),o[0]<this.selectedRange[0]&&this.moveSelectedRangeForward(),o[0]++,i++),s.push(this.document=this.document.applyBlockAttributeAtRange(e,!0,o)));return s},t.prototype.findRangesOfBlocks=function(){return this.document.findRangesForBlockAttribute(e)},t.prototype.findRangesOfPieces=function(){return this.document.findRangesForTextAttribute(n,{withValue:i})},t.prototype.moveSelectedRangeForward=function(){return this.selectedRange[0]+=1,this.selectedRange[1]+=1},t}()}.call(this),function(){var t=function(t,e){return function(){return t.apply(e,arguments)}};e.Editor=function(){function n(n,o,r){this.composition=n,this.selectionManager=o,this.element=r,this.insertFiles=t(this.insertFiles,this),this.undoManager=new e.UndoManager(this.composition),this.filters=i.slice(0)}var i;return i=[e.attachmentGalleryFilter],n.prototype.loadDocument=function(t){return this.loadSnapshot({document:t,selectedRange:[0,0]})},n.prototype.loadHTML=function(t){return null==t&&(t=\"\"),this.loadDocument(e.Document.fromHTML(t,{referenceElement:this.element}))},n.prototype.loadJSON=function(t){var n,i;return n=t.document,i=t.selectedRange,n=e.Document.fromJSON(n),this.loadSnapshot({document:n,selectedRange:i})},n.prototype.loadSnapshot=function(t){return this.undoManager=new e.UndoManager(this.composition),this.composition.loadSnapshot(t)},n.prototype.getDocument=function(){return this.composition.document},n.prototype.getSelectedDocument=function(){return this.composition.getSelectedDocument()},n.prototype.getSnapshot=function(){return this.composition.getSnapshot()},n.prototype.toJSON=function(){return this.getSnapshot()},n.prototype.deleteInDirection=function(t){return this.composition.deleteInDirection(t)},n.prototype.insertAttachment=function(t){return this.composition.insertAttachment(t)},n.prototype.insertAttachments=function(t){return this.composition.insertAttachments(t)},n.prototype.insertDocument=function(t){return this.composition.insertDocument(t)},n.prototype.insertFile=function(t){return this.composition.insertFile(t)},n.prototype.insertFiles=function(t){return this.composition.insertFiles(t)},n.prototype.insertHTML=function(t){return this.composition.insertHTML(t)},n.prototype.insertString=function(t){return this.composition.insertString(t)},n.prototype.insertText=function(t){return this.composition.insertText(t)},n.prototype.insertLineBreak=function(){return this.composition.insertLineBreak()},n.prototype.getSelectedRange=function(){return this.composition.getSelectedRange()},n.prototype.getPosition=function(){return this.composition.getPosition()},n.prototype.getClientRectAtPosition=function(t){var e;return e=this.getDocument().locationRangeFromRange([t,t+1]),this.selectionManager.getClientRectAtLocationRange(e)},n.prototype.expandSelectionInDirection=function(t){return this.composition.expandSelectionInDirection(t)},n.prototype.moveCursorInDirection=function(t){return this.composition.moveCursorInDirection(t)},n.prototype.setSelectedRange=function(t){return this.composition.setSelectedRange(t)},n.prototype.activateAttribute=function(t,e){return null==e&&(e=!0),this.composition.setCurrentAttribute(t,e)},n.prototype.attributeIsActive=function(t){return this.composition.hasCurrentAttribute(t)},n.prototype.canActivateAttribute=function(t){return this.composition.canSetCurrentAttribute(t)},n.prototype.deactivateAttribute=function(t){return this.composition.removeCurrentAttribute(t)},n.prototype.canDecreaseNestingLevel=function(){return this.composition.canDecreaseNestingLevel()},n.prototype.canIncreaseNestingLevel=function(){return this.composition.canIncreaseNestingLevel()},n.prototype.decreaseNestingLevel=function(){return this.canDecreaseNestingLevel()?this.composition.decreaseNestingLevel():void 0},n.prototype.increaseNestingLevel=function(){return this.canIncreaseNestingLevel()?this.composition.increaseNestingLevel():void 0},n.prototype.canRedo=function(){return this.undoManager.canRedo()},n.prototype.canUndo=function(){return this.undoManager.canUndo()},n.prototype.recordUndoEntry=function(t,e){var n,i,o;return o=null!=e?e:{},i=o.context,n=o.consolidatable,this.undoManager.recordUndoEntry(t,{context:i,consolidatable:n})},n.prototype.redo=function(){return this.canRedo()?this.undoManager.redo():void 0},n.prototype.undo=function(){return this.canUndo()?this.undoManager.undo():void 0},n}()}.call(this),function(){var t=function(t,e){function i(){this.constructor=t}for(var o in e)n.call(e,o)&&(t[o]=e[o]);return i.prototype=e.prototype,t.prototype=new i,t.__super__=e.prototype,t},n={}.hasOwnProperty;e.ManagedAttachment=function(e){function n(t,e){var n;this.attachmentManager=t,this.attachment=e,n=this.attachment,this.id=n.id,this.file=n.file}return t(n,e),n.prototype.remove=function(){return this.attachmentManager.requestRemovalOfAttachment(this.attachment)},n.proxyMethod(\"attachment.getAttribute\"),n.proxyMethod(\"attachment.hasAttribute\"),n.proxyMethod(\"attachment.setAttribute\"),n.proxyMethod(\"attachment.getAttributes\"),n.proxyMethod(\"attachment.setAttributes\"),n.proxyMethod(\"attachment.isPending\"),n.proxyMethod(\"attachment.isPreviewable\"),n.proxyMethod(\"attachment.getURL\"),n.proxyMethod(\"attachment.getHref\"),n.proxyMethod(\"attachment.getFilename\"),n.proxyMethod(\"attachment.getFilesize\"),n.proxyMethod(\"attachment.getFormattedFilesize\"),n.proxyMethod(\"attachment.getExtension\"),n.proxyMethod(\"attachment.getContentType\"),n.proxyMethod(\"attachment.getFile\"),n.proxyMethod(\"attachment.setFile\"),n.proxyMethod(\"attachment.releaseFile\"),n.proxyMethod(\"attachment.getUploadProgress\"),n.proxyMethod(\"attachment.setUploadProgress\"),n}(e.BasicObject)}.call(this),function(){var t=function(t,e){function i(){this.constructor=t}for(var o in e)n.call(e,o)&&(t[o]=e[o]);return i.prototype=e.prototype,t.prototype=new i,t.__super__=e.prototype,t},n={}.hasOwnProperty;e.AttachmentManager=function(n){function i(t){var e,n,i;for(null==t&&(t=[]),this.managedAttachments={},n=0,i=t.length;i>n;n++)e=t[n],this.manageAttachment(e)}return t(i,n),i.prototype.getAttachments=function(){var t,e,n,i;n=this.managedAttachments,i=[];for(e in n)t=n[e],i.push(t);return i},i.prototype.manageAttachment=function(t){var n,i;return null!=(n=this.managedAttachments)[i=t.id]?n[i]:n[i]=new e.ManagedAttachment(this,t)},i.prototype.attachmentIsManaged=function(t){return t.id in this.managedAttachments},i.prototype.requestRemovalOfAttachment=function(t){var e;return this.attachmentIsManaged(t)&&null!=(e=this.delegate)&&\"function\"==typeof e.attachmentManagerDidRequestRemovalOfAttachment?e.attachmentManagerDidRequestRemovalOfAttachment(t):void 0},i.prototype.unmanageAttachment=function(t){var e;return e=this.managedAttachments[t.id],delete this.managedAttachments[t.id],e},i}(e.BasicObject)}.call(this),function(){var t,n,i,o,r,s,a,u,c,l,h;t=e.elementContainsNode,n=e.findChildIndexOfNode,r=e.nodeIsBlockStart,s=e.nodeIsBlockStartComment,o=e.nodeIsBlockContainer,a=e.nodeIsCursorTarget,u=e.nodeIsEmptyTextNode,c=e.nodeIsTextNode,i=e.nodeIsAttachmentElement,l=e.tagName,h=e.walkTree,e.LocationMapper=function(){function e(t){this.element=t\n}var p,d,f,g;return e.prototype.findLocationFromContainerAndOffset=function(e,i,o){var s,u,l,p,g,m,v;for(m=(null!=o?o:{strict:!0}).strict,u=0,l=!1,p={index:0,offset:0},(s=this.findAttachmentElementParentForNode(e))&&(e=s.parentNode,i=n(s)),v=h(this.element,{usingFilter:f});v.nextNode();){if(g=v.currentNode,g===e&&c(e)){a(g)||(p.offset+=i);break}if(g.parentNode===e){if(u++===i)break}else if(!t(e,g)&&u>0)break;r(g,{strict:m})?(l&&p.index++,p.offset=0,l=!0):p.offset+=d(g)}return p},e.prototype.findContainerAndOffsetFromLocation=function(t){var e,i,s,u,l;if(0===t.index&&0===t.offset){for(e=this.element,u=0;e.firstChild;)if(e=e.firstChild,o(e)){u=1;break}return[e,u]}if(l=this.findNodeAndOffsetFromLocation(t),i=l[0],s=l[1],i){if(c(i))0===d(i)?(e=i.parentNode.parentNode,u=n(i.parentNode),a(i,{name:\"right\"})&&u++):(e=i,u=t.offset-s);else{if(e=i.parentNode,!r(i.previousSibling)&&!o(e))for(;i===e.lastChild&&(i=e,e=e.parentNode,!o(e)););u=n(i),0!==t.offset&&u++}return[e,u]}},e.prototype.findNodeAndOffsetFromLocation=function(t){var e,n,i,o,r,s,u,l;for(u=0,l=this.getSignificantNodesForIndex(t.index),n=0,i=l.length;i>n;n++){if(e=l[n],o=d(e),t.offset<=u+o)if(c(e)){if(r=e,s=u,t.offset===s&&a(r))break}else r||(r=e,s=u);if(u+=o,u>t.offset)break}return[r,s]},e.prototype.findAttachmentElementParentForNode=function(t){for(;t&&t!==this.element;){if(i(t))return t;t=t.parentNode}},e.prototype.getSignificantNodesForIndex=function(t){var e,n,i,o,r;for(i=[],r=h(this.element,{usingFilter:p}),o=!1;r.nextNode();)if(n=r.currentNode,s(n)){if(\"undefined\"!=typeof e&&null!==e?e++:e=0,e===t)o=!0;else if(o)break}else o&&i.push(n);return i},d=function(t){var e;return t.nodeType===Node.TEXT_NODE?a(t)?0:(e=t.textContent,e.length):\"br\"===l(t)||i(t)?1:0},p=function(t){return g(t)===NodeFilter.FILTER_ACCEPT?f(t):NodeFilter.FILTER_REJECT},g=function(t){return u(t)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT},f=function(t){return i(t.parentNode)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT},e}()}.call(this),function(){var t,n,i=[].slice;t=e.getDOMRange,n=e.setDOMRange,e.PointMapper=function(){function e(){}return e.prototype.createDOMRangeFromPoint=function(e){var i,o,r,s,a,u,c,l;if(c=e.x,l=e.y,document.caretPositionFromPoint)return a=document.caretPositionFromPoint(c,l),r=a.offsetNode,o=a.offset,i=document.createRange(),i.setStart(r,o),i;if(document.caretRangeFromPoint)return document.caretRangeFromPoint(c,l);if(document.body.createTextRange){s=t();try{u=document.body.createTextRange(),u.moveToPoint(c,l),u.select()}catch(h){}return i=t(),n(s),i}},e.prototype.getClientRectsForDOMRange=function(t){var e,n,o;return n=i.call(t.getClientRects()),o=n[0],e=n[n.length-1],[o,e]},e}()}.call(this),function(){var t,n=function(t,e){return function(){return t.apply(e,arguments)}},i=function(t,e){function n(){this.constructor=t}for(var i in e)o.call(e,i)&&(t[i]=e[i]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},o={}.hasOwnProperty,r=[].indexOf||function(t){for(var e=0,n=this.length;n>e;e++)if(e in this&&this[e]===t)return e;return-1};t=e.getDOMRange,e.SelectionChangeObserver=function(e){function o(){this.run=n(this.run,this),this.update=n(this.update,this),this.selectionManagers=[]}var s;return i(o,e),o.prototype.start=function(){return this.started?void 0:(this.started=!0,\"onselectionchange\"in document?document.addEventListener(\"selectionchange\",this.update,!0):this.run())},o.prototype.stop=function(){return this.started?(this.started=!1,document.removeEventListener(\"selectionchange\",this.update,!0)):void 0},o.prototype.registerSelectionManager=function(t){return r.call(this.selectionManagers,t)<0?(this.selectionManagers.push(t),this.start()):void 0},o.prototype.unregisterSelectionManager=function(t){var e;return this.selectionManagers=function(){var n,i,o,r;for(o=this.selectionManagers,r=[],n=0,i=o.length;i>n;n++)e=o[n],e!==t&&r.push(e);return r}.call(this),0===this.selectionManagers.length?this.stop():void 0},o.prototype.notifySelectionManagersOfSelectionChange=function(){var t,e,n,i,o;for(n=this.selectionManagers,i=[],t=0,e=n.length;e>t;t++)o=n[t],i.push(o.selectionDidChange());return i},o.prototype.update=function(){var e;return e=t(),s(e,this.domRange)?void 0:(this.domRange=e,this.notifySelectionManagersOfSelectionChange())},o.prototype.reset=function(){return this.domRange=null,this.update()},o.prototype.run=function(){return this.started?(this.update(),requestAnimationFrame(this.run)):void 0},s=function(t,e){return(null!=t?t.startContainer:void 0)===(null!=e?e.startContainer:void 0)&&(null!=t?t.startOffset:void 0)===(null!=e?e.startOffset:void 0)&&(null!=t?t.endContainer:void 0)===(null!=e?e.endContainer:void 0)&&(null!=t?t.endOffset:void 0)===(null!=e?e.endOffset:void 0)},o}(e.BasicObject),null==e.selectionChangeObserver&&(e.selectionChangeObserver=new e.SelectionChangeObserver)}.call(this),function(){var t,n,i,o,r,s,a,u,c,l,h=function(t,e){return function(){return t.apply(e,arguments)}},p=function(t,e){function n(){this.constructor=t}for(var i in e)d.call(e,i)&&(t[i]=e[i]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},d={}.hasOwnProperty;i=e.getDOMSelection,n=e.getDOMRange,l=e.setDOMRange,t=e.elementContainsNode,s=e.nodeIsCursorTarget,r=e.innerElementIsActive,o=e.handleEvent,a=e.normalizeRange,u=e.rangeIsCollapsed,c=e.rangesAreEqual,e.SelectionManager=function(d){function f(t){this.element=t,this.selectionDidChange=h(this.selectionDidChange,this),this.didMouseDown=h(this.didMouseDown,this),this.locationMapper=new e.LocationMapper(this.element),this.pointMapper=new e.PointMapper,this.lockCount=0,o(\"mousedown\",{onElement:this.element,withCallback:this.didMouseDown})}return p(f,d),f.prototype.getLocationRange=function(t){var e,i;return null==t&&(t={}),e=t.strict===!1?this.createLocationRangeFromDOMRange(n(),{strict:!1}):t.ignoreLock?this.currentLocationRange:null!=(i=this.lockedLocationRange)?i:this.currentLocationRange},f.prototype.setLocationRange=function(t){var e;if(!this.lockedLocationRange)return t=a(t),(e=this.createDOMRangeFromLocationRange(t))?(l(e),this.updateCurrentLocationRange(t)):void 0},f.prototype.setLocationRangeFromPointRange=function(t){var e,n;return t=a(t),n=this.getLocationAtPoint(t[0]),e=this.getLocationAtPoint(t[1]),this.setLocationRange([n,e])},f.prototype.getClientRectAtLocationRange=function(t){var e;return(e=this.createDOMRangeFromLocationRange(t))?this.getClientRectsForDOMRange(e)[1]:void 0},f.prototype.locationIsCursorTarget=function(t){var e,n,i;return i=this.findNodeAndOffsetFromLocation(t),e=i[0],n=i[1],s(e)},f.prototype.lock=function(){return 0===this.lockCount++?(this.updateCurrentLocationRange(),this.lockedLocationRange=this.getLocationRange()):void 0},f.prototype.unlock=function(){var t;return 0===--this.lockCount&&(t=this.lockedLocationRange,this.lockedLocationRange=null,null!=t)?this.setLocationRange(t):void 0},f.prototype.clearSelection=function(){var t;return null!=(t=i())?t.removeAllRanges():void 0},f.prototype.selectionIsCollapsed=function(){var t;return(null!=(t=n())?t.collapsed:void 0)===!0},f.prototype.selectionIsExpanded=function(){return!this.selectionIsCollapsed()},f.prototype.createLocationRangeFromDOMRange=function(t,e){var n,i;if(null!=t&&this.domRangeWithinElement(t)&&(i=this.findLocationFromContainerAndOffset(t.startContainer,t.startOffset,e)))return t.collapsed||(n=this.findLocationFromContainerAndOffset(t.endContainer,t.endOffset,e)),a([i,n])},f.proxyMethod(\"locationMapper.findLocationFromContainerAndOffset\"),f.proxyMethod(\"locationMapper.findContainerAndOffsetFromLocation\"),f.proxyMethod(\"locationMapper.findNodeAndOffsetFromLocation\"),f.proxyMethod(\"pointMapper.createDOMRangeFromPoint\"),f.proxyMethod(\"pointMapper.getClientRectsForDOMRange\"),f.prototype.didMouseDown=function(){return this.pauseTemporarily()},f.prototype.pauseTemporarily=function(){var e,n,i,r;return this.paused=!0,n=function(e){return function(){var n,o,s;for(e.paused=!1,clearTimeout(r),o=0,s=i.length;s>o;o++)n=i[o],n.destroy();return t(document,e.element)?e.selectionDidChange():void 0}}(this),r=setTimeout(n,200),i=function(){var t,i,r,s;for(r=[\"mousemove\",\"keydown\"],s=[],t=0,i=r.length;i>t;t++)e=r[t],s.push(o(e,{onElement:document,withCallback:n}));return s}()},f.prototype.selectionDidChange=function(){return this.paused||r(this.element)?void 0:this.updateCurrentLocationRange()},f.prototype.updateCurrentLocationRange=function(t){var e;return(null!=t?t:t=this.createLocationRangeFromDOMRange(n()))&&!c(t,this.currentLocationRange)?(this.currentLocationRange=t,null!=(e=this.delegate)&&\"function\"==typeof e.locationRangeDidChange?e.locationRangeDidChange(this.currentLocationRange.slice(0)):void 0):void 0},f.prototype.createDOMRangeFromLocationRange=function(t){var e,n,i,o;return i=this.findContainerAndOffsetFromLocation(t[0]),n=u(t)?i:null!=(o=this.findContainerAndOffsetFromLocation(t[1]))?o:i,null!=i&&null!=n?(e=document.createRange(),e.setStart.apply(e,i),e.setEnd.apply(e,n),e):void 0},f.prototype.getLocationAtPoint=function(t){var e,n;return(e=this.createDOMRangeFromPoint(t))&&null!=(n=this.createLocationRangeFromDOMRange(e))?n[0]:void 0},f.prototype.domRangeWithinElement=function(e){return e.collapsed?t(this.element,e.startContainer):t(this.element,e.startContainer)&&t(this.element,e.endContainer)},f}(e.BasicObject)}.call(this),function(){var t,n,i,o,r=function(t,e){function n(){this.constructor=t}for(var i in e)s.call(e,i)&&(t[i]=e[i]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},s={}.hasOwnProperty,a=[].slice;i=e.rangeIsCollapsed,o=e.rangesAreEqual,n=e.objectsAreEqual,t=e.getBlockConfig,e.EditorController=function(s){function u(t){var n,i;this.editorElement=t.editorElement,n=t.document,i=t.html,this.selectionManager=new e.SelectionManager(this.editorElement),this.selectionManager.delegate=this,this.composition=new e.Composition,this.composition.delegate=this,this.attachmentManager=new e.AttachmentManager(this.composition.getAttachments()),this.attachmentManager.delegate=this,this.inputController=new(e[\"Level\"+e.config.input.getLevel()+\"InputController\"])(this.editorElement),this.inputController.delegate=this,this.inputController.responder=this.composition,this.compositionController=new e.CompositionController(this.editorElement,this.composition),this.compositionController.delegate=this,this.toolbarController=new e.ToolbarController(this.editorElement.toolbarElement),this.toolbarController.delegate=this,this.editor=new e.Editor(this.composition,this.selectionManager,this.editorElement),null!=n?this.editor.loadDocument(n):this.editor.loadHTML(i)}var c;return r(u,s),u.prototype.registerSelectionManager=function(){return e.selectionChangeObserver.registerSelectionManager(this.selectionManager)},u.prototype.unregisterSelectionManager=function(){return e.selectionChangeObserver.unregisterSelectionManager(this.selectionManager)},u.prototype.render=function(){return this.compositionController.render()},u.prototype.reparse=function(){return this.composition.replaceHTML(this.editorElement.innerHTML)},u.prototype.compositionDidChangeDocument=function(){return this.notifyEditorElement(\"document-change\"),this.handlingInput?void 0:this.render()},u.prototype.compositionDidChangeCurrentAttributes=function(t){return this.currentAttributes=t,this.toolbarController.updateAttributes(this.currentAttributes),this.updateCurrentActions(),this.notifyEditorElement(\"attributes-change\",{attributes:this.currentAttributes})},u.prototype.compositionDidPerformInsertionAtRange=function(t){return this.pasting?this.pastedRange=t:void 0},u.prototype.compositionShouldAcceptFile=function(t){return this.notifyEditorElement(\"file-accept\",{file:t})},u.prototype.compositionDidAddAttachment=function(t){var e;return e=this.attachmentManager.manageAttachment(t),this.notifyEditorElement(\"attachment-add\",{attachment:e})},u.prototype.compositionDidEditAttachment=function(t){var e;return this.compositionController.rerenderViewForObject(t),e=this.attachmentManager.manageAttachment(t),this.notifyEditorElement(\"attachment-edit\",{attachment:e}),this.notifyEditorElement(\"change\")},u.prototype.compositionDidChangeAttachmentPreviewURL=function(t){return this.compositionController.invalidateViewForObject(t),this.notifyEditorElement(\"change\")},u.prototype.compositionDidRemoveAttachment=function(t){var e;return e=this.attachmentManager.unmanageAttachment(t),this.notifyEditorElement(\"attachment-remove\",{attachment:e})},u.prototype.compositionDidStartEditingAttachment=function(t,e){return this.attachmentLocationRange=this.composition.document.getLocationRangeOfAttachment(t),this.compositionController.installAttachmentEditorForAttachment(t,e),this.selectionManager.setLocationRange(this.attachmentLocationRange)},u.prototype.compositionDidStopEditingAttachment=function(){return this.compositionController.uninstallAttachmentEditor(),this.attachmentLocationRange=null},u.prototype.compositionDidRequestChangingSelectionToLocationRange=function(t){return!this.loadingSnapshot||this.isFocused()?(this.requestedLocationRange=t,this.compositionRevisionWhenLocationRangeRequested=this.composition.revision,this.handlingInput?void 0:this.render()):void 0},u.prototype.compositionWillLoadSnapshot=function(){return this.loadingSnapshot=!0},u.prototype.compositionDidLoadSnapshot=function(){return this.compositionController.refreshViewCache(),this.render(),this.loadingSnapshot=!1},u.prototype.getSelectionManager=function(){return this.selectionManager},u.proxyMethod(\"getSelectionManager().setLocationRange\"),u.proxyMethod(\"getSelectionManager().getLocationRange\"),u.prototype.attachmentManagerDidRequestRemovalOfAttachment=function(t){return this.removeAttachment(t)},u.prototype.compositionControllerWillSyncDocumentView=function(){return this.inputController.editorWillSyncDocumentView(),this.selectionManager.lock(),this.selectionManager.clearSelection()},u.prototype.compositionControllerDidSyncDocumentView=function(){return this.inputController.editorDidSyncDocumentView(),this.selectionManager.unlock(),this.updateCurrentActions(),this.notifyEditorElement(\"sync\")},u.prototype.compositionControllerDidRender=function(){return null!=this.requestedLocationRange&&(this.compositionRevisionWhenLocationRangeRequested===this.composition.revision&&this.selectionManager.setLocationRange(this.requestedLocationRange),this.requestedLocationRange=null,this.compositionRevisionWhenLocationRangeRequested=null),this.renderedCompositionRevision!==this.composition.revision&&(this.runEditorFilters(),this.composition.updateCurrentAttributes(),this.notifyEditorElement(\"render\")),this.renderedCompositionRevision=this.composition.revision},u.prototype.compositionControllerDidFocus=function(){return this.isFocusedInvisibly()&&this.setLocationRange({index:0,offset:0}),this.toolbarController.hideDialog(),this.notifyEditorElement(\"focus\")},u.prototype.compositionControllerDidBlur=function(){return this.notifyEditorElement(\"blur\")},u.prototype.compositionControllerDidSelectAttachment=function(t,e){return this.toolbarController.hideDialog(),this.composition.editAttachment(t,e)},u.prototype.compositionControllerDidRequestDeselectingAttachment=function(t){var e,n;return e=null!=(n=this.attachmentLocationRange)?n:this.composition.document.getLocationRangeOfAttachment(t),this.selectionManager.setLocationRange(e[1])},u.prototype.compositionControllerWillUpdateAttachment=function(t){return this.editor.recordUndoEntry(\"Edit Attachment\",{context:t.id,consolidatable:!0})},u.prototype.compositionControllerDidRequestRemovalOfAttachment=function(t){return this.removeAttachment(t)},u.prototype.inputControllerWillHandleInput=function(){return this.handlingInput=!0,this.requestedRender=!1},u.prototype.inputControllerDidRequestRender=function(){return this.requestedRender=!0},u.prototype.inputControllerDidHandleInput=function(){return this.handlingInput=!1,this.requestedRender?(this.requestedRender=!1,this.render()):void 0},u.prototype.inputControllerDidAllowUnhandledInput=function(){return this.notifyEditorElement(\"change\")},u.prototype.inputControllerDidRequestReparse=function(){return this.reparse()},u.prototype.inputControllerWillPerformTyping=function(){return this.recordTypingUndoEntry()},u.prototype.inputControllerWillPerformFormatting=function(t){return this.recordFormattingUndoEntry(t)},u.prototype.inputControllerWillCutText=function(){return this.editor.recordUndoEntry(\"Cut\")},u.prototype.inputControllerWillPaste=function(t){return this.editor.recordUndoEntry(\"Paste\"),this.pasting=!0,this.notifyEditorElement(\"before-paste\",{paste:t})},u.prototype.inputControllerDidPaste=function(t){return t.range=this.pastedRange,this.pastedRange=null,this.pasting=null,this.notifyEditorElement(\"paste\",{paste:t})},u.prototype.inputControllerWillMoveText=function(){return this.editor.recordUndoEntry(\"Move\")},u.prototype.inputControllerWillAttachFiles=function(){return this.editor.recordUndoEntry(\"Drop Files\")},u.prototype.inputControllerWillPerformUndo=function(){return this.editor.undo()},u.prototype.inputControllerWillPerformRedo=function(){return this.editor.redo()},u.prototype.inputControllerDidReceiveKeyboardCommand=function(t){return this.toolbarController.applyKeyboardCommand(t)},u.prototype.inputControllerDidStartDrag=function(){return this.locationRangeBeforeDrag=this.selectionManager.getLocationRange()},u.prototype.inputControllerDidReceiveDragOverPoint=function(t){return this.selectionManager.setLocationRangeFromPointRange(t)},u.prototype.inputControllerDidCancelDrag=function(){return this.selectionManager.setLocationRange(this.locationRangeBeforeDrag),this.locationRangeBeforeDrag=null},u.prototype.locationRangeDidChange=function(t){return this.composition.updateCurrentAttributes(),this.updateCurrentActions(),this.attachmentLocationRange&&!o(this.attachmentLocationRange,t)&&this.composition.stopEditingAttachment(),this.notifyEditorElement(\"selection-change\")},u.prototype.toolbarDidClickButton=function(){return this.getLocationRange()?void 0:this.setLocationRange({index:0,offset:0})},u.prototype.toolbarDidInvokeAction=function(t){return this.invokeAction(t)},u.prototype.toolbarDidToggleAttribute=function(t){return this.recordFormattingUndoEntry(t),this.composition.toggleCurrentAttribute(t),this.render(),this.selectionFrozen?void 0:this.editorElement.focus()},u.prototype.toolbarDidUpdateAttribute=function(t,e){return this.recordFormattingUndoEntry(t),this.composition.setCurrentAttribute(t,e),this.render(),this.selectionFrozen?void 0:this.editorElement.focus()},u.prototype.toolbarDidRemoveAttribute=function(t){return this.recordFormattingUndoEntry(t),this.composition.removeCurrentAttribute(t),this.render(),this.selectionFrozen?void 0:this.editorElement.focus()},u.prototype.toolbarWillShowDialog=function(){return this.composition.expandSelectionForEditing(),this.freezeSelection()},u.prototype.toolbarDidShowDialog=function(t){return this.notifyEditorElement(\"toolbar-dialog-show\",{dialogName:t})},u.prototype.toolbarDidHideDialog=function(t){return this.thawSelection(),this.editorElement.focus(),this.notifyEditorElement(\"toolbar-dialog-hide\",{dialogName:t})},u.prototype.freezeSelection=function(){return this.selectionFrozen?void 0:(this.selectionManager.lock(),this.composition.freezeSelection(),this.selectionFrozen=!0,this.render())},u.prototype.thawSelection=function(){return this.selectionFrozen?(this.composition.thawSelection(),this.selectionManager.unlock(),this.selectionFrozen=!1,this.render()):void 0},u.prototype.actions={undo:{test:function(){return this.editor.canUndo()},perform:function(){return this.editor.undo()}},redo:{test:function(){return this.editor.canRedo()},perform:function(){return this.editor.redo()}},link:{test:function(){return this.editor.canActivateAttribute(\"href\")}},increaseNestingLevel:{test:function(){return this.editor.canIncreaseNestingLevel()},perform:function(){return this.editor.increaseNestingLevel()&&this.render()}},decreaseNestingLevel:{test:function(){return this.editor.canDecreaseNestingLevel()},perform:function(){return this.editor.decreaseNestingLevel()&&this.render()}},attachFiles:{test:function(){return!0},perform:function(){return e.config.input.pickFiles(this.editor.insertFiles)}}},u.prototype.canInvokeAction=function(t){var e,n;return this.actionIsExternal(t)?!0:!!(null!=(e=this.actions[t])&&null!=(n=e.test)?n.call(this):void 0)},u.prototype.invokeAction=function(t){var e,n;return this.actionIsExternal(t)?this.notifyEditorElement(\"action-invoke\",{actionName:t}):null!=(e=this.actions[t])&&null!=(n=e.perform)?n.call(this):void 0},u.prototype.actionIsExternal=function(t){return/^x-./.test(t)},u.prototype.getCurrentActions=function(){var t,e;e={};for(t in this.actions)e[t]=this.canInvokeAction(t);return e},u.prototype.updateCurrentActions=function(){var t;return t=this.getCurrentActions(),n(t,this.currentActions)?void 0:(this.currentActions=t,this.toolbarController.updateActions(this.currentActions),this.notifyEditorElement(\"actions-change\",{actions:this.currentActions}))},u.prototype.runEditorFilters=function(){var t,e,n,i,o,r,s,a;for(a=this.composition.getSnapshot(),o=this.editor.filters,n=0,i=o.length;i>n;n++)e=o[n],t=a.document,s=a.selectedRange,a=null!=(r=e.call(this.editor,a))?r:{},null==a.document&&(a.document=t),null==a.selectedRange&&(a.selectedRange=s);return c(a,this.composition.getSnapshot())?void 0:this.composition.loadSnapshot(a)},c=function(t,e){return o(t.selectedRange,e.selectedRange)&&t.document.isEqualTo(e.document)},u.prototype.updateInputElement=function(){var t,n;return t=this.compositionController.getSerializableElement(),n=e.serializeToContentType(t,\"text/html\"),this.editorElement.setInputElementValue(n)},u.prototype.notifyEditorElement=function(t,e){switch(t){case\"document-change\":this.documentChangedSinceLastRender=!0;break;case\"render\":this.documentChangedSinceLastRender&&(this.documentChangedSinceLastRender=!1,this.notifyEditorElement(\"change\"));break;case\"change\":case\"attachment-add\":case\"attachment-edit\":case\"attachment-remove\":this.updateInputElement()}return this.editorElement.notify(t,e)},u.prototype.removeAttachment=function(t){return this.editor.recordUndoEntry(\"Delete Attachment\"),this.composition.removeAttachment(t),this.render()},u.prototype.recordFormattingUndoEntry=function(e){var n,o;return n=t(e),o=this.selectionManager.getLocationRange(),n||!i(o)?this.editor.recordUndoEntry(\"Formatting\",{context:this.getUndoContext(),consolidatable:!0}):void 0},u.prototype.recordTypingUndoEntry=function(){return this.editor.recordUndoEntry(\"Typing\",{context:this.getUndoContext(this.currentAttributes),consolidatable:!0})},u.prototype.getUndoContext=function(){var t;return t=1<=arguments.length?a.call(arguments,0):[],[this.getLocationContext(),this.getTimeContext()].concat(a.call(t))},u.prototype.getLocationContext=function(){var t;return t=this.selectionManager.getLocationRange(),i(t)?t[0].index:t},u.prototype.getTimeContext=function(){return e.config.undoInterval>0?Math.floor((new Date).getTime()/e.config.undoInterval):0},u.prototype.isFocused=function(){var t;return this.editorElement===(null!=(t=this.editorElement.ownerDocument)?t.activeElement:void 0)},u.prototype.isFocusedInvisibly=function(){return this.isFocused()&&!this.getLocationRange()},u}(e.Controller)}.call(this),function(){var t,n,i,o,r,s,a,u=[].indexOf||function(t){for(var e=0,n=this.length;n>e;e++)if(e in this&&this[e]===t)return e;return-1};n=e.browser,s=e.makeElement,a=e.triggerEvent,o=e.handleEvent,r=e.handleEventOnce,i=e.findClosestElementFromNode,t=e.AttachmentView.attachmentSelector,e.registerElement(\"trix-editor\",function(){var c,l,h,p,d,f,g,m,v;return g=0,l=function(t){return!document.querySelector(\":focus\")&&t.hasAttribute(\"autofocus\")&&document.querySelector(\"[autofocus]\")===t?t.focus():void 0},m=function(t){return t.hasAttribute(\"contenteditable\")?void 0:(t.setAttribute(\"contenteditable\",\"\"),r(\"focus\",{onElement:t,withCallback:function(){return h(t)}}))},h=function(t){return d(t),v(t)},d=function(t){return(\"function\"==typeof document.queryCommandSupported?document.queryCommandSupported(\"enableObjectResizing\"):void 0)?(document.execCommand(\"enableObjectResizing\",!1,!1),o(\"mscontrolselect\",{onElement:t,preventDefault:!0})):void 0},v=function(){var t;return(\"function\"==typeof document.queryCommandSupported?document.queryCommandSupported(\"DefaultParagraphSeparator\"):void 0)&&(t=e.config.blockAttributes[\"default\"].tagName,\"div\"===t||\"p\"===t)?document.execCommand(\"DefaultParagraphSeparator\",!1,t):void 0},c=function(t){return t.hasAttribute(\"role\")?void 0:t.setAttribute(\"role\",\"textbox\")},f=function(t){var e;if(!t.hasAttribute(\"aria-label\")&&!t.hasAttribute(\"aria-labelledby\"))return(e=function(){var e,n,i;return i=function(){var n,i,o,r;for(o=t.labels,r=[],n=0,i=o.length;i>n;n++)e=o[n],e.contains(t)||r.push(e.textContent);return r}(),(n=i.join(\" \"))?t.setAttribute(\"aria-label\",n):t.removeAttribute(\"aria-label\")})(),o(\"focus\",{onElement:t,withCallback:e})},p=function(){return n.forcesObjectResizing?{display:\"inline\",width:\"auto\"}:{display:\"inline-block\",width:\"1px\"}}(),{defaultCSS:\"%t {\\n  display: block;\\n}\\n\\n%t:empty:not(:focus)::before {\\n  content: attr(placeholder);\\n  color: graytext;\\n  cursor: text;\\n  pointer-events: none;\\n}\\n\\n%t a[contenteditable=false] {\\n  cursor: text;\\n}\\n\\n%t img {\\n  max-width: 100%;\\n  height: auto;\\n}\\n\\n%t \"+t+\" figcaption textarea {\\n  resize: none;\\n}\\n\\n%t \"+t+\" figcaption textarea.trix-autoresize-clone {\\n  position: absolute;\\n  left: -9999px;\\n  max-height: 0px;\\n}\\n\\n%t \"+t+\" figcaption[data-trix-placeholder]:empty::before {\\n  content: attr(data-trix-placeholder);\\n  color: graytext;\\n}\\n\\n%t [data-trix-cursor-target] {\\n  display: \"+p.display+\" !important;\\n  width: \"+p.width+\" !important;\\n  padding: 0 !important;\\n  margin: 0 !important;\\n  border: none !important;\\n}\\n\\n%t [data-trix-cursor-target=left] {\\n  vertical-align: top !important;\\n  margin-left: -1px !important;\\n}\\n\\n%t [data-trix-cursor-target=right] {\\n  vertical-align: bottom !important;\\n  margin-right: -1px !important;\\n}\",trixId:{get:function(){return this.hasAttribute(\"trix-id\")?this.getAttribute(\"trix-id\"):(this.setAttribute(\"trix-id\",++g),this.trixId)}},labels:{get:function(){var t,e,n;return e=[],this.id&&this.ownerDocument&&e.push.apply(e,this.ownerDocument.querySelectorAll(\"label[for='\"+this.id+\"']\")),(t=i(this,{matchingSelector:\"label\"}))&&((n=t.control)===this||null===n)&&e.push(t),e}},toolbarElement:{get:function(){var t,e,n;return this.hasAttribute(\"toolbar\")?null!=(e=this.ownerDocument)?e.getElementById(this.getAttribute(\"toolbar\")):void 0:this.parentNode?(n=\"trix-toolbar-\"+this.trixId,this.setAttribute(\"toolbar\",n),t=s(\"trix-toolbar\",{id:n}),this.parentNode.insertBefore(t,this),t):void 0}},inputElement:{get:function(){var t,e,n;return this.hasAttribute(\"input\")?null!=(n=this.ownerDocument)?n.getElementById(this.getAttribute(\"input\")):void 0:this.parentNode?(e=\"trix-input-\"+this.trixId,this.setAttribute(\"input\",e),t=s(\"input\",{type:\"hidden\",id:e}),this.parentNode.insertBefore(t,this.nextElementSibling),t):void 0}},editor:{get:function(){var t;return null!=(t=this.editorController)?t.editor:void 0}},name:{get:function(){var t;return null!=(t=this.inputElement)?t.name:void 0}},value:{get:function(){var t;return null!=(t=this.inputElement)?t.value:void 0},set:function(t){var e;return this.defaultValue=t,null!=(e=this.editor)?e.loadHTML(this.defaultValue):void 0}},notify:function(t,e){return this.editorController?a(\"trix-\"+t,{onElement:this,attributes:e}):void 0},setInputElementValue:function(t){var e;return null!=(e=this.inputElement)?e.value=t:void 0},initialize:function(){return this.hasAttribute(\"data-trix-internal\")?void 0:(m(this),c(this),f(this))},connect:function(){return this.hasAttribute(\"data-trix-internal\")?void 0:(this.editorController||(a(\"trix-before-initialize\",{onElement:this}),this.editorController=new e.EditorController({editorElement:this,html:this.defaultValue=this.value}),requestAnimationFrame(function(t){return function(){return a(\"trix-initialize\",{onElement:t})}}(this))),this.editorController.registerSelectionManager(),this.registerResetListener(),this.registerClickListener(),l(this))},disconnect:function(){var t;return null!=(t=this.editorController)&&t.unregisterSelectionManager(),this.unregisterResetListener(),this.unregisterClickListener()},registerResetListener:function(){return this.resetListener=this.resetBubbled.bind(this),window.addEventListener(\"reset\",this.resetListener,!1)},unregisterResetListener:function(){return window.removeEventListener(\"reset\",this.resetListener,!1)},registerClickListener:function(){return this.clickListener=this.clickBubbled.bind(this),window.addEventListener(\"click\",this.clickListener,!1)},unregisterClickListener:function(){return window.removeEventListener(\"click\",this.clickListener,!1)},resetBubbled:function(t){var e;if(!t.defaultPrevented&&t.target===(null!=(e=this.inputElement)?e.form:void 0))return this.reset()},clickBubbled:function(t){var e;if(!(t.defaultPrevented||this.contains(t.target)||!(e=i(t.target,{matchingSelector:\"label\"}))||u.call(this.labels,e)<0))return this.focus()},reset:function(){return this.value=this.defaultValue}}}())}.call(this),function(){}.call(this)}).call(this),\"object\"==typeof module&&module.exports?module.exports=e:\"function\"==typeof define&&define.amd&&define(e)}.call(this);", "import { DirectUpload } from \"@rails/activestorage\"\n\nexport class AttachmentUpload {\n  constructor(attachment, element) {\n    this.attachment = attachment\n    this.element = element\n    this.directUpload = new DirectUpload(attachment.file, this.directUploadUrl, this)\n  }\n\n  start() {\n    this.directUpload.create(this.directUploadDidComplete.bind(this))\n  }\n\n  directUploadWillStoreFileWithXHR(xhr) {\n    xhr.upload.addEventListener(\"progress\", event => {\n      const progress = event.loaded / event.total * 100\n      this.attachment.setUploadProgress(progress)\n    })\n  }\n\n  directUploadDidComplete(error, attributes) {\n    if (error) {\n      throw new Error(`Direct upload failed: ${error}`)\n    }\n\n    this.attachment.setAttributes({\n      sgid: attributes.attachable_sgid,\n      url: this.createBlobUrl(attributes.signed_id, attributes.filename)\n    })\n  }\n\n  createBlobUrl(signedId, filename) {\n    return this.blobUrlTemplate\n      .replace(\":signed_id\", signedId)\n      .replace(\":filename\", encodeURIComponent(filename))\n  }\n\n  get directUploadUrl() {\n    return this.element.dataset.directUploadUrl\n  }\n\n  get blobUrlTemplate() {\n    return this.element.dataset.blobUrlTemplate\n  }\n}\n", "import { AttachmentUpload } from \"./attachment_upload\"\n\naddEventListener(\"trix-attachment-add\", event => {\n  const { attachment, target } = event\n\n  if (attachment.file) {\n    const upload = new AttachmentUpload(attachment, target)\n    upload.start()\n  }\n})\n", "!function n(s,o,r){function a(t,e){if(!o[t]){if(!s[t]){var i=\"function\"==typeof require&&require;if(!e&&i)return i(t,!0);if(l)return l(t,!0);throw(e=new Error(\"Cannot find module '\"+t+\"'\")).code=\"MODULE_NOT_FOUND\",e}i=o[t]={exports:{}},s[t][0].call(i.exports,function(e){return a(s[t][1][e]||e)},i,i.exports,n,s,o,r)}return o[t].exports}for(var l=\"function\"==typeof require&&require,e=0;e<r.length;e++)a(r[e]);return a}({1:[function(e,t,i){\"use strict\";Object.defineProperty(i,\"__esModule\",{value:!0});i.EMPTY_WIDGET_ID=\"000000000000000000000000\",i.LAZY_LOADED_WIDGETS=[\"54d39695764ea907c0f34825\",\"577258fb31f02306e4e3aaf9\"]},{}],2:[function(e,t,i){\"use strict\";var d=!1;function c(e){try{if(d)return;var t=document.createElement(\"script\");t.setAttribute(\"type\",\"application/ld+json\"),t.innerHTML=JSON.stringify(e),document.head.appendChild(document.createComment(\"Added by Trustpilot\")),document.head.appendChild(t),document.head.appendChild(document.createComment(\"/Added by Trustpilot\")),d=!0}catch(e){}}var h=e(\"./xhr.js\");t.exports=function(e){if(d)return!1;var t,i,n,s,o,r,a,l,u=\"60f537b5b0f1639de1fe048c\"===e.templateId;return e.schemaType&&e.location?(r=(o=e).businessunitId,a=o.location,l=o.locale,o=o.templateId,o=[\"url=\"+encodeURIComponent(window.location.href),\"templateId=\"+o,\"locale=\"+l].join(\"&\"),h.xhrGet({url:\"https://widget.trustpilot.com\"+(\"/data/jsonld/business-unit/\"+r+\"/location/\"+a)+\"?\"+o,success:function(e){e.url=document.location.href,e[\"@id\"]=document.location.href,c(e)},error:function(e){console.error(e)}}),!0):!(!e.sku||!(e.name||u&&\"Product\"===e.schemaType))&&(r=(l=e).businessunitId,a=l.locale,o=l.templateId,u=l.name,e=l.sku,t=l.reviewnumber,i=l.price,n=l.priceCurrency,l=l.availability,a=a&&a.split(\"-\")[0],r=\"https://widget.trustpilot.com\"+(\"5763bccae0a06d08e809ecbb\"===o?\"/data/jsonld/business-unit/\"+r+\"/product-imported\":\"/data/jsonld/business-unit/\"+r+\"/product\")+\"?sku=\"+encodeURIComponent(e)+\"&numberOfReviews=\"+(t||10)+(u?\"&productName=\"+encodeURIComponent(u):\"\")+\"&language=\"+a+\"&templateId=\"+o+\"&url=\"+encodeURIComponent(window.location.origin+window.location.pathname),s=i&&n&&l?{\"@type\":\"Offer\",priceCurrency:n,price:i,availability:l}:null,h.xhrGet({url:r,success:function(e){s&&(e.offers=s),(e.offers||e.review||e.aggregateRating)&&c(e)},error:function(e){console.error(e)}}),!0)}},{\"./xhr.js\":7}],3:[function(e,t,i){\"use strict\";Object.defineProperty(i,\"__esModule\",{value:!0});var n=function(e,t,i){return t&&s(e.prototype,t),i&&s(e,i),e};function s(e,t){for(var i=0;i<t.length;i++){var n=t[i];n.enumerable=n.enumerable||!1,n.configurable=!0,\"value\"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}var o=a(e(\"./snippets\")),r=a(e(\"./widget\"));function a(e){return e&&e.__esModule?e:{default:e}}n(l,[{key:\"initializeOnPageLoad\",value:function(){\"loading\"!==this.document.readyState?this.findAndApplyWidgets():this.document.addEventListener(\"turbo:load\",this.findAndApplyWidgets.bind(this))}},{key:\"applyWidgetFromDomElement\",value:function(e,t){e.firstChild&&\"IFRAME\"===e.firstChild.tagName&&!t||this.createWidget(e)}},{key:\"findAndApplyWidgets\",value:function(){var t=this,e=(this.stats.findAndApplyCalls+=1,this.widgetElements);e&&0!==e.length&&(this.stats.elements=e.length,e.forEach(function(e){return t.createWidget(e)}))}},{key:\"createWidget\",value:function(e){this.removeWidget(e);var t=e.dataset;(0,o.default)(t);e=new r.default({container:e,dataset:t});return e.initialize(),this.stats.applied+=1,this.stats.applyFromDomCalls+=1,this.widgets.push(e),e}},{key:\"removeWidget\",value:function(t){for(;t.firstChild;)t.removeChild(t.firstChild);this.widgets.filter(function(e){return e.isLazyLoaded&&e.isSameNodeAs(t)}).forEach(function(e){e.destroy()})}},{key:\"closePopups\",value:function(){this.widgets.forEach(function(e){return e.closePopup()})}},{key:\"businessUnitId\",get:function(){return this.widgetElements[0].dataset.businessunitId}},{key:\"widgetElements\",get:function(){return[].slice.call(this.document.getElementsByClassName(\"trustpilot-widget\"))}}]);e=l;function l(e,t,i){if(!(this instanceof l))throw new TypeError(\"Cannot call a class as a function\");this.window=e,this.document=t,this.widgets=[],this.stats={applied:0,findAndApplyCalls:0,applyFromDomCalls:0,elements:0},this.version=i}i.default=e},{\"./snippets\":2,\"./widget\":5}],4:[function(e,t,i){\"use strict\";Object.defineProperty(i,\"__esModule\",{value:!0});var n=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var i,n=arguments[t];for(i in n)Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},s=function(e,t,i){return t&&o(e.prototype,t),i&&o(e,i),e};function o(e,t){for(var i=0;i<t.length;i++){var n=t[i];n.enumerable=n.enumerable||!1,n.configurable=!0,\"value\"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}var r=\"53aa8912dec7e10d38f59f36,539adbd6dec7e10e686debee,539ad60defb9600b94d7df2c,539ad998dec7e10e686debe0,539ad0ffdec7e10e686debd7,54d0e1d8764ea9078c79e6ee,54ad5defc6454f065c28af8b\".split(\",\");function a(e){var t=\"\";return e&&0<e.length&&(e=e.toLowerCase(),t=/(px|\\%)/i.test(e)?e:e+\"px\"),t}s(l,[{key:\"getIframeOptionsFromData\",value:function(){var e=this.iframeData||{styles:{}};return n({},this.defaultIframeOptions,{position:e.styles.position||\"\",zindex:e.styles.zindex||\"\",margin:e.styles.margin||\"\",top:e.styles.top||\"\",bottom:e.styles.bottom||\"\",left:e.styles.left||\"\",right:e.styles.right||\"\",height:e.styles.height||\"\",width:e.styles.width||this.defaultIframeOptions.styles.width||\"\",display:e.show?\"block\":\"none\",src:this.baseUrl+e.source+this.queryString,borderStyle:this.defaultIframeOptions.styles.borderStyle,overflow:this.defaultIframeOptions.styles.overflow,loading:this.dataset.loading,allow:e.allow})}},{key:\"initialize\",value:function(e,t){var i,n;this._iframe=(i=this.getIframeOptionsFromData(),(n=document.createElement(\"iframe\")).style.position=i.position,n.style.zIndex=i.zindex,n.style.margin=i.margin,n.style.top=i.top,n.style.bottom=i.bottom,n.style.left=i.left,n.style.right=i.right,n.style.height=i.height,n.style.width=i.width,n.style.borderStyle=i.borderStyle,n.style.backgroundColor=i.backgroundColor,n.style.display=i.display,n.style.overflow=i.overflow,n.allowTransparency=i.allowTransparency,n.title=\"Customer reviews powered by Trustpilot\",n.loading=i.loading||\"auto\",n.src=i.src,i.allow&&(n.allow=i.allow),n),e.appendChild(this._iframe),this._iframe.addEventListener(\"load\",t)}},{key:\"sendMessage\",value:function(e){this._iframe.contentWindow&&(e=JSON.stringify(e),this._iframe.contentWindow.postMessage(e,\"https://widget.trustpilot.com\"))}},{key:\"isInViewport\",value:function(e){var t=this._iframe.getBoundingClientRect(),i=t.width||this._iframe.offsetWidth,n=t.height||this._iframe.offsetHeight;return 0<=t.top&&0<=t.left&&t.bottom-n*e<=(window.innerHeight||document.documentElement.clientHeight)&&t.right-i*e<=(window.innerWidth||document.documentElement.clientWidth)}},{key:\"setWidgetId\",value:function(e){this.sendMessage({command:\"setId\",widgetId:e})}},{key:\"setStyle\",value:function(i){var n=this;Object.keys(i).forEach(function(e){var t=i[e];n._iframe.style[e]=t})}},{key:\"isScrollBlockingPopup\",value:function(){return\"popup\"===this.name&&this.isScrollBlocking}},{key:\"disablePageScroll\",value:function(){this.defaultOverflowProperties=this.OVERFLOW_PROPERTIES.reduce(function(e,t){return e[t]=document.body.style.getPropertyValue(t),e},{}),document.body.style.overflow=\"hidden\"}},{key:\"restorePageScroll\",value:function(){var e=!0,t=!1,i=void 0;try{for(var n,s=this.OVERFLOW_PROPERTIES[Symbol.iterator]();!(e=(n=s.next()).done);e=!0){var o=n.value;document.body.style.removeProperty(o),this.defaultOverflowProperties[o]&&document.body.style.setProperty(o,this.defaultOverflowProperties[o])}}catch(e){t=!0,i=e}finally{try{!e&&s.return&&s.return()}finally{if(t)throw i}}}},{key:\"show\",value:function(){this.isScrollBlockingPopup()&&!this.isVisible&&this.disablePageScroll(),this._iframe.style.display=\"block\",this.isVisible=!0}},{key:\"hide\",value:function(){this.isScrollBlockingPopup()&&this.isVisible&&this.restorePageScroll(),this._iframe.style.display=\"none\",this.isVisible=!1}},{key:\"focus\",value:function(){this._iframe.contentWindow.focus()}},{key:\"resizeHeight\",value:function(e){\"number\"==typeof e&&0!==e&&(this._iframe.style.height=e+\"px\")}},{key:\"_shouldAllowRobots\",value:function(){return\"true\"===this.dataset.allowRobots&&this.dataset.location&&-1<r.indexOf(this.templateId)}},{key:\"dimensions\",get:function(){return{height:a(this.dataset.styleHeight),width:a(this.dataset.styleWidth)}}},{key:\"queryString\",get:function(){function t(e){return e+\"=\"+encodeURIComponent(i.dataset[e])}function e(e){return Object.keys(i.dataset).filter(e).map(t)}var i=this,n=[\"businessunitId\",\"templateId\"],s=e(function(e){return-1!==n.indexOf(e)}),o=e(function(e){return-1===n.indexOf(e)&&\"allowRobots\"!==e});return\"?\"+s.join(\"&\")+\"#\"+o.join(\"&\")}},{key:\"templateId\",get:function(){return this.dataset.templateId}},{key:\"baseUrl\",get:function(){return\"https://widget.trustpilot.com/trustboxes/\"+this.templateId+\"/\"}},{key:\"defaultIframeOptions\",get:function(){return{source:this._shouldAllowRobots()?\"index_allow_robots.html\":\"index.html\",allowTransparency:\"true\",styles:{borderStyle:\"none\",backgroundColor:\"transparent\",display:\"block\",overflow:\"hidden\",height:this.dimensions.height,width:this.dimensions.width,position:\"relative\"},show:!0}}}]);s=l;function l(e,t,i){var n=3<arguments.length&&void 0!==arguments[3]&&arguments[3],s=this,o=l;if(!(s instanceof o))throw new TypeError(\"Cannot call a class as a function\");this.OVERFLOW_PROPERTIES=[\"overflow\",\"overflow-x\",\"overflow-y\"],this.name=e,this.dataset=t,this.iframeData=i||this.defaultIframeOptions,this.defaultOverflowProperties={},this.isVisible=!1,this.isScrollBlocking=n}i.default=s},{}],5:[function(e,r,t){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var i=function(e,t,i){return t&&n(e.prototype,t),i&&n(e,i),e};function n(e,t){for(var i=0;i<t.length;i++){var n=t[i];n.enumerable=n.enumerable||!1,n.configurable=!0,\"value\"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}var l=s(e(\"./tracking\")),o=s(e(\"./iframe\")),u=e(\"./../constants\");function s(e){return e&&e.__esModule?e:{default:e}}i(d,null,[{key:\"generateId\",value:function(){for(var e=this.usedIds,t=void 0;t=Math.random(),-1!==e.indexOf(t););return this.usedIds.push(t)}}]),i(d,[{key:\"isContainerInViewport\",value:function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:200,t=this.container.getBoundingClientRect(),i=t.width||this.container.offsetWidth,n=t.height||this.container.offsetHeight;return 0<=t.top&&0<=t.left&&t.bottom-n-e<=(window.innerHeight||document.documentElement.clientHeight)&&t.right-i-e<=(window.innerWidth||document.documentElement.clientWidth)}},{key:\"initialize\",value:function(){!this.isLazyLoaded||this.isContainerInViewport()?(this._widgetIFrameOrigin=\"https://widget.trustpilot.com\",this.createIFrame(\"main\"),this.attachMessageListener()):this.lazyLoadTimeout=setTimeout(this.initialize,500)}},{key:\"handleCommand\",value:function(e){var t=e.data,e=e.origin;try{var i=\"string\"==typeof t?JSON.parse(t):t;return e===this._widgetIFrameOrigin&&i.widgetId===this.id?this.widgetIframeMessageHandler(i):!1}catch(e){return!1}}},{key:\"attachMessageListener\",value:function(){window.addEventListener(\"message\",this.handleCommand.bind(this),!1)}},{key:\"widgetIframeMessageHandler\",value:function(e){var t=this,i=1<arguments.length&&void 0!==arguments[1]?arguments[1]:function(){},n=(this.stats.events[e.command]=(this.stats.events[e.command]||0)+1,e.name),s=e.style,o=e.height,r=e.targets,u=e.attachToBody,a=this.iframes[n],l={createIFrame:function(){return t.createIFrame(n,e,u)},setStyle:function(){return a.setStyle(s)},show:function(){return a.show()},hide:function(){return a.hide()},focus:function(){return a.focus()},loaded:function(){return t.iframes.main.sendMessage(\"loaded\")},message:function(){return a.sendMessage(e)},ping:function(){t.iframes.main.sendMessage({command:\"pong\"}),t.stats.pongSent=!0},\"resize-height\":function(){return t.getIframeOrMain(n).resizeHeight(o)},impression:function(){return t.tracking.initialize()},scrollTo:function(){return t.scrollToTrustBox(r)}}[e.command];return l?(l(),!0):(i(),!1)}},{key:\"createIFrame\",value:function(e,t){var i=this,n=2<arguments.length&&void 0!==arguments[2]&&arguments[2],s=new o.default(e,this.dataset,t,n);this.iframes[e]=s,this.stats.createIFrameCalls+=1,s.initialize(n?document.body:this.container,function(){s.setWidgetId(i.id),i.stats.iframeLoadEvents+=1})}},{key:\"getIframeOrMain\",value:function(e){return this.iframes[e]||this.iframes.main}},{key:\"isInViewport\",value:function(e){return this.iframes.main.isInViewport(e)}},{key:\"isSameNodeAs\",value:function(e){try{return this.container.isSameNode(e)}catch(e){return!1}}},{key:\"destroy\",value:function(){this.lazyLoadTimeout&&clearTimeout(this.lazyLoadTimeout)}},{key:\"closePopup\",value:function(){\"popup\"in this.iframes&&(this.iframes.main.sendMessage({name:\"main\",command:\"message\",message:\"popup toggled\",visible:!1}),this.iframes.popup.hide())}},{key:\"scrollToTrustBox\",value:function(){var e,t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:[],t=document.querySelector(t.map(function(e){return\"[data-template-id='\"+e+\"']\"}).join(\",\"));!t||(e=t.querySelector(\"iframe\"))&&(t.scrollIntoView({behavior:\"smooth\"}),e.contentWindow.focus())}},{key:\"id\",get:function(){return this._id||(this._id=this.constructor.generateId()),this._id}}]);e=d;function d(e){var t=this,i=e.container,n=e.dataset,s=e.session,o=e.anonymousId,r=e.testId,e=e.sessionExpiry;if(!(this instanceof d))throw new TypeError(\"Cannot call a class as a function\");var a={container:i,dataset:n,templateId:n.templateId,businessUnitId:n.businessunitId,locale:n.locale};Object.keys(a).forEach(function(e){if(!a[e])throw\"No \"+e+\" supplied for TrustBox\"}),this.container=i,this.container.style.position=\"relative\",this.dataset=n,this.iframes={},this.tracking=new l.default(function(e){return t.iframes.main.sendMessage(e)},function(){return t.isInViewport(.5)},{session:s,group:n.group,sessionExpiry:e,anonymousId:o,testId:r,templateId:n.templateId}),this.isLazyLoaded=-1<u.LAZY_LOADED_WIDGETS.indexOf(n.templateId),this.lazyLoadTimeout=null,this.isSameNodeAs=this.isSameNodeAs.bind(this),this.destroy=this.destroy.bind(this),this.stats={createIFrameCalls:0,iframeLoadEvents:0,events:{},pongSent:!1},this.initialize=this.initialize.bind(this)}e.usedIds=[],t.default=e},{\"./../constants\":1,\"./iframe\":4,\"./tracking\":6}],6:[function(e,t,i){\"use strict\";Object.defineProperty(i,\"__esModule\",{value:!0});var n=function(e,t,i){return t&&s(e.prototype,t),i&&s(e,i),e};function s(e,t){for(var i=0;i<t.length;i++){var n=t[i];n.enumerable=n.enumerable||!1,n.configurable=!0,\"value\"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}var u=e(\"../constants\");n(l,[{key:\"initialize\",value:function(){this.sendImpressionData(),this.attachListener(),this.shouldDetachListener()}},{key:\"getTrackingData\",value:function(e){e={command:e,url:window.document.URL,referrer:window.document.referrer,userAgent:window.navigator.userAgent,language:window.navigator.userLanguage||window.navigator.language,platform:window.navigator.platform};return this.session&&this.group&&(e.session=this.session,e.sessionExpiry=this.sessionExpiry),this.anonymousId&&(e.anonymousId=this.anonymousId),this.testId&&(e.testId=this.testId),e}},{key:\"sendImpressionData\",value:function(){var e;this.hasSentImpression||(this.hasSentImpression=!0,e=this.getTrackingData(\"impression-received\"),this.sendMessage(e))}},{key:\"sendVisibilityData\",value:function(){var e;this.hasSentViewTracking||(this.hasSentViewTracking=!0,e=this.getTrackingData(\"trustbox-in-viewport\"),this.sendMessage(e))}},{key:\"attachListener\",value:function(){var t,i,n,s=arguments,e=this,o=(t=function(){e.templateId!==u.EMPTY_WIDGET_ID&&!e.shouldDetachListener()||(window.removeEventListener(\"scroll\",a,r),window.removeEventListener(\"resize\",l,r))},function(){var e=s;clearTimeout(n),n=setTimeout(function(){n=null,t(e)},i)}),r={passive:!(n=void 0),capture:!(i=100)},a=window.addEventListener(\"scroll\",o,r),l=window.addEventListener(\"resize\",o,r);o()}},{key:\"shouldDetachListener\",value:function(){return!!this.hasSentViewTracking||(this.hasBeenVisible?(this.hasSentImpression&&this.sendVisibilityData(),!0):!!this.isTrustBoxVisible()&&(this.hasSentImpression?(this.sendVisibilityData(),!0):this.hasBeenVisible=!0))}}]);e=l;function l(e,t,i){var n=i.session,s=i.sessionExpiry,o=i.group,r=i.anonymousId,a=i.testId,i=i.templateId;if(!(this instanceof l))throw new TypeError(\"Cannot call a class as a function\");this.hasSentImpression=!1,this.hasSentViewTracking=!1,this.sendMessage=e,this.isTrustBoxVisible=t,this.session=n,this.group=o,this.sessionExpiry=s,this.anonymousId=r,this.testId=a,this.templateId=i}i.default=e},{\"../constants\":1}],7:[function(e,t,i){\"use strict\";function n(t){try{return JSON.parse(t.responseText)}catch(e){return t.responseText}}t.exports={xhrGet:function(e){var t=new window.XMLHttpRequest;t.open(\"GET\",e.url,!0),t.setRequestHeader(\"Content-type\",\"application/x-www-form-urlencoded\"),t.onreadystatechange=function(){4===t.readyState&&(200<=t.status&&t.status<300?e.success(n(t)):e.error&&e.error(n(t)))},t.send()}}},{}],8:[function(e,t,i){\"use strict\";var n,s,o=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},r=\"1.414.0\";try{n=e(\"./lib/widget-management.js\").default,s=window.Trustpilot&&0<Object.keys(window.Trustpilot).length,window.Trustpilot=s?window.Trustpilot:{loadFromElement:function(e,t){if(e)return this.Modules.WidgetManagement&&this.Modules.WidgetManagement.applyWidgetFromDomElement(e,t);console.error('No element supplied to \"Trustpilot.loadFromElement\"')}},window.Trustpilot.Modules=window.Trustpilot.Modules||{},window.Trustpilot.Modules.WidgetManagement?window.Trustpilot.Modules.WidgetManagement.version!==r&&console.log(\"Detected legacy TrustBox bootstrap with version:\",window.Trustpilot.Modules.WidgetManagement.version,\", current:\",r):(window.Trustpilot.Modules.WidgetManagement=new n(window,document,r),window.Trustpilot.Modules.WidgetManagement.initializeOnPageLoad(),window.addEventListener(\"load\",function(){try{for(var e=document.getElementsByClassName(\"trustpilot-widget\"),t=0;t<e.length;++t){var i=e[t],n=i.firstChild&&i.firstChild.tagName;n&&\"IFRAME\"!==n&&window.Trustpilot.loadFromElement(i)}}catch(e){console.error(\"Error loading trustboxes \"+e)}})),window.addEventListener(\"click\",function(){window.Trustpilot.Modules.WidgetManagement.closePopups()})}catch(e){function a(e){console.error(\"Error on bootstrap:\"+e);e=[\"error=\"+encodeURIComponent(e),\"uri=\"+encodeURIComponent(document.URL),\"bootstrapVersion=\"+r].join(\"&\");document.createElement(\"img\").src=\"https://widget.trustpilot.com/feedback/report-error?\"+e}try{\"object\"===(void 0===e?\"undefined\":o(e))?a(e.message):a(e)}catch(e){console.error(\"Error on error reporting method:\"+e)}}},{\"./lib/widget-management.js\":3}]},{},[8]);\n//# sourceMappingURL=tp.widget.bootstrap.min.js.map\n", "// // Entry point for the build script in your package.json\n// // This file is automatically compiled by Webpack, along with any other files\n// // present in this directory. You're encouraged to place your actual application logic in\n// // a relevant structure within app/javascript and only use these pack files to reference\n// // that code so it'll be compiled.\n\n// //= require activestorage\n\nimport Rails from \"@rails/ujs\"\nimport * as ActiveStorage from \"@rails/activestorage\"\nimport { Tooltip } from \"bootstrap\";\n\nimport \"@hotwired/turbo-rails\";\nimport \"chartkick/chart.js\";\nimport \"./channels/**/*.js\"\nimport \"./controllers\";\nimport \"./viewport\";\n\nimport \"@lottiefiles/lottie-player\";\nimport { Turbo } from \"@hotwired/turbo-rails\";\n\nrequire(\"trix\");\nrequire(\"@rails/actiontext\");\n\nrequire('./vendor/trustpilot-5');\n\nRails.start();\nActiveStorage.start();\nTurbo.start();\n\n\ndocument.addEventListener('turbo:before-visit', () => {\n  const pageLoader     = document.querySelector('.page-loader');\n  const yieldedContent = document.querySelector('.yielded-content');\n\n  if (pageLoader && yieldedContent) {\n    pageLoader.classList.remove('d-none');\n    yieldedContent.classList.add('d-none');\n  }\n\n});\n\ndocument.addEventListener('turbo:visit', () => {\n  const pageLoader     = document.querySelector('.page-loader');\n  const yieldedContent = document.querySelector('.yielded-content');\n\n  if (pageLoader && yieldedContent) {\n    pageLoader.classList.add('d-none');\n    yieldedContent.classList.remove('d-none');\n  }\n\n  window.scrollTo({ top: 0, behavior: \"smooth\" });\n});\n\ndocument.addEventListener('turbo:load', () => {\n  var tooltipTriggerList = [].slice.call(\n    document.querySelectorAll('[data-bs-toggle=\"tooltip\"]')\n  );\n\n  tooltipTriggerList.map(function (tooltipTriggerEl) {\n    return new Tooltip(tooltipTriggerEl);\n  });\n\n  const pageLoader     = document.querySelector('.page-loader');\n  const yieldedContent = document.querySelector('.yielded-content');\n\n  if (pageLoader && yieldedContent) {\n    pageLoader.classList.add('d-none');\n    yieldedContent.classList.remove('d-none');\n  }\n\n  window.scrollTo({ top: 0, behavior: \"smooth\" });\n});\n", "export * from \"./enums.js\";\nexport * from \"./modifiers/index.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport { popperGenerator, detectOverflow, createPopper as createPopperBase } from \"./createPopper.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper } from \"./popper.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper as createPopperLite } from \"./popper-lite.js\";", "export var top = 'top';\nexport var bottom = 'bottom';\nexport var right = 'right';\nexport var left = 'left';\nexport var auto = 'auto';\nexport var basePlacements = [top, bottom, right, left];\nexport var start = 'start';\nexport var end = 'end';\nexport var clippingParents = 'clippingParents';\nexport var viewport = 'viewport';\nexport var popper = 'popper';\nexport var reference = 'reference';\nexport var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n  return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nexport var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n  return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nexport var beforeRead = 'beforeRead';\nexport var read = 'read';\nexport var afterRead = 'afterRead'; // pure-logic modifiers\n\nexport var beforeMain = 'beforeMain';\nexport var main = 'main';\nexport var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nexport var beforeWrite = 'beforeWrite';\nexport var write = 'write';\nexport var afterWrite = 'afterWrite';\nexport var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];", "export default function getNodeName(element) {\n  return element ? (element.nodeName || '').toLowerCase() : null;\n}", "export default function getWindow(node) {\n  if (node == null) {\n    return window;\n  }\n\n  if (node.toString() !== '[object Window]') {\n    var ownerDocument = node.ownerDocument;\n    return ownerDocument ? ownerDocument.defaultView || window : window;\n  }\n\n  return node;\n}", "import getWindow from \"./getWindow.js\";\n\nfunction isElement(node) {\n  var OwnElement = getWindow(node).Element;\n  return node instanceof OwnElement || node instanceof Element;\n}\n\nfunction isHTMLElement(node) {\n  var OwnElement = getWindow(node).HTMLElement;\n  return node instanceof OwnElement || node instanceof HTMLElement;\n}\n\nfunction isShadowRoot(node) {\n  // IE 11 has no ShadowRoot\n  if (typeof ShadowRoot === 'undefined') {\n    return false;\n  }\n\n  var OwnElement = getWindow(node).ShadowRoot;\n  return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\nexport { isElement, isHTMLElement, isShadowRoot };", "import getNodeName from \"../dom-utils/getNodeName.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // This modifier takes the styles prepared by the `computeStyles` modifier\n// and applies them to the HTMLElements such as popper and arrow\n\nfunction applyStyles(_ref) {\n  var state = _ref.state;\n  Object.keys(state.elements).forEach(function (name) {\n    var style = state.styles[name] || {};\n    var attributes = state.attributes[name] || {};\n    var element = state.elements[name]; // arrow is optional + virtual elements\n\n    if (!isHTMLElement(element) || !getNodeName(element)) {\n      return;\n    } // Flow doesn't support to extend this property, but it's the most\n    // effective way to apply styles to an HTMLElement\n    // $FlowFixMe[cannot-write]\n\n\n    Object.assign(element.style, style);\n    Object.keys(attributes).forEach(function (name) {\n      var value = attributes[name];\n\n      if (value === false) {\n        element.removeAttribute(name);\n      } else {\n        element.setAttribute(name, value === true ? '' : value);\n      }\n    });\n  });\n}\n\nfunction effect(_ref2) {\n  var state = _ref2.state;\n  var initialStyles = {\n    popper: {\n      position: state.options.strategy,\n      left: '0',\n      top: '0',\n      margin: '0'\n    },\n    arrow: {\n      position: 'absolute'\n    },\n    reference: {}\n  };\n  Object.assign(state.elements.popper.style, initialStyles.popper);\n  state.styles = initialStyles;\n\n  if (state.elements.arrow) {\n    Object.assign(state.elements.arrow.style, initialStyles.arrow);\n  }\n\n  return function () {\n    Object.keys(state.elements).forEach(function (name) {\n      var element = state.elements[name];\n      var attributes = state.attributes[name] || {};\n      var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them\n\n      var style = styleProperties.reduce(function (style, property) {\n        style[property] = '';\n        return style;\n      }, {}); // arrow is optional + virtual elements\n\n      if (!isHTMLElement(element) || !getNodeName(element)) {\n        return;\n      }\n\n      Object.assign(element.style, style);\n      Object.keys(attributes).forEach(function (attribute) {\n        element.removeAttribute(attribute);\n      });\n    });\n  };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'applyStyles',\n  enabled: true,\n  phase: 'write',\n  fn: applyStyles,\n  effect: effect,\n  requires: ['computeStyles']\n};", "import { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n  return placement.split('-')[0];\n}", "export var max = Math.max;\nexport var min = Math.min;\nexport var round = Math.round;", "export default function getUAString() {\n  var uaData = navigator.userAgentData;\n\n  if (uaData != null && uaData.brands && Array.isArray(uaData.brands)) {\n    return uaData.brands.map(function (item) {\n      return item.brand + \"/\" + item.version;\n    }).join(' ');\n  }\n\n  return navigator.userAgent;\n}", "import getUAString from \"../utils/userAgent.js\";\nexport default function isLayoutViewport() {\n  return !/^((?!chrome|android).)*safari/i.test(getUAString());\n}", "import { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport { round } from \"../utils/math.js\";\nimport getWindow from \"./getWindow.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getBoundingClientRect(element, includeScale, isFixedStrategy) {\n  if (includeScale === void 0) {\n    includeScale = false;\n  }\n\n  if (isFixedStrategy === void 0) {\n    isFixedStrategy = false;\n  }\n\n  var clientRect = element.getBoundingClientRect();\n  var scaleX = 1;\n  var scaleY = 1;\n\n  if (includeScale && isHTMLElement(element)) {\n    scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1;\n    scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1;\n  }\n\n  var _ref = isElement(element) ? getWindow(element) : window,\n      visualViewport = _ref.visualViewport;\n\n  var addVisualOffsets = !isLayoutViewport() && isFixedStrategy;\n  var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX;\n  var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY;\n  var width = clientRect.width / scaleX;\n  var height = clientRect.height / scaleY;\n  return {\n    width: width,\n    height: height,\n    top: y,\n    right: x + width,\n    bottom: y + height,\n    left: x,\n    x: x,\n    y: y\n  };\n}", "import getBoundingClientRect from \"./getBoundingClientRect.js\"; // Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\n\nexport default function getLayoutRect(element) {\n  var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed.\n  // Fixes https://github.com/popperjs/popper-core/issues/1223\n\n  var width = element.offsetWidth;\n  var height = element.offsetHeight;\n\n  if (Math.abs(clientRect.width - width) <= 1) {\n    width = clientRect.width;\n  }\n\n  if (Math.abs(clientRect.height - height) <= 1) {\n    height = clientRect.height;\n  }\n\n  return {\n    x: element.offsetLeft,\n    y: element.offsetTop,\n    width: width,\n    height: height\n  };\n}", "import { isShadowRoot } from \"./instanceOf.js\";\nexport default function contains(parent, child) {\n  var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method\n\n  if (parent.contains(child)) {\n    return true;\n  } // then fallback to custom implementation with Shadow DOM support\n  else if (rootNode && isShadowRoot(rootNode)) {\n      var next = child;\n\n      do {\n        if (next && parent.isSameNode(next)) {\n          return true;\n        } // $FlowFixMe[prop-missing]: need a better way to handle this...\n\n\n        next = next.parentNode || next.host;\n      } while (next);\n    } // Give up, the result is false\n\n\n  return false;\n}", "import getWindow from \"./getWindow.js\";\nexport default function getComputedStyle(element) {\n  return getWindow(element).getComputedStyle(element);\n}", "import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n  return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}", "import { isElement } from \"./instanceOf.js\";\nexport default function getDocumentElement(element) {\n  // $FlowFixMe[incompatible-return]: assume body is always available\n  return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]\n  element.document) || window.document).documentElement;\n}", "import getNodeName from \"./getNodeName.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport { isShadowRoot } from \"./instanceOf.js\";\nexport default function getParentNode(element) {\n  if (getNodeName(element) === 'html') {\n    return element;\n  }\n\n  return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle\n    // $FlowFixMe[incompatible-return]\n    // $FlowFixMe[prop-missing]\n    element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n    element.parentNode || ( // DOM Element detected\n    isShadowRoot(element) ? element.host : null) || // ShadowRoot detected\n    // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n    getDocumentElement(element) // fallback\n\n  );\n}", "import getWindow from \"./getWindow.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isHTMLElement, isShadowRoot } from \"./instanceOf.js\";\nimport isTableElement from \"./isTableElement.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getUAString from \"../utils/userAgent.js\";\n\nfunction getTrueOffsetParent(element) {\n  if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837\n  getComputedStyle(element).position === 'fixed') {\n    return null;\n  }\n\n  return element.offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\n\nfunction getContainingBlock(element) {\n  var isFirefox = /firefox/i.test(getUAString());\n  var isIE = /Trident/i.test(getUAString());\n\n  if (isIE && isHTMLElement(element)) {\n    // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport\n    var elementCss = getComputedStyle(element);\n\n    if (elementCss.position === 'fixed') {\n      return null;\n    }\n  }\n\n  var currentNode = getParentNode(element);\n\n  if (isShadowRoot(currentNode)) {\n    currentNode = currentNode.host;\n  }\n\n  while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {\n    var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n    // create a containing block.\n    // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n    if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') {\n      return currentNode;\n    } else {\n      currentNode = currentNode.parentNode;\n    }\n  }\n\n  return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nexport default function getOffsetParent(element) {\n  var window = getWindow(element);\n  var offsetParent = getTrueOffsetParent(element);\n\n  while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n    offsetParent = getTrueOffsetParent(offsetParent);\n  }\n\n  if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static')) {\n    return window;\n  }\n\n  return offsetParent || getContainingBlock(element) || window;\n}", "export default function getMainAxisFromPlacement(placement) {\n  return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}", "import { max as mathMax, min as mathMin } from \"./math.js\";\nexport function within(min, value, max) {\n  return mathMax(min, mathMin(value, max));\n}\nexport function withinMaxClamp(min, value, max) {\n  var v = within(min, value, max);\n  return v > max ? max : v;\n}", "export default function getFreshSideObject() {\n  return {\n    top: 0,\n    right: 0,\n    bottom: 0,\n    left: 0\n  };\n}", "import getFreshSideObject from \"./getFreshSideObject.js\";\nexport default function mergePaddingObject(paddingObject) {\n  return Object.assign({}, getFreshSideObject(), paddingObject);\n}", "export default function expandToHashMap(value, keys) {\n  return keys.reduce(function (hashMap, key) {\n    hashMap[key] = value;\n    return hashMap;\n  }, {});\n}", "import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport contains from \"../dom-utils/contains.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport { within } from \"../utils/within.js\";\nimport mergePaddingObject from \"../utils/mergePaddingObject.js\";\nimport expandToHashMap from \"../utils/expandToHashMap.js\";\nimport { left, right, basePlacements, top, bottom } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar toPaddingObject = function toPaddingObject(padding, state) {\n  padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {\n    placement: state.placement\n  })) : padding;\n  return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n};\n\nfunction arrow(_ref) {\n  var _state$modifiersData$;\n\n  var state = _ref.state,\n      name = _ref.name,\n      options = _ref.options;\n  var arrowElement = state.elements.arrow;\n  var popperOffsets = state.modifiersData.popperOffsets;\n  var basePlacement = getBasePlacement(state.placement);\n  var axis = getMainAxisFromPlacement(basePlacement);\n  var isVertical = [left, right].indexOf(basePlacement) >= 0;\n  var len = isVertical ? 'height' : 'width';\n\n  if (!arrowElement || !popperOffsets) {\n    return;\n  }\n\n  var paddingObject = toPaddingObject(options.padding, state);\n  var arrowRect = getLayoutRect(arrowElement);\n  var minProp = axis === 'y' ? top : left;\n  var maxProp = axis === 'y' ? bottom : right;\n  var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n  var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n  var arrowOffsetParent = getOffsetParent(arrowElement);\n  var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n  var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n  // outside of the popper bounds\n\n  var min = paddingObject[minProp];\n  var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n  var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n  var offset = within(min, center, max); // Prevents breaking syntax highlighting...\n\n  var axisProp = axis;\n  state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\n\nfunction effect(_ref2) {\n  var state = _ref2.state,\n      options = _ref2.options;\n  var _options$element = options.element,\n      arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;\n\n  if (arrowElement == null) {\n    return;\n  } // CSS selector\n\n\n  if (typeof arrowElement === 'string') {\n    arrowElement = state.elements.popper.querySelector(arrowElement);\n\n    if (!arrowElement) {\n      return;\n    }\n  }\n\n  if (!contains(state.elements.popper, arrowElement)) {\n    return;\n  }\n\n  state.elements.arrow = arrowElement;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'arrow',\n  enabled: true,\n  phase: 'main',\n  fn: arrow,\n  effect: effect,\n  requires: ['popperOffsets'],\n  requiresIfExists: ['preventOverflow']\n};", "export default function getVariation(placement) {\n  return placement.split('-')[1];\n}", "import { top, left, right, bottom, end } from \"../enums.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getWindow from \"../dom-utils/getWindow.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getComputedStyle from \"../dom-utils/getComputedStyle.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport { round } from \"../utils/math.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar unsetSides = {\n  top: 'auto',\n  right: 'auto',\n  bottom: 'auto',\n  left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsetsByDPR(_ref, win) {\n  var x = _ref.x,\n      y = _ref.y;\n  var dpr = win.devicePixelRatio || 1;\n  return {\n    x: round(x * dpr) / dpr || 0,\n    y: round(y * dpr) / dpr || 0\n  };\n}\n\nexport function mapToStyles(_ref2) {\n  var _Object$assign2;\n\n  var popper = _ref2.popper,\n      popperRect = _ref2.popperRect,\n      placement = _ref2.placement,\n      variation = _ref2.variation,\n      offsets = _ref2.offsets,\n      position = _ref2.position,\n      gpuAcceleration = _ref2.gpuAcceleration,\n      adaptive = _ref2.adaptive,\n      roundOffsets = _ref2.roundOffsets,\n      isFixed = _ref2.isFixed;\n  var _offsets$x = offsets.x,\n      x = _offsets$x === void 0 ? 0 : _offsets$x,\n      _offsets$y = offsets.y,\n      y = _offsets$y === void 0 ? 0 : _offsets$y;\n\n  var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({\n    x: x,\n    y: y\n  }) : {\n    x: x,\n    y: y\n  };\n\n  x = _ref3.x;\n  y = _ref3.y;\n  var hasX = offsets.hasOwnProperty('x');\n  var hasY = offsets.hasOwnProperty('y');\n  var sideX = left;\n  var sideY = top;\n  var win = window;\n\n  if (adaptive) {\n    var offsetParent = getOffsetParent(popper);\n    var heightProp = 'clientHeight';\n    var widthProp = 'clientWidth';\n\n    if (offsetParent === getWindow(popper)) {\n      offsetParent = getDocumentElement(popper);\n\n      if (getComputedStyle(offsetParent).position !== 'static' && position === 'absolute') {\n        heightProp = 'scrollHeight';\n        widthProp = 'scrollWidth';\n      }\n    } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n\n    offsetParent = offsetParent;\n\n    if (placement === top || (placement === left || placement === right) && variation === end) {\n      sideY = bottom;\n      var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing]\n      offsetParent[heightProp];\n      y -= offsetY - popperRect.height;\n      y *= gpuAcceleration ? 1 : -1;\n    }\n\n    if (placement === left || (placement === top || placement === bottom) && variation === end) {\n      sideX = right;\n      var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing]\n      offsetParent[widthProp];\n      x -= offsetX - popperRect.width;\n      x *= gpuAcceleration ? 1 : -1;\n    }\n  }\n\n  var commonStyles = Object.assign({\n    position: position\n  }, adaptive && unsetSides);\n\n  var _ref4 = roundOffsets === true ? roundOffsetsByDPR({\n    x: x,\n    y: y\n  }, getWindow(popper)) : {\n    x: x,\n    y: y\n  };\n\n  x = _ref4.x;\n  y = _ref4.y;\n\n  if (gpuAcceleration) {\n    var _Object$assign;\n\n    return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n  }\n\n  return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\n\nfunction computeStyles(_ref5) {\n  var state = _ref5.state,\n      options = _ref5.options;\n  var _options$gpuAccelerat = options.gpuAcceleration,\n      gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n      _options$adaptive = options.adaptive,\n      adaptive = _options$adaptive === void 0 ? true : _options$adaptive,\n      _options$roundOffsets = options.roundOffsets,\n      roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;\n  var commonStyles = {\n    placement: getBasePlacement(state.placement),\n    variation: getVariation(state.placement),\n    popper: state.elements.popper,\n    popperRect: state.rects.popper,\n    gpuAcceleration: gpuAcceleration,\n    isFixed: state.options.strategy === 'fixed'\n  };\n\n  if (state.modifiersData.popperOffsets != null) {\n    state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {\n      offsets: state.modifiersData.popperOffsets,\n      position: state.options.strategy,\n      adaptive: adaptive,\n      roundOffsets: roundOffsets\n    })));\n  }\n\n  if (state.modifiersData.arrow != null) {\n    state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {\n      offsets: state.modifiersData.arrow,\n      position: 'absolute',\n      adaptive: false,\n      roundOffsets: roundOffsets\n    })));\n  }\n\n  state.attributes.popper = Object.assign({}, state.attributes.popper, {\n    'data-popper-placement': state.placement\n  });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'computeStyles',\n  enabled: true,\n  phase: 'beforeWrite',\n  fn: computeStyles,\n  data: {}\n};", "import getWindow from \"../dom-utils/getWindow.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar passive = {\n  passive: true\n};\n\nfunction effect(_ref) {\n  var state = _ref.state,\n      instance = _ref.instance,\n      options = _ref.options;\n  var _options$scroll = options.scroll,\n      scroll = _options$scroll === void 0 ? true : _options$scroll,\n      _options$resize = options.resize,\n      resize = _options$resize === void 0 ? true : _options$resize;\n  var window = getWindow(state.elements.popper);\n  var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n  if (scroll) {\n    scrollParents.forEach(function (scrollParent) {\n      scrollParent.addEventListener('scroll', instance.update, passive);\n    });\n  }\n\n  if (resize) {\n    window.addEventListener('resize', instance.update, passive);\n  }\n\n  return function () {\n    if (scroll) {\n      scrollParents.forEach(function (scrollParent) {\n        scrollParent.removeEventListener('scroll', instance.update, passive);\n      });\n    }\n\n    if (resize) {\n      window.removeEventListener('resize', instance.update, passive);\n    }\n  };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'eventListeners',\n  enabled: true,\n  phase: 'write',\n  fn: function fn() {},\n  effect: effect,\n  data: {}\n};", "var hash = {\n  left: 'right',\n  right: 'left',\n  bottom: 'top',\n  top: 'bottom'\n};\nexport default function getOppositePlacement(placement) {\n  return placement.replace(/left|right|bottom|top/g, function (matched) {\n    return hash[matched];\n  });\n}", "var hash = {\n  start: 'end',\n  end: 'start'\n};\nexport default function getOppositeVariationPlacement(placement) {\n  return placement.replace(/start|end/g, function (matched) {\n    return hash[matched];\n  });\n}", "import getWindow from \"./getWindow.js\";\nexport default function getWindowScroll(node) {\n  var win = getWindow(node);\n  var scrollLeft = win.pageXOffset;\n  var scrollTop = win.pageYOffset;\n  return {\n    scrollLeft: scrollLeft,\n    scrollTop: scrollTop\n  };\n}", "import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getWindowScrollBarX(element) {\n  // If <html> has a CSS width greater than the viewport, then this will be\n  // incorrect for RTL.\n  // Popper 1 is broken in this case and never had a bug report so let's assume\n  // it's not an issue. I don't think anyone ever specifies width on <html>\n  // anyway.\n  // Browsers where the left scrollbar doesn't cause an issue report `0` for\n  // this (e.g. Edge 2019, IE11, Safari)\n  return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}", "import getWindow from \"./getWindow.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getViewportRect(element, strategy) {\n  var win = getWindow(element);\n  var html = getDocumentElement(element);\n  var visualViewport = win.visualViewport;\n  var width = html.clientWidth;\n  var height = html.clientHeight;\n  var x = 0;\n  var y = 0;\n\n  if (visualViewport) {\n    width = visualViewport.width;\n    height = visualViewport.height;\n    var layoutViewport = isLayoutViewport();\n\n    if (layoutViewport || !layoutViewport && strategy === 'fixed') {\n      x = visualViewport.offsetLeft;\n      y = visualViewport.offsetTop;\n    }\n  }\n\n  return {\n    width: width,\n    height: height,\n    x: x + getWindowScrollBarX(element),\n    y: y\n  };\n}", "import getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nimport { max } from \"../utils/math.js\"; // Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable\n\nexport default function getDocumentRect(element) {\n  var _element$ownerDocumen;\n\n  var html = getDocumentElement(element);\n  var winScroll = getWindowScroll(element);\n  var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n  var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n  var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n  var x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n  var y = -winScroll.scrollTop;\n\n  if (getComputedStyle(body || html).direction === 'rtl') {\n    x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n  }\n\n  return {\n    width: width,\n    height: height,\n    x: x,\n    y: y\n  };\n}", "import getComputedStyle from \"./getComputedStyle.js\";\nexport default function isScrollParent(element) {\n  // Firefox wants us to check `-x` and `-y` variations as well\n  var _getComputedStyle = getComputedStyle(element),\n      overflow = _getComputedStyle.overflow,\n      overflowX = _getComputedStyle.overflowX,\n      overflowY = _getComputedStyle.overflowY;\n\n  return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}", "import getParentNode from \"./getParentNode.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nexport default function getScrollParent(node) {\n  if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n    // $FlowFixMe[incompatible-return]: assume body is always available\n    return node.ownerDocument.body;\n  }\n\n  if (isHTMLElement(node) && isScrollParent(node)) {\n    return node;\n  }\n\n  return getScrollParent(getParentNode(node));\n}", "import getScrollParent from \"./getScrollParent.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getWindow from \"./getWindow.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the\nreference element's position.\n*/\n\nexport default function listScrollParents(element, list) {\n  var _element$ownerDocumen;\n\n  if (list === void 0) {\n    list = [];\n  }\n\n  var scrollParent = getScrollParent(element);\n  var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);\n  var win = getWindow(scrollParent);\n  var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n  var updatedList = list.concat(target);\n  return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n  updatedList.concat(listScrollParents(getParentNode(target)));\n}", "export default function rectToClientRect(rect) {\n  return Object.assign({}, rect, {\n    left: rect.x,\n    top: rect.y,\n    right: rect.x + rect.width,\n    bottom: rect.y + rect.height\n  });\n}", "import { viewport } from \"../enums.js\";\nimport getViewportRect from \"./getViewportRect.js\";\nimport getDocumentRect from \"./getDocumentRect.js\";\nimport listScrollParents from \"./listScrollParents.js\";\nimport getOffsetParent from \"./getOffsetParent.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport contains from \"./contains.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport rectToClientRect from \"../utils/rectToClientRect.js\";\nimport { max, min } from \"../utils/math.js\";\n\nfunction getInnerBoundingClientRect(element, strategy) {\n  var rect = getBoundingClientRect(element, false, strategy === 'fixed');\n  rect.top = rect.top + element.clientTop;\n  rect.left = rect.left + element.clientLeft;\n  rect.bottom = rect.top + element.clientHeight;\n  rect.right = rect.left + element.clientWidth;\n  rect.width = element.clientWidth;\n  rect.height = element.clientHeight;\n  rect.x = rect.left;\n  rect.y = rect.top;\n  return rect;\n}\n\nfunction getClientRectFromMixedType(element, clippingParent, strategy) {\n  return clippingParent === viewport ? rectToClientRect(getViewportRect(element, strategy)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingParents(element) {\n  var clippingParents = listScrollParents(getParentNode(element));\n  var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;\n  var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n\n  if (!isElement(clipperElement)) {\n    return [];\n  } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414\n\n\n  return clippingParents.filter(function (clippingParent) {\n    return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';\n  });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\n\nexport default function getClippingRect(element, boundary, rootBoundary, strategy) {\n  var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n  var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n  var firstClippingParent = clippingParents[0];\n  var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n    var rect = getClientRectFromMixedType(element, clippingParent, strategy);\n    accRect.top = max(rect.top, accRect.top);\n    accRect.right = min(rect.right, accRect.right);\n    accRect.bottom = min(rect.bottom, accRect.bottom);\n    accRect.left = max(rect.left, accRect.left);\n    return accRect;\n  }, getClientRectFromMixedType(element, firstClippingParent, strategy));\n  clippingRect.width = clippingRect.right - clippingRect.left;\n  clippingRect.height = clippingRect.bottom - clippingRect.top;\n  clippingRect.x = clippingRect.left;\n  clippingRect.y = clippingRect.top;\n  return clippingRect;\n}", "import getBasePlacement from \"./getBasePlacement.js\";\nimport getVariation from \"./getVariation.js\";\nimport getMainAxisFromPlacement from \"./getMainAxisFromPlacement.js\";\nimport { top, right, bottom, left, start, end } from \"../enums.js\";\nexport default function computeOffsets(_ref) {\n  var reference = _ref.reference,\n      element = _ref.element,\n      placement = _ref.placement;\n  var basePlacement = placement ? getBasePlacement(placement) : null;\n  var variation = placement ? getVariation(placement) : null;\n  var commonX = reference.x + reference.width / 2 - element.width / 2;\n  var commonY = reference.y + reference.height / 2 - element.height / 2;\n  var offsets;\n\n  switch (basePlacement) {\n    case top:\n      offsets = {\n        x: commonX,\n        y: reference.y - element.height\n      };\n      break;\n\n    case bottom:\n      offsets = {\n        x: commonX,\n        y: reference.y + reference.height\n      };\n      break;\n\n    case right:\n      offsets = {\n        x: reference.x + reference.width,\n        y: commonY\n      };\n      break;\n\n    case left:\n      offsets = {\n        x: reference.x - element.width,\n        y: commonY\n      };\n      break;\n\n    default:\n      offsets = {\n        x: reference.x,\n        y: reference.y\n      };\n  }\n\n  var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n\n  if (mainAxis != null) {\n    var len = mainAxis === 'y' ? 'height' : 'width';\n\n    switch (variation) {\n      case start:\n        offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);\n        break;\n\n      case end:\n        offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);\n        break;\n\n      default:\n    }\n  }\n\n  return offsets;\n}", "import getClippingRect from \"../dom-utils/getClippingRect.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getBoundingClientRect from \"../dom-utils/getBoundingClientRect.js\";\nimport computeOffsets from \"./computeOffsets.js\";\nimport rectToClientRect from \"./rectToClientRect.js\";\nimport { clippingParents, reference, popper, bottom, top, right, basePlacements, viewport } from \"../enums.js\";\nimport { isElement } from \"../dom-utils/instanceOf.js\";\nimport mergePaddingObject from \"./mergePaddingObject.js\";\nimport expandToHashMap from \"./expandToHashMap.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport default function detectOverflow(state, options) {\n  if (options === void 0) {\n    options = {};\n  }\n\n  var _options = options,\n      _options$placement = _options.placement,\n      placement = _options$placement === void 0 ? state.placement : _options$placement,\n      _options$strategy = _options.strategy,\n      strategy = _options$strategy === void 0 ? state.strategy : _options$strategy,\n      _options$boundary = _options.boundary,\n      boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,\n      _options$rootBoundary = _options.rootBoundary,\n      rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,\n      _options$elementConte = _options.elementContext,\n      elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,\n      _options$altBoundary = _options.altBoundary,\n      altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n      _options$padding = _options.padding,\n      padding = _options$padding === void 0 ? 0 : _options$padding;\n  var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n  var altContext = elementContext === popper ? reference : popper;\n  var popperRect = state.rects.popper;\n  var element = state.elements[altBoundary ? altContext : elementContext];\n  var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary, strategy);\n  var referenceClientRect = getBoundingClientRect(state.elements.reference);\n  var popperOffsets = computeOffsets({\n    reference: referenceClientRect,\n    element: popperRect,\n    strategy: 'absolute',\n    placement: placement\n  });\n  var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets));\n  var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n  // 0 or negative = within the clipping rect\n\n  var overflowOffsets = {\n    top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n    bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n    left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n    right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n  };\n  var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n  if (elementContext === popper && offsetData) {\n    var offset = offsetData[placement];\n    Object.keys(overflowOffsets).forEach(function (key) {\n      var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n      var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n      overflowOffsets[key] += offset[axis] * multiply;\n    });\n  }\n\n  return overflowOffsets;\n}", "import getVariation from \"./getVariation.js\";\nimport { variationPlacements, basePlacements, placements as allPlacements } from \"../enums.js\";\nimport detectOverflow from \"./detectOverflow.js\";\nimport getBasePlacement from \"./getBasePlacement.js\";\nexport default function computeAutoPlacement(state, options) {\n  if (options === void 0) {\n    options = {};\n  }\n\n  var _options = options,\n      placement = _options.placement,\n      boundary = _options.boundary,\n      rootBoundary = _options.rootBoundary,\n      padding = _options.padding,\n      flipVariations = _options.flipVariations,\n      _options$allowedAutoP = _options.allowedAutoPlacements,\n      allowedAutoPlacements = _options$allowedAutoP === void 0 ? allPlacements : _options$allowedAutoP;\n  var variation = getVariation(placement);\n  var placements = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {\n    return getVariation(placement) === variation;\n  }) : basePlacements;\n  var allowedPlacements = placements.filter(function (placement) {\n    return allowedAutoPlacements.indexOf(placement) >= 0;\n  });\n\n  if (allowedPlacements.length === 0) {\n    allowedPlacements = placements;\n  } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...\n\n\n  var overflows = allowedPlacements.reduce(function (acc, placement) {\n    acc[placement] = detectOverflow(state, {\n      placement: placement,\n      boundary: boundary,\n      rootBoundary: rootBoundary,\n      padding: padding\n    })[getBasePlacement(placement)];\n    return acc;\n  }, {});\n  return Object.keys(overflows).sort(function (a, b) {\n    return overflows[a] - overflows[b];\n  });\n}", "import getOppositePlacement from \"../utils/getOppositePlacement.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getOppositeVariationPlacement from \"../utils/getOppositeVariationPlacement.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport computeAutoPlacement from \"../utils/computeAutoPlacement.js\";\nimport { bottom, top, start, right, left, auto } from \"../enums.js\";\nimport getVariation from \"../utils/getVariation.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction getExpandedFallbackPlacements(placement) {\n  if (getBasePlacement(placement) === auto) {\n    return [];\n  }\n\n  var oppositePlacement = getOppositePlacement(placement);\n  return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n}\n\nfunction flip(_ref) {\n  var state = _ref.state,\n      options = _ref.options,\n      name = _ref.name;\n\n  if (state.modifiersData[name]._skip) {\n    return;\n  }\n\n  var _options$mainAxis = options.mainAxis,\n      checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n      _options$altAxis = options.altAxis,\n      checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n      specifiedFallbackPlacements = options.fallbackPlacements,\n      padding = options.padding,\n      boundary = options.boundary,\n      rootBoundary = options.rootBoundary,\n      altBoundary = options.altBoundary,\n      _options$flipVariatio = options.flipVariations,\n      flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n      allowedAutoPlacements = options.allowedAutoPlacements;\n  var preferredPlacement = state.options.placement;\n  var basePlacement = getBasePlacement(preferredPlacement);\n  var isBasePlacement = basePlacement === preferredPlacement;\n  var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n  var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n    return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {\n      placement: placement,\n      boundary: boundary,\n      rootBoundary: rootBoundary,\n      padding: padding,\n      flipVariations: flipVariations,\n      allowedAutoPlacements: allowedAutoPlacements\n    }) : placement);\n  }, []);\n  var referenceRect = state.rects.reference;\n  var popperRect = state.rects.popper;\n  var checksMap = new Map();\n  var makeFallbackChecks = true;\n  var firstFittingPlacement = placements[0];\n\n  for (var i = 0; i < placements.length; i++) {\n    var placement = placements[i];\n\n    var _basePlacement = getBasePlacement(placement);\n\n    var isStartVariation = getVariation(placement) === start;\n    var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n    var len = isVertical ? 'width' : 'height';\n    var overflow = detectOverflow(state, {\n      placement: placement,\n      boundary: boundary,\n      rootBoundary: rootBoundary,\n      altBoundary: altBoundary,\n      padding: padding\n    });\n    var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n\n    if (referenceRect[len] > popperRect[len]) {\n      mainVariationSide = getOppositePlacement(mainVariationSide);\n    }\n\n    var altVariationSide = getOppositePlacement(mainVariationSide);\n    var checks = [];\n\n    if (checkMainAxis) {\n      checks.push(overflow[_basePlacement] <= 0);\n    }\n\n    if (checkAltAxis) {\n      checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n    }\n\n    if (checks.every(function (check) {\n      return check;\n    })) {\n      firstFittingPlacement = placement;\n      makeFallbackChecks = false;\n      break;\n    }\n\n    checksMap.set(placement, checks);\n  }\n\n  if (makeFallbackChecks) {\n    // `2` may be desired in some cases \u2013 research later\n    var numberOfChecks = flipVariations ? 3 : 1;\n\n    var _loop = function _loop(_i) {\n      var fittingPlacement = placements.find(function (placement) {\n        var checks = checksMap.get(placement);\n\n        if (checks) {\n          return checks.slice(0, _i).every(function (check) {\n            return check;\n          });\n        }\n      });\n\n      if (fittingPlacement) {\n        firstFittingPlacement = fittingPlacement;\n        return \"break\";\n      }\n    };\n\n    for (var _i = numberOfChecks; _i > 0; _i--) {\n      var _ret = _loop(_i);\n\n      if (_ret === \"break\") break;\n    }\n  }\n\n  if (state.placement !== firstFittingPlacement) {\n    state.modifiersData[name]._skip = true;\n    state.placement = firstFittingPlacement;\n    state.reset = true;\n  }\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'flip',\n  enabled: true,\n  phase: 'main',\n  fn: flip,\n  requiresIfExists: ['offset'],\n  data: {\n    _skip: false\n  }\n};", "import { top, bottom, left, right } from \"../enums.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\n\nfunction getSideOffsets(overflow, rect, preventedOffsets) {\n  if (preventedOffsets === void 0) {\n    preventedOffsets = {\n      x: 0,\n      y: 0\n    };\n  }\n\n  return {\n    top: overflow.top - rect.height - preventedOffsets.y,\n    right: overflow.right - rect.width + preventedOffsets.x,\n    bottom: overflow.bottom - rect.height + preventedOffsets.y,\n    left: overflow.left - rect.width - preventedOffsets.x\n  };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n  return [top, right, bottom, left].some(function (side) {\n    return overflow[side] >= 0;\n  });\n}\n\nfunction hide(_ref) {\n  var state = _ref.state,\n      name = _ref.name;\n  var referenceRect = state.rects.reference;\n  var popperRect = state.rects.popper;\n  var preventedOffsets = state.modifiersData.preventOverflow;\n  var referenceOverflow = detectOverflow(state, {\n    elementContext: 'reference'\n  });\n  var popperAltOverflow = detectOverflow(state, {\n    altBoundary: true\n  });\n  var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n  var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n  var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n  var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n  state.modifiersData[name] = {\n    referenceClippingOffsets: referenceClippingOffsets,\n    popperEscapeOffsets: popperEscapeOffsets,\n    isReferenceHidden: isReferenceHidden,\n    hasPopperEscaped: hasPopperEscaped\n  };\n  state.attributes.popper = Object.assign({}, state.attributes.popper, {\n    'data-popper-reference-hidden': isReferenceHidden,\n    'data-popper-escaped': hasPopperEscaped\n  });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'hide',\n  enabled: true,\n  phase: 'main',\n  requiresIfExists: ['preventOverflow'],\n  fn: hide\n};", "import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { top, left, right, placements } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport function distanceAndSkiddingToXY(placement, rects, offset) {\n  var basePlacement = getBasePlacement(placement);\n  var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n  var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {\n    placement: placement\n  })) : offset,\n      skidding = _ref[0],\n      distance = _ref[1];\n\n  skidding = skidding || 0;\n  distance = (distance || 0) * invertDistance;\n  return [left, right].indexOf(basePlacement) >= 0 ? {\n    x: distance,\n    y: skidding\n  } : {\n    x: skidding,\n    y: distance\n  };\n}\n\nfunction offset(_ref2) {\n  var state = _ref2.state,\n      options = _ref2.options,\n      name = _ref2.name;\n  var _options$offset = options.offset,\n      offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n  var data = placements.reduce(function (acc, placement) {\n    acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n    return acc;\n  }, {});\n  var _data$state$placement = data[state.placement],\n      x = _data$state$placement.x,\n      y = _data$state$placement.y;\n\n  if (state.modifiersData.popperOffsets != null) {\n    state.modifiersData.popperOffsets.x += x;\n    state.modifiersData.popperOffsets.y += y;\n  }\n\n  state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'offset',\n  enabled: true,\n  phase: 'main',\n  requires: ['popperOffsets'],\n  fn: offset\n};", "import computeOffsets from \"../utils/computeOffsets.js\";\n\nfunction popperOffsets(_ref) {\n  var state = _ref.state,\n      name = _ref.name;\n  // Offsets are the actual position the popper needs to have to be\n  // properly positioned near its reference element\n  // This is the most basic placement, and will be adjusted by\n  // the modifiers in the next step\n  state.modifiersData[name] = computeOffsets({\n    reference: state.rects.reference,\n    element: state.rects.popper,\n    strategy: 'absolute',\n    placement: state.placement\n  });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'popperOffsets',\n  enabled: true,\n  phase: 'read',\n  fn: popperOffsets,\n  data: {}\n};", "export default function getAltAxis(axis) {\n  return axis === 'x' ? 'y' : 'x';\n}", "import { top, left, right, bottom, start } from \"../enums.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport getAltAxis from \"../utils/getAltAxis.js\";\nimport { within, withinMaxClamp } from \"../utils/within.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport getFreshSideObject from \"../utils/getFreshSideObject.js\";\nimport { min as mathMin, max as mathMax } from \"../utils/math.js\";\n\nfunction preventOverflow(_ref) {\n  var state = _ref.state,\n      options = _ref.options,\n      name = _ref.name;\n  var _options$mainAxis = options.mainAxis,\n      checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n      _options$altAxis = options.altAxis,\n      checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n      boundary = options.boundary,\n      rootBoundary = options.rootBoundary,\n      altBoundary = options.altBoundary,\n      padding = options.padding,\n      _options$tether = options.tether,\n      tether = _options$tether === void 0 ? true : _options$tether,\n      _options$tetherOffset = options.tetherOffset,\n      tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n  var overflow = detectOverflow(state, {\n    boundary: boundary,\n    rootBoundary: rootBoundary,\n    padding: padding,\n    altBoundary: altBoundary\n  });\n  var basePlacement = getBasePlacement(state.placement);\n  var variation = getVariation(state.placement);\n  var isBasePlacement = !variation;\n  var mainAxis = getMainAxisFromPlacement(basePlacement);\n  var altAxis = getAltAxis(mainAxis);\n  var popperOffsets = state.modifiersData.popperOffsets;\n  var referenceRect = state.rects.reference;\n  var popperRect = state.rects.popper;\n  var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {\n    placement: state.placement\n  })) : tetherOffset;\n  var normalizedTetherOffsetValue = typeof tetherOffsetValue === 'number' ? {\n    mainAxis: tetherOffsetValue,\n    altAxis: tetherOffsetValue\n  } : Object.assign({\n    mainAxis: 0,\n    altAxis: 0\n  }, tetherOffsetValue);\n  var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;\n  var data = {\n    x: 0,\n    y: 0\n  };\n\n  if (!popperOffsets) {\n    return;\n  }\n\n  if (checkMainAxis) {\n    var _offsetModifierState$;\n\n    var mainSide = mainAxis === 'y' ? top : left;\n    var altSide = mainAxis === 'y' ? bottom : right;\n    var len = mainAxis === 'y' ? 'height' : 'width';\n    var offset = popperOffsets[mainAxis];\n    var min = offset + overflow[mainSide];\n    var max = offset - overflow[altSide];\n    var additive = tether ? -popperRect[len] / 2 : 0;\n    var minLen = variation === start ? referenceRect[len] : popperRect[len];\n    var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n    // outside the reference bounds\n\n    var arrowElement = state.elements.arrow;\n    var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n      width: 0,\n      height: 0\n    };\n    var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();\n    var arrowPaddingMin = arrowPaddingObject[mainSide];\n    var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n    // to include its full size in the calculation. If the reference is small\n    // and near the edge of a boundary, the popper can overflow even if the\n    // reference is not overflowing as well (e.g. virtual elements with no\n    // width or height)\n\n    var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n    var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;\n    var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;\n    var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n    var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n    var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;\n    var tetherMin = offset + minOffset - offsetModifierValue - clientOffset;\n    var tetherMax = offset + maxOffset - offsetModifierValue;\n    var preventedOffset = within(tether ? mathMin(min, tetherMin) : min, offset, tether ? mathMax(max, tetherMax) : max);\n    popperOffsets[mainAxis] = preventedOffset;\n    data[mainAxis] = preventedOffset - offset;\n  }\n\n  if (checkAltAxis) {\n    var _offsetModifierState$2;\n\n    var _mainSide = mainAxis === 'x' ? top : left;\n\n    var _altSide = mainAxis === 'x' ? bottom : right;\n\n    var _offset = popperOffsets[altAxis];\n\n    var _len = altAxis === 'y' ? 'height' : 'width';\n\n    var _min = _offset + overflow[_mainSide];\n\n    var _max = _offset - overflow[_altSide];\n\n    var isOriginSide = [top, left].indexOf(basePlacement) !== -1;\n\n    var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;\n\n    var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;\n\n    var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;\n\n    var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);\n\n    popperOffsets[altAxis] = _preventedOffset;\n    data[altAxis] = _preventedOffset - _offset;\n  }\n\n  state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'preventOverflow',\n  enabled: true,\n  phase: 'main',\n  fn: preventOverflow,\n  requiresIfExists: ['offset']\n};", "export default function getHTMLElementScroll(element) {\n  return {\n    scrollLeft: element.scrollLeft,\n    scrollTop: element.scrollTop\n  };\n}", "import getWindowScroll from \"./getWindowScroll.js\";\nimport getWindow from \"./getWindow.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getHTMLElementScroll from \"./getHTMLElementScroll.js\";\nexport default function getNodeScroll(node) {\n  if (node === getWindow(node) || !isHTMLElement(node)) {\n    return getWindowScroll(node);\n  } else {\n    return getHTMLElementScroll(node);\n  }\n}", "import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getNodeScroll from \"./getNodeScroll.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport { round } from \"../utils/math.js\";\n\nfunction isElementScaled(element) {\n  var rect = element.getBoundingClientRect();\n  var scaleX = round(rect.width) / element.offsetWidth || 1;\n  var scaleY = round(rect.height) / element.offsetHeight || 1;\n  return scaleX !== 1 || scaleY !== 1;\n} // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\n\nexport default function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n  if (isFixed === void 0) {\n    isFixed = false;\n  }\n\n  var isOffsetParentAnElement = isHTMLElement(offsetParent);\n  var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);\n  var documentElement = getDocumentElement(offsetParent);\n  var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed);\n  var scroll = {\n    scrollLeft: 0,\n    scrollTop: 0\n  };\n  var offsets = {\n    x: 0,\n    y: 0\n  };\n\n  if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n    if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078\n    isScrollParent(documentElement)) {\n      scroll = getNodeScroll(offsetParent);\n    }\n\n    if (isHTMLElement(offsetParent)) {\n      offsets = getBoundingClientRect(offsetParent, true);\n      offsets.x += offsetParent.clientLeft;\n      offsets.y += offsetParent.clientTop;\n    } else if (documentElement) {\n      offsets.x = getWindowScrollBarX(documentElement);\n    }\n  }\n\n  return {\n    x: rect.left + scroll.scrollLeft - offsets.x,\n    y: rect.top + scroll.scrollTop - offsets.y,\n    width: rect.width,\n    height: rect.height\n  };\n}", "import { modifierPhases } from \"../enums.js\"; // source: https://stackoverflow.com/questions/49875255\n\nfunction order(modifiers) {\n  var map = new Map();\n  var visited = new Set();\n  var result = [];\n  modifiers.forEach(function (modifier) {\n    map.set(modifier.name, modifier);\n  }); // On visiting object, check for its dependencies and visit them recursively\n\n  function sort(modifier) {\n    visited.add(modifier.name);\n    var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n    requires.forEach(function (dep) {\n      if (!visited.has(dep)) {\n        var depModifier = map.get(dep);\n\n        if (depModifier) {\n          sort(depModifier);\n        }\n      }\n    });\n    result.push(modifier);\n  }\n\n  modifiers.forEach(function (modifier) {\n    if (!visited.has(modifier.name)) {\n      // check for visited object\n      sort(modifier);\n    }\n  });\n  return result;\n}\n\nexport default function orderModifiers(modifiers) {\n  // order based on dependencies\n  var orderedModifiers = order(modifiers); // order based on phase\n\n  return modifierPhases.reduce(function (acc, phase) {\n    return acc.concat(orderedModifiers.filter(function (modifier) {\n      return modifier.phase === phase;\n    }));\n  }, []);\n}", "export default function debounce(fn) {\n  var pending;\n  return function () {\n    if (!pending) {\n      pending = new Promise(function (resolve) {\n        Promise.resolve().then(function () {\n          pending = undefined;\n          resolve(fn());\n        });\n      });\n    }\n\n    return pending;\n  };\n}", "export default function mergeByName(modifiers) {\n  var merged = modifiers.reduce(function (merged, current) {\n    var existing = merged[current.name];\n    merged[current.name] = existing ? Object.assign({}, existing, current, {\n      options: Object.assign({}, existing.options, current.options),\n      data: Object.assign({}, existing.data, current.data)\n    }) : current;\n    return merged;\n  }, {}); // IE11 does not support Object.values\n\n  return Object.keys(merged).map(function (key) {\n    return merged[key];\n  });\n}", "import getCompositeRect from \"./dom-utils/getCompositeRect.js\";\nimport getLayoutRect from \"./dom-utils/getLayoutRect.js\";\nimport listScrollParents from \"./dom-utils/listScrollParents.js\";\nimport getOffsetParent from \"./dom-utils/getOffsetParent.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nvar DEFAULT_OPTIONS = {\n  placement: 'bottom',\n  modifiers: [],\n  strategy: 'absolute'\n};\n\nfunction areValidElements() {\n  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n    args[_key] = arguments[_key];\n  }\n\n  return !args.some(function (element) {\n    return !(element && typeof element.getBoundingClientRect === 'function');\n  });\n}\n\nexport function popperGenerator(generatorOptions) {\n  if (generatorOptions === void 0) {\n    generatorOptions = {};\n  }\n\n  var _generatorOptions = generatorOptions,\n      _generatorOptions$def = _generatorOptions.defaultModifiers,\n      defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n      _generatorOptions$def2 = _generatorOptions.defaultOptions,\n      defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n  return function createPopper(reference, popper, options) {\n    if (options === void 0) {\n      options = defaultOptions;\n    }\n\n    var state = {\n      placement: 'bottom',\n      orderedModifiers: [],\n      options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),\n      modifiersData: {},\n      elements: {\n        reference: reference,\n        popper: popper\n      },\n      attributes: {},\n      styles: {}\n    };\n    var effectCleanupFns = [];\n    var isDestroyed = false;\n    var instance = {\n      state: state,\n      setOptions: function setOptions(setOptionsAction) {\n        var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction;\n        cleanupModifierEffects();\n        state.options = Object.assign({}, defaultOptions, state.options, options);\n        state.scrollParents = {\n          reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n          popper: listScrollParents(popper)\n        }; // Orders the modifiers based on their dependencies and `phase`\n        // properties\n\n        var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n        state.orderedModifiers = orderedModifiers.filter(function (m) {\n          return m.enabled;\n        });\n        runModifierEffects();\n        return instance.update();\n      },\n      // Sync update \u2013 it will always be executed, even if not necessary. This\n      // is useful for low frequency updates where sync behavior simplifies the\n      // logic.\n      // For high frequency updates (e.g. `resize` and `scroll` events), always\n      // prefer the async Popper#update method\n      forceUpdate: function forceUpdate() {\n        if (isDestroyed) {\n          return;\n        }\n\n        var _state$elements = state.elements,\n            reference = _state$elements.reference,\n            popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n        // anymore\n\n        if (!areValidElements(reference, popper)) {\n          return;\n        } // Store the reference and popper rects to be read by modifiers\n\n\n        state.rects = {\n          reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n          popper: getLayoutRect(popper)\n        }; // Modifiers have the ability to reset the current update cycle. The\n        // most common use case for this is the `flip` modifier changing the\n        // placement, which then needs to re-run all the modifiers, because the\n        // logic was previously ran for the previous placement and is therefore\n        // stale/incorrect\n\n        state.reset = false;\n        state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n        // is filled with the initial data specified by the modifier. This means\n        // it doesn't persist and is fresh on each update.\n        // To ensure persistent data, use `${name}#persistent`\n\n        state.orderedModifiers.forEach(function (modifier) {\n          return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n        });\n\n        for (var index = 0; index < state.orderedModifiers.length; index++) {\n          if (state.reset === true) {\n            state.reset = false;\n            index = -1;\n            continue;\n          }\n\n          var _state$orderedModifie = state.orderedModifiers[index],\n              fn = _state$orderedModifie.fn,\n              _state$orderedModifie2 = _state$orderedModifie.options,\n              _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n              name = _state$orderedModifie.name;\n\n          if (typeof fn === 'function') {\n            state = fn({\n              state: state,\n              options: _options,\n              name: name,\n              instance: instance\n            }) || state;\n          }\n        }\n      },\n      // Async and optimistically optimized update \u2013 it will not be executed if\n      // not necessary (debounced to run at most once-per-tick)\n      update: debounce(function () {\n        return new Promise(function (resolve) {\n          instance.forceUpdate();\n          resolve(state);\n        });\n      }),\n      destroy: function destroy() {\n        cleanupModifierEffects();\n        isDestroyed = true;\n      }\n    };\n\n    if (!areValidElements(reference, popper)) {\n      return instance;\n    }\n\n    instance.setOptions(options).then(function (state) {\n      if (!isDestroyed && options.onFirstUpdate) {\n        options.onFirstUpdate(state);\n      }\n    }); // Modifiers have the ability to execute arbitrary code before the first\n    // update cycle runs. They will be executed in the same order as the update\n    // cycle. This is useful when a modifier adds some persistent data that\n    // other modifiers need to use, but the modifier is run after the dependent\n    // one.\n\n    function runModifierEffects() {\n      state.orderedModifiers.forEach(function (_ref) {\n        var name = _ref.name,\n            _ref$options = _ref.options,\n            options = _ref$options === void 0 ? {} : _ref$options,\n            effect = _ref.effect;\n\n        if (typeof effect === 'function') {\n          var cleanupFn = effect({\n            state: state,\n            name: name,\n            instance: instance,\n            options: options\n          });\n\n          var noopFn = function noopFn() {};\n\n          effectCleanupFns.push(cleanupFn || noopFn);\n        }\n      });\n    }\n\n    function cleanupModifierEffects() {\n      effectCleanupFns.forEach(function (fn) {\n        return fn();\n      });\n      effectCleanupFns = [];\n    }\n\n    return instance;\n  };\n}\nexport var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules\n\nexport { detectOverflow };", "import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles];\nvar createPopper = /*#__PURE__*/popperGenerator({\n  defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow };", "import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nimport offset from \"./modifiers/offset.js\";\nimport flip from \"./modifiers/flip.js\";\nimport preventOverflow from \"./modifiers/preventOverflow.js\";\nimport arrow from \"./modifiers/arrow.js\";\nimport hide from \"./modifiers/hide.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles, offset, flip, preventOverflow, arrow, hide];\nvar createPopper = /*#__PURE__*/popperGenerator({\n  defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow }; // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper as createPopperLite } from \"./popper-lite.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport * from \"./modifiers/index.js\";", "/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/data.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * Constants\n */\n\nconst elementMap = new Map()\n\nexport default {\n  set(element, key, instance) {\n    if (!elementMap.has(element)) {\n      elementMap.set(element, new Map())\n    }\n\n    const instanceMap = elementMap.get(element)\n\n    // make it clear we only want one instance per element\n    // can be removed later when multiple key/instances are fine to be used\n    if (!instanceMap.has(key) && instanceMap.size !== 0) {\n      // eslint-disable-next-line no-console\n      console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`)\n      return\n    }\n\n    instanceMap.set(key, instance)\n  },\n\n  get(element, key) {\n    if (elementMap.has(element)) {\n      return elementMap.get(element).get(key) || null\n    }\n\n    return null\n  },\n\n  remove(element, key) {\n    if (!elementMap.has(element)) {\n      return\n    }\n\n    const instanceMap = elementMap.get(element)\n\n    instanceMap.delete(key)\n\n    // free up element references if there are no instances left for an element\n    if (instanceMap.size === 0) {\n      elementMap.delete(element)\n    }\n  }\n}\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap util/index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst MAX_UID = 1_000_000\nconst MILLISECONDS_MULTIPLIER = 1000\nconst TRANSITION_END = 'transitionend'\n\n/**\n * Properly escape IDs selectors to handle weird IDs\n * @param {string} selector\n * @returns {string}\n */\nconst parseSelector = selector => {\n  if (selector && window.CSS && window.CSS.escape) {\n    // document.querySelector needs escaping to handle IDs (html5+) containing for instance /\n    selector = selector.replace(/#([^\\s\"#']+)/g, (match, id) => `#${CSS.escape(id)}`)\n  }\n\n  return selector\n}\n\n// Shout-out Angus Croll (https://goo.gl/pxwQGp)\nconst toType = object => {\n  if (object === null || object === undefined) {\n    return `${object}`\n  }\n\n  return Object.prototype.toString.call(object).match(/\\s([a-z]+)/i)[1].toLowerCase()\n}\n\n/**\n * Public Util API\n */\n\nconst getUID = prefix => {\n  do {\n    prefix += Math.floor(Math.random() * MAX_UID)\n  } while (document.getElementById(prefix))\n\n  return prefix\n}\n\nconst getTransitionDurationFromElement = element => {\n  if (!element) {\n    return 0\n  }\n\n  // Get transition-duration of the element\n  let { transitionDuration, transitionDelay } = window.getComputedStyle(element)\n\n  const floatTransitionDuration = Number.parseFloat(transitionDuration)\n  const floatTransitionDelay = Number.parseFloat(transitionDelay)\n\n  // Return 0 if element or transition duration is not found\n  if (!floatTransitionDuration && !floatTransitionDelay) {\n    return 0\n  }\n\n  // If multiple durations are defined, take the first\n  transitionDuration = transitionDuration.split(',')[0]\n  transitionDelay = transitionDelay.split(',')[0]\n\n  return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER\n}\n\nconst triggerTransitionEnd = element => {\n  element.dispatchEvent(new Event(TRANSITION_END))\n}\n\nconst isElement = object => {\n  if (!object || typeof object !== 'object') {\n    return false\n  }\n\n  if (typeof object.jquery !== 'undefined') {\n    object = object[0]\n  }\n\n  return typeof object.nodeType !== 'undefined'\n}\n\nconst getElement = object => {\n  // it's a jQuery object or a node element\n  if (isElement(object)) {\n    return object.jquery ? object[0] : object\n  }\n\n  if (typeof object === 'string' && object.length > 0) {\n    return document.querySelector(parseSelector(object))\n  }\n\n  return null\n}\n\nconst isVisible = element => {\n  if (!isElement(element) || element.getClientRects().length === 0) {\n    return false\n  }\n\n  const elementIsVisible = getComputedStyle(element).getPropertyValue('visibility') === 'visible'\n  // Handle `details` element as its content may falsie appear visible when it is closed\n  const closedDetails = element.closest('details:not([open])')\n\n  if (!closedDetails) {\n    return elementIsVisible\n  }\n\n  if (closedDetails !== element) {\n    const summary = element.closest('summary')\n    if (summary && summary.parentNode !== closedDetails) {\n      return false\n    }\n\n    if (summary === null) {\n      return false\n    }\n  }\n\n  return elementIsVisible\n}\n\nconst isDisabled = element => {\n  if (!element || element.nodeType !== Node.ELEMENT_NODE) {\n    return true\n  }\n\n  if (element.classList.contains('disabled')) {\n    return true\n  }\n\n  if (typeof element.disabled !== 'undefined') {\n    return element.disabled\n  }\n\n  return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false'\n}\n\nconst findShadowRoot = element => {\n  if (!document.documentElement.attachShadow) {\n    return null\n  }\n\n  // Can find the shadow root otherwise it'll return the document\n  if (typeof element.getRootNode === 'function') {\n    const root = element.getRootNode()\n    return root instanceof ShadowRoot ? root : null\n  }\n\n  if (element instanceof ShadowRoot) {\n    return element\n  }\n\n  // when we don't find a shadow root\n  if (!element.parentNode) {\n    return null\n  }\n\n  return findShadowRoot(element.parentNode)\n}\n\nconst noop = () => {}\n\n/**\n * Trick to restart an element's animation\n *\n * @param {HTMLElement} element\n * @return void\n *\n * @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation\n */\nconst reflow = element => {\n  element.offsetHeight // eslint-disable-line no-unused-expressions\n}\n\nconst getjQuery = () => {\n  if (window.jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {\n    return window.jQuery\n  }\n\n  return null\n}\n\nconst DOMContentLoadedCallbacks = []\n\nconst onDOMContentLoaded = callback => {\n  if (document.readyState === 'loading') {\n    // add listener on the first call when the document is in loading state\n    if (!DOMContentLoadedCallbacks.length) {\n      document.addEventListener('DOMContentLoaded', () => {\n        for (const callback of DOMContentLoadedCallbacks) {\n          callback()\n        }\n      })\n    }\n\n    DOMContentLoadedCallbacks.push(callback)\n  } else {\n    callback()\n  }\n}\n\nconst isRTL = () => document.documentElement.dir === 'rtl'\n\nconst defineJQueryPlugin = plugin => {\n  onDOMContentLoaded(() => {\n    const $ = getjQuery()\n    /* istanbul ignore if */\n    if ($) {\n      const name = plugin.NAME\n      const JQUERY_NO_CONFLICT = $.fn[name]\n      $.fn[name] = plugin.jQueryInterface\n      $.fn[name].Constructor = plugin\n      $.fn[name].noConflict = () => {\n        $.fn[name] = JQUERY_NO_CONFLICT\n        return plugin.jQueryInterface\n      }\n    }\n  })\n}\n\nconst execute = (possibleCallback, args = [], defaultValue = possibleCallback) => {\n  return typeof possibleCallback === 'function' ? possibleCallback(...args) : defaultValue\n}\n\nconst executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {\n  if (!waitForTransition) {\n    execute(callback)\n    return\n  }\n\n  const durationPadding = 5\n  const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding\n\n  let called = false\n\n  const handler = ({ target }) => {\n    if (target !== transitionElement) {\n      return\n    }\n\n    called = true\n    transitionElement.removeEventListener(TRANSITION_END, handler)\n    execute(callback)\n  }\n\n  transitionElement.addEventListener(TRANSITION_END, handler)\n  setTimeout(() => {\n    if (!called) {\n      triggerTransitionEnd(transitionElement)\n    }\n  }, emulatedDuration)\n}\n\n/**\n * Return the previous/next element of a list.\n *\n * @param {array} list    The list of elements\n * @param activeElement   The active element\n * @param shouldGetNext   Choose to get next or previous element\n * @param isCycleAllowed\n * @return {Element|elem} The proper element\n */\nconst getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {\n  const listLength = list.length\n  let index = list.indexOf(activeElement)\n\n  // if the element does not exist in the list return an element\n  // depending on the direction and if cycle is allowed\n  if (index === -1) {\n    return !shouldGetNext && isCycleAllowed ? list[listLength - 1] : list[0]\n  }\n\n  index += shouldGetNext ? 1 : -1\n\n  if (isCycleAllowed) {\n    index = (index + listLength) % listLength\n  }\n\n  return list[Math.max(0, Math.min(index, listLength - 1))]\n}\n\nexport {\n  defineJQueryPlugin,\n  execute,\n  executeAfterTransition,\n  findShadowRoot,\n  getElement,\n  getjQuery,\n  getNextActiveElement,\n  getTransitionDurationFromElement,\n  getUID,\n  isDisabled,\n  isElement,\n  isRTL,\n  isVisible,\n  noop,\n  onDOMContentLoaded,\n  parseSelector,\n  reflow,\n  triggerTransitionEnd,\n  toType\n}\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/event-handler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { getjQuery } from '../util/index.js'\n\n/**\n * Constants\n */\n\nconst namespaceRegex = /[^.]*(?=\\..*)\\.|.*/\nconst stripNameRegex = /\\..*/\nconst stripUidRegex = /::\\d+$/\nconst eventRegistry = {} // Events storage\nlet uidEvent = 1\nconst customEvents = {\n  mouseenter: 'mouseover',\n  mouseleave: 'mouseout'\n}\n\nconst nativeEvents = new Set([\n  'click',\n  'dblclick',\n  'mouseup',\n  'mousedown',\n  'contextmenu',\n  'mousewheel',\n  'DOMMouseScroll',\n  'mouseover',\n  'mouseout',\n  'mousemove',\n  'selectstart',\n  'selectend',\n  'keydown',\n  'keypress',\n  'keyup',\n  'orientationchange',\n  'touchstart',\n  'touchmove',\n  'touchend',\n  'touchcancel',\n  'pointerdown',\n  'pointermove',\n  'pointerup',\n  'pointerleave',\n  'pointercancel',\n  'gesturestart',\n  'gesturechange',\n  'gestureend',\n  'focus',\n  'blur',\n  'change',\n  'reset',\n  'select',\n  'submit',\n  'focusin',\n  'focusout',\n  'load',\n  'unload',\n  'beforeunload',\n  'resize',\n  'move',\n  'DOMContentLoaded',\n  'readystatechange',\n  'error',\n  'abort',\n  'scroll'\n])\n\n/**\n * Private methods\n */\n\nfunction makeEventUid(element, uid) {\n  return (uid && `${uid}::${uidEvent++}`) || element.uidEvent || uidEvent++\n}\n\nfunction getElementEvents(element) {\n  const uid = makeEventUid(element)\n\n  element.uidEvent = uid\n  eventRegistry[uid] = eventRegistry[uid] || {}\n\n  return eventRegistry[uid]\n}\n\nfunction bootstrapHandler(element, fn) {\n  return function handler(event) {\n    hydrateObj(event, { delegateTarget: element })\n\n    if (handler.oneOff) {\n      EventHandler.off(element, event.type, fn)\n    }\n\n    return fn.apply(element, [event])\n  }\n}\n\nfunction bootstrapDelegationHandler(element, selector, fn) {\n  return function handler(event) {\n    const domElements = element.querySelectorAll(selector)\n\n    for (let { target } = event; target && target !== this; target = target.parentNode) {\n      for (const domElement of domElements) {\n        if (domElement !== target) {\n          continue\n        }\n\n        hydrateObj(event, { delegateTarget: target })\n\n        if (handler.oneOff) {\n          EventHandler.off(element, event.type, selector, fn)\n        }\n\n        return fn.apply(target, [event])\n      }\n    }\n  }\n}\n\nfunction findHandler(events, callable, delegationSelector = null) {\n  return Object.values(events)\n    .find(event => event.callable === callable && event.delegationSelector === delegationSelector)\n}\n\nfunction normalizeParameters(originalTypeEvent, handler, delegationFunction) {\n  const isDelegated = typeof handler === 'string'\n  // TODO: tooltip passes `false` instead of selector, so we need to check\n  const callable = isDelegated ? delegationFunction : (handler || delegationFunction)\n  let typeEvent = getTypeEvent(originalTypeEvent)\n\n  if (!nativeEvents.has(typeEvent)) {\n    typeEvent = originalTypeEvent\n  }\n\n  return [isDelegated, callable, typeEvent]\n}\n\nfunction addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) {\n  if (typeof originalTypeEvent !== 'string' || !element) {\n    return\n  }\n\n  let [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction)\n\n  // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position\n  // this prevents the handler from being dispatched the same way as mouseover or mouseout does\n  if (originalTypeEvent in customEvents) {\n    const wrapFunction = fn => {\n      return function (event) {\n        if (!event.relatedTarget || (event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget))) {\n          return fn.call(this, event)\n        }\n      }\n    }\n\n    callable = wrapFunction(callable)\n  }\n\n  const events = getElementEvents(element)\n  const handlers = events[typeEvent] || (events[typeEvent] = {})\n  const previousFunction = findHandler(handlers, callable, isDelegated ? handler : null)\n\n  if (previousFunction) {\n    previousFunction.oneOff = previousFunction.oneOff && oneOff\n\n    return\n  }\n\n  const uid = makeEventUid(callable, originalTypeEvent.replace(namespaceRegex, ''))\n  const fn = isDelegated ?\n    bootstrapDelegationHandler(element, handler, callable) :\n    bootstrapHandler(element, callable)\n\n  fn.delegationSelector = isDelegated ? handler : null\n  fn.callable = callable\n  fn.oneOff = oneOff\n  fn.uidEvent = uid\n  handlers[uid] = fn\n\n  element.addEventListener(typeEvent, fn, isDelegated)\n}\n\nfunction removeHandler(element, events, typeEvent, handler, delegationSelector) {\n  const fn = findHandler(events[typeEvent], handler, delegationSelector)\n\n  if (!fn) {\n    return\n  }\n\n  element.removeEventListener(typeEvent, fn, Boolean(delegationSelector))\n  delete events[typeEvent][fn.uidEvent]\n}\n\nfunction removeNamespacedHandlers(element, events, typeEvent, namespace) {\n  const storeElementEvent = events[typeEvent] || {}\n\n  for (const [handlerKey, event] of Object.entries(storeElementEvent)) {\n    if (handlerKey.includes(namespace)) {\n      removeHandler(element, events, typeEvent, event.callable, event.delegationSelector)\n    }\n  }\n}\n\nfunction getTypeEvent(event) {\n  // allow to get the native events from namespaced events ('click.bs.button' --> 'click')\n  event = event.replace(stripNameRegex, '')\n  return customEvents[event] || event\n}\n\nconst EventHandler = {\n  on(element, event, handler, delegationFunction) {\n    addHandler(element, event, handler, delegationFunction, false)\n  },\n\n  one(element, event, handler, delegationFunction) {\n    addHandler(element, event, handler, delegationFunction, true)\n  },\n\n  off(element, originalTypeEvent, handler, delegationFunction) {\n    if (typeof originalTypeEvent !== 'string' || !element) {\n      return\n    }\n\n    const [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction)\n    const inNamespace = typeEvent !== originalTypeEvent\n    const events = getElementEvents(element)\n    const storeElementEvent = events[typeEvent] || {}\n    const isNamespace = originalTypeEvent.startsWith('.')\n\n    if (typeof callable !== 'undefined') {\n      // Simplest case: handler is passed, remove that listener ONLY.\n      if (!Object.keys(storeElementEvent).length) {\n        return\n      }\n\n      removeHandler(element, events, typeEvent, callable, isDelegated ? handler : null)\n      return\n    }\n\n    if (isNamespace) {\n      for (const elementEvent of Object.keys(events)) {\n        removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1))\n      }\n    }\n\n    for (const [keyHandlers, event] of Object.entries(storeElementEvent)) {\n      const handlerKey = keyHandlers.replace(stripUidRegex, '')\n\n      if (!inNamespace || originalTypeEvent.includes(handlerKey)) {\n        removeHandler(element, events, typeEvent, event.callable, event.delegationSelector)\n      }\n    }\n  },\n\n  trigger(element, event, args) {\n    if (typeof event !== 'string' || !element) {\n      return null\n    }\n\n    const $ = getjQuery()\n    const typeEvent = getTypeEvent(event)\n    const inNamespace = event !== typeEvent\n\n    let jQueryEvent = null\n    let bubbles = true\n    let nativeDispatch = true\n    let defaultPrevented = false\n\n    if (inNamespace && $) {\n      jQueryEvent = $.Event(event, args)\n\n      $(element).trigger(jQueryEvent)\n      bubbles = !jQueryEvent.isPropagationStopped()\n      nativeDispatch = !jQueryEvent.isImmediatePropagationStopped()\n      defaultPrevented = jQueryEvent.isDefaultPrevented()\n    }\n\n    const evt = hydrateObj(new Event(event, { bubbles, cancelable: true }), args)\n\n    if (defaultPrevented) {\n      evt.preventDefault()\n    }\n\n    if (nativeDispatch) {\n      element.dispatchEvent(evt)\n    }\n\n    if (evt.defaultPrevented && jQueryEvent) {\n      jQueryEvent.preventDefault()\n    }\n\n    return evt\n  }\n}\n\nfunction hydrateObj(obj, meta = {}) {\n  for (const [key, value] of Object.entries(meta)) {\n    try {\n      obj[key] = value\n    } catch {\n      Object.defineProperty(obj, key, {\n        configurable: true,\n        get() {\n          return value\n        }\n      })\n    }\n  }\n\n  return obj\n}\n\nexport default EventHandler\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/manipulator.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nfunction normalizeData(value) {\n  if (value === 'true') {\n    return true\n  }\n\n  if (value === 'false') {\n    return false\n  }\n\n  if (value === Number(value).toString()) {\n    return Number(value)\n  }\n\n  if (value === '' || value === 'null') {\n    return null\n  }\n\n  if (typeof value !== 'string') {\n    return value\n  }\n\n  try {\n    return JSON.parse(decodeURIComponent(value))\n  } catch {\n    return value\n  }\n}\n\nfunction normalizeDataKey(key) {\n  return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`)\n}\n\nconst Manipulator = {\n  setDataAttribute(element, key, value) {\n    element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value)\n  },\n\n  removeDataAttribute(element, key) {\n    element.removeAttribute(`data-bs-${normalizeDataKey(key)}`)\n  },\n\n  getDataAttributes(element) {\n    if (!element) {\n      return {}\n    }\n\n    const attributes = {}\n    const bsKeys = Object.keys(element.dataset).filter(key => key.startsWith('bs') && !key.startsWith('bsConfig'))\n\n    for (const key of bsKeys) {\n      let pureKey = key.replace(/^bs/, '')\n      pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length)\n      attributes[pureKey] = normalizeData(element.dataset[key])\n    }\n\n    return attributes\n  },\n\n  getDataAttribute(element, key) {\n    return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`))\n  }\n}\n\nexport default Manipulator\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap util/config.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Manipulator from '../dom/manipulator.js'\nimport { isElement, toType } from './index.js'\n\n/**\n * Class definition\n */\n\nclass Config {\n  // Getters\n  static get Default() {\n    return {}\n  }\n\n  static get DefaultType() {\n    return {}\n  }\n\n  static get NAME() {\n    throw new Error('You have to implement the static method \"NAME\", for each component!')\n  }\n\n  _getConfig(config) {\n    config = this._mergeConfigObj(config)\n    config = this._configAfterMerge(config)\n    this._typeCheckConfig(config)\n    return config\n  }\n\n  _configAfterMerge(config) {\n    return config\n  }\n\n  _mergeConfigObj(config, element) {\n    const jsonConfig = isElement(element) ? Manipulator.getDataAttribute(element, 'config') : {} // try to parse\n\n    return {\n      ...this.constructor.Default,\n      ...(typeof jsonConfig === 'object' ? jsonConfig : {}),\n      ...(isElement(element) ? Manipulator.getDataAttributes(element) : {}),\n      ...(typeof config === 'object' ? config : {})\n    }\n  }\n\n  _typeCheckConfig(config, configTypes = this.constructor.DefaultType) {\n    for (const [property, expectedTypes] of Object.entries(configTypes)) {\n      const value = config[property]\n      const valueType = isElement(value) ? 'element' : toType(value)\n\n      if (!new RegExp(expectedTypes).test(valueType)) {\n        throw new TypeError(\n          `${this.constructor.NAME.toUpperCase()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`\n        )\n      }\n    }\n  }\n}\n\nexport default Config\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap base-component.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Data from './dom/data.js'\nimport EventHandler from './dom/event-handler.js'\nimport Config from './util/config.js'\nimport { executeAfterTransition, getElement } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst VERSION = '5.3.3'\n\n/**\n * Class definition\n */\n\nclass BaseComponent extends Config {\n  constructor(element, config) {\n    super()\n\n    element = getElement(element)\n    if (!element) {\n      return\n    }\n\n    this._element = element\n    this._config = this._getConfig(config)\n\n    Data.set(this._element, this.constructor.DATA_KEY, this)\n  }\n\n  // Public\n  dispose() {\n    Data.remove(this._element, this.constructor.DATA_KEY)\n    EventHandler.off(this._element, this.constructor.EVENT_KEY)\n\n    for (const propertyName of Object.getOwnPropertyNames(this)) {\n      this[propertyName] = null\n    }\n  }\n\n  _queueCallback(callback, element, isAnimated = true) {\n    executeAfterTransition(callback, element, isAnimated)\n  }\n\n  _getConfig(config) {\n    config = this._mergeConfigObj(config, this._element)\n    config = this._configAfterMerge(config)\n    this._typeCheckConfig(config)\n    return config\n  }\n\n  // Static\n  static getInstance(element) {\n    return Data.get(getElement(element), this.DATA_KEY)\n  }\n\n  static getOrCreateInstance(element, config = {}) {\n    return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null)\n  }\n\n  static get VERSION() {\n    return VERSION\n  }\n\n  static get DATA_KEY() {\n    return `bs.${this.NAME}`\n  }\n\n  static get EVENT_KEY() {\n    return `.${this.DATA_KEY}`\n  }\n\n  static eventName(name) {\n    return `${name}${this.EVENT_KEY}`\n  }\n}\n\nexport default BaseComponent\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/selector-engine.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { isDisabled, isVisible, parseSelector } from '../util/index.js'\n\nconst getSelector = element => {\n  let selector = element.getAttribute('data-bs-target')\n\n  if (!selector || selector === '#') {\n    let hrefAttribute = element.getAttribute('href')\n\n    // The only valid content that could double as a selector are IDs or classes,\n    // so everything starting with `#` or `.`. If a \"real\" URL is used as the selector,\n    // `document.querySelector` will rightfully complain it is invalid.\n    // See https://github.com/twbs/bootstrap/issues/32273\n    if (!hrefAttribute || (!hrefAttribute.includes('#') && !hrefAttribute.startsWith('.'))) {\n      return null\n    }\n\n    // Just in case some CMS puts out a full URL with the anchor appended\n    if (hrefAttribute.includes('#') && !hrefAttribute.startsWith('#')) {\n      hrefAttribute = `#${hrefAttribute.split('#')[1]}`\n    }\n\n    selector = hrefAttribute && hrefAttribute !== '#' ? hrefAttribute.trim() : null\n  }\n\n  return selector ? selector.split(',').map(sel => parseSelector(sel)).join(',') : null\n}\n\nconst SelectorEngine = {\n  find(selector, element = document.documentElement) {\n    return [].concat(...Element.prototype.querySelectorAll.call(element, selector))\n  },\n\n  findOne(selector, element = document.documentElement) {\n    return Element.prototype.querySelector.call(element, selector)\n  },\n\n  children(element, selector) {\n    return [].concat(...element.children).filter(child => child.matches(selector))\n  },\n\n  parents(element, selector) {\n    const parents = []\n    let ancestor = element.parentNode.closest(selector)\n\n    while (ancestor) {\n      parents.push(ancestor)\n      ancestor = ancestor.parentNode.closest(selector)\n    }\n\n    return parents\n  },\n\n  prev(element, selector) {\n    let previous = element.previousElementSibling\n\n    while (previous) {\n      if (previous.matches(selector)) {\n        return [previous]\n      }\n\n      previous = previous.previousElementSibling\n    }\n\n    return []\n  },\n  // TODO: this is now unused; remove later along with prev()\n  next(element, selector) {\n    let next = element.nextElementSibling\n\n    while (next) {\n      if (next.matches(selector)) {\n        return [next]\n      }\n\n      next = next.nextElementSibling\n    }\n\n    return []\n  },\n\n  focusableChildren(element) {\n    const focusables = [\n      'a',\n      'button',\n      'input',\n      'textarea',\n      'select',\n      'details',\n      '[tabindex]',\n      '[contenteditable=\"true\"]'\n    ].map(selector => `${selector}:not([tabindex^=\"-\"])`).join(',')\n\n    return this.find(focusables, element).filter(el => !isDisabled(el) && isVisible(el))\n  },\n\n  getSelectorFromElement(element) {\n    const selector = getSelector(element)\n\n    if (selector) {\n      return SelectorEngine.findOne(selector) ? selector : null\n    }\n\n    return null\n  },\n\n  getElementFromSelector(element) {\n    const selector = getSelector(element)\n\n    return selector ? SelectorEngine.findOne(selector) : null\n  },\n\n  getMultipleElementsFromSelector(element) {\n    const selector = getSelector(element)\n\n    return selector ? SelectorEngine.find(selector) : []\n  }\n}\n\nexport default SelectorEngine\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap util/component-functions.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler.js'\nimport SelectorEngine from '../dom/selector-engine.js'\nimport { isDisabled } from './index.js'\n\nconst enableDismissTrigger = (component, method = 'hide') => {\n  const clickEvent = `click.dismiss${component.EVENT_KEY}`\n  const name = component.NAME\n\n  EventHandler.on(document, clickEvent, `[data-bs-dismiss=\"${name}\"]`, function (event) {\n    if (['A', 'AREA'].includes(this.tagName)) {\n      event.preventDefault()\n    }\n\n    if (isDisabled(this)) {\n      return\n    }\n\n    const target = SelectorEngine.getElementFromSelector(this) || this.closest(`.${name}`)\n    const instance = component.getOrCreateInstance(target)\n\n    // Method argument is left, for Alert and only, as it doesn't implement the 'hide' method\n    instance[method]()\n  })\n}\n\nexport {\n  enableDismissTrigger\n}\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap alert.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\nimport { defineJQueryPlugin } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'alert'\nconst DATA_KEY = 'bs.alert'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_CLOSE = `close${EVENT_KEY}`\nconst EVENT_CLOSED = `closed${EVENT_KEY}`\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\n/**\n * Class definition\n */\n\nclass Alert extends BaseComponent {\n  // Getters\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  close() {\n    const closeEvent = EventHandler.trigger(this._element, EVENT_CLOSE)\n\n    if (closeEvent.defaultPrevented) {\n      return\n    }\n\n    this._element.classList.remove(CLASS_NAME_SHOW)\n\n    const isAnimated = this._element.classList.contains(CLASS_NAME_FADE)\n    this._queueCallback(() => this._destroyElement(), this._element, isAnimated)\n  }\n\n  // Private\n  _destroyElement() {\n    this._element.remove()\n    EventHandler.trigger(this._element, EVENT_CLOSED)\n    this.dispose()\n  }\n\n  // Static\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Alert.getOrCreateInstance(this)\n\n      if (typeof config !== 'string') {\n        return\n      }\n\n      if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n        throw new TypeError(`No method named \"${config}\"`)\n      }\n\n      data[config](this)\n    })\n  }\n}\n\n/**\n * Data API implementation\n */\n\nenableDismissTrigger(Alert, 'close')\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Alert)\n\nexport default Alert\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap button.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport { defineJQueryPlugin } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'button'\nconst DATA_KEY = 'bs.button'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst CLASS_NAME_ACTIVE = 'active'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"button\"]'\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\n/**\n * Class definition\n */\n\nclass Button extends BaseComponent {\n  // Getters\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method\n    this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE))\n  }\n\n  // Static\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Button.getOrCreateInstance(this)\n\n      if (config === 'toggle') {\n        data[config]()\n      }\n    })\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, event => {\n  event.preventDefault()\n\n  const button = event.target.closest(SELECTOR_DATA_TOGGLE)\n  const data = Button.getOrCreateInstance(button)\n\n  data.toggle()\n})\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Button)\n\nexport default Button\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap util/swipe.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler.js'\nimport Config from './config.js'\nimport { execute } from './index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'swipe'\nconst EVENT_KEY = '.bs.swipe'\nconst EVENT_TOUCHSTART = `touchstart${EVENT_KEY}`\nconst EVENT_TOUCHMOVE = `touchmove${EVENT_KEY}`\nconst EVENT_TOUCHEND = `touchend${EVENT_KEY}`\nconst EVENT_POINTERDOWN = `pointerdown${EVENT_KEY}`\nconst EVENT_POINTERUP = `pointerup${EVENT_KEY}`\nconst POINTER_TYPE_TOUCH = 'touch'\nconst POINTER_TYPE_PEN = 'pen'\nconst CLASS_NAME_POINTER_EVENT = 'pointer-event'\nconst SWIPE_THRESHOLD = 40\n\nconst Default = {\n  endCallback: null,\n  leftCallback: null,\n  rightCallback: null\n}\n\nconst DefaultType = {\n  endCallback: '(function|null)',\n  leftCallback: '(function|null)',\n  rightCallback: '(function|null)'\n}\n\n/**\n * Class definition\n */\n\nclass Swipe extends Config {\n  constructor(element, config) {\n    super()\n    this._element = element\n\n    if (!element || !Swipe.isSupported()) {\n      return\n    }\n\n    this._config = this._getConfig(config)\n    this._deltaX = 0\n    this._supportPointerEvents = Boolean(window.PointerEvent)\n    this._initEvents()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  dispose() {\n    EventHandler.off(this._element, EVENT_KEY)\n  }\n\n  // Private\n  _start(event) {\n    if (!this._supportPointerEvents) {\n      this._deltaX = event.touches[0].clientX\n\n      return\n    }\n\n    if (this._eventIsPointerPenTouch(event)) {\n      this._deltaX = event.clientX\n    }\n  }\n\n  _end(event) {\n    if (this._eventIsPointerPenTouch(event)) {\n      this._deltaX = event.clientX - this._deltaX\n    }\n\n    this._handleSwipe()\n    execute(this._config.endCallback)\n  }\n\n  _move(event) {\n    this._deltaX = event.touches && event.touches.length > 1 ?\n      0 :\n      event.touches[0].clientX - this._deltaX\n  }\n\n  _handleSwipe() {\n    const absDeltaX = Math.abs(this._deltaX)\n\n    if (absDeltaX <= SWIPE_THRESHOLD) {\n      return\n    }\n\n    const direction = absDeltaX / this._deltaX\n\n    this._deltaX = 0\n\n    if (!direction) {\n      return\n    }\n\n    execute(direction > 0 ? this._config.rightCallback : this._config.leftCallback)\n  }\n\n  _initEvents() {\n    if (this._supportPointerEvents) {\n      EventHandler.on(this._element, EVENT_POINTERDOWN, event => this._start(event))\n      EventHandler.on(this._element, EVENT_POINTERUP, event => this._end(event))\n\n      this._element.classList.add(CLASS_NAME_POINTER_EVENT)\n    } else {\n      EventHandler.on(this._element, EVENT_TOUCHSTART, event => this._start(event))\n      EventHandler.on(this._element, EVENT_TOUCHMOVE, event => this._move(event))\n      EventHandler.on(this._element, EVENT_TOUCHEND, event => this._end(event))\n    }\n  }\n\n  _eventIsPointerPenTouch(event) {\n    return this._supportPointerEvents && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH)\n  }\n\n  // Static\n  static isSupported() {\n    return 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0\n  }\n}\n\nexport default Swipe\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport Manipulator from './dom/manipulator.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport {\n  defineJQueryPlugin,\n  getNextActiveElement,\n  isRTL,\n  isVisible,\n  reflow,\n  triggerTransitionEnd\n} from './util/index.js'\nimport Swipe from './util/swipe.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'carousel'\nconst DATA_KEY = 'bs.carousel'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ARROW_LEFT_KEY = 'ArrowLeft'\nconst ARROW_RIGHT_KEY = 'ArrowRight'\nconst TOUCHEVENT_COMPAT_WAIT = 500 // Time for mouse compat events to fire after touch\n\nconst ORDER_NEXT = 'next'\nconst ORDER_PREV = 'prev'\nconst DIRECTION_LEFT = 'left'\nconst DIRECTION_RIGHT = 'right'\n\nconst EVENT_SLIDE = `slide${EVENT_KEY}`\nconst EVENT_SLID = `slid${EVENT_KEY}`\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY}`\nconst EVENT_MOUSEENTER = `mouseenter${EVENT_KEY}`\nconst EVENT_MOUSELEAVE = `mouseleave${EVENT_KEY}`\nconst EVENT_DRAG_START = `dragstart${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_CAROUSEL = 'carousel'\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_SLIDE = 'slide'\nconst CLASS_NAME_END = 'carousel-item-end'\nconst CLASS_NAME_START = 'carousel-item-start'\nconst CLASS_NAME_NEXT = 'carousel-item-next'\nconst CLASS_NAME_PREV = 'carousel-item-prev'\n\nconst SELECTOR_ACTIVE = '.active'\nconst SELECTOR_ITEM = '.carousel-item'\nconst SELECTOR_ACTIVE_ITEM = SELECTOR_ACTIVE + SELECTOR_ITEM\nconst SELECTOR_ITEM_IMG = '.carousel-item img'\nconst SELECTOR_INDICATORS = '.carousel-indicators'\nconst SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]'\nconst SELECTOR_DATA_RIDE = '[data-bs-ride=\"carousel\"]'\n\nconst KEY_TO_DIRECTION = {\n  [ARROW_LEFT_KEY]: DIRECTION_RIGHT,\n  [ARROW_RIGHT_KEY]: DIRECTION_LEFT\n}\n\nconst Default = {\n  interval: 5000,\n  keyboard: true,\n  pause: 'hover',\n  ride: false,\n  touch: true,\n  wrap: true\n}\n\nconst DefaultType = {\n  interval: '(number|boolean)', // TODO:v6 remove boolean support\n  keyboard: 'boolean',\n  pause: '(string|boolean)',\n  ride: '(boolean|string)',\n  touch: 'boolean',\n  wrap: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Carousel extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._interval = null\n    this._activeElement = null\n    this._isSliding = false\n    this.touchTimeout = null\n    this._swipeHelper = null\n\n    this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element)\n    this._addEventListeners()\n\n    if (this._config.ride === CLASS_NAME_CAROUSEL) {\n      this.cycle()\n    }\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  next() {\n    this._slide(ORDER_NEXT)\n  }\n\n  nextWhenVisible() {\n    // FIXME TODO use `document.visibilityState`\n    // Don't call next when the page isn't visible\n    // or the carousel or its parent isn't visible\n    if (!document.hidden && isVisible(this._element)) {\n      this.next()\n    }\n  }\n\n  prev() {\n    this._slide(ORDER_PREV)\n  }\n\n  pause() {\n    if (this._isSliding) {\n      triggerTransitionEnd(this._element)\n    }\n\n    this._clearInterval()\n  }\n\n  cycle() {\n    this._clearInterval()\n    this._updateInterval()\n\n    this._interval = setInterval(() => this.nextWhenVisible(), this._config.interval)\n  }\n\n  _maybeEnableCycle() {\n    if (!this._config.ride) {\n      return\n    }\n\n    if (this._isSliding) {\n      EventHandler.one(this._element, EVENT_SLID, () => this.cycle())\n      return\n    }\n\n    this.cycle()\n  }\n\n  to(index) {\n    const items = this._getItems()\n    if (index > items.length - 1 || index < 0) {\n      return\n    }\n\n    if (this._isSliding) {\n      EventHandler.one(this._element, EVENT_SLID, () => this.to(index))\n      return\n    }\n\n    const activeIndex = this._getItemIndex(this._getActive())\n    if (activeIndex === index) {\n      return\n    }\n\n    const order = index > activeIndex ? ORDER_NEXT : ORDER_PREV\n\n    this._slide(order, items[index])\n  }\n\n  dispose() {\n    if (this._swipeHelper) {\n      this._swipeHelper.dispose()\n    }\n\n    super.dispose()\n  }\n\n  // Private\n  _configAfterMerge(config) {\n    config.defaultInterval = config.interval\n    return config\n  }\n\n  _addEventListeners() {\n    if (this._config.keyboard) {\n      EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event))\n    }\n\n    if (this._config.pause === 'hover') {\n      EventHandler.on(this._element, EVENT_MOUSEENTER, () => this.pause())\n      EventHandler.on(this._element, EVENT_MOUSELEAVE, () => this._maybeEnableCycle())\n    }\n\n    if (this._config.touch && Swipe.isSupported()) {\n      this._addTouchEventListeners()\n    }\n  }\n\n  _addTouchEventListeners() {\n    for (const img of SelectorEngine.find(SELECTOR_ITEM_IMG, this._element)) {\n      EventHandler.on(img, EVENT_DRAG_START, event => event.preventDefault())\n    }\n\n    const endCallBack = () => {\n      if (this._config.pause !== 'hover') {\n        return\n      }\n\n      // If it's a touch-enabled device, mouseenter/leave are fired as\n      // part of the mouse compatibility events on first tap - the carousel\n      // would stop cycling until user tapped out of it;\n      // here, we listen for touchend, explicitly pause the carousel\n      // (as if it's the second time we tap on it, mouseenter compat event\n      // is NOT fired) and after a timeout (to allow for mouse compatibility\n      // events to fire) we explicitly restart cycling\n\n      this.pause()\n      if (this.touchTimeout) {\n        clearTimeout(this.touchTimeout)\n      }\n\n      this.touchTimeout = setTimeout(() => this._maybeEnableCycle(), TOUCHEVENT_COMPAT_WAIT + this._config.interval)\n    }\n\n    const swipeConfig = {\n      leftCallback: () => this._slide(this._directionToOrder(DIRECTION_LEFT)),\n      rightCallback: () => this._slide(this._directionToOrder(DIRECTION_RIGHT)),\n      endCallback: endCallBack\n    }\n\n    this._swipeHelper = new Swipe(this._element, swipeConfig)\n  }\n\n  _keydown(event) {\n    if (/input|textarea/i.test(event.target.tagName)) {\n      return\n    }\n\n    const direction = KEY_TO_DIRECTION[event.key]\n    if (direction) {\n      event.preventDefault()\n      this._slide(this._directionToOrder(direction))\n    }\n  }\n\n  _getItemIndex(element) {\n    return this._getItems().indexOf(element)\n  }\n\n  _setActiveIndicatorElement(index) {\n    if (!this._indicatorsElement) {\n      return\n    }\n\n    const activeIndicator = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement)\n\n    activeIndicator.classList.remove(CLASS_NAME_ACTIVE)\n    activeIndicator.removeAttribute('aria-current')\n\n    const newActiveIndicator = SelectorEngine.findOne(`[data-bs-slide-to=\"${index}\"]`, this._indicatorsElement)\n\n    if (newActiveIndicator) {\n      newActiveIndicator.classList.add(CLASS_NAME_ACTIVE)\n      newActiveIndicator.setAttribute('aria-current', 'true')\n    }\n  }\n\n  _updateInterval() {\n    const element = this._activeElement || this._getActive()\n\n    if (!element) {\n      return\n    }\n\n    const elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10)\n\n    this._config.interval = elementInterval || this._config.defaultInterval\n  }\n\n  _slide(order, element = null) {\n    if (this._isSliding) {\n      return\n    }\n\n    const activeElement = this._getActive()\n    const isNext = order === ORDER_NEXT\n    const nextElement = element || getNextActiveElement(this._getItems(), activeElement, isNext, this._config.wrap)\n\n    if (nextElement === activeElement) {\n      return\n    }\n\n    const nextElementIndex = this._getItemIndex(nextElement)\n\n    const triggerEvent = eventName => {\n      return EventHandler.trigger(this._element, eventName, {\n        relatedTarget: nextElement,\n        direction: this._orderToDirection(order),\n        from: this._getItemIndex(activeElement),\n        to: nextElementIndex\n      })\n    }\n\n    const slideEvent = triggerEvent(EVENT_SLIDE)\n\n    if (slideEvent.defaultPrevented) {\n      return\n    }\n\n    if (!activeElement || !nextElement) {\n      // Some weirdness is happening, so we bail\n      // TODO: change tests that use empty divs to avoid this check\n      return\n    }\n\n    const isCycling = Boolean(this._interval)\n    this.pause()\n\n    this._isSliding = true\n\n    this._setActiveIndicatorElement(nextElementIndex)\n    this._activeElement = nextElement\n\n    const directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END\n    const orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV\n\n    nextElement.classList.add(orderClassName)\n\n    reflow(nextElement)\n\n    activeElement.classList.add(directionalClassName)\n    nextElement.classList.add(directionalClassName)\n\n    const completeCallBack = () => {\n      nextElement.classList.remove(directionalClassName, orderClassName)\n      nextElement.classList.add(CLASS_NAME_ACTIVE)\n\n      activeElement.classList.remove(CLASS_NAME_ACTIVE, orderClassName, directionalClassName)\n\n      this._isSliding = false\n\n      triggerEvent(EVENT_SLID)\n    }\n\n    this._queueCallback(completeCallBack, activeElement, this._isAnimated())\n\n    if (isCycling) {\n      this.cycle()\n    }\n  }\n\n  _isAnimated() {\n    return this._element.classList.contains(CLASS_NAME_SLIDE)\n  }\n\n  _getActive() {\n    return SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n  }\n\n  _getItems() {\n    return SelectorEngine.find(SELECTOR_ITEM, this._element)\n  }\n\n  _clearInterval() {\n    if (this._interval) {\n      clearInterval(this._interval)\n      this._interval = null\n    }\n  }\n\n  _directionToOrder(direction) {\n    if (isRTL()) {\n      return direction === DIRECTION_LEFT ? ORDER_PREV : ORDER_NEXT\n    }\n\n    return direction === DIRECTION_LEFT ? ORDER_NEXT : ORDER_PREV\n  }\n\n  _orderToDirection(order) {\n    if (isRTL()) {\n      return order === ORDER_PREV ? DIRECTION_LEFT : DIRECTION_RIGHT\n    }\n\n    return order === ORDER_PREV ? DIRECTION_RIGHT : DIRECTION_LEFT\n  }\n\n  // Static\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Carousel.getOrCreateInstance(this, config)\n\n      if (typeof config === 'number') {\n        data.to(config)\n        return\n      }\n\n      if (typeof config === 'string') {\n        if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n          throw new TypeError(`No method named \"${config}\"`)\n        }\n\n        data[config]()\n      }\n    })\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_SLIDE, function (event) {\n  const target = SelectorEngine.getElementFromSelector(this)\n\n  if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {\n    return\n  }\n\n  event.preventDefault()\n\n  const carousel = Carousel.getOrCreateInstance(target)\n  const slideIndex = this.getAttribute('data-bs-slide-to')\n\n  if (slideIndex) {\n    carousel.to(slideIndex)\n    carousel._maybeEnableCycle()\n    return\n  }\n\n  if (Manipulator.getDataAttribute(this, 'slide') === 'next') {\n    carousel.next()\n    carousel._maybeEnableCycle()\n    return\n  }\n\n  carousel.prev()\n  carousel._maybeEnableCycle()\n})\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE)\n\n  for (const carousel of carousels) {\n    Carousel.getOrCreateInstance(carousel)\n  }\n})\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Carousel)\n\nexport default Carousel\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport {\n  defineJQueryPlugin,\n  getElement,\n  reflow\n} from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'collapse'\nconst DATA_KEY = 'bs.collapse'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_COLLAPSE = 'collapse'\nconst CLASS_NAME_COLLAPSING = 'collapsing'\nconst CLASS_NAME_COLLAPSED = 'collapsed'\nconst CLASS_NAME_DEEPER_CHILDREN = `:scope .${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`\nconst CLASS_NAME_HORIZONTAL = 'collapse-horizontal'\n\nconst WIDTH = 'width'\nconst HEIGHT = 'height'\n\nconst SELECTOR_ACTIVES = '.collapse.show, .collapse.collapsing'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"collapse\"]'\n\nconst Default = {\n  parent: null,\n  toggle: true\n}\n\nconst DefaultType = {\n  parent: '(null|element)',\n  toggle: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Collapse extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._isTransitioning = false\n    this._triggerArray = []\n\n    const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE)\n\n    for (const elem of toggleList) {\n      const selector = SelectorEngine.getSelectorFromElement(elem)\n      const filterElement = SelectorEngine.find(selector)\n        .filter(foundElement => foundElement === this._element)\n\n      if (selector !== null && filterElement.length) {\n        this._triggerArray.push(elem)\n      }\n    }\n\n    this._initializeChildren()\n\n    if (!this._config.parent) {\n      this._addAriaAndCollapsedClass(this._triggerArray, this._isShown())\n    }\n\n    if (this._config.toggle) {\n      this.toggle()\n    }\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    if (this._isShown()) {\n      this.hide()\n    } else {\n      this.show()\n    }\n  }\n\n  show() {\n    if (this._isTransitioning || this._isShown()) {\n      return\n    }\n\n    let activeChildren = []\n\n    // find active children\n    if (this._config.parent) {\n      activeChildren = this._getFirstLevelChildren(SELECTOR_ACTIVES)\n        .filter(element => element !== this._element)\n        .map(element => Collapse.getOrCreateInstance(element, { toggle: false }))\n    }\n\n    if (activeChildren.length && activeChildren[0]._isTransitioning) {\n      return\n    }\n\n    const startEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n    if (startEvent.defaultPrevented) {\n      return\n    }\n\n    for (const activeInstance of activeChildren) {\n      activeInstance.hide()\n    }\n\n    const dimension = this._getDimension()\n\n    this._element.classList.remove(CLASS_NAME_COLLAPSE)\n    this._element.classList.add(CLASS_NAME_COLLAPSING)\n\n    this._element.style[dimension] = 0\n\n    this._addAriaAndCollapsedClass(this._triggerArray, true)\n    this._isTransitioning = true\n\n    const complete = () => {\n      this._isTransitioning = false\n\n      this._element.classList.remove(CLASS_NAME_COLLAPSING)\n      this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n      this._element.style[dimension] = ''\n\n      EventHandler.trigger(this._element, EVENT_SHOWN)\n    }\n\n    const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1)\n    const scrollSize = `scroll${capitalizedDimension}`\n\n    this._queueCallback(complete, this._element, true)\n    this._element.style[dimension] = `${this._element[scrollSize]}px`\n  }\n\n  hide() {\n    if (this._isTransitioning || !this._isShown()) {\n      return\n    }\n\n    const startEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n    if (startEvent.defaultPrevented) {\n      return\n    }\n\n    const dimension = this._getDimension()\n\n    this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`\n\n    reflow(this._element)\n\n    this._element.classList.add(CLASS_NAME_COLLAPSING)\n    this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n    for (const trigger of this._triggerArray) {\n      const element = SelectorEngine.getElementFromSelector(trigger)\n\n      if (element && !this._isShown(element)) {\n        this._addAriaAndCollapsedClass([trigger], false)\n      }\n    }\n\n    this._isTransitioning = true\n\n    const complete = () => {\n      this._isTransitioning = false\n      this._element.classList.remove(CLASS_NAME_COLLAPSING)\n      this._element.classList.add(CLASS_NAME_COLLAPSE)\n      EventHandler.trigger(this._element, EVENT_HIDDEN)\n    }\n\n    this._element.style[dimension] = ''\n\n    this._queueCallback(complete, this._element, true)\n  }\n\n  _isShown(element = this._element) {\n    return element.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  // Private\n  _configAfterMerge(config) {\n    config.toggle = Boolean(config.toggle) // Coerce string values\n    config.parent = getElement(config.parent)\n    return config\n  }\n\n  _getDimension() {\n    return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT\n  }\n\n  _initializeChildren() {\n    if (!this._config.parent) {\n      return\n    }\n\n    const children = this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE)\n\n    for (const element of children) {\n      const selected = SelectorEngine.getElementFromSelector(element)\n\n      if (selected) {\n        this._addAriaAndCollapsedClass([element], this._isShown(selected))\n      }\n    }\n  }\n\n  _getFirstLevelChildren(selector) {\n    const children = SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent)\n    // remove children if greater depth\n    return SelectorEngine.find(selector, this._config.parent).filter(element => !children.includes(element))\n  }\n\n  _addAriaAndCollapsedClass(triggerArray, isOpen) {\n    if (!triggerArray.length) {\n      return\n    }\n\n    for (const element of triggerArray) {\n      element.classList.toggle(CLASS_NAME_COLLAPSED, !isOpen)\n      element.setAttribute('aria-expanded', isOpen)\n    }\n  }\n\n  // Static\n  static jQueryInterface(config) {\n    const _config = {}\n    if (typeof config === 'string' && /show|hide/.test(config)) {\n      _config.toggle = false\n    }\n\n    return this.each(function () {\n      const data = Collapse.getOrCreateInstance(this, _config)\n\n      if (typeof config === 'string') {\n        if (typeof data[config] === 'undefined') {\n          throw new TypeError(`No method named \"${config}\"`)\n        }\n\n        data[config]()\n      }\n    })\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  // preventDefault only for <a> elements (which change the URL) not inside the collapsible element\n  if (event.target.tagName === 'A' || (event.delegateTarget && event.delegateTarget.tagName === 'A')) {\n    event.preventDefault()\n  }\n\n  for (const element of SelectorEngine.getMultipleElementsFromSelector(this)) {\n    Collapse.getOrCreateInstance(element, { toggle: false }).toggle()\n  }\n})\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Collapse)\n\nexport default Collapse\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap dropdown.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport * as Popper from '@popperjs/core'\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport Manipulator from './dom/manipulator.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport {\n  defineJQueryPlugin,\n  execute,\n  getElement,\n  getNextActiveElement,\n  isDisabled,\n  isElement,\n  isRTL,\n  isVisible,\n  noop\n} from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'dropdown'\nconst DATA_KEY = 'bs.dropdown'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ESCAPE_KEY = 'Escape'\nconst TAB_KEY = 'Tab'\nconst ARROW_UP_KEY = 'ArrowUp'\nconst ARROW_DOWN_KEY = 'ArrowDown'\nconst RIGHT_MOUSE_BUTTON = 2 // MouseEvent.button value for the secondary button, usually the right button\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_DROPUP = 'dropup'\nconst CLASS_NAME_DROPEND = 'dropend'\nconst CLASS_NAME_DROPSTART = 'dropstart'\nconst CLASS_NAME_DROPUP_CENTER = 'dropup-center'\nconst CLASS_NAME_DROPDOWN_CENTER = 'dropdown-center'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"dropdown\"]:not(.disabled):not(:disabled)'\nconst SELECTOR_DATA_TOGGLE_SHOWN = `${SELECTOR_DATA_TOGGLE}.${CLASS_NAME_SHOW}`\nconst SELECTOR_MENU = '.dropdown-menu'\nconst SELECTOR_NAVBAR = '.navbar'\nconst SELECTOR_NAVBAR_NAV = '.navbar-nav'\nconst SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)'\n\nconst PLACEMENT_TOP = isRTL() ? 'top-end' : 'top-start'\nconst PLACEMENT_TOPEND = isRTL() ? 'top-start' : 'top-end'\nconst PLACEMENT_BOTTOM = isRTL() ? 'bottom-end' : 'bottom-start'\nconst PLACEMENT_BOTTOMEND = isRTL() ? 'bottom-start' : 'bottom-end'\nconst PLACEMENT_RIGHT = isRTL() ? 'left-start' : 'right-start'\nconst PLACEMENT_LEFT = isRTL() ? 'right-start' : 'left-start'\nconst PLACEMENT_TOPCENTER = 'top'\nconst PLACEMENT_BOTTOMCENTER = 'bottom'\n\nconst Default = {\n  autoClose: true,\n  boundary: 'clippingParents',\n  display: 'dynamic',\n  offset: [0, 2],\n  popperConfig: null,\n  reference: 'toggle'\n}\n\nconst DefaultType = {\n  autoClose: '(boolean|string)',\n  boundary: '(string|element)',\n  display: 'string',\n  offset: '(array|string|function)',\n  popperConfig: '(null|object|function)',\n  reference: '(string|element|object)'\n}\n\n/**\n * Class definition\n */\n\nclass Dropdown extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._popper = null\n    this._parent = this._element.parentNode // dropdown wrapper\n    // TODO: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.3/forms/input-group/\n    this._menu = SelectorEngine.next(this._element, SELECTOR_MENU)[0] ||\n      SelectorEngine.prev(this._element, SELECTOR_MENU)[0] ||\n      SelectorEngine.findOne(SELECTOR_MENU, this._parent)\n    this._inNavbar = this._detectNavbar()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    return this._isShown() ? this.hide() : this.show()\n  }\n\n  show() {\n    if (isDisabled(this._element) || this._isShown()) {\n      return\n    }\n\n    const relatedTarget = {\n      relatedTarget: this._element\n    }\n\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, relatedTarget)\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._createPopper()\n\n    // If this is a touch-enabled device we add extra\n    // empty mouseover listeners to the body's immediate children;\n    // only needed because of broken event delegation on iOS\n    // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n    if ('ontouchstart' in document.documentElement && !this._parent.closest(SELECTOR_NAVBAR_NAV)) {\n      for (const element of [].concat(...document.body.children)) {\n        EventHandler.on(element, 'mouseover', noop)\n      }\n    }\n\n    this._element.focus()\n    this._element.setAttribute('aria-expanded', true)\n\n    this._menu.classList.add(CLASS_NAME_SHOW)\n    this._element.classList.add(CLASS_NAME_SHOW)\n    EventHandler.trigger(this._element, EVENT_SHOWN, relatedTarget)\n  }\n\n  hide() {\n    if (isDisabled(this._element) || !this._isShown()) {\n      return\n    }\n\n    const relatedTarget = {\n      relatedTarget: this._element\n    }\n\n    this._completeHide(relatedTarget)\n  }\n\n  dispose() {\n    if (this._popper) {\n      this._popper.destroy()\n    }\n\n    super.dispose()\n  }\n\n  update() {\n    this._inNavbar = this._detectNavbar()\n    if (this._popper) {\n      this._popper.update()\n    }\n  }\n\n  // Private\n  _completeHide(relatedTarget) {\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE, relatedTarget)\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    // If this is a touch-enabled device we remove the extra\n    // empty mouseover listeners we added for iOS support\n    if ('ontouchstart' in document.documentElement) {\n      for (const element of [].concat(...document.body.children)) {\n        EventHandler.off(element, 'mouseover', noop)\n      }\n    }\n\n    if (this._popper) {\n      this._popper.destroy()\n    }\n\n    this._menu.classList.remove(CLASS_NAME_SHOW)\n    this._element.classList.remove(CLASS_NAME_SHOW)\n    this._element.setAttribute('aria-expanded', 'false')\n    Manipulator.removeDataAttribute(this._menu, 'popper')\n    EventHandler.trigger(this._element, EVENT_HIDDEN, relatedTarget)\n  }\n\n  _getConfig(config) {\n    config = super._getConfig(config)\n\n    if (typeof config.reference === 'object' && !isElement(config.reference) &&\n      typeof config.reference.getBoundingClientRect !== 'function'\n    ) {\n      // Popper virtual elements require a getBoundingClientRect method\n      throw new TypeError(`${NAME.toUpperCase()}: Option \"reference\" provided type \"object\" without a required \"getBoundingClientRect\" method.`)\n    }\n\n    return config\n  }\n\n  _createPopper() {\n    if (typeof Popper === 'undefined') {\n      throw new TypeError('Bootstrap\\'s dropdowns require Popper (https://popper.js.org)')\n    }\n\n    let referenceElement = this._element\n\n    if (this._config.reference === 'parent') {\n      referenceElement = this._parent\n    } else if (isElement(this._config.reference)) {\n      referenceElement = getElement(this._config.reference)\n    } else if (typeof this._config.reference === 'object') {\n      referenceElement = this._config.reference\n    }\n\n    const popperConfig = this._getPopperConfig()\n    this._popper = Popper.createPopper(referenceElement, this._menu, popperConfig)\n  }\n\n  _isShown() {\n    return this._menu.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  _getPlacement() {\n    const parentDropdown = this._parent\n\n    if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) {\n      return PLACEMENT_RIGHT\n    }\n\n    if (parentDropdown.classList.contains(CLASS_NAME_DROPSTART)) {\n      return PLACEMENT_LEFT\n    }\n\n    if (parentDropdown.classList.contains(CLASS_NAME_DROPUP_CENTER)) {\n      return PLACEMENT_TOPCENTER\n    }\n\n    if (parentDropdown.classList.contains(CLASS_NAME_DROPDOWN_CENTER)) {\n      return PLACEMENT_BOTTOMCENTER\n    }\n\n    // We need to trim the value because custom properties can also include spaces\n    const isEnd = getComputedStyle(this._menu).getPropertyValue('--bs-position').trim() === 'end'\n\n    if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) {\n      return isEnd ? PLACEMENT_TOPEND : PLACEMENT_TOP\n    }\n\n    return isEnd ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM\n  }\n\n  _detectNavbar() {\n    return this._element.closest(SELECTOR_NAVBAR) !== null\n  }\n\n  _getOffset() {\n    const { offset } = this._config\n\n    if (typeof offset === 'string') {\n      return offset.split(',').map(value => Number.parseInt(value, 10))\n    }\n\n    if (typeof offset === 'function') {\n      return popperData => offset(popperData, this._element)\n    }\n\n    return offset\n  }\n\n  _getPopperConfig() {\n    const defaultBsPopperConfig = {\n      placement: this._getPlacement(),\n      modifiers: [{\n        name: 'preventOverflow',\n        options: {\n          boundary: this._config.boundary\n        }\n      },\n      {\n        name: 'offset',\n        options: {\n          offset: this._getOffset()\n        }\n      }]\n    }\n\n    // Disable Popper if we have a static display or Dropdown is in Navbar\n    if (this._inNavbar || this._config.display === 'static') {\n      Manipulator.setDataAttribute(this._menu, 'popper', 'static') // TODO: v6 remove\n      defaultBsPopperConfig.modifiers = [{\n        name: 'applyStyles',\n        enabled: false\n      }]\n    }\n\n    return {\n      ...defaultBsPopperConfig,\n      ...execute(this._config.popperConfig, [defaultBsPopperConfig])\n    }\n  }\n\n  _selectMenuItem({ key, target }) {\n    const items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu).filter(element => isVisible(element))\n\n    if (!items.length) {\n      return\n    }\n\n    // if target isn't included in items (e.g. when expanding the dropdown)\n    // allow cycling to get the last item in case key equals ARROW_UP_KEY\n    getNextActiveElement(items, target, key === ARROW_DOWN_KEY, !items.includes(target)).focus()\n  }\n\n  // Static\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Dropdown.getOrCreateInstance(this, config)\n\n      if (typeof config !== 'string') {\n        return\n      }\n\n      if (typeof data[config] === 'undefined') {\n        throw new TypeError(`No method named \"${config}\"`)\n      }\n\n      data[config]()\n    })\n  }\n\n  static clearMenus(event) {\n    if (event.button === RIGHT_MOUSE_BUTTON || (event.type === 'keyup' && event.key !== TAB_KEY)) {\n      return\n    }\n\n    const openToggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE_SHOWN)\n\n    for (const toggle of openToggles) {\n      const context = Dropdown.getInstance(toggle)\n      if (!context || context._config.autoClose === false) {\n        continue\n      }\n\n      const composedPath = event.composedPath()\n      const isMenuTarget = composedPath.includes(context._menu)\n      if (\n        composedPath.includes(context._element) ||\n        (context._config.autoClose === 'inside' && !isMenuTarget) ||\n        (context._config.autoClose === 'outside' && isMenuTarget)\n      ) {\n        continue\n      }\n\n      // Tab navigation through the dropdown menu or events from contained inputs shouldn't close the menu\n      if (context._menu.contains(event.target) && ((event.type === 'keyup' && event.key === TAB_KEY) || /input|select|option|textarea|form/i.test(event.target.tagName))) {\n        continue\n      }\n\n      const relatedTarget = { relatedTarget: context._element }\n\n      if (event.type === 'click') {\n        relatedTarget.clickEvent = event\n      }\n\n      context._completeHide(relatedTarget)\n    }\n  }\n\n  static dataApiKeydownHandler(event) {\n    // If not an UP | DOWN | ESCAPE key => not a dropdown command\n    // If input/textarea && if key is other than ESCAPE => not a dropdown command\n\n    const isInput = /input|textarea/i.test(event.target.tagName)\n    const isEscapeEvent = event.key === ESCAPE_KEY\n    const isUpOrDownEvent = [ARROW_UP_KEY, ARROW_DOWN_KEY].includes(event.key)\n\n    if (!isUpOrDownEvent && !isEscapeEvent) {\n      return\n    }\n\n    if (isInput && !isEscapeEvent) {\n      return\n    }\n\n    event.preventDefault()\n\n    // TODO: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.3/forms/input-group/\n    const getToggleButton = this.matches(SELECTOR_DATA_TOGGLE) ?\n      this :\n      (SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE)[0] ||\n        SelectorEngine.next(this, SELECTOR_DATA_TOGGLE)[0] ||\n        SelectorEngine.findOne(SELECTOR_DATA_TOGGLE, event.delegateTarget.parentNode))\n\n    const instance = Dropdown.getOrCreateInstance(getToggleButton)\n\n    if (isUpOrDownEvent) {\n      event.stopPropagation()\n      instance.show()\n      instance._selectMenuItem(event)\n      return\n    }\n\n    if (instance._isShown()) { // else is escape and we check if it is shown\n      event.stopPropagation()\n      instance.hide()\n      getToggleButton.focus()\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE, Dropdown.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_CLICK_DATA_API, Dropdown.clearMenus)\nEventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus)\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  event.preventDefault()\n  Dropdown.getOrCreateInstance(this).toggle()\n})\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Dropdown)\n\nexport default Dropdown\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap util/backdrop.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler.js'\nimport Config from './config.js'\nimport {\n  execute, executeAfterTransition, getElement, reflow\n} from './index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'backdrop'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst EVENT_MOUSEDOWN = `mousedown.bs.${NAME}`\n\nconst Default = {\n  className: 'modal-backdrop',\n  clickCallback: null,\n  isAnimated: false,\n  isVisible: true, // if false, we use the backdrop helper without adding any element to the dom\n  rootElement: 'body' // give the choice to place backdrop under different elements\n}\n\nconst DefaultType = {\n  className: 'string',\n  clickCallback: '(function|null)',\n  isAnimated: 'boolean',\n  isVisible: 'boolean',\n  rootElement: '(element|string)'\n}\n\n/**\n * Class definition\n */\n\nclass Backdrop extends Config {\n  constructor(config) {\n    super()\n    this._config = this._getConfig(config)\n    this._isAppended = false\n    this._element = null\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  show(callback) {\n    if (!this._config.isVisible) {\n      execute(callback)\n      return\n    }\n\n    this._append()\n\n    const element = this._getElement()\n    if (this._config.isAnimated) {\n      reflow(element)\n    }\n\n    element.classList.add(CLASS_NAME_SHOW)\n\n    this._emulateAnimation(() => {\n      execute(callback)\n    })\n  }\n\n  hide(callback) {\n    if (!this._config.isVisible) {\n      execute(callback)\n      return\n    }\n\n    this._getElement().classList.remove(CLASS_NAME_SHOW)\n\n    this._emulateAnimation(() => {\n      this.dispose()\n      execute(callback)\n    })\n  }\n\n  dispose() {\n    if (!this._isAppended) {\n      return\n    }\n\n    EventHandler.off(this._element, EVENT_MOUSEDOWN)\n\n    this._element.remove()\n    this._isAppended = false\n  }\n\n  // Private\n  _getElement() {\n    if (!this._element) {\n      const backdrop = document.createElement('div')\n      backdrop.className = this._config.className\n      if (this._config.isAnimated) {\n        backdrop.classList.add(CLASS_NAME_FADE)\n      }\n\n      this._element = backdrop\n    }\n\n    return this._element\n  }\n\n  _configAfterMerge(config) {\n    // use getElement() with the default \"body\" to get a fresh Element on each instantiation\n    config.rootElement = getElement(config.rootElement)\n    return config\n  }\n\n  _append() {\n    if (this._isAppended) {\n      return\n    }\n\n    const element = this._getElement()\n    this._config.rootElement.append(element)\n\n    EventHandler.on(element, EVENT_MOUSEDOWN, () => {\n      execute(this._config.clickCallback)\n    })\n\n    this._isAppended = true\n  }\n\n  _emulateAnimation(callback) {\n    executeAfterTransition(callback, this._getElement(), this._config.isAnimated)\n  }\n}\n\nexport default Backdrop\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap util/focustrap.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler.js'\nimport SelectorEngine from '../dom/selector-engine.js'\nimport Config from './config.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'focustrap'\nconst DATA_KEY = 'bs.focustrap'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_KEYDOWN_TAB = `keydown.tab${EVENT_KEY}`\n\nconst TAB_KEY = 'Tab'\nconst TAB_NAV_FORWARD = 'forward'\nconst TAB_NAV_BACKWARD = 'backward'\n\nconst Default = {\n  autofocus: true,\n  trapElement: null // The element to trap focus inside of\n}\n\nconst DefaultType = {\n  autofocus: 'boolean',\n  trapElement: 'element'\n}\n\n/**\n * Class definition\n */\n\nclass FocusTrap extends Config {\n  constructor(config) {\n    super()\n    this._config = this._getConfig(config)\n    this._isActive = false\n    this._lastTabNavDirection = null\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  activate() {\n    if (this._isActive) {\n      return\n    }\n\n    if (this._config.autofocus) {\n      this._config.trapElement.focus()\n    }\n\n    EventHandler.off(document, EVENT_KEY) // guard against infinite focus loop\n    EventHandler.on(document, EVENT_FOCUSIN, event => this._handleFocusin(event))\n    EventHandler.on(document, EVENT_KEYDOWN_TAB, event => this._handleKeydown(event))\n\n    this._isActive = true\n  }\n\n  deactivate() {\n    if (!this._isActive) {\n      return\n    }\n\n    this._isActive = false\n    EventHandler.off(document, EVENT_KEY)\n  }\n\n  // Private\n  _handleFocusin(event) {\n    const { trapElement } = this._config\n\n    if (event.target === document || event.target === trapElement || trapElement.contains(event.target)) {\n      return\n    }\n\n    const elements = SelectorEngine.focusableChildren(trapElement)\n\n    if (elements.length === 0) {\n      trapElement.focus()\n    } else if (this._lastTabNavDirection === TAB_NAV_BACKWARD) {\n      elements[elements.length - 1].focus()\n    } else {\n      elements[0].focus()\n    }\n  }\n\n  _handleKeydown(event) {\n    if (event.key !== TAB_KEY) {\n      return\n    }\n\n    this._lastTabNavDirection = event.shiftKey ? TAB_NAV_BACKWARD : TAB_NAV_FORWARD\n  }\n}\n\nexport default FocusTrap\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap util/scrollBar.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Manipulator from '../dom/manipulator.js'\nimport SelectorEngine from '../dom/selector-engine.js'\nimport { isElement } from './index.js'\n\n/**\n * Constants\n */\n\nconst SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top'\nconst SELECTOR_STICKY_CONTENT = '.sticky-top'\nconst PROPERTY_PADDING = 'padding-right'\nconst PROPERTY_MARGIN = 'margin-right'\n\n/**\n * Class definition\n */\n\nclass ScrollBarHelper {\n  constructor() {\n    this._element = document.body\n  }\n\n  // Public\n  getWidth() {\n    // https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes\n    const documentWidth = document.documentElement.clientWidth\n    return Math.abs(window.innerWidth - documentWidth)\n  }\n\n  hide() {\n    const width = this.getWidth()\n    this._disableOverFlow()\n    // give padding to element to balance the hidden scrollbar width\n    this._setElementAttributes(this._element, PROPERTY_PADDING, calculatedValue => calculatedValue + width)\n    // trick: We adjust positive paddingRight and negative marginRight to sticky-top elements to keep showing fullwidth\n    this._setElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING, calculatedValue => calculatedValue + width)\n    this._setElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN, calculatedValue => calculatedValue - width)\n  }\n\n  reset() {\n    this._resetElementAttributes(this._element, 'overflow')\n    this._resetElementAttributes(this._element, PROPERTY_PADDING)\n    this._resetElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING)\n    this._resetElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN)\n  }\n\n  isOverflowing() {\n    return this.getWidth() > 0\n  }\n\n  // Private\n  _disableOverFlow() {\n    this._saveInitialAttribute(this._element, 'overflow')\n    this._element.style.overflow = 'hidden'\n  }\n\n  _setElementAttributes(selector, styleProperty, callback) {\n    const scrollbarWidth = this.getWidth()\n    const manipulationCallBack = element => {\n      if (element !== this._element && window.innerWidth > element.clientWidth + scrollbarWidth) {\n        return\n      }\n\n      this._saveInitialAttribute(element, styleProperty)\n      const calculatedValue = window.getComputedStyle(element).getPropertyValue(styleProperty)\n      element.style.setProperty(styleProperty, `${callback(Number.parseFloat(calculatedValue))}px`)\n    }\n\n    this._applyManipulationCallback(selector, manipulationCallBack)\n  }\n\n  _saveInitialAttribute(element, styleProperty) {\n    const actualValue = element.style.getPropertyValue(styleProperty)\n    if (actualValue) {\n      Manipulator.setDataAttribute(element, styleProperty, actualValue)\n    }\n  }\n\n  _resetElementAttributes(selector, styleProperty) {\n    const manipulationCallBack = element => {\n      const value = Manipulator.getDataAttribute(element, styleProperty)\n      // We only want to remove the property if the value is `null`; the value can also be zero\n      if (value === null) {\n        element.style.removeProperty(styleProperty)\n        return\n      }\n\n      Manipulator.removeDataAttribute(element, styleProperty)\n      element.style.setProperty(styleProperty, value)\n    }\n\n    this._applyManipulationCallback(selector, manipulationCallBack)\n  }\n\n  _applyManipulationCallback(selector, callBack) {\n    if (isElement(selector)) {\n      callBack(selector)\n      return\n    }\n\n    for (const sel of SelectorEngine.find(selector, this._element)) {\n      callBack(sel)\n    }\n  }\n}\n\nexport default ScrollBarHelper\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap modal.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport Backdrop from './util/backdrop.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\nimport FocusTrap from './util/focustrap.js'\nimport {\n  defineJQueryPlugin, isRTL, isVisible, reflow\n} from './util/index.js'\nimport ScrollBarHelper from './util/scrollbar.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'modal'\nconst DATA_KEY = 'bs.modal'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst ESCAPE_KEY = 'Escape'\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_RESIZE = `resize${EVENT_KEY}`\nconst EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY}`\nconst EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY}`\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_OPEN = 'modal-open'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_STATIC = 'modal-static'\n\nconst OPEN_SELECTOR = '.modal.show'\nconst SELECTOR_DIALOG = '.modal-dialog'\nconst SELECTOR_MODAL_BODY = '.modal-body'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"modal\"]'\n\nconst Default = {\n  backdrop: true,\n  focus: true,\n  keyboard: true\n}\n\nconst DefaultType = {\n  backdrop: '(boolean|string)',\n  focus: 'boolean',\n  keyboard: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Modal extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, this._element)\n    this._backdrop = this._initializeBackDrop()\n    this._focustrap = this._initializeFocusTrap()\n    this._isShown = false\n    this._isTransitioning = false\n    this._scrollBar = new ScrollBarHelper()\n\n    this._addEventListeners()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle(relatedTarget) {\n    return this._isShown ? this.hide() : this.show(relatedTarget)\n  }\n\n  show(relatedTarget) {\n    if (this._isShown || this._isTransitioning) {\n      return\n    }\n\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, {\n      relatedTarget\n    })\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._isShown = true\n    this._isTransitioning = true\n\n    this._scrollBar.hide()\n\n    document.body.classList.add(CLASS_NAME_OPEN)\n\n    this._adjustDialog()\n\n    this._backdrop.show(() => this._showElement(relatedTarget))\n  }\n\n  hide() {\n    if (!this._isShown || this._isTransitioning) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    this._isShown = false\n    this._isTransitioning = true\n    this._focustrap.deactivate()\n\n    this._element.classList.remove(CLASS_NAME_SHOW)\n\n    this._queueCallback(() => this._hideModal(), this._element, this._isAnimated())\n  }\n\n  dispose() {\n    EventHandler.off(window, EVENT_KEY)\n    EventHandler.off(this._dialog, EVENT_KEY)\n\n    this._backdrop.dispose()\n    this._focustrap.deactivate()\n\n    super.dispose()\n  }\n\n  handleUpdate() {\n    this._adjustDialog()\n  }\n\n  // Private\n  _initializeBackDrop() {\n    return new Backdrop({\n      isVisible: Boolean(this._config.backdrop), // 'static' option will be translated to true, and booleans will keep their value,\n      isAnimated: this._isAnimated()\n    })\n  }\n\n  _initializeFocusTrap() {\n    return new FocusTrap({\n      trapElement: this._element\n    })\n  }\n\n  _showElement(relatedTarget) {\n    // try to append dynamic modal\n    if (!document.body.contains(this._element)) {\n      document.body.append(this._element)\n    }\n\n    this._element.style.display = 'block'\n    this._element.removeAttribute('aria-hidden')\n    this._element.setAttribute('aria-modal', true)\n    this._element.setAttribute('role', 'dialog')\n    this._element.scrollTop = 0\n\n    const modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog)\n    if (modalBody) {\n      modalBody.scrollTop = 0\n    }\n\n    reflow(this._element)\n\n    this._element.classList.add(CLASS_NAME_SHOW)\n\n    const transitionComplete = () => {\n      if (this._config.focus) {\n        this._focustrap.activate()\n      }\n\n      this._isTransitioning = false\n      EventHandler.trigger(this._element, EVENT_SHOWN, {\n        relatedTarget\n      })\n    }\n\n    this._queueCallback(transitionComplete, this._dialog, this._isAnimated())\n  }\n\n  _addEventListeners() {\n    EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {\n      if (event.key !== ESCAPE_KEY) {\n        return\n      }\n\n      if (this._config.keyboard) {\n        this.hide()\n        return\n      }\n\n      this._triggerBackdropTransition()\n    })\n\n    EventHandler.on(window, EVENT_RESIZE, () => {\n      if (this._isShown && !this._isTransitioning) {\n        this._adjustDialog()\n      }\n    })\n\n    EventHandler.on(this._element, EVENT_MOUSEDOWN_DISMISS, event => {\n      // a bad trick to segregate clicks that may start inside dialog but end outside, and avoid listen to scrollbar clicks\n      EventHandler.one(this._element, EVENT_CLICK_DISMISS, event2 => {\n        if (this._element !== event.target || this._element !== event2.target) {\n          return\n        }\n\n        if (this._config.backdrop === 'static') {\n          this._triggerBackdropTransition()\n          return\n        }\n\n        if (this._config.backdrop) {\n          this.hide()\n        }\n      })\n    })\n  }\n\n  _hideModal() {\n    this._element.style.display = 'none'\n    this._element.setAttribute('aria-hidden', true)\n    this._element.removeAttribute('aria-modal')\n    this._element.removeAttribute('role')\n    this._isTransitioning = false\n\n    this._backdrop.hide(() => {\n      document.body.classList.remove(CLASS_NAME_OPEN)\n      this._resetAdjustments()\n      this._scrollBar.reset()\n      EventHandler.trigger(this._element, EVENT_HIDDEN)\n    })\n  }\n\n  _isAnimated() {\n    return this._element.classList.contains(CLASS_NAME_FADE)\n  }\n\n  _triggerBackdropTransition() {\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED)\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight\n    const initialOverflowY = this._element.style.overflowY\n    // return if the following background transition hasn't yet completed\n    if (initialOverflowY === 'hidden' || this._element.classList.contains(CLASS_NAME_STATIC)) {\n      return\n    }\n\n    if (!isModalOverflowing) {\n      this._element.style.overflowY = 'hidden'\n    }\n\n    this._element.classList.add(CLASS_NAME_STATIC)\n    this._queueCallback(() => {\n      this._element.classList.remove(CLASS_NAME_STATIC)\n      this._queueCallback(() => {\n        this._element.style.overflowY = initialOverflowY\n      }, this._dialog)\n    }, this._dialog)\n\n    this._element.focus()\n  }\n\n  /**\n   * The following methods are used to handle overflowing modals\n   */\n\n  _adjustDialog() {\n    const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight\n    const scrollbarWidth = this._scrollBar.getWidth()\n    const isBodyOverflowing = scrollbarWidth > 0\n\n    if (isBodyOverflowing && !isModalOverflowing) {\n      const property = isRTL() ? 'paddingLeft' : 'paddingRight'\n      this._element.style[property] = `${scrollbarWidth}px`\n    }\n\n    if (!isBodyOverflowing && isModalOverflowing) {\n      const property = isRTL() ? 'paddingRight' : 'paddingLeft'\n      this._element.style[property] = `${scrollbarWidth}px`\n    }\n  }\n\n  _resetAdjustments() {\n    this._element.style.paddingLeft = ''\n    this._element.style.paddingRight = ''\n  }\n\n  // Static\n  static jQueryInterface(config, relatedTarget) {\n    return this.each(function () {\n      const data = Modal.getOrCreateInstance(this, config)\n\n      if (typeof config !== 'string') {\n        return\n      }\n\n      if (typeof data[config] === 'undefined') {\n        throw new TypeError(`No method named \"${config}\"`)\n      }\n\n      data[config](relatedTarget)\n    })\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  const target = SelectorEngine.getElementFromSelector(this)\n\n  if (['A', 'AREA'].includes(this.tagName)) {\n    event.preventDefault()\n  }\n\n  EventHandler.one(target, EVENT_SHOW, showEvent => {\n    if (showEvent.defaultPrevented) {\n      // only register focus restorer if modal will actually get shown\n      return\n    }\n\n    EventHandler.one(target, EVENT_HIDDEN, () => {\n      if (isVisible(this)) {\n        this.focus()\n      }\n    })\n  })\n\n  // avoid conflict when clicking modal toggler while another one is open\n  const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR)\n  if (alreadyOpen) {\n    Modal.getInstance(alreadyOpen).hide()\n  }\n\n  const data = Modal.getOrCreateInstance(target)\n\n  data.toggle(this)\n})\n\nenableDismissTrigger(Modal)\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Modal)\n\nexport default Modal\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap offcanvas.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport Backdrop from './util/backdrop.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\nimport FocusTrap from './util/focustrap.js'\nimport {\n  defineJQueryPlugin,\n  isDisabled,\n  isVisible\n} from './util/index.js'\nimport ScrollBarHelper from './util/scrollbar.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'offcanvas'\nconst DATA_KEY = 'bs.offcanvas'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\nconst ESCAPE_KEY = 'Escape'\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_SHOWING = 'showing'\nconst CLASS_NAME_HIDING = 'hiding'\nconst CLASS_NAME_BACKDROP = 'offcanvas-backdrop'\nconst OPEN_SELECTOR = '.offcanvas.show'\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_RESIZE = `resize${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"offcanvas\"]'\n\nconst Default = {\n  backdrop: true,\n  keyboard: true,\n  scroll: false\n}\n\nconst DefaultType = {\n  backdrop: '(boolean|string)',\n  keyboard: 'boolean',\n  scroll: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Offcanvas extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._isShown = false\n    this._backdrop = this._initializeBackDrop()\n    this._focustrap = this._initializeFocusTrap()\n    this._addEventListeners()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle(relatedTarget) {\n    return this._isShown ? this.hide() : this.show(relatedTarget)\n  }\n\n  show(relatedTarget) {\n    if (this._isShown) {\n      return\n    }\n\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, { relatedTarget })\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._isShown = true\n    this._backdrop.show()\n\n    if (!this._config.scroll) {\n      new ScrollBarHelper().hide()\n    }\n\n    this._element.setAttribute('aria-modal', true)\n    this._element.setAttribute('role', 'dialog')\n    this._element.classList.add(CLASS_NAME_SHOWING)\n\n    const completeCallBack = () => {\n      if (!this._config.scroll || this._config.backdrop) {\n        this._focustrap.activate()\n      }\n\n      this._element.classList.add(CLASS_NAME_SHOW)\n      this._element.classList.remove(CLASS_NAME_SHOWING)\n      EventHandler.trigger(this._element, EVENT_SHOWN, { relatedTarget })\n    }\n\n    this._queueCallback(completeCallBack, this._element, true)\n  }\n\n  hide() {\n    if (!this._isShown) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    this._focustrap.deactivate()\n    this._element.blur()\n    this._isShown = false\n    this._element.classList.add(CLASS_NAME_HIDING)\n    this._backdrop.hide()\n\n    const completeCallback = () => {\n      this._element.classList.remove(CLASS_NAME_SHOW, CLASS_NAME_HIDING)\n      this._element.removeAttribute('aria-modal')\n      this._element.removeAttribute('role')\n\n      if (!this._config.scroll) {\n        new ScrollBarHelper().reset()\n      }\n\n      EventHandler.trigger(this._element, EVENT_HIDDEN)\n    }\n\n    this._queueCallback(completeCallback, this._element, true)\n  }\n\n  dispose() {\n    this._backdrop.dispose()\n    this._focustrap.deactivate()\n    super.dispose()\n  }\n\n  // Private\n  _initializeBackDrop() {\n    const clickCallback = () => {\n      if (this._config.backdrop === 'static') {\n        EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED)\n        return\n      }\n\n      this.hide()\n    }\n\n    // 'static' option will be translated to true, and booleans will keep their value\n    const isVisible = Boolean(this._config.backdrop)\n\n    return new Backdrop({\n      className: CLASS_NAME_BACKDROP,\n      isVisible,\n      isAnimated: true,\n      rootElement: this._element.parentNode,\n      clickCallback: isVisible ? clickCallback : null\n    })\n  }\n\n  _initializeFocusTrap() {\n    return new FocusTrap({\n      trapElement: this._element\n    })\n  }\n\n  _addEventListeners() {\n    EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {\n      if (event.key !== ESCAPE_KEY) {\n        return\n      }\n\n      if (this._config.keyboard) {\n        this.hide()\n        return\n      }\n\n      EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED)\n    })\n  }\n\n  // Static\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Offcanvas.getOrCreateInstance(this, config)\n\n      if (typeof config !== 'string') {\n        return\n      }\n\n      if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n        throw new TypeError(`No method named \"${config}\"`)\n      }\n\n      data[config](this)\n    })\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  const target = SelectorEngine.getElementFromSelector(this)\n\n  if (['A', 'AREA'].includes(this.tagName)) {\n    event.preventDefault()\n  }\n\n  if (isDisabled(this)) {\n    return\n  }\n\n  EventHandler.one(target, EVENT_HIDDEN, () => {\n    // focus on trigger when it is closed\n    if (isVisible(this)) {\n      this.focus()\n    }\n  })\n\n  // avoid conflict when clicking a toggler of an offcanvas, while another is open\n  const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR)\n  if (alreadyOpen && alreadyOpen !== target) {\n    Offcanvas.getInstance(alreadyOpen).hide()\n  }\n\n  const data = Offcanvas.getOrCreateInstance(target)\n  data.toggle(this)\n})\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  for (const selector of SelectorEngine.find(OPEN_SELECTOR)) {\n    Offcanvas.getOrCreateInstance(selector).show()\n  }\n})\n\nEventHandler.on(window, EVENT_RESIZE, () => {\n  for (const element of SelectorEngine.find('[aria-modal][class*=show][class*=offcanvas-]')) {\n    if (getComputedStyle(element).position !== 'fixed') {\n      Offcanvas.getOrCreateInstance(element).hide()\n    }\n  }\n})\n\nenableDismissTrigger(Offcanvas)\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Offcanvas)\n\nexport default Offcanvas\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap util/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n// js-docs-start allow-list\nconst ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i\n\nexport const DefaultAllowlist = {\n  // Global attributes allowed on any supplied element below.\n  '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n  a: ['target', 'href', 'title', 'rel'],\n  area: [],\n  b: [],\n  br: [],\n  col: [],\n  code: [],\n  dd: [],\n  div: [],\n  dl: [],\n  dt: [],\n  em: [],\n  hr: [],\n  h1: [],\n  h2: [],\n  h3: [],\n  h4: [],\n  h5: [],\n  h6: [],\n  i: [],\n  img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],\n  li: [],\n  ol: [],\n  p: [],\n  pre: [],\n  s: [],\n  small: [],\n  span: [],\n  sub: [],\n  sup: [],\n  strong: [],\n  u: [],\n  ul: []\n}\n// js-docs-end allow-list\n\nconst uriAttributes = new Set([\n  'background',\n  'cite',\n  'href',\n  'itemtype',\n  'longdesc',\n  'poster',\n  'src',\n  'xlink:href'\n])\n\n/**\n * A pattern that recognizes URLs that are safe wrt. XSS in URL navigation\n * contexts.\n *\n * Shout-out to Angular https://github.com/angular/angular/blob/15.2.8/packages/core/src/sanitization/url_sanitizer.ts#L38\n */\n// eslint-disable-next-line unicorn/better-regex\nconst SAFE_URL_PATTERN = /^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i\n\nconst allowedAttribute = (attribute, allowedAttributeList) => {\n  const attributeName = attribute.nodeName.toLowerCase()\n\n  if (allowedAttributeList.includes(attributeName)) {\n    if (uriAttributes.has(attributeName)) {\n      return Boolean(SAFE_URL_PATTERN.test(attribute.nodeValue))\n    }\n\n    return true\n  }\n\n  // Check if a regular expression validates the attribute.\n  return allowedAttributeList.filter(attributeRegex => attributeRegex instanceof RegExp)\n    .some(regex => regex.test(attributeName))\n}\n\nexport function sanitizeHtml(unsafeHtml, allowList, sanitizeFunction) {\n  if (!unsafeHtml.length) {\n    return unsafeHtml\n  }\n\n  if (sanitizeFunction && typeof sanitizeFunction === 'function') {\n    return sanitizeFunction(unsafeHtml)\n  }\n\n  const domParser = new window.DOMParser()\n  const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html')\n  const elements = [].concat(...createdDocument.body.querySelectorAll('*'))\n\n  for (const element of elements) {\n    const elementName = element.nodeName.toLowerCase()\n\n    if (!Object.keys(allowList).includes(elementName)) {\n      element.remove()\n      continue\n    }\n\n    const attributeList = [].concat(...element.attributes)\n    const allowedAttributes = [].concat(allowList['*'] || [], allowList[elementName] || [])\n\n    for (const attribute of attributeList) {\n      if (!allowedAttribute(attribute, allowedAttributes)) {\n        element.removeAttribute(attribute.nodeName)\n      }\n    }\n  }\n\n  return createdDocument.body.innerHTML\n}\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap util/template-factory.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport SelectorEngine from '../dom/selector-engine.js'\nimport Config from './config.js'\nimport { DefaultAllowlist, sanitizeHtml } from './sanitizer.js'\nimport { execute, getElement, isElement } from './index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'TemplateFactory'\n\nconst Default = {\n  allowList: DefaultAllowlist,\n  content: {}, // { selector : text ,  selector2 : text2 , }\n  extraClass: '',\n  html: false,\n  sanitize: true,\n  sanitizeFn: null,\n  template: '<div></div>'\n}\n\nconst DefaultType = {\n  allowList: 'object',\n  content: 'object',\n  extraClass: '(string|function)',\n  html: 'boolean',\n  sanitize: 'boolean',\n  sanitizeFn: '(null|function)',\n  template: 'string'\n}\n\nconst DefaultContentType = {\n  entry: '(string|element|function|null)',\n  selector: '(string|element)'\n}\n\n/**\n * Class definition\n */\n\nclass TemplateFactory extends Config {\n  constructor(config) {\n    super()\n    this._config = this._getConfig(config)\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  getContent() {\n    return Object.values(this._config.content)\n      .map(config => this._resolvePossibleFunction(config))\n      .filter(Boolean)\n  }\n\n  hasContent() {\n    return this.getContent().length > 0\n  }\n\n  changeContent(content) {\n    this._checkContent(content)\n    this._config.content = { ...this._config.content, ...content }\n    return this\n  }\n\n  toHtml() {\n    const templateWrapper = document.createElement('div')\n    templateWrapper.innerHTML = this._maybeSanitize(this._config.template)\n\n    for (const [selector, text] of Object.entries(this._config.content)) {\n      this._setContent(templateWrapper, text, selector)\n    }\n\n    const template = templateWrapper.children[0]\n    const extraClass = this._resolvePossibleFunction(this._config.extraClass)\n\n    if (extraClass) {\n      template.classList.add(...extraClass.split(' '))\n    }\n\n    return template\n  }\n\n  // Private\n  _typeCheckConfig(config) {\n    super._typeCheckConfig(config)\n    this._checkContent(config.content)\n  }\n\n  _checkContent(arg) {\n    for (const [selector, content] of Object.entries(arg)) {\n      super._typeCheckConfig({ selector, entry: content }, DefaultContentType)\n    }\n  }\n\n  _setContent(template, content, selector) {\n    const templateElement = SelectorEngine.findOne(selector, template)\n\n    if (!templateElement) {\n      return\n    }\n\n    content = this._resolvePossibleFunction(content)\n\n    if (!content) {\n      templateElement.remove()\n      return\n    }\n\n    if (isElement(content)) {\n      this._putElementInTemplate(getElement(content), templateElement)\n      return\n    }\n\n    if (this._config.html) {\n      templateElement.innerHTML = this._maybeSanitize(content)\n      return\n    }\n\n    templateElement.textContent = content\n  }\n\n  _maybeSanitize(arg) {\n    return this._config.sanitize ? sanitizeHtml(arg, this._config.allowList, this._config.sanitizeFn) : arg\n  }\n\n  _resolvePossibleFunction(arg) {\n    return execute(arg, [this])\n  }\n\n  _putElementInTemplate(element, templateElement) {\n    if (this._config.html) {\n      templateElement.innerHTML = ''\n      templateElement.append(element)\n      return\n    }\n\n    templateElement.textContent = element.textContent\n  }\n}\n\nexport default TemplateFactory\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport * as Popper from '@popperjs/core'\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport Manipulator from './dom/manipulator.js'\nimport {\n  defineJQueryPlugin, execute, findShadowRoot, getElement, getUID, isRTL, noop\n} from './util/index.js'\nimport { DefaultAllowlist } from './util/sanitizer.js'\nimport TemplateFactory from './util/template-factory.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'tooltip'\nconst DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn'])\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_MODAL = 'modal'\nconst CLASS_NAME_SHOW = 'show'\n\nconst SELECTOR_TOOLTIP_INNER = '.tooltip-inner'\nconst SELECTOR_MODAL = `.${CLASS_NAME_MODAL}`\n\nconst EVENT_MODAL_HIDE = 'hide.bs.modal'\n\nconst TRIGGER_HOVER = 'hover'\nconst TRIGGER_FOCUS = 'focus'\nconst TRIGGER_CLICK = 'click'\nconst TRIGGER_MANUAL = 'manual'\n\nconst EVENT_HIDE = 'hide'\nconst EVENT_HIDDEN = 'hidden'\nconst EVENT_SHOW = 'show'\nconst EVENT_SHOWN = 'shown'\nconst EVENT_INSERTED = 'inserted'\nconst EVENT_CLICK = 'click'\nconst EVENT_FOCUSIN = 'focusin'\nconst EVENT_FOCUSOUT = 'focusout'\nconst EVENT_MOUSEENTER = 'mouseenter'\nconst EVENT_MOUSELEAVE = 'mouseleave'\n\nconst AttachmentMap = {\n  AUTO: 'auto',\n  TOP: 'top',\n  RIGHT: isRTL() ? 'left' : 'right',\n  BOTTOM: 'bottom',\n  LEFT: isRTL() ? 'right' : 'left'\n}\n\nconst Default = {\n  allowList: DefaultAllowlist,\n  animation: true,\n  boundary: 'clippingParents',\n  container: false,\n  customClass: '',\n  delay: 0,\n  fallbackPlacements: ['top', 'right', 'bottom', 'left'],\n  html: false,\n  offset: [0, 6],\n  placement: 'top',\n  popperConfig: null,\n  sanitize: true,\n  sanitizeFn: null,\n  selector: false,\n  template: '<div class=\"tooltip\" role=\"tooltip\">' +\n            '<div class=\"tooltip-arrow\"></div>' +\n            '<div class=\"tooltip-inner\"></div>' +\n            '</div>',\n  title: '',\n  trigger: 'hover focus'\n}\n\nconst DefaultType = {\n  allowList: 'object',\n  animation: 'boolean',\n  boundary: '(string|element)',\n  container: '(string|element|boolean)',\n  customClass: '(string|function)',\n  delay: '(number|object)',\n  fallbackPlacements: 'array',\n  html: 'boolean',\n  offset: '(array|string|function)',\n  placement: '(string|function)',\n  popperConfig: '(null|object|function)',\n  sanitize: 'boolean',\n  sanitizeFn: '(null|function)',\n  selector: '(string|boolean)',\n  template: 'string',\n  title: '(string|element|function)',\n  trigger: 'string'\n}\n\n/**\n * Class definition\n */\n\nclass Tooltip extends BaseComponent {\n  constructor(element, config) {\n    if (typeof Popper === 'undefined') {\n      throw new TypeError('Bootstrap\\'s tooltips require Popper (https://popper.js.org)')\n    }\n\n    super(element, config)\n\n    // Private\n    this._isEnabled = true\n    this._timeout = 0\n    this._isHovered = null\n    this._activeTrigger = {}\n    this._popper = null\n    this._templateFactory = null\n    this._newContent = null\n\n    // Protected\n    this.tip = null\n\n    this._setListeners()\n\n    if (!this._config.selector) {\n      this._fixTitle()\n    }\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  enable() {\n    this._isEnabled = true\n  }\n\n  disable() {\n    this._isEnabled = false\n  }\n\n  toggleEnabled() {\n    this._isEnabled = !this._isEnabled\n  }\n\n  toggle() {\n    if (!this._isEnabled) {\n      return\n    }\n\n    this._activeTrigger.click = !this._activeTrigger.click\n    if (this._isShown()) {\n      this._leave()\n      return\n    }\n\n    this._enter()\n  }\n\n  dispose() {\n    clearTimeout(this._timeout)\n\n    EventHandler.off(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler)\n\n    if (this._element.getAttribute('data-bs-original-title')) {\n      this._element.setAttribute('title', this._element.getAttribute('data-bs-original-title'))\n    }\n\n    this._disposePopper()\n    super.dispose()\n  }\n\n  show() {\n    if (this._element.style.display === 'none') {\n      throw new Error('Please use show on visible elements')\n    }\n\n    if (!(this._isWithContent() && this._isEnabled)) {\n      return\n    }\n\n    const showEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOW))\n    const shadowRoot = findShadowRoot(this._element)\n    const isInTheDom = (shadowRoot || this._element.ownerDocument.documentElement).contains(this._element)\n\n    if (showEvent.defaultPrevented || !isInTheDom) {\n      return\n    }\n\n    // TODO: v6 remove this or make it optional\n    this._disposePopper()\n\n    const tip = this._getTipElement()\n\n    this._element.setAttribute('aria-describedby', tip.getAttribute('id'))\n\n    const { container } = this._config\n\n    if (!this._element.ownerDocument.documentElement.contains(this.tip)) {\n      container.append(tip)\n      EventHandler.trigger(this._element, this.constructor.eventName(EVENT_INSERTED))\n    }\n\n    this._popper = this._createPopper(tip)\n\n    tip.classList.add(CLASS_NAME_SHOW)\n\n    // If this is a touch-enabled device we add extra\n    // empty mouseover listeners to the body's immediate children;\n    // only needed because of broken event delegation on iOS\n    // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n    if ('ontouchstart' in document.documentElement) {\n      for (const element of [].concat(...document.body.children)) {\n        EventHandler.on(element, 'mouseover', noop)\n      }\n    }\n\n    const complete = () => {\n      EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOWN))\n\n      if (this._isHovered === false) {\n        this._leave()\n      }\n\n      this._isHovered = false\n    }\n\n    this._queueCallback(complete, this.tip, this._isAnimated())\n  }\n\n  hide() {\n    if (!this._isShown()) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDE))\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    const tip = this._getTipElement()\n    tip.classList.remove(CLASS_NAME_SHOW)\n\n    // If this is a touch-enabled device we remove the extra\n    // empty mouseover listeners we added for iOS support\n    if ('ontouchstart' in document.documentElement) {\n      for (const element of [].concat(...document.body.children)) {\n        EventHandler.off(element, 'mouseover', noop)\n      }\n    }\n\n    this._activeTrigger[TRIGGER_CLICK] = false\n    this._activeTrigger[TRIGGER_FOCUS] = false\n    this._activeTrigger[TRIGGER_HOVER] = false\n    this._isHovered = null // it is a trick to support manual triggering\n\n    const complete = () => {\n      if (this._isWithActiveTrigger()) {\n        return\n      }\n\n      if (!this._isHovered) {\n        this._disposePopper()\n      }\n\n      this._element.removeAttribute('aria-describedby')\n      EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDDEN))\n    }\n\n    this._queueCallback(complete, this.tip, this._isAnimated())\n  }\n\n  update() {\n    if (this._popper) {\n      this._popper.update()\n    }\n  }\n\n  // Protected\n  _isWithContent() {\n    return Boolean(this._getTitle())\n  }\n\n  _getTipElement() {\n    if (!this.tip) {\n      this.tip = this._createTipElement(this._newContent || this._getContentForTemplate())\n    }\n\n    return this.tip\n  }\n\n  _createTipElement(content) {\n    const tip = this._getTemplateFactory(content).toHtml()\n\n    // TODO: remove this check in v6\n    if (!tip) {\n      return null\n    }\n\n    tip.classList.remove(CLASS_NAME_FADE, CLASS_NAME_SHOW)\n    // TODO: v6 the following can be achieved with CSS only\n    tip.classList.add(`bs-${this.constructor.NAME}-auto`)\n\n    const tipId = getUID(this.constructor.NAME).toString()\n\n    tip.setAttribute('id', tipId)\n\n    if (this._isAnimated()) {\n      tip.classList.add(CLASS_NAME_FADE)\n    }\n\n    return tip\n  }\n\n  setContent(content) {\n    this._newContent = content\n    if (this._isShown()) {\n      this._disposePopper()\n      this.show()\n    }\n  }\n\n  _getTemplateFactory(content) {\n    if (this._templateFactory) {\n      this._templateFactory.changeContent(content)\n    } else {\n      this._templateFactory = new TemplateFactory({\n        ...this._config,\n        // the `content` var has to be after `this._config`\n        // to override config.content in case of popover\n        content,\n        extraClass: this._resolvePossibleFunction(this._config.customClass)\n      })\n    }\n\n    return this._templateFactory\n  }\n\n  _getContentForTemplate() {\n    return {\n      [SELECTOR_TOOLTIP_INNER]: this._getTitle()\n    }\n  }\n\n  _getTitle() {\n    return this._resolvePossibleFunction(this._config.title) || this._element.getAttribute('data-bs-original-title')\n  }\n\n  // Private\n  _initializeOnDelegatedTarget(event) {\n    return this.constructor.getOrCreateInstance(event.delegateTarget, this._getDelegateConfig())\n  }\n\n  _isAnimated() {\n    return this._config.animation || (this.tip && this.tip.classList.contains(CLASS_NAME_FADE))\n  }\n\n  _isShown() {\n    return this.tip && this.tip.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  _createPopper(tip) {\n    const placement = execute(this._config.placement, [this, tip, this._element])\n    const attachment = AttachmentMap[placement.toUpperCase()]\n    return Popper.createPopper(this._element, tip, this._getPopperConfig(attachment))\n  }\n\n  _getOffset() {\n    const { offset } = this._config\n\n    if (typeof offset === 'string') {\n      return offset.split(',').map(value => Number.parseInt(value, 10))\n    }\n\n    if (typeof offset === 'function') {\n      return popperData => offset(popperData, this._element)\n    }\n\n    return offset\n  }\n\n  _resolvePossibleFunction(arg) {\n    return execute(arg, [this._element])\n  }\n\n  _getPopperConfig(attachment) {\n    const defaultBsPopperConfig = {\n      placement: attachment,\n      modifiers: [\n        {\n          name: 'flip',\n          options: {\n            fallbackPlacements: this._config.fallbackPlacements\n          }\n        },\n        {\n          name: 'offset',\n          options: {\n            offset: this._getOffset()\n          }\n        },\n        {\n          name: 'preventOverflow',\n          options: {\n            boundary: this._config.boundary\n          }\n        },\n        {\n          name: 'arrow',\n          options: {\n            element: `.${this.constructor.NAME}-arrow`\n          }\n        },\n        {\n          name: 'preSetPlacement',\n          enabled: true,\n          phase: 'beforeMain',\n          fn: data => {\n            // Pre-set Popper's placement attribute in order to read the arrow sizes properly.\n            // Otherwise, Popper mixes up the width and height dimensions since the initial arrow style is for top placement\n            this._getTipElement().setAttribute('data-popper-placement', data.state.placement)\n          }\n        }\n      ]\n    }\n\n    return {\n      ...defaultBsPopperConfig,\n      ...execute(this._config.popperConfig, [defaultBsPopperConfig])\n    }\n  }\n\n  _setListeners() {\n    const triggers = this._config.trigger.split(' ')\n\n    for (const trigger of triggers) {\n      if (trigger === 'click') {\n        EventHandler.on(this._element, this.constructor.eventName(EVENT_CLICK), this._config.selector, event => {\n          const context = this._initializeOnDelegatedTarget(event)\n          context.toggle()\n        })\n      } else if (trigger !== TRIGGER_MANUAL) {\n        const eventIn = trigger === TRIGGER_HOVER ?\n          this.constructor.eventName(EVENT_MOUSEENTER) :\n          this.constructor.eventName(EVENT_FOCUSIN)\n        const eventOut = trigger === TRIGGER_HOVER ?\n          this.constructor.eventName(EVENT_MOUSELEAVE) :\n          this.constructor.eventName(EVENT_FOCUSOUT)\n\n        EventHandler.on(this._element, eventIn, this._config.selector, event => {\n          const context = this._initializeOnDelegatedTarget(event)\n          context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true\n          context._enter()\n        })\n        EventHandler.on(this._element, eventOut, this._config.selector, event => {\n          const context = this._initializeOnDelegatedTarget(event)\n          context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] =\n            context._element.contains(event.relatedTarget)\n\n          context._leave()\n        })\n      }\n    }\n\n    this._hideModalHandler = () => {\n      if (this._element) {\n        this.hide()\n      }\n    }\n\n    EventHandler.on(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler)\n  }\n\n  _fixTitle() {\n    const title = this._element.getAttribute('title')\n\n    if (!title) {\n      return\n    }\n\n    if (!this._element.getAttribute('aria-label') && !this._element.textContent.trim()) {\n      this._element.setAttribute('aria-label', title)\n    }\n\n    this._element.setAttribute('data-bs-original-title', title) // DO NOT USE IT. Is only for backwards compatibility\n    this._element.removeAttribute('title')\n  }\n\n  _enter() {\n    if (this._isShown() || this._isHovered) {\n      this._isHovered = true\n      return\n    }\n\n    this._isHovered = true\n\n    this._setTimeout(() => {\n      if (this._isHovered) {\n        this.show()\n      }\n    }, this._config.delay.show)\n  }\n\n  _leave() {\n    if (this._isWithActiveTrigger()) {\n      return\n    }\n\n    this._isHovered = false\n\n    this._setTimeout(() => {\n      if (!this._isHovered) {\n        this.hide()\n      }\n    }, this._config.delay.hide)\n  }\n\n  _setTimeout(handler, timeout) {\n    clearTimeout(this._timeout)\n    this._timeout = setTimeout(handler, timeout)\n  }\n\n  _isWithActiveTrigger() {\n    return Object.values(this._activeTrigger).includes(true)\n  }\n\n  _getConfig(config) {\n    const dataAttributes = Manipulator.getDataAttributes(this._element)\n\n    for (const dataAttribute of Object.keys(dataAttributes)) {\n      if (DISALLOWED_ATTRIBUTES.has(dataAttribute)) {\n        delete dataAttributes[dataAttribute]\n      }\n    }\n\n    config = {\n      ...dataAttributes,\n      ...(typeof config === 'object' && config ? config : {})\n    }\n    config = this._mergeConfigObj(config)\n    config = this._configAfterMerge(config)\n    this._typeCheckConfig(config)\n    return config\n  }\n\n  _configAfterMerge(config) {\n    config.container = config.container === false ? document.body : getElement(config.container)\n\n    if (typeof config.delay === 'number') {\n      config.delay = {\n        show: config.delay,\n        hide: config.delay\n      }\n    }\n\n    if (typeof config.title === 'number') {\n      config.title = config.title.toString()\n    }\n\n    if (typeof config.content === 'number') {\n      config.content = config.content.toString()\n    }\n\n    return config\n  }\n\n  _getDelegateConfig() {\n    const config = {}\n\n    for (const [key, value] of Object.entries(this._config)) {\n      if (this.constructor.Default[key] !== value) {\n        config[key] = value\n      }\n    }\n\n    config.selector = false\n    config.trigger = 'manual'\n\n    // In the future can be replaced with:\n    // const keysWithDifferentValues = Object.entries(this._config).filter(entry => this.constructor.Default[entry[0]] !== this._config[entry[0]])\n    // `Object.fromEntries(keysWithDifferentValues)`\n    return config\n  }\n\n  _disposePopper() {\n    if (this._popper) {\n      this._popper.destroy()\n      this._popper = null\n    }\n\n    if (this.tip) {\n      this.tip.remove()\n      this.tip = null\n    }\n  }\n\n  // Static\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Tooltip.getOrCreateInstance(this, config)\n\n      if (typeof config !== 'string') {\n        return\n      }\n\n      if (typeof data[config] === 'undefined') {\n        throw new TypeError(`No method named \"${config}\"`)\n      }\n\n      data[config]()\n    })\n  }\n}\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Tooltip)\n\nexport default Tooltip\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Tooltip from './tooltip.js'\nimport { defineJQueryPlugin } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'popover'\n\nconst SELECTOR_TITLE = '.popover-header'\nconst SELECTOR_CONTENT = '.popover-body'\n\nconst Default = {\n  ...Tooltip.Default,\n  content: '',\n  offset: [0, 8],\n  placement: 'right',\n  template: '<div class=\"popover\" role=\"tooltip\">' +\n    '<div class=\"popover-arrow\"></div>' +\n    '<h3 class=\"popover-header\"></h3>' +\n    '<div class=\"popover-body\"></div>' +\n    '</div>',\n  trigger: 'click'\n}\n\nconst DefaultType = {\n  ...Tooltip.DefaultType,\n  content: '(null|string|element|function)'\n}\n\n/**\n * Class definition\n */\n\nclass Popover extends Tooltip {\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Overrides\n  _isWithContent() {\n    return this._getTitle() || this._getContent()\n  }\n\n  // Private\n  _getContentForTemplate() {\n    return {\n      [SELECTOR_TITLE]: this._getTitle(),\n      [SELECTOR_CONTENT]: this._getContent()\n    }\n  }\n\n  _getContent() {\n    return this._resolvePossibleFunction(this._config.content)\n  }\n\n  // Static\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Popover.getOrCreateInstance(this, config)\n\n      if (typeof config !== 'string') {\n        return\n      }\n\n      if (typeof data[config] === 'undefined') {\n        throw new TypeError(`No method named \"${config}\"`)\n      }\n\n      data[config]()\n    })\n  }\n}\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Popover)\n\nexport default Popover\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport {\n  defineJQueryPlugin, getElement, isDisabled, isVisible\n} from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'scrollspy'\nconst DATA_KEY = 'bs.scrollspy'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_ACTIVATE = `activate${EVENT_KEY}`\nconst EVENT_CLICK = `click${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item'\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst SELECTOR_DATA_SPY = '[data-bs-spy=\"scroll\"]'\nconst SELECTOR_TARGET_LINKS = '[href]'\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'\nconst SELECTOR_NAV_LINKS = '.nav-link'\nconst SELECTOR_NAV_ITEMS = '.nav-item'\nconst SELECTOR_LIST_ITEMS = '.list-group-item'\nconst SELECTOR_LINK_ITEMS = `${SELECTOR_NAV_LINKS}, ${SELECTOR_NAV_ITEMS} > ${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`\nconst SELECTOR_DROPDOWN = '.dropdown'\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'\n\nconst Default = {\n  offset: null, // TODO: v6 @deprecated, keep it for backwards compatibility reasons\n  rootMargin: '0px 0px -25%',\n  smoothScroll: false,\n  target: null,\n  threshold: [0.1, 0.5, 1]\n}\n\nconst DefaultType = {\n  offset: '(number|null)', // TODO v6 @deprecated, keep it for backwards compatibility reasons\n  rootMargin: 'string',\n  smoothScroll: 'boolean',\n  target: 'element',\n  threshold: 'array'\n}\n\n/**\n * Class definition\n */\n\nclass ScrollSpy extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    // this._element is the observablesContainer and config.target the menu links wrapper\n    this._targetLinks = new Map()\n    this._observableSections = new Map()\n    this._rootElement = getComputedStyle(this._element).overflowY === 'visible' ? null : this._element\n    this._activeTarget = null\n    this._observer = null\n    this._previousScrollData = {\n      visibleEntryTop: 0,\n      parentScrollTop: 0\n    }\n    this.refresh() // initialize\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  refresh() {\n    this._initializeTargetsAndObservables()\n    this._maybeEnableSmoothScroll()\n\n    if (this._observer) {\n      this._observer.disconnect()\n    } else {\n      this._observer = this._getNewObserver()\n    }\n\n    for (const section of this._observableSections.values()) {\n      this._observer.observe(section)\n    }\n  }\n\n  dispose() {\n    this._observer.disconnect()\n    super.dispose()\n  }\n\n  // Private\n  _configAfterMerge(config) {\n    // TODO: on v6 target should be given explicitly & remove the {target: 'ss-target'} case\n    config.target = getElement(config.target) || document.body\n\n    // TODO: v6 Only for backwards compatibility reasons. Use rootMargin only\n    config.rootMargin = config.offset ? `${config.offset}px 0px -30%` : config.rootMargin\n\n    if (typeof config.threshold === 'string') {\n      config.threshold = config.threshold.split(',').map(value => Number.parseFloat(value))\n    }\n\n    return config\n  }\n\n  _maybeEnableSmoothScroll() {\n    if (!this._config.smoothScroll) {\n      return\n    }\n\n    // unregister any previous listeners\n    EventHandler.off(this._config.target, EVENT_CLICK)\n\n    EventHandler.on(this._config.target, EVENT_CLICK, SELECTOR_TARGET_LINKS, event => {\n      const observableSection = this._observableSections.get(event.target.hash)\n      if (observableSection) {\n        event.preventDefault()\n        const root = this._rootElement || window\n        const height = observableSection.offsetTop - this._element.offsetTop\n        if (root.scrollTo) {\n          root.scrollTo({ top: height, behavior: 'smooth' })\n          return\n        }\n\n        // Chrome 60 doesn't support `scrollTo`\n        root.scrollTop = height\n      }\n    })\n  }\n\n  _getNewObserver() {\n    const options = {\n      root: this._rootElement,\n      threshold: this._config.threshold,\n      rootMargin: this._config.rootMargin\n    }\n\n    return new IntersectionObserver(entries => this._observerCallback(entries), options)\n  }\n\n  // The logic of selection\n  _observerCallback(entries) {\n    const targetElement = entry => this._targetLinks.get(`#${entry.target.id}`)\n    const activate = entry => {\n      this._previousScrollData.visibleEntryTop = entry.target.offsetTop\n      this._process(targetElement(entry))\n    }\n\n    const parentScrollTop = (this._rootElement || document.documentElement).scrollTop\n    const userScrollsDown = parentScrollTop >= this._previousScrollData.parentScrollTop\n    this._previousScrollData.parentScrollTop = parentScrollTop\n\n    for (const entry of entries) {\n      if (!entry.isIntersecting) {\n        this._activeTarget = null\n        this._clearActiveClass(targetElement(entry))\n\n        continue\n      }\n\n      const entryIsLowerThanPrevious = entry.target.offsetTop >= this._previousScrollData.visibleEntryTop\n      // if we are scrolling down, pick the bigger offsetTop\n      if (userScrollsDown && entryIsLowerThanPrevious) {\n        activate(entry)\n        // if parent isn't scrolled, let's keep the first visible item, breaking the iteration\n        if (!parentScrollTop) {\n          return\n        }\n\n        continue\n      }\n\n      // if we are scrolling up, pick the smallest offsetTop\n      if (!userScrollsDown && !entryIsLowerThanPrevious) {\n        activate(entry)\n      }\n    }\n  }\n\n  _initializeTargetsAndObservables() {\n    this._targetLinks = new Map()\n    this._observableSections = new Map()\n\n    const targetLinks = SelectorEngine.find(SELECTOR_TARGET_LINKS, this._config.target)\n\n    for (const anchor of targetLinks) {\n      // ensure that the anchor has an id and is not disabled\n      if (!anchor.hash || isDisabled(anchor)) {\n        continue\n      }\n\n      const observableSection = SelectorEngine.findOne(decodeURI(anchor.hash), this._element)\n\n      // ensure that the observableSection exists & is visible\n      if (isVisible(observableSection)) {\n        this._targetLinks.set(decodeURI(anchor.hash), anchor)\n        this._observableSections.set(anchor.hash, observableSection)\n      }\n    }\n  }\n\n  _process(target) {\n    if (this._activeTarget === target) {\n      return\n    }\n\n    this._clearActiveClass(this._config.target)\n    this._activeTarget = target\n    target.classList.add(CLASS_NAME_ACTIVE)\n    this._activateParents(target)\n\n    EventHandler.trigger(this._element, EVENT_ACTIVATE, { relatedTarget: target })\n  }\n\n  _activateParents(target) {\n    // Activate dropdown parents\n    if (target.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) {\n      SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE, target.closest(SELECTOR_DROPDOWN))\n        .classList.add(CLASS_NAME_ACTIVE)\n      return\n    }\n\n    for (const listGroup of SelectorEngine.parents(target, SELECTOR_NAV_LIST_GROUP)) {\n      // Set triggered links parents as active\n      // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor\n      for (const item of SelectorEngine.prev(listGroup, SELECTOR_LINK_ITEMS)) {\n        item.classList.add(CLASS_NAME_ACTIVE)\n      }\n    }\n  }\n\n  _clearActiveClass(parent) {\n    parent.classList.remove(CLASS_NAME_ACTIVE)\n\n    const activeNodes = SelectorEngine.find(`${SELECTOR_TARGET_LINKS}.${CLASS_NAME_ACTIVE}`, parent)\n    for (const node of activeNodes) {\n      node.classList.remove(CLASS_NAME_ACTIVE)\n    }\n  }\n\n  // Static\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = ScrollSpy.getOrCreateInstance(this, config)\n\n      if (typeof config !== 'string') {\n        return\n      }\n\n      if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n        throw new TypeError(`No method named \"${config}\"`)\n      }\n\n      data[config]()\n    })\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  for (const spy of SelectorEngine.find(SELECTOR_DATA_SPY)) {\n    ScrollSpy.getOrCreateInstance(spy)\n  }\n})\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(ScrollSpy)\n\nexport default ScrollSpy\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap tab.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport { defineJQueryPlugin, getNextActiveElement, isDisabled } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'tab'\nconst DATA_KEY = 'bs.tab'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}`\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}`\n\nconst ARROW_LEFT_KEY = 'ArrowLeft'\nconst ARROW_RIGHT_KEY = 'ArrowRight'\nconst ARROW_UP_KEY = 'ArrowUp'\nconst ARROW_DOWN_KEY = 'ArrowDown'\nconst HOME_KEY = 'Home'\nconst END_KEY = 'End'\n\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_DROPDOWN = 'dropdown'\n\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'\nconst SELECTOR_DROPDOWN_MENU = '.dropdown-menu'\nconst NOT_SELECTOR_DROPDOWN_TOGGLE = `:not(${SELECTOR_DROPDOWN_TOGGLE})`\n\nconst SELECTOR_TAB_PANEL = '.list-group, .nav, [role=\"tablist\"]'\nconst SELECTOR_OUTER = '.nav-item, .list-group-item'\nconst SELECTOR_INNER = `.nav-link${NOT_SELECTOR_DROPDOWN_TOGGLE}, .list-group-item${NOT_SELECTOR_DROPDOWN_TOGGLE}, [role=\"tab\"]${NOT_SELECTOR_DROPDOWN_TOGGLE}`\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"tab\"], [data-bs-toggle=\"pill\"], [data-bs-toggle=\"list\"]' // TODO: could only be `tab` in v6\nconst SELECTOR_INNER_ELEM = `${SELECTOR_INNER}, ${SELECTOR_DATA_TOGGLE}`\n\nconst SELECTOR_DATA_TOGGLE_ACTIVE = `.${CLASS_NAME_ACTIVE}[data-bs-toggle=\"tab\"], .${CLASS_NAME_ACTIVE}[data-bs-toggle=\"pill\"], .${CLASS_NAME_ACTIVE}[data-bs-toggle=\"list\"]`\n\n/**\n * Class definition\n */\n\nclass Tab extends BaseComponent {\n  constructor(element) {\n    super(element)\n    this._parent = this._element.closest(SELECTOR_TAB_PANEL)\n\n    if (!this._parent) {\n      return\n      // TODO: should throw exception in v6\n      // throw new TypeError(`${element.outerHTML} has not a valid parent ${SELECTOR_INNER_ELEM}`)\n    }\n\n    // Set up initial aria attributes\n    this._setInitialAttributes(this._parent, this._getChildren())\n\n    EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event))\n  }\n\n  // Getters\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  show() { // Shows this elem and deactivate the active sibling if exists\n    const innerElem = this._element\n    if (this._elemIsActive(innerElem)) {\n      return\n    }\n\n    // Search for active tab on same parent to deactivate it\n    const active = this._getActiveElem()\n\n    const hideEvent = active ?\n      EventHandler.trigger(active, EVENT_HIDE, { relatedTarget: innerElem }) :\n      null\n\n    const showEvent = EventHandler.trigger(innerElem, EVENT_SHOW, { relatedTarget: active })\n\n    if (showEvent.defaultPrevented || (hideEvent && hideEvent.defaultPrevented)) {\n      return\n    }\n\n    this._deactivate(active, innerElem)\n    this._activate(innerElem, active)\n  }\n\n  // Private\n  _activate(element, relatedElem) {\n    if (!element) {\n      return\n    }\n\n    element.classList.add(CLASS_NAME_ACTIVE)\n\n    this._activate(SelectorEngine.getElementFromSelector(element)) // Search and activate/show the proper section\n\n    const complete = () => {\n      if (element.getAttribute('role') !== 'tab') {\n        element.classList.add(CLASS_NAME_SHOW)\n        return\n      }\n\n      element.removeAttribute('tabindex')\n      element.setAttribute('aria-selected', true)\n      this._toggleDropDown(element, true)\n      EventHandler.trigger(element, EVENT_SHOWN, {\n        relatedTarget: relatedElem\n      })\n    }\n\n    this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE))\n  }\n\n  _deactivate(element, relatedElem) {\n    if (!element) {\n      return\n    }\n\n    element.classList.remove(CLASS_NAME_ACTIVE)\n    element.blur()\n\n    this._deactivate(SelectorEngine.getElementFromSelector(element)) // Search and deactivate the shown section too\n\n    const complete = () => {\n      if (element.getAttribute('role') !== 'tab') {\n        element.classList.remove(CLASS_NAME_SHOW)\n        return\n      }\n\n      element.setAttribute('aria-selected', false)\n      element.setAttribute('tabindex', '-1')\n      this._toggleDropDown(element, false)\n      EventHandler.trigger(element, EVENT_HIDDEN, { relatedTarget: relatedElem })\n    }\n\n    this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE))\n  }\n\n  _keydown(event) {\n    if (!([ARROW_LEFT_KEY, ARROW_RIGHT_KEY, ARROW_UP_KEY, ARROW_DOWN_KEY, HOME_KEY, END_KEY].includes(event.key))) {\n      return\n    }\n\n    event.stopPropagation()// stopPropagation/preventDefault both added to support up/down keys without scrolling the page\n    event.preventDefault()\n\n    const children = this._getChildren().filter(element => !isDisabled(element))\n    let nextActiveElement\n\n    if ([HOME_KEY, END_KEY].includes(event.key)) {\n      nextActiveElement = children[event.key === HOME_KEY ? 0 : children.length - 1]\n    } else {\n      const isNext = [ARROW_RIGHT_KEY, ARROW_DOWN_KEY].includes(event.key)\n      nextActiveElement = getNextActiveElement(children, event.target, isNext, true)\n    }\n\n    if (nextActiveElement) {\n      nextActiveElement.focus({ preventScroll: true })\n      Tab.getOrCreateInstance(nextActiveElement).show()\n    }\n  }\n\n  _getChildren() { // collection of inner elements\n    return SelectorEngine.find(SELECTOR_INNER_ELEM, this._parent)\n  }\n\n  _getActiveElem() {\n    return this._getChildren().find(child => this._elemIsActive(child)) || null\n  }\n\n  _setInitialAttributes(parent, children) {\n    this._setAttributeIfNotExists(parent, 'role', 'tablist')\n\n    for (const child of children) {\n      this._setInitialAttributesOnChild(child)\n    }\n  }\n\n  _setInitialAttributesOnChild(child) {\n    child = this._getInnerElement(child)\n    const isActive = this._elemIsActive(child)\n    const outerElem = this._getOuterElement(child)\n    child.setAttribute('aria-selected', isActive)\n\n    if (outerElem !== child) {\n      this._setAttributeIfNotExists(outerElem, 'role', 'presentation')\n    }\n\n    if (!isActive) {\n      child.setAttribute('tabindex', '-1')\n    }\n\n    this._setAttributeIfNotExists(child, 'role', 'tab')\n\n    // set attributes to the related panel too\n    this._setInitialAttributesOnTargetPanel(child)\n  }\n\n  _setInitialAttributesOnTargetPanel(child) {\n    const target = SelectorEngine.getElementFromSelector(child)\n\n    if (!target) {\n      return\n    }\n\n    this._setAttributeIfNotExists(target, 'role', 'tabpanel')\n\n    if (child.id) {\n      this._setAttributeIfNotExists(target, 'aria-labelledby', `${child.id}`)\n    }\n  }\n\n  _toggleDropDown(element, open) {\n    const outerElem = this._getOuterElement(element)\n    if (!outerElem.classList.contains(CLASS_DROPDOWN)) {\n      return\n    }\n\n    const toggle = (selector, className) => {\n      const element = SelectorEngine.findOne(selector, outerElem)\n      if (element) {\n        element.classList.toggle(className, open)\n      }\n    }\n\n    toggle(SELECTOR_DROPDOWN_TOGGLE, CLASS_NAME_ACTIVE)\n    toggle(SELECTOR_DROPDOWN_MENU, CLASS_NAME_SHOW)\n    outerElem.setAttribute('aria-expanded', open)\n  }\n\n  _setAttributeIfNotExists(element, attribute, value) {\n    if (!element.hasAttribute(attribute)) {\n      element.setAttribute(attribute, value)\n    }\n  }\n\n  _elemIsActive(elem) {\n    return elem.classList.contains(CLASS_NAME_ACTIVE)\n  }\n\n  // Try to get the inner element (usually the .nav-link)\n  _getInnerElement(elem) {\n    return elem.matches(SELECTOR_INNER_ELEM) ? elem : SelectorEngine.findOne(SELECTOR_INNER_ELEM, elem)\n  }\n\n  // Try to get the outer element (usually the .nav-item)\n  _getOuterElement(elem) {\n    return elem.closest(SELECTOR_OUTER) || elem\n  }\n\n  // Static\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Tab.getOrCreateInstance(this)\n\n      if (typeof config !== 'string') {\n        return\n      }\n\n      if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n        throw new TypeError(`No method named \"${config}\"`)\n      }\n\n      data[config]()\n    })\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  if (['A', 'AREA'].includes(this.tagName)) {\n    event.preventDefault()\n  }\n\n  if (isDisabled(this)) {\n    return\n  }\n\n  Tab.getOrCreateInstance(this).show()\n})\n\n/**\n * Initialize on focus\n */\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  for (const element of SelectorEngine.find(SELECTOR_DATA_TOGGLE_ACTIVE)) {\n    Tab.getOrCreateInstance(element)\n  }\n})\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Tab)\n\nexport default Tab\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap toast.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\nimport { defineJQueryPlugin, reflow } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'toast'\nconst DATA_KEY = 'bs.toast'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_MOUSEOVER = `mouseover${EVENT_KEY}`\nconst EVENT_MOUSEOUT = `mouseout${EVENT_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_FOCUSOUT = `focusout${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_HIDE = 'hide' // @deprecated - kept here only for backwards compatibility\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_SHOWING = 'showing'\n\nconst DefaultType = {\n  animation: 'boolean',\n  autohide: 'boolean',\n  delay: 'number'\n}\n\nconst Default = {\n  animation: true,\n  autohide: true,\n  delay: 5000\n}\n\n/**\n * Class definition\n */\n\nclass Toast extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._timeout = null\n    this._hasMouseInteraction = false\n    this._hasKeyboardInteraction = false\n    this._setListeners()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  show() {\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._clearTimeout()\n\n    if (this._config.animation) {\n      this._element.classList.add(CLASS_NAME_FADE)\n    }\n\n    const complete = () => {\n      this._element.classList.remove(CLASS_NAME_SHOWING)\n      EventHandler.trigger(this._element, EVENT_SHOWN)\n\n      this._maybeScheduleHide()\n    }\n\n    this._element.classList.remove(CLASS_NAME_HIDE) // @deprecated\n    reflow(this._element)\n    this._element.classList.add(CLASS_NAME_SHOW, CLASS_NAME_SHOWING)\n\n    this._queueCallback(complete, this._element, this._config.animation)\n  }\n\n  hide() {\n    if (!this.isShown()) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    const complete = () => {\n      this._element.classList.add(CLASS_NAME_HIDE) // @deprecated\n      this._element.classList.remove(CLASS_NAME_SHOWING, CLASS_NAME_SHOW)\n      EventHandler.trigger(this._element, EVENT_HIDDEN)\n    }\n\n    this._element.classList.add(CLASS_NAME_SHOWING)\n    this._queueCallback(complete, this._element, this._config.animation)\n  }\n\n  dispose() {\n    this._clearTimeout()\n\n    if (this.isShown()) {\n      this._element.classList.remove(CLASS_NAME_SHOW)\n    }\n\n    super.dispose()\n  }\n\n  isShown() {\n    return this._element.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  // Private\n\n  _maybeScheduleHide() {\n    if (!this._config.autohide) {\n      return\n    }\n\n    if (this._hasMouseInteraction || this._hasKeyboardInteraction) {\n      return\n    }\n\n    this._timeout = setTimeout(() => {\n      this.hide()\n    }, this._config.delay)\n  }\n\n  _onInteraction(event, isInteracting) {\n    switch (event.type) {\n      case 'mouseover':\n      case 'mouseout': {\n        this._hasMouseInteraction = isInteracting\n        break\n      }\n\n      case 'focusin':\n      case 'focusout': {\n        this._hasKeyboardInteraction = isInteracting\n        break\n      }\n\n      default: {\n        break\n      }\n    }\n\n    if (isInteracting) {\n      this._clearTimeout()\n      return\n    }\n\n    const nextElement = event.relatedTarget\n    if (this._element === nextElement || this._element.contains(nextElement)) {\n      return\n    }\n\n    this._maybeScheduleHide()\n  }\n\n  _setListeners() {\n    EventHandler.on(this._element, EVENT_MOUSEOVER, event => this._onInteraction(event, true))\n    EventHandler.on(this._element, EVENT_MOUSEOUT, event => this._onInteraction(event, false))\n    EventHandler.on(this._element, EVENT_FOCUSIN, event => this._onInteraction(event, true))\n    EventHandler.on(this._element, EVENT_FOCUSOUT, event => this._onInteraction(event, false))\n  }\n\n  _clearTimeout() {\n    clearTimeout(this._timeout)\n    this._timeout = null\n  }\n\n  // Static\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Toast.getOrCreateInstance(this, config)\n\n      if (typeof config === 'string') {\n        if (typeof data[config] === 'undefined') {\n          throw new TypeError(`No method named \"${config}\"`)\n        }\n\n        data[config](this)\n      }\n    })\n  }\n}\n\n/**\n * Data API implementation\n */\n\nenableDismissTrigger(Toast)\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Toast)\n\nexport default Toast\n", "/*\nTurbo 7.3.0\nCopyright \u00A9 2023 37signals LLC\n */\n(function () {\n    if (window.Reflect === undefined ||\n        window.customElements === undefined ||\n        window.customElements.polyfillWrapFlushCallback) {\n        return;\n    }\n    const BuiltInHTMLElement = HTMLElement;\n    const wrapperForTheName = {\n        HTMLElement: function HTMLElement() {\n            return Reflect.construct(BuiltInHTMLElement, [], this.constructor);\n        },\n    };\n    window.HTMLElement = wrapperForTheName[\"HTMLElement\"];\n    HTMLElement.prototype = BuiltInHTMLElement.prototype;\n    HTMLElement.prototype.constructor = HTMLElement;\n    Object.setPrototypeOf(HTMLElement, BuiltInHTMLElement);\n})();\n\n/**\n * The MIT License (MIT)\n * \n * Copyright (c) 2019 Javan Makhmali\n * \n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n * \n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n * \n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n(function(prototype) {\n  if (typeof prototype.requestSubmit == \"function\") return\n\n  prototype.requestSubmit = function(submitter) {\n    if (submitter) {\n      validateSubmitter(submitter, this);\n      submitter.click();\n    } else {\n      submitter = document.createElement(\"input\");\n      submitter.type = \"submit\";\n      submitter.hidden = true;\n      this.appendChild(submitter);\n      submitter.click();\n      this.removeChild(submitter);\n    }\n  };\n\n  function validateSubmitter(submitter, form) {\n    submitter instanceof HTMLElement || raise(TypeError, \"parameter 1 is not of type 'HTMLElement'\");\n    submitter.type == \"submit\" || raise(TypeError, \"The specified element is not a submit button\");\n    submitter.form == form || raise(DOMException, \"The specified element is not owned by this form element\", \"NotFoundError\");\n  }\n\n  function raise(errorConstructor, message, name) {\n    throw new errorConstructor(\"Failed to execute 'requestSubmit' on 'HTMLFormElement': \" + message + \".\", name)\n  }\n})(HTMLFormElement.prototype);\n\nconst submittersByForm = new WeakMap();\nfunction findSubmitterFromClickTarget(target) {\n    const element = target instanceof Element ? target : target instanceof Node ? target.parentElement : null;\n    const candidate = element ? element.closest(\"input, button\") : null;\n    return (candidate === null || candidate === void 0 ? void 0 : candidate.type) == \"submit\" ? candidate : null;\n}\nfunction clickCaptured(event) {\n    const submitter = findSubmitterFromClickTarget(event.target);\n    if (submitter && submitter.form) {\n        submittersByForm.set(submitter.form, submitter);\n    }\n}\n(function () {\n    if (\"submitter\" in Event.prototype)\n        return;\n    let prototype = window.Event.prototype;\n    if (\"SubmitEvent\" in window && /Apple Computer/.test(navigator.vendor)) {\n        prototype = window.SubmitEvent.prototype;\n    }\n    else if (\"SubmitEvent\" in window) {\n        return;\n    }\n    addEventListener(\"click\", clickCaptured, true);\n    Object.defineProperty(prototype, \"submitter\", {\n        get() {\n            if (this.type == \"submit\" && this.target instanceof HTMLFormElement) {\n                return submittersByForm.get(this.target);\n            }\n        },\n    });\n})();\n\nvar FrameLoadingStyle;\n(function (FrameLoadingStyle) {\n    FrameLoadingStyle[\"eager\"] = \"eager\";\n    FrameLoadingStyle[\"lazy\"] = \"lazy\";\n})(FrameLoadingStyle || (FrameLoadingStyle = {}));\nclass FrameElement extends HTMLElement {\n    static get observedAttributes() {\n        return [\"disabled\", \"complete\", \"loading\", \"src\"];\n    }\n    constructor() {\n        super();\n        this.loaded = Promise.resolve();\n        this.delegate = new FrameElement.delegateConstructor(this);\n    }\n    connectedCallback() {\n        this.delegate.connect();\n    }\n    disconnectedCallback() {\n        this.delegate.disconnect();\n    }\n    reload() {\n        return this.delegate.sourceURLReloaded();\n    }\n    attributeChangedCallback(name) {\n        if (name == \"loading\") {\n            this.delegate.loadingStyleChanged();\n        }\n        else if (name == \"complete\") {\n            this.delegate.completeChanged();\n        }\n        else if (name == \"src\") {\n            this.delegate.sourceURLChanged();\n        }\n        else {\n            this.delegate.disabledChanged();\n        }\n    }\n    get src() {\n        return this.getAttribute(\"src\");\n    }\n    set src(value) {\n        if (value) {\n            this.setAttribute(\"src\", value);\n        }\n        else {\n            this.removeAttribute(\"src\");\n        }\n    }\n    get loading() {\n        return frameLoadingStyleFromString(this.getAttribute(\"loading\") || \"\");\n    }\n    set loading(value) {\n        if (value) {\n            this.setAttribute(\"loading\", value);\n        }\n        else {\n            this.removeAttribute(\"loading\");\n        }\n    }\n    get disabled() {\n        return this.hasAttribute(\"disabled\");\n    }\n    set disabled(value) {\n        if (value) {\n            this.setAttribute(\"disabled\", \"\");\n        }\n        else {\n            this.removeAttribute(\"disabled\");\n        }\n    }\n    get autoscroll() {\n        return this.hasAttribute(\"autoscroll\");\n    }\n    set autoscroll(value) {\n        if (value) {\n            this.setAttribute(\"autoscroll\", \"\");\n        }\n        else {\n            this.removeAttribute(\"autoscroll\");\n        }\n    }\n    get complete() {\n        return !this.delegate.isLoading;\n    }\n    get isActive() {\n        return this.ownerDocument === document && !this.isPreview;\n    }\n    get isPreview() {\n        var _a, _b;\n        return (_b = (_a = this.ownerDocument) === null || _a === void 0 ? void 0 : _a.documentElement) === null || _b === void 0 ? void 0 : _b.hasAttribute(\"data-turbo-preview\");\n    }\n}\nfunction frameLoadingStyleFromString(style) {\n    switch (style.toLowerCase()) {\n        case \"lazy\":\n            return FrameLoadingStyle.lazy;\n        default:\n            return FrameLoadingStyle.eager;\n    }\n}\n\nfunction expandURL(locatable) {\n    return new URL(locatable.toString(), document.baseURI);\n}\nfunction getAnchor(url) {\n    let anchorMatch;\n    if (url.hash) {\n        return url.hash.slice(1);\n    }\n    else if ((anchorMatch = url.href.match(/#(.*)$/))) {\n        return anchorMatch[1];\n    }\n}\nfunction getAction(form, submitter) {\n    const action = (submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"formaction\")) || form.getAttribute(\"action\") || form.action;\n    return expandURL(action);\n}\nfunction getExtension(url) {\n    return (getLastPathComponent(url).match(/\\.[^.]*$/) || [])[0] || \"\";\n}\nfunction isHTML(url) {\n    return !!getExtension(url).match(/^(?:|\\.(?:htm|html|xhtml|php))$/);\n}\nfunction isPrefixedBy(baseURL, url) {\n    const prefix = getPrefix(url);\n    return baseURL.href === expandURL(prefix).href || baseURL.href.startsWith(prefix);\n}\nfunction locationIsVisitable(location, rootLocation) {\n    return isPrefixedBy(location, rootLocation) && isHTML(location);\n}\nfunction getRequestURL(url) {\n    const anchor = getAnchor(url);\n    return anchor != null ? url.href.slice(0, -(anchor.length + 1)) : url.href;\n}\nfunction toCacheKey(url) {\n    return getRequestURL(url);\n}\nfunction urlsAreEqual(left, right) {\n    return expandURL(left).href == expandURL(right).href;\n}\nfunction getPathComponents(url) {\n    return url.pathname.split(\"/\").slice(1);\n}\nfunction getLastPathComponent(url) {\n    return getPathComponents(url).slice(-1)[0];\n}\nfunction getPrefix(url) {\n    return addTrailingSlash(url.origin + url.pathname);\n}\nfunction addTrailingSlash(value) {\n    return value.endsWith(\"/\") ? value : value + \"/\";\n}\n\nclass FetchResponse {\n    constructor(response) {\n        this.response = response;\n    }\n    get succeeded() {\n        return this.response.ok;\n    }\n    get failed() {\n        return !this.succeeded;\n    }\n    get clientError() {\n        return this.statusCode >= 400 && this.statusCode <= 499;\n    }\n    get serverError() {\n        return this.statusCode >= 500 && this.statusCode <= 599;\n    }\n    get redirected() {\n        return this.response.redirected;\n    }\n    get location() {\n        return expandURL(this.response.url);\n    }\n    get isHTML() {\n        return this.contentType && this.contentType.match(/^(?:text\\/([^\\s;,]+\\b)?html|application\\/xhtml\\+xml)\\b/);\n    }\n    get statusCode() {\n        return this.response.status;\n    }\n    get contentType() {\n        return this.header(\"Content-Type\");\n    }\n    get responseText() {\n        return this.response.clone().text();\n    }\n    get responseHTML() {\n        if (this.isHTML) {\n            return this.response.clone().text();\n        }\n        else {\n            return Promise.resolve(undefined);\n        }\n    }\n    header(name) {\n        return this.response.headers.get(name);\n    }\n}\n\nfunction activateScriptElement(element) {\n    if (element.getAttribute(\"data-turbo-eval\") == \"false\") {\n        return element;\n    }\n    else {\n        const createdScriptElement = document.createElement(\"script\");\n        const cspNonce = getMetaContent(\"csp-nonce\");\n        if (cspNonce) {\n            createdScriptElement.nonce = cspNonce;\n        }\n        createdScriptElement.textContent = element.textContent;\n        createdScriptElement.async = false;\n        copyElementAttributes(createdScriptElement, element);\n        return createdScriptElement;\n    }\n}\nfunction copyElementAttributes(destinationElement, sourceElement) {\n    for (const { name, value } of sourceElement.attributes) {\n        destinationElement.setAttribute(name, value);\n    }\n}\nfunction createDocumentFragment(html) {\n    const template = document.createElement(\"template\");\n    template.innerHTML = html;\n    return template.content;\n}\nfunction dispatch(eventName, { target, cancelable, detail } = {}) {\n    const event = new CustomEvent(eventName, {\n        cancelable,\n        bubbles: true,\n        composed: true,\n        detail,\n    });\n    if (target && target.isConnected) {\n        target.dispatchEvent(event);\n    }\n    else {\n        document.documentElement.dispatchEvent(event);\n    }\n    return event;\n}\nfunction nextAnimationFrame() {\n    return new Promise((resolve) => requestAnimationFrame(() => resolve()));\n}\nfunction nextEventLoopTick() {\n    return new Promise((resolve) => setTimeout(() => resolve(), 0));\n}\nfunction nextMicrotask() {\n    return Promise.resolve();\n}\nfunction parseHTMLDocument(html = \"\") {\n    return new DOMParser().parseFromString(html, \"text/html\");\n}\nfunction unindent(strings, ...values) {\n    const lines = interpolate(strings, values).replace(/^\\n/, \"\").split(\"\\n\");\n    const match = lines[0].match(/^\\s+/);\n    const indent = match ? match[0].length : 0;\n    return lines.map((line) => line.slice(indent)).join(\"\\n\");\n}\nfunction interpolate(strings, values) {\n    return strings.reduce((result, string, i) => {\n        const value = values[i] == undefined ? \"\" : values[i];\n        return result + string + value;\n    }, \"\");\n}\nfunction uuid() {\n    return Array.from({ length: 36 })\n        .map((_, i) => {\n        if (i == 8 || i == 13 || i == 18 || i == 23) {\n            return \"-\";\n        }\n        else if (i == 14) {\n            return \"4\";\n        }\n        else if (i == 19) {\n            return (Math.floor(Math.random() * 4) + 8).toString(16);\n        }\n        else {\n            return Math.floor(Math.random() * 15).toString(16);\n        }\n    })\n        .join(\"\");\n}\nfunction getAttribute(attributeName, ...elements) {\n    for (const value of elements.map((element) => element === null || element === void 0 ? void 0 : element.getAttribute(attributeName))) {\n        if (typeof value == \"string\")\n            return value;\n    }\n    return null;\n}\nfunction hasAttribute(attributeName, ...elements) {\n    return elements.some((element) => element && element.hasAttribute(attributeName));\n}\nfunction markAsBusy(...elements) {\n    for (const element of elements) {\n        if (element.localName == \"turbo-frame\") {\n            element.setAttribute(\"busy\", \"\");\n        }\n        element.setAttribute(\"aria-busy\", \"true\");\n    }\n}\nfunction clearBusyState(...elements) {\n    for (const element of elements) {\n        if (element.localName == \"turbo-frame\") {\n            element.removeAttribute(\"busy\");\n        }\n        element.removeAttribute(\"aria-busy\");\n    }\n}\nfunction waitForLoad(element, timeoutInMilliseconds = 2000) {\n    return new Promise((resolve) => {\n        const onComplete = () => {\n            element.removeEventListener(\"error\", onComplete);\n            element.removeEventListener(\"load\", onComplete);\n            resolve();\n        };\n        element.addEventListener(\"load\", onComplete, { once: true });\n        element.addEventListener(\"error\", onComplete, { once: true });\n        setTimeout(resolve, timeoutInMilliseconds);\n    });\n}\nfunction getHistoryMethodForAction(action) {\n    switch (action) {\n        case \"replace\":\n            return history.replaceState;\n        case \"advance\":\n        case \"restore\":\n            return history.pushState;\n    }\n}\nfunction isAction(action) {\n    return action == \"advance\" || action == \"replace\" || action == \"restore\";\n}\nfunction getVisitAction(...elements) {\n    const action = getAttribute(\"data-turbo-action\", ...elements);\n    return isAction(action) ? action : null;\n}\nfunction getMetaElement(name) {\n    return document.querySelector(`meta[name=\"${name}\"]`);\n}\nfunction getMetaContent(name) {\n    const element = getMetaElement(name);\n    return element && element.content;\n}\nfunction setMetaContent(name, content) {\n    let element = getMetaElement(name);\n    if (!element) {\n        element = document.createElement(\"meta\");\n        element.setAttribute(\"name\", name);\n        document.head.appendChild(element);\n    }\n    element.setAttribute(\"content\", content);\n    return element;\n}\nfunction findClosestRecursively(element, selector) {\n    var _a;\n    if (element instanceof Element) {\n        return (element.closest(selector) ||\n            findClosestRecursively(element.assignedSlot || ((_a = element.getRootNode()) === null || _a === void 0 ? void 0 : _a.host), selector));\n    }\n}\n\nvar FetchMethod;\n(function (FetchMethod) {\n    FetchMethod[FetchMethod[\"get\"] = 0] = \"get\";\n    FetchMethod[FetchMethod[\"post\"] = 1] = \"post\";\n    FetchMethod[FetchMethod[\"put\"] = 2] = \"put\";\n    FetchMethod[FetchMethod[\"patch\"] = 3] = \"patch\";\n    FetchMethod[FetchMethod[\"delete\"] = 4] = \"delete\";\n})(FetchMethod || (FetchMethod = {}));\nfunction fetchMethodFromString(method) {\n    switch (method.toLowerCase()) {\n        case \"get\":\n            return FetchMethod.get;\n        case \"post\":\n            return FetchMethod.post;\n        case \"put\":\n            return FetchMethod.put;\n        case \"patch\":\n            return FetchMethod.patch;\n        case \"delete\":\n            return FetchMethod.delete;\n    }\n}\nclass FetchRequest {\n    constructor(delegate, method, location, body = new URLSearchParams(), target = null) {\n        this.abortController = new AbortController();\n        this.resolveRequestPromise = (_value) => { };\n        this.delegate = delegate;\n        this.method = method;\n        this.headers = this.defaultHeaders;\n        this.body = body;\n        this.url = location;\n        this.target = target;\n    }\n    get location() {\n        return this.url;\n    }\n    get params() {\n        return this.url.searchParams;\n    }\n    get entries() {\n        return this.body ? Array.from(this.body.entries()) : [];\n    }\n    cancel() {\n        this.abortController.abort();\n    }\n    async perform() {\n        const { fetchOptions } = this;\n        this.delegate.prepareRequest(this);\n        await this.allowRequestToBeIntercepted(fetchOptions);\n        try {\n            this.delegate.requestStarted(this);\n            const response = await fetch(this.url.href, fetchOptions);\n            return await this.receive(response);\n        }\n        catch (error) {\n            if (error.name !== \"AbortError\") {\n                if (this.willDelegateErrorHandling(error)) {\n                    this.delegate.requestErrored(this, error);\n                }\n                throw error;\n            }\n        }\n        finally {\n            this.delegate.requestFinished(this);\n        }\n    }\n    async receive(response) {\n        const fetchResponse = new FetchResponse(response);\n        const event = dispatch(\"turbo:before-fetch-response\", {\n            cancelable: true,\n            detail: { fetchResponse },\n            target: this.target,\n        });\n        if (event.defaultPrevented) {\n            this.delegate.requestPreventedHandlingResponse(this, fetchResponse);\n        }\n        else if (fetchResponse.succeeded) {\n            this.delegate.requestSucceededWithResponse(this, fetchResponse);\n        }\n        else {\n            this.delegate.requestFailedWithResponse(this, fetchResponse);\n        }\n        return fetchResponse;\n    }\n    get fetchOptions() {\n        var _a;\n        return {\n            method: FetchMethod[this.method].toUpperCase(),\n            credentials: \"same-origin\",\n            headers: this.headers,\n            redirect: \"follow\",\n            body: this.isSafe ? null : this.body,\n            signal: this.abortSignal,\n            referrer: (_a = this.delegate.referrer) === null || _a === void 0 ? void 0 : _a.href,\n        };\n    }\n    get defaultHeaders() {\n        return {\n            Accept: \"text/html, application/xhtml+xml\",\n        };\n    }\n    get isSafe() {\n        return this.method === FetchMethod.get;\n    }\n    get abortSignal() {\n        return this.abortController.signal;\n    }\n    acceptResponseType(mimeType) {\n        this.headers[\"Accept\"] = [mimeType, this.headers[\"Accept\"]].join(\", \");\n    }\n    async allowRequestToBeIntercepted(fetchOptions) {\n        const requestInterception = new Promise((resolve) => (this.resolveRequestPromise = resolve));\n        const event = dispatch(\"turbo:before-fetch-request\", {\n            cancelable: true,\n            detail: {\n                fetchOptions,\n                url: this.url,\n                resume: this.resolveRequestPromise,\n            },\n            target: this.target,\n        });\n        if (event.defaultPrevented)\n            await requestInterception;\n    }\n    willDelegateErrorHandling(error) {\n        const event = dispatch(\"turbo:fetch-request-error\", {\n            target: this.target,\n            cancelable: true,\n            detail: { request: this, error: error },\n        });\n        return !event.defaultPrevented;\n    }\n}\n\nclass AppearanceObserver {\n    constructor(delegate, element) {\n        this.started = false;\n        this.intersect = (entries) => {\n            const lastEntry = entries.slice(-1)[0];\n            if (lastEntry === null || lastEntry === void 0 ? void 0 : lastEntry.isIntersecting) {\n                this.delegate.elementAppearedInViewport(this.element);\n            }\n        };\n        this.delegate = delegate;\n        this.element = element;\n        this.intersectionObserver = new IntersectionObserver(this.intersect);\n    }\n    start() {\n        if (!this.started) {\n            this.started = true;\n            this.intersectionObserver.observe(this.element);\n        }\n    }\n    stop() {\n        if (this.started) {\n            this.started = false;\n            this.intersectionObserver.unobserve(this.element);\n        }\n    }\n}\n\nclass StreamMessage {\n    static wrap(message) {\n        if (typeof message == \"string\") {\n            return new this(createDocumentFragment(message));\n        }\n        else {\n            return message;\n        }\n    }\n    constructor(fragment) {\n        this.fragment = importStreamElements(fragment);\n    }\n}\nStreamMessage.contentType = \"text/vnd.turbo-stream.html\";\nfunction importStreamElements(fragment) {\n    for (const element of fragment.querySelectorAll(\"turbo-stream\")) {\n        const streamElement = document.importNode(element, true);\n        for (const inertScriptElement of streamElement.templateElement.content.querySelectorAll(\"script\")) {\n            inertScriptElement.replaceWith(activateScriptElement(inertScriptElement));\n        }\n        element.replaceWith(streamElement);\n    }\n    return fragment;\n}\n\nvar FormSubmissionState;\n(function (FormSubmissionState) {\n    FormSubmissionState[FormSubmissionState[\"initialized\"] = 0] = \"initialized\";\n    FormSubmissionState[FormSubmissionState[\"requesting\"] = 1] = \"requesting\";\n    FormSubmissionState[FormSubmissionState[\"waiting\"] = 2] = \"waiting\";\n    FormSubmissionState[FormSubmissionState[\"receiving\"] = 3] = \"receiving\";\n    FormSubmissionState[FormSubmissionState[\"stopping\"] = 4] = \"stopping\";\n    FormSubmissionState[FormSubmissionState[\"stopped\"] = 5] = \"stopped\";\n})(FormSubmissionState || (FormSubmissionState = {}));\nvar FormEnctype;\n(function (FormEnctype) {\n    FormEnctype[\"urlEncoded\"] = \"application/x-www-form-urlencoded\";\n    FormEnctype[\"multipart\"] = \"multipart/form-data\";\n    FormEnctype[\"plain\"] = \"text/plain\";\n})(FormEnctype || (FormEnctype = {}));\nfunction formEnctypeFromString(encoding) {\n    switch (encoding.toLowerCase()) {\n        case FormEnctype.multipart:\n            return FormEnctype.multipart;\n        case FormEnctype.plain:\n            return FormEnctype.plain;\n        default:\n            return FormEnctype.urlEncoded;\n    }\n}\nclass FormSubmission {\n    static confirmMethod(message, _element, _submitter) {\n        return Promise.resolve(confirm(message));\n    }\n    constructor(delegate, formElement, submitter, mustRedirect = false) {\n        this.state = FormSubmissionState.initialized;\n        this.delegate = delegate;\n        this.formElement = formElement;\n        this.submitter = submitter;\n        this.formData = buildFormData(formElement, submitter);\n        this.location = expandURL(this.action);\n        if (this.method == FetchMethod.get) {\n            mergeFormDataEntries(this.location, [...this.body.entries()]);\n        }\n        this.fetchRequest = new FetchRequest(this, this.method, this.location, this.body, this.formElement);\n        this.mustRedirect = mustRedirect;\n    }\n    get method() {\n        var _a;\n        const method = ((_a = this.submitter) === null || _a === void 0 ? void 0 : _a.getAttribute(\"formmethod\")) || this.formElement.getAttribute(\"method\") || \"\";\n        return fetchMethodFromString(method.toLowerCase()) || FetchMethod.get;\n    }\n    get action() {\n        var _a;\n        const formElementAction = typeof this.formElement.action === \"string\" ? this.formElement.action : null;\n        if ((_a = this.submitter) === null || _a === void 0 ? void 0 : _a.hasAttribute(\"formaction\")) {\n            return this.submitter.getAttribute(\"formaction\") || \"\";\n        }\n        else {\n            return this.formElement.getAttribute(\"action\") || formElementAction || \"\";\n        }\n    }\n    get body() {\n        if (this.enctype == FormEnctype.urlEncoded || this.method == FetchMethod.get) {\n            return new URLSearchParams(this.stringFormData);\n        }\n        else {\n            return this.formData;\n        }\n    }\n    get enctype() {\n        var _a;\n        return formEnctypeFromString(((_a = this.submitter) === null || _a === void 0 ? void 0 : _a.getAttribute(\"formenctype\")) || this.formElement.enctype);\n    }\n    get isSafe() {\n        return this.fetchRequest.isSafe;\n    }\n    get stringFormData() {\n        return [...this.formData].reduce((entries, [name, value]) => {\n            return entries.concat(typeof value == \"string\" ? [[name, value]] : []);\n        }, []);\n    }\n    async start() {\n        const { initialized, requesting } = FormSubmissionState;\n        const confirmationMessage = getAttribute(\"data-turbo-confirm\", this.submitter, this.formElement);\n        if (typeof confirmationMessage === \"string\") {\n            const answer = await FormSubmission.confirmMethod(confirmationMessage, this.formElement, this.submitter);\n            if (!answer) {\n                return;\n            }\n        }\n        if (this.state == initialized) {\n            this.state = requesting;\n            return this.fetchRequest.perform();\n        }\n    }\n    stop() {\n        const { stopping, stopped } = FormSubmissionState;\n        if (this.state != stopping && this.state != stopped) {\n            this.state = stopping;\n            this.fetchRequest.cancel();\n            return true;\n        }\n    }\n    prepareRequest(request) {\n        if (!request.isSafe) {\n            const token = getCookieValue(getMetaContent(\"csrf-param\")) || getMetaContent(\"csrf-token\");\n            if (token) {\n                request.headers[\"X-CSRF-Token\"] = token;\n            }\n        }\n        if (this.requestAcceptsTurboStreamResponse(request)) {\n            request.acceptResponseType(StreamMessage.contentType);\n        }\n    }\n    requestStarted(_request) {\n        var _a;\n        this.state = FormSubmissionState.waiting;\n        (_a = this.submitter) === null || _a === void 0 ? void 0 : _a.setAttribute(\"disabled\", \"\");\n        this.setSubmitsWith();\n        dispatch(\"turbo:submit-start\", {\n            target: this.formElement,\n            detail: { formSubmission: this },\n        });\n        this.delegate.formSubmissionStarted(this);\n    }\n    requestPreventedHandlingResponse(request, response) {\n        this.result = { success: response.succeeded, fetchResponse: response };\n    }\n    requestSucceededWithResponse(request, response) {\n        if (response.clientError || response.serverError) {\n            this.delegate.formSubmissionFailedWithResponse(this, response);\n        }\n        else if (this.requestMustRedirect(request) && responseSucceededWithoutRedirect(response)) {\n            const error = new Error(\"Form responses must redirect to another location\");\n            this.delegate.formSubmissionErrored(this, error);\n        }\n        else {\n            this.state = FormSubmissionState.receiving;\n            this.result = { success: true, fetchResponse: response };\n            this.delegate.formSubmissionSucceededWithResponse(this, response);\n        }\n    }\n    requestFailedWithResponse(request, response) {\n        this.result = { success: false, fetchResponse: response };\n        this.delegate.formSubmissionFailedWithResponse(this, response);\n    }\n    requestErrored(request, error) {\n        this.result = { success: false, error };\n        this.delegate.formSubmissionErrored(this, error);\n    }\n    requestFinished(_request) {\n        var _a;\n        this.state = FormSubmissionState.stopped;\n        (_a = this.submitter) === null || _a === void 0 ? void 0 : _a.removeAttribute(\"disabled\");\n        this.resetSubmitterText();\n        dispatch(\"turbo:submit-end\", {\n            target: this.formElement,\n            detail: Object.assign({ formSubmission: this }, this.result),\n        });\n        this.delegate.formSubmissionFinished(this);\n    }\n    setSubmitsWith() {\n        if (!this.submitter || !this.submitsWith)\n            return;\n        if (this.submitter.matches(\"button\")) {\n            this.originalSubmitText = this.submitter.innerHTML;\n            this.submitter.innerHTML = this.submitsWith;\n        }\n        else if (this.submitter.matches(\"input\")) {\n            const input = this.submitter;\n            this.originalSubmitText = input.value;\n            input.value = this.submitsWith;\n        }\n    }\n    resetSubmitterText() {\n        if (!this.submitter || !this.originalSubmitText)\n            return;\n        if (this.submitter.matches(\"button\")) {\n            this.submitter.innerHTML = this.originalSubmitText;\n        }\n        else if (this.submitter.matches(\"input\")) {\n            const input = this.submitter;\n            input.value = this.originalSubmitText;\n        }\n    }\n    requestMustRedirect(request) {\n        return !request.isSafe && this.mustRedirect;\n    }\n    requestAcceptsTurboStreamResponse(request) {\n        return !request.isSafe || hasAttribute(\"data-turbo-stream\", this.submitter, this.formElement);\n    }\n    get submitsWith() {\n        var _a;\n        return (_a = this.submitter) === null || _a === void 0 ? void 0 : _a.getAttribute(\"data-turbo-submits-with\");\n    }\n}\nfunction buildFormData(formElement, submitter) {\n    const formData = new FormData(formElement);\n    const name = submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"name\");\n    const value = submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"value\");\n    if (name) {\n        formData.append(name, value || \"\");\n    }\n    return formData;\n}\nfunction getCookieValue(cookieName) {\n    if (cookieName != null) {\n        const cookies = document.cookie ? document.cookie.split(\"; \") : [];\n        const cookie = cookies.find((cookie) => cookie.startsWith(cookieName));\n        if (cookie) {\n            const value = cookie.split(\"=\").slice(1).join(\"=\");\n            return value ? decodeURIComponent(value) : undefined;\n        }\n    }\n}\nfunction responseSucceededWithoutRedirect(response) {\n    return response.statusCode == 200 && !response.redirected;\n}\nfunction mergeFormDataEntries(url, entries) {\n    const searchParams = new URLSearchParams();\n    for (const [name, value] of entries) {\n        if (value instanceof File)\n            continue;\n        searchParams.append(name, value);\n    }\n    url.search = searchParams.toString();\n    return url;\n}\n\nclass Snapshot {\n    constructor(element) {\n        this.element = element;\n    }\n    get activeElement() {\n        return this.element.ownerDocument.activeElement;\n    }\n    get children() {\n        return [...this.element.children];\n    }\n    hasAnchor(anchor) {\n        return this.getElementForAnchor(anchor) != null;\n    }\n    getElementForAnchor(anchor) {\n        return anchor ? this.element.querySelector(`[id='${anchor}'], a[name='${anchor}']`) : null;\n    }\n    get isConnected() {\n        return this.element.isConnected;\n    }\n    get firstAutofocusableElement() {\n        const inertDisabledOrHidden = \"[inert], :disabled, [hidden], details:not([open]), dialog:not([open])\";\n        for (const element of this.element.querySelectorAll(\"[autofocus]\")) {\n            if (element.closest(inertDisabledOrHidden) == null)\n                return element;\n            else\n                continue;\n        }\n        return null;\n    }\n    get permanentElements() {\n        return queryPermanentElementsAll(this.element);\n    }\n    getPermanentElementById(id) {\n        return getPermanentElementById(this.element, id);\n    }\n    getPermanentElementMapForSnapshot(snapshot) {\n        const permanentElementMap = {};\n        for (const currentPermanentElement of this.permanentElements) {\n            const { id } = currentPermanentElement;\n            const newPermanentElement = snapshot.getPermanentElementById(id);\n            if (newPermanentElement) {\n                permanentElementMap[id] = [currentPermanentElement, newPermanentElement];\n            }\n        }\n        return permanentElementMap;\n    }\n}\nfunction getPermanentElementById(node, id) {\n    return node.querySelector(`#${id}[data-turbo-permanent]`);\n}\nfunction queryPermanentElementsAll(node) {\n    return node.querySelectorAll(\"[id][data-turbo-permanent]\");\n}\n\nclass FormSubmitObserver {\n    constructor(delegate, eventTarget) {\n        this.started = false;\n        this.submitCaptured = () => {\n            this.eventTarget.removeEventListener(\"submit\", this.submitBubbled, false);\n            this.eventTarget.addEventListener(\"submit\", this.submitBubbled, false);\n        };\n        this.submitBubbled = ((event) => {\n            if (!event.defaultPrevented) {\n                const form = event.target instanceof HTMLFormElement ? event.target : undefined;\n                const submitter = event.submitter || undefined;\n                if (form &&\n                    submissionDoesNotDismissDialog(form, submitter) &&\n                    submissionDoesNotTargetIFrame(form, submitter) &&\n                    this.delegate.willSubmitForm(form, submitter)) {\n                    event.preventDefault();\n                    event.stopImmediatePropagation();\n                    this.delegate.formSubmitted(form, submitter);\n                }\n            }\n        });\n        this.delegate = delegate;\n        this.eventTarget = eventTarget;\n    }\n    start() {\n        if (!this.started) {\n            this.eventTarget.addEventListener(\"submit\", this.submitCaptured, true);\n            this.started = true;\n        }\n    }\n    stop() {\n        if (this.started) {\n            this.eventTarget.removeEventListener(\"submit\", this.submitCaptured, true);\n            this.started = false;\n        }\n    }\n}\nfunction submissionDoesNotDismissDialog(form, submitter) {\n    const method = (submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"formmethod\")) || form.getAttribute(\"method\");\n    return method != \"dialog\";\n}\nfunction submissionDoesNotTargetIFrame(form, submitter) {\n    if ((submitter === null || submitter === void 0 ? void 0 : submitter.hasAttribute(\"formtarget\")) || form.hasAttribute(\"target\")) {\n        const target = (submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"formtarget\")) || form.target;\n        for (const element of document.getElementsByName(target)) {\n            if (element instanceof HTMLIFrameElement)\n                return false;\n        }\n        return true;\n    }\n    else {\n        return true;\n    }\n}\n\nclass View {\n    constructor(delegate, element) {\n        this.resolveRenderPromise = (_value) => { };\n        this.resolveInterceptionPromise = (_value) => { };\n        this.delegate = delegate;\n        this.element = element;\n    }\n    scrollToAnchor(anchor) {\n        const element = this.snapshot.getElementForAnchor(anchor);\n        if (element) {\n            this.scrollToElement(element);\n            this.focusElement(element);\n        }\n        else {\n            this.scrollToPosition({ x: 0, y: 0 });\n        }\n    }\n    scrollToAnchorFromLocation(location) {\n        this.scrollToAnchor(getAnchor(location));\n    }\n    scrollToElement(element) {\n        element.scrollIntoView();\n    }\n    focusElement(element) {\n        if (element instanceof HTMLElement) {\n            if (element.hasAttribute(\"tabindex\")) {\n                element.focus();\n            }\n            else {\n                element.setAttribute(\"tabindex\", \"-1\");\n                element.focus();\n                element.removeAttribute(\"tabindex\");\n            }\n        }\n    }\n    scrollToPosition({ x, y }) {\n        this.scrollRoot.scrollTo(x, y);\n    }\n    scrollToTop() {\n        this.scrollToPosition({ x: 0, y: 0 });\n    }\n    get scrollRoot() {\n        return window;\n    }\n    async render(renderer) {\n        const { isPreview, shouldRender, newSnapshot: snapshot } = renderer;\n        if (shouldRender) {\n            try {\n                this.renderPromise = new Promise((resolve) => (this.resolveRenderPromise = resolve));\n                this.renderer = renderer;\n                await this.prepareToRenderSnapshot(renderer);\n                const renderInterception = new Promise((resolve) => (this.resolveInterceptionPromise = resolve));\n                const options = { resume: this.resolveInterceptionPromise, render: this.renderer.renderElement };\n                const immediateRender = this.delegate.allowsImmediateRender(snapshot, options);\n                if (!immediateRender)\n                    await renderInterception;\n                await this.renderSnapshot(renderer);\n                this.delegate.viewRenderedSnapshot(snapshot, isPreview);\n                this.delegate.preloadOnLoadLinksForView(this.element);\n                this.finishRenderingSnapshot(renderer);\n            }\n            finally {\n                delete this.renderer;\n                this.resolveRenderPromise(undefined);\n                delete this.renderPromise;\n            }\n        }\n        else {\n            this.invalidate(renderer.reloadReason);\n        }\n    }\n    invalidate(reason) {\n        this.delegate.viewInvalidated(reason);\n    }\n    async prepareToRenderSnapshot(renderer) {\n        this.markAsPreview(renderer.isPreview);\n        await renderer.prepareToRender();\n    }\n    markAsPreview(isPreview) {\n        if (isPreview) {\n            this.element.setAttribute(\"data-turbo-preview\", \"\");\n        }\n        else {\n            this.element.removeAttribute(\"data-turbo-preview\");\n        }\n    }\n    async renderSnapshot(renderer) {\n        await renderer.render();\n    }\n    finishRenderingSnapshot(renderer) {\n        renderer.finishRendering();\n    }\n}\n\nclass FrameView extends View {\n    missing() {\n        this.element.innerHTML = `<strong class=\"turbo-frame-error\">Content missing</strong>`;\n    }\n    get snapshot() {\n        return new Snapshot(this.element);\n    }\n}\n\nclass LinkInterceptor {\n    constructor(delegate, element) {\n        this.clickBubbled = (event) => {\n            if (this.respondsToEventTarget(event.target)) {\n                this.clickEvent = event;\n            }\n            else {\n                delete this.clickEvent;\n            }\n        };\n        this.linkClicked = ((event) => {\n            if (this.clickEvent && this.respondsToEventTarget(event.target) && event.target instanceof Element) {\n                if (this.delegate.shouldInterceptLinkClick(event.target, event.detail.url, event.detail.originalEvent)) {\n                    this.clickEvent.preventDefault();\n                    event.preventDefault();\n                    this.delegate.linkClickIntercepted(event.target, event.detail.url, event.detail.originalEvent);\n                }\n            }\n            delete this.clickEvent;\n        });\n        this.willVisit = ((_event) => {\n            delete this.clickEvent;\n        });\n        this.delegate = delegate;\n        this.element = element;\n    }\n    start() {\n        this.element.addEventListener(\"click\", this.clickBubbled);\n        document.addEventListener(\"turbo:click\", this.linkClicked);\n        document.addEventListener(\"turbo:before-visit\", this.willVisit);\n    }\n    stop() {\n        this.element.removeEventListener(\"click\", this.clickBubbled);\n        document.removeEventListener(\"turbo:click\", this.linkClicked);\n        document.removeEventListener(\"turbo:before-visit\", this.willVisit);\n    }\n    respondsToEventTarget(target) {\n        const element = target instanceof Element ? target : target instanceof Node ? target.parentElement : null;\n        return element && element.closest(\"turbo-frame, html\") == this.element;\n    }\n}\n\nclass LinkClickObserver {\n    constructor(delegate, eventTarget) {\n        this.started = false;\n        this.clickCaptured = () => {\n            this.eventTarget.removeEventListener(\"click\", this.clickBubbled, false);\n            this.eventTarget.addEventListener(\"click\", this.clickBubbled, false);\n        };\n        this.clickBubbled = (event) => {\n            if (event instanceof MouseEvent && this.clickEventIsSignificant(event)) {\n                const target = (event.composedPath && event.composedPath()[0]) || event.target;\n                const link = this.findLinkFromClickTarget(target);\n                if (link && doesNotTargetIFrame(link)) {\n                    const location = this.getLocationForLink(link);\n                    if (this.delegate.willFollowLinkToLocation(link, location, event)) {\n                        event.preventDefault();\n                        this.delegate.followedLinkToLocation(link, location);\n                    }\n                }\n            }\n        };\n        this.delegate = delegate;\n        this.eventTarget = eventTarget;\n    }\n    start() {\n        if (!this.started) {\n            this.eventTarget.addEventListener(\"click\", this.clickCaptured, true);\n            this.started = true;\n        }\n    }\n    stop() {\n        if (this.started) {\n            this.eventTarget.removeEventListener(\"click\", this.clickCaptured, true);\n            this.started = false;\n        }\n    }\n    clickEventIsSignificant(event) {\n        return !((event.target && event.target.isContentEditable) ||\n            event.defaultPrevented ||\n            event.which > 1 ||\n            event.altKey ||\n            event.ctrlKey ||\n            event.metaKey ||\n            event.shiftKey);\n    }\n    findLinkFromClickTarget(target) {\n        return findClosestRecursively(target, \"a[href]:not([target^=_]):not([download])\");\n    }\n    getLocationForLink(link) {\n        return expandURL(link.getAttribute(\"href\") || \"\");\n    }\n}\nfunction doesNotTargetIFrame(anchor) {\n    if (anchor.hasAttribute(\"target\")) {\n        for (const element of document.getElementsByName(anchor.target)) {\n            if (element instanceof HTMLIFrameElement)\n                return false;\n        }\n        return true;\n    }\n    else {\n        return true;\n    }\n}\n\nclass FormLinkClickObserver {\n    constructor(delegate, element) {\n        this.delegate = delegate;\n        this.linkInterceptor = new LinkClickObserver(this, element);\n    }\n    start() {\n        this.linkInterceptor.start();\n    }\n    stop() {\n        this.linkInterceptor.stop();\n    }\n    willFollowLinkToLocation(link, location, originalEvent) {\n        return (this.delegate.willSubmitFormLinkToLocation(link, location, originalEvent) &&\n            link.hasAttribute(\"data-turbo-method\"));\n    }\n    followedLinkToLocation(link, location) {\n        const form = document.createElement(\"form\");\n        const type = \"hidden\";\n        for (const [name, value] of location.searchParams) {\n            form.append(Object.assign(document.createElement(\"input\"), { type, name, value }));\n        }\n        const action = Object.assign(location, { search: \"\" });\n        form.setAttribute(\"data-turbo\", \"true\");\n        form.setAttribute(\"action\", action.href);\n        form.setAttribute(\"hidden\", \"\");\n        const method = link.getAttribute(\"data-turbo-method\");\n        if (method)\n            form.setAttribute(\"method\", method);\n        const turboFrame = link.getAttribute(\"data-turbo-frame\");\n        if (turboFrame)\n            form.setAttribute(\"data-turbo-frame\", turboFrame);\n        const turboAction = getVisitAction(link);\n        if (turboAction)\n            form.setAttribute(\"data-turbo-action\", turboAction);\n        const turboConfirm = link.getAttribute(\"data-turbo-confirm\");\n        if (turboConfirm)\n            form.setAttribute(\"data-turbo-confirm\", turboConfirm);\n        const turboStream = link.hasAttribute(\"data-turbo-stream\");\n        if (turboStream)\n            form.setAttribute(\"data-turbo-stream\", \"\");\n        this.delegate.submittedFormLinkToLocation(link, location, form);\n        document.body.appendChild(form);\n        form.addEventListener(\"turbo:submit-end\", () => form.remove(), { once: true });\n        requestAnimationFrame(() => form.requestSubmit());\n    }\n}\n\nclass Bardo {\n    static async preservingPermanentElements(delegate, permanentElementMap, callback) {\n        const bardo = new this(delegate, permanentElementMap);\n        bardo.enter();\n        await callback();\n        bardo.leave();\n    }\n    constructor(delegate, permanentElementMap) {\n        this.delegate = delegate;\n        this.permanentElementMap = permanentElementMap;\n    }\n    enter() {\n        for (const id in this.permanentElementMap) {\n            const [currentPermanentElement, newPermanentElement] = this.permanentElementMap[id];\n            this.delegate.enteringBardo(currentPermanentElement, newPermanentElement);\n            this.replaceNewPermanentElementWithPlaceholder(newPermanentElement);\n        }\n    }\n    leave() {\n        for (const id in this.permanentElementMap) {\n            const [currentPermanentElement] = this.permanentElementMap[id];\n            this.replaceCurrentPermanentElementWithClone(currentPermanentElement);\n            this.replacePlaceholderWithPermanentElement(currentPermanentElement);\n            this.delegate.leavingBardo(currentPermanentElement);\n        }\n    }\n    replaceNewPermanentElementWithPlaceholder(permanentElement) {\n        const placeholder = createPlaceholderForPermanentElement(permanentElement);\n        permanentElement.replaceWith(placeholder);\n    }\n    replaceCurrentPermanentElementWithClone(permanentElement) {\n        const clone = permanentElement.cloneNode(true);\n        permanentElement.replaceWith(clone);\n    }\n    replacePlaceholderWithPermanentElement(permanentElement) {\n        const placeholder = this.getPlaceholderById(permanentElement.id);\n        placeholder === null || placeholder === void 0 ? void 0 : placeholder.replaceWith(permanentElement);\n    }\n    getPlaceholderById(id) {\n        return this.placeholders.find((element) => element.content == id);\n    }\n    get placeholders() {\n        return [...document.querySelectorAll(\"meta[name=turbo-permanent-placeholder][content]\")];\n    }\n}\nfunction createPlaceholderForPermanentElement(permanentElement) {\n    const element = document.createElement(\"meta\");\n    element.setAttribute(\"name\", \"turbo-permanent-placeholder\");\n    element.setAttribute(\"content\", permanentElement.id);\n    return element;\n}\n\nclass Renderer {\n    constructor(currentSnapshot, newSnapshot, renderElement, isPreview, willRender = true) {\n        this.activeElement = null;\n        this.currentSnapshot = currentSnapshot;\n        this.newSnapshot = newSnapshot;\n        this.isPreview = isPreview;\n        this.willRender = willRender;\n        this.renderElement = renderElement;\n        this.promise = new Promise((resolve, reject) => (this.resolvingFunctions = { resolve, reject }));\n    }\n    get shouldRender() {\n        return true;\n    }\n    get reloadReason() {\n        return;\n    }\n    prepareToRender() {\n        return;\n    }\n    finishRendering() {\n        if (this.resolvingFunctions) {\n            this.resolvingFunctions.resolve();\n            delete this.resolvingFunctions;\n        }\n    }\n    async preservingPermanentElements(callback) {\n        await Bardo.preservingPermanentElements(this, this.permanentElementMap, callback);\n    }\n    focusFirstAutofocusableElement() {\n        const element = this.connectedSnapshot.firstAutofocusableElement;\n        if (elementIsFocusable(element)) {\n            element.focus();\n        }\n    }\n    enteringBardo(currentPermanentElement) {\n        if (this.activeElement)\n            return;\n        if (currentPermanentElement.contains(this.currentSnapshot.activeElement)) {\n            this.activeElement = this.currentSnapshot.activeElement;\n        }\n    }\n    leavingBardo(currentPermanentElement) {\n        if (currentPermanentElement.contains(this.activeElement) && this.activeElement instanceof HTMLElement) {\n            this.activeElement.focus();\n            this.activeElement = null;\n        }\n    }\n    get connectedSnapshot() {\n        return this.newSnapshot.isConnected ? this.newSnapshot : this.currentSnapshot;\n    }\n    get currentElement() {\n        return this.currentSnapshot.element;\n    }\n    get newElement() {\n        return this.newSnapshot.element;\n    }\n    get permanentElementMap() {\n        return this.currentSnapshot.getPermanentElementMapForSnapshot(this.newSnapshot);\n    }\n}\nfunction elementIsFocusable(element) {\n    return element && typeof element.focus == \"function\";\n}\n\nclass FrameRenderer extends Renderer {\n    static renderElement(currentElement, newElement) {\n        var _a;\n        const destinationRange = document.createRange();\n        destinationRange.selectNodeContents(currentElement);\n        destinationRange.deleteContents();\n        const frameElement = newElement;\n        const sourceRange = (_a = frameElement.ownerDocument) === null || _a === void 0 ? void 0 : _a.createRange();\n        if (sourceRange) {\n            sourceRange.selectNodeContents(frameElement);\n            currentElement.appendChild(sourceRange.extractContents());\n        }\n    }\n    constructor(delegate, currentSnapshot, newSnapshot, renderElement, isPreview, willRender = true) {\n        super(currentSnapshot, newSnapshot, renderElement, isPreview, willRender);\n        this.delegate = delegate;\n    }\n    get shouldRender() {\n        return true;\n    }\n    async render() {\n        await nextAnimationFrame();\n        this.preservingPermanentElements(() => {\n            this.loadFrameElement();\n        });\n        this.scrollFrameIntoView();\n        await nextAnimationFrame();\n        this.focusFirstAutofocusableElement();\n        await nextAnimationFrame();\n        this.activateScriptElements();\n    }\n    loadFrameElement() {\n        this.delegate.willRenderFrame(this.currentElement, this.newElement);\n        this.renderElement(this.currentElement, this.newElement);\n    }\n    scrollFrameIntoView() {\n        if (this.currentElement.autoscroll || this.newElement.autoscroll) {\n            const element = this.currentElement.firstElementChild;\n            const block = readScrollLogicalPosition(this.currentElement.getAttribute(\"data-autoscroll-block\"), \"end\");\n            const behavior = readScrollBehavior(this.currentElement.getAttribute(\"data-autoscroll-behavior\"), \"auto\");\n            if (element) {\n                element.scrollIntoView({ block, behavior });\n                return true;\n            }\n        }\n        return false;\n    }\n    activateScriptElements() {\n        for (const inertScriptElement of this.newScriptElements) {\n            const activatedScriptElement = activateScriptElement(inertScriptElement);\n            inertScriptElement.replaceWith(activatedScriptElement);\n        }\n    }\n    get newScriptElements() {\n        return this.currentElement.querySelectorAll(\"script\");\n    }\n}\nfunction readScrollLogicalPosition(value, defaultValue) {\n    if (value == \"end\" || value == \"start\" || value == \"center\" || value == \"nearest\") {\n        return value;\n    }\n    else {\n        return defaultValue;\n    }\n}\nfunction readScrollBehavior(value, defaultValue) {\n    if (value == \"auto\" || value == \"smooth\") {\n        return value;\n    }\n    else {\n        return defaultValue;\n    }\n}\n\nclass ProgressBar {\n    static get defaultCSS() {\n        return unindent `\n      .turbo-progress-bar {\n        position: fixed;\n        display: block;\n        top: 0;\n        left: 0;\n        height: 3px;\n        background: #0076ff;\n        z-index: 2147483647;\n        transition:\n          width ${ProgressBar.animationDuration}ms ease-out,\n          opacity ${ProgressBar.animationDuration / 2}ms ${ProgressBar.animationDuration / 2}ms ease-in;\n        transform: translate3d(0, 0, 0);\n      }\n    `;\n    }\n    constructor() {\n        this.hiding = false;\n        this.value = 0;\n        this.visible = false;\n        this.trickle = () => {\n            this.setValue(this.value + Math.random() / 100);\n        };\n        this.stylesheetElement = this.createStylesheetElement();\n        this.progressElement = this.createProgressElement();\n        this.installStylesheetElement();\n        this.setValue(0);\n    }\n    show() {\n        if (!this.visible) {\n            this.visible = true;\n            this.installProgressElement();\n            this.startTrickling();\n        }\n    }\n    hide() {\n        if (this.visible && !this.hiding) {\n            this.hiding = true;\n            this.fadeProgressElement(() => {\n                this.uninstallProgressElement();\n                this.stopTrickling();\n                this.visible = false;\n                this.hiding = false;\n            });\n        }\n    }\n    setValue(value) {\n        this.value = value;\n        this.refresh();\n    }\n    installStylesheetElement() {\n        document.head.insertBefore(this.stylesheetElement, document.head.firstChild);\n    }\n    installProgressElement() {\n        this.progressElement.style.width = \"0\";\n        this.progressElement.style.opacity = \"1\";\n        document.documentElement.insertBefore(this.progressElement, document.body);\n        this.refresh();\n    }\n    fadeProgressElement(callback) {\n        this.progressElement.style.opacity = \"0\";\n        setTimeout(callback, ProgressBar.animationDuration * 1.5);\n    }\n    uninstallProgressElement() {\n        if (this.progressElement.parentNode) {\n            document.documentElement.removeChild(this.progressElement);\n        }\n    }\n    startTrickling() {\n        if (!this.trickleInterval) {\n            this.trickleInterval = window.setInterval(this.trickle, ProgressBar.animationDuration);\n        }\n    }\n    stopTrickling() {\n        window.clearInterval(this.trickleInterval);\n        delete this.trickleInterval;\n    }\n    refresh() {\n        requestAnimationFrame(() => {\n            this.progressElement.style.width = `${10 + this.value * 90}%`;\n        });\n    }\n    createStylesheetElement() {\n        const element = document.createElement(\"style\");\n        element.type = \"text/css\";\n        element.textContent = ProgressBar.defaultCSS;\n        if (this.cspNonce) {\n            element.nonce = this.cspNonce;\n        }\n        return element;\n    }\n    createProgressElement() {\n        const element = document.createElement(\"div\");\n        element.className = \"turbo-progress-bar\";\n        return element;\n    }\n    get cspNonce() {\n        return getMetaContent(\"csp-nonce\");\n    }\n}\nProgressBar.animationDuration = 300;\n\nclass HeadSnapshot extends Snapshot {\n    constructor() {\n        super(...arguments);\n        this.detailsByOuterHTML = this.children\n            .filter((element) => !elementIsNoscript(element))\n            .map((element) => elementWithoutNonce(element))\n            .reduce((result, element) => {\n            const { outerHTML } = element;\n            const details = outerHTML in result\n                ? result[outerHTML]\n                : {\n                    type: elementType(element),\n                    tracked: elementIsTracked(element),\n                    elements: [],\n                };\n            return Object.assign(Object.assign({}, result), { [outerHTML]: Object.assign(Object.assign({}, details), { elements: [...details.elements, element] }) });\n        }, {});\n    }\n    get trackedElementSignature() {\n        return Object.keys(this.detailsByOuterHTML)\n            .filter((outerHTML) => this.detailsByOuterHTML[outerHTML].tracked)\n            .join(\"\");\n    }\n    getScriptElementsNotInSnapshot(snapshot) {\n        return this.getElementsMatchingTypeNotInSnapshot(\"script\", snapshot);\n    }\n    getStylesheetElementsNotInSnapshot(snapshot) {\n        return this.getElementsMatchingTypeNotInSnapshot(\"stylesheet\", snapshot);\n    }\n    getElementsMatchingTypeNotInSnapshot(matchedType, snapshot) {\n        return Object.keys(this.detailsByOuterHTML)\n            .filter((outerHTML) => !(outerHTML in snapshot.detailsByOuterHTML))\n            .map((outerHTML) => this.detailsByOuterHTML[outerHTML])\n            .filter(({ type }) => type == matchedType)\n            .map(({ elements: [element] }) => element);\n    }\n    get provisionalElements() {\n        return Object.keys(this.detailsByOuterHTML).reduce((result, outerHTML) => {\n            const { type, tracked, elements } = this.detailsByOuterHTML[outerHTML];\n            if (type == null && !tracked) {\n                return [...result, ...elements];\n            }\n            else if (elements.length > 1) {\n                return [...result, ...elements.slice(1)];\n            }\n            else {\n                return result;\n            }\n        }, []);\n    }\n    getMetaValue(name) {\n        const element = this.findMetaElementByName(name);\n        return element ? element.getAttribute(\"content\") : null;\n    }\n    findMetaElementByName(name) {\n        return Object.keys(this.detailsByOuterHTML).reduce((result, outerHTML) => {\n            const { elements: [element], } = this.detailsByOuterHTML[outerHTML];\n            return elementIsMetaElementWithName(element, name) ? element : result;\n        }, undefined);\n    }\n}\nfunction elementType(element) {\n    if (elementIsScript(element)) {\n        return \"script\";\n    }\n    else if (elementIsStylesheet(element)) {\n        return \"stylesheet\";\n    }\n}\nfunction elementIsTracked(element) {\n    return element.getAttribute(\"data-turbo-track\") == \"reload\";\n}\nfunction elementIsScript(element) {\n    const tagName = element.localName;\n    return tagName == \"script\";\n}\nfunction elementIsNoscript(element) {\n    const tagName = element.localName;\n    return tagName == \"noscript\";\n}\nfunction elementIsStylesheet(element) {\n    const tagName = element.localName;\n    return tagName == \"style\" || (tagName == \"link\" && element.getAttribute(\"rel\") == \"stylesheet\");\n}\nfunction elementIsMetaElementWithName(element, name) {\n    const tagName = element.localName;\n    return tagName == \"meta\" && element.getAttribute(\"name\") == name;\n}\nfunction elementWithoutNonce(element) {\n    if (element.hasAttribute(\"nonce\")) {\n        element.setAttribute(\"nonce\", \"\");\n    }\n    return element;\n}\n\nclass PageSnapshot extends Snapshot {\n    static fromHTMLString(html = \"\") {\n        return this.fromDocument(parseHTMLDocument(html));\n    }\n    static fromElement(element) {\n        return this.fromDocument(element.ownerDocument);\n    }\n    static fromDocument({ head, body }) {\n        return new this(body, new HeadSnapshot(head));\n    }\n    constructor(element, headSnapshot) {\n        super(element);\n        this.headSnapshot = headSnapshot;\n    }\n    clone() {\n        const clonedElement = this.element.cloneNode(true);\n        const selectElements = this.element.querySelectorAll(\"select\");\n        const clonedSelectElements = clonedElement.querySelectorAll(\"select\");\n        for (const [index, source] of selectElements.entries()) {\n            const clone = clonedSelectElements[index];\n            for (const option of clone.selectedOptions)\n                option.selected = false;\n            for (const option of source.selectedOptions)\n                clone.options[option.index].selected = true;\n        }\n        for (const clonedPasswordInput of clonedElement.querySelectorAll('input[type=\"password\"]')) {\n            clonedPasswordInput.value = \"\";\n        }\n        return new PageSnapshot(clonedElement, this.headSnapshot);\n    }\n    get headElement() {\n        return this.headSnapshot.element;\n    }\n    get rootLocation() {\n        var _a;\n        const root = (_a = this.getSetting(\"root\")) !== null && _a !== void 0 ? _a : \"/\";\n        return expandURL(root);\n    }\n    get cacheControlValue() {\n        return this.getSetting(\"cache-control\");\n    }\n    get isPreviewable() {\n        return this.cacheControlValue != \"no-preview\";\n    }\n    get isCacheable() {\n        return this.cacheControlValue != \"no-cache\";\n    }\n    get isVisitable() {\n        return this.getSetting(\"visit-control\") != \"reload\";\n    }\n    getSetting(name) {\n        return this.headSnapshot.getMetaValue(`turbo-${name}`);\n    }\n}\n\nvar TimingMetric;\n(function (TimingMetric) {\n    TimingMetric[\"visitStart\"] = \"visitStart\";\n    TimingMetric[\"requestStart\"] = \"requestStart\";\n    TimingMetric[\"requestEnd\"] = \"requestEnd\";\n    TimingMetric[\"visitEnd\"] = \"visitEnd\";\n})(TimingMetric || (TimingMetric = {}));\nvar VisitState;\n(function (VisitState) {\n    VisitState[\"initialized\"] = \"initialized\";\n    VisitState[\"started\"] = \"started\";\n    VisitState[\"canceled\"] = \"canceled\";\n    VisitState[\"failed\"] = \"failed\";\n    VisitState[\"completed\"] = \"completed\";\n})(VisitState || (VisitState = {}));\nconst defaultOptions = {\n    action: \"advance\",\n    historyChanged: false,\n    visitCachedSnapshot: () => { },\n    willRender: true,\n    updateHistory: true,\n    shouldCacheSnapshot: true,\n    acceptsStreamResponse: false,\n};\nvar SystemStatusCode;\n(function (SystemStatusCode) {\n    SystemStatusCode[SystemStatusCode[\"networkFailure\"] = 0] = \"networkFailure\";\n    SystemStatusCode[SystemStatusCode[\"timeoutFailure\"] = -1] = \"timeoutFailure\";\n    SystemStatusCode[SystemStatusCode[\"contentTypeMismatch\"] = -2] = \"contentTypeMismatch\";\n})(SystemStatusCode || (SystemStatusCode = {}));\nclass Visit {\n    constructor(delegate, location, restorationIdentifier, options = {}) {\n        this.identifier = uuid();\n        this.timingMetrics = {};\n        this.followedRedirect = false;\n        this.historyChanged = false;\n        this.scrolled = false;\n        this.shouldCacheSnapshot = true;\n        this.acceptsStreamResponse = false;\n        this.snapshotCached = false;\n        this.state = VisitState.initialized;\n        this.delegate = delegate;\n        this.location = location;\n        this.restorationIdentifier = restorationIdentifier || uuid();\n        const { action, historyChanged, referrer, snapshot, snapshotHTML, response, visitCachedSnapshot, willRender, updateHistory, shouldCacheSnapshot, acceptsStreamResponse, } = Object.assign(Object.assign({}, defaultOptions), options);\n        this.action = action;\n        this.historyChanged = historyChanged;\n        this.referrer = referrer;\n        this.snapshot = snapshot;\n        this.snapshotHTML = snapshotHTML;\n        this.response = response;\n        this.isSamePage = this.delegate.locationWithActionIsSamePage(this.location, this.action);\n        this.visitCachedSnapshot = visitCachedSnapshot;\n        this.willRender = willRender;\n        this.updateHistory = updateHistory;\n        this.scrolled = !willRender;\n        this.shouldCacheSnapshot = shouldCacheSnapshot;\n        this.acceptsStreamResponse = acceptsStreamResponse;\n    }\n    get adapter() {\n        return this.delegate.adapter;\n    }\n    get view() {\n        return this.delegate.view;\n    }\n    get history() {\n        return this.delegate.history;\n    }\n    get restorationData() {\n        return this.history.getRestorationDataForIdentifier(this.restorationIdentifier);\n    }\n    get silent() {\n        return this.isSamePage;\n    }\n    start() {\n        if (this.state == VisitState.initialized) {\n            this.recordTimingMetric(TimingMetric.visitStart);\n            this.state = VisitState.started;\n            this.adapter.visitStarted(this);\n            this.delegate.visitStarted(this);\n        }\n    }\n    cancel() {\n        if (this.state == VisitState.started) {\n            if (this.request) {\n                this.request.cancel();\n            }\n            this.cancelRender();\n            this.state = VisitState.canceled;\n        }\n    }\n    complete() {\n        if (this.state == VisitState.started) {\n            this.recordTimingMetric(TimingMetric.visitEnd);\n            this.state = VisitState.completed;\n            this.followRedirect();\n            if (!this.followedRedirect) {\n                this.adapter.visitCompleted(this);\n                this.delegate.visitCompleted(this);\n            }\n        }\n    }\n    fail() {\n        if (this.state == VisitState.started) {\n            this.state = VisitState.failed;\n            this.adapter.visitFailed(this);\n        }\n    }\n    changeHistory() {\n        var _a;\n        if (!this.historyChanged && this.updateHistory) {\n            const actionForHistory = this.location.href === ((_a = this.referrer) === null || _a === void 0 ? void 0 : _a.href) ? \"replace\" : this.action;\n            const method = getHistoryMethodForAction(actionForHistory);\n            this.history.update(method, this.location, this.restorationIdentifier);\n            this.historyChanged = true;\n        }\n    }\n    issueRequest() {\n        if (this.hasPreloadedResponse()) {\n            this.simulateRequest();\n        }\n        else if (this.shouldIssueRequest() && !this.request) {\n            this.request = new FetchRequest(this, FetchMethod.get, this.location);\n            this.request.perform();\n        }\n    }\n    simulateRequest() {\n        if (this.response) {\n            this.startRequest();\n            this.recordResponse();\n            this.finishRequest();\n        }\n    }\n    startRequest() {\n        this.recordTimingMetric(TimingMetric.requestStart);\n        this.adapter.visitRequestStarted(this);\n    }\n    recordResponse(response = this.response) {\n        this.response = response;\n        if (response) {\n            const { statusCode } = response;\n            if (isSuccessful(statusCode)) {\n                this.adapter.visitRequestCompleted(this);\n            }\n            else {\n                this.adapter.visitRequestFailedWithStatusCode(this, statusCode);\n            }\n        }\n    }\n    finishRequest() {\n        this.recordTimingMetric(TimingMetric.requestEnd);\n        this.adapter.visitRequestFinished(this);\n    }\n    loadResponse() {\n        if (this.response) {\n            const { statusCode, responseHTML } = this.response;\n            this.render(async () => {\n                if (this.shouldCacheSnapshot)\n                    this.cacheSnapshot();\n                if (this.view.renderPromise)\n                    await this.view.renderPromise;\n                if (isSuccessful(statusCode) && responseHTML != null) {\n                    await this.view.renderPage(PageSnapshot.fromHTMLString(responseHTML), false, this.willRender, this);\n                    this.performScroll();\n                    this.adapter.visitRendered(this);\n                    this.complete();\n                }\n                else {\n                    await this.view.renderError(PageSnapshot.fromHTMLString(responseHTML), this);\n                    this.adapter.visitRendered(this);\n                    this.fail();\n                }\n            });\n        }\n    }\n    getCachedSnapshot() {\n        const snapshot = this.view.getCachedSnapshotForLocation(this.location) || this.getPreloadedSnapshot();\n        if (snapshot && (!getAnchor(this.location) || snapshot.hasAnchor(getAnchor(this.location)))) {\n            if (this.action == \"restore\" || snapshot.isPreviewable) {\n                return snapshot;\n            }\n        }\n    }\n    getPreloadedSnapshot() {\n        if (this.snapshotHTML) {\n            return PageSnapshot.fromHTMLString(this.snapshotHTML);\n        }\n    }\n    hasCachedSnapshot() {\n        return this.getCachedSnapshot() != null;\n    }\n    loadCachedSnapshot() {\n        const snapshot = this.getCachedSnapshot();\n        if (snapshot) {\n            const isPreview = this.shouldIssueRequest();\n            this.render(async () => {\n                this.cacheSnapshot();\n                if (this.isSamePage) {\n                    this.adapter.visitRendered(this);\n                }\n                else {\n                    if (this.view.renderPromise)\n                        await this.view.renderPromise;\n                    await this.view.renderPage(snapshot, isPreview, this.willRender, this);\n                    this.performScroll();\n                    this.adapter.visitRendered(this);\n                    if (!isPreview) {\n                        this.complete();\n                    }\n                }\n            });\n        }\n    }\n    followRedirect() {\n        var _a;\n        if (this.redirectedToLocation && !this.followedRedirect && ((_a = this.response) === null || _a === void 0 ? void 0 : _a.redirected)) {\n            this.adapter.visitProposedToLocation(this.redirectedToLocation, {\n                action: \"replace\",\n                response: this.response,\n                shouldCacheSnapshot: false,\n                willRender: false,\n            });\n            this.followedRedirect = true;\n        }\n    }\n    goToSamePageAnchor() {\n        if (this.isSamePage) {\n            this.render(async () => {\n                this.cacheSnapshot();\n                this.performScroll();\n                this.changeHistory();\n                this.adapter.visitRendered(this);\n            });\n        }\n    }\n    prepareRequest(request) {\n        if (this.acceptsStreamResponse) {\n            request.acceptResponseType(StreamMessage.contentType);\n        }\n    }\n    requestStarted() {\n        this.startRequest();\n    }\n    requestPreventedHandlingResponse(_request, _response) { }\n    async requestSucceededWithResponse(request, response) {\n        const responseHTML = await response.responseHTML;\n        const { redirected, statusCode } = response;\n        if (responseHTML == undefined) {\n            this.recordResponse({\n                statusCode: SystemStatusCode.contentTypeMismatch,\n                redirected,\n            });\n        }\n        else {\n            this.redirectedToLocation = response.redirected ? response.location : undefined;\n            this.recordResponse({ statusCode: statusCode, responseHTML, redirected });\n        }\n    }\n    async requestFailedWithResponse(request, response) {\n        const responseHTML = await response.responseHTML;\n        const { redirected, statusCode } = response;\n        if (responseHTML == undefined) {\n            this.recordResponse({\n                statusCode: SystemStatusCode.contentTypeMismatch,\n                redirected,\n            });\n        }\n        else {\n            this.recordResponse({ statusCode: statusCode, responseHTML, redirected });\n        }\n    }\n    requestErrored(_request, _error) {\n        this.recordResponse({\n            statusCode: SystemStatusCode.networkFailure,\n            redirected: false,\n        });\n    }\n    requestFinished() {\n        this.finishRequest();\n    }\n    performScroll() {\n        if (!this.scrolled && !this.view.forceReloaded) {\n            if (this.action == \"restore\") {\n                this.scrollToRestoredPosition() || this.scrollToAnchor() || this.view.scrollToTop();\n            }\n            else {\n                this.scrollToAnchor() || this.view.scrollToTop();\n            }\n            if (this.isSamePage) {\n                this.delegate.visitScrolledToSamePageLocation(this.view.lastRenderedLocation, this.location);\n            }\n            this.scrolled = true;\n        }\n    }\n    scrollToRestoredPosition() {\n        const { scrollPosition } = this.restorationData;\n        if (scrollPosition) {\n            this.view.scrollToPosition(scrollPosition);\n            return true;\n        }\n    }\n    scrollToAnchor() {\n        const anchor = getAnchor(this.location);\n        if (anchor != null) {\n            this.view.scrollToAnchor(anchor);\n            return true;\n        }\n    }\n    recordTimingMetric(metric) {\n        this.timingMetrics[metric] = new Date().getTime();\n    }\n    getTimingMetrics() {\n        return Object.assign({}, this.timingMetrics);\n    }\n    getHistoryMethodForAction(action) {\n        switch (action) {\n            case \"replace\":\n                return history.replaceState;\n            case \"advance\":\n            case \"restore\":\n                return history.pushState;\n        }\n    }\n    hasPreloadedResponse() {\n        return typeof this.response == \"object\";\n    }\n    shouldIssueRequest() {\n        if (this.isSamePage) {\n            return false;\n        }\n        else if (this.action == \"restore\") {\n            return !this.hasCachedSnapshot();\n        }\n        else {\n            return this.willRender;\n        }\n    }\n    cacheSnapshot() {\n        if (!this.snapshotCached) {\n            this.view.cacheSnapshot(this.snapshot).then((snapshot) => snapshot && this.visitCachedSnapshot(snapshot));\n            this.snapshotCached = true;\n        }\n    }\n    async render(callback) {\n        this.cancelRender();\n        await new Promise((resolve) => {\n            this.frame = requestAnimationFrame(() => resolve());\n        });\n        await callback();\n        delete this.frame;\n    }\n    cancelRender() {\n        if (this.frame) {\n            cancelAnimationFrame(this.frame);\n            delete this.frame;\n        }\n    }\n}\nfunction isSuccessful(statusCode) {\n    return statusCode >= 200 && statusCode < 300;\n}\n\nclass BrowserAdapter {\n    constructor(session) {\n        this.progressBar = new ProgressBar();\n        this.showProgressBar = () => {\n            this.progressBar.show();\n        };\n        this.session = session;\n    }\n    visitProposedToLocation(location, options) {\n        this.navigator.startVisit(location, (options === null || options === void 0 ? void 0 : options.restorationIdentifier) || uuid(), options);\n    }\n    visitStarted(visit) {\n        this.location = visit.location;\n        visit.loadCachedSnapshot();\n        visit.issueRequest();\n        visit.goToSamePageAnchor();\n    }\n    visitRequestStarted(visit) {\n        this.progressBar.setValue(0);\n        if (visit.hasCachedSnapshot() || visit.action != \"restore\") {\n            this.showVisitProgressBarAfterDelay();\n        }\n        else {\n            this.showProgressBar();\n        }\n    }\n    visitRequestCompleted(visit) {\n        visit.loadResponse();\n    }\n    visitRequestFailedWithStatusCode(visit, statusCode) {\n        switch (statusCode) {\n            case SystemStatusCode.networkFailure:\n            case SystemStatusCode.timeoutFailure:\n            case SystemStatusCode.contentTypeMismatch:\n                return this.reload({\n                    reason: \"request_failed\",\n                    context: {\n                        statusCode,\n                    },\n                });\n            default:\n                return visit.loadResponse();\n        }\n    }\n    visitRequestFinished(_visit) {\n        this.progressBar.setValue(1);\n        this.hideVisitProgressBar();\n    }\n    visitCompleted(_visit) { }\n    pageInvalidated(reason) {\n        this.reload(reason);\n    }\n    visitFailed(_visit) { }\n    visitRendered(_visit) { }\n    formSubmissionStarted(_formSubmission) {\n        this.progressBar.setValue(0);\n        this.showFormProgressBarAfterDelay();\n    }\n    formSubmissionFinished(_formSubmission) {\n        this.progressBar.setValue(1);\n        this.hideFormProgressBar();\n    }\n    showVisitProgressBarAfterDelay() {\n        this.visitProgressBarTimeout = window.setTimeout(this.showProgressBar, this.session.progressBarDelay);\n    }\n    hideVisitProgressBar() {\n        this.progressBar.hide();\n        if (this.visitProgressBarTimeout != null) {\n            window.clearTimeout(this.visitProgressBarTimeout);\n            delete this.visitProgressBarTimeout;\n        }\n    }\n    showFormProgressBarAfterDelay() {\n        if (this.formProgressBarTimeout == null) {\n            this.formProgressBarTimeout = window.setTimeout(this.showProgressBar, this.session.progressBarDelay);\n        }\n    }\n    hideFormProgressBar() {\n        this.progressBar.hide();\n        if (this.formProgressBarTimeout != null) {\n            window.clearTimeout(this.formProgressBarTimeout);\n            delete this.formProgressBarTimeout;\n        }\n    }\n    reload(reason) {\n        var _a;\n        dispatch(\"turbo:reload\", { detail: reason });\n        window.location.href = ((_a = this.location) === null || _a === void 0 ? void 0 : _a.toString()) || window.location.href;\n    }\n    get navigator() {\n        return this.session.navigator;\n    }\n}\n\nclass CacheObserver {\n    constructor() {\n        this.selector = \"[data-turbo-temporary]\";\n        this.deprecatedSelector = \"[data-turbo-cache=false]\";\n        this.started = false;\n        this.removeTemporaryElements = ((_event) => {\n            for (const element of this.temporaryElements) {\n                element.remove();\n            }\n        });\n    }\n    start() {\n        if (!this.started) {\n            this.started = true;\n            addEventListener(\"turbo:before-cache\", this.removeTemporaryElements, false);\n        }\n    }\n    stop() {\n        if (this.started) {\n            this.started = false;\n            removeEventListener(\"turbo:before-cache\", this.removeTemporaryElements, false);\n        }\n    }\n    get temporaryElements() {\n        return [...document.querySelectorAll(this.selector), ...this.temporaryElementsWithDeprecation];\n    }\n    get temporaryElementsWithDeprecation() {\n        const elements = document.querySelectorAll(this.deprecatedSelector);\n        if (elements.length) {\n            console.warn(`The ${this.deprecatedSelector} selector is deprecated and will be removed in a future version. Use ${this.selector} instead.`);\n        }\n        return [...elements];\n    }\n}\n\nclass FrameRedirector {\n    constructor(session, element) {\n        this.session = session;\n        this.element = element;\n        this.linkInterceptor = new LinkInterceptor(this, element);\n        this.formSubmitObserver = new FormSubmitObserver(this, element);\n    }\n    start() {\n        this.linkInterceptor.start();\n        this.formSubmitObserver.start();\n    }\n    stop() {\n        this.linkInterceptor.stop();\n        this.formSubmitObserver.stop();\n    }\n    shouldInterceptLinkClick(element, _location, _event) {\n        return this.shouldRedirect(element);\n    }\n    linkClickIntercepted(element, url, event) {\n        const frame = this.findFrameElement(element);\n        if (frame) {\n            frame.delegate.linkClickIntercepted(element, url, event);\n        }\n    }\n    willSubmitForm(element, submitter) {\n        return (element.closest(\"turbo-frame\") == null &&\n            this.shouldSubmit(element, submitter) &&\n            this.shouldRedirect(element, submitter));\n    }\n    formSubmitted(element, submitter) {\n        const frame = this.findFrameElement(element, submitter);\n        if (frame) {\n            frame.delegate.formSubmitted(element, submitter);\n        }\n    }\n    shouldSubmit(form, submitter) {\n        var _a;\n        const action = getAction(form, submitter);\n        const meta = this.element.ownerDocument.querySelector(`meta[name=\"turbo-root\"]`);\n        const rootLocation = expandURL((_a = meta === null || meta === void 0 ? void 0 : meta.content) !== null && _a !== void 0 ? _a : \"/\");\n        return this.shouldRedirect(form, submitter) && locationIsVisitable(action, rootLocation);\n    }\n    shouldRedirect(element, submitter) {\n        const isNavigatable = element instanceof HTMLFormElement\n            ? this.session.submissionIsNavigatable(element, submitter)\n            : this.session.elementIsNavigatable(element);\n        if (isNavigatable) {\n            const frame = this.findFrameElement(element, submitter);\n            return frame ? frame != element.closest(\"turbo-frame\") : false;\n        }\n        else {\n            return false;\n        }\n    }\n    findFrameElement(element, submitter) {\n        const id = (submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"data-turbo-frame\")) || element.getAttribute(\"data-turbo-frame\");\n        if (id && id != \"_top\") {\n            const frame = this.element.querySelector(`#${id}:not([disabled])`);\n            if (frame instanceof FrameElement) {\n                return frame;\n            }\n        }\n    }\n}\n\nclass History {\n    constructor(delegate) {\n        this.restorationIdentifier = uuid();\n        this.restorationData = {};\n        this.started = false;\n        this.pageLoaded = false;\n        this.onPopState = (event) => {\n            if (this.shouldHandlePopState()) {\n                const { turbo } = event.state || {};\n                if (turbo) {\n                    this.location = new URL(window.location.href);\n                    const { restorationIdentifier } = turbo;\n                    this.restorationIdentifier = restorationIdentifier;\n                    this.delegate.historyPoppedToLocationWithRestorationIdentifier(this.location, restorationIdentifier);\n                }\n            }\n        };\n        this.onPageLoad = async (_event) => {\n            await nextMicrotask();\n            this.pageLoaded = true;\n        };\n        this.delegate = delegate;\n    }\n    start() {\n        if (!this.started) {\n            addEventListener(\"popstate\", this.onPopState, false);\n            addEventListener(\"load\", this.onPageLoad, false);\n            this.started = true;\n            this.replace(new URL(window.location.href));\n        }\n    }\n    stop() {\n        if (this.started) {\n            removeEventListener(\"popstate\", this.onPopState, false);\n            removeEventListener(\"load\", this.onPageLoad, false);\n            this.started = false;\n        }\n    }\n    push(location, restorationIdentifier) {\n        this.update(history.pushState, location, restorationIdentifier);\n    }\n    replace(location, restorationIdentifier) {\n        this.update(history.replaceState, location, restorationIdentifier);\n    }\n    update(method, location, restorationIdentifier = uuid()) {\n        const state = { turbo: { restorationIdentifier } };\n        method.call(history, state, \"\", location.href);\n        this.location = location;\n        this.restorationIdentifier = restorationIdentifier;\n    }\n    getRestorationDataForIdentifier(restorationIdentifier) {\n        return this.restorationData[restorationIdentifier] || {};\n    }\n    updateRestorationData(additionalData) {\n        const { restorationIdentifier } = this;\n        const restorationData = this.restorationData[restorationIdentifier];\n        this.restorationData[restorationIdentifier] = Object.assign(Object.assign({}, restorationData), additionalData);\n    }\n    assumeControlOfScrollRestoration() {\n        var _a;\n        if (!this.previousScrollRestoration) {\n            this.previousScrollRestoration = (_a = history.scrollRestoration) !== null && _a !== void 0 ? _a : \"auto\";\n            history.scrollRestoration = \"manual\";\n        }\n    }\n    relinquishControlOfScrollRestoration() {\n        if (this.previousScrollRestoration) {\n            history.scrollRestoration = this.previousScrollRestoration;\n            delete this.previousScrollRestoration;\n        }\n    }\n    shouldHandlePopState() {\n        return this.pageIsLoaded();\n    }\n    pageIsLoaded() {\n        return this.pageLoaded || document.readyState == \"complete\";\n    }\n}\n\nclass Navigator {\n    constructor(delegate) {\n        this.delegate = delegate;\n    }\n    proposeVisit(location, options = {}) {\n        if (this.delegate.allowsVisitingLocationWithAction(location, options.action)) {\n            if (locationIsVisitable(location, this.view.snapshot.rootLocation)) {\n                this.delegate.visitProposedToLocation(location, options);\n            }\n            else {\n                window.location.href = location.toString();\n            }\n        }\n    }\n    startVisit(locatable, restorationIdentifier, options = {}) {\n        this.stop();\n        this.currentVisit = new Visit(this, expandURL(locatable), restorationIdentifier, Object.assign({ referrer: this.location }, options));\n        this.currentVisit.start();\n    }\n    submitForm(form, submitter) {\n        this.stop();\n        this.formSubmission = new FormSubmission(this, form, submitter, true);\n        this.formSubmission.start();\n    }\n    stop() {\n        if (this.formSubmission) {\n            this.formSubmission.stop();\n            delete this.formSubmission;\n        }\n        if (this.currentVisit) {\n            this.currentVisit.cancel();\n            delete this.currentVisit;\n        }\n    }\n    get adapter() {\n        return this.delegate.adapter;\n    }\n    get view() {\n        return this.delegate.view;\n    }\n    get history() {\n        return this.delegate.history;\n    }\n    formSubmissionStarted(formSubmission) {\n        if (typeof this.adapter.formSubmissionStarted === \"function\") {\n            this.adapter.formSubmissionStarted(formSubmission);\n        }\n    }\n    async formSubmissionSucceededWithResponse(formSubmission, fetchResponse) {\n        if (formSubmission == this.formSubmission) {\n            const responseHTML = await fetchResponse.responseHTML;\n            if (responseHTML) {\n                const shouldCacheSnapshot = formSubmission.isSafe;\n                if (!shouldCacheSnapshot) {\n                    this.view.clearSnapshotCache();\n                }\n                const { statusCode, redirected } = fetchResponse;\n                const action = this.getActionForFormSubmission(formSubmission);\n                const visitOptions = {\n                    action,\n                    shouldCacheSnapshot,\n                    response: { statusCode, responseHTML, redirected },\n                };\n                this.proposeVisit(fetchResponse.location, visitOptions);\n            }\n        }\n    }\n    async formSubmissionFailedWithResponse(formSubmission, fetchResponse) {\n        const responseHTML = await fetchResponse.responseHTML;\n        if (responseHTML) {\n            const snapshot = PageSnapshot.fromHTMLString(responseHTML);\n            if (fetchResponse.serverError) {\n                await this.view.renderError(snapshot, this.currentVisit);\n            }\n            else {\n                await this.view.renderPage(snapshot, false, true, this.currentVisit);\n            }\n            this.view.scrollToTop();\n            this.view.clearSnapshotCache();\n        }\n    }\n    formSubmissionErrored(formSubmission, error) {\n        console.error(error);\n    }\n    formSubmissionFinished(formSubmission) {\n        if (typeof this.adapter.formSubmissionFinished === \"function\") {\n            this.adapter.formSubmissionFinished(formSubmission);\n        }\n    }\n    visitStarted(visit) {\n        this.delegate.visitStarted(visit);\n    }\n    visitCompleted(visit) {\n        this.delegate.visitCompleted(visit);\n    }\n    locationWithActionIsSamePage(location, action) {\n        const anchor = getAnchor(location);\n        const currentAnchor = getAnchor(this.view.lastRenderedLocation);\n        const isRestorationToTop = action === \"restore\" && typeof anchor === \"undefined\";\n        return (action !== \"replace\" &&\n            getRequestURL(location) === getRequestURL(this.view.lastRenderedLocation) &&\n            (isRestorationToTop || (anchor != null && anchor !== currentAnchor)));\n    }\n    visitScrolledToSamePageLocation(oldURL, newURL) {\n        this.delegate.visitScrolledToSamePageLocation(oldURL, newURL);\n    }\n    get location() {\n        return this.history.location;\n    }\n    get restorationIdentifier() {\n        return this.history.restorationIdentifier;\n    }\n    getActionForFormSubmission({ submitter, formElement }) {\n        return getVisitAction(submitter, formElement) || \"advance\";\n    }\n}\n\nvar PageStage;\n(function (PageStage) {\n    PageStage[PageStage[\"initial\"] = 0] = \"initial\";\n    PageStage[PageStage[\"loading\"] = 1] = \"loading\";\n    PageStage[PageStage[\"interactive\"] = 2] = \"interactive\";\n    PageStage[PageStage[\"complete\"] = 3] = \"complete\";\n})(PageStage || (PageStage = {}));\nclass PageObserver {\n    constructor(delegate) {\n        this.stage = PageStage.initial;\n        this.started = false;\n        this.interpretReadyState = () => {\n            const { readyState } = this;\n            if (readyState == \"interactive\") {\n                this.pageIsInteractive();\n            }\n            else if (readyState == \"complete\") {\n                this.pageIsComplete();\n            }\n        };\n        this.pageWillUnload = () => {\n            this.delegate.pageWillUnload();\n        };\n        this.delegate = delegate;\n    }\n    start() {\n        if (!this.started) {\n            if (this.stage == PageStage.initial) {\n                this.stage = PageStage.loading;\n            }\n            document.addEventListener(\"readystatechange\", this.interpretReadyState, false);\n            addEventListener(\"pagehide\", this.pageWillUnload, false);\n            this.started = true;\n        }\n    }\n    stop() {\n        if (this.started) {\n            document.removeEventListener(\"readystatechange\", this.interpretReadyState, false);\n            removeEventListener(\"pagehide\", this.pageWillUnload, false);\n            this.started = false;\n        }\n    }\n    pageIsInteractive() {\n        if (this.stage == PageStage.loading) {\n            this.stage = PageStage.interactive;\n            this.delegate.pageBecameInteractive();\n        }\n    }\n    pageIsComplete() {\n        this.pageIsInteractive();\n        if (this.stage == PageStage.interactive) {\n            this.stage = PageStage.complete;\n            this.delegate.pageLoaded();\n        }\n    }\n    get readyState() {\n        return document.readyState;\n    }\n}\n\nclass ScrollObserver {\n    constructor(delegate) {\n        this.started = false;\n        this.onScroll = () => {\n            this.updatePosition({ x: window.pageXOffset, y: window.pageYOffset });\n        };\n        this.delegate = delegate;\n    }\n    start() {\n        if (!this.started) {\n            addEventListener(\"scroll\", this.onScroll, false);\n            this.onScroll();\n            this.started = true;\n        }\n    }\n    stop() {\n        if (this.started) {\n            removeEventListener(\"scroll\", this.onScroll, false);\n            this.started = false;\n        }\n    }\n    updatePosition(position) {\n        this.delegate.scrollPositionChanged(position);\n    }\n}\n\nclass StreamMessageRenderer {\n    render({ fragment }) {\n        Bardo.preservingPermanentElements(this, getPermanentElementMapForFragment(fragment), () => document.documentElement.appendChild(fragment));\n    }\n    enteringBardo(currentPermanentElement, newPermanentElement) {\n        newPermanentElement.replaceWith(currentPermanentElement.cloneNode(true));\n    }\n    leavingBardo() { }\n}\nfunction getPermanentElementMapForFragment(fragment) {\n    const permanentElementsInDocument = queryPermanentElementsAll(document.documentElement);\n    const permanentElementMap = {};\n    for (const permanentElementInDocument of permanentElementsInDocument) {\n        const { id } = permanentElementInDocument;\n        for (const streamElement of fragment.querySelectorAll(\"turbo-stream\")) {\n            const elementInStream = getPermanentElementById(streamElement.templateElement.content, id);\n            if (elementInStream) {\n                permanentElementMap[id] = [permanentElementInDocument, elementInStream];\n            }\n        }\n    }\n    return permanentElementMap;\n}\n\nclass StreamObserver {\n    constructor(delegate) {\n        this.sources = new Set();\n        this.started = false;\n        this.inspectFetchResponse = ((event) => {\n            const response = fetchResponseFromEvent(event);\n            if (response && fetchResponseIsStream(response)) {\n                event.preventDefault();\n                this.receiveMessageResponse(response);\n            }\n        });\n        this.receiveMessageEvent = (event) => {\n            if (this.started && typeof event.data == \"string\") {\n                this.receiveMessageHTML(event.data);\n            }\n        };\n        this.delegate = delegate;\n    }\n    start() {\n        if (!this.started) {\n            this.started = true;\n            addEventListener(\"turbo:before-fetch-response\", this.inspectFetchResponse, false);\n        }\n    }\n    stop() {\n        if (this.started) {\n            this.started = false;\n            removeEventListener(\"turbo:before-fetch-response\", this.inspectFetchResponse, false);\n        }\n    }\n    connectStreamSource(source) {\n        if (!this.streamSourceIsConnected(source)) {\n            this.sources.add(source);\n            source.addEventListener(\"message\", this.receiveMessageEvent, false);\n        }\n    }\n    disconnectStreamSource(source) {\n        if (this.streamSourceIsConnected(source)) {\n            this.sources.delete(source);\n            source.removeEventListener(\"message\", this.receiveMessageEvent, false);\n        }\n    }\n    streamSourceIsConnected(source) {\n        return this.sources.has(source);\n    }\n    async receiveMessageResponse(response) {\n        const html = await response.responseHTML;\n        if (html) {\n            this.receiveMessageHTML(html);\n        }\n    }\n    receiveMessageHTML(html) {\n        this.delegate.receivedMessageFromStream(StreamMessage.wrap(html));\n    }\n}\nfunction fetchResponseFromEvent(event) {\n    var _a;\n    const fetchResponse = (_a = event.detail) === null || _a === void 0 ? void 0 : _a.fetchResponse;\n    if (fetchResponse instanceof FetchResponse) {\n        return fetchResponse;\n    }\n}\nfunction fetchResponseIsStream(response) {\n    var _a;\n    const contentType = (_a = response.contentType) !== null && _a !== void 0 ? _a : \"\";\n    return contentType.startsWith(StreamMessage.contentType);\n}\n\nclass ErrorRenderer extends Renderer {\n    static renderElement(currentElement, newElement) {\n        const { documentElement, body } = document;\n        documentElement.replaceChild(newElement, body);\n    }\n    async render() {\n        this.replaceHeadAndBody();\n        this.activateScriptElements();\n    }\n    replaceHeadAndBody() {\n        const { documentElement, head } = document;\n        documentElement.replaceChild(this.newHead, head);\n        this.renderElement(this.currentElement, this.newElement);\n    }\n    activateScriptElements() {\n        for (const replaceableElement of this.scriptElements) {\n            const parentNode = replaceableElement.parentNode;\n            if (parentNode) {\n                const element = activateScriptElement(replaceableElement);\n                parentNode.replaceChild(element, replaceableElement);\n            }\n        }\n    }\n    get newHead() {\n        return this.newSnapshot.headSnapshot.element;\n    }\n    get scriptElements() {\n        return document.documentElement.querySelectorAll(\"script\");\n    }\n}\n\nclass PageRenderer extends Renderer {\n    static renderElement(currentElement, newElement) {\n        if (document.body && newElement instanceof HTMLBodyElement) {\n            document.body.replaceWith(newElement);\n        }\n        else {\n            document.documentElement.appendChild(newElement);\n        }\n    }\n    get shouldRender() {\n        return this.newSnapshot.isVisitable && this.trackedElementsAreIdentical;\n    }\n    get reloadReason() {\n        if (!this.newSnapshot.isVisitable) {\n            return {\n                reason: \"turbo_visit_control_is_reload\",\n            };\n        }\n        if (!this.trackedElementsAreIdentical) {\n            return {\n                reason: \"tracked_element_mismatch\",\n            };\n        }\n    }\n    async prepareToRender() {\n        await this.mergeHead();\n    }\n    async render() {\n        if (this.willRender) {\n            await this.replaceBody();\n        }\n    }\n    finishRendering() {\n        super.finishRendering();\n        if (!this.isPreview) {\n            this.focusFirstAutofocusableElement();\n        }\n    }\n    get currentHeadSnapshot() {\n        return this.currentSnapshot.headSnapshot;\n    }\n    get newHeadSnapshot() {\n        return this.newSnapshot.headSnapshot;\n    }\n    get newElement() {\n        return this.newSnapshot.element;\n    }\n    async mergeHead() {\n        const mergedHeadElements = this.mergeProvisionalElements();\n        const newStylesheetElements = this.copyNewHeadStylesheetElements();\n        this.copyNewHeadScriptElements();\n        await mergedHeadElements;\n        await newStylesheetElements;\n    }\n    async replaceBody() {\n        await this.preservingPermanentElements(async () => {\n            this.activateNewBody();\n            await this.assignNewBody();\n        });\n    }\n    get trackedElementsAreIdentical() {\n        return this.currentHeadSnapshot.trackedElementSignature == this.newHeadSnapshot.trackedElementSignature;\n    }\n    async copyNewHeadStylesheetElements() {\n        const loadingElements = [];\n        for (const element of this.newHeadStylesheetElements) {\n            loadingElements.push(waitForLoad(element));\n            document.head.appendChild(element);\n        }\n        await Promise.all(loadingElements);\n    }\n    copyNewHeadScriptElements() {\n        for (const element of this.newHeadScriptElements) {\n            document.head.appendChild(activateScriptElement(element));\n        }\n    }\n    async mergeProvisionalElements() {\n        const newHeadElements = [...this.newHeadProvisionalElements];\n        for (const element of this.currentHeadProvisionalElements) {\n            if (!this.isCurrentElementInElementList(element, newHeadElements)) {\n                document.head.removeChild(element);\n            }\n        }\n        for (const element of newHeadElements) {\n            document.head.appendChild(element);\n        }\n    }\n    isCurrentElementInElementList(element, elementList) {\n        for (const [index, newElement] of elementList.entries()) {\n            if (element.tagName == \"TITLE\") {\n                if (newElement.tagName != \"TITLE\") {\n                    continue;\n                }\n                if (element.innerHTML == newElement.innerHTML) {\n                    elementList.splice(index, 1);\n                    return true;\n                }\n            }\n            if (newElement.isEqualNode(element)) {\n                elementList.splice(index, 1);\n                return true;\n            }\n        }\n        return false;\n    }\n    removeCurrentHeadProvisionalElements() {\n        for (const element of this.currentHeadProvisionalElements) {\n            document.head.removeChild(element);\n        }\n    }\n    copyNewHeadProvisionalElements() {\n        for (const element of this.newHeadProvisionalElements) {\n            document.head.appendChild(element);\n        }\n    }\n    activateNewBody() {\n        document.adoptNode(this.newElement);\n        this.activateNewBodyScriptElements();\n    }\n    activateNewBodyScriptElements() {\n        for (const inertScriptElement of this.newBodyScriptElements) {\n            const activatedScriptElement = activateScriptElement(inertScriptElement);\n            inertScriptElement.replaceWith(activatedScriptElement);\n        }\n    }\n    async assignNewBody() {\n        await this.renderElement(this.currentElement, this.newElement);\n    }\n    get newHeadStylesheetElements() {\n        return this.newHeadSnapshot.getStylesheetElementsNotInSnapshot(this.currentHeadSnapshot);\n    }\n    get newHeadScriptElements() {\n        return this.newHeadSnapshot.getScriptElementsNotInSnapshot(this.currentHeadSnapshot);\n    }\n    get currentHeadProvisionalElements() {\n        return this.currentHeadSnapshot.provisionalElements;\n    }\n    get newHeadProvisionalElements() {\n        return this.newHeadSnapshot.provisionalElements;\n    }\n    get newBodyScriptElements() {\n        return this.newElement.querySelectorAll(\"script\");\n    }\n}\n\nclass SnapshotCache {\n    constructor(size) {\n        this.keys = [];\n        this.snapshots = {};\n        this.size = size;\n    }\n    has(location) {\n        return toCacheKey(location) in this.snapshots;\n    }\n    get(location) {\n        if (this.has(location)) {\n            const snapshot = this.read(location);\n            this.touch(location);\n            return snapshot;\n        }\n    }\n    put(location, snapshot) {\n        this.write(location, snapshot);\n        this.touch(location);\n        return snapshot;\n    }\n    clear() {\n        this.snapshots = {};\n    }\n    read(location) {\n        return this.snapshots[toCacheKey(location)];\n    }\n    write(location, snapshot) {\n        this.snapshots[toCacheKey(location)] = snapshot;\n    }\n    touch(location) {\n        const key = toCacheKey(location);\n        const index = this.keys.indexOf(key);\n        if (index > -1)\n            this.keys.splice(index, 1);\n        this.keys.unshift(key);\n        this.trim();\n    }\n    trim() {\n        for (const key of this.keys.splice(this.size)) {\n            delete this.snapshots[key];\n        }\n    }\n}\n\nclass PageView extends View {\n    constructor() {\n        super(...arguments);\n        this.snapshotCache = new SnapshotCache(10);\n        this.lastRenderedLocation = new URL(location.href);\n        this.forceReloaded = false;\n    }\n    renderPage(snapshot, isPreview = false, willRender = true, visit) {\n        const renderer = new PageRenderer(this.snapshot, snapshot, PageRenderer.renderElement, isPreview, willRender);\n        if (!renderer.shouldRender) {\n            this.forceReloaded = true;\n        }\n        else {\n            visit === null || visit === void 0 ? void 0 : visit.changeHistory();\n        }\n        return this.render(renderer);\n    }\n    renderError(snapshot, visit) {\n        visit === null || visit === void 0 ? void 0 : visit.changeHistory();\n        const renderer = new ErrorRenderer(this.snapshot, snapshot, ErrorRenderer.renderElement, false);\n        return this.render(renderer);\n    }\n    clearSnapshotCache() {\n        this.snapshotCache.clear();\n    }\n    async cacheSnapshot(snapshot = this.snapshot) {\n        if (snapshot.isCacheable) {\n            this.delegate.viewWillCacheSnapshot();\n            const { lastRenderedLocation: location } = this;\n            await nextEventLoopTick();\n            const cachedSnapshot = snapshot.clone();\n            this.snapshotCache.put(location, cachedSnapshot);\n            return cachedSnapshot;\n        }\n    }\n    getCachedSnapshotForLocation(location) {\n        return this.snapshotCache.get(location);\n    }\n    get snapshot() {\n        return PageSnapshot.fromElement(this.element);\n    }\n}\n\nclass Preloader {\n    constructor(delegate) {\n        this.selector = \"a[data-turbo-preload]\";\n        this.delegate = delegate;\n    }\n    get snapshotCache() {\n        return this.delegate.navigator.view.snapshotCache;\n    }\n    start() {\n        if (document.readyState === \"loading\") {\n            return document.addEventListener(\"DOMContentLoaded\", () => {\n                this.preloadOnLoadLinksForView(document.body);\n            });\n        }\n        else {\n            this.preloadOnLoadLinksForView(document.body);\n        }\n    }\n    preloadOnLoadLinksForView(element) {\n        for (const link of element.querySelectorAll(this.selector)) {\n            this.preloadURL(link);\n        }\n    }\n    async preloadURL(link) {\n        const location = new URL(link.href);\n        if (this.snapshotCache.has(location)) {\n            return;\n        }\n        try {\n            const response = await fetch(location.toString(), { headers: { \"VND.PREFETCH\": \"true\", Accept: \"text/html\" } });\n            const responseText = await response.text();\n            const snapshot = PageSnapshot.fromHTMLString(responseText);\n            this.snapshotCache.put(location, snapshot);\n        }\n        catch (_) {\n        }\n    }\n}\n\nclass Session {\n    constructor() {\n        this.navigator = new Navigator(this);\n        this.history = new History(this);\n        this.preloader = new Preloader(this);\n        this.view = new PageView(this, document.documentElement);\n        this.adapter = new BrowserAdapter(this);\n        this.pageObserver = new PageObserver(this);\n        this.cacheObserver = new CacheObserver();\n        this.linkClickObserver = new LinkClickObserver(this, window);\n        this.formSubmitObserver = new FormSubmitObserver(this, document);\n        this.scrollObserver = new ScrollObserver(this);\n        this.streamObserver = new StreamObserver(this);\n        this.formLinkClickObserver = new FormLinkClickObserver(this, document.documentElement);\n        this.frameRedirector = new FrameRedirector(this, document.documentElement);\n        this.streamMessageRenderer = new StreamMessageRenderer();\n        this.drive = true;\n        this.enabled = true;\n        this.progressBarDelay = 500;\n        this.started = false;\n        this.formMode = \"on\";\n    }\n    start() {\n        if (!this.started) {\n            this.pageObserver.start();\n            this.cacheObserver.start();\n            this.formLinkClickObserver.start();\n            this.linkClickObserver.start();\n            this.formSubmitObserver.start();\n            this.scrollObserver.start();\n            this.streamObserver.start();\n            this.frameRedirector.start();\n            this.history.start();\n            this.preloader.start();\n            this.started = true;\n            this.enabled = true;\n        }\n    }\n    disable() {\n        this.enabled = false;\n    }\n    stop() {\n        if (this.started) {\n            this.pageObserver.stop();\n            this.cacheObserver.stop();\n            this.formLinkClickObserver.stop();\n            this.linkClickObserver.stop();\n            this.formSubmitObserver.stop();\n            this.scrollObserver.stop();\n            this.streamObserver.stop();\n            this.frameRedirector.stop();\n            this.history.stop();\n            this.started = false;\n        }\n    }\n    registerAdapter(adapter) {\n        this.adapter = adapter;\n    }\n    visit(location, options = {}) {\n        const frameElement = options.frame ? document.getElementById(options.frame) : null;\n        if (frameElement instanceof FrameElement) {\n            frameElement.src = location.toString();\n            frameElement.loaded;\n        }\n        else {\n            this.navigator.proposeVisit(expandURL(location), options);\n        }\n    }\n    connectStreamSource(source) {\n        this.streamObserver.connectStreamSource(source);\n    }\n    disconnectStreamSource(source) {\n        this.streamObserver.disconnectStreamSource(source);\n    }\n    renderStreamMessage(message) {\n        this.streamMessageRenderer.render(StreamMessage.wrap(message));\n    }\n    clearCache() {\n        this.view.clearSnapshotCache();\n    }\n    setProgressBarDelay(delay) {\n        this.progressBarDelay = delay;\n    }\n    setFormMode(mode) {\n        this.formMode = mode;\n    }\n    get location() {\n        return this.history.location;\n    }\n    get restorationIdentifier() {\n        return this.history.restorationIdentifier;\n    }\n    historyPoppedToLocationWithRestorationIdentifier(location, restorationIdentifier) {\n        if (this.enabled) {\n            this.navigator.startVisit(location, restorationIdentifier, {\n                action: \"restore\",\n                historyChanged: true,\n            });\n        }\n        else {\n            this.adapter.pageInvalidated({\n                reason: \"turbo_disabled\",\n            });\n        }\n    }\n    scrollPositionChanged(position) {\n        this.history.updateRestorationData({ scrollPosition: position });\n    }\n    willSubmitFormLinkToLocation(link, location) {\n        return this.elementIsNavigatable(link) && locationIsVisitable(location, this.snapshot.rootLocation);\n    }\n    submittedFormLinkToLocation() { }\n    willFollowLinkToLocation(link, location, event) {\n        return (this.elementIsNavigatable(link) &&\n            locationIsVisitable(location, this.snapshot.rootLocation) &&\n            this.applicationAllowsFollowingLinkToLocation(link, location, event));\n    }\n    followedLinkToLocation(link, location) {\n        const action = this.getActionForLink(link);\n        const acceptsStreamResponse = link.hasAttribute(\"data-turbo-stream\");\n        this.visit(location.href, { action, acceptsStreamResponse });\n    }\n    allowsVisitingLocationWithAction(location, action) {\n        return this.locationWithActionIsSamePage(location, action) || this.applicationAllowsVisitingLocation(location);\n    }\n    visitProposedToLocation(location, options) {\n        extendURLWithDeprecatedProperties(location);\n        this.adapter.visitProposedToLocation(location, options);\n    }\n    visitStarted(visit) {\n        if (!visit.acceptsStreamResponse) {\n            markAsBusy(document.documentElement);\n        }\n        extendURLWithDeprecatedProperties(visit.location);\n        if (!visit.silent) {\n            this.notifyApplicationAfterVisitingLocation(visit.location, visit.action);\n        }\n    }\n    visitCompleted(visit) {\n        clearBusyState(document.documentElement);\n        this.notifyApplicationAfterPageLoad(visit.getTimingMetrics());\n    }\n    locationWithActionIsSamePage(location, action) {\n        return this.navigator.locationWithActionIsSamePage(location, action);\n    }\n    visitScrolledToSamePageLocation(oldURL, newURL) {\n        this.notifyApplicationAfterVisitingSamePageLocation(oldURL, newURL);\n    }\n    willSubmitForm(form, submitter) {\n        const action = getAction(form, submitter);\n        return (this.submissionIsNavigatable(form, submitter) &&\n            locationIsVisitable(expandURL(action), this.snapshot.rootLocation));\n    }\n    formSubmitted(form, submitter) {\n        this.navigator.submitForm(form, submitter);\n    }\n    pageBecameInteractive() {\n        this.view.lastRenderedLocation = this.location;\n        this.notifyApplicationAfterPageLoad();\n    }\n    pageLoaded() {\n        this.history.assumeControlOfScrollRestoration();\n    }\n    pageWillUnload() {\n        this.history.relinquishControlOfScrollRestoration();\n    }\n    receivedMessageFromStream(message) {\n        this.renderStreamMessage(message);\n    }\n    viewWillCacheSnapshot() {\n        var _a;\n        if (!((_a = this.navigator.currentVisit) === null || _a === void 0 ? void 0 : _a.silent)) {\n            this.notifyApplicationBeforeCachingSnapshot();\n        }\n    }\n    allowsImmediateRender({ element }, options) {\n        const event = this.notifyApplicationBeforeRender(element, options);\n        const { defaultPrevented, detail: { render }, } = event;\n        if (this.view.renderer && render) {\n            this.view.renderer.renderElement = render;\n        }\n        return !defaultPrevented;\n    }\n    viewRenderedSnapshot(_snapshot, _isPreview) {\n        this.view.lastRenderedLocation = this.history.location;\n        this.notifyApplicationAfterRender();\n    }\n    preloadOnLoadLinksForView(element) {\n        this.preloader.preloadOnLoadLinksForView(element);\n    }\n    viewInvalidated(reason) {\n        this.adapter.pageInvalidated(reason);\n    }\n    frameLoaded(frame) {\n        this.notifyApplicationAfterFrameLoad(frame);\n    }\n    frameRendered(fetchResponse, frame) {\n        this.notifyApplicationAfterFrameRender(fetchResponse, frame);\n    }\n    applicationAllowsFollowingLinkToLocation(link, location, ev) {\n        const event = this.notifyApplicationAfterClickingLinkToLocation(link, location, ev);\n        return !event.defaultPrevented;\n    }\n    applicationAllowsVisitingLocation(location) {\n        const event = this.notifyApplicationBeforeVisitingLocation(location);\n        return !event.defaultPrevented;\n    }\n    notifyApplicationAfterClickingLinkToLocation(link, location, event) {\n        return dispatch(\"turbo:click\", {\n            target: link,\n            detail: { url: location.href, originalEvent: event },\n            cancelable: true,\n        });\n    }\n    notifyApplicationBeforeVisitingLocation(location) {\n        return dispatch(\"turbo:before-visit\", {\n            detail: { url: location.href },\n            cancelable: true,\n        });\n    }\n    notifyApplicationAfterVisitingLocation(location, action) {\n        return dispatch(\"turbo:visit\", { detail: { url: location.href, action } });\n    }\n    notifyApplicationBeforeCachingSnapshot() {\n        return dispatch(\"turbo:before-cache\");\n    }\n    notifyApplicationBeforeRender(newBody, options) {\n        return dispatch(\"turbo:before-render\", {\n            detail: Object.assign({ newBody }, options),\n            cancelable: true,\n        });\n    }\n    notifyApplicationAfterRender() {\n        return dispatch(\"turbo:render\");\n    }\n    notifyApplicationAfterPageLoad(timing = {}) {\n        return dispatch(\"turbo:load\", {\n            detail: { url: this.location.href, timing },\n        });\n    }\n    notifyApplicationAfterVisitingSamePageLocation(oldURL, newURL) {\n        dispatchEvent(new HashChangeEvent(\"hashchange\", {\n            oldURL: oldURL.toString(),\n            newURL: newURL.toString(),\n        }));\n    }\n    notifyApplicationAfterFrameLoad(frame) {\n        return dispatch(\"turbo:frame-load\", { target: frame });\n    }\n    notifyApplicationAfterFrameRender(fetchResponse, frame) {\n        return dispatch(\"turbo:frame-render\", {\n            detail: { fetchResponse },\n            target: frame,\n            cancelable: true,\n        });\n    }\n    submissionIsNavigatable(form, submitter) {\n        if (this.formMode == \"off\") {\n            return false;\n        }\n        else {\n            const submitterIsNavigatable = submitter ? this.elementIsNavigatable(submitter) : true;\n            if (this.formMode == \"optin\") {\n                return submitterIsNavigatable && form.closest('[data-turbo=\"true\"]') != null;\n            }\n            else {\n                return submitterIsNavigatable && this.elementIsNavigatable(form);\n            }\n        }\n    }\n    elementIsNavigatable(element) {\n        const container = findClosestRecursively(element, \"[data-turbo]\");\n        const withinFrame = findClosestRecursively(element, \"turbo-frame\");\n        if (this.drive || withinFrame) {\n            if (container) {\n                return container.getAttribute(\"data-turbo\") != \"false\";\n            }\n            else {\n                return true;\n            }\n        }\n        else {\n            if (container) {\n                return container.getAttribute(\"data-turbo\") == \"true\";\n            }\n            else {\n                return false;\n            }\n        }\n    }\n    getActionForLink(link) {\n        return getVisitAction(link) || \"advance\";\n    }\n    get snapshot() {\n        return this.view.snapshot;\n    }\n}\nfunction extendURLWithDeprecatedProperties(url) {\n    Object.defineProperties(url, deprecatedLocationPropertyDescriptors);\n}\nconst deprecatedLocationPropertyDescriptors = {\n    absoluteURL: {\n        get() {\n            return this.toString();\n        },\n    },\n};\n\nclass Cache {\n    constructor(session) {\n        this.session = session;\n    }\n    clear() {\n        this.session.clearCache();\n    }\n    resetCacheControl() {\n        this.setCacheControl(\"\");\n    }\n    exemptPageFromCache() {\n        this.setCacheControl(\"no-cache\");\n    }\n    exemptPageFromPreview() {\n        this.setCacheControl(\"no-preview\");\n    }\n    setCacheControl(value) {\n        setMetaContent(\"turbo-cache-control\", value);\n    }\n}\n\nconst StreamActions = {\n    after() {\n        this.targetElements.forEach((e) => { var _a; return (_a = e.parentElement) === null || _a === void 0 ? void 0 : _a.insertBefore(this.templateContent, e.nextSibling); });\n    },\n    append() {\n        this.removeDuplicateTargetChildren();\n        this.targetElements.forEach((e) => e.append(this.templateContent));\n    },\n    before() {\n        this.targetElements.forEach((e) => { var _a; return (_a = e.parentElement) === null || _a === void 0 ? void 0 : _a.insertBefore(this.templateContent, e); });\n    },\n    prepend() {\n        this.removeDuplicateTargetChildren();\n        this.targetElements.forEach((e) => e.prepend(this.templateContent));\n    },\n    remove() {\n        this.targetElements.forEach((e) => e.remove());\n    },\n    replace() {\n        this.targetElements.forEach((e) => e.replaceWith(this.templateContent));\n    },\n    update() {\n        this.targetElements.forEach((targetElement) => {\n            targetElement.innerHTML = \"\";\n            targetElement.append(this.templateContent);\n        });\n    },\n};\n\nconst session = new Session();\nconst cache = new Cache(session);\nconst { navigator: navigator$1 } = session;\nfunction start() {\n    session.start();\n}\nfunction registerAdapter(adapter) {\n    session.registerAdapter(adapter);\n}\nfunction visit(location, options) {\n    session.visit(location, options);\n}\nfunction connectStreamSource(source) {\n    session.connectStreamSource(source);\n}\nfunction disconnectStreamSource(source) {\n    session.disconnectStreamSource(source);\n}\nfunction renderStreamMessage(message) {\n    session.renderStreamMessage(message);\n}\nfunction clearCache() {\n    console.warn(\"Please replace `Turbo.clearCache()` with `Turbo.cache.clear()`. The top-level function is deprecated and will be removed in a future version of Turbo.`\");\n    session.clearCache();\n}\nfunction setProgressBarDelay(delay) {\n    session.setProgressBarDelay(delay);\n}\nfunction setConfirmMethod(confirmMethod) {\n    FormSubmission.confirmMethod = confirmMethod;\n}\nfunction setFormMode(mode) {\n    session.setFormMode(mode);\n}\n\nvar Turbo = /*#__PURE__*/Object.freeze({\n    __proto__: null,\n    navigator: navigator$1,\n    session: session,\n    cache: cache,\n    PageRenderer: PageRenderer,\n    PageSnapshot: PageSnapshot,\n    FrameRenderer: FrameRenderer,\n    start: start,\n    registerAdapter: registerAdapter,\n    visit: visit,\n    connectStreamSource: connectStreamSource,\n    disconnectStreamSource: disconnectStreamSource,\n    renderStreamMessage: renderStreamMessage,\n    clearCache: clearCache,\n    setProgressBarDelay: setProgressBarDelay,\n    setConfirmMethod: setConfirmMethod,\n    setFormMode: setFormMode,\n    StreamActions: StreamActions\n});\n\nclass TurboFrameMissingError extends Error {\n}\n\nclass FrameController {\n    constructor(element) {\n        this.fetchResponseLoaded = (_fetchResponse) => { };\n        this.currentFetchRequest = null;\n        this.resolveVisitPromise = () => { };\n        this.connected = false;\n        this.hasBeenLoaded = false;\n        this.ignoredAttributes = new Set();\n        this.action = null;\n        this.visitCachedSnapshot = ({ element }) => {\n            const frame = element.querySelector(\"#\" + this.element.id);\n            if (frame && this.previousFrameElement) {\n                frame.replaceChildren(...this.previousFrameElement.children);\n            }\n            delete this.previousFrameElement;\n        };\n        this.element = element;\n        this.view = new FrameView(this, this.element);\n        this.appearanceObserver = new AppearanceObserver(this, this.element);\n        this.formLinkClickObserver = new FormLinkClickObserver(this, this.element);\n        this.linkInterceptor = new LinkInterceptor(this, this.element);\n        this.restorationIdentifier = uuid();\n        this.formSubmitObserver = new FormSubmitObserver(this, this.element);\n    }\n    connect() {\n        if (!this.connected) {\n            this.connected = true;\n            if (this.loadingStyle == FrameLoadingStyle.lazy) {\n                this.appearanceObserver.start();\n            }\n            else {\n                this.loadSourceURL();\n            }\n            this.formLinkClickObserver.start();\n            this.linkInterceptor.start();\n            this.formSubmitObserver.start();\n        }\n    }\n    disconnect() {\n        if (this.connected) {\n            this.connected = false;\n            this.appearanceObserver.stop();\n            this.formLinkClickObserver.stop();\n            this.linkInterceptor.stop();\n            this.formSubmitObserver.stop();\n        }\n    }\n    disabledChanged() {\n        if (this.loadingStyle == FrameLoadingStyle.eager) {\n            this.loadSourceURL();\n        }\n    }\n    sourceURLChanged() {\n        if (this.isIgnoringChangesTo(\"src\"))\n            return;\n        if (this.element.isConnected) {\n            this.complete = false;\n        }\n        if (this.loadingStyle == FrameLoadingStyle.eager || this.hasBeenLoaded) {\n            this.loadSourceURL();\n        }\n    }\n    sourceURLReloaded() {\n        const { src } = this.element;\n        this.ignoringChangesToAttribute(\"complete\", () => {\n            this.element.removeAttribute(\"complete\");\n        });\n        this.element.src = null;\n        this.element.src = src;\n        return this.element.loaded;\n    }\n    completeChanged() {\n        if (this.isIgnoringChangesTo(\"complete\"))\n            return;\n        this.loadSourceURL();\n    }\n    loadingStyleChanged() {\n        if (this.loadingStyle == FrameLoadingStyle.lazy) {\n            this.appearanceObserver.start();\n        }\n        else {\n            this.appearanceObserver.stop();\n            this.loadSourceURL();\n        }\n    }\n    async loadSourceURL() {\n        if (this.enabled && this.isActive && !this.complete && this.sourceURL) {\n            this.element.loaded = this.visit(expandURL(this.sourceURL));\n            this.appearanceObserver.stop();\n            await this.element.loaded;\n            this.hasBeenLoaded = true;\n        }\n    }\n    async loadResponse(fetchResponse) {\n        if (fetchResponse.redirected || (fetchResponse.succeeded && fetchResponse.isHTML)) {\n            this.sourceURL = fetchResponse.response.url;\n        }\n        try {\n            const html = await fetchResponse.responseHTML;\n            if (html) {\n                const document = parseHTMLDocument(html);\n                const pageSnapshot = PageSnapshot.fromDocument(document);\n                if (pageSnapshot.isVisitable) {\n                    await this.loadFrameResponse(fetchResponse, document);\n                }\n                else {\n                    await this.handleUnvisitableFrameResponse(fetchResponse);\n                }\n            }\n        }\n        finally {\n            this.fetchResponseLoaded = () => { };\n        }\n    }\n    elementAppearedInViewport(element) {\n        this.proposeVisitIfNavigatedWithAction(element, element);\n        this.loadSourceURL();\n    }\n    willSubmitFormLinkToLocation(link) {\n        return this.shouldInterceptNavigation(link);\n    }\n    submittedFormLinkToLocation(link, _location, form) {\n        const frame = this.findFrameElement(link);\n        if (frame)\n            form.setAttribute(\"data-turbo-frame\", frame.id);\n    }\n    shouldInterceptLinkClick(element, _location, _event) {\n        return this.shouldInterceptNavigation(element);\n    }\n    linkClickIntercepted(element, location) {\n        this.navigateFrame(element, location);\n    }\n    willSubmitForm(element, submitter) {\n        return element.closest(\"turbo-frame\") == this.element && this.shouldInterceptNavigation(element, submitter);\n    }\n    formSubmitted(element, submitter) {\n        if (this.formSubmission) {\n            this.formSubmission.stop();\n        }\n        this.formSubmission = new FormSubmission(this, element, submitter);\n        const { fetchRequest } = this.formSubmission;\n        this.prepareRequest(fetchRequest);\n        this.formSubmission.start();\n    }\n    prepareRequest(request) {\n        var _a;\n        request.headers[\"Turbo-Frame\"] = this.id;\n        if ((_a = this.currentNavigationElement) === null || _a === void 0 ? void 0 : _a.hasAttribute(\"data-turbo-stream\")) {\n            request.acceptResponseType(StreamMessage.contentType);\n        }\n    }\n    requestStarted(_request) {\n        markAsBusy(this.element);\n    }\n    requestPreventedHandlingResponse(_request, _response) {\n        this.resolveVisitPromise();\n    }\n    async requestSucceededWithResponse(request, response) {\n        await this.loadResponse(response);\n        this.resolveVisitPromise();\n    }\n    async requestFailedWithResponse(request, response) {\n        await this.loadResponse(response);\n        this.resolveVisitPromise();\n    }\n    requestErrored(request, error) {\n        console.error(error);\n        this.resolveVisitPromise();\n    }\n    requestFinished(_request) {\n        clearBusyState(this.element);\n    }\n    formSubmissionStarted({ formElement }) {\n        markAsBusy(formElement, this.findFrameElement(formElement));\n    }\n    formSubmissionSucceededWithResponse(formSubmission, response) {\n        const frame = this.findFrameElement(formSubmission.formElement, formSubmission.submitter);\n        frame.delegate.proposeVisitIfNavigatedWithAction(frame, formSubmission.formElement, formSubmission.submitter);\n        frame.delegate.loadResponse(response);\n        if (!formSubmission.isSafe) {\n            session.clearCache();\n        }\n    }\n    formSubmissionFailedWithResponse(formSubmission, fetchResponse) {\n        this.element.delegate.loadResponse(fetchResponse);\n        session.clearCache();\n    }\n    formSubmissionErrored(formSubmission, error) {\n        console.error(error);\n    }\n    formSubmissionFinished({ formElement }) {\n        clearBusyState(formElement, this.findFrameElement(formElement));\n    }\n    allowsImmediateRender({ element: newFrame }, options) {\n        const event = dispatch(\"turbo:before-frame-render\", {\n            target: this.element,\n            detail: Object.assign({ newFrame }, options),\n            cancelable: true,\n        });\n        const { defaultPrevented, detail: { render }, } = event;\n        if (this.view.renderer && render) {\n            this.view.renderer.renderElement = render;\n        }\n        return !defaultPrevented;\n    }\n    viewRenderedSnapshot(_snapshot, _isPreview) { }\n    preloadOnLoadLinksForView(element) {\n        session.preloadOnLoadLinksForView(element);\n    }\n    viewInvalidated() { }\n    willRenderFrame(currentElement, _newElement) {\n        this.previousFrameElement = currentElement.cloneNode(true);\n    }\n    async loadFrameResponse(fetchResponse, document) {\n        const newFrameElement = await this.extractForeignFrameElement(document.body);\n        if (newFrameElement) {\n            const snapshot = new Snapshot(newFrameElement);\n            const renderer = new FrameRenderer(this, this.view.snapshot, snapshot, FrameRenderer.renderElement, false, false);\n            if (this.view.renderPromise)\n                await this.view.renderPromise;\n            this.changeHistory();\n            await this.view.render(renderer);\n            this.complete = true;\n            session.frameRendered(fetchResponse, this.element);\n            session.frameLoaded(this.element);\n            this.fetchResponseLoaded(fetchResponse);\n        }\n        else if (this.willHandleFrameMissingFromResponse(fetchResponse)) {\n            this.handleFrameMissingFromResponse(fetchResponse);\n        }\n    }\n    async visit(url) {\n        var _a;\n        const request = new FetchRequest(this, FetchMethod.get, url, new URLSearchParams(), this.element);\n        (_a = this.currentFetchRequest) === null || _a === void 0 ? void 0 : _a.cancel();\n        this.currentFetchRequest = request;\n        return new Promise((resolve) => {\n            this.resolveVisitPromise = () => {\n                this.resolveVisitPromise = () => { };\n                this.currentFetchRequest = null;\n                resolve();\n            };\n            request.perform();\n        });\n    }\n    navigateFrame(element, url, submitter) {\n        const frame = this.findFrameElement(element, submitter);\n        frame.delegate.proposeVisitIfNavigatedWithAction(frame, element, submitter);\n        this.withCurrentNavigationElement(element, () => {\n            frame.src = url;\n        });\n    }\n    proposeVisitIfNavigatedWithAction(frame, element, submitter) {\n        this.action = getVisitAction(submitter, element, frame);\n        if (this.action) {\n            const pageSnapshot = PageSnapshot.fromElement(frame).clone();\n            const { visitCachedSnapshot } = frame.delegate;\n            frame.delegate.fetchResponseLoaded = (fetchResponse) => {\n                if (frame.src) {\n                    const { statusCode, redirected } = fetchResponse;\n                    const responseHTML = frame.ownerDocument.documentElement.outerHTML;\n                    const response = { statusCode, redirected, responseHTML };\n                    const options = {\n                        response,\n                        visitCachedSnapshot,\n                        willRender: false,\n                        updateHistory: false,\n                        restorationIdentifier: this.restorationIdentifier,\n                        snapshot: pageSnapshot,\n                    };\n                    if (this.action)\n                        options.action = this.action;\n                    session.visit(frame.src, options);\n                }\n            };\n        }\n    }\n    changeHistory() {\n        if (this.action) {\n            const method = getHistoryMethodForAction(this.action);\n            session.history.update(method, expandURL(this.element.src || \"\"), this.restorationIdentifier);\n        }\n    }\n    async handleUnvisitableFrameResponse(fetchResponse) {\n        console.warn(`The response (${fetchResponse.statusCode}) from <turbo-frame id=\"${this.element.id}\"> is performing a full page visit due to turbo-visit-control.`);\n        await this.visitResponse(fetchResponse.response);\n    }\n    willHandleFrameMissingFromResponse(fetchResponse) {\n        this.element.setAttribute(\"complete\", \"\");\n        const response = fetchResponse.response;\n        const visit = async (url, options = {}) => {\n            if (url instanceof Response) {\n                this.visitResponse(url);\n            }\n            else {\n                session.visit(url, options);\n            }\n        };\n        const event = dispatch(\"turbo:frame-missing\", {\n            target: this.element,\n            detail: { response, visit },\n            cancelable: true,\n        });\n        return !event.defaultPrevented;\n    }\n    handleFrameMissingFromResponse(fetchResponse) {\n        this.view.missing();\n        this.throwFrameMissingError(fetchResponse);\n    }\n    throwFrameMissingError(fetchResponse) {\n        const message = `The response (${fetchResponse.statusCode}) did not contain the expected <turbo-frame id=\"${this.element.id}\"> and will be ignored. To perform a full page visit instead, set turbo-visit-control to reload.`;\n        throw new TurboFrameMissingError(message);\n    }\n    async visitResponse(response) {\n        const wrapped = new FetchResponse(response);\n        const responseHTML = await wrapped.responseHTML;\n        const { location, redirected, statusCode } = wrapped;\n        return session.visit(location, { response: { redirected, statusCode, responseHTML } });\n    }\n    findFrameElement(element, submitter) {\n        var _a;\n        const id = getAttribute(\"data-turbo-frame\", submitter, element) || this.element.getAttribute(\"target\");\n        return (_a = getFrameElementById(id)) !== null && _a !== void 0 ? _a : this.element;\n    }\n    async extractForeignFrameElement(container) {\n        let element;\n        const id = CSS.escape(this.id);\n        try {\n            element = activateElement(container.querySelector(`turbo-frame#${id}`), this.sourceURL);\n            if (element) {\n                return element;\n            }\n            element = activateElement(container.querySelector(`turbo-frame[src][recurse~=${id}]`), this.sourceURL);\n            if (element) {\n                await element.loaded;\n                return await this.extractForeignFrameElement(element);\n            }\n        }\n        catch (error) {\n            console.error(error);\n            return new FrameElement();\n        }\n        return null;\n    }\n    formActionIsVisitable(form, submitter) {\n        const action = getAction(form, submitter);\n        return locationIsVisitable(expandURL(action), this.rootLocation);\n    }\n    shouldInterceptNavigation(element, submitter) {\n        const id = getAttribute(\"data-turbo-frame\", submitter, element) || this.element.getAttribute(\"target\");\n        if (element instanceof HTMLFormElement && !this.formActionIsVisitable(element, submitter)) {\n            return false;\n        }\n        if (!this.enabled || id == \"_top\") {\n            return false;\n        }\n        if (id) {\n            const frameElement = getFrameElementById(id);\n            if (frameElement) {\n                return !frameElement.disabled;\n            }\n        }\n        if (!session.elementIsNavigatable(element)) {\n            return false;\n        }\n        if (submitter && !session.elementIsNavigatable(submitter)) {\n            return false;\n        }\n        return true;\n    }\n    get id() {\n        return this.element.id;\n    }\n    get enabled() {\n        return !this.element.disabled;\n    }\n    get sourceURL() {\n        if (this.element.src) {\n            return this.element.src;\n        }\n    }\n    set sourceURL(sourceURL) {\n        this.ignoringChangesToAttribute(\"src\", () => {\n            this.element.src = sourceURL !== null && sourceURL !== void 0 ? sourceURL : null;\n        });\n    }\n    get loadingStyle() {\n        return this.element.loading;\n    }\n    get isLoading() {\n        return this.formSubmission !== undefined || this.resolveVisitPromise() !== undefined;\n    }\n    get complete() {\n        return this.element.hasAttribute(\"complete\");\n    }\n    set complete(value) {\n        this.ignoringChangesToAttribute(\"complete\", () => {\n            if (value) {\n                this.element.setAttribute(\"complete\", \"\");\n            }\n            else {\n                this.element.removeAttribute(\"complete\");\n            }\n        });\n    }\n    get isActive() {\n        return this.element.isActive && this.connected;\n    }\n    get rootLocation() {\n        var _a;\n        const meta = this.element.ownerDocument.querySelector(`meta[name=\"turbo-root\"]`);\n        const root = (_a = meta === null || meta === void 0 ? void 0 : meta.content) !== null && _a !== void 0 ? _a : \"/\";\n        return expandURL(root);\n    }\n    isIgnoringChangesTo(attributeName) {\n        return this.ignoredAttributes.has(attributeName);\n    }\n    ignoringChangesToAttribute(attributeName, callback) {\n        this.ignoredAttributes.add(attributeName);\n        callback();\n        this.ignoredAttributes.delete(attributeName);\n    }\n    withCurrentNavigationElement(element, callback) {\n        this.currentNavigationElement = element;\n        callback();\n        delete this.currentNavigationElement;\n    }\n}\nfunction getFrameElementById(id) {\n    if (id != null) {\n        const element = document.getElementById(id);\n        if (element instanceof FrameElement) {\n            return element;\n        }\n    }\n}\nfunction activateElement(element, currentURL) {\n    if (element) {\n        const src = element.getAttribute(\"src\");\n        if (src != null && currentURL != null && urlsAreEqual(src, currentURL)) {\n            throw new Error(`Matching <turbo-frame id=\"${element.id}\"> element has a source URL which references itself`);\n        }\n        if (element.ownerDocument !== document) {\n            element = document.importNode(element, true);\n        }\n        if (element instanceof FrameElement) {\n            element.connectedCallback();\n            element.disconnectedCallback();\n            return element;\n        }\n    }\n}\n\nclass StreamElement extends HTMLElement {\n    static async renderElement(newElement) {\n        await newElement.performAction();\n    }\n    async connectedCallback() {\n        try {\n            await this.render();\n        }\n        catch (error) {\n            console.error(error);\n        }\n        finally {\n            this.disconnect();\n        }\n    }\n    async render() {\n        var _a;\n        return ((_a = this.renderPromise) !== null && _a !== void 0 ? _a : (this.renderPromise = (async () => {\n            const event = this.beforeRenderEvent;\n            if (this.dispatchEvent(event)) {\n                await nextAnimationFrame();\n                await event.detail.render(this);\n            }\n        })()));\n    }\n    disconnect() {\n        try {\n            this.remove();\n        }\n        catch (_a) { }\n    }\n    removeDuplicateTargetChildren() {\n        this.duplicateChildren.forEach((c) => c.remove());\n    }\n    get duplicateChildren() {\n        var _a;\n        const existingChildren = this.targetElements.flatMap((e) => [...e.children]).filter((c) => !!c.id);\n        const newChildrenIds = [...(((_a = this.templateContent) === null || _a === void 0 ? void 0 : _a.children) || [])].filter((c) => !!c.id).map((c) => c.id);\n        return existingChildren.filter((c) => newChildrenIds.includes(c.id));\n    }\n    get performAction() {\n        if (this.action) {\n            const actionFunction = StreamActions[this.action];\n            if (actionFunction) {\n                return actionFunction;\n            }\n            this.raise(\"unknown action\");\n        }\n        this.raise(\"action attribute is missing\");\n    }\n    get targetElements() {\n        if (this.target) {\n            return this.targetElementsById;\n        }\n        else if (this.targets) {\n            return this.targetElementsByQuery;\n        }\n        else {\n            this.raise(\"target or targets attribute is missing\");\n        }\n    }\n    get templateContent() {\n        return this.templateElement.content.cloneNode(true);\n    }\n    get templateElement() {\n        if (this.firstElementChild === null) {\n            const template = this.ownerDocument.createElement(\"template\");\n            this.appendChild(template);\n            return template;\n        }\n        else if (this.firstElementChild instanceof HTMLTemplateElement) {\n            return this.firstElementChild;\n        }\n        this.raise(\"first child element must be a <template> element\");\n    }\n    get action() {\n        return this.getAttribute(\"action\");\n    }\n    get target() {\n        return this.getAttribute(\"target\");\n    }\n    get targets() {\n        return this.getAttribute(\"targets\");\n    }\n    raise(message) {\n        throw new Error(`${this.description}: ${message}`);\n    }\n    get description() {\n        var _a, _b;\n        return (_b = ((_a = this.outerHTML.match(/<[^>]+>/)) !== null && _a !== void 0 ? _a : [])[0]) !== null && _b !== void 0 ? _b : \"<turbo-stream>\";\n    }\n    get beforeRenderEvent() {\n        return new CustomEvent(\"turbo:before-stream-render\", {\n            bubbles: true,\n            cancelable: true,\n            detail: { newStream: this, render: StreamElement.renderElement },\n        });\n    }\n    get targetElementsById() {\n        var _a;\n        const element = (_a = this.ownerDocument) === null || _a === void 0 ? void 0 : _a.getElementById(this.target);\n        if (element !== null) {\n            return [element];\n        }\n        else {\n            return [];\n        }\n    }\n    get targetElementsByQuery() {\n        var _a;\n        const elements = (_a = this.ownerDocument) === null || _a === void 0 ? void 0 : _a.querySelectorAll(this.targets);\n        if (elements.length !== 0) {\n            return Array.prototype.slice.call(elements);\n        }\n        else {\n            return [];\n        }\n    }\n}\n\nclass StreamSourceElement extends HTMLElement {\n    constructor() {\n        super(...arguments);\n        this.streamSource = null;\n    }\n    connectedCallback() {\n        this.streamSource = this.src.match(/^ws{1,2}:/) ? new WebSocket(this.src) : new EventSource(this.src);\n        connectStreamSource(this.streamSource);\n    }\n    disconnectedCallback() {\n        if (this.streamSource) {\n            disconnectStreamSource(this.streamSource);\n        }\n    }\n    get src() {\n        return this.getAttribute(\"src\") || \"\";\n    }\n}\n\nFrameElement.delegateConstructor = FrameController;\nif (customElements.get(\"turbo-frame\") === undefined) {\n    customElements.define(\"turbo-frame\", FrameElement);\n}\nif (customElements.get(\"turbo-stream\") === undefined) {\n    customElements.define(\"turbo-stream\", StreamElement);\n}\nif (customElements.get(\"turbo-stream-source\") === undefined) {\n    customElements.define(\"turbo-stream-source\", StreamSourceElement);\n}\n\n(() => {\n    let element = document.currentScript;\n    if (!element)\n        return;\n    if (element.hasAttribute(\"data-turbo-suppress-warning\"))\n        return;\n    element = element.parentElement;\n    while (element) {\n        if (element == document.body) {\n            return console.warn(unindent `\n        You are loading Turbo from a <script> element inside the <body> element. This is probably not what you meant to do!\n\n        Load your application\u2019s JavaScript bundle inside the <head> element instead. <script> elements in <body> are evaluated with each page change.\n\n        For more information, see: https://turbo.hotwired.dev/handbook/building#working-with-script-elements\n\n        \u2014\u2014\n        Suppress this warning by adding a \"data-turbo-suppress-warning\" attribute to: %s\n      `, element.outerHTML);\n        }\n        element = element.parentElement;\n    }\n})();\n\nwindow.Turbo = Turbo;\nstart();\n\nexport { FrameElement, FrameLoadingStyle, FrameRenderer, PageRenderer, PageSnapshot, StreamActions, StreamElement, StreamSourceElement, cache, clearCache, connectStreamSource, disconnectStreamSource, navigator$1 as navigator, registerAdapter, renderStreamMessage, session, setConfirmMethod, setFormMode, setProgressBarDelay, start, visit };\n", "let consumer\n\nexport async function getConsumer() {\n  return consumer || setConsumer(createConsumer().then(setConsumer))\n}\n\nexport function setConsumer(newConsumer) {\n  return consumer = newConsumer\n}\n\nexport async function createConsumer() {\n  const { createConsumer } = await import(/* webpackChunkName: \"actioncable\" */ \"@rails/actioncable/src\")\n  return createConsumer()\n}\n\nexport async function subscribeTo(channel, mixin) {\n  const { subscriptions } = await getConsumer()\n  return subscriptions.create(channel, mixin)\n}\n", "// Based on https://github.com/nathan7/snakeize\n//\n// This software is released under the MIT license:\n// Permission is hereby granted, free of charge, to any person obtaining a copy of\n// this software and associated documentation files (the \"Software\"), to deal in\n// the Software without restriction, including without limitation the rights to\n// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\n// the Software, and to permit persons to whom the Software is furnished to do so,\n// subject to the following conditions:\n\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\nexport default function walk (obj) {\n    if (!obj || typeof obj !== 'object') return obj;\n    if (obj instanceof Date || obj instanceof RegExp) return obj;\n    if (Array.isArray(obj)) return obj.map(walk);\n    return Object.keys(obj).reduce(function (acc, key) {\n        var camel = key[0].toLowerCase() + key.slice(1).replace(/([A-Z]+)/g, function (m, x) {\n            return '_' + x.toLowerCase();\n        });\n        acc[camel] = walk(obj[key]);\n        return acc;\n    }, {});\n};", "import { connectStreamSource, disconnectStreamSource } from \"@hotwired/turbo\"\nimport { subscribeTo } from \"./cable\"\nimport snakeize from \"./snakeize\"\n\nclass TurboCableStreamSourceElement extends HTMLElement {\n  async connectedCallback() {\n    connectStreamSource(this)\n    this.subscription = await subscribeTo(this.channel, {\n      received: this.dispatchMessageEvent.bind(this),\n      connected: this.subscriptionConnected.bind(this),\n      disconnected: this.subscriptionDisconnected.bind(this)\n    })\n  }\n\n  disconnectedCallback() {\n    disconnectStreamSource(this)\n    if (this.subscription) this.subscription.unsubscribe()\n  }\n\n  dispatchMessageEvent(data) {\n    const event = new MessageEvent(\"message\", { data })\n    return this.dispatchEvent(event)\n  }\n\n  subscriptionConnected() {\n    this.setAttribute(\"connected\", \"\")\n  }\n\n  subscriptionDisconnected() {\n    this.removeAttribute(\"connected\")\n  }\n\n  get channel() {\n    const channel = this.getAttribute(\"channel\")\n    const signed_stream_name = this.getAttribute(\"signed-stream-name\")\n    return { channel, signed_stream_name, ...snakeize({ ...this.dataset }) }\n  }\n}\n\n\nif (customElements.get(\"turbo-cable-stream-source\") === undefined) {\n  customElements.define(\"turbo-cable-stream-source\", TurboCableStreamSourceElement)\n}\n", "export function encodeMethodIntoRequestBody(event) {\n  if (event.target instanceof HTMLFormElement) {\n    const { target: form, detail: { fetchOptions } } = event\n\n    form.addEventListener(\"turbo:submit-start\", ({ detail: { formSubmission: { submitter } } }) => {\n      const body = isBodyInit(fetchOptions.body) ? fetchOptions.body : new URLSearchParams()\n      const method = determineFetchMethod(submitter, body, form)\n\n      if (!/get/i.test(method)) {\n        if (/post/i.test(method)) {\n          body.delete(\"_method\")\n        } else {\n          body.set(\"_method\", method)\n        }\n\n        fetchOptions.method = \"post\"\n      }\n    }, { once: true })\n  }\n}\n\nfunction determineFetchMethod(submitter, body, form) {\n  const formMethod = determineFormMethod(submitter)\n  const overrideMethod = body.get(\"_method\")\n  const method = form.getAttribute(\"method\") || \"get\"\n\n  if (typeof formMethod == \"string\") {\n    return formMethod\n  } else if (typeof overrideMethod == \"string\") {\n    return overrideMethod\n  } else {\n    return method\n  }\n}\n\nfunction determineFormMethod(submitter) {\n  if (submitter instanceof HTMLButtonElement || submitter instanceof HTMLInputElement) {\n    if (submitter.hasAttribute(\"formmethod\")) {\n      return submitter.formMethod\n    } else {\n      return null\n    }\n  } else {\n    return null\n  }\n}\n\nfunction isBodyInit(body) {\n  return body instanceof FormData || body instanceof URLSearchParams\n}\n", "import \"./cable_stream_source_element\"\n\nimport * as Turbo from \"@hotwired/turbo\"\nexport { Turbo }\n\nimport * as cable from \"./cable\"\nexport { cable }\n\nimport { encodeMethodIntoRequestBody } from \"./fetch_requests\"\n\naddEventListener(\"turbo:before-fetch-request\", encodeMethodIntoRequestBody)\n", "import Chartkick from \"chartkick\"\nimport Chart from \"chart.js/auto\"\nimport \"chartjs-adapter-date-fns\"\n\nChartkick.use(Chart)\n", "/*!\n * Chart.js v3.9.1\n * https://www.chartjs.org\n * (c) 2022 Chart.js Contributors\n * Released under the MIT License\n */\nfunction noop() {}\nconst uid = (function() {\n  let id = 0;\n  return function() {\n    return id++;\n  };\n}());\nfunction isNullOrUndef(value) {\n  return value === null || typeof value === 'undefined';\n}\nfunction isArray(value) {\n  if (Array.isArray && Array.isArray(value)) {\n    return true;\n  }\n  const type = Object.prototype.toString.call(value);\n  if (type.slice(0, 7) === '[object' && type.slice(-6) === 'Array]') {\n    return true;\n  }\n  return false;\n}\nfunction isObject(value) {\n  return value !== null && Object.prototype.toString.call(value) === '[object Object]';\n}\nconst isNumberFinite = (value) => (typeof value === 'number' || value instanceof Number) && isFinite(+value);\nfunction finiteOrDefault(value, defaultValue) {\n  return isNumberFinite(value) ? value : defaultValue;\n}\nfunction valueOrDefault(value, defaultValue) {\n  return typeof value === 'undefined' ? defaultValue : value;\n}\nconst toPercentage = (value, dimension) =>\n  typeof value === 'string' && value.endsWith('%') ?\n    parseFloat(value) / 100\n    : value / dimension;\nconst toDimension = (value, dimension) =>\n  typeof value === 'string' && value.endsWith('%') ?\n    parseFloat(value) / 100 * dimension\n    : +value;\nfunction callback(fn, args, thisArg) {\n  if (fn && typeof fn.call === 'function') {\n    return fn.apply(thisArg, args);\n  }\n}\nfunction each(loopable, fn, thisArg, reverse) {\n  let i, len, keys;\n  if (isArray(loopable)) {\n    len = loopable.length;\n    if (reverse) {\n      for (i = len - 1; i >= 0; i--) {\n        fn.call(thisArg, loopable[i], i);\n      }\n    } else {\n      for (i = 0; i < len; i++) {\n        fn.call(thisArg, loopable[i], i);\n      }\n    }\n  } else if (isObject(loopable)) {\n    keys = Object.keys(loopable);\n    len = keys.length;\n    for (i = 0; i < len; i++) {\n      fn.call(thisArg, loopable[keys[i]], keys[i]);\n    }\n  }\n}\nfunction _elementsEqual(a0, a1) {\n  let i, ilen, v0, v1;\n  if (!a0 || !a1 || a0.length !== a1.length) {\n    return false;\n  }\n  for (i = 0, ilen = a0.length; i < ilen; ++i) {\n    v0 = a0[i];\n    v1 = a1[i];\n    if (v0.datasetIndex !== v1.datasetIndex || v0.index !== v1.index) {\n      return false;\n    }\n  }\n  return true;\n}\nfunction clone$1(source) {\n  if (isArray(source)) {\n    return source.map(clone$1);\n  }\n  if (isObject(source)) {\n    const target = Object.create(null);\n    const keys = Object.keys(source);\n    const klen = keys.length;\n    let k = 0;\n    for (; k < klen; ++k) {\n      target[keys[k]] = clone$1(source[keys[k]]);\n    }\n    return target;\n  }\n  return source;\n}\nfunction isValidKey(key) {\n  return ['__proto__', 'prototype', 'constructor'].indexOf(key) === -1;\n}\nfunction _merger(key, target, source, options) {\n  if (!isValidKey(key)) {\n    return;\n  }\n  const tval = target[key];\n  const sval = source[key];\n  if (isObject(tval) && isObject(sval)) {\n    merge(tval, sval, options);\n  } else {\n    target[key] = clone$1(sval);\n  }\n}\nfunction merge(target, source, options) {\n  const sources = isArray(source) ? source : [source];\n  const ilen = sources.length;\n  if (!isObject(target)) {\n    return target;\n  }\n  options = options || {};\n  const merger = options.merger || _merger;\n  for (let i = 0; i < ilen; ++i) {\n    source = sources[i];\n    if (!isObject(source)) {\n      continue;\n    }\n    const keys = Object.keys(source);\n    for (let k = 0, klen = keys.length; k < klen; ++k) {\n      merger(keys[k], target, source, options);\n    }\n  }\n  return target;\n}\nfunction mergeIf(target, source) {\n  return merge(target, source, {merger: _mergerIf});\n}\nfunction _mergerIf(key, target, source) {\n  if (!isValidKey(key)) {\n    return;\n  }\n  const tval = target[key];\n  const sval = source[key];\n  if (isObject(tval) && isObject(sval)) {\n    mergeIf(tval, sval);\n  } else if (!Object.prototype.hasOwnProperty.call(target, key)) {\n    target[key] = clone$1(sval);\n  }\n}\nfunction _deprecated(scope, value, previous, current) {\n  if (value !== undefined) {\n    console.warn(scope + ': \"' + previous +\n\t\t\t'\" is deprecated. Please use \"' + current + '\" instead');\n  }\n}\nconst keyResolvers = {\n  '': v => v,\n  x: o => o.x,\n  y: o => o.y\n};\nfunction resolveObjectKey(obj, key) {\n  const resolver = keyResolvers[key] || (keyResolvers[key] = _getKeyResolver(key));\n  return resolver(obj);\n}\nfunction _getKeyResolver(key) {\n  const keys = _splitKey(key);\n  return obj => {\n    for (const k of keys) {\n      if (k === '') {\n        break;\n      }\n      obj = obj && obj[k];\n    }\n    return obj;\n  };\n}\nfunction _splitKey(key) {\n  const parts = key.split('.');\n  const keys = [];\n  let tmp = '';\n  for (const part of parts) {\n    tmp += part;\n    if (tmp.endsWith('\\\\')) {\n      tmp = tmp.slice(0, -1) + '.';\n    } else {\n      keys.push(tmp);\n      tmp = '';\n    }\n  }\n  return keys;\n}\nfunction _capitalize(str) {\n  return str.charAt(0).toUpperCase() + str.slice(1);\n}\nconst defined = (value) => typeof value !== 'undefined';\nconst isFunction = (value) => typeof value === 'function';\nconst setsEqual = (a, b) => {\n  if (a.size !== b.size) {\n    return false;\n  }\n  for (const item of a) {\n    if (!b.has(item)) {\n      return false;\n    }\n  }\n  return true;\n};\nfunction _isClickEvent(e) {\n  return e.type === 'mouseup' || e.type === 'click' || e.type === 'contextmenu';\n}\n\nconst PI = Math.PI;\nconst TAU = 2 * PI;\nconst PITAU = TAU + PI;\nconst INFINITY = Number.POSITIVE_INFINITY;\nconst RAD_PER_DEG = PI / 180;\nconst HALF_PI = PI / 2;\nconst QUARTER_PI = PI / 4;\nconst TWO_THIRDS_PI = PI * 2 / 3;\nconst log10 = Math.log10;\nconst sign = Math.sign;\nfunction niceNum(range) {\n  const roundedRange = Math.round(range);\n  range = almostEquals(range, roundedRange, range / 1000) ? roundedRange : range;\n  const niceRange = Math.pow(10, Math.floor(log10(range)));\n  const fraction = range / niceRange;\n  const niceFraction = fraction <= 1 ? 1 : fraction <= 2 ? 2 : fraction <= 5 ? 5 : 10;\n  return niceFraction * niceRange;\n}\nfunction _factorize(value) {\n  const result = [];\n  const sqrt = Math.sqrt(value);\n  let i;\n  for (i = 1; i < sqrt; i++) {\n    if (value % i === 0) {\n      result.push(i);\n      result.push(value / i);\n    }\n  }\n  if (sqrt === (sqrt | 0)) {\n    result.push(sqrt);\n  }\n  result.sort((a, b) => a - b).pop();\n  return result;\n}\nfunction isNumber(n) {\n  return !isNaN(parseFloat(n)) && isFinite(n);\n}\nfunction almostEquals(x, y, epsilon) {\n  return Math.abs(x - y) < epsilon;\n}\nfunction almostWhole(x, epsilon) {\n  const rounded = Math.round(x);\n  return ((rounded - epsilon) <= x) && ((rounded + epsilon) >= x);\n}\nfunction _setMinAndMaxByKey(array, target, property) {\n  let i, ilen, value;\n  for (i = 0, ilen = array.length; i < ilen; i++) {\n    value = array[i][property];\n    if (!isNaN(value)) {\n      target.min = Math.min(target.min, value);\n      target.max = Math.max(target.max, value);\n    }\n  }\n}\nfunction toRadians(degrees) {\n  return degrees * (PI / 180);\n}\nfunction toDegrees(radians) {\n  return radians * (180 / PI);\n}\nfunction _decimalPlaces(x) {\n  if (!isNumberFinite(x)) {\n    return;\n  }\n  let e = 1;\n  let p = 0;\n  while (Math.round(x * e) / e !== x) {\n    e *= 10;\n    p++;\n  }\n  return p;\n}\nfunction getAngleFromPoint(centrePoint, anglePoint) {\n  const distanceFromXCenter = anglePoint.x - centrePoint.x;\n  const distanceFromYCenter = anglePoint.y - centrePoint.y;\n  const radialDistanceFromCenter = Math.sqrt(distanceFromXCenter * distanceFromXCenter + distanceFromYCenter * distanceFromYCenter);\n  let angle = Math.atan2(distanceFromYCenter, distanceFromXCenter);\n  if (angle < (-0.5 * PI)) {\n    angle += TAU;\n  }\n  return {\n    angle,\n    distance: radialDistanceFromCenter\n  };\n}\nfunction distanceBetweenPoints(pt1, pt2) {\n  return Math.sqrt(Math.pow(pt2.x - pt1.x, 2) + Math.pow(pt2.y - pt1.y, 2));\n}\nfunction _angleDiff(a, b) {\n  return (a - b + PITAU) % TAU - PI;\n}\nfunction _normalizeAngle(a) {\n  return (a % TAU + TAU) % TAU;\n}\nfunction _angleBetween(angle, start, end, sameAngleIsFullCircle) {\n  const a = _normalizeAngle(angle);\n  const s = _normalizeAngle(start);\n  const e = _normalizeAngle(end);\n  const angleToStart = _normalizeAngle(s - a);\n  const angleToEnd = _normalizeAngle(e - a);\n  const startToAngle = _normalizeAngle(a - s);\n  const endToAngle = _normalizeAngle(a - e);\n  return a === s || a === e || (sameAngleIsFullCircle && s === e)\n    || (angleToStart > angleToEnd && startToAngle < endToAngle);\n}\nfunction _limitValue(value, min, max) {\n  return Math.max(min, Math.min(max, value));\n}\nfunction _int16Range(value) {\n  return _limitValue(value, -32768, 32767);\n}\nfunction _isBetween(value, start, end, epsilon = 1e-6) {\n  return value >= Math.min(start, end) - epsilon && value <= Math.max(start, end) + epsilon;\n}\n\nfunction _lookup(table, value, cmp) {\n  cmp = cmp || ((index) => table[index] < value);\n  let hi = table.length - 1;\n  let lo = 0;\n  let mid;\n  while (hi - lo > 1) {\n    mid = (lo + hi) >> 1;\n    if (cmp(mid)) {\n      lo = mid;\n    } else {\n      hi = mid;\n    }\n  }\n  return {lo, hi};\n}\nconst _lookupByKey = (table, key, value, last) =>\n  _lookup(table, value, last\n    ? index => table[index][key] <= value\n    : index => table[index][key] < value);\nconst _rlookupByKey = (table, key, value) =>\n  _lookup(table, value, index => table[index][key] >= value);\nfunction _filterBetween(values, min, max) {\n  let start = 0;\n  let end = values.length;\n  while (start < end && values[start] < min) {\n    start++;\n  }\n  while (end > start && values[end - 1] > max) {\n    end--;\n  }\n  return start > 0 || end < values.length\n    ? values.slice(start, end)\n    : values;\n}\nconst arrayEvents = ['push', 'pop', 'shift', 'splice', 'unshift'];\nfunction listenArrayEvents(array, listener) {\n  if (array._chartjs) {\n    array._chartjs.listeners.push(listener);\n    return;\n  }\n  Object.defineProperty(array, '_chartjs', {\n    configurable: true,\n    enumerable: false,\n    value: {\n      listeners: [listener]\n    }\n  });\n  arrayEvents.forEach((key) => {\n    const method = '_onData' + _capitalize(key);\n    const base = array[key];\n    Object.defineProperty(array, key, {\n      configurable: true,\n      enumerable: false,\n      value(...args) {\n        const res = base.apply(this, args);\n        array._chartjs.listeners.forEach((object) => {\n          if (typeof object[method] === 'function') {\n            object[method](...args);\n          }\n        });\n        return res;\n      }\n    });\n  });\n}\nfunction unlistenArrayEvents(array, listener) {\n  const stub = array._chartjs;\n  if (!stub) {\n    return;\n  }\n  const listeners = stub.listeners;\n  const index = listeners.indexOf(listener);\n  if (index !== -1) {\n    listeners.splice(index, 1);\n  }\n  if (listeners.length > 0) {\n    return;\n  }\n  arrayEvents.forEach((key) => {\n    delete array[key];\n  });\n  delete array._chartjs;\n}\nfunction _arrayUnique(items) {\n  const set = new Set();\n  let i, ilen;\n  for (i = 0, ilen = items.length; i < ilen; ++i) {\n    set.add(items[i]);\n  }\n  if (set.size === ilen) {\n    return items;\n  }\n  return Array.from(set);\n}\n\nfunction fontString(pixelSize, fontStyle, fontFamily) {\n  return fontStyle + ' ' + pixelSize + 'px ' + fontFamily;\n}\nconst requestAnimFrame = (function() {\n  if (typeof window === 'undefined') {\n    return function(callback) {\n      return callback();\n    };\n  }\n  return window.requestAnimationFrame;\n}());\nfunction throttled(fn, thisArg, updateFn) {\n  const updateArgs = updateFn || ((args) => Array.prototype.slice.call(args));\n  let ticking = false;\n  let args = [];\n  return function(...rest) {\n    args = updateArgs(rest);\n    if (!ticking) {\n      ticking = true;\n      requestAnimFrame.call(window, () => {\n        ticking = false;\n        fn.apply(thisArg, args);\n      });\n    }\n  };\n}\nfunction debounce(fn, delay) {\n  let timeout;\n  return function(...args) {\n    if (delay) {\n      clearTimeout(timeout);\n      timeout = setTimeout(fn, delay, args);\n    } else {\n      fn.apply(this, args);\n    }\n    return delay;\n  };\n}\nconst _toLeftRightCenter = (align) => align === 'start' ? 'left' : align === 'end' ? 'right' : 'center';\nconst _alignStartEnd = (align, start, end) => align === 'start' ? start : align === 'end' ? end : (start + end) / 2;\nconst _textX = (align, left, right, rtl) => {\n  const check = rtl ? 'left' : 'right';\n  return align === check ? right : align === 'center' ? (left + right) / 2 : left;\n};\nfunction _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled) {\n  const pointCount = points.length;\n  let start = 0;\n  let count = pointCount;\n  if (meta._sorted) {\n    const {iScale, _parsed} = meta;\n    const axis = iScale.axis;\n    const {min, max, minDefined, maxDefined} = iScale.getUserBounds();\n    if (minDefined) {\n      start = _limitValue(Math.min(\n        _lookupByKey(_parsed, iScale.axis, min).lo,\n        animationsDisabled ? pointCount : _lookupByKey(points, axis, iScale.getPixelForValue(min)).lo),\n      0, pointCount - 1);\n    }\n    if (maxDefined) {\n      count = _limitValue(Math.max(\n        _lookupByKey(_parsed, iScale.axis, max, true).hi + 1,\n        animationsDisabled ? 0 : _lookupByKey(points, axis, iScale.getPixelForValue(max), true).hi + 1),\n      start, pointCount) - start;\n    } else {\n      count = pointCount - start;\n    }\n  }\n  return {start, count};\n}\nfunction _scaleRangesChanged(meta) {\n  const {xScale, yScale, _scaleRanges} = meta;\n  const newRanges = {\n    xmin: xScale.min,\n    xmax: xScale.max,\n    ymin: yScale.min,\n    ymax: yScale.max\n  };\n  if (!_scaleRanges) {\n    meta._scaleRanges = newRanges;\n    return true;\n  }\n  const changed = _scaleRanges.xmin !== xScale.min\n\t\t|| _scaleRanges.xmax !== xScale.max\n\t\t|| _scaleRanges.ymin !== yScale.min\n\t\t|| _scaleRanges.ymax !== yScale.max;\n  Object.assign(_scaleRanges, newRanges);\n  return changed;\n}\n\nconst atEdge = (t) => t === 0 || t === 1;\nconst elasticIn = (t, s, p) => -(Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * TAU / p));\nconst elasticOut = (t, s, p) => Math.pow(2, -10 * t) * Math.sin((t - s) * TAU / p) + 1;\nconst effects = {\n  linear: t => t,\n  easeInQuad: t => t * t,\n  easeOutQuad: t => -t * (t - 2),\n  easeInOutQuad: t => ((t /= 0.5) < 1)\n    ? 0.5 * t * t\n    : -0.5 * ((--t) * (t - 2) - 1),\n  easeInCubic: t => t * t * t,\n  easeOutCubic: t => (t -= 1) * t * t + 1,\n  easeInOutCubic: t => ((t /= 0.5) < 1)\n    ? 0.5 * t * t * t\n    : 0.5 * ((t -= 2) * t * t + 2),\n  easeInQuart: t => t * t * t * t,\n  easeOutQuart: t => -((t -= 1) * t * t * t - 1),\n  easeInOutQuart: t => ((t /= 0.5) < 1)\n    ? 0.5 * t * t * t * t\n    : -0.5 * ((t -= 2) * t * t * t - 2),\n  easeInQuint: t => t * t * t * t * t,\n  easeOutQuint: t => (t -= 1) * t * t * t * t + 1,\n  easeInOutQuint: t => ((t /= 0.5) < 1)\n    ? 0.5 * t * t * t * t * t\n    : 0.5 * ((t -= 2) * t * t * t * t + 2),\n  easeInSine: t => -Math.cos(t * HALF_PI) + 1,\n  easeOutSine: t => Math.sin(t * HALF_PI),\n  easeInOutSine: t => -0.5 * (Math.cos(PI * t) - 1),\n  easeInExpo: t => (t === 0) ? 0 : Math.pow(2, 10 * (t - 1)),\n  easeOutExpo: t => (t === 1) ? 1 : -Math.pow(2, -10 * t) + 1,\n  easeInOutExpo: t => atEdge(t) ? t : t < 0.5\n    ? 0.5 * Math.pow(2, 10 * (t * 2 - 1))\n    : 0.5 * (-Math.pow(2, -10 * (t * 2 - 1)) + 2),\n  easeInCirc: t => (t >= 1) ? t : -(Math.sqrt(1 - t * t) - 1),\n  easeOutCirc: t => Math.sqrt(1 - (t -= 1) * t),\n  easeInOutCirc: t => ((t /= 0.5) < 1)\n    ? -0.5 * (Math.sqrt(1 - t * t) - 1)\n    : 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1),\n  easeInElastic: t => atEdge(t) ? t : elasticIn(t, 0.075, 0.3),\n  easeOutElastic: t => atEdge(t) ? t : elasticOut(t, 0.075, 0.3),\n  easeInOutElastic(t) {\n    const s = 0.1125;\n    const p = 0.45;\n    return atEdge(t) ? t :\n      t < 0.5\n        ? 0.5 * elasticIn(t * 2, s, p)\n        : 0.5 + 0.5 * elasticOut(t * 2 - 1, s, p);\n  },\n  easeInBack(t) {\n    const s = 1.70158;\n    return t * t * ((s + 1) * t - s);\n  },\n  easeOutBack(t) {\n    const s = 1.70158;\n    return (t -= 1) * t * ((s + 1) * t + s) + 1;\n  },\n  easeInOutBack(t) {\n    let s = 1.70158;\n    if ((t /= 0.5) < 1) {\n      return 0.5 * (t * t * (((s *= (1.525)) + 1) * t - s));\n    }\n    return 0.5 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2);\n  },\n  easeInBounce: t => 1 - effects.easeOutBounce(1 - t),\n  easeOutBounce(t) {\n    const m = 7.5625;\n    const d = 2.75;\n    if (t < (1 / d)) {\n      return m * t * t;\n    }\n    if (t < (2 / d)) {\n      return m * (t -= (1.5 / d)) * t + 0.75;\n    }\n    if (t < (2.5 / d)) {\n      return m * (t -= (2.25 / d)) * t + 0.9375;\n    }\n    return m * (t -= (2.625 / d)) * t + 0.984375;\n  },\n  easeInOutBounce: t => (t < 0.5)\n    ? effects.easeInBounce(t * 2) * 0.5\n    : effects.easeOutBounce(t * 2 - 1) * 0.5 + 0.5,\n};\n\n/*!\n * @kurkle/color v0.2.1\n * https://github.com/kurkle/color#readme\n * (c) 2022 Jukka Kurkela\n * Released under the MIT License\n */\nfunction round(v) {\n  return v + 0.5 | 0;\n}\nconst lim = (v, l, h) => Math.max(Math.min(v, h), l);\nfunction p2b(v) {\n  return lim(round(v * 2.55), 0, 255);\n}\nfunction n2b(v) {\n  return lim(round(v * 255), 0, 255);\n}\nfunction b2n(v) {\n  return lim(round(v / 2.55) / 100, 0, 1);\n}\nfunction n2p(v) {\n  return lim(round(v * 100), 0, 100);\n}\nconst map$1 = {0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9, A: 10, B: 11, C: 12, D: 13, E: 14, F: 15, a: 10, b: 11, c: 12, d: 13, e: 14, f: 15};\nconst hex = [...'0123456789ABCDEF'];\nconst h1 = b => hex[b & 0xF];\nconst h2 = b => hex[(b & 0xF0) >> 4] + hex[b & 0xF];\nconst eq = b => ((b & 0xF0) >> 4) === (b & 0xF);\nconst isShort = v => eq(v.r) && eq(v.g) && eq(v.b) && eq(v.a);\nfunction hexParse(str) {\n  var len = str.length;\n  var ret;\n  if (str[0] === '#') {\n    if (len === 4 || len === 5) {\n      ret = {\n        r: 255 & map$1[str[1]] * 17,\n        g: 255 & map$1[str[2]] * 17,\n        b: 255 & map$1[str[3]] * 17,\n        a: len === 5 ? map$1[str[4]] * 17 : 255\n      };\n    } else if (len === 7 || len === 9) {\n      ret = {\n        r: map$1[str[1]] << 4 | map$1[str[2]],\n        g: map$1[str[3]] << 4 | map$1[str[4]],\n        b: map$1[str[5]] << 4 | map$1[str[6]],\n        a: len === 9 ? (map$1[str[7]] << 4 | map$1[str[8]]) : 255\n      };\n    }\n  }\n  return ret;\n}\nconst alpha = (a, f) => a < 255 ? f(a) : '';\nfunction hexString(v) {\n  var f = isShort(v) ? h1 : h2;\n  return v\n    ? '#' + f(v.r) + f(v.g) + f(v.b) + alpha(v.a, f)\n    : undefined;\n}\nconst HUE_RE = /^(hsla?|hwb|hsv)\\(\\s*([-+.e\\d]+)(?:deg)?[\\s,]+([-+.e\\d]+)%[\\s,]+([-+.e\\d]+)%(?:[\\s,]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\nfunction hsl2rgbn(h, s, l) {\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  return [f(0), f(8), f(4)];\n}\nfunction hsv2rgbn(h, s, v) {\n  const f = (n, k = (n + h / 60) % 6) => v - v * s * Math.max(Math.min(k, 4 - k, 1), 0);\n  return [f(5), f(3), f(1)];\n}\nfunction hwb2rgbn(h, w, b) {\n  const rgb = hsl2rgbn(h, 1, 0.5);\n  let i;\n  if (w + b > 1) {\n    i = 1 / (w + b);\n    w *= i;\n    b *= i;\n  }\n  for (i = 0; i < 3; i++) {\n    rgb[i] *= 1 - w - b;\n    rgb[i] += w;\n  }\n  return rgb;\n}\nfunction hueValue(r, g, b, d, max) {\n  if (r === max) {\n    return ((g - b) / d) + (g < b ? 6 : 0);\n  }\n  if (g === max) {\n    return (b - r) / d + 2;\n  }\n  return (r - g) / d + 4;\n}\nfunction rgb2hsl(v) {\n  const range = 255;\n  const r = v.r / range;\n  const g = v.g / range;\n  const b = v.b / range;\n  const max = Math.max(r, g, b);\n  const min = Math.min(r, g, b);\n  const l = (max + min) / 2;\n  let h, s, d;\n  if (max !== min) {\n    d = max - min;\n    s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n    h = hueValue(r, g, b, d, max);\n    h = h * 60 + 0.5;\n  }\n  return [h | 0, s || 0, l];\n}\nfunction calln(f, a, b, c) {\n  return (\n    Array.isArray(a)\n      ? f(a[0], a[1], a[2])\n      : f(a, b, c)\n  ).map(n2b);\n}\nfunction hsl2rgb(h, s, l) {\n  return calln(hsl2rgbn, h, s, l);\n}\nfunction hwb2rgb(h, w, b) {\n  return calln(hwb2rgbn, h, w, b);\n}\nfunction hsv2rgb(h, s, v) {\n  return calln(hsv2rgbn, h, s, v);\n}\nfunction hue(h) {\n  return (h % 360 + 360) % 360;\n}\nfunction hueParse(str) {\n  const m = HUE_RE.exec(str);\n  let a = 255;\n  let v;\n  if (!m) {\n    return;\n  }\n  if (m[5] !== v) {\n    a = m[6] ? p2b(+m[5]) : n2b(+m[5]);\n  }\n  const h = hue(+m[2]);\n  const p1 = +m[3] / 100;\n  const p2 = +m[4] / 100;\n  if (m[1] === 'hwb') {\n    v = hwb2rgb(h, p1, p2);\n  } else if (m[1] === 'hsv') {\n    v = hsv2rgb(h, p1, p2);\n  } else {\n    v = hsl2rgb(h, p1, p2);\n  }\n  return {\n    r: v[0],\n    g: v[1],\n    b: v[2],\n    a: a\n  };\n}\nfunction rotate(v, deg) {\n  var h = rgb2hsl(v);\n  h[0] = hue(h[0] + deg);\n  h = hsl2rgb(h);\n  v.r = h[0];\n  v.g = h[1];\n  v.b = h[2];\n}\nfunction hslString(v) {\n  if (!v) {\n    return;\n  }\n  const a = rgb2hsl(v);\n  const h = a[0];\n  const s = n2p(a[1]);\n  const l = n2p(a[2]);\n  return v.a < 255\n    ? `hsla(${h}, ${s}%, ${l}%, ${b2n(v.a)})`\n    : `hsl(${h}, ${s}%, ${l}%)`;\n}\nconst map = {\n  x: 'dark',\n  Z: 'light',\n  Y: 're',\n  X: 'blu',\n  W: 'gr',\n  V: 'medium',\n  U: 'slate',\n  A: 'ee',\n  T: 'ol',\n  S: 'or',\n  B: 'ra',\n  C: 'lateg',\n  D: 'ights',\n  R: 'in',\n  Q: 'turquois',\n  E: 'hi',\n  P: 'ro',\n  O: 'al',\n  N: 'le',\n  M: 'de',\n  L: 'yello',\n  F: 'en',\n  K: 'ch',\n  G: 'arks',\n  H: 'ea',\n  I: 'ightg',\n  J: 'wh'\n};\nconst names$1 = {\n  OiceXe: 'f0f8ff',\n  antiquewEte: 'faebd7',\n  aqua: 'ffff',\n  aquamarRe: '7fffd4',\n  azuY: 'f0ffff',\n  beige: 'f5f5dc',\n  bisque: 'ffe4c4',\n  black: '0',\n  blanKedOmond: 'ffebcd',\n  Xe: 'ff',\n  XeviTet: '8a2be2',\n  bPwn: 'a52a2a',\n  burlywood: 'deb887',\n  caMtXe: '5f9ea0',\n  KartYuse: '7fff00',\n  KocTate: 'd2691e',\n  cSO: 'ff7f50',\n  cSnflowerXe: '6495ed',\n  cSnsilk: 'fff8dc',\n  crimson: 'dc143c',\n  cyan: 'ffff',\n  xXe: '8b',\n  xcyan: '8b8b',\n  xgTMnPd: 'b8860b',\n  xWay: 'a9a9a9',\n  xgYF: '6400',\n  xgYy: 'a9a9a9',\n  xkhaki: 'bdb76b',\n  xmagFta: '8b008b',\n  xTivegYF: '556b2f',\n  xSange: 'ff8c00',\n  xScEd: '9932cc',\n  xYd: '8b0000',\n  xsOmon: 'e9967a',\n  xsHgYF: '8fbc8f',\n  xUXe: '483d8b',\n  xUWay: '2f4f4f',\n  xUgYy: '2f4f4f',\n  xQe: 'ced1',\n  xviTet: '9400d3',\n  dAppRk: 'ff1493',\n  dApskyXe: 'bfff',\n  dimWay: '696969',\n  dimgYy: '696969',\n  dodgerXe: '1e90ff',\n  fiYbrick: 'b22222',\n  flSOwEte: 'fffaf0',\n  foYstWAn: '228b22',\n  fuKsia: 'ff00ff',\n  gaRsbSo: 'dcdcdc',\n  ghostwEte: 'f8f8ff',\n  gTd: 'ffd700',\n  gTMnPd: 'daa520',\n  Way: '808080',\n  gYF: '8000',\n  gYFLw: 'adff2f',\n  gYy: '808080',\n  honeyMw: 'f0fff0',\n  hotpRk: 'ff69b4',\n  RdianYd: 'cd5c5c',\n  Rdigo: '4b0082',\n  ivSy: 'fffff0',\n  khaki: 'f0e68c',\n  lavFMr: 'e6e6fa',\n  lavFMrXsh: 'fff0f5',\n  lawngYF: '7cfc00',\n  NmoncEffon: 'fffacd',\n  ZXe: 'add8e6',\n  ZcSO: 'f08080',\n  Zcyan: 'e0ffff',\n  ZgTMnPdLw: 'fafad2',\n  ZWay: 'd3d3d3',\n  ZgYF: '90ee90',\n  ZgYy: 'd3d3d3',\n  ZpRk: 'ffb6c1',\n  ZsOmon: 'ffa07a',\n  ZsHgYF: '20b2aa',\n  ZskyXe: '87cefa',\n  ZUWay: '778899',\n  ZUgYy: '778899',\n  ZstAlXe: 'b0c4de',\n  ZLw: 'ffffe0',\n  lime: 'ff00',\n  limegYF: '32cd32',\n  lRF: 'faf0e6',\n  magFta: 'ff00ff',\n  maPon: '800000',\n  VaquamarRe: '66cdaa',\n  VXe: 'cd',\n  VScEd: 'ba55d3',\n  VpurpN: '9370db',\n  VsHgYF: '3cb371',\n  VUXe: '7b68ee',\n  VsprRggYF: 'fa9a',\n  VQe: '48d1cc',\n  VviTetYd: 'c71585',\n  midnightXe: '191970',\n  mRtcYam: 'f5fffa',\n  mistyPse: 'ffe4e1',\n  moccasR: 'ffe4b5',\n  navajowEte: 'ffdead',\n  navy: '80',\n  Tdlace: 'fdf5e6',\n  Tive: '808000',\n  TivedBb: '6b8e23',\n  Sange: 'ffa500',\n  SangeYd: 'ff4500',\n  ScEd: 'da70d6',\n  pOegTMnPd: 'eee8aa',\n  pOegYF: '98fb98',\n  pOeQe: 'afeeee',\n  pOeviTetYd: 'db7093',\n  papayawEp: 'ffefd5',\n  pHKpuff: 'ffdab9',\n  peru: 'cd853f',\n  pRk: 'ffc0cb',\n  plum: 'dda0dd',\n  powMrXe: 'b0e0e6',\n  purpN: '800080',\n  YbeccapurpN: '663399',\n  Yd: 'ff0000',\n  Psybrown: 'bc8f8f',\n  PyOXe: '4169e1',\n  saddNbPwn: '8b4513',\n  sOmon: 'fa8072',\n  sandybPwn: 'f4a460',\n  sHgYF: '2e8b57',\n  sHshell: 'fff5ee',\n  siFna: 'a0522d',\n  silver: 'c0c0c0',\n  skyXe: '87ceeb',\n  UXe: '6a5acd',\n  UWay: '708090',\n  UgYy: '708090',\n  snow: 'fffafa',\n  sprRggYF: 'ff7f',\n  stAlXe: '4682b4',\n  tan: 'd2b48c',\n  teO: '8080',\n  tEstN: 'd8bfd8',\n  tomato: 'ff6347',\n  Qe: '40e0d0',\n  viTet: 'ee82ee',\n  JHt: 'f5deb3',\n  wEte: 'ffffff',\n  wEtesmoke: 'f5f5f5',\n  Lw: 'ffff00',\n  LwgYF: '9acd32'\n};\nfunction unpack() {\n  const unpacked = {};\n  const keys = Object.keys(names$1);\n  const tkeys = Object.keys(map);\n  let i, j, k, ok, nk;\n  for (i = 0; i < keys.length; i++) {\n    ok = nk = keys[i];\n    for (j = 0; j < tkeys.length; j++) {\n      k = tkeys[j];\n      nk = nk.replace(k, map[k]);\n    }\n    k = parseInt(names$1[ok], 16);\n    unpacked[nk] = [k >> 16 & 0xFF, k >> 8 & 0xFF, k & 0xFF];\n  }\n  return unpacked;\n}\nlet names;\nfunction nameParse(str) {\n  if (!names) {\n    names = unpack();\n    names.transparent = [0, 0, 0, 0];\n  }\n  const a = names[str.toLowerCase()];\n  return a && {\n    r: a[0],\n    g: a[1],\n    b: a[2],\n    a: a.length === 4 ? a[3] : 255\n  };\n}\nconst RGB_RE = /^rgba?\\(\\s*([-+.\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?(?:[\\s,/]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\nfunction rgbParse(str) {\n  const m = RGB_RE.exec(str);\n  let a = 255;\n  let r, g, b;\n  if (!m) {\n    return;\n  }\n  if (m[7] !== r) {\n    const v = +m[7];\n    a = m[8] ? p2b(v) : lim(v * 255, 0, 255);\n  }\n  r = +m[1];\n  g = +m[3];\n  b = +m[5];\n  r = 255 & (m[2] ? p2b(r) : lim(r, 0, 255));\n  g = 255 & (m[4] ? p2b(g) : lim(g, 0, 255));\n  b = 255 & (m[6] ? p2b(b) : lim(b, 0, 255));\n  return {\n    r: r,\n    g: g,\n    b: b,\n    a: a\n  };\n}\nfunction rgbString(v) {\n  return v && (\n    v.a < 255\n      ? `rgba(${v.r}, ${v.g}, ${v.b}, ${b2n(v.a)})`\n      : `rgb(${v.r}, ${v.g}, ${v.b})`\n  );\n}\nconst to = v => v <= 0.0031308 ? v * 12.92 : Math.pow(v, 1.0 / 2.4) * 1.055 - 0.055;\nconst from = v => v <= 0.04045 ? v / 12.92 : Math.pow((v + 0.055) / 1.055, 2.4);\nfunction interpolate(rgb1, rgb2, t) {\n  const r = from(b2n(rgb1.r));\n  const g = from(b2n(rgb1.g));\n  const b = from(b2n(rgb1.b));\n  return {\n    r: n2b(to(r + t * (from(b2n(rgb2.r)) - r))),\n    g: n2b(to(g + t * (from(b2n(rgb2.g)) - g))),\n    b: n2b(to(b + t * (from(b2n(rgb2.b)) - b))),\n    a: rgb1.a + t * (rgb2.a - rgb1.a)\n  };\n}\nfunction modHSL(v, i, ratio) {\n  if (v) {\n    let tmp = rgb2hsl(v);\n    tmp[i] = Math.max(0, Math.min(tmp[i] + tmp[i] * ratio, i === 0 ? 360 : 1));\n    tmp = hsl2rgb(tmp);\n    v.r = tmp[0];\n    v.g = tmp[1];\n    v.b = tmp[2];\n  }\n}\nfunction clone(v, proto) {\n  return v ? Object.assign(proto || {}, v) : v;\n}\nfunction fromObject(input) {\n  var v = {r: 0, g: 0, b: 0, a: 255};\n  if (Array.isArray(input)) {\n    if (input.length >= 3) {\n      v = {r: input[0], g: input[1], b: input[2], a: 255};\n      if (input.length > 3) {\n        v.a = n2b(input[3]);\n      }\n    }\n  } else {\n    v = clone(input, {r: 0, g: 0, b: 0, a: 1});\n    v.a = n2b(v.a);\n  }\n  return v;\n}\nfunction functionParse(str) {\n  if (str.charAt(0) === 'r') {\n    return rgbParse(str);\n  }\n  return hueParse(str);\n}\nclass Color {\n  constructor(input) {\n    if (input instanceof Color) {\n      return input;\n    }\n    const type = typeof input;\n    let v;\n    if (type === 'object') {\n      v = fromObject(input);\n    } else if (type === 'string') {\n      v = hexParse(input) || nameParse(input) || functionParse(input);\n    }\n    this._rgb = v;\n    this._valid = !!v;\n  }\n  get valid() {\n    return this._valid;\n  }\n  get rgb() {\n    var v = clone(this._rgb);\n    if (v) {\n      v.a = b2n(v.a);\n    }\n    return v;\n  }\n  set rgb(obj) {\n    this._rgb = fromObject(obj);\n  }\n  rgbString() {\n    return this._valid ? rgbString(this._rgb) : undefined;\n  }\n  hexString() {\n    return this._valid ? hexString(this._rgb) : undefined;\n  }\n  hslString() {\n    return this._valid ? hslString(this._rgb) : undefined;\n  }\n  mix(color, weight) {\n    if (color) {\n      const c1 = this.rgb;\n      const c2 = color.rgb;\n      let w2;\n      const p = weight === w2 ? 0.5 : weight;\n      const w = 2 * p - 1;\n      const a = c1.a - c2.a;\n      const w1 = ((w * a === -1 ? w : (w + a) / (1 + w * a)) + 1) / 2.0;\n      w2 = 1 - w1;\n      c1.r = 0xFF & w1 * c1.r + w2 * c2.r + 0.5;\n      c1.g = 0xFF & w1 * c1.g + w2 * c2.g + 0.5;\n      c1.b = 0xFF & w1 * c1.b + w2 * c2.b + 0.5;\n      c1.a = p * c1.a + (1 - p) * c2.a;\n      this.rgb = c1;\n    }\n    return this;\n  }\n  interpolate(color, t) {\n    if (color) {\n      this._rgb = interpolate(this._rgb, color._rgb, t);\n    }\n    return this;\n  }\n  clone() {\n    return new Color(this.rgb);\n  }\n  alpha(a) {\n    this._rgb.a = n2b(a);\n    return this;\n  }\n  clearer(ratio) {\n    const rgb = this._rgb;\n    rgb.a *= 1 - ratio;\n    return this;\n  }\n  greyscale() {\n    const rgb = this._rgb;\n    const val = round(rgb.r * 0.3 + rgb.g * 0.59 + rgb.b * 0.11);\n    rgb.r = rgb.g = rgb.b = val;\n    return this;\n  }\n  opaquer(ratio) {\n    const rgb = this._rgb;\n    rgb.a *= 1 + ratio;\n    return this;\n  }\n  negate() {\n    const v = this._rgb;\n    v.r = 255 - v.r;\n    v.g = 255 - v.g;\n    v.b = 255 - v.b;\n    return this;\n  }\n  lighten(ratio) {\n    modHSL(this._rgb, 2, ratio);\n    return this;\n  }\n  darken(ratio) {\n    modHSL(this._rgb, 2, -ratio);\n    return this;\n  }\n  saturate(ratio) {\n    modHSL(this._rgb, 1, ratio);\n    return this;\n  }\n  desaturate(ratio) {\n    modHSL(this._rgb, 1, -ratio);\n    return this;\n  }\n  rotate(deg) {\n    rotate(this._rgb, deg);\n    return this;\n  }\n}\nfunction index_esm(input) {\n  return new Color(input);\n}\n\nfunction isPatternOrGradient(value) {\n  if (value && typeof value === 'object') {\n    const type = value.toString();\n    return type === '[object CanvasPattern]' || type === '[object CanvasGradient]';\n  }\n  return false;\n}\nfunction color(value) {\n  return isPatternOrGradient(value) ? value : index_esm(value);\n}\nfunction getHoverColor(value) {\n  return isPatternOrGradient(value)\n    ? value\n    : index_esm(value).saturate(0.5).darken(0.1).hexString();\n}\n\nconst overrides = Object.create(null);\nconst descriptors = Object.create(null);\nfunction getScope$1(node, key) {\n  if (!key) {\n    return node;\n  }\n  const keys = key.split('.');\n  for (let i = 0, n = keys.length; i < n; ++i) {\n    const k = keys[i];\n    node = node[k] || (node[k] = Object.create(null));\n  }\n  return node;\n}\nfunction set(root, scope, values) {\n  if (typeof scope === 'string') {\n    return merge(getScope$1(root, scope), values);\n  }\n  return merge(getScope$1(root, ''), scope);\n}\nclass Defaults {\n  constructor(_descriptors) {\n    this.animation = undefined;\n    this.backgroundColor = 'rgba(0,0,0,0.1)';\n    this.borderColor = 'rgba(0,0,0,0.1)';\n    this.color = '#666';\n    this.datasets = {};\n    this.devicePixelRatio = (context) => context.chart.platform.getDevicePixelRatio();\n    this.elements = {};\n    this.events = [\n      'mousemove',\n      'mouseout',\n      'click',\n      'touchstart',\n      'touchmove'\n    ];\n    this.font = {\n      family: \"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif\",\n      size: 12,\n      style: 'normal',\n      lineHeight: 1.2,\n      weight: null\n    };\n    this.hover = {};\n    this.hoverBackgroundColor = (ctx, options) => getHoverColor(options.backgroundColor);\n    this.hoverBorderColor = (ctx, options) => getHoverColor(options.borderColor);\n    this.hoverColor = (ctx, options) => getHoverColor(options.color);\n    this.indexAxis = 'x';\n    this.interaction = {\n      mode: 'nearest',\n      intersect: true,\n      includeInvisible: false\n    };\n    this.maintainAspectRatio = true;\n    this.onHover = null;\n    this.onClick = null;\n    this.parsing = true;\n    this.plugins = {};\n    this.responsive = true;\n    this.scale = undefined;\n    this.scales = {};\n    this.showLine = true;\n    this.drawActiveElementsOnTop = true;\n    this.describe(_descriptors);\n  }\n  set(scope, values) {\n    return set(this, scope, values);\n  }\n  get(scope) {\n    return getScope$1(this, scope);\n  }\n  describe(scope, values) {\n    return set(descriptors, scope, values);\n  }\n  override(scope, values) {\n    return set(overrides, scope, values);\n  }\n  route(scope, name, targetScope, targetName) {\n    const scopeObject = getScope$1(this, scope);\n    const targetScopeObject = getScope$1(this, targetScope);\n    const privateName = '_' + name;\n    Object.defineProperties(scopeObject, {\n      [privateName]: {\n        value: scopeObject[name],\n        writable: true\n      },\n      [name]: {\n        enumerable: true,\n        get() {\n          const local = this[privateName];\n          const target = targetScopeObject[targetName];\n          if (isObject(local)) {\n            return Object.assign({}, target, local);\n          }\n          return valueOrDefault(local, target);\n        },\n        set(value) {\n          this[privateName] = value;\n        }\n      }\n    });\n  }\n}\nvar defaults = new Defaults({\n  _scriptable: (name) => !name.startsWith('on'),\n  _indexable: (name) => name !== 'events',\n  hover: {\n    _fallback: 'interaction'\n  },\n  interaction: {\n    _scriptable: false,\n    _indexable: false,\n  }\n});\n\nfunction toFontString(font) {\n  if (!font || isNullOrUndef(font.size) || isNullOrUndef(font.family)) {\n    return null;\n  }\n  return (font.style ? font.style + ' ' : '')\n\t\t+ (font.weight ? font.weight + ' ' : '')\n\t\t+ font.size + 'px '\n\t\t+ font.family;\n}\nfunction _measureText(ctx, data, gc, longest, string) {\n  let textWidth = data[string];\n  if (!textWidth) {\n    textWidth = data[string] = ctx.measureText(string).width;\n    gc.push(string);\n  }\n  if (textWidth > longest) {\n    longest = textWidth;\n  }\n  return longest;\n}\nfunction _longestText(ctx, font, arrayOfThings, cache) {\n  cache = cache || {};\n  let data = cache.data = cache.data || {};\n  let gc = cache.garbageCollect = cache.garbageCollect || [];\n  if (cache.font !== font) {\n    data = cache.data = {};\n    gc = cache.garbageCollect = [];\n    cache.font = font;\n  }\n  ctx.save();\n  ctx.font = font;\n  let longest = 0;\n  const ilen = arrayOfThings.length;\n  let i, j, jlen, thing, nestedThing;\n  for (i = 0; i < ilen; i++) {\n    thing = arrayOfThings[i];\n    if (thing !== undefined && thing !== null && isArray(thing) !== true) {\n      longest = _measureText(ctx, data, gc, longest, thing);\n    } else if (isArray(thing)) {\n      for (j = 0, jlen = thing.length; j < jlen; j++) {\n        nestedThing = thing[j];\n        if (nestedThing !== undefined && nestedThing !== null && !isArray(nestedThing)) {\n          longest = _measureText(ctx, data, gc, longest, nestedThing);\n        }\n      }\n    }\n  }\n  ctx.restore();\n  const gcLen = gc.length / 2;\n  if (gcLen > arrayOfThings.length) {\n    for (i = 0; i < gcLen; i++) {\n      delete data[gc[i]];\n    }\n    gc.splice(0, gcLen);\n  }\n  return longest;\n}\nfunction _alignPixel(chart, pixel, width) {\n  const devicePixelRatio = chart.currentDevicePixelRatio;\n  const halfWidth = width !== 0 ? Math.max(width / 2, 0.5) : 0;\n  return Math.round((pixel - halfWidth) * devicePixelRatio) / devicePixelRatio + halfWidth;\n}\nfunction clearCanvas(canvas, ctx) {\n  ctx = ctx || canvas.getContext('2d');\n  ctx.save();\n  ctx.resetTransform();\n  ctx.clearRect(0, 0, canvas.width, canvas.height);\n  ctx.restore();\n}\nfunction drawPoint(ctx, options, x, y) {\n  drawPointLegend(ctx, options, x, y, null);\n}\nfunction drawPointLegend(ctx, options, x, y, w) {\n  let type, xOffset, yOffset, size, cornerRadius, width;\n  const style = options.pointStyle;\n  const rotation = options.rotation;\n  const radius = options.radius;\n  let rad = (rotation || 0) * RAD_PER_DEG;\n  if (style && typeof style === 'object') {\n    type = style.toString();\n    if (type === '[object HTMLImageElement]' || type === '[object HTMLCanvasElement]') {\n      ctx.save();\n      ctx.translate(x, y);\n      ctx.rotate(rad);\n      ctx.drawImage(style, -style.width / 2, -style.height / 2, style.width, style.height);\n      ctx.restore();\n      return;\n    }\n  }\n  if (isNaN(radius) || radius <= 0) {\n    return;\n  }\n  ctx.beginPath();\n  switch (style) {\n  default:\n    if (w) {\n      ctx.ellipse(x, y, w / 2, radius, 0, 0, TAU);\n    } else {\n      ctx.arc(x, y, radius, 0, TAU);\n    }\n    ctx.closePath();\n    break;\n  case 'triangle':\n    ctx.moveTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n    rad += TWO_THIRDS_PI;\n    ctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n    rad += TWO_THIRDS_PI;\n    ctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n    ctx.closePath();\n    break;\n  case 'rectRounded':\n    cornerRadius = radius * 0.516;\n    size = radius - cornerRadius;\n    xOffset = Math.cos(rad + QUARTER_PI) * size;\n    yOffset = Math.sin(rad + QUARTER_PI) * size;\n    ctx.arc(x - xOffset, y - yOffset, cornerRadius, rad - PI, rad - HALF_PI);\n    ctx.arc(x + yOffset, y - xOffset, cornerRadius, rad - HALF_PI, rad);\n    ctx.arc(x + xOffset, y + yOffset, cornerRadius, rad, rad + HALF_PI);\n    ctx.arc(x - yOffset, y + xOffset, cornerRadius, rad + HALF_PI, rad + PI);\n    ctx.closePath();\n    break;\n  case 'rect':\n    if (!rotation) {\n      size = Math.SQRT1_2 * radius;\n      width = w ? w / 2 : size;\n      ctx.rect(x - width, y - size, 2 * width, 2 * size);\n      break;\n    }\n    rad += QUARTER_PI;\n  case 'rectRot':\n    xOffset = Math.cos(rad) * radius;\n    yOffset = Math.sin(rad) * radius;\n    ctx.moveTo(x - xOffset, y - yOffset);\n    ctx.lineTo(x + yOffset, y - xOffset);\n    ctx.lineTo(x + xOffset, y + yOffset);\n    ctx.lineTo(x - yOffset, y + xOffset);\n    ctx.closePath();\n    break;\n  case 'crossRot':\n    rad += QUARTER_PI;\n  case 'cross':\n    xOffset = Math.cos(rad) * radius;\n    yOffset = Math.sin(rad) * radius;\n    ctx.moveTo(x - xOffset, y - yOffset);\n    ctx.lineTo(x + xOffset, y + yOffset);\n    ctx.moveTo(x + yOffset, y - xOffset);\n    ctx.lineTo(x - yOffset, y + xOffset);\n    break;\n  case 'star':\n    xOffset = Math.cos(rad) * radius;\n    yOffset = Math.sin(rad) * radius;\n    ctx.moveTo(x - xOffset, y - yOffset);\n    ctx.lineTo(x + xOffset, y + yOffset);\n    ctx.moveTo(x + yOffset, y - xOffset);\n    ctx.lineTo(x - yOffset, y + xOffset);\n    rad += QUARTER_PI;\n    xOffset = Math.cos(rad) * radius;\n    yOffset = Math.sin(rad) * radius;\n    ctx.moveTo(x - xOffset, y - yOffset);\n    ctx.lineTo(x + xOffset, y + yOffset);\n    ctx.moveTo(x + yOffset, y - xOffset);\n    ctx.lineTo(x - yOffset, y + xOffset);\n    break;\n  case 'line':\n    xOffset = w ? w / 2 : Math.cos(rad) * radius;\n    yOffset = Math.sin(rad) * radius;\n    ctx.moveTo(x - xOffset, y - yOffset);\n    ctx.lineTo(x + xOffset, y + yOffset);\n    break;\n  case 'dash':\n    ctx.moveTo(x, y);\n    ctx.lineTo(x + Math.cos(rad) * radius, y + Math.sin(rad) * radius);\n    break;\n  }\n  ctx.fill();\n  if (options.borderWidth > 0) {\n    ctx.stroke();\n  }\n}\nfunction _isPointInArea(point, area, margin) {\n  margin = margin || 0.5;\n  return !area || (point && point.x > area.left - margin && point.x < area.right + margin &&\n\t\tpoint.y > area.top - margin && point.y < area.bottom + margin);\n}\nfunction clipArea(ctx, area) {\n  ctx.save();\n  ctx.beginPath();\n  ctx.rect(area.left, area.top, area.right - area.left, area.bottom - area.top);\n  ctx.clip();\n}\nfunction unclipArea(ctx) {\n  ctx.restore();\n}\nfunction _steppedLineTo(ctx, previous, target, flip, mode) {\n  if (!previous) {\n    return ctx.lineTo(target.x, target.y);\n  }\n  if (mode === 'middle') {\n    const midpoint = (previous.x + target.x) / 2.0;\n    ctx.lineTo(midpoint, previous.y);\n    ctx.lineTo(midpoint, target.y);\n  } else if (mode === 'after' !== !!flip) {\n    ctx.lineTo(previous.x, target.y);\n  } else {\n    ctx.lineTo(target.x, previous.y);\n  }\n  ctx.lineTo(target.x, target.y);\n}\nfunction _bezierCurveTo(ctx, previous, target, flip) {\n  if (!previous) {\n    return ctx.lineTo(target.x, target.y);\n  }\n  ctx.bezierCurveTo(\n    flip ? previous.cp1x : previous.cp2x,\n    flip ? previous.cp1y : previous.cp2y,\n    flip ? target.cp2x : target.cp1x,\n    flip ? target.cp2y : target.cp1y,\n    target.x,\n    target.y);\n}\nfunction renderText(ctx, text, x, y, font, opts = {}) {\n  const lines = isArray(text) ? text : [text];\n  const stroke = opts.strokeWidth > 0 && opts.strokeColor !== '';\n  let i, line;\n  ctx.save();\n  ctx.font = font.string;\n  setRenderOpts(ctx, opts);\n  for (i = 0; i < lines.length; ++i) {\n    line = lines[i];\n    if (stroke) {\n      if (opts.strokeColor) {\n        ctx.strokeStyle = opts.strokeColor;\n      }\n      if (!isNullOrUndef(opts.strokeWidth)) {\n        ctx.lineWidth = opts.strokeWidth;\n      }\n      ctx.strokeText(line, x, y, opts.maxWidth);\n    }\n    ctx.fillText(line, x, y, opts.maxWidth);\n    decorateText(ctx, x, y, line, opts);\n    y += font.lineHeight;\n  }\n  ctx.restore();\n}\nfunction setRenderOpts(ctx, opts) {\n  if (opts.translation) {\n    ctx.translate(opts.translation[0], opts.translation[1]);\n  }\n  if (!isNullOrUndef(opts.rotation)) {\n    ctx.rotate(opts.rotation);\n  }\n  if (opts.color) {\n    ctx.fillStyle = opts.color;\n  }\n  if (opts.textAlign) {\n    ctx.textAlign = opts.textAlign;\n  }\n  if (opts.textBaseline) {\n    ctx.textBaseline = opts.textBaseline;\n  }\n}\nfunction decorateText(ctx, x, y, line, opts) {\n  if (opts.strikethrough || opts.underline) {\n    const metrics = ctx.measureText(line);\n    const left = x - metrics.actualBoundingBoxLeft;\n    const right = x + metrics.actualBoundingBoxRight;\n    const top = y - metrics.actualBoundingBoxAscent;\n    const bottom = y + metrics.actualBoundingBoxDescent;\n    const yDecoration = opts.strikethrough ? (top + bottom) / 2 : bottom;\n    ctx.strokeStyle = ctx.fillStyle;\n    ctx.beginPath();\n    ctx.lineWidth = opts.decorationWidth || 2;\n    ctx.moveTo(left, yDecoration);\n    ctx.lineTo(right, yDecoration);\n    ctx.stroke();\n  }\n}\nfunction addRoundedRectPath(ctx, rect) {\n  const {x, y, w, h, radius} = rect;\n  ctx.arc(x + radius.topLeft, y + radius.topLeft, radius.topLeft, -HALF_PI, PI, true);\n  ctx.lineTo(x, y + h - radius.bottomLeft);\n  ctx.arc(x + radius.bottomLeft, y + h - radius.bottomLeft, radius.bottomLeft, PI, HALF_PI, true);\n  ctx.lineTo(x + w - radius.bottomRight, y + h);\n  ctx.arc(x + w - radius.bottomRight, y + h - radius.bottomRight, radius.bottomRight, HALF_PI, 0, true);\n  ctx.lineTo(x + w, y + radius.topRight);\n  ctx.arc(x + w - radius.topRight, y + radius.topRight, radius.topRight, 0, -HALF_PI, true);\n  ctx.lineTo(x + radius.topLeft, y);\n}\n\nconst LINE_HEIGHT = new RegExp(/^(normal|(\\d+(?:\\.\\d+)?)(px|em|%)?)$/);\nconst FONT_STYLE = new RegExp(/^(normal|italic|initial|inherit|unset|(oblique( -?[0-9]?[0-9]deg)?))$/);\nfunction toLineHeight(value, size) {\n  const matches = ('' + value).match(LINE_HEIGHT);\n  if (!matches || matches[1] === 'normal') {\n    return size * 1.2;\n  }\n  value = +matches[2];\n  switch (matches[3]) {\n  case 'px':\n    return value;\n  case '%':\n    value /= 100;\n    break;\n  }\n  return size * value;\n}\nconst numberOrZero = v => +v || 0;\nfunction _readValueToProps(value, props) {\n  const ret = {};\n  const objProps = isObject(props);\n  const keys = objProps ? Object.keys(props) : props;\n  const read = isObject(value)\n    ? objProps\n      ? prop => valueOrDefault(value[prop], value[props[prop]])\n      : prop => value[prop]\n    : () => value;\n  for (const prop of keys) {\n    ret[prop] = numberOrZero(read(prop));\n  }\n  return ret;\n}\nfunction toTRBL(value) {\n  return _readValueToProps(value, {top: 'y', right: 'x', bottom: 'y', left: 'x'});\n}\nfunction toTRBLCorners(value) {\n  return _readValueToProps(value, ['topLeft', 'topRight', 'bottomLeft', 'bottomRight']);\n}\nfunction toPadding(value) {\n  const obj = toTRBL(value);\n  obj.width = obj.left + obj.right;\n  obj.height = obj.top + obj.bottom;\n  return obj;\n}\nfunction toFont(options, fallback) {\n  options = options || {};\n  fallback = fallback || defaults.font;\n  let size = valueOrDefault(options.size, fallback.size);\n  if (typeof size === 'string') {\n    size = parseInt(size, 10);\n  }\n  let style = valueOrDefault(options.style, fallback.style);\n  if (style && !('' + style).match(FONT_STYLE)) {\n    console.warn('Invalid font style specified: \"' + style + '\"');\n    style = '';\n  }\n  const font = {\n    family: valueOrDefault(options.family, fallback.family),\n    lineHeight: toLineHeight(valueOrDefault(options.lineHeight, fallback.lineHeight), size),\n    size,\n    style,\n    weight: valueOrDefault(options.weight, fallback.weight),\n    string: ''\n  };\n  font.string = toFontString(font);\n  return font;\n}\nfunction resolve(inputs, context, index, info) {\n  let cacheable = true;\n  let i, ilen, value;\n  for (i = 0, ilen = inputs.length; i < ilen; ++i) {\n    value = inputs[i];\n    if (value === undefined) {\n      continue;\n    }\n    if (context !== undefined && typeof value === 'function') {\n      value = value(context);\n      cacheable = false;\n    }\n    if (index !== undefined && isArray(value)) {\n      value = value[index % value.length];\n      cacheable = false;\n    }\n    if (value !== undefined) {\n      if (info && !cacheable) {\n        info.cacheable = false;\n      }\n      return value;\n    }\n  }\n}\nfunction _addGrace(minmax, grace, beginAtZero) {\n  const {min, max} = minmax;\n  const change = toDimension(grace, (max - min) / 2);\n  const keepZero = (value, add) => beginAtZero && value === 0 ? 0 : value + add;\n  return {\n    min: keepZero(min, -Math.abs(change)),\n    max: keepZero(max, change)\n  };\n}\nfunction createContext(parentContext, context) {\n  return Object.assign(Object.create(parentContext), context);\n}\n\nfunction _createResolver(scopes, prefixes = [''], rootScopes = scopes, fallback, getTarget = () => scopes[0]) {\n  if (!defined(fallback)) {\n    fallback = _resolve('_fallback', scopes);\n  }\n  const cache = {\n    [Symbol.toStringTag]: 'Object',\n    _cacheable: true,\n    _scopes: scopes,\n    _rootScopes: rootScopes,\n    _fallback: fallback,\n    _getTarget: getTarget,\n    override: (scope) => _createResolver([scope, ...scopes], prefixes, rootScopes, fallback),\n  };\n  return new Proxy(cache, {\n    deleteProperty(target, prop) {\n      delete target[prop];\n      delete target._keys;\n      delete scopes[0][prop];\n      return true;\n    },\n    get(target, prop) {\n      return _cached(target, prop,\n        () => _resolveWithPrefixes(prop, prefixes, scopes, target));\n    },\n    getOwnPropertyDescriptor(target, prop) {\n      return Reflect.getOwnPropertyDescriptor(target._scopes[0], prop);\n    },\n    getPrototypeOf() {\n      return Reflect.getPrototypeOf(scopes[0]);\n    },\n    has(target, prop) {\n      return getKeysFromAllScopes(target).includes(prop);\n    },\n    ownKeys(target) {\n      return getKeysFromAllScopes(target);\n    },\n    set(target, prop, value) {\n      const storage = target._storage || (target._storage = getTarget());\n      target[prop] = storage[prop] = value;\n      delete target._keys;\n      return true;\n    }\n  });\n}\nfunction _attachContext(proxy, context, subProxy, descriptorDefaults) {\n  const cache = {\n    _cacheable: false,\n    _proxy: proxy,\n    _context: context,\n    _subProxy: subProxy,\n    _stack: new Set(),\n    _descriptors: _descriptors(proxy, descriptorDefaults),\n    setContext: (ctx) => _attachContext(proxy, ctx, subProxy, descriptorDefaults),\n    override: (scope) => _attachContext(proxy.override(scope), context, subProxy, descriptorDefaults)\n  };\n  return new Proxy(cache, {\n    deleteProperty(target, prop) {\n      delete target[prop];\n      delete proxy[prop];\n      return true;\n    },\n    get(target, prop, receiver) {\n      return _cached(target, prop,\n        () => _resolveWithContext(target, prop, receiver));\n    },\n    getOwnPropertyDescriptor(target, prop) {\n      return target._descriptors.allKeys\n        ? Reflect.has(proxy, prop) ? {enumerable: true, configurable: true} : undefined\n        : Reflect.getOwnPropertyDescriptor(proxy, prop);\n    },\n    getPrototypeOf() {\n      return Reflect.getPrototypeOf(proxy);\n    },\n    has(target, prop) {\n      return Reflect.has(proxy, prop);\n    },\n    ownKeys() {\n      return Reflect.ownKeys(proxy);\n    },\n    set(target, prop, value) {\n      proxy[prop] = value;\n      delete target[prop];\n      return true;\n    }\n  });\n}\nfunction _descriptors(proxy, defaults = {scriptable: true, indexable: true}) {\n  const {_scriptable = defaults.scriptable, _indexable = defaults.indexable, _allKeys = defaults.allKeys} = proxy;\n  return {\n    allKeys: _allKeys,\n    scriptable: _scriptable,\n    indexable: _indexable,\n    isScriptable: isFunction(_scriptable) ? _scriptable : () => _scriptable,\n    isIndexable: isFunction(_indexable) ? _indexable : () => _indexable\n  };\n}\nconst readKey = (prefix, name) => prefix ? prefix + _capitalize(name) : name;\nconst needsSubResolver = (prop, value) => isObject(value) && prop !== 'adapters' &&\n  (Object.getPrototypeOf(value) === null || value.constructor === Object);\nfunction _cached(target, prop, resolve) {\n  if (Object.prototype.hasOwnProperty.call(target, prop)) {\n    return target[prop];\n  }\n  const value = resolve();\n  target[prop] = value;\n  return value;\n}\nfunction _resolveWithContext(target, prop, receiver) {\n  const {_proxy, _context, _subProxy, _descriptors: descriptors} = target;\n  let value = _proxy[prop];\n  if (isFunction(value) && descriptors.isScriptable(prop)) {\n    value = _resolveScriptable(prop, value, target, receiver);\n  }\n  if (isArray(value) && value.length) {\n    value = _resolveArray(prop, value, target, descriptors.isIndexable);\n  }\n  if (needsSubResolver(prop, value)) {\n    value = _attachContext(value, _context, _subProxy && _subProxy[prop], descriptors);\n  }\n  return value;\n}\nfunction _resolveScriptable(prop, value, target, receiver) {\n  const {_proxy, _context, _subProxy, _stack} = target;\n  if (_stack.has(prop)) {\n    throw new Error('Recursion detected: ' + Array.from(_stack).join('->') + '->' + prop);\n  }\n  _stack.add(prop);\n  value = value(_context, _subProxy || receiver);\n  _stack.delete(prop);\n  if (needsSubResolver(prop, value)) {\n    value = createSubResolver(_proxy._scopes, _proxy, prop, value);\n  }\n  return value;\n}\nfunction _resolveArray(prop, value, target, isIndexable) {\n  const {_proxy, _context, _subProxy, _descriptors: descriptors} = target;\n  if (defined(_context.index) && isIndexable(prop)) {\n    value = value[_context.index % value.length];\n  } else if (isObject(value[0])) {\n    const arr = value;\n    const scopes = _proxy._scopes.filter(s => s !== arr);\n    value = [];\n    for (const item of arr) {\n      const resolver = createSubResolver(scopes, _proxy, prop, item);\n      value.push(_attachContext(resolver, _context, _subProxy && _subProxy[prop], descriptors));\n    }\n  }\n  return value;\n}\nfunction resolveFallback(fallback, prop, value) {\n  return isFunction(fallback) ? fallback(prop, value) : fallback;\n}\nconst getScope = (key, parent) => key === true ? parent\n  : typeof key === 'string' ? resolveObjectKey(parent, key) : undefined;\nfunction addScopes(set, parentScopes, key, parentFallback, value) {\n  for (const parent of parentScopes) {\n    const scope = getScope(key, parent);\n    if (scope) {\n      set.add(scope);\n      const fallback = resolveFallback(scope._fallback, key, value);\n      if (defined(fallback) && fallback !== key && fallback !== parentFallback) {\n        return fallback;\n      }\n    } else if (scope === false && defined(parentFallback) && key !== parentFallback) {\n      return null;\n    }\n  }\n  return false;\n}\nfunction createSubResolver(parentScopes, resolver, prop, value) {\n  const rootScopes = resolver._rootScopes;\n  const fallback = resolveFallback(resolver._fallback, prop, value);\n  const allScopes = [...parentScopes, ...rootScopes];\n  const set = new Set();\n  set.add(value);\n  let key = addScopesFromKey(set, allScopes, prop, fallback || prop, value);\n  if (key === null) {\n    return false;\n  }\n  if (defined(fallback) && fallback !== prop) {\n    key = addScopesFromKey(set, allScopes, fallback, key, value);\n    if (key === null) {\n      return false;\n    }\n  }\n  return _createResolver(Array.from(set), [''], rootScopes, fallback,\n    () => subGetTarget(resolver, prop, value));\n}\nfunction addScopesFromKey(set, allScopes, key, fallback, item) {\n  while (key) {\n    key = addScopes(set, allScopes, key, fallback, item);\n  }\n  return key;\n}\nfunction subGetTarget(resolver, prop, value) {\n  const parent = resolver._getTarget();\n  if (!(prop in parent)) {\n    parent[prop] = {};\n  }\n  const target = parent[prop];\n  if (isArray(target) && isObject(value)) {\n    return value;\n  }\n  return target;\n}\nfunction _resolveWithPrefixes(prop, prefixes, scopes, proxy) {\n  let value;\n  for (const prefix of prefixes) {\n    value = _resolve(readKey(prefix, prop), scopes);\n    if (defined(value)) {\n      return needsSubResolver(prop, value)\n        ? createSubResolver(scopes, proxy, prop, value)\n        : value;\n    }\n  }\n}\nfunction _resolve(key, scopes) {\n  for (const scope of scopes) {\n    if (!scope) {\n      continue;\n    }\n    const value = scope[key];\n    if (defined(value)) {\n      return value;\n    }\n  }\n}\nfunction getKeysFromAllScopes(target) {\n  let keys = target._keys;\n  if (!keys) {\n    keys = target._keys = resolveKeysFromAllScopes(target._scopes);\n  }\n  return keys;\n}\nfunction resolveKeysFromAllScopes(scopes) {\n  const set = new Set();\n  for (const scope of scopes) {\n    for (const key of Object.keys(scope).filter(k => !k.startsWith('_'))) {\n      set.add(key);\n    }\n  }\n  return Array.from(set);\n}\nfunction _parseObjectDataRadialScale(meta, data, start, count) {\n  const {iScale} = meta;\n  const {key = 'r'} = this._parsing;\n  const parsed = new Array(count);\n  let i, ilen, index, item;\n  for (i = 0, ilen = count; i < ilen; ++i) {\n    index = i + start;\n    item = data[index];\n    parsed[i] = {\n      r: iScale.parse(resolveObjectKey(item, key), index)\n    };\n  }\n  return parsed;\n}\n\nconst EPSILON = Number.EPSILON || 1e-14;\nconst getPoint = (points, i) => i < points.length && !points[i].skip && points[i];\nconst getValueAxis = (indexAxis) => indexAxis === 'x' ? 'y' : 'x';\nfunction splineCurve(firstPoint, middlePoint, afterPoint, t) {\n  const previous = firstPoint.skip ? middlePoint : firstPoint;\n  const current = middlePoint;\n  const next = afterPoint.skip ? middlePoint : afterPoint;\n  const d01 = distanceBetweenPoints(current, previous);\n  const d12 = distanceBetweenPoints(next, current);\n  let s01 = d01 / (d01 + d12);\n  let s12 = d12 / (d01 + d12);\n  s01 = isNaN(s01) ? 0 : s01;\n  s12 = isNaN(s12) ? 0 : s12;\n  const fa = t * s01;\n  const fb = t * s12;\n  return {\n    previous: {\n      x: current.x - fa * (next.x - previous.x),\n      y: current.y - fa * (next.y - previous.y)\n    },\n    next: {\n      x: current.x + fb * (next.x - previous.x),\n      y: current.y + fb * (next.y - previous.y)\n    }\n  };\n}\nfunction monotoneAdjust(points, deltaK, mK) {\n  const pointsLen = points.length;\n  let alphaK, betaK, tauK, squaredMagnitude, pointCurrent;\n  let pointAfter = getPoint(points, 0);\n  for (let i = 0; i < pointsLen - 1; ++i) {\n    pointCurrent = pointAfter;\n    pointAfter = getPoint(points, i + 1);\n    if (!pointCurrent || !pointAfter) {\n      continue;\n    }\n    if (almostEquals(deltaK[i], 0, EPSILON)) {\n      mK[i] = mK[i + 1] = 0;\n      continue;\n    }\n    alphaK = mK[i] / deltaK[i];\n    betaK = mK[i + 1] / deltaK[i];\n    squaredMagnitude = Math.pow(alphaK, 2) + Math.pow(betaK, 2);\n    if (squaredMagnitude <= 9) {\n      continue;\n    }\n    tauK = 3 / Math.sqrt(squaredMagnitude);\n    mK[i] = alphaK * tauK * deltaK[i];\n    mK[i + 1] = betaK * tauK * deltaK[i];\n  }\n}\nfunction monotoneCompute(points, mK, indexAxis = 'x') {\n  const valueAxis = getValueAxis(indexAxis);\n  const pointsLen = points.length;\n  let delta, pointBefore, pointCurrent;\n  let pointAfter = getPoint(points, 0);\n  for (let i = 0; i < pointsLen; ++i) {\n    pointBefore = pointCurrent;\n    pointCurrent = pointAfter;\n    pointAfter = getPoint(points, i + 1);\n    if (!pointCurrent) {\n      continue;\n    }\n    const iPixel = pointCurrent[indexAxis];\n    const vPixel = pointCurrent[valueAxis];\n    if (pointBefore) {\n      delta = (iPixel - pointBefore[indexAxis]) / 3;\n      pointCurrent[`cp1${indexAxis}`] = iPixel - delta;\n      pointCurrent[`cp1${valueAxis}`] = vPixel - delta * mK[i];\n    }\n    if (pointAfter) {\n      delta = (pointAfter[indexAxis] - iPixel) / 3;\n      pointCurrent[`cp2${indexAxis}`] = iPixel + delta;\n      pointCurrent[`cp2${valueAxis}`] = vPixel + delta * mK[i];\n    }\n  }\n}\nfunction splineCurveMonotone(points, indexAxis = 'x') {\n  const valueAxis = getValueAxis(indexAxis);\n  const pointsLen = points.length;\n  const deltaK = Array(pointsLen).fill(0);\n  const mK = Array(pointsLen);\n  let i, pointBefore, pointCurrent;\n  let pointAfter = getPoint(points, 0);\n  for (i = 0; i < pointsLen; ++i) {\n    pointBefore = pointCurrent;\n    pointCurrent = pointAfter;\n    pointAfter = getPoint(points, i + 1);\n    if (!pointCurrent) {\n      continue;\n    }\n    if (pointAfter) {\n      const slopeDelta = pointAfter[indexAxis] - pointCurrent[indexAxis];\n      deltaK[i] = slopeDelta !== 0 ? (pointAfter[valueAxis] - pointCurrent[valueAxis]) / slopeDelta : 0;\n    }\n    mK[i] = !pointBefore ? deltaK[i]\n      : !pointAfter ? deltaK[i - 1]\n      : (sign(deltaK[i - 1]) !== sign(deltaK[i])) ? 0\n      : (deltaK[i - 1] + deltaK[i]) / 2;\n  }\n  monotoneAdjust(points, deltaK, mK);\n  monotoneCompute(points, mK, indexAxis);\n}\nfunction capControlPoint(pt, min, max) {\n  return Math.max(Math.min(pt, max), min);\n}\nfunction capBezierPoints(points, area) {\n  let i, ilen, point, inArea, inAreaPrev;\n  let inAreaNext = _isPointInArea(points[0], area);\n  for (i = 0, ilen = points.length; i < ilen; ++i) {\n    inAreaPrev = inArea;\n    inArea = inAreaNext;\n    inAreaNext = i < ilen - 1 && _isPointInArea(points[i + 1], area);\n    if (!inArea) {\n      continue;\n    }\n    point = points[i];\n    if (inAreaPrev) {\n      point.cp1x = capControlPoint(point.cp1x, area.left, area.right);\n      point.cp1y = capControlPoint(point.cp1y, area.top, area.bottom);\n    }\n    if (inAreaNext) {\n      point.cp2x = capControlPoint(point.cp2x, area.left, area.right);\n      point.cp2y = capControlPoint(point.cp2y, area.top, area.bottom);\n    }\n  }\n}\nfunction _updateBezierControlPoints(points, options, area, loop, indexAxis) {\n  let i, ilen, point, controlPoints;\n  if (options.spanGaps) {\n    points = points.filter((pt) => !pt.skip);\n  }\n  if (options.cubicInterpolationMode === 'monotone') {\n    splineCurveMonotone(points, indexAxis);\n  } else {\n    let prev = loop ? points[points.length - 1] : points[0];\n    for (i = 0, ilen = points.length; i < ilen; ++i) {\n      point = points[i];\n      controlPoints = splineCurve(\n        prev,\n        point,\n        points[Math.min(i + 1, ilen - (loop ? 0 : 1)) % ilen],\n        options.tension\n      );\n      point.cp1x = controlPoints.previous.x;\n      point.cp1y = controlPoints.previous.y;\n      point.cp2x = controlPoints.next.x;\n      point.cp2y = controlPoints.next.y;\n      prev = point;\n    }\n  }\n  if (options.capBezierPoints) {\n    capBezierPoints(points, area);\n  }\n}\n\nfunction _isDomSupported() {\n  return typeof window !== 'undefined' && typeof document !== 'undefined';\n}\nfunction _getParentNode(domNode) {\n  let parent = domNode.parentNode;\n  if (parent && parent.toString() === '[object ShadowRoot]') {\n    parent = parent.host;\n  }\n  return parent;\n}\nfunction parseMaxStyle(styleValue, node, parentProperty) {\n  let valueInPixels;\n  if (typeof styleValue === 'string') {\n    valueInPixels = parseInt(styleValue, 10);\n    if (styleValue.indexOf('%') !== -1) {\n      valueInPixels = valueInPixels / 100 * node.parentNode[parentProperty];\n    }\n  } else {\n    valueInPixels = styleValue;\n  }\n  return valueInPixels;\n}\nconst getComputedStyle = (element) => window.getComputedStyle(element, null);\nfunction getStyle(el, property) {\n  return getComputedStyle(el).getPropertyValue(property);\n}\nconst positions = ['top', 'right', 'bottom', 'left'];\nfunction getPositionedStyle(styles, style, suffix) {\n  const result = {};\n  suffix = suffix ? '-' + suffix : '';\n  for (let i = 0; i < 4; i++) {\n    const pos = positions[i];\n    result[pos] = parseFloat(styles[style + '-' + pos + suffix]) || 0;\n  }\n  result.width = result.left + result.right;\n  result.height = result.top + result.bottom;\n  return result;\n}\nconst useOffsetPos = (x, y, target) => (x > 0 || y > 0) && (!target || !target.shadowRoot);\nfunction getCanvasPosition(e, canvas) {\n  const touches = e.touches;\n  const source = touches && touches.length ? touches[0] : e;\n  const {offsetX, offsetY} = source;\n  let box = false;\n  let x, y;\n  if (useOffsetPos(offsetX, offsetY, e.target)) {\n    x = offsetX;\n    y = offsetY;\n  } else {\n    const rect = canvas.getBoundingClientRect();\n    x = source.clientX - rect.left;\n    y = source.clientY - rect.top;\n    box = true;\n  }\n  return {x, y, box};\n}\nfunction getRelativePosition(evt, chart) {\n  if ('native' in evt) {\n    return evt;\n  }\n  const {canvas, currentDevicePixelRatio} = chart;\n  const style = getComputedStyle(canvas);\n  const borderBox = style.boxSizing === 'border-box';\n  const paddings = getPositionedStyle(style, 'padding');\n  const borders = getPositionedStyle(style, 'border', 'width');\n  const {x, y, box} = getCanvasPosition(evt, canvas);\n  const xOffset = paddings.left + (box && borders.left);\n  const yOffset = paddings.top + (box && borders.top);\n  let {width, height} = chart;\n  if (borderBox) {\n    width -= paddings.width + borders.width;\n    height -= paddings.height + borders.height;\n  }\n  return {\n    x: Math.round((x - xOffset) / width * canvas.width / currentDevicePixelRatio),\n    y: Math.round((y - yOffset) / height * canvas.height / currentDevicePixelRatio)\n  };\n}\nfunction getContainerSize(canvas, width, height) {\n  let maxWidth, maxHeight;\n  if (width === undefined || height === undefined) {\n    const container = _getParentNode(canvas);\n    if (!container) {\n      width = canvas.clientWidth;\n      height = canvas.clientHeight;\n    } else {\n      const rect = container.getBoundingClientRect();\n      const containerStyle = getComputedStyle(container);\n      const containerBorder = getPositionedStyle(containerStyle, 'border', 'width');\n      const containerPadding = getPositionedStyle(containerStyle, 'padding');\n      width = rect.width - containerPadding.width - containerBorder.width;\n      height = rect.height - containerPadding.height - containerBorder.height;\n      maxWidth = parseMaxStyle(containerStyle.maxWidth, container, 'clientWidth');\n      maxHeight = parseMaxStyle(containerStyle.maxHeight, container, 'clientHeight');\n    }\n  }\n  return {\n    width,\n    height,\n    maxWidth: maxWidth || INFINITY,\n    maxHeight: maxHeight || INFINITY\n  };\n}\nconst round1 = v => Math.round(v * 10) / 10;\nfunction getMaximumSize(canvas, bbWidth, bbHeight, aspectRatio) {\n  const style = getComputedStyle(canvas);\n  const margins = getPositionedStyle(style, 'margin');\n  const maxWidth = parseMaxStyle(style.maxWidth, canvas, 'clientWidth') || INFINITY;\n  const maxHeight = parseMaxStyle(style.maxHeight, canvas, 'clientHeight') || INFINITY;\n  const containerSize = getContainerSize(canvas, bbWidth, bbHeight);\n  let {width, height} = containerSize;\n  if (style.boxSizing === 'content-box') {\n    const borders = getPositionedStyle(style, 'border', 'width');\n    const paddings = getPositionedStyle(style, 'padding');\n    width -= paddings.width + borders.width;\n    height -= paddings.height + borders.height;\n  }\n  width = Math.max(0, width - margins.width);\n  height = Math.max(0, aspectRatio ? Math.floor(width / aspectRatio) : height - margins.height);\n  width = round1(Math.min(width, maxWidth, containerSize.maxWidth));\n  height = round1(Math.min(height, maxHeight, containerSize.maxHeight));\n  if (width && !height) {\n    height = round1(width / 2);\n  }\n  return {\n    width,\n    height\n  };\n}\nfunction retinaScale(chart, forceRatio, forceStyle) {\n  const pixelRatio = forceRatio || 1;\n  const deviceHeight = Math.floor(chart.height * pixelRatio);\n  const deviceWidth = Math.floor(chart.width * pixelRatio);\n  chart.height = deviceHeight / pixelRatio;\n  chart.width = deviceWidth / pixelRatio;\n  const canvas = chart.canvas;\n  if (canvas.style && (forceStyle || (!canvas.style.height && !canvas.style.width))) {\n    canvas.style.height = `${chart.height}px`;\n    canvas.style.width = `${chart.width}px`;\n  }\n  if (chart.currentDevicePixelRatio !== pixelRatio\n      || canvas.height !== deviceHeight\n      || canvas.width !== deviceWidth) {\n    chart.currentDevicePixelRatio = pixelRatio;\n    canvas.height = deviceHeight;\n    canvas.width = deviceWidth;\n    chart.ctx.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0);\n    return true;\n  }\n  return false;\n}\nconst supportsEventListenerOptions = (function() {\n  let passiveSupported = false;\n  try {\n    const options = {\n      get passive() {\n        passiveSupported = true;\n        return false;\n      }\n    };\n    window.addEventListener('test', null, options);\n    window.removeEventListener('test', null, options);\n  } catch (e) {\n  }\n  return passiveSupported;\n}());\nfunction readUsedSize(element, property) {\n  const value = getStyle(element, property);\n  const matches = value && value.match(/^(\\d+)(\\.\\d+)?px$/);\n  return matches ? +matches[1] : undefined;\n}\n\nfunction _pointInLine(p1, p2, t, mode) {\n  return {\n    x: p1.x + t * (p2.x - p1.x),\n    y: p1.y + t * (p2.y - p1.y)\n  };\n}\nfunction _steppedInterpolation(p1, p2, t, mode) {\n  return {\n    x: p1.x + t * (p2.x - p1.x),\n    y: mode === 'middle' ? t < 0.5 ? p1.y : p2.y\n    : mode === 'after' ? t < 1 ? p1.y : p2.y\n    : t > 0 ? p2.y : p1.y\n  };\n}\nfunction _bezierInterpolation(p1, p2, t, mode) {\n  const cp1 = {x: p1.cp2x, y: p1.cp2y};\n  const cp2 = {x: p2.cp1x, y: p2.cp1y};\n  const a = _pointInLine(p1, cp1, t);\n  const b = _pointInLine(cp1, cp2, t);\n  const c = _pointInLine(cp2, p2, t);\n  const d = _pointInLine(a, b, t);\n  const e = _pointInLine(b, c, t);\n  return _pointInLine(d, e, t);\n}\n\nconst intlCache = new Map();\nfunction getNumberFormat(locale, options) {\n  options = options || {};\n  const cacheKey = locale + JSON.stringify(options);\n  let formatter = intlCache.get(cacheKey);\n  if (!formatter) {\n    formatter = new Intl.NumberFormat(locale, options);\n    intlCache.set(cacheKey, formatter);\n  }\n  return formatter;\n}\nfunction formatNumber(num, locale, options) {\n  return getNumberFormat(locale, options).format(num);\n}\n\nconst getRightToLeftAdapter = function(rectX, width) {\n  return {\n    x(x) {\n      return rectX + rectX + width - x;\n    },\n    setWidth(w) {\n      width = w;\n    },\n    textAlign(align) {\n      if (align === 'center') {\n        return align;\n      }\n      return align === 'right' ? 'left' : 'right';\n    },\n    xPlus(x, value) {\n      return x - value;\n    },\n    leftForLtr(x, itemWidth) {\n      return x - itemWidth;\n    },\n  };\n};\nconst getLeftToRightAdapter = function() {\n  return {\n    x(x) {\n      return x;\n    },\n    setWidth(w) {\n    },\n    textAlign(align) {\n      return align;\n    },\n    xPlus(x, value) {\n      return x + value;\n    },\n    leftForLtr(x, _itemWidth) {\n      return x;\n    },\n  };\n};\nfunction getRtlAdapter(rtl, rectX, width) {\n  return rtl ? getRightToLeftAdapter(rectX, width) : getLeftToRightAdapter();\n}\nfunction overrideTextDirection(ctx, direction) {\n  let style, original;\n  if (direction === 'ltr' || direction === 'rtl') {\n    style = ctx.canvas.style;\n    original = [\n      style.getPropertyValue('direction'),\n      style.getPropertyPriority('direction'),\n    ];\n    style.setProperty('direction', direction, 'important');\n    ctx.prevTextDirection = original;\n  }\n}\nfunction restoreTextDirection(ctx, original) {\n  if (original !== undefined) {\n    delete ctx.prevTextDirection;\n    ctx.canvas.style.setProperty('direction', original[0], original[1]);\n  }\n}\n\nfunction propertyFn(property) {\n  if (property === 'angle') {\n    return {\n      between: _angleBetween,\n      compare: _angleDiff,\n      normalize: _normalizeAngle,\n    };\n  }\n  return {\n    between: _isBetween,\n    compare: (a, b) => a - b,\n    normalize: x => x\n  };\n}\nfunction normalizeSegment({start, end, count, loop, style}) {\n  return {\n    start: start % count,\n    end: end % count,\n    loop: loop && (end - start + 1) % count === 0,\n    style\n  };\n}\nfunction getSegment(segment, points, bounds) {\n  const {property, start: startBound, end: endBound} = bounds;\n  const {between, normalize} = propertyFn(property);\n  const count = points.length;\n  let {start, end, loop} = segment;\n  let i, ilen;\n  if (loop) {\n    start += count;\n    end += count;\n    for (i = 0, ilen = count; i < ilen; ++i) {\n      if (!between(normalize(points[start % count][property]), startBound, endBound)) {\n        break;\n      }\n      start--;\n      end--;\n    }\n    start %= count;\n    end %= count;\n  }\n  if (end < start) {\n    end += count;\n  }\n  return {start, end, loop, style: segment.style};\n}\nfunction _boundSegment(segment, points, bounds) {\n  if (!bounds) {\n    return [segment];\n  }\n  const {property, start: startBound, end: endBound} = bounds;\n  const count = points.length;\n  const {compare, between, normalize} = propertyFn(property);\n  const {start, end, loop, style} = getSegment(segment, points, bounds);\n  const result = [];\n  let inside = false;\n  let subStart = null;\n  let value, point, prevValue;\n  const startIsBefore = () => between(startBound, prevValue, value) && compare(startBound, prevValue) !== 0;\n  const endIsBefore = () => compare(endBound, value) === 0 || between(endBound, prevValue, value);\n  const shouldStart = () => inside || startIsBefore();\n  const shouldStop = () => !inside || endIsBefore();\n  for (let i = start, prev = start; i <= end; ++i) {\n    point = points[i % count];\n    if (point.skip) {\n      continue;\n    }\n    value = normalize(point[property]);\n    if (value === prevValue) {\n      continue;\n    }\n    inside = between(value, startBound, endBound);\n    if (subStart === null && shouldStart()) {\n      subStart = compare(value, startBound) === 0 ? i : prev;\n    }\n    if (subStart !== null && shouldStop()) {\n      result.push(normalizeSegment({start: subStart, end: i, loop, count, style}));\n      subStart = null;\n    }\n    prev = i;\n    prevValue = value;\n  }\n  if (subStart !== null) {\n    result.push(normalizeSegment({start: subStart, end, loop, count, style}));\n  }\n  return result;\n}\nfunction _boundSegments(line, bounds) {\n  const result = [];\n  const segments = line.segments;\n  for (let i = 0; i < segments.length; i++) {\n    const sub = _boundSegment(segments[i], line.points, bounds);\n    if (sub.length) {\n      result.push(...sub);\n    }\n  }\n  return result;\n}\nfunction findStartAndEnd(points, count, loop, spanGaps) {\n  let start = 0;\n  let end = count - 1;\n  if (loop && !spanGaps) {\n    while (start < count && !points[start].skip) {\n      start++;\n    }\n  }\n  while (start < count && points[start].skip) {\n    start++;\n  }\n  start %= count;\n  if (loop) {\n    end += start;\n  }\n  while (end > start && points[end % count].skip) {\n    end--;\n  }\n  end %= count;\n  return {start, end};\n}\nfunction solidSegments(points, start, max, loop) {\n  const count = points.length;\n  const result = [];\n  let last = start;\n  let prev = points[start];\n  let end;\n  for (end = start + 1; end <= max; ++end) {\n    const cur = points[end % count];\n    if (cur.skip || cur.stop) {\n      if (!prev.skip) {\n        loop = false;\n        result.push({start: start % count, end: (end - 1) % count, loop});\n        start = last = cur.stop ? end : null;\n      }\n    } else {\n      last = end;\n      if (prev.skip) {\n        start = end;\n      }\n    }\n    prev = cur;\n  }\n  if (last !== null) {\n    result.push({start: start % count, end: last % count, loop});\n  }\n  return result;\n}\nfunction _computeSegments(line, segmentOptions) {\n  const points = line.points;\n  const spanGaps = line.options.spanGaps;\n  const count = points.length;\n  if (!count) {\n    return [];\n  }\n  const loop = !!line._loop;\n  const {start, end} = findStartAndEnd(points, count, loop, spanGaps);\n  if (spanGaps === true) {\n    return splitByStyles(line, [{start, end, loop}], points, segmentOptions);\n  }\n  const max = end < start ? end + count : end;\n  const completeLoop = !!line._fullLoop && start === 0 && end === count - 1;\n  return splitByStyles(line, solidSegments(points, start, max, completeLoop), points, segmentOptions);\n}\nfunction splitByStyles(line, segments, points, segmentOptions) {\n  if (!segmentOptions || !segmentOptions.setContext || !points) {\n    return segments;\n  }\n  return doSplitByStyles(line, segments, points, segmentOptions);\n}\nfunction doSplitByStyles(line, segments, points, segmentOptions) {\n  const chartContext = line._chart.getContext();\n  const baseStyle = readStyle(line.options);\n  const {_datasetIndex: datasetIndex, options: {spanGaps}} = line;\n  const count = points.length;\n  const result = [];\n  let prevStyle = baseStyle;\n  let start = segments[0].start;\n  let i = start;\n  function addStyle(s, e, l, st) {\n    const dir = spanGaps ? -1 : 1;\n    if (s === e) {\n      return;\n    }\n    s += count;\n    while (points[s % count].skip) {\n      s -= dir;\n    }\n    while (points[e % count].skip) {\n      e += dir;\n    }\n    if (s % count !== e % count) {\n      result.push({start: s % count, end: e % count, loop: l, style: st});\n      prevStyle = st;\n      start = e % count;\n    }\n  }\n  for (const segment of segments) {\n    start = spanGaps ? start : segment.start;\n    let prev = points[start % count];\n    let style;\n    for (i = start + 1; i <= segment.end; i++) {\n      const pt = points[i % count];\n      style = readStyle(segmentOptions.setContext(createContext(chartContext, {\n        type: 'segment',\n        p0: prev,\n        p1: pt,\n        p0DataIndex: (i - 1) % count,\n        p1DataIndex: i % count,\n        datasetIndex\n      })));\n      if (styleChanged(style, prevStyle)) {\n        addStyle(start, i - 1, segment.loop, prevStyle);\n      }\n      prev = pt;\n      prevStyle = style;\n    }\n    if (start < i - 1) {\n      addStyle(start, i - 1, segment.loop, prevStyle);\n    }\n  }\n  return result;\n}\nfunction readStyle(options) {\n  return {\n    backgroundColor: options.backgroundColor,\n    borderCapStyle: options.borderCapStyle,\n    borderDash: options.borderDash,\n    borderDashOffset: options.borderDashOffset,\n    borderJoinStyle: options.borderJoinStyle,\n    borderWidth: options.borderWidth,\n    borderColor: options.borderColor\n  };\n}\nfunction styleChanged(style, prevStyle) {\n  return prevStyle && JSON.stringify(style) !== JSON.stringify(prevStyle);\n}\n\nexport { _isPointInArea as $, _factorize as A, finiteOrDefault as B, callback as C, _addGrace as D, _limitValue as E, toDegrees as F, _measureText as G, HALF_PI as H, _int16Range as I, _alignPixel as J, toPadding as K, clipArea as L, renderText as M, unclipArea as N, toFont as O, PI as P, each as Q, _toLeftRightCenter as R, _alignStartEnd as S, TAU as T, overrides as U, merge as V, _capitalize as W, getRelativePosition as X, _rlookupByKey as Y, _lookupByKey as Z, _arrayUnique as _, resolve as a, toLineHeight as a$, getAngleFromPoint as a0, getMaximumSize as a1, _getParentNode as a2, readUsedSize as a3, throttled as a4, supportsEventListenerOptions as a5, _isDomSupported as a6, descriptors as a7, isFunction as a8, _attachContext as a9, getRtlAdapter as aA, overrideTextDirection as aB, _textX as aC, restoreTextDirection as aD, drawPointLegend as aE, noop as aF, distanceBetweenPoints as aG, _setMinAndMaxByKey as aH, niceNum as aI, almostWhole as aJ, almostEquals as aK, _decimalPlaces as aL, _longestText as aM, _filterBetween as aN, _lookup as aO, isPatternOrGradient as aP, getHoverColor as aQ, clone$1 as aR, _merger as aS, _mergerIf as aT, _deprecated as aU, _splitKey as aV, toFontString as aW, splineCurve as aX, splineCurveMonotone as aY, getStyle as aZ, fontString as a_, _createResolver as aa, _descriptors as ab, mergeIf as ac, uid as ad, debounce as ae, retinaScale as af, clearCanvas as ag, setsEqual as ah, _elementsEqual as ai, _isClickEvent as aj, _isBetween as ak, _readValueToProps as al, _updateBezierControlPoints as am, _computeSegments as an, _boundSegments as ao, _steppedInterpolation as ap, _bezierInterpolation as aq, _pointInLine as ar, _steppedLineTo as as, _bezierCurveTo as at, drawPoint as au, addRoundedRectPath as av, toTRBL as aw, toTRBLCorners as ax, _boundSegment as ay, _normalizeAngle as az, isArray as b, PITAU as b0, INFINITY as b1, RAD_PER_DEG as b2, QUARTER_PI as b3, TWO_THIRDS_PI as b4, _angleDiff as b5, color as c, defaults as d, effects as e, resolveObjectKey as f, isNumberFinite as g, createContext as h, isObject as i, defined as j, isNullOrUndef as k, listenArrayEvents as l, toPercentage as m, toDimension as n, formatNumber as o, _angleBetween as p, _getStartAndCountOfVisiblePoints as q, requestAnimFrame as r, sign as s, toRadians as t, unlistenArrayEvents as u, valueOrDefault as v, _scaleRangesChanged as w, isNumber as x, _parseObjectDataRadialScale as y, log10 as z };\n", "/*!\n * Chart.js v3.9.1\n * https://www.chartjs.org\n * (c) 2022 Chart.js Contributors\n * Released under the MIT License\n */\nimport { r as requestAnimFrame, a as resolve, e as effects, c as color, d as defaults, i as isObject, b as isArray, v as valueOrDefault, u as unlistenArrayEvents, l as listenArrayEvents, f as resolveObjectKey, g as isNumberFinite, h as createContext, j as defined, s as sign, k as isNullOrUndef, _ as _arrayUnique, t as toRadians, m as toPercentage, n as toDimension, T as TAU, o as formatNumber, p as _angleBetween, H as HALF_PI, P as PI, q as _getStartAndCountOfVisiblePoints, w as _scaleRangesChanged, x as isNumber, y as _parseObjectDataRadialScale, z as log10, A as _factorize, B as finiteOrDefault, C as callback, D as _addGrace, E as _limitValue, F as toDegrees, G as _measureText, I as _int16Range, J as _alignPixel, K as toPadding, L as clipArea, M as renderText, N as unclipArea, O as toFont, Q as each, R as _toLeftRightCenter, S as _alignStartEnd, U as overrides, V as merge, W as _capitalize, X as getRelativePosition, Y as _rlookupByKey, Z as _lookupByKey, $ as _isPointInArea, a0 as getAngleFromPoint, a1 as getMaximumSize, a2 as _getParentNode, a3 as readUsedSize, a4 as throttled, a5 as supportsEventListenerOptions, a6 as _isDomSupported, a7 as descriptors, a8 as isFunction, a9 as _attachContext, aa as _createResolver, ab as _descriptors, ac as mergeIf, ad as uid, ae as debounce, af as retinaScale, ag as clearCanvas, ah as setsEqual, ai as _elementsEqual, aj as _isClickEvent, ak as _isBetween, al as _readValueToProps, am as _updateBezierControlPoints, an as _computeSegments, ao as _boundSegments, ap as _steppedInterpolation, aq as _bezierInterpolation, ar as _pointInLine, as as _steppedLineTo, at as _bezierCurveTo, au as drawPoint, av as addRoundedRectPath, aw as toTRBL, ax as toTRBLCorners, ay as _boundSegment, az as _normalizeAngle, aA as getRtlAdapter, aB as overrideTextDirection, aC as _textX, aD as restoreTextDirection, aE as drawPointLegend, aF as noop, aG as distanceBetweenPoints, aH as _setMinAndMaxByKey, aI as niceNum, aJ as almostWhole, aK as almostEquals, aL as _decimalPlaces, aM as _longestText, aN as _filterBetween, aO as _lookup } from './chunks/helpers.segment.mjs';\nexport { d as defaults } from './chunks/helpers.segment.mjs';\n\nclass Animator {\n  constructor() {\n    this._request = null;\n    this._charts = new Map();\n    this._running = false;\n    this._lastDate = undefined;\n  }\n  _notify(chart, anims, date, type) {\n    const callbacks = anims.listeners[type];\n    const numSteps = anims.duration;\n    callbacks.forEach(fn => fn({\n      chart,\n      initial: anims.initial,\n      numSteps,\n      currentStep: Math.min(date - anims.start, numSteps)\n    }));\n  }\n  _refresh() {\n    if (this._request) {\n      return;\n    }\n    this._running = true;\n    this._request = requestAnimFrame.call(window, () => {\n      this._update();\n      this._request = null;\n      if (this._running) {\n        this._refresh();\n      }\n    });\n  }\n  _update(date = Date.now()) {\n    let remaining = 0;\n    this._charts.forEach((anims, chart) => {\n      if (!anims.running || !anims.items.length) {\n        return;\n      }\n      const items = anims.items;\n      let i = items.length - 1;\n      let draw = false;\n      let item;\n      for (; i >= 0; --i) {\n        item = items[i];\n        if (item._active) {\n          if (item._total > anims.duration) {\n            anims.duration = item._total;\n          }\n          item.tick(date);\n          draw = true;\n        } else {\n          items[i] = items[items.length - 1];\n          items.pop();\n        }\n      }\n      if (draw) {\n        chart.draw();\n        this._notify(chart, anims, date, 'progress');\n      }\n      if (!items.length) {\n        anims.running = false;\n        this._notify(chart, anims, date, 'complete');\n        anims.initial = false;\n      }\n      remaining += items.length;\n    });\n    this._lastDate = date;\n    if (remaining === 0) {\n      this._running = false;\n    }\n  }\n  _getAnims(chart) {\n    const charts = this._charts;\n    let anims = charts.get(chart);\n    if (!anims) {\n      anims = {\n        running: false,\n        initial: true,\n        items: [],\n        listeners: {\n          complete: [],\n          progress: []\n        }\n      };\n      charts.set(chart, anims);\n    }\n    return anims;\n  }\n  listen(chart, event, cb) {\n    this._getAnims(chart).listeners[event].push(cb);\n  }\n  add(chart, items) {\n    if (!items || !items.length) {\n      return;\n    }\n    this._getAnims(chart).items.push(...items);\n  }\n  has(chart) {\n    return this._getAnims(chart).items.length > 0;\n  }\n  start(chart) {\n    const anims = this._charts.get(chart);\n    if (!anims) {\n      return;\n    }\n    anims.running = true;\n    anims.start = Date.now();\n    anims.duration = anims.items.reduce((acc, cur) => Math.max(acc, cur._duration), 0);\n    this._refresh();\n  }\n  running(chart) {\n    if (!this._running) {\n      return false;\n    }\n    const anims = this._charts.get(chart);\n    if (!anims || !anims.running || !anims.items.length) {\n      return false;\n    }\n    return true;\n  }\n  stop(chart) {\n    const anims = this._charts.get(chart);\n    if (!anims || !anims.items.length) {\n      return;\n    }\n    const items = anims.items;\n    let i = items.length - 1;\n    for (; i >= 0; --i) {\n      items[i].cancel();\n    }\n    anims.items = [];\n    this._notify(chart, anims, Date.now(), 'complete');\n  }\n  remove(chart) {\n    return this._charts.delete(chart);\n  }\n}\nvar animator = new Animator();\n\nconst transparent = 'transparent';\nconst interpolators = {\n  boolean(from, to, factor) {\n    return factor > 0.5 ? to : from;\n  },\n  color(from, to, factor) {\n    const c0 = color(from || transparent);\n    const c1 = c0.valid && color(to || transparent);\n    return c1 && c1.valid\n      ? c1.mix(c0, factor).hexString()\n      : to;\n  },\n  number(from, to, factor) {\n    return from + (to - from) * factor;\n  }\n};\nclass Animation {\n  constructor(cfg, target, prop, to) {\n    const currentValue = target[prop];\n    to = resolve([cfg.to, to, currentValue, cfg.from]);\n    const from = resolve([cfg.from, currentValue, to]);\n    this._active = true;\n    this._fn = cfg.fn || interpolators[cfg.type || typeof from];\n    this._easing = effects[cfg.easing] || effects.linear;\n    this._start = Math.floor(Date.now() + (cfg.delay || 0));\n    this._duration = this._total = Math.floor(cfg.duration);\n    this._loop = !!cfg.loop;\n    this._target = target;\n    this._prop = prop;\n    this._from = from;\n    this._to = to;\n    this._promises = undefined;\n  }\n  active() {\n    return this._active;\n  }\n  update(cfg, to, date) {\n    if (this._active) {\n      this._notify(false);\n      const currentValue = this._target[this._prop];\n      const elapsed = date - this._start;\n      const remain = this._duration - elapsed;\n      this._start = date;\n      this._duration = Math.floor(Math.max(remain, cfg.duration));\n      this._total += elapsed;\n      this._loop = !!cfg.loop;\n      this._to = resolve([cfg.to, to, currentValue, cfg.from]);\n      this._from = resolve([cfg.from, currentValue, to]);\n    }\n  }\n  cancel() {\n    if (this._active) {\n      this.tick(Date.now());\n      this._active = false;\n      this._notify(false);\n    }\n  }\n  tick(date) {\n    const elapsed = date - this._start;\n    const duration = this._duration;\n    const prop = this._prop;\n    const from = this._from;\n    const loop = this._loop;\n    const to = this._to;\n    let factor;\n    this._active = from !== to && (loop || (elapsed < duration));\n    if (!this._active) {\n      this._target[prop] = to;\n      this._notify(true);\n      return;\n    }\n    if (elapsed < 0) {\n      this._target[prop] = from;\n      return;\n    }\n    factor = (elapsed / duration) % 2;\n    factor = loop && factor > 1 ? 2 - factor : factor;\n    factor = this._easing(Math.min(1, Math.max(0, factor)));\n    this._target[prop] = this._fn(from, to, factor);\n  }\n  wait() {\n    const promises = this._promises || (this._promises = []);\n    return new Promise((res, rej) => {\n      promises.push({res, rej});\n    });\n  }\n  _notify(resolved) {\n    const method = resolved ? 'res' : 'rej';\n    const promises = this._promises || [];\n    for (let i = 0; i < promises.length; i++) {\n      promises[i][method]();\n    }\n  }\n}\n\nconst numbers = ['x', 'y', 'borderWidth', 'radius', 'tension'];\nconst colors = ['color', 'borderColor', 'backgroundColor'];\ndefaults.set('animation', {\n  delay: undefined,\n  duration: 1000,\n  easing: 'easeOutQuart',\n  fn: undefined,\n  from: undefined,\n  loop: undefined,\n  to: undefined,\n  type: undefined,\n});\nconst animationOptions = Object.keys(defaults.animation);\ndefaults.describe('animation', {\n  _fallback: false,\n  _indexable: false,\n  _scriptable: (name) => name !== 'onProgress' && name !== 'onComplete' && name !== 'fn',\n});\ndefaults.set('animations', {\n  colors: {\n    type: 'color',\n    properties: colors\n  },\n  numbers: {\n    type: 'number',\n    properties: numbers\n  },\n});\ndefaults.describe('animations', {\n  _fallback: 'animation',\n});\ndefaults.set('transitions', {\n  active: {\n    animation: {\n      duration: 400\n    }\n  },\n  resize: {\n    animation: {\n      duration: 0\n    }\n  },\n  show: {\n    animations: {\n      colors: {\n        from: 'transparent'\n      },\n      visible: {\n        type: 'boolean',\n        duration: 0\n      },\n    }\n  },\n  hide: {\n    animations: {\n      colors: {\n        to: 'transparent'\n      },\n      visible: {\n        type: 'boolean',\n        easing: 'linear',\n        fn: v => v | 0\n      },\n    }\n  }\n});\nclass Animations {\n  constructor(chart, config) {\n    this._chart = chart;\n    this._properties = new Map();\n    this.configure(config);\n  }\n  configure(config) {\n    if (!isObject(config)) {\n      return;\n    }\n    const animatedProps = this._properties;\n    Object.getOwnPropertyNames(config).forEach(key => {\n      const cfg = config[key];\n      if (!isObject(cfg)) {\n        return;\n      }\n      const resolved = {};\n      for (const option of animationOptions) {\n        resolved[option] = cfg[option];\n      }\n      (isArray(cfg.properties) && cfg.properties || [key]).forEach((prop) => {\n        if (prop === key || !animatedProps.has(prop)) {\n          animatedProps.set(prop, resolved);\n        }\n      });\n    });\n  }\n  _animateOptions(target, values) {\n    const newOptions = values.options;\n    const options = resolveTargetOptions(target, newOptions);\n    if (!options) {\n      return [];\n    }\n    const animations = this._createAnimations(options, newOptions);\n    if (newOptions.$shared) {\n      awaitAll(target.options.$animations, newOptions).then(() => {\n        target.options = newOptions;\n      }, () => {\n      });\n    }\n    return animations;\n  }\n  _createAnimations(target, values) {\n    const animatedProps = this._properties;\n    const animations = [];\n    const running = target.$animations || (target.$animations = {});\n    const props = Object.keys(values);\n    const date = Date.now();\n    let i;\n    for (i = props.length - 1; i >= 0; --i) {\n      const prop = props[i];\n      if (prop.charAt(0) === '$') {\n        continue;\n      }\n      if (prop === 'options') {\n        animations.push(...this._animateOptions(target, values));\n        continue;\n      }\n      const value = values[prop];\n      let animation = running[prop];\n      const cfg = animatedProps.get(prop);\n      if (animation) {\n        if (cfg && animation.active()) {\n          animation.update(cfg, value, date);\n          continue;\n        } else {\n          animation.cancel();\n        }\n      }\n      if (!cfg || !cfg.duration) {\n        target[prop] = value;\n        continue;\n      }\n      running[prop] = animation = new Animation(cfg, target, prop, value);\n      animations.push(animation);\n    }\n    return animations;\n  }\n  update(target, values) {\n    if (this._properties.size === 0) {\n      Object.assign(target, values);\n      return;\n    }\n    const animations = this._createAnimations(target, values);\n    if (animations.length) {\n      animator.add(this._chart, animations);\n      return true;\n    }\n  }\n}\nfunction awaitAll(animations, properties) {\n  const running = [];\n  const keys = Object.keys(properties);\n  for (let i = 0; i < keys.length; i++) {\n    const anim = animations[keys[i]];\n    if (anim && anim.active()) {\n      running.push(anim.wait());\n    }\n  }\n  return Promise.all(running);\n}\nfunction resolveTargetOptions(target, newOptions) {\n  if (!newOptions) {\n    return;\n  }\n  let options = target.options;\n  if (!options) {\n    target.options = newOptions;\n    return;\n  }\n  if (options.$shared) {\n    target.options = options = Object.assign({}, options, {$shared: false, $animations: {}});\n  }\n  return options;\n}\n\nfunction scaleClip(scale, allowedOverflow) {\n  const opts = scale && scale.options || {};\n  const reverse = opts.reverse;\n  const min = opts.min === undefined ? allowedOverflow : 0;\n  const max = opts.max === undefined ? allowedOverflow : 0;\n  return {\n    start: reverse ? max : min,\n    end: reverse ? min : max\n  };\n}\nfunction defaultClip(xScale, yScale, allowedOverflow) {\n  if (allowedOverflow === false) {\n    return false;\n  }\n  const x = scaleClip(xScale, allowedOverflow);\n  const y = scaleClip(yScale, allowedOverflow);\n  return {\n    top: y.end,\n    right: x.end,\n    bottom: y.start,\n    left: x.start\n  };\n}\nfunction toClip(value) {\n  let t, r, b, l;\n  if (isObject(value)) {\n    t = value.top;\n    r = value.right;\n    b = value.bottom;\n    l = value.left;\n  } else {\n    t = r = b = l = value;\n  }\n  return {\n    top: t,\n    right: r,\n    bottom: b,\n    left: l,\n    disabled: value === false\n  };\n}\nfunction getSortedDatasetIndices(chart, filterVisible) {\n  const keys = [];\n  const metasets = chart._getSortedDatasetMetas(filterVisible);\n  let i, ilen;\n  for (i = 0, ilen = metasets.length; i < ilen; ++i) {\n    keys.push(metasets[i].index);\n  }\n  return keys;\n}\nfunction applyStack(stack, value, dsIndex, options = {}) {\n  const keys = stack.keys;\n  const singleMode = options.mode === 'single';\n  let i, ilen, datasetIndex, otherValue;\n  if (value === null) {\n    return;\n  }\n  for (i = 0, ilen = keys.length; i < ilen; ++i) {\n    datasetIndex = +keys[i];\n    if (datasetIndex === dsIndex) {\n      if (options.all) {\n        continue;\n      }\n      break;\n    }\n    otherValue = stack.values[datasetIndex];\n    if (isNumberFinite(otherValue) && (singleMode || (value === 0 || sign(value) === sign(otherValue)))) {\n      value += otherValue;\n    }\n  }\n  return value;\n}\nfunction convertObjectDataToArray(data) {\n  const keys = Object.keys(data);\n  const adata = new Array(keys.length);\n  let i, ilen, key;\n  for (i = 0, ilen = keys.length; i < ilen; ++i) {\n    key = keys[i];\n    adata[i] = {\n      x: key,\n      y: data[key]\n    };\n  }\n  return adata;\n}\nfunction isStacked(scale, meta) {\n  const stacked = scale && scale.options.stacked;\n  return stacked || (stacked === undefined && meta.stack !== undefined);\n}\nfunction getStackKey(indexScale, valueScale, meta) {\n  return `${indexScale.id}.${valueScale.id}.${meta.stack || meta.type}`;\n}\nfunction getUserBounds(scale) {\n  const {min, max, minDefined, maxDefined} = scale.getUserBounds();\n  return {\n    min: minDefined ? min : Number.NEGATIVE_INFINITY,\n    max: maxDefined ? max : Number.POSITIVE_INFINITY\n  };\n}\nfunction getOrCreateStack(stacks, stackKey, indexValue) {\n  const subStack = stacks[stackKey] || (stacks[stackKey] = {});\n  return subStack[indexValue] || (subStack[indexValue] = {});\n}\nfunction getLastIndexInStack(stack, vScale, positive, type) {\n  for (const meta of vScale.getMatchingVisibleMetas(type).reverse()) {\n    const value = stack[meta.index];\n    if ((positive && value > 0) || (!positive && value < 0)) {\n      return meta.index;\n    }\n  }\n  return null;\n}\nfunction updateStacks(controller, parsed) {\n  const {chart, _cachedMeta: meta} = controller;\n  const stacks = chart._stacks || (chart._stacks = {});\n  const {iScale, vScale, index: datasetIndex} = meta;\n  const iAxis = iScale.axis;\n  const vAxis = vScale.axis;\n  const key = getStackKey(iScale, vScale, meta);\n  const ilen = parsed.length;\n  let stack;\n  for (let i = 0; i < ilen; ++i) {\n    const item = parsed[i];\n    const {[iAxis]: index, [vAxis]: value} = item;\n    const itemStacks = item._stacks || (item._stacks = {});\n    stack = itemStacks[vAxis] = getOrCreateStack(stacks, key, index);\n    stack[datasetIndex] = value;\n    stack._top = getLastIndexInStack(stack, vScale, true, meta.type);\n    stack._bottom = getLastIndexInStack(stack, vScale, false, meta.type);\n  }\n}\nfunction getFirstScaleId(chart, axis) {\n  const scales = chart.scales;\n  return Object.keys(scales).filter(key => scales[key].axis === axis).shift();\n}\nfunction createDatasetContext(parent, index) {\n  return createContext(parent,\n    {\n      active: false,\n      dataset: undefined,\n      datasetIndex: index,\n      index,\n      mode: 'default',\n      type: 'dataset'\n    }\n  );\n}\nfunction createDataContext(parent, index, element) {\n  return createContext(parent, {\n    active: false,\n    dataIndex: index,\n    parsed: undefined,\n    raw: undefined,\n    element,\n    index,\n    mode: 'default',\n    type: 'data'\n  });\n}\nfunction clearStacks(meta, items) {\n  const datasetIndex = meta.controller.index;\n  const axis = meta.vScale && meta.vScale.axis;\n  if (!axis) {\n    return;\n  }\n  items = items || meta._parsed;\n  for (const parsed of items) {\n    const stacks = parsed._stacks;\n    if (!stacks || stacks[axis] === undefined || stacks[axis][datasetIndex] === undefined) {\n      return;\n    }\n    delete stacks[axis][datasetIndex];\n  }\n}\nconst isDirectUpdateMode = (mode) => mode === 'reset' || mode === 'none';\nconst cloneIfNotShared = (cached, shared) => shared ? cached : Object.assign({}, cached);\nconst createStack = (canStack, meta, chart) => canStack && !meta.hidden && meta._stacked\n  && {keys: getSortedDatasetIndices(chart, true), values: null};\nclass DatasetController {\n  constructor(chart, datasetIndex) {\n    this.chart = chart;\n    this._ctx = chart.ctx;\n    this.index = datasetIndex;\n    this._cachedDataOpts = {};\n    this._cachedMeta = this.getMeta();\n    this._type = this._cachedMeta.type;\n    this.options = undefined;\n    this._parsing = false;\n    this._data = undefined;\n    this._objectData = undefined;\n    this._sharedOptions = undefined;\n    this._drawStart = undefined;\n    this._drawCount = undefined;\n    this.enableOptionSharing = false;\n    this.supportsDecimation = false;\n    this.$context = undefined;\n    this._syncList = [];\n    this.initialize();\n  }\n  initialize() {\n    const meta = this._cachedMeta;\n    this.configure();\n    this.linkScales();\n    meta._stacked = isStacked(meta.vScale, meta);\n    this.addElements();\n  }\n  updateIndex(datasetIndex) {\n    if (this.index !== datasetIndex) {\n      clearStacks(this._cachedMeta);\n    }\n    this.index = datasetIndex;\n  }\n  linkScales() {\n    const chart = this.chart;\n    const meta = this._cachedMeta;\n    const dataset = this.getDataset();\n    const chooseId = (axis, x, y, r) => axis === 'x' ? x : axis === 'r' ? r : y;\n    const xid = meta.xAxisID = valueOrDefault(dataset.xAxisID, getFirstScaleId(chart, 'x'));\n    const yid = meta.yAxisID = valueOrDefault(dataset.yAxisID, getFirstScaleId(chart, 'y'));\n    const rid = meta.rAxisID = valueOrDefault(dataset.rAxisID, getFirstScaleId(chart, 'r'));\n    const indexAxis = meta.indexAxis;\n    const iid = meta.iAxisID = chooseId(indexAxis, xid, yid, rid);\n    const vid = meta.vAxisID = chooseId(indexAxis, yid, xid, rid);\n    meta.xScale = this.getScaleForId(xid);\n    meta.yScale = this.getScaleForId(yid);\n    meta.rScale = this.getScaleForId(rid);\n    meta.iScale = this.getScaleForId(iid);\n    meta.vScale = this.getScaleForId(vid);\n  }\n  getDataset() {\n    return this.chart.data.datasets[this.index];\n  }\n  getMeta() {\n    return this.chart.getDatasetMeta(this.index);\n  }\n  getScaleForId(scaleID) {\n    return this.chart.scales[scaleID];\n  }\n  _getOtherScale(scale) {\n    const meta = this._cachedMeta;\n    return scale === meta.iScale\n      ? meta.vScale\n      : meta.iScale;\n  }\n  reset() {\n    this._update('reset');\n  }\n  _destroy() {\n    const meta = this._cachedMeta;\n    if (this._data) {\n      unlistenArrayEvents(this._data, this);\n    }\n    if (meta._stacked) {\n      clearStacks(meta);\n    }\n  }\n  _dataCheck() {\n    const dataset = this.getDataset();\n    const data = dataset.data || (dataset.data = []);\n    const _data = this._data;\n    if (isObject(data)) {\n      this._data = convertObjectDataToArray(data);\n    } else if (_data !== data) {\n      if (_data) {\n        unlistenArrayEvents(_data, this);\n        const meta = this._cachedMeta;\n        clearStacks(meta);\n        meta._parsed = [];\n      }\n      if (data && Object.isExtensible(data)) {\n        listenArrayEvents(data, this);\n      }\n      this._syncList = [];\n      this._data = data;\n    }\n  }\n  addElements() {\n    const meta = this._cachedMeta;\n    this._dataCheck();\n    if (this.datasetElementType) {\n      meta.dataset = new this.datasetElementType();\n    }\n  }\n  buildOrUpdateElements(resetNewElements) {\n    const meta = this._cachedMeta;\n    const dataset = this.getDataset();\n    let stackChanged = false;\n    this._dataCheck();\n    const oldStacked = meta._stacked;\n    meta._stacked = isStacked(meta.vScale, meta);\n    if (meta.stack !== dataset.stack) {\n      stackChanged = true;\n      clearStacks(meta);\n      meta.stack = dataset.stack;\n    }\n    this._resyncElements(resetNewElements);\n    if (stackChanged || oldStacked !== meta._stacked) {\n      updateStacks(this, meta._parsed);\n    }\n  }\n  configure() {\n    const config = this.chart.config;\n    const scopeKeys = config.datasetScopeKeys(this._type);\n    const scopes = config.getOptionScopes(this.getDataset(), scopeKeys, true);\n    this.options = config.createResolver(scopes, this.getContext());\n    this._parsing = this.options.parsing;\n    this._cachedDataOpts = {};\n  }\n  parse(start, count) {\n    const {_cachedMeta: meta, _data: data} = this;\n    const {iScale, _stacked} = meta;\n    const iAxis = iScale.axis;\n    let sorted = start === 0 && count === data.length ? true : meta._sorted;\n    let prev = start > 0 && meta._parsed[start - 1];\n    let i, cur, parsed;\n    if (this._parsing === false) {\n      meta._parsed = data;\n      meta._sorted = true;\n      parsed = data;\n    } else {\n      if (isArray(data[start])) {\n        parsed = this.parseArrayData(meta, data, start, count);\n      } else if (isObject(data[start])) {\n        parsed = this.parseObjectData(meta, data, start, count);\n      } else {\n        parsed = this.parsePrimitiveData(meta, data, start, count);\n      }\n      const isNotInOrderComparedToPrev = () => cur[iAxis] === null || (prev && cur[iAxis] < prev[iAxis]);\n      for (i = 0; i < count; ++i) {\n        meta._parsed[i + start] = cur = parsed[i];\n        if (sorted) {\n          if (isNotInOrderComparedToPrev()) {\n            sorted = false;\n          }\n          prev = cur;\n        }\n      }\n      meta._sorted = sorted;\n    }\n    if (_stacked) {\n      updateStacks(this, parsed);\n    }\n  }\n  parsePrimitiveData(meta, data, start, count) {\n    const {iScale, vScale} = meta;\n    const iAxis = iScale.axis;\n    const vAxis = vScale.axis;\n    const labels = iScale.getLabels();\n    const singleScale = iScale === vScale;\n    const parsed = new Array(count);\n    let i, ilen, index;\n    for (i = 0, ilen = count; i < ilen; ++i) {\n      index = i + start;\n      parsed[i] = {\n        [iAxis]: singleScale || iScale.parse(labels[index], index),\n        [vAxis]: vScale.parse(data[index], index)\n      };\n    }\n    return parsed;\n  }\n  parseArrayData(meta, data, start, count) {\n    const {xScale, yScale} = meta;\n    const parsed = new Array(count);\n    let i, ilen, index, item;\n    for (i = 0, ilen = count; i < ilen; ++i) {\n      index = i + start;\n      item = data[index];\n      parsed[i] = {\n        x: xScale.parse(item[0], index),\n        y: yScale.parse(item[1], index)\n      };\n    }\n    return parsed;\n  }\n  parseObjectData(meta, data, start, count) {\n    const {xScale, yScale} = meta;\n    const {xAxisKey = 'x', yAxisKey = 'y'} = this._parsing;\n    const parsed = new Array(count);\n    let i, ilen, index, item;\n    for (i = 0, ilen = count; i < ilen; ++i) {\n      index = i + start;\n      item = data[index];\n      parsed[i] = {\n        x: xScale.parse(resolveObjectKey(item, xAxisKey), index),\n        y: yScale.parse(resolveObjectKey(item, yAxisKey), index)\n      };\n    }\n    return parsed;\n  }\n  getParsed(index) {\n    return this._cachedMeta._parsed[index];\n  }\n  getDataElement(index) {\n    return this._cachedMeta.data[index];\n  }\n  applyStack(scale, parsed, mode) {\n    const chart = this.chart;\n    const meta = this._cachedMeta;\n    const value = parsed[scale.axis];\n    const stack = {\n      keys: getSortedDatasetIndices(chart, true),\n      values: parsed._stacks[scale.axis]\n    };\n    return applyStack(stack, value, meta.index, {mode});\n  }\n  updateRangeFromParsed(range, scale, parsed, stack) {\n    const parsedValue = parsed[scale.axis];\n    let value = parsedValue === null ? NaN : parsedValue;\n    const values = stack && parsed._stacks[scale.axis];\n    if (stack && values) {\n      stack.values = values;\n      value = applyStack(stack, parsedValue, this._cachedMeta.index);\n    }\n    range.min = Math.min(range.min, value);\n    range.max = Math.max(range.max, value);\n  }\n  getMinMax(scale, canStack) {\n    const meta = this._cachedMeta;\n    const _parsed = meta._parsed;\n    const sorted = meta._sorted && scale === meta.iScale;\n    const ilen = _parsed.length;\n    const otherScale = this._getOtherScale(scale);\n    const stack = createStack(canStack, meta, this.chart);\n    const range = {min: Number.POSITIVE_INFINITY, max: Number.NEGATIVE_INFINITY};\n    const {min: otherMin, max: otherMax} = getUserBounds(otherScale);\n    let i, parsed;\n    function _skip() {\n      parsed = _parsed[i];\n      const otherValue = parsed[otherScale.axis];\n      return !isNumberFinite(parsed[scale.axis]) || otherMin > otherValue || otherMax < otherValue;\n    }\n    for (i = 0; i < ilen; ++i) {\n      if (_skip()) {\n        continue;\n      }\n      this.updateRangeFromParsed(range, scale, parsed, stack);\n      if (sorted) {\n        break;\n      }\n    }\n    if (sorted) {\n      for (i = ilen - 1; i >= 0; --i) {\n        if (_skip()) {\n          continue;\n        }\n        this.updateRangeFromParsed(range, scale, parsed, stack);\n        break;\n      }\n    }\n    return range;\n  }\n  getAllParsedValues(scale) {\n    const parsed = this._cachedMeta._parsed;\n    const values = [];\n    let i, ilen, value;\n    for (i = 0, ilen = parsed.length; i < ilen; ++i) {\n      value = parsed[i][scale.axis];\n      if (isNumberFinite(value)) {\n        values.push(value);\n      }\n    }\n    return values;\n  }\n  getMaxOverflow() {\n    return false;\n  }\n  getLabelAndValue(index) {\n    const meta = this._cachedMeta;\n    const iScale = meta.iScale;\n    const vScale = meta.vScale;\n    const parsed = this.getParsed(index);\n    return {\n      label: iScale ? '' + iScale.getLabelForValue(parsed[iScale.axis]) : '',\n      value: vScale ? '' + vScale.getLabelForValue(parsed[vScale.axis]) : ''\n    };\n  }\n  _update(mode) {\n    const meta = this._cachedMeta;\n    this.update(mode || 'default');\n    meta._clip = toClip(valueOrDefault(this.options.clip, defaultClip(meta.xScale, meta.yScale, this.getMaxOverflow())));\n  }\n  update(mode) {}\n  draw() {\n    const ctx = this._ctx;\n    const chart = this.chart;\n    const meta = this._cachedMeta;\n    const elements = meta.data || [];\n    const area = chart.chartArea;\n    const active = [];\n    const start = this._drawStart || 0;\n    const count = this._drawCount || (elements.length - start);\n    const drawActiveElementsOnTop = this.options.drawActiveElementsOnTop;\n    let i;\n    if (meta.dataset) {\n      meta.dataset.draw(ctx, area, start, count);\n    }\n    for (i = start; i < start + count; ++i) {\n      const element = elements[i];\n      if (element.hidden) {\n        continue;\n      }\n      if (element.active && drawActiveElementsOnTop) {\n        active.push(element);\n      } else {\n        element.draw(ctx, area);\n      }\n    }\n    for (i = 0; i < active.length; ++i) {\n      active[i].draw(ctx, area);\n    }\n  }\n  getStyle(index, active) {\n    const mode = active ? 'active' : 'default';\n    return index === undefined && this._cachedMeta.dataset\n      ? this.resolveDatasetElementOptions(mode)\n      : this.resolveDataElementOptions(index || 0, mode);\n  }\n  getContext(index, active, mode) {\n    const dataset = this.getDataset();\n    let context;\n    if (index >= 0 && index < this._cachedMeta.data.length) {\n      const element = this._cachedMeta.data[index];\n      context = element.$context ||\n        (element.$context = createDataContext(this.getContext(), index, element));\n      context.parsed = this.getParsed(index);\n      context.raw = dataset.data[index];\n      context.index = context.dataIndex = index;\n    } else {\n      context = this.$context ||\n        (this.$context = createDatasetContext(this.chart.getContext(), this.index));\n      context.dataset = dataset;\n      context.index = context.datasetIndex = this.index;\n    }\n    context.active = !!active;\n    context.mode = mode;\n    return context;\n  }\n  resolveDatasetElementOptions(mode) {\n    return this._resolveElementOptions(this.datasetElementType.id, mode);\n  }\n  resolveDataElementOptions(index, mode) {\n    return this._resolveElementOptions(this.dataElementType.id, mode, index);\n  }\n  _resolveElementOptions(elementType, mode = 'default', index) {\n    const active = mode === 'active';\n    const cache = this._cachedDataOpts;\n    const cacheKey = elementType + '-' + mode;\n    const cached = cache[cacheKey];\n    const sharing = this.enableOptionSharing && defined(index);\n    if (cached) {\n      return cloneIfNotShared(cached, sharing);\n    }\n    const config = this.chart.config;\n    const scopeKeys = config.datasetElementScopeKeys(this._type, elementType);\n    const prefixes = active ? [`${elementType}Hover`, 'hover', elementType, ''] : [elementType, ''];\n    const scopes = config.getOptionScopes(this.getDataset(), scopeKeys);\n    const names = Object.keys(defaults.elements[elementType]);\n    const context = () => this.getContext(index, active);\n    const values = config.resolveNamedOptions(scopes, names, context, prefixes);\n    if (values.$shared) {\n      values.$shared = sharing;\n      cache[cacheKey] = Object.freeze(cloneIfNotShared(values, sharing));\n    }\n    return values;\n  }\n  _resolveAnimations(index, transition, active) {\n    const chart = this.chart;\n    const cache = this._cachedDataOpts;\n    const cacheKey = `animation-${transition}`;\n    const cached = cache[cacheKey];\n    if (cached) {\n      return cached;\n    }\n    let options;\n    if (chart.options.animation !== false) {\n      const config = this.chart.config;\n      const scopeKeys = config.datasetAnimationScopeKeys(this._type, transition);\n      const scopes = config.getOptionScopes(this.getDataset(), scopeKeys);\n      options = config.createResolver(scopes, this.getContext(index, active, transition));\n    }\n    const animations = new Animations(chart, options && options.animations);\n    if (options && options._cacheable) {\n      cache[cacheKey] = Object.freeze(animations);\n    }\n    return animations;\n  }\n  getSharedOptions(options) {\n    if (!options.$shared) {\n      return;\n    }\n    return this._sharedOptions || (this._sharedOptions = Object.assign({}, options));\n  }\n  includeOptions(mode, sharedOptions) {\n    return !sharedOptions || isDirectUpdateMode(mode) || this.chart._animationsDisabled;\n  }\n  _getSharedOptions(start, mode) {\n    const firstOpts = this.resolveDataElementOptions(start, mode);\n    const previouslySharedOptions = this._sharedOptions;\n    const sharedOptions = this.getSharedOptions(firstOpts);\n    const includeOptions = this.includeOptions(mode, sharedOptions) || (sharedOptions !== previouslySharedOptions);\n    this.updateSharedOptions(sharedOptions, mode, firstOpts);\n    return {sharedOptions, includeOptions};\n  }\n  updateElement(element, index, properties, mode) {\n    if (isDirectUpdateMode(mode)) {\n      Object.assign(element, properties);\n    } else {\n      this._resolveAnimations(index, mode).update(element, properties);\n    }\n  }\n  updateSharedOptions(sharedOptions, mode, newOptions) {\n    if (sharedOptions && !isDirectUpdateMode(mode)) {\n      this._resolveAnimations(undefined, mode).update(sharedOptions, newOptions);\n    }\n  }\n  _setStyle(element, index, mode, active) {\n    element.active = active;\n    const options = this.getStyle(index, active);\n    this._resolveAnimations(index, mode, active).update(element, {\n      options: (!active && this.getSharedOptions(options)) || options\n    });\n  }\n  removeHoverStyle(element, datasetIndex, index) {\n    this._setStyle(element, index, 'active', false);\n  }\n  setHoverStyle(element, datasetIndex, index) {\n    this._setStyle(element, index, 'active', true);\n  }\n  _removeDatasetHoverStyle() {\n    const element = this._cachedMeta.dataset;\n    if (element) {\n      this._setStyle(element, undefined, 'active', false);\n    }\n  }\n  _setDatasetHoverStyle() {\n    const element = this._cachedMeta.dataset;\n    if (element) {\n      this._setStyle(element, undefined, 'active', true);\n    }\n  }\n  _resyncElements(resetNewElements) {\n    const data = this._data;\n    const elements = this._cachedMeta.data;\n    for (const [method, arg1, arg2] of this._syncList) {\n      this[method](arg1, arg2);\n    }\n    this._syncList = [];\n    const numMeta = elements.length;\n    const numData = data.length;\n    const count = Math.min(numData, numMeta);\n    if (count) {\n      this.parse(0, count);\n    }\n    if (numData > numMeta) {\n      this._insertElements(numMeta, numData - numMeta, resetNewElements);\n    } else if (numData < numMeta) {\n      this._removeElements(numData, numMeta - numData);\n    }\n  }\n  _insertElements(start, count, resetNewElements = true) {\n    const meta = this._cachedMeta;\n    const data = meta.data;\n    const end = start + count;\n    let i;\n    const move = (arr) => {\n      arr.length += count;\n      for (i = arr.length - 1; i >= end; i--) {\n        arr[i] = arr[i - count];\n      }\n    };\n    move(data);\n    for (i = start; i < end; ++i) {\n      data[i] = new this.dataElementType();\n    }\n    if (this._parsing) {\n      move(meta._parsed);\n    }\n    this.parse(start, count);\n    if (resetNewElements) {\n      this.updateElements(data, start, count, 'reset');\n    }\n  }\n  updateElements(element, start, count, mode) {}\n  _removeElements(start, count) {\n    const meta = this._cachedMeta;\n    if (this._parsing) {\n      const removed = meta._parsed.splice(start, count);\n      if (meta._stacked) {\n        clearStacks(meta, removed);\n      }\n    }\n    meta.data.splice(start, count);\n  }\n  _sync(args) {\n    if (this._parsing) {\n      this._syncList.push(args);\n    } else {\n      const [method, arg1, arg2] = args;\n      this[method](arg1, arg2);\n    }\n    this.chart._dataChanges.push([this.index, ...args]);\n  }\n  _onDataPush() {\n    const count = arguments.length;\n    this._sync(['_insertElements', this.getDataset().data.length - count, count]);\n  }\n  _onDataPop() {\n    this._sync(['_removeElements', this._cachedMeta.data.length - 1, 1]);\n  }\n  _onDataShift() {\n    this._sync(['_removeElements', 0, 1]);\n  }\n  _onDataSplice(start, count) {\n    if (count) {\n      this._sync(['_removeElements', start, count]);\n    }\n    const newCount = arguments.length - 2;\n    if (newCount) {\n      this._sync(['_insertElements', start, newCount]);\n    }\n  }\n  _onDataUnshift() {\n    this._sync(['_insertElements', 0, arguments.length]);\n  }\n}\nDatasetController.defaults = {};\nDatasetController.prototype.datasetElementType = null;\nDatasetController.prototype.dataElementType = null;\n\nfunction getAllScaleValues(scale, type) {\n  if (!scale._cache.$bar) {\n    const visibleMetas = scale.getMatchingVisibleMetas(type);\n    let values = [];\n    for (let i = 0, ilen = visibleMetas.length; i < ilen; i++) {\n      values = values.concat(visibleMetas[i].controller.getAllParsedValues(scale));\n    }\n    scale._cache.$bar = _arrayUnique(values.sort((a, b) => a - b));\n  }\n  return scale._cache.$bar;\n}\nfunction computeMinSampleSize(meta) {\n  const scale = meta.iScale;\n  const values = getAllScaleValues(scale, meta.type);\n  let min = scale._length;\n  let i, ilen, curr, prev;\n  const updateMinAndPrev = () => {\n    if (curr === 32767 || curr === -32768) {\n      return;\n    }\n    if (defined(prev)) {\n      min = Math.min(min, Math.abs(curr - prev) || min);\n    }\n    prev = curr;\n  };\n  for (i = 0, ilen = values.length; i < ilen; ++i) {\n    curr = scale.getPixelForValue(values[i]);\n    updateMinAndPrev();\n  }\n  prev = undefined;\n  for (i = 0, ilen = scale.ticks.length; i < ilen; ++i) {\n    curr = scale.getPixelForTick(i);\n    updateMinAndPrev();\n  }\n  return min;\n}\nfunction computeFitCategoryTraits(index, ruler, options, stackCount) {\n  const thickness = options.barThickness;\n  let size, ratio;\n  if (isNullOrUndef(thickness)) {\n    size = ruler.min * options.categoryPercentage;\n    ratio = options.barPercentage;\n  } else {\n    size = thickness * stackCount;\n    ratio = 1;\n  }\n  return {\n    chunk: size / stackCount,\n    ratio,\n    start: ruler.pixels[index] - (size / 2)\n  };\n}\nfunction computeFlexCategoryTraits(index, ruler, options, stackCount) {\n  const pixels = ruler.pixels;\n  const curr = pixels[index];\n  let prev = index > 0 ? pixels[index - 1] : null;\n  let next = index < pixels.length - 1 ? pixels[index + 1] : null;\n  const percent = options.categoryPercentage;\n  if (prev === null) {\n    prev = curr - (next === null ? ruler.end - ruler.start : next - curr);\n  }\n  if (next === null) {\n    next = curr + curr - prev;\n  }\n  const start = curr - (curr - Math.min(prev, next)) / 2 * percent;\n  const size = Math.abs(next - prev) / 2 * percent;\n  return {\n    chunk: size / stackCount,\n    ratio: options.barPercentage,\n    start\n  };\n}\nfunction parseFloatBar(entry, item, vScale, i) {\n  const startValue = vScale.parse(entry[0], i);\n  const endValue = vScale.parse(entry[1], i);\n  const min = Math.min(startValue, endValue);\n  const max = Math.max(startValue, endValue);\n  let barStart = min;\n  let barEnd = max;\n  if (Math.abs(min) > Math.abs(max)) {\n    barStart = max;\n    barEnd = min;\n  }\n  item[vScale.axis] = barEnd;\n  item._custom = {\n    barStart,\n    barEnd,\n    start: startValue,\n    end: endValue,\n    min,\n    max\n  };\n}\nfunction parseValue(entry, item, vScale, i) {\n  if (isArray(entry)) {\n    parseFloatBar(entry, item, vScale, i);\n  } else {\n    item[vScale.axis] = vScale.parse(entry, i);\n  }\n  return item;\n}\nfunction parseArrayOrPrimitive(meta, data, start, count) {\n  const iScale = meta.iScale;\n  const vScale = meta.vScale;\n  const labels = iScale.getLabels();\n  const singleScale = iScale === vScale;\n  const parsed = [];\n  let i, ilen, item, entry;\n  for (i = start, ilen = start + count; i < ilen; ++i) {\n    entry = data[i];\n    item = {};\n    item[iScale.axis] = singleScale || iScale.parse(labels[i], i);\n    parsed.push(parseValue(entry, item, vScale, i));\n  }\n  return parsed;\n}\nfunction isFloatBar(custom) {\n  return custom && custom.barStart !== undefined && custom.barEnd !== undefined;\n}\nfunction barSign(size, vScale, actualBase) {\n  if (size !== 0) {\n    return sign(size);\n  }\n  return (vScale.isHorizontal() ? 1 : -1) * (vScale.min >= actualBase ? 1 : -1);\n}\nfunction borderProps(properties) {\n  let reverse, start, end, top, bottom;\n  if (properties.horizontal) {\n    reverse = properties.base > properties.x;\n    start = 'left';\n    end = 'right';\n  } else {\n    reverse = properties.base < properties.y;\n    start = 'bottom';\n    end = 'top';\n  }\n  if (reverse) {\n    top = 'end';\n    bottom = 'start';\n  } else {\n    top = 'start';\n    bottom = 'end';\n  }\n  return {start, end, reverse, top, bottom};\n}\nfunction setBorderSkipped(properties, options, stack, index) {\n  let edge = options.borderSkipped;\n  const res = {};\n  if (!edge) {\n    properties.borderSkipped = res;\n    return;\n  }\n  if (edge === true) {\n    properties.borderSkipped = {top: true, right: true, bottom: true, left: true};\n    return;\n  }\n  const {start, end, reverse, top, bottom} = borderProps(properties);\n  if (edge === 'middle' && stack) {\n    properties.enableBorderRadius = true;\n    if ((stack._top || 0) === index) {\n      edge = top;\n    } else if ((stack._bottom || 0) === index) {\n      edge = bottom;\n    } else {\n      res[parseEdge(bottom, start, end, reverse)] = true;\n      edge = top;\n    }\n  }\n  res[parseEdge(edge, start, end, reverse)] = true;\n  properties.borderSkipped = res;\n}\nfunction parseEdge(edge, a, b, reverse) {\n  if (reverse) {\n    edge = swap(edge, a, b);\n    edge = startEnd(edge, b, a);\n  } else {\n    edge = startEnd(edge, a, b);\n  }\n  return edge;\n}\nfunction swap(orig, v1, v2) {\n  return orig === v1 ? v2 : orig === v2 ? v1 : orig;\n}\nfunction startEnd(v, start, end) {\n  return v === 'start' ? start : v === 'end' ? end : v;\n}\nfunction setInflateAmount(properties, {inflateAmount}, ratio) {\n  properties.inflateAmount = inflateAmount === 'auto'\n    ? ratio === 1 ? 0.33 : 0\n    : inflateAmount;\n}\nclass BarController extends DatasetController {\n  parsePrimitiveData(meta, data, start, count) {\n    return parseArrayOrPrimitive(meta, data, start, count);\n  }\n  parseArrayData(meta, data, start, count) {\n    return parseArrayOrPrimitive(meta, data, start, count);\n  }\n  parseObjectData(meta, data, start, count) {\n    const {iScale, vScale} = meta;\n    const {xAxisKey = 'x', yAxisKey = 'y'} = this._parsing;\n    const iAxisKey = iScale.axis === 'x' ? xAxisKey : yAxisKey;\n    const vAxisKey = vScale.axis === 'x' ? xAxisKey : yAxisKey;\n    const parsed = [];\n    let i, ilen, item, obj;\n    for (i = start, ilen = start + count; i < ilen; ++i) {\n      obj = data[i];\n      item = {};\n      item[iScale.axis] = iScale.parse(resolveObjectKey(obj, iAxisKey), i);\n      parsed.push(parseValue(resolveObjectKey(obj, vAxisKey), item, vScale, i));\n    }\n    return parsed;\n  }\n  updateRangeFromParsed(range, scale, parsed, stack) {\n    super.updateRangeFromParsed(range, scale, parsed, stack);\n    const custom = parsed._custom;\n    if (custom && scale === this._cachedMeta.vScale) {\n      range.min = Math.min(range.min, custom.min);\n      range.max = Math.max(range.max, custom.max);\n    }\n  }\n  getMaxOverflow() {\n    return 0;\n  }\n  getLabelAndValue(index) {\n    const meta = this._cachedMeta;\n    const {iScale, vScale} = meta;\n    const parsed = this.getParsed(index);\n    const custom = parsed._custom;\n    const value = isFloatBar(custom)\n      ? '[' + custom.start + ', ' + custom.end + ']'\n      : '' + vScale.getLabelForValue(parsed[vScale.axis]);\n    return {\n      label: '' + iScale.getLabelForValue(parsed[iScale.axis]),\n      value\n    };\n  }\n  initialize() {\n    this.enableOptionSharing = true;\n    super.initialize();\n    const meta = this._cachedMeta;\n    meta.stack = this.getDataset().stack;\n  }\n  update(mode) {\n    const meta = this._cachedMeta;\n    this.updateElements(meta.data, 0, meta.data.length, mode);\n  }\n  updateElements(bars, start, count, mode) {\n    const reset = mode === 'reset';\n    const {index, _cachedMeta: {vScale}} = this;\n    const base = vScale.getBasePixel();\n    const horizontal = vScale.isHorizontal();\n    const ruler = this._getRuler();\n    const {sharedOptions, includeOptions} = this._getSharedOptions(start, mode);\n    for (let i = start; i < start + count; i++) {\n      const parsed = this.getParsed(i);\n      const vpixels = reset || isNullOrUndef(parsed[vScale.axis]) ? {base, head: base} : this._calculateBarValuePixels(i);\n      const ipixels = this._calculateBarIndexPixels(i, ruler);\n      const stack = (parsed._stacks || {})[vScale.axis];\n      const properties = {\n        horizontal,\n        base: vpixels.base,\n        enableBorderRadius: !stack || isFloatBar(parsed._custom) || (index === stack._top || index === stack._bottom),\n        x: horizontal ? vpixels.head : ipixels.center,\n        y: horizontal ? ipixels.center : vpixels.head,\n        height: horizontal ? ipixels.size : Math.abs(vpixels.size),\n        width: horizontal ? Math.abs(vpixels.size) : ipixels.size\n      };\n      if (includeOptions) {\n        properties.options = sharedOptions || this.resolveDataElementOptions(i, bars[i].active ? 'active' : mode);\n      }\n      const options = properties.options || bars[i].options;\n      setBorderSkipped(properties, options, stack, index);\n      setInflateAmount(properties, options, ruler.ratio);\n      this.updateElement(bars[i], i, properties, mode);\n    }\n  }\n  _getStacks(last, dataIndex) {\n    const {iScale} = this._cachedMeta;\n    const metasets = iScale.getMatchingVisibleMetas(this._type)\n      .filter(meta => meta.controller.options.grouped);\n    const stacked = iScale.options.stacked;\n    const stacks = [];\n    const skipNull = (meta) => {\n      const parsed = meta.controller.getParsed(dataIndex);\n      const val = parsed && parsed[meta.vScale.axis];\n      if (isNullOrUndef(val) || isNaN(val)) {\n        return true;\n      }\n    };\n    for (const meta of metasets) {\n      if (dataIndex !== undefined && skipNull(meta)) {\n        continue;\n      }\n      if (stacked === false || stacks.indexOf(meta.stack) === -1 ||\n\t\t\t\t(stacked === undefined && meta.stack === undefined)) {\n        stacks.push(meta.stack);\n      }\n      if (meta.index === last) {\n        break;\n      }\n    }\n    if (!stacks.length) {\n      stacks.push(undefined);\n    }\n    return stacks;\n  }\n  _getStackCount(index) {\n    return this._getStacks(undefined, index).length;\n  }\n  _getStackIndex(datasetIndex, name, dataIndex) {\n    const stacks = this._getStacks(datasetIndex, dataIndex);\n    const index = (name !== undefined)\n      ? stacks.indexOf(name)\n      : -1;\n    return (index === -1)\n      ? stacks.length - 1\n      : index;\n  }\n  _getRuler() {\n    const opts = this.options;\n    const meta = this._cachedMeta;\n    const iScale = meta.iScale;\n    const pixels = [];\n    let i, ilen;\n    for (i = 0, ilen = meta.data.length; i < ilen; ++i) {\n      pixels.push(iScale.getPixelForValue(this.getParsed(i)[iScale.axis], i));\n    }\n    const barThickness = opts.barThickness;\n    const min = barThickness || computeMinSampleSize(meta);\n    return {\n      min,\n      pixels,\n      start: iScale._startPixel,\n      end: iScale._endPixel,\n      stackCount: this._getStackCount(),\n      scale: iScale,\n      grouped: opts.grouped,\n      ratio: barThickness ? 1 : opts.categoryPercentage * opts.barPercentage\n    };\n  }\n  _calculateBarValuePixels(index) {\n    const {_cachedMeta: {vScale, _stacked}, options: {base: baseValue, minBarLength}} = this;\n    const actualBase = baseValue || 0;\n    const parsed = this.getParsed(index);\n    const custom = parsed._custom;\n    const floating = isFloatBar(custom);\n    let value = parsed[vScale.axis];\n    let start = 0;\n    let length = _stacked ? this.applyStack(vScale, parsed, _stacked) : value;\n    let head, size;\n    if (length !== value) {\n      start = length - value;\n      length = value;\n    }\n    if (floating) {\n      value = custom.barStart;\n      length = custom.barEnd - custom.barStart;\n      if (value !== 0 && sign(value) !== sign(custom.barEnd)) {\n        start = 0;\n      }\n      start += value;\n    }\n    const startValue = !isNullOrUndef(baseValue) && !floating ? baseValue : start;\n    let base = vScale.getPixelForValue(startValue);\n    if (this.chart.getDataVisibility(index)) {\n      head = vScale.getPixelForValue(start + length);\n    } else {\n      head = base;\n    }\n    size = head - base;\n    if (Math.abs(size) < minBarLength) {\n      size = barSign(size, vScale, actualBase) * minBarLength;\n      if (value === actualBase) {\n        base -= size / 2;\n      }\n      const startPixel = vScale.getPixelForDecimal(0);\n      const endPixel = vScale.getPixelForDecimal(1);\n      const min = Math.min(startPixel, endPixel);\n      const max = Math.max(startPixel, endPixel);\n      base = Math.max(Math.min(base, max), min);\n      head = base + size;\n    }\n    if (base === vScale.getPixelForValue(actualBase)) {\n      const halfGrid = sign(size) * vScale.getLineWidthForValue(actualBase) / 2;\n      base += halfGrid;\n      size -= halfGrid;\n    }\n    return {\n      size,\n      base,\n      head,\n      center: head + size / 2\n    };\n  }\n  _calculateBarIndexPixels(index, ruler) {\n    const scale = ruler.scale;\n    const options = this.options;\n    const skipNull = options.skipNull;\n    const maxBarThickness = valueOrDefault(options.maxBarThickness, Infinity);\n    let center, size;\n    if (ruler.grouped) {\n      const stackCount = skipNull ? this._getStackCount(index) : ruler.stackCount;\n      const range = options.barThickness === 'flex'\n        ? computeFlexCategoryTraits(index, ruler, options, stackCount)\n        : computeFitCategoryTraits(index, ruler, options, stackCount);\n      const stackIndex = this._getStackIndex(this.index, this._cachedMeta.stack, skipNull ? index : undefined);\n      center = range.start + (range.chunk * stackIndex) + (range.chunk / 2);\n      size = Math.min(maxBarThickness, range.chunk * range.ratio);\n    } else {\n      center = scale.getPixelForValue(this.getParsed(index)[scale.axis], index);\n      size = Math.min(maxBarThickness, ruler.min * ruler.ratio);\n    }\n    return {\n      base: center - size / 2,\n      head: center + size / 2,\n      center,\n      size\n    };\n  }\n  draw() {\n    const meta = this._cachedMeta;\n    const vScale = meta.vScale;\n    const rects = meta.data;\n    const ilen = rects.length;\n    let i = 0;\n    for (; i < ilen; ++i) {\n      if (this.getParsed(i)[vScale.axis] !== null) {\n        rects[i].draw(this._ctx);\n      }\n    }\n  }\n}\nBarController.id = 'bar';\nBarController.defaults = {\n  datasetElementType: false,\n  dataElementType: 'bar',\n  categoryPercentage: 0.8,\n  barPercentage: 0.9,\n  grouped: true,\n  animations: {\n    numbers: {\n      type: 'number',\n      properties: ['x', 'y', 'base', 'width', 'height']\n    }\n  }\n};\nBarController.overrides = {\n  scales: {\n    _index_: {\n      type: 'category',\n      offset: true,\n      grid: {\n        offset: true\n      }\n    },\n    _value_: {\n      type: 'linear',\n      beginAtZero: true,\n    }\n  }\n};\n\nclass BubbleController extends DatasetController {\n  initialize() {\n    this.enableOptionSharing = true;\n    super.initialize();\n  }\n  parsePrimitiveData(meta, data, start, count) {\n    const parsed = super.parsePrimitiveData(meta, data, start, count);\n    for (let i = 0; i < parsed.length; i++) {\n      parsed[i]._custom = this.resolveDataElementOptions(i + start).radius;\n    }\n    return parsed;\n  }\n  parseArrayData(meta, data, start, count) {\n    const parsed = super.parseArrayData(meta, data, start, count);\n    for (let i = 0; i < parsed.length; i++) {\n      const item = data[start + i];\n      parsed[i]._custom = valueOrDefault(item[2], this.resolveDataElementOptions(i + start).radius);\n    }\n    return parsed;\n  }\n  parseObjectData(meta, data, start, count) {\n    const parsed = super.parseObjectData(meta, data, start, count);\n    for (let i = 0; i < parsed.length; i++) {\n      const item = data[start + i];\n      parsed[i]._custom = valueOrDefault(item && item.r && +item.r, this.resolveDataElementOptions(i + start).radius);\n    }\n    return parsed;\n  }\n  getMaxOverflow() {\n    const data = this._cachedMeta.data;\n    let max = 0;\n    for (let i = data.length - 1; i >= 0; --i) {\n      max = Math.max(max, data[i].size(this.resolveDataElementOptions(i)) / 2);\n    }\n    return max > 0 && max;\n  }\n  getLabelAndValue(index) {\n    const meta = this._cachedMeta;\n    const {xScale, yScale} = meta;\n    const parsed = this.getParsed(index);\n    const x = xScale.getLabelForValue(parsed.x);\n    const y = yScale.getLabelForValue(parsed.y);\n    const r = parsed._custom;\n    return {\n      label: meta.label,\n      value: '(' + x + ', ' + y + (r ? ', ' + r : '') + ')'\n    };\n  }\n  update(mode) {\n    const points = this._cachedMeta.data;\n    this.updateElements(points, 0, points.length, mode);\n  }\n  updateElements(points, start, count, mode) {\n    const reset = mode === 'reset';\n    const {iScale, vScale} = this._cachedMeta;\n    const {sharedOptions, includeOptions} = this._getSharedOptions(start, mode);\n    const iAxis = iScale.axis;\n    const vAxis = vScale.axis;\n    for (let i = start; i < start + count; i++) {\n      const point = points[i];\n      const parsed = !reset && this.getParsed(i);\n      const properties = {};\n      const iPixel = properties[iAxis] = reset ? iScale.getPixelForDecimal(0.5) : iScale.getPixelForValue(parsed[iAxis]);\n      const vPixel = properties[vAxis] = reset ? vScale.getBasePixel() : vScale.getPixelForValue(parsed[vAxis]);\n      properties.skip = isNaN(iPixel) || isNaN(vPixel);\n      if (includeOptions) {\n        properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n        if (reset) {\n          properties.options.radius = 0;\n        }\n      }\n      this.updateElement(point, i, properties, mode);\n    }\n  }\n  resolveDataElementOptions(index, mode) {\n    const parsed = this.getParsed(index);\n    let values = super.resolveDataElementOptions(index, mode);\n    if (values.$shared) {\n      values = Object.assign({}, values, {$shared: false});\n    }\n    const radius = values.radius;\n    if (mode !== 'active') {\n      values.radius = 0;\n    }\n    values.radius += valueOrDefault(parsed && parsed._custom, radius);\n    return values;\n  }\n}\nBubbleController.id = 'bubble';\nBubbleController.defaults = {\n  datasetElementType: false,\n  dataElementType: 'point',\n  animations: {\n    numbers: {\n      type: 'number',\n      properties: ['x', 'y', 'borderWidth', 'radius']\n    }\n  }\n};\nBubbleController.overrides = {\n  scales: {\n    x: {\n      type: 'linear'\n    },\n    y: {\n      type: 'linear'\n    }\n  },\n  plugins: {\n    tooltip: {\n      callbacks: {\n        title() {\n          return '';\n        }\n      }\n    }\n  }\n};\n\nfunction getRatioAndOffset(rotation, circumference, cutout) {\n  let ratioX = 1;\n  let ratioY = 1;\n  let offsetX = 0;\n  let offsetY = 0;\n  if (circumference < TAU) {\n    const startAngle = rotation;\n    const endAngle = startAngle + circumference;\n    const startX = Math.cos(startAngle);\n    const startY = Math.sin(startAngle);\n    const endX = Math.cos(endAngle);\n    const endY = Math.sin(endAngle);\n    const calcMax = (angle, a, b) => _angleBetween(angle, startAngle, endAngle, true) ? 1 : Math.max(a, a * cutout, b, b * cutout);\n    const calcMin = (angle, a, b) => _angleBetween(angle, startAngle, endAngle, true) ? -1 : Math.min(a, a * cutout, b, b * cutout);\n    const maxX = calcMax(0, startX, endX);\n    const maxY = calcMax(HALF_PI, startY, endY);\n    const minX = calcMin(PI, startX, endX);\n    const minY = calcMin(PI + HALF_PI, startY, endY);\n    ratioX = (maxX - minX) / 2;\n    ratioY = (maxY - minY) / 2;\n    offsetX = -(maxX + minX) / 2;\n    offsetY = -(maxY + minY) / 2;\n  }\n  return {ratioX, ratioY, offsetX, offsetY};\n}\nclass DoughnutController extends DatasetController {\n  constructor(chart, datasetIndex) {\n    super(chart, datasetIndex);\n    this.enableOptionSharing = true;\n    this.innerRadius = undefined;\n    this.outerRadius = undefined;\n    this.offsetX = undefined;\n    this.offsetY = undefined;\n  }\n  linkScales() {}\n  parse(start, count) {\n    const data = this.getDataset().data;\n    const meta = this._cachedMeta;\n    if (this._parsing === false) {\n      meta._parsed = data;\n    } else {\n      let getter = (i) => +data[i];\n      if (isObject(data[start])) {\n        const {key = 'value'} = this._parsing;\n        getter = (i) => +resolveObjectKey(data[i], key);\n      }\n      let i, ilen;\n      for (i = start, ilen = start + count; i < ilen; ++i) {\n        meta._parsed[i] = getter(i);\n      }\n    }\n  }\n  _getRotation() {\n    return toRadians(this.options.rotation - 90);\n  }\n  _getCircumference() {\n    return toRadians(this.options.circumference);\n  }\n  _getRotationExtents() {\n    let min = TAU;\n    let max = -TAU;\n    for (let i = 0; i < this.chart.data.datasets.length; ++i) {\n      if (this.chart.isDatasetVisible(i)) {\n        const controller = this.chart.getDatasetMeta(i).controller;\n        const rotation = controller._getRotation();\n        const circumference = controller._getCircumference();\n        min = Math.min(min, rotation);\n        max = Math.max(max, rotation + circumference);\n      }\n    }\n    return {\n      rotation: min,\n      circumference: max - min,\n    };\n  }\n  update(mode) {\n    const chart = this.chart;\n    const {chartArea} = chart;\n    const meta = this._cachedMeta;\n    const arcs = meta.data;\n    const spacing = this.getMaxBorderWidth() + this.getMaxOffset(arcs) + this.options.spacing;\n    const maxSize = Math.max((Math.min(chartArea.width, chartArea.height) - spacing) / 2, 0);\n    const cutout = Math.min(toPercentage(this.options.cutout, maxSize), 1);\n    const chartWeight = this._getRingWeight(this.index);\n    const {circumference, rotation} = this._getRotationExtents();\n    const {ratioX, ratioY, offsetX, offsetY} = getRatioAndOffset(rotation, circumference, cutout);\n    const maxWidth = (chartArea.width - spacing) / ratioX;\n    const maxHeight = (chartArea.height - spacing) / ratioY;\n    const maxRadius = Math.max(Math.min(maxWidth, maxHeight) / 2, 0);\n    const outerRadius = toDimension(this.options.radius, maxRadius);\n    const innerRadius = Math.max(outerRadius * cutout, 0);\n    const radiusLength = (outerRadius - innerRadius) / this._getVisibleDatasetWeightTotal();\n    this.offsetX = offsetX * outerRadius;\n    this.offsetY = offsetY * outerRadius;\n    meta.total = this.calculateTotal();\n    this.outerRadius = outerRadius - radiusLength * this._getRingWeightOffset(this.index);\n    this.innerRadius = Math.max(this.outerRadius - radiusLength * chartWeight, 0);\n    this.updateElements(arcs, 0, arcs.length, mode);\n  }\n  _circumference(i, reset) {\n    const opts = this.options;\n    const meta = this._cachedMeta;\n    const circumference = this._getCircumference();\n    if ((reset && opts.animation.animateRotate) || !this.chart.getDataVisibility(i) || meta._parsed[i] === null || meta.data[i].hidden) {\n      return 0;\n    }\n    return this.calculateCircumference(meta._parsed[i] * circumference / TAU);\n  }\n  updateElements(arcs, start, count, mode) {\n    const reset = mode === 'reset';\n    const chart = this.chart;\n    const chartArea = chart.chartArea;\n    const opts = chart.options;\n    const animationOpts = opts.animation;\n    const centerX = (chartArea.left + chartArea.right) / 2;\n    const centerY = (chartArea.top + chartArea.bottom) / 2;\n    const animateScale = reset && animationOpts.animateScale;\n    const innerRadius = animateScale ? 0 : this.innerRadius;\n    const outerRadius = animateScale ? 0 : this.outerRadius;\n    const {sharedOptions, includeOptions} = this._getSharedOptions(start, mode);\n    let startAngle = this._getRotation();\n    let i;\n    for (i = 0; i < start; ++i) {\n      startAngle += this._circumference(i, reset);\n    }\n    for (i = start; i < start + count; ++i) {\n      const circumference = this._circumference(i, reset);\n      const arc = arcs[i];\n      const properties = {\n        x: centerX + this.offsetX,\n        y: centerY + this.offsetY,\n        startAngle,\n        endAngle: startAngle + circumference,\n        circumference,\n        outerRadius,\n        innerRadius\n      };\n      if (includeOptions) {\n        properties.options = sharedOptions || this.resolveDataElementOptions(i, arc.active ? 'active' : mode);\n      }\n      startAngle += circumference;\n      this.updateElement(arc, i, properties, mode);\n    }\n  }\n  calculateTotal() {\n    const meta = this._cachedMeta;\n    const metaData = meta.data;\n    let total = 0;\n    let i;\n    for (i = 0; i < metaData.length; i++) {\n      const value = meta._parsed[i];\n      if (value !== null && !isNaN(value) && this.chart.getDataVisibility(i) && !metaData[i].hidden) {\n        total += Math.abs(value);\n      }\n    }\n    return total;\n  }\n  calculateCircumference(value) {\n    const total = this._cachedMeta.total;\n    if (total > 0 && !isNaN(value)) {\n      return TAU * (Math.abs(value) / total);\n    }\n    return 0;\n  }\n  getLabelAndValue(index) {\n    const meta = this._cachedMeta;\n    const chart = this.chart;\n    const labels = chart.data.labels || [];\n    const value = formatNumber(meta._parsed[index], chart.options.locale);\n    return {\n      label: labels[index] || '',\n      value,\n    };\n  }\n  getMaxBorderWidth(arcs) {\n    let max = 0;\n    const chart = this.chart;\n    let i, ilen, meta, controller, options;\n    if (!arcs) {\n      for (i = 0, ilen = chart.data.datasets.length; i < ilen; ++i) {\n        if (chart.isDatasetVisible(i)) {\n          meta = chart.getDatasetMeta(i);\n          arcs = meta.data;\n          controller = meta.controller;\n          break;\n        }\n      }\n    }\n    if (!arcs) {\n      return 0;\n    }\n    for (i = 0, ilen = arcs.length; i < ilen; ++i) {\n      options = controller.resolveDataElementOptions(i);\n      if (options.borderAlign !== 'inner') {\n        max = Math.max(max, options.borderWidth || 0, options.hoverBorderWidth || 0);\n      }\n    }\n    return max;\n  }\n  getMaxOffset(arcs) {\n    let max = 0;\n    for (let i = 0, ilen = arcs.length; i < ilen; ++i) {\n      const options = this.resolveDataElementOptions(i);\n      max = Math.max(max, options.offset || 0, options.hoverOffset || 0);\n    }\n    return max;\n  }\n  _getRingWeightOffset(datasetIndex) {\n    let ringWeightOffset = 0;\n    for (let i = 0; i < datasetIndex; ++i) {\n      if (this.chart.isDatasetVisible(i)) {\n        ringWeightOffset += this._getRingWeight(i);\n      }\n    }\n    return ringWeightOffset;\n  }\n  _getRingWeight(datasetIndex) {\n    return Math.max(valueOrDefault(this.chart.data.datasets[datasetIndex].weight, 1), 0);\n  }\n  _getVisibleDatasetWeightTotal() {\n    return this._getRingWeightOffset(this.chart.data.datasets.length) || 1;\n  }\n}\nDoughnutController.id = 'doughnut';\nDoughnutController.defaults = {\n  datasetElementType: false,\n  dataElementType: 'arc',\n  animation: {\n    animateRotate: true,\n    animateScale: false\n  },\n  animations: {\n    numbers: {\n      type: 'number',\n      properties: ['circumference', 'endAngle', 'innerRadius', 'outerRadius', 'startAngle', 'x', 'y', 'offset', 'borderWidth', 'spacing']\n    },\n  },\n  cutout: '50%',\n  rotation: 0,\n  circumference: 360,\n  radius: '100%',\n  spacing: 0,\n  indexAxis: 'r',\n};\nDoughnutController.descriptors = {\n  _scriptable: (name) => name !== 'spacing',\n  _indexable: (name) => name !== 'spacing',\n};\nDoughnutController.overrides = {\n  aspectRatio: 1,\n  plugins: {\n    legend: {\n      labels: {\n        generateLabels(chart) {\n          const data = chart.data;\n          if (data.labels.length && data.datasets.length) {\n            const {labels: {pointStyle}} = chart.legend.options;\n            return data.labels.map((label, i) => {\n              const meta = chart.getDatasetMeta(0);\n              const style = meta.controller.getStyle(i);\n              return {\n                text: label,\n                fillStyle: style.backgroundColor,\n                strokeStyle: style.borderColor,\n                lineWidth: style.borderWidth,\n                pointStyle: pointStyle,\n                hidden: !chart.getDataVisibility(i),\n                index: i\n              };\n            });\n          }\n          return [];\n        }\n      },\n      onClick(e, legendItem, legend) {\n        legend.chart.toggleDataVisibility(legendItem.index);\n        legend.chart.update();\n      }\n    },\n    tooltip: {\n      callbacks: {\n        title() {\n          return '';\n        },\n        label(tooltipItem) {\n          let dataLabel = tooltipItem.label;\n          const value = ': ' + tooltipItem.formattedValue;\n          if (isArray(dataLabel)) {\n            dataLabel = dataLabel.slice();\n            dataLabel[0] += value;\n          } else {\n            dataLabel += value;\n          }\n          return dataLabel;\n        }\n      }\n    }\n  }\n};\n\nclass LineController extends DatasetController {\n  initialize() {\n    this.enableOptionSharing = true;\n    this.supportsDecimation = true;\n    super.initialize();\n  }\n  update(mode) {\n    const meta = this._cachedMeta;\n    const {dataset: line, data: points = [], _dataset} = meta;\n    const animationsDisabled = this.chart._animationsDisabled;\n    let {start, count} = _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled);\n    this._drawStart = start;\n    this._drawCount = count;\n    if (_scaleRangesChanged(meta)) {\n      start = 0;\n      count = points.length;\n    }\n    line._chart = this.chart;\n    line._datasetIndex = this.index;\n    line._decimated = !!_dataset._decimated;\n    line.points = points;\n    const options = this.resolveDatasetElementOptions(mode);\n    if (!this.options.showLine) {\n      options.borderWidth = 0;\n    }\n    options.segment = this.options.segment;\n    this.updateElement(line, undefined, {\n      animated: !animationsDisabled,\n      options\n    }, mode);\n    this.updateElements(points, start, count, mode);\n  }\n  updateElements(points, start, count, mode) {\n    const reset = mode === 'reset';\n    const {iScale, vScale, _stacked, _dataset} = this._cachedMeta;\n    const {sharedOptions, includeOptions} = this._getSharedOptions(start, mode);\n    const iAxis = iScale.axis;\n    const vAxis = vScale.axis;\n    const {spanGaps, segment} = this.options;\n    const maxGapLength = isNumber(spanGaps) ? spanGaps : Number.POSITIVE_INFINITY;\n    const directUpdate = this.chart._animationsDisabled || reset || mode === 'none';\n    let prevParsed = start > 0 && this.getParsed(start - 1);\n    for (let i = start; i < start + count; ++i) {\n      const point = points[i];\n      const parsed = this.getParsed(i);\n      const properties = directUpdate ? point : {};\n      const nullData = isNullOrUndef(parsed[vAxis]);\n      const iPixel = properties[iAxis] = iScale.getPixelForValue(parsed[iAxis], i);\n      const vPixel = properties[vAxis] = reset || nullData ? vScale.getBasePixel() : vScale.getPixelForValue(_stacked ? this.applyStack(vScale, parsed, _stacked) : parsed[vAxis], i);\n      properties.skip = isNaN(iPixel) || isNaN(vPixel) || nullData;\n      properties.stop = i > 0 && (Math.abs(parsed[iAxis] - prevParsed[iAxis])) > maxGapLength;\n      if (segment) {\n        properties.parsed = parsed;\n        properties.raw = _dataset.data[i];\n      }\n      if (includeOptions) {\n        properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n      }\n      if (!directUpdate) {\n        this.updateElement(point, i, properties, mode);\n      }\n      prevParsed = parsed;\n    }\n  }\n  getMaxOverflow() {\n    const meta = this._cachedMeta;\n    const dataset = meta.dataset;\n    const border = dataset.options && dataset.options.borderWidth || 0;\n    const data = meta.data || [];\n    if (!data.length) {\n      return border;\n    }\n    const firstPoint = data[0].size(this.resolveDataElementOptions(0));\n    const lastPoint = data[data.length - 1].size(this.resolveDataElementOptions(data.length - 1));\n    return Math.max(border, firstPoint, lastPoint) / 2;\n  }\n  draw() {\n    const meta = this._cachedMeta;\n    meta.dataset.updateControlPoints(this.chart.chartArea, meta.iScale.axis);\n    super.draw();\n  }\n}\nLineController.id = 'line';\nLineController.defaults = {\n  datasetElementType: 'line',\n  dataElementType: 'point',\n  showLine: true,\n  spanGaps: false,\n};\nLineController.overrides = {\n  scales: {\n    _index_: {\n      type: 'category',\n    },\n    _value_: {\n      type: 'linear',\n    },\n  }\n};\n\nclass PolarAreaController extends DatasetController {\n  constructor(chart, datasetIndex) {\n    super(chart, datasetIndex);\n    this.innerRadius = undefined;\n    this.outerRadius = undefined;\n  }\n  getLabelAndValue(index) {\n    const meta = this._cachedMeta;\n    const chart = this.chart;\n    const labels = chart.data.labels || [];\n    const value = formatNumber(meta._parsed[index].r, chart.options.locale);\n    return {\n      label: labels[index] || '',\n      value,\n    };\n  }\n  parseObjectData(meta, data, start, count) {\n    return _parseObjectDataRadialScale.bind(this)(meta, data, start, count);\n  }\n  update(mode) {\n    const arcs = this._cachedMeta.data;\n    this._updateRadius();\n    this.updateElements(arcs, 0, arcs.length, mode);\n  }\n  getMinMax() {\n    const meta = this._cachedMeta;\n    const range = {min: Number.POSITIVE_INFINITY, max: Number.NEGATIVE_INFINITY};\n    meta.data.forEach((element, index) => {\n      const parsed = this.getParsed(index).r;\n      if (!isNaN(parsed) && this.chart.getDataVisibility(index)) {\n        if (parsed < range.min) {\n          range.min = parsed;\n        }\n        if (parsed > range.max) {\n          range.max = parsed;\n        }\n      }\n    });\n    return range;\n  }\n  _updateRadius() {\n    const chart = this.chart;\n    const chartArea = chart.chartArea;\n    const opts = chart.options;\n    const minSize = Math.min(chartArea.right - chartArea.left, chartArea.bottom - chartArea.top);\n    const outerRadius = Math.max(minSize / 2, 0);\n    const innerRadius = Math.max(opts.cutoutPercentage ? (outerRadius / 100) * (opts.cutoutPercentage) : 1, 0);\n    const radiusLength = (outerRadius - innerRadius) / chart.getVisibleDatasetCount();\n    this.outerRadius = outerRadius - (radiusLength * this.index);\n    this.innerRadius = this.outerRadius - radiusLength;\n  }\n  updateElements(arcs, start, count, mode) {\n    const reset = mode === 'reset';\n    const chart = this.chart;\n    const opts = chart.options;\n    const animationOpts = opts.animation;\n    const scale = this._cachedMeta.rScale;\n    const centerX = scale.xCenter;\n    const centerY = scale.yCenter;\n    const datasetStartAngle = scale.getIndexAngle(0) - 0.5 * PI;\n    let angle = datasetStartAngle;\n    let i;\n    const defaultAngle = 360 / this.countVisibleElements();\n    for (i = 0; i < start; ++i) {\n      angle += this._computeAngle(i, mode, defaultAngle);\n    }\n    for (i = start; i < start + count; i++) {\n      const arc = arcs[i];\n      let startAngle = angle;\n      let endAngle = angle + this._computeAngle(i, mode, defaultAngle);\n      let outerRadius = chart.getDataVisibility(i) ? scale.getDistanceFromCenterForValue(this.getParsed(i).r) : 0;\n      angle = endAngle;\n      if (reset) {\n        if (animationOpts.animateScale) {\n          outerRadius = 0;\n        }\n        if (animationOpts.animateRotate) {\n          startAngle = endAngle = datasetStartAngle;\n        }\n      }\n      const properties = {\n        x: centerX,\n        y: centerY,\n        innerRadius: 0,\n        outerRadius,\n        startAngle,\n        endAngle,\n        options: this.resolveDataElementOptions(i, arc.active ? 'active' : mode)\n      };\n      this.updateElement(arc, i, properties, mode);\n    }\n  }\n  countVisibleElements() {\n    const meta = this._cachedMeta;\n    let count = 0;\n    meta.data.forEach((element, index) => {\n      if (!isNaN(this.getParsed(index).r) && this.chart.getDataVisibility(index)) {\n        count++;\n      }\n    });\n    return count;\n  }\n  _computeAngle(index, mode, defaultAngle) {\n    return this.chart.getDataVisibility(index)\n      ? toRadians(this.resolveDataElementOptions(index, mode).angle || defaultAngle)\n      : 0;\n  }\n}\nPolarAreaController.id = 'polarArea';\nPolarAreaController.defaults = {\n  dataElementType: 'arc',\n  animation: {\n    animateRotate: true,\n    animateScale: true\n  },\n  animations: {\n    numbers: {\n      type: 'number',\n      properties: ['x', 'y', 'startAngle', 'endAngle', 'innerRadius', 'outerRadius']\n    },\n  },\n  indexAxis: 'r',\n  startAngle: 0,\n};\nPolarAreaController.overrides = {\n  aspectRatio: 1,\n  plugins: {\n    legend: {\n      labels: {\n        generateLabels(chart) {\n          const data = chart.data;\n          if (data.labels.length && data.datasets.length) {\n            const {labels: {pointStyle}} = chart.legend.options;\n            return data.labels.map((label, i) => {\n              const meta = chart.getDatasetMeta(0);\n              const style = meta.controller.getStyle(i);\n              return {\n                text: label,\n                fillStyle: style.backgroundColor,\n                strokeStyle: style.borderColor,\n                lineWidth: style.borderWidth,\n                pointStyle: pointStyle,\n                hidden: !chart.getDataVisibility(i),\n                index: i\n              };\n            });\n          }\n          return [];\n        }\n      },\n      onClick(e, legendItem, legend) {\n        legend.chart.toggleDataVisibility(legendItem.index);\n        legend.chart.update();\n      }\n    },\n    tooltip: {\n      callbacks: {\n        title() {\n          return '';\n        },\n        label(context) {\n          return context.chart.data.labels[context.dataIndex] + ': ' + context.formattedValue;\n        }\n      }\n    }\n  },\n  scales: {\n    r: {\n      type: 'radialLinear',\n      angleLines: {\n        display: false\n      },\n      beginAtZero: true,\n      grid: {\n        circular: true\n      },\n      pointLabels: {\n        display: false\n      },\n      startAngle: 0\n    }\n  }\n};\n\nclass PieController extends DoughnutController {\n}\nPieController.id = 'pie';\nPieController.defaults = {\n  cutout: 0,\n  rotation: 0,\n  circumference: 360,\n  radius: '100%'\n};\n\nclass RadarController extends DatasetController {\n  getLabelAndValue(index) {\n    const vScale = this._cachedMeta.vScale;\n    const parsed = this.getParsed(index);\n    return {\n      label: vScale.getLabels()[index],\n      value: '' + vScale.getLabelForValue(parsed[vScale.axis])\n    };\n  }\n  parseObjectData(meta, data, start, count) {\n    return _parseObjectDataRadialScale.bind(this)(meta, data, start, count);\n  }\n  update(mode) {\n    const meta = this._cachedMeta;\n    const line = meta.dataset;\n    const points = meta.data || [];\n    const labels = meta.iScale.getLabels();\n    line.points = points;\n    if (mode !== 'resize') {\n      const options = this.resolveDatasetElementOptions(mode);\n      if (!this.options.showLine) {\n        options.borderWidth = 0;\n      }\n      const properties = {\n        _loop: true,\n        _fullLoop: labels.length === points.length,\n        options\n      };\n      this.updateElement(line, undefined, properties, mode);\n    }\n    this.updateElements(points, 0, points.length, mode);\n  }\n  updateElements(points, start, count, mode) {\n    const scale = this._cachedMeta.rScale;\n    const reset = mode === 'reset';\n    for (let i = start; i < start + count; i++) {\n      const point = points[i];\n      const options = this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n      const pointPosition = scale.getPointPositionForValue(i, this.getParsed(i).r);\n      const x = reset ? scale.xCenter : pointPosition.x;\n      const y = reset ? scale.yCenter : pointPosition.y;\n      const properties = {\n        x,\n        y,\n        angle: pointPosition.angle,\n        skip: isNaN(x) || isNaN(y),\n        options\n      };\n      this.updateElement(point, i, properties, mode);\n    }\n  }\n}\nRadarController.id = 'radar';\nRadarController.defaults = {\n  datasetElementType: 'line',\n  dataElementType: 'point',\n  indexAxis: 'r',\n  showLine: true,\n  elements: {\n    line: {\n      fill: 'start'\n    }\n  },\n};\nRadarController.overrides = {\n  aspectRatio: 1,\n  scales: {\n    r: {\n      type: 'radialLinear',\n    }\n  }\n};\n\nclass Element {\n  constructor() {\n    this.x = undefined;\n    this.y = undefined;\n    this.active = false;\n    this.options = undefined;\n    this.$animations = undefined;\n  }\n  tooltipPosition(useFinalPosition) {\n    const {x, y} = this.getProps(['x', 'y'], useFinalPosition);\n    return {x, y};\n  }\n  hasValue() {\n    return isNumber(this.x) && isNumber(this.y);\n  }\n  getProps(props, final) {\n    const anims = this.$animations;\n    if (!final || !anims) {\n      return this;\n    }\n    const ret = {};\n    props.forEach(prop => {\n      ret[prop] = anims[prop] && anims[prop].active() ? anims[prop]._to : this[prop];\n    });\n    return ret;\n  }\n}\nElement.defaults = {};\nElement.defaultRoutes = undefined;\n\nconst formatters = {\n  values(value) {\n    return isArray(value) ? value : '' + value;\n  },\n  numeric(tickValue, index, ticks) {\n    if (tickValue === 0) {\n      return '0';\n    }\n    const locale = this.chart.options.locale;\n    let notation;\n    let delta = tickValue;\n    if (ticks.length > 1) {\n      const maxTick = Math.max(Math.abs(ticks[0].value), Math.abs(ticks[ticks.length - 1].value));\n      if (maxTick < 1e-4 || maxTick > 1e+15) {\n        notation = 'scientific';\n      }\n      delta = calculateDelta(tickValue, ticks);\n    }\n    const logDelta = log10(Math.abs(delta));\n    const numDecimal = Math.max(Math.min(-1 * Math.floor(logDelta), 20), 0);\n    const options = {notation, minimumFractionDigits: numDecimal, maximumFractionDigits: numDecimal};\n    Object.assign(options, this.options.ticks.format);\n    return formatNumber(tickValue, locale, options);\n  },\n  logarithmic(tickValue, index, ticks) {\n    if (tickValue === 0) {\n      return '0';\n    }\n    const remain = tickValue / (Math.pow(10, Math.floor(log10(tickValue))));\n    if (remain === 1 || remain === 2 || remain === 5) {\n      return formatters.numeric.call(this, tickValue, index, ticks);\n    }\n    return '';\n  }\n};\nfunction calculateDelta(tickValue, ticks) {\n  let delta = ticks.length > 3 ? ticks[2].value - ticks[1].value : ticks[1].value - ticks[0].value;\n  if (Math.abs(delta) >= 1 && tickValue !== Math.floor(tickValue)) {\n    delta = tickValue - Math.floor(tickValue);\n  }\n  return delta;\n}\nvar Ticks = {formatters};\n\ndefaults.set('scale', {\n  display: true,\n  offset: false,\n  reverse: false,\n  beginAtZero: false,\n  bounds: 'ticks',\n  grace: 0,\n  grid: {\n    display: true,\n    lineWidth: 1,\n    drawBorder: true,\n    drawOnChartArea: true,\n    drawTicks: true,\n    tickLength: 8,\n    tickWidth: (_ctx, options) => options.lineWidth,\n    tickColor: (_ctx, options) => options.color,\n    offset: false,\n    borderDash: [],\n    borderDashOffset: 0.0,\n    borderWidth: 1\n  },\n  title: {\n    display: false,\n    text: '',\n    padding: {\n      top: 4,\n      bottom: 4\n    }\n  },\n  ticks: {\n    minRotation: 0,\n    maxRotation: 50,\n    mirror: false,\n    textStrokeWidth: 0,\n    textStrokeColor: '',\n    padding: 3,\n    display: true,\n    autoSkip: true,\n    autoSkipPadding: 3,\n    labelOffset: 0,\n    callback: Ticks.formatters.values,\n    minor: {},\n    major: {},\n    align: 'center',\n    crossAlign: 'near',\n    showLabelBackdrop: false,\n    backdropColor: 'rgba(255, 255, 255, 0.75)',\n    backdropPadding: 2,\n  }\n});\ndefaults.route('scale.ticks', 'color', '', 'color');\ndefaults.route('scale.grid', 'color', '', 'borderColor');\ndefaults.route('scale.grid', 'borderColor', '', 'borderColor');\ndefaults.route('scale.title', 'color', '', 'color');\ndefaults.describe('scale', {\n  _fallback: false,\n  _scriptable: (name) => !name.startsWith('before') && !name.startsWith('after') && name !== 'callback' && name !== 'parser',\n  _indexable: (name) => name !== 'borderDash' && name !== 'tickBorderDash',\n});\ndefaults.describe('scales', {\n  _fallback: 'scale',\n});\ndefaults.describe('scale.ticks', {\n  _scriptable: (name) => name !== 'backdropPadding' && name !== 'callback',\n  _indexable: (name) => name !== 'backdropPadding',\n});\n\nfunction autoSkip(scale, ticks) {\n  const tickOpts = scale.options.ticks;\n  const ticksLimit = tickOpts.maxTicksLimit || determineMaxTicks(scale);\n  const majorIndices = tickOpts.major.enabled ? getMajorIndices(ticks) : [];\n  const numMajorIndices = majorIndices.length;\n  const first = majorIndices[0];\n  const last = majorIndices[numMajorIndices - 1];\n  const newTicks = [];\n  if (numMajorIndices > ticksLimit) {\n    skipMajors(ticks, newTicks, majorIndices, numMajorIndices / ticksLimit);\n    return newTicks;\n  }\n  const spacing = calculateSpacing(majorIndices, ticks, ticksLimit);\n  if (numMajorIndices > 0) {\n    let i, ilen;\n    const avgMajorSpacing = numMajorIndices > 1 ? Math.round((last - first) / (numMajorIndices - 1)) : null;\n    skip(ticks, newTicks, spacing, isNullOrUndef(avgMajorSpacing) ? 0 : first - avgMajorSpacing, first);\n    for (i = 0, ilen = numMajorIndices - 1; i < ilen; i++) {\n      skip(ticks, newTicks, spacing, majorIndices[i], majorIndices[i + 1]);\n    }\n    skip(ticks, newTicks, spacing, last, isNullOrUndef(avgMajorSpacing) ? ticks.length : last + avgMajorSpacing);\n    return newTicks;\n  }\n  skip(ticks, newTicks, spacing);\n  return newTicks;\n}\nfunction determineMaxTicks(scale) {\n  const offset = scale.options.offset;\n  const tickLength = scale._tickSize();\n  const maxScale = scale._length / tickLength + (offset ? 0 : 1);\n  const maxChart = scale._maxLength / tickLength;\n  return Math.floor(Math.min(maxScale, maxChart));\n}\nfunction calculateSpacing(majorIndices, ticks, ticksLimit) {\n  const evenMajorSpacing = getEvenSpacing(majorIndices);\n  const spacing = ticks.length / ticksLimit;\n  if (!evenMajorSpacing) {\n    return Math.max(spacing, 1);\n  }\n  const factors = _factorize(evenMajorSpacing);\n  for (let i = 0, ilen = factors.length - 1; i < ilen; i++) {\n    const factor = factors[i];\n    if (factor > spacing) {\n      return factor;\n    }\n  }\n  return Math.max(spacing, 1);\n}\nfunction getMajorIndices(ticks) {\n  const result = [];\n  let i, ilen;\n  for (i = 0, ilen = ticks.length; i < ilen; i++) {\n    if (ticks[i].major) {\n      result.push(i);\n    }\n  }\n  return result;\n}\nfunction skipMajors(ticks, newTicks, majorIndices, spacing) {\n  let count = 0;\n  let next = majorIndices[0];\n  let i;\n  spacing = Math.ceil(spacing);\n  for (i = 0; i < ticks.length; i++) {\n    if (i === next) {\n      newTicks.push(ticks[i]);\n      count++;\n      next = majorIndices[count * spacing];\n    }\n  }\n}\nfunction skip(ticks, newTicks, spacing, majorStart, majorEnd) {\n  const start = valueOrDefault(majorStart, 0);\n  const end = Math.min(valueOrDefault(majorEnd, ticks.length), ticks.length);\n  let count = 0;\n  let length, i, next;\n  spacing = Math.ceil(spacing);\n  if (majorEnd) {\n    length = majorEnd - majorStart;\n    spacing = length / Math.floor(length / spacing);\n  }\n  next = start;\n  while (next < 0) {\n    count++;\n    next = Math.round(start + count * spacing);\n  }\n  for (i = Math.max(start, 0); i < end; i++) {\n    if (i === next) {\n      newTicks.push(ticks[i]);\n      count++;\n      next = Math.round(start + count * spacing);\n    }\n  }\n}\nfunction getEvenSpacing(arr) {\n  const len = arr.length;\n  let i, diff;\n  if (len < 2) {\n    return false;\n  }\n  for (diff = arr[0], i = 1; i < len; ++i) {\n    if (arr[i] - arr[i - 1] !== diff) {\n      return false;\n    }\n  }\n  return diff;\n}\n\nconst reverseAlign = (align) => align === 'left' ? 'right' : align === 'right' ? 'left' : align;\nconst offsetFromEdge = (scale, edge, offset) => edge === 'top' || edge === 'left' ? scale[edge] + offset : scale[edge] - offset;\nfunction sample(arr, numItems) {\n  const result = [];\n  const increment = arr.length / numItems;\n  const len = arr.length;\n  let i = 0;\n  for (; i < len; i += increment) {\n    result.push(arr[Math.floor(i)]);\n  }\n  return result;\n}\nfunction getPixelForGridLine(scale, index, offsetGridLines) {\n  const length = scale.ticks.length;\n  const validIndex = Math.min(index, length - 1);\n  const start = scale._startPixel;\n  const end = scale._endPixel;\n  const epsilon = 1e-6;\n  let lineValue = scale.getPixelForTick(validIndex);\n  let offset;\n  if (offsetGridLines) {\n    if (length === 1) {\n      offset = Math.max(lineValue - start, end - lineValue);\n    } else if (index === 0) {\n      offset = (scale.getPixelForTick(1) - lineValue) / 2;\n    } else {\n      offset = (lineValue - scale.getPixelForTick(validIndex - 1)) / 2;\n    }\n    lineValue += validIndex < index ? offset : -offset;\n    if (lineValue < start - epsilon || lineValue > end + epsilon) {\n      return;\n    }\n  }\n  return lineValue;\n}\nfunction garbageCollect(caches, length) {\n  each(caches, (cache) => {\n    const gc = cache.gc;\n    const gcLen = gc.length / 2;\n    let i;\n    if (gcLen > length) {\n      for (i = 0; i < gcLen; ++i) {\n        delete cache.data[gc[i]];\n      }\n      gc.splice(0, gcLen);\n    }\n  });\n}\nfunction getTickMarkLength(options) {\n  return options.drawTicks ? options.tickLength : 0;\n}\nfunction getTitleHeight(options, fallback) {\n  if (!options.display) {\n    return 0;\n  }\n  const font = toFont(options.font, fallback);\n  const padding = toPadding(options.padding);\n  const lines = isArray(options.text) ? options.text.length : 1;\n  return (lines * font.lineHeight) + padding.height;\n}\nfunction createScaleContext(parent, scale) {\n  return createContext(parent, {\n    scale,\n    type: 'scale'\n  });\n}\nfunction createTickContext(parent, index, tick) {\n  return createContext(parent, {\n    tick,\n    index,\n    type: 'tick'\n  });\n}\nfunction titleAlign(align, position, reverse) {\n  let ret = _toLeftRightCenter(align);\n  if ((reverse && position !== 'right') || (!reverse && position === 'right')) {\n    ret = reverseAlign(ret);\n  }\n  return ret;\n}\nfunction titleArgs(scale, offset, position, align) {\n  const {top, left, bottom, right, chart} = scale;\n  const {chartArea, scales} = chart;\n  let rotation = 0;\n  let maxWidth, titleX, titleY;\n  const height = bottom - top;\n  const width = right - left;\n  if (scale.isHorizontal()) {\n    titleX = _alignStartEnd(align, left, right);\n    if (isObject(position)) {\n      const positionAxisID = Object.keys(position)[0];\n      const value = position[positionAxisID];\n      titleY = scales[positionAxisID].getPixelForValue(value) + height - offset;\n    } else if (position === 'center') {\n      titleY = (chartArea.bottom + chartArea.top) / 2 + height - offset;\n    } else {\n      titleY = offsetFromEdge(scale, position, offset);\n    }\n    maxWidth = right - left;\n  } else {\n    if (isObject(position)) {\n      const positionAxisID = Object.keys(position)[0];\n      const value = position[positionAxisID];\n      titleX = scales[positionAxisID].getPixelForValue(value) - width + offset;\n    } else if (position === 'center') {\n      titleX = (chartArea.left + chartArea.right) / 2 - width + offset;\n    } else {\n      titleX = offsetFromEdge(scale, position, offset);\n    }\n    titleY = _alignStartEnd(align, bottom, top);\n    rotation = position === 'left' ? -HALF_PI : HALF_PI;\n  }\n  return {titleX, titleY, maxWidth, rotation};\n}\nclass Scale extends Element {\n  constructor(cfg) {\n    super();\n    this.id = cfg.id;\n    this.type = cfg.type;\n    this.options = undefined;\n    this.ctx = cfg.ctx;\n    this.chart = cfg.chart;\n    this.top = undefined;\n    this.bottom = undefined;\n    this.left = undefined;\n    this.right = undefined;\n    this.width = undefined;\n    this.height = undefined;\n    this._margins = {\n      left: 0,\n      right: 0,\n      top: 0,\n      bottom: 0\n    };\n    this.maxWidth = undefined;\n    this.maxHeight = undefined;\n    this.paddingTop = undefined;\n    this.paddingBottom = undefined;\n    this.paddingLeft = undefined;\n    this.paddingRight = undefined;\n    this.axis = undefined;\n    this.labelRotation = undefined;\n    this.min = undefined;\n    this.max = undefined;\n    this._range = undefined;\n    this.ticks = [];\n    this._gridLineItems = null;\n    this._labelItems = null;\n    this._labelSizes = null;\n    this._length = 0;\n    this._maxLength = 0;\n    this._longestTextCache = {};\n    this._startPixel = undefined;\n    this._endPixel = undefined;\n    this._reversePixels = false;\n    this._userMax = undefined;\n    this._userMin = undefined;\n    this._suggestedMax = undefined;\n    this._suggestedMin = undefined;\n    this._ticksLength = 0;\n    this._borderValue = 0;\n    this._cache = {};\n    this._dataLimitsCached = false;\n    this.$context = undefined;\n  }\n  init(options) {\n    this.options = options.setContext(this.getContext());\n    this.axis = options.axis;\n    this._userMin = this.parse(options.min);\n    this._userMax = this.parse(options.max);\n    this._suggestedMin = this.parse(options.suggestedMin);\n    this._suggestedMax = this.parse(options.suggestedMax);\n  }\n  parse(raw, index) {\n    return raw;\n  }\n  getUserBounds() {\n    let {_userMin, _userMax, _suggestedMin, _suggestedMax} = this;\n    _userMin = finiteOrDefault(_userMin, Number.POSITIVE_INFINITY);\n    _userMax = finiteOrDefault(_userMax, Number.NEGATIVE_INFINITY);\n    _suggestedMin = finiteOrDefault(_suggestedMin, Number.POSITIVE_INFINITY);\n    _suggestedMax = finiteOrDefault(_suggestedMax, Number.NEGATIVE_INFINITY);\n    return {\n      min: finiteOrDefault(_userMin, _suggestedMin),\n      max: finiteOrDefault(_userMax, _suggestedMax),\n      minDefined: isNumberFinite(_userMin),\n      maxDefined: isNumberFinite(_userMax)\n    };\n  }\n  getMinMax(canStack) {\n    let {min, max, minDefined, maxDefined} = this.getUserBounds();\n    let range;\n    if (minDefined && maxDefined) {\n      return {min, max};\n    }\n    const metas = this.getMatchingVisibleMetas();\n    for (let i = 0, ilen = metas.length; i < ilen; ++i) {\n      range = metas[i].controller.getMinMax(this, canStack);\n      if (!minDefined) {\n        min = Math.min(min, range.min);\n      }\n      if (!maxDefined) {\n        max = Math.max(max, range.max);\n      }\n    }\n    min = maxDefined && min > max ? max : min;\n    max = minDefined && min > max ? min : max;\n    return {\n      min: finiteOrDefault(min, finiteOrDefault(max, min)),\n      max: finiteOrDefault(max, finiteOrDefault(min, max))\n    };\n  }\n  getPadding() {\n    return {\n      left: this.paddingLeft || 0,\n      top: this.paddingTop || 0,\n      right: this.paddingRight || 0,\n      bottom: this.paddingBottom || 0\n    };\n  }\n  getTicks() {\n    return this.ticks;\n  }\n  getLabels() {\n    const data = this.chart.data;\n    return this.options.labels || (this.isHorizontal() ? data.xLabels : data.yLabels) || data.labels || [];\n  }\n  beforeLayout() {\n    this._cache = {};\n    this._dataLimitsCached = false;\n  }\n  beforeUpdate() {\n    callback(this.options.beforeUpdate, [this]);\n  }\n  update(maxWidth, maxHeight, margins) {\n    const {beginAtZero, grace, ticks: tickOpts} = this.options;\n    const sampleSize = tickOpts.sampleSize;\n    this.beforeUpdate();\n    this.maxWidth = maxWidth;\n    this.maxHeight = maxHeight;\n    this._margins = margins = Object.assign({\n      left: 0,\n      right: 0,\n      top: 0,\n      bottom: 0\n    }, margins);\n    this.ticks = null;\n    this._labelSizes = null;\n    this._gridLineItems = null;\n    this._labelItems = null;\n    this.beforeSetDimensions();\n    this.setDimensions();\n    this.afterSetDimensions();\n    this._maxLength = this.isHorizontal()\n      ? this.width + margins.left + margins.right\n      : this.height + margins.top + margins.bottom;\n    if (!this._dataLimitsCached) {\n      this.beforeDataLimits();\n      this.determineDataLimits();\n      this.afterDataLimits();\n      this._range = _addGrace(this, grace, beginAtZero);\n      this._dataLimitsCached = true;\n    }\n    this.beforeBuildTicks();\n    this.ticks = this.buildTicks() || [];\n    this.afterBuildTicks();\n    const samplingEnabled = sampleSize < this.ticks.length;\n    this._convertTicksToLabels(samplingEnabled ? sample(this.ticks, sampleSize) : this.ticks);\n    this.configure();\n    this.beforeCalculateLabelRotation();\n    this.calculateLabelRotation();\n    this.afterCalculateLabelRotation();\n    if (tickOpts.display && (tickOpts.autoSkip || tickOpts.source === 'auto')) {\n      this.ticks = autoSkip(this, this.ticks);\n      this._labelSizes = null;\n      this.afterAutoSkip();\n    }\n    if (samplingEnabled) {\n      this._convertTicksToLabels(this.ticks);\n    }\n    this.beforeFit();\n    this.fit();\n    this.afterFit();\n    this.afterUpdate();\n  }\n  configure() {\n    let reversePixels = this.options.reverse;\n    let startPixel, endPixel;\n    if (this.isHorizontal()) {\n      startPixel = this.left;\n      endPixel = this.right;\n    } else {\n      startPixel = this.top;\n      endPixel = this.bottom;\n      reversePixels = !reversePixels;\n    }\n    this._startPixel = startPixel;\n    this._endPixel = endPixel;\n    this._reversePixels = reversePixels;\n    this._length = endPixel - startPixel;\n    this._alignToPixels = this.options.alignToPixels;\n  }\n  afterUpdate() {\n    callback(this.options.afterUpdate, [this]);\n  }\n  beforeSetDimensions() {\n    callback(this.options.beforeSetDimensions, [this]);\n  }\n  setDimensions() {\n    if (this.isHorizontal()) {\n      this.width = this.maxWidth;\n      this.left = 0;\n      this.right = this.width;\n    } else {\n      this.height = this.maxHeight;\n      this.top = 0;\n      this.bottom = this.height;\n    }\n    this.paddingLeft = 0;\n    this.paddingTop = 0;\n    this.paddingRight = 0;\n    this.paddingBottom = 0;\n  }\n  afterSetDimensions() {\n    callback(this.options.afterSetDimensions, [this]);\n  }\n  _callHooks(name) {\n    this.chart.notifyPlugins(name, this.getContext());\n    callback(this.options[name], [this]);\n  }\n  beforeDataLimits() {\n    this._callHooks('beforeDataLimits');\n  }\n  determineDataLimits() {}\n  afterDataLimits() {\n    this._callHooks('afterDataLimits');\n  }\n  beforeBuildTicks() {\n    this._callHooks('beforeBuildTicks');\n  }\n  buildTicks() {\n    return [];\n  }\n  afterBuildTicks() {\n    this._callHooks('afterBuildTicks');\n  }\n  beforeTickToLabelConversion() {\n    callback(this.options.beforeTickToLabelConversion, [this]);\n  }\n  generateTickLabels(ticks) {\n    const tickOpts = this.options.ticks;\n    let i, ilen, tick;\n    for (i = 0, ilen = ticks.length; i < ilen; i++) {\n      tick = ticks[i];\n      tick.label = callback(tickOpts.callback, [tick.value, i, ticks], this);\n    }\n  }\n  afterTickToLabelConversion() {\n    callback(this.options.afterTickToLabelConversion, [this]);\n  }\n  beforeCalculateLabelRotation() {\n    callback(this.options.beforeCalculateLabelRotation, [this]);\n  }\n  calculateLabelRotation() {\n    const options = this.options;\n    const tickOpts = options.ticks;\n    const numTicks = this.ticks.length;\n    const minRotation = tickOpts.minRotation || 0;\n    const maxRotation = tickOpts.maxRotation;\n    let labelRotation = minRotation;\n    let tickWidth, maxHeight, maxLabelDiagonal;\n    if (!this._isVisible() || !tickOpts.display || minRotation >= maxRotation || numTicks <= 1 || !this.isHorizontal()) {\n      this.labelRotation = minRotation;\n      return;\n    }\n    const labelSizes = this._getLabelSizes();\n    const maxLabelWidth = labelSizes.widest.width;\n    const maxLabelHeight = labelSizes.highest.height;\n    const maxWidth = _limitValue(this.chart.width - maxLabelWidth, 0, this.maxWidth);\n    tickWidth = options.offset ? this.maxWidth / numTicks : maxWidth / (numTicks - 1);\n    if (maxLabelWidth + 6 > tickWidth) {\n      tickWidth = maxWidth / (numTicks - (options.offset ? 0.5 : 1));\n      maxHeight = this.maxHeight - getTickMarkLength(options.grid)\n\t\t\t\t- tickOpts.padding - getTitleHeight(options.title, this.chart.options.font);\n      maxLabelDiagonal = Math.sqrt(maxLabelWidth * maxLabelWidth + maxLabelHeight * maxLabelHeight);\n      labelRotation = toDegrees(Math.min(\n        Math.asin(_limitValue((labelSizes.highest.height + 6) / tickWidth, -1, 1)),\n        Math.asin(_limitValue(maxHeight / maxLabelDiagonal, -1, 1)) - Math.asin(_limitValue(maxLabelHeight / maxLabelDiagonal, -1, 1))\n      ));\n      labelRotation = Math.max(minRotation, Math.min(maxRotation, labelRotation));\n    }\n    this.labelRotation = labelRotation;\n  }\n  afterCalculateLabelRotation() {\n    callback(this.options.afterCalculateLabelRotation, [this]);\n  }\n  afterAutoSkip() {}\n  beforeFit() {\n    callback(this.options.beforeFit, [this]);\n  }\n  fit() {\n    const minSize = {\n      width: 0,\n      height: 0\n    };\n    const {chart, options: {ticks: tickOpts, title: titleOpts, grid: gridOpts}} = this;\n    const display = this._isVisible();\n    const isHorizontal = this.isHorizontal();\n    if (display) {\n      const titleHeight = getTitleHeight(titleOpts, chart.options.font);\n      if (isHorizontal) {\n        minSize.width = this.maxWidth;\n        minSize.height = getTickMarkLength(gridOpts) + titleHeight;\n      } else {\n        minSize.height = this.maxHeight;\n        minSize.width = getTickMarkLength(gridOpts) + titleHeight;\n      }\n      if (tickOpts.display && this.ticks.length) {\n        const {first, last, widest, highest} = this._getLabelSizes();\n        const tickPadding = tickOpts.padding * 2;\n        const angleRadians = toRadians(this.labelRotation);\n        const cos = Math.cos(angleRadians);\n        const sin = Math.sin(angleRadians);\n        if (isHorizontal) {\n          const labelHeight = tickOpts.mirror ? 0 : sin * widest.width + cos * highest.height;\n          minSize.height = Math.min(this.maxHeight, minSize.height + labelHeight + tickPadding);\n        } else {\n          const labelWidth = tickOpts.mirror ? 0 : cos * widest.width + sin * highest.height;\n          minSize.width = Math.min(this.maxWidth, minSize.width + labelWidth + tickPadding);\n        }\n        this._calculatePadding(first, last, sin, cos);\n      }\n    }\n    this._handleMargins();\n    if (isHorizontal) {\n      this.width = this._length = chart.width - this._margins.left - this._margins.right;\n      this.height = minSize.height;\n    } else {\n      this.width = minSize.width;\n      this.height = this._length = chart.height - this._margins.top - this._margins.bottom;\n    }\n  }\n  _calculatePadding(first, last, sin, cos) {\n    const {ticks: {align, padding}, position} = this.options;\n    const isRotated = this.labelRotation !== 0;\n    const labelsBelowTicks = position !== 'top' && this.axis === 'x';\n    if (this.isHorizontal()) {\n      const offsetLeft = this.getPixelForTick(0) - this.left;\n      const offsetRight = this.right - this.getPixelForTick(this.ticks.length - 1);\n      let paddingLeft = 0;\n      let paddingRight = 0;\n      if (isRotated) {\n        if (labelsBelowTicks) {\n          paddingLeft = cos * first.width;\n          paddingRight = sin * last.height;\n        } else {\n          paddingLeft = sin * first.height;\n          paddingRight = cos * last.width;\n        }\n      } else if (align === 'start') {\n        paddingRight = last.width;\n      } else if (align === 'end') {\n        paddingLeft = first.width;\n      } else if (align !== 'inner') {\n        paddingLeft = first.width / 2;\n        paddingRight = last.width / 2;\n      }\n      this.paddingLeft = Math.max((paddingLeft - offsetLeft + padding) * this.width / (this.width - offsetLeft), 0);\n      this.paddingRight = Math.max((paddingRight - offsetRight + padding) * this.width / (this.width - offsetRight), 0);\n    } else {\n      let paddingTop = last.height / 2;\n      let paddingBottom = first.height / 2;\n      if (align === 'start') {\n        paddingTop = 0;\n        paddingBottom = first.height;\n      } else if (align === 'end') {\n        paddingTop = last.height;\n        paddingBottom = 0;\n      }\n      this.paddingTop = paddingTop + padding;\n      this.paddingBottom = paddingBottom + padding;\n    }\n  }\n  _handleMargins() {\n    if (this._margins) {\n      this._margins.left = Math.max(this.paddingLeft, this._margins.left);\n      this._margins.top = Math.max(this.paddingTop, this._margins.top);\n      this._margins.right = Math.max(this.paddingRight, this._margins.right);\n      this._margins.bottom = Math.max(this.paddingBottom, this._margins.bottom);\n    }\n  }\n  afterFit() {\n    callback(this.options.afterFit, [this]);\n  }\n  isHorizontal() {\n    const {axis, position} = this.options;\n    return position === 'top' || position === 'bottom' || axis === 'x';\n  }\n  isFullSize() {\n    return this.options.fullSize;\n  }\n  _convertTicksToLabels(ticks) {\n    this.beforeTickToLabelConversion();\n    this.generateTickLabels(ticks);\n    let i, ilen;\n    for (i = 0, ilen = ticks.length; i < ilen; i++) {\n      if (isNullOrUndef(ticks[i].label)) {\n        ticks.splice(i, 1);\n        ilen--;\n        i--;\n      }\n    }\n    this.afterTickToLabelConversion();\n  }\n  _getLabelSizes() {\n    let labelSizes = this._labelSizes;\n    if (!labelSizes) {\n      const sampleSize = this.options.ticks.sampleSize;\n      let ticks = this.ticks;\n      if (sampleSize < ticks.length) {\n        ticks = sample(ticks, sampleSize);\n      }\n      this._labelSizes = labelSizes = this._computeLabelSizes(ticks, ticks.length);\n    }\n    return labelSizes;\n  }\n  _computeLabelSizes(ticks, length) {\n    const {ctx, _longestTextCache: caches} = this;\n    const widths = [];\n    const heights = [];\n    let widestLabelSize = 0;\n    let highestLabelSize = 0;\n    let i, j, jlen, label, tickFont, fontString, cache, lineHeight, width, height, nestedLabel;\n    for (i = 0; i < length; ++i) {\n      label = ticks[i].label;\n      tickFont = this._resolveTickFontOptions(i);\n      ctx.font = fontString = tickFont.string;\n      cache = caches[fontString] = caches[fontString] || {data: {}, gc: []};\n      lineHeight = tickFont.lineHeight;\n      width = height = 0;\n      if (!isNullOrUndef(label) && !isArray(label)) {\n        width = _measureText(ctx, cache.data, cache.gc, width, label);\n        height = lineHeight;\n      } else if (isArray(label)) {\n        for (j = 0, jlen = label.length; j < jlen; ++j) {\n          nestedLabel = label[j];\n          if (!isNullOrUndef(nestedLabel) && !isArray(nestedLabel)) {\n            width = _measureText(ctx, cache.data, cache.gc, width, nestedLabel);\n            height += lineHeight;\n          }\n        }\n      }\n      widths.push(width);\n      heights.push(height);\n      widestLabelSize = Math.max(width, widestLabelSize);\n      highestLabelSize = Math.max(height, highestLabelSize);\n    }\n    garbageCollect(caches, length);\n    const widest = widths.indexOf(widestLabelSize);\n    const highest = heights.indexOf(highestLabelSize);\n    const valueAt = (idx) => ({width: widths[idx] || 0, height: heights[idx] || 0});\n    return {\n      first: valueAt(0),\n      last: valueAt(length - 1),\n      widest: valueAt(widest),\n      highest: valueAt(highest),\n      widths,\n      heights,\n    };\n  }\n  getLabelForValue(value) {\n    return value;\n  }\n  getPixelForValue(value, index) {\n    return NaN;\n  }\n  getValueForPixel(pixel) {}\n  getPixelForTick(index) {\n    const ticks = this.ticks;\n    if (index < 0 || index > ticks.length - 1) {\n      return null;\n    }\n    return this.getPixelForValue(ticks[index].value);\n  }\n  getPixelForDecimal(decimal) {\n    if (this._reversePixels) {\n      decimal = 1 - decimal;\n    }\n    const pixel = this._startPixel + decimal * this._length;\n    return _int16Range(this._alignToPixels ? _alignPixel(this.chart, pixel, 0) : pixel);\n  }\n  getDecimalForPixel(pixel) {\n    const decimal = (pixel - this._startPixel) / this._length;\n    return this._reversePixels ? 1 - decimal : decimal;\n  }\n  getBasePixel() {\n    return this.getPixelForValue(this.getBaseValue());\n  }\n  getBaseValue() {\n    const {min, max} = this;\n    return min < 0 && max < 0 ? max :\n      min > 0 && max > 0 ? min :\n      0;\n  }\n  getContext(index) {\n    const ticks = this.ticks || [];\n    if (index >= 0 && index < ticks.length) {\n      const tick = ticks[index];\n      return tick.$context ||\n\t\t\t\t(tick.$context = createTickContext(this.getContext(), index, tick));\n    }\n    return this.$context ||\n\t\t\t(this.$context = createScaleContext(this.chart.getContext(), this));\n  }\n  _tickSize() {\n    const optionTicks = this.options.ticks;\n    const rot = toRadians(this.labelRotation);\n    const cos = Math.abs(Math.cos(rot));\n    const sin = Math.abs(Math.sin(rot));\n    const labelSizes = this._getLabelSizes();\n    const padding = optionTicks.autoSkipPadding || 0;\n    const w = labelSizes ? labelSizes.widest.width + padding : 0;\n    const h = labelSizes ? labelSizes.highest.height + padding : 0;\n    return this.isHorizontal()\n      ? h * cos > w * sin ? w / cos : h / sin\n      : h * sin < w * cos ? h / cos : w / sin;\n  }\n  _isVisible() {\n    const display = this.options.display;\n    if (display !== 'auto') {\n      return !!display;\n    }\n    return this.getMatchingVisibleMetas().length > 0;\n  }\n  _computeGridLineItems(chartArea) {\n    const axis = this.axis;\n    const chart = this.chart;\n    const options = this.options;\n    const {grid, position} = options;\n    const offset = grid.offset;\n    const isHorizontal = this.isHorizontal();\n    const ticks = this.ticks;\n    const ticksLength = ticks.length + (offset ? 1 : 0);\n    const tl = getTickMarkLength(grid);\n    const items = [];\n    const borderOpts = grid.setContext(this.getContext());\n    const axisWidth = borderOpts.drawBorder ? borderOpts.borderWidth : 0;\n    const axisHalfWidth = axisWidth / 2;\n    const alignBorderValue = function(pixel) {\n      return _alignPixel(chart, pixel, axisWidth);\n    };\n    let borderValue, i, lineValue, alignedLineValue;\n    let tx1, ty1, tx2, ty2, x1, y1, x2, y2;\n    if (position === 'top') {\n      borderValue = alignBorderValue(this.bottom);\n      ty1 = this.bottom - tl;\n      ty2 = borderValue - axisHalfWidth;\n      y1 = alignBorderValue(chartArea.top) + axisHalfWidth;\n      y2 = chartArea.bottom;\n    } else if (position === 'bottom') {\n      borderValue = alignBorderValue(this.top);\n      y1 = chartArea.top;\n      y2 = alignBorderValue(chartArea.bottom) - axisHalfWidth;\n      ty1 = borderValue + axisHalfWidth;\n      ty2 = this.top + tl;\n    } else if (position === 'left') {\n      borderValue = alignBorderValue(this.right);\n      tx1 = this.right - tl;\n      tx2 = borderValue - axisHalfWidth;\n      x1 = alignBorderValue(chartArea.left) + axisHalfWidth;\n      x2 = chartArea.right;\n    } else if (position === 'right') {\n      borderValue = alignBorderValue(this.left);\n      x1 = chartArea.left;\n      x2 = alignBorderValue(chartArea.right) - axisHalfWidth;\n      tx1 = borderValue + axisHalfWidth;\n      tx2 = this.left + tl;\n    } else if (axis === 'x') {\n      if (position === 'center') {\n        borderValue = alignBorderValue((chartArea.top + chartArea.bottom) / 2 + 0.5);\n      } else if (isObject(position)) {\n        const positionAxisID = Object.keys(position)[0];\n        const value = position[positionAxisID];\n        borderValue = alignBorderValue(this.chart.scales[positionAxisID].getPixelForValue(value));\n      }\n      y1 = chartArea.top;\n      y2 = chartArea.bottom;\n      ty1 = borderValue + axisHalfWidth;\n      ty2 = ty1 + tl;\n    } else if (axis === 'y') {\n      if (position === 'center') {\n        borderValue = alignBorderValue((chartArea.left + chartArea.right) / 2);\n      } else if (isObject(position)) {\n        const positionAxisID = Object.keys(position)[0];\n        const value = position[positionAxisID];\n        borderValue = alignBorderValue(this.chart.scales[positionAxisID].getPixelForValue(value));\n      }\n      tx1 = borderValue - axisHalfWidth;\n      tx2 = tx1 - tl;\n      x1 = chartArea.left;\n      x2 = chartArea.right;\n    }\n    const limit = valueOrDefault(options.ticks.maxTicksLimit, ticksLength);\n    const step = Math.max(1, Math.ceil(ticksLength / limit));\n    for (i = 0; i < ticksLength; i += step) {\n      const optsAtIndex = grid.setContext(this.getContext(i));\n      const lineWidth = optsAtIndex.lineWidth;\n      const lineColor = optsAtIndex.color;\n      const borderDash = optsAtIndex.borderDash || [];\n      const borderDashOffset = optsAtIndex.borderDashOffset;\n      const tickWidth = optsAtIndex.tickWidth;\n      const tickColor = optsAtIndex.tickColor;\n      const tickBorderDash = optsAtIndex.tickBorderDash || [];\n      const tickBorderDashOffset = optsAtIndex.tickBorderDashOffset;\n      lineValue = getPixelForGridLine(this, i, offset);\n      if (lineValue === undefined) {\n        continue;\n      }\n      alignedLineValue = _alignPixel(chart, lineValue, lineWidth);\n      if (isHorizontal) {\n        tx1 = tx2 = x1 = x2 = alignedLineValue;\n      } else {\n        ty1 = ty2 = y1 = y2 = alignedLineValue;\n      }\n      items.push({\n        tx1,\n        ty1,\n        tx2,\n        ty2,\n        x1,\n        y1,\n        x2,\n        y2,\n        width: lineWidth,\n        color: lineColor,\n        borderDash,\n        borderDashOffset,\n        tickWidth,\n        tickColor,\n        tickBorderDash,\n        tickBorderDashOffset,\n      });\n    }\n    this._ticksLength = ticksLength;\n    this._borderValue = borderValue;\n    return items;\n  }\n  _computeLabelItems(chartArea) {\n    const axis = this.axis;\n    const options = this.options;\n    const {position, ticks: optionTicks} = options;\n    const isHorizontal = this.isHorizontal();\n    const ticks = this.ticks;\n    const {align, crossAlign, padding, mirror} = optionTicks;\n    const tl = getTickMarkLength(options.grid);\n    const tickAndPadding = tl + padding;\n    const hTickAndPadding = mirror ? -padding : tickAndPadding;\n    const rotation = -toRadians(this.labelRotation);\n    const items = [];\n    let i, ilen, tick, label, x, y, textAlign, pixel, font, lineHeight, lineCount, textOffset;\n    let textBaseline = 'middle';\n    if (position === 'top') {\n      y = this.bottom - hTickAndPadding;\n      textAlign = this._getXAxisLabelAlignment();\n    } else if (position === 'bottom') {\n      y = this.top + hTickAndPadding;\n      textAlign = this._getXAxisLabelAlignment();\n    } else if (position === 'left') {\n      const ret = this._getYAxisLabelAlignment(tl);\n      textAlign = ret.textAlign;\n      x = ret.x;\n    } else if (position === 'right') {\n      const ret = this._getYAxisLabelAlignment(tl);\n      textAlign = ret.textAlign;\n      x = ret.x;\n    } else if (axis === 'x') {\n      if (position === 'center') {\n        y = ((chartArea.top + chartArea.bottom) / 2) + tickAndPadding;\n      } else if (isObject(position)) {\n        const positionAxisID = Object.keys(position)[0];\n        const value = position[positionAxisID];\n        y = this.chart.scales[positionAxisID].getPixelForValue(value) + tickAndPadding;\n      }\n      textAlign = this._getXAxisLabelAlignment();\n    } else if (axis === 'y') {\n      if (position === 'center') {\n        x = ((chartArea.left + chartArea.right) / 2) - tickAndPadding;\n      } else if (isObject(position)) {\n        const positionAxisID = Object.keys(position)[0];\n        const value = position[positionAxisID];\n        x = this.chart.scales[positionAxisID].getPixelForValue(value);\n      }\n      textAlign = this._getYAxisLabelAlignment(tl).textAlign;\n    }\n    if (axis === 'y') {\n      if (align === 'start') {\n        textBaseline = 'top';\n      } else if (align === 'end') {\n        textBaseline = 'bottom';\n      }\n    }\n    const labelSizes = this._getLabelSizes();\n    for (i = 0, ilen = ticks.length; i < ilen; ++i) {\n      tick = ticks[i];\n      label = tick.label;\n      const optsAtIndex = optionTicks.setContext(this.getContext(i));\n      pixel = this.getPixelForTick(i) + optionTicks.labelOffset;\n      font = this._resolveTickFontOptions(i);\n      lineHeight = font.lineHeight;\n      lineCount = isArray(label) ? label.length : 1;\n      const halfCount = lineCount / 2;\n      const color = optsAtIndex.color;\n      const strokeColor = optsAtIndex.textStrokeColor;\n      const strokeWidth = optsAtIndex.textStrokeWidth;\n      let tickTextAlign = textAlign;\n      if (isHorizontal) {\n        x = pixel;\n        if (textAlign === 'inner') {\n          if (i === ilen - 1) {\n            tickTextAlign = !this.options.reverse ? 'right' : 'left';\n          } else if (i === 0) {\n            tickTextAlign = !this.options.reverse ? 'left' : 'right';\n          } else {\n            tickTextAlign = 'center';\n          }\n        }\n        if (position === 'top') {\n          if (crossAlign === 'near' || rotation !== 0) {\n            textOffset = -lineCount * lineHeight + lineHeight / 2;\n          } else if (crossAlign === 'center') {\n            textOffset = -labelSizes.highest.height / 2 - halfCount * lineHeight + lineHeight;\n          } else {\n            textOffset = -labelSizes.highest.height + lineHeight / 2;\n          }\n        } else {\n          if (crossAlign === 'near' || rotation !== 0) {\n            textOffset = lineHeight / 2;\n          } else if (crossAlign === 'center') {\n            textOffset = labelSizes.highest.height / 2 - halfCount * lineHeight;\n          } else {\n            textOffset = labelSizes.highest.height - lineCount * lineHeight;\n          }\n        }\n        if (mirror) {\n          textOffset *= -1;\n        }\n      } else {\n        y = pixel;\n        textOffset = (1 - lineCount) * lineHeight / 2;\n      }\n      let backdrop;\n      if (optsAtIndex.showLabelBackdrop) {\n        const labelPadding = toPadding(optsAtIndex.backdropPadding);\n        const height = labelSizes.heights[i];\n        const width = labelSizes.widths[i];\n        let top = y + textOffset - labelPadding.top;\n        let left = x - labelPadding.left;\n        switch (textBaseline) {\n        case 'middle':\n          top -= height / 2;\n          break;\n        case 'bottom':\n          top -= height;\n          break;\n        }\n        switch (textAlign) {\n        case 'center':\n          left -= width / 2;\n          break;\n        case 'right':\n          left -= width;\n          break;\n        }\n        backdrop = {\n          left,\n          top,\n          width: width + labelPadding.width,\n          height: height + labelPadding.height,\n          color: optsAtIndex.backdropColor,\n        };\n      }\n      items.push({\n        rotation,\n        label,\n        font,\n        color,\n        strokeColor,\n        strokeWidth,\n        textOffset,\n        textAlign: tickTextAlign,\n        textBaseline,\n        translation: [x, y],\n        backdrop,\n      });\n    }\n    return items;\n  }\n  _getXAxisLabelAlignment() {\n    const {position, ticks} = this.options;\n    const rotation = -toRadians(this.labelRotation);\n    if (rotation) {\n      return position === 'top' ? 'left' : 'right';\n    }\n    let align = 'center';\n    if (ticks.align === 'start') {\n      align = 'left';\n    } else if (ticks.align === 'end') {\n      align = 'right';\n    } else if (ticks.align === 'inner') {\n      align = 'inner';\n    }\n    return align;\n  }\n  _getYAxisLabelAlignment(tl) {\n    const {position, ticks: {crossAlign, mirror, padding}} = this.options;\n    const labelSizes = this._getLabelSizes();\n    const tickAndPadding = tl + padding;\n    const widest = labelSizes.widest.width;\n    let textAlign;\n    let x;\n    if (position === 'left') {\n      if (mirror) {\n        x = this.right + padding;\n        if (crossAlign === 'near') {\n          textAlign = 'left';\n        } else if (crossAlign === 'center') {\n          textAlign = 'center';\n          x += (widest / 2);\n        } else {\n          textAlign = 'right';\n          x += widest;\n        }\n      } else {\n        x = this.right - tickAndPadding;\n        if (crossAlign === 'near') {\n          textAlign = 'right';\n        } else if (crossAlign === 'center') {\n          textAlign = 'center';\n          x -= (widest / 2);\n        } else {\n          textAlign = 'left';\n          x = this.left;\n        }\n      }\n    } else if (position === 'right') {\n      if (mirror) {\n        x = this.left + padding;\n        if (crossAlign === 'near') {\n          textAlign = 'right';\n        } else if (crossAlign === 'center') {\n          textAlign = 'center';\n          x -= (widest / 2);\n        } else {\n          textAlign = 'left';\n          x -= widest;\n        }\n      } else {\n        x = this.left + tickAndPadding;\n        if (crossAlign === 'near') {\n          textAlign = 'left';\n        } else if (crossAlign === 'center') {\n          textAlign = 'center';\n          x += widest / 2;\n        } else {\n          textAlign = 'right';\n          x = this.right;\n        }\n      }\n    } else {\n      textAlign = 'right';\n    }\n    return {textAlign, x};\n  }\n  _computeLabelArea() {\n    if (this.options.ticks.mirror) {\n      return;\n    }\n    const chart = this.chart;\n    const position = this.options.position;\n    if (position === 'left' || position === 'right') {\n      return {top: 0, left: this.left, bottom: chart.height, right: this.right};\n    } if (position === 'top' || position === 'bottom') {\n      return {top: this.top, left: 0, bottom: this.bottom, right: chart.width};\n    }\n  }\n  drawBackground() {\n    const {ctx, options: {backgroundColor}, left, top, width, height} = this;\n    if (backgroundColor) {\n      ctx.save();\n      ctx.fillStyle = backgroundColor;\n      ctx.fillRect(left, top, width, height);\n      ctx.restore();\n    }\n  }\n  getLineWidthForValue(value) {\n    const grid = this.options.grid;\n    if (!this._isVisible() || !grid.display) {\n      return 0;\n    }\n    const ticks = this.ticks;\n    const index = ticks.findIndex(t => t.value === value);\n    if (index >= 0) {\n      const opts = grid.setContext(this.getContext(index));\n      return opts.lineWidth;\n    }\n    return 0;\n  }\n  drawGrid(chartArea) {\n    const grid = this.options.grid;\n    const ctx = this.ctx;\n    const items = this._gridLineItems || (this._gridLineItems = this._computeGridLineItems(chartArea));\n    let i, ilen;\n    const drawLine = (p1, p2, style) => {\n      if (!style.width || !style.color) {\n        return;\n      }\n      ctx.save();\n      ctx.lineWidth = style.width;\n      ctx.strokeStyle = style.color;\n      ctx.setLineDash(style.borderDash || []);\n      ctx.lineDashOffset = style.borderDashOffset;\n      ctx.beginPath();\n      ctx.moveTo(p1.x, p1.y);\n      ctx.lineTo(p2.x, p2.y);\n      ctx.stroke();\n      ctx.restore();\n    };\n    if (grid.display) {\n      for (i = 0, ilen = items.length; i < ilen; ++i) {\n        const item = items[i];\n        if (grid.drawOnChartArea) {\n          drawLine(\n            {x: item.x1, y: item.y1},\n            {x: item.x2, y: item.y2},\n            item\n          );\n        }\n        if (grid.drawTicks) {\n          drawLine(\n            {x: item.tx1, y: item.ty1},\n            {x: item.tx2, y: item.ty2},\n            {\n              color: item.tickColor,\n              width: item.tickWidth,\n              borderDash: item.tickBorderDash,\n              borderDashOffset: item.tickBorderDashOffset\n            }\n          );\n        }\n      }\n    }\n  }\n  drawBorder() {\n    const {chart, ctx, options: {grid}} = this;\n    const borderOpts = grid.setContext(this.getContext());\n    const axisWidth = grid.drawBorder ? borderOpts.borderWidth : 0;\n    if (!axisWidth) {\n      return;\n    }\n    const lastLineWidth = grid.setContext(this.getContext(0)).lineWidth;\n    const borderValue = this._borderValue;\n    let x1, x2, y1, y2;\n    if (this.isHorizontal()) {\n      x1 = _alignPixel(chart, this.left, axisWidth) - axisWidth / 2;\n      x2 = _alignPixel(chart, this.right, lastLineWidth) + lastLineWidth / 2;\n      y1 = y2 = borderValue;\n    } else {\n      y1 = _alignPixel(chart, this.top, axisWidth) - axisWidth / 2;\n      y2 = _alignPixel(chart, this.bottom, lastLineWidth) + lastLineWidth / 2;\n      x1 = x2 = borderValue;\n    }\n    ctx.save();\n    ctx.lineWidth = borderOpts.borderWidth;\n    ctx.strokeStyle = borderOpts.borderColor;\n    ctx.beginPath();\n    ctx.moveTo(x1, y1);\n    ctx.lineTo(x2, y2);\n    ctx.stroke();\n    ctx.restore();\n  }\n  drawLabels(chartArea) {\n    const optionTicks = this.options.ticks;\n    if (!optionTicks.display) {\n      return;\n    }\n    const ctx = this.ctx;\n    const area = this._computeLabelArea();\n    if (area) {\n      clipArea(ctx, area);\n    }\n    const items = this._labelItems || (this._labelItems = this._computeLabelItems(chartArea));\n    let i, ilen;\n    for (i = 0, ilen = items.length; i < ilen; ++i) {\n      const item = items[i];\n      const tickFont = item.font;\n      const label = item.label;\n      if (item.backdrop) {\n        ctx.fillStyle = item.backdrop.color;\n        ctx.fillRect(item.backdrop.left, item.backdrop.top, item.backdrop.width, item.backdrop.height);\n      }\n      let y = item.textOffset;\n      renderText(ctx, label, 0, y, tickFont, item);\n    }\n    if (area) {\n      unclipArea(ctx);\n    }\n  }\n  drawTitle() {\n    const {ctx, options: {position, title, reverse}} = this;\n    if (!title.display) {\n      return;\n    }\n    const font = toFont(title.font);\n    const padding = toPadding(title.padding);\n    const align = title.align;\n    let offset = font.lineHeight / 2;\n    if (position === 'bottom' || position === 'center' || isObject(position)) {\n      offset += padding.bottom;\n      if (isArray(title.text)) {\n        offset += font.lineHeight * (title.text.length - 1);\n      }\n    } else {\n      offset += padding.top;\n    }\n    const {titleX, titleY, maxWidth, rotation} = titleArgs(this, offset, position, align);\n    renderText(ctx, title.text, 0, 0, font, {\n      color: title.color,\n      maxWidth,\n      rotation,\n      textAlign: titleAlign(align, position, reverse),\n      textBaseline: 'middle',\n      translation: [titleX, titleY],\n    });\n  }\n  draw(chartArea) {\n    if (!this._isVisible()) {\n      return;\n    }\n    this.drawBackground();\n    this.drawGrid(chartArea);\n    this.drawBorder();\n    this.drawTitle();\n    this.drawLabels(chartArea);\n  }\n  _layers() {\n    const opts = this.options;\n    const tz = opts.ticks && opts.ticks.z || 0;\n    const gz = valueOrDefault(opts.grid && opts.grid.z, -1);\n    if (!this._isVisible() || this.draw !== Scale.prototype.draw) {\n      return [{\n        z: tz,\n        draw: (chartArea) => {\n          this.draw(chartArea);\n        }\n      }];\n    }\n    return [{\n      z: gz,\n      draw: (chartArea) => {\n        this.drawBackground();\n        this.drawGrid(chartArea);\n        this.drawTitle();\n      }\n    }, {\n      z: gz + 1,\n      draw: () => {\n        this.drawBorder();\n      }\n    }, {\n      z: tz,\n      draw: (chartArea) => {\n        this.drawLabels(chartArea);\n      }\n    }];\n  }\n  getMatchingVisibleMetas(type) {\n    const metas = this.chart.getSortedVisibleDatasetMetas();\n    const axisID = this.axis + 'AxisID';\n    const result = [];\n    let i, ilen;\n    for (i = 0, ilen = metas.length; i < ilen; ++i) {\n      const meta = metas[i];\n      if (meta[axisID] === this.id && (!type || meta.type === type)) {\n        result.push(meta);\n      }\n    }\n    return result;\n  }\n  _resolveTickFontOptions(index) {\n    const opts = this.options.ticks.setContext(this.getContext(index));\n    return toFont(opts.font);\n  }\n  _maxDigits() {\n    const fontSize = this._resolveTickFontOptions(0).lineHeight;\n    return (this.isHorizontal() ? this.width : this.height) / fontSize;\n  }\n}\n\nclass TypedRegistry {\n  constructor(type, scope, override) {\n    this.type = type;\n    this.scope = scope;\n    this.override = override;\n    this.items = Object.create(null);\n  }\n  isForType(type) {\n    return Object.prototype.isPrototypeOf.call(this.type.prototype, type.prototype);\n  }\n  register(item) {\n    const proto = Object.getPrototypeOf(item);\n    let parentScope;\n    if (isIChartComponent(proto)) {\n      parentScope = this.register(proto);\n    }\n    const items = this.items;\n    const id = item.id;\n    const scope = this.scope + '.' + id;\n    if (!id) {\n      throw new Error('class does not have id: ' + item);\n    }\n    if (id in items) {\n      return scope;\n    }\n    items[id] = item;\n    registerDefaults(item, scope, parentScope);\n    if (this.override) {\n      defaults.override(item.id, item.overrides);\n    }\n    return scope;\n  }\n  get(id) {\n    return this.items[id];\n  }\n  unregister(item) {\n    const items = this.items;\n    const id = item.id;\n    const scope = this.scope;\n    if (id in items) {\n      delete items[id];\n    }\n    if (scope && id in defaults[scope]) {\n      delete defaults[scope][id];\n      if (this.override) {\n        delete overrides[id];\n      }\n    }\n  }\n}\nfunction registerDefaults(item, scope, parentScope) {\n  const itemDefaults = merge(Object.create(null), [\n    parentScope ? defaults.get(parentScope) : {},\n    defaults.get(scope),\n    item.defaults\n  ]);\n  defaults.set(scope, itemDefaults);\n  if (item.defaultRoutes) {\n    routeDefaults(scope, item.defaultRoutes);\n  }\n  if (item.descriptors) {\n    defaults.describe(scope, item.descriptors);\n  }\n}\nfunction routeDefaults(scope, routes) {\n  Object.keys(routes).forEach(property => {\n    const propertyParts = property.split('.');\n    const sourceName = propertyParts.pop();\n    const sourceScope = [scope].concat(propertyParts).join('.');\n    const parts = routes[property].split('.');\n    const targetName = parts.pop();\n    const targetScope = parts.join('.');\n    defaults.route(sourceScope, sourceName, targetScope, targetName);\n  });\n}\nfunction isIChartComponent(proto) {\n  return 'id' in proto && 'defaults' in proto;\n}\n\nclass Registry {\n  constructor() {\n    this.controllers = new TypedRegistry(DatasetController, 'datasets', true);\n    this.elements = new TypedRegistry(Element, 'elements');\n    this.plugins = new TypedRegistry(Object, 'plugins');\n    this.scales = new TypedRegistry(Scale, 'scales');\n    this._typedRegistries = [this.controllers, this.scales, this.elements];\n  }\n  add(...args) {\n    this._each('register', args);\n  }\n  remove(...args) {\n    this._each('unregister', args);\n  }\n  addControllers(...args) {\n    this._each('register', args, this.controllers);\n  }\n  addElements(...args) {\n    this._each('register', args, this.elements);\n  }\n  addPlugins(...args) {\n    this._each('register', args, this.plugins);\n  }\n  addScales(...args) {\n    this._each('register', args, this.scales);\n  }\n  getController(id) {\n    return this._get(id, this.controllers, 'controller');\n  }\n  getElement(id) {\n    return this._get(id, this.elements, 'element');\n  }\n  getPlugin(id) {\n    return this._get(id, this.plugins, 'plugin');\n  }\n  getScale(id) {\n    return this._get(id, this.scales, 'scale');\n  }\n  removeControllers(...args) {\n    this._each('unregister', args, this.controllers);\n  }\n  removeElements(...args) {\n    this._each('unregister', args, this.elements);\n  }\n  removePlugins(...args) {\n    this._each('unregister', args, this.plugins);\n  }\n  removeScales(...args) {\n    this._each('unregister', args, this.scales);\n  }\n  _each(method, args, typedRegistry) {\n    [...args].forEach(arg => {\n      const reg = typedRegistry || this._getRegistryForType(arg);\n      if (typedRegistry || reg.isForType(arg) || (reg === this.plugins && arg.id)) {\n        this._exec(method, reg, arg);\n      } else {\n        each(arg, item => {\n          const itemReg = typedRegistry || this._getRegistryForType(item);\n          this._exec(method, itemReg, item);\n        });\n      }\n    });\n  }\n  _exec(method, registry, component) {\n    const camelMethod = _capitalize(method);\n    callback(component['before' + camelMethod], [], component);\n    registry[method](component);\n    callback(component['after' + camelMethod], [], component);\n  }\n  _getRegistryForType(type) {\n    for (let i = 0; i < this._typedRegistries.length; i++) {\n      const reg = this._typedRegistries[i];\n      if (reg.isForType(type)) {\n        return reg;\n      }\n    }\n    return this.plugins;\n  }\n  _get(id, typedRegistry, type) {\n    const item = typedRegistry.get(id);\n    if (item === undefined) {\n      throw new Error('\"' + id + '\" is not a registered ' + type + '.');\n    }\n    return item;\n  }\n}\nvar registry = new Registry();\n\nclass ScatterController extends DatasetController {\n  update(mode) {\n    const meta = this._cachedMeta;\n    const {data: points = []} = meta;\n    const animationsDisabled = this.chart._animationsDisabled;\n    let {start, count} = _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled);\n    this._drawStart = start;\n    this._drawCount = count;\n    if (_scaleRangesChanged(meta)) {\n      start = 0;\n      count = points.length;\n    }\n    if (this.options.showLine) {\n      const {dataset: line, _dataset} = meta;\n      line._chart = this.chart;\n      line._datasetIndex = this.index;\n      line._decimated = !!_dataset._decimated;\n      line.points = points;\n      const options = this.resolveDatasetElementOptions(mode);\n      options.segment = this.options.segment;\n      this.updateElement(line, undefined, {\n        animated: !animationsDisabled,\n        options\n      }, mode);\n    }\n    this.updateElements(points, start, count, mode);\n  }\n  addElements() {\n    const {showLine} = this.options;\n    if (!this.datasetElementType && showLine) {\n      this.datasetElementType = registry.getElement('line');\n    }\n    super.addElements();\n  }\n  updateElements(points, start, count, mode) {\n    const reset = mode === 'reset';\n    const {iScale, vScale, _stacked, _dataset} = this._cachedMeta;\n    const firstOpts = this.resolveDataElementOptions(start, mode);\n    const sharedOptions = this.getSharedOptions(firstOpts);\n    const includeOptions = this.includeOptions(mode, sharedOptions);\n    const iAxis = iScale.axis;\n    const vAxis = vScale.axis;\n    const {spanGaps, segment} = this.options;\n    const maxGapLength = isNumber(spanGaps) ? spanGaps : Number.POSITIVE_INFINITY;\n    const directUpdate = this.chart._animationsDisabled || reset || mode === 'none';\n    let prevParsed = start > 0 && this.getParsed(start - 1);\n    for (let i = start; i < start + count; ++i) {\n      const point = points[i];\n      const parsed = this.getParsed(i);\n      const properties = directUpdate ? point : {};\n      const nullData = isNullOrUndef(parsed[vAxis]);\n      const iPixel = properties[iAxis] = iScale.getPixelForValue(parsed[iAxis], i);\n      const vPixel = properties[vAxis] = reset || nullData ? vScale.getBasePixel() : vScale.getPixelForValue(_stacked ? this.applyStack(vScale, parsed, _stacked) : parsed[vAxis], i);\n      properties.skip = isNaN(iPixel) || isNaN(vPixel) || nullData;\n      properties.stop = i > 0 && (Math.abs(parsed[iAxis] - prevParsed[iAxis])) > maxGapLength;\n      if (segment) {\n        properties.parsed = parsed;\n        properties.raw = _dataset.data[i];\n      }\n      if (includeOptions) {\n        properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n      }\n      if (!directUpdate) {\n        this.updateElement(point, i, properties, mode);\n      }\n      prevParsed = parsed;\n    }\n    this.updateSharedOptions(sharedOptions, mode, firstOpts);\n  }\n  getMaxOverflow() {\n    const meta = this._cachedMeta;\n    const data = meta.data || [];\n    if (!this.options.showLine) {\n      let max = 0;\n      for (let i = data.length - 1; i >= 0; --i) {\n        max = Math.max(max, data[i].size(this.resolveDataElementOptions(i)) / 2);\n      }\n      return max > 0 && max;\n    }\n    const dataset = meta.dataset;\n    const border = dataset.options && dataset.options.borderWidth || 0;\n    if (!data.length) {\n      return border;\n    }\n    const firstPoint = data[0].size(this.resolveDataElementOptions(0));\n    const lastPoint = data[data.length - 1].size(this.resolveDataElementOptions(data.length - 1));\n    return Math.max(border, firstPoint, lastPoint) / 2;\n  }\n}\nScatterController.id = 'scatter';\nScatterController.defaults = {\n  datasetElementType: false,\n  dataElementType: 'point',\n  showLine: false,\n  fill: false\n};\nScatterController.overrides = {\n  interaction: {\n    mode: 'point'\n  },\n  plugins: {\n    tooltip: {\n      callbacks: {\n        title() {\n          return '';\n        },\n        label(item) {\n          return '(' + item.label + ', ' + item.formattedValue + ')';\n        }\n      }\n    }\n  },\n  scales: {\n    x: {\n      type: 'linear'\n    },\n    y: {\n      type: 'linear'\n    }\n  }\n};\n\nvar controllers = /*#__PURE__*/Object.freeze({\n__proto__: null,\nBarController: BarController,\nBubbleController: BubbleController,\nDoughnutController: DoughnutController,\nLineController: LineController,\nPolarAreaController: PolarAreaController,\nPieController: PieController,\nRadarController: RadarController,\nScatterController: ScatterController\n});\n\nfunction abstract() {\n  throw new Error('This method is not implemented: Check that a complete date adapter is provided.');\n}\nclass DateAdapter {\n  constructor(options) {\n    this.options = options || {};\n  }\n  init(chartOptions) {}\n  formats() {\n    return abstract();\n  }\n  parse(value, format) {\n    return abstract();\n  }\n  format(timestamp, format) {\n    return abstract();\n  }\n  add(timestamp, amount, unit) {\n    return abstract();\n  }\n  diff(a, b, unit) {\n    return abstract();\n  }\n  startOf(timestamp, unit, weekday) {\n    return abstract();\n  }\n  endOf(timestamp, unit) {\n    return abstract();\n  }\n}\nDateAdapter.override = function(members) {\n  Object.assign(DateAdapter.prototype, members);\n};\nvar adapters = {\n  _date: DateAdapter\n};\n\nfunction binarySearch(metaset, axis, value, intersect) {\n  const {controller, data, _sorted} = metaset;\n  const iScale = controller._cachedMeta.iScale;\n  if (iScale && axis === iScale.axis && axis !== 'r' && _sorted && data.length) {\n    const lookupMethod = iScale._reversePixels ? _rlookupByKey : _lookupByKey;\n    if (!intersect) {\n      return lookupMethod(data, axis, value);\n    } else if (controller._sharedOptions) {\n      const el = data[0];\n      const range = typeof el.getRange === 'function' && el.getRange(axis);\n      if (range) {\n        const start = lookupMethod(data, axis, value - range);\n        const end = lookupMethod(data, axis, value + range);\n        return {lo: start.lo, hi: end.hi};\n      }\n    }\n  }\n  return {lo: 0, hi: data.length - 1};\n}\nfunction evaluateInteractionItems(chart, axis, position, handler, intersect) {\n  const metasets = chart.getSortedVisibleDatasetMetas();\n  const value = position[axis];\n  for (let i = 0, ilen = metasets.length; i < ilen; ++i) {\n    const {index, data} = metasets[i];\n    const {lo, hi} = binarySearch(metasets[i], axis, value, intersect);\n    for (let j = lo; j <= hi; ++j) {\n      const element = data[j];\n      if (!element.skip) {\n        handler(element, index, j);\n      }\n    }\n  }\n}\nfunction getDistanceMetricForAxis(axis) {\n  const useX = axis.indexOf('x') !== -1;\n  const useY = axis.indexOf('y') !== -1;\n  return function(pt1, pt2) {\n    const deltaX = useX ? Math.abs(pt1.x - pt2.x) : 0;\n    const deltaY = useY ? Math.abs(pt1.y - pt2.y) : 0;\n    return Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2));\n  };\n}\nfunction getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) {\n  const items = [];\n  if (!includeInvisible && !chart.isPointInArea(position)) {\n    return items;\n  }\n  const evaluationFunc = function(element, datasetIndex, index) {\n    if (!includeInvisible && !_isPointInArea(element, chart.chartArea, 0)) {\n      return;\n    }\n    if (element.inRange(position.x, position.y, useFinalPosition)) {\n      items.push({element, datasetIndex, index});\n    }\n  };\n  evaluateInteractionItems(chart, axis, position, evaluationFunc, true);\n  return items;\n}\nfunction getNearestRadialItems(chart, position, axis, useFinalPosition) {\n  let items = [];\n  function evaluationFunc(element, datasetIndex, index) {\n    const {startAngle, endAngle} = element.getProps(['startAngle', 'endAngle'], useFinalPosition);\n    const {angle} = getAngleFromPoint(element, {x: position.x, y: position.y});\n    if (_angleBetween(angle, startAngle, endAngle)) {\n      items.push({element, datasetIndex, index});\n    }\n  }\n  evaluateInteractionItems(chart, axis, position, evaluationFunc);\n  return items;\n}\nfunction getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition, includeInvisible) {\n  let items = [];\n  const distanceMetric = getDistanceMetricForAxis(axis);\n  let minDistance = Number.POSITIVE_INFINITY;\n  function evaluationFunc(element, datasetIndex, index) {\n    const inRange = element.inRange(position.x, position.y, useFinalPosition);\n    if (intersect && !inRange) {\n      return;\n    }\n    const center = element.getCenterPoint(useFinalPosition);\n    const pointInArea = !!includeInvisible || chart.isPointInArea(center);\n    if (!pointInArea && !inRange) {\n      return;\n    }\n    const distance = distanceMetric(position, center);\n    if (distance < minDistance) {\n      items = [{element, datasetIndex, index}];\n      minDistance = distance;\n    } else if (distance === minDistance) {\n      items.push({element, datasetIndex, index});\n    }\n  }\n  evaluateInteractionItems(chart, axis, position, evaluationFunc);\n  return items;\n}\nfunction getNearestItems(chart, position, axis, intersect, useFinalPosition, includeInvisible) {\n  if (!includeInvisible && !chart.isPointInArea(position)) {\n    return [];\n  }\n  return axis === 'r' && !intersect\n    ? getNearestRadialItems(chart, position, axis, useFinalPosition)\n    : getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition, includeInvisible);\n}\nfunction getAxisItems(chart, position, axis, intersect, useFinalPosition) {\n  const items = [];\n  const rangeMethod = axis === 'x' ? 'inXRange' : 'inYRange';\n  let intersectsItem = false;\n  evaluateInteractionItems(chart, axis, position, (element, datasetIndex, index) => {\n    if (element[rangeMethod](position[axis], useFinalPosition)) {\n      items.push({element, datasetIndex, index});\n      intersectsItem = intersectsItem || element.inRange(position.x, position.y, useFinalPosition);\n    }\n  });\n  if (intersect && !intersectsItem) {\n    return [];\n  }\n  return items;\n}\nvar Interaction = {\n  evaluateInteractionItems,\n  modes: {\n    index(chart, e, options, useFinalPosition) {\n      const position = getRelativePosition(e, chart);\n      const axis = options.axis || 'x';\n      const includeInvisible = options.includeInvisible || false;\n      const items = options.intersect\n        ? getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible)\n        : getNearestItems(chart, position, axis, false, useFinalPosition, includeInvisible);\n      const elements = [];\n      if (!items.length) {\n        return [];\n      }\n      chart.getSortedVisibleDatasetMetas().forEach((meta) => {\n        const index = items[0].index;\n        const element = meta.data[index];\n        if (element && !element.skip) {\n          elements.push({element, datasetIndex: meta.index, index});\n        }\n      });\n      return elements;\n    },\n    dataset(chart, e, options, useFinalPosition) {\n      const position = getRelativePosition(e, chart);\n      const axis = options.axis || 'xy';\n      const includeInvisible = options.includeInvisible || false;\n      let items = options.intersect\n        ? getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) :\n        getNearestItems(chart, position, axis, false, useFinalPosition, includeInvisible);\n      if (items.length > 0) {\n        const datasetIndex = items[0].datasetIndex;\n        const data = chart.getDatasetMeta(datasetIndex).data;\n        items = [];\n        for (let i = 0; i < data.length; ++i) {\n          items.push({element: data[i], datasetIndex, index: i});\n        }\n      }\n      return items;\n    },\n    point(chart, e, options, useFinalPosition) {\n      const position = getRelativePosition(e, chart);\n      const axis = options.axis || 'xy';\n      const includeInvisible = options.includeInvisible || false;\n      return getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible);\n    },\n    nearest(chart, e, options, useFinalPosition) {\n      const position = getRelativePosition(e, chart);\n      const axis = options.axis || 'xy';\n      const includeInvisible = options.includeInvisible || false;\n      return getNearestItems(chart, position, axis, options.intersect, useFinalPosition, includeInvisible);\n    },\n    x(chart, e, options, useFinalPosition) {\n      const position = getRelativePosition(e, chart);\n      return getAxisItems(chart, position, 'x', options.intersect, useFinalPosition);\n    },\n    y(chart, e, options, useFinalPosition) {\n      const position = getRelativePosition(e, chart);\n      return getAxisItems(chart, position, 'y', options.intersect, useFinalPosition);\n    }\n  }\n};\n\nconst STATIC_POSITIONS = ['left', 'top', 'right', 'bottom'];\nfunction filterByPosition(array, position) {\n  return array.filter(v => v.pos === position);\n}\nfunction filterDynamicPositionByAxis(array, axis) {\n  return array.filter(v => STATIC_POSITIONS.indexOf(v.pos) === -1 && v.box.axis === axis);\n}\nfunction sortByWeight(array, reverse) {\n  return array.sort((a, b) => {\n    const v0 = reverse ? b : a;\n    const v1 = reverse ? a : b;\n    return v0.weight === v1.weight ?\n      v0.index - v1.index :\n      v0.weight - v1.weight;\n  });\n}\nfunction wrapBoxes(boxes) {\n  const layoutBoxes = [];\n  let i, ilen, box, pos, stack, stackWeight;\n  for (i = 0, ilen = (boxes || []).length; i < ilen; ++i) {\n    box = boxes[i];\n    ({position: pos, options: {stack, stackWeight = 1}} = box);\n    layoutBoxes.push({\n      index: i,\n      box,\n      pos,\n      horizontal: box.isHorizontal(),\n      weight: box.weight,\n      stack: stack && (pos + stack),\n      stackWeight\n    });\n  }\n  return layoutBoxes;\n}\nfunction buildStacks(layouts) {\n  const stacks = {};\n  for (const wrap of layouts) {\n    const {stack, pos, stackWeight} = wrap;\n    if (!stack || !STATIC_POSITIONS.includes(pos)) {\n      continue;\n    }\n    const _stack = stacks[stack] || (stacks[stack] = {count: 0, placed: 0, weight: 0, size: 0});\n    _stack.count++;\n    _stack.weight += stackWeight;\n  }\n  return stacks;\n}\nfunction setLayoutDims(layouts, params) {\n  const stacks = buildStacks(layouts);\n  const {vBoxMaxWidth, hBoxMaxHeight} = params;\n  let i, ilen, layout;\n  for (i = 0, ilen = layouts.length; i < ilen; ++i) {\n    layout = layouts[i];\n    const {fullSize} = layout.box;\n    const stack = stacks[layout.stack];\n    const factor = stack && layout.stackWeight / stack.weight;\n    if (layout.horizontal) {\n      layout.width = factor ? factor * vBoxMaxWidth : fullSize && params.availableWidth;\n      layout.height = hBoxMaxHeight;\n    } else {\n      layout.width = vBoxMaxWidth;\n      layout.height = factor ? factor * hBoxMaxHeight : fullSize && params.availableHeight;\n    }\n  }\n  return stacks;\n}\nfunction buildLayoutBoxes(boxes) {\n  const layoutBoxes = wrapBoxes(boxes);\n  const fullSize = sortByWeight(layoutBoxes.filter(wrap => wrap.box.fullSize), true);\n  const left = sortByWeight(filterByPosition(layoutBoxes, 'left'), true);\n  const right = sortByWeight(filterByPosition(layoutBoxes, 'right'));\n  const top = sortByWeight(filterByPosition(layoutBoxes, 'top'), true);\n  const bottom = sortByWeight(filterByPosition(layoutBoxes, 'bottom'));\n  const centerHorizontal = filterDynamicPositionByAxis(layoutBoxes, 'x');\n  const centerVertical = filterDynamicPositionByAxis(layoutBoxes, 'y');\n  return {\n    fullSize,\n    leftAndTop: left.concat(top),\n    rightAndBottom: right.concat(centerVertical).concat(bottom).concat(centerHorizontal),\n    chartArea: filterByPosition(layoutBoxes, 'chartArea'),\n    vertical: left.concat(right).concat(centerVertical),\n    horizontal: top.concat(bottom).concat(centerHorizontal)\n  };\n}\nfunction getCombinedMax(maxPadding, chartArea, a, b) {\n  return Math.max(maxPadding[a], chartArea[a]) + Math.max(maxPadding[b], chartArea[b]);\n}\nfunction updateMaxPadding(maxPadding, boxPadding) {\n  maxPadding.top = Math.max(maxPadding.top, boxPadding.top);\n  maxPadding.left = Math.max(maxPadding.left, boxPadding.left);\n  maxPadding.bottom = Math.max(maxPadding.bottom, boxPadding.bottom);\n  maxPadding.right = Math.max(maxPadding.right, boxPadding.right);\n}\nfunction updateDims(chartArea, params, layout, stacks) {\n  const {pos, box} = layout;\n  const maxPadding = chartArea.maxPadding;\n  if (!isObject(pos)) {\n    if (layout.size) {\n      chartArea[pos] -= layout.size;\n    }\n    const stack = stacks[layout.stack] || {size: 0, count: 1};\n    stack.size = Math.max(stack.size, layout.horizontal ? box.height : box.width);\n    layout.size = stack.size / stack.count;\n    chartArea[pos] += layout.size;\n  }\n  if (box.getPadding) {\n    updateMaxPadding(maxPadding, box.getPadding());\n  }\n  const newWidth = Math.max(0, params.outerWidth - getCombinedMax(maxPadding, chartArea, 'left', 'right'));\n  const newHeight = Math.max(0, params.outerHeight - getCombinedMax(maxPadding, chartArea, 'top', 'bottom'));\n  const widthChanged = newWidth !== chartArea.w;\n  const heightChanged = newHeight !== chartArea.h;\n  chartArea.w = newWidth;\n  chartArea.h = newHeight;\n  return layout.horizontal\n    ? {same: widthChanged, other: heightChanged}\n    : {same: heightChanged, other: widthChanged};\n}\nfunction handleMaxPadding(chartArea) {\n  const maxPadding = chartArea.maxPadding;\n  function updatePos(pos) {\n    const change = Math.max(maxPadding[pos] - chartArea[pos], 0);\n    chartArea[pos] += change;\n    return change;\n  }\n  chartArea.y += updatePos('top');\n  chartArea.x += updatePos('left');\n  updatePos('right');\n  updatePos('bottom');\n}\nfunction getMargins(horizontal, chartArea) {\n  const maxPadding = chartArea.maxPadding;\n  function marginForPositions(positions) {\n    const margin = {left: 0, top: 0, right: 0, bottom: 0};\n    positions.forEach((pos) => {\n      margin[pos] = Math.max(chartArea[pos], maxPadding[pos]);\n    });\n    return margin;\n  }\n  return horizontal\n    ? marginForPositions(['left', 'right'])\n    : marginForPositions(['top', 'bottom']);\n}\nfunction fitBoxes(boxes, chartArea, params, stacks) {\n  const refitBoxes = [];\n  let i, ilen, layout, box, refit, changed;\n  for (i = 0, ilen = boxes.length, refit = 0; i < ilen; ++i) {\n    layout = boxes[i];\n    box = layout.box;\n    box.update(\n      layout.width || chartArea.w,\n      layout.height || chartArea.h,\n      getMargins(layout.horizontal, chartArea)\n    );\n    const {same, other} = updateDims(chartArea, params, layout, stacks);\n    refit |= same && refitBoxes.length;\n    changed = changed || other;\n    if (!box.fullSize) {\n      refitBoxes.push(layout);\n    }\n  }\n  return refit && fitBoxes(refitBoxes, chartArea, params, stacks) || changed;\n}\nfunction setBoxDims(box, left, top, width, height) {\n  box.top = top;\n  box.left = left;\n  box.right = left + width;\n  box.bottom = top + height;\n  box.width = width;\n  box.height = height;\n}\nfunction placeBoxes(boxes, chartArea, params, stacks) {\n  const userPadding = params.padding;\n  let {x, y} = chartArea;\n  for (const layout of boxes) {\n    const box = layout.box;\n    const stack = stacks[layout.stack] || {count: 1, placed: 0, weight: 1};\n    const weight = (layout.stackWeight / stack.weight) || 1;\n    if (layout.horizontal) {\n      const width = chartArea.w * weight;\n      const height = stack.size || box.height;\n      if (defined(stack.start)) {\n        y = stack.start;\n      }\n      if (box.fullSize) {\n        setBoxDims(box, userPadding.left, y, params.outerWidth - userPadding.right - userPadding.left, height);\n      } else {\n        setBoxDims(box, chartArea.left + stack.placed, y, width, height);\n      }\n      stack.start = y;\n      stack.placed += width;\n      y = box.bottom;\n    } else {\n      const height = chartArea.h * weight;\n      const width = stack.size || box.width;\n      if (defined(stack.start)) {\n        x = stack.start;\n      }\n      if (box.fullSize) {\n        setBoxDims(box, x, userPadding.top, width, params.outerHeight - userPadding.bottom - userPadding.top);\n      } else {\n        setBoxDims(box, x, chartArea.top + stack.placed, width, height);\n      }\n      stack.start = x;\n      stack.placed += height;\n      x = box.right;\n    }\n  }\n  chartArea.x = x;\n  chartArea.y = y;\n}\ndefaults.set('layout', {\n  autoPadding: true,\n  padding: {\n    top: 0,\n    right: 0,\n    bottom: 0,\n    left: 0\n  }\n});\nvar layouts = {\n  addBox(chart, item) {\n    if (!chart.boxes) {\n      chart.boxes = [];\n    }\n    item.fullSize = item.fullSize || false;\n    item.position = item.position || 'top';\n    item.weight = item.weight || 0;\n    item._layers = item._layers || function() {\n      return [{\n        z: 0,\n        draw(chartArea) {\n          item.draw(chartArea);\n        }\n      }];\n    };\n    chart.boxes.push(item);\n  },\n  removeBox(chart, layoutItem) {\n    const index = chart.boxes ? chart.boxes.indexOf(layoutItem) : -1;\n    if (index !== -1) {\n      chart.boxes.splice(index, 1);\n    }\n  },\n  configure(chart, item, options) {\n    item.fullSize = options.fullSize;\n    item.position = options.position;\n    item.weight = options.weight;\n  },\n  update(chart, width, height, minPadding) {\n    if (!chart) {\n      return;\n    }\n    const padding = toPadding(chart.options.layout.padding);\n    const availableWidth = Math.max(width - padding.width, 0);\n    const availableHeight = Math.max(height - padding.height, 0);\n    const boxes = buildLayoutBoxes(chart.boxes);\n    const verticalBoxes = boxes.vertical;\n    const horizontalBoxes = boxes.horizontal;\n    each(chart.boxes, box => {\n      if (typeof box.beforeLayout === 'function') {\n        box.beforeLayout();\n      }\n    });\n    const visibleVerticalBoxCount = verticalBoxes.reduce((total, wrap) =>\n      wrap.box.options && wrap.box.options.display === false ? total : total + 1, 0) || 1;\n    const params = Object.freeze({\n      outerWidth: width,\n      outerHeight: height,\n      padding,\n      availableWidth,\n      availableHeight,\n      vBoxMaxWidth: availableWidth / 2 / visibleVerticalBoxCount,\n      hBoxMaxHeight: availableHeight / 2\n    });\n    const maxPadding = Object.assign({}, padding);\n    updateMaxPadding(maxPadding, toPadding(minPadding));\n    const chartArea = Object.assign({\n      maxPadding,\n      w: availableWidth,\n      h: availableHeight,\n      x: padding.left,\n      y: padding.top\n    }, padding);\n    const stacks = setLayoutDims(verticalBoxes.concat(horizontalBoxes), params);\n    fitBoxes(boxes.fullSize, chartArea, params, stacks);\n    fitBoxes(verticalBoxes, chartArea, params, stacks);\n    if (fitBoxes(horizontalBoxes, chartArea, params, stacks)) {\n      fitBoxes(verticalBoxes, chartArea, params, stacks);\n    }\n    handleMaxPadding(chartArea);\n    placeBoxes(boxes.leftAndTop, chartArea, params, stacks);\n    chartArea.x += chartArea.w;\n    chartArea.y += chartArea.h;\n    placeBoxes(boxes.rightAndBottom, chartArea, params, stacks);\n    chart.chartArea = {\n      left: chartArea.left,\n      top: chartArea.top,\n      right: chartArea.left + chartArea.w,\n      bottom: chartArea.top + chartArea.h,\n      height: chartArea.h,\n      width: chartArea.w,\n    };\n    each(boxes.chartArea, (layout) => {\n      const box = layout.box;\n      Object.assign(box, chart.chartArea);\n      box.update(chartArea.w, chartArea.h, {left: 0, top: 0, right: 0, bottom: 0});\n    });\n  }\n};\n\nclass BasePlatform {\n  acquireContext(canvas, aspectRatio) {}\n  releaseContext(context) {\n    return false;\n  }\n  addEventListener(chart, type, listener) {}\n  removeEventListener(chart, type, listener) {}\n  getDevicePixelRatio() {\n    return 1;\n  }\n  getMaximumSize(element, width, height, aspectRatio) {\n    width = Math.max(0, width || element.width);\n    height = height || element.height;\n    return {\n      width,\n      height: Math.max(0, aspectRatio ? Math.floor(width / aspectRatio) : height)\n    };\n  }\n  isAttached(canvas) {\n    return true;\n  }\n  updateConfig(config) {\n  }\n}\n\nclass BasicPlatform extends BasePlatform {\n  acquireContext(item) {\n    return item && item.getContext && item.getContext('2d') || null;\n  }\n  updateConfig(config) {\n    config.options.animation = false;\n  }\n}\n\nconst EXPANDO_KEY = '$chartjs';\nconst EVENT_TYPES = {\n  touchstart: 'mousedown',\n  touchmove: 'mousemove',\n  touchend: 'mouseup',\n  pointerenter: 'mouseenter',\n  pointerdown: 'mousedown',\n  pointermove: 'mousemove',\n  pointerup: 'mouseup',\n  pointerleave: 'mouseout',\n  pointerout: 'mouseout'\n};\nconst isNullOrEmpty = value => value === null || value === '';\nfunction initCanvas(canvas, aspectRatio) {\n  const style = canvas.style;\n  const renderHeight = canvas.getAttribute('height');\n  const renderWidth = canvas.getAttribute('width');\n  canvas[EXPANDO_KEY] = {\n    initial: {\n      height: renderHeight,\n      width: renderWidth,\n      style: {\n        display: style.display,\n        height: style.height,\n        width: style.width\n      }\n    }\n  };\n  style.display = style.display || 'block';\n  style.boxSizing = style.boxSizing || 'border-box';\n  if (isNullOrEmpty(renderWidth)) {\n    const displayWidth = readUsedSize(canvas, 'width');\n    if (displayWidth !== undefined) {\n      canvas.width = displayWidth;\n    }\n  }\n  if (isNullOrEmpty(renderHeight)) {\n    if (canvas.style.height === '') {\n      canvas.height = canvas.width / (aspectRatio || 2);\n    } else {\n      const displayHeight = readUsedSize(canvas, 'height');\n      if (displayHeight !== undefined) {\n        canvas.height = displayHeight;\n      }\n    }\n  }\n  return canvas;\n}\nconst eventListenerOptions = supportsEventListenerOptions ? {passive: true} : false;\nfunction addListener(node, type, listener) {\n  node.addEventListener(type, listener, eventListenerOptions);\n}\nfunction removeListener(chart, type, listener) {\n  chart.canvas.removeEventListener(type, listener, eventListenerOptions);\n}\nfunction fromNativeEvent(event, chart) {\n  const type = EVENT_TYPES[event.type] || event.type;\n  const {x, y} = getRelativePosition(event, chart);\n  return {\n    type,\n    chart,\n    native: event,\n    x: x !== undefined ? x : null,\n    y: y !== undefined ? y : null,\n  };\n}\nfunction nodeListContains(nodeList, canvas) {\n  for (const node of nodeList) {\n    if (node === canvas || node.contains(canvas)) {\n      return true;\n    }\n  }\n}\nfunction createAttachObserver(chart, type, listener) {\n  const canvas = chart.canvas;\n  const observer = new MutationObserver(entries => {\n    let trigger = false;\n    for (const entry of entries) {\n      trigger = trigger || nodeListContains(entry.addedNodes, canvas);\n      trigger = trigger && !nodeListContains(entry.removedNodes, canvas);\n    }\n    if (trigger) {\n      listener();\n    }\n  });\n  observer.observe(document, {childList: true, subtree: true});\n  return observer;\n}\nfunction createDetachObserver(chart, type, listener) {\n  const canvas = chart.canvas;\n  const observer = new MutationObserver(entries => {\n    let trigger = false;\n    for (const entry of entries) {\n      trigger = trigger || nodeListContains(entry.removedNodes, canvas);\n      trigger = trigger && !nodeListContains(entry.addedNodes, canvas);\n    }\n    if (trigger) {\n      listener();\n    }\n  });\n  observer.observe(document, {childList: true, subtree: true});\n  return observer;\n}\nconst drpListeningCharts = new Map();\nlet oldDevicePixelRatio = 0;\nfunction onWindowResize() {\n  const dpr = window.devicePixelRatio;\n  if (dpr === oldDevicePixelRatio) {\n    return;\n  }\n  oldDevicePixelRatio = dpr;\n  drpListeningCharts.forEach((resize, chart) => {\n    if (chart.currentDevicePixelRatio !== dpr) {\n      resize();\n    }\n  });\n}\nfunction listenDevicePixelRatioChanges(chart, resize) {\n  if (!drpListeningCharts.size) {\n    window.addEventListener('resize', onWindowResize);\n  }\n  drpListeningCharts.set(chart, resize);\n}\nfunction unlistenDevicePixelRatioChanges(chart) {\n  drpListeningCharts.delete(chart);\n  if (!drpListeningCharts.size) {\n    window.removeEventListener('resize', onWindowResize);\n  }\n}\nfunction createResizeObserver(chart, type, listener) {\n  const canvas = chart.canvas;\n  const container = canvas && _getParentNode(canvas);\n  if (!container) {\n    return;\n  }\n  const resize = throttled((width, height) => {\n    const w = container.clientWidth;\n    listener(width, height);\n    if (w < container.clientWidth) {\n      listener();\n    }\n  }, window);\n  const observer = new ResizeObserver(entries => {\n    const entry = entries[0];\n    const width = entry.contentRect.width;\n    const height = entry.contentRect.height;\n    if (width === 0 && height === 0) {\n      return;\n    }\n    resize(width, height);\n  });\n  observer.observe(container);\n  listenDevicePixelRatioChanges(chart, resize);\n  return observer;\n}\nfunction releaseObserver(chart, type, observer) {\n  if (observer) {\n    observer.disconnect();\n  }\n  if (type === 'resize') {\n    unlistenDevicePixelRatioChanges(chart);\n  }\n}\nfunction createProxyAndListen(chart, type, listener) {\n  const canvas = chart.canvas;\n  const proxy = throttled((event) => {\n    if (chart.ctx !== null) {\n      listener(fromNativeEvent(event, chart));\n    }\n  }, chart, (args) => {\n    const event = args[0];\n    return [event, event.offsetX, event.offsetY];\n  });\n  addListener(canvas, type, proxy);\n  return proxy;\n}\nclass DomPlatform extends BasePlatform {\n  acquireContext(canvas, aspectRatio) {\n    const context = canvas && canvas.getContext && canvas.getContext('2d');\n    if (context && context.canvas === canvas) {\n      initCanvas(canvas, aspectRatio);\n      return context;\n    }\n    return null;\n  }\n  releaseContext(context) {\n    const canvas = context.canvas;\n    if (!canvas[EXPANDO_KEY]) {\n      return false;\n    }\n    const initial = canvas[EXPANDO_KEY].initial;\n    ['height', 'width'].forEach((prop) => {\n      const value = initial[prop];\n      if (isNullOrUndef(value)) {\n        canvas.removeAttribute(prop);\n      } else {\n        canvas.setAttribute(prop, value);\n      }\n    });\n    const style = initial.style || {};\n    Object.keys(style).forEach((key) => {\n      canvas.style[key] = style[key];\n    });\n    canvas.width = canvas.width;\n    delete canvas[EXPANDO_KEY];\n    return true;\n  }\n  addEventListener(chart, type, listener) {\n    this.removeEventListener(chart, type);\n    const proxies = chart.$proxies || (chart.$proxies = {});\n    const handlers = {\n      attach: createAttachObserver,\n      detach: createDetachObserver,\n      resize: createResizeObserver\n    };\n    const handler = handlers[type] || createProxyAndListen;\n    proxies[type] = handler(chart, type, listener);\n  }\n  removeEventListener(chart, type) {\n    const proxies = chart.$proxies || (chart.$proxies = {});\n    const proxy = proxies[type];\n    if (!proxy) {\n      return;\n    }\n    const handlers = {\n      attach: releaseObserver,\n      detach: releaseObserver,\n      resize: releaseObserver\n    };\n    const handler = handlers[type] || removeListener;\n    handler(chart, type, proxy);\n    proxies[type] = undefined;\n  }\n  getDevicePixelRatio() {\n    return window.devicePixelRatio;\n  }\n  getMaximumSize(canvas, width, height, aspectRatio) {\n    return getMaximumSize(canvas, width, height, aspectRatio);\n  }\n  isAttached(canvas) {\n    const container = _getParentNode(canvas);\n    return !!(container && container.isConnected);\n  }\n}\n\nfunction _detectPlatform(canvas) {\n  if (!_isDomSupported() || (typeof OffscreenCanvas !== 'undefined' && canvas instanceof OffscreenCanvas)) {\n    return BasicPlatform;\n  }\n  return DomPlatform;\n}\n\nclass PluginService {\n  constructor() {\n    this._init = [];\n  }\n  notify(chart, hook, args, filter) {\n    if (hook === 'beforeInit') {\n      this._init = this._createDescriptors(chart, true);\n      this._notify(this._init, chart, 'install');\n    }\n    const descriptors = filter ? this._descriptors(chart).filter(filter) : this._descriptors(chart);\n    const result = this._notify(descriptors, chart, hook, args);\n    if (hook === 'afterDestroy') {\n      this._notify(descriptors, chart, 'stop');\n      this._notify(this._init, chart, 'uninstall');\n    }\n    return result;\n  }\n  _notify(descriptors, chart, hook, args) {\n    args = args || {};\n    for (const descriptor of descriptors) {\n      const plugin = descriptor.plugin;\n      const method = plugin[hook];\n      const params = [chart, args, descriptor.options];\n      if (callback(method, params, plugin) === false && args.cancelable) {\n        return false;\n      }\n    }\n    return true;\n  }\n  invalidate() {\n    if (!isNullOrUndef(this._cache)) {\n      this._oldCache = this._cache;\n      this._cache = undefined;\n    }\n  }\n  _descriptors(chart) {\n    if (this._cache) {\n      return this._cache;\n    }\n    const descriptors = this._cache = this._createDescriptors(chart);\n    this._notifyStateChanges(chart);\n    return descriptors;\n  }\n  _createDescriptors(chart, all) {\n    const config = chart && chart.config;\n    const options = valueOrDefault(config.options && config.options.plugins, {});\n    const plugins = allPlugins(config);\n    return options === false && !all ? [] : createDescriptors(chart, plugins, options, all);\n  }\n  _notifyStateChanges(chart) {\n    const previousDescriptors = this._oldCache || [];\n    const descriptors = this._cache;\n    const diff = (a, b) => a.filter(x => !b.some(y => x.plugin.id === y.plugin.id));\n    this._notify(diff(previousDescriptors, descriptors), chart, 'stop');\n    this._notify(diff(descriptors, previousDescriptors), chart, 'start');\n  }\n}\nfunction allPlugins(config) {\n  const localIds = {};\n  const plugins = [];\n  const keys = Object.keys(registry.plugins.items);\n  for (let i = 0; i < keys.length; i++) {\n    plugins.push(registry.getPlugin(keys[i]));\n  }\n  const local = config.plugins || [];\n  for (let i = 0; i < local.length; i++) {\n    const plugin = local[i];\n    if (plugins.indexOf(plugin) === -1) {\n      plugins.push(plugin);\n      localIds[plugin.id] = true;\n    }\n  }\n  return {plugins, localIds};\n}\nfunction getOpts(options, all) {\n  if (!all && options === false) {\n    return null;\n  }\n  if (options === true) {\n    return {};\n  }\n  return options;\n}\nfunction createDescriptors(chart, {plugins, localIds}, options, all) {\n  const result = [];\n  const context = chart.getContext();\n  for (const plugin of plugins) {\n    const id = plugin.id;\n    const opts = getOpts(options[id], all);\n    if (opts === null) {\n      continue;\n    }\n    result.push({\n      plugin,\n      options: pluginOpts(chart.config, {plugin, local: localIds[id]}, opts, context)\n    });\n  }\n  return result;\n}\nfunction pluginOpts(config, {plugin, local}, opts, context) {\n  const keys = config.pluginScopeKeys(plugin);\n  const scopes = config.getOptionScopes(opts, keys);\n  if (local && plugin.defaults) {\n    scopes.push(plugin.defaults);\n  }\n  return config.createResolver(scopes, context, [''], {\n    scriptable: false,\n    indexable: false,\n    allKeys: true\n  });\n}\n\nfunction getIndexAxis(type, options) {\n  const datasetDefaults = defaults.datasets[type] || {};\n  const datasetOptions = (options.datasets || {})[type] || {};\n  return datasetOptions.indexAxis || options.indexAxis || datasetDefaults.indexAxis || 'x';\n}\nfunction getAxisFromDefaultScaleID(id, indexAxis) {\n  let axis = id;\n  if (id === '_index_') {\n    axis = indexAxis;\n  } else if (id === '_value_') {\n    axis = indexAxis === 'x' ? 'y' : 'x';\n  }\n  return axis;\n}\nfunction getDefaultScaleIDFromAxis(axis, indexAxis) {\n  return axis === indexAxis ? '_index_' : '_value_';\n}\nfunction axisFromPosition(position) {\n  if (position === 'top' || position === 'bottom') {\n    return 'x';\n  }\n  if (position === 'left' || position === 'right') {\n    return 'y';\n  }\n}\nfunction determineAxis(id, scaleOptions) {\n  if (id === 'x' || id === 'y') {\n    return id;\n  }\n  return scaleOptions.axis || axisFromPosition(scaleOptions.position) || id.charAt(0).toLowerCase();\n}\nfunction mergeScaleConfig(config, options) {\n  const chartDefaults = overrides[config.type] || {scales: {}};\n  const configScales = options.scales || {};\n  const chartIndexAxis = getIndexAxis(config.type, options);\n  const firstIDs = Object.create(null);\n  const scales = Object.create(null);\n  Object.keys(configScales).forEach(id => {\n    const scaleConf = configScales[id];\n    if (!isObject(scaleConf)) {\n      return console.error(`Invalid scale configuration for scale: ${id}`);\n    }\n    if (scaleConf._proxy) {\n      return console.warn(`Ignoring resolver passed as options for scale: ${id}`);\n    }\n    const axis = determineAxis(id, scaleConf);\n    const defaultId = getDefaultScaleIDFromAxis(axis, chartIndexAxis);\n    const defaultScaleOptions = chartDefaults.scales || {};\n    firstIDs[axis] = firstIDs[axis] || id;\n    scales[id] = mergeIf(Object.create(null), [{axis}, scaleConf, defaultScaleOptions[axis], defaultScaleOptions[defaultId]]);\n  });\n  config.data.datasets.forEach(dataset => {\n    const type = dataset.type || config.type;\n    const indexAxis = dataset.indexAxis || getIndexAxis(type, options);\n    const datasetDefaults = overrides[type] || {};\n    const defaultScaleOptions = datasetDefaults.scales || {};\n    Object.keys(defaultScaleOptions).forEach(defaultID => {\n      const axis = getAxisFromDefaultScaleID(defaultID, indexAxis);\n      const id = dataset[axis + 'AxisID'] || firstIDs[axis] || axis;\n      scales[id] = scales[id] || Object.create(null);\n      mergeIf(scales[id], [{axis}, configScales[id], defaultScaleOptions[defaultID]]);\n    });\n  });\n  Object.keys(scales).forEach(key => {\n    const scale = scales[key];\n    mergeIf(scale, [defaults.scales[scale.type], defaults.scale]);\n  });\n  return scales;\n}\nfunction initOptions(config) {\n  const options = config.options || (config.options = {});\n  options.plugins = valueOrDefault(options.plugins, {});\n  options.scales = mergeScaleConfig(config, options);\n}\nfunction initData(data) {\n  data = data || {};\n  data.datasets = data.datasets || [];\n  data.labels = data.labels || [];\n  return data;\n}\nfunction initConfig(config) {\n  config = config || {};\n  config.data = initData(config.data);\n  initOptions(config);\n  return config;\n}\nconst keyCache = new Map();\nconst keysCached = new Set();\nfunction cachedKeys(cacheKey, generate) {\n  let keys = keyCache.get(cacheKey);\n  if (!keys) {\n    keys = generate();\n    keyCache.set(cacheKey, keys);\n    keysCached.add(keys);\n  }\n  return keys;\n}\nconst addIfFound = (set, obj, key) => {\n  const opts = resolveObjectKey(obj, key);\n  if (opts !== undefined) {\n    set.add(opts);\n  }\n};\nclass Config {\n  constructor(config) {\n    this._config = initConfig(config);\n    this._scopeCache = new Map();\n    this._resolverCache = new Map();\n  }\n  get platform() {\n    return this._config.platform;\n  }\n  get type() {\n    return this._config.type;\n  }\n  set type(type) {\n    this._config.type = type;\n  }\n  get data() {\n    return this._config.data;\n  }\n  set data(data) {\n    this._config.data = initData(data);\n  }\n  get options() {\n    return this._config.options;\n  }\n  set options(options) {\n    this._config.options = options;\n  }\n  get plugins() {\n    return this._config.plugins;\n  }\n  update() {\n    const config = this._config;\n    this.clearCache();\n    initOptions(config);\n  }\n  clearCache() {\n    this._scopeCache.clear();\n    this._resolverCache.clear();\n  }\n  datasetScopeKeys(datasetType) {\n    return cachedKeys(datasetType,\n      () => [[\n        `datasets.${datasetType}`,\n        ''\n      ]]);\n  }\n  datasetAnimationScopeKeys(datasetType, transition) {\n    return cachedKeys(`${datasetType}.transition.${transition}`,\n      () => [\n        [\n          `datasets.${datasetType}.transitions.${transition}`,\n          `transitions.${transition}`,\n        ],\n        [\n          `datasets.${datasetType}`,\n          ''\n        ]\n      ]);\n  }\n  datasetElementScopeKeys(datasetType, elementType) {\n    return cachedKeys(`${datasetType}-${elementType}`,\n      () => [[\n        `datasets.${datasetType}.elements.${elementType}`,\n        `datasets.${datasetType}`,\n        `elements.${elementType}`,\n        ''\n      ]]);\n  }\n  pluginScopeKeys(plugin) {\n    const id = plugin.id;\n    const type = this.type;\n    return cachedKeys(`${type}-plugin-${id}`,\n      () => [[\n        `plugins.${id}`,\n        ...plugin.additionalOptionScopes || [],\n      ]]);\n  }\n  _cachedScopes(mainScope, resetCache) {\n    const _scopeCache = this._scopeCache;\n    let cache = _scopeCache.get(mainScope);\n    if (!cache || resetCache) {\n      cache = new Map();\n      _scopeCache.set(mainScope, cache);\n    }\n    return cache;\n  }\n  getOptionScopes(mainScope, keyLists, resetCache) {\n    const {options, type} = this;\n    const cache = this._cachedScopes(mainScope, resetCache);\n    const cached = cache.get(keyLists);\n    if (cached) {\n      return cached;\n    }\n    const scopes = new Set();\n    keyLists.forEach(keys => {\n      if (mainScope) {\n        scopes.add(mainScope);\n        keys.forEach(key => addIfFound(scopes, mainScope, key));\n      }\n      keys.forEach(key => addIfFound(scopes, options, key));\n      keys.forEach(key => addIfFound(scopes, overrides[type] || {}, key));\n      keys.forEach(key => addIfFound(scopes, defaults, key));\n      keys.forEach(key => addIfFound(scopes, descriptors, key));\n    });\n    const array = Array.from(scopes);\n    if (array.length === 0) {\n      array.push(Object.create(null));\n    }\n    if (keysCached.has(keyLists)) {\n      cache.set(keyLists, array);\n    }\n    return array;\n  }\n  chartOptionScopes() {\n    const {options, type} = this;\n    return [\n      options,\n      overrides[type] || {},\n      defaults.datasets[type] || {},\n      {type},\n      defaults,\n      descriptors\n    ];\n  }\n  resolveNamedOptions(scopes, names, context, prefixes = ['']) {\n    const result = {$shared: true};\n    const {resolver, subPrefixes} = getResolver(this._resolverCache, scopes, prefixes);\n    let options = resolver;\n    if (needContext(resolver, names)) {\n      result.$shared = false;\n      context = isFunction(context) ? context() : context;\n      const subResolver = this.createResolver(scopes, context, subPrefixes);\n      options = _attachContext(resolver, context, subResolver);\n    }\n    for (const prop of names) {\n      result[prop] = options[prop];\n    }\n    return result;\n  }\n  createResolver(scopes, context, prefixes = [''], descriptorDefaults) {\n    const {resolver} = getResolver(this._resolverCache, scopes, prefixes);\n    return isObject(context)\n      ? _attachContext(resolver, context, undefined, descriptorDefaults)\n      : resolver;\n  }\n}\nfunction getResolver(resolverCache, scopes, prefixes) {\n  let cache = resolverCache.get(scopes);\n  if (!cache) {\n    cache = new Map();\n    resolverCache.set(scopes, cache);\n  }\n  const cacheKey = prefixes.join();\n  let cached = cache.get(cacheKey);\n  if (!cached) {\n    const resolver = _createResolver(scopes, prefixes);\n    cached = {\n      resolver,\n      subPrefixes: prefixes.filter(p => !p.toLowerCase().includes('hover'))\n    };\n    cache.set(cacheKey, cached);\n  }\n  return cached;\n}\nconst hasFunction = value => isObject(value)\n  && Object.getOwnPropertyNames(value).reduce((acc, key) => acc || isFunction(value[key]), false);\nfunction needContext(proxy, names) {\n  const {isScriptable, isIndexable} = _descriptors(proxy);\n  for (const prop of names) {\n    const scriptable = isScriptable(prop);\n    const indexable = isIndexable(prop);\n    const value = (indexable || scriptable) && proxy[prop];\n    if ((scriptable && (isFunction(value) || hasFunction(value)))\n      || (indexable && isArray(value))) {\n      return true;\n    }\n  }\n  return false;\n}\n\nvar version = \"3.9.1\";\n\nconst KNOWN_POSITIONS = ['top', 'bottom', 'left', 'right', 'chartArea'];\nfunction positionIsHorizontal(position, axis) {\n  return position === 'top' || position === 'bottom' || (KNOWN_POSITIONS.indexOf(position) === -1 && axis === 'x');\n}\nfunction compare2Level(l1, l2) {\n  return function(a, b) {\n    return a[l1] === b[l1]\n      ? a[l2] - b[l2]\n      : a[l1] - b[l1];\n  };\n}\nfunction onAnimationsComplete(context) {\n  const chart = context.chart;\n  const animationOptions = chart.options.animation;\n  chart.notifyPlugins('afterRender');\n  callback(animationOptions && animationOptions.onComplete, [context], chart);\n}\nfunction onAnimationProgress(context) {\n  const chart = context.chart;\n  const animationOptions = chart.options.animation;\n  callback(animationOptions && animationOptions.onProgress, [context], chart);\n}\nfunction getCanvas(item) {\n  if (_isDomSupported() && typeof item === 'string') {\n    item = document.getElementById(item);\n  } else if (item && item.length) {\n    item = item[0];\n  }\n  if (item && item.canvas) {\n    item = item.canvas;\n  }\n  return item;\n}\nconst instances = {};\nconst getChart = (key) => {\n  const canvas = getCanvas(key);\n  return Object.values(instances).filter((c) => c.canvas === canvas).pop();\n};\nfunction moveNumericKeys(obj, start, move) {\n  const keys = Object.keys(obj);\n  for (const key of keys) {\n    const intKey = +key;\n    if (intKey >= start) {\n      const value = obj[key];\n      delete obj[key];\n      if (move > 0 || intKey > start) {\n        obj[intKey + move] = value;\n      }\n    }\n  }\n}\nfunction determineLastEvent(e, lastEvent, inChartArea, isClick) {\n  if (!inChartArea || e.type === 'mouseout') {\n    return null;\n  }\n  if (isClick) {\n    return lastEvent;\n  }\n  return e;\n}\nclass Chart {\n  constructor(item, userConfig) {\n    const config = this.config = new Config(userConfig);\n    const initialCanvas = getCanvas(item);\n    const existingChart = getChart(initialCanvas);\n    if (existingChart) {\n      throw new Error(\n        'Canvas is already in use. Chart with ID \\'' + existingChart.id + '\\'' +\n\t\t\t\t' must be destroyed before the canvas with ID \\'' + existingChart.canvas.id + '\\' can be reused.'\n      );\n    }\n    const options = config.createResolver(config.chartOptionScopes(), this.getContext());\n    this.platform = new (config.platform || _detectPlatform(initialCanvas))();\n    this.platform.updateConfig(config);\n    const context = this.platform.acquireContext(initialCanvas, options.aspectRatio);\n    const canvas = context && context.canvas;\n    const height = canvas && canvas.height;\n    const width = canvas && canvas.width;\n    this.id = uid();\n    this.ctx = context;\n    this.canvas = canvas;\n    this.width = width;\n    this.height = height;\n    this._options = options;\n    this._aspectRatio = this.aspectRatio;\n    this._layers = [];\n    this._metasets = [];\n    this._stacks = undefined;\n    this.boxes = [];\n    this.currentDevicePixelRatio = undefined;\n    this.chartArea = undefined;\n    this._active = [];\n    this._lastEvent = undefined;\n    this._listeners = {};\n    this._responsiveListeners = undefined;\n    this._sortedMetasets = [];\n    this.scales = {};\n    this._plugins = new PluginService();\n    this.$proxies = {};\n    this._hiddenIndices = {};\n    this.attached = false;\n    this._animationsDisabled = undefined;\n    this.$context = undefined;\n    this._doResize = debounce(mode => this.update(mode), options.resizeDelay || 0);\n    this._dataChanges = [];\n    instances[this.id] = this;\n    if (!context || !canvas) {\n      console.error(\"Failed to create chart: can't acquire context from the given item\");\n      return;\n    }\n    animator.listen(this, 'complete', onAnimationsComplete);\n    animator.listen(this, 'progress', onAnimationProgress);\n    this._initialize();\n    if (this.attached) {\n      this.update();\n    }\n  }\n  get aspectRatio() {\n    const {options: {aspectRatio, maintainAspectRatio}, width, height, _aspectRatio} = this;\n    if (!isNullOrUndef(aspectRatio)) {\n      return aspectRatio;\n    }\n    if (maintainAspectRatio && _aspectRatio) {\n      return _aspectRatio;\n    }\n    return height ? width / height : null;\n  }\n  get data() {\n    return this.config.data;\n  }\n  set data(data) {\n    this.config.data = data;\n  }\n  get options() {\n    return this._options;\n  }\n  set options(options) {\n    this.config.options = options;\n  }\n  _initialize() {\n    this.notifyPlugins('beforeInit');\n    if (this.options.responsive) {\n      this.resize();\n    } else {\n      retinaScale(this, this.options.devicePixelRatio);\n    }\n    this.bindEvents();\n    this.notifyPlugins('afterInit');\n    return this;\n  }\n  clear() {\n    clearCanvas(this.canvas, this.ctx);\n    return this;\n  }\n  stop() {\n    animator.stop(this);\n    return this;\n  }\n  resize(width, height) {\n    if (!animator.running(this)) {\n      this._resize(width, height);\n    } else {\n      this._resizeBeforeDraw = {width, height};\n    }\n  }\n  _resize(width, height) {\n    const options = this.options;\n    const canvas = this.canvas;\n    const aspectRatio = options.maintainAspectRatio && this.aspectRatio;\n    const newSize = this.platform.getMaximumSize(canvas, width, height, aspectRatio);\n    const newRatio = options.devicePixelRatio || this.platform.getDevicePixelRatio();\n    const mode = this.width ? 'resize' : 'attach';\n    this.width = newSize.width;\n    this.height = newSize.height;\n    this._aspectRatio = this.aspectRatio;\n    if (!retinaScale(this, newRatio, true)) {\n      return;\n    }\n    this.notifyPlugins('resize', {size: newSize});\n    callback(options.onResize, [this, newSize], this);\n    if (this.attached) {\n      if (this._doResize(mode)) {\n        this.render();\n      }\n    }\n  }\n  ensureScalesHaveIDs() {\n    const options = this.options;\n    const scalesOptions = options.scales || {};\n    each(scalesOptions, (axisOptions, axisID) => {\n      axisOptions.id = axisID;\n    });\n  }\n  buildOrUpdateScales() {\n    const options = this.options;\n    const scaleOpts = options.scales;\n    const scales = this.scales;\n    const updated = Object.keys(scales).reduce((obj, id) => {\n      obj[id] = false;\n      return obj;\n    }, {});\n    let items = [];\n    if (scaleOpts) {\n      items = items.concat(\n        Object.keys(scaleOpts).map((id) => {\n          const scaleOptions = scaleOpts[id];\n          const axis = determineAxis(id, scaleOptions);\n          const isRadial = axis === 'r';\n          const isHorizontal = axis === 'x';\n          return {\n            options: scaleOptions,\n            dposition: isRadial ? 'chartArea' : isHorizontal ? 'bottom' : 'left',\n            dtype: isRadial ? 'radialLinear' : isHorizontal ? 'category' : 'linear'\n          };\n        })\n      );\n    }\n    each(items, (item) => {\n      const scaleOptions = item.options;\n      const id = scaleOptions.id;\n      const axis = determineAxis(id, scaleOptions);\n      const scaleType = valueOrDefault(scaleOptions.type, item.dtype);\n      if (scaleOptions.position === undefined || positionIsHorizontal(scaleOptions.position, axis) !== positionIsHorizontal(item.dposition)) {\n        scaleOptions.position = item.dposition;\n      }\n      updated[id] = true;\n      let scale = null;\n      if (id in scales && scales[id].type === scaleType) {\n        scale = scales[id];\n      } else {\n        const scaleClass = registry.getScale(scaleType);\n        scale = new scaleClass({\n          id,\n          type: scaleType,\n          ctx: this.ctx,\n          chart: this\n        });\n        scales[scale.id] = scale;\n      }\n      scale.init(scaleOptions, options);\n    });\n    each(updated, (hasUpdated, id) => {\n      if (!hasUpdated) {\n        delete scales[id];\n      }\n    });\n    each(scales, (scale) => {\n      layouts.configure(this, scale, scale.options);\n      layouts.addBox(this, scale);\n    });\n  }\n  _updateMetasets() {\n    const metasets = this._metasets;\n    const numData = this.data.datasets.length;\n    const numMeta = metasets.length;\n    metasets.sort((a, b) => a.index - b.index);\n    if (numMeta > numData) {\n      for (let i = numData; i < numMeta; ++i) {\n        this._destroyDatasetMeta(i);\n      }\n      metasets.splice(numData, numMeta - numData);\n    }\n    this._sortedMetasets = metasets.slice(0).sort(compare2Level('order', 'index'));\n  }\n  _removeUnreferencedMetasets() {\n    const {_metasets: metasets, data: {datasets}} = this;\n    if (metasets.length > datasets.length) {\n      delete this._stacks;\n    }\n    metasets.forEach((meta, index) => {\n      if (datasets.filter(x => x === meta._dataset).length === 0) {\n        this._destroyDatasetMeta(index);\n      }\n    });\n  }\n  buildOrUpdateControllers() {\n    const newControllers = [];\n    const datasets = this.data.datasets;\n    let i, ilen;\n    this._removeUnreferencedMetasets();\n    for (i = 0, ilen = datasets.length; i < ilen; i++) {\n      const dataset = datasets[i];\n      let meta = this.getDatasetMeta(i);\n      const type = dataset.type || this.config.type;\n      if (meta.type && meta.type !== type) {\n        this._destroyDatasetMeta(i);\n        meta = this.getDatasetMeta(i);\n      }\n      meta.type = type;\n      meta.indexAxis = dataset.indexAxis || getIndexAxis(type, this.options);\n      meta.order = dataset.order || 0;\n      meta.index = i;\n      meta.label = '' + dataset.label;\n      meta.visible = this.isDatasetVisible(i);\n      if (meta.controller) {\n        meta.controller.updateIndex(i);\n        meta.controller.linkScales();\n      } else {\n        const ControllerClass = registry.getController(type);\n        const {datasetElementType, dataElementType} = defaults.datasets[type];\n        Object.assign(ControllerClass.prototype, {\n          dataElementType: registry.getElement(dataElementType),\n          datasetElementType: datasetElementType && registry.getElement(datasetElementType)\n        });\n        meta.controller = new ControllerClass(this, i);\n        newControllers.push(meta.controller);\n      }\n    }\n    this._updateMetasets();\n    return newControllers;\n  }\n  _resetElements() {\n    each(this.data.datasets, (dataset, datasetIndex) => {\n      this.getDatasetMeta(datasetIndex).controller.reset();\n    }, this);\n  }\n  reset() {\n    this._resetElements();\n    this.notifyPlugins('reset');\n  }\n  update(mode) {\n    const config = this.config;\n    config.update();\n    const options = this._options = config.createResolver(config.chartOptionScopes(), this.getContext());\n    const animsDisabled = this._animationsDisabled = !options.animation;\n    this._updateScales();\n    this._checkEventBindings();\n    this._updateHiddenIndices();\n    this._plugins.invalidate();\n    if (this.notifyPlugins('beforeUpdate', {mode, cancelable: true}) === false) {\n      return;\n    }\n    const newControllers = this.buildOrUpdateControllers();\n    this.notifyPlugins('beforeElementsUpdate');\n    let minPadding = 0;\n    for (let i = 0, ilen = this.data.datasets.length; i < ilen; i++) {\n      const {controller} = this.getDatasetMeta(i);\n      const reset = !animsDisabled && newControllers.indexOf(controller) === -1;\n      controller.buildOrUpdateElements(reset);\n      minPadding = Math.max(+controller.getMaxOverflow(), minPadding);\n    }\n    minPadding = this._minPadding = options.layout.autoPadding ? minPadding : 0;\n    this._updateLayout(minPadding);\n    if (!animsDisabled) {\n      each(newControllers, (controller) => {\n        controller.reset();\n      });\n    }\n    this._updateDatasets(mode);\n    this.notifyPlugins('afterUpdate', {mode});\n    this._layers.sort(compare2Level('z', '_idx'));\n    const {_active, _lastEvent} = this;\n    if (_lastEvent) {\n      this._eventHandler(_lastEvent, true);\n    } else if (_active.length) {\n      this._updateHoverStyles(_active, _active, true);\n    }\n    this.render();\n  }\n  _updateScales() {\n    each(this.scales, (scale) => {\n      layouts.removeBox(this, scale);\n    });\n    this.ensureScalesHaveIDs();\n    this.buildOrUpdateScales();\n  }\n  _checkEventBindings() {\n    const options = this.options;\n    const existingEvents = new Set(Object.keys(this._listeners));\n    const newEvents = new Set(options.events);\n    if (!setsEqual(existingEvents, newEvents) || !!this._responsiveListeners !== options.responsive) {\n      this.unbindEvents();\n      this.bindEvents();\n    }\n  }\n  _updateHiddenIndices() {\n    const {_hiddenIndices} = this;\n    const changes = this._getUniformDataChanges() || [];\n    for (const {method, start, count} of changes) {\n      const move = method === '_removeElements' ? -count : count;\n      moveNumericKeys(_hiddenIndices, start, move);\n    }\n  }\n  _getUniformDataChanges() {\n    const _dataChanges = this._dataChanges;\n    if (!_dataChanges || !_dataChanges.length) {\n      return;\n    }\n    this._dataChanges = [];\n    const datasetCount = this.data.datasets.length;\n    const makeSet = (idx) => new Set(\n      _dataChanges\n        .filter(c => c[0] === idx)\n        .map((c, i) => i + ',' + c.splice(1).join(','))\n    );\n    const changeSet = makeSet(0);\n    for (let i = 1; i < datasetCount; i++) {\n      if (!setsEqual(changeSet, makeSet(i))) {\n        return;\n      }\n    }\n    return Array.from(changeSet)\n      .map(c => c.split(','))\n      .map(a => ({method: a[1], start: +a[2], count: +a[3]}));\n  }\n  _updateLayout(minPadding) {\n    if (this.notifyPlugins('beforeLayout', {cancelable: true}) === false) {\n      return;\n    }\n    layouts.update(this, this.width, this.height, minPadding);\n    const area = this.chartArea;\n    const noArea = area.width <= 0 || area.height <= 0;\n    this._layers = [];\n    each(this.boxes, (box) => {\n      if (noArea && box.position === 'chartArea') {\n        return;\n      }\n      if (box.configure) {\n        box.configure();\n      }\n      this._layers.push(...box._layers());\n    }, this);\n    this._layers.forEach((item, index) => {\n      item._idx = index;\n    });\n    this.notifyPlugins('afterLayout');\n  }\n  _updateDatasets(mode) {\n    if (this.notifyPlugins('beforeDatasetsUpdate', {mode, cancelable: true}) === false) {\n      return;\n    }\n    for (let i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n      this.getDatasetMeta(i).controller.configure();\n    }\n    for (let i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n      this._updateDataset(i, isFunction(mode) ? mode({datasetIndex: i}) : mode);\n    }\n    this.notifyPlugins('afterDatasetsUpdate', {mode});\n  }\n  _updateDataset(index, mode) {\n    const meta = this.getDatasetMeta(index);\n    const args = {meta, index, mode, cancelable: true};\n    if (this.notifyPlugins('beforeDatasetUpdate', args) === false) {\n      return;\n    }\n    meta.controller._update(mode);\n    args.cancelable = false;\n    this.notifyPlugins('afterDatasetUpdate', args);\n  }\n  render() {\n    if (this.notifyPlugins('beforeRender', {cancelable: true}) === false) {\n      return;\n    }\n    if (animator.has(this)) {\n      if (this.attached && !animator.running(this)) {\n        animator.start(this);\n      }\n    } else {\n      this.draw();\n      onAnimationsComplete({chart: this});\n    }\n  }\n  draw() {\n    let i;\n    if (this._resizeBeforeDraw) {\n      const {width, height} = this._resizeBeforeDraw;\n      this._resize(width, height);\n      this._resizeBeforeDraw = null;\n    }\n    this.clear();\n    if (this.width <= 0 || this.height <= 0) {\n      return;\n    }\n    if (this.notifyPlugins('beforeDraw', {cancelable: true}) === false) {\n      return;\n    }\n    const layers = this._layers;\n    for (i = 0; i < layers.length && layers[i].z <= 0; ++i) {\n      layers[i].draw(this.chartArea);\n    }\n    this._drawDatasets();\n    for (; i < layers.length; ++i) {\n      layers[i].draw(this.chartArea);\n    }\n    this.notifyPlugins('afterDraw');\n  }\n  _getSortedDatasetMetas(filterVisible) {\n    const metasets = this._sortedMetasets;\n    const result = [];\n    let i, ilen;\n    for (i = 0, ilen = metasets.length; i < ilen; ++i) {\n      const meta = metasets[i];\n      if (!filterVisible || meta.visible) {\n        result.push(meta);\n      }\n    }\n    return result;\n  }\n  getSortedVisibleDatasetMetas() {\n    return this._getSortedDatasetMetas(true);\n  }\n  _drawDatasets() {\n    if (this.notifyPlugins('beforeDatasetsDraw', {cancelable: true}) === false) {\n      return;\n    }\n    const metasets = this.getSortedVisibleDatasetMetas();\n    for (let i = metasets.length - 1; i >= 0; --i) {\n      this._drawDataset(metasets[i]);\n    }\n    this.notifyPlugins('afterDatasetsDraw');\n  }\n  _drawDataset(meta) {\n    const ctx = this.ctx;\n    const clip = meta._clip;\n    const useClip = !clip.disabled;\n    const area = this.chartArea;\n    const args = {\n      meta,\n      index: meta.index,\n      cancelable: true\n    };\n    if (this.notifyPlugins('beforeDatasetDraw', args) === false) {\n      return;\n    }\n    if (useClip) {\n      clipArea(ctx, {\n        left: clip.left === false ? 0 : area.left - clip.left,\n        right: clip.right === false ? this.width : area.right + clip.right,\n        top: clip.top === false ? 0 : area.top - clip.top,\n        bottom: clip.bottom === false ? this.height : area.bottom + clip.bottom\n      });\n    }\n    meta.controller.draw();\n    if (useClip) {\n      unclipArea(ctx);\n    }\n    args.cancelable = false;\n    this.notifyPlugins('afterDatasetDraw', args);\n  }\n  isPointInArea(point) {\n    return _isPointInArea(point, this.chartArea, this._minPadding);\n  }\n  getElementsAtEventForMode(e, mode, options, useFinalPosition) {\n    const method = Interaction.modes[mode];\n    if (typeof method === 'function') {\n      return method(this, e, options, useFinalPosition);\n    }\n    return [];\n  }\n  getDatasetMeta(datasetIndex) {\n    const dataset = this.data.datasets[datasetIndex];\n    const metasets = this._metasets;\n    let meta = metasets.filter(x => x && x._dataset === dataset).pop();\n    if (!meta) {\n      meta = {\n        type: null,\n        data: [],\n        dataset: null,\n        controller: null,\n        hidden: null,\n        xAxisID: null,\n        yAxisID: null,\n        order: dataset && dataset.order || 0,\n        index: datasetIndex,\n        _dataset: dataset,\n        _parsed: [],\n        _sorted: false\n      };\n      metasets.push(meta);\n    }\n    return meta;\n  }\n  getContext() {\n    return this.$context || (this.$context = createContext(null, {chart: this, type: 'chart'}));\n  }\n  getVisibleDatasetCount() {\n    return this.getSortedVisibleDatasetMetas().length;\n  }\n  isDatasetVisible(datasetIndex) {\n    const dataset = this.data.datasets[datasetIndex];\n    if (!dataset) {\n      return false;\n    }\n    const meta = this.getDatasetMeta(datasetIndex);\n    return typeof meta.hidden === 'boolean' ? !meta.hidden : !dataset.hidden;\n  }\n  setDatasetVisibility(datasetIndex, visible) {\n    const meta = this.getDatasetMeta(datasetIndex);\n    meta.hidden = !visible;\n  }\n  toggleDataVisibility(index) {\n    this._hiddenIndices[index] = !this._hiddenIndices[index];\n  }\n  getDataVisibility(index) {\n    return !this._hiddenIndices[index];\n  }\n  _updateVisibility(datasetIndex, dataIndex, visible) {\n    const mode = visible ? 'show' : 'hide';\n    const meta = this.getDatasetMeta(datasetIndex);\n    const anims = meta.controller._resolveAnimations(undefined, mode);\n    if (defined(dataIndex)) {\n      meta.data[dataIndex].hidden = !visible;\n      this.update();\n    } else {\n      this.setDatasetVisibility(datasetIndex, visible);\n      anims.update(meta, {visible});\n      this.update((ctx) => ctx.datasetIndex === datasetIndex ? mode : undefined);\n    }\n  }\n  hide(datasetIndex, dataIndex) {\n    this._updateVisibility(datasetIndex, dataIndex, false);\n  }\n  show(datasetIndex, dataIndex) {\n    this._updateVisibility(datasetIndex, dataIndex, true);\n  }\n  _destroyDatasetMeta(datasetIndex) {\n    const meta = this._metasets[datasetIndex];\n    if (meta && meta.controller) {\n      meta.controller._destroy();\n    }\n    delete this._metasets[datasetIndex];\n  }\n  _stop() {\n    let i, ilen;\n    this.stop();\n    animator.remove(this);\n    for (i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n      this._destroyDatasetMeta(i);\n    }\n  }\n  destroy() {\n    this.notifyPlugins('beforeDestroy');\n    const {canvas, ctx} = this;\n    this._stop();\n    this.config.clearCache();\n    if (canvas) {\n      this.unbindEvents();\n      clearCanvas(canvas, ctx);\n      this.platform.releaseContext(ctx);\n      this.canvas = null;\n      this.ctx = null;\n    }\n    this.notifyPlugins('destroy');\n    delete instances[this.id];\n    this.notifyPlugins('afterDestroy');\n  }\n  toBase64Image(...args) {\n    return this.canvas.toDataURL(...args);\n  }\n  bindEvents() {\n    this.bindUserEvents();\n    if (this.options.responsive) {\n      this.bindResponsiveEvents();\n    } else {\n      this.attached = true;\n    }\n  }\n  bindUserEvents() {\n    const listeners = this._listeners;\n    const platform = this.platform;\n    const _add = (type, listener) => {\n      platform.addEventListener(this, type, listener);\n      listeners[type] = listener;\n    };\n    const listener = (e, x, y) => {\n      e.offsetX = x;\n      e.offsetY = y;\n      this._eventHandler(e);\n    };\n    each(this.options.events, (type) => _add(type, listener));\n  }\n  bindResponsiveEvents() {\n    if (!this._responsiveListeners) {\n      this._responsiveListeners = {};\n    }\n    const listeners = this._responsiveListeners;\n    const platform = this.platform;\n    const _add = (type, listener) => {\n      platform.addEventListener(this, type, listener);\n      listeners[type] = listener;\n    };\n    const _remove = (type, listener) => {\n      if (listeners[type]) {\n        platform.removeEventListener(this, type, listener);\n        delete listeners[type];\n      }\n    };\n    const listener = (width, height) => {\n      if (this.canvas) {\n        this.resize(width, height);\n      }\n    };\n    let detached;\n    const attached = () => {\n      _remove('attach', attached);\n      this.attached = true;\n      this.resize();\n      _add('resize', listener);\n      _add('detach', detached);\n    };\n    detached = () => {\n      this.attached = false;\n      _remove('resize', listener);\n      this._stop();\n      this._resize(0, 0);\n      _add('attach', attached);\n    };\n    if (platform.isAttached(this.canvas)) {\n      attached();\n    } else {\n      detached();\n    }\n  }\n  unbindEvents() {\n    each(this._listeners, (listener, type) => {\n      this.platform.removeEventListener(this, type, listener);\n    });\n    this._listeners = {};\n    each(this._responsiveListeners, (listener, type) => {\n      this.platform.removeEventListener(this, type, listener);\n    });\n    this._responsiveListeners = undefined;\n  }\n  updateHoverStyle(items, mode, enabled) {\n    const prefix = enabled ? 'set' : 'remove';\n    let meta, item, i, ilen;\n    if (mode === 'dataset') {\n      meta = this.getDatasetMeta(items[0].datasetIndex);\n      meta.controller['_' + prefix + 'DatasetHoverStyle']();\n    }\n    for (i = 0, ilen = items.length; i < ilen; ++i) {\n      item = items[i];\n      const controller = item && this.getDatasetMeta(item.datasetIndex).controller;\n      if (controller) {\n        controller[prefix + 'HoverStyle'](item.element, item.datasetIndex, item.index);\n      }\n    }\n  }\n  getActiveElements() {\n    return this._active || [];\n  }\n  setActiveElements(activeElements) {\n    const lastActive = this._active || [];\n    const active = activeElements.map(({datasetIndex, index}) => {\n      const meta = this.getDatasetMeta(datasetIndex);\n      if (!meta) {\n        throw new Error('No dataset found at index ' + datasetIndex);\n      }\n      return {\n        datasetIndex,\n        element: meta.data[index],\n        index,\n      };\n    });\n    const changed = !_elementsEqual(active, lastActive);\n    if (changed) {\n      this._active = active;\n      this._lastEvent = null;\n      this._updateHoverStyles(active, lastActive);\n    }\n  }\n  notifyPlugins(hook, args, filter) {\n    return this._plugins.notify(this, hook, args, filter);\n  }\n  _updateHoverStyles(active, lastActive, replay) {\n    const hoverOptions = this.options.hover;\n    const diff = (a, b) => a.filter(x => !b.some(y => x.datasetIndex === y.datasetIndex && x.index === y.index));\n    const deactivated = diff(lastActive, active);\n    const activated = replay ? active : diff(active, lastActive);\n    if (deactivated.length) {\n      this.updateHoverStyle(deactivated, hoverOptions.mode, false);\n    }\n    if (activated.length && hoverOptions.mode) {\n      this.updateHoverStyle(activated, hoverOptions.mode, true);\n    }\n  }\n  _eventHandler(e, replay) {\n    const args = {\n      event: e,\n      replay,\n      cancelable: true,\n      inChartArea: this.isPointInArea(e)\n    };\n    const eventFilter = (plugin) => (plugin.options.events || this.options.events).includes(e.native.type);\n    if (this.notifyPlugins('beforeEvent', args, eventFilter) === false) {\n      return;\n    }\n    const changed = this._handleEvent(e, replay, args.inChartArea);\n    args.cancelable = false;\n    this.notifyPlugins('afterEvent', args, eventFilter);\n    if (changed || args.changed) {\n      this.render();\n    }\n    return this;\n  }\n  _handleEvent(e, replay, inChartArea) {\n    const {_active: lastActive = [], options} = this;\n    const useFinalPosition = replay;\n    const active = this._getActiveElements(e, lastActive, inChartArea, useFinalPosition);\n    const isClick = _isClickEvent(e);\n    const lastEvent = determineLastEvent(e, this._lastEvent, inChartArea, isClick);\n    if (inChartArea) {\n      this._lastEvent = null;\n      callback(options.onHover, [e, active, this], this);\n      if (isClick) {\n        callback(options.onClick, [e, active, this], this);\n      }\n    }\n    const changed = !_elementsEqual(active, lastActive);\n    if (changed || replay) {\n      this._active = active;\n      this._updateHoverStyles(active, lastActive, replay);\n    }\n    this._lastEvent = lastEvent;\n    return changed;\n  }\n  _getActiveElements(e, lastActive, inChartArea, useFinalPosition) {\n    if (e.type === 'mouseout') {\n      return [];\n    }\n    if (!inChartArea) {\n      return lastActive;\n    }\n    const hoverOptions = this.options.hover;\n    return this.getElementsAtEventForMode(e, hoverOptions.mode, hoverOptions, useFinalPosition);\n  }\n}\nconst invalidatePlugins = () => each(Chart.instances, (chart) => chart._plugins.invalidate());\nconst enumerable = true;\nObject.defineProperties(Chart, {\n  defaults: {\n    enumerable,\n    value: defaults\n  },\n  instances: {\n    enumerable,\n    value: instances\n  },\n  overrides: {\n    enumerable,\n    value: overrides\n  },\n  registry: {\n    enumerable,\n    value: registry\n  },\n  version: {\n    enumerable,\n    value: version\n  },\n  getChart: {\n    enumerable,\n    value: getChart\n  },\n  register: {\n    enumerable,\n    value: (...items) => {\n      registry.add(...items);\n      invalidatePlugins();\n    }\n  },\n  unregister: {\n    enumerable,\n    value: (...items) => {\n      registry.remove(...items);\n      invalidatePlugins();\n    }\n  }\n});\n\nfunction clipArc(ctx, element, endAngle) {\n  const {startAngle, pixelMargin, x, y, outerRadius, innerRadius} = element;\n  let angleMargin = pixelMargin / outerRadius;\n  ctx.beginPath();\n  ctx.arc(x, y, outerRadius, startAngle - angleMargin, endAngle + angleMargin);\n  if (innerRadius > pixelMargin) {\n    angleMargin = pixelMargin / innerRadius;\n    ctx.arc(x, y, innerRadius, endAngle + angleMargin, startAngle - angleMargin, true);\n  } else {\n    ctx.arc(x, y, pixelMargin, endAngle + HALF_PI, startAngle - HALF_PI);\n  }\n  ctx.closePath();\n  ctx.clip();\n}\nfunction toRadiusCorners(value) {\n  return _readValueToProps(value, ['outerStart', 'outerEnd', 'innerStart', 'innerEnd']);\n}\nfunction parseBorderRadius$1(arc, innerRadius, outerRadius, angleDelta) {\n  const o = toRadiusCorners(arc.options.borderRadius);\n  const halfThickness = (outerRadius - innerRadius) / 2;\n  const innerLimit = Math.min(halfThickness, angleDelta * innerRadius / 2);\n  const computeOuterLimit = (val) => {\n    const outerArcLimit = (outerRadius - Math.min(halfThickness, val)) * angleDelta / 2;\n    return _limitValue(val, 0, Math.min(halfThickness, outerArcLimit));\n  };\n  return {\n    outerStart: computeOuterLimit(o.outerStart),\n    outerEnd: computeOuterLimit(o.outerEnd),\n    innerStart: _limitValue(o.innerStart, 0, innerLimit),\n    innerEnd: _limitValue(o.innerEnd, 0, innerLimit),\n  };\n}\nfunction rThetaToXY(r, theta, x, y) {\n  return {\n    x: x + r * Math.cos(theta),\n    y: y + r * Math.sin(theta),\n  };\n}\nfunction pathArc(ctx, element, offset, spacing, end, circular) {\n  const {x, y, startAngle: start, pixelMargin, innerRadius: innerR} = element;\n  const outerRadius = Math.max(element.outerRadius + spacing + offset - pixelMargin, 0);\n  const innerRadius = innerR > 0 ? innerR + spacing + offset + pixelMargin : 0;\n  let spacingOffset = 0;\n  const alpha = end - start;\n  if (spacing) {\n    const noSpacingInnerRadius = innerR > 0 ? innerR - spacing : 0;\n    const noSpacingOuterRadius = outerRadius > 0 ? outerRadius - spacing : 0;\n    const avNogSpacingRadius = (noSpacingInnerRadius + noSpacingOuterRadius) / 2;\n    const adjustedAngle = avNogSpacingRadius !== 0 ? (alpha * avNogSpacingRadius) / (avNogSpacingRadius + spacing) : alpha;\n    spacingOffset = (alpha - adjustedAngle) / 2;\n  }\n  const beta = Math.max(0.001, alpha * outerRadius - offset / PI) / outerRadius;\n  const angleOffset = (alpha - beta) / 2;\n  const startAngle = start + angleOffset + spacingOffset;\n  const endAngle = end - angleOffset - spacingOffset;\n  const {outerStart, outerEnd, innerStart, innerEnd} = parseBorderRadius$1(element, innerRadius, outerRadius, endAngle - startAngle);\n  const outerStartAdjustedRadius = outerRadius - outerStart;\n  const outerEndAdjustedRadius = outerRadius - outerEnd;\n  const outerStartAdjustedAngle = startAngle + outerStart / outerStartAdjustedRadius;\n  const outerEndAdjustedAngle = endAngle - outerEnd / outerEndAdjustedRadius;\n  const innerStartAdjustedRadius = innerRadius + innerStart;\n  const innerEndAdjustedRadius = innerRadius + innerEnd;\n  const innerStartAdjustedAngle = startAngle + innerStart / innerStartAdjustedRadius;\n  const innerEndAdjustedAngle = endAngle - innerEnd / innerEndAdjustedRadius;\n  ctx.beginPath();\n  if (circular) {\n    ctx.arc(x, y, outerRadius, outerStartAdjustedAngle, outerEndAdjustedAngle);\n    if (outerEnd > 0) {\n      const pCenter = rThetaToXY(outerEndAdjustedRadius, outerEndAdjustedAngle, x, y);\n      ctx.arc(pCenter.x, pCenter.y, outerEnd, outerEndAdjustedAngle, endAngle + HALF_PI);\n    }\n    const p4 = rThetaToXY(innerEndAdjustedRadius, endAngle, x, y);\n    ctx.lineTo(p4.x, p4.y);\n    if (innerEnd > 0) {\n      const pCenter = rThetaToXY(innerEndAdjustedRadius, innerEndAdjustedAngle, x, y);\n      ctx.arc(pCenter.x, pCenter.y, innerEnd, endAngle + HALF_PI, innerEndAdjustedAngle + Math.PI);\n    }\n    ctx.arc(x, y, innerRadius, endAngle - (innerEnd / innerRadius), startAngle + (innerStart / innerRadius), true);\n    if (innerStart > 0) {\n      const pCenter = rThetaToXY(innerStartAdjustedRadius, innerStartAdjustedAngle, x, y);\n      ctx.arc(pCenter.x, pCenter.y, innerStart, innerStartAdjustedAngle + Math.PI, startAngle - HALF_PI);\n    }\n    const p8 = rThetaToXY(outerStartAdjustedRadius, startAngle, x, y);\n    ctx.lineTo(p8.x, p8.y);\n    if (outerStart > 0) {\n      const pCenter = rThetaToXY(outerStartAdjustedRadius, outerStartAdjustedAngle, x, y);\n      ctx.arc(pCenter.x, pCenter.y, outerStart, startAngle - HALF_PI, outerStartAdjustedAngle);\n    }\n  } else {\n    ctx.moveTo(x, y);\n    const outerStartX = Math.cos(outerStartAdjustedAngle) * outerRadius + x;\n    const outerStartY = Math.sin(outerStartAdjustedAngle) * outerRadius + y;\n    ctx.lineTo(outerStartX, outerStartY);\n    const outerEndX = Math.cos(outerEndAdjustedAngle) * outerRadius + x;\n    const outerEndY = Math.sin(outerEndAdjustedAngle) * outerRadius + y;\n    ctx.lineTo(outerEndX, outerEndY);\n  }\n  ctx.closePath();\n}\nfunction drawArc(ctx, element, offset, spacing, circular) {\n  const {fullCircles, startAngle, circumference} = element;\n  let endAngle = element.endAngle;\n  if (fullCircles) {\n    pathArc(ctx, element, offset, spacing, startAngle + TAU, circular);\n    for (let i = 0; i < fullCircles; ++i) {\n      ctx.fill();\n    }\n    if (!isNaN(circumference)) {\n      endAngle = startAngle + circumference % TAU;\n      if (circumference % TAU === 0) {\n        endAngle += TAU;\n      }\n    }\n  }\n  pathArc(ctx, element, offset, spacing, endAngle, circular);\n  ctx.fill();\n  return endAngle;\n}\nfunction drawFullCircleBorders(ctx, element, inner) {\n  const {x, y, startAngle, pixelMargin, fullCircles} = element;\n  const outerRadius = Math.max(element.outerRadius - pixelMargin, 0);\n  const innerRadius = element.innerRadius + pixelMargin;\n  let i;\n  if (inner) {\n    clipArc(ctx, element, startAngle + TAU);\n  }\n  ctx.beginPath();\n  ctx.arc(x, y, innerRadius, startAngle + TAU, startAngle, true);\n  for (i = 0; i < fullCircles; ++i) {\n    ctx.stroke();\n  }\n  ctx.beginPath();\n  ctx.arc(x, y, outerRadius, startAngle, startAngle + TAU);\n  for (i = 0; i < fullCircles; ++i) {\n    ctx.stroke();\n  }\n}\nfunction drawBorder(ctx, element, offset, spacing, endAngle, circular) {\n  const {options} = element;\n  const {borderWidth, borderJoinStyle} = options;\n  const inner = options.borderAlign === 'inner';\n  if (!borderWidth) {\n    return;\n  }\n  if (inner) {\n    ctx.lineWidth = borderWidth * 2;\n    ctx.lineJoin = borderJoinStyle || 'round';\n  } else {\n    ctx.lineWidth = borderWidth;\n    ctx.lineJoin = borderJoinStyle || 'bevel';\n  }\n  if (element.fullCircles) {\n    drawFullCircleBorders(ctx, element, inner);\n  }\n  if (inner) {\n    clipArc(ctx, element, endAngle);\n  }\n  pathArc(ctx, element, offset, spacing, endAngle, circular);\n  ctx.stroke();\n}\nclass ArcElement extends Element {\n  constructor(cfg) {\n    super();\n    this.options = undefined;\n    this.circumference = undefined;\n    this.startAngle = undefined;\n    this.endAngle = undefined;\n    this.innerRadius = undefined;\n    this.outerRadius = undefined;\n    this.pixelMargin = 0;\n    this.fullCircles = 0;\n    if (cfg) {\n      Object.assign(this, cfg);\n    }\n  }\n  inRange(chartX, chartY, useFinalPosition) {\n    const point = this.getProps(['x', 'y'], useFinalPosition);\n    const {angle, distance} = getAngleFromPoint(point, {x: chartX, y: chartY});\n    const {startAngle, endAngle, innerRadius, outerRadius, circumference} = this.getProps([\n      'startAngle',\n      'endAngle',\n      'innerRadius',\n      'outerRadius',\n      'circumference'\n    ], useFinalPosition);\n    const rAdjust = this.options.spacing / 2;\n    const _circumference = valueOrDefault(circumference, endAngle - startAngle);\n    const betweenAngles = _circumference >= TAU || _angleBetween(angle, startAngle, endAngle);\n    const withinRadius = _isBetween(distance, innerRadius + rAdjust, outerRadius + rAdjust);\n    return (betweenAngles && withinRadius);\n  }\n  getCenterPoint(useFinalPosition) {\n    const {x, y, startAngle, endAngle, innerRadius, outerRadius} = this.getProps([\n      'x',\n      'y',\n      'startAngle',\n      'endAngle',\n      'innerRadius',\n      'outerRadius',\n      'circumference',\n    ], useFinalPosition);\n    const {offset, spacing} = this.options;\n    const halfAngle = (startAngle + endAngle) / 2;\n    const halfRadius = (innerRadius + outerRadius + spacing + offset) / 2;\n    return {\n      x: x + Math.cos(halfAngle) * halfRadius,\n      y: y + Math.sin(halfAngle) * halfRadius\n    };\n  }\n  tooltipPosition(useFinalPosition) {\n    return this.getCenterPoint(useFinalPosition);\n  }\n  draw(ctx) {\n    const {options, circumference} = this;\n    const offset = (options.offset || 0) / 2;\n    const spacing = (options.spacing || 0) / 2;\n    const circular = options.circular;\n    this.pixelMargin = (options.borderAlign === 'inner') ? 0.33 : 0;\n    this.fullCircles = circumference > TAU ? Math.floor(circumference / TAU) : 0;\n    if (circumference === 0 || this.innerRadius < 0 || this.outerRadius < 0) {\n      return;\n    }\n    ctx.save();\n    let radiusOffset = 0;\n    if (offset) {\n      radiusOffset = offset / 2;\n      const halfAngle = (this.startAngle + this.endAngle) / 2;\n      ctx.translate(Math.cos(halfAngle) * radiusOffset, Math.sin(halfAngle) * radiusOffset);\n      if (this.circumference >= PI) {\n        radiusOffset = offset;\n      }\n    }\n    ctx.fillStyle = options.backgroundColor;\n    ctx.strokeStyle = options.borderColor;\n    const endAngle = drawArc(ctx, this, radiusOffset, spacing, circular);\n    drawBorder(ctx, this, radiusOffset, spacing, endAngle, circular);\n    ctx.restore();\n  }\n}\nArcElement.id = 'arc';\nArcElement.defaults = {\n  borderAlign: 'center',\n  borderColor: '#fff',\n  borderJoinStyle: undefined,\n  borderRadius: 0,\n  borderWidth: 2,\n  offset: 0,\n  spacing: 0,\n  angle: undefined,\n  circular: true,\n};\nArcElement.defaultRoutes = {\n  backgroundColor: 'backgroundColor'\n};\n\nfunction setStyle(ctx, options, style = options) {\n  ctx.lineCap = valueOrDefault(style.borderCapStyle, options.borderCapStyle);\n  ctx.setLineDash(valueOrDefault(style.borderDash, options.borderDash));\n  ctx.lineDashOffset = valueOrDefault(style.borderDashOffset, options.borderDashOffset);\n  ctx.lineJoin = valueOrDefault(style.borderJoinStyle, options.borderJoinStyle);\n  ctx.lineWidth = valueOrDefault(style.borderWidth, options.borderWidth);\n  ctx.strokeStyle = valueOrDefault(style.borderColor, options.borderColor);\n}\nfunction lineTo(ctx, previous, target) {\n  ctx.lineTo(target.x, target.y);\n}\nfunction getLineMethod(options) {\n  if (options.stepped) {\n    return _steppedLineTo;\n  }\n  if (options.tension || options.cubicInterpolationMode === 'monotone') {\n    return _bezierCurveTo;\n  }\n  return lineTo;\n}\nfunction pathVars(points, segment, params = {}) {\n  const count = points.length;\n  const {start: paramsStart = 0, end: paramsEnd = count - 1} = params;\n  const {start: segmentStart, end: segmentEnd} = segment;\n  const start = Math.max(paramsStart, segmentStart);\n  const end = Math.min(paramsEnd, segmentEnd);\n  const outside = paramsStart < segmentStart && paramsEnd < segmentStart || paramsStart > segmentEnd && paramsEnd > segmentEnd;\n  return {\n    count,\n    start,\n    loop: segment.loop,\n    ilen: end < start && !outside ? count + end - start : end - start\n  };\n}\nfunction pathSegment(ctx, line, segment, params) {\n  const {points, options} = line;\n  const {count, start, loop, ilen} = pathVars(points, segment, params);\n  const lineMethod = getLineMethod(options);\n  let {move = true, reverse} = params || {};\n  let i, point, prev;\n  for (i = 0; i <= ilen; ++i) {\n    point = points[(start + (reverse ? ilen - i : i)) % count];\n    if (point.skip) {\n      continue;\n    } else if (move) {\n      ctx.moveTo(point.x, point.y);\n      move = false;\n    } else {\n      lineMethod(ctx, prev, point, reverse, options.stepped);\n    }\n    prev = point;\n  }\n  if (loop) {\n    point = points[(start + (reverse ? ilen : 0)) % count];\n    lineMethod(ctx, prev, point, reverse, options.stepped);\n  }\n  return !!loop;\n}\nfunction fastPathSegment(ctx, line, segment, params) {\n  const points = line.points;\n  const {count, start, ilen} = pathVars(points, segment, params);\n  const {move = true, reverse} = params || {};\n  let avgX = 0;\n  let countX = 0;\n  let i, point, prevX, minY, maxY, lastY;\n  const pointIndex = (index) => (start + (reverse ? ilen - index : index)) % count;\n  const drawX = () => {\n    if (minY !== maxY) {\n      ctx.lineTo(avgX, maxY);\n      ctx.lineTo(avgX, minY);\n      ctx.lineTo(avgX, lastY);\n    }\n  };\n  if (move) {\n    point = points[pointIndex(0)];\n    ctx.moveTo(point.x, point.y);\n  }\n  for (i = 0; i <= ilen; ++i) {\n    point = points[pointIndex(i)];\n    if (point.skip) {\n      continue;\n    }\n    const x = point.x;\n    const y = point.y;\n    const truncX = x | 0;\n    if (truncX === prevX) {\n      if (y < minY) {\n        minY = y;\n      } else if (y > maxY) {\n        maxY = y;\n      }\n      avgX = (countX * avgX + x) / ++countX;\n    } else {\n      drawX();\n      ctx.lineTo(x, y);\n      prevX = truncX;\n      countX = 0;\n      minY = maxY = y;\n    }\n    lastY = y;\n  }\n  drawX();\n}\nfunction _getSegmentMethod(line) {\n  const opts = line.options;\n  const borderDash = opts.borderDash && opts.borderDash.length;\n  const useFastPath = !line._decimated && !line._loop && !opts.tension && opts.cubicInterpolationMode !== 'monotone' && !opts.stepped && !borderDash;\n  return useFastPath ? fastPathSegment : pathSegment;\n}\nfunction _getInterpolationMethod(options) {\n  if (options.stepped) {\n    return _steppedInterpolation;\n  }\n  if (options.tension || options.cubicInterpolationMode === 'monotone') {\n    return _bezierInterpolation;\n  }\n  return _pointInLine;\n}\nfunction strokePathWithCache(ctx, line, start, count) {\n  let path = line._path;\n  if (!path) {\n    path = line._path = new Path2D();\n    if (line.path(path, start, count)) {\n      path.closePath();\n    }\n  }\n  setStyle(ctx, line.options);\n  ctx.stroke(path);\n}\nfunction strokePathDirect(ctx, line, start, count) {\n  const {segments, options} = line;\n  const segmentMethod = _getSegmentMethod(line);\n  for (const segment of segments) {\n    setStyle(ctx, options, segment.style);\n    ctx.beginPath();\n    if (segmentMethod(ctx, line, segment, {start, end: start + count - 1})) {\n      ctx.closePath();\n    }\n    ctx.stroke();\n  }\n}\nconst usePath2D = typeof Path2D === 'function';\nfunction draw(ctx, line, start, count) {\n  if (usePath2D && !line.options.segment) {\n    strokePathWithCache(ctx, line, start, count);\n  } else {\n    strokePathDirect(ctx, line, start, count);\n  }\n}\nclass LineElement extends Element {\n  constructor(cfg) {\n    super();\n    this.animated = true;\n    this.options = undefined;\n    this._chart = undefined;\n    this._loop = undefined;\n    this._fullLoop = undefined;\n    this._path = undefined;\n    this._points = undefined;\n    this._segments = undefined;\n    this._decimated = false;\n    this._pointsUpdated = false;\n    this._datasetIndex = undefined;\n    if (cfg) {\n      Object.assign(this, cfg);\n    }\n  }\n  updateControlPoints(chartArea, indexAxis) {\n    const options = this.options;\n    if ((options.tension || options.cubicInterpolationMode === 'monotone') && !options.stepped && !this._pointsUpdated) {\n      const loop = options.spanGaps ? this._loop : this._fullLoop;\n      _updateBezierControlPoints(this._points, options, chartArea, loop, indexAxis);\n      this._pointsUpdated = true;\n    }\n  }\n  set points(points) {\n    this._points = points;\n    delete this._segments;\n    delete this._path;\n    this._pointsUpdated = false;\n  }\n  get points() {\n    return this._points;\n  }\n  get segments() {\n    return this._segments || (this._segments = _computeSegments(this, this.options.segment));\n  }\n  first() {\n    const segments = this.segments;\n    const points = this.points;\n    return segments.length && points[segments[0].start];\n  }\n  last() {\n    const segments = this.segments;\n    const points = this.points;\n    const count = segments.length;\n    return count && points[segments[count - 1].end];\n  }\n  interpolate(point, property) {\n    const options = this.options;\n    const value = point[property];\n    const points = this.points;\n    const segments = _boundSegments(this, {property, start: value, end: value});\n    if (!segments.length) {\n      return;\n    }\n    const result = [];\n    const _interpolate = _getInterpolationMethod(options);\n    let i, ilen;\n    for (i = 0, ilen = segments.length; i < ilen; ++i) {\n      const {start, end} = segments[i];\n      const p1 = points[start];\n      const p2 = points[end];\n      if (p1 === p2) {\n        result.push(p1);\n        continue;\n      }\n      const t = Math.abs((value - p1[property]) / (p2[property] - p1[property]));\n      const interpolated = _interpolate(p1, p2, t, options.stepped);\n      interpolated[property] = point[property];\n      result.push(interpolated);\n    }\n    return result.length === 1 ? result[0] : result;\n  }\n  pathSegment(ctx, segment, params) {\n    const segmentMethod = _getSegmentMethod(this);\n    return segmentMethod(ctx, this, segment, params);\n  }\n  path(ctx, start, count) {\n    const segments = this.segments;\n    const segmentMethod = _getSegmentMethod(this);\n    let loop = this._loop;\n    start = start || 0;\n    count = count || (this.points.length - start);\n    for (const segment of segments) {\n      loop &= segmentMethod(ctx, this, segment, {start, end: start + count - 1});\n    }\n    return !!loop;\n  }\n  draw(ctx, chartArea, start, count) {\n    const options = this.options || {};\n    const points = this.points || [];\n    if (points.length && options.borderWidth) {\n      ctx.save();\n      draw(ctx, this, start, count);\n      ctx.restore();\n    }\n    if (this.animated) {\n      this._pointsUpdated = false;\n      this._path = undefined;\n    }\n  }\n}\nLineElement.id = 'line';\nLineElement.defaults = {\n  borderCapStyle: 'butt',\n  borderDash: [],\n  borderDashOffset: 0,\n  borderJoinStyle: 'miter',\n  borderWidth: 3,\n  capBezierPoints: true,\n  cubicInterpolationMode: 'default',\n  fill: false,\n  spanGaps: false,\n  stepped: false,\n  tension: 0,\n};\nLineElement.defaultRoutes = {\n  backgroundColor: 'backgroundColor',\n  borderColor: 'borderColor'\n};\nLineElement.descriptors = {\n  _scriptable: true,\n  _indexable: (name) => name !== 'borderDash' && name !== 'fill',\n};\n\nfunction inRange$1(el, pos, axis, useFinalPosition) {\n  const options = el.options;\n  const {[axis]: value} = el.getProps([axis], useFinalPosition);\n  return (Math.abs(pos - value) < options.radius + options.hitRadius);\n}\nclass PointElement extends Element {\n  constructor(cfg) {\n    super();\n    this.options = undefined;\n    this.parsed = undefined;\n    this.skip = undefined;\n    this.stop = undefined;\n    if (cfg) {\n      Object.assign(this, cfg);\n    }\n  }\n  inRange(mouseX, mouseY, useFinalPosition) {\n    const options = this.options;\n    const {x, y} = this.getProps(['x', 'y'], useFinalPosition);\n    return ((Math.pow(mouseX - x, 2) + Math.pow(mouseY - y, 2)) < Math.pow(options.hitRadius + options.radius, 2));\n  }\n  inXRange(mouseX, useFinalPosition) {\n    return inRange$1(this, mouseX, 'x', useFinalPosition);\n  }\n  inYRange(mouseY, useFinalPosition) {\n    return inRange$1(this, mouseY, 'y', useFinalPosition);\n  }\n  getCenterPoint(useFinalPosition) {\n    const {x, y} = this.getProps(['x', 'y'], useFinalPosition);\n    return {x, y};\n  }\n  size(options) {\n    options = options || this.options || {};\n    let radius = options.radius || 0;\n    radius = Math.max(radius, radius && options.hoverRadius || 0);\n    const borderWidth = radius && options.borderWidth || 0;\n    return (radius + borderWidth) * 2;\n  }\n  draw(ctx, area) {\n    const options = this.options;\n    if (this.skip || options.radius < 0.1 || !_isPointInArea(this, area, this.size(options) / 2)) {\n      return;\n    }\n    ctx.strokeStyle = options.borderColor;\n    ctx.lineWidth = options.borderWidth;\n    ctx.fillStyle = options.backgroundColor;\n    drawPoint(ctx, options, this.x, this.y);\n  }\n  getRange() {\n    const options = this.options || {};\n    return options.radius + options.hitRadius;\n  }\n}\nPointElement.id = 'point';\nPointElement.defaults = {\n  borderWidth: 1,\n  hitRadius: 1,\n  hoverBorderWidth: 1,\n  hoverRadius: 4,\n  pointStyle: 'circle',\n  radius: 3,\n  rotation: 0\n};\nPointElement.defaultRoutes = {\n  backgroundColor: 'backgroundColor',\n  borderColor: 'borderColor'\n};\n\nfunction getBarBounds(bar, useFinalPosition) {\n  const {x, y, base, width, height} = bar.getProps(['x', 'y', 'base', 'width', 'height'], useFinalPosition);\n  let left, right, top, bottom, half;\n  if (bar.horizontal) {\n    half = height / 2;\n    left = Math.min(x, base);\n    right = Math.max(x, base);\n    top = y - half;\n    bottom = y + half;\n  } else {\n    half = width / 2;\n    left = x - half;\n    right = x + half;\n    top = Math.min(y, base);\n    bottom = Math.max(y, base);\n  }\n  return {left, top, right, bottom};\n}\nfunction skipOrLimit(skip, value, min, max) {\n  return skip ? 0 : _limitValue(value, min, max);\n}\nfunction parseBorderWidth(bar, maxW, maxH) {\n  const value = bar.options.borderWidth;\n  const skip = bar.borderSkipped;\n  const o = toTRBL(value);\n  return {\n    t: skipOrLimit(skip.top, o.top, 0, maxH),\n    r: skipOrLimit(skip.right, o.right, 0, maxW),\n    b: skipOrLimit(skip.bottom, o.bottom, 0, maxH),\n    l: skipOrLimit(skip.left, o.left, 0, maxW)\n  };\n}\nfunction parseBorderRadius(bar, maxW, maxH) {\n  const {enableBorderRadius} = bar.getProps(['enableBorderRadius']);\n  const value = bar.options.borderRadius;\n  const o = toTRBLCorners(value);\n  const maxR = Math.min(maxW, maxH);\n  const skip = bar.borderSkipped;\n  const enableBorder = enableBorderRadius || isObject(value);\n  return {\n    topLeft: skipOrLimit(!enableBorder || skip.top || skip.left, o.topLeft, 0, maxR),\n    topRight: skipOrLimit(!enableBorder || skip.top || skip.right, o.topRight, 0, maxR),\n    bottomLeft: skipOrLimit(!enableBorder || skip.bottom || skip.left, o.bottomLeft, 0, maxR),\n    bottomRight: skipOrLimit(!enableBorder || skip.bottom || skip.right, o.bottomRight, 0, maxR)\n  };\n}\nfunction boundingRects(bar) {\n  const bounds = getBarBounds(bar);\n  const width = bounds.right - bounds.left;\n  const height = bounds.bottom - bounds.top;\n  const border = parseBorderWidth(bar, width / 2, height / 2);\n  const radius = parseBorderRadius(bar, width / 2, height / 2);\n  return {\n    outer: {\n      x: bounds.left,\n      y: bounds.top,\n      w: width,\n      h: height,\n      radius\n    },\n    inner: {\n      x: bounds.left + border.l,\n      y: bounds.top + border.t,\n      w: width - border.l - border.r,\n      h: height - border.t - border.b,\n      radius: {\n        topLeft: Math.max(0, radius.topLeft - Math.max(border.t, border.l)),\n        topRight: Math.max(0, radius.topRight - Math.max(border.t, border.r)),\n        bottomLeft: Math.max(0, radius.bottomLeft - Math.max(border.b, border.l)),\n        bottomRight: Math.max(0, radius.bottomRight - Math.max(border.b, border.r)),\n      }\n    }\n  };\n}\nfunction inRange(bar, x, y, useFinalPosition) {\n  const skipX = x === null;\n  const skipY = y === null;\n  const skipBoth = skipX && skipY;\n  const bounds = bar && !skipBoth && getBarBounds(bar, useFinalPosition);\n  return bounds\n\t\t&& (skipX || _isBetween(x, bounds.left, bounds.right))\n\t\t&& (skipY || _isBetween(y, bounds.top, bounds.bottom));\n}\nfunction hasRadius(radius) {\n  return radius.topLeft || radius.topRight || radius.bottomLeft || radius.bottomRight;\n}\nfunction addNormalRectPath(ctx, rect) {\n  ctx.rect(rect.x, rect.y, rect.w, rect.h);\n}\nfunction inflateRect(rect, amount, refRect = {}) {\n  const x = rect.x !== refRect.x ? -amount : 0;\n  const y = rect.y !== refRect.y ? -amount : 0;\n  const w = (rect.x + rect.w !== refRect.x + refRect.w ? amount : 0) - x;\n  const h = (rect.y + rect.h !== refRect.y + refRect.h ? amount : 0) - y;\n  return {\n    x: rect.x + x,\n    y: rect.y + y,\n    w: rect.w + w,\n    h: rect.h + h,\n    radius: rect.radius\n  };\n}\nclass BarElement extends Element {\n  constructor(cfg) {\n    super();\n    this.options = undefined;\n    this.horizontal = undefined;\n    this.base = undefined;\n    this.width = undefined;\n    this.height = undefined;\n    this.inflateAmount = undefined;\n    if (cfg) {\n      Object.assign(this, cfg);\n    }\n  }\n  draw(ctx) {\n    const {inflateAmount, options: {borderColor, backgroundColor}} = this;\n    const {inner, outer} = boundingRects(this);\n    const addRectPath = hasRadius(outer.radius) ? addRoundedRectPath : addNormalRectPath;\n    ctx.save();\n    if (outer.w !== inner.w || outer.h !== inner.h) {\n      ctx.beginPath();\n      addRectPath(ctx, inflateRect(outer, inflateAmount, inner));\n      ctx.clip();\n      addRectPath(ctx, inflateRect(inner, -inflateAmount, outer));\n      ctx.fillStyle = borderColor;\n      ctx.fill('evenodd');\n    }\n    ctx.beginPath();\n    addRectPath(ctx, inflateRect(inner, inflateAmount));\n    ctx.fillStyle = backgroundColor;\n    ctx.fill();\n    ctx.restore();\n  }\n  inRange(mouseX, mouseY, useFinalPosition) {\n    return inRange(this, mouseX, mouseY, useFinalPosition);\n  }\n  inXRange(mouseX, useFinalPosition) {\n    return inRange(this, mouseX, null, useFinalPosition);\n  }\n  inYRange(mouseY, useFinalPosition) {\n    return inRange(this, null, mouseY, useFinalPosition);\n  }\n  getCenterPoint(useFinalPosition) {\n    const {x, y, base, horizontal} = this.getProps(['x', 'y', 'base', 'horizontal'], useFinalPosition);\n    return {\n      x: horizontal ? (x + base) / 2 : x,\n      y: horizontal ? y : (y + base) / 2\n    };\n  }\n  getRange(axis) {\n    return axis === 'x' ? this.width / 2 : this.height / 2;\n  }\n}\nBarElement.id = 'bar';\nBarElement.defaults = {\n  borderSkipped: 'start',\n  borderWidth: 0,\n  borderRadius: 0,\n  inflateAmount: 'auto',\n  pointStyle: undefined\n};\nBarElement.defaultRoutes = {\n  backgroundColor: 'backgroundColor',\n  borderColor: 'borderColor'\n};\n\nvar elements = /*#__PURE__*/Object.freeze({\n__proto__: null,\nArcElement: ArcElement,\nLineElement: LineElement,\nPointElement: PointElement,\nBarElement: BarElement\n});\n\nfunction lttbDecimation(data, start, count, availableWidth, options) {\n  const samples = options.samples || availableWidth;\n  if (samples >= count) {\n    return data.slice(start, start + count);\n  }\n  const decimated = [];\n  const bucketWidth = (count - 2) / (samples - 2);\n  let sampledIndex = 0;\n  const endIndex = start + count - 1;\n  let a = start;\n  let i, maxAreaPoint, maxArea, area, nextA;\n  decimated[sampledIndex++] = data[a];\n  for (i = 0; i < samples - 2; i++) {\n    let avgX = 0;\n    let avgY = 0;\n    let j;\n    const avgRangeStart = Math.floor((i + 1) * bucketWidth) + 1 + start;\n    const avgRangeEnd = Math.min(Math.floor((i + 2) * bucketWidth) + 1, count) + start;\n    const avgRangeLength = avgRangeEnd - avgRangeStart;\n    for (j = avgRangeStart; j < avgRangeEnd; j++) {\n      avgX += data[j].x;\n      avgY += data[j].y;\n    }\n    avgX /= avgRangeLength;\n    avgY /= avgRangeLength;\n    const rangeOffs = Math.floor(i * bucketWidth) + 1 + start;\n    const rangeTo = Math.min(Math.floor((i + 1) * bucketWidth) + 1, count) + start;\n    const {x: pointAx, y: pointAy} = data[a];\n    maxArea = area = -1;\n    for (j = rangeOffs; j < rangeTo; j++) {\n      area = 0.5 * Math.abs(\n        (pointAx - avgX) * (data[j].y - pointAy) -\n        (pointAx - data[j].x) * (avgY - pointAy)\n      );\n      if (area > maxArea) {\n        maxArea = area;\n        maxAreaPoint = data[j];\n        nextA = j;\n      }\n    }\n    decimated[sampledIndex++] = maxAreaPoint;\n    a = nextA;\n  }\n  decimated[sampledIndex++] = data[endIndex];\n  return decimated;\n}\nfunction minMaxDecimation(data, start, count, availableWidth) {\n  let avgX = 0;\n  let countX = 0;\n  let i, point, x, y, prevX, minIndex, maxIndex, startIndex, minY, maxY;\n  const decimated = [];\n  const endIndex = start + count - 1;\n  const xMin = data[start].x;\n  const xMax = data[endIndex].x;\n  const dx = xMax - xMin;\n  for (i = start; i < start + count; ++i) {\n    point = data[i];\n    x = (point.x - xMin) / dx * availableWidth;\n    y = point.y;\n    const truncX = x | 0;\n    if (truncX === prevX) {\n      if (y < minY) {\n        minY = y;\n        minIndex = i;\n      } else if (y > maxY) {\n        maxY = y;\n        maxIndex = i;\n      }\n      avgX = (countX * avgX + point.x) / ++countX;\n    } else {\n      const lastIndex = i - 1;\n      if (!isNullOrUndef(minIndex) && !isNullOrUndef(maxIndex)) {\n        const intermediateIndex1 = Math.min(minIndex, maxIndex);\n        const intermediateIndex2 = Math.max(minIndex, maxIndex);\n        if (intermediateIndex1 !== startIndex && intermediateIndex1 !== lastIndex) {\n          decimated.push({\n            ...data[intermediateIndex1],\n            x: avgX,\n          });\n        }\n        if (intermediateIndex2 !== startIndex && intermediateIndex2 !== lastIndex) {\n          decimated.push({\n            ...data[intermediateIndex2],\n            x: avgX\n          });\n        }\n      }\n      if (i > 0 && lastIndex !== startIndex) {\n        decimated.push(data[lastIndex]);\n      }\n      decimated.push(point);\n      prevX = truncX;\n      countX = 0;\n      minY = maxY = y;\n      minIndex = maxIndex = startIndex = i;\n    }\n  }\n  return decimated;\n}\nfunction cleanDecimatedDataset(dataset) {\n  if (dataset._decimated) {\n    const data = dataset._data;\n    delete dataset._decimated;\n    delete dataset._data;\n    Object.defineProperty(dataset, 'data', {value: data});\n  }\n}\nfunction cleanDecimatedData(chart) {\n  chart.data.datasets.forEach((dataset) => {\n    cleanDecimatedDataset(dataset);\n  });\n}\nfunction getStartAndCountOfVisiblePointsSimplified(meta, points) {\n  const pointCount = points.length;\n  let start = 0;\n  let count;\n  const {iScale} = meta;\n  const {min, max, minDefined, maxDefined} = iScale.getUserBounds();\n  if (minDefined) {\n    start = _limitValue(_lookupByKey(points, iScale.axis, min).lo, 0, pointCount - 1);\n  }\n  if (maxDefined) {\n    count = _limitValue(_lookupByKey(points, iScale.axis, max).hi + 1, start, pointCount) - start;\n  } else {\n    count = pointCount - start;\n  }\n  return {start, count};\n}\nvar plugin_decimation = {\n  id: 'decimation',\n  defaults: {\n    algorithm: 'min-max',\n    enabled: false,\n  },\n  beforeElementsUpdate: (chart, args, options) => {\n    if (!options.enabled) {\n      cleanDecimatedData(chart);\n      return;\n    }\n    const availableWidth = chart.width;\n    chart.data.datasets.forEach((dataset, datasetIndex) => {\n      const {_data, indexAxis} = dataset;\n      const meta = chart.getDatasetMeta(datasetIndex);\n      const data = _data || dataset.data;\n      if (resolve([indexAxis, chart.options.indexAxis]) === 'y') {\n        return;\n      }\n      if (!meta.controller.supportsDecimation) {\n        return;\n      }\n      const xAxis = chart.scales[meta.xAxisID];\n      if (xAxis.type !== 'linear' && xAxis.type !== 'time') {\n        return;\n      }\n      if (chart.options.parsing) {\n        return;\n      }\n      let {start, count} = getStartAndCountOfVisiblePointsSimplified(meta, data);\n      const threshold = options.threshold || 4 * availableWidth;\n      if (count <= threshold) {\n        cleanDecimatedDataset(dataset);\n        return;\n      }\n      if (isNullOrUndef(_data)) {\n        dataset._data = data;\n        delete dataset.data;\n        Object.defineProperty(dataset, 'data', {\n          configurable: true,\n          enumerable: true,\n          get: function() {\n            return this._decimated;\n          },\n          set: function(d) {\n            this._data = d;\n          }\n        });\n      }\n      let decimated;\n      switch (options.algorithm) {\n      case 'lttb':\n        decimated = lttbDecimation(data, start, count, availableWidth, options);\n        break;\n      case 'min-max':\n        decimated = minMaxDecimation(data, start, count, availableWidth);\n        break;\n      default:\n        throw new Error(`Unsupported decimation algorithm '${options.algorithm}'`);\n      }\n      dataset._decimated = decimated;\n    });\n  },\n  destroy(chart) {\n    cleanDecimatedData(chart);\n  }\n};\n\nfunction _segments(line, target, property) {\n  const segments = line.segments;\n  const points = line.points;\n  const tpoints = target.points;\n  const parts = [];\n  for (const segment of segments) {\n    let {start, end} = segment;\n    end = _findSegmentEnd(start, end, points);\n    const bounds = _getBounds(property, points[start], points[end], segment.loop);\n    if (!target.segments) {\n      parts.push({\n        source: segment,\n        target: bounds,\n        start: points[start],\n        end: points[end]\n      });\n      continue;\n    }\n    const targetSegments = _boundSegments(target, bounds);\n    for (const tgt of targetSegments) {\n      const subBounds = _getBounds(property, tpoints[tgt.start], tpoints[tgt.end], tgt.loop);\n      const fillSources = _boundSegment(segment, points, subBounds);\n      for (const fillSource of fillSources) {\n        parts.push({\n          source: fillSource,\n          target: tgt,\n          start: {\n            [property]: _getEdge(bounds, subBounds, 'start', Math.max)\n          },\n          end: {\n            [property]: _getEdge(bounds, subBounds, 'end', Math.min)\n          }\n        });\n      }\n    }\n  }\n  return parts;\n}\nfunction _getBounds(property, first, last, loop) {\n  if (loop) {\n    return;\n  }\n  let start = first[property];\n  let end = last[property];\n  if (property === 'angle') {\n    start = _normalizeAngle(start);\n    end = _normalizeAngle(end);\n  }\n  return {property, start, end};\n}\nfunction _pointsFromSegments(boundary, line) {\n  const {x = null, y = null} = boundary || {};\n  const linePoints = line.points;\n  const points = [];\n  line.segments.forEach(({start, end}) => {\n    end = _findSegmentEnd(start, end, linePoints);\n    const first = linePoints[start];\n    const last = linePoints[end];\n    if (y !== null) {\n      points.push({x: first.x, y});\n      points.push({x: last.x, y});\n    } else if (x !== null) {\n      points.push({x, y: first.y});\n      points.push({x, y: last.y});\n    }\n  });\n  return points;\n}\nfunction _findSegmentEnd(start, end, points) {\n  for (;end > start; end--) {\n    const point = points[end];\n    if (!isNaN(point.x) && !isNaN(point.y)) {\n      break;\n    }\n  }\n  return end;\n}\nfunction _getEdge(a, b, prop, fn) {\n  if (a && b) {\n    return fn(a[prop], b[prop]);\n  }\n  return a ? a[prop] : b ? b[prop] : 0;\n}\n\nfunction _createBoundaryLine(boundary, line) {\n  let points = [];\n  let _loop = false;\n  if (isArray(boundary)) {\n    _loop = true;\n    points = boundary;\n  } else {\n    points = _pointsFromSegments(boundary, line);\n  }\n  return points.length ? new LineElement({\n    points,\n    options: {tension: 0},\n    _loop,\n    _fullLoop: _loop\n  }) : null;\n}\nfunction _shouldApplyFill(source) {\n  return source && source.fill !== false;\n}\n\nfunction _resolveTarget(sources, index, propagate) {\n  const source = sources[index];\n  let fill = source.fill;\n  const visited = [index];\n  let target;\n  if (!propagate) {\n    return fill;\n  }\n  while (fill !== false && visited.indexOf(fill) === -1) {\n    if (!isNumberFinite(fill)) {\n      return fill;\n    }\n    target = sources[fill];\n    if (!target) {\n      return false;\n    }\n    if (target.visible) {\n      return fill;\n    }\n    visited.push(fill);\n    fill = target.fill;\n  }\n  return false;\n}\nfunction _decodeFill(line, index, count) {\n  const fill = parseFillOption(line);\n  if (isObject(fill)) {\n    return isNaN(fill.value) ? false : fill;\n  }\n  let target = parseFloat(fill);\n  if (isNumberFinite(target) && Math.floor(target) === target) {\n    return decodeTargetIndex(fill[0], index, target, count);\n  }\n  return ['origin', 'start', 'end', 'stack', 'shape'].indexOf(fill) >= 0 && fill;\n}\nfunction decodeTargetIndex(firstCh, index, target, count) {\n  if (firstCh === '-' || firstCh === '+') {\n    target = index + target;\n  }\n  if (target === index || target < 0 || target >= count) {\n    return false;\n  }\n  return target;\n}\nfunction _getTargetPixel(fill, scale) {\n  let pixel = null;\n  if (fill === 'start') {\n    pixel = scale.bottom;\n  } else if (fill === 'end') {\n    pixel = scale.top;\n  } else if (isObject(fill)) {\n    pixel = scale.getPixelForValue(fill.value);\n  } else if (scale.getBasePixel) {\n    pixel = scale.getBasePixel();\n  }\n  return pixel;\n}\nfunction _getTargetValue(fill, scale, startValue) {\n  let value;\n  if (fill === 'start') {\n    value = startValue;\n  } else if (fill === 'end') {\n    value = scale.options.reverse ? scale.min : scale.max;\n  } else if (isObject(fill)) {\n    value = fill.value;\n  } else {\n    value = scale.getBaseValue();\n  }\n  return value;\n}\nfunction parseFillOption(line) {\n  const options = line.options;\n  const fillOption = options.fill;\n  let fill = valueOrDefault(fillOption && fillOption.target, fillOption);\n  if (fill === undefined) {\n    fill = !!options.backgroundColor;\n  }\n  if (fill === false || fill === null) {\n    return false;\n  }\n  if (fill === true) {\n    return 'origin';\n  }\n  return fill;\n}\n\nfunction _buildStackLine(source) {\n  const {scale, index, line} = source;\n  const points = [];\n  const segments = line.segments;\n  const sourcePoints = line.points;\n  const linesBelow = getLinesBelow(scale, index);\n  linesBelow.push(_createBoundaryLine({x: null, y: scale.bottom}, line));\n  for (let i = 0; i < segments.length; i++) {\n    const segment = segments[i];\n    for (let j = segment.start; j <= segment.end; j++) {\n      addPointsBelow(points, sourcePoints[j], linesBelow);\n    }\n  }\n  return new LineElement({points, options: {}});\n}\nfunction getLinesBelow(scale, index) {\n  const below = [];\n  const metas = scale.getMatchingVisibleMetas('line');\n  for (let i = 0; i < metas.length; i++) {\n    const meta = metas[i];\n    if (meta.index === index) {\n      break;\n    }\n    if (!meta.hidden) {\n      below.unshift(meta.dataset);\n    }\n  }\n  return below;\n}\nfunction addPointsBelow(points, sourcePoint, linesBelow) {\n  const postponed = [];\n  for (let j = 0; j < linesBelow.length; j++) {\n    const line = linesBelow[j];\n    const {first, last, point} = findPoint(line, sourcePoint, 'x');\n    if (!point || (first && last)) {\n      continue;\n    }\n    if (first) {\n      postponed.unshift(point);\n    } else {\n      points.push(point);\n      if (!last) {\n        break;\n      }\n    }\n  }\n  points.push(...postponed);\n}\nfunction findPoint(line, sourcePoint, property) {\n  const point = line.interpolate(sourcePoint, property);\n  if (!point) {\n    return {};\n  }\n  const pointValue = point[property];\n  const segments = line.segments;\n  const linePoints = line.points;\n  let first = false;\n  let last = false;\n  for (let i = 0; i < segments.length; i++) {\n    const segment = segments[i];\n    const firstValue = linePoints[segment.start][property];\n    const lastValue = linePoints[segment.end][property];\n    if (_isBetween(pointValue, firstValue, lastValue)) {\n      first = pointValue === firstValue;\n      last = pointValue === lastValue;\n      break;\n    }\n  }\n  return {first, last, point};\n}\n\nclass simpleArc {\n  constructor(opts) {\n    this.x = opts.x;\n    this.y = opts.y;\n    this.radius = opts.radius;\n  }\n  pathSegment(ctx, bounds, opts) {\n    const {x, y, radius} = this;\n    bounds = bounds || {start: 0, end: TAU};\n    ctx.arc(x, y, radius, bounds.end, bounds.start, true);\n    return !opts.bounds;\n  }\n  interpolate(point) {\n    const {x, y, radius} = this;\n    const angle = point.angle;\n    return {\n      x: x + Math.cos(angle) * radius,\n      y: y + Math.sin(angle) * radius,\n      angle\n    };\n  }\n}\n\nfunction _getTarget(source) {\n  const {chart, fill, line} = source;\n  if (isNumberFinite(fill)) {\n    return getLineByIndex(chart, fill);\n  }\n  if (fill === 'stack') {\n    return _buildStackLine(source);\n  }\n  if (fill === 'shape') {\n    return true;\n  }\n  const boundary = computeBoundary(source);\n  if (boundary instanceof simpleArc) {\n    return boundary;\n  }\n  return _createBoundaryLine(boundary, line);\n}\nfunction getLineByIndex(chart, index) {\n  const meta = chart.getDatasetMeta(index);\n  const visible = meta && chart.isDatasetVisible(index);\n  return visible ? meta.dataset : null;\n}\nfunction computeBoundary(source) {\n  const scale = source.scale || {};\n  if (scale.getPointPositionForValue) {\n    return computeCircularBoundary(source);\n  }\n  return computeLinearBoundary(source);\n}\nfunction computeLinearBoundary(source) {\n  const {scale = {}, fill} = source;\n  const pixel = _getTargetPixel(fill, scale);\n  if (isNumberFinite(pixel)) {\n    const horizontal = scale.isHorizontal();\n    return {\n      x: horizontal ? pixel : null,\n      y: horizontal ? null : pixel\n    };\n  }\n  return null;\n}\nfunction computeCircularBoundary(source) {\n  const {scale, fill} = source;\n  const options = scale.options;\n  const length = scale.getLabels().length;\n  const start = options.reverse ? scale.max : scale.min;\n  const value = _getTargetValue(fill, scale, start);\n  const target = [];\n  if (options.grid.circular) {\n    const center = scale.getPointPositionForValue(0, start);\n    return new simpleArc({\n      x: center.x,\n      y: center.y,\n      radius: scale.getDistanceFromCenterForValue(value)\n    });\n  }\n  for (let i = 0; i < length; ++i) {\n    target.push(scale.getPointPositionForValue(i, value));\n  }\n  return target;\n}\n\nfunction _drawfill(ctx, source, area) {\n  const target = _getTarget(source);\n  const {line, scale, axis} = source;\n  const lineOpts = line.options;\n  const fillOption = lineOpts.fill;\n  const color = lineOpts.backgroundColor;\n  const {above = color, below = color} = fillOption || {};\n  if (target && line.points.length) {\n    clipArea(ctx, area);\n    doFill(ctx, {line, target, above, below, area, scale, axis});\n    unclipArea(ctx);\n  }\n}\nfunction doFill(ctx, cfg) {\n  const {line, target, above, below, area, scale} = cfg;\n  const property = line._loop ? 'angle' : cfg.axis;\n  ctx.save();\n  if (property === 'x' && below !== above) {\n    clipVertical(ctx, target, area.top);\n    fill(ctx, {line, target, color: above, scale, property});\n    ctx.restore();\n    ctx.save();\n    clipVertical(ctx, target, area.bottom);\n  }\n  fill(ctx, {line, target, color: below, scale, property});\n  ctx.restore();\n}\nfunction clipVertical(ctx, target, clipY) {\n  const {segments, points} = target;\n  let first = true;\n  let lineLoop = false;\n  ctx.beginPath();\n  for (const segment of segments) {\n    const {start, end} = segment;\n    const firstPoint = points[start];\n    const lastPoint = points[_findSegmentEnd(start, end, points)];\n    if (first) {\n      ctx.moveTo(firstPoint.x, firstPoint.y);\n      first = false;\n    } else {\n      ctx.lineTo(firstPoint.x, clipY);\n      ctx.lineTo(firstPoint.x, firstPoint.y);\n    }\n    lineLoop = !!target.pathSegment(ctx, segment, {move: lineLoop});\n    if (lineLoop) {\n      ctx.closePath();\n    } else {\n      ctx.lineTo(lastPoint.x, clipY);\n    }\n  }\n  ctx.lineTo(target.first().x, clipY);\n  ctx.closePath();\n  ctx.clip();\n}\nfunction fill(ctx, cfg) {\n  const {line, target, property, color, scale} = cfg;\n  const segments = _segments(line, target, property);\n  for (const {source: src, target: tgt, start, end} of segments) {\n    const {style: {backgroundColor = color} = {}} = src;\n    const notShape = target !== true;\n    ctx.save();\n    ctx.fillStyle = backgroundColor;\n    clipBounds(ctx, scale, notShape && _getBounds(property, start, end));\n    ctx.beginPath();\n    const lineLoop = !!line.pathSegment(ctx, src);\n    let loop;\n    if (notShape) {\n      if (lineLoop) {\n        ctx.closePath();\n      } else {\n        interpolatedLineTo(ctx, target, end, property);\n      }\n      const targetLoop = !!target.pathSegment(ctx, tgt, {move: lineLoop, reverse: true});\n      loop = lineLoop && targetLoop;\n      if (!loop) {\n        interpolatedLineTo(ctx, target, start, property);\n      }\n    }\n    ctx.closePath();\n    ctx.fill(loop ? 'evenodd' : 'nonzero');\n    ctx.restore();\n  }\n}\nfunction clipBounds(ctx, scale, bounds) {\n  const {top, bottom} = scale.chart.chartArea;\n  const {property, start, end} = bounds || {};\n  if (property === 'x') {\n    ctx.beginPath();\n    ctx.rect(start, top, end - start, bottom - top);\n    ctx.clip();\n  }\n}\nfunction interpolatedLineTo(ctx, target, point, property) {\n  const interpolatedPoint = target.interpolate(point, property);\n  if (interpolatedPoint) {\n    ctx.lineTo(interpolatedPoint.x, interpolatedPoint.y);\n  }\n}\n\nvar index = {\n  id: 'filler',\n  afterDatasetsUpdate(chart, _args, options) {\n    const count = (chart.data.datasets || []).length;\n    const sources = [];\n    let meta, i, line, source;\n    for (i = 0; i < count; ++i) {\n      meta = chart.getDatasetMeta(i);\n      line = meta.dataset;\n      source = null;\n      if (line && line.options && line instanceof LineElement) {\n        source = {\n          visible: chart.isDatasetVisible(i),\n          index: i,\n          fill: _decodeFill(line, i, count),\n          chart,\n          axis: meta.controller.options.indexAxis,\n          scale: meta.vScale,\n          line,\n        };\n      }\n      meta.$filler = source;\n      sources.push(source);\n    }\n    for (i = 0; i < count; ++i) {\n      source = sources[i];\n      if (!source || source.fill === false) {\n        continue;\n      }\n      source.fill = _resolveTarget(sources, i, options.propagate);\n    }\n  },\n  beforeDraw(chart, _args, options) {\n    const draw = options.drawTime === 'beforeDraw';\n    const metasets = chart.getSortedVisibleDatasetMetas();\n    const area = chart.chartArea;\n    for (let i = metasets.length - 1; i >= 0; --i) {\n      const source = metasets[i].$filler;\n      if (!source) {\n        continue;\n      }\n      source.line.updateControlPoints(area, source.axis);\n      if (draw && source.fill) {\n        _drawfill(chart.ctx, source, area);\n      }\n    }\n  },\n  beforeDatasetsDraw(chart, _args, options) {\n    if (options.drawTime !== 'beforeDatasetsDraw') {\n      return;\n    }\n    const metasets = chart.getSortedVisibleDatasetMetas();\n    for (let i = metasets.length - 1; i >= 0; --i) {\n      const source = metasets[i].$filler;\n      if (_shouldApplyFill(source)) {\n        _drawfill(chart.ctx, source, chart.chartArea);\n      }\n    }\n  },\n  beforeDatasetDraw(chart, args, options) {\n    const source = args.meta.$filler;\n    if (!_shouldApplyFill(source) || options.drawTime !== 'beforeDatasetDraw') {\n      return;\n    }\n    _drawfill(chart.ctx, source, chart.chartArea);\n  },\n  defaults: {\n    propagate: true,\n    drawTime: 'beforeDatasetDraw'\n  }\n};\n\nconst getBoxSize = (labelOpts, fontSize) => {\n  let {boxHeight = fontSize, boxWidth = fontSize} = labelOpts;\n  if (labelOpts.usePointStyle) {\n    boxHeight = Math.min(boxHeight, fontSize);\n    boxWidth = labelOpts.pointStyleWidth || Math.min(boxWidth, fontSize);\n  }\n  return {\n    boxWidth,\n    boxHeight,\n    itemHeight: Math.max(fontSize, boxHeight)\n  };\n};\nconst itemsEqual = (a, b) => a !== null && b !== null && a.datasetIndex === b.datasetIndex && a.index === b.index;\nclass Legend extends Element {\n  constructor(config) {\n    super();\n    this._added = false;\n    this.legendHitBoxes = [];\n    this._hoveredItem = null;\n    this.doughnutMode = false;\n    this.chart = config.chart;\n    this.options = config.options;\n    this.ctx = config.ctx;\n    this.legendItems = undefined;\n    this.columnSizes = undefined;\n    this.lineWidths = undefined;\n    this.maxHeight = undefined;\n    this.maxWidth = undefined;\n    this.top = undefined;\n    this.bottom = undefined;\n    this.left = undefined;\n    this.right = undefined;\n    this.height = undefined;\n    this.width = undefined;\n    this._margins = undefined;\n    this.position = undefined;\n    this.weight = undefined;\n    this.fullSize = undefined;\n  }\n  update(maxWidth, maxHeight, margins) {\n    this.maxWidth = maxWidth;\n    this.maxHeight = maxHeight;\n    this._margins = margins;\n    this.setDimensions();\n    this.buildLabels();\n    this.fit();\n  }\n  setDimensions() {\n    if (this.isHorizontal()) {\n      this.width = this.maxWidth;\n      this.left = this._margins.left;\n      this.right = this.width;\n    } else {\n      this.height = this.maxHeight;\n      this.top = this._margins.top;\n      this.bottom = this.height;\n    }\n  }\n  buildLabels() {\n    const labelOpts = this.options.labels || {};\n    let legendItems = callback(labelOpts.generateLabels, [this.chart], this) || [];\n    if (labelOpts.filter) {\n      legendItems = legendItems.filter((item) => labelOpts.filter(item, this.chart.data));\n    }\n    if (labelOpts.sort) {\n      legendItems = legendItems.sort((a, b) => labelOpts.sort(a, b, this.chart.data));\n    }\n    if (this.options.reverse) {\n      legendItems.reverse();\n    }\n    this.legendItems = legendItems;\n  }\n  fit() {\n    const {options, ctx} = this;\n    if (!options.display) {\n      this.width = this.height = 0;\n      return;\n    }\n    const labelOpts = options.labels;\n    const labelFont = toFont(labelOpts.font);\n    const fontSize = labelFont.size;\n    const titleHeight = this._computeTitleHeight();\n    const {boxWidth, itemHeight} = getBoxSize(labelOpts, fontSize);\n    let width, height;\n    ctx.font = labelFont.string;\n    if (this.isHorizontal()) {\n      width = this.maxWidth;\n      height = this._fitRows(titleHeight, fontSize, boxWidth, itemHeight) + 10;\n    } else {\n      height = this.maxHeight;\n      width = this._fitCols(titleHeight, fontSize, boxWidth, itemHeight) + 10;\n    }\n    this.width = Math.min(width, options.maxWidth || this.maxWidth);\n    this.height = Math.min(height, options.maxHeight || this.maxHeight);\n  }\n  _fitRows(titleHeight, fontSize, boxWidth, itemHeight) {\n    const {ctx, maxWidth, options: {labels: {padding}}} = this;\n    const hitboxes = this.legendHitBoxes = [];\n    const lineWidths = this.lineWidths = [0];\n    const lineHeight = itemHeight + padding;\n    let totalHeight = titleHeight;\n    ctx.textAlign = 'left';\n    ctx.textBaseline = 'middle';\n    let row = -1;\n    let top = -lineHeight;\n    this.legendItems.forEach((legendItem, i) => {\n      const itemWidth = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;\n      if (i === 0 || lineWidths[lineWidths.length - 1] + itemWidth + 2 * padding > maxWidth) {\n        totalHeight += lineHeight;\n        lineWidths[lineWidths.length - (i > 0 ? 0 : 1)] = 0;\n        top += lineHeight;\n        row++;\n      }\n      hitboxes[i] = {left: 0, top, row, width: itemWidth, height: itemHeight};\n      lineWidths[lineWidths.length - 1] += itemWidth + padding;\n    });\n    return totalHeight;\n  }\n  _fitCols(titleHeight, fontSize, boxWidth, itemHeight) {\n    const {ctx, maxHeight, options: {labels: {padding}}} = this;\n    const hitboxes = this.legendHitBoxes = [];\n    const columnSizes = this.columnSizes = [];\n    const heightLimit = maxHeight - titleHeight;\n    let totalWidth = padding;\n    let currentColWidth = 0;\n    let currentColHeight = 0;\n    let left = 0;\n    let col = 0;\n    this.legendItems.forEach((legendItem, i) => {\n      const itemWidth = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;\n      if (i > 0 && currentColHeight + itemHeight + 2 * padding > heightLimit) {\n        totalWidth += currentColWidth + padding;\n        columnSizes.push({width: currentColWidth, height: currentColHeight});\n        left += currentColWidth + padding;\n        col++;\n        currentColWidth = currentColHeight = 0;\n      }\n      hitboxes[i] = {left, top: currentColHeight, col, width: itemWidth, height: itemHeight};\n      currentColWidth = Math.max(currentColWidth, itemWidth);\n      currentColHeight += itemHeight + padding;\n    });\n    totalWidth += currentColWidth;\n    columnSizes.push({width: currentColWidth, height: currentColHeight});\n    return totalWidth;\n  }\n  adjustHitBoxes() {\n    if (!this.options.display) {\n      return;\n    }\n    const titleHeight = this._computeTitleHeight();\n    const {legendHitBoxes: hitboxes, options: {align, labels: {padding}, rtl}} = this;\n    const rtlHelper = getRtlAdapter(rtl, this.left, this.width);\n    if (this.isHorizontal()) {\n      let row = 0;\n      let left = _alignStartEnd(align, this.left + padding, this.right - this.lineWidths[row]);\n      for (const hitbox of hitboxes) {\n        if (row !== hitbox.row) {\n          row = hitbox.row;\n          left = _alignStartEnd(align, this.left + padding, this.right - this.lineWidths[row]);\n        }\n        hitbox.top += this.top + titleHeight + padding;\n        hitbox.left = rtlHelper.leftForLtr(rtlHelper.x(left), hitbox.width);\n        left += hitbox.width + padding;\n      }\n    } else {\n      let col = 0;\n      let top = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - this.columnSizes[col].height);\n      for (const hitbox of hitboxes) {\n        if (hitbox.col !== col) {\n          col = hitbox.col;\n          top = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - this.columnSizes[col].height);\n        }\n        hitbox.top = top;\n        hitbox.left += this.left + padding;\n        hitbox.left = rtlHelper.leftForLtr(rtlHelper.x(hitbox.left), hitbox.width);\n        top += hitbox.height + padding;\n      }\n    }\n  }\n  isHorizontal() {\n    return this.options.position === 'top' || this.options.position === 'bottom';\n  }\n  draw() {\n    if (this.options.display) {\n      const ctx = this.ctx;\n      clipArea(ctx, this);\n      this._draw();\n      unclipArea(ctx);\n    }\n  }\n  _draw() {\n    const {options: opts, columnSizes, lineWidths, ctx} = this;\n    const {align, labels: labelOpts} = opts;\n    const defaultColor = defaults.color;\n    const rtlHelper = getRtlAdapter(opts.rtl, this.left, this.width);\n    const labelFont = toFont(labelOpts.font);\n    const {color: fontColor, padding} = labelOpts;\n    const fontSize = labelFont.size;\n    const halfFontSize = fontSize / 2;\n    let cursor;\n    this.drawTitle();\n    ctx.textAlign = rtlHelper.textAlign('left');\n    ctx.textBaseline = 'middle';\n    ctx.lineWidth = 0.5;\n    ctx.font = labelFont.string;\n    const {boxWidth, boxHeight, itemHeight} = getBoxSize(labelOpts, fontSize);\n    const drawLegendBox = function(x, y, legendItem) {\n      if (isNaN(boxWidth) || boxWidth <= 0 || isNaN(boxHeight) || boxHeight < 0) {\n        return;\n      }\n      ctx.save();\n      const lineWidth = valueOrDefault(legendItem.lineWidth, 1);\n      ctx.fillStyle = valueOrDefault(legendItem.fillStyle, defaultColor);\n      ctx.lineCap = valueOrDefault(legendItem.lineCap, 'butt');\n      ctx.lineDashOffset = valueOrDefault(legendItem.lineDashOffset, 0);\n      ctx.lineJoin = valueOrDefault(legendItem.lineJoin, 'miter');\n      ctx.lineWidth = lineWidth;\n      ctx.strokeStyle = valueOrDefault(legendItem.strokeStyle, defaultColor);\n      ctx.setLineDash(valueOrDefault(legendItem.lineDash, []));\n      if (labelOpts.usePointStyle) {\n        const drawOptions = {\n          radius: boxHeight * Math.SQRT2 / 2,\n          pointStyle: legendItem.pointStyle,\n          rotation: legendItem.rotation,\n          borderWidth: lineWidth\n        };\n        const centerX = rtlHelper.xPlus(x, boxWidth / 2);\n        const centerY = y + halfFontSize;\n        drawPointLegend(ctx, drawOptions, centerX, centerY, labelOpts.pointStyleWidth && boxWidth);\n      } else {\n        const yBoxTop = y + Math.max((fontSize - boxHeight) / 2, 0);\n        const xBoxLeft = rtlHelper.leftForLtr(x, boxWidth);\n        const borderRadius = toTRBLCorners(legendItem.borderRadius);\n        ctx.beginPath();\n        if (Object.values(borderRadius).some(v => v !== 0)) {\n          addRoundedRectPath(ctx, {\n            x: xBoxLeft,\n            y: yBoxTop,\n            w: boxWidth,\n            h: boxHeight,\n            radius: borderRadius,\n          });\n        } else {\n          ctx.rect(xBoxLeft, yBoxTop, boxWidth, boxHeight);\n        }\n        ctx.fill();\n        if (lineWidth !== 0) {\n          ctx.stroke();\n        }\n      }\n      ctx.restore();\n    };\n    const fillText = function(x, y, legendItem) {\n      renderText(ctx, legendItem.text, x, y + (itemHeight / 2), labelFont, {\n        strikethrough: legendItem.hidden,\n        textAlign: rtlHelper.textAlign(legendItem.textAlign)\n      });\n    };\n    const isHorizontal = this.isHorizontal();\n    const titleHeight = this._computeTitleHeight();\n    if (isHorizontal) {\n      cursor = {\n        x: _alignStartEnd(align, this.left + padding, this.right - lineWidths[0]),\n        y: this.top + padding + titleHeight,\n        line: 0\n      };\n    } else {\n      cursor = {\n        x: this.left + padding,\n        y: _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - columnSizes[0].height),\n        line: 0\n      };\n    }\n    overrideTextDirection(this.ctx, opts.textDirection);\n    const lineHeight = itemHeight + padding;\n    this.legendItems.forEach((legendItem, i) => {\n      ctx.strokeStyle = legendItem.fontColor || fontColor;\n      ctx.fillStyle = legendItem.fontColor || fontColor;\n      const textWidth = ctx.measureText(legendItem.text).width;\n      const textAlign = rtlHelper.textAlign(legendItem.textAlign || (legendItem.textAlign = labelOpts.textAlign));\n      const width = boxWidth + halfFontSize + textWidth;\n      let x = cursor.x;\n      let y = cursor.y;\n      rtlHelper.setWidth(this.width);\n      if (isHorizontal) {\n        if (i > 0 && x + width + padding > this.right) {\n          y = cursor.y += lineHeight;\n          cursor.line++;\n          x = cursor.x = _alignStartEnd(align, this.left + padding, this.right - lineWidths[cursor.line]);\n        }\n      } else if (i > 0 && y + lineHeight > this.bottom) {\n        x = cursor.x = x + columnSizes[cursor.line].width + padding;\n        cursor.line++;\n        y = cursor.y = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - columnSizes[cursor.line].height);\n      }\n      const realX = rtlHelper.x(x);\n      drawLegendBox(realX, y, legendItem);\n      x = _textX(textAlign, x + boxWidth + halfFontSize, isHorizontal ? x + width : this.right, opts.rtl);\n      fillText(rtlHelper.x(x), y, legendItem);\n      if (isHorizontal) {\n        cursor.x += width + padding;\n      } else {\n        cursor.y += lineHeight;\n      }\n    });\n    restoreTextDirection(this.ctx, opts.textDirection);\n  }\n  drawTitle() {\n    const opts = this.options;\n    const titleOpts = opts.title;\n    const titleFont = toFont(titleOpts.font);\n    const titlePadding = toPadding(titleOpts.padding);\n    if (!titleOpts.display) {\n      return;\n    }\n    const rtlHelper = getRtlAdapter(opts.rtl, this.left, this.width);\n    const ctx = this.ctx;\n    const position = titleOpts.position;\n    const halfFontSize = titleFont.size / 2;\n    const topPaddingPlusHalfFontSize = titlePadding.top + halfFontSize;\n    let y;\n    let left = this.left;\n    let maxWidth = this.width;\n    if (this.isHorizontal()) {\n      maxWidth = Math.max(...this.lineWidths);\n      y = this.top + topPaddingPlusHalfFontSize;\n      left = _alignStartEnd(opts.align, left, this.right - maxWidth);\n    } else {\n      const maxHeight = this.columnSizes.reduce((acc, size) => Math.max(acc, size.height), 0);\n      y = topPaddingPlusHalfFontSize + _alignStartEnd(opts.align, this.top, this.bottom - maxHeight - opts.labels.padding - this._computeTitleHeight());\n    }\n    const x = _alignStartEnd(position, left, left + maxWidth);\n    ctx.textAlign = rtlHelper.textAlign(_toLeftRightCenter(position));\n    ctx.textBaseline = 'middle';\n    ctx.strokeStyle = titleOpts.color;\n    ctx.fillStyle = titleOpts.color;\n    ctx.font = titleFont.string;\n    renderText(ctx, titleOpts.text, x, y, titleFont);\n  }\n  _computeTitleHeight() {\n    const titleOpts = this.options.title;\n    const titleFont = toFont(titleOpts.font);\n    const titlePadding = toPadding(titleOpts.padding);\n    return titleOpts.display ? titleFont.lineHeight + titlePadding.height : 0;\n  }\n  _getLegendItemAt(x, y) {\n    let i, hitBox, lh;\n    if (_isBetween(x, this.left, this.right)\n      && _isBetween(y, this.top, this.bottom)) {\n      lh = this.legendHitBoxes;\n      for (i = 0; i < lh.length; ++i) {\n        hitBox = lh[i];\n        if (_isBetween(x, hitBox.left, hitBox.left + hitBox.width)\n          && _isBetween(y, hitBox.top, hitBox.top + hitBox.height)) {\n          return this.legendItems[i];\n        }\n      }\n    }\n    return null;\n  }\n  handleEvent(e) {\n    const opts = this.options;\n    if (!isListened(e.type, opts)) {\n      return;\n    }\n    const hoveredItem = this._getLegendItemAt(e.x, e.y);\n    if (e.type === 'mousemove' || e.type === 'mouseout') {\n      const previous = this._hoveredItem;\n      const sameItem = itemsEqual(previous, hoveredItem);\n      if (previous && !sameItem) {\n        callback(opts.onLeave, [e, previous, this], this);\n      }\n      this._hoveredItem = hoveredItem;\n      if (hoveredItem && !sameItem) {\n        callback(opts.onHover, [e, hoveredItem, this], this);\n      }\n    } else if (hoveredItem) {\n      callback(opts.onClick, [e, hoveredItem, this], this);\n    }\n  }\n}\nfunction isListened(type, opts) {\n  if ((type === 'mousemove' || type === 'mouseout') && (opts.onHover || opts.onLeave)) {\n    return true;\n  }\n  if (opts.onClick && (type === 'click' || type === 'mouseup')) {\n    return true;\n  }\n  return false;\n}\nvar plugin_legend = {\n  id: 'legend',\n  _element: Legend,\n  start(chart, _args, options) {\n    const legend = chart.legend = new Legend({ctx: chart.ctx, options, chart});\n    layouts.configure(chart, legend, options);\n    layouts.addBox(chart, legend);\n  },\n  stop(chart) {\n    layouts.removeBox(chart, chart.legend);\n    delete chart.legend;\n  },\n  beforeUpdate(chart, _args, options) {\n    const legend = chart.legend;\n    layouts.configure(chart, legend, options);\n    legend.options = options;\n  },\n  afterUpdate(chart) {\n    const legend = chart.legend;\n    legend.buildLabels();\n    legend.adjustHitBoxes();\n  },\n  afterEvent(chart, args) {\n    if (!args.replay) {\n      chart.legend.handleEvent(args.event);\n    }\n  },\n  defaults: {\n    display: true,\n    position: 'top',\n    align: 'center',\n    fullSize: true,\n    reverse: false,\n    weight: 1000,\n    onClick(e, legendItem, legend) {\n      const index = legendItem.datasetIndex;\n      const ci = legend.chart;\n      if (ci.isDatasetVisible(index)) {\n        ci.hide(index);\n        legendItem.hidden = true;\n      } else {\n        ci.show(index);\n        legendItem.hidden = false;\n      }\n    },\n    onHover: null,\n    onLeave: null,\n    labels: {\n      color: (ctx) => ctx.chart.options.color,\n      boxWidth: 40,\n      padding: 10,\n      generateLabels(chart) {\n        const datasets = chart.data.datasets;\n        const {labels: {usePointStyle, pointStyle, textAlign, color}} = chart.legend.options;\n        return chart._getSortedDatasetMetas().map((meta) => {\n          const style = meta.controller.getStyle(usePointStyle ? 0 : undefined);\n          const borderWidth = toPadding(style.borderWidth);\n          return {\n            text: datasets[meta.index].label,\n            fillStyle: style.backgroundColor,\n            fontColor: color,\n            hidden: !meta.visible,\n            lineCap: style.borderCapStyle,\n            lineDash: style.borderDash,\n            lineDashOffset: style.borderDashOffset,\n            lineJoin: style.borderJoinStyle,\n            lineWidth: (borderWidth.width + borderWidth.height) / 4,\n            strokeStyle: style.borderColor,\n            pointStyle: pointStyle || style.pointStyle,\n            rotation: style.rotation,\n            textAlign: textAlign || style.textAlign,\n            borderRadius: 0,\n            datasetIndex: meta.index\n          };\n        }, this);\n      }\n    },\n    title: {\n      color: (ctx) => ctx.chart.options.color,\n      display: false,\n      position: 'center',\n      text: '',\n    }\n  },\n  descriptors: {\n    _scriptable: (name) => !name.startsWith('on'),\n    labels: {\n      _scriptable: (name) => !['generateLabels', 'filter', 'sort'].includes(name),\n    }\n  },\n};\n\nclass Title extends Element {\n  constructor(config) {\n    super();\n    this.chart = config.chart;\n    this.options = config.options;\n    this.ctx = config.ctx;\n    this._padding = undefined;\n    this.top = undefined;\n    this.bottom = undefined;\n    this.left = undefined;\n    this.right = undefined;\n    this.width = undefined;\n    this.height = undefined;\n    this.position = undefined;\n    this.weight = undefined;\n    this.fullSize = undefined;\n  }\n  update(maxWidth, maxHeight) {\n    const opts = this.options;\n    this.left = 0;\n    this.top = 0;\n    if (!opts.display) {\n      this.width = this.height = this.right = this.bottom = 0;\n      return;\n    }\n    this.width = this.right = maxWidth;\n    this.height = this.bottom = maxHeight;\n    const lineCount = isArray(opts.text) ? opts.text.length : 1;\n    this._padding = toPadding(opts.padding);\n    const textSize = lineCount * toFont(opts.font).lineHeight + this._padding.height;\n    if (this.isHorizontal()) {\n      this.height = textSize;\n    } else {\n      this.width = textSize;\n    }\n  }\n  isHorizontal() {\n    const pos = this.options.position;\n    return pos === 'top' || pos === 'bottom';\n  }\n  _drawArgs(offset) {\n    const {top, left, bottom, right, options} = this;\n    const align = options.align;\n    let rotation = 0;\n    let maxWidth, titleX, titleY;\n    if (this.isHorizontal()) {\n      titleX = _alignStartEnd(align, left, right);\n      titleY = top + offset;\n      maxWidth = right - left;\n    } else {\n      if (options.position === 'left') {\n        titleX = left + offset;\n        titleY = _alignStartEnd(align, bottom, top);\n        rotation = PI * -0.5;\n      } else {\n        titleX = right - offset;\n        titleY = _alignStartEnd(align, top, bottom);\n        rotation = PI * 0.5;\n      }\n      maxWidth = bottom - top;\n    }\n    return {titleX, titleY, maxWidth, rotation};\n  }\n  draw() {\n    const ctx = this.ctx;\n    const opts = this.options;\n    if (!opts.display) {\n      return;\n    }\n    const fontOpts = toFont(opts.font);\n    const lineHeight = fontOpts.lineHeight;\n    const offset = lineHeight / 2 + this._padding.top;\n    const {titleX, titleY, maxWidth, rotation} = this._drawArgs(offset);\n    renderText(ctx, opts.text, 0, 0, fontOpts, {\n      color: opts.color,\n      maxWidth,\n      rotation,\n      textAlign: _toLeftRightCenter(opts.align),\n      textBaseline: 'middle',\n      translation: [titleX, titleY],\n    });\n  }\n}\nfunction createTitle(chart, titleOpts) {\n  const title = new Title({\n    ctx: chart.ctx,\n    options: titleOpts,\n    chart\n  });\n  layouts.configure(chart, title, titleOpts);\n  layouts.addBox(chart, title);\n  chart.titleBlock = title;\n}\nvar plugin_title = {\n  id: 'title',\n  _element: Title,\n  start(chart, _args, options) {\n    createTitle(chart, options);\n  },\n  stop(chart) {\n    const titleBlock = chart.titleBlock;\n    layouts.removeBox(chart, titleBlock);\n    delete chart.titleBlock;\n  },\n  beforeUpdate(chart, _args, options) {\n    const title = chart.titleBlock;\n    layouts.configure(chart, title, options);\n    title.options = options;\n  },\n  defaults: {\n    align: 'center',\n    display: false,\n    font: {\n      weight: 'bold',\n    },\n    fullSize: true,\n    padding: 10,\n    position: 'top',\n    text: '',\n    weight: 2000\n  },\n  defaultRoutes: {\n    color: 'color'\n  },\n  descriptors: {\n    _scriptable: true,\n    _indexable: false,\n  },\n};\n\nconst map = new WeakMap();\nvar plugin_subtitle = {\n  id: 'subtitle',\n  start(chart, _args, options) {\n    const title = new Title({\n      ctx: chart.ctx,\n      options,\n      chart\n    });\n    layouts.configure(chart, title, options);\n    layouts.addBox(chart, title);\n    map.set(chart, title);\n  },\n  stop(chart) {\n    layouts.removeBox(chart, map.get(chart));\n    map.delete(chart);\n  },\n  beforeUpdate(chart, _args, options) {\n    const title = map.get(chart);\n    layouts.configure(chart, title, options);\n    title.options = options;\n  },\n  defaults: {\n    align: 'center',\n    display: false,\n    font: {\n      weight: 'normal',\n    },\n    fullSize: true,\n    padding: 0,\n    position: 'top',\n    text: '',\n    weight: 1500\n  },\n  defaultRoutes: {\n    color: 'color'\n  },\n  descriptors: {\n    _scriptable: true,\n    _indexable: false,\n  },\n};\n\nconst positioners = {\n  average(items) {\n    if (!items.length) {\n      return false;\n    }\n    let i, len;\n    let x = 0;\n    let y = 0;\n    let count = 0;\n    for (i = 0, len = items.length; i < len; ++i) {\n      const el = items[i].element;\n      if (el && el.hasValue()) {\n        const pos = el.tooltipPosition();\n        x += pos.x;\n        y += pos.y;\n        ++count;\n      }\n    }\n    return {\n      x: x / count,\n      y: y / count\n    };\n  },\n  nearest(items, eventPosition) {\n    if (!items.length) {\n      return false;\n    }\n    let x = eventPosition.x;\n    let y = eventPosition.y;\n    let minDistance = Number.POSITIVE_INFINITY;\n    let i, len, nearestElement;\n    for (i = 0, len = items.length; i < len; ++i) {\n      const el = items[i].element;\n      if (el && el.hasValue()) {\n        const center = el.getCenterPoint();\n        const d = distanceBetweenPoints(eventPosition, center);\n        if (d < minDistance) {\n          minDistance = d;\n          nearestElement = el;\n        }\n      }\n    }\n    if (nearestElement) {\n      const tp = nearestElement.tooltipPosition();\n      x = tp.x;\n      y = tp.y;\n    }\n    return {\n      x,\n      y\n    };\n  }\n};\nfunction pushOrConcat(base, toPush) {\n  if (toPush) {\n    if (isArray(toPush)) {\n      Array.prototype.push.apply(base, toPush);\n    } else {\n      base.push(toPush);\n    }\n  }\n  return base;\n}\nfunction splitNewlines(str) {\n  if ((typeof str === 'string' || str instanceof String) && str.indexOf('\\n') > -1) {\n    return str.split('\\n');\n  }\n  return str;\n}\nfunction createTooltipItem(chart, item) {\n  const {element, datasetIndex, index} = item;\n  const controller = chart.getDatasetMeta(datasetIndex).controller;\n  const {label, value} = controller.getLabelAndValue(index);\n  return {\n    chart,\n    label,\n    parsed: controller.getParsed(index),\n    raw: chart.data.datasets[datasetIndex].data[index],\n    formattedValue: value,\n    dataset: controller.getDataset(),\n    dataIndex: index,\n    datasetIndex,\n    element\n  };\n}\nfunction getTooltipSize(tooltip, options) {\n  const ctx = tooltip.chart.ctx;\n  const {body, footer, title} = tooltip;\n  const {boxWidth, boxHeight} = options;\n  const bodyFont = toFont(options.bodyFont);\n  const titleFont = toFont(options.titleFont);\n  const footerFont = toFont(options.footerFont);\n  const titleLineCount = title.length;\n  const footerLineCount = footer.length;\n  const bodyLineItemCount = body.length;\n  const padding = toPadding(options.padding);\n  let height = padding.height;\n  let width = 0;\n  let combinedBodyLength = body.reduce((count, bodyItem) => count + bodyItem.before.length + bodyItem.lines.length + bodyItem.after.length, 0);\n  combinedBodyLength += tooltip.beforeBody.length + tooltip.afterBody.length;\n  if (titleLineCount) {\n    height += titleLineCount * titleFont.lineHeight\n\t\t\t+ (titleLineCount - 1) * options.titleSpacing\n\t\t\t+ options.titleMarginBottom;\n  }\n  if (combinedBodyLength) {\n    const bodyLineHeight = options.displayColors ? Math.max(boxHeight, bodyFont.lineHeight) : bodyFont.lineHeight;\n    height += bodyLineItemCount * bodyLineHeight\n\t\t\t+ (combinedBodyLength - bodyLineItemCount) * bodyFont.lineHeight\n\t\t\t+ (combinedBodyLength - 1) * options.bodySpacing;\n  }\n  if (footerLineCount) {\n    height += options.footerMarginTop\n\t\t\t+ footerLineCount * footerFont.lineHeight\n\t\t\t+ (footerLineCount - 1) * options.footerSpacing;\n  }\n  let widthPadding = 0;\n  const maxLineWidth = function(line) {\n    width = Math.max(width, ctx.measureText(line).width + widthPadding);\n  };\n  ctx.save();\n  ctx.font = titleFont.string;\n  each(tooltip.title, maxLineWidth);\n  ctx.font = bodyFont.string;\n  each(tooltip.beforeBody.concat(tooltip.afterBody), maxLineWidth);\n  widthPadding = options.displayColors ? (boxWidth + 2 + options.boxPadding) : 0;\n  each(body, (bodyItem) => {\n    each(bodyItem.before, maxLineWidth);\n    each(bodyItem.lines, maxLineWidth);\n    each(bodyItem.after, maxLineWidth);\n  });\n  widthPadding = 0;\n  ctx.font = footerFont.string;\n  each(tooltip.footer, maxLineWidth);\n  ctx.restore();\n  width += padding.width;\n  return {width, height};\n}\nfunction determineYAlign(chart, size) {\n  const {y, height} = size;\n  if (y < height / 2) {\n    return 'top';\n  } else if (y > (chart.height - height / 2)) {\n    return 'bottom';\n  }\n  return 'center';\n}\nfunction doesNotFitWithAlign(xAlign, chart, options, size) {\n  const {x, width} = size;\n  const caret = options.caretSize + options.caretPadding;\n  if (xAlign === 'left' && x + width + caret > chart.width) {\n    return true;\n  }\n  if (xAlign === 'right' && x - width - caret < 0) {\n    return true;\n  }\n}\nfunction determineXAlign(chart, options, size, yAlign) {\n  const {x, width} = size;\n  const {width: chartWidth, chartArea: {left, right}} = chart;\n  let xAlign = 'center';\n  if (yAlign === 'center') {\n    xAlign = x <= (left + right) / 2 ? 'left' : 'right';\n  } else if (x <= width / 2) {\n    xAlign = 'left';\n  } else if (x >= chartWidth - width / 2) {\n    xAlign = 'right';\n  }\n  if (doesNotFitWithAlign(xAlign, chart, options, size)) {\n    xAlign = 'center';\n  }\n  return xAlign;\n}\nfunction determineAlignment(chart, options, size) {\n  const yAlign = size.yAlign || options.yAlign || determineYAlign(chart, size);\n  return {\n    xAlign: size.xAlign || options.xAlign || determineXAlign(chart, options, size, yAlign),\n    yAlign\n  };\n}\nfunction alignX(size, xAlign) {\n  let {x, width} = size;\n  if (xAlign === 'right') {\n    x -= width;\n  } else if (xAlign === 'center') {\n    x -= (width / 2);\n  }\n  return x;\n}\nfunction alignY(size, yAlign, paddingAndSize) {\n  let {y, height} = size;\n  if (yAlign === 'top') {\n    y += paddingAndSize;\n  } else if (yAlign === 'bottom') {\n    y -= height + paddingAndSize;\n  } else {\n    y -= (height / 2);\n  }\n  return y;\n}\nfunction getBackgroundPoint(options, size, alignment, chart) {\n  const {caretSize, caretPadding, cornerRadius} = options;\n  const {xAlign, yAlign} = alignment;\n  const paddingAndSize = caretSize + caretPadding;\n  const {topLeft, topRight, bottomLeft, bottomRight} = toTRBLCorners(cornerRadius);\n  let x = alignX(size, xAlign);\n  const y = alignY(size, yAlign, paddingAndSize);\n  if (yAlign === 'center') {\n    if (xAlign === 'left') {\n      x += paddingAndSize;\n    } else if (xAlign === 'right') {\n      x -= paddingAndSize;\n    }\n  } else if (xAlign === 'left') {\n    x -= Math.max(topLeft, bottomLeft) + caretSize;\n  } else if (xAlign === 'right') {\n    x += Math.max(topRight, bottomRight) + caretSize;\n  }\n  return {\n    x: _limitValue(x, 0, chart.width - size.width),\n    y: _limitValue(y, 0, chart.height - size.height)\n  };\n}\nfunction getAlignedX(tooltip, align, options) {\n  const padding = toPadding(options.padding);\n  return align === 'center'\n    ? tooltip.x + tooltip.width / 2\n    : align === 'right'\n      ? tooltip.x + tooltip.width - padding.right\n      : tooltip.x + padding.left;\n}\nfunction getBeforeAfterBodyLines(callback) {\n  return pushOrConcat([], splitNewlines(callback));\n}\nfunction createTooltipContext(parent, tooltip, tooltipItems) {\n  return createContext(parent, {\n    tooltip,\n    tooltipItems,\n    type: 'tooltip'\n  });\n}\nfunction overrideCallbacks(callbacks, context) {\n  const override = context && context.dataset && context.dataset.tooltip && context.dataset.tooltip.callbacks;\n  return override ? callbacks.override(override) : callbacks;\n}\nclass Tooltip extends Element {\n  constructor(config) {\n    super();\n    this.opacity = 0;\n    this._active = [];\n    this._eventPosition = undefined;\n    this._size = undefined;\n    this._cachedAnimations = undefined;\n    this._tooltipItems = [];\n    this.$animations = undefined;\n    this.$context = undefined;\n    this.chart = config.chart || config._chart;\n    this._chart = this.chart;\n    this.options = config.options;\n    this.dataPoints = undefined;\n    this.title = undefined;\n    this.beforeBody = undefined;\n    this.body = undefined;\n    this.afterBody = undefined;\n    this.footer = undefined;\n    this.xAlign = undefined;\n    this.yAlign = undefined;\n    this.x = undefined;\n    this.y = undefined;\n    this.height = undefined;\n    this.width = undefined;\n    this.caretX = undefined;\n    this.caretY = undefined;\n    this.labelColors = undefined;\n    this.labelPointStyles = undefined;\n    this.labelTextColors = undefined;\n  }\n  initialize(options) {\n    this.options = options;\n    this._cachedAnimations = undefined;\n    this.$context = undefined;\n  }\n  _resolveAnimations() {\n    const cached = this._cachedAnimations;\n    if (cached) {\n      return cached;\n    }\n    const chart = this.chart;\n    const options = this.options.setContext(this.getContext());\n    const opts = options.enabled && chart.options.animation && options.animations;\n    const animations = new Animations(this.chart, opts);\n    if (opts._cacheable) {\n      this._cachedAnimations = Object.freeze(animations);\n    }\n    return animations;\n  }\n  getContext() {\n    return this.$context ||\n\t\t\t(this.$context = createTooltipContext(this.chart.getContext(), this, this._tooltipItems));\n  }\n  getTitle(context, options) {\n    const {callbacks} = options;\n    const beforeTitle = callbacks.beforeTitle.apply(this, [context]);\n    const title = callbacks.title.apply(this, [context]);\n    const afterTitle = callbacks.afterTitle.apply(this, [context]);\n    let lines = [];\n    lines = pushOrConcat(lines, splitNewlines(beforeTitle));\n    lines = pushOrConcat(lines, splitNewlines(title));\n    lines = pushOrConcat(lines, splitNewlines(afterTitle));\n    return lines;\n  }\n  getBeforeBody(tooltipItems, options) {\n    return getBeforeAfterBodyLines(options.callbacks.beforeBody.apply(this, [tooltipItems]));\n  }\n  getBody(tooltipItems, options) {\n    const {callbacks} = options;\n    const bodyItems = [];\n    each(tooltipItems, (context) => {\n      const bodyItem = {\n        before: [],\n        lines: [],\n        after: []\n      };\n      const scoped = overrideCallbacks(callbacks, context);\n      pushOrConcat(bodyItem.before, splitNewlines(scoped.beforeLabel.call(this, context)));\n      pushOrConcat(bodyItem.lines, scoped.label.call(this, context));\n      pushOrConcat(bodyItem.after, splitNewlines(scoped.afterLabel.call(this, context)));\n      bodyItems.push(bodyItem);\n    });\n    return bodyItems;\n  }\n  getAfterBody(tooltipItems, options) {\n    return getBeforeAfterBodyLines(options.callbacks.afterBody.apply(this, [tooltipItems]));\n  }\n  getFooter(tooltipItems, options) {\n    const {callbacks} = options;\n    const beforeFooter = callbacks.beforeFooter.apply(this, [tooltipItems]);\n    const footer = callbacks.footer.apply(this, [tooltipItems]);\n    const afterFooter = callbacks.afterFooter.apply(this, [tooltipItems]);\n    let lines = [];\n    lines = pushOrConcat(lines, splitNewlines(beforeFooter));\n    lines = pushOrConcat(lines, splitNewlines(footer));\n    lines = pushOrConcat(lines, splitNewlines(afterFooter));\n    return lines;\n  }\n  _createItems(options) {\n    const active = this._active;\n    const data = this.chart.data;\n    const labelColors = [];\n    const labelPointStyles = [];\n    const labelTextColors = [];\n    let tooltipItems = [];\n    let i, len;\n    for (i = 0, len = active.length; i < len; ++i) {\n      tooltipItems.push(createTooltipItem(this.chart, active[i]));\n    }\n    if (options.filter) {\n      tooltipItems = tooltipItems.filter((element, index, array) => options.filter(element, index, array, data));\n    }\n    if (options.itemSort) {\n      tooltipItems = tooltipItems.sort((a, b) => options.itemSort(a, b, data));\n    }\n    each(tooltipItems, (context) => {\n      const scoped = overrideCallbacks(options.callbacks, context);\n      labelColors.push(scoped.labelColor.call(this, context));\n      labelPointStyles.push(scoped.labelPointStyle.call(this, context));\n      labelTextColors.push(scoped.labelTextColor.call(this, context));\n    });\n    this.labelColors = labelColors;\n    this.labelPointStyles = labelPointStyles;\n    this.labelTextColors = labelTextColors;\n    this.dataPoints = tooltipItems;\n    return tooltipItems;\n  }\n  update(changed, replay) {\n    const options = this.options.setContext(this.getContext());\n    const active = this._active;\n    let properties;\n    let tooltipItems = [];\n    if (!active.length) {\n      if (this.opacity !== 0) {\n        properties = {\n          opacity: 0\n        };\n      }\n    } else {\n      const position = positioners[options.position].call(this, active, this._eventPosition);\n      tooltipItems = this._createItems(options);\n      this.title = this.getTitle(tooltipItems, options);\n      this.beforeBody = this.getBeforeBody(tooltipItems, options);\n      this.body = this.getBody(tooltipItems, options);\n      this.afterBody = this.getAfterBody(tooltipItems, options);\n      this.footer = this.getFooter(tooltipItems, options);\n      const size = this._size = getTooltipSize(this, options);\n      const positionAndSize = Object.assign({}, position, size);\n      const alignment = determineAlignment(this.chart, options, positionAndSize);\n      const backgroundPoint = getBackgroundPoint(options, positionAndSize, alignment, this.chart);\n      this.xAlign = alignment.xAlign;\n      this.yAlign = alignment.yAlign;\n      properties = {\n        opacity: 1,\n        x: backgroundPoint.x,\n        y: backgroundPoint.y,\n        width: size.width,\n        height: size.height,\n        caretX: position.x,\n        caretY: position.y\n      };\n    }\n    this._tooltipItems = tooltipItems;\n    this.$context = undefined;\n    if (properties) {\n      this._resolveAnimations().update(this, properties);\n    }\n    if (changed && options.external) {\n      options.external.call(this, {chart: this.chart, tooltip: this, replay});\n    }\n  }\n  drawCaret(tooltipPoint, ctx, size, options) {\n    const caretPosition = this.getCaretPosition(tooltipPoint, size, options);\n    ctx.lineTo(caretPosition.x1, caretPosition.y1);\n    ctx.lineTo(caretPosition.x2, caretPosition.y2);\n    ctx.lineTo(caretPosition.x3, caretPosition.y3);\n  }\n  getCaretPosition(tooltipPoint, size, options) {\n    const {xAlign, yAlign} = this;\n    const {caretSize, cornerRadius} = options;\n    const {topLeft, topRight, bottomLeft, bottomRight} = toTRBLCorners(cornerRadius);\n    const {x: ptX, y: ptY} = tooltipPoint;\n    const {width, height} = size;\n    let x1, x2, x3, y1, y2, y3;\n    if (yAlign === 'center') {\n      y2 = ptY + (height / 2);\n      if (xAlign === 'left') {\n        x1 = ptX;\n        x2 = x1 - caretSize;\n        y1 = y2 + caretSize;\n        y3 = y2 - caretSize;\n      } else {\n        x1 = ptX + width;\n        x2 = x1 + caretSize;\n        y1 = y2 - caretSize;\n        y3 = y2 + caretSize;\n      }\n      x3 = x1;\n    } else {\n      if (xAlign === 'left') {\n        x2 = ptX + Math.max(topLeft, bottomLeft) + (caretSize);\n      } else if (xAlign === 'right') {\n        x2 = ptX + width - Math.max(topRight, bottomRight) - caretSize;\n      } else {\n        x2 = this.caretX;\n      }\n      if (yAlign === 'top') {\n        y1 = ptY;\n        y2 = y1 - caretSize;\n        x1 = x2 - caretSize;\n        x3 = x2 + caretSize;\n      } else {\n        y1 = ptY + height;\n        y2 = y1 + caretSize;\n        x1 = x2 + caretSize;\n        x3 = x2 - caretSize;\n      }\n      y3 = y1;\n    }\n    return {x1, x2, x3, y1, y2, y3};\n  }\n  drawTitle(pt, ctx, options) {\n    const title = this.title;\n    const length = title.length;\n    let titleFont, titleSpacing, i;\n    if (length) {\n      const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n      pt.x = getAlignedX(this, options.titleAlign, options);\n      ctx.textAlign = rtlHelper.textAlign(options.titleAlign);\n      ctx.textBaseline = 'middle';\n      titleFont = toFont(options.titleFont);\n      titleSpacing = options.titleSpacing;\n      ctx.fillStyle = options.titleColor;\n      ctx.font = titleFont.string;\n      for (i = 0; i < length; ++i) {\n        ctx.fillText(title[i], rtlHelper.x(pt.x), pt.y + titleFont.lineHeight / 2);\n        pt.y += titleFont.lineHeight + titleSpacing;\n        if (i + 1 === length) {\n          pt.y += options.titleMarginBottom - titleSpacing;\n        }\n      }\n    }\n  }\n  _drawColorBox(ctx, pt, i, rtlHelper, options) {\n    const labelColors = this.labelColors[i];\n    const labelPointStyle = this.labelPointStyles[i];\n    const {boxHeight, boxWidth, boxPadding} = options;\n    const bodyFont = toFont(options.bodyFont);\n    const colorX = getAlignedX(this, 'left', options);\n    const rtlColorX = rtlHelper.x(colorX);\n    const yOffSet = boxHeight < bodyFont.lineHeight ? (bodyFont.lineHeight - boxHeight) / 2 : 0;\n    const colorY = pt.y + yOffSet;\n    if (options.usePointStyle) {\n      const drawOptions = {\n        radius: Math.min(boxWidth, boxHeight) / 2,\n        pointStyle: labelPointStyle.pointStyle,\n        rotation: labelPointStyle.rotation,\n        borderWidth: 1\n      };\n      const centerX = rtlHelper.leftForLtr(rtlColorX, boxWidth) + boxWidth / 2;\n      const centerY = colorY + boxHeight / 2;\n      ctx.strokeStyle = options.multiKeyBackground;\n      ctx.fillStyle = options.multiKeyBackground;\n      drawPoint(ctx, drawOptions, centerX, centerY);\n      ctx.strokeStyle = labelColors.borderColor;\n      ctx.fillStyle = labelColors.backgroundColor;\n      drawPoint(ctx, drawOptions, centerX, centerY);\n    } else {\n      ctx.lineWidth = isObject(labelColors.borderWidth) ? Math.max(...Object.values(labelColors.borderWidth)) : (labelColors.borderWidth || 1);\n      ctx.strokeStyle = labelColors.borderColor;\n      ctx.setLineDash(labelColors.borderDash || []);\n      ctx.lineDashOffset = labelColors.borderDashOffset || 0;\n      const outerX = rtlHelper.leftForLtr(rtlColorX, boxWidth - boxPadding);\n      const innerX = rtlHelper.leftForLtr(rtlHelper.xPlus(rtlColorX, 1), boxWidth - boxPadding - 2);\n      const borderRadius = toTRBLCorners(labelColors.borderRadius);\n      if (Object.values(borderRadius).some(v => v !== 0)) {\n        ctx.beginPath();\n        ctx.fillStyle = options.multiKeyBackground;\n        addRoundedRectPath(ctx, {\n          x: outerX,\n          y: colorY,\n          w: boxWidth,\n          h: boxHeight,\n          radius: borderRadius,\n        });\n        ctx.fill();\n        ctx.stroke();\n        ctx.fillStyle = labelColors.backgroundColor;\n        ctx.beginPath();\n        addRoundedRectPath(ctx, {\n          x: innerX,\n          y: colorY + 1,\n          w: boxWidth - 2,\n          h: boxHeight - 2,\n          radius: borderRadius,\n        });\n        ctx.fill();\n      } else {\n        ctx.fillStyle = options.multiKeyBackground;\n        ctx.fillRect(outerX, colorY, boxWidth, boxHeight);\n        ctx.strokeRect(outerX, colorY, boxWidth, boxHeight);\n        ctx.fillStyle = labelColors.backgroundColor;\n        ctx.fillRect(innerX, colorY + 1, boxWidth - 2, boxHeight - 2);\n      }\n    }\n    ctx.fillStyle = this.labelTextColors[i];\n  }\n  drawBody(pt, ctx, options) {\n    const {body} = this;\n    const {bodySpacing, bodyAlign, displayColors, boxHeight, boxWidth, boxPadding} = options;\n    const bodyFont = toFont(options.bodyFont);\n    let bodyLineHeight = bodyFont.lineHeight;\n    let xLinePadding = 0;\n    const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n    const fillLineOfText = function(line) {\n      ctx.fillText(line, rtlHelper.x(pt.x + xLinePadding), pt.y + bodyLineHeight / 2);\n      pt.y += bodyLineHeight + bodySpacing;\n    };\n    const bodyAlignForCalculation = rtlHelper.textAlign(bodyAlign);\n    let bodyItem, textColor, lines, i, j, ilen, jlen;\n    ctx.textAlign = bodyAlign;\n    ctx.textBaseline = 'middle';\n    ctx.font = bodyFont.string;\n    pt.x = getAlignedX(this, bodyAlignForCalculation, options);\n    ctx.fillStyle = options.bodyColor;\n    each(this.beforeBody, fillLineOfText);\n    xLinePadding = displayColors && bodyAlignForCalculation !== 'right'\n      ? bodyAlign === 'center' ? (boxWidth / 2 + boxPadding) : (boxWidth + 2 + boxPadding)\n      : 0;\n    for (i = 0, ilen = body.length; i < ilen; ++i) {\n      bodyItem = body[i];\n      textColor = this.labelTextColors[i];\n      ctx.fillStyle = textColor;\n      each(bodyItem.before, fillLineOfText);\n      lines = bodyItem.lines;\n      if (displayColors && lines.length) {\n        this._drawColorBox(ctx, pt, i, rtlHelper, options);\n        bodyLineHeight = Math.max(bodyFont.lineHeight, boxHeight);\n      }\n      for (j = 0, jlen = lines.length; j < jlen; ++j) {\n        fillLineOfText(lines[j]);\n        bodyLineHeight = bodyFont.lineHeight;\n      }\n      each(bodyItem.after, fillLineOfText);\n    }\n    xLinePadding = 0;\n    bodyLineHeight = bodyFont.lineHeight;\n    each(this.afterBody, fillLineOfText);\n    pt.y -= bodySpacing;\n  }\n  drawFooter(pt, ctx, options) {\n    const footer = this.footer;\n    const length = footer.length;\n    let footerFont, i;\n    if (length) {\n      const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n      pt.x = getAlignedX(this, options.footerAlign, options);\n      pt.y += options.footerMarginTop;\n      ctx.textAlign = rtlHelper.textAlign(options.footerAlign);\n      ctx.textBaseline = 'middle';\n      footerFont = toFont(options.footerFont);\n      ctx.fillStyle = options.footerColor;\n      ctx.font = footerFont.string;\n      for (i = 0; i < length; ++i) {\n        ctx.fillText(footer[i], rtlHelper.x(pt.x), pt.y + footerFont.lineHeight / 2);\n        pt.y += footerFont.lineHeight + options.footerSpacing;\n      }\n    }\n  }\n  drawBackground(pt, ctx, tooltipSize, options) {\n    const {xAlign, yAlign} = this;\n    const {x, y} = pt;\n    const {width, height} = tooltipSize;\n    const {topLeft, topRight, bottomLeft, bottomRight} = toTRBLCorners(options.cornerRadius);\n    ctx.fillStyle = options.backgroundColor;\n    ctx.strokeStyle = options.borderColor;\n    ctx.lineWidth = options.borderWidth;\n    ctx.beginPath();\n    ctx.moveTo(x + topLeft, y);\n    if (yAlign === 'top') {\n      this.drawCaret(pt, ctx, tooltipSize, options);\n    }\n    ctx.lineTo(x + width - topRight, y);\n    ctx.quadraticCurveTo(x + width, y, x + width, y + topRight);\n    if (yAlign === 'center' && xAlign === 'right') {\n      this.drawCaret(pt, ctx, tooltipSize, options);\n    }\n    ctx.lineTo(x + width, y + height - bottomRight);\n    ctx.quadraticCurveTo(x + width, y + height, x + width - bottomRight, y + height);\n    if (yAlign === 'bottom') {\n      this.drawCaret(pt, ctx, tooltipSize, options);\n    }\n    ctx.lineTo(x + bottomLeft, y + height);\n    ctx.quadraticCurveTo(x, y + height, x, y + height - bottomLeft);\n    if (yAlign === 'center' && xAlign === 'left') {\n      this.drawCaret(pt, ctx, tooltipSize, options);\n    }\n    ctx.lineTo(x, y + topLeft);\n    ctx.quadraticCurveTo(x, y, x + topLeft, y);\n    ctx.closePath();\n    ctx.fill();\n    if (options.borderWidth > 0) {\n      ctx.stroke();\n    }\n  }\n  _updateAnimationTarget(options) {\n    const chart = this.chart;\n    const anims = this.$animations;\n    const animX = anims && anims.x;\n    const animY = anims && anims.y;\n    if (animX || animY) {\n      const position = positioners[options.position].call(this, this._active, this._eventPosition);\n      if (!position) {\n        return;\n      }\n      const size = this._size = getTooltipSize(this, options);\n      const positionAndSize = Object.assign({}, position, this._size);\n      const alignment = determineAlignment(chart, options, positionAndSize);\n      const point = getBackgroundPoint(options, positionAndSize, alignment, chart);\n      if (animX._to !== point.x || animY._to !== point.y) {\n        this.xAlign = alignment.xAlign;\n        this.yAlign = alignment.yAlign;\n        this.width = size.width;\n        this.height = size.height;\n        this.caretX = position.x;\n        this.caretY = position.y;\n        this._resolveAnimations().update(this, point);\n      }\n    }\n  }\n  _willRender() {\n    return !!this.opacity;\n  }\n  draw(ctx) {\n    const options = this.options.setContext(this.getContext());\n    let opacity = this.opacity;\n    if (!opacity) {\n      return;\n    }\n    this._updateAnimationTarget(options);\n    const tooltipSize = {\n      width: this.width,\n      height: this.height\n    };\n    const pt = {\n      x: this.x,\n      y: this.y\n    };\n    opacity = Math.abs(opacity) < 1e-3 ? 0 : opacity;\n    const padding = toPadding(options.padding);\n    const hasTooltipContent = this.title.length || this.beforeBody.length || this.body.length || this.afterBody.length || this.footer.length;\n    if (options.enabled && hasTooltipContent) {\n      ctx.save();\n      ctx.globalAlpha = opacity;\n      this.drawBackground(pt, ctx, tooltipSize, options);\n      overrideTextDirection(ctx, options.textDirection);\n      pt.y += padding.top;\n      this.drawTitle(pt, ctx, options);\n      this.drawBody(pt, ctx, options);\n      this.drawFooter(pt, ctx, options);\n      restoreTextDirection(ctx, options.textDirection);\n      ctx.restore();\n    }\n  }\n  getActiveElements() {\n    return this._active || [];\n  }\n  setActiveElements(activeElements, eventPosition) {\n    const lastActive = this._active;\n    const active = activeElements.map(({datasetIndex, index}) => {\n      const meta = this.chart.getDatasetMeta(datasetIndex);\n      if (!meta) {\n        throw new Error('Cannot find a dataset at index ' + datasetIndex);\n      }\n      return {\n        datasetIndex,\n        element: meta.data[index],\n        index,\n      };\n    });\n    const changed = !_elementsEqual(lastActive, active);\n    const positionChanged = this._positionChanged(active, eventPosition);\n    if (changed || positionChanged) {\n      this._active = active;\n      this._eventPosition = eventPosition;\n      this._ignoreReplayEvents = true;\n      this.update(true);\n    }\n  }\n  handleEvent(e, replay, inChartArea = true) {\n    if (replay && this._ignoreReplayEvents) {\n      return false;\n    }\n    this._ignoreReplayEvents = false;\n    const options = this.options;\n    const lastActive = this._active || [];\n    const active = this._getActiveElements(e, lastActive, replay, inChartArea);\n    const positionChanged = this._positionChanged(active, e);\n    const changed = replay || !_elementsEqual(active, lastActive) || positionChanged;\n    if (changed) {\n      this._active = active;\n      if (options.enabled || options.external) {\n        this._eventPosition = {\n          x: e.x,\n          y: e.y\n        };\n        this.update(true, replay);\n      }\n    }\n    return changed;\n  }\n  _getActiveElements(e, lastActive, replay, inChartArea) {\n    const options = this.options;\n    if (e.type === 'mouseout') {\n      return [];\n    }\n    if (!inChartArea) {\n      return lastActive;\n    }\n    const active = this.chart.getElementsAtEventForMode(e, options.mode, options, replay);\n    if (options.reverse) {\n      active.reverse();\n    }\n    return active;\n  }\n  _positionChanged(active, e) {\n    const {caretX, caretY, options} = this;\n    const position = positioners[options.position].call(this, active, e);\n    return position !== false && (caretX !== position.x || caretY !== position.y);\n  }\n}\nTooltip.positioners = positioners;\nvar plugin_tooltip = {\n  id: 'tooltip',\n  _element: Tooltip,\n  positioners,\n  afterInit(chart, _args, options) {\n    if (options) {\n      chart.tooltip = new Tooltip({chart, options});\n    }\n  },\n  beforeUpdate(chart, _args, options) {\n    if (chart.tooltip) {\n      chart.tooltip.initialize(options);\n    }\n  },\n  reset(chart, _args, options) {\n    if (chart.tooltip) {\n      chart.tooltip.initialize(options);\n    }\n  },\n  afterDraw(chart) {\n    const tooltip = chart.tooltip;\n    if (tooltip && tooltip._willRender()) {\n      const args = {\n        tooltip\n      };\n      if (chart.notifyPlugins('beforeTooltipDraw', args) === false) {\n        return;\n      }\n      tooltip.draw(chart.ctx);\n      chart.notifyPlugins('afterTooltipDraw', args);\n    }\n  },\n  afterEvent(chart, args) {\n    if (chart.tooltip) {\n      const useFinalPosition = args.replay;\n      if (chart.tooltip.handleEvent(args.event, useFinalPosition, args.inChartArea)) {\n        args.changed = true;\n      }\n    }\n  },\n  defaults: {\n    enabled: true,\n    external: null,\n    position: 'average',\n    backgroundColor: 'rgba(0,0,0,0.8)',\n    titleColor: '#fff',\n    titleFont: {\n      weight: 'bold',\n    },\n    titleSpacing: 2,\n    titleMarginBottom: 6,\n    titleAlign: 'left',\n    bodyColor: '#fff',\n    bodySpacing: 2,\n    bodyFont: {\n    },\n    bodyAlign: 'left',\n    footerColor: '#fff',\n    footerSpacing: 2,\n    footerMarginTop: 6,\n    footerFont: {\n      weight: 'bold',\n    },\n    footerAlign: 'left',\n    padding: 6,\n    caretPadding: 2,\n    caretSize: 5,\n    cornerRadius: 6,\n    boxHeight: (ctx, opts) => opts.bodyFont.size,\n    boxWidth: (ctx, opts) => opts.bodyFont.size,\n    multiKeyBackground: '#fff',\n    displayColors: true,\n    boxPadding: 0,\n    borderColor: 'rgba(0,0,0,0)',\n    borderWidth: 0,\n    animation: {\n      duration: 400,\n      easing: 'easeOutQuart',\n    },\n    animations: {\n      numbers: {\n        type: 'number',\n        properties: ['x', 'y', 'width', 'height', 'caretX', 'caretY'],\n      },\n      opacity: {\n        easing: 'linear',\n        duration: 200\n      }\n    },\n    callbacks: {\n      beforeTitle: noop,\n      title(tooltipItems) {\n        if (tooltipItems.length > 0) {\n          const item = tooltipItems[0];\n          const labels = item.chart.data.labels;\n          const labelCount = labels ? labels.length : 0;\n          if (this && this.options && this.options.mode === 'dataset') {\n            return item.dataset.label || '';\n          } else if (item.label) {\n            return item.label;\n          } else if (labelCount > 0 && item.dataIndex < labelCount) {\n            return labels[item.dataIndex];\n          }\n        }\n        return '';\n      },\n      afterTitle: noop,\n      beforeBody: noop,\n      beforeLabel: noop,\n      label(tooltipItem) {\n        if (this && this.options && this.options.mode === 'dataset') {\n          return tooltipItem.label + ': ' + tooltipItem.formattedValue || tooltipItem.formattedValue;\n        }\n        let label = tooltipItem.dataset.label || '';\n        if (label) {\n          label += ': ';\n        }\n        const value = tooltipItem.formattedValue;\n        if (!isNullOrUndef(value)) {\n          label += value;\n        }\n        return label;\n      },\n      labelColor(tooltipItem) {\n        const meta = tooltipItem.chart.getDatasetMeta(tooltipItem.datasetIndex);\n        const options = meta.controller.getStyle(tooltipItem.dataIndex);\n        return {\n          borderColor: options.borderColor,\n          backgroundColor: options.backgroundColor,\n          borderWidth: options.borderWidth,\n          borderDash: options.borderDash,\n          borderDashOffset: options.borderDashOffset,\n          borderRadius: 0,\n        };\n      },\n      labelTextColor() {\n        return this.options.bodyColor;\n      },\n      labelPointStyle(tooltipItem) {\n        const meta = tooltipItem.chart.getDatasetMeta(tooltipItem.datasetIndex);\n        const options = meta.controller.getStyle(tooltipItem.dataIndex);\n        return {\n          pointStyle: options.pointStyle,\n          rotation: options.rotation,\n        };\n      },\n      afterLabel: noop,\n      afterBody: noop,\n      beforeFooter: noop,\n      footer: noop,\n      afterFooter: noop\n    }\n  },\n  defaultRoutes: {\n    bodyFont: 'font',\n    footerFont: 'font',\n    titleFont: 'font'\n  },\n  descriptors: {\n    _scriptable: (name) => name !== 'filter' && name !== 'itemSort' && name !== 'external',\n    _indexable: false,\n    callbacks: {\n      _scriptable: false,\n      _indexable: false,\n    },\n    animation: {\n      _fallback: false\n    },\n    animations: {\n      _fallback: 'animation'\n    }\n  },\n  additionalOptionScopes: ['interaction']\n};\n\nvar plugins = /*#__PURE__*/Object.freeze({\n__proto__: null,\nDecimation: plugin_decimation,\nFiller: index,\nLegend: plugin_legend,\nSubTitle: plugin_subtitle,\nTitle: plugin_title,\nTooltip: plugin_tooltip\n});\n\nconst addIfString = (labels, raw, index, addedLabels) => {\n  if (typeof raw === 'string') {\n    index = labels.push(raw) - 1;\n    addedLabels.unshift({index, label: raw});\n  } else if (isNaN(raw)) {\n    index = null;\n  }\n  return index;\n};\nfunction findOrAddLabel(labels, raw, index, addedLabels) {\n  const first = labels.indexOf(raw);\n  if (first === -1) {\n    return addIfString(labels, raw, index, addedLabels);\n  }\n  const last = labels.lastIndexOf(raw);\n  return first !== last ? index : first;\n}\nconst validIndex = (index, max) => index === null ? null : _limitValue(Math.round(index), 0, max);\nclass CategoryScale extends Scale {\n  constructor(cfg) {\n    super(cfg);\n    this._startValue = undefined;\n    this._valueRange = 0;\n    this._addedLabels = [];\n  }\n  init(scaleOptions) {\n    const added = this._addedLabels;\n    if (added.length) {\n      const labels = this.getLabels();\n      for (const {index, label} of added) {\n        if (labels[index] === label) {\n          labels.splice(index, 1);\n        }\n      }\n      this._addedLabels = [];\n    }\n    super.init(scaleOptions);\n  }\n  parse(raw, index) {\n    if (isNullOrUndef(raw)) {\n      return null;\n    }\n    const labels = this.getLabels();\n    index = isFinite(index) && labels[index] === raw ? index\n      : findOrAddLabel(labels, raw, valueOrDefault(index, raw), this._addedLabels);\n    return validIndex(index, labels.length - 1);\n  }\n  determineDataLimits() {\n    const {minDefined, maxDefined} = this.getUserBounds();\n    let {min, max} = this.getMinMax(true);\n    if (this.options.bounds === 'ticks') {\n      if (!minDefined) {\n        min = 0;\n      }\n      if (!maxDefined) {\n        max = this.getLabels().length - 1;\n      }\n    }\n    this.min = min;\n    this.max = max;\n  }\n  buildTicks() {\n    const min = this.min;\n    const max = this.max;\n    const offset = this.options.offset;\n    const ticks = [];\n    let labels = this.getLabels();\n    labels = (min === 0 && max === labels.length - 1) ? labels : labels.slice(min, max + 1);\n    this._valueRange = Math.max(labels.length - (offset ? 0 : 1), 1);\n    this._startValue = this.min - (offset ? 0.5 : 0);\n    for (let value = min; value <= max; value++) {\n      ticks.push({value});\n    }\n    return ticks;\n  }\n  getLabelForValue(value) {\n    const labels = this.getLabels();\n    if (value >= 0 && value < labels.length) {\n      return labels[value];\n    }\n    return value;\n  }\n  configure() {\n    super.configure();\n    if (!this.isHorizontal()) {\n      this._reversePixels = !this._reversePixels;\n    }\n  }\n  getPixelForValue(value) {\n    if (typeof value !== 'number') {\n      value = this.parse(value);\n    }\n    return value === null ? NaN : this.getPixelForDecimal((value - this._startValue) / this._valueRange);\n  }\n  getPixelForTick(index) {\n    const ticks = this.ticks;\n    if (index < 0 || index > ticks.length - 1) {\n      return null;\n    }\n    return this.getPixelForValue(ticks[index].value);\n  }\n  getValueForPixel(pixel) {\n    return Math.round(this._startValue + this.getDecimalForPixel(pixel) * this._valueRange);\n  }\n  getBasePixel() {\n    return this.bottom;\n  }\n}\nCategoryScale.id = 'category';\nCategoryScale.defaults = {\n  ticks: {\n    callback: CategoryScale.prototype.getLabelForValue\n  }\n};\n\nfunction generateTicks$1(generationOptions, dataRange) {\n  const ticks = [];\n  const MIN_SPACING = 1e-14;\n  const {bounds, step, min, max, precision, count, maxTicks, maxDigits, includeBounds} = generationOptions;\n  const unit = step || 1;\n  const maxSpaces = maxTicks - 1;\n  const {min: rmin, max: rmax} = dataRange;\n  const minDefined = !isNullOrUndef(min);\n  const maxDefined = !isNullOrUndef(max);\n  const countDefined = !isNullOrUndef(count);\n  const minSpacing = (rmax - rmin) / (maxDigits + 1);\n  let spacing = niceNum((rmax - rmin) / maxSpaces / unit) * unit;\n  let factor, niceMin, niceMax, numSpaces;\n  if (spacing < MIN_SPACING && !minDefined && !maxDefined) {\n    return [{value: rmin}, {value: rmax}];\n  }\n  numSpaces = Math.ceil(rmax / spacing) - Math.floor(rmin / spacing);\n  if (numSpaces > maxSpaces) {\n    spacing = niceNum(numSpaces * spacing / maxSpaces / unit) * unit;\n  }\n  if (!isNullOrUndef(precision)) {\n    factor = Math.pow(10, precision);\n    spacing = Math.ceil(spacing * factor) / factor;\n  }\n  if (bounds === 'ticks') {\n    niceMin = Math.floor(rmin / spacing) * spacing;\n    niceMax = Math.ceil(rmax / spacing) * spacing;\n  } else {\n    niceMin = rmin;\n    niceMax = rmax;\n  }\n  if (minDefined && maxDefined && step && almostWhole((max - min) / step, spacing / 1000)) {\n    numSpaces = Math.round(Math.min((max - min) / spacing, maxTicks));\n    spacing = (max - min) / numSpaces;\n    niceMin = min;\n    niceMax = max;\n  } else if (countDefined) {\n    niceMin = minDefined ? min : niceMin;\n    niceMax = maxDefined ? max : niceMax;\n    numSpaces = count - 1;\n    spacing = (niceMax - niceMin) / numSpaces;\n  } else {\n    numSpaces = (niceMax - niceMin) / spacing;\n    if (almostEquals(numSpaces, Math.round(numSpaces), spacing / 1000)) {\n      numSpaces = Math.round(numSpaces);\n    } else {\n      numSpaces = Math.ceil(numSpaces);\n    }\n  }\n  const decimalPlaces = Math.max(\n    _decimalPlaces(spacing),\n    _decimalPlaces(niceMin)\n  );\n  factor = Math.pow(10, isNullOrUndef(precision) ? decimalPlaces : precision);\n  niceMin = Math.round(niceMin * factor) / factor;\n  niceMax = Math.round(niceMax * factor) / factor;\n  let j = 0;\n  if (minDefined) {\n    if (includeBounds && niceMin !== min) {\n      ticks.push({value: min});\n      if (niceMin < min) {\n        j++;\n      }\n      if (almostEquals(Math.round((niceMin + j * spacing) * factor) / factor, min, relativeLabelSize(min, minSpacing, generationOptions))) {\n        j++;\n      }\n    } else if (niceMin < min) {\n      j++;\n    }\n  }\n  for (; j < numSpaces; ++j) {\n    ticks.push({value: Math.round((niceMin + j * spacing) * factor) / factor});\n  }\n  if (maxDefined && includeBounds && niceMax !== max) {\n    if (ticks.length && almostEquals(ticks[ticks.length - 1].value, max, relativeLabelSize(max, minSpacing, generationOptions))) {\n      ticks[ticks.length - 1].value = max;\n    } else {\n      ticks.push({value: max});\n    }\n  } else if (!maxDefined || niceMax === max) {\n    ticks.push({value: niceMax});\n  }\n  return ticks;\n}\nfunction relativeLabelSize(value, minSpacing, {horizontal, minRotation}) {\n  const rad = toRadians(minRotation);\n  const ratio = (horizontal ? Math.sin(rad) : Math.cos(rad)) || 0.001;\n  const length = 0.75 * minSpacing * ('' + value).length;\n  return Math.min(minSpacing / ratio, length);\n}\nclass LinearScaleBase extends Scale {\n  constructor(cfg) {\n    super(cfg);\n    this.start = undefined;\n    this.end = undefined;\n    this._startValue = undefined;\n    this._endValue = undefined;\n    this._valueRange = 0;\n  }\n  parse(raw, index) {\n    if (isNullOrUndef(raw)) {\n      return null;\n    }\n    if ((typeof raw === 'number' || raw instanceof Number) && !isFinite(+raw)) {\n      return null;\n    }\n    return +raw;\n  }\n  handleTickRangeOptions() {\n    const {beginAtZero} = this.options;\n    const {minDefined, maxDefined} = this.getUserBounds();\n    let {min, max} = this;\n    const setMin = v => (min = minDefined ? min : v);\n    const setMax = v => (max = maxDefined ? max : v);\n    if (beginAtZero) {\n      const minSign = sign(min);\n      const maxSign = sign(max);\n      if (minSign < 0 && maxSign < 0) {\n        setMax(0);\n      } else if (minSign > 0 && maxSign > 0) {\n        setMin(0);\n      }\n    }\n    if (min === max) {\n      let offset = 1;\n      if (max >= Number.MAX_SAFE_INTEGER || min <= Number.MIN_SAFE_INTEGER) {\n        offset = Math.abs(max * 0.05);\n      }\n      setMax(max + offset);\n      if (!beginAtZero) {\n        setMin(min - offset);\n      }\n    }\n    this.min = min;\n    this.max = max;\n  }\n  getTickLimit() {\n    const tickOpts = this.options.ticks;\n    let {maxTicksLimit, stepSize} = tickOpts;\n    let maxTicks;\n    if (stepSize) {\n      maxTicks = Math.ceil(this.max / stepSize) - Math.floor(this.min / stepSize) + 1;\n      if (maxTicks > 1000) {\n        console.warn(`scales.${this.id}.ticks.stepSize: ${stepSize} would result generating up to ${maxTicks} ticks. Limiting to 1000.`);\n        maxTicks = 1000;\n      }\n    } else {\n      maxTicks = this.computeTickLimit();\n      maxTicksLimit = maxTicksLimit || 11;\n    }\n    if (maxTicksLimit) {\n      maxTicks = Math.min(maxTicksLimit, maxTicks);\n    }\n    return maxTicks;\n  }\n  computeTickLimit() {\n    return Number.POSITIVE_INFINITY;\n  }\n  buildTicks() {\n    const opts = this.options;\n    const tickOpts = opts.ticks;\n    let maxTicks = this.getTickLimit();\n    maxTicks = Math.max(2, maxTicks);\n    const numericGeneratorOptions = {\n      maxTicks,\n      bounds: opts.bounds,\n      min: opts.min,\n      max: opts.max,\n      precision: tickOpts.precision,\n      step: tickOpts.stepSize,\n      count: tickOpts.count,\n      maxDigits: this._maxDigits(),\n      horizontal: this.isHorizontal(),\n      minRotation: tickOpts.minRotation || 0,\n      includeBounds: tickOpts.includeBounds !== false\n    };\n    const dataRange = this._range || this;\n    const ticks = generateTicks$1(numericGeneratorOptions, dataRange);\n    if (opts.bounds === 'ticks') {\n      _setMinAndMaxByKey(ticks, this, 'value');\n    }\n    if (opts.reverse) {\n      ticks.reverse();\n      this.start = this.max;\n      this.end = this.min;\n    } else {\n      this.start = this.min;\n      this.end = this.max;\n    }\n    return ticks;\n  }\n  configure() {\n    const ticks = this.ticks;\n    let start = this.min;\n    let end = this.max;\n    super.configure();\n    if (this.options.offset && ticks.length) {\n      const offset = (end - start) / Math.max(ticks.length - 1, 1) / 2;\n      start -= offset;\n      end += offset;\n    }\n    this._startValue = start;\n    this._endValue = end;\n    this._valueRange = end - start;\n  }\n  getLabelForValue(value) {\n    return formatNumber(value, this.chart.options.locale, this.options.ticks.format);\n  }\n}\n\nclass LinearScale extends LinearScaleBase {\n  determineDataLimits() {\n    const {min, max} = this.getMinMax(true);\n    this.min = isNumberFinite(min) ? min : 0;\n    this.max = isNumberFinite(max) ? max : 1;\n    this.handleTickRangeOptions();\n  }\n  computeTickLimit() {\n    const horizontal = this.isHorizontal();\n    const length = horizontal ? this.width : this.height;\n    const minRotation = toRadians(this.options.ticks.minRotation);\n    const ratio = (horizontal ? Math.sin(minRotation) : Math.cos(minRotation)) || 0.001;\n    const tickFont = this._resolveTickFontOptions(0);\n    return Math.ceil(length / Math.min(40, tickFont.lineHeight / ratio));\n  }\n  getPixelForValue(value) {\n    return value === null ? NaN : this.getPixelForDecimal((value - this._startValue) / this._valueRange);\n  }\n  getValueForPixel(pixel) {\n    return this._startValue + this.getDecimalForPixel(pixel) * this._valueRange;\n  }\n}\nLinearScale.id = 'linear';\nLinearScale.defaults = {\n  ticks: {\n    callback: Ticks.formatters.numeric\n  }\n};\n\nfunction isMajor(tickVal) {\n  const remain = tickVal / (Math.pow(10, Math.floor(log10(tickVal))));\n  return remain === 1;\n}\nfunction generateTicks(generationOptions, dataRange) {\n  const endExp = Math.floor(log10(dataRange.max));\n  const endSignificand = Math.ceil(dataRange.max / Math.pow(10, endExp));\n  const ticks = [];\n  let tickVal = finiteOrDefault(generationOptions.min, Math.pow(10, Math.floor(log10(dataRange.min))));\n  let exp = Math.floor(log10(tickVal));\n  let significand = Math.floor(tickVal / Math.pow(10, exp));\n  let precision = exp < 0 ? Math.pow(10, Math.abs(exp)) : 1;\n  do {\n    ticks.push({value: tickVal, major: isMajor(tickVal)});\n    ++significand;\n    if (significand === 10) {\n      significand = 1;\n      ++exp;\n      precision = exp >= 0 ? 1 : precision;\n    }\n    tickVal = Math.round(significand * Math.pow(10, exp) * precision) / precision;\n  } while (exp < endExp || (exp === endExp && significand < endSignificand));\n  const lastTick = finiteOrDefault(generationOptions.max, tickVal);\n  ticks.push({value: lastTick, major: isMajor(tickVal)});\n  return ticks;\n}\nclass LogarithmicScale extends Scale {\n  constructor(cfg) {\n    super(cfg);\n    this.start = undefined;\n    this.end = undefined;\n    this._startValue = undefined;\n    this._valueRange = 0;\n  }\n  parse(raw, index) {\n    const value = LinearScaleBase.prototype.parse.apply(this, [raw, index]);\n    if (value === 0) {\n      this._zero = true;\n      return undefined;\n    }\n    return isNumberFinite(value) && value > 0 ? value : null;\n  }\n  determineDataLimits() {\n    const {min, max} = this.getMinMax(true);\n    this.min = isNumberFinite(min) ? Math.max(0, min) : null;\n    this.max = isNumberFinite(max) ? Math.max(0, max) : null;\n    if (this.options.beginAtZero) {\n      this._zero = true;\n    }\n    this.handleTickRangeOptions();\n  }\n  handleTickRangeOptions() {\n    const {minDefined, maxDefined} = this.getUserBounds();\n    let min = this.min;\n    let max = this.max;\n    const setMin = v => (min = minDefined ? min : v);\n    const setMax = v => (max = maxDefined ? max : v);\n    const exp = (v, m) => Math.pow(10, Math.floor(log10(v)) + m);\n    if (min === max) {\n      if (min <= 0) {\n        setMin(1);\n        setMax(10);\n      } else {\n        setMin(exp(min, -1));\n        setMax(exp(max, +1));\n      }\n    }\n    if (min <= 0) {\n      setMin(exp(max, -1));\n    }\n    if (max <= 0) {\n      setMax(exp(min, +1));\n    }\n    if (this._zero && this.min !== this._suggestedMin && min === exp(this.min, 0)) {\n      setMin(exp(min, -1));\n    }\n    this.min = min;\n    this.max = max;\n  }\n  buildTicks() {\n    const opts = this.options;\n    const generationOptions = {\n      min: this._userMin,\n      max: this._userMax\n    };\n    const ticks = generateTicks(generationOptions, this);\n    if (opts.bounds === 'ticks') {\n      _setMinAndMaxByKey(ticks, this, 'value');\n    }\n    if (opts.reverse) {\n      ticks.reverse();\n      this.start = this.max;\n      this.end = this.min;\n    } else {\n      this.start = this.min;\n      this.end = this.max;\n    }\n    return ticks;\n  }\n  getLabelForValue(value) {\n    return value === undefined\n      ? '0'\n      : formatNumber(value, this.chart.options.locale, this.options.ticks.format);\n  }\n  configure() {\n    const start = this.min;\n    super.configure();\n    this._startValue = log10(start);\n    this._valueRange = log10(this.max) - log10(start);\n  }\n  getPixelForValue(value) {\n    if (value === undefined || value === 0) {\n      value = this.min;\n    }\n    if (value === null || isNaN(value)) {\n      return NaN;\n    }\n    return this.getPixelForDecimal(value === this.min\n      ? 0\n      : (log10(value) - this._startValue) / this._valueRange);\n  }\n  getValueForPixel(pixel) {\n    const decimal = this.getDecimalForPixel(pixel);\n    return Math.pow(10, this._startValue + decimal * this._valueRange);\n  }\n}\nLogarithmicScale.id = 'logarithmic';\nLogarithmicScale.defaults = {\n  ticks: {\n    callback: Ticks.formatters.logarithmic,\n    major: {\n      enabled: true\n    }\n  }\n};\n\nfunction getTickBackdropHeight(opts) {\n  const tickOpts = opts.ticks;\n  if (tickOpts.display && opts.display) {\n    const padding = toPadding(tickOpts.backdropPadding);\n    return valueOrDefault(tickOpts.font && tickOpts.font.size, defaults.font.size) + padding.height;\n  }\n  return 0;\n}\nfunction measureLabelSize(ctx, font, label) {\n  label = isArray(label) ? label : [label];\n  return {\n    w: _longestText(ctx, font.string, label),\n    h: label.length * font.lineHeight\n  };\n}\nfunction determineLimits(angle, pos, size, min, max) {\n  if (angle === min || angle === max) {\n    return {\n      start: pos - (size / 2),\n      end: pos + (size / 2)\n    };\n  } else if (angle < min || angle > max) {\n    return {\n      start: pos - size,\n      end: pos\n    };\n  }\n  return {\n    start: pos,\n    end: pos + size\n  };\n}\nfunction fitWithPointLabels(scale) {\n  const orig = {\n    l: scale.left + scale._padding.left,\n    r: scale.right - scale._padding.right,\n    t: scale.top + scale._padding.top,\n    b: scale.bottom - scale._padding.bottom\n  };\n  const limits = Object.assign({}, orig);\n  const labelSizes = [];\n  const padding = [];\n  const valueCount = scale._pointLabels.length;\n  const pointLabelOpts = scale.options.pointLabels;\n  const additionalAngle = pointLabelOpts.centerPointLabels ? PI / valueCount : 0;\n  for (let i = 0; i < valueCount; i++) {\n    const opts = pointLabelOpts.setContext(scale.getPointLabelContext(i));\n    padding[i] = opts.padding;\n    const pointPosition = scale.getPointPosition(i, scale.drawingArea + padding[i], additionalAngle);\n    const plFont = toFont(opts.font);\n    const textSize = measureLabelSize(scale.ctx, plFont, scale._pointLabels[i]);\n    labelSizes[i] = textSize;\n    const angleRadians = _normalizeAngle(scale.getIndexAngle(i) + additionalAngle);\n    const angle = Math.round(toDegrees(angleRadians));\n    const hLimits = determineLimits(angle, pointPosition.x, textSize.w, 0, 180);\n    const vLimits = determineLimits(angle, pointPosition.y, textSize.h, 90, 270);\n    updateLimits(limits, orig, angleRadians, hLimits, vLimits);\n  }\n  scale.setCenterPoint(\n    orig.l - limits.l,\n    limits.r - orig.r,\n    orig.t - limits.t,\n    limits.b - orig.b\n  );\n  scale._pointLabelItems = buildPointLabelItems(scale, labelSizes, padding);\n}\nfunction updateLimits(limits, orig, angle, hLimits, vLimits) {\n  const sin = Math.abs(Math.sin(angle));\n  const cos = Math.abs(Math.cos(angle));\n  let x = 0;\n  let y = 0;\n  if (hLimits.start < orig.l) {\n    x = (orig.l - hLimits.start) / sin;\n    limits.l = Math.min(limits.l, orig.l - x);\n  } else if (hLimits.end > orig.r) {\n    x = (hLimits.end - orig.r) / sin;\n    limits.r = Math.max(limits.r, orig.r + x);\n  }\n  if (vLimits.start < orig.t) {\n    y = (orig.t - vLimits.start) / cos;\n    limits.t = Math.min(limits.t, orig.t - y);\n  } else if (vLimits.end > orig.b) {\n    y = (vLimits.end - orig.b) / cos;\n    limits.b = Math.max(limits.b, orig.b + y);\n  }\n}\nfunction buildPointLabelItems(scale, labelSizes, padding) {\n  const items = [];\n  const valueCount = scale._pointLabels.length;\n  const opts = scale.options;\n  const extra = getTickBackdropHeight(opts) / 2;\n  const outerDistance = scale.drawingArea;\n  const additionalAngle = opts.pointLabels.centerPointLabels ? PI / valueCount : 0;\n  for (let i = 0; i < valueCount; i++) {\n    const pointLabelPosition = scale.getPointPosition(i, outerDistance + extra + padding[i], additionalAngle);\n    const angle = Math.round(toDegrees(_normalizeAngle(pointLabelPosition.angle + HALF_PI)));\n    const size = labelSizes[i];\n    const y = yForAngle(pointLabelPosition.y, size.h, angle);\n    const textAlign = getTextAlignForAngle(angle);\n    const left = leftForTextAlign(pointLabelPosition.x, size.w, textAlign);\n    items.push({\n      x: pointLabelPosition.x,\n      y,\n      textAlign,\n      left,\n      top: y,\n      right: left + size.w,\n      bottom: y + size.h\n    });\n  }\n  return items;\n}\nfunction getTextAlignForAngle(angle) {\n  if (angle === 0 || angle === 180) {\n    return 'center';\n  } else if (angle < 180) {\n    return 'left';\n  }\n  return 'right';\n}\nfunction leftForTextAlign(x, w, align) {\n  if (align === 'right') {\n    x -= w;\n  } else if (align === 'center') {\n    x -= (w / 2);\n  }\n  return x;\n}\nfunction yForAngle(y, h, angle) {\n  if (angle === 90 || angle === 270) {\n    y -= (h / 2);\n  } else if (angle > 270 || angle < 90) {\n    y -= h;\n  }\n  return y;\n}\nfunction drawPointLabels(scale, labelCount) {\n  const {ctx, options: {pointLabels}} = scale;\n  for (let i = labelCount - 1; i >= 0; i--) {\n    const optsAtIndex = pointLabels.setContext(scale.getPointLabelContext(i));\n    const plFont = toFont(optsAtIndex.font);\n    const {x, y, textAlign, left, top, right, bottom} = scale._pointLabelItems[i];\n    const {backdropColor} = optsAtIndex;\n    if (!isNullOrUndef(backdropColor)) {\n      const borderRadius = toTRBLCorners(optsAtIndex.borderRadius);\n      const padding = toPadding(optsAtIndex.backdropPadding);\n      ctx.fillStyle = backdropColor;\n      const backdropLeft = left - padding.left;\n      const backdropTop = top - padding.top;\n      const backdropWidth = right - left + padding.width;\n      const backdropHeight = bottom - top + padding.height;\n      if (Object.values(borderRadius).some(v => v !== 0)) {\n        ctx.beginPath();\n        addRoundedRectPath(ctx, {\n          x: backdropLeft,\n          y: backdropTop,\n          w: backdropWidth,\n          h: backdropHeight,\n          radius: borderRadius,\n        });\n        ctx.fill();\n      } else {\n        ctx.fillRect(backdropLeft, backdropTop, backdropWidth, backdropHeight);\n      }\n    }\n    renderText(\n      ctx,\n      scale._pointLabels[i],\n      x,\n      y + (plFont.lineHeight / 2),\n      plFont,\n      {\n        color: optsAtIndex.color,\n        textAlign: textAlign,\n        textBaseline: 'middle'\n      }\n    );\n  }\n}\nfunction pathRadiusLine(scale, radius, circular, labelCount) {\n  const {ctx} = scale;\n  if (circular) {\n    ctx.arc(scale.xCenter, scale.yCenter, radius, 0, TAU);\n  } else {\n    let pointPosition = scale.getPointPosition(0, radius);\n    ctx.moveTo(pointPosition.x, pointPosition.y);\n    for (let i = 1; i < labelCount; i++) {\n      pointPosition = scale.getPointPosition(i, radius);\n      ctx.lineTo(pointPosition.x, pointPosition.y);\n    }\n  }\n}\nfunction drawRadiusLine(scale, gridLineOpts, radius, labelCount) {\n  const ctx = scale.ctx;\n  const circular = gridLineOpts.circular;\n  const {color, lineWidth} = gridLineOpts;\n  if ((!circular && !labelCount) || !color || !lineWidth || radius < 0) {\n    return;\n  }\n  ctx.save();\n  ctx.strokeStyle = color;\n  ctx.lineWidth = lineWidth;\n  ctx.setLineDash(gridLineOpts.borderDash);\n  ctx.lineDashOffset = gridLineOpts.borderDashOffset;\n  ctx.beginPath();\n  pathRadiusLine(scale, radius, circular, labelCount);\n  ctx.closePath();\n  ctx.stroke();\n  ctx.restore();\n}\nfunction createPointLabelContext(parent, index, label) {\n  return createContext(parent, {\n    label,\n    index,\n    type: 'pointLabel'\n  });\n}\nclass RadialLinearScale extends LinearScaleBase {\n  constructor(cfg) {\n    super(cfg);\n    this.xCenter = undefined;\n    this.yCenter = undefined;\n    this.drawingArea = undefined;\n    this._pointLabels = [];\n    this._pointLabelItems = [];\n  }\n  setDimensions() {\n    const padding = this._padding = toPadding(getTickBackdropHeight(this.options) / 2);\n    const w = this.width = this.maxWidth - padding.width;\n    const h = this.height = this.maxHeight - padding.height;\n    this.xCenter = Math.floor(this.left + w / 2 + padding.left);\n    this.yCenter = Math.floor(this.top + h / 2 + padding.top);\n    this.drawingArea = Math.floor(Math.min(w, h) / 2);\n  }\n  determineDataLimits() {\n    const {min, max} = this.getMinMax(false);\n    this.min = isNumberFinite(min) && !isNaN(min) ? min : 0;\n    this.max = isNumberFinite(max) && !isNaN(max) ? max : 0;\n    this.handleTickRangeOptions();\n  }\n  computeTickLimit() {\n    return Math.ceil(this.drawingArea / getTickBackdropHeight(this.options));\n  }\n  generateTickLabels(ticks) {\n    LinearScaleBase.prototype.generateTickLabels.call(this, ticks);\n    this._pointLabels = this.getLabels()\n      .map((value, index) => {\n        const label = callback(this.options.pointLabels.callback, [value, index], this);\n        return label || label === 0 ? label : '';\n      })\n      .filter((v, i) => this.chart.getDataVisibility(i));\n  }\n  fit() {\n    const opts = this.options;\n    if (opts.display && opts.pointLabels.display) {\n      fitWithPointLabels(this);\n    } else {\n      this.setCenterPoint(0, 0, 0, 0);\n    }\n  }\n  setCenterPoint(leftMovement, rightMovement, topMovement, bottomMovement) {\n    this.xCenter += Math.floor((leftMovement - rightMovement) / 2);\n    this.yCenter += Math.floor((topMovement - bottomMovement) / 2);\n    this.drawingArea -= Math.min(this.drawingArea / 2, Math.max(leftMovement, rightMovement, topMovement, bottomMovement));\n  }\n  getIndexAngle(index) {\n    const angleMultiplier = TAU / (this._pointLabels.length || 1);\n    const startAngle = this.options.startAngle || 0;\n    return _normalizeAngle(index * angleMultiplier + toRadians(startAngle));\n  }\n  getDistanceFromCenterForValue(value) {\n    if (isNullOrUndef(value)) {\n      return NaN;\n    }\n    const scalingFactor = this.drawingArea / (this.max - this.min);\n    if (this.options.reverse) {\n      return (this.max - value) * scalingFactor;\n    }\n    return (value - this.min) * scalingFactor;\n  }\n  getValueForDistanceFromCenter(distance) {\n    if (isNullOrUndef(distance)) {\n      return NaN;\n    }\n    const scaledDistance = distance / (this.drawingArea / (this.max - this.min));\n    return this.options.reverse ? this.max - scaledDistance : this.min + scaledDistance;\n  }\n  getPointLabelContext(index) {\n    const pointLabels = this._pointLabels || [];\n    if (index >= 0 && index < pointLabels.length) {\n      const pointLabel = pointLabels[index];\n      return createPointLabelContext(this.getContext(), index, pointLabel);\n    }\n  }\n  getPointPosition(index, distanceFromCenter, additionalAngle = 0) {\n    const angle = this.getIndexAngle(index) - HALF_PI + additionalAngle;\n    return {\n      x: Math.cos(angle) * distanceFromCenter + this.xCenter,\n      y: Math.sin(angle) * distanceFromCenter + this.yCenter,\n      angle\n    };\n  }\n  getPointPositionForValue(index, value) {\n    return this.getPointPosition(index, this.getDistanceFromCenterForValue(value));\n  }\n  getBasePosition(index) {\n    return this.getPointPositionForValue(index || 0, this.getBaseValue());\n  }\n  getPointLabelPosition(index) {\n    const {left, top, right, bottom} = this._pointLabelItems[index];\n    return {\n      left,\n      top,\n      right,\n      bottom,\n    };\n  }\n  drawBackground() {\n    const {backgroundColor, grid: {circular}} = this.options;\n    if (backgroundColor) {\n      const ctx = this.ctx;\n      ctx.save();\n      ctx.beginPath();\n      pathRadiusLine(this, this.getDistanceFromCenterForValue(this._endValue), circular, this._pointLabels.length);\n      ctx.closePath();\n      ctx.fillStyle = backgroundColor;\n      ctx.fill();\n      ctx.restore();\n    }\n  }\n  drawGrid() {\n    const ctx = this.ctx;\n    const opts = this.options;\n    const {angleLines, grid} = opts;\n    const labelCount = this._pointLabels.length;\n    let i, offset, position;\n    if (opts.pointLabels.display) {\n      drawPointLabels(this, labelCount);\n    }\n    if (grid.display) {\n      this.ticks.forEach((tick, index) => {\n        if (index !== 0) {\n          offset = this.getDistanceFromCenterForValue(tick.value);\n          const optsAtIndex = grid.setContext(this.getContext(index - 1));\n          drawRadiusLine(this, optsAtIndex, offset, labelCount);\n        }\n      });\n    }\n    if (angleLines.display) {\n      ctx.save();\n      for (i = labelCount - 1; i >= 0; i--) {\n        const optsAtIndex = angleLines.setContext(this.getPointLabelContext(i));\n        const {color, lineWidth} = optsAtIndex;\n        if (!lineWidth || !color) {\n          continue;\n        }\n        ctx.lineWidth = lineWidth;\n        ctx.strokeStyle = color;\n        ctx.setLineDash(optsAtIndex.borderDash);\n        ctx.lineDashOffset = optsAtIndex.borderDashOffset;\n        offset = this.getDistanceFromCenterForValue(opts.ticks.reverse ? this.min : this.max);\n        position = this.getPointPosition(i, offset);\n        ctx.beginPath();\n        ctx.moveTo(this.xCenter, this.yCenter);\n        ctx.lineTo(position.x, position.y);\n        ctx.stroke();\n      }\n      ctx.restore();\n    }\n  }\n  drawBorder() {}\n  drawLabels() {\n    const ctx = this.ctx;\n    const opts = this.options;\n    const tickOpts = opts.ticks;\n    if (!tickOpts.display) {\n      return;\n    }\n    const startAngle = this.getIndexAngle(0);\n    let offset, width;\n    ctx.save();\n    ctx.translate(this.xCenter, this.yCenter);\n    ctx.rotate(startAngle);\n    ctx.textAlign = 'center';\n    ctx.textBaseline = 'middle';\n    this.ticks.forEach((tick, index) => {\n      if (index === 0 && !opts.reverse) {\n        return;\n      }\n      const optsAtIndex = tickOpts.setContext(this.getContext(index));\n      const tickFont = toFont(optsAtIndex.font);\n      offset = this.getDistanceFromCenterForValue(this.ticks[index].value);\n      if (optsAtIndex.showLabelBackdrop) {\n        ctx.font = tickFont.string;\n        width = ctx.measureText(tick.label).width;\n        ctx.fillStyle = optsAtIndex.backdropColor;\n        const padding = toPadding(optsAtIndex.backdropPadding);\n        ctx.fillRect(\n          -width / 2 - padding.left,\n          -offset - tickFont.size / 2 - padding.top,\n          width + padding.width,\n          tickFont.size + padding.height\n        );\n      }\n      renderText(ctx, tick.label, 0, -offset, tickFont, {\n        color: optsAtIndex.color,\n      });\n    });\n    ctx.restore();\n  }\n  drawTitle() {}\n}\nRadialLinearScale.id = 'radialLinear';\nRadialLinearScale.defaults = {\n  display: true,\n  animate: true,\n  position: 'chartArea',\n  angleLines: {\n    display: true,\n    lineWidth: 1,\n    borderDash: [],\n    borderDashOffset: 0.0\n  },\n  grid: {\n    circular: false\n  },\n  startAngle: 0,\n  ticks: {\n    showLabelBackdrop: true,\n    callback: Ticks.formatters.numeric\n  },\n  pointLabels: {\n    backdropColor: undefined,\n    backdropPadding: 2,\n    display: true,\n    font: {\n      size: 10\n    },\n    callback(label) {\n      return label;\n    },\n    padding: 5,\n    centerPointLabels: false\n  }\n};\nRadialLinearScale.defaultRoutes = {\n  'angleLines.color': 'borderColor',\n  'pointLabels.color': 'color',\n  'ticks.color': 'color'\n};\nRadialLinearScale.descriptors = {\n  angleLines: {\n    _fallback: 'grid'\n  }\n};\n\nconst INTERVALS = {\n  millisecond: {common: true, size: 1, steps: 1000},\n  second: {common: true, size: 1000, steps: 60},\n  minute: {common: true, size: 60000, steps: 60},\n  hour: {common: true, size: 3600000, steps: 24},\n  day: {common: true, size: 86400000, steps: 30},\n  week: {common: false, size: 604800000, steps: 4},\n  month: {common: true, size: 2.628e9, steps: 12},\n  quarter: {common: false, size: 7.884e9, steps: 4},\n  year: {common: true, size: 3.154e10}\n};\nconst UNITS = (Object.keys(INTERVALS));\nfunction sorter(a, b) {\n  return a - b;\n}\nfunction parse(scale, input) {\n  if (isNullOrUndef(input)) {\n    return null;\n  }\n  const adapter = scale._adapter;\n  const {parser, round, isoWeekday} = scale._parseOpts;\n  let value = input;\n  if (typeof parser === 'function') {\n    value = parser(value);\n  }\n  if (!isNumberFinite(value)) {\n    value = typeof parser === 'string'\n      ? adapter.parse(value, parser)\n      : adapter.parse(value);\n  }\n  if (value === null) {\n    return null;\n  }\n  if (round) {\n    value = round === 'week' && (isNumber(isoWeekday) || isoWeekday === true)\n      ? adapter.startOf(value, 'isoWeek', isoWeekday)\n      : adapter.startOf(value, round);\n  }\n  return +value;\n}\nfunction determineUnitForAutoTicks(minUnit, min, max, capacity) {\n  const ilen = UNITS.length;\n  for (let i = UNITS.indexOf(minUnit); i < ilen - 1; ++i) {\n    const interval = INTERVALS[UNITS[i]];\n    const factor = interval.steps ? interval.steps : Number.MAX_SAFE_INTEGER;\n    if (interval.common && Math.ceil((max - min) / (factor * interval.size)) <= capacity) {\n      return UNITS[i];\n    }\n  }\n  return UNITS[ilen - 1];\n}\nfunction determineUnitForFormatting(scale, numTicks, minUnit, min, max) {\n  for (let i = UNITS.length - 1; i >= UNITS.indexOf(minUnit); i--) {\n    const unit = UNITS[i];\n    if (INTERVALS[unit].common && scale._adapter.diff(max, min, unit) >= numTicks - 1) {\n      return unit;\n    }\n  }\n  return UNITS[minUnit ? UNITS.indexOf(minUnit) : 0];\n}\nfunction determineMajorUnit(unit) {\n  for (let i = UNITS.indexOf(unit) + 1, ilen = UNITS.length; i < ilen; ++i) {\n    if (INTERVALS[UNITS[i]].common) {\n      return UNITS[i];\n    }\n  }\n}\nfunction addTick(ticks, time, timestamps) {\n  if (!timestamps) {\n    ticks[time] = true;\n  } else if (timestamps.length) {\n    const {lo, hi} = _lookup(timestamps, time);\n    const timestamp = timestamps[lo] >= time ? timestamps[lo] : timestamps[hi];\n    ticks[timestamp] = true;\n  }\n}\nfunction setMajorTicks(scale, ticks, map, majorUnit) {\n  const adapter = scale._adapter;\n  const first = +adapter.startOf(ticks[0].value, majorUnit);\n  const last = ticks[ticks.length - 1].value;\n  let major, index;\n  for (major = first; major <= last; major = +adapter.add(major, 1, majorUnit)) {\n    index = map[major];\n    if (index >= 0) {\n      ticks[index].major = true;\n    }\n  }\n  return ticks;\n}\nfunction ticksFromTimestamps(scale, values, majorUnit) {\n  const ticks = [];\n  const map = {};\n  const ilen = values.length;\n  let i, value;\n  for (i = 0; i < ilen; ++i) {\n    value = values[i];\n    map[value] = i;\n    ticks.push({\n      value,\n      major: false\n    });\n  }\n  return (ilen === 0 || !majorUnit) ? ticks : setMajorTicks(scale, ticks, map, majorUnit);\n}\nclass TimeScale extends Scale {\n  constructor(props) {\n    super(props);\n    this._cache = {\n      data: [],\n      labels: [],\n      all: []\n    };\n    this._unit = 'day';\n    this._majorUnit = undefined;\n    this._offsets = {};\n    this._normalized = false;\n    this._parseOpts = undefined;\n  }\n  init(scaleOpts, opts) {\n    const time = scaleOpts.time || (scaleOpts.time = {});\n    const adapter = this._adapter = new adapters._date(scaleOpts.adapters.date);\n    adapter.init(opts);\n    mergeIf(time.displayFormats, adapter.formats());\n    this._parseOpts = {\n      parser: time.parser,\n      round: time.round,\n      isoWeekday: time.isoWeekday\n    };\n    super.init(scaleOpts);\n    this._normalized = opts.normalized;\n  }\n  parse(raw, index) {\n    if (raw === undefined) {\n      return null;\n    }\n    return parse(this, raw);\n  }\n  beforeLayout() {\n    super.beforeLayout();\n    this._cache = {\n      data: [],\n      labels: [],\n      all: []\n    };\n  }\n  determineDataLimits() {\n    const options = this.options;\n    const adapter = this._adapter;\n    const unit = options.time.unit || 'day';\n    let {min, max, minDefined, maxDefined} = this.getUserBounds();\n    function _applyBounds(bounds) {\n      if (!minDefined && !isNaN(bounds.min)) {\n        min = Math.min(min, bounds.min);\n      }\n      if (!maxDefined && !isNaN(bounds.max)) {\n        max = Math.max(max, bounds.max);\n      }\n    }\n    if (!minDefined || !maxDefined) {\n      _applyBounds(this._getLabelBounds());\n      if (options.bounds !== 'ticks' || options.ticks.source !== 'labels') {\n        _applyBounds(this.getMinMax(false));\n      }\n    }\n    min = isNumberFinite(min) && !isNaN(min) ? min : +adapter.startOf(Date.now(), unit);\n    max = isNumberFinite(max) && !isNaN(max) ? max : +adapter.endOf(Date.now(), unit) + 1;\n    this.min = Math.min(min, max - 1);\n    this.max = Math.max(min + 1, max);\n  }\n  _getLabelBounds() {\n    const arr = this.getLabelTimestamps();\n    let min = Number.POSITIVE_INFINITY;\n    let max = Number.NEGATIVE_INFINITY;\n    if (arr.length) {\n      min = arr[0];\n      max = arr[arr.length - 1];\n    }\n    return {min, max};\n  }\n  buildTicks() {\n    const options = this.options;\n    const timeOpts = options.time;\n    const tickOpts = options.ticks;\n    const timestamps = tickOpts.source === 'labels' ? this.getLabelTimestamps() : this._generate();\n    if (options.bounds === 'ticks' && timestamps.length) {\n      this.min = this._userMin || timestamps[0];\n      this.max = this._userMax || timestamps[timestamps.length - 1];\n    }\n    const min = this.min;\n    const max = this.max;\n    const ticks = _filterBetween(timestamps, min, max);\n    this._unit = timeOpts.unit || (tickOpts.autoSkip\n      ? determineUnitForAutoTicks(timeOpts.minUnit, this.min, this.max, this._getLabelCapacity(min))\n      : determineUnitForFormatting(this, ticks.length, timeOpts.minUnit, this.min, this.max));\n    this._majorUnit = !tickOpts.major.enabled || this._unit === 'year' ? undefined\n      : determineMajorUnit(this._unit);\n    this.initOffsets(timestamps);\n    if (options.reverse) {\n      ticks.reverse();\n    }\n    return ticksFromTimestamps(this, ticks, this._majorUnit);\n  }\n  afterAutoSkip() {\n    if (this.options.offsetAfterAutoskip) {\n      this.initOffsets(this.ticks.map(tick => +tick.value));\n    }\n  }\n  initOffsets(timestamps) {\n    let start = 0;\n    let end = 0;\n    let first, last;\n    if (this.options.offset && timestamps.length) {\n      first = this.getDecimalForValue(timestamps[0]);\n      if (timestamps.length === 1) {\n        start = 1 - first;\n      } else {\n        start = (this.getDecimalForValue(timestamps[1]) - first) / 2;\n      }\n      last = this.getDecimalForValue(timestamps[timestamps.length - 1]);\n      if (timestamps.length === 1) {\n        end = last;\n      } else {\n        end = (last - this.getDecimalForValue(timestamps[timestamps.length - 2])) / 2;\n      }\n    }\n    const limit = timestamps.length < 3 ? 0.5 : 0.25;\n    start = _limitValue(start, 0, limit);\n    end = _limitValue(end, 0, limit);\n    this._offsets = {start, end, factor: 1 / (start + 1 + end)};\n  }\n  _generate() {\n    const adapter = this._adapter;\n    const min = this.min;\n    const max = this.max;\n    const options = this.options;\n    const timeOpts = options.time;\n    const minor = timeOpts.unit || determineUnitForAutoTicks(timeOpts.minUnit, min, max, this._getLabelCapacity(min));\n    const stepSize = valueOrDefault(timeOpts.stepSize, 1);\n    const weekday = minor === 'week' ? timeOpts.isoWeekday : false;\n    const hasWeekday = isNumber(weekday) || weekday === true;\n    const ticks = {};\n    let first = min;\n    let time, count;\n    if (hasWeekday) {\n      first = +adapter.startOf(first, 'isoWeek', weekday);\n    }\n    first = +adapter.startOf(first, hasWeekday ? 'day' : minor);\n    if (adapter.diff(max, min, minor) > 100000 * stepSize) {\n      throw new Error(min + ' and ' + max + ' are too far apart with stepSize of ' + stepSize + ' ' + minor);\n    }\n    const timestamps = options.ticks.source === 'data' && this.getDataTimestamps();\n    for (time = first, count = 0; time < max; time = +adapter.add(time, stepSize, minor), count++) {\n      addTick(ticks, time, timestamps);\n    }\n    if (time === max || options.bounds === 'ticks' || count === 1) {\n      addTick(ticks, time, timestamps);\n    }\n    return Object.keys(ticks).sort((a, b) => a - b).map(x => +x);\n  }\n  getLabelForValue(value) {\n    const adapter = this._adapter;\n    const timeOpts = this.options.time;\n    if (timeOpts.tooltipFormat) {\n      return adapter.format(value, timeOpts.tooltipFormat);\n    }\n    return adapter.format(value, timeOpts.displayFormats.datetime);\n  }\n  _tickFormatFunction(time, index, ticks, format) {\n    const options = this.options;\n    const formats = options.time.displayFormats;\n    const unit = this._unit;\n    const majorUnit = this._majorUnit;\n    const minorFormat = unit && formats[unit];\n    const majorFormat = majorUnit && formats[majorUnit];\n    const tick = ticks[index];\n    const major = majorUnit && majorFormat && tick && tick.major;\n    const label = this._adapter.format(time, format || (major ? majorFormat : minorFormat));\n    const formatter = options.ticks.callback;\n    return formatter ? callback(formatter, [label, index, ticks], this) : label;\n  }\n  generateTickLabels(ticks) {\n    let i, ilen, tick;\n    for (i = 0, ilen = ticks.length; i < ilen; ++i) {\n      tick = ticks[i];\n      tick.label = this._tickFormatFunction(tick.value, i, ticks);\n    }\n  }\n  getDecimalForValue(value) {\n    return value === null ? NaN : (value - this.min) / (this.max - this.min);\n  }\n  getPixelForValue(value) {\n    const offsets = this._offsets;\n    const pos = this.getDecimalForValue(value);\n    return this.getPixelForDecimal((offsets.start + pos) * offsets.factor);\n  }\n  getValueForPixel(pixel) {\n    const offsets = this._offsets;\n    const pos = this.getDecimalForPixel(pixel) / offsets.factor - offsets.end;\n    return this.min + pos * (this.max - this.min);\n  }\n  _getLabelSize(label) {\n    const ticksOpts = this.options.ticks;\n    const tickLabelWidth = this.ctx.measureText(label).width;\n    const angle = toRadians(this.isHorizontal() ? ticksOpts.maxRotation : ticksOpts.minRotation);\n    const cosRotation = Math.cos(angle);\n    const sinRotation = Math.sin(angle);\n    const tickFontSize = this._resolveTickFontOptions(0).size;\n    return {\n      w: (tickLabelWidth * cosRotation) + (tickFontSize * sinRotation),\n      h: (tickLabelWidth * sinRotation) + (tickFontSize * cosRotation)\n    };\n  }\n  _getLabelCapacity(exampleTime) {\n    const timeOpts = this.options.time;\n    const displayFormats = timeOpts.displayFormats;\n    const format = displayFormats[timeOpts.unit] || displayFormats.millisecond;\n    const exampleLabel = this._tickFormatFunction(exampleTime, 0, ticksFromTimestamps(this, [exampleTime], this._majorUnit), format);\n    const size = this._getLabelSize(exampleLabel);\n    const capacity = Math.floor(this.isHorizontal() ? this.width / size.w : this.height / size.h) - 1;\n    return capacity > 0 ? capacity : 1;\n  }\n  getDataTimestamps() {\n    let timestamps = this._cache.data || [];\n    let i, ilen;\n    if (timestamps.length) {\n      return timestamps;\n    }\n    const metas = this.getMatchingVisibleMetas();\n    if (this._normalized && metas.length) {\n      return (this._cache.data = metas[0].controller.getAllParsedValues(this));\n    }\n    for (i = 0, ilen = metas.length; i < ilen; ++i) {\n      timestamps = timestamps.concat(metas[i].controller.getAllParsedValues(this));\n    }\n    return (this._cache.data = this.normalize(timestamps));\n  }\n  getLabelTimestamps() {\n    const timestamps = this._cache.labels || [];\n    let i, ilen;\n    if (timestamps.length) {\n      return timestamps;\n    }\n    const labels = this.getLabels();\n    for (i = 0, ilen = labels.length; i < ilen; ++i) {\n      timestamps.push(parse(this, labels[i]));\n    }\n    return (this._cache.labels = this._normalized ? timestamps : this.normalize(timestamps));\n  }\n  normalize(values) {\n    return _arrayUnique(values.sort(sorter));\n  }\n}\nTimeScale.id = 'time';\nTimeScale.defaults = {\n  bounds: 'data',\n  adapters: {},\n  time: {\n    parser: false,\n    unit: false,\n    round: false,\n    isoWeekday: false,\n    minUnit: 'millisecond',\n    displayFormats: {}\n  },\n  ticks: {\n    source: 'auto',\n    major: {\n      enabled: false\n    }\n  }\n};\n\nfunction interpolate(table, val, reverse) {\n  let lo = 0;\n  let hi = table.length - 1;\n  let prevSource, nextSource, prevTarget, nextTarget;\n  if (reverse) {\n    if (val >= table[lo].pos && val <= table[hi].pos) {\n      ({lo, hi} = _lookupByKey(table, 'pos', val));\n    }\n    ({pos: prevSource, time: prevTarget} = table[lo]);\n    ({pos: nextSource, time: nextTarget} = table[hi]);\n  } else {\n    if (val >= table[lo].time && val <= table[hi].time) {\n      ({lo, hi} = _lookupByKey(table, 'time', val));\n    }\n    ({time: prevSource, pos: prevTarget} = table[lo]);\n    ({time: nextSource, pos: nextTarget} = table[hi]);\n  }\n  const span = nextSource - prevSource;\n  return span ? prevTarget + (nextTarget - prevTarget) * (val - prevSource) / span : prevTarget;\n}\nclass TimeSeriesScale extends TimeScale {\n  constructor(props) {\n    super(props);\n    this._table = [];\n    this._minPos = undefined;\n    this._tableRange = undefined;\n  }\n  initOffsets() {\n    const timestamps = this._getTimestampsForTable();\n    const table = this._table = this.buildLookupTable(timestamps);\n    this._minPos = interpolate(table, this.min);\n    this._tableRange = interpolate(table, this.max) - this._minPos;\n    super.initOffsets(timestamps);\n  }\n  buildLookupTable(timestamps) {\n    const {min, max} = this;\n    const items = [];\n    const table = [];\n    let i, ilen, prev, curr, next;\n    for (i = 0, ilen = timestamps.length; i < ilen; ++i) {\n      curr = timestamps[i];\n      if (curr >= min && curr <= max) {\n        items.push(curr);\n      }\n    }\n    if (items.length < 2) {\n      return [\n        {time: min, pos: 0},\n        {time: max, pos: 1}\n      ];\n    }\n    for (i = 0, ilen = items.length; i < ilen; ++i) {\n      next = items[i + 1];\n      prev = items[i - 1];\n      curr = items[i];\n      if (Math.round((next + prev) / 2) !== curr) {\n        table.push({time: curr, pos: i / (ilen - 1)});\n      }\n    }\n    return table;\n  }\n  _getTimestampsForTable() {\n    let timestamps = this._cache.all || [];\n    if (timestamps.length) {\n      return timestamps;\n    }\n    const data = this.getDataTimestamps();\n    const label = this.getLabelTimestamps();\n    if (data.length && label.length) {\n      timestamps = this.normalize(data.concat(label));\n    } else {\n      timestamps = data.length ? data : label;\n    }\n    timestamps = this._cache.all = timestamps;\n    return timestamps;\n  }\n  getDecimalForValue(value) {\n    return (interpolate(this._table, value) - this._minPos) / this._tableRange;\n  }\n  getValueForPixel(pixel) {\n    const offsets = this._offsets;\n    const decimal = this.getDecimalForPixel(pixel) / offsets.factor - offsets.end;\n    return interpolate(this._table, decimal * this._tableRange + this._minPos, true);\n  }\n}\nTimeSeriesScale.id = 'timeseries';\nTimeSeriesScale.defaults = TimeScale.defaults;\n\nvar scales = /*#__PURE__*/Object.freeze({\n__proto__: null,\nCategoryScale: CategoryScale,\nLinearScale: LinearScale,\nLogarithmicScale: LogarithmicScale,\nRadialLinearScale: RadialLinearScale,\nTimeScale: TimeScale,\nTimeSeriesScale: TimeSeriesScale\n});\n\nconst registerables = [\n  controllers,\n  elements,\n  plugins,\n  scales,\n];\n\nexport { Animation, Animations, ArcElement, BarController, BarElement, BasePlatform, BasicPlatform, BubbleController, CategoryScale, Chart, DatasetController, plugin_decimation as Decimation, DomPlatform, DoughnutController, Element, index as Filler, Interaction, plugin_legend as Legend, LineController, LineElement, LinearScale, LogarithmicScale, PieController, PointElement, PolarAreaController, RadarController, RadialLinearScale, Scale, ScatterController, plugin_subtitle as SubTitle, Ticks, TimeScale, TimeSeriesScale, plugin_title as Title, plugin_tooltip as Tooltip, adapters as _adapters, _detectPlatform, animator, controllers, elements, layouts, plugins, registerables, registry, scales };\n", "import {Chart, registerables} from '../dist/chart.mjs';\n\nChart.register(...registerables);\n\nexport default Chart;\n", "function _typeof(o) {\n  \"@babel/helpers - typeof\";\n\n  return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n    return typeof o;\n  } : function (o) {\n    return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n  }, _typeof(o);\n}\nexport { _typeof as default };", "export default function toInteger(dirtyNumber) {\n  if (dirtyNumber === null || dirtyNumber === true || dirtyNumber === false) {\n    return NaN;\n  }\n  var number = Number(dirtyNumber);\n  if (isNaN(number)) {\n    return number;\n  }\n  return number < 0 ? Math.ceil(number) : Math.floor(number);\n}", "export default function requiredArgs(required, args) {\n  if (args.length < required) {\n    throw new TypeError(required + ' argument' + (required > 1 ? 's' : '') + ' required, but only ' + args.length + ' present');\n  }\n}", "import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @param {Date|Number} argument - the value to convert\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\nexport default function toDate(argument) {\n  requiredArgs(1, arguments);\n  var argStr = Object.prototype.toString.call(argument);\n\n  // Clone the date\n  if (argument instanceof Date || _typeof(argument) === 'object' && argStr === '[object Date]') {\n    // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n    return new Date(argument.getTime());\n  } else if (typeof argument === 'number' || argStr === '[object Number]') {\n    return new Date(argument);\n  } else {\n    if ((typeof argument === 'string' || argStr === '[object String]') && typeof console !== 'undefined') {\n      // eslint-disable-next-line no-console\n      console.warn(\"Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#string-arguments\");\n      // eslint-disable-next-line no-console\n      console.warn(new Error().stack);\n    }\n    return new Date(NaN);\n  }\n}", "import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addDays\n * @category Day Helpers\n * @summary Add the specified number of days to the given date.\n *\n * @description\n * Add the specified number of days to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of days to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} - the new date with the days added\n * @throws {TypeError} - 2 arguments required\n *\n * @example\n * // Add 10 days to 1 September 2014:\n * const result = addDays(new Date(2014, 8, 1), 10)\n * //=> Thu Sep 11 2014 00:00:00\n */\nexport default function addDays(dirtyDate, dirtyAmount) {\n  requiredArgs(2, arguments);\n  var date = toDate(dirtyDate);\n  var amount = toInteger(dirtyAmount);\n  if (isNaN(amount)) {\n    return new Date(NaN);\n  }\n  if (!amount) {\n    // If 0 days, no-op to avoid changing times in the hour before end of DST\n    return date;\n  }\n  date.setDate(date.getDate() + amount);\n  return date;\n}", "import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addMonths\n * @category Month Helpers\n * @summary Add the specified number of months to the given date.\n *\n * @description\n * Add the specified number of months to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of months to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the months added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 5 months to 1 September 2014:\n * const result = addMonths(new Date(2014, 8, 1), 5)\n * //=> Sun Feb 01 2015 00:00:00\n */\nexport default function addMonths(dirtyDate, dirtyAmount) {\n  requiredArgs(2, arguments);\n  var date = toDate(dirtyDate);\n  var amount = toInteger(dirtyAmount);\n  if (isNaN(amount)) {\n    return new Date(NaN);\n  }\n  if (!amount) {\n    // If 0 months, no-op to avoid changing times in the hour before end of DST\n    return date;\n  }\n  var dayOfMonth = date.getDate();\n\n  // The JS Date object supports date math by accepting out-of-bounds values for\n  // month, day, etc. For example, new Date(2020, 0, 0) returns 31 Dec 2019 and\n  // new Date(2020, 13, 1) returns 1 Feb 2021.  This is *almost* the behavior we\n  // want except that dates will wrap around the end of a month, meaning that\n  // new Date(2020, 13, 31) will return 3 Mar 2021 not 28 Feb 2021 as desired. So\n  // we'll default to the end of the desired month by adding 1 to the desired\n  // month and using a date of 0 to back up one day to the end of the desired\n  // month.\n  var endOfDesiredMonth = new Date(date.getTime());\n  endOfDesiredMonth.setMonth(date.getMonth() + amount + 1, 0);\n  var daysInMonth = endOfDesiredMonth.getDate();\n  if (dayOfMonth >= daysInMonth) {\n    // If we're already at the end of the month, then this is the correct date\n    // and we're done.\n    return endOfDesiredMonth;\n  } else {\n    // Otherwise, we now know that setting the original day-of-month value won't\n    // cause an overflow, so set the desired day-of-month. Note that we can't\n    // just set the date of `endOfDesiredMonth` because that object may have had\n    // its time changed in the unusual case where where a DST transition was on\n    // the last day of the month and its local time was in the hour skipped or\n    // repeated next to a DST transition.  So we use `date` instead which is\n    // guaranteed to still have the original time.\n    date.setFullYear(endOfDesiredMonth.getFullYear(), endOfDesiredMonth.getMonth(), dayOfMonth);\n    return date;\n  }\n}", "import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addMilliseconds\n * @category Millisecond Helpers\n * @summary Add the specified number of milliseconds to the given date.\n *\n * @description\n * Add the specified number of milliseconds to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 750 milliseconds to 10 July 2014 12:45:30.000:\n * const result = addMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:30.750\n */\nexport default function addMilliseconds(dirtyDate, dirtyAmount) {\n  requiredArgs(2, arguments);\n  var timestamp = toDate(dirtyDate).getTime();\n  var amount = toInteger(dirtyAmount);\n  return new Date(timestamp + amount);\n}", "import toInteger from \"../_lib/toInteger/index.js\";\nimport addMilliseconds from \"../addMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_HOUR = 3600000;\n\n/**\n * @name addHours\n * @category Hour Helpers\n * @summary Add the specified number of hours to the given date.\n *\n * @description\n * Add the specified number of hours to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of hours to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the hours added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 2 hours to 10 July 2014 23:00:00:\n * const result = addHours(new Date(2014, 6, 10, 23, 0), 2)\n * //=> Fri Jul 11 2014 01:00:00\n */\nexport default function addHours(dirtyDate, dirtyAmount) {\n  requiredArgs(2, arguments);\n  var amount = toInteger(dirtyAmount);\n  return addMilliseconds(dirtyDate, amount * MILLISECONDS_IN_HOUR);\n}", "var defaultOptions = {};\nexport function getDefaultOptions() {\n  return defaultOptions;\n}\nexport function setDefaultOptions(newOptions) {\n  defaultOptions = newOptions;\n}", "import toDate from \"../toDate/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getDefaultOptions } from \"../_lib/defaultOptions/index.js\";\n/**\n * @name startOfWeek\n * @category Week Helpers\n * @summary Return the start of a week for the given date.\n *\n * @description\n * Return the start of a week for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Date} the start of a week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // The start of a week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sun Aug 31 2014 00:00:00\n *\n * @example\n * // If the week starts on Monday, the start of the week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport default function startOfWeek(dirtyDate, options) {\n  var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n  requiredArgs(1, arguments);\n  var defaultOptions = getDefaultOptions();\n  var weekStartsOn = toInteger((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0);\n\n  // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n  if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n    throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n  }\n  var date = toDate(dirtyDate);\n  var day = date.getDay();\n  var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n  date.setDate(date.getDate() - diff);\n  date.setHours(0, 0, 0, 0);\n  return date;\n}", "/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nexport default function getTimezoneOffsetInMilliseconds(date) {\n  var utcDate = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()));\n  utcDate.setUTCFullYear(date.getFullYear());\n  return date.getTime() - utcDate.getTime();\n}", "import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfDay\n * @category Day Helpers\n * @summary Return the start of a day for the given date.\n *\n * @description\n * Return the start of a day for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a day\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a day for 2 September 2014 11:55:00:\n * const result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 00:00:00\n */\nexport default function startOfDay(dirtyDate) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  date.setHours(0, 0, 0, 0);\n  return date;\n}", "import getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport startOfDay from \"../startOfDay/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_DAY = 86400000;\n\n/**\n * @name differenceInCalendarDays\n * @category Day Helpers\n * @summary Get the number of calendar days between the given dates.\n *\n * @description\n * Get the number of calendar days between the given dates. This means that the times are removed\n * from the dates and then the difference in days is calculated.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar days\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many calendar days are between\n * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?\n * const result = differenceInCalendarDays(\n *   new Date(2012, 6, 2, 0, 0),\n *   new Date(2011, 6, 2, 23, 0)\n * )\n * //=> 366\n * // How many calendar days are between\n * // 2 July 2011 23:59:00 and 3 July 2011 00:01:00?\n * const result = differenceInCalendarDays(\n *   new Date(2011, 6, 3, 0, 1),\n *   new Date(2011, 6, 2, 23, 59)\n * )\n * //=> 1\n */\nexport default function differenceInCalendarDays(dirtyDateLeft, dirtyDateRight) {\n  requiredArgs(2, arguments);\n  var startOfDayLeft = startOfDay(dirtyDateLeft);\n  var startOfDayRight = startOfDay(dirtyDateRight);\n  var timestampLeft = startOfDayLeft.getTime() - getTimezoneOffsetInMilliseconds(startOfDayLeft);\n  var timestampRight = startOfDayRight.getTime() - getTimezoneOffsetInMilliseconds(startOfDayRight);\n\n  // Round the number of days to the nearest integer\n  // because the number of milliseconds in a day is not constant\n  // (e.g. it's different in the day of the daylight saving time clock shift)\n  return Math.round((timestampLeft - timestampRight) / MILLISECONDS_IN_DAY);\n}", "import toInteger from \"../_lib/toInteger/index.js\";\nimport addMilliseconds from \"../addMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_MINUTE = 60000;\n\n/**\n * @name addMinutes\n * @category Minute Helpers\n * @summary Add the specified number of minutes to the given date.\n *\n * @description\n * Add the specified number of minutes to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of minutes to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the minutes added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 30 minutes to 10 July 2014 12:00:00:\n * const result = addMinutes(new Date(2014, 6, 10, 12, 0), 30)\n * //=> Thu Jul 10 2014 12:30:00\n */\nexport default function addMinutes(dirtyDate, dirtyAmount) {\n  requiredArgs(2, arguments);\n  var amount = toInteger(dirtyAmount);\n  return addMilliseconds(dirtyDate, amount * MILLISECONDS_IN_MINUTE);\n}", "import toInteger from \"../_lib/toInteger/index.js\";\nimport addMonths from \"../addMonths/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addQuarters\n * @category Quarter Helpers\n * @summary Add the specified number of year quarters to the given date.\n *\n * @description\n * Add the specified number of year quarters to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of quarters to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the quarters added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 1 quarter to 1 September 2014:\n * const result = addQuarters(new Date(2014, 8, 1), 1)\n * //=> Mon Dec 01 2014 00:00:00\n */\nexport default function addQuarters(dirtyDate, dirtyAmount) {\n  requiredArgs(2, arguments);\n  var amount = toInteger(dirtyAmount);\n  var months = amount * 3;\n  return addMonths(dirtyDate, months);\n}", "import toInteger from \"../_lib/toInteger/index.js\";\nimport addMilliseconds from \"../addMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addSeconds\n * @category Second Helpers\n * @summary Add the specified number of seconds to the given date.\n *\n * @description\n * Add the specified number of seconds to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of seconds to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the seconds added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 30 seconds to 10 July 2014 12:45:00:\n * const result = addSeconds(new Date(2014, 6, 10, 12, 45, 0), 30)\n * //=> Thu Jul 10 2014 12:45:30\n */\nexport default function addSeconds(dirtyDate, dirtyAmount) {\n  requiredArgs(2, arguments);\n  var amount = toInteger(dirtyAmount);\n  return addMilliseconds(dirtyDate, amount * 1000);\n}", "import toInteger from \"../_lib/toInteger/index.js\";\nimport addDays from \"../addDays/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addWeeks\n * @category Week Helpers\n * @summary Add the specified number of weeks to the given date.\n *\n * @description\n * Add the specified number of week to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of weeks to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the weeks added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 4 weeks to 1 September 2014:\n * const result = addWeeks(new Date(2014, 8, 1), 4)\n * //=> Mon Sep 29 2014 00:00:00\n */\nexport default function addWeeks(dirtyDate, dirtyAmount) {\n  requiredArgs(2, arguments);\n  var amount = toInteger(dirtyAmount);\n  var days = amount * 7;\n  return addDays(dirtyDate, days);\n}", "import toInteger from \"../_lib/toInteger/index.js\";\nimport addMonths from \"../addMonths/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addYears\n * @category Year Helpers\n * @summary Add the specified number of years to the given date.\n *\n * @description\n * Add the specified number of years to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of years to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the years added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 5 years to 1 September 2014:\n * const result = addYears(new Date(2014, 8, 1), 5)\n * //=> Sun Sep 01 2019 00:00:00\n */\nexport default function addYears(dirtyDate, dirtyAmount) {\n  requiredArgs(2, arguments);\n  var amount = toInteger(dirtyAmount);\n  return addMonths(dirtyDate, amount * 12);\n}", "import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name compareAsc\n * @category Common Helpers\n * @summary Compare the two dates and return -1, 0 or 1.\n *\n * @description\n * Compare the two dates and return 1 if the first date is after the second,\n * -1 if the first date is before the second or 0 if dates are equal.\n *\n * @param {Date|Number} dateLeft - the first date to compare\n * @param {Date|Number} dateRight - the second date to compare\n * @returns {Number} the result of the comparison\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Compare 11 February 1987 and 10 July 1989:\n * const result = compareAsc(new Date(1987, 1, 11), new Date(1989, 6, 10))\n * //=> -1\n *\n * @example\n * // Sort the array of dates:\n * const result = [\n *   new Date(1995, 6, 2),\n *   new Date(1987, 1, 11),\n *   new Date(1989, 6, 10)\n * ].sort(compareAsc)\n * //=> [\n * //   Wed Feb 11 1987 00:00:00,\n * //   Mon Jul 10 1989 00:00:00,\n * //   Sun Jul 02 1995 00:00:00\n * // ]\n */\nexport default function compareAsc(dirtyDateLeft, dirtyDateRight) {\n  requiredArgs(2, arguments);\n  var dateLeft = toDate(dirtyDateLeft);\n  var dateRight = toDate(dirtyDateRight);\n  var diff = dateLeft.getTime() - dateRight.getTime();\n  if (diff < 0) {\n    return -1;\n  } else if (diff > 0) {\n    return 1;\n    // Return 0 if diff is 0; return NaN if diff is NaN\n  } else {\n    return diff;\n  }\n}", "/**\n * Days in 1 week.\n *\n * @name daysInWeek\n * @constant\n * @type {number}\n * @default\n */\nexport var daysInWeek = 7;\n\n/**\n * Days in 1 year\n * One years equals 365.2425 days according to the formula:\n *\n * > Leap year occures every 4 years, except for years that are divisable by 100 and not divisable by 400.\n * > 1 mean year = (365+1/4-1/100+1/400) days = 365.2425 days\n *\n * @name daysInYear\n * @constant\n * @type {number}\n * @default\n */\nexport var daysInYear = 365.2425;\n\n/**\n * Maximum allowed time.\n *\n * @name maxTime\n * @constant\n * @type {number}\n * @default\n */\nexport var maxTime = Math.pow(10, 8) * 24 * 60 * 60 * 1000;\n\n/**\n * Milliseconds in 1 minute\n *\n * @name millisecondsInMinute\n * @constant\n * @type {number}\n * @default\n */\nexport var millisecondsInMinute = 60000;\n\n/**\n * Milliseconds in 1 hour\n *\n * @name millisecondsInHour\n * @constant\n * @type {number}\n * @default\n */\nexport var millisecondsInHour = 3600000;\n\n/**\n * Milliseconds in 1 second\n *\n * @name millisecondsInSecond\n * @constant\n * @type {number}\n * @default\n */\nexport var millisecondsInSecond = 1000;\n\n/**\n * Minimum allowed time.\n *\n * @name minTime\n * @constant\n * @type {number}\n * @default\n */\nexport var minTime = -maxTime;\n\n/**\n * Minutes in 1 hour\n *\n * @name minutesInHour\n * @constant\n * @type {number}\n * @default\n */\nexport var minutesInHour = 60;\n\n/**\n * Months in 1 quarter\n *\n * @name monthsInQuarter\n * @constant\n * @type {number}\n * @default\n */\nexport var monthsInQuarter = 3;\n\n/**\n * Months in 1 year\n *\n * @name monthsInYear\n * @constant\n * @type {number}\n * @default\n */\nexport var monthsInYear = 12;\n\n/**\n * Quarters in 1 year\n *\n * @name quartersInYear\n * @constant\n * @type {number}\n * @default\n */\nexport var quartersInYear = 4;\n\n/**\n * Seconds in 1 hour\n *\n * @name secondsInHour\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInHour = 3600;\n\n/**\n * Seconds in 1 minute\n *\n * @name secondsInMinute\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInMinute = 60;\n\n/**\n * Seconds in 1 day\n *\n * @name secondsInDay\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInDay = secondsInHour * 24;\n\n/**\n * Seconds in 1 week\n *\n * @name secondsInWeek\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInWeek = secondsInDay * 7;\n\n/**\n * Seconds in 1 year\n *\n * @name secondsInYear\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInYear = secondsInDay * daysInYear;\n\n/**\n * Seconds in 1 month\n *\n * @name secondsInMonth\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInMonth = secondsInYear / 12;\n\n/**\n * Seconds in 1 quarter\n *\n * @name secondsInQuarter\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInQuarter = secondsInMonth * 3;", "import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isDate\n * @category Common Helpers\n * @summary Is the given value a date?\n *\n * @description\n * Returns true if the given value is an instance of Date. The function works for dates transferred across iframes.\n *\n * @param {*} value - the value to check\n * @returns {boolean} true if the given value is a date\n * @throws {TypeError} 1 arguments required\n *\n * @example\n * // For a valid date:\n * const result = isDate(new Date())\n * //=> true\n *\n * @example\n * // For an invalid date:\n * const result = isDate(new Date(NaN))\n * //=> true\n *\n * @example\n * // For some value:\n * const result = isDate('2014-02-31')\n * //=> false\n *\n * @example\n * // For an object:\n * const result = isDate({})\n * //=> false\n */\nexport default function isDate(value) {\n  requiredArgs(1, arguments);\n  return value instanceof Date || _typeof(value) === 'object' && Object.prototype.toString.call(value) === '[object Date]';\n}", "import isDate from \"../isDate/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @param {*} date - the date to check\n * @returns {Boolean} the date is valid\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // For the valid date:\n * const result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertable into a date:\n * const result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * const result = isValid(new Date(''))\n * //=> false\n */\nexport default function isValid(dirtyDate) {\n  requiredArgs(1, arguments);\n  if (!isDate(dirtyDate) && typeof dirtyDate !== 'number') {\n    return false;\n  }\n  var date = toDate(dirtyDate);\n  return !isNaN(Number(date));\n}", "import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name differenceInCalendarMonths\n * @category Month Helpers\n * @summary Get the number of calendar months between the given dates.\n *\n * @description\n * Get the number of calendar months between the given dates.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar months\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many calendar months are between 31 January 2014 and 1 September 2014?\n * const result = differenceInCalendarMonths(\n *   new Date(2014, 8, 1),\n *   new Date(2014, 0, 31)\n * )\n * //=> 8\n */\nexport default function differenceInCalendarMonths(dirtyDateLeft, dirtyDateRight) {\n  requiredArgs(2, arguments);\n  var dateLeft = toDate(dirtyDateLeft);\n  var dateRight = toDate(dirtyDateRight);\n  var yearDiff = dateLeft.getFullYear() - dateRight.getFullYear();\n  var monthDiff = dateLeft.getMonth() - dateRight.getMonth();\n  return yearDiff * 12 + monthDiff;\n}", "import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name differenceInCalendarYears\n * @category Year Helpers\n * @summary Get the number of calendar years between the given dates.\n *\n * @description\n * Get the number of calendar years between the given dates.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar years\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many calendar years are between 31 December 2013 and 11 February 2015?\n * const result = differenceInCalendarYears(\n *   new Date(2015, 1, 11),\n *   new Date(2013, 11, 31)\n * )\n * //=> 2\n */\nexport default function differenceInCalendarYears(dirtyDateLeft, dirtyDateRight) {\n  requiredArgs(2, arguments);\n  var dateLeft = toDate(dirtyDateLeft);\n  var dateRight = toDate(dirtyDateRight);\n  return dateLeft.getFullYear() - dateRight.getFullYear();\n}", "import toDate from \"../toDate/index.js\";\nimport differenceInCalendarDays from \"../differenceInCalendarDays/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\"; // Like `compareAsc` but uses local time not UTC, which is needed\n// for accurate equality comparisons of UTC timestamps that end up\n// having the same representation in local time, e.g. one hour before\n// DST ends vs. the instant that DST ends.\nfunction compareLocalAsc(dateLeft, dateRight) {\n  var diff = dateLeft.getFullYear() - dateRight.getFullYear() || dateLeft.getMonth() - dateRight.getMonth() || dateLeft.getDate() - dateRight.getDate() || dateLeft.getHours() - dateRight.getHours() || dateLeft.getMinutes() - dateRight.getMinutes() || dateLeft.getSeconds() - dateRight.getSeconds() || dateLeft.getMilliseconds() - dateRight.getMilliseconds();\n  if (diff < 0) {\n    return -1;\n  } else if (diff > 0) {\n    return 1;\n    // Return 0 if diff is 0; return NaN if diff is NaN\n  } else {\n    return diff;\n  }\n}\n\n/**\n * @name differenceInDays\n * @category Day Helpers\n * @summary Get the number of full days between the given dates.\n *\n * @description\n * Get the number of full day periods between two dates. Fractional days are\n * truncated towards zero.\n *\n * One \"full day\" is the distance between a local time in one day to the same\n * local time on the next or previous day. A full day can sometimes be less than\n * or more than 24 hours if a daylight savings change happens between two dates.\n *\n * To ignore DST and only measure exact 24-hour periods, use this instead:\n * `Math.floor(differenceInHours(dateLeft, dateRight)/24)|0`.\n *\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of full days according to the local timezone\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many full days are between\n * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?\n * const result = differenceInDays(\n *   new Date(2012, 6, 2, 0, 0),\n *   new Date(2011, 6, 2, 23, 0)\n * )\n * //=> 365\n * // How many full days are between\n * // 2 July 2011 23:59:00 and 3 July 2011 00:01:00?\n * const result = differenceInDays(\n *   new Date(2011, 6, 3, 0, 1),\n *   new Date(2011, 6, 2, 23, 59)\n * )\n * //=> 0\n * // How many full days are between\n * // 1 March 2020 0:00 and 1 June 2020 0:00 ?\n * // Note: because local time is used, the\n * // result will always be 92 days, even in\n * // time zones where DST starts and the\n * // period has only 92*24-1 hours.\n * const result = differenceInDays(\n *   new Date(2020, 5, 1),\n *   new Date(2020, 2, 1)\n * )\n//=> 92\n */\nexport default function differenceInDays(dirtyDateLeft, dirtyDateRight) {\n  requiredArgs(2, arguments);\n  var dateLeft = toDate(dirtyDateLeft);\n  var dateRight = toDate(dirtyDateRight);\n  var sign = compareLocalAsc(dateLeft, dateRight);\n  var difference = Math.abs(differenceInCalendarDays(dateLeft, dateRight));\n  dateLeft.setDate(dateLeft.getDate() - sign * difference);\n\n  // Math.abs(diff in full days - diff in calendar days) === 1 if last calendar day is not full\n  // If so, result must be decreased by 1 in absolute value\n  var isLastDayNotFull = Number(compareLocalAsc(dateLeft, dateRight) === -sign);\n  var result = sign * (difference - isLastDayNotFull);\n  // Prevent negative zero\n  return result === 0 ? 0 : result;\n}", "import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name differenceInMilliseconds\n * @category Millisecond Helpers\n * @summary Get the number of milliseconds between the given dates.\n *\n * @description\n * Get the number of milliseconds between the given dates.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of milliseconds\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many milliseconds are between\n * // 2 July 2014 12:30:20.600 and 2 July 2014 12:30:21.700?\n * const result = differenceInMilliseconds(\n *   new Date(2014, 6, 2, 12, 30, 21, 700),\n *   new Date(2014, 6, 2, 12, 30, 20, 600)\n * )\n * //=> 1100\n */\nexport default function differenceInMilliseconds(dateLeft, dateRight) {\n  requiredArgs(2, arguments);\n  return toDate(dateLeft).getTime() - toDate(dateRight).getTime();\n}", "var roundingMap = {\n  ceil: Math.ceil,\n  round: Math.round,\n  floor: Math.floor,\n  trunc: function trunc(value) {\n    return value < 0 ? Math.ceil(value) : Math.floor(value);\n  } // Math.trunc is not supported by IE\n};\n\nvar defaultRoundingMethod = 'trunc';\nexport function getRoundingMethod(method) {\n  return method ? roundingMap[method] : roundingMap[defaultRoundingMethod];\n}", "import { millisecondsInHour } from \"../constants/index.js\";\nimport differenceInMilliseconds from \"../differenceInMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getRoundingMethod } from \"../_lib/roundingMethods/index.js\";\n/**\n * @name differenceInHours\n * @category Hour Helpers\n * @summary Get the number of hours between the given dates.\n *\n * @description\n * Get the number of hours between the given dates.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @param {Object} [options] - an object with options.\n * @param {String} [options.roundingMethod='trunc'] - a rounding method (`ceil`, `floor`, `round` or `trunc`)\n * @returns {Number} the number of hours\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many hours are between 2 July 2014 06:50:00 and 2 July 2014 19:00:00?\n * const result = differenceInHours(\n *   new Date(2014, 6, 2, 19, 0),\n *   new Date(2014, 6, 2, 6, 50)\n * )\n * //=> 12\n */\nexport default function differenceInHours(dateLeft, dateRight, options) {\n  requiredArgs(2, arguments);\n  var diff = differenceInMilliseconds(dateLeft, dateRight) / millisecondsInHour;\n  return getRoundingMethod(options === null || options === void 0 ? void 0 : options.roundingMethod)(diff);\n}", "import { millisecondsInMinute } from \"../constants/index.js\";\nimport differenceInMilliseconds from \"../differenceInMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getRoundingMethod } from \"../_lib/roundingMethods/index.js\";\n/**\n * @name differenceInMinutes\n * @category Minute Helpers\n * @summary Get the number of minutes between the given dates.\n *\n * @description\n * Get the signed number of full (rounded towards 0) minutes between the given dates.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @param {Object} [options] - an object with options.\n * @param {String} [options.roundingMethod='trunc'] - a rounding method (`ceil`, `floor`, `round` or `trunc`)\n * @returns {Number} the number of minutes\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many minutes are between 2 July 2014 12:07:59 and 2 July 2014 12:20:00?\n * const result = differenceInMinutes(\n *   new Date(2014, 6, 2, 12, 20, 0),\n *   new Date(2014, 6, 2, 12, 7, 59)\n * )\n * //=> 12\n *\n * @example\n * // How many minutes are between 10:01:59 and 10:00:00\n * const result = differenceInMinutes(\n *   new Date(2000, 0, 1, 10, 0, 0),\n *   new Date(2000, 0, 1, 10, 1, 59)\n * )\n * //=> -1\n */\nexport default function differenceInMinutes(dateLeft, dateRight, options) {\n  requiredArgs(2, arguments);\n  var diff = differenceInMilliseconds(dateLeft, dateRight) / millisecondsInMinute;\n  return getRoundingMethod(options === null || options === void 0 ? void 0 : options.roundingMethod)(diff);\n}", "import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfDay\n * @category Day Helpers\n * @summary Return the end of a day for the given date.\n *\n * @description\n * Return the end of a day for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a day\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a day for 2 September 2014 11:55:00:\n * const result = endOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 23:59:59.999\n */\nexport default function endOfDay(dirtyDate) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  date.setHours(23, 59, 59, 999);\n  return date;\n}", "import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfMonth\n * @category Month Helpers\n * @summary Return the end of a month for the given date.\n *\n * @description\n * Return the end of a month for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a month for 2 September 2014 11:55:00:\n * const result = endOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 23:59:59.999\n */\nexport default function endOfMonth(dirtyDate) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  var month = date.getMonth();\n  date.setFullYear(date.getFullYear(), month + 1, 0);\n  date.setHours(23, 59, 59, 999);\n  return date;\n}", "import toDate from \"../toDate/index.js\";\nimport endOfDay from \"../endOfDay/index.js\";\nimport endOfMonth from \"../endOfMonth/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isLastDayOfMonth\n * @category Month Helpers\n * @summary Is the given date the last day of a month?\n *\n * @description\n * Is the given date the last day of a month?\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is the last day of a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Is 28 February 2014 the last day of a month?\n * const result = isLastDayOfMonth(new Date(2014, 1, 28))\n * //=> true\n */\nexport default function isLastDayOfMonth(dirtyDate) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  return endOfDay(date).getTime() === endOfMonth(date).getTime();\n}", "import toDate from \"../toDate/index.js\";\nimport differenceInCalendarMonths from \"../differenceInCalendarMonths/index.js\";\nimport compareAsc from \"../compareAsc/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport isLastDayOfMonth from \"../isLastDayOfMonth/index.js\";\n/**\n * @name differenceInMonths\n * @category Month Helpers\n * @summary Get the number of full months between the given dates.\n *\n * @description\n * Get the number of full months between the given dates using trunc as a default rounding method.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of full months\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many full months are between 31 January 2014 and 1 September 2014?\n * const result = differenceInMonths(new Date(2014, 8, 1), new Date(2014, 0, 31))\n * //=> 7\n */\nexport default function differenceInMonths(dirtyDateLeft, dirtyDateRight) {\n  requiredArgs(2, arguments);\n  var dateLeft = toDate(dirtyDateLeft);\n  var dateRight = toDate(dirtyDateRight);\n  var sign = compareAsc(dateLeft, dateRight);\n  var difference = Math.abs(differenceInCalendarMonths(dateLeft, dateRight));\n  var result;\n\n  // Check for the difference of less than month\n  if (difference < 1) {\n    result = 0;\n  } else {\n    if (dateLeft.getMonth() === 1 && dateLeft.getDate() > 27) {\n      // This will check if the date is end of Feb and assign a higher end of month date\n      // to compare it with Jan\n      dateLeft.setDate(30);\n    }\n    dateLeft.setMonth(dateLeft.getMonth() - sign * difference);\n\n    // Math.abs(diff in full months - diff in calendar months) === 1 if last calendar month is not full\n    // If so, result must be decreased by 1 in absolute value\n    var isLastMonthNotFull = compareAsc(dateLeft, dateRight) === -sign;\n\n    // Check for cases of one full calendar month\n    if (isLastDayOfMonth(toDate(dirtyDateLeft)) && difference === 1 && compareAsc(dirtyDateLeft, dateRight) === 1) {\n      isLastMonthNotFull = false;\n    }\n    result = sign * (difference - Number(isLastMonthNotFull));\n  }\n\n  // Prevent negative zero\n  return result === 0 ? 0 : result;\n}", "import differenceInMonths from \"../differenceInMonths/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getRoundingMethod } from \"../_lib/roundingMethods/index.js\";\n/**\n * @name differenceInQuarters\n * @category Quarter Helpers\n * @summary Get the number of quarters between the given dates.\n *\n * @description\n * Get the number of quarters between the given dates.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @param {Object} [options] - an object with options.\n * @param {String} [options.roundingMethod='trunc'] - a rounding method (`ceil`, `floor`, `round` or `trunc`)\n * @returns {Number} the number of full quarters\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many full quarters are between 31 December 2013 and 2 July 2014?\n * const result = differenceInQuarters(new Date(2014, 6, 2), new Date(2013, 11, 31))\n * //=> 2\n */\nexport default function differenceInQuarters(dateLeft, dateRight, options) {\n  requiredArgs(2, arguments);\n  var diff = differenceInMonths(dateLeft, dateRight) / 3;\n  return getRoundingMethod(options === null || options === void 0 ? void 0 : options.roundingMethod)(diff);\n}", "import differenceInMilliseconds from \"../differenceInMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getRoundingMethod } from \"../_lib/roundingMethods/index.js\";\n/**\n * @name differenceInSeconds\n * @category Second Helpers\n * @summary Get the number of seconds between the given dates.\n *\n * @description\n * Get the number of seconds between the given dates.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @param {Object} [options] - an object with options.\n * @param {String} [options.roundingMethod='trunc'] - a rounding method (`ceil`, `floor`, `round` or `trunc`)\n * @returns {Number} the number of seconds\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many seconds are between\n * // 2 July 2014 12:30:07.999 and 2 July 2014 12:30:20.000?\n * const result = differenceInSeconds(\n *   new Date(2014, 6, 2, 12, 30, 20, 0),\n *   new Date(2014, 6, 2, 12, 30, 7, 999)\n * )\n * //=> 12\n */\nexport default function differenceInSeconds(dateLeft, dateRight, options) {\n  requiredArgs(2, arguments);\n  var diff = differenceInMilliseconds(dateLeft, dateRight) / 1000;\n  return getRoundingMethod(options === null || options === void 0 ? void 0 : options.roundingMethod)(diff);\n}", "import differenceInDays from \"../differenceInDays/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getRoundingMethod } from \"../_lib/roundingMethods/index.js\";\n/**\n * @name differenceInWeeks\n * @category Week Helpers\n * @summary Get the number of full weeks between the given dates.\n *\n * @description\n * Get the number of full weeks between two dates. Fractional weeks are\n * truncated towards zero by default.\n *\n * One \"full week\" is the distance between a local time in one day to the same\n * local time 7 days earlier or later. A full week can sometimes be less than\n * or more than 7*24 hours if a daylight savings change happens between two dates.\n *\n * To ignore DST and only measure exact 7*24-hour periods, use this instead:\n * `Math.floor(differenceInHours(dateLeft, dateRight)/(7*24))|0`.\n *\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @param {Object} [options] - an object with options.\n * @param {String} [options.roundingMethod='trunc'] - a rounding method (`ceil`, `floor`, `round` or `trunc`)\n * @returns {Number} the number of full weeks\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many full weeks are between 5 July 2014 and 20 July 2014?\n * const result = differenceInWeeks(new Date(2014, 6, 20), new Date(2014, 6, 5))\n * //=> 2\n *\n * // How many full weeks are between\n * // 1 March 2020 0:00 and 6 June 2020 0:00 ?\n * // Note: because local time is used, the\n * // result will always be 8 weeks (54 days),\n * // even if DST starts and the period has\n * // only 54*24-1 hours.\n * const result = differenceInWeeks(\n *   new Date(2020, 5, 1),\n *   new Date(2020, 2, 6)\n * )\n * //=> 8\n */\nexport default function differenceInWeeks(dateLeft, dateRight, options) {\n  requiredArgs(2, arguments);\n  var diff = differenceInDays(dateLeft, dateRight) / 7;\n  return getRoundingMethod(options === null || options === void 0 ? void 0 : options.roundingMethod)(diff);\n}", "import toDate from \"../toDate/index.js\";\nimport differenceInCalendarYears from \"../differenceInCalendarYears/index.js\";\nimport compareAsc from \"../compareAsc/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name differenceInYears\n * @category Year Helpers\n * @summary Get the number of full years between the given dates.\n *\n * @description\n * Get the number of full years between the given dates.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of full years\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many full years are between 31 December 2013 and 11 February 2015?\n * const result = differenceInYears(new Date(2015, 1, 11), new Date(2013, 11, 31))\n * //=> 1\n */\nexport default function differenceInYears(dirtyDateLeft, dirtyDateRight) {\n  requiredArgs(2, arguments);\n  var dateLeft = toDate(dirtyDateLeft);\n  var dateRight = toDate(dirtyDateRight);\n  var sign = compareAsc(dateLeft, dateRight);\n  var difference = Math.abs(differenceInCalendarYears(dateLeft, dateRight));\n\n  // Set both dates to a valid leap year for accurate comparison when dealing\n  // with leap days\n  dateLeft.setFullYear(1584);\n  dateRight.setFullYear(1584);\n\n  // Math.abs(diff in full years - diff in calendar years) === 1 if last calendar year is not full\n  // If so, result must be decreased by 1 in absolute value\n  var isLastYearNotFull = compareAsc(dateLeft, dateRight) === -sign;\n  var result = sign * (difference - Number(isLastYearNotFull));\n  // Prevent negative zero\n  return result === 0 ? 0 : result;\n}", "import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfMinute\n * @category Minute Helpers\n * @summary Return the start of a minute for the given date.\n *\n * @description\n * Return the start of a minute for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a minute\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a minute for 1 December 2014 22:15:45.400:\n * const result = startOfMinute(new Date(2014, 11, 1, 22, 15, 45, 400))\n * //=> Mon Dec 01 2014 22:15:00\n */\nexport default function startOfMinute(dirtyDate) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  date.setSeconds(0, 0);\n  return date;\n}", "import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfQuarter\n * @category Quarter Helpers\n * @summary Return the start of a year quarter for the given date.\n *\n * @description\n * Return the start of a year quarter for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a quarter\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a quarter for 2 September 2014 11:55:00:\n * const result = startOfQuarter(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Jul 01 2014 00:00:00\n */\nexport default function startOfQuarter(dirtyDate) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  var currentMonth = date.getMonth();\n  var month = currentMonth - currentMonth % 3;\n  date.setMonth(month, 1);\n  date.setHours(0, 0, 0, 0);\n  return date;\n}", "import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfMonth\n * @category Month Helpers\n * @summary Return the start of a month for the given date.\n *\n * @description\n * Return the start of a month for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a month for 2 September 2014 11:55:00:\n * const result = startOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport default function startOfMonth(dirtyDate) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  date.setDate(1);\n  date.setHours(0, 0, 0, 0);\n  return date;\n}", "import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfYear\n * @category Year Helpers\n * @summary Return the end of a year for the given date.\n *\n * @description\n * Return the end of a year for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a year for 2 September 2014 11:55:00:\n * const result = endOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Dec 31 2014 23:59:59.999\n */\nexport default function endOfYear(dirtyDate) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  var year = date.getFullYear();\n  date.setFullYear(year + 1, 0, 0);\n  date.setHours(23, 59, 59, 999);\n  return date;\n}", "import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfYear\n * @category Year Helpers\n * @summary Return the start of a year for the given date.\n *\n * @description\n * Return the start of a year for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a year for 2 September 2014 11:55:00:\n * const result = startOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Jan 01 2014 00:00:00\n */\nexport default function startOfYear(dirtyDate) {\n  requiredArgs(1, arguments);\n  var cleanDate = toDate(dirtyDate);\n  var date = new Date(0);\n  date.setFullYear(cleanDate.getFullYear(), 0, 1);\n  date.setHours(0, 0, 0, 0);\n  return date;\n}", "import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfHour\n * @category Hour Helpers\n * @summary Return the end of an hour for the given date.\n *\n * @description\n * Return the end of an hour for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of an hour\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of an hour for 2 September 2014 11:55:00:\n * const result = endOfHour(new Date(2014, 8, 2, 11, 55))\n * //=> Tue Sep 02 2014 11:59:59.999\n */\nexport default function endOfHour(dirtyDate) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  date.setMinutes(59, 59, 999);\n  return date;\n}", "import { getDefaultOptions } from \"../_lib/defaultOptions/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfWeek\n * @category Week Helpers\n * @summary Return the end of a week for the given date.\n *\n * @description\n * Return the end of a week for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Date} the end of a week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // The end of a week for 2 September 2014 11:55:00:\n * const result = endOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sat Sep 06 2014 23:59:59.999\n *\n * @example\n * // If the week starts on Monday, the end of the week for 2 September 2014 11:55:00:\n * const result = endOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Sun Sep 07 2014 23:59:59.999\n */\nexport default function endOfWeek(dirtyDate, options) {\n  var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n  requiredArgs(1, arguments);\n  var defaultOptions = getDefaultOptions();\n  var weekStartsOn = toInteger((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0);\n\n  // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n  if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n    throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n  }\n  var date = toDate(dirtyDate);\n  var day = date.getDay();\n  var diff = (day < weekStartsOn ? -7 : 0) + 6 - (day - weekStartsOn);\n  date.setDate(date.getDate() + diff);\n  date.setHours(23, 59, 59, 999);\n  return date;\n}", "import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfMinute\n * @category Minute Helpers\n * @summary Return the end of a minute for the given date.\n *\n * @description\n * Return the end of a minute for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a minute\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a minute for 1 December 2014 22:15:45.400:\n * const result = endOfMinute(new Date(2014, 11, 1, 22, 15, 45, 400))\n * //=> Mon Dec 01 2014 22:15:59.999\n */\nexport default function endOfMinute(dirtyDate) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  date.setSeconds(59, 999);\n  return date;\n}", "import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfQuarter\n * @category Quarter Helpers\n * @summary Return the end of a year quarter for the given date.\n *\n * @description\n * Return the end of a year quarter for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a quarter\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a quarter for 2 September 2014 11:55:00:\n * const result = endOfQuarter(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 23:59:59.999\n */\nexport default function endOfQuarter(dirtyDate) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  var currentMonth = date.getMonth();\n  var month = currentMonth - currentMonth % 3 + 3;\n  date.setMonth(month, 0);\n  date.setHours(23, 59, 59, 999);\n  return date;\n}", "import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfSecond\n * @category Second Helpers\n * @summary Return the end of a second for the given date.\n *\n * @description\n * Return the end of a second for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a second\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a second for 1 December 2014 22:15:45.400:\n * const result = endOfSecond(new Date(2014, 11, 1, 22, 15, 45, 400))\n * //=> Mon Dec 01 2014 22:15:45.999\n */\nexport default function endOfSecond(dirtyDate) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  date.setMilliseconds(999);\n  return date;\n}", "import addMilliseconds from \"../addMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name subMilliseconds\n * @category Millisecond Helpers\n * @summary Subtract the specified number of milliseconds from the given date.\n *\n * @description\n * Subtract the specified number of milliseconds from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 750 milliseconds from 10 July 2014 12:45:30.000:\n * const result = subMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:29.250\n */\nexport default function subMilliseconds(dirtyDate, dirtyAmount) {\n  requiredArgs(2, arguments);\n  var amount = toInteger(dirtyAmount);\n  return addMilliseconds(dirtyDate, -amount);\n}", "import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_DAY = 86400000;\nexport default function getUTCDayOfYear(dirtyDate) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  var timestamp = date.getTime();\n  date.setUTCMonth(0, 1);\n  date.setUTCHours(0, 0, 0, 0);\n  var startOfYearTimestamp = date.getTime();\n  var difference = timestamp - startOfYearTimestamp;\n  return Math.floor(difference / MILLISECONDS_IN_DAY) + 1;\n}", "import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nexport default function startOfUTCISOWeek(dirtyDate) {\n  requiredArgs(1, arguments);\n  var weekStartsOn = 1;\n  var date = toDate(dirtyDate);\n  var day = date.getUTCDay();\n  var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n  date.setUTCDate(date.getUTCDate() - diff);\n  date.setUTCHours(0, 0, 0, 0);\n  return date;\n}", "import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nexport default function getUTCISOWeekYear(dirtyDate) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  var year = date.getUTCFullYear();\n  var fourthOfJanuaryOfNextYear = new Date(0);\n  fourthOfJanuaryOfNextYear.setUTCFullYear(year + 1, 0, 4);\n  fourthOfJanuaryOfNextYear.setUTCHours(0, 0, 0, 0);\n  var startOfNextYear = startOfUTCISOWeek(fourthOfJanuaryOfNextYear);\n  var fourthOfJanuaryOfThisYear = new Date(0);\n  fourthOfJanuaryOfThisYear.setUTCFullYear(year, 0, 4);\n  fourthOfJanuaryOfThisYear.setUTCHours(0, 0, 0, 0);\n  var startOfThisYear = startOfUTCISOWeek(fourthOfJanuaryOfThisYear);\n  if (date.getTime() >= startOfNextYear.getTime()) {\n    return year + 1;\n  } else if (date.getTime() >= startOfThisYear.getTime()) {\n    return year;\n  } else {\n    return year - 1;\n  }\n}", "import getUTCISOWeekYear from \"../getUTCISOWeekYear/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nexport default function startOfUTCISOWeekYear(dirtyDate) {\n  requiredArgs(1, arguments);\n  var year = getUTCISOWeekYear(dirtyDate);\n  var fourthOfJanuary = new Date(0);\n  fourthOfJanuary.setUTCFullYear(year, 0, 4);\n  fourthOfJanuary.setUTCHours(0, 0, 0, 0);\n  var date = startOfUTCISOWeek(fourthOfJanuary);\n  return date;\n}", "import toDate from \"../../toDate/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nimport startOfUTCISOWeekYear from \"../startOfUTCISOWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\nexport default function getUTCISOWeek(dirtyDate) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  var diff = startOfUTCISOWeek(date).getTime() - startOfUTCISOWeekYear(date).getTime();\n\n  // Round the number of days to the nearest integer\n  // because the number of milliseconds in a week is not constant\n  // (e.g. it's different in the week of the daylight saving time clock shift)\n  return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}", "import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function startOfUTCWeek(dirtyDate, options) {\n  var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n  requiredArgs(1, arguments);\n  var defaultOptions = getDefaultOptions();\n  var weekStartsOn = toInteger((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0);\n\n  // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n  if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n    throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n  }\n  var date = toDate(dirtyDate);\n  var day = date.getUTCDay();\n  var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n  date.setUTCDate(date.getUTCDate() - diff);\n  date.setUTCHours(0, 0, 0, 0);\n  return date;\n}", "import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function getUTCWeekYear(dirtyDate, options) {\n  var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  var year = date.getUTCFullYear();\n  var defaultOptions = getDefaultOptions();\n  var firstWeekContainsDate = toInteger((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1);\n\n  // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n  if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n    throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n  }\n  var firstWeekOfNextYear = new Date(0);\n  firstWeekOfNextYear.setUTCFullYear(year + 1, 0, firstWeekContainsDate);\n  firstWeekOfNextYear.setUTCHours(0, 0, 0, 0);\n  var startOfNextYear = startOfUTCWeek(firstWeekOfNextYear, options);\n  var firstWeekOfThisYear = new Date(0);\n  firstWeekOfThisYear.setUTCFullYear(year, 0, firstWeekContainsDate);\n  firstWeekOfThisYear.setUTCHours(0, 0, 0, 0);\n  var startOfThisYear = startOfUTCWeek(firstWeekOfThisYear, options);\n  if (date.getTime() >= startOfNextYear.getTime()) {\n    return year + 1;\n  } else if (date.getTime() >= startOfThisYear.getTime()) {\n    return year;\n  } else {\n    return year - 1;\n  }\n}", "import getUTCWeekYear from \"../getUTCWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function startOfUTCWeekYear(dirtyDate, options) {\n  var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n  requiredArgs(1, arguments);\n  var defaultOptions = getDefaultOptions();\n  var firstWeekContainsDate = toInteger((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1);\n  var year = getUTCWeekYear(dirtyDate, options);\n  var firstWeek = new Date(0);\n  firstWeek.setUTCFullYear(year, 0, firstWeekContainsDate);\n  firstWeek.setUTCHours(0, 0, 0, 0);\n  var date = startOfUTCWeek(firstWeek, options);\n  return date;\n}", "import toDate from \"../../toDate/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport startOfUTCWeekYear from \"../startOfUTCWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\nexport default function getUTCWeek(dirtyDate, options) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  var diff = startOfUTCWeek(date, options).getTime() - startOfUTCWeekYear(date, options).getTime();\n\n  // Round the number of days to the nearest integer\n  // because the number of milliseconds in a week is not constant\n  // (e.g. it's different in the week of the daylight saving time clock shift)\n  return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}", "export default function addLeadingZeros(number, targetLength) {\n  var sign = number < 0 ? '-' : '';\n  var output = Math.abs(number).toString();\n  while (output.length < targetLength) {\n    output = '0' + output;\n  }\n  return sign + output;\n}", "import addLeadingZeros from \"../../addLeadingZeros/index.js\";\n/*\n * |     | Unit                           |     | Unit                           |\n * |-----|--------------------------------|-----|--------------------------------|\n * |  a  | AM, PM                         |  A* |                                |\n * |  d  | Day of month                   |  D  |                                |\n * |  h  | Hour [1-12]                    |  H  | Hour [0-23]                    |\n * |  m  | Minute                         |  M  | Month                          |\n * |  s  | Second                         |  S  | Fraction of second             |\n * |  y  | Year (abs)                     |  Y  |                                |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n */\nvar formatters = {\n  // Year\n  y: function y(date, token) {\n    // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\n    // | Year     |     y | yy |   yyy |  yyyy | yyyyy |\n    // |----------|-------|----|-------|-------|-------|\n    // | AD 1     |     1 | 01 |   001 |  0001 | 00001 |\n    // | AD 12    |    12 | 12 |   012 |  0012 | 00012 |\n    // | AD 123   |   123 | 23 |   123 |  0123 | 00123 |\n    // | AD 1234  |  1234 | 34 |  1234 |  1234 | 01234 |\n    // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n\n    var signedYear = date.getUTCFullYear();\n    // Returns 1 for 1 BC (which is year 0 in JavaScript)\n    var year = signedYear > 0 ? signedYear : 1 - signedYear;\n    return addLeadingZeros(token === 'yy' ? year % 100 : year, token.length);\n  },\n  // Month\n  M: function M(date, token) {\n    var month = date.getUTCMonth();\n    return token === 'M' ? String(month + 1) : addLeadingZeros(month + 1, 2);\n  },\n  // Day of the month\n  d: function d(date, token) {\n    return addLeadingZeros(date.getUTCDate(), token.length);\n  },\n  // AM or PM\n  a: function a(date, token) {\n    var dayPeriodEnumValue = date.getUTCHours() / 12 >= 1 ? 'pm' : 'am';\n    switch (token) {\n      case 'a':\n      case 'aa':\n        return dayPeriodEnumValue.toUpperCase();\n      case 'aaa':\n        return dayPeriodEnumValue;\n      case 'aaaaa':\n        return dayPeriodEnumValue[0];\n      case 'aaaa':\n      default:\n        return dayPeriodEnumValue === 'am' ? 'a.m.' : 'p.m.';\n    }\n  },\n  // Hour [1-12]\n  h: function h(date, token) {\n    return addLeadingZeros(date.getUTCHours() % 12 || 12, token.length);\n  },\n  // Hour [0-23]\n  H: function H(date, token) {\n    return addLeadingZeros(date.getUTCHours(), token.length);\n  },\n  // Minute\n  m: function m(date, token) {\n    return addLeadingZeros(date.getUTCMinutes(), token.length);\n  },\n  // Second\n  s: function s(date, token) {\n    return addLeadingZeros(date.getUTCSeconds(), token.length);\n  },\n  // Fraction of second\n  S: function S(date, token) {\n    var numberOfDigits = token.length;\n    var milliseconds = date.getUTCMilliseconds();\n    var fractionalSeconds = Math.floor(milliseconds * Math.pow(10, numberOfDigits - 3));\n    return addLeadingZeros(fractionalSeconds, token.length);\n  }\n};\nexport default formatters;", "import getUTCDayOfYear from \"../../../_lib/getUTCDayOfYear/index.js\";\nimport getUTCISOWeek from \"../../../_lib/getUTCISOWeek/index.js\";\nimport getUTCISOWeekYear from \"../../../_lib/getUTCISOWeekYear/index.js\";\nimport getUTCWeek from \"../../../_lib/getUTCWeek/index.js\";\nimport getUTCWeekYear from \"../../../_lib/getUTCWeekYear/index.js\";\nimport addLeadingZeros from \"../../addLeadingZeros/index.js\";\nimport lightFormatters from \"../lightFormatters/index.js\";\nvar dayPeriodEnum = {\n  am: 'am',\n  pm: 'pm',\n  midnight: 'midnight',\n  noon: 'noon',\n  morning: 'morning',\n  afternoon: 'afternoon',\n  evening: 'evening',\n  night: 'night'\n};\n/*\n * |     | Unit                           |     | Unit                           |\n * |-----|--------------------------------|-----|--------------------------------|\n * |  a  | AM, PM                         |  A* | Milliseconds in day            |\n * |  b  | AM, PM, noon, midnight         |  B  | Flexible day period            |\n * |  c  | Stand-alone local day of week  |  C* | Localized hour w/ day period   |\n * |  d  | Day of month                   |  D  | Day of year                    |\n * |  e  | Local day of week              |  E  | Day of week                    |\n * |  f  |                                |  F* | Day of week in month           |\n * |  g* | Modified Julian day            |  G  | Era                            |\n * |  h  | Hour [1-12]                    |  H  | Hour [0-23]                    |\n * |  i! | ISO day of week                |  I! | ISO week of year               |\n * |  j* | Localized hour w/ day period   |  J* | Localized hour w/o day period  |\n * |  k  | Hour [1-24]                    |  K  | Hour [0-11]                    |\n * |  l* | (deprecated)                   |  L  | Stand-alone month              |\n * |  m  | Minute                         |  M  | Month                          |\n * |  n  |                                |  N  |                                |\n * |  o! | Ordinal number modifier        |  O  | Timezone (GMT)                 |\n * |  p! | Long localized time            |  P! | Long localized date            |\n * |  q  | Stand-alone quarter            |  Q  | Quarter                        |\n * |  r* | Related Gregorian year         |  R! | ISO week-numbering year        |\n * |  s  | Second                         |  S  | Fraction of second             |\n * |  t! | Seconds timestamp              |  T! | Milliseconds timestamp         |\n * |  u  | Extended year                  |  U* | Cyclic year                    |\n * |  v* | Timezone (generic non-locat.)  |  V* | Timezone (location)            |\n * |  w  | Local week of year             |  W* | Week of month                  |\n * |  x  | Timezone (ISO-8601 w/o Z)      |  X  | Timezone (ISO-8601)            |\n * |  y  | Year (abs)                     |  Y  | Local week-numbering year      |\n * |  z  | Timezone (specific non-locat.) |  Z* | Timezone (aliases)             |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n *   i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n *   `R` is supposed to be used in conjunction with `I` and `i`\n *   for universal ISO week-numbering date, whereas\n *   `Y` is supposed to be used in conjunction with `w` and `e`\n *   for week-numbering date specific to the locale.\n * - `P` is long localized date format\n * - `p` is long localized time format\n */\n\nvar formatters = {\n  // Era\n  G: function G(date, token, localize) {\n    var era = date.getUTCFullYear() > 0 ? 1 : 0;\n    switch (token) {\n      // AD, BC\n      case 'G':\n      case 'GG':\n      case 'GGG':\n        return localize.era(era, {\n          width: 'abbreviated'\n        });\n      // A, B\n      case 'GGGGG':\n        return localize.era(era, {\n          width: 'narrow'\n        });\n      // Anno Domini, Before Christ\n      case 'GGGG':\n      default:\n        return localize.era(era, {\n          width: 'wide'\n        });\n    }\n  },\n  // Year\n  y: function y(date, token, localize) {\n    // Ordinal number\n    if (token === 'yo') {\n      var signedYear = date.getUTCFullYear();\n      // Returns 1 for 1 BC (which is year 0 in JavaScript)\n      var year = signedYear > 0 ? signedYear : 1 - signedYear;\n      return localize.ordinalNumber(year, {\n        unit: 'year'\n      });\n    }\n    return lightFormatters.y(date, token);\n  },\n  // Local week-numbering year\n  Y: function Y(date, token, localize, options) {\n    var signedWeekYear = getUTCWeekYear(date, options);\n    // Returns 1 for 1 BC (which is year 0 in JavaScript)\n    var weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear;\n\n    // Two digit year\n    if (token === 'YY') {\n      var twoDigitYear = weekYear % 100;\n      return addLeadingZeros(twoDigitYear, 2);\n    }\n\n    // Ordinal number\n    if (token === 'Yo') {\n      return localize.ordinalNumber(weekYear, {\n        unit: 'year'\n      });\n    }\n\n    // Padding\n    return addLeadingZeros(weekYear, token.length);\n  },\n  // ISO week-numbering year\n  R: function R(date, token) {\n    var isoWeekYear = getUTCISOWeekYear(date);\n\n    // Padding\n    return addLeadingZeros(isoWeekYear, token.length);\n  },\n  // Extended year. This is a single number designating the year of this calendar system.\n  // The main difference between `y` and `u` localizers are B.C. years:\n  // | Year | `y` | `u` |\n  // |------|-----|-----|\n  // | AC 1 |   1 |   1 |\n  // | BC 1 |   1 |   0 |\n  // | BC 2 |   2 |  -1 |\n  // Also `yy` always returns the last two digits of a year,\n  // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n  u: function u(date, token) {\n    var year = date.getUTCFullYear();\n    return addLeadingZeros(year, token.length);\n  },\n  // Quarter\n  Q: function Q(date, token, localize) {\n    var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n    switch (token) {\n      // 1, 2, 3, 4\n      case 'Q':\n        return String(quarter);\n      // 01, 02, 03, 04\n      case 'QQ':\n        return addLeadingZeros(quarter, 2);\n      // 1st, 2nd, 3rd, 4th\n      case 'Qo':\n        return localize.ordinalNumber(quarter, {\n          unit: 'quarter'\n        });\n      // Q1, Q2, Q3, Q4\n      case 'QQQ':\n        return localize.quarter(quarter, {\n          width: 'abbreviated',\n          context: 'formatting'\n        });\n      // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n      case 'QQQQQ':\n        return localize.quarter(quarter, {\n          width: 'narrow',\n          context: 'formatting'\n        });\n      // 1st quarter, 2nd quarter, ...\n      case 'QQQQ':\n      default:\n        return localize.quarter(quarter, {\n          width: 'wide',\n          context: 'formatting'\n        });\n    }\n  },\n  // Stand-alone quarter\n  q: function q(date, token, localize) {\n    var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n    switch (token) {\n      // 1, 2, 3, 4\n      case 'q':\n        return String(quarter);\n      // 01, 02, 03, 04\n      case 'qq':\n        return addLeadingZeros(quarter, 2);\n      // 1st, 2nd, 3rd, 4th\n      case 'qo':\n        return localize.ordinalNumber(quarter, {\n          unit: 'quarter'\n        });\n      // Q1, Q2, Q3, Q4\n      case 'qqq':\n        return localize.quarter(quarter, {\n          width: 'abbreviated',\n          context: 'standalone'\n        });\n      // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n      case 'qqqqq':\n        return localize.quarter(quarter, {\n          width: 'narrow',\n          context: 'standalone'\n        });\n      // 1st quarter, 2nd quarter, ...\n      case 'qqqq':\n      default:\n        return localize.quarter(quarter, {\n          width: 'wide',\n          context: 'standalone'\n        });\n    }\n  },\n  // Month\n  M: function M(date, token, localize) {\n    var month = date.getUTCMonth();\n    switch (token) {\n      case 'M':\n      case 'MM':\n        return lightFormatters.M(date, token);\n      // 1st, 2nd, ..., 12th\n      case 'Mo':\n        return localize.ordinalNumber(month + 1, {\n          unit: 'month'\n        });\n      // Jan, Feb, ..., Dec\n      case 'MMM':\n        return localize.month(month, {\n          width: 'abbreviated',\n          context: 'formatting'\n        });\n      // J, F, ..., D\n      case 'MMMMM':\n        return localize.month(month, {\n          width: 'narrow',\n          context: 'formatting'\n        });\n      // January, February, ..., December\n      case 'MMMM':\n      default:\n        return localize.month(month, {\n          width: 'wide',\n          context: 'formatting'\n        });\n    }\n  },\n  // Stand-alone month\n  L: function L(date, token, localize) {\n    var month = date.getUTCMonth();\n    switch (token) {\n      // 1, 2, ..., 12\n      case 'L':\n        return String(month + 1);\n      // 01, 02, ..., 12\n      case 'LL':\n        return addLeadingZeros(month + 1, 2);\n      // 1st, 2nd, ..., 12th\n      case 'Lo':\n        return localize.ordinalNumber(month + 1, {\n          unit: 'month'\n        });\n      // Jan, Feb, ..., Dec\n      case 'LLL':\n        return localize.month(month, {\n          width: 'abbreviated',\n          context: 'standalone'\n        });\n      // J, F, ..., D\n      case 'LLLLL':\n        return localize.month(month, {\n          width: 'narrow',\n          context: 'standalone'\n        });\n      // January, February, ..., December\n      case 'LLLL':\n      default:\n        return localize.month(month, {\n          width: 'wide',\n          context: 'standalone'\n        });\n    }\n  },\n  // Local week of year\n  w: function w(date, token, localize, options) {\n    var week = getUTCWeek(date, options);\n    if (token === 'wo') {\n      return localize.ordinalNumber(week, {\n        unit: 'week'\n      });\n    }\n    return addLeadingZeros(week, token.length);\n  },\n  // ISO week of year\n  I: function I(date, token, localize) {\n    var isoWeek = getUTCISOWeek(date);\n    if (token === 'Io') {\n      return localize.ordinalNumber(isoWeek, {\n        unit: 'week'\n      });\n    }\n    return addLeadingZeros(isoWeek, token.length);\n  },\n  // Day of the month\n  d: function d(date, token, localize) {\n    if (token === 'do') {\n      return localize.ordinalNumber(date.getUTCDate(), {\n        unit: 'date'\n      });\n    }\n    return lightFormatters.d(date, token);\n  },\n  // Day of year\n  D: function D(date, token, localize) {\n    var dayOfYear = getUTCDayOfYear(date);\n    if (token === 'Do') {\n      return localize.ordinalNumber(dayOfYear, {\n        unit: 'dayOfYear'\n      });\n    }\n    return addLeadingZeros(dayOfYear, token.length);\n  },\n  // Day of week\n  E: function E(date, token, localize) {\n    var dayOfWeek = date.getUTCDay();\n    switch (token) {\n      // Tue\n      case 'E':\n      case 'EE':\n      case 'EEE':\n        return localize.day(dayOfWeek, {\n          width: 'abbreviated',\n          context: 'formatting'\n        });\n      // T\n      case 'EEEEE':\n        return localize.day(dayOfWeek, {\n          width: 'narrow',\n          context: 'formatting'\n        });\n      // Tu\n      case 'EEEEEE':\n        return localize.day(dayOfWeek, {\n          width: 'short',\n          context: 'formatting'\n        });\n      // Tuesday\n      case 'EEEE':\n      default:\n        return localize.day(dayOfWeek, {\n          width: 'wide',\n          context: 'formatting'\n        });\n    }\n  },\n  // Local day of week\n  e: function e(date, token, localize, options) {\n    var dayOfWeek = date.getUTCDay();\n    var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n    switch (token) {\n      // Numerical value (Nth day of week with current locale or weekStartsOn)\n      case 'e':\n        return String(localDayOfWeek);\n      // Padded numerical value\n      case 'ee':\n        return addLeadingZeros(localDayOfWeek, 2);\n      // 1st, 2nd, ..., 7th\n      case 'eo':\n        return localize.ordinalNumber(localDayOfWeek, {\n          unit: 'day'\n        });\n      case 'eee':\n        return localize.day(dayOfWeek, {\n          width: 'abbreviated',\n          context: 'formatting'\n        });\n      // T\n      case 'eeeee':\n        return localize.day(dayOfWeek, {\n          width: 'narrow',\n          context: 'formatting'\n        });\n      // Tu\n      case 'eeeeee':\n        return localize.day(dayOfWeek, {\n          width: 'short',\n          context: 'formatting'\n        });\n      // Tuesday\n      case 'eeee':\n      default:\n        return localize.day(dayOfWeek, {\n          width: 'wide',\n          context: 'formatting'\n        });\n    }\n  },\n  // Stand-alone local day of week\n  c: function c(date, token, localize, options) {\n    var dayOfWeek = date.getUTCDay();\n    var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n    switch (token) {\n      // Numerical value (same as in `e`)\n      case 'c':\n        return String(localDayOfWeek);\n      // Padded numerical value\n      case 'cc':\n        return addLeadingZeros(localDayOfWeek, token.length);\n      // 1st, 2nd, ..., 7th\n      case 'co':\n        return localize.ordinalNumber(localDayOfWeek, {\n          unit: 'day'\n        });\n      case 'ccc':\n        return localize.day(dayOfWeek, {\n          width: 'abbreviated',\n          context: 'standalone'\n        });\n      // T\n      case 'ccccc':\n        return localize.day(dayOfWeek, {\n          width: 'narrow',\n          context: 'standalone'\n        });\n      // Tu\n      case 'cccccc':\n        return localize.day(dayOfWeek, {\n          width: 'short',\n          context: 'standalone'\n        });\n      // Tuesday\n      case 'cccc':\n      default:\n        return localize.day(dayOfWeek, {\n          width: 'wide',\n          context: 'standalone'\n        });\n    }\n  },\n  // ISO day of week\n  i: function i(date, token, localize) {\n    var dayOfWeek = date.getUTCDay();\n    var isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n    switch (token) {\n      // 2\n      case 'i':\n        return String(isoDayOfWeek);\n      // 02\n      case 'ii':\n        return addLeadingZeros(isoDayOfWeek, token.length);\n      // 2nd\n      case 'io':\n        return localize.ordinalNumber(isoDayOfWeek, {\n          unit: 'day'\n        });\n      // Tue\n      case 'iii':\n        return localize.day(dayOfWeek, {\n          width: 'abbreviated',\n          context: 'formatting'\n        });\n      // T\n      case 'iiiii':\n        return localize.day(dayOfWeek, {\n          width: 'narrow',\n          context: 'formatting'\n        });\n      // Tu\n      case 'iiiiii':\n        return localize.day(dayOfWeek, {\n          width: 'short',\n          context: 'formatting'\n        });\n      // Tuesday\n      case 'iiii':\n      default:\n        return localize.day(dayOfWeek, {\n          width: 'wide',\n          context: 'formatting'\n        });\n    }\n  },\n  // AM or PM\n  a: function a(date, token, localize) {\n    var hours = date.getUTCHours();\n    var dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n    switch (token) {\n      case 'a':\n      case 'aa':\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'abbreviated',\n          context: 'formatting'\n        });\n      case 'aaa':\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'abbreviated',\n          context: 'formatting'\n        }).toLowerCase();\n      case 'aaaaa':\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'narrow',\n          context: 'formatting'\n        });\n      case 'aaaa':\n      default:\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'wide',\n          context: 'formatting'\n        });\n    }\n  },\n  // AM, PM, midnight, noon\n  b: function b(date, token, localize) {\n    var hours = date.getUTCHours();\n    var dayPeriodEnumValue;\n    if (hours === 12) {\n      dayPeriodEnumValue = dayPeriodEnum.noon;\n    } else if (hours === 0) {\n      dayPeriodEnumValue = dayPeriodEnum.midnight;\n    } else {\n      dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n    }\n    switch (token) {\n      case 'b':\n      case 'bb':\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'abbreviated',\n          context: 'formatting'\n        });\n      case 'bbb':\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'abbreviated',\n          context: 'formatting'\n        }).toLowerCase();\n      case 'bbbbb':\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'narrow',\n          context: 'formatting'\n        });\n      case 'bbbb':\n      default:\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'wide',\n          context: 'formatting'\n        });\n    }\n  },\n  // in the morning, in the afternoon, in the evening, at night\n  B: function B(date, token, localize) {\n    var hours = date.getUTCHours();\n    var dayPeriodEnumValue;\n    if (hours >= 17) {\n      dayPeriodEnumValue = dayPeriodEnum.evening;\n    } else if (hours >= 12) {\n      dayPeriodEnumValue = dayPeriodEnum.afternoon;\n    } else if (hours >= 4) {\n      dayPeriodEnumValue = dayPeriodEnum.morning;\n    } else {\n      dayPeriodEnumValue = dayPeriodEnum.night;\n    }\n    switch (token) {\n      case 'B':\n      case 'BB':\n      case 'BBB':\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'abbreviated',\n          context: 'formatting'\n        });\n      case 'BBBBB':\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'narrow',\n          context: 'formatting'\n        });\n      case 'BBBB':\n      default:\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'wide',\n          context: 'formatting'\n        });\n    }\n  },\n  // Hour [1-12]\n  h: function h(date, token, localize) {\n    if (token === 'ho') {\n      var hours = date.getUTCHours() % 12;\n      if (hours === 0) hours = 12;\n      return localize.ordinalNumber(hours, {\n        unit: 'hour'\n      });\n    }\n    return lightFormatters.h(date, token);\n  },\n  // Hour [0-23]\n  H: function H(date, token, localize) {\n    if (token === 'Ho') {\n      return localize.ordinalNumber(date.getUTCHours(), {\n        unit: 'hour'\n      });\n    }\n    return lightFormatters.H(date, token);\n  },\n  // Hour [0-11]\n  K: function K(date, token, localize) {\n    var hours = date.getUTCHours() % 12;\n    if (token === 'Ko') {\n      return localize.ordinalNumber(hours, {\n        unit: 'hour'\n      });\n    }\n    return addLeadingZeros(hours, token.length);\n  },\n  // Hour [1-24]\n  k: function k(date, token, localize) {\n    var hours = date.getUTCHours();\n    if (hours === 0) hours = 24;\n    if (token === 'ko') {\n      return localize.ordinalNumber(hours, {\n        unit: 'hour'\n      });\n    }\n    return addLeadingZeros(hours, token.length);\n  },\n  // Minute\n  m: function m(date, token, localize) {\n    if (token === 'mo') {\n      return localize.ordinalNumber(date.getUTCMinutes(), {\n        unit: 'minute'\n      });\n    }\n    return lightFormatters.m(date, token);\n  },\n  // Second\n  s: function s(date, token, localize) {\n    if (token === 'so') {\n      return localize.ordinalNumber(date.getUTCSeconds(), {\n        unit: 'second'\n      });\n    }\n    return lightFormatters.s(date, token);\n  },\n  // Fraction of second\n  S: function S(date, token) {\n    return lightFormatters.S(date, token);\n  },\n  // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n  X: function X(date, token, _localize, options) {\n    var originalDate = options._originalDate || date;\n    var timezoneOffset = originalDate.getTimezoneOffset();\n    if (timezoneOffset === 0) {\n      return 'Z';\n    }\n    switch (token) {\n      // Hours and optional minutes\n      case 'X':\n        return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n      // Hours, minutes and optional seconds without `:` delimiter\n      // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n      // so this token always has the same output as `XX`\n      case 'XXXX':\n      case 'XX':\n        // Hours and minutes without `:` delimiter\n        return formatTimezone(timezoneOffset);\n\n      // Hours, minutes and optional seconds with `:` delimiter\n      // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n      // so this token always has the same output as `XXX`\n      case 'XXXXX':\n      case 'XXX': // Hours and minutes with `:` delimiter\n      default:\n        return formatTimezone(timezoneOffset, ':');\n    }\n  },\n  // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n  x: function x(date, token, _localize, options) {\n    var originalDate = options._originalDate || date;\n    var timezoneOffset = originalDate.getTimezoneOffset();\n    switch (token) {\n      // Hours and optional minutes\n      case 'x':\n        return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n      // Hours, minutes and optional seconds without `:` delimiter\n      // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n      // so this token always has the same output as `xx`\n      case 'xxxx':\n      case 'xx':\n        // Hours and minutes without `:` delimiter\n        return formatTimezone(timezoneOffset);\n\n      // Hours, minutes and optional seconds with `:` delimiter\n      // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n      // so this token always has the same output as `xxx`\n      case 'xxxxx':\n      case 'xxx': // Hours and minutes with `:` delimiter\n      default:\n        return formatTimezone(timezoneOffset, ':');\n    }\n  },\n  // Timezone (GMT)\n  O: function O(date, token, _localize, options) {\n    var originalDate = options._originalDate || date;\n    var timezoneOffset = originalDate.getTimezoneOffset();\n    switch (token) {\n      // Short\n      case 'O':\n      case 'OO':\n      case 'OOO':\n        return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n      // Long\n      case 'OOOO':\n      default:\n        return 'GMT' + formatTimezone(timezoneOffset, ':');\n    }\n  },\n  // Timezone (specific non-location)\n  z: function z(date, token, _localize, options) {\n    var originalDate = options._originalDate || date;\n    var timezoneOffset = originalDate.getTimezoneOffset();\n    switch (token) {\n      // Short\n      case 'z':\n      case 'zz':\n      case 'zzz':\n        return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n      // Long\n      case 'zzzz':\n      default:\n        return 'GMT' + formatTimezone(timezoneOffset, ':');\n    }\n  },\n  // Seconds timestamp\n  t: function t(date, token, _localize, options) {\n    var originalDate = options._originalDate || date;\n    var timestamp = Math.floor(originalDate.getTime() / 1000);\n    return addLeadingZeros(timestamp, token.length);\n  },\n  // Milliseconds timestamp\n  T: function T(date, token, _localize, options) {\n    var originalDate = options._originalDate || date;\n    var timestamp = originalDate.getTime();\n    return addLeadingZeros(timestamp, token.length);\n  }\n};\nfunction formatTimezoneShort(offset, dirtyDelimiter) {\n  var sign = offset > 0 ? '-' : '+';\n  var absOffset = Math.abs(offset);\n  var hours = Math.floor(absOffset / 60);\n  var minutes = absOffset % 60;\n  if (minutes === 0) {\n    return sign + String(hours);\n  }\n  var delimiter = dirtyDelimiter || '';\n  return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2);\n}\nfunction formatTimezoneWithOptionalMinutes(offset, dirtyDelimiter) {\n  if (offset % 60 === 0) {\n    var sign = offset > 0 ? '-' : '+';\n    return sign + addLeadingZeros(Math.abs(offset) / 60, 2);\n  }\n  return formatTimezone(offset, dirtyDelimiter);\n}\nfunction formatTimezone(offset, dirtyDelimiter) {\n  var delimiter = dirtyDelimiter || '';\n  var sign = offset > 0 ? '-' : '+';\n  var absOffset = Math.abs(offset);\n  var hours = addLeadingZeros(Math.floor(absOffset / 60), 2);\n  var minutes = addLeadingZeros(absOffset % 60, 2);\n  return sign + hours + delimiter + minutes;\n}\nexport default formatters;", "var dateLongFormatter = function dateLongFormatter(pattern, formatLong) {\n  switch (pattern) {\n    case 'P':\n      return formatLong.date({\n        width: 'short'\n      });\n    case 'PP':\n      return formatLong.date({\n        width: 'medium'\n      });\n    case 'PPP':\n      return formatLong.date({\n        width: 'long'\n      });\n    case 'PPPP':\n    default:\n      return formatLong.date({\n        width: 'full'\n      });\n  }\n};\nvar timeLongFormatter = function timeLongFormatter(pattern, formatLong) {\n  switch (pattern) {\n    case 'p':\n      return formatLong.time({\n        width: 'short'\n      });\n    case 'pp':\n      return formatLong.time({\n        width: 'medium'\n      });\n    case 'ppp':\n      return formatLong.time({\n        width: 'long'\n      });\n    case 'pppp':\n    default:\n      return formatLong.time({\n        width: 'full'\n      });\n  }\n};\nvar dateTimeLongFormatter = function dateTimeLongFormatter(pattern, formatLong) {\n  var matchResult = pattern.match(/(P+)(p+)?/) || [];\n  var datePattern = matchResult[1];\n  var timePattern = matchResult[2];\n  if (!timePattern) {\n    return dateLongFormatter(pattern, formatLong);\n  }\n  var dateTimeFormat;\n  switch (datePattern) {\n    case 'P':\n      dateTimeFormat = formatLong.dateTime({\n        width: 'short'\n      });\n      break;\n    case 'PP':\n      dateTimeFormat = formatLong.dateTime({\n        width: 'medium'\n      });\n      break;\n    case 'PPP':\n      dateTimeFormat = formatLong.dateTime({\n        width: 'long'\n      });\n      break;\n    case 'PPPP':\n    default:\n      dateTimeFormat = formatLong.dateTime({\n        width: 'full'\n      });\n      break;\n  }\n  return dateTimeFormat.replace('{{date}}', dateLongFormatter(datePattern, formatLong)).replace('{{time}}', timeLongFormatter(timePattern, formatLong));\n};\nvar longFormatters = {\n  p: timeLongFormatter,\n  P: dateTimeLongFormatter\n};\nexport default longFormatters;", "var protectedDayOfYearTokens = ['D', 'DD'];\nvar protectedWeekYearTokens = ['YY', 'YYYY'];\nexport function isProtectedDayOfYearToken(token) {\n  return protectedDayOfYearTokens.indexOf(token) !== -1;\n}\nexport function isProtectedWeekYearToken(token) {\n  return protectedWeekYearTokens.indexOf(token) !== -1;\n}\nexport function throwProtectedError(token, format, input) {\n  if (token === 'YYYY') {\n    throw new RangeError(\"Use `yyyy` instead of `YYYY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n  } else if (token === 'YY') {\n    throw new RangeError(\"Use `yy` instead of `YY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n  } else if (token === 'D') {\n    throw new RangeError(\"Use `d` instead of `D` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n  } else if (token === 'DD') {\n    throw new RangeError(\"Use `dd` instead of `DD` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n  }\n}", "var formatDistanceLocale = {\n  lessThanXSeconds: {\n    one: 'less than a second',\n    other: 'less than {{count}} seconds'\n  },\n  xSeconds: {\n    one: '1 second',\n    other: '{{count}} seconds'\n  },\n  halfAMinute: 'half a minute',\n  lessThanXMinutes: {\n    one: 'less than a minute',\n    other: 'less than {{count}} minutes'\n  },\n  xMinutes: {\n    one: '1 minute',\n    other: '{{count}} minutes'\n  },\n  aboutXHours: {\n    one: 'about 1 hour',\n    other: 'about {{count}} hours'\n  },\n  xHours: {\n    one: '1 hour',\n    other: '{{count}} hours'\n  },\n  xDays: {\n    one: '1 day',\n    other: '{{count}} days'\n  },\n  aboutXWeeks: {\n    one: 'about 1 week',\n    other: 'about {{count}} weeks'\n  },\n  xWeeks: {\n    one: '1 week',\n    other: '{{count}} weeks'\n  },\n  aboutXMonths: {\n    one: 'about 1 month',\n    other: 'about {{count}} months'\n  },\n  xMonths: {\n    one: '1 month',\n    other: '{{count}} months'\n  },\n  aboutXYears: {\n    one: 'about 1 year',\n    other: 'about {{count}} years'\n  },\n  xYears: {\n    one: '1 year',\n    other: '{{count}} years'\n  },\n  overXYears: {\n    one: 'over 1 year',\n    other: 'over {{count}} years'\n  },\n  almostXYears: {\n    one: 'almost 1 year',\n    other: 'almost {{count}} years'\n  }\n};\nvar formatDistance = function formatDistance(token, count, options) {\n  var result;\n  var tokenValue = formatDistanceLocale[token];\n  if (typeof tokenValue === 'string') {\n    result = tokenValue;\n  } else if (count === 1) {\n    result = tokenValue.one;\n  } else {\n    result = tokenValue.other.replace('{{count}}', count.toString());\n  }\n  if (options !== null && options !== void 0 && options.addSuffix) {\n    if (options.comparison && options.comparison > 0) {\n      return 'in ' + result;\n    } else {\n      return result + ' ago';\n    }\n  }\n  return result;\n};\nexport default formatDistance;", "export default function buildFormatLongFn(args) {\n  return function () {\n    var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    // TODO: Remove String()\n    var width = options.width ? String(options.width) : args.defaultWidth;\n    var format = args.formats[width] || args.formats[args.defaultWidth];\n    return format;\n  };\n}", "import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n  full: 'EEEE, MMMM do, y',\n  long: 'MMMM do, y',\n  medium: 'MMM d, y',\n  short: 'MM/dd/yyyy'\n};\nvar timeFormats = {\n  full: 'h:mm:ss a zzzz',\n  long: 'h:mm:ss a z',\n  medium: 'h:mm:ss a',\n  short: 'h:mm a'\n};\nvar dateTimeFormats = {\n  full: \"{{date}} 'at' {{time}}\",\n  long: \"{{date}} 'at' {{time}}\",\n  medium: '{{date}}, {{time}}',\n  short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n  date: buildFormatLongFn({\n    formats: dateFormats,\n    defaultWidth: 'full'\n  }),\n  time: buildFormatLongFn({\n    formats: timeFormats,\n    defaultWidth: 'full'\n  }),\n  dateTime: buildFormatLongFn({\n    formats: dateTimeFormats,\n    defaultWidth: 'full'\n  })\n};\nexport default formatLong;", "var formatRelativeLocale = {\n  lastWeek: \"'last' eeee 'at' p\",\n  yesterday: \"'yesterday at' p\",\n  today: \"'today at' p\",\n  tomorrow: \"'tomorrow at' p\",\n  nextWeek: \"eeee 'at' p\",\n  other: 'P'\n};\nvar formatRelative = function formatRelative(token, _date, _baseDate, _options) {\n  return formatRelativeLocale[token];\n};\nexport default formatRelative;", "export default function buildLocalizeFn(args) {\n  return function (dirtyIndex, options) {\n    var context = options !== null && options !== void 0 && options.context ? String(options.context) : 'standalone';\n    var valuesArray;\n    if (context === 'formatting' && args.formattingValues) {\n      var defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n      var width = options !== null && options !== void 0 && options.width ? String(options.width) : defaultWidth;\n      valuesArray = args.formattingValues[width] || args.formattingValues[defaultWidth];\n    } else {\n      var _defaultWidth = args.defaultWidth;\n      var _width = options !== null && options !== void 0 && options.width ? String(options.width) : args.defaultWidth;\n      valuesArray = args.values[_width] || args.values[_defaultWidth];\n    }\n    var index = args.argumentCallback ? args.argumentCallback(dirtyIndex) : dirtyIndex;\n    // @ts-ignore: For some reason TypeScript just don't want to match it, no matter how hard we try. I challenge you to try to remove it!\n    return valuesArray[index];\n  };\n}", "import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n  narrow: ['B', 'A'],\n  abbreviated: ['BC', 'AD'],\n  wide: ['Before Christ', 'Anno Domini']\n};\nvar quarterValues = {\n  narrow: ['1', '2', '3', '4'],\n  abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],\n  wide: ['1st quarter', '2nd quarter', '3rd quarter', '4th quarter']\n};\n\n// Note: in English, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\nvar monthValues = {\n  narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n  abbreviated: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n  wide: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']\n};\nvar dayValues = {\n  narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],\n  short: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n  abbreviated: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n  wide: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']\n};\nvar dayPeriodValues = {\n  narrow: {\n    am: 'a',\n    pm: 'p',\n    midnight: 'mi',\n    noon: 'n',\n    morning: 'morning',\n    afternoon: 'afternoon',\n    evening: 'evening',\n    night: 'night'\n  },\n  abbreviated: {\n    am: 'AM',\n    pm: 'PM',\n    midnight: 'midnight',\n    noon: 'noon',\n    morning: 'morning',\n    afternoon: 'afternoon',\n    evening: 'evening',\n    night: 'night'\n  },\n  wide: {\n    am: 'a.m.',\n    pm: 'p.m.',\n    midnight: 'midnight',\n    noon: 'noon',\n    morning: 'morning',\n    afternoon: 'afternoon',\n    evening: 'evening',\n    night: 'night'\n  }\n};\nvar formattingDayPeriodValues = {\n  narrow: {\n    am: 'a',\n    pm: 'p',\n    midnight: 'mi',\n    noon: 'n',\n    morning: 'in the morning',\n    afternoon: 'in the afternoon',\n    evening: 'in the evening',\n    night: 'at night'\n  },\n  abbreviated: {\n    am: 'AM',\n    pm: 'PM',\n    midnight: 'midnight',\n    noon: 'noon',\n    morning: 'in the morning',\n    afternoon: 'in the afternoon',\n    evening: 'in the evening',\n    night: 'at night'\n  },\n  wide: {\n    am: 'a.m.',\n    pm: 'p.m.',\n    midnight: 'midnight',\n    noon: 'noon',\n    morning: 'in the morning',\n    afternoon: 'in the afternoon',\n    evening: 'in the evening',\n    night: 'at night'\n  }\n};\nvar ordinalNumber = function ordinalNumber(dirtyNumber, _options) {\n  var number = Number(dirtyNumber);\n\n  // If ordinal numbers depend on context, for example,\n  // if they are different for different grammatical genders,\n  // use `options.unit`.\n  //\n  // `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n  // 'day', 'hour', 'minute', 'second'.\n\n  var rem100 = number % 100;\n  if (rem100 > 20 || rem100 < 10) {\n    switch (rem100 % 10) {\n      case 1:\n        return number + 'st';\n      case 2:\n        return number + 'nd';\n      case 3:\n        return number + 'rd';\n    }\n  }\n  return number + 'th';\n};\nvar localize = {\n  ordinalNumber: ordinalNumber,\n  era: buildLocalizeFn({\n    values: eraValues,\n    defaultWidth: 'wide'\n  }),\n  quarter: buildLocalizeFn({\n    values: quarterValues,\n    defaultWidth: 'wide',\n    argumentCallback: function argumentCallback(quarter) {\n      return quarter - 1;\n    }\n  }),\n  month: buildLocalizeFn({\n    values: monthValues,\n    defaultWidth: 'wide'\n  }),\n  day: buildLocalizeFn({\n    values: dayValues,\n    defaultWidth: 'wide'\n  }),\n  dayPeriod: buildLocalizeFn({\n    values: dayPeriodValues,\n    defaultWidth: 'wide',\n    formattingValues: formattingDayPeriodValues,\n    defaultFormattingWidth: 'wide'\n  })\n};\nexport default localize;", "export default function buildMatchFn(args) {\n  return function (string) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    var width = options.width;\n    var matchPattern = width && args.matchPatterns[width] || args.matchPatterns[args.defaultMatchWidth];\n    var matchResult = string.match(matchPattern);\n    if (!matchResult) {\n      return null;\n    }\n    var matchedString = matchResult[0];\n    var parsePatterns = width && args.parsePatterns[width] || args.parsePatterns[args.defaultParseWidth];\n    var key = Array.isArray(parsePatterns) ? findIndex(parsePatterns, function (pattern) {\n      return pattern.test(matchedString);\n    }) : findKey(parsePatterns, function (pattern) {\n      return pattern.test(matchedString);\n    });\n    var value;\n    value = args.valueCallback ? args.valueCallback(key) : key;\n    value = options.valueCallback ? options.valueCallback(value) : value;\n    var rest = string.slice(matchedString.length);\n    return {\n      value: value,\n      rest: rest\n    };\n  };\n}\nfunction findKey(object, predicate) {\n  for (var key in object) {\n    if (object.hasOwnProperty(key) && predicate(object[key])) {\n      return key;\n    }\n  }\n  return undefined;\n}\nfunction findIndex(array, predicate) {\n  for (var key = 0; key < array.length; key++) {\n    if (predicate(array[key])) {\n      return key;\n    }\n  }\n  return undefined;\n}", "export default function buildMatchPatternFn(args) {\n  return function (string) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    var matchResult = string.match(args.matchPattern);\n    if (!matchResult) return null;\n    var matchedString = matchResult[0];\n    var parseResult = string.match(args.parsePattern);\n    if (!parseResult) return null;\n    var value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0];\n    value = options.valueCallback ? options.valueCallback(value) : value;\n    var rest = string.slice(matchedString.length);\n    return {\n      value: value,\n      rest: rest\n    };\n  };\n}", "import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n  narrow: /^(b|a)/i,\n  abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n  wide: /^(before christ|before common era|anno domini|common era)/i\n};\nvar parseEraPatterns = {\n  any: [/^b/i, /^(a|c)/i]\n};\nvar matchQuarterPatterns = {\n  narrow: /^[1234]/i,\n  abbreviated: /^q[1234]/i,\n  wide: /^[1234](th|st|nd|rd)? quarter/i\n};\nvar parseQuarterPatterns = {\n  any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n  narrow: /^[jfmasond]/i,\n  abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n  wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i\n};\nvar parseMonthPatterns = {\n  narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n  any: [/^ja/i, /^f/i, /^mar/i, /^ap/i, /^may/i, /^jun/i, /^jul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\nvar matchDayPatterns = {\n  narrow: /^[smtwf]/i,\n  short: /^(su|mo|tu|we|th|fr|sa)/i,\n  abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n  wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i\n};\nvar parseDayPatterns = {\n  narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n  any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i]\n};\nvar matchDayPeriodPatterns = {\n  narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n  any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i\n};\nvar parseDayPeriodPatterns = {\n  any: {\n    am: /^a/i,\n    pm: /^p/i,\n    midnight: /^mi/i,\n    noon: /^no/i,\n    morning: /morning/i,\n    afternoon: /afternoon/i,\n    evening: /evening/i,\n    night: /night/i\n  }\n};\nvar match = {\n  ordinalNumber: buildMatchPatternFn({\n    matchPattern: matchOrdinalNumberPattern,\n    parsePattern: parseOrdinalNumberPattern,\n    valueCallback: function valueCallback(value) {\n      return parseInt(value, 10);\n    }\n  }),\n  era: buildMatchFn({\n    matchPatterns: matchEraPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseEraPatterns,\n    defaultParseWidth: 'any'\n  }),\n  quarter: buildMatchFn({\n    matchPatterns: matchQuarterPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseQuarterPatterns,\n    defaultParseWidth: 'any',\n    valueCallback: function valueCallback(index) {\n      return index + 1;\n    }\n  }),\n  month: buildMatchFn({\n    matchPatterns: matchMonthPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseMonthPatterns,\n    defaultParseWidth: 'any'\n  }),\n  day: buildMatchFn({\n    matchPatterns: matchDayPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseDayPatterns,\n    defaultParseWidth: 'any'\n  }),\n  dayPeriod: buildMatchFn({\n    matchPatterns: matchDayPeriodPatterns,\n    defaultMatchWidth: 'any',\n    parsePatterns: parseDayPeriodPatterns,\n    defaultParseWidth: 'any'\n  })\n};\nexport default match;", "import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp]{@link https://github.com/kossnocorp}\n * @author Lesha Koss [@leshakoss]{@link https://github.com/leshakoss}\n */\nvar locale = {\n  code: 'en-US',\n  formatDistance: formatDistance,\n  formatLong: formatLong,\n  formatRelative: formatRelative,\n  localize: localize,\n  match: match,\n  options: {\n    weekStartsOn: 0 /* Sunday */,\n    firstWeekContainsDate: 1\n  }\n};\nexport default locale;", "import defaultLocale from \"../../locale/en-US/index.js\";\nexport default defaultLocale;", "import isValid from \"../isValid/index.js\";\nimport subMilliseconds from \"../subMilliseconds/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport formatters from \"../_lib/format/formatters/index.js\";\nimport longFormatters from \"../_lib/format/longFormatters/index.js\";\nimport getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport { isProtectedDayOfYearToken, isProtectedWeekYearToken, throwProtectedError } from \"../_lib/protectedTokens/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getDefaultOptions } from \"../_lib/defaultOptions/index.js\";\nimport defaultLocale from \"../_lib/defaultLocale/index.js\"; // This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n//   (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n//   except a single quote symbol, which ends the sequence.\n//   Two quote characters do not end the sequence.\n//   If there is no matching single quote\n//   then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\n\n// This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp = /^'([^]*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\nvar unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n\n/**\n * @name format\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > \u26A0\uFE0F Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit                            | Pattern | Result examples                   | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era                             | G..GGG  | AD, BC                            |       |\n * |                                 | GGGG    | Anno Domini, Before Christ        | 2     |\n * |                                 | GGGGG   | A, B                              |       |\n * | Calendar year                   | y       | 44, 1, 1900, 2017                 | 5     |\n * |                                 | yo      | 44th, 1st, 0th, 17th              | 5,7   |\n * |                                 | yy      | 44, 01, 00, 17                    | 5     |\n * |                                 | yyy     | 044, 001, 1900, 2017              | 5     |\n * |                                 | yyyy    | 0044, 0001, 1900, 2017            | 5     |\n * |                                 | yyyyy   | ...                               | 3,5   |\n * | Local week-numbering year       | Y       | 44, 1, 1900, 2017                 | 5     |\n * |                                 | Yo      | 44th, 1st, 1900th, 2017th         | 5,7   |\n * |                                 | YY      | 44, 01, 00, 17                    | 5,8   |\n * |                                 | YYY     | 044, 001, 1900, 2017              | 5     |\n * |                                 | YYYY    | 0044, 0001, 1900, 2017            | 5,8   |\n * |                                 | YYYYY   | ...                               | 3,5   |\n * | ISO week-numbering year         | R       | -43, 0, 1, 1900, 2017             | 5,7   |\n * |                                 | RR      | -43, 00, 01, 1900, 2017           | 5,7   |\n * |                                 | RRR     | -043, 000, 001, 1900, 2017        | 5,7   |\n * |                                 | RRRR    | -0043, 0000, 0001, 1900, 2017     | 5,7   |\n * |                                 | RRRRR   | ...                               | 3,5,7 |\n * | Extended year                   | u       | -43, 0, 1, 1900, 2017             | 5     |\n * |                                 | uu      | -43, 01, 1900, 2017               | 5     |\n * |                                 | uuu     | -043, 001, 1900, 2017             | 5     |\n * |                                 | uuuu    | -0043, 0001, 1900, 2017           | 5     |\n * |                                 | uuuuu   | ...                               | 3,5   |\n * | Quarter (formatting)            | Q       | 1, 2, 3, 4                        |       |\n * |                                 | Qo      | 1st, 2nd, 3rd, 4th                | 7     |\n * |                                 | QQ      | 01, 02, 03, 04                    |       |\n * |                                 | QQQ     | Q1, Q2, Q3, Q4                    |       |\n * |                                 | QQQQ    | 1st quarter, 2nd quarter, ...     | 2     |\n * |                                 | QQQQQ   | 1, 2, 3, 4                        | 4     |\n * | Quarter (stand-alone)           | q       | 1, 2, 3, 4                        |       |\n * |                                 | qo      | 1st, 2nd, 3rd, 4th                | 7     |\n * |                                 | qq      | 01, 02, 03, 04                    |       |\n * |                                 | qqq     | Q1, Q2, Q3, Q4                    |       |\n * |                                 | qqqq    | 1st quarter, 2nd quarter, ...     | 2     |\n * |                                 | qqqqq   | 1, 2, 3, 4                        | 4     |\n * | Month (formatting)              | M       | 1, 2, ..., 12                     |       |\n * |                                 | Mo      | 1st, 2nd, ..., 12th               | 7     |\n * |                                 | MM      | 01, 02, ..., 12                   |       |\n * |                                 | MMM     | Jan, Feb, ..., Dec                |       |\n * |                                 | MMMM    | January, February, ..., December  | 2     |\n * |                                 | MMMMM   | J, F, ..., D                      |       |\n * | Month (stand-alone)             | L       | 1, 2, ..., 12                     |       |\n * |                                 | Lo      | 1st, 2nd, ..., 12th               | 7     |\n * |                                 | LL      | 01, 02, ..., 12                   |       |\n * |                                 | LLL     | Jan, Feb, ..., Dec                |       |\n * |                                 | LLLL    | January, February, ..., December  | 2     |\n * |                                 | LLLLL   | J, F, ..., D                      |       |\n * | Local week of year              | w       | 1, 2, ..., 53                     |       |\n * |                                 | wo      | 1st, 2nd, ..., 53th               | 7     |\n * |                                 | ww      | 01, 02, ..., 53                   |       |\n * | ISO week of year                | I       | 1, 2, ..., 53                     | 7     |\n * |                                 | Io      | 1st, 2nd, ..., 53th               | 7     |\n * |                                 | II      | 01, 02, ..., 53                   | 7     |\n * | Day of month                    | d       | 1, 2, ..., 31                     |       |\n * |                                 | do      | 1st, 2nd, ..., 31st               | 7     |\n * |                                 | dd      | 01, 02, ..., 31                   |       |\n * | Day of year                     | D       | 1, 2, ..., 365, 366               | 9     |\n * |                                 | Do      | 1st, 2nd, ..., 365th, 366th       | 7     |\n * |                                 | DD      | 01, 02, ..., 365, 366             | 9     |\n * |                                 | DDD     | 001, 002, ..., 365, 366           |       |\n * |                                 | DDDD    | ...                               | 3     |\n * | Day of week (formatting)        | E..EEE  | Mon, Tue, Wed, ..., Sun           |       |\n * |                                 | EEEE    | Monday, Tuesday, ..., Sunday      | 2     |\n * |                                 | EEEEE   | M, T, W, T, F, S, S               |       |\n * |                                 | EEEEEE  | Mo, Tu, We, Th, Fr, Sa, Su        |       |\n * | ISO day of week (formatting)    | i       | 1, 2, 3, ..., 7                   | 7     |\n * |                                 | io      | 1st, 2nd, ..., 7th                | 7     |\n * |                                 | ii      | 01, 02, ..., 07                   | 7     |\n * |                                 | iii     | Mon, Tue, Wed, ..., Sun           | 7     |\n * |                                 | iiii    | Monday, Tuesday, ..., Sunday      | 2,7   |\n * |                                 | iiiii   | M, T, W, T, F, S, S               | 7     |\n * |                                 | iiiiii  | Mo, Tu, We, Th, Fr, Sa, Su        | 7     |\n * | Local day of week (formatting)  | e       | 2, 3, 4, ..., 1                   |       |\n * |                                 | eo      | 2nd, 3rd, ..., 1st                | 7     |\n * |                                 | ee      | 02, 03, ..., 01                   |       |\n * |                                 | eee     | Mon, Tue, Wed, ..., Sun           |       |\n * |                                 | eeee    | Monday, Tuesday, ..., Sunday      | 2     |\n * |                                 | eeeee   | M, T, W, T, F, S, S               |       |\n * |                                 | eeeeee  | Mo, Tu, We, Th, Fr, Sa, Su        |       |\n * | Local day of week (stand-alone) | c       | 2, 3, 4, ..., 1                   |       |\n * |                                 | co      | 2nd, 3rd, ..., 1st                | 7     |\n * |                                 | cc      | 02, 03, ..., 01                   |       |\n * |                                 | ccc     | Mon, Tue, Wed, ..., Sun           |       |\n * |                                 | cccc    | Monday, Tuesday, ..., Sunday      | 2     |\n * |                                 | ccccc   | M, T, W, T, F, S, S               |       |\n * |                                 | cccccc  | Mo, Tu, We, Th, Fr, Sa, Su        |       |\n * | AM, PM                          | a..aa   | AM, PM                            |       |\n * |                                 | aaa     | am, pm                            |       |\n * |                                 | aaaa    | a.m., p.m.                        | 2     |\n * |                                 | aaaaa   | a, p                              |       |\n * | AM, PM, noon, midnight          | b..bb   | AM, PM, noon, midnight            |       |\n * |                                 | bbb     | am, pm, noon, midnight            |       |\n * |                                 | bbbb    | a.m., p.m., noon, midnight        | 2     |\n * |                                 | bbbbb   | a, p, n, mi                       |       |\n * | Flexible day period             | B..BBB  | at night, in the morning, ...     |       |\n * |                                 | BBBB    | at night, in the morning, ...     | 2     |\n * |                                 | BBBBB   | at night, in the morning, ...     |       |\n * | Hour [1-12]                     | h       | 1, 2, ..., 11, 12                 |       |\n * |                                 | ho      | 1st, 2nd, ..., 11th, 12th         | 7     |\n * |                                 | hh      | 01, 02, ..., 11, 12               |       |\n * | Hour [0-23]                     | H       | 0, 1, 2, ..., 23                  |       |\n * |                                 | Ho      | 0th, 1st, 2nd, ..., 23rd          | 7     |\n * |                                 | HH      | 00, 01, 02, ..., 23               |       |\n * | Hour [0-11]                     | K       | 1, 2, ..., 11, 0                  |       |\n * |                                 | Ko      | 1st, 2nd, ..., 11th, 0th          | 7     |\n * |                                 | KK      | 01, 02, ..., 11, 00               |       |\n * | Hour [1-24]                     | k       | 24, 1, 2, ..., 23                 |       |\n * |                                 | ko      | 24th, 1st, 2nd, ..., 23rd         | 7     |\n * |                                 | kk      | 24, 01, 02, ..., 23               |       |\n * | Minute                          | m       | 0, 1, ..., 59                     |       |\n * |                                 | mo      | 0th, 1st, ..., 59th               | 7     |\n * |                                 | mm      | 00, 01, ..., 59                   |       |\n * | Second                          | s       | 0, 1, ..., 59                     |       |\n * |                                 | so      | 0th, 1st, ..., 59th               | 7     |\n * |                                 | ss      | 00, 01, ..., 59                   |       |\n * | Fraction of second              | S       | 0, 1, ..., 9                      |       |\n * |                                 | SS      | 00, 01, ..., 99                   |       |\n * |                                 | SSS     | 000, 001, ..., 999                |       |\n * |                                 | SSSS    | ...                               | 3     |\n * | Timezone (ISO-8601 w/ Z)        | X       | -08, +0530, Z                     |       |\n * |                                 | XX      | -0800, +0530, Z                   |       |\n * |                                 | XXX     | -08:00, +05:30, Z                 |       |\n * |                                 | XXXX    | -0800, +0530, Z, +123456          | 2     |\n * |                                 | XXXXX   | -08:00, +05:30, Z, +12:34:56      |       |\n * | Timezone (ISO-8601 w/o Z)       | x       | -08, +0530, +00                   |       |\n * |                                 | xx      | -0800, +0530, +0000               |       |\n * |                                 | xxx     | -08:00, +05:30, +00:00            | 2     |\n * |                                 | xxxx    | -0800, +0530, +0000, +123456      |       |\n * |                                 | xxxxx   | -08:00, +05:30, +00:00, +12:34:56 |       |\n * | Timezone (GMT)                  | O...OOO | GMT-8, GMT+5:30, GMT+0            |       |\n * |                                 | OOOO    | GMT-08:00, GMT+05:30, GMT+00:00   | 2     |\n * | Timezone (specific non-locat.)  | z...zzz | GMT-8, GMT+5:30, GMT+0            | 6     |\n * |                                 | zzzz    | GMT-08:00, GMT+05:30, GMT+00:00   | 2,6   |\n * | Seconds timestamp               | t       | 512969520                         | 7     |\n * |                                 | tt      | ...                               | 3,7   |\n * | Milliseconds timestamp          | T       | 512969520900                      | 7     |\n * |                                 | TT      | ...                               | 3,7   |\n * | Long localized date             | P       | 04/29/1453                        | 7     |\n * |                                 | PP      | Apr 29, 1453                      | 7     |\n * |                                 | PPP     | April 29th, 1453                  | 7     |\n * |                                 | PPPP    | Friday, April 29th, 1453          | 2,7   |\n * | Long localized time             | p       | 12:00 AM                          | 7     |\n * |                                 | pp      | 12:00:00 AM                       | 7     |\n * |                                 | ppp     | 12:00:00 AM GMT+2                 | 7     |\n * |                                 | pppp    | 12:00:00 AM GMT+02:00             | 2,7   |\n * | Combination of date and time    | Pp      | 04/29/1453, 12:00 AM              | 7     |\n * |                                 | PPpp    | Apr 29, 1453, 12:00:00 AM         | 7     |\n * |                                 | PPPppp  | April 29th, 1453 at ...           | 7     |\n * |                                 | PPPPpppp| Friday, April 29th, 1453 at ...   | 2,7   |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n *    are the same as \"stand-alone\" units, but are different in some languages.\n *    \"Formatting\" units are declined according to the rules of the language\n *    in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n *    `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n *    `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n *    the single quote characters (see below).\n *    If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n *    the output will be the same as default pattern for this unit, usually\n *    the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n *    are marked with \"2\" in the last column of the table.\n *\n *    `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n *    `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n *    `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n *    `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n *    `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n *    The output will be padded with zeros to match the length of the pattern.\n *\n *    `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n *    These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n *    | Year | `y` | `u` |\n *    |------|-----|-----|\n *    | AC 1 |   1 |   1 |\n *    | BC 1 |   1 |   0 |\n *    | BC 2 |   2 |  -1 |\n *\n *    Also `yy` always returns the last two digits of a year,\n *    while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n *    | Year | `yy` | `uu` |\n *    |------|------|------|\n *    | 1    |   01 |   01 |\n *    | 14   |   14 |   14 |\n *    | 376  |   76 |  376 |\n *    | 1453 |   53 | 1453 |\n *\n *    The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n *    except local week-numbering years are dependent on `options.weekStartsOn`\n *    and `options.firstWeekContainsDate` (compare [getISOWeekYear]{@link https://date-fns.org/docs/getISOWeekYear}\n *    and [getWeekYear]{@link https://date-fns.org/docs/getWeekYear}).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n *    so right now these tokens fall back to GMT timezones.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n *    - `i`: ISO day of week\n *    - `I`: ISO week of year\n *    - `R`: ISO week-numbering year\n *    - `t`: seconds timestamp\n *    - `T`: milliseconds timestamp\n *    - `o`: ordinal number modifier\n *    - `P`: long localized date\n *    - `p`: long localized time\n *\n * 8. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n *    You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 9. `D` and `DD` tokens represent days of the year but they are often confused with days of the month.\n *    You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * @param {Date|Number} date - the original date\n * @param {String} format - the string of tokens\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Number} [options.firstWeekContainsDate=1] - the day of January, which is\n * @param {Boolean} [options.useAdditionalWeekYearTokens=false] - if true, allows usage of the week-numbering year tokens `YY` and `YYYY`;\n *   see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`;\n *   see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @returns {String} the formatted date string\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `options.locale` must contain `localize` property\n * @throws {RangeError} `options.locale` must contain `formatLong` property\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} format string contains an unescaped latin alphabet character\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * const result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * const result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n *   locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * const result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\n\nexport default function format(dirtyDate, dirtyFormatStr, options) {\n  var _ref, _options$locale, _ref2, _ref3, _ref4, _options$firstWeekCon, _options$locale2, _options$locale2$opti, _defaultOptions$local, _defaultOptions$local2, _ref5, _ref6, _ref7, _options$weekStartsOn, _options$locale3, _options$locale3$opti, _defaultOptions$local3, _defaultOptions$local4;\n  requiredArgs(2, arguments);\n  var formatStr = String(dirtyFormatStr);\n  var defaultOptions = getDefaultOptions();\n  var locale = (_ref = (_options$locale = options === null || options === void 0 ? void 0 : options.locale) !== null && _options$locale !== void 0 ? _options$locale : defaultOptions.locale) !== null && _ref !== void 0 ? _ref : defaultLocale;\n  var firstWeekContainsDate = toInteger((_ref2 = (_ref3 = (_ref4 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale2 = options.locale) === null || _options$locale2 === void 0 ? void 0 : (_options$locale2$opti = _options$locale2.options) === null || _options$locale2$opti === void 0 ? void 0 : _options$locale2$opti.firstWeekContainsDate) !== null && _ref4 !== void 0 ? _ref4 : defaultOptions.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : 1);\n\n  // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n  if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n    throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n  }\n  var weekStartsOn = toInteger((_ref5 = (_ref6 = (_ref7 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale3 = options.locale) === null || _options$locale3 === void 0 ? void 0 : (_options$locale3$opti = _options$locale3.options) === null || _options$locale3$opti === void 0 ? void 0 : _options$locale3$opti.weekStartsOn) !== null && _ref7 !== void 0 ? _ref7 : defaultOptions.weekStartsOn) !== null && _ref6 !== void 0 ? _ref6 : (_defaultOptions$local3 = defaultOptions.locale) === null || _defaultOptions$local3 === void 0 ? void 0 : (_defaultOptions$local4 = _defaultOptions$local3.options) === null || _defaultOptions$local4 === void 0 ? void 0 : _defaultOptions$local4.weekStartsOn) !== null && _ref5 !== void 0 ? _ref5 : 0);\n\n  // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n  if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n    throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n  }\n  if (!locale.localize) {\n    throw new RangeError('locale must contain localize property');\n  }\n  if (!locale.formatLong) {\n    throw new RangeError('locale must contain formatLong property');\n  }\n  var originalDate = toDate(dirtyDate);\n  if (!isValid(originalDate)) {\n    throw new RangeError('Invalid time value');\n  }\n\n  // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n  // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n  // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/376\n  var timezoneOffset = getTimezoneOffsetInMilliseconds(originalDate);\n  var utcDate = subMilliseconds(originalDate, timezoneOffset);\n  var formatterOptions = {\n    firstWeekContainsDate: firstWeekContainsDate,\n    weekStartsOn: weekStartsOn,\n    locale: locale,\n    _originalDate: originalDate\n  };\n  var result = formatStr.match(longFormattingTokensRegExp).map(function (substring) {\n    var firstCharacter = substring[0];\n    if (firstCharacter === 'p' || firstCharacter === 'P') {\n      var longFormatter = longFormatters[firstCharacter];\n      return longFormatter(substring, locale.formatLong);\n    }\n    return substring;\n  }).join('').match(formattingTokensRegExp).map(function (substring) {\n    // Replace two single quote characters with one single quote character\n    if (substring === \"''\") {\n      return \"'\";\n    }\n    var firstCharacter = substring[0];\n    if (firstCharacter === \"'\") {\n      return cleanEscapedString(substring);\n    }\n    var formatter = formatters[firstCharacter];\n    if (formatter) {\n      if (!(options !== null && options !== void 0 && options.useAdditionalWeekYearTokens) && isProtectedWeekYearToken(substring)) {\n        throwProtectedError(substring, dirtyFormatStr, String(dirtyDate));\n      }\n      if (!(options !== null && options !== void 0 && options.useAdditionalDayOfYearTokens) && isProtectedDayOfYearToken(substring)) {\n        throwProtectedError(substring, dirtyFormatStr, String(dirtyDate));\n      }\n      return formatter(utcDate, substring, locale.localize, formatterOptions);\n    }\n    if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n      throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`');\n    }\n    return substring;\n  }).join('');\n  return result;\n}\nfunction cleanEscapedString(input) {\n  var matched = input.match(escapedStringRegExp);\n  if (!matched) {\n    return input;\n  }\n  return matched[1].replace(doubleQuoteRegExp, \"'\");\n}", "export default function assign(target, object) {\n  if (target == null) {\n    throw new TypeError('assign requires that input parameter not be null or undefined');\n  }\n  for (var property in object) {\n    if (Object.prototype.hasOwnProperty.call(object, property)) {\n      ;\n      target[property] = object[property];\n    }\n  }\n  return target;\n}", "function _arrayLikeToArray(r, a) {\n  (null == a || a > r.length) && (a = r.length);\n  for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];\n  return n;\n}\nexport { _arrayLikeToArray as default };", "import arrayLikeToArray from \"./arrayLikeToArray.js\";\nfunction _unsupportedIterableToArray(r, a) {\n  if (r) {\n    if (\"string\" == typeof r) return arrayLikeToArray(r, a);\n    var t = {}.toString.call(r).slice(8, -1);\n    return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? arrayLikeToArray(r, a) : void 0;\n  }\n}\nexport { _unsupportedIterableToArray as default };", "import unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nfunction _createForOfIteratorHelper(r, e) {\n  var t = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n  if (!t) {\n    if (Array.isArray(r) || (t = unsupportedIterableToArray(r)) || e && r && \"number\" == typeof r.length) {\n      t && (r = t);\n      var _n = 0,\n        F = function F() {};\n      return {\n        s: F,\n        n: function n() {\n          return _n >= r.length ? {\n            done: !0\n          } : {\n            done: !1,\n            value: r[_n++]\n          };\n        },\n        e: function e(r) {\n          throw r;\n        },\n        f: F\n      };\n    }\n    throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n  }\n  var o,\n    a = !0,\n    u = !1;\n  return {\n    s: function s() {\n      t = t.call(r);\n    },\n    n: function n() {\n      var r = t.next();\n      return a = r.done, r;\n    },\n    e: function e(r) {\n      u = !0, o = r;\n    },\n    f: function f() {\n      try {\n        a || null == t[\"return\"] || t[\"return\"]();\n      } finally {\n        if (u) throw o;\n      }\n    }\n  };\n}\nexport { _createForOfIteratorHelper as default };", "function _assertThisInitialized(e) {\n  if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  return e;\n}\nexport { _assertThisInitialized as default };", "function _setPrototypeOf(t, e) {\n  return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {\n    return t.__proto__ = e, t;\n  }, _setPrototypeOf(t, e);\n}\nexport { _setPrototypeOf as default };", "import setPrototypeOf from \"./setPrototypeOf.js\";\nfunction _inherits(t, e) {\n  if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\");\n  t.prototype = Object.create(e && e.prototype, {\n    constructor: {\n      value: t,\n      writable: !0,\n      configurable: !0\n    }\n  }), Object.defineProperty(t, \"prototype\", {\n    writable: !1\n  }), e && setPrototypeOf(t, e);\n}\nexport { _inherits as default };", "function _getPrototypeOf(t) {\n  return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) {\n    return t.__proto__ || Object.getPrototypeOf(t);\n  }, _getPrototypeOf(t);\n}\nexport { _getPrototypeOf as default };", "function _isNativeReflectConstruct() {\n  try {\n    var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n  } catch (t) {}\n  return (_isNativeReflectConstruct = function _isNativeReflectConstruct() {\n    return !!t;\n  })();\n}\nexport { _isNativeReflectConstruct as default };", "import _typeof from \"./typeof.js\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nfunction _possibleConstructorReturn(t, e) {\n  if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e;\n  if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\");\n  return assertThisInitialized(t);\n}\nexport { _possibleConstructorReturn as default };", "import getPrototypeOf from \"./getPrototypeOf.js\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nimport possibleConstructorReturn from \"./possibleConstructorReturn.js\";\nfunction _createSuper(t) {\n  var r = isNativeReflectConstruct();\n  return function () {\n    var e,\n      o = getPrototypeOf(t);\n    if (r) {\n      var s = getPrototypeOf(this).constructor;\n      e = Reflect.construct(o, arguments, s);\n    } else e = o.apply(this, arguments);\n    return possibleConstructorReturn(this, e);\n  };\n}\nexport { _createSuper as default };", "function _classCallCheck(a, n) {\n  if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\");\n}\nexport { _classCallCheck as default };", "import _typeof from \"./typeof.js\";\nfunction toPrimitive(t, r) {\n  if (\"object\" != _typeof(t) || !t) return t;\n  var e = t[Symbol.toPrimitive];\n  if (void 0 !== e) {\n    var i = e.call(t, r || \"default\");\n    if (\"object\" != _typeof(i)) return i;\n    throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n  }\n  return (\"string\" === r ? String : Number)(t);\n}\nexport { toPrimitive as default };", "import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nfunction toPropertyKey(t) {\n  var i = toPrimitive(t, \"string\");\n  return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nexport { toPropertyKey as default };", "import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperties(e, r) {\n  for (var t = 0; t < r.length; t++) {\n    var o = r[t];\n    o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, toPropertyKey(o.key), o);\n  }\n}\nfunction _createClass(e, r, t) {\n  return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", {\n    writable: !1\n  }), e;\n}\nexport { _createClass as default };", "import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperty(e, r, t) {\n  return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n    value: t,\n    enumerable: !0,\n    configurable: !0,\n    writable: !0\n  }) : e[r] = t, e;\n}\nexport { _defineProperty as default };", "import _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nvar TIMEZONE_UNIT_PRIORITY = 10;\nexport var Setter = /*#__PURE__*/function () {\n  function Setter() {\n    _classCallCheck(this, Setter);\n    _defineProperty(this, \"priority\", void 0);\n    _defineProperty(this, \"subPriority\", 0);\n  }\n  _createClass(Setter, [{\n    key: \"validate\",\n    value: function validate(_utcDate, _options) {\n      return true;\n    }\n  }]);\n  return Setter;\n}();\nexport var ValueSetter = /*#__PURE__*/function (_Setter) {\n  _inherits(ValueSetter, _Setter);\n  var _super = _createSuper(ValueSetter);\n  function ValueSetter(value, validateValue, setValue, priority, subPriority) {\n    var _this;\n    _classCallCheck(this, ValueSetter);\n    _this = _super.call(this);\n    _this.value = value;\n    _this.validateValue = validateValue;\n    _this.setValue = setValue;\n    _this.priority = priority;\n    if (subPriority) {\n      _this.subPriority = subPriority;\n    }\n    return _this;\n  }\n  _createClass(ValueSetter, [{\n    key: \"validate\",\n    value: function validate(utcDate, options) {\n      return this.validateValue(utcDate, this.value, options);\n    }\n  }, {\n    key: \"set\",\n    value: function set(utcDate, flags, options) {\n      return this.setValue(utcDate, flags, this.value, options);\n    }\n  }]);\n  return ValueSetter;\n}(Setter);\nexport var DateToSystemTimezoneSetter = /*#__PURE__*/function (_Setter2) {\n  _inherits(DateToSystemTimezoneSetter, _Setter2);\n  var _super2 = _createSuper(DateToSystemTimezoneSetter);\n  function DateToSystemTimezoneSetter() {\n    var _this2;\n    _classCallCheck(this, DateToSystemTimezoneSetter);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this2 = _super2.call.apply(_super2, [this].concat(args));\n    _defineProperty(_assertThisInitialized(_this2), \"priority\", TIMEZONE_UNIT_PRIORITY);\n    _defineProperty(_assertThisInitialized(_this2), \"subPriority\", -1);\n    return _this2;\n  }\n  _createClass(DateToSystemTimezoneSetter, [{\n    key: \"set\",\n    value: function set(date, flags) {\n      if (flags.timestampIsSet) {\n        return date;\n      }\n      var convertedDate = new Date(0);\n      convertedDate.setFullYear(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate());\n      convertedDate.setHours(date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds(), date.getUTCMilliseconds());\n      return convertedDate;\n    }\n  }]);\n  return DateToSystemTimezoneSetter;\n}(Setter);", "import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { ValueSetter } from \"./Setter.js\";\nexport var Parser = /*#__PURE__*/function () {\n  function Parser() {\n    _classCallCheck(this, Parser);\n    _defineProperty(this, \"incompatibleTokens\", void 0);\n    _defineProperty(this, \"priority\", void 0);\n    _defineProperty(this, \"subPriority\", void 0);\n  }\n  _createClass(Parser, [{\n    key: \"run\",\n    value: function run(dateString, token, match, options) {\n      var result = this.parse(dateString, token, match, options);\n      if (!result) {\n        return null;\n      }\n      return {\n        setter: new ValueSetter(result.value, this.validate, this.set, this.priority, this.subPriority),\n        rest: result.rest\n      };\n    }\n  }, {\n    key: \"validate\",\n    value: function validate(_utcDate, _value, _options) {\n      return true;\n    }\n  }]);\n  return Parser;\n}();", "import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nexport var EraParser = /*#__PURE__*/function (_Parser) {\n  _inherits(EraParser, _Parser);\n  var _super = _createSuper(EraParser);\n  function EraParser() {\n    var _this;\n    _classCallCheck(this, EraParser);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _super.call.apply(_super, [this].concat(args));\n    _defineProperty(_assertThisInitialized(_this), \"priority\", 140);\n    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['R', 'u', 't', 'T']);\n    return _this;\n  }\n  _createClass(EraParser, [{\n    key: \"parse\",\n    value: function parse(dateString, token, match) {\n      switch (token) {\n        // AD, BC\n        case 'G':\n        case 'GG':\n        case 'GGG':\n          return match.era(dateString, {\n            width: 'abbreviated'\n          }) || match.era(dateString, {\n            width: 'narrow'\n          });\n        // A, B\n        case 'GGGGG':\n          return match.era(dateString, {\n            width: 'narrow'\n          });\n        // Anno Domini, Before Christ\n        case 'GGGG':\n        default:\n          return match.era(dateString, {\n            width: 'wide'\n          }) || match.era(dateString, {\n            width: 'abbreviated'\n          }) || match.era(dateString, {\n            width: 'narrow'\n          });\n      }\n    }\n  }, {\n    key: \"set\",\n    value: function set(date, flags, value) {\n      flags.era = value;\n      date.setUTCFullYear(value, 0, 1);\n      date.setUTCHours(0, 0, 0, 0);\n      return date;\n    }\n  }]);\n  return EraParser;\n}(Parser);", "export var numericPatterns = {\n  month: /^(1[0-2]|0?\\d)/,\n  // 0 to 12\n  date: /^(3[0-1]|[0-2]?\\d)/,\n  // 0 to 31\n  dayOfYear: /^(36[0-6]|3[0-5]\\d|[0-2]?\\d?\\d)/,\n  // 0 to 366\n  week: /^(5[0-3]|[0-4]?\\d)/,\n  // 0 to 53\n  hour23h: /^(2[0-3]|[0-1]?\\d)/,\n  // 0 to 23\n  hour24h: /^(2[0-4]|[0-1]?\\d)/,\n  // 0 to 24\n  hour11h: /^(1[0-1]|0?\\d)/,\n  // 0 to 11\n  hour12h: /^(1[0-2]|0?\\d)/,\n  // 0 to 12\n  minute: /^[0-5]?\\d/,\n  // 0 to 59\n  second: /^[0-5]?\\d/,\n  // 0 to 59\n\n  singleDigit: /^\\d/,\n  // 0 to 9\n  twoDigits: /^\\d{1,2}/,\n  // 0 to 99\n  threeDigits: /^\\d{1,3}/,\n  // 0 to 999\n  fourDigits: /^\\d{1,4}/,\n  // 0 to 9999\n\n  anyDigitsSigned: /^-?\\d+/,\n  singleDigitSigned: /^-?\\d/,\n  // 0 to 9, -0 to -9\n  twoDigitsSigned: /^-?\\d{1,2}/,\n  // 0 to 99, -0 to -99\n  threeDigitsSigned: /^-?\\d{1,3}/,\n  // 0 to 999, -0 to -999\n  fourDigitsSigned: /^-?\\d{1,4}/ // 0 to 9999, -0 to -9999\n};\n\nexport var timezonePatterns = {\n  basicOptionalMinutes: /^([+-])(\\d{2})(\\d{2})?|Z/,\n  basic: /^([+-])(\\d{2})(\\d{2})|Z/,\n  basicOptionalSeconds: /^([+-])(\\d{2})(\\d{2})((\\d{2}))?|Z/,\n  extended: /^([+-])(\\d{2}):(\\d{2})|Z/,\n  extendedOptionalSeconds: /^([+-])(\\d{2}):(\\d{2})(:(\\d{2}))?|Z/\n};", "import { millisecondsInHour, millisecondsInMinute, millisecondsInSecond } from \"../../constants/index.js\";\nimport { numericPatterns } from \"./constants.js\";\nexport function mapValue(parseFnResult, mapFn) {\n  if (!parseFnResult) {\n    return parseFnResult;\n  }\n  return {\n    value: mapFn(parseFnResult.value),\n    rest: parseFnResult.rest\n  };\n}\nexport function parseNumericPattern(pattern, dateString) {\n  var matchResult = dateString.match(pattern);\n  if (!matchResult) {\n    return null;\n  }\n  return {\n    value: parseInt(matchResult[0], 10),\n    rest: dateString.slice(matchResult[0].length)\n  };\n}\nexport function parseTimezonePattern(pattern, dateString) {\n  var matchResult = dateString.match(pattern);\n  if (!matchResult) {\n    return null;\n  }\n\n  // Input is 'Z'\n  if (matchResult[0] === 'Z') {\n    return {\n      value: 0,\n      rest: dateString.slice(1)\n    };\n  }\n  var sign = matchResult[1] === '+' ? 1 : -1;\n  var hours = matchResult[2] ? parseInt(matchResult[2], 10) : 0;\n  var minutes = matchResult[3] ? parseInt(matchResult[3], 10) : 0;\n  var seconds = matchResult[5] ? parseInt(matchResult[5], 10) : 0;\n  return {\n    value: sign * (hours * millisecondsInHour + minutes * millisecondsInMinute + seconds * millisecondsInSecond),\n    rest: dateString.slice(matchResult[0].length)\n  };\n}\nexport function parseAnyDigitsSigned(dateString) {\n  return parseNumericPattern(numericPatterns.anyDigitsSigned, dateString);\n}\nexport function parseNDigits(n, dateString) {\n  switch (n) {\n    case 1:\n      return parseNumericPattern(numericPatterns.singleDigit, dateString);\n    case 2:\n      return parseNumericPattern(numericPatterns.twoDigits, dateString);\n    case 3:\n      return parseNumericPattern(numericPatterns.threeDigits, dateString);\n    case 4:\n      return parseNumericPattern(numericPatterns.fourDigits, dateString);\n    default:\n      return parseNumericPattern(new RegExp('^\\\\d{1,' + n + '}'), dateString);\n  }\n}\nexport function parseNDigitsSigned(n, dateString) {\n  switch (n) {\n    case 1:\n      return parseNumericPattern(numericPatterns.singleDigitSigned, dateString);\n    case 2:\n      return parseNumericPattern(numericPatterns.twoDigitsSigned, dateString);\n    case 3:\n      return parseNumericPattern(numericPatterns.threeDigitsSigned, dateString);\n    case 4:\n      return parseNumericPattern(numericPatterns.fourDigitsSigned, dateString);\n    default:\n      return parseNumericPattern(new RegExp('^-?\\\\d{1,' + n + '}'), dateString);\n  }\n}\nexport function dayPeriodEnumToHours(dayPeriod) {\n  switch (dayPeriod) {\n    case 'morning':\n      return 4;\n    case 'evening':\n      return 17;\n    case 'pm':\n    case 'noon':\n    case 'afternoon':\n      return 12;\n    case 'am':\n    case 'midnight':\n    case 'night':\n    default:\n      return 0;\n  }\n}\nexport function normalizeTwoDigitYear(twoDigitYear, currentYear) {\n  var isCommonEra = currentYear > 0;\n  // Absolute number of the current year:\n  // 1 -> 1 AC\n  // 0 -> 1 BC\n  // -1 -> 2 BC\n  var absCurrentYear = isCommonEra ? currentYear : 1 - currentYear;\n  var result;\n  if (absCurrentYear <= 50) {\n    result = twoDigitYear || 100;\n  } else {\n    var rangeEnd = absCurrentYear + 50;\n    var rangeEndCentury = Math.floor(rangeEnd / 100) * 100;\n    var isPreviousCentury = twoDigitYear >= rangeEnd % 100;\n    result = twoDigitYear + rangeEndCentury - (isPreviousCentury ? 100 : 0);\n  }\n  return isCommonEra ? result : 1 - result;\n}\nexport function isLeapYearIndex(year) {\n  return year % 400 === 0 || year % 4 === 0 && year % 100 !== 0;\n}", "import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { mapValue, normalizeTwoDigitYear, parseNDigits } from \"../utils.js\";\n// From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_Patterns\n// | Year     |     y | yy |   yyy |  yyyy | yyyyy |\n// |----------|-------|----|-------|-------|-------|\n// | AD 1     |     1 | 01 |   001 |  0001 | 00001 |\n// | AD 12    |    12 | 12 |   012 |  0012 | 00012 |\n// | AD 123   |   123 | 23 |   123 |  0123 | 00123 |\n// | AD 1234  |  1234 | 34 |  1234 |  1234 | 01234 |\n// | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\nexport var YearParser = /*#__PURE__*/function (_Parser) {\n  _inherits(YearParser, _Parser);\n  var _super = _createSuper(YearParser);\n  function YearParser() {\n    var _this;\n    _classCallCheck(this, YearParser);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _super.call.apply(_super, [this].concat(args));\n    _defineProperty(_assertThisInitialized(_this), \"priority\", 130);\n    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'u', 'w', 'I', 'i', 'e', 'c', 't', 'T']);\n    return _this;\n  }\n  _createClass(YearParser, [{\n    key: \"parse\",\n    value: function parse(dateString, token, match) {\n      var valueCallback = function valueCallback(year) {\n        return {\n          year: year,\n          isTwoDigitYear: token === 'yy'\n        };\n      };\n      switch (token) {\n        case 'y':\n          return mapValue(parseNDigits(4, dateString), valueCallback);\n        case 'yo':\n          return mapValue(match.ordinalNumber(dateString, {\n            unit: 'year'\n          }), valueCallback);\n        default:\n          return mapValue(parseNDigits(token.length, dateString), valueCallback);\n      }\n    }\n  }, {\n    key: \"validate\",\n    value: function validate(_date, value) {\n      return value.isTwoDigitYear || value.year > 0;\n    }\n  }, {\n    key: \"set\",\n    value: function set(date, flags, value) {\n      var currentYear = date.getUTCFullYear();\n      if (value.isTwoDigitYear) {\n        var normalizedTwoDigitYear = normalizeTwoDigitYear(value.year, currentYear);\n        date.setUTCFullYear(normalizedTwoDigitYear, 0, 1);\n        date.setUTCHours(0, 0, 0, 0);\n        return date;\n      }\n      var year = !('era' in flags) || flags.era === 1 ? value.year : 1 - value.year;\n      date.setUTCFullYear(year, 0, 1);\n      date.setUTCHours(0, 0, 0, 0);\n      return date;\n    }\n  }]);\n  return YearParser;\n}(Parser);", "import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { parseNDigits, normalizeTwoDigitYear, mapValue } from \"../utils.js\";\nimport getUTCWeekYear from \"../../../_lib/getUTCWeekYear/index.js\";\nimport startOfUTCWeek from \"../../../_lib/startOfUTCWeek/index.js\";\n// Local week-numbering year\nexport var LocalWeekYearParser = /*#__PURE__*/function (_Parser) {\n  _inherits(LocalWeekYearParser, _Parser);\n  var _super = _createSuper(LocalWeekYearParser);\n  function LocalWeekYearParser() {\n    var _this;\n    _classCallCheck(this, LocalWeekYearParser);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _super.call.apply(_super, [this].concat(args));\n    _defineProperty(_assertThisInitialized(_this), \"priority\", 130);\n    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['y', 'R', 'u', 'Q', 'q', 'M', 'L', 'I', 'd', 'D', 'i', 't', 'T']);\n    return _this;\n  }\n  _createClass(LocalWeekYearParser, [{\n    key: \"parse\",\n    value: function parse(dateString, token, match) {\n      var valueCallback = function valueCallback(year) {\n        return {\n          year: year,\n          isTwoDigitYear: token === 'YY'\n        };\n      };\n      switch (token) {\n        case 'Y':\n          return mapValue(parseNDigits(4, dateString), valueCallback);\n        case 'Yo':\n          return mapValue(match.ordinalNumber(dateString, {\n            unit: 'year'\n          }), valueCallback);\n        default:\n          return mapValue(parseNDigits(token.length, dateString), valueCallback);\n      }\n    }\n  }, {\n    key: \"validate\",\n    value: function validate(_date, value) {\n      return value.isTwoDigitYear || value.year > 0;\n    }\n  }, {\n    key: \"set\",\n    value: function set(date, flags, value, options) {\n      var currentYear = getUTCWeekYear(date, options);\n      if (value.isTwoDigitYear) {\n        var normalizedTwoDigitYear = normalizeTwoDigitYear(value.year, currentYear);\n        date.setUTCFullYear(normalizedTwoDigitYear, 0, options.firstWeekContainsDate);\n        date.setUTCHours(0, 0, 0, 0);\n        return startOfUTCWeek(date, options);\n      }\n      var year = !('era' in flags) || flags.era === 1 ? value.year : 1 - value.year;\n      date.setUTCFullYear(year, 0, options.firstWeekContainsDate);\n      date.setUTCHours(0, 0, 0, 0);\n      return startOfUTCWeek(date, options);\n    }\n  }]);\n  return LocalWeekYearParser;\n}(Parser);", "import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { parseNDigitsSigned } from \"../utils.js\";\nimport startOfUTCISOWeek from \"../../../_lib/startOfUTCISOWeek/index.js\"; // ISO week-numbering year\nexport var ISOWeekYearParser = /*#__PURE__*/function (_Parser) {\n  _inherits(ISOWeekYearParser, _Parser);\n  var _super = _createSuper(ISOWeekYearParser);\n  function ISOWeekYearParser() {\n    var _this;\n    _classCallCheck(this, ISOWeekYearParser);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _super.call.apply(_super, [this].concat(args));\n    _defineProperty(_assertThisInitialized(_this), \"priority\", 130);\n    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['G', 'y', 'Y', 'u', 'Q', 'q', 'M', 'L', 'w', 'd', 'D', 'e', 'c', 't', 'T']);\n    return _this;\n  }\n  _createClass(ISOWeekYearParser, [{\n    key: \"parse\",\n    value: function parse(dateString, token) {\n      if (token === 'R') {\n        return parseNDigitsSigned(4, dateString);\n      }\n      return parseNDigitsSigned(token.length, dateString);\n    }\n  }, {\n    key: \"set\",\n    value: function set(_date, _flags, value) {\n      var firstWeekOfYear = new Date(0);\n      firstWeekOfYear.setUTCFullYear(value, 0, 4);\n      firstWeekOfYear.setUTCHours(0, 0, 0, 0);\n      return startOfUTCISOWeek(firstWeekOfYear);\n    }\n  }]);\n  return ISOWeekYearParser;\n}(Parser);", "import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { parseNDigitsSigned } from \"../utils.js\";\nexport var ExtendedYearParser = /*#__PURE__*/function (_Parser) {\n  _inherits(ExtendedYearParser, _Parser);\n  var _super = _createSuper(ExtendedYearParser);\n  function ExtendedYearParser() {\n    var _this;\n    _classCallCheck(this, ExtendedYearParser);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _super.call.apply(_super, [this].concat(args));\n    _defineProperty(_assertThisInitialized(_this), \"priority\", 130);\n    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['G', 'y', 'Y', 'R', 'w', 'I', 'i', 'e', 'c', 't', 'T']);\n    return _this;\n  }\n  _createClass(ExtendedYearParser, [{\n    key: \"parse\",\n    value: function parse(dateString, token) {\n      if (token === 'u') {\n        return parseNDigitsSigned(4, dateString);\n      }\n      return parseNDigitsSigned(token.length, dateString);\n    }\n  }, {\n    key: \"set\",\n    value: function set(date, _flags, value) {\n      date.setUTCFullYear(value, 0, 1);\n      date.setUTCHours(0, 0, 0, 0);\n      return date;\n    }\n  }]);\n  return ExtendedYearParser;\n}(Parser);", "import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { parseNDigits } from \"../utils.js\";\nexport var QuarterParser = /*#__PURE__*/function (_Parser) {\n  _inherits(QuarterParser, _Parser);\n  var _super = _createSuper(QuarterParser);\n  function QuarterParser() {\n    var _this;\n    _classCallCheck(this, QuarterParser);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _super.call.apply(_super, [this].concat(args));\n    _defineProperty(_assertThisInitialized(_this), \"priority\", 120);\n    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'q', 'M', 'L', 'w', 'I', 'd', 'D', 'i', 'e', 'c', 't', 'T']);\n    return _this;\n  }\n  _createClass(QuarterParser, [{\n    key: \"parse\",\n    value: function parse(dateString, token, match) {\n      switch (token) {\n        // 1, 2, 3, 4\n        case 'Q':\n        case 'QQ':\n          // 01, 02, 03, 04\n          return parseNDigits(token.length, dateString);\n        // 1st, 2nd, 3rd, 4th\n        case 'Qo':\n          return match.ordinalNumber(dateString, {\n            unit: 'quarter'\n          });\n        // Q1, Q2, Q3, Q4\n        case 'QQQ':\n          return match.quarter(dateString, {\n            width: 'abbreviated',\n            context: 'formatting'\n          }) || match.quarter(dateString, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n        // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n        case 'QQQQQ':\n          return match.quarter(dateString, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n        // 1st quarter, 2nd quarter, ...\n        case 'QQQQ':\n        default:\n          return match.quarter(dateString, {\n            width: 'wide',\n            context: 'formatting'\n          }) || match.quarter(dateString, {\n            width: 'abbreviated',\n            context: 'formatting'\n          }) || match.quarter(dateString, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n      }\n    }\n  }, {\n    key: \"validate\",\n    value: function validate(_date, value) {\n      return value >= 1 && value <= 4;\n    }\n  }, {\n    key: \"set\",\n    value: function set(date, _flags, value) {\n      date.setUTCMonth((value - 1) * 3, 1);\n      date.setUTCHours(0, 0, 0, 0);\n      return date;\n    }\n  }]);\n  return QuarterParser;\n}(Parser);", "import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { parseNDigits } from \"../utils.js\";\nexport var StandAloneQuarterParser = /*#__PURE__*/function (_Parser) {\n  _inherits(StandAloneQuarterParser, _Parser);\n  var _super = _createSuper(StandAloneQuarterParser);\n  function StandAloneQuarterParser() {\n    var _this;\n    _classCallCheck(this, StandAloneQuarterParser);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _super.call.apply(_super, [this].concat(args));\n    _defineProperty(_assertThisInitialized(_this), \"priority\", 120);\n    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'Q', 'M', 'L', 'w', 'I', 'd', 'D', 'i', 'e', 'c', 't', 'T']);\n    return _this;\n  }\n  _createClass(StandAloneQuarterParser, [{\n    key: \"parse\",\n    value: function parse(dateString, token, match) {\n      switch (token) {\n        // 1, 2, 3, 4\n        case 'q':\n        case 'qq':\n          // 01, 02, 03, 04\n          return parseNDigits(token.length, dateString);\n        // 1st, 2nd, 3rd, 4th\n        case 'qo':\n          return match.ordinalNumber(dateString, {\n            unit: 'quarter'\n          });\n        // Q1, Q2, Q3, Q4\n        case 'qqq':\n          return match.quarter(dateString, {\n            width: 'abbreviated',\n            context: 'standalone'\n          }) || match.quarter(dateString, {\n            width: 'narrow',\n            context: 'standalone'\n          });\n        // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n        case 'qqqqq':\n          return match.quarter(dateString, {\n            width: 'narrow',\n            context: 'standalone'\n          });\n        // 1st quarter, 2nd quarter, ...\n        case 'qqqq':\n        default:\n          return match.quarter(dateString, {\n            width: 'wide',\n            context: 'standalone'\n          }) || match.quarter(dateString, {\n            width: 'abbreviated',\n            context: 'standalone'\n          }) || match.quarter(dateString, {\n            width: 'narrow',\n            context: 'standalone'\n          });\n      }\n    }\n  }, {\n    key: \"validate\",\n    value: function validate(_date, value) {\n      return value >= 1 && value <= 4;\n    }\n  }, {\n    key: \"set\",\n    value: function set(date, _flags, value) {\n      date.setUTCMonth((value - 1) * 3, 1);\n      date.setUTCHours(0, 0, 0, 0);\n      return date;\n    }\n  }]);\n  return StandAloneQuarterParser;\n}(Parser);", "import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { mapValue, parseNDigits, parseNumericPattern } from \"../utils.js\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nexport var MonthParser = /*#__PURE__*/function (_Parser) {\n  _inherits(MonthParser, _Parser);\n  var _super = _createSuper(MonthParser);\n  function MonthParser() {\n    var _this;\n    _classCallCheck(this, MonthParser);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _super.call.apply(_super, [this].concat(args));\n    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'q', 'Q', 'L', 'w', 'I', 'D', 'i', 'e', 'c', 't', 'T']);\n    _defineProperty(_assertThisInitialized(_this), \"priority\", 110);\n    return _this;\n  }\n  _createClass(MonthParser, [{\n    key: \"parse\",\n    value: function parse(dateString, token, match) {\n      var valueCallback = function valueCallback(value) {\n        return value - 1;\n      };\n      switch (token) {\n        // 1, 2, ..., 12\n        case 'M':\n          return mapValue(parseNumericPattern(numericPatterns.month, dateString), valueCallback);\n        // 01, 02, ..., 12\n        case 'MM':\n          return mapValue(parseNDigits(2, dateString), valueCallback);\n        // 1st, 2nd, ..., 12th\n        case 'Mo':\n          return mapValue(match.ordinalNumber(dateString, {\n            unit: 'month'\n          }), valueCallback);\n        // Jan, Feb, ..., Dec\n        case 'MMM':\n          return match.month(dateString, {\n            width: 'abbreviated',\n            context: 'formatting'\n          }) || match.month(dateString, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n        // J, F, ..., D\n        case 'MMMMM':\n          return match.month(dateString, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n        // January, February, ..., December\n        case 'MMMM':\n        default:\n          return match.month(dateString, {\n            width: 'wide',\n            context: 'formatting'\n          }) || match.month(dateString, {\n            width: 'abbreviated',\n            context: 'formatting'\n          }) || match.month(dateString, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n      }\n    }\n  }, {\n    key: \"validate\",\n    value: function validate(_date, value) {\n      return value >= 0 && value <= 11;\n    }\n  }, {\n    key: \"set\",\n    value: function set(date, _flags, value) {\n      date.setUTCMonth(value, 1);\n      date.setUTCHours(0, 0, 0, 0);\n      return date;\n    }\n  }]);\n  return MonthParser;\n}(Parser);", "import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits, mapValue } from \"../utils.js\";\nexport var StandAloneMonthParser = /*#__PURE__*/function (_Parser) {\n  _inherits(StandAloneMonthParser, _Parser);\n  var _super = _createSuper(StandAloneMonthParser);\n  function StandAloneMonthParser() {\n    var _this;\n    _classCallCheck(this, StandAloneMonthParser);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _super.call.apply(_super, [this].concat(args));\n    _defineProperty(_assertThisInitialized(_this), \"priority\", 110);\n    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'q', 'Q', 'M', 'w', 'I', 'D', 'i', 'e', 'c', 't', 'T']);\n    return _this;\n  }\n  _createClass(StandAloneMonthParser, [{\n    key: \"parse\",\n    value: function parse(dateString, token, match) {\n      var valueCallback = function valueCallback(value) {\n        return value - 1;\n      };\n      switch (token) {\n        // 1, 2, ..., 12\n        case 'L':\n          return mapValue(parseNumericPattern(numericPatterns.month, dateString), valueCallback);\n        // 01, 02, ..., 12\n        case 'LL':\n          return mapValue(parseNDigits(2, dateString), valueCallback);\n        // 1st, 2nd, ..., 12th\n        case 'Lo':\n          return mapValue(match.ordinalNumber(dateString, {\n            unit: 'month'\n          }), valueCallback);\n        // Jan, Feb, ..., Dec\n        case 'LLL':\n          return match.month(dateString, {\n            width: 'abbreviated',\n            context: 'standalone'\n          }) || match.month(dateString, {\n            width: 'narrow',\n            context: 'standalone'\n          });\n        // J, F, ..., D\n        case 'LLLLL':\n          return match.month(dateString, {\n            width: 'narrow',\n            context: 'standalone'\n          });\n        // January, February, ..., December\n        case 'LLLL':\n        default:\n          return match.month(dateString, {\n            width: 'wide',\n            context: 'standalone'\n          }) || match.month(dateString, {\n            width: 'abbreviated',\n            context: 'standalone'\n          }) || match.month(dateString, {\n            width: 'narrow',\n            context: 'standalone'\n          });\n      }\n    }\n  }, {\n    key: \"validate\",\n    value: function validate(_date, value) {\n      return value >= 0 && value <= 11;\n    }\n  }, {\n    key: \"set\",\n    value: function set(date, _flags, value) {\n      date.setUTCMonth(value, 1);\n      date.setUTCHours(0, 0, 0, 0);\n      return date;\n    }\n  }]);\n  return StandAloneMonthParser;\n}(Parser);", "import toInteger from \"../toInteger/index.js\";\nimport toDate from \"../../toDate/index.js\";\nimport getUTCWeek from \"../getUTCWeek/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nexport default function setUTCWeek(dirtyDate, dirtyWeek, options) {\n  requiredArgs(2, arguments);\n  var date = toDate(dirtyDate);\n  var week = toInteger(dirtyWeek);\n  var diff = getUTCWeek(date, options) - week;\n  date.setUTCDate(date.getUTCDate() - diff * 7);\n  return date;\n}", "import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nimport setUTCWeek from \"../../../_lib/setUTCWeek/index.js\";\nimport startOfUTCWeek from \"../../../_lib/startOfUTCWeek/index.js\"; // Local week of year\nexport var LocalWeekParser = /*#__PURE__*/function (_Parser) {\n  _inherits(LocalWeekParser, _Parser);\n  var _super = _createSuper(LocalWeekParser);\n  function LocalWeekParser() {\n    var _this;\n    _classCallCheck(this, LocalWeekParser);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _super.call.apply(_super, [this].concat(args));\n    _defineProperty(_assertThisInitialized(_this), \"priority\", 100);\n    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['y', 'R', 'u', 'q', 'Q', 'M', 'L', 'I', 'd', 'D', 'i', 't', 'T']);\n    return _this;\n  }\n  _createClass(LocalWeekParser, [{\n    key: \"parse\",\n    value: function parse(dateString, token, match) {\n      switch (token) {\n        case 'w':\n          return parseNumericPattern(numericPatterns.week, dateString);\n        case 'wo':\n          return match.ordinalNumber(dateString, {\n            unit: 'week'\n          });\n        default:\n          return parseNDigits(token.length, dateString);\n      }\n    }\n  }, {\n    key: \"validate\",\n    value: function validate(_date, value) {\n      return value >= 1 && value <= 53;\n    }\n  }, {\n    key: \"set\",\n    value: function set(date, _flags, value, options) {\n      return startOfUTCWeek(setUTCWeek(date, value, options), options);\n    }\n  }]);\n  return LocalWeekParser;\n}(Parser);", "import toInteger from \"../toInteger/index.js\";\nimport toDate from \"../../toDate/index.js\";\nimport getUTCISOWeek from \"../getUTCISOWeek/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nexport default function setUTCISOWeek(dirtyDate, dirtyISOWeek) {\n  requiredArgs(2, arguments);\n  var date = toDate(dirtyDate);\n  var isoWeek = toInteger(dirtyISOWeek);\n  var diff = getUTCISOWeek(date) - isoWeek;\n  date.setUTCDate(date.getUTCDate() - diff * 7);\n  return date;\n}", "import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nimport setUTCISOWeek from \"../../../_lib/setUTCISOWeek/index.js\";\nimport startOfUTCISOWeek from \"../../../_lib/startOfUTCISOWeek/index.js\"; // ISO week of year\nexport var ISOWeekParser = /*#__PURE__*/function (_Parser) {\n  _inherits(ISOWeekParser, _Parser);\n  var _super = _createSuper(ISOWeekParser);\n  function ISOWeekParser() {\n    var _this;\n    _classCallCheck(this, ISOWeekParser);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _super.call.apply(_super, [this].concat(args));\n    _defineProperty(_assertThisInitialized(_this), \"priority\", 100);\n    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['y', 'Y', 'u', 'q', 'Q', 'M', 'L', 'w', 'd', 'D', 'e', 'c', 't', 'T']);\n    return _this;\n  }\n  _createClass(ISOWeekParser, [{\n    key: \"parse\",\n    value: function parse(dateString, token, match) {\n      switch (token) {\n        case 'I':\n          return parseNumericPattern(numericPatterns.week, dateString);\n        case 'Io':\n          return match.ordinalNumber(dateString, {\n            unit: 'week'\n          });\n        default:\n          return parseNDigits(token.length, dateString);\n      }\n    }\n  }, {\n    key: \"validate\",\n    value: function validate(_date, value) {\n      return value >= 1 && value <= 53;\n    }\n  }, {\n    key: \"set\",\n    value: function set(date, _flags, value) {\n      return startOfUTCISOWeek(setUTCISOWeek(date, value));\n    }\n  }]);\n  return ISOWeekParser;\n}(Parser);", "import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { isLeapYearIndex, parseNDigits, parseNumericPattern } from \"../utils.js\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nvar DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nvar DAYS_IN_MONTH_LEAP_YEAR = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n\n// Day of the month\nexport var DateParser = /*#__PURE__*/function (_Parser) {\n  _inherits(DateParser, _Parser);\n  var _super = _createSuper(DateParser);\n  function DateParser() {\n    var _this;\n    _classCallCheck(this, DateParser);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _super.call.apply(_super, [this].concat(args));\n    _defineProperty(_assertThisInitialized(_this), \"priority\", 90);\n    _defineProperty(_assertThisInitialized(_this), \"subPriority\", 1);\n    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'q', 'Q', 'w', 'I', 'D', 'i', 'e', 'c', 't', 'T']);\n    return _this;\n  }\n  _createClass(DateParser, [{\n    key: \"parse\",\n    value: function parse(dateString, token, match) {\n      switch (token) {\n        case 'd':\n          return parseNumericPattern(numericPatterns.date, dateString);\n        case 'do':\n          return match.ordinalNumber(dateString, {\n            unit: 'date'\n          });\n        default:\n          return parseNDigits(token.length, dateString);\n      }\n    }\n  }, {\n    key: \"validate\",\n    value: function validate(date, value) {\n      var year = date.getUTCFullYear();\n      var isLeapYear = isLeapYearIndex(year);\n      var month = date.getUTCMonth();\n      if (isLeapYear) {\n        return value >= 1 && value <= DAYS_IN_MONTH_LEAP_YEAR[month];\n      } else {\n        return value >= 1 && value <= DAYS_IN_MONTH[month];\n      }\n    }\n  }, {\n    key: \"set\",\n    value: function set(date, _flags, value) {\n      date.setUTCDate(value);\n      date.setUTCHours(0, 0, 0, 0);\n      return date;\n    }\n  }]);\n  return DateParser;\n}(Parser);", "import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits, isLeapYearIndex } from \"../utils.js\";\nexport var DayOfYearParser = /*#__PURE__*/function (_Parser) {\n  _inherits(DayOfYearParser, _Parser);\n  var _super = _createSuper(DayOfYearParser);\n  function DayOfYearParser() {\n    var _this;\n    _classCallCheck(this, DayOfYearParser);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _super.call.apply(_super, [this].concat(args));\n    _defineProperty(_assertThisInitialized(_this), \"priority\", 90);\n    _defineProperty(_assertThisInitialized(_this), \"subpriority\", 1);\n    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'q', 'Q', 'M', 'L', 'w', 'I', 'd', 'E', 'i', 'e', 'c', 't', 'T']);\n    return _this;\n  }\n  _createClass(DayOfYearParser, [{\n    key: \"parse\",\n    value: function parse(dateString, token, match) {\n      switch (token) {\n        case 'D':\n        case 'DD':\n          return parseNumericPattern(numericPatterns.dayOfYear, dateString);\n        case 'Do':\n          return match.ordinalNumber(dateString, {\n            unit: 'date'\n          });\n        default:\n          return parseNDigits(token.length, dateString);\n      }\n    }\n  }, {\n    key: \"validate\",\n    value: function validate(date, value) {\n      var year = date.getUTCFullYear();\n      var isLeapYear = isLeapYearIndex(year);\n      if (isLeapYear) {\n        return value >= 1 && value <= 366;\n      } else {\n        return value >= 1 && value <= 365;\n      }\n    }\n  }, {\n    key: \"set\",\n    value: function set(date, _flags, value) {\n      date.setUTCMonth(0, value);\n      date.setUTCHours(0, 0, 0, 0);\n      return date;\n    }\n  }]);\n  return DayOfYearParser;\n}(Parser);", "import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function setUTCDay(dirtyDate, dirtyDay, options) {\n  var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n  requiredArgs(2, arguments);\n  var defaultOptions = getDefaultOptions();\n  var weekStartsOn = toInteger((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0);\n\n  // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n  if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n    throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n  }\n  var date = toDate(dirtyDate);\n  var day = toInteger(dirtyDay);\n  var currentDay = date.getUTCDay();\n  var remainder = day % 7;\n  var dayIndex = (remainder + 7) % 7;\n  var diff = (dayIndex < weekStartsOn ? 7 : 0) + day - currentDay;\n  date.setUTCDate(date.getUTCDate() + diff);\n  return date;\n}", "import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport setUTCDay from \"../../../_lib/setUTCDay/index.js\"; // Day of week\nexport var DayParser = /*#__PURE__*/function (_Parser) {\n  _inherits(DayParser, _Parser);\n  var _super = _createSuper(DayParser);\n  function DayParser() {\n    var _this;\n    _classCallCheck(this, DayParser);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _super.call.apply(_super, [this].concat(args));\n    _defineProperty(_assertThisInitialized(_this), \"priority\", 90);\n    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['D', 'i', 'e', 'c', 't', 'T']);\n    return _this;\n  }\n  _createClass(DayParser, [{\n    key: \"parse\",\n    value: function parse(dateString, token, match) {\n      switch (token) {\n        // Tue\n        case 'E':\n        case 'EE':\n        case 'EEE':\n          return match.day(dateString, {\n            width: 'abbreviated',\n            context: 'formatting'\n          }) || match.day(dateString, {\n            width: 'short',\n            context: 'formatting'\n          }) || match.day(dateString, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n        // T\n        case 'EEEEE':\n          return match.day(dateString, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n        // Tu\n        case 'EEEEEE':\n          return match.day(dateString, {\n            width: 'short',\n            context: 'formatting'\n          }) || match.day(dateString, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n        // Tuesday\n        case 'EEEE':\n        default:\n          return match.day(dateString, {\n            width: 'wide',\n            context: 'formatting'\n          }) || match.day(dateString, {\n            width: 'abbreviated',\n            context: 'formatting'\n          }) || match.day(dateString, {\n            width: 'short',\n            context: 'formatting'\n          }) || match.day(dateString, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n      }\n    }\n  }, {\n    key: \"validate\",\n    value: function validate(_date, value) {\n      return value >= 0 && value <= 6;\n    }\n  }, {\n    key: \"set\",\n    value: function set(date, _flags, value, options) {\n      date = setUTCDay(date, value, options);\n      date.setUTCHours(0, 0, 0, 0);\n      return date;\n    }\n  }]);\n  return DayParser;\n}(Parser);", "import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { mapValue, parseNDigits } from \"../utils.js\";\nimport setUTCDay from \"../../../_lib/setUTCDay/index.js\"; // Local day of week\nexport var LocalDayParser = /*#__PURE__*/function (_Parser) {\n  _inherits(LocalDayParser, _Parser);\n  var _super = _createSuper(LocalDayParser);\n  function LocalDayParser() {\n    var _this;\n    _classCallCheck(this, LocalDayParser);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _super.call.apply(_super, [this].concat(args));\n    _defineProperty(_assertThisInitialized(_this), \"priority\", 90);\n    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['y', 'R', 'u', 'q', 'Q', 'M', 'L', 'I', 'd', 'D', 'E', 'i', 'c', 't', 'T']);\n    return _this;\n  }\n  _createClass(LocalDayParser, [{\n    key: \"parse\",\n    value: function parse(dateString, token, match, options) {\n      var valueCallback = function valueCallback(value) {\n        var wholeWeekDays = Math.floor((value - 1) / 7) * 7;\n        return (value + options.weekStartsOn + 6) % 7 + wholeWeekDays;\n      };\n      switch (token) {\n        // 3\n        case 'e':\n        case 'ee':\n          // 03\n          return mapValue(parseNDigits(token.length, dateString), valueCallback);\n        // 3rd\n        case 'eo':\n          return mapValue(match.ordinalNumber(dateString, {\n            unit: 'day'\n          }), valueCallback);\n        // Tue\n        case 'eee':\n          return match.day(dateString, {\n            width: 'abbreviated',\n            context: 'formatting'\n          }) || match.day(dateString, {\n            width: 'short',\n            context: 'formatting'\n          }) || match.day(dateString, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n        // T\n        case 'eeeee':\n          return match.day(dateString, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n        // Tu\n        case 'eeeeee':\n          return match.day(dateString, {\n            width: 'short',\n            context: 'formatting'\n          }) || match.day(dateString, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n        // Tuesday\n        case 'eeee':\n        default:\n          return match.day(dateString, {\n            width: 'wide',\n            context: 'formatting'\n          }) || match.day(dateString, {\n            width: 'abbreviated',\n            context: 'formatting'\n          }) || match.day(dateString, {\n            width: 'short',\n            context: 'formatting'\n          }) || match.day(dateString, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n      }\n    }\n  }, {\n    key: \"validate\",\n    value: function validate(_date, value) {\n      return value >= 0 && value <= 6;\n    }\n  }, {\n    key: \"set\",\n    value: function set(date, _flags, value, options) {\n      date = setUTCDay(date, value, options);\n      date.setUTCHours(0, 0, 0, 0);\n      return date;\n    }\n  }]);\n  return LocalDayParser;\n}(Parser);", "import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { mapValue, parseNDigits } from \"../utils.js\";\nimport setUTCDay from \"../../../_lib/setUTCDay/index.js\"; // Stand-alone local day of week\nexport var StandAloneLocalDayParser = /*#__PURE__*/function (_Parser) {\n  _inherits(StandAloneLocalDayParser, _Parser);\n  var _super = _createSuper(StandAloneLocalDayParser);\n  function StandAloneLocalDayParser() {\n    var _this;\n    _classCallCheck(this, StandAloneLocalDayParser);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _super.call.apply(_super, [this].concat(args));\n    _defineProperty(_assertThisInitialized(_this), \"priority\", 90);\n    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['y', 'R', 'u', 'q', 'Q', 'M', 'L', 'I', 'd', 'D', 'E', 'i', 'e', 't', 'T']);\n    return _this;\n  }\n  _createClass(StandAloneLocalDayParser, [{\n    key: \"parse\",\n    value: function parse(dateString, token, match, options) {\n      var valueCallback = function valueCallback(value) {\n        var wholeWeekDays = Math.floor((value - 1) / 7) * 7;\n        return (value + options.weekStartsOn + 6) % 7 + wholeWeekDays;\n      };\n      switch (token) {\n        // 3\n        case 'c':\n        case 'cc':\n          // 03\n          return mapValue(parseNDigits(token.length, dateString), valueCallback);\n        // 3rd\n        case 'co':\n          return mapValue(match.ordinalNumber(dateString, {\n            unit: 'day'\n          }), valueCallback);\n        // Tue\n        case 'ccc':\n          return match.day(dateString, {\n            width: 'abbreviated',\n            context: 'standalone'\n          }) || match.day(dateString, {\n            width: 'short',\n            context: 'standalone'\n          }) || match.day(dateString, {\n            width: 'narrow',\n            context: 'standalone'\n          });\n        // T\n        case 'ccccc':\n          return match.day(dateString, {\n            width: 'narrow',\n            context: 'standalone'\n          });\n        // Tu\n        case 'cccccc':\n          return match.day(dateString, {\n            width: 'short',\n            context: 'standalone'\n          }) || match.day(dateString, {\n            width: 'narrow',\n            context: 'standalone'\n          });\n        // Tuesday\n        case 'cccc':\n        default:\n          return match.day(dateString, {\n            width: 'wide',\n            context: 'standalone'\n          }) || match.day(dateString, {\n            width: 'abbreviated',\n            context: 'standalone'\n          }) || match.day(dateString, {\n            width: 'short',\n            context: 'standalone'\n          }) || match.day(dateString, {\n            width: 'narrow',\n            context: 'standalone'\n          });\n      }\n    }\n  }, {\n    key: \"validate\",\n    value: function validate(_date, value) {\n      return value >= 0 && value <= 6;\n    }\n  }, {\n    key: \"set\",\n    value: function set(date, _flags, value, options) {\n      date = setUTCDay(date, value, options);\n      date.setUTCHours(0, 0, 0, 0);\n      return date;\n    }\n  }]);\n  return StandAloneLocalDayParser;\n}(Parser);", "import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nexport default function setUTCISODay(dirtyDate, dirtyDay) {\n  requiredArgs(2, arguments);\n  var day = toInteger(dirtyDay);\n  if (day % 7 === 0) {\n    day = day - 7;\n  }\n  var weekStartsOn = 1;\n  var date = toDate(dirtyDate);\n  var currentDay = date.getUTCDay();\n  var remainder = day % 7;\n  var dayIndex = (remainder + 7) % 7;\n  var diff = (dayIndex < weekStartsOn ? 7 : 0) + day - currentDay;\n  date.setUTCDate(date.getUTCDate() + diff);\n  return date;\n}", "import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { mapValue, parseNDigits } from \"../utils.js\";\nimport setUTCISODay from \"../../../_lib/setUTCISODay/index.js\"; // ISO day of week\nexport var ISODayParser = /*#__PURE__*/function (_Parser) {\n  _inherits(ISODayParser, _Parser);\n  var _super = _createSuper(ISODayParser);\n  function ISODayParser() {\n    var _this;\n    _classCallCheck(this, ISODayParser);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _super.call.apply(_super, [this].concat(args));\n    _defineProperty(_assertThisInitialized(_this), \"priority\", 90);\n    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['y', 'Y', 'u', 'q', 'Q', 'M', 'L', 'w', 'd', 'D', 'E', 'e', 'c', 't', 'T']);\n    return _this;\n  }\n  _createClass(ISODayParser, [{\n    key: \"parse\",\n    value: function parse(dateString, token, match) {\n      var valueCallback = function valueCallback(value) {\n        if (value === 0) {\n          return 7;\n        }\n        return value;\n      };\n      switch (token) {\n        // 2\n        case 'i':\n        case 'ii':\n          // 02\n          return parseNDigits(token.length, dateString);\n        // 2nd\n        case 'io':\n          return match.ordinalNumber(dateString, {\n            unit: 'day'\n          });\n        // Tue\n        case 'iii':\n          return mapValue(match.day(dateString, {\n            width: 'abbreviated',\n            context: 'formatting'\n          }) || match.day(dateString, {\n            width: 'short',\n            context: 'formatting'\n          }) || match.day(dateString, {\n            width: 'narrow',\n            context: 'formatting'\n          }), valueCallback);\n        // T\n        case 'iiiii':\n          return mapValue(match.day(dateString, {\n            width: 'narrow',\n            context: 'formatting'\n          }), valueCallback);\n        // Tu\n        case 'iiiiii':\n          return mapValue(match.day(dateString, {\n            width: 'short',\n            context: 'formatting'\n          }) || match.day(dateString, {\n            width: 'narrow',\n            context: 'formatting'\n          }), valueCallback);\n        // Tuesday\n        case 'iiii':\n        default:\n          return mapValue(match.day(dateString, {\n            width: 'wide',\n            context: 'formatting'\n          }) || match.day(dateString, {\n            width: 'abbreviated',\n            context: 'formatting'\n          }) || match.day(dateString, {\n            width: 'short',\n            context: 'formatting'\n          }) || match.day(dateString, {\n            width: 'narrow',\n            context: 'formatting'\n          }), valueCallback);\n      }\n    }\n  }, {\n    key: \"validate\",\n    value: function validate(_date, value) {\n      return value >= 1 && value <= 7;\n    }\n  }, {\n    key: \"set\",\n    value: function set(date, _flags, value) {\n      date = setUTCISODay(date, value);\n      date.setUTCHours(0, 0, 0, 0);\n      return date;\n    }\n  }]);\n  return ISODayParser;\n}(Parser);", "import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { dayPeriodEnumToHours } from \"../utils.js\";\nexport var AMPMParser = /*#__PURE__*/function (_Parser) {\n  _inherits(AMPMParser, _Parser);\n  var _super = _createSuper(AMPMParser);\n  function AMPMParser() {\n    var _this;\n    _classCallCheck(this, AMPMParser);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _super.call.apply(_super, [this].concat(args));\n    _defineProperty(_assertThisInitialized(_this), \"priority\", 80);\n    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['b', 'B', 'H', 'k', 't', 'T']);\n    return _this;\n  }\n  _createClass(AMPMParser, [{\n    key: \"parse\",\n    value: function parse(dateString, token, match) {\n      switch (token) {\n        case 'a':\n        case 'aa':\n        case 'aaa':\n          return match.dayPeriod(dateString, {\n            width: 'abbreviated',\n            context: 'formatting'\n          }) || match.dayPeriod(dateString, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n        case 'aaaaa':\n          return match.dayPeriod(dateString, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n        case 'aaaa':\n        default:\n          return match.dayPeriod(dateString, {\n            width: 'wide',\n            context: 'formatting'\n          }) || match.dayPeriod(dateString, {\n            width: 'abbreviated',\n            context: 'formatting'\n          }) || match.dayPeriod(dateString, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n      }\n    }\n  }, {\n    key: \"set\",\n    value: function set(date, _flags, value) {\n      date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n      return date;\n    }\n  }]);\n  return AMPMParser;\n}(Parser);", "import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { dayPeriodEnumToHours } from \"../utils.js\";\nexport var AMPMMidnightParser = /*#__PURE__*/function (_Parser) {\n  _inherits(AMPMMidnightParser, _Parser);\n  var _super = _createSuper(AMPMMidnightParser);\n  function AMPMMidnightParser() {\n    var _this;\n    _classCallCheck(this, AMPMMidnightParser);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _super.call.apply(_super, [this].concat(args));\n    _defineProperty(_assertThisInitialized(_this), \"priority\", 80);\n    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['a', 'B', 'H', 'k', 't', 'T']);\n    return _this;\n  }\n  _createClass(AMPMMidnightParser, [{\n    key: \"parse\",\n    value: function parse(dateString, token, match) {\n      switch (token) {\n        case 'b':\n        case 'bb':\n        case 'bbb':\n          return match.dayPeriod(dateString, {\n            width: 'abbreviated',\n            context: 'formatting'\n          }) || match.dayPeriod(dateString, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n        case 'bbbbb':\n          return match.dayPeriod(dateString, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n        case 'bbbb':\n        default:\n          return match.dayPeriod(dateString, {\n            width: 'wide',\n            context: 'formatting'\n          }) || match.dayPeriod(dateString, {\n            width: 'abbreviated',\n            context: 'formatting'\n          }) || match.dayPeriod(dateString, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n      }\n    }\n  }, {\n    key: \"set\",\n    value: function set(date, _flags, value) {\n      date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n      return date;\n    }\n  }]);\n  return AMPMMidnightParser;\n}(Parser);", "import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { dayPeriodEnumToHours } from \"../utils.js\"; // in the morning, in the afternoon, in the evening, at night\nexport var DayPeriodParser = /*#__PURE__*/function (_Parser) {\n  _inherits(DayPeriodParser, _Parser);\n  var _super = _createSuper(DayPeriodParser);\n  function DayPeriodParser() {\n    var _this;\n    _classCallCheck(this, DayPeriodParser);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _super.call.apply(_super, [this].concat(args));\n    _defineProperty(_assertThisInitialized(_this), \"priority\", 80);\n    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['a', 'b', 't', 'T']);\n    return _this;\n  }\n  _createClass(DayPeriodParser, [{\n    key: \"parse\",\n    value: function parse(dateString, token, match) {\n      switch (token) {\n        case 'B':\n        case 'BB':\n        case 'BBB':\n          return match.dayPeriod(dateString, {\n            width: 'abbreviated',\n            context: 'formatting'\n          }) || match.dayPeriod(dateString, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n        case 'BBBBB':\n          return match.dayPeriod(dateString, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n        case 'BBBB':\n        default:\n          return match.dayPeriod(dateString, {\n            width: 'wide',\n            context: 'formatting'\n          }) || match.dayPeriod(dateString, {\n            width: 'abbreviated',\n            context: 'formatting'\n          }) || match.dayPeriod(dateString, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n      }\n    }\n  }, {\n    key: \"set\",\n    value: function set(date, _flags, value) {\n      date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n      return date;\n    }\n  }]);\n  return DayPeriodParser;\n}(Parser);", "import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nexport var Hour1to12Parser = /*#__PURE__*/function (_Parser) {\n  _inherits(Hour1to12Parser, _Parser);\n  var _super = _createSuper(Hour1to12Parser);\n  function Hour1to12Parser() {\n    var _this;\n    _classCallCheck(this, Hour1to12Parser);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _super.call.apply(_super, [this].concat(args));\n    _defineProperty(_assertThisInitialized(_this), \"priority\", 70);\n    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['H', 'K', 'k', 't', 'T']);\n    return _this;\n  }\n  _createClass(Hour1to12Parser, [{\n    key: \"parse\",\n    value: function parse(dateString, token, match) {\n      switch (token) {\n        case 'h':\n          return parseNumericPattern(numericPatterns.hour12h, dateString);\n        case 'ho':\n          return match.ordinalNumber(dateString, {\n            unit: 'hour'\n          });\n        default:\n          return parseNDigits(token.length, dateString);\n      }\n    }\n  }, {\n    key: \"validate\",\n    value: function validate(_date, value) {\n      return value >= 1 && value <= 12;\n    }\n  }, {\n    key: \"set\",\n    value: function set(date, _flags, value) {\n      var isPM = date.getUTCHours() >= 12;\n      if (isPM && value < 12) {\n        date.setUTCHours(value + 12, 0, 0, 0);\n      } else if (!isPM && value === 12) {\n        date.setUTCHours(0, 0, 0, 0);\n      } else {\n        date.setUTCHours(value, 0, 0, 0);\n      }\n      return date;\n    }\n  }]);\n  return Hour1to12Parser;\n}(Parser);", "import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nexport var Hour0to23Parser = /*#__PURE__*/function (_Parser) {\n  _inherits(Hour0to23Parser, _Parser);\n  var _super = _createSuper(Hour0to23Parser);\n  function Hour0to23Parser() {\n    var _this;\n    _classCallCheck(this, Hour0to23Parser);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _super.call.apply(_super, [this].concat(args));\n    _defineProperty(_assertThisInitialized(_this), \"priority\", 70);\n    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['a', 'b', 'h', 'K', 'k', 't', 'T']);\n    return _this;\n  }\n  _createClass(Hour0to23Parser, [{\n    key: \"parse\",\n    value: function parse(dateString, token, match) {\n      switch (token) {\n        case 'H':\n          return parseNumericPattern(numericPatterns.hour23h, dateString);\n        case 'Ho':\n          return match.ordinalNumber(dateString, {\n            unit: 'hour'\n          });\n        default:\n          return parseNDigits(token.length, dateString);\n      }\n    }\n  }, {\n    key: \"validate\",\n    value: function validate(_date, value) {\n      return value >= 0 && value <= 23;\n    }\n  }, {\n    key: \"set\",\n    value: function set(date, _flags, value) {\n      date.setUTCHours(value, 0, 0, 0);\n      return date;\n    }\n  }]);\n  return Hour0to23Parser;\n}(Parser);", "import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nexport var Hour0To11Parser = /*#__PURE__*/function (_Parser) {\n  _inherits(Hour0To11Parser, _Parser);\n  var _super = _createSuper(Hour0To11Parser);\n  function Hour0To11Parser() {\n    var _this;\n    _classCallCheck(this, Hour0To11Parser);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _super.call.apply(_super, [this].concat(args));\n    _defineProperty(_assertThisInitialized(_this), \"priority\", 70);\n    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['h', 'H', 'k', 't', 'T']);\n    return _this;\n  }\n  _createClass(Hour0To11Parser, [{\n    key: \"parse\",\n    value: function parse(dateString, token, match) {\n      switch (token) {\n        case 'K':\n          return parseNumericPattern(numericPatterns.hour11h, dateString);\n        case 'Ko':\n          return match.ordinalNumber(dateString, {\n            unit: 'hour'\n          });\n        default:\n          return parseNDigits(token.length, dateString);\n      }\n    }\n  }, {\n    key: \"validate\",\n    value: function validate(_date, value) {\n      return value >= 0 && value <= 11;\n    }\n  }, {\n    key: \"set\",\n    value: function set(date, _flags, value) {\n      var isPM = date.getUTCHours() >= 12;\n      if (isPM && value < 12) {\n        date.setUTCHours(value + 12, 0, 0, 0);\n      } else {\n        date.setUTCHours(value, 0, 0, 0);\n      }\n      return date;\n    }\n  }]);\n  return Hour0To11Parser;\n}(Parser);", "import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nexport var Hour1To24Parser = /*#__PURE__*/function (_Parser) {\n  _inherits(Hour1To24Parser, _Parser);\n  var _super = _createSuper(Hour1To24Parser);\n  function Hour1To24Parser() {\n    var _this;\n    _classCallCheck(this, Hour1To24Parser);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _super.call.apply(_super, [this].concat(args));\n    _defineProperty(_assertThisInitialized(_this), \"priority\", 70);\n    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['a', 'b', 'h', 'H', 'K', 't', 'T']);\n    return _this;\n  }\n  _createClass(Hour1To24Parser, [{\n    key: \"parse\",\n    value: function parse(dateString, token, match) {\n      switch (token) {\n        case 'k':\n          return parseNumericPattern(numericPatterns.hour24h, dateString);\n        case 'ko':\n          return match.ordinalNumber(dateString, {\n            unit: 'hour'\n          });\n        default:\n          return parseNDigits(token.length, dateString);\n      }\n    }\n  }, {\n    key: \"validate\",\n    value: function validate(_date, value) {\n      return value >= 1 && value <= 24;\n    }\n  }, {\n    key: \"set\",\n    value: function set(date, _flags, value) {\n      var hours = value <= 24 ? value % 24 : value;\n      date.setUTCHours(hours, 0, 0, 0);\n      return date;\n    }\n  }]);\n  return Hour1To24Parser;\n}(Parser);", "import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nexport var MinuteParser = /*#__PURE__*/function (_Parser) {\n  _inherits(MinuteParser, _Parser);\n  var _super = _createSuper(MinuteParser);\n  function MinuteParser() {\n    var _this;\n    _classCallCheck(this, MinuteParser);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _super.call.apply(_super, [this].concat(args));\n    _defineProperty(_assertThisInitialized(_this), \"priority\", 60);\n    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['t', 'T']);\n    return _this;\n  }\n  _createClass(MinuteParser, [{\n    key: \"parse\",\n    value: function parse(dateString, token, match) {\n      switch (token) {\n        case 'm':\n          return parseNumericPattern(numericPatterns.minute, dateString);\n        case 'mo':\n          return match.ordinalNumber(dateString, {\n            unit: 'minute'\n          });\n        default:\n          return parseNDigits(token.length, dateString);\n      }\n    }\n  }, {\n    key: \"validate\",\n    value: function validate(_date, value) {\n      return value >= 0 && value <= 59;\n    }\n  }, {\n    key: \"set\",\n    value: function set(date, _flags, value) {\n      date.setUTCMinutes(value, 0, 0);\n      return date;\n    }\n  }]);\n  return MinuteParser;\n}(Parser);", "import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nexport var SecondParser = /*#__PURE__*/function (_Parser) {\n  _inherits(SecondParser, _Parser);\n  var _super = _createSuper(SecondParser);\n  function SecondParser() {\n    var _this;\n    _classCallCheck(this, SecondParser);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _super.call.apply(_super, [this].concat(args));\n    _defineProperty(_assertThisInitialized(_this), \"priority\", 50);\n    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['t', 'T']);\n    return _this;\n  }\n  _createClass(SecondParser, [{\n    key: \"parse\",\n    value: function parse(dateString, token, match) {\n      switch (token) {\n        case 's':\n          return parseNumericPattern(numericPatterns.second, dateString);\n        case 'so':\n          return match.ordinalNumber(dateString, {\n            unit: 'second'\n          });\n        default:\n          return parseNDigits(token.length, dateString);\n      }\n    }\n  }, {\n    key: \"validate\",\n    value: function validate(_date, value) {\n      return value >= 0 && value <= 59;\n    }\n  }, {\n    key: \"set\",\n    value: function set(date, _flags, value) {\n      date.setUTCSeconds(value, 0);\n      return date;\n    }\n  }]);\n  return SecondParser;\n}(Parser);", "import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { mapValue, parseNDigits } from \"../utils.js\";\nexport var FractionOfSecondParser = /*#__PURE__*/function (_Parser) {\n  _inherits(FractionOfSecondParser, _Parser);\n  var _super = _createSuper(FractionOfSecondParser);\n  function FractionOfSecondParser() {\n    var _this;\n    _classCallCheck(this, FractionOfSecondParser);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _super.call.apply(_super, [this].concat(args));\n    _defineProperty(_assertThisInitialized(_this), \"priority\", 30);\n    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['t', 'T']);\n    return _this;\n  }\n  _createClass(FractionOfSecondParser, [{\n    key: \"parse\",\n    value: function parse(dateString, token) {\n      var valueCallback = function valueCallback(value) {\n        return Math.floor(value * Math.pow(10, -token.length + 3));\n      };\n      return mapValue(parseNDigits(token.length, dateString), valueCallback);\n    }\n  }, {\n    key: \"set\",\n    value: function set(date, _flags, value) {\n      date.setUTCMilliseconds(value);\n      return date;\n    }\n  }]);\n  return FractionOfSecondParser;\n}(Parser);", "import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { timezonePatterns } from \"../constants.js\";\nimport { parseTimezonePattern } from \"../utils.js\"; // Timezone (ISO-8601. +00:00 is `'Z'`)\nexport var ISOTimezoneWithZParser = /*#__PURE__*/function (_Parser) {\n  _inherits(ISOTimezoneWithZParser, _Parser);\n  var _super = _createSuper(ISOTimezoneWithZParser);\n  function ISOTimezoneWithZParser() {\n    var _this;\n    _classCallCheck(this, ISOTimezoneWithZParser);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _super.call.apply(_super, [this].concat(args));\n    _defineProperty(_assertThisInitialized(_this), \"priority\", 10);\n    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['t', 'T', 'x']);\n    return _this;\n  }\n  _createClass(ISOTimezoneWithZParser, [{\n    key: \"parse\",\n    value: function parse(dateString, token) {\n      switch (token) {\n        case 'X':\n          return parseTimezonePattern(timezonePatterns.basicOptionalMinutes, dateString);\n        case 'XX':\n          return parseTimezonePattern(timezonePatterns.basic, dateString);\n        case 'XXXX':\n          return parseTimezonePattern(timezonePatterns.basicOptionalSeconds, dateString);\n        case 'XXXXX':\n          return parseTimezonePattern(timezonePatterns.extendedOptionalSeconds, dateString);\n        case 'XXX':\n        default:\n          return parseTimezonePattern(timezonePatterns.extended, dateString);\n      }\n    }\n  }, {\n    key: \"set\",\n    value: function set(date, flags, value) {\n      if (flags.timestampIsSet) {\n        return date;\n      }\n      return new Date(date.getTime() - value);\n    }\n  }]);\n  return ISOTimezoneWithZParser;\n}(Parser);", "import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { timezonePatterns } from \"../constants.js\";\nimport { parseTimezonePattern } from \"../utils.js\"; // Timezone (ISO-8601)\nexport var ISOTimezoneParser = /*#__PURE__*/function (_Parser) {\n  _inherits(ISOTimezoneParser, _Parser);\n  var _super = _createSuper(ISOTimezoneParser);\n  function ISOTimezoneParser() {\n    var _this;\n    _classCallCheck(this, ISOTimezoneParser);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _super.call.apply(_super, [this].concat(args));\n    _defineProperty(_assertThisInitialized(_this), \"priority\", 10);\n    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['t', 'T', 'X']);\n    return _this;\n  }\n  _createClass(ISOTimezoneParser, [{\n    key: \"parse\",\n    value: function parse(dateString, token) {\n      switch (token) {\n        case 'x':\n          return parseTimezonePattern(timezonePatterns.basicOptionalMinutes, dateString);\n        case 'xx':\n          return parseTimezonePattern(timezonePatterns.basic, dateString);\n        case 'xxxx':\n          return parseTimezonePattern(timezonePatterns.basicOptionalSeconds, dateString);\n        case 'xxxxx':\n          return parseTimezonePattern(timezonePatterns.extendedOptionalSeconds, dateString);\n        case 'xxx':\n        default:\n          return parseTimezonePattern(timezonePatterns.extended, dateString);\n      }\n    }\n  }, {\n    key: \"set\",\n    value: function set(date, flags, value) {\n      if (flags.timestampIsSet) {\n        return date;\n      }\n      return new Date(date.getTime() - value);\n    }\n  }]);\n  return ISOTimezoneParser;\n}(Parser);", "import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { parseAnyDigitsSigned } from \"../utils.js\";\nexport var TimestampSecondsParser = /*#__PURE__*/function (_Parser) {\n  _inherits(TimestampSecondsParser, _Parser);\n  var _super = _createSuper(TimestampSecondsParser);\n  function TimestampSecondsParser() {\n    var _this;\n    _classCallCheck(this, TimestampSecondsParser);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _super.call.apply(_super, [this].concat(args));\n    _defineProperty(_assertThisInitialized(_this), \"priority\", 40);\n    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", '*');\n    return _this;\n  }\n  _createClass(TimestampSecondsParser, [{\n    key: \"parse\",\n    value: function parse(dateString) {\n      return parseAnyDigitsSigned(dateString);\n    }\n  }, {\n    key: \"set\",\n    value: function set(_date, _flags, value) {\n      return [new Date(value * 1000), {\n        timestampIsSet: true\n      }];\n    }\n  }]);\n  return TimestampSecondsParser;\n}(Parser);", "import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { parseAnyDigitsSigned } from \"../utils.js\";\nexport var TimestampMillisecondsParser = /*#__PURE__*/function (_Parser) {\n  _inherits(TimestampMillisecondsParser, _Parser);\n  var _super = _createSuper(TimestampMillisecondsParser);\n  function TimestampMillisecondsParser() {\n    var _this;\n    _classCallCheck(this, TimestampMillisecondsParser);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _super.call.apply(_super, [this].concat(args));\n    _defineProperty(_assertThisInitialized(_this), \"priority\", 20);\n    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", '*');\n    return _this;\n  }\n  _createClass(TimestampMillisecondsParser, [{\n    key: \"parse\",\n    value: function parse(dateString) {\n      return parseAnyDigitsSigned(dateString);\n    }\n  }, {\n    key: \"set\",\n    value: function set(_date, _flags, value) {\n      return [new Date(value), {\n        timestampIsSet: true\n      }];\n    }\n  }]);\n  return TimestampMillisecondsParser;\n}(Parser);", "import { EraParser } from \"./EraParser.js\";\nimport { YearParser } from \"./YearParser.js\";\nimport { LocalWeekYearParser } from \"./LocalWeekYearParser.js\";\nimport { ISOWeekYearParser } from \"./ISOWeekYearParser.js\";\nimport { ExtendedYearParser } from \"./ExtendedYearParser.js\";\nimport { QuarterParser } from \"./QuarterParser.js\";\nimport { StandAloneQuarterParser } from \"./StandAloneQuarterParser.js\";\nimport { MonthParser } from \"./MonthParser.js\";\nimport { StandAloneMonthParser } from \"./StandAloneMonthParser.js\";\nimport { LocalWeekParser } from \"./LocalWeekParser.js\";\nimport { ISOWeekParser } from \"./ISOWeekParser.js\";\nimport { DateParser } from \"./DateParser.js\";\nimport { DayOfYearParser } from \"./DayOfYearParser.js\";\nimport { DayParser } from \"./DayParser.js\";\nimport { LocalDayParser } from \"./LocalDayParser.js\";\nimport { StandAloneLocalDayParser } from \"./StandAloneLocalDayParser.js\";\nimport { ISODayParser } from \"./ISODayParser.js\";\nimport { AMPMParser } from \"./AMPMParser.js\";\nimport { AMPMMidnightParser } from \"./AMPMMidnightParser.js\";\nimport { DayPeriodParser } from \"./DayPeriodParser.js\";\nimport { Hour1to12Parser } from \"./Hour1to12Parser.js\";\nimport { Hour0to23Parser } from \"./Hour0to23Parser.js\";\nimport { Hour0To11Parser } from \"./Hour0To11Parser.js\";\nimport { Hour1To24Parser } from \"./Hour1To24Parser.js\";\nimport { MinuteParser } from \"./MinuteParser.js\";\nimport { SecondParser } from \"./SecondParser.js\";\nimport { FractionOfSecondParser } from \"./FractionOfSecondParser.js\";\nimport { ISOTimezoneWithZParser } from \"./ISOTimezoneWithZParser.js\";\nimport { ISOTimezoneParser } from \"./ISOTimezoneParser.js\";\nimport { TimestampSecondsParser } from \"./TimestampSecondsParser.js\";\nimport { TimestampMillisecondsParser } from \"./TimestampMillisecondsParser.js\";\n/*\n * |     | Unit                           |     | Unit                           |\n * |-----|--------------------------------|-----|--------------------------------|\n * |  a  | AM, PM                         |  A* | Milliseconds in day            |\n * |  b  | AM, PM, noon, midnight         |  B  | Flexible day period            |\n * |  c  | Stand-alone local day of week  |  C* | Localized hour w/ day period   |\n * |  d  | Day of month                   |  D  | Day of year                    |\n * |  e  | Local day of week              |  E  | Day of week                    |\n * |  f  |                                |  F* | Day of week in month           |\n * |  g* | Modified Julian day            |  G  | Era                            |\n * |  h  | Hour [1-12]                    |  H  | Hour [0-23]                    |\n * |  i! | ISO day of week                |  I! | ISO week of year               |\n * |  j* | Localized hour w/ day period   |  J* | Localized hour w/o day period  |\n * |  k  | Hour [1-24]                    |  K  | Hour [0-11]                    |\n * |  l* | (deprecated)                   |  L  | Stand-alone month              |\n * |  m  | Minute                         |  M  | Month                          |\n * |  n  |                                |  N  |                                |\n * |  o! | Ordinal number modifier        |  O* | Timezone (GMT)                 |\n * |  p  |                                |  P  |                                |\n * |  q  | Stand-alone quarter            |  Q  | Quarter                        |\n * |  r* | Related Gregorian year         |  R! | ISO week-numbering year        |\n * |  s  | Second                         |  S  | Fraction of second             |\n * |  t! | Seconds timestamp              |  T! | Milliseconds timestamp         |\n * |  u  | Extended year                  |  U* | Cyclic year                    |\n * |  v* | Timezone (generic non-locat.)  |  V* | Timezone (location)            |\n * |  w  | Local week of year             |  W* | Week of month                  |\n * |  x  | Timezone (ISO-8601 w/o Z)      |  X  | Timezone (ISO-8601)            |\n * |  y  | Year (abs)                     |  Y  | Local week-numbering year      |\n * |  z* | Timezone (specific non-locat.) |  Z* | Timezone (aliases)             |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `parse` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n *   i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n *   `R` is supposed to be used in conjunction with `I` and `i`\n *   for universal ISO week-numbering date, whereas\n *   `Y` is supposed to be used in conjunction with `w` and `e`\n *   for week-numbering date specific to the locale.\n */\nexport var parsers = {\n  G: new EraParser(),\n  y: new YearParser(),\n  Y: new LocalWeekYearParser(),\n  R: new ISOWeekYearParser(),\n  u: new ExtendedYearParser(),\n  Q: new QuarterParser(),\n  q: new StandAloneQuarterParser(),\n  M: new MonthParser(),\n  L: new StandAloneMonthParser(),\n  w: new LocalWeekParser(),\n  I: new ISOWeekParser(),\n  d: new DateParser(),\n  D: new DayOfYearParser(),\n  E: new DayParser(),\n  e: new LocalDayParser(),\n  c: new StandAloneLocalDayParser(),\n  i: new ISODayParser(),\n  a: new AMPMParser(),\n  b: new AMPMMidnightParser(),\n  B: new DayPeriodParser(),\n  h: new Hour1to12Parser(),\n  H: new Hour0to23Parser(),\n  K: new Hour0To11Parser(),\n  k: new Hour1To24Parser(),\n  m: new MinuteParser(),\n  s: new SecondParser(),\n  S: new FractionOfSecondParser(),\n  X: new ISOTimezoneWithZParser(),\n  x: new ISOTimezoneParser(),\n  t: new TimestampSecondsParser(),\n  T: new TimestampMillisecondsParser()\n};", "import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _createForOfIteratorHelper from \"@babel/runtime/helpers/esm/createForOfIteratorHelper\";\nimport defaultLocale from \"../_lib/defaultLocale/index.js\";\nimport subMilliseconds from \"../subMilliseconds/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport assign from \"../_lib/assign/index.js\";\nimport longFormatters from \"../_lib/format/longFormatters/index.js\";\nimport getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport { isProtectedDayOfYearToken, isProtectedWeekYearToken, throwProtectedError } from \"../_lib/protectedTokens/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { DateToSystemTimezoneSetter } from \"./_lib/Setter.js\";\nimport { parsers } from \"./_lib/parsers/index.js\";\nimport { getDefaultOptions } from \"../_lib/defaultOptions/index.js\"; // This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n//   (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n//   except a single quote symbol, which ends the sequence.\n//   Two quote characters do not end the sequence.\n//   If there is no matching single quote\n//   then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\n\n// This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp = /^'([^]*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\nvar notWhitespaceRegExp = /\\S/;\nvar unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n\n/**\n * @name parse\n * @category Common Helpers\n * @summary Parse the date.\n *\n * @description\n * Return the date parsed from string using the given format string.\n *\n * > \u26A0\uFE0F Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * The characters in the format string wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n *\n * Format of the format string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 5 below the table).\n *\n * Not all tokens are compatible. Combinations that don't make sense or could lead to bugs are prohibited\n * and will throw `RangeError`. For example usage of 24-hour format token with AM/PM token will throw an exception:\n *\n * ```javascript\n * parse('23 AM', 'HH a', new Date())\n * //=> RangeError: The format string mustn't contain `HH` and `a` at the same time\n * ```\n *\n * See the compatibility table: https://docs.google.com/spreadsheets/d/e/2PACX-1vQOPU3xUhplll6dyoMmVUXHKl_8CRDs6_ueLmex3SoqwhuolkuN3O05l4rqx5h1dKX8eb46Ul-CCSrq/pubhtml?gid=0&single=true\n *\n * Accepted format string patterns:\n * | Unit                            |Prior| Pattern | Result examples                   | Notes |\n * |---------------------------------|-----|---------|-----------------------------------|-------|\n * | Era                             | 140 | G..GGG  | AD, BC                            |       |\n * |                                 |     | GGGG    | Anno Domini, Before Christ        | 2     |\n * |                                 |     | GGGGG   | A, B                              |       |\n * | Calendar year                   | 130 | y       | 44, 1, 1900, 2017, 9999           | 4     |\n * |                                 |     | yo      | 44th, 1st, 1900th, 9999999th      | 4,5   |\n * |                                 |     | yy      | 44, 01, 00, 17                    | 4     |\n * |                                 |     | yyy     | 044, 001, 123, 999                | 4     |\n * |                                 |     | yyyy    | 0044, 0001, 1900, 2017            | 4     |\n * |                                 |     | yyyyy   | ...                               | 2,4   |\n * | Local week-numbering year       | 130 | Y       | 44, 1, 1900, 2017, 9000           | 4     |\n * |                                 |     | Yo      | 44th, 1st, 1900th, 9999999th      | 4,5   |\n * |                                 |     | YY      | 44, 01, 00, 17                    | 4,6   |\n * |                                 |     | YYY     | 044, 001, 123, 999                | 4     |\n * |                                 |     | YYYY    | 0044, 0001, 1900, 2017            | 4,6   |\n * |                                 |     | YYYYY   | ...                               | 2,4   |\n * | ISO week-numbering year         | 130 | R       | -43, 1, 1900, 2017, 9999, -9999   | 4,5   |\n * |                                 |     | RR      | -43, 01, 00, 17                   | 4,5   |\n * |                                 |     | RRR     | -043, 001, 123, 999, -999         | 4,5   |\n * |                                 |     | RRRR    | -0043, 0001, 2017, 9999, -9999    | 4,5   |\n * |                                 |     | RRRRR   | ...                               | 2,4,5 |\n * | Extended year                   | 130 | u       | -43, 1, 1900, 2017, 9999, -999    | 4     |\n * |                                 |     | uu      | -43, 01, 99, -99                  | 4     |\n * |                                 |     | uuu     | -043, 001, 123, 999, -999         | 4     |\n * |                                 |     | uuuu    | -0043, 0001, 2017, 9999, -9999    | 4     |\n * |                                 |     | uuuuu   | ...                               | 2,4   |\n * | Quarter (formatting)            | 120 | Q       | 1, 2, 3, 4                        |       |\n * |                                 |     | Qo      | 1st, 2nd, 3rd, 4th                | 5     |\n * |                                 |     | QQ      | 01, 02, 03, 04                    |       |\n * |                                 |     | QQQ     | Q1, Q2, Q3, Q4                    |       |\n * |                                 |     | QQQQ    | 1st quarter, 2nd quarter, ...     | 2     |\n * |                                 |     | QQQQQ   | 1, 2, 3, 4                        | 4     |\n * | Quarter (stand-alone)           | 120 | q       | 1, 2, 3, 4                        |       |\n * |                                 |     | qo      | 1st, 2nd, 3rd, 4th                | 5     |\n * |                                 |     | qq      | 01, 02, 03, 04                    |       |\n * |                                 |     | qqq     | Q1, Q2, Q3, Q4                    |       |\n * |                                 |     | qqqq    | 1st quarter, 2nd quarter, ...     | 2     |\n * |                                 |     | qqqqq   | 1, 2, 3, 4                        | 3     |\n * | Month (formatting)              | 110 | M       | 1, 2, ..., 12                     |       |\n * |                                 |     | Mo      | 1st, 2nd, ..., 12th               | 5     |\n * |                                 |     | MM      | 01, 02, ..., 12                   |       |\n * |                                 |     | MMM     | Jan, Feb, ..., Dec                |       |\n * |                                 |     | MMMM    | January, February, ..., December  | 2     |\n * |                                 |     | MMMMM   | J, F, ..., D                      |       |\n * | Month (stand-alone)             | 110 | L       | 1, 2, ..., 12                     |       |\n * |                                 |     | Lo      | 1st, 2nd, ..., 12th               | 5     |\n * |                                 |     | LL      | 01, 02, ..., 12                   |       |\n * |                                 |     | LLL     | Jan, Feb, ..., Dec                |       |\n * |                                 |     | LLLL    | January, February, ..., December  | 2     |\n * |                                 |     | LLLLL   | J, F, ..., D                      |       |\n * | Local week of year              | 100 | w       | 1, 2, ..., 53                     |       |\n * |                                 |     | wo      | 1st, 2nd, ..., 53th               | 5     |\n * |                                 |     | ww      | 01, 02, ..., 53                   |       |\n * | ISO week of year                | 100 | I       | 1, 2, ..., 53                     | 5     |\n * |                                 |     | Io      | 1st, 2nd, ..., 53th               | 5     |\n * |                                 |     | II      | 01, 02, ..., 53                   | 5     |\n * | Day of month                    |  90 | d       | 1, 2, ..., 31                     |       |\n * |                                 |     | do      | 1st, 2nd, ..., 31st               | 5     |\n * |                                 |     | dd      | 01, 02, ..., 31                   |       |\n * | Day of year                     |  90 | D       | 1, 2, ..., 365, 366               | 7     |\n * |                                 |     | Do      | 1st, 2nd, ..., 365th, 366th       | 5     |\n * |                                 |     | DD      | 01, 02, ..., 365, 366             | 7     |\n * |                                 |     | DDD     | 001, 002, ..., 365, 366           |       |\n * |                                 |     | DDDD    | ...                               | 2     |\n * | Day of week (formatting)        |  90 | E..EEE  | Mon, Tue, Wed, ..., Sun           |       |\n * |                                 |     | EEEE    | Monday, Tuesday, ..., Sunday      | 2     |\n * |                                 |     | EEEEE   | M, T, W, T, F, S, S               |       |\n * |                                 |     | EEEEEE  | Mo, Tu, We, Th, Fr, Sa, Su        |       |\n * | ISO day of week (formatting)    |  90 | i       | 1, 2, 3, ..., 7                   | 5     |\n * |                                 |     | io      | 1st, 2nd, ..., 7th                | 5     |\n * |                                 |     | ii      | 01, 02, ..., 07                   | 5     |\n * |                                 |     | iii     | Mon, Tue, Wed, ..., Sun           | 5     |\n * |                                 |     | iiii    | Monday, Tuesday, ..., Sunday      | 2,5   |\n * |                                 |     | iiiii   | M, T, W, T, F, S, S               | 5     |\n * |                                 |     | iiiiii  | Mo, Tu, We, Th, Fr, Sa, Su        | 5     |\n * | Local day of week (formatting)  |  90 | e       | 2, 3, 4, ..., 1                   |       |\n * |                                 |     | eo      | 2nd, 3rd, ..., 1st                | 5     |\n * |                                 |     | ee      | 02, 03, ..., 01                   |       |\n * |                                 |     | eee     | Mon, Tue, Wed, ..., Sun           |       |\n * |                                 |     | eeee    | Monday, Tuesday, ..., Sunday      | 2     |\n * |                                 |     | eeeee   | M, T, W, T, F, S, S               |       |\n * |                                 |     | eeeeee  | Mo, Tu, We, Th, Fr, Sa, Su        |       |\n * | Local day of week (stand-alone) |  90 | c       | 2, 3, 4, ..., 1                   |       |\n * |                                 |     | co      | 2nd, 3rd, ..., 1st                | 5     |\n * |                                 |     | cc      | 02, 03, ..., 01                   |       |\n * |                                 |     | ccc     | Mon, Tue, Wed, ..., Sun           |       |\n * |                                 |     | cccc    | Monday, Tuesday, ..., Sunday      | 2     |\n * |                                 |     | ccccc   | M, T, W, T, F, S, S               |       |\n * |                                 |     | cccccc  | Mo, Tu, We, Th, Fr, Sa, Su        |       |\n * | AM, PM                          |  80 | a..aaa  | AM, PM                            |       |\n * |                                 |     | aaaa    | a.m., p.m.                        | 2     |\n * |                                 |     | aaaaa   | a, p                              |       |\n * | AM, PM, noon, midnight          |  80 | b..bbb  | AM, PM, noon, midnight            |       |\n * |                                 |     | bbbb    | a.m., p.m., noon, midnight        | 2     |\n * |                                 |     | bbbbb   | a, p, n, mi                       |       |\n * | Flexible day period             |  80 | B..BBB  | at night, in the morning, ...     |       |\n * |                                 |     | BBBB    | at night, in the morning, ...     | 2     |\n * |                                 |     | BBBBB   | at night, in the morning, ...     |       |\n * | Hour [1-12]                     |  70 | h       | 1, 2, ..., 11, 12                 |       |\n * |                                 |     | ho      | 1st, 2nd, ..., 11th, 12th         | 5     |\n * |                                 |     | hh      | 01, 02, ..., 11, 12               |       |\n * | Hour [0-23]                     |  70 | H       | 0, 1, 2, ..., 23                  |       |\n * |                                 |     | Ho      | 0th, 1st, 2nd, ..., 23rd          | 5     |\n * |                                 |     | HH      | 00, 01, 02, ..., 23               |       |\n * | Hour [0-11]                     |  70 | K       | 1, 2, ..., 11, 0                  |       |\n * |                                 |     | Ko      | 1st, 2nd, ..., 11th, 0th          | 5     |\n * |                                 |     | KK      | 01, 02, ..., 11, 00               |       |\n * | Hour [1-24]                     |  70 | k       | 24, 1, 2, ..., 23                 |       |\n * |                                 |     | ko      | 24th, 1st, 2nd, ..., 23rd         | 5     |\n * |                                 |     | kk      | 24, 01, 02, ..., 23               |       |\n * | Minute                          |  60 | m       | 0, 1, ..., 59                     |       |\n * |                                 |     | mo      | 0th, 1st, ..., 59th               | 5     |\n * |                                 |     | mm      | 00, 01, ..., 59                   |       |\n * | Second                          |  50 | s       | 0, 1, ..., 59                     |       |\n * |                                 |     | so      | 0th, 1st, ..., 59th               | 5     |\n * |                                 |     | ss      | 00, 01, ..., 59                   |       |\n * | Seconds timestamp               |  40 | t       | 512969520                         |       |\n * |                                 |     | tt      | ...                               | 2     |\n * | Fraction of second              |  30 | S       | 0, 1, ..., 9                      |       |\n * |                                 |     | SS      | 00, 01, ..., 99                   |       |\n * |                                 |     | SSS     | 000, 001, ..., 999                |       |\n * |                                 |     | SSSS    | ...                               | 2     |\n * | Milliseconds timestamp          |  20 | T       | 512969520900                      |       |\n * |                                 |     | TT      | ...                               | 2     |\n * | Timezone (ISO-8601 w/ Z)        |  10 | X       | -08, +0530, Z                     |       |\n * |                                 |     | XX      | -0800, +0530, Z                   |       |\n * |                                 |     | XXX     | -08:00, +05:30, Z                 |       |\n * |                                 |     | XXXX    | -0800, +0530, Z, +123456          | 2     |\n * |                                 |     | XXXXX   | -08:00, +05:30, Z, +12:34:56      |       |\n * | Timezone (ISO-8601 w/o Z)       |  10 | x       | -08, +0530, +00                   |       |\n * |                                 |     | xx      | -0800, +0530, +0000               |       |\n * |                                 |     | xxx     | -08:00, +05:30, +00:00            | 2     |\n * |                                 |     | xxxx    | -0800, +0530, +0000, +123456      |       |\n * |                                 |     | xxxxx   | -08:00, +05:30, +00:00, +12:34:56 |       |\n * | Long localized date             |  NA | P       | 05/29/1453                        | 5,8   |\n * |                                 |     | PP      | May 29, 1453                      |       |\n * |                                 |     | PPP     | May 29th, 1453                    |       |\n * |                                 |     | PPPP    | Sunday, May 29th, 1453            | 2,5,8 |\n * | Long localized time             |  NA | p       | 12:00 AM                          | 5,8   |\n * |                                 |     | pp      | 12:00:00 AM                       |       |\n * | Combination of date and time    |  NA | Pp      | 05/29/1453, 12:00 AM              |       |\n * |                                 |     | PPpp    | May 29, 1453, 12:00:00 AM         |       |\n * |                                 |     | PPPpp   | May 29th, 1453 at ...             |       |\n * |                                 |     | PPPPpp  | Sunday, May 29th, 1453 at ...     | 2,5,8 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n *    are the same as \"stand-alone\" units, but are different in some languages.\n *    \"Formatting\" units are declined according to the rules of the language\n *    in the context of a date. \"Stand-alone\" units are always nominative singular.\n *    In `format` function, they will produce different result:\n *\n *    `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n *    `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n *    `parse` will try to match both formatting and stand-alone units interchangably.\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n *    the single quote characters (see below).\n *    If the sequence is longer than listed in table:\n *    - for numerical units (`yyyyyyyy`) `parse` will try to match a number\n *      as wide as the sequence\n *    - for text units (`MMMMMMMM`) `parse` will try to match the widest variation of the unit.\n *      These variations are marked with \"2\" in the last column of the table.\n *\n * 3. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n *    These tokens represent the shortest form of the quarter.\n *\n * 4. The main difference between `y` and `u` patterns are B.C. years:\n *\n *    | Year | `y` | `u` |\n *    |------|-----|-----|\n *    | AC 1 |   1 |   1 |\n *    | BC 1 |   1 |   0 |\n *    | BC 2 |   2 |  -1 |\n *\n *    Also `yy` will try to guess the century of two digit year by proximity with `referenceDate`:\n *\n *    `parse('50', 'yy', new Date(2018, 0, 1)) //=> Sat Jan 01 2050 00:00:00`\n *\n *    `parse('75', 'yy', new Date(2018, 0, 1)) //=> Wed Jan 01 1975 00:00:00`\n *\n *    while `uu` will just assign the year as is:\n *\n *    `parse('50', 'uu', new Date(2018, 0, 1)) //=> Sat Jan 01 0050 00:00:00`\n *\n *    `parse('75', 'uu', new Date(2018, 0, 1)) //=> Tue Jan 01 0075 00:00:00`\n *\n *    The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n *    except local week-numbering years are dependent on `options.weekStartsOn`\n *    and `options.firstWeekContainsDate` (compare [setISOWeekYear]{@link https://date-fns.org/docs/setISOWeekYear}\n *    and [setWeekYear]{@link https://date-fns.org/docs/setWeekYear}).\n *\n * 5. These patterns are not in the Unicode Technical Standard #35:\n *    - `i`: ISO day of week\n *    - `I`: ISO week of year\n *    - `R`: ISO week-numbering year\n *    - `o`: ordinal number modifier\n *    - `P`: long localized date\n *    - `p`: long localized time\n *\n * 6. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n *    You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 7. `D` and `DD` tokens represent days of the year but they are ofthen confused with days of the month.\n *    You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 8. `P+` tokens do not have a defined priority since they are merely aliases to other tokens based\n *    on the given locale.\n *\n *    using `en-US` locale: `P` => `MM/dd/yyyy`\n *    using `en-US` locale: `p` => `hh:mm a`\n *    using `pt-BR` locale: `P` => `dd/MM/yyyy`\n *    using `pt-BR` locale: `p` => `HH:mm`\n *\n * Values will be assigned to the date in the descending order of its unit's priority.\n * Units of an equal priority overwrite each other in the order of appearance.\n *\n * If no values of higher priority are parsed (e.g. when parsing string 'January 1st' without a year),\n * the values will be taken from 3rd argument `referenceDate` which works as a context of parsing.\n *\n * `referenceDate` must be passed for correct work of the function.\n * If you're not sure which `referenceDate` to supply, create a new instance of Date:\n * `parse('02/11/2014', 'MM/dd/yyyy', new Date())`\n * In this case parsing will be done in the context of the current date.\n * If `referenceDate` is `Invalid Date` or a value not convertible to valid `Date`,\n * then `Invalid Date` will be returned.\n *\n * The result may vary by locale.\n *\n * If `formatString` matches with `dateString` but does not provides tokens, `referenceDate` will be returned.\n *\n * If parsing failed, `Invalid Date` will be returned.\n * Invalid Date is a Date, whose time value is NaN.\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @param {String} dateString - the string to parse\n * @param {String} formatString - the string of tokens\n * @param {Date|Number} referenceDate - defines values missing from the parsed dateString\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year\n * @param {Boolean} [options.useAdditionalWeekYearTokens=false] - if true, allows usage of the week-numbering year tokens `YY` and `YYYY`;\n *   see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`;\n *   see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @returns {Date} the parsed date\n * @throws {TypeError} 3 arguments required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} `options.locale` must contain `match` property\n * @throws {RangeError} use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} format string contains an unescaped latin alphabet character\n *\n * @example\n * // Parse 11 February 2014 from middle-endian format:\n * var result = parse('02/11/2014', 'MM/dd/yyyy', new Date())\n * //=> Tue Feb 11 2014 00:00:00\n *\n * @example\n * // Parse 28th of February in Esperanto locale in the context of 2010 year:\n * import eo from 'date-fns/locale/eo'\n * var result = parse('28-a de februaro', \"do 'de' MMMM\", new Date(2010, 0, 1), {\n *   locale: eo\n * })\n * //=> Sun Feb 28 2010 00:00:00\n */\nexport default function parse(dirtyDateString, dirtyFormatString, dirtyReferenceDate, options) {\n  var _ref, _options$locale, _ref2, _ref3, _ref4, _options$firstWeekCon, _options$locale2, _options$locale2$opti, _defaultOptions$local, _defaultOptions$local2, _ref5, _ref6, _ref7, _options$weekStartsOn, _options$locale3, _options$locale3$opti, _defaultOptions$local3, _defaultOptions$local4;\n  requiredArgs(3, arguments);\n  var dateString = String(dirtyDateString);\n  var formatString = String(dirtyFormatString);\n  var defaultOptions = getDefaultOptions();\n  var locale = (_ref = (_options$locale = options === null || options === void 0 ? void 0 : options.locale) !== null && _options$locale !== void 0 ? _options$locale : defaultOptions.locale) !== null && _ref !== void 0 ? _ref : defaultLocale;\n  if (!locale.match) {\n    throw new RangeError('locale must contain match property');\n  }\n  var firstWeekContainsDate = toInteger((_ref2 = (_ref3 = (_ref4 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale2 = options.locale) === null || _options$locale2 === void 0 ? void 0 : (_options$locale2$opti = _options$locale2.options) === null || _options$locale2$opti === void 0 ? void 0 : _options$locale2$opti.firstWeekContainsDate) !== null && _ref4 !== void 0 ? _ref4 : defaultOptions.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : 1);\n\n  // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n  if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n    throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n  }\n  var weekStartsOn = toInteger((_ref5 = (_ref6 = (_ref7 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale3 = options.locale) === null || _options$locale3 === void 0 ? void 0 : (_options$locale3$opti = _options$locale3.options) === null || _options$locale3$opti === void 0 ? void 0 : _options$locale3$opti.weekStartsOn) !== null && _ref7 !== void 0 ? _ref7 : defaultOptions.weekStartsOn) !== null && _ref6 !== void 0 ? _ref6 : (_defaultOptions$local3 = defaultOptions.locale) === null || _defaultOptions$local3 === void 0 ? void 0 : (_defaultOptions$local4 = _defaultOptions$local3.options) === null || _defaultOptions$local4 === void 0 ? void 0 : _defaultOptions$local4.weekStartsOn) !== null && _ref5 !== void 0 ? _ref5 : 0);\n\n  // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n  if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n    throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n  }\n  if (formatString === '') {\n    if (dateString === '') {\n      return toDate(dirtyReferenceDate);\n    } else {\n      return new Date(NaN);\n    }\n  }\n  var subFnOptions = {\n    firstWeekContainsDate: firstWeekContainsDate,\n    weekStartsOn: weekStartsOn,\n    locale: locale\n  };\n\n  // If timezone isn't specified, it will be set to the system timezone\n  var setters = [new DateToSystemTimezoneSetter()];\n  var tokens = formatString.match(longFormattingTokensRegExp).map(function (substring) {\n    var firstCharacter = substring[0];\n    if (firstCharacter in longFormatters) {\n      var longFormatter = longFormatters[firstCharacter];\n      return longFormatter(substring, locale.formatLong);\n    }\n    return substring;\n  }).join('').match(formattingTokensRegExp);\n  var usedTokens = [];\n  var _iterator = _createForOfIteratorHelper(tokens),\n    _step;\n  try {\n    var _loop = function _loop() {\n      var token = _step.value;\n      if (!(options !== null && options !== void 0 && options.useAdditionalWeekYearTokens) && isProtectedWeekYearToken(token)) {\n        throwProtectedError(token, formatString, dirtyDateString);\n      }\n      if (!(options !== null && options !== void 0 && options.useAdditionalDayOfYearTokens) && isProtectedDayOfYearToken(token)) {\n        throwProtectedError(token, formatString, dirtyDateString);\n      }\n      var firstCharacter = token[0];\n      var parser = parsers[firstCharacter];\n      if (parser) {\n        var incompatibleTokens = parser.incompatibleTokens;\n        if (Array.isArray(incompatibleTokens)) {\n          var incompatibleToken = usedTokens.find(function (usedToken) {\n            return incompatibleTokens.includes(usedToken.token) || usedToken.token === firstCharacter;\n          });\n          if (incompatibleToken) {\n            throw new RangeError(\"The format string mustn't contain `\".concat(incompatibleToken.fullToken, \"` and `\").concat(token, \"` at the same time\"));\n          }\n        } else if (parser.incompatibleTokens === '*' && usedTokens.length > 0) {\n          throw new RangeError(\"The format string mustn't contain `\".concat(token, \"` and any other token at the same time\"));\n        }\n        usedTokens.push({\n          token: firstCharacter,\n          fullToken: token\n        });\n        var parseResult = parser.run(dateString, token, locale.match, subFnOptions);\n        if (!parseResult) {\n          return {\n            v: new Date(NaN)\n          };\n        }\n        setters.push(parseResult.setter);\n        dateString = parseResult.rest;\n      } else {\n        if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n          throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`');\n        }\n\n        // Replace two single quote characters with one single quote character\n        if (token === \"''\") {\n          token = \"'\";\n        } else if (firstCharacter === \"'\") {\n          token = cleanEscapedString(token);\n        }\n\n        // Cut token from string, or, if string doesn't match the token, return Invalid Date\n        if (dateString.indexOf(token) === 0) {\n          dateString = dateString.slice(token.length);\n        } else {\n          return {\n            v: new Date(NaN)\n          };\n        }\n      }\n    };\n    for (_iterator.s(); !(_step = _iterator.n()).done;) {\n      var _ret = _loop();\n      if (_typeof(_ret) === \"object\") return _ret.v;\n    }\n\n    // Check if the remaining input contains something other than whitespace\n  } catch (err) {\n    _iterator.e(err);\n  } finally {\n    _iterator.f();\n  }\n  if (dateString.length > 0 && notWhitespaceRegExp.test(dateString)) {\n    return new Date(NaN);\n  }\n  var uniquePrioritySetters = setters.map(function (setter) {\n    return setter.priority;\n  }).sort(function (a, b) {\n    return b - a;\n  }).filter(function (priority, index, array) {\n    return array.indexOf(priority) === index;\n  }).map(function (priority) {\n    return setters.filter(function (setter) {\n      return setter.priority === priority;\n    }).sort(function (a, b) {\n      return b.subPriority - a.subPriority;\n    });\n  }).map(function (setterArray) {\n    return setterArray[0];\n  });\n  var date = toDate(dirtyReferenceDate);\n  if (isNaN(date.getTime())) {\n    return new Date(NaN);\n  }\n\n  // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n  var utcDate = subMilliseconds(date, getTimezoneOffsetInMilliseconds(date));\n  var flags = {};\n  var _iterator2 = _createForOfIteratorHelper(uniquePrioritySetters),\n    _step2;\n  try {\n    for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n      var setter = _step2.value;\n      if (!setter.validate(utcDate, subFnOptions)) {\n        return new Date(NaN);\n      }\n      var result = setter.set(utcDate, flags, subFnOptions);\n      // Result is tuple (date, flags)\n      if (Array.isArray(result)) {\n        utcDate = result[0];\n        assign(flags, result[1]);\n        // Result is date\n      } else {\n        utcDate = result;\n      }\n    }\n  } catch (err) {\n    _iterator2.e(err);\n  } finally {\n    _iterator2.f();\n  }\n  return utcDate;\n}\nfunction cleanEscapedString(input) {\n  return input.match(escapedStringRegExp)[1].replace(doubleQuoteRegExp, \"'\");\n}", "import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfHour\n * @category Hour Helpers\n * @summary Return the start of an hour for the given date.\n *\n * @description\n * Return the start of an hour for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of an hour\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of an hour for 2 September 2014 11:55:00:\n * const result = startOfHour(new Date(2014, 8, 2, 11, 55))\n * //=> Tue Sep 02 2014 11:00:00\n */\nexport default function startOfHour(dirtyDate) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  date.setMinutes(0, 0, 0);\n  return date;\n}", "import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfSecond\n * @category Second Helpers\n * @summary Return the start of a second for the given date.\n *\n * @description\n * Return the start of a second for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a second\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a second for 1 December 2014 22:15:45.400:\n * const result = startOfSecond(new Date(2014, 11, 1, 22, 15, 45, 400))\n * //=> Mon Dec 01 2014 22:15:45.000\n */\nexport default function startOfSecond(dirtyDate) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  date.setMilliseconds(0);\n  return date;\n}", "import { millisecondsInHour, millisecondsInMinute } from \"../constants/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name parseISO\n * @category Common Helpers\n * @summary Parse ISO string\n *\n * @description\n * Parse the given string in ISO 8601 format and return an instance of Date.\n *\n * Function accepts complete ISO 8601 formats as well as partial implementations.\n * ISO 8601: http://en.wikipedia.org/wiki/ISO_8601\n *\n * If the argument isn't a string, the function cannot parse the string or\n * the values are invalid, it returns Invalid Date.\n *\n * @param {String} argument - the value to convert\n * @param {Object} [options] - an object with options.\n * @param {0|1|2} [options.additionalDigits=2] - the additional number of digits in the extended year format\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Convert string '2014-02-11T11:30:30' to date:\n * const result = parseISO('2014-02-11T11:30:30')\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert string '+02014101' to date,\n * // if the additional number of digits in the extended year format is 1:\n * const result = parseISO('+02014101', { additionalDigits: 1 })\n * //=> Fri Apr 11 2014 00:00:00\n */\nexport default function parseISO(argument, options) {\n  var _options$additionalDi;\n  requiredArgs(1, arguments);\n  var additionalDigits = toInteger((_options$additionalDi = options === null || options === void 0 ? void 0 : options.additionalDigits) !== null && _options$additionalDi !== void 0 ? _options$additionalDi : 2);\n  if (additionalDigits !== 2 && additionalDigits !== 1 && additionalDigits !== 0) {\n    throw new RangeError('additionalDigits must be 0, 1 or 2');\n  }\n  if (!(typeof argument === 'string' || Object.prototype.toString.call(argument) === '[object String]')) {\n    return new Date(NaN);\n  }\n  var dateStrings = splitDateString(argument);\n  var date;\n  if (dateStrings.date) {\n    var parseYearResult = parseYear(dateStrings.date, additionalDigits);\n    date = parseDate(parseYearResult.restDateString, parseYearResult.year);\n  }\n  if (!date || isNaN(date.getTime())) {\n    return new Date(NaN);\n  }\n  var timestamp = date.getTime();\n  var time = 0;\n  var offset;\n  if (dateStrings.time) {\n    time = parseTime(dateStrings.time);\n    if (isNaN(time)) {\n      return new Date(NaN);\n    }\n  }\n  if (dateStrings.timezone) {\n    offset = parseTimezone(dateStrings.timezone);\n    if (isNaN(offset)) {\n      return new Date(NaN);\n    }\n  } else {\n    var dirtyDate = new Date(timestamp + time);\n    // js parsed string assuming it's in UTC timezone\n    // but we need it to be parsed in our timezone\n    // so we use utc values to build date in our timezone.\n    // Year values from 0 to 99 map to the years 1900 to 1999\n    // so set year explicitly with setFullYear.\n    var result = new Date(0);\n    result.setFullYear(dirtyDate.getUTCFullYear(), dirtyDate.getUTCMonth(), dirtyDate.getUTCDate());\n    result.setHours(dirtyDate.getUTCHours(), dirtyDate.getUTCMinutes(), dirtyDate.getUTCSeconds(), dirtyDate.getUTCMilliseconds());\n    return result;\n  }\n  return new Date(timestamp + time + offset);\n}\nvar patterns = {\n  dateTimeDelimiter: /[T ]/,\n  timeZoneDelimiter: /[Z ]/i,\n  timezone: /([Z+-].*)$/\n};\nvar dateRegex = /^-?(?:(\\d{3})|(\\d{2})(?:-?(\\d{2}))?|W(\\d{2})(?:-?(\\d{1}))?|)$/;\nvar timeRegex = /^(\\d{2}(?:[.,]\\d*)?)(?::?(\\d{2}(?:[.,]\\d*)?))?(?::?(\\d{2}(?:[.,]\\d*)?))?$/;\nvar timezoneRegex = /^([+-])(\\d{2})(?::?(\\d{2}))?$/;\nfunction splitDateString(dateString) {\n  var dateStrings = {};\n  var array = dateString.split(patterns.dateTimeDelimiter);\n  var timeString;\n\n  // The regex match should only return at maximum two array elements.\n  // [date], [time], or [date, time].\n  if (array.length > 2) {\n    return dateStrings;\n  }\n  if (/:/.test(array[0])) {\n    timeString = array[0];\n  } else {\n    dateStrings.date = array[0];\n    timeString = array[1];\n    if (patterns.timeZoneDelimiter.test(dateStrings.date)) {\n      dateStrings.date = dateString.split(patterns.timeZoneDelimiter)[0];\n      timeString = dateString.substr(dateStrings.date.length, dateString.length);\n    }\n  }\n  if (timeString) {\n    var token = patterns.timezone.exec(timeString);\n    if (token) {\n      dateStrings.time = timeString.replace(token[1], '');\n      dateStrings.timezone = token[1];\n    } else {\n      dateStrings.time = timeString;\n    }\n  }\n  return dateStrings;\n}\nfunction parseYear(dateString, additionalDigits) {\n  var regex = new RegExp('^(?:(\\\\d{4}|[+-]\\\\d{' + (4 + additionalDigits) + '})|(\\\\d{2}|[+-]\\\\d{' + (2 + additionalDigits) + '})$)');\n  var captures = dateString.match(regex);\n  // Invalid ISO-formatted year\n  if (!captures) return {\n    year: NaN,\n    restDateString: ''\n  };\n  var year = captures[1] ? parseInt(captures[1]) : null;\n  var century = captures[2] ? parseInt(captures[2]) : null;\n\n  // either year or century is null, not both\n  return {\n    year: century === null ? year : century * 100,\n    restDateString: dateString.slice((captures[1] || captures[2]).length)\n  };\n}\nfunction parseDate(dateString, year) {\n  // Invalid ISO-formatted year\n  if (year === null) return new Date(NaN);\n  var captures = dateString.match(dateRegex);\n  // Invalid ISO-formatted string\n  if (!captures) return new Date(NaN);\n  var isWeekDate = !!captures[4];\n  var dayOfYear = parseDateUnit(captures[1]);\n  var month = parseDateUnit(captures[2]) - 1;\n  var day = parseDateUnit(captures[3]);\n  var week = parseDateUnit(captures[4]);\n  var dayOfWeek = parseDateUnit(captures[5]) - 1;\n  if (isWeekDate) {\n    if (!validateWeekDate(year, week, dayOfWeek)) {\n      return new Date(NaN);\n    }\n    return dayOfISOWeekYear(year, week, dayOfWeek);\n  } else {\n    var date = new Date(0);\n    if (!validateDate(year, month, day) || !validateDayOfYearDate(year, dayOfYear)) {\n      return new Date(NaN);\n    }\n    date.setUTCFullYear(year, month, Math.max(dayOfYear, day));\n    return date;\n  }\n}\nfunction parseDateUnit(value) {\n  return value ? parseInt(value) : 1;\n}\nfunction parseTime(timeString) {\n  var captures = timeString.match(timeRegex);\n  if (!captures) return NaN; // Invalid ISO-formatted time\n\n  var hours = parseTimeUnit(captures[1]);\n  var minutes = parseTimeUnit(captures[2]);\n  var seconds = parseTimeUnit(captures[3]);\n  if (!validateTime(hours, minutes, seconds)) {\n    return NaN;\n  }\n  return hours * millisecondsInHour + minutes * millisecondsInMinute + seconds * 1000;\n}\nfunction parseTimeUnit(value) {\n  return value && parseFloat(value.replace(',', '.')) || 0;\n}\nfunction parseTimezone(timezoneString) {\n  if (timezoneString === 'Z') return 0;\n  var captures = timezoneString.match(timezoneRegex);\n  if (!captures) return 0;\n  var sign = captures[1] === '+' ? -1 : 1;\n  var hours = parseInt(captures[2]);\n  var minutes = captures[3] && parseInt(captures[3]) || 0;\n  if (!validateTimezone(hours, minutes)) {\n    return NaN;\n  }\n  return sign * (hours * millisecondsInHour + minutes * millisecondsInMinute);\n}\nfunction dayOfISOWeekYear(isoWeekYear, week, day) {\n  var date = new Date(0);\n  date.setUTCFullYear(isoWeekYear, 0, 4);\n  var fourthOfJanuaryDay = date.getUTCDay() || 7;\n  var diff = (week - 1) * 7 + day + 1 - fourthOfJanuaryDay;\n  date.setUTCDate(date.getUTCDate() + diff);\n  return date;\n}\n\n// Validation functions\n\n// February is null to handle the leap year (using ||)\nvar daysInMonths = [31, null, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nfunction isLeapYearIndex(year) {\n  return year % 400 === 0 || year % 4 === 0 && year % 100 !== 0;\n}\nfunction validateDate(year, month, date) {\n  return month >= 0 && month <= 11 && date >= 1 && date <= (daysInMonths[month] || (isLeapYearIndex(year) ? 29 : 28));\n}\nfunction validateDayOfYearDate(year, dayOfYear) {\n  return dayOfYear >= 1 && dayOfYear <= (isLeapYearIndex(year) ? 366 : 365);\n}\nfunction validateWeekDate(_year, week, day) {\n  return week >= 1 && week <= 53 && day >= 0 && day <= 6;\n}\nfunction validateTime(hours, minutes, seconds) {\n  if (hours === 24) {\n    return minutes === 0 && seconds === 0;\n  }\n  return seconds >= 0 && seconds < 60 && minutes >= 0 && minutes < 60 && hours >= 0 && hours < 25;\n}\nfunction validateTimezone(_hours, minutes) {\n  return minutes >= 0 && minutes <= 59;\n}", "/*!\n * chartjs-adapter-date-fns v3.0.0\n * https://www.chartjs.org\n * (c) 2022 chartjs-adapter-date-fns Contributors\n * Released under the MIT license\n */\nimport { _adapters } from 'chart.js';\nimport { toDate, parse, parseISO, isValid, format, addYears, addQuarters, addMonths, addWeeks, addDays, addHours, addMinutes, addSeconds, addMilliseconds, differenceInYears, differenceInQuarters, differenceInMonths, differenceInWeeks, differenceInDays, differenceInHours, differenceInMinutes, differenceInSeconds, differenceInMilliseconds, startOfYear, startOfQuarter, startOfMonth, startOfWeek, startOfDay, startOfHour, startOfMinute, startOfSecond, endOfYear, endOfQuarter, endOfMonth, endOfWeek, endOfDay, endOfHour, endOfMinute, endOfSecond } from 'date-fns';\n\nconst FORMATS = {\n  datetime: 'MMM d, yyyy, h:mm:ss aaaa',\n  millisecond: 'h:mm:ss.SSS aaaa',\n  second: 'h:mm:ss aaaa',\n  minute: 'h:mm aaaa',\n  hour: 'ha',\n  day: 'MMM d',\n  week: 'PP',\n  month: 'MMM yyyy',\n  quarter: 'qqq - yyyy',\n  year: 'yyyy'\n};\n\n_adapters._date.override({\n  _id: 'date-fns', // DEBUG\n\n  formats: function() {\n    return FORMATS;\n  },\n\n  parse: function(value, fmt) {\n    if (value === null || typeof value === 'undefined') {\n      return null;\n    }\n    const type = typeof value;\n    if (type === 'number' || value instanceof Date) {\n      value = toDate(value);\n    } else if (type === 'string') {\n      if (typeof fmt === 'string') {\n        value = parse(value, fmt, new Date(), this.options);\n      } else {\n        value = parseISO(value, this.options);\n      }\n    }\n    return isValid(value) ? value.getTime() : null;\n  },\n\n  format: function(time, fmt) {\n    return format(time, fmt, this.options);\n  },\n\n  add: function(time, amount, unit) {\n    switch (unit) {\n    case 'millisecond': return addMilliseconds(time, amount);\n    case 'second': return addSeconds(time, amount);\n    case 'minute': return addMinutes(time, amount);\n    case 'hour': return addHours(time, amount);\n    case 'day': return addDays(time, amount);\n    case 'week': return addWeeks(time, amount);\n    case 'month': return addMonths(time, amount);\n    case 'quarter': return addQuarters(time, amount);\n    case 'year': return addYears(time, amount);\n    default: return time;\n    }\n  },\n\n  diff: function(max, min, unit) {\n    switch (unit) {\n    case 'millisecond': return differenceInMilliseconds(max, min);\n    case 'second': return differenceInSeconds(max, min);\n    case 'minute': return differenceInMinutes(max, min);\n    case 'hour': return differenceInHours(max, min);\n    case 'day': return differenceInDays(max, min);\n    case 'week': return differenceInWeeks(max, min);\n    case 'month': return differenceInMonths(max, min);\n    case 'quarter': return differenceInQuarters(max, min);\n    case 'year': return differenceInYears(max, min);\n    default: return 0;\n    }\n  },\n\n  startOf: function(time, unit, weekday) {\n    switch (unit) {\n    case 'second': return startOfSecond(time);\n    case 'minute': return startOfMinute(time);\n    case 'hour': return startOfHour(time);\n    case 'day': return startOfDay(time);\n    case 'week': return startOfWeek(time);\n    case 'isoWeek': return startOfWeek(time, {weekStartsOn: +weekday});\n    case 'month': return startOfMonth(time);\n    case 'quarter': return startOfQuarter(time);\n    case 'year': return startOfYear(time);\n    default: return time;\n    }\n  },\n\n  endOf: function(time, unit) {\n    switch (unit) {\n    case 'second': return endOfSecond(time);\n    case 'minute': return endOfMinute(time);\n    case 'hour': return endOfHour(time);\n    case 'day': return endOfDay(time);\n    case 'week': return endOfWeek(time);\n    case 'month': return endOfMonth(time);\n    case 'quarter': return endOfQuarter(time);\n    case 'year': return endOfYear(time);\n    default: return time;\n    }\n  }\n});\n", "// Action Cable provides the framework to deal with WebSockets in Rails.\n// You can generate new channels where WebSocket features live using the `bin/rails generate channel` command.\n\nimport { createConsumer } from \"@rails/actioncable\"\n\nexport default createConsumer()\n", "import consumer from \"./consumer\";\n\ndocument.addEventListener(\"turbo:load\", () => {\n  let channel_code, element;\n\n  element = document.getElementById(\"channel-code\");\n\n  if (element) {\n    channel_code = element.getAttribute(\"data-channel-code\");\n\n    consumer.subscriptions.create(\n      { channel: \"OrdersChannel\", code: channel_code },\n      {\n        connected() {},\n\n        disconnected() {},\n\n        received(data) {\n          this.appendData(data);\n        },\n\n        appendData({ html }) {\n          const emptyWrapper = this._getEmptyWrapper();\n\n          if (emptyWrapper) {\n            const tableWrapper = '<div id=\"orders-table-wrapper\"></div>';\n            emptyWrapper.insertAdjacentHTML(\"afterend\", tableWrapper);\n            emptyWrapper.remove();\n          }\n\n          document.getElementById(\"orders-table-wrapper\").innerHTML = html;\n        },\n\n        _getEmptyWrapper() {\n          return document.getElementById(\"orders-empty-wrapper\");\n        },\n      }\n    );\n  }\n});\n", "import consumer from \"./consumer\";\n\ndocument.addEventListener(\"turbo:load\", () => {\n  let channel_code, element;\n\n  element = document.getElementById(\"channel-code\");\n\n  if (element) {\n    channel_code = element.getAttribute(\"data-channel-code\");\n\n    consumer.subscriptions.create(\n      { channel: \"RedeemsChannel\", code: channel_code },\n      {\n        connected() {},\n\n        disconnected() {},\n\n        received(data) {\n          this.appendData(data);\n        },\n\n        appendData({ html }) {\n          const emptyWrapper = this._getEmptyWrapper();\n\n          if (emptyWrapper) {\n            const tableWrapper = '<div id=\"redeems-table-wrapper\"></div>';\n            emptyWrapper.insertAdjacentHTML(\"afterend\", tableWrapper);\n            emptyWrapper.remove();\n          }\n\n          document.getElementById(\"redeems-table-wrapper\").innerHTML = html;\n        },\n\n        _getEmptyWrapper() {\n          return document.getElementById(\"redeems-empty-wrapper\");\n        },\n      }\n    );\n  }\n});\n", "import consumer from \"./consumer\";\n\ndocument.addEventListener(\"turbo:load\", () => {\n  let element;\n  element = document.getElementById('social-proof');\n\n  if (element) {\n    consumer.subscriptions.create(\n      { channel: \"SocialProofChannel\", code: 'social_proof_chanel' },\n      {\n        connected() {},\n        disconnected() {},\n  \n        received(data) {\n          this.clearItems();\n          this.appendData(data);\n        },\n  \n        clearItems() {\n          const items = document.querySelectorAll('#social-proof-wrapper');\n          items.forEach((item) => item.remove());\n        },\n  \n        appendData({ html }) {\n          const body = document.querySelector('body');\n  \n          if (body) {\n            const wrapper = '<div id=\"social-proof-wrapper\"></div>';\n            body.insertAdjacentHTML(\"afterbegin\", wrapper);\n            document.getElementById(\"social-proof-wrapper\").innerHTML = html;\n          }\n        }\n      }\n    );\n  }\n});\n", "/*\nStimulus 3.2.1\nCopyright \u00A9 2023 Basecamp, LLC\n */\nclass EventListener {\n    constructor(eventTarget, eventName, eventOptions) {\n        this.eventTarget = eventTarget;\n        this.eventName = eventName;\n        this.eventOptions = eventOptions;\n        this.unorderedBindings = new Set();\n    }\n    connect() {\n        this.eventTarget.addEventListener(this.eventName, this, this.eventOptions);\n    }\n    disconnect() {\n        this.eventTarget.removeEventListener(this.eventName, this, this.eventOptions);\n    }\n    bindingConnected(binding) {\n        this.unorderedBindings.add(binding);\n    }\n    bindingDisconnected(binding) {\n        this.unorderedBindings.delete(binding);\n    }\n    handleEvent(event) {\n        const extendedEvent = extendEvent(event);\n        for (const binding of this.bindings) {\n            if (extendedEvent.immediatePropagationStopped) {\n                break;\n            }\n            else {\n                binding.handleEvent(extendedEvent);\n            }\n        }\n    }\n    hasBindings() {\n        return this.unorderedBindings.size > 0;\n    }\n    get bindings() {\n        return Array.from(this.unorderedBindings).sort((left, right) => {\n            const leftIndex = left.index, rightIndex = right.index;\n            return leftIndex < rightIndex ? -1 : leftIndex > rightIndex ? 1 : 0;\n        });\n    }\n}\nfunction extendEvent(event) {\n    if (\"immediatePropagationStopped\" in event) {\n        return event;\n    }\n    else {\n        const { stopImmediatePropagation } = event;\n        return Object.assign(event, {\n            immediatePropagationStopped: false,\n            stopImmediatePropagation() {\n                this.immediatePropagationStopped = true;\n                stopImmediatePropagation.call(this);\n            },\n        });\n    }\n}\n\nclass Dispatcher {\n    constructor(application) {\n        this.application = application;\n        this.eventListenerMaps = new Map();\n        this.started = false;\n    }\n    start() {\n        if (!this.started) {\n            this.started = true;\n            this.eventListeners.forEach((eventListener) => eventListener.connect());\n        }\n    }\n    stop() {\n        if (this.started) {\n            this.started = false;\n            this.eventListeners.forEach((eventListener) => eventListener.disconnect());\n        }\n    }\n    get eventListeners() {\n        return Array.from(this.eventListenerMaps.values()).reduce((listeners, map) => listeners.concat(Array.from(map.values())), []);\n    }\n    bindingConnected(binding) {\n        this.fetchEventListenerForBinding(binding).bindingConnected(binding);\n    }\n    bindingDisconnected(binding, clearEventListeners = false) {\n        this.fetchEventListenerForBinding(binding).bindingDisconnected(binding);\n        if (clearEventListeners)\n            this.clearEventListenersForBinding(binding);\n    }\n    handleError(error, message, detail = {}) {\n        this.application.handleError(error, `Error ${message}`, detail);\n    }\n    clearEventListenersForBinding(binding) {\n        const eventListener = this.fetchEventListenerForBinding(binding);\n        if (!eventListener.hasBindings()) {\n            eventListener.disconnect();\n            this.removeMappedEventListenerFor(binding);\n        }\n    }\n    removeMappedEventListenerFor(binding) {\n        const { eventTarget, eventName, eventOptions } = binding;\n        const eventListenerMap = this.fetchEventListenerMapForEventTarget(eventTarget);\n        const cacheKey = this.cacheKey(eventName, eventOptions);\n        eventListenerMap.delete(cacheKey);\n        if (eventListenerMap.size == 0)\n            this.eventListenerMaps.delete(eventTarget);\n    }\n    fetchEventListenerForBinding(binding) {\n        const { eventTarget, eventName, eventOptions } = binding;\n        return this.fetchEventListener(eventTarget, eventName, eventOptions);\n    }\n    fetchEventListener(eventTarget, eventName, eventOptions) {\n        const eventListenerMap = this.fetchEventListenerMapForEventTarget(eventTarget);\n        const cacheKey = this.cacheKey(eventName, eventOptions);\n        let eventListener = eventListenerMap.get(cacheKey);\n        if (!eventListener) {\n            eventListener = this.createEventListener(eventTarget, eventName, eventOptions);\n            eventListenerMap.set(cacheKey, eventListener);\n        }\n        return eventListener;\n    }\n    createEventListener(eventTarget, eventName, eventOptions) {\n        const eventListener = new EventListener(eventTarget, eventName, eventOptions);\n        if (this.started) {\n            eventListener.connect();\n        }\n        return eventListener;\n    }\n    fetchEventListenerMapForEventTarget(eventTarget) {\n        let eventListenerMap = this.eventListenerMaps.get(eventTarget);\n        if (!eventListenerMap) {\n            eventListenerMap = new Map();\n            this.eventListenerMaps.set(eventTarget, eventListenerMap);\n        }\n        return eventListenerMap;\n    }\n    cacheKey(eventName, eventOptions) {\n        const parts = [eventName];\n        Object.keys(eventOptions)\n            .sort()\n            .forEach((key) => {\n            parts.push(`${eventOptions[key] ? \"\" : \"!\"}${key}`);\n        });\n        return parts.join(\":\");\n    }\n}\n\nconst defaultActionDescriptorFilters = {\n    stop({ event, value }) {\n        if (value)\n            event.stopPropagation();\n        return true;\n    },\n    prevent({ event, value }) {\n        if (value)\n            event.preventDefault();\n        return true;\n    },\n    self({ event, value, element }) {\n        if (value) {\n            return element === event.target;\n        }\n        else {\n            return true;\n        }\n    },\n};\nconst descriptorPattern = /^(?:(?:([^.]+?)\\+)?(.+?)(?:\\.(.+?))?(?:@(window|document))?->)?(.+?)(?:#([^:]+?))(?::(.+))?$/;\nfunction parseActionDescriptorString(descriptorString) {\n    const source = descriptorString.trim();\n    const matches = source.match(descriptorPattern) || [];\n    let eventName = matches[2];\n    let keyFilter = matches[3];\n    if (keyFilter && ![\"keydown\", \"keyup\", \"keypress\"].includes(eventName)) {\n        eventName += `.${keyFilter}`;\n        keyFilter = \"\";\n    }\n    return {\n        eventTarget: parseEventTarget(matches[4]),\n        eventName,\n        eventOptions: matches[7] ? parseEventOptions(matches[7]) : {},\n        identifier: matches[5],\n        methodName: matches[6],\n        keyFilter: matches[1] || keyFilter,\n    };\n}\nfunction parseEventTarget(eventTargetName) {\n    if (eventTargetName == \"window\") {\n        return window;\n    }\n    else if (eventTargetName == \"document\") {\n        return document;\n    }\n}\nfunction parseEventOptions(eventOptions) {\n    return eventOptions\n        .split(\":\")\n        .reduce((options, token) => Object.assign(options, { [token.replace(/^!/, \"\")]: !/^!/.test(token) }), {});\n}\nfunction stringifyEventTarget(eventTarget) {\n    if (eventTarget == window) {\n        return \"window\";\n    }\n    else if (eventTarget == document) {\n        return \"document\";\n    }\n}\n\nfunction camelize(value) {\n    return value.replace(/(?:[_-])([a-z0-9])/g, (_, char) => char.toUpperCase());\n}\nfunction namespaceCamelize(value) {\n    return camelize(value.replace(/--/g, \"-\").replace(/__/g, \"_\"));\n}\nfunction capitalize(value) {\n    return value.charAt(0).toUpperCase() + value.slice(1);\n}\nfunction dasherize(value) {\n    return value.replace(/([A-Z])/g, (_, char) => `-${char.toLowerCase()}`);\n}\nfunction tokenize(value) {\n    return value.match(/[^\\s]+/g) || [];\n}\n\nfunction isSomething(object) {\n    return object !== null && object !== undefined;\n}\nfunction hasProperty(object, property) {\n    return Object.prototype.hasOwnProperty.call(object, property);\n}\n\nconst allModifiers = [\"meta\", \"ctrl\", \"alt\", \"shift\"];\nclass Action {\n    constructor(element, index, descriptor, schema) {\n        this.element = element;\n        this.index = index;\n        this.eventTarget = descriptor.eventTarget || element;\n        this.eventName = descriptor.eventName || getDefaultEventNameForElement(element) || error(\"missing event name\");\n        this.eventOptions = descriptor.eventOptions || {};\n        this.identifier = descriptor.identifier || error(\"missing identifier\");\n        this.methodName = descriptor.methodName || error(\"missing method name\");\n        this.keyFilter = descriptor.keyFilter || \"\";\n        this.schema = schema;\n    }\n    static forToken(token, schema) {\n        return new this(token.element, token.index, parseActionDescriptorString(token.content), schema);\n    }\n    toString() {\n        const eventFilter = this.keyFilter ? `.${this.keyFilter}` : \"\";\n        const eventTarget = this.eventTargetName ? `@${this.eventTargetName}` : \"\";\n        return `${this.eventName}${eventFilter}${eventTarget}->${this.identifier}#${this.methodName}`;\n    }\n    shouldIgnoreKeyboardEvent(event) {\n        if (!this.keyFilter) {\n            return false;\n        }\n        const filters = this.keyFilter.split(\"+\");\n        if (this.keyFilterDissatisfied(event, filters)) {\n            return true;\n        }\n        const standardFilter = filters.filter((key) => !allModifiers.includes(key))[0];\n        if (!standardFilter) {\n            return false;\n        }\n        if (!hasProperty(this.keyMappings, standardFilter)) {\n            error(`contains unknown key filter: ${this.keyFilter}`);\n        }\n        return this.keyMappings[standardFilter].toLowerCase() !== event.key.toLowerCase();\n    }\n    shouldIgnoreMouseEvent(event) {\n        if (!this.keyFilter) {\n            return false;\n        }\n        const filters = [this.keyFilter];\n        if (this.keyFilterDissatisfied(event, filters)) {\n            return true;\n        }\n        return false;\n    }\n    get params() {\n        const params = {};\n        const pattern = new RegExp(`^data-${this.identifier}-(.+)-param$`, \"i\");\n        for (const { name, value } of Array.from(this.element.attributes)) {\n            const match = name.match(pattern);\n            const key = match && match[1];\n            if (key) {\n                params[camelize(key)] = typecast(value);\n            }\n        }\n        return params;\n    }\n    get eventTargetName() {\n        return stringifyEventTarget(this.eventTarget);\n    }\n    get keyMappings() {\n        return this.schema.keyMappings;\n    }\n    keyFilterDissatisfied(event, filters) {\n        const [meta, ctrl, alt, shift] = allModifiers.map((modifier) => filters.includes(modifier));\n        return event.metaKey !== meta || event.ctrlKey !== ctrl || event.altKey !== alt || event.shiftKey !== shift;\n    }\n}\nconst defaultEventNames = {\n    a: () => \"click\",\n    button: () => \"click\",\n    form: () => \"submit\",\n    details: () => \"toggle\",\n    input: (e) => (e.getAttribute(\"type\") == \"submit\" ? \"click\" : \"input\"),\n    select: () => \"change\",\n    textarea: () => \"input\",\n};\nfunction getDefaultEventNameForElement(element) {\n    const tagName = element.tagName.toLowerCase();\n    if (tagName in defaultEventNames) {\n        return defaultEventNames[tagName](element);\n    }\n}\nfunction error(message) {\n    throw new Error(message);\n}\nfunction typecast(value) {\n    try {\n        return JSON.parse(value);\n    }\n    catch (o_O) {\n        return value;\n    }\n}\n\nclass Binding {\n    constructor(context, action) {\n        this.context = context;\n        this.action = action;\n    }\n    get index() {\n        return this.action.index;\n    }\n    get eventTarget() {\n        return this.action.eventTarget;\n    }\n    get eventOptions() {\n        return this.action.eventOptions;\n    }\n    get identifier() {\n        return this.context.identifier;\n    }\n    handleEvent(event) {\n        const actionEvent = this.prepareActionEvent(event);\n        if (this.willBeInvokedByEvent(event) && this.applyEventModifiers(actionEvent)) {\n            this.invokeWithEvent(actionEvent);\n        }\n    }\n    get eventName() {\n        return this.action.eventName;\n    }\n    get method() {\n        const method = this.controller[this.methodName];\n        if (typeof method == \"function\") {\n            return method;\n        }\n        throw new Error(`Action \"${this.action}\" references undefined method \"${this.methodName}\"`);\n    }\n    applyEventModifiers(event) {\n        const { element } = this.action;\n        const { actionDescriptorFilters } = this.context.application;\n        const { controller } = this.context;\n        let passes = true;\n        for (const [name, value] of Object.entries(this.eventOptions)) {\n            if (name in actionDescriptorFilters) {\n                const filter = actionDescriptorFilters[name];\n                passes = passes && filter({ name, value, event, element, controller });\n            }\n            else {\n                continue;\n            }\n        }\n        return passes;\n    }\n    prepareActionEvent(event) {\n        return Object.assign(event, { params: this.action.params });\n    }\n    invokeWithEvent(event) {\n        const { target, currentTarget } = event;\n        try {\n            this.method.call(this.controller, event);\n            this.context.logDebugActivity(this.methodName, { event, target, currentTarget, action: this.methodName });\n        }\n        catch (error) {\n            const { identifier, controller, element, index } = this;\n            const detail = { identifier, controller, element, index, event };\n            this.context.handleError(error, `invoking action \"${this.action}\"`, detail);\n        }\n    }\n    willBeInvokedByEvent(event) {\n        const eventTarget = event.target;\n        if (event instanceof KeyboardEvent && this.action.shouldIgnoreKeyboardEvent(event)) {\n            return false;\n        }\n        if (event instanceof MouseEvent && this.action.shouldIgnoreMouseEvent(event)) {\n            return false;\n        }\n        if (this.element === eventTarget) {\n            return true;\n        }\n        else if (eventTarget instanceof Element && this.element.contains(eventTarget)) {\n            return this.scope.containsElement(eventTarget);\n        }\n        else {\n            return this.scope.containsElement(this.action.element);\n        }\n    }\n    get controller() {\n        return this.context.controller;\n    }\n    get methodName() {\n        return this.action.methodName;\n    }\n    get element() {\n        return this.scope.element;\n    }\n    get scope() {\n        return this.context.scope;\n    }\n}\n\nclass ElementObserver {\n    constructor(element, delegate) {\n        this.mutationObserverInit = { attributes: true, childList: true, subtree: true };\n        this.element = element;\n        this.started = false;\n        this.delegate = delegate;\n        this.elements = new Set();\n        this.mutationObserver = new MutationObserver((mutations) => this.processMutations(mutations));\n    }\n    start() {\n        if (!this.started) {\n            this.started = true;\n            this.mutationObserver.observe(this.element, this.mutationObserverInit);\n            this.refresh();\n        }\n    }\n    pause(callback) {\n        if (this.started) {\n            this.mutationObserver.disconnect();\n            this.started = false;\n        }\n        callback();\n        if (!this.started) {\n            this.mutationObserver.observe(this.element, this.mutationObserverInit);\n            this.started = true;\n        }\n    }\n    stop() {\n        if (this.started) {\n            this.mutationObserver.takeRecords();\n            this.mutationObserver.disconnect();\n            this.started = false;\n        }\n    }\n    refresh() {\n        if (this.started) {\n            const matches = new Set(this.matchElementsInTree());\n            for (const element of Array.from(this.elements)) {\n                if (!matches.has(element)) {\n                    this.removeElement(element);\n                }\n            }\n            for (const element of Array.from(matches)) {\n                this.addElement(element);\n            }\n        }\n    }\n    processMutations(mutations) {\n        if (this.started) {\n            for (const mutation of mutations) {\n                this.processMutation(mutation);\n            }\n        }\n    }\n    processMutation(mutation) {\n        if (mutation.type == \"attributes\") {\n            this.processAttributeChange(mutation.target, mutation.attributeName);\n        }\n        else if (mutation.type == \"childList\") {\n            this.processRemovedNodes(mutation.removedNodes);\n            this.processAddedNodes(mutation.addedNodes);\n        }\n    }\n    processAttributeChange(element, attributeName) {\n        if (this.elements.has(element)) {\n            if (this.delegate.elementAttributeChanged && this.matchElement(element)) {\n                this.delegate.elementAttributeChanged(element, attributeName);\n            }\n            else {\n                this.removeElement(element);\n            }\n        }\n        else if (this.matchElement(element)) {\n            this.addElement(element);\n        }\n    }\n    processRemovedNodes(nodes) {\n        for (const node of Array.from(nodes)) {\n            const element = this.elementFromNode(node);\n            if (element) {\n                this.processTree(element, this.removeElement);\n            }\n        }\n    }\n    processAddedNodes(nodes) {\n        for (const node of Array.from(nodes)) {\n            const element = this.elementFromNode(node);\n            if (element && this.elementIsActive(element)) {\n                this.processTree(element, this.addElement);\n            }\n        }\n    }\n    matchElement(element) {\n        return this.delegate.matchElement(element);\n    }\n    matchElementsInTree(tree = this.element) {\n        return this.delegate.matchElementsInTree(tree);\n    }\n    processTree(tree, processor) {\n        for (const element of this.matchElementsInTree(tree)) {\n            processor.call(this, element);\n        }\n    }\n    elementFromNode(node) {\n        if (node.nodeType == Node.ELEMENT_NODE) {\n            return node;\n        }\n    }\n    elementIsActive(element) {\n        if (element.isConnected != this.element.isConnected) {\n            return false;\n        }\n        else {\n            return this.element.contains(element);\n        }\n    }\n    addElement(element) {\n        if (!this.elements.has(element)) {\n            if (this.elementIsActive(element)) {\n                this.elements.add(element);\n                if (this.delegate.elementMatched) {\n                    this.delegate.elementMatched(element);\n                }\n            }\n        }\n    }\n    removeElement(element) {\n        if (this.elements.has(element)) {\n            this.elements.delete(element);\n            if (this.delegate.elementUnmatched) {\n                this.delegate.elementUnmatched(element);\n            }\n        }\n    }\n}\n\nclass AttributeObserver {\n    constructor(element, attributeName, delegate) {\n        this.attributeName = attributeName;\n        this.delegate = delegate;\n        this.elementObserver = new ElementObserver(element, this);\n    }\n    get element() {\n        return this.elementObserver.element;\n    }\n    get selector() {\n        return `[${this.attributeName}]`;\n    }\n    start() {\n        this.elementObserver.start();\n    }\n    pause(callback) {\n        this.elementObserver.pause(callback);\n    }\n    stop() {\n        this.elementObserver.stop();\n    }\n    refresh() {\n        this.elementObserver.refresh();\n    }\n    get started() {\n        return this.elementObserver.started;\n    }\n    matchElement(element) {\n        return element.hasAttribute(this.attributeName);\n    }\n    matchElementsInTree(tree) {\n        const match = this.matchElement(tree) ? [tree] : [];\n        const matches = Array.from(tree.querySelectorAll(this.selector));\n        return match.concat(matches);\n    }\n    elementMatched(element) {\n        if (this.delegate.elementMatchedAttribute) {\n            this.delegate.elementMatchedAttribute(element, this.attributeName);\n        }\n    }\n    elementUnmatched(element) {\n        if (this.delegate.elementUnmatchedAttribute) {\n            this.delegate.elementUnmatchedAttribute(element, this.attributeName);\n        }\n    }\n    elementAttributeChanged(element, attributeName) {\n        if (this.delegate.elementAttributeValueChanged && this.attributeName == attributeName) {\n            this.delegate.elementAttributeValueChanged(element, attributeName);\n        }\n    }\n}\n\nfunction add(map, key, value) {\n    fetch(map, key).add(value);\n}\nfunction del(map, key, value) {\n    fetch(map, key).delete(value);\n    prune(map, key);\n}\nfunction fetch(map, key) {\n    let values = map.get(key);\n    if (!values) {\n        values = new Set();\n        map.set(key, values);\n    }\n    return values;\n}\nfunction prune(map, key) {\n    const values = map.get(key);\n    if (values != null && values.size == 0) {\n        map.delete(key);\n    }\n}\n\nclass Multimap {\n    constructor() {\n        this.valuesByKey = new Map();\n    }\n    get keys() {\n        return Array.from(this.valuesByKey.keys());\n    }\n    get values() {\n        const sets = Array.from(this.valuesByKey.values());\n        return sets.reduce((values, set) => values.concat(Array.from(set)), []);\n    }\n    get size() {\n        const sets = Array.from(this.valuesByKey.values());\n        return sets.reduce((size, set) => size + set.size, 0);\n    }\n    add(key, value) {\n        add(this.valuesByKey, key, value);\n    }\n    delete(key, value) {\n        del(this.valuesByKey, key, value);\n    }\n    has(key, value) {\n        const values = this.valuesByKey.get(key);\n        return values != null && values.has(value);\n    }\n    hasKey(key) {\n        return this.valuesByKey.has(key);\n    }\n    hasValue(value) {\n        const sets = Array.from(this.valuesByKey.values());\n        return sets.some((set) => set.has(value));\n    }\n    getValuesForKey(key) {\n        const values = this.valuesByKey.get(key);\n        return values ? Array.from(values) : [];\n    }\n    getKeysForValue(value) {\n        return Array.from(this.valuesByKey)\n            .filter(([_key, values]) => values.has(value))\n            .map(([key, _values]) => key);\n    }\n}\n\nclass IndexedMultimap extends Multimap {\n    constructor() {\n        super();\n        this.keysByValue = new Map();\n    }\n    get values() {\n        return Array.from(this.keysByValue.keys());\n    }\n    add(key, value) {\n        super.add(key, value);\n        add(this.keysByValue, value, key);\n    }\n    delete(key, value) {\n        super.delete(key, value);\n        del(this.keysByValue, value, key);\n    }\n    hasValue(value) {\n        return this.keysByValue.has(value);\n    }\n    getKeysForValue(value) {\n        const set = this.keysByValue.get(value);\n        return set ? Array.from(set) : [];\n    }\n}\n\nclass SelectorObserver {\n    constructor(element, selector, delegate, details) {\n        this._selector = selector;\n        this.details = details;\n        this.elementObserver = new ElementObserver(element, this);\n        this.delegate = delegate;\n        this.matchesByElement = new Multimap();\n    }\n    get started() {\n        return this.elementObserver.started;\n    }\n    get selector() {\n        return this._selector;\n    }\n    set selector(selector) {\n        this._selector = selector;\n        this.refresh();\n    }\n    start() {\n        this.elementObserver.start();\n    }\n    pause(callback) {\n        this.elementObserver.pause(callback);\n    }\n    stop() {\n        this.elementObserver.stop();\n    }\n    refresh() {\n        this.elementObserver.refresh();\n    }\n    get element() {\n        return this.elementObserver.element;\n    }\n    matchElement(element) {\n        const { selector } = this;\n        if (selector) {\n            const matches = element.matches(selector);\n            if (this.delegate.selectorMatchElement) {\n                return matches && this.delegate.selectorMatchElement(element, this.details);\n            }\n            return matches;\n        }\n        else {\n            return false;\n        }\n    }\n    matchElementsInTree(tree) {\n        const { selector } = this;\n        if (selector) {\n            const match = this.matchElement(tree) ? [tree] : [];\n            const matches = Array.from(tree.querySelectorAll(selector)).filter((match) => this.matchElement(match));\n            return match.concat(matches);\n        }\n        else {\n            return [];\n        }\n    }\n    elementMatched(element) {\n        const { selector } = this;\n        if (selector) {\n            this.selectorMatched(element, selector);\n        }\n    }\n    elementUnmatched(element) {\n        const selectors = this.matchesByElement.getKeysForValue(element);\n        for (const selector of selectors) {\n            this.selectorUnmatched(element, selector);\n        }\n    }\n    elementAttributeChanged(element, _attributeName) {\n        const { selector } = this;\n        if (selector) {\n            const matches = this.matchElement(element);\n            const matchedBefore = this.matchesByElement.has(selector, element);\n            if (matches && !matchedBefore) {\n                this.selectorMatched(element, selector);\n            }\n            else if (!matches && matchedBefore) {\n                this.selectorUnmatched(element, selector);\n            }\n        }\n    }\n    selectorMatched(element, selector) {\n        this.delegate.selectorMatched(element, selector, this.details);\n        this.matchesByElement.add(selector, element);\n    }\n    selectorUnmatched(element, selector) {\n        this.delegate.selectorUnmatched(element, selector, this.details);\n        this.matchesByElement.delete(selector, element);\n    }\n}\n\nclass StringMapObserver {\n    constructor(element, delegate) {\n        this.element = element;\n        this.delegate = delegate;\n        this.started = false;\n        this.stringMap = new Map();\n        this.mutationObserver = new MutationObserver((mutations) => this.processMutations(mutations));\n    }\n    start() {\n        if (!this.started) {\n            this.started = true;\n            this.mutationObserver.observe(this.element, { attributes: true, attributeOldValue: true });\n            this.refresh();\n        }\n    }\n    stop() {\n        if (this.started) {\n            this.mutationObserver.takeRecords();\n            this.mutationObserver.disconnect();\n            this.started = false;\n        }\n    }\n    refresh() {\n        if (this.started) {\n            for (const attributeName of this.knownAttributeNames) {\n                this.refreshAttribute(attributeName, null);\n            }\n        }\n    }\n    processMutations(mutations) {\n        if (this.started) {\n            for (const mutation of mutations) {\n                this.processMutation(mutation);\n            }\n        }\n    }\n    processMutation(mutation) {\n        const attributeName = mutation.attributeName;\n        if (attributeName) {\n            this.refreshAttribute(attributeName, mutation.oldValue);\n        }\n    }\n    refreshAttribute(attributeName, oldValue) {\n        const key = this.delegate.getStringMapKeyForAttribute(attributeName);\n        if (key != null) {\n            if (!this.stringMap.has(attributeName)) {\n                this.stringMapKeyAdded(key, attributeName);\n            }\n            const value = this.element.getAttribute(attributeName);\n            if (this.stringMap.get(attributeName) != value) {\n                this.stringMapValueChanged(value, key, oldValue);\n            }\n            if (value == null) {\n                const oldValue = this.stringMap.get(attributeName);\n                this.stringMap.delete(attributeName);\n                if (oldValue)\n                    this.stringMapKeyRemoved(key, attributeName, oldValue);\n            }\n            else {\n                this.stringMap.set(attributeName, value);\n            }\n        }\n    }\n    stringMapKeyAdded(key, attributeName) {\n        if (this.delegate.stringMapKeyAdded) {\n            this.delegate.stringMapKeyAdded(key, attributeName);\n        }\n    }\n    stringMapValueChanged(value, key, oldValue) {\n        if (this.delegate.stringMapValueChanged) {\n            this.delegate.stringMapValueChanged(value, key, oldValue);\n        }\n    }\n    stringMapKeyRemoved(key, attributeName, oldValue) {\n        if (this.delegate.stringMapKeyRemoved) {\n            this.delegate.stringMapKeyRemoved(key, attributeName, oldValue);\n        }\n    }\n    get knownAttributeNames() {\n        return Array.from(new Set(this.currentAttributeNames.concat(this.recordedAttributeNames)));\n    }\n    get currentAttributeNames() {\n        return Array.from(this.element.attributes).map((attribute) => attribute.name);\n    }\n    get recordedAttributeNames() {\n        return Array.from(this.stringMap.keys());\n    }\n}\n\nclass TokenListObserver {\n    constructor(element, attributeName, delegate) {\n        this.attributeObserver = new AttributeObserver(element, attributeName, this);\n        this.delegate = delegate;\n        this.tokensByElement = new Multimap();\n    }\n    get started() {\n        return this.attributeObserver.started;\n    }\n    start() {\n        this.attributeObserver.start();\n    }\n    pause(callback) {\n        this.attributeObserver.pause(callback);\n    }\n    stop() {\n        this.attributeObserver.stop();\n    }\n    refresh() {\n        this.attributeObserver.refresh();\n    }\n    get element() {\n        return this.attributeObserver.element;\n    }\n    get attributeName() {\n        return this.attributeObserver.attributeName;\n    }\n    elementMatchedAttribute(element) {\n        this.tokensMatched(this.readTokensForElement(element));\n    }\n    elementAttributeValueChanged(element) {\n        const [unmatchedTokens, matchedTokens] = this.refreshTokensForElement(element);\n        this.tokensUnmatched(unmatchedTokens);\n        this.tokensMatched(matchedTokens);\n    }\n    elementUnmatchedAttribute(element) {\n        this.tokensUnmatched(this.tokensByElement.getValuesForKey(element));\n    }\n    tokensMatched(tokens) {\n        tokens.forEach((token) => this.tokenMatched(token));\n    }\n    tokensUnmatched(tokens) {\n        tokens.forEach((token) => this.tokenUnmatched(token));\n    }\n    tokenMatched(token) {\n        this.delegate.tokenMatched(token);\n        this.tokensByElement.add(token.element, token);\n    }\n    tokenUnmatched(token) {\n        this.delegate.tokenUnmatched(token);\n        this.tokensByElement.delete(token.element, token);\n    }\n    refreshTokensForElement(element) {\n        const previousTokens = this.tokensByElement.getValuesForKey(element);\n        const currentTokens = this.readTokensForElement(element);\n        const firstDifferingIndex = zip(previousTokens, currentTokens).findIndex(([previousToken, currentToken]) => !tokensAreEqual(previousToken, currentToken));\n        if (firstDifferingIndex == -1) {\n            return [[], []];\n        }\n        else {\n            return [previousTokens.slice(firstDifferingIndex), currentTokens.slice(firstDifferingIndex)];\n        }\n    }\n    readTokensForElement(element) {\n        const attributeName = this.attributeName;\n        const tokenString = element.getAttribute(attributeName) || \"\";\n        return parseTokenString(tokenString, element, attributeName);\n    }\n}\nfunction parseTokenString(tokenString, element, attributeName) {\n    return tokenString\n        .trim()\n        .split(/\\s+/)\n        .filter((content) => content.length)\n        .map((content, index) => ({ element, attributeName, content, index }));\n}\nfunction zip(left, right) {\n    const length = Math.max(left.length, right.length);\n    return Array.from({ length }, (_, index) => [left[index], right[index]]);\n}\nfunction tokensAreEqual(left, right) {\n    return left && right && left.index == right.index && left.content == right.content;\n}\n\nclass ValueListObserver {\n    constructor(element, attributeName, delegate) {\n        this.tokenListObserver = new TokenListObserver(element, attributeName, this);\n        this.delegate = delegate;\n        this.parseResultsByToken = new WeakMap();\n        this.valuesByTokenByElement = new WeakMap();\n    }\n    get started() {\n        return this.tokenListObserver.started;\n    }\n    start() {\n        this.tokenListObserver.start();\n    }\n    stop() {\n        this.tokenListObserver.stop();\n    }\n    refresh() {\n        this.tokenListObserver.refresh();\n    }\n    get element() {\n        return this.tokenListObserver.element;\n    }\n    get attributeName() {\n        return this.tokenListObserver.attributeName;\n    }\n    tokenMatched(token) {\n        const { element } = token;\n        const { value } = this.fetchParseResultForToken(token);\n        if (value) {\n            this.fetchValuesByTokenForElement(element).set(token, value);\n            this.delegate.elementMatchedValue(element, value);\n        }\n    }\n    tokenUnmatched(token) {\n        const { element } = token;\n        const { value } = this.fetchParseResultForToken(token);\n        if (value) {\n            this.fetchValuesByTokenForElement(element).delete(token);\n            this.delegate.elementUnmatchedValue(element, value);\n        }\n    }\n    fetchParseResultForToken(token) {\n        let parseResult = this.parseResultsByToken.get(token);\n        if (!parseResult) {\n            parseResult = this.parseToken(token);\n            this.parseResultsByToken.set(token, parseResult);\n        }\n        return parseResult;\n    }\n    fetchValuesByTokenForElement(element) {\n        let valuesByToken = this.valuesByTokenByElement.get(element);\n        if (!valuesByToken) {\n            valuesByToken = new Map();\n            this.valuesByTokenByElement.set(element, valuesByToken);\n        }\n        return valuesByToken;\n    }\n    parseToken(token) {\n        try {\n            const value = this.delegate.parseValueForToken(token);\n            return { value };\n        }\n        catch (error) {\n            return { error };\n        }\n    }\n}\n\nclass BindingObserver {\n    constructor(context, delegate) {\n        this.context = context;\n        this.delegate = delegate;\n        this.bindingsByAction = new Map();\n    }\n    start() {\n        if (!this.valueListObserver) {\n            this.valueListObserver = new ValueListObserver(this.element, this.actionAttribute, this);\n            this.valueListObserver.start();\n        }\n    }\n    stop() {\n        if (this.valueListObserver) {\n            this.valueListObserver.stop();\n            delete this.valueListObserver;\n            this.disconnectAllActions();\n        }\n    }\n    get element() {\n        return this.context.element;\n    }\n    get identifier() {\n        return this.context.identifier;\n    }\n    get actionAttribute() {\n        return this.schema.actionAttribute;\n    }\n    get schema() {\n        return this.context.schema;\n    }\n    get bindings() {\n        return Array.from(this.bindingsByAction.values());\n    }\n    connectAction(action) {\n        const binding = new Binding(this.context, action);\n        this.bindingsByAction.set(action, binding);\n        this.delegate.bindingConnected(binding);\n    }\n    disconnectAction(action) {\n        const binding = this.bindingsByAction.get(action);\n        if (binding) {\n            this.bindingsByAction.delete(action);\n            this.delegate.bindingDisconnected(binding);\n        }\n    }\n    disconnectAllActions() {\n        this.bindings.forEach((binding) => this.delegate.bindingDisconnected(binding, true));\n        this.bindingsByAction.clear();\n    }\n    parseValueForToken(token) {\n        const action = Action.forToken(token, this.schema);\n        if (action.identifier == this.identifier) {\n            return action;\n        }\n    }\n    elementMatchedValue(element, action) {\n        this.connectAction(action);\n    }\n    elementUnmatchedValue(element, action) {\n        this.disconnectAction(action);\n    }\n}\n\nclass ValueObserver {\n    constructor(context, receiver) {\n        this.context = context;\n        this.receiver = receiver;\n        this.stringMapObserver = new StringMapObserver(this.element, this);\n        this.valueDescriptorMap = this.controller.valueDescriptorMap;\n    }\n    start() {\n        this.stringMapObserver.start();\n        this.invokeChangedCallbacksForDefaultValues();\n    }\n    stop() {\n        this.stringMapObserver.stop();\n    }\n    get element() {\n        return this.context.element;\n    }\n    get controller() {\n        return this.context.controller;\n    }\n    getStringMapKeyForAttribute(attributeName) {\n        if (attributeName in this.valueDescriptorMap) {\n            return this.valueDescriptorMap[attributeName].name;\n        }\n    }\n    stringMapKeyAdded(key, attributeName) {\n        const descriptor = this.valueDescriptorMap[attributeName];\n        if (!this.hasValue(key)) {\n            this.invokeChangedCallback(key, descriptor.writer(this.receiver[key]), descriptor.writer(descriptor.defaultValue));\n        }\n    }\n    stringMapValueChanged(value, name, oldValue) {\n        const descriptor = this.valueDescriptorNameMap[name];\n        if (value === null)\n            return;\n        if (oldValue === null) {\n            oldValue = descriptor.writer(descriptor.defaultValue);\n        }\n        this.invokeChangedCallback(name, value, oldValue);\n    }\n    stringMapKeyRemoved(key, attributeName, oldValue) {\n        const descriptor = this.valueDescriptorNameMap[key];\n        if (this.hasValue(key)) {\n            this.invokeChangedCallback(key, descriptor.writer(this.receiver[key]), oldValue);\n        }\n        else {\n            this.invokeChangedCallback(key, descriptor.writer(descriptor.defaultValue), oldValue);\n        }\n    }\n    invokeChangedCallbacksForDefaultValues() {\n        for (const { key, name, defaultValue, writer } of this.valueDescriptors) {\n            if (defaultValue != undefined && !this.controller.data.has(key)) {\n                this.invokeChangedCallback(name, writer(defaultValue), undefined);\n            }\n        }\n    }\n    invokeChangedCallback(name, rawValue, rawOldValue) {\n        const changedMethodName = `${name}Changed`;\n        const changedMethod = this.receiver[changedMethodName];\n        if (typeof changedMethod == \"function\") {\n            const descriptor = this.valueDescriptorNameMap[name];\n            try {\n                const value = descriptor.reader(rawValue);\n                let oldValue = rawOldValue;\n                if (rawOldValue) {\n                    oldValue = descriptor.reader(rawOldValue);\n                }\n                changedMethod.call(this.receiver, value, oldValue);\n            }\n            catch (error) {\n                if (error instanceof TypeError) {\n                    error.message = `Stimulus Value \"${this.context.identifier}.${descriptor.name}\" - ${error.message}`;\n                }\n                throw error;\n            }\n        }\n    }\n    get valueDescriptors() {\n        const { valueDescriptorMap } = this;\n        return Object.keys(valueDescriptorMap).map((key) => valueDescriptorMap[key]);\n    }\n    get valueDescriptorNameMap() {\n        const descriptors = {};\n        Object.keys(this.valueDescriptorMap).forEach((key) => {\n            const descriptor = this.valueDescriptorMap[key];\n            descriptors[descriptor.name] = descriptor;\n        });\n        return descriptors;\n    }\n    hasValue(attributeName) {\n        const descriptor = this.valueDescriptorNameMap[attributeName];\n        const hasMethodName = `has${capitalize(descriptor.name)}`;\n        return this.receiver[hasMethodName];\n    }\n}\n\nclass TargetObserver {\n    constructor(context, delegate) {\n        this.context = context;\n        this.delegate = delegate;\n        this.targetsByName = new Multimap();\n    }\n    start() {\n        if (!this.tokenListObserver) {\n            this.tokenListObserver = new TokenListObserver(this.element, this.attributeName, this);\n            this.tokenListObserver.start();\n        }\n    }\n    stop() {\n        if (this.tokenListObserver) {\n            this.disconnectAllTargets();\n            this.tokenListObserver.stop();\n            delete this.tokenListObserver;\n        }\n    }\n    tokenMatched({ element, content: name }) {\n        if (this.scope.containsElement(element)) {\n            this.connectTarget(element, name);\n        }\n    }\n    tokenUnmatched({ element, content: name }) {\n        this.disconnectTarget(element, name);\n    }\n    connectTarget(element, name) {\n        var _a;\n        if (!this.targetsByName.has(name, element)) {\n            this.targetsByName.add(name, element);\n            (_a = this.tokenListObserver) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.targetConnected(element, name));\n        }\n    }\n    disconnectTarget(element, name) {\n        var _a;\n        if (this.targetsByName.has(name, element)) {\n            this.targetsByName.delete(name, element);\n            (_a = this.tokenListObserver) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.targetDisconnected(element, name));\n        }\n    }\n    disconnectAllTargets() {\n        for (const name of this.targetsByName.keys) {\n            for (const element of this.targetsByName.getValuesForKey(name)) {\n                this.disconnectTarget(element, name);\n            }\n        }\n    }\n    get attributeName() {\n        return `data-${this.context.identifier}-target`;\n    }\n    get element() {\n        return this.context.element;\n    }\n    get scope() {\n        return this.context.scope;\n    }\n}\n\nfunction readInheritableStaticArrayValues(constructor, propertyName) {\n    const ancestors = getAncestorsForConstructor(constructor);\n    return Array.from(ancestors.reduce((values, constructor) => {\n        getOwnStaticArrayValues(constructor, propertyName).forEach((name) => values.add(name));\n        return values;\n    }, new Set()));\n}\nfunction readInheritableStaticObjectPairs(constructor, propertyName) {\n    const ancestors = getAncestorsForConstructor(constructor);\n    return ancestors.reduce((pairs, constructor) => {\n        pairs.push(...getOwnStaticObjectPairs(constructor, propertyName));\n        return pairs;\n    }, []);\n}\nfunction getAncestorsForConstructor(constructor) {\n    const ancestors = [];\n    while (constructor) {\n        ancestors.push(constructor);\n        constructor = Object.getPrototypeOf(constructor);\n    }\n    return ancestors.reverse();\n}\nfunction getOwnStaticArrayValues(constructor, propertyName) {\n    const definition = constructor[propertyName];\n    return Array.isArray(definition) ? definition : [];\n}\nfunction getOwnStaticObjectPairs(constructor, propertyName) {\n    const definition = constructor[propertyName];\n    return definition ? Object.keys(definition).map((key) => [key, definition[key]]) : [];\n}\n\nclass OutletObserver {\n    constructor(context, delegate) {\n        this.started = false;\n        this.context = context;\n        this.delegate = delegate;\n        this.outletsByName = new Multimap();\n        this.outletElementsByName = new Multimap();\n        this.selectorObserverMap = new Map();\n        this.attributeObserverMap = new Map();\n    }\n    start() {\n        if (!this.started) {\n            this.outletDefinitions.forEach((outletName) => {\n                this.setupSelectorObserverForOutlet(outletName);\n                this.setupAttributeObserverForOutlet(outletName);\n            });\n            this.started = true;\n            this.dependentContexts.forEach((context) => context.refresh());\n        }\n    }\n    refresh() {\n        this.selectorObserverMap.forEach((observer) => observer.refresh());\n        this.attributeObserverMap.forEach((observer) => observer.refresh());\n    }\n    stop() {\n        if (this.started) {\n            this.started = false;\n            this.disconnectAllOutlets();\n            this.stopSelectorObservers();\n            this.stopAttributeObservers();\n        }\n    }\n    stopSelectorObservers() {\n        if (this.selectorObserverMap.size > 0) {\n            this.selectorObserverMap.forEach((observer) => observer.stop());\n            this.selectorObserverMap.clear();\n        }\n    }\n    stopAttributeObservers() {\n        if (this.attributeObserverMap.size > 0) {\n            this.attributeObserverMap.forEach((observer) => observer.stop());\n            this.attributeObserverMap.clear();\n        }\n    }\n    selectorMatched(element, _selector, { outletName }) {\n        const outlet = this.getOutlet(element, outletName);\n        if (outlet) {\n            this.connectOutlet(outlet, element, outletName);\n        }\n    }\n    selectorUnmatched(element, _selector, { outletName }) {\n        const outlet = this.getOutletFromMap(element, outletName);\n        if (outlet) {\n            this.disconnectOutlet(outlet, element, outletName);\n        }\n    }\n    selectorMatchElement(element, { outletName }) {\n        const selector = this.selector(outletName);\n        const hasOutlet = this.hasOutlet(element, outletName);\n        const hasOutletController = element.matches(`[${this.schema.controllerAttribute}~=${outletName}]`);\n        if (selector) {\n            return hasOutlet && hasOutletController && element.matches(selector);\n        }\n        else {\n            return false;\n        }\n    }\n    elementMatchedAttribute(_element, attributeName) {\n        const outletName = this.getOutletNameFromOutletAttributeName(attributeName);\n        if (outletName) {\n            this.updateSelectorObserverForOutlet(outletName);\n        }\n    }\n    elementAttributeValueChanged(_element, attributeName) {\n        const outletName = this.getOutletNameFromOutletAttributeName(attributeName);\n        if (outletName) {\n            this.updateSelectorObserverForOutlet(outletName);\n        }\n    }\n    elementUnmatchedAttribute(_element, attributeName) {\n        const outletName = this.getOutletNameFromOutletAttributeName(attributeName);\n        if (outletName) {\n            this.updateSelectorObserverForOutlet(outletName);\n        }\n    }\n    connectOutlet(outlet, element, outletName) {\n        var _a;\n        if (!this.outletElementsByName.has(outletName, element)) {\n            this.outletsByName.add(outletName, outlet);\n            this.outletElementsByName.add(outletName, element);\n            (_a = this.selectorObserverMap.get(outletName)) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.outletConnected(outlet, element, outletName));\n        }\n    }\n    disconnectOutlet(outlet, element, outletName) {\n        var _a;\n        if (this.outletElementsByName.has(outletName, element)) {\n            this.outletsByName.delete(outletName, outlet);\n            this.outletElementsByName.delete(outletName, element);\n            (_a = this.selectorObserverMap\n                .get(outletName)) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.outletDisconnected(outlet, element, outletName));\n        }\n    }\n    disconnectAllOutlets() {\n        for (const outletName of this.outletElementsByName.keys) {\n            for (const element of this.outletElementsByName.getValuesForKey(outletName)) {\n                for (const outlet of this.outletsByName.getValuesForKey(outletName)) {\n                    this.disconnectOutlet(outlet, element, outletName);\n                }\n            }\n        }\n    }\n    updateSelectorObserverForOutlet(outletName) {\n        const observer = this.selectorObserverMap.get(outletName);\n        if (observer) {\n            observer.selector = this.selector(outletName);\n        }\n    }\n    setupSelectorObserverForOutlet(outletName) {\n        const selector = this.selector(outletName);\n        const selectorObserver = new SelectorObserver(document.body, selector, this, { outletName });\n        this.selectorObserverMap.set(outletName, selectorObserver);\n        selectorObserver.start();\n    }\n    setupAttributeObserverForOutlet(outletName) {\n        const attributeName = this.attributeNameForOutletName(outletName);\n        const attributeObserver = new AttributeObserver(this.scope.element, attributeName, this);\n        this.attributeObserverMap.set(outletName, attributeObserver);\n        attributeObserver.start();\n    }\n    selector(outletName) {\n        return this.scope.outlets.getSelectorForOutletName(outletName);\n    }\n    attributeNameForOutletName(outletName) {\n        return this.scope.schema.outletAttributeForScope(this.identifier, outletName);\n    }\n    getOutletNameFromOutletAttributeName(attributeName) {\n        return this.outletDefinitions.find((outletName) => this.attributeNameForOutletName(outletName) === attributeName);\n    }\n    get outletDependencies() {\n        const dependencies = new Multimap();\n        this.router.modules.forEach((module) => {\n            const constructor = module.definition.controllerConstructor;\n            const outlets = readInheritableStaticArrayValues(constructor, \"outlets\");\n            outlets.forEach((outlet) => dependencies.add(outlet, module.identifier));\n        });\n        return dependencies;\n    }\n    get outletDefinitions() {\n        return this.outletDependencies.getKeysForValue(this.identifier);\n    }\n    get dependentControllerIdentifiers() {\n        return this.outletDependencies.getValuesForKey(this.identifier);\n    }\n    get dependentContexts() {\n        const identifiers = this.dependentControllerIdentifiers;\n        return this.router.contexts.filter((context) => identifiers.includes(context.identifier));\n    }\n    hasOutlet(element, outletName) {\n        return !!this.getOutlet(element, outletName) || !!this.getOutletFromMap(element, outletName);\n    }\n    getOutlet(element, outletName) {\n        return this.application.getControllerForElementAndIdentifier(element, outletName);\n    }\n    getOutletFromMap(element, outletName) {\n        return this.outletsByName.getValuesForKey(outletName).find((outlet) => outlet.element === element);\n    }\n    get scope() {\n        return this.context.scope;\n    }\n    get schema() {\n        return this.context.schema;\n    }\n    get identifier() {\n        return this.context.identifier;\n    }\n    get application() {\n        return this.context.application;\n    }\n    get router() {\n        return this.application.router;\n    }\n}\n\nclass Context {\n    constructor(module, scope) {\n        this.logDebugActivity = (functionName, detail = {}) => {\n            const { identifier, controller, element } = this;\n            detail = Object.assign({ identifier, controller, element }, detail);\n            this.application.logDebugActivity(this.identifier, functionName, detail);\n        };\n        this.module = module;\n        this.scope = scope;\n        this.controller = new module.controllerConstructor(this);\n        this.bindingObserver = new BindingObserver(this, this.dispatcher);\n        this.valueObserver = new ValueObserver(this, this.controller);\n        this.targetObserver = new TargetObserver(this, this);\n        this.outletObserver = new OutletObserver(this, this);\n        try {\n            this.controller.initialize();\n            this.logDebugActivity(\"initialize\");\n        }\n        catch (error) {\n            this.handleError(error, \"initializing controller\");\n        }\n    }\n    connect() {\n        this.bindingObserver.start();\n        this.valueObserver.start();\n        this.targetObserver.start();\n        this.outletObserver.start();\n        try {\n            this.controller.connect();\n            this.logDebugActivity(\"connect\");\n        }\n        catch (error) {\n            this.handleError(error, \"connecting controller\");\n        }\n    }\n    refresh() {\n        this.outletObserver.refresh();\n    }\n    disconnect() {\n        try {\n            this.controller.disconnect();\n            this.logDebugActivity(\"disconnect\");\n        }\n        catch (error) {\n            this.handleError(error, \"disconnecting controller\");\n        }\n        this.outletObserver.stop();\n        this.targetObserver.stop();\n        this.valueObserver.stop();\n        this.bindingObserver.stop();\n    }\n    get application() {\n        return this.module.application;\n    }\n    get identifier() {\n        return this.module.identifier;\n    }\n    get schema() {\n        return this.application.schema;\n    }\n    get dispatcher() {\n        return this.application.dispatcher;\n    }\n    get element() {\n        return this.scope.element;\n    }\n    get parentElement() {\n        return this.element.parentElement;\n    }\n    handleError(error, message, detail = {}) {\n        const { identifier, controller, element } = this;\n        detail = Object.assign({ identifier, controller, element }, detail);\n        this.application.handleError(error, `Error ${message}`, detail);\n    }\n    targetConnected(element, name) {\n        this.invokeControllerMethod(`${name}TargetConnected`, element);\n    }\n    targetDisconnected(element, name) {\n        this.invokeControllerMethod(`${name}TargetDisconnected`, element);\n    }\n    outletConnected(outlet, element, name) {\n        this.invokeControllerMethod(`${namespaceCamelize(name)}OutletConnected`, outlet, element);\n    }\n    outletDisconnected(outlet, element, name) {\n        this.invokeControllerMethod(`${namespaceCamelize(name)}OutletDisconnected`, outlet, element);\n    }\n    invokeControllerMethod(methodName, ...args) {\n        const controller = this.controller;\n        if (typeof controller[methodName] == \"function\") {\n            controller[methodName](...args);\n        }\n    }\n}\n\nfunction bless(constructor) {\n    return shadow(constructor, getBlessedProperties(constructor));\n}\nfunction shadow(constructor, properties) {\n    const shadowConstructor = extend(constructor);\n    const shadowProperties = getShadowProperties(constructor.prototype, properties);\n    Object.defineProperties(shadowConstructor.prototype, shadowProperties);\n    return shadowConstructor;\n}\nfunction getBlessedProperties(constructor) {\n    const blessings = readInheritableStaticArrayValues(constructor, \"blessings\");\n    return blessings.reduce((blessedProperties, blessing) => {\n        const properties = blessing(constructor);\n        for (const key in properties) {\n            const descriptor = blessedProperties[key] || {};\n            blessedProperties[key] = Object.assign(descriptor, properties[key]);\n        }\n        return blessedProperties;\n    }, {});\n}\nfunction getShadowProperties(prototype, properties) {\n    return getOwnKeys(properties).reduce((shadowProperties, key) => {\n        const descriptor = getShadowedDescriptor(prototype, properties, key);\n        if (descriptor) {\n            Object.assign(shadowProperties, { [key]: descriptor });\n        }\n        return shadowProperties;\n    }, {});\n}\nfunction getShadowedDescriptor(prototype, properties, key) {\n    const shadowingDescriptor = Object.getOwnPropertyDescriptor(prototype, key);\n    const shadowedByValue = shadowingDescriptor && \"value\" in shadowingDescriptor;\n    if (!shadowedByValue) {\n        const descriptor = Object.getOwnPropertyDescriptor(properties, key).value;\n        if (shadowingDescriptor) {\n            descriptor.get = shadowingDescriptor.get || descriptor.get;\n            descriptor.set = shadowingDescriptor.set || descriptor.set;\n        }\n        return descriptor;\n    }\n}\nconst getOwnKeys = (() => {\n    if (typeof Object.getOwnPropertySymbols == \"function\") {\n        return (object) => [...Object.getOwnPropertyNames(object), ...Object.getOwnPropertySymbols(object)];\n    }\n    else {\n        return Object.getOwnPropertyNames;\n    }\n})();\nconst extend = (() => {\n    function extendWithReflect(constructor) {\n        function extended() {\n            return Reflect.construct(constructor, arguments, new.target);\n        }\n        extended.prototype = Object.create(constructor.prototype, {\n            constructor: { value: extended },\n        });\n        Reflect.setPrototypeOf(extended, constructor);\n        return extended;\n    }\n    function testReflectExtension() {\n        const a = function () {\n            this.a.call(this);\n        };\n        const b = extendWithReflect(a);\n        b.prototype.a = function () { };\n        return new b();\n    }\n    try {\n        testReflectExtension();\n        return extendWithReflect;\n    }\n    catch (error) {\n        return (constructor) => class extended extends constructor {\n        };\n    }\n})();\n\nfunction blessDefinition(definition) {\n    return {\n        identifier: definition.identifier,\n        controllerConstructor: bless(definition.controllerConstructor),\n    };\n}\n\nclass Module {\n    constructor(application, definition) {\n        this.application = application;\n        this.definition = blessDefinition(definition);\n        this.contextsByScope = new WeakMap();\n        this.connectedContexts = new Set();\n    }\n    get identifier() {\n        return this.definition.identifier;\n    }\n    get controllerConstructor() {\n        return this.definition.controllerConstructor;\n    }\n    get contexts() {\n        return Array.from(this.connectedContexts);\n    }\n    connectContextForScope(scope) {\n        const context = this.fetchContextForScope(scope);\n        this.connectedContexts.add(context);\n        context.connect();\n    }\n    disconnectContextForScope(scope) {\n        const context = this.contextsByScope.get(scope);\n        if (context) {\n            this.connectedContexts.delete(context);\n            context.disconnect();\n        }\n    }\n    fetchContextForScope(scope) {\n        let context = this.contextsByScope.get(scope);\n        if (!context) {\n            context = new Context(this, scope);\n            this.contextsByScope.set(scope, context);\n        }\n        return context;\n    }\n}\n\nclass ClassMap {\n    constructor(scope) {\n        this.scope = scope;\n    }\n    has(name) {\n        return this.data.has(this.getDataKey(name));\n    }\n    get(name) {\n        return this.getAll(name)[0];\n    }\n    getAll(name) {\n        const tokenString = this.data.get(this.getDataKey(name)) || \"\";\n        return tokenize(tokenString);\n    }\n    getAttributeName(name) {\n        return this.data.getAttributeNameForKey(this.getDataKey(name));\n    }\n    getDataKey(name) {\n        return `${name}-class`;\n    }\n    get data() {\n        return this.scope.data;\n    }\n}\n\nclass DataMap {\n    constructor(scope) {\n        this.scope = scope;\n    }\n    get element() {\n        return this.scope.element;\n    }\n    get identifier() {\n        return this.scope.identifier;\n    }\n    get(key) {\n        const name = this.getAttributeNameForKey(key);\n        return this.element.getAttribute(name);\n    }\n    set(key, value) {\n        const name = this.getAttributeNameForKey(key);\n        this.element.setAttribute(name, value);\n        return this.get(key);\n    }\n    has(key) {\n        const name = this.getAttributeNameForKey(key);\n        return this.element.hasAttribute(name);\n    }\n    delete(key) {\n        if (this.has(key)) {\n            const name = this.getAttributeNameForKey(key);\n            this.element.removeAttribute(name);\n            return true;\n        }\n        else {\n            return false;\n        }\n    }\n    getAttributeNameForKey(key) {\n        return `data-${this.identifier}-${dasherize(key)}`;\n    }\n}\n\nclass Guide {\n    constructor(logger) {\n        this.warnedKeysByObject = new WeakMap();\n        this.logger = logger;\n    }\n    warn(object, key, message) {\n        let warnedKeys = this.warnedKeysByObject.get(object);\n        if (!warnedKeys) {\n            warnedKeys = new Set();\n            this.warnedKeysByObject.set(object, warnedKeys);\n        }\n        if (!warnedKeys.has(key)) {\n            warnedKeys.add(key);\n            this.logger.warn(message, object);\n        }\n    }\n}\n\nfunction attributeValueContainsToken(attributeName, token) {\n    return `[${attributeName}~=\"${token}\"]`;\n}\n\nclass TargetSet {\n    constructor(scope) {\n        this.scope = scope;\n    }\n    get element() {\n        return this.scope.element;\n    }\n    get identifier() {\n        return this.scope.identifier;\n    }\n    get schema() {\n        return this.scope.schema;\n    }\n    has(targetName) {\n        return this.find(targetName) != null;\n    }\n    find(...targetNames) {\n        return targetNames.reduce((target, targetName) => target || this.findTarget(targetName) || this.findLegacyTarget(targetName), undefined);\n    }\n    findAll(...targetNames) {\n        return targetNames.reduce((targets, targetName) => [\n            ...targets,\n            ...this.findAllTargets(targetName),\n            ...this.findAllLegacyTargets(targetName),\n        ], []);\n    }\n    findTarget(targetName) {\n        const selector = this.getSelectorForTargetName(targetName);\n        return this.scope.findElement(selector);\n    }\n    findAllTargets(targetName) {\n        const selector = this.getSelectorForTargetName(targetName);\n        return this.scope.findAllElements(selector);\n    }\n    getSelectorForTargetName(targetName) {\n        const attributeName = this.schema.targetAttributeForScope(this.identifier);\n        return attributeValueContainsToken(attributeName, targetName);\n    }\n    findLegacyTarget(targetName) {\n        const selector = this.getLegacySelectorForTargetName(targetName);\n        return this.deprecate(this.scope.findElement(selector), targetName);\n    }\n    findAllLegacyTargets(targetName) {\n        const selector = this.getLegacySelectorForTargetName(targetName);\n        return this.scope.findAllElements(selector).map((element) => this.deprecate(element, targetName));\n    }\n    getLegacySelectorForTargetName(targetName) {\n        const targetDescriptor = `${this.identifier}.${targetName}`;\n        return attributeValueContainsToken(this.schema.targetAttribute, targetDescriptor);\n    }\n    deprecate(element, targetName) {\n        if (element) {\n            const { identifier } = this;\n            const attributeName = this.schema.targetAttribute;\n            const revisedAttributeName = this.schema.targetAttributeForScope(identifier);\n            this.guide.warn(element, `target:${targetName}`, `Please replace ${attributeName}=\"${identifier}.${targetName}\" with ${revisedAttributeName}=\"${targetName}\". ` +\n                `The ${attributeName} attribute is deprecated and will be removed in a future version of Stimulus.`);\n        }\n        return element;\n    }\n    get guide() {\n        return this.scope.guide;\n    }\n}\n\nclass OutletSet {\n    constructor(scope, controllerElement) {\n        this.scope = scope;\n        this.controllerElement = controllerElement;\n    }\n    get element() {\n        return this.scope.element;\n    }\n    get identifier() {\n        return this.scope.identifier;\n    }\n    get schema() {\n        return this.scope.schema;\n    }\n    has(outletName) {\n        return this.find(outletName) != null;\n    }\n    find(...outletNames) {\n        return outletNames.reduce((outlet, outletName) => outlet || this.findOutlet(outletName), undefined);\n    }\n    findAll(...outletNames) {\n        return outletNames.reduce((outlets, outletName) => [...outlets, ...this.findAllOutlets(outletName)], []);\n    }\n    getSelectorForOutletName(outletName) {\n        const attributeName = this.schema.outletAttributeForScope(this.identifier, outletName);\n        return this.controllerElement.getAttribute(attributeName);\n    }\n    findOutlet(outletName) {\n        const selector = this.getSelectorForOutletName(outletName);\n        if (selector)\n            return this.findElement(selector, outletName);\n    }\n    findAllOutlets(outletName) {\n        const selector = this.getSelectorForOutletName(outletName);\n        return selector ? this.findAllElements(selector, outletName) : [];\n    }\n    findElement(selector, outletName) {\n        const elements = this.scope.queryElements(selector);\n        return elements.filter((element) => this.matchesElement(element, selector, outletName))[0];\n    }\n    findAllElements(selector, outletName) {\n        const elements = this.scope.queryElements(selector);\n        return elements.filter((element) => this.matchesElement(element, selector, outletName));\n    }\n    matchesElement(element, selector, outletName) {\n        const controllerAttribute = element.getAttribute(this.scope.schema.controllerAttribute) || \"\";\n        return element.matches(selector) && controllerAttribute.split(\" \").includes(outletName);\n    }\n}\n\nclass Scope {\n    constructor(schema, element, identifier, logger) {\n        this.targets = new TargetSet(this);\n        this.classes = new ClassMap(this);\n        this.data = new DataMap(this);\n        this.containsElement = (element) => {\n            return element.closest(this.controllerSelector) === this.element;\n        };\n        this.schema = schema;\n        this.element = element;\n        this.identifier = identifier;\n        this.guide = new Guide(logger);\n        this.outlets = new OutletSet(this.documentScope, element);\n    }\n    findElement(selector) {\n        return this.element.matches(selector) ? this.element : this.queryElements(selector).find(this.containsElement);\n    }\n    findAllElements(selector) {\n        return [\n            ...(this.element.matches(selector) ? [this.element] : []),\n            ...this.queryElements(selector).filter(this.containsElement),\n        ];\n    }\n    queryElements(selector) {\n        return Array.from(this.element.querySelectorAll(selector));\n    }\n    get controllerSelector() {\n        return attributeValueContainsToken(this.schema.controllerAttribute, this.identifier);\n    }\n    get isDocumentScope() {\n        return this.element === document.documentElement;\n    }\n    get documentScope() {\n        return this.isDocumentScope\n            ? this\n            : new Scope(this.schema, document.documentElement, this.identifier, this.guide.logger);\n    }\n}\n\nclass ScopeObserver {\n    constructor(element, schema, delegate) {\n        this.element = element;\n        this.schema = schema;\n        this.delegate = delegate;\n        this.valueListObserver = new ValueListObserver(this.element, this.controllerAttribute, this);\n        this.scopesByIdentifierByElement = new WeakMap();\n        this.scopeReferenceCounts = new WeakMap();\n    }\n    start() {\n        this.valueListObserver.start();\n    }\n    stop() {\n        this.valueListObserver.stop();\n    }\n    get controllerAttribute() {\n        return this.schema.controllerAttribute;\n    }\n    parseValueForToken(token) {\n        const { element, content: identifier } = token;\n        return this.parseValueForElementAndIdentifier(element, identifier);\n    }\n    parseValueForElementAndIdentifier(element, identifier) {\n        const scopesByIdentifier = this.fetchScopesByIdentifierForElement(element);\n        let scope = scopesByIdentifier.get(identifier);\n        if (!scope) {\n            scope = this.delegate.createScopeForElementAndIdentifier(element, identifier);\n            scopesByIdentifier.set(identifier, scope);\n        }\n        return scope;\n    }\n    elementMatchedValue(element, value) {\n        const referenceCount = (this.scopeReferenceCounts.get(value) || 0) + 1;\n        this.scopeReferenceCounts.set(value, referenceCount);\n        if (referenceCount == 1) {\n            this.delegate.scopeConnected(value);\n        }\n    }\n    elementUnmatchedValue(element, value) {\n        const referenceCount = this.scopeReferenceCounts.get(value);\n        if (referenceCount) {\n            this.scopeReferenceCounts.set(value, referenceCount - 1);\n            if (referenceCount == 1) {\n                this.delegate.scopeDisconnected(value);\n            }\n        }\n    }\n    fetchScopesByIdentifierForElement(element) {\n        let scopesByIdentifier = this.scopesByIdentifierByElement.get(element);\n        if (!scopesByIdentifier) {\n            scopesByIdentifier = new Map();\n            this.scopesByIdentifierByElement.set(element, scopesByIdentifier);\n        }\n        return scopesByIdentifier;\n    }\n}\n\nclass Router {\n    constructor(application) {\n        this.application = application;\n        this.scopeObserver = new ScopeObserver(this.element, this.schema, this);\n        this.scopesByIdentifier = new Multimap();\n        this.modulesByIdentifier = new Map();\n    }\n    get element() {\n        return this.application.element;\n    }\n    get schema() {\n        return this.application.schema;\n    }\n    get logger() {\n        return this.application.logger;\n    }\n    get controllerAttribute() {\n        return this.schema.controllerAttribute;\n    }\n    get modules() {\n        return Array.from(this.modulesByIdentifier.values());\n    }\n    get contexts() {\n        return this.modules.reduce((contexts, module) => contexts.concat(module.contexts), []);\n    }\n    start() {\n        this.scopeObserver.start();\n    }\n    stop() {\n        this.scopeObserver.stop();\n    }\n    loadDefinition(definition) {\n        this.unloadIdentifier(definition.identifier);\n        const module = new Module(this.application, definition);\n        this.connectModule(module);\n        const afterLoad = definition.controllerConstructor.afterLoad;\n        if (afterLoad) {\n            afterLoad.call(definition.controllerConstructor, definition.identifier, this.application);\n        }\n    }\n    unloadIdentifier(identifier) {\n        const module = this.modulesByIdentifier.get(identifier);\n        if (module) {\n            this.disconnectModule(module);\n        }\n    }\n    getContextForElementAndIdentifier(element, identifier) {\n        const module = this.modulesByIdentifier.get(identifier);\n        if (module) {\n            return module.contexts.find((context) => context.element == element);\n        }\n    }\n    proposeToConnectScopeForElementAndIdentifier(element, identifier) {\n        const scope = this.scopeObserver.parseValueForElementAndIdentifier(element, identifier);\n        if (scope) {\n            this.scopeObserver.elementMatchedValue(scope.element, scope);\n        }\n        else {\n            console.error(`Couldn't find or create scope for identifier: \"${identifier}\" and element:`, element);\n        }\n    }\n    handleError(error, message, detail) {\n        this.application.handleError(error, message, detail);\n    }\n    createScopeForElementAndIdentifier(element, identifier) {\n        return new Scope(this.schema, element, identifier, this.logger);\n    }\n    scopeConnected(scope) {\n        this.scopesByIdentifier.add(scope.identifier, scope);\n        const module = this.modulesByIdentifier.get(scope.identifier);\n        if (module) {\n            module.connectContextForScope(scope);\n        }\n    }\n    scopeDisconnected(scope) {\n        this.scopesByIdentifier.delete(scope.identifier, scope);\n        const module = this.modulesByIdentifier.get(scope.identifier);\n        if (module) {\n            module.disconnectContextForScope(scope);\n        }\n    }\n    connectModule(module) {\n        this.modulesByIdentifier.set(module.identifier, module);\n        const scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n        scopes.forEach((scope) => module.connectContextForScope(scope));\n    }\n    disconnectModule(module) {\n        this.modulesByIdentifier.delete(module.identifier);\n        const scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n        scopes.forEach((scope) => module.disconnectContextForScope(scope));\n    }\n}\n\nconst defaultSchema = {\n    controllerAttribute: \"data-controller\",\n    actionAttribute: \"data-action\",\n    targetAttribute: \"data-target\",\n    targetAttributeForScope: (identifier) => `data-${identifier}-target`,\n    outletAttributeForScope: (identifier, outlet) => `data-${identifier}-${outlet}-outlet`,\n    keyMappings: Object.assign(Object.assign({ enter: \"Enter\", tab: \"Tab\", esc: \"Escape\", space: \" \", up: \"ArrowUp\", down: \"ArrowDown\", left: \"ArrowLeft\", right: \"ArrowRight\", home: \"Home\", end: \"End\", page_up: \"PageUp\", page_down: \"PageDown\" }, objectFromEntries(\"abcdefghijklmnopqrstuvwxyz\".split(\"\").map((c) => [c, c]))), objectFromEntries(\"0123456789\".split(\"\").map((n) => [n, n]))),\n};\nfunction objectFromEntries(array) {\n    return array.reduce((memo, [k, v]) => (Object.assign(Object.assign({}, memo), { [k]: v })), {});\n}\n\nclass Application {\n    constructor(element = document.documentElement, schema = defaultSchema) {\n        this.logger = console;\n        this.debug = false;\n        this.logDebugActivity = (identifier, functionName, detail = {}) => {\n            if (this.debug) {\n                this.logFormattedMessage(identifier, functionName, detail);\n            }\n        };\n        this.element = element;\n        this.schema = schema;\n        this.dispatcher = new Dispatcher(this);\n        this.router = new Router(this);\n        this.actionDescriptorFilters = Object.assign({}, defaultActionDescriptorFilters);\n    }\n    static start(element, schema) {\n        const application = new this(element, schema);\n        application.start();\n        return application;\n    }\n    async start() {\n        await domReady();\n        this.logDebugActivity(\"application\", \"starting\");\n        this.dispatcher.start();\n        this.router.start();\n        this.logDebugActivity(\"application\", \"start\");\n    }\n    stop() {\n        this.logDebugActivity(\"application\", \"stopping\");\n        this.dispatcher.stop();\n        this.router.stop();\n        this.logDebugActivity(\"application\", \"stop\");\n    }\n    register(identifier, controllerConstructor) {\n        this.load({ identifier, controllerConstructor });\n    }\n    registerActionOption(name, filter) {\n        this.actionDescriptorFilters[name] = filter;\n    }\n    load(head, ...rest) {\n        const definitions = Array.isArray(head) ? head : [head, ...rest];\n        definitions.forEach((definition) => {\n            if (definition.controllerConstructor.shouldLoad) {\n                this.router.loadDefinition(definition);\n            }\n        });\n    }\n    unload(head, ...rest) {\n        const identifiers = Array.isArray(head) ? head : [head, ...rest];\n        identifiers.forEach((identifier) => this.router.unloadIdentifier(identifier));\n    }\n    get controllers() {\n        return this.router.contexts.map((context) => context.controller);\n    }\n    getControllerForElementAndIdentifier(element, identifier) {\n        const context = this.router.getContextForElementAndIdentifier(element, identifier);\n        return context ? context.controller : null;\n    }\n    handleError(error, message, detail) {\n        var _a;\n        this.logger.error(`%s\\n\\n%o\\n\\n%o`, message, error, detail);\n        (_a = window.onerror) === null || _a === void 0 ? void 0 : _a.call(window, message, \"\", 0, 0, error);\n    }\n    logFormattedMessage(identifier, functionName, detail = {}) {\n        detail = Object.assign({ application: this }, detail);\n        this.logger.groupCollapsed(`${identifier} #${functionName}`);\n        this.logger.log(\"details:\", Object.assign({}, detail));\n        this.logger.groupEnd();\n    }\n}\nfunction domReady() {\n    return new Promise((resolve) => {\n        if (document.readyState == \"loading\") {\n            document.addEventListener(\"DOMContentLoaded\", () => resolve());\n        }\n        else {\n            resolve();\n        }\n    });\n}\n\nfunction ClassPropertiesBlessing(constructor) {\n    const classes = readInheritableStaticArrayValues(constructor, \"classes\");\n    return classes.reduce((properties, classDefinition) => {\n        return Object.assign(properties, propertiesForClassDefinition(classDefinition));\n    }, {});\n}\nfunction propertiesForClassDefinition(key) {\n    return {\n        [`${key}Class`]: {\n            get() {\n                const { classes } = this;\n                if (classes.has(key)) {\n                    return classes.get(key);\n                }\n                else {\n                    const attribute = classes.getAttributeName(key);\n                    throw new Error(`Missing attribute \"${attribute}\"`);\n                }\n            },\n        },\n        [`${key}Classes`]: {\n            get() {\n                return this.classes.getAll(key);\n            },\n        },\n        [`has${capitalize(key)}Class`]: {\n            get() {\n                return this.classes.has(key);\n            },\n        },\n    };\n}\n\nfunction OutletPropertiesBlessing(constructor) {\n    const outlets = readInheritableStaticArrayValues(constructor, \"outlets\");\n    return outlets.reduce((properties, outletDefinition) => {\n        return Object.assign(properties, propertiesForOutletDefinition(outletDefinition));\n    }, {});\n}\nfunction getOutletController(controller, element, identifier) {\n    return controller.application.getControllerForElementAndIdentifier(element, identifier);\n}\nfunction getControllerAndEnsureConnectedScope(controller, element, outletName) {\n    let outletController = getOutletController(controller, element, outletName);\n    if (outletController)\n        return outletController;\n    controller.application.router.proposeToConnectScopeForElementAndIdentifier(element, outletName);\n    outletController = getOutletController(controller, element, outletName);\n    if (outletController)\n        return outletController;\n}\nfunction propertiesForOutletDefinition(name) {\n    const camelizedName = namespaceCamelize(name);\n    return {\n        [`${camelizedName}Outlet`]: {\n            get() {\n                const outletElement = this.outlets.find(name);\n                const selector = this.outlets.getSelectorForOutletName(name);\n                if (outletElement) {\n                    const outletController = getControllerAndEnsureConnectedScope(this, outletElement, name);\n                    if (outletController)\n                        return outletController;\n                    throw new Error(`The provided outlet element is missing an outlet controller \"${name}\" instance for host controller \"${this.identifier}\"`);\n                }\n                throw new Error(`Missing outlet element \"${name}\" for host controller \"${this.identifier}\". Stimulus couldn't find a matching outlet element using selector \"${selector}\".`);\n            },\n        },\n        [`${camelizedName}Outlets`]: {\n            get() {\n                const outlets = this.outlets.findAll(name);\n                if (outlets.length > 0) {\n                    return outlets\n                        .map((outletElement) => {\n                        const outletController = getControllerAndEnsureConnectedScope(this, outletElement, name);\n                        if (outletController)\n                            return outletController;\n                        console.warn(`The provided outlet element is missing an outlet controller \"${name}\" instance for host controller \"${this.identifier}\"`, outletElement);\n                    })\n                        .filter((controller) => controller);\n                }\n                return [];\n            },\n        },\n        [`${camelizedName}OutletElement`]: {\n            get() {\n                const outletElement = this.outlets.find(name);\n                const selector = this.outlets.getSelectorForOutletName(name);\n                if (outletElement) {\n                    return outletElement;\n                }\n                else {\n                    throw new Error(`Missing outlet element \"${name}\" for host controller \"${this.identifier}\". Stimulus couldn't find a matching outlet element using selector \"${selector}\".`);\n                }\n            },\n        },\n        [`${camelizedName}OutletElements`]: {\n            get() {\n                return this.outlets.findAll(name);\n            },\n        },\n        [`has${capitalize(camelizedName)}Outlet`]: {\n            get() {\n                return this.outlets.has(name);\n            },\n        },\n    };\n}\n\nfunction TargetPropertiesBlessing(constructor) {\n    const targets = readInheritableStaticArrayValues(constructor, \"targets\");\n    return targets.reduce((properties, targetDefinition) => {\n        return Object.assign(properties, propertiesForTargetDefinition(targetDefinition));\n    }, {});\n}\nfunction propertiesForTargetDefinition(name) {\n    return {\n        [`${name}Target`]: {\n            get() {\n                const target = this.targets.find(name);\n                if (target) {\n                    return target;\n                }\n                else {\n                    throw new Error(`Missing target element \"${name}\" for \"${this.identifier}\" controller`);\n                }\n            },\n        },\n        [`${name}Targets`]: {\n            get() {\n                return this.targets.findAll(name);\n            },\n        },\n        [`has${capitalize(name)}Target`]: {\n            get() {\n                return this.targets.has(name);\n            },\n        },\n    };\n}\n\nfunction ValuePropertiesBlessing(constructor) {\n    const valueDefinitionPairs = readInheritableStaticObjectPairs(constructor, \"values\");\n    const propertyDescriptorMap = {\n        valueDescriptorMap: {\n            get() {\n                return valueDefinitionPairs.reduce((result, valueDefinitionPair) => {\n                    const valueDescriptor = parseValueDefinitionPair(valueDefinitionPair, this.identifier);\n                    const attributeName = this.data.getAttributeNameForKey(valueDescriptor.key);\n                    return Object.assign(result, { [attributeName]: valueDescriptor });\n                }, {});\n            },\n        },\n    };\n    return valueDefinitionPairs.reduce((properties, valueDefinitionPair) => {\n        return Object.assign(properties, propertiesForValueDefinitionPair(valueDefinitionPair));\n    }, propertyDescriptorMap);\n}\nfunction propertiesForValueDefinitionPair(valueDefinitionPair, controller) {\n    const definition = parseValueDefinitionPair(valueDefinitionPair, controller);\n    const { key, name, reader: read, writer: write } = definition;\n    return {\n        [name]: {\n            get() {\n                const value = this.data.get(key);\n                if (value !== null) {\n                    return read(value);\n                }\n                else {\n                    return definition.defaultValue;\n                }\n            },\n            set(value) {\n                if (value === undefined) {\n                    this.data.delete(key);\n                }\n                else {\n                    this.data.set(key, write(value));\n                }\n            },\n        },\n        [`has${capitalize(name)}`]: {\n            get() {\n                return this.data.has(key) || definition.hasCustomDefaultValue;\n            },\n        },\n    };\n}\nfunction parseValueDefinitionPair([token, typeDefinition], controller) {\n    return valueDescriptorForTokenAndTypeDefinition({\n        controller,\n        token,\n        typeDefinition,\n    });\n}\nfunction parseValueTypeConstant(constant) {\n    switch (constant) {\n        case Array:\n            return \"array\";\n        case Boolean:\n            return \"boolean\";\n        case Number:\n            return \"number\";\n        case Object:\n            return \"object\";\n        case String:\n            return \"string\";\n    }\n}\nfunction parseValueTypeDefault(defaultValue) {\n    switch (typeof defaultValue) {\n        case \"boolean\":\n            return \"boolean\";\n        case \"number\":\n            return \"number\";\n        case \"string\":\n            return \"string\";\n    }\n    if (Array.isArray(defaultValue))\n        return \"array\";\n    if (Object.prototype.toString.call(defaultValue) === \"[object Object]\")\n        return \"object\";\n}\nfunction parseValueTypeObject(payload) {\n    const { controller, token, typeObject } = payload;\n    const hasType = isSomething(typeObject.type);\n    const hasDefault = isSomething(typeObject.default);\n    const fullObject = hasType && hasDefault;\n    const onlyType = hasType && !hasDefault;\n    const onlyDefault = !hasType && hasDefault;\n    const typeFromObject = parseValueTypeConstant(typeObject.type);\n    const typeFromDefaultValue = parseValueTypeDefault(payload.typeObject.default);\n    if (onlyType)\n        return typeFromObject;\n    if (onlyDefault)\n        return typeFromDefaultValue;\n    if (typeFromObject !== typeFromDefaultValue) {\n        const propertyPath = controller ? `${controller}.${token}` : token;\n        throw new Error(`The specified default value for the Stimulus Value \"${propertyPath}\" must match the defined type \"${typeFromObject}\". The provided default value of \"${typeObject.default}\" is of type \"${typeFromDefaultValue}\".`);\n    }\n    if (fullObject)\n        return typeFromObject;\n}\nfunction parseValueTypeDefinition(payload) {\n    const { controller, token, typeDefinition } = payload;\n    const typeObject = { controller, token, typeObject: typeDefinition };\n    const typeFromObject = parseValueTypeObject(typeObject);\n    const typeFromDefaultValue = parseValueTypeDefault(typeDefinition);\n    const typeFromConstant = parseValueTypeConstant(typeDefinition);\n    const type = typeFromObject || typeFromDefaultValue || typeFromConstant;\n    if (type)\n        return type;\n    const propertyPath = controller ? `${controller}.${typeDefinition}` : token;\n    throw new Error(`Unknown value type \"${propertyPath}\" for \"${token}\" value`);\n}\nfunction defaultValueForDefinition(typeDefinition) {\n    const constant = parseValueTypeConstant(typeDefinition);\n    if (constant)\n        return defaultValuesByType[constant];\n    const hasDefault = hasProperty(typeDefinition, \"default\");\n    const hasType = hasProperty(typeDefinition, \"type\");\n    const typeObject = typeDefinition;\n    if (hasDefault)\n        return typeObject.default;\n    if (hasType) {\n        const { type } = typeObject;\n        const constantFromType = parseValueTypeConstant(type);\n        if (constantFromType)\n            return defaultValuesByType[constantFromType];\n    }\n    return typeDefinition;\n}\nfunction valueDescriptorForTokenAndTypeDefinition(payload) {\n    const { token, typeDefinition } = payload;\n    const key = `${dasherize(token)}-value`;\n    const type = parseValueTypeDefinition(payload);\n    return {\n        type,\n        key,\n        name: camelize(key),\n        get defaultValue() {\n            return defaultValueForDefinition(typeDefinition);\n        },\n        get hasCustomDefaultValue() {\n            return parseValueTypeDefault(typeDefinition) !== undefined;\n        },\n        reader: readers[type],\n        writer: writers[type] || writers.default,\n    };\n}\nconst defaultValuesByType = {\n    get array() {\n        return [];\n    },\n    boolean: false,\n    number: 0,\n    get object() {\n        return {};\n    },\n    string: \"\",\n};\nconst readers = {\n    array(value) {\n        const array = JSON.parse(value);\n        if (!Array.isArray(array)) {\n            throw new TypeError(`expected value of type \"array\" but instead got value \"${value}\" of type \"${parseValueTypeDefault(array)}\"`);\n        }\n        return array;\n    },\n    boolean(value) {\n        return !(value == \"0\" || String(value).toLowerCase() == \"false\");\n    },\n    number(value) {\n        return Number(value.replace(/_/g, \"\"));\n    },\n    object(value) {\n        const object = JSON.parse(value);\n        if (object === null || typeof object != \"object\" || Array.isArray(object)) {\n            throw new TypeError(`expected value of type \"object\" but instead got value \"${value}\" of type \"${parseValueTypeDefault(object)}\"`);\n        }\n        return object;\n    },\n    string(value) {\n        return value;\n    },\n};\nconst writers = {\n    default: writeString,\n    array: writeJSON,\n    object: writeJSON,\n};\nfunction writeJSON(value) {\n    return JSON.stringify(value);\n}\nfunction writeString(value) {\n    return `${value}`;\n}\n\nclass Controller {\n    constructor(context) {\n        this.context = context;\n    }\n    static get shouldLoad() {\n        return true;\n    }\n    static afterLoad(_identifier, _application) {\n        return;\n    }\n    get application() {\n        return this.context.application;\n    }\n    get scope() {\n        return this.context.scope;\n    }\n    get element() {\n        return this.scope.element;\n    }\n    get identifier() {\n        return this.scope.identifier;\n    }\n    get targets() {\n        return this.scope.targets;\n    }\n    get outlets() {\n        return this.scope.outlets;\n    }\n    get classes() {\n        return this.scope.classes;\n    }\n    get data() {\n        return this.scope.data;\n    }\n    initialize() {\n    }\n    connect() {\n    }\n    disconnect() {\n    }\n    dispatch(eventName, { target = this.element, detail = {}, prefix = this.identifier, bubbles = true, cancelable = true, } = {}) {\n        const type = prefix ? `${prefix}:${eventName}` : eventName;\n        const event = new CustomEvent(type, { detail, bubbles, cancelable });\n        target.dispatchEvent(event);\n        return event;\n    }\n}\nController.blessings = [\n    ClassPropertiesBlessing,\n    TargetPropertiesBlessing,\n    ValuePropertiesBlessing,\n    OutletPropertiesBlessing,\n];\nController.targets = [];\nController.outlets = [];\nController.values = {};\n\nexport { Application, AttributeObserver, Context, Controller, ElementObserver, IndexedMultimap, Multimap, SelectorObserver, StringMapObserver, TokenListObserver, ValueListObserver, add, defaultSchema, del, fetch, prune };\n", "import { Controller } from \"@hotwired/stimulus\";\r\nimport { debounce } from '../../utils/_debounce';\r\nimport { loading } from '../../utils/_loading';\r\n\r\nexport default class extends Controller {\r\n  static targets = ['product', 'search', 'container'];\r\n\r\n  connect() {\r\n    this.originalList = this.productTargets;\r\n\r\n    this.searchTarget.addEventListener('keyup', debounce((e) => {\r\n      this.filterProducts();\r\n    }, 250));\r\n  }\r\n\r\n  filterProducts() {\r\n    this.containerTarget.innerHTML = loading();\r\n\r\n    const searchTerm = this.searchTarget.value;\r\n\r\n    let filtered = this.originalList.filter((p) => {\r\n      let text = p.querySelector('.wui-booking-step__heading').textContent;\r\n      return this.isFuzzyMatch(text.toLowerCase(), searchTerm.toLowerCase());\r\n    });\r\n\r\n    if (filtered.length === 0) {\r\n      let noResultsDiv = document.createElement('div');\r\n      noResultsDiv.classList.add('p-2', 'text-center', 'fs-6');\r\n      noResultsDiv.textContent = 'No results';\r\n\r\n      this.containerTarget.innerHTML = '';\r\n\r\n      this.containerTarget.appendChild(noResultsDiv);\r\n    } else {\r\n      this.containerTarget.innerHTML = '';\r\n\r\n      filtered.forEach((div) => {\r\n        this.containerTarget.appendChild(div);\r\n      });\r\n    }\r\n  }\r\n\r\n  isFuzzyMatch(item, searchTerm) {\r\n    let searchIndex = 0;\r\n\r\n    for (let i = 0; i < item.length; i++) {\r\n      if (item[i] === searchTerm[searchIndex]) {\r\n        searchIndex++;\r\n      }\r\n      if (searchIndex === searchTerm.length) {\r\n        return true;\r\n      }\r\n    }\r\n\r\n    return false;\r\n  }\r\n}\r\n", "const debounce = (func, delay) => {\r\n  let debounceTimer;\r\n\r\n  return function () {\r\n    const context = this;\r\n    const args    = arguments;\r\n\r\n    clearTimeout(debounceTimer);\r\n    debounceTimer = setTimeout(() => func.apply(context, args), delay);\r\n  }\r\n}\r\n\r\nexport { debounce };\r\n", "const loading = (loadingText = \"\", size = 'm') => {\r\n  return `\r\n    <div class=\"page-loader d-flex justify-content-center align-items-center flex-column\">\r\n      <div>\r\n        <div class=\"spinner-border ${size === 'sm' ? 'spinner-border-sm' : '' }\" role=\"status\">\r\n          <span class=\"visually-hidden\">${loadingText}</span>\r\n        </div>\r\n      </div>\r\n      <div class=\"page-loader-text\">${loadingText}</div>\r\n    </div>`;\r\n}\r\n\r\nexport { loading };\r\n", "import { Controller } from \"@hotwired/stimulus\";\r\nimport { loading } from '../../utils/_loading';\r\n\r\nexport default class extends Controller {\r\n  static targets = ['select']\r\n\r\n  loadProfessional(e) {\r\n    const bookingContainer = document.querySelector('[data-booking-container]');\r\n    bookingContainer.innerHTML = loading('Fetching details');\r\n\r\n    const baseUrl    = e.target.dataset.url;\r\n    const merchantId = e.target.value;\r\n\r\n    window.location = `${baseUrl}?merchant_id=${merchantId}`;\r\n  }\r\n\r\n}\r\n", "import { Controller } from \"@hotwired/stimulus\";\r\nimport Daily from \"@daily-co/daily-js\"\r\n\r\nexport default class extends Controller {\r\n  static targets = ['video'];\r\n\r\n  connect() {\r\n    window.Daily = Daily;\r\n\r\n    let callUrl = this.videoTarget.dataset.callUrl;\r\n    let token = this.videoTarget.dataset.token;\r\n\r\n    const options = {\r\n      showLeaveButton: true,\r\n      token: token,\r\n      iframeStyle: {\r\n        width: '100%',\r\n        height: '100%',\r\n      },\r\n      url: callUrl\r\n    }\r\n\r\n    const MY_IFRAME = document.querySelector('iframe');\r\n\r\n    MY_IFRAME.setAttribute(\r\n      'allow',\r\n      'microphone; camera; autoplay; display-capture'\r\n    );\r\n\r\n    let call = Daily.wrap(MY_IFRAME, options);\r\n\r\n    call.join();\r\n  }\r\n}\r\n", "function e(e,t){if(null==e)return{};var n,r,i=function(e,t){if(null==e)return{};var n,r,i={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}function t(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}function n(e){return n=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},n(e)}function r(e){var t=function(e,t){if(\"object\"!==n(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var i=r.call(e,t||\"default\");if(\"object\"!==n(i))return i;throw new TypeError(\"@@toPrimitive must return a primitive value.\")}return(\"string\"===t?String:Number)(e)}(e,\"string\");return\"symbol\"===n(t)?t:String(t)}function i(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,\"value\"in i&&(i.writable=!0),Object.defineProperty(e,r(i.key),i)}}function o(e,t,n){return t&&i(e.prototype,t),n&&i(e,n),Object.defineProperty(e,\"prototype\",{writable:!1}),e}function a(e){if(void 0===e)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return e}function s(e,t){return s=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},s(e,t)}function c(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,\"prototype\",{writable:!1}),t&&s(e,t)}function l(e,t){if(t&&(\"object\"===n(t)||\"function\"==typeof t))return t;if(void 0!==t)throw new TypeError(\"Derived constructors may only return object or undefined\");return a(e)}function u(e){return u=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},u(e)}function d(e,t,n){return(t=r(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function h(e,t,n,r,i,o,a){try{var s=e[o](a),c=s.value}catch(e){return void n(e)}s.done?t(c):Promise.resolve(c).then(r,i)}function p(e){return function(){var t=this,n=arguments;return new Promise((function(r,i){var o=e.apply(t,n);function a(e){h(o,r,i,a,s,\"next\",e)}function s(e){h(o,r,i,a,s,\"throw\",e)}a(void 0)}))}}function f(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function g(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:\"undefined\"!=typeof Symbol&&e[Symbol.iterator]||e[\"@@iterator\"];if(null!=n){var r,i,o,a,s=[],c=!0,l=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=o.call(n)).done)&&(s.push(r.value),s.length!==t);c=!0);}catch(e){l=!0,i=e}finally{try{if(!c&&null!=n.return&&(a=n.return(),Object(a)!==a))return}finally{if(l)throw i}}return s}}(e,t)||function(e,t){if(e){if(\"string\"==typeof e)return f(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return\"Object\"===n&&e.constructor&&(n=e.constructor.name),\"Map\"===n||\"Set\"===n?Array.from(e):\"Arguments\"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?f(e,t):void 0}}(e,t)||function(){throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}var v,m={},y={get exports(){return m},set exports(e){m=e}},_=\"object\"==typeof Reflect?Reflect:null,b=_&&\"function\"==typeof _.apply?_.apply:function(e,t,n){return Function.prototype.apply.call(e,t,n)};v=_&&\"function\"==typeof _.ownKeys?_.ownKeys:Object.getOwnPropertySymbols?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:function(e){return Object.getOwnPropertyNames(e)};var w=Number.isNaN||function(e){return e!=e};function S(){S.init.call(this)}y.exports=S,m.once=function(e,t){return new Promise((function(n,r){function i(n){e.removeListener(t,o),r(n)}function o(){\"function\"==typeof e.removeListener&&e.removeListener(\"error\",i),n([].slice.call(arguments))}j(e,t,o,{once:!0}),\"error\"!==t&&function(e,t,n){\"function\"==typeof e.on&&j(e,\"error\",t,n)}(e,i,{once:!0})}))},S.EventEmitter=S,S.prototype._events=void 0,S.prototype._eventsCount=0,S.prototype._maxListeners=void 0;var k=10;function E(e){if(\"function\"!=typeof e)throw new TypeError('The \"listener\" argument must be of type Function. Received type '+typeof e)}function C(e){return void 0===e._maxListeners?S.defaultMaxListeners:e._maxListeners}function M(e,t,n,r){var i,o,a,s;if(E(n),void 0===(o=e._events)?(o=e._events=Object.create(null),e._eventsCount=0):(void 0!==o.newListener&&(e.emit(\"newListener\",t,n.listener?n.listener:n),o=e._events),a=o[t]),void 0===a)a=o[t]=n,++e._eventsCount;else if(\"function\"==typeof a?a=o[t]=r?[n,a]:[a,n]:r?a.unshift(n):a.push(n),(i=C(e))>0&&a.length>i&&!a.warned){a.warned=!0;var c=new Error(\"Possible EventEmitter memory leak detected. \"+a.length+\" \"+String(t)+\" listeners added. Use emitter.setMaxListeners() to increase limit\");c.name=\"MaxListenersExceededWarning\",c.emitter=e,c.type=t,c.count=a.length,s=c,console&&console.warn&&console.warn(s)}return e}function T(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,0===arguments.length?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function O(e,t,n){var r={fired:!1,wrapFn:void 0,target:e,type:t,listener:n},i=T.bind(r);return i.listener=n,r.wrapFn=i,i}function P(e,t,n){var r=e._events;if(void 0===r)return[];var i=r[t];return void 0===i?[]:\"function\"==typeof i?n?[i.listener||i]:[i]:n?function(e){for(var t=new Array(e.length),n=0;n<t.length;++n)t[n]=e[n].listener||e[n];return t}(i):D(i,i.length)}function A(e){var t=this._events;if(void 0!==t){var n=t[e];if(\"function\"==typeof n)return 1;if(void 0!==n)return n.length}return 0}function D(e,t){for(var n=new Array(t),r=0;r<t;++r)n[r]=e[r];return n}function j(e,t,n,r){if(\"function\"==typeof e.on)r.once?e.once(t,n):e.on(t,n);else{if(\"function\"!=typeof e.addEventListener)throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type '+typeof e);e.addEventListener(t,(function i(o){r.once&&e.removeEventListener(t,i),n(o)}))}}Object.defineProperty(S,\"defaultMaxListeners\",{enumerable:!0,get:function(){return k},set:function(e){if(\"number\"!=typeof e||e<0||w(e))throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received '+e+\".\");k=e}}),S.init=function(){void 0!==this._events&&this._events!==Object.getPrototypeOf(this)._events||(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},S.prototype.setMaxListeners=function(e){if(\"number\"!=typeof e||e<0||w(e))throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received '+e+\".\");return this._maxListeners=e,this},S.prototype.getMaxListeners=function(){return C(this)},S.prototype.emit=function(e){for(var t=[],n=1;n<arguments.length;n++)t.push(arguments[n]);var r=\"error\"===e,i=this._events;if(void 0!==i)r=r&&void 0===i.error;else if(!r)return!1;if(r){var o;if(t.length>0&&(o=t[0]),o instanceof Error)throw o;var a=new Error(\"Unhandled error.\"+(o?\" (\"+o.message+\")\":\"\"));throw a.context=o,a}var s=i[e];if(void 0===s)return!1;if(\"function\"==typeof s)b(s,this,t);else{var c=s.length,l=D(s,c);for(n=0;n<c;++n)b(l[n],this,t)}return!0},S.prototype.addListener=function(e,t){return M(this,e,t,!1)},S.prototype.on=S.prototype.addListener,S.prototype.prependListener=function(e,t){return M(this,e,t,!0)},S.prototype.once=function(e,t){return E(t),this.on(e,O(this,e,t)),this},S.prototype.prependOnceListener=function(e,t){return E(t),this.prependListener(e,O(this,e,t)),this},S.prototype.removeListener=function(e,t){var n,r,i,o,a;if(E(t),void 0===(r=this._events))return this;if(void 0===(n=r[e]))return this;if(n===t||n.listener===t)0==--this._eventsCount?this._events=Object.create(null):(delete r[e],r.removeListener&&this.emit(\"removeListener\",e,n.listener||t));else if(\"function\"!=typeof n){for(i=-1,o=n.length-1;o>=0;o--)if(n[o]===t||n[o].listener===t){a=n[o].listener,i=o;break}if(i<0)return this;0===i?n.shift():function(e,t){for(;t+1<e.length;t++)e[t]=e[t+1];e.pop()}(n,i),1===n.length&&(r[e]=n[0]),void 0!==r.removeListener&&this.emit(\"removeListener\",e,a||t)}return this},S.prototype.off=S.prototype.removeListener,S.prototype.removeAllListeners=function(e){var t,n,r;if(void 0===(n=this._events))return this;if(void 0===n.removeListener)return 0===arguments.length?(this._events=Object.create(null),this._eventsCount=0):void 0!==n[e]&&(0==--this._eventsCount?this._events=Object.create(null):delete n[e]),this;if(0===arguments.length){var i,o=Object.keys(n);for(r=0;r<o.length;++r)\"removeListener\"!==(i=o[r])&&this.removeAllListeners(i);return this.removeAllListeners(\"removeListener\"),this._events=Object.create(null),this._eventsCount=0,this}if(\"function\"==typeof(t=n[e]))this.removeListener(e,t);else if(void 0!==t)for(r=t.length-1;r>=0;r--)this.removeListener(e,t[r]);return this},S.prototype.listeners=function(e){return P(this,e,!0)},S.prototype.rawListeners=function(e){return P(this,e,!1)},S.listenerCount=function(e,t){return\"function\"==typeof e.listenerCount?e.listenerCount(t):A.call(e,t)},S.prototype.listenerCount=A,S.prototype.eventNames=function(){return this._eventsCount>0?v(this._events):[]};var x=Object.prototype.hasOwnProperty;function L(e,t,n){for(n of e.keys())if(I(n,t))return n}function I(e,t){var n,r,i;if(e===t)return!0;if(e&&t&&(n=e.constructor)===t.constructor){if(n===Date)return e.getTime()===t.getTime();if(n===RegExp)return e.toString()===t.toString();if(n===Array){if((r=e.length)===t.length)for(;r--&&I(e[r],t[r]););return-1===r}if(n===Set){if(e.size!==t.size)return!1;for(r of e){if((i=r)&&\"object\"==typeof i&&!(i=L(t,i)))return!1;if(!t.has(i))return!1}return!0}if(n===Map){if(e.size!==t.size)return!1;for(r of e){if((i=r[0])&&\"object\"==typeof i&&!(i=L(t,i)))return!1;if(!I(r[1],t.get(i)))return!1}return!0}if(n===ArrayBuffer)e=new Uint8Array(e),t=new Uint8Array(t);else if(n===DataView){if((r=e.byteLength)===t.byteLength)for(;r--&&e.getInt8(r)===t.getInt8(r););return-1===r}if(ArrayBuffer.isView(e)){if((r=e.byteLength)===t.byteLength)for(;r--&&e[r]===t[r];);return-1===r}if(!n||\"object\"==typeof e){for(n in r=0,e){if(x.call(e,n)&&++r&&!x.call(t,n))return!1;if(!(n in t)||!I(e[n],t[n]))return!1}return Object.keys(t).length===r}}return e!=e&&t!=t}const N={\"Amazon Silk\":\"amazon_silk\",\"Android Browser\":\"android\",Bada:\"bada\",BlackBerry:\"blackberry\",Chrome:\"chrome\",Chromium:\"chromium\",Electron:\"electron\",Epiphany:\"epiphany\",Firefox:\"firefox\",Focus:\"focus\",Generic:\"generic\",\"Google Search\":\"google_search\",Googlebot:\"googlebot\",\"Internet Explorer\":\"ie\",\"K-Meleon\":\"k_meleon\",Maxthon:\"maxthon\",\"Microsoft Edge\":\"edge\",\"MZ Browser\":\"mz\",\"NAVER Whale Browser\":\"naver\",Opera:\"opera\",\"Opera Coast\":\"opera_coast\",PhantomJS:\"phantomjs\",Puffin:\"puffin\",QupZilla:\"qupzilla\",QQ:\"qq\",QQLite:\"qqlite\",Safari:\"safari\",Sailfish:\"sailfish\",\"Samsung Internet for Android\":\"samsung_internet\",SeaMonkey:\"seamonkey\",Sleipnir:\"sleipnir\",Swing:\"swing\",Tizen:\"tizen\",\"UC Browser\":\"uc\",Vivaldi:\"vivaldi\",\"WebOS Browser\":\"webos\",WeChat:\"wechat\",\"Yandex Browser\":\"yandex\",Roku:\"roku\"},R={amazon_silk:\"Amazon Silk\",android:\"Android Browser\",bada:\"Bada\",blackberry:\"BlackBerry\",chrome:\"Chrome\",chromium:\"Chromium\",electron:\"Electron\",epiphany:\"Epiphany\",firefox:\"Firefox\",focus:\"Focus\",generic:\"Generic\",googlebot:\"Googlebot\",google_search:\"Google Search\",ie:\"Internet Explorer\",k_meleon:\"K-Meleon\",maxthon:\"Maxthon\",edge:\"Microsoft Edge\",mz:\"MZ Browser\",naver:\"NAVER Whale Browser\",opera:\"Opera\",opera_coast:\"Opera Coast\",phantomjs:\"PhantomJS\",puffin:\"Puffin\",qupzilla:\"QupZilla\",qq:\"QQ Browser\",qqlite:\"QQ Browser Lite\",safari:\"Safari\",sailfish:\"Sailfish\",samsung_internet:\"Samsung Internet for Android\",seamonkey:\"SeaMonkey\",sleipnir:\"Sleipnir\",swing:\"Swing\",tizen:\"Tizen\",uc:\"UC Browser\",vivaldi:\"Vivaldi\",webos:\"WebOS Browser\",wechat:\"WeChat\",yandex:\"Yandex Browser\"},B={tablet:\"tablet\",mobile:\"mobile\",desktop:\"desktop\",tv:\"tv\"},F={WindowsPhone:\"Windows Phone\",Windows:\"Windows\",MacOS:\"macOS\",iOS:\"iOS\",Android:\"Android\",WebOS:\"WebOS\",BlackBerry:\"BlackBerry\",Bada:\"Bada\",Tizen:\"Tizen\",Linux:\"Linux\",ChromeOS:\"Chrome OS\",PlayStation4:\"PlayStation 4\",Roku:\"Roku\"},U={EdgeHTML:\"EdgeHTML\",Blink:\"Blink\",Trident:\"Trident\",Presto:\"Presto\",Gecko:\"Gecko\",WebKit:\"WebKit\"};class V{static getFirstMatch(e,t){const n=t.match(e);return n&&n.length>0&&n[1]||\"\"}static getSecondMatch(e,t){const n=t.match(e);return n&&n.length>1&&n[2]||\"\"}static matchAndReturnConst(e,t,n){if(e.test(t))return n}static getWindowsVersionName(e){switch(e){case\"NT\":return\"NT\";case\"XP\":case\"NT 5.1\":return\"XP\";case\"NT 5.0\":return\"2000\";case\"NT 5.2\":return\"2003\";case\"NT 6.0\":return\"Vista\";case\"NT 6.1\":return\"7\";case\"NT 6.2\":return\"8\";case\"NT 6.3\":return\"8.1\";case\"NT 10.0\":return\"10\";default:return}}static getMacOSVersionName(e){const t=e.split(\".\").splice(0,2).map((e=>parseInt(e,10)||0));if(t.push(0),10===t[0])switch(t[1]){case 5:return\"Leopard\";case 6:return\"Snow Leopard\";case 7:return\"Lion\";case 8:return\"Mountain Lion\";case 9:return\"Mavericks\";case 10:return\"Yosemite\";case 11:return\"El Capitan\";case 12:return\"Sierra\";case 13:return\"High Sierra\";case 14:return\"Mojave\";case 15:return\"Catalina\";default:return}}static getAndroidVersionName(e){const t=e.split(\".\").splice(0,2).map((e=>parseInt(e,10)||0));if(t.push(0),!(1===t[0]&&t[1]<5))return 1===t[0]&&t[1]<6?\"Cupcake\":1===t[0]&&t[1]>=6?\"Donut\":2===t[0]&&t[1]<2?\"Eclair\":2===t[0]&&2===t[1]?\"Froyo\":2===t[0]&&t[1]>2?\"Gingerbread\":3===t[0]?\"Honeycomb\":4===t[0]&&t[1]<1?\"Ice Cream Sandwich\":4===t[0]&&t[1]<4?\"Jelly Bean\":4===t[0]&&t[1]>=4?\"KitKat\":5===t[0]?\"Lollipop\":6===t[0]?\"Marshmallow\":7===t[0]?\"Nougat\":8===t[0]?\"Oreo\":9===t[0]?\"Pie\":void 0}static getVersionPrecision(e){return e.split(\".\").length}static compareVersions(e,t,n=!1){const r=V.getVersionPrecision(e),i=V.getVersionPrecision(t);let o=Math.max(r,i),a=0;const s=V.map([e,t],(e=>{const t=o-V.getVersionPrecision(e),n=e+new Array(t+1).join(\".0\");return V.map(n.split(\".\"),(e=>new Array(20-e.length).join(\"0\")+e)).reverse()}));for(n&&(a=o-Math.min(r,i)),o-=1;o>=a;){if(s[0][o]>s[1][o])return 1;if(s[0][o]===s[1][o]){if(o===a)return 0;o-=1}else if(s[0][o]<s[1][o])return-1}}static map(e,t){const n=[];let r;if(Array.prototype.map)return Array.prototype.map.call(e,t);for(r=0;r<e.length;r+=1)n.push(t(e[r]));return n}static find(e,t){let n,r;if(Array.prototype.find)return Array.prototype.find.call(e,t);for(n=0,r=e.length;n<r;n+=1){const r=e[n];if(t(r,n))return r}}static assign(e,...t){const n=e;let r,i;if(Object.assign)return Object.assign(e,...t);for(r=0,i=t.length;r<i;r+=1){const e=t[r];if(\"object\"==typeof e&&null!==e){Object.keys(e).forEach((t=>{n[t]=e[t]}))}}return e}static getBrowserAlias(e){return N[e]}static getBrowserTypeByAlias(e){return R[e]||\"\"}}const J=/version\\/(\\d+(\\.?_?\\d+)+)/i,$=[{test:[/googlebot/i],describe(e){const t={name:\"Googlebot\"},n=V.getFirstMatch(/googlebot\\/(\\d+(\\.\\d+))/i,e)||V.getFirstMatch(J,e);return n&&(t.version=n),t}},{test:[/opera/i],describe(e){const t={name:\"Opera\"},n=V.getFirstMatch(J,e)||V.getFirstMatch(/(?:opera)[\\s/](\\d+(\\.?_?\\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/opr\\/|opios/i],describe(e){const t={name:\"Opera\"},n=V.getFirstMatch(/(?:opr|opios)[\\s/](\\S+)/i,e)||V.getFirstMatch(J,e);return n&&(t.version=n),t}},{test:[/SamsungBrowser/i],describe(e){const t={name:\"Samsung Internet for Android\"},n=V.getFirstMatch(J,e)||V.getFirstMatch(/(?:SamsungBrowser)[\\s/](\\d+(\\.?_?\\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/Whale/i],describe(e){const t={name:\"NAVER Whale Browser\"},n=V.getFirstMatch(J,e)||V.getFirstMatch(/(?:whale)[\\s/](\\d+(?:\\.\\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/MZBrowser/i],describe(e){const t={name:\"MZ Browser\"},n=V.getFirstMatch(/(?:MZBrowser)[\\s/](\\d+(?:\\.\\d+)+)/i,e)||V.getFirstMatch(J,e);return n&&(t.version=n),t}},{test:[/focus/i],describe(e){const t={name:\"Focus\"},n=V.getFirstMatch(/(?:focus)[\\s/](\\d+(?:\\.\\d+)+)/i,e)||V.getFirstMatch(J,e);return n&&(t.version=n),t}},{test:[/swing/i],describe(e){const t={name:\"Swing\"},n=V.getFirstMatch(/(?:swing)[\\s/](\\d+(?:\\.\\d+)+)/i,e)||V.getFirstMatch(J,e);return n&&(t.version=n),t}},{test:[/coast/i],describe(e){const t={name:\"Opera Coast\"},n=V.getFirstMatch(J,e)||V.getFirstMatch(/(?:coast)[\\s/](\\d+(\\.?_?\\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/opt\\/\\d+(?:.?_?\\d+)+/i],describe(e){const t={name:\"Opera Touch\"},n=V.getFirstMatch(/(?:opt)[\\s/](\\d+(\\.?_?\\d+)+)/i,e)||V.getFirstMatch(J,e);return n&&(t.version=n),t}},{test:[/yabrowser/i],describe(e){const t={name:\"Yandex Browser\"},n=V.getFirstMatch(/(?:yabrowser)[\\s/](\\d+(\\.?_?\\d+)+)/i,e)||V.getFirstMatch(J,e);return n&&(t.version=n),t}},{test:[/ucbrowser/i],describe(e){const t={name:\"UC Browser\"},n=V.getFirstMatch(J,e)||V.getFirstMatch(/(?:ucbrowser)[\\s/](\\d+(\\.?_?\\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/Maxthon|mxios/i],describe(e){const t={name:\"Maxthon\"},n=V.getFirstMatch(J,e)||V.getFirstMatch(/(?:Maxthon|mxios)[\\s/](\\d+(\\.?_?\\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/epiphany/i],describe(e){const t={name:\"Epiphany\"},n=V.getFirstMatch(J,e)||V.getFirstMatch(/(?:epiphany)[\\s/](\\d+(\\.?_?\\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/puffin/i],describe(e){const t={name:\"Puffin\"},n=V.getFirstMatch(J,e)||V.getFirstMatch(/(?:puffin)[\\s/](\\d+(\\.?_?\\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/sleipnir/i],describe(e){const t={name:\"Sleipnir\"},n=V.getFirstMatch(J,e)||V.getFirstMatch(/(?:sleipnir)[\\s/](\\d+(\\.?_?\\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/k-meleon/i],describe(e){const t={name:\"K-Meleon\"},n=V.getFirstMatch(J,e)||V.getFirstMatch(/(?:k-meleon)[\\s/](\\d+(\\.?_?\\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/micromessenger/i],describe(e){const t={name:\"WeChat\"},n=V.getFirstMatch(/(?:micromessenger)[\\s/](\\d+(\\.?_?\\d+)+)/i,e)||V.getFirstMatch(J,e);return n&&(t.version=n),t}},{test:[/qqbrowser/i],describe(e){const t={name:/qqbrowserlite/i.test(e)?\"QQ Browser Lite\":\"QQ Browser\"},n=V.getFirstMatch(/(?:qqbrowserlite|qqbrowser)[/](\\d+(\\.?_?\\d+)+)/i,e)||V.getFirstMatch(J,e);return n&&(t.version=n),t}},{test:[/msie|trident/i],describe(e){const t={name:\"Internet Explorer\"},n=V.getFirstMatch(/(?:msie |rv:)(\\d+(\\.?_?\\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/\\sedg\\//i],describe(e){const t={name:\"Microsoft Edge\"},n=V.getFirstMatch(/\\sedg\\/(\\d+(\\.?_?\\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/edg([ea]|ios)/i],describe(e){const t={name:\"Microsoft Edge\"},n=V.getSecondMatch(/edg([ea]|ios)\\/(\\d+(\\.?_?\\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/vivaldi/i],describe(e){const t={name:\"Vivaldi\"},n=V.getFirstMatch(/vivaldi\\/(\\d+(\\.?_?\\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/seamonkey/i],describe(e){const t={name:\"SeaMonkey\"},n=V.getFirstMatch(/seamonkey\\/(\\d+(\\.?_?\\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/sailfish/i],describe(e){const t={name:\"Sailfish\"},n=V.getFirstMatch(/sailfish\\s?browser\\/(\\d+(\\.\\d+)?)/i,e);return n&&(t.version=n),t}},{test:[/silk/i],describe(e){const t={name:\"Amazon Silk\"},n=V.getFirstMatch(/silk\\/(\\d+(\\.?_?\\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/phantom/i],describe(e){const t={name:\"PhantomJS\"},n=V.getFirstMatch(/phantomjs\\/(\\d+(\\.?_?\\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/slimerjs/i],describe(e){const t={name:\"SlimerJS\"},n=V.getFirstMatch(/slimerjs\\/(\\d+(\\.?_?\\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/blackberry|\\bbb\\d+/i,/rim\\stablet/i],describe(e){const t={name:\"BlackBerry\"},n=V.getFirstMatch(J,e)||V.getFirstMatch(/blackberry[\\d]+\\/(\\d+(\\.?_?\\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/(web|hpw)[o0]s/i],describe(e){const t={name:\"WebOS Browser\"},n=V.getFirstMatch(J,e)||V.getFirstMatch(/w(?:eb)?[o0]sbrowser\\/(\\d+(\\.?_?\\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/bada/i],describe(e){const t={name:\"Bada\"},n=V.getFirstMatch(/dolfin\\/(\\d+(\\.?_?\\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/tizen/i],describe(e){const t={name:\"Tizen\"},n=V.getFirstMatch(/(?:tizen\\s?)?browser\\/(\\d+(\\.?_?\\d+)+)/i,e)||V.getFirstMatch(J,e);return n&&(t.version=n),t}},{test:[/qupzilla/i],describe(e){const t={name:\"QupZilla\"},n=V.getFirstMatch(/(?:qupzilla)[\\s/](\\d+(\\.?_?\\d+)+)/i,e)||V.getFirstMatch(J,e);return n&&(t.version=n),t}},{test:[/firefox|iceweasel|fxios/i],describe(e){const t={name:\"Firefox\"},n=V.getFirstMatch(/(?:firefox|iceweasel|fxios)[\\s/](\\d+(\\.?_?\\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/electron/i],describe(e){const t={name:\"Electron\"},n=V.getFirstMatch(/(?:electron)\\/(\\d+(\\.?_?\\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/MiuiBrowser/i],describe(e){const t={name:\"Miui\"},n=V.getFirstMatch(/(?:MiuiBrowser)[\\s/](\\d+(\\.?_?\\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/chromium/i],describe(e){const t={name:\"Chromium\"},n=V.getFirstMatch(/(?:chromium)[\\s/](\\d+(\\.?_?\\d+)+)/i,e)||V.getFirstMatch(J,e);return n&&(t.version=n),t}},{test:[/chrome|crios|crmo/i],describe(e){const t={name:\"Chrome\"},n=V.getFirstMatch(/(?:chrome|crios|crmo)\\/(\\d+(\\.?_?\\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/GSA/i],describe(e){const t={name:\"Google Search\"},n=V.getFirstMatch(/(?:GSA)\\/(\\d+(\\.?_?\\d+)+)/i,e);return n&&(t.version=n),t}},{test(e){const t=!e.test(/like android/i),n=e.test(/android/i);return t&&n},describe(e){const t={name:\"Android Browser\"},n=V.getFirstMatch(J,e);return n&&(t.version=n),t}},{test:[/playstation 4/i],describe(e){const t={name:\"PlayStation 4\"},n=V.getFirstMatch(J,e);return n&&(t.version=n),t}},{test:[/safari|applewebkit/i],describe(e){const t={name:\"Safari\"},n=V.getFirstMatch(J,e);return n&&(t.version=n),t}},{test:[/.*/i],describe(e){const t=-1!==e.search(\"\\\\(\")?/^(.*)\\/(.*)[ \\t]\\((.*)/:/^(.*)\\/(.*) /;return{name:V.getFirstMatch(t,e),version:V.getSecondMatch(t,e)}}}];var G=[{test:[/Roku\\/DVP/],describe(e){const t=V.getFirstMatch(/Roku\\/DVP-(\\d+\\.\\d+)/i,e);return{name:F.Roku,version:t}}},{test:[/windows phone/i],describe(e){const t=V.getFirstMatch(/windows phone (?:os)?\\s?(\\d+(\\.\\d+)*)/i,e);return{name:F.WindowsPhone,version:t}}},{test:[/windows /i],describe(e){const t=V.getFirstMatch(/Windows ((NT|XP)( \\d\\d?.\\d)?)/i,e),n=V.getWindowsVersionName(t);return{name:F.Windows,version:t,versionName:n}}},{test:[/Macintosh(.*?) FxiOS(.*?)\\//],describe(e){const t={name:F.iOS},n=V.getSecondMatch(/(Version\\/)(\\d[\\d.]+)/,e);return n&&(t.version=n),t}},{test:[/macintosh/i],describe(e){const t=V.getFirstMatch(/mac os x (\\d+(\\.?_?\\d+)+)/i,e).replace(/[_\\s]/g,\".\"),n=V.getMacOSVersionName(t),r={name:F.MacOS,version:t};return n&&(r.versionName=n),r}},{test:[/(ipod|iphone|ipad)/i],describe(e){const t=V.getFirstMatch(/os (\\d+([_\\s]\\d+)*) like mac os x/i,e).replace(/[_\\s]/g,\".\");return{name:F.iOS,version:t}}},{test(e){const t=!e.test(/like android/i),n=e.test(/android/i);return t&&n},describe(e){const t=V.getFirstMatch(/android[\\s/-](\\d+(\\.\\d+)*)/i,e),n=V.getAndroidVersionName(t),r={name:F.Android,version:t};return n&&(r.versionName=n),r}},{test:[/(web|hpw)[o0]s/i],describe(e){const t=V.getFirstMatch(/(?:web|hpw)[o0]s\\/(\\d+(\\.\\d+)*)/i,e),n={name:F.WebOS};return t&&t.length&&(n.version=t),n}},{test:[/blackberry|\\bbb\\d+/i,/rim\\stablet/i],describe(e){const t=V.getFirstMatch(/rim\\stablet\\sos\\s(\\d+(\\.\\d+)*)/i,e)||V.getFirstMatch(/blackberry\\d+\\/(\\d+([_\\s]\\d+)*)/i,e)||V.getFirstMatch(/\\bbb(\\d+)/i,e);return{name:F.BlackBerry,version:t}}},{test:[/bada/i],describe(e){const t=V.getFirstMatch(/bada\\/(\\d+(\\.\\d+)*)/i,e);return{name:F.Bada,version:t}}},{test:[/tizen/i],describe(e){const t=V.getFirstMatch(/tizen[/\\s](\\d+(\\.\\d+)*)/i,e);return{name:F.Tizen,version:t}}},{test:[/linux/i],describe:()=>({name:F.Linux})},{test:[/CrOS/],describe:()=>({name:F.ChromeOS})},{test:[/PlayStation 4/],describe(e){const t=V.getFirstMatch(/PlayStation 4[/\\s](\\d+(\\.\\d+)*)/i,e);return{name:F.PlayStation4,version:t}}}],q=[{test:[/googlebot/i],describe:()=>({type:\"bot\",vendor:\"Google\"})},{test:[/huawei/i],describe(e){const t=V.getFirstMatch(/(can-l01)/i,e)&&\"Nova\",n={type:B.mobile,vendor:\"Huawei\"};return t&&(n.model=t),n}},{test:[/nexus\\s*(?:7|8|9|10).*/i],describe:()=>({type:B.tablet,vendor:\"Nexus\"})},{test:[/ipad/i],describe:()=>({type:B.tablet,vendor:\"Apple\",model:\"iPad\"})},{test:[/Macintosh(.*?) FxiOS(.*?)\\//],describe:()=>({type:B.tablet,vendor:\"Apple\",model:\"iPad\"})},{test:[/kftt build/i],describe:()=>({type:B.tablet,vendor:\"Amazon\",model:\"Kindle Fire HD 7\"})},{test:[/silk/i],describe:()=>({type:B.tablet,vendor:\"Amazon\"})},{test:[/tablet(?! pc)/i],describe:()=>({type:B.tablet})},{test(e){const t=e.test(/ipod|iphone/i),n=e.test(/like (ipod|iphone)/i);return t&&!n},describe(e){const t=V.getFirstMatch(/(ipod|iphone)/i,e);return{type:B.mobile,vendor:\"Apple\",model:t}}},{test:[/nexus\\s*[0-6].*/i,/galaxy nexus/i],describe:()=>({type:B.mobile,vendor:\"Nexus\"})},{test:[/[^-]mobi/i],describe:()=>({type:B.mobile})},{test:e=>\"blackberry\"===e.getBrowserName(!0),describe:()=>({type:B.mobile,vendor:\"BlackBerry\"})},{test:e=>\"bada\"===e.getBrowserName(!0),describe:()=>({type:B.mobile})},{test:e=>\"windows phone\"===e.getBrowserName(),describe:()=>({type:B.mobile,vendor:\"Microsoft\"})},{test(e){const t=Number(String(e.getOSVersion()).split(\".\")[0]);return\"android\"===e.getOSName(!0)&&t>=3},describe:()=>({type:B.tablet})},{test:e=>\"android\"===e.getOSName(!0),describe:()=>({type:B.mobile})},{test:e=>\"macos\"===e.getOSName(!0),describe:()=>({type:B.desktop,vendor:\"Apple\"})},{test:e=>\"windows\"===e.getOSName(!0),describe:()=>({type:B.desktop})},{test:e=>\"linux\"===e.getOSName(!0),describe:()=>({type:B.desktop})},{test:e=>\"playstation 4\"===e.getOSName(!0),describe:()=>({type:B.tv})},{test:e=>\"roku\"===e.getOSName(!0),describe:()=>({type:B.tv})}],Y=[{test:e=>\"microsoft edge\"===e.getBrowserName(!0),describe(e){if(/\\sedg\\//i.test(e))return{name:U.Blink};const t=V.getFirstMatch(/edge\\/(\\d+(\\.?_?\\d+)+)/i,e);return{name:U.EdgeHTML,version:t}}},{test:[/trident/i],describe(e){const t={name:U.Trident},n=V.getFirstMatch(/trident\\/(\\d+(\\.?_?\\d+)+)/i,e);return n&&(t.version=n),t}},{test:e=>e.test(/presto/i),describe(e){const t={name:U.Presto},n=V.getFirstMatch(/presto\\/(\\d+(\\.?_?\\d+)+)/i,e);return n&&(t.version=n),t}},{test(e){const t=e.test(/gecko/i),n=e.test(/like gecko/i);return t&&!n},describe(e){const t={name:U.Gecko},n=V.getFirstMatch(/gecko\\/(\\d+(\\.?_?\\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/(apple)?webkit\\/537\\.36/i],describe:()=>({name:U.Blink})},{test:[/(apple)?webkit/i],describe(e){const t={name:U.WebKit},n=V.getFirstMatch(/webkit\\/(\\d+(\\.?_?\\d+)+)/i,e);return n&&(t.version=n),t}}];class z{constructor(e,t=!1){if(null==e||\"\"===e)throw new Error(\"UserAgent parameter can't be empty\");this._ua=e,this.parsedResult={},!0!==t&&this.parse()}getUA(){return this._ua}test(e){return e.test(this._ua)}parseBrowser(){this.parsedResult.browser={};const e=V.find($,(e=>{if(\"function\"==typeof e.test)return e.test(this);if(e.test instanceof Array)return e.test.some((e=>this.test(e)));throw new Error(\"Browser's test function is not valid\")}));return e&&(this.parsedResult.browser=e.describe(this.getUA())),this.parsedResult.browser}getBrowser(){return this.parsedResult.browser?this.parsedResult.browser:this.parseBrowser()}getBrowserName(e){return e?String(this.getBrowser().name).toLowerCase()||\"\":this.getBrowser().name||\"\"}getBrowserVersion(){return this.getBrowser().version}getOS(){return this.parsedResult.os?this.parsedResult.os:this.parseOS()}parseOS(){this.parsedResult.os={};const e=V.find(G,(e=>{if(\"function\"==typeof e.test)return e.test(this);if(e.test instanceof Array)return e.test.some((e=>this.test(e)));throw new Error(\"Browser's test function is not valid\")}));return e&&(this.parsedResult.os=e.describe(this.getUA())),this.parsedResult.os}getOSName(e){const{name:t}=this.getOS();return e?String(t).toLowerCase()||\"\":t||\"\"}getOSVersion(){return this.getOS().version}getPlatform(){return this.parsedResult.platform?this.parsedResult.platform:this.parsePlatform()}getPlatformType(e=!1){const{type:t}=this.getPlatform();return e?String(t).toLowerCase()||\"\":t||\"\"}parsePlatform(){this.parsedResult.platform={};const e=V.find(q,(e=>{if(\"function\"==typeof e.test)return e.test(this);if(e.test instanceof Array)return e.test.some((e=>this.test(e)));throw new Error(\"Browser's test function is not valid\")}));return e&&(this.parsedResult.platform=e.describe(this.getUA())),this.parsedResult.platform}getEngine(){return this.parsedResult.engine?this.parsedResult.engine:this.parseEngine()}getEngineName(e){return e?String(this.getEngine().name).toLowerCase()||\"\":this.getEngine().name||\"\"}parseEngine(){this.parsedResult.engine={};const e=V.find(Y,(e=>{if(\"function\"==typeof e.test)return e.test(this);if(e.test instanceof Array)return e.test.some((e=>this.test(e)));throw new Error(\"Browser's test function is not valid\")}));return e&&(this.parsedResult.engine=e.describe(this.getUA())),this.parsedResult.engine}parse(){return this.parseBrowser(),this.parseOS(),this.parsePlatform(),this.parseEngine(),this}getResult(){return V.assign({},this.parsedResult)}satisfies(e){const t={};let n=0;const r={};let i=0;if(Object.keys(e).forEach((o=>{const a=e[o];\"string\"==typeof a?(r[o]=a,i+=1):\"object\"==typeof a&&(t[o]=a,n+=1)})),n>0){const e=Object.keys(t),n=V.find(e,(e=>this.isOS(e)));if(n){const e=this.satisfies(t[n]);if(void 0!==e)return e}const r=V.find(e,(e=>this.isPlatform(e)));if(r){const e=this.satisfies(t[r]);if(void 0!==e)return e}}if(i>0){const e=Object.keys(r),t=V.find(e,(e=>this.isBrowser(e,!0)));if(void 0!==t)return this.compareVersion(r[t])}}isBrowser(e,t=!1){const n=this.getBrowserName().toLowerCase();let r=e.toLowerCase();const i=V.getBrowserTypeByAlias(r);return t&&i&&(r=i.toLowerCase()),r===n}compareVersion(e){let t=[0],n=e,r=!1;const i=this.getBrowserVersion();if(\"string\"==typeof i)return\">\"===e[0]||\"<\"===e[0]?(n=e.substr(1),\"=\"===e[1]?(r=!0,n=e.substr(2)):t=[],\">\"===e[0]?t.push(1):t.push(-1)):\"=\"===e[0]?n=e.substr(1):\"~\"===e[0]&&(r=!0,n=e.substr(1)),t.indexOf(V.compareVersions(i,n,r))>-1}isOS(e){return this.getOSName(!0)===String(e).toLowerCase()}isPlatform(e){return this.getPlatformType(!0)===String(e).toLowerCase()}isEngine(e){return this.getEngineName(!0)===String(e).toLowerCase()}is(e,t=!1){return this.isBrowser(e,t)||this.isOS(e)||this.isPlatform(e)}some(e=[]){return e.some((e=>this.is(e)))}}\n/*!\n * Bowser - a browser detector\n * https://github.com/lancedikson/bowser\n * MIT License | (c) Dustin Diaz 2012-2015\n * MIT License | (c) Denis Demchenko 2015-2019\n */class W{static getParser(e,t=!1){if(\"string\"!=typeof e)throw new Error(\"UserAgent should be a string\");return new z(e,t)}static parse(e){return new z(e).getResult()}static get BROWSER_MAP(){return R}static get ENGINE_MAP(){return U}static get OS_MAP(){return F}static get PLATFORMS_MAP(){return B}}function H(){return Date.now()+Math.random().toString()}function Q(){throw new Error(\"Method must be implemented in subclass\")}function K(e,t){return null!=t&&t.proxyUrl?t.proxyUrl+(\"/\"===t.proxyUrl.slice(-1)?\"\":\"/\")+e.substring(8):e}function X(e){return null!=e&&e.callObjectBundleUrlOverride?e.callObjectBundleUrlOverride:K(\"https://c.daily.co/call-machine/versioned/\".concat(\"0.70.0\",\"/static/call-machine-object-bundle.js\"),e)}function Z(e){try{new URL(e)}catch(e){return!1}return!0}const ee=Object.prototype.toString;function te(e){switch(ee.call(e)){case\"[object Error]\":case\"[object Exception]\":case\"[object DOMException]\":return!0;default:return ue(e,Error)}}function ne(e,t){return ee.call(e)===`[object ${t}]`}function re(e){return ne(e,\"ErrorEvent\")}function ie(e){return ne(e,\"DOMError\")}function oe(e){return ne(e,\"String\")}function ae(e){return null===e||\"object\"!=typeof e&&\"function\"!=typeof e}function se(e){return ne(e,\"Object\")}function ce(e){return\"undefined\"!=typeof Event&&ue(e,Event)}function le(e){return Boolean(e&&e.then&&\"function\"==typeof e.then)}function ue(e,t){try{return e instanceof t}catch(e){return!1}}function de(e,t=0){return\"string\"!=typeof e||0===t||e.length<=t?e:`${e.slice(0,t)}...`}function he(e,t){if(!Array.isArray(e))return\"\";const n=[];for(let t=0;t<e.length;t++){const r=e[t];try{n.push(String(r))}catch(e){n.push(\"[value cannot be serialized]\")}}return n.join(t)}function pe(e,t,n=!1){return!!oe(e)&&(ne(t,\"RegExp\")?t.test(e):!!oe(t)&&(n?e===t:e.includes(t)))}function fe(e,t=[],n=!1){return t.some((t=>pe(e,t,n)))}function ge(e,t,n=250,r,i,o,a){if(!(o.exception&&o.exception.values&&a&&ue(a.originalException,Error)))return;const s=o.exception.values.length>0?o.exception.values[o.exception.values.length-1]:void 0;var c,l;s&&(o.exception.values=(c=ve(e,t,i,a.originalException,r,o.exception.values,s,0),l=n,c.map((e=>(e.value&&(e.value=de(e.value,l)),e)))))}function ve(e,t,n,r,i,o,a,s){if(o.length>=n+1)return o;let c=[...o];if(ue(r[i],Error)){me(a,s);const o=e(t,r[i]),l=c.length;ye(o,i,l,s),c=ve(e,t,n,r[i],i,[o,...c],o,l)}return Array.isArray(r.errors)&&r.errors.forEach(((r,o)=>{if(ue(r,Error)){me(a,s);const l=e(t,r),u=c.length;ye(l,`errors[${o}]`,u,s),c=ve(e,t,n,r,i,[l,...c],l,u)}})),c}function me(e,t){e.mechanism=e.mechanism||{type:\"generic\",handled:!0},e.mechanism={...e.mechanism,is_exception_group:!0,exception_id:t}}function ye(e,t,n,r){e.mechanism=e.mechanism||{type:\"generic\",handled:!0},e.mechanism={...e.mechanism,type:\"chained\",source:t,exception_id:n,parent_id:r}}function _e(e){return e&&e.Math==Math?e:void 0}const be=\"object\"==typeof globalThis&&_e(globalThis)||\"object\"==typeof window&&_e(window)||\"object\"==typeof self&&_e(self)||\"object\"==typeof global&&_e(global)||function(){return this}()||{};function we(){return be}function Se(e,t,n){const r=n||be,i=r.__SENTRY__=r.__SENTRY__||{};return i[e]||(i[e]=t())}const ke=we(),Ee=80;function Ce(e,t={}){try{let n=e;const r=5,i=[];let o=0,a=0;const s=\" > \",c=s.length;let l;const u=Array.isArray(t)?t:t.keyAttrs,d=!Array.isArray(t)&&t.maxStringLength||Ee;for(;n&&o++<r&&(l=Me(n,u),!(\"html\"===l||o>1&&a+i.length*c+l.length>=d));)i.push(l),a+=l.length,n=n.parentNode;return i.reverse().join(s)}catch(e){return\"<unknown>\"}}function Me(e,t){const n=e,r=[];let i,o,a,s,c;if(!n||!n.tagName)return\"\";r.push(n.tagName.toLowerCase());const l=t&&t.length?t.filter((e=>n.getAttribute(e))).map((e=>[e,n.getAttribute(e)])):null;if(l&&l.length)l.forEach((e=>{r.push(`[${e[0]}=\"${e[1]}\"]`)}));else if(n.id&&r.push(`#${n.id}`),i=n.className,i&&oe(i))for(o=i.split(/\\s+/),c=0;c<o.length;c++)r.push(`.${o[c]}`);const u=[\"aria-label\",\"type\",\"name\",\"title\",\"alt\"];for(c=0;c<u.length;c++)a=u[c],s=n.getAttribute(a),s&&r.push(`[${a}=\"${s}\"]`);return r.join(\"\")}const Te=[\"debug\",\"info\",\"warn\",\"error\",\"log\",\"assert\",\"trace\"];function Oe(e){if(!(\"console\"in be))return e();const t=be.console,n={};Te.forEach((e=>{const r=t[e]&&t[e].__sentry_original__;e in t&&r&&(n[e]=t[e],t[e]=r)}));try{return e()}finally{Object.keys(n).forEach((e=>{t[e]=n[e]}))}}function Pe(){let e=!1;const t={enable:()=>{e=!0},disable:()=>{e=!1}};return\"undefined\"==typeof __SENTRY_DEBUG__||__SENTRY_DEBUG__?Te.forEach((n=>{t[n]=(...t)=>{e&&Oe((()=>{be.console[n](`Sentry Logger [${n}]:`,...t)}))}})):Te.forEach((e=>{t[e]=()=>{}})),t}let Ae;Ae=\"undefined\"==typeof __SENTRY_DEBUG__||__SENTRY_DEBUG__?Se(\"logger\",Pe):Pe();const De=/^(?:(\\w+):)\\/\\/(?:(\\w+)(?::(\\w+)?)?@)([\\w.-]+)(?::(\\d+))?\\/(.+)/;function je(e,t=!1){const{host:n,path:r,pass:i,port:o,projectId:a,protocol:s,publicKey:c}=e;return`${s}://${c}${t&&i?`:${i}`:\"\"}@${n}${o?`:${o}`:\"\"}/${r?`${r}/`:r}${a}`}function xe(e){return{protocol:e.protocol,publicKey:e.publicKey||\"\",pass:e.pass||\"\",host:e.host,port:e.port||\"\",path:e.path||\"\",projectId:e.projectId}}function Le(e){const t=\"string\"==typeof e?function(e){const t=De.exec(e);if(!t)return void console.error(`Invalid Sentry Dsn: ${e}`);const[n,r,i=\"\",o,a=\"\",s]=t.slice(1);let c=\"\",l=s;const u=l.split(\"/\");if(u.length>1&&(c=u.slice(0,-1).join(\"/\"),l=u.pop()),l){const e=l.match(/^\\d+/);e&&(l=e[0])}return xe({host:o,pass:i,path:c,projectId:l,port:a,protocol:n,publicKey:r})}(e):xe(e);if(t&&function(e){if(\"undefined\"!=typeof __SENTRY_DEBUG__&&!__SENTRY_DEBUG__)return!0;const{port:t,projectId:n,protocol:r}=e;return!([\"protocol\",\"publicKey\",\"host\",\"projectId\"].find((t=>!e[t]&&(Ae.error(`Invalid Sentry Dsn: ${t} missing`),!0)))||(n.match(/^\\d+$/)?function(e){return\"http\"===e||\"https\"===e}(r)?t&&isNaN(parseInt(t,10))&&(Ae.error(`Invalid Sentry Dsn: Invalid port ${t}`),1):(Ae.error(`Invalid Sentry Dsn: Invalid protocol ${r}`),1):(Ae.error(`Invalid Sentry Dsn: Invalid projectId ${n}`),1)))}(t))return t}class Ie extends Error{constructor(e,t=\"warn\"){super(e),this.message=e,this.name=new.target.prototype.constructor.name,Object.setPrototypeOf(this,new.target.prototype),this.logLevel=t}}function Ne(e,t,n){if(!(t in e))return;const r=e[t],i=n(r);if(\"function\"==typeof i)try{Be(i,r)}catch(e){}e[t]=i}function Re(e,t,n){Object.defineProperty(e,t,{value:n,writable:!0,configurable:!0})}function Be(e,t){const n=t.prototype||{};e.prototype=t.prototype=n,Re(e,\"__sentry_original__\",t)}function Fe(e){return e.__sentry_original__}function Ue(e){if(te(e))return{message:e.message,name:e.name,stack:e.stack,...Je(e)};if(ce(e)){const t={type:e.type,target:Ve(e.target),currentTarget:Ve(e.currentTarget),...Je(e)};return\"undefined\"!=typeof CustomEvent&&ue(e,CustomEvent)&&(t.detail=e.detail),t}return e}function Ve(e){try{return t=e,\"undefined\"!=typeof Element&&ue(t,Element)?Ce(e):Object.prototype.toString.call(e)}catch(e){return\"<unknown>\"}var t}function Je(e){if(\"object\"==typeof e&&null!==e){const t={};for(const n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t}return{}}function $e(e){return Ge(e,new Map)}function Ge(e,t){if(se(e)){const n=t.get(e);if(void 0!==n)return n;const r={};t.set(e,r);for(const n of Object.keys(e))void 0!==e[n]&&(r[n]=Ge(e[n],t));return r}if(Array.isArray(e)){const n=t.get(e);if(void 0!==n)return n;const r=[];return t.set(e,r),e.forEach((e=>{r.push(Ge(e,t))})),r}return e}const qe=\"<anonymous>\";function Ye(e){try{return e&&\"function\"==typeof e&&e.name||qe}catch(e){return qe}}const ze=we();function We(e){return e&&/^function fetch\\(\\)\\s+\\{\\s+\\[native code\\]\\s+\\}$/.test(e.toString())}function He(){if(!function(){if(!(\"fetch\"in ze))return!1;try{return new Headers,new Request(\"http://www.example.com\"),new Response,!0}catch(e){return!1}}())return!1;if(We(ze.fetch))return!0;let e=!1;const t=ze.document;if(t&&\"function\"==typeof t.createElement)try{const n=t.createElement(\"iframe\");n.hidden=!0,t.head.appendChild(n),n.contentWindow&&n.contentWindow.fetch&&(e=We(n.contentWindow.fetch)),t.head.removeChild(n)}catch(e){(\"undefined\"==typeof __SENTRY_DEBUG__||__SENTRY_DEBUG__)&&Ae.warn(\"Could not create sandbox iframe for pure fetch check, bailing to window.fetch: \",e)}return e}const Qe=we();const Ke=we(),Xe=\"__sentry_xhr_v2__\",Ze={},et={};function tt(e){if(!et[e])switch(et[e]=!0,e){case\"console\":!function(){if(!(\"console\"in Ke))return;Te.forEach((function(e){e in Ke.console&&Ne(Ke.console,e,(function(t){return function(...n){rt(\"console\",{args:n,level:e}),t&&t.apply(Ke.console,n)}}))}))}();break;case\"dom\":!function(){if(!(\"document\"in Ke))return;const e=rt.bind(null,\"dom\"),t=ut(e,!0);Ke.document.addEventListener(\"click\",t,!1),Ke.document.addEventListener(\"keypress\",t,!1),[\"EventTarget\",\"Node\"].forEach((t=>{const n=Ke[t]&&Ke[t].prototype;n&&n.hasOwnProperty&&n.hasOwnProperty(\"addEventListener\")&&(Ne(n,\"addEventListener\",(function(t){return function(n,r,i){if(\"click\"===n||\"keypress\"==n)try{const r=this,o=r.__sentry_instrumentation_handlers__=r.__sentry_instrumentation_handlers__||{},a=o[n]=o[n]||{refCount:0};if(!a.handler){const r=ut(e);a.handler=r,t.call(this,n,r,i)}a.refCount++}catch(e){}return t.call(this,n,r,i)}})),Ne(n,\"removeEventListener\",(function(e){return function(t,n,r){if(\"click\"===t||\"keypress\"==t)try{const n=this,i=n.__sentry_instrumentation_handlers__||{},o=i[t];o&&(o.refCount--,o.refCount<=0&&(e.call(this,t,o.handler,r),o.handler=void 0,delete i[t]),0===Object.keys(i).length&&delete n.__sentry_instrumentation_handlers__)}catch(e){}return e.call(this,t,n,r)}})))}))}();break;case\"xhr\":!function(){if(!(\"XMLHttpRequest\"in Ke))return;const e=XMLHttpRequest.prototype;Ne(e,\"open\",(function(e){return function(...t){const n=t[1],r=this[Xe]={method:oe(t[0])?t[0].toUpperCase():t[0],url:t[1],request_headers:{}};oe(n)&&\"POST\"===r.method&&n.match(/sentry_key/)&&(this.__sentry_own_request__=!0);const i=()=>{const e=this[Xe];if(e&&4===this.readyState){try{e.status_code=this.status}catch(e){}rt(\"xhr\",{args:t,endTimestamp:Date.now(),startTimestamp:Date.now(),xhr:this})}};return\"onreadystatechange\"in this&&\"function\"==typeof this.onreadystatechange?Ne(this,\"onreadystatechange\",(function(e){return function(...t){return i(),e.apply(this,t)}})):this.addEventListener(\"readystatechange\",i),Ne(this,\"setRequestHeader\",(function(e){return function(...t){const[n,r]=t,i=this[Xe];return i&&(i.request_headers[n.toLowerCase()]=r),e.apply(this,t)}})),e.apply(this,t)}})),Ne(e,\"send\",(function(e){return function(...t){const n=this[Xe];return n&&void 0!==t[0]&&(n.body=t[0]),rt(\"xhr\",{args:t,startTimestamp:Date.now(),xhr:this}),e.apply(this,t)}}))}();break;case\"fetch\":!function(){if(!He())return;Ne(Ke,\"fetch\",(function(e){return function(...t){const{method:n,url:r}=function(e){if(0===e.length)return{method:\"GET\",url:\"\"};if(2===e.length){const[t,n]=e;return{url:ot(t),method:it(n,\"method\")?String(n.method).toUpperCase():\"GET\"}}const t=e[0];return{url:ot(t),method:it(t,\"method\")?String(t.method).toUpperCase():\"GET\"}}(t),i={args:t,fetchData:{method:n,url:r},startTimestamp:Date.now()};return rt(\"fetch\",{...i}),e.apply(Ke,t).then((e=>(rt(\"fetch\",{...i,endTimestamp:Date.now(),response:e}),e)),(e=>{throw rt(\"fetch\",{...i,endTimestamp:Date.now(),error:e}),e}))}}))}();break;case\"history\":!function(){if(!function(){const e=Qe.chrome,t=e&&e.app&&e.app.runtime,n=\"history\"in Qe&&!!Qe.history.pushState&&!!Qe.history.replaceState;return!t&&n}())return;const e=Ke.onpopstate;function t(e){return function(...t){const n=t.length>2?t[2]:void 0;if(n){const e=at,t=String(n);at=t,rt(\"history\",{from:e,to:t})}return e.apply(this,t)}}Ke.onpopstate=function(...t){const n=Ke.location.href,r=at;if(at=n,rt(\"history\",{from:r,to:n}),e)try{return e.apply(this,t)}catch(e){}},Ne(Ke.history,\"pushState\",t),Ne(Ke.history,\"replaceState\",t)}();break;case\"error\":dt=Ke.onerror,Ke.onerror=function(e,t,n,r,i){return rt(\"error\",{column:r,error:i,line:n,msg:e,url:t}),!(!dt||dt.__SENTRY_LOADER__)&&dt.apply(this,arguments)},Ke.onerror.__SENTRY_INSTRUMENTED__=!0;break;case\"unhandledrejection\":ht=Ke.onunhandledrejection,Ke.onunhandledrejection=function(e){return rt(\"unhandledrejection\",e),!(ht&&!ht.__SENTRY_LOADER__)||ht.apply(this,arguments)},Ke.onunhandledrejection.__SENTRY_INSTRUMENTED__=!0;break;default:return void((\"undefined\"==typeof __SENTRY_DEBUG__||__SENTRY_DEBUG__)&&Ae.warn(\"unknown instrumentation type:\",e))}}function nt(e,t){Ze[e]=Ze[e]||[],Ze[e].push(t),tt(e)}function rt(e,t){if(e&&Ze[e])for(const n of Ze[e]||[])try{n(t)}catch(t){(\"undefined\"==typeof __SENTRY_DEBUG__||__SENTRY_DEBUG__)&&Ae.error(`Error while triggering instrumentation handler.\\nType: ${e}\\nName: ${Ye(n)}\\nError:`,t)}}function it(e,t){return!!e&&\"object\"==typeof e&&!!e[t]}function ot(e){return\"string\"==typeof e?e:e?it(e,\"url\")?e.url:e.toString?e.toString():\"\":\"\"}let at;const st=1e3;let ct,lt;function ut(e,t=!1){return n=>{if(!n||lt===n)return;if(function(e){if(\"keypress\"!==e.type)return!1;try{const t=e.target;if(!t||!t.tagName)return!0;if(\"INPUT\"===t.tagName||\"TEXTAREA\"===t.tagName||t.isContentEditable)return!1}catch(e){}return!0}(n))return;const r=\"keypress\"===n.type?\"input\":n.type;(void 0===ct||function(e,t){if(!e)return!0;if(e.type!==t.type)return!0;try{if(e.target!==t.target)return!0}catch(e){}return!1}(lt,n))&&(e({event:n,name:r,global:t}),lt=n),clearTimeout(ct),ct=Ke.setTimeout((()=>{ct=void 0}),st)}}let dt=null;let ht=null;function pt(){const e=be,t=e.crypto||e.msCrypto;if(t&&t.randomUUID)return t.randomUUID().replace(/-/g,\"\");const n=t&&t.getRandomValues?()=>t.getRandomValues(new Uint8Array(1))[0]:()=>16*Math.random();return([1e7]+1e3+4e3+8e3+1e11).replace(/[018]/g,(e=>(e^(15&n())>>e/4).toString(16)))}function ft(e){return e.exception&&e.exception.values?e.exception.values[0]:void 0}function gt(e){const{message:t,event_id:n}=e;if(t)return t;const r=ft(e);return r?r.type&&r.value?`${r.type}: ${r.value}`:r.type||r.value||n||\"<unknown>\":n||\"<unknown>\"}function vt(e,t,n){const r=e.exception=e.exception||{},i=r.values=r.values||[],o=i[0]=i[0]||{};o.value||(o.value=t||\"\"),o.type||(o.type=n||\"Error\")}function mt(e,t){const n=ft(e);if(!n)return;const r=n.mechanism;if(n.mechanism={type:\"generic\",handled:!0,...r,...t},t&&\"data\"in t){const e={...r&&r.data,...t.data};n.mechanism.data=e}}function yt(e){if(e&&e.__sentry_captured__)return!0;try{Re(e,\"__sentry_captured__\",!0)}catch(e){}return!1}function _t(e,t=100,n=1/0){try{return wt(\"\",e,t,n)}catch(e){return{ERROR:`**non-serializable** (${e})`}}}function bt(e,t=3,n=102400){const r=_t(e,t);return i=r,function(e){return~-encodeURI(e).split(/%..|./).length}(JSON.stringify(i))>n?bt(e,t-1,n):r;var i}function wt(e,t,n=1/0,r=1/0,i=function(){const e=\"function\"==typeof WeakSet,t=e?new WeakSet:[];return[function(n){if(e)return!!t.has(n)||(t.add(n),!1);for(let e=0;e<t.length;e++)if(t[e]===n)return!0;return t.push(n),!1},function(n){if(e)t.delete(n);else for(let e=0;e<t.length;e++)if(t[e]===n){t.splice(e,1);break}}]}()){const[o,a]=i;if(null==t||[\"number\",\"boolean\",\"string\"].includes(typeof t)&&(\"number\"!=typeof(s=t)||s==s))return t;var s;const c=function(e,t){try{if(\"domain\"===e&&t&&\"object\"==typeof t&&t._events)return\"[Domain]\";if(\"domainEmitter\"===e)return\"[DomainEmitter]\";if(\"undefined\"!=typeof global&&t===global)return\"[Global]\";if(\"undefined\"!=typeof window&&t===window)return\"[Window]\";if(\"undefined\"!=typeof document&&t===document)return\"[Document]\";if(function(e){return se(e)&&\"nativeEvent\"in e&&\"preventDefault\"in e&&\"stopPropagation\"in e}(t))return\"[SyntheticEvent]\";if(\"number\"==typeof t&&t!=t)return\"[NaN]\";if(\"function\"==typeof t)return`[Function: ${Ye(t)}]`;if(\"symbol\"==typeof t)return`[${String(t)}]`;if(\"bigint\"==typeof t)return`[BigInt: ${String(t)}]`;const n=function(e){const t=Object.getPrototypeOf(e);return t?t.constructor.name:\"null prototype\"}(t);return/^HTML(\\w*)Element$/.test(n)?`[HTMLElement: ${n}]`:`[object ${n}]`}catch(e){return`**non-serializable** (${e})`}}(e,t);if(!c.startsWith(\"[object \"))return c;if(t.__sentry_skip_normalization__)return t;const l=\"number\"==typeof t.__sentry_override_normalization_depth__?t.__sentry_override_normalization_depth__:n;if(0===l)return c.replace(\"object \",\"\");if(o(t))return\"[Circular ~]\";const u=t;if(u&&\"function\"==typeof u.toJSON)try{return wt(\"\",u.toJSON(),l-1,r,i)}catch(e){}const d=Array.isArray(t)?[]:{};let h=0;const p=Ue(t);for(const e in p){if(!Object.prototype.hasOwnProperty.call(p,e))continue;if(h>=r){d[e]=\"[MaxProperties ~]\";break}const t=p[e];d[e]=wt(e,t,l-1,r,i),h++}return a(t),d}var St;function kt(e){return new Ct((t=>{t(e)}))}function Et(e){return new Ct(((t,n)=>{n(e)}))}!function(e){e[e.PENDING=0]=\"PENDING\";e[e.RESOLVED=1]=\"RESOLVED\";e[e.REJECTED=2]=\"REJECTED\"}(St||(St={}));class Ct{__init(){this._state=St.PENDING}__init2(){this._handlers=[]}constructor(e){Ct.prototype.__init.call(this),Ct.prototype.__init2.call(this),Ct.prototype.__init3.call(this),Ct.prototype.__init4.call(this),Ct.prototype.__init5.call(this),Ct.prototype.__init6.call(this);try{e(this._resolve,this._reject)}catch(e){this._reject(e)}}then(e,t){return new Ct(((n,r)=>{this._handlers.push([!1,t=>{if(e)try{n(e(t))}catch(e){r(e)}else n(t)},e=>{if(t)try{n(t(e))}catch(e){r(e)}else r(e)}]),this._executeHandlers()}))}catch(e){return this.then((e=>e),e)}finally(e){return new Ct(((t,n)=>{let r,i;return this.then((t=>{i=!1,r=t,e&&e()}),(t=>{i=!0,r=t,e&&e()})).then((()=>{i?n(r):t(r)}))}))}__init3(){this._resolve=e=>{this._setResult(St.RESOLVED,e)}}__init4(){this._reject=e=>{this._setResult(St.REJECTED,e)}}__init5(){this._setResult=(e,t)=>{this._state===St.PENDING&&(le(t)?t.then(this._resolve,this._reject):(this._state=e,this._value=t,this._executeHandlers()))}}__init6(){this._executeHandlers=()=>{if(this._state===St.PENDING)return;const e=this._handlers.slice();this._handlers=[],e.forEach((e=>{e[0]||(this._state===St.RESOLVED&&e[1](this._value),this._state===St.REJECTED&&e[2](this._value),e[0]=!0)}))}}}function Mt(e){const t=[];function n(e){return t.splice(t.indexOf(e),1)[0]}return{$:t,add:function(r){if(!(void 0===e||t.length<e))return Et(new Ie(\"Not adding Promise because buffer limit was reached.\"));const i=r();return-1===t.indexOf(i)&&t.push(i),i.then((()=>n(i))).then(null,(()=>n(i).then(null,(()=>{})))),i},drain:function(e){return new Ct(((n,r)=>{let i=t.length;if(!i)return n(!0);const o=setTimeout((()=>{e&&e>0&&n(!1)}),e);t.forEach((e=>{kt(e).then((()=>{--i||(clearTimeout(o),n(!0))}),r)}))}))}}}function Tt(e){if(!e)return{};const t=e.match(/^(([^:/?#]+):)?(\\/\\/([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?$/);if(!t)return{};const n=t[6]||\"\",r=t[8]||\"\";return{host:t[4],path:t[5],protocol:t[2],search:n,hash:r,relative:t[5]+n+r}}const Ot=[\"fatal\",\"error\",\"warning\",\"log\",\"info\",\"debug\"];const Pt=we(),At={nowSeconds:()=>Date.now()/1e3};const Dt=\"undefined\"!=typeof __SENTRY_BROWSER_BUNDLE__&&__SENTRY_BROWSER_BUNDLE__||\"[object process]\"!==Object.prototype.toString.call(\"undefined\"!=typeof process?process:0)?function(){const{performance:e}=Pt;if(!e||!e.now)return;return{now:()=>e.now(),timeOrigin:Date.now()-e.now()}}():function(){try{return(e=module,t=\"perf_hooks\",e.require(t)).performance}catch(e){return}var e,t}(),jt=void 0===Dt?At:{nowSeconds:()=>(Dt.timeOrigin+Dt.now())/1e3},xt=At.nowSeconds.bind(At),Lt=jt.nowSeconds.bind(jt);function It(e,t=[]){return[e,t]}function Nt(e,t){const[n,r]=e;return[n,[...r,t]]}function Rt(e,t){const n=e[1];for(const e of n){if(t(e,e[0].type))return!0}return!1}function Bt(e,t){return(t||new TextEncoder).encode(e)}function Ft(e,t){const[n,r]=e;let i=JSON.stringify(n);function o(e){\"string\"==typeof i?i=\"string\"==typeof e?i+e:[Bt(i,t),e]:i.push(\"string\"==typeof e?Bt(e,t):e)}for(const e of r){const[t,n]=e;if(o(`\\n${JSON.stringify(t)}\\n`),\"string\"==typeof n||n instanceof Uint8Array)o(n);else{let e;try{e=JSON.stringify(n)}catch(t){e=JSON.stringify(_t(n))}o(e)}}return\"string\"==typeof i?i:function(e){const t=e.reduce(((e,t)=>e+t.length),0),n=new Uint8Array(t);let r=0;for(const t of e)n.set(t,r),r+=t.length;return n}(i)}function Ut(e,t){const n=\"string\"==typeof e.data?Bt(e.data,t):e.data;return[$e({type:\"attachment\",length:n.length,filename:e.filename,content_type:e.contentType,attachment_type:e.attachmentType}),n]}(()=>{const{performance:e}=Pt;if(!e||!e.now)return;const t=36e5,n=e.now(),r=Date.now(),i=e.timeOrigin?Math.abs(e.timeOrigin+n-r):t,o=i<t,a=e.timing&&e.timing.navigationStart,s=\"number\"==typeof a?Math.abs(a+n-r):t;(o||s<t)&&(i<=s&&e.timeOrigin)})();const Vt={session:\"session\",sessions:\"session\",attachment:\"attachment\",transaction:\"transaction\",event:\"error\",client_report:\"internal\",user_report:\"default\",profile:\"profile\",replay_event:\"replay\",replay_recording:\"replay\",check_in:\"monitor\"};function Jt(e){return Vt[e]}function $t(e){if(!e||!e.sdk)return;const{name:t,version:n}=e.sdk;return{name:t,version:n}}const Gt=6e4;function qt(e,{statusCode:t,headers:n},r=Date.now()){const i={...e},o=n&&n[\"x-sentry-rate-limits\"],a=n&&n[\"retry-after\"];if(o)for(const e of o.trim().split(\",\")){const[t,n]=e.split(\":\",2),o=parseInt(t,10),a=1e3*(isNaN(o)?60:o);if(n)for(const e of n.split(\";\"))i[e]=r+a;else i.all=r+a}else a?i.all=r+function(e,t=Date.now()){const n=parseInt(`${e}`,10);if(!isNaN(n))return 1e3*n;const r=Date.parse(`${e}`);return isNaN(r)?Gt:r-t}(a,r):429===t&&(i.all=r+6e4);return i}const Yt=\"production\";function zt(e){const t=Lt(),n={sid:pt(),init:!0,timestamp:t,started:t,duration:0,status:\"ok\",errors:0,ignoreDuration:!1,toJSON:()=>function(e){return $e({sid:`${e.sid}`,init:e.init,started:new Date(1e3*e.started).toISOString(),timestamp:new Date(1e3*e.timestamp).toISOString(),status:e.status,errors:e.errors,did:\"number\"==typeof e.did||\"string\"==typeof e.did?`${e.did}`:void 0,duration:e.duration,attrs:{release:e.release,environment:e.environment,ip_address:e.ipAddress,user_agent:e.userAgent}})}(n)};return e&&Wt(n,e),n}function Wt(e,t={}){if(t.user&&(!e.ipAddress&&t.user.ip_address&&(e.ipAddress=t.user.ip_address),e.did||t.did||(e.did=t.user.id||t.user.email||t.user.username)),e.timestamp=t.timestamp||Lt(),t.ignoreDuration&&(e.ignoreDuration=t.ignoreDuration),t.sid&&(e.sid=32===t.sid.length?t.sid:pt()),void 0!==t.init&&(e.init=t.init),!e.did&&t.did&&(e.did=`${t.did}`),\"number\"==typeof t.started&&(e.started=t.started),e.ignoreDuration)e.duration=void 0;else if(\"number\"==typeof t.duration)e.duration=t.duration;else{const t=e.timestamp-e.started;e.duration=t>=0?t:0}t.release&&(e.release=t.release),t.environment&&(e.environment=t.environment),!e.ipAddress&&t.ipAddress&&(e.ipAddress=t.ipAddress),!e.userAgent&&t.userAgent&&(e.userAgent=t.userAgent),\"number\"==typeof t.errors&&(e.errors=t.errors),t.status&&(e.status=t.status)}class Ht{constructor(){this._notifyingListeners=!1,this._scopeListeners=[],this._eventProcessors=[],this._breadcrumbs=[],this._attachments=[],this._user={},this._tags={},this._extra={},this._contexts={},this._sdkProcessingMetadata={},this._propagationContext=Xt()}static clone(e){const t=new Ht;return e&&(t._breadcrumbs=[...e._breadcrumbs],t._tags={...e._tags},t._extra={...e._extra},t._contexts={...e._contexts},t._user=e._user,t._level=e._level,t._span=e._span,t._session=e._session,t._transactionName=e._transactionName,t._fingerprint=e._fingerprint,t._eventProcessors=[...e._eventProcessors],t._requestSession=e._requestSession,t._attachments=[...e._attachments],t._sdkProcessingMetadata={...e._sdkProcessingMetadata},t._propagationContext={...e._propagationContext}),t}addScopeListener(e){this._scopeListeners.push(e)}addEventProcessor(e){return this._eventProcessors.push(e),this}setUser(e){return this._user=e||{},this._session&&Wt(this._session,{user:e}),this._notifyScopeListeners(),this}getUser(){return this._user}getRequestSession(){return this._requestSession}setRequestSession(e){return this._requestSession=e,this}setTags(e){return this._tags={...this._tags,...e},this._notifyScopeListeners(),this}setTag(e,t){return this._tags={...this._tags,[e]:t},this._notifyScopeListeners(),this}setExtras(e){return this._extra={...this._extra,...e},this._notifyScopeListeners(),this}setExtra(e,t){return this._extra={...this._extra,[e]:t},this._notifyScopeListeners(),this}setFingerprint(e){return this._fingerprint=e,this._notifyScopeListeners(),this}setLevel(e){return this._level=e,this._notifyScopeListeners(),this}setTransactionName(e){return this._transactionName=e,this._notifyScopeListeners(),this}setContext(e,t){return null===t?delete this._contexts[e]:this._contexts[e]=t,this._notifyScopeListeners(),this}setSpan(e){return this._span=e,this._notifyScopeListeners(),this}getSpan(){return this._span}getTransaction(){const e=this.getSpan();return e&&e.transaction}setSession(e){return e?this._session=e:delete this._session,this._notifyScopeListeners(),this}getSession(){return this._session}update(e){if(!e)return this;if(\"function\"==typeof e){const t=e(this);return t instanceof Ht?t:this}return e instanceof Ht?(this._tags={...this._tags,...e._tags},this._extra={...this._extra,...e._extra},this._contexts={...this._contexts,...e._contexts},e._user&&Object.keys(e._user).length&&(this._user=e._user),e._level&&(this._level=e._level),e._fingerprint&&(this._fingerprint=e._fingerprint),e._requestSession&&(this._requestSession=e._requestSession),e._propagationContext&&(this._propagationContext=e._propagationContext)):se(e)&&(this._tags={...this._tags,...e.tags},this._extra={...this._extra,...e.extra},this._contexts={...this._contexts,...e.contexts},e.user&&(this._user=e.user),e.level&&(this._level=e.level),e.fingerprint&&(this._fingerprint=e.fingerprint),e.requestSession&&(this._requestSession=e.requestSession),e.propagationContext&&(this._propagationContext=e.propagationContext)),this}clear(){return this._breadcrumbs=[],this._tags={},this._extra={},this._user={},this._contexts={},this._level=void 0,this._transactionName=void 0,this._fingerprint=void 0,this._requestSession=void 0,this._span=void 0,this._session=void 0,this._notifyScopeListeners(),this._attachments=[],this._propagationContext=Xt(),this}addBreadcrumb(e,t){const n=\"number\"==typeof t?t:100;if(n<=0)return this;const r={timestamp:xt(),...e};return this._breadcrumbs=[...this._breadcrumbs,r].slice(-n),this._notifyScopeListeners(),this}getLastBreadcrumb(){return this._breadcrumbs[this._breadcrumbs.length-1]}clearBreadcrumbs(){return this._breadcrumbs=[],this._notifyScopeListeners(),this}addAttachment(e){return this._attachments.push(e),this}getAttachments(){return this._attachments}clearAttachments(){return this._attachments=[],this}applyToEvent(e,t={}){if(this._extra&&Object.keys(this._extra).length&&(e.extra={...this._extra,...e.extra}),this._tags&&Object.keys(this._tags).length&&(e.tags={...this._tags,...e.tags}),this._user&&Object.keys(this._user).length&&(e.user={...this._user,...e.user}),this._contexts&&Object.keys(this._contexts).length&&(e.contexts={...this._contexts,...e.contexts}),this._level&&(e.level=this._level),this._transactionName&&(e.transaction=this._transactionName),this._span){e.contexts={trace:this._span.getTraceContext(),...e.contexts};const t=this._span.transaction;if(t){e.sdkProcessingMetadata={dynamicSamplingContext:t.getDynamicSamplingContext(),...e.sdkProcessingMetadata};const n=t.name;n&&(e.tags={transaction:n,...e.tags})}}return this._applyFingerprint(e),e.breadcrumbs=[...e.breadcrumbs||[],...this._breadcrumbs],e.breadcrumbs=e.breadcrumbs.length>0?e.breadcrumbs:void 0,e.sdkProcessingMetadata={...e.sdkProcessingMetadata,...this._sdkProcessingMetadata,propagationContext:this._propagationContext},this._notifyEventProcessors([...Qt(),...this._eventProcessors],e,t)}setSDKProcessingMetadata(e){return this._sdkProcessingMetadata={...this._sdkProcessingMetadata,...e},this}setPropagationContext(e){return this._propagationContext=e,this}getPropagationContext(){return this._propagationContext}_notifyEventProcessors(e,t,n,r=0){return new Ct(((i,o)=>{const a=e[r];if(null===t||\"function\"!=typeof a)i(t);else{const s=a({...t},n);(\"undefined\"==typeof __SENTRY_DEBUG__||__SENTRY_DEBUG__)&&a.id&&null===s&&Ae.log(`Event processor \"${a.id}\" dropped event`),le(s)?s.then((t=>this._notifyEventProcessors(e,t,n,r+1).then(i))).then(null,o):this._notifyEventProcessors(e,s,n,r+1).then(i).then(null,o)}}))}_notifyScopeListeners(){this._notifyingListeners||(this._notifyingListeners=!0,this._scopeListeners.forEach((e=>{e(this)})),this._notifyingListeners=!1)}_applyFingerprint(e){var t;e.fingerprint=e.fingerprint?(t=e.fingerprint,Array.isArray(t)?t:[t]):[],this._fingerprint&&(e.fingerprint=e.fingerprint.concat(this._fingerprint)),e.fingerprint&&!e.fingerprint.length&&delete e.fingerprint}}function Qt(){return Se(\"globalEventProcessors\",(()=>[]))}function Kt(e){Qt().push(e)}function Xt(){return{traceId:pt(),spanId:pt().substring(16),sampled:!1}}const Zt=4,en=100;class tn{constructor(e,t=new Ht,n=Zt){this._version=n,this._stack=[{scope:t}],e&&this.bindClient(e)}isOlderThan(e){return this._version<e}bindClient(e){this.getStackTop().client=e,e&&e.setupIntegrations&&e.setupIntegrations()}pushScope(){const e=Ht.clone(this.getScope());return this.getStack().push({client:this.getClient(),scope:e}),e}popScope(){return!(this.getStack().length<=1)&&!!this.getStack().pop()}withScope(e){const t=this.pushScope();try{e(t)}finally{this.popScope()}}getClient(){return this.getStackTop().client}getScope(){return this.getStackTop().scope}getStack(){return this._stack}getStackTop(){return this._stack[this._stack.length-1]}captureException(e,t){const n=this._lastEventId=t&&t.event_id?t.event_id:pt(),r=new Error(\"Sentry syntheticException\");return this._withClient(((i,o)=>{i.captureException(e,{originalException:e,syntheticException:r,...t,event_id:n},o)})),n}captureMessage(e,t,n){const r=this._lastEventId=n&&n.event_id?n.event_id:pt(),i=new Error(e);return this._withClient(((o,a)=>{o.captureMessage(e,t,{originalException:e,syntheticException:i,...n,event_id:r},a)})),r}captureEvent(e,t){const n=t&&t.event_id?t.event_id:pt();return e.type||(this._lastEventId=n),this._withClient(((r,i)=>{r.captureEvent(e,{...t,event_id:n},i)})),n}lastEventId(){return this._lastEventId}addBreadcrumb(e,t){const{scope:n,client:r}=this.getStackTop();if(!r)return;const{beforeBreadcrumb:i=null,maxBreadcrumbs:o=en}=r.getOptions&&r.getOptions()||{};if(o<=0)return;const a={timestamp:xt(),...e},s=i?Oe((()=>i(a,t))):a;null!==s&&(r.emit&&r.emit(\"beforeAddBreadcrumb\",s,t),n.addBreadcrumb(s,o))}setUser(e){this.getScope().setUser(e)}setTags(e){this.getScope().setTags(e)}setExtras(e){this.getScope().setExtras(e)}setTag(e,t){this.getScope().setTag(e,t)}setExtra(e,t){this.getScope().setExtra(e,t)}setContext(e,t){this.getScope().setContext(e,t)}configureScope(e){const{scope:t,client:n}=this.getStackTop();n&&e(t)}run(e){const t=rn(this);try{e(this)}finally{rn(t)}}getIntegration(e){const t=this.getClient();if(!t)return null;try{return t.getIntegration(e)}catch(t){return(\"undefined\"==typeof __SENTRY_DEBUG__||__SENTRY_DEBUG__)&&Ae.warn(`Cannot retrieve integration ${e.id} from the current Hub`),null}}startTransaction(e,t){const n=this._callExtensionMethod(\"startTransaction\",e,t);return\"undefined\"!=typeof __SENTRY_DEBUG__&&!__SENTRY_DEBUG__||n||console.warn(\"Tracing extension 'startTransaction' has not been added. Call 'addTracingExtensions' before calling 'init':\\nSentry.addTracingExtensions();\\nSentry.init({...});\\n\"),n}traceHeaders(){return this._callExtensionMethod(\"traceHeaders\")}captureSession(e=!1){if(e)return this.endSession();this._sendSessionUpdate()}endSession(){const e=this.getStackTop().scope,t=e.getSession();t&&function(e,t){let n={};t?n={status:t}:\"ok\"===e.status&&(n={status:\"exited\"}),Wt(e,n)}(t),this._sendSessionUpdate(),e.setSession()}startSession(e){const{scope:t,client:n}=this.getStackTop(),{release:r,environment:i=Yt}=n&&n.getOptions()||{},{userAgent:o}=be.navigator||{},a=zt({release:r,environment:i,user:t.getUser(),...o&&{userAgent:o},...e}),s=t.getSession&&t.getSession();return s&&\"ok\"===s.status&&Wt(s,{status:\"exited\"}),this.endSession(),t.setSession(a),a}shouldSendDefaultPii(){const e=this.getClient(),t=e&&e.getOptions();return Boolean(t&&t.sendDefaultPii)}_sendSessionUpdate(){const{scope:e,client:t}=this.getStackTop(),n=e.getSession();n&&t&&t.captureSession&&t.captureSession(n)}_withClient(e){const{scope:t,client:n}=this.getStackTop();n&&e(n,t)}_callExtensionMethod(e,...t){const n=nn().__SENTRY__;if(n&&n.extensions&&\"function\"==typeof n.extensions[e])return n.extensions[e].apply(this,t);(\"undefined\"==typeof __SENTRY_DEBUG__||__SENTRY_DEBUG__)&&Ae.warn(`Extension method ${e} couldn't be found, doing nothing.`)}}function nn(){return be.__SENTRY__=be.__SENTRY__||{extensions:{},hub:void 0},be}function rn(e){const t=nn(),n=an(t);return sn(t,e),n}function on(){const e=nn();if(e.__SENTRY__&&e.__SENTRY__.acs){const t=e.__SENTRY__.acs.getCurrentHub();if(t)return t}return function(e=nn()){t=e,t&&t.__SENTRY__&&t.__SENTRY__.hub&&!an(e).isOlderThan(Zt)||sn(e,new tn);var t;return an(e)}(e)}function an(e){return Se(\"hub\",(()=>new tn),e)}function sn(e,t){if(!e)return!1;return(e.__SENTRY__=e.__SENTRY__||{}).hub=t,!0}const cn=\"7\";function ln(e,t){return n={sentry_key:e.publicKey,sentry_version:cn,...t&&{sentry_client:`${t.name}/${t.version}`}},Object.keys(n).map((e=>`${encodeURIComponent(e)}=${encodeURIComponent(n[e])}`)).join(\"&\");var n}function un(e,t,n,r){const i=$t(n),o=e.type&&\"replay_event\"!==e.type?e.type:\"event\";!function(e,t){t&&(e.sdk=e.sdk||{},e.sdk.name=e.sdk.name||t.name,e.sdk.version=e.sdk.version||t.version,e.sdk.integrations=[...e.sdk.integrations||[],...t.integrations||[]],e.sdk.packages=[...e.sdk.packages||[],...t.packages||[]])}(e,n&&n.sdk);const a=function(e,t,n,r){const i=e.sdkProcessingMetadata&&e.sdkProcessingMetadata.dynamicSamplingContext;return{event_id:e.event_id,sent_at:(new Date).toISOString(),...t&&{sdk:t},...!!n&&{dsn:je(r)},...i&&{trace:$e({...i})}}}(e,i,r,t);delete e.sdkProcessingMetadata;return It(a,[[{type:o},e]])}const dn=[];function hn(e,t){t[e.name]=e,-1===dn.indexOf(e.name)&&(e.setupOnce(Kt,on),dn.push(e.name),(\"undefined\"==typeof __SENTRY_DEBUG__||__SENTRY_DEBUG__)&&Ae.log(`Integration installed: ${e.name}`))}function pn(e,t,n,r){const{normalizeDepth:i=3,normalizeMaxBreadth:o=1e3}=e,a={...t,event_id:t.event_id||n.event_id||pt(),timestamp:t.timestamp||xt()},s=n.integrations||e.integrations.map((e=>e.name));!function(e,t){const{environment:n,release:r,dist:i,maxValueLength:o=250}=t;\"environment\"in e||(e.environment=\"environment\"in t?n:Yt);void 0===e.release&&void 0!==r&&(e.release=r);void 0===e.dist&&void 0!==i&&(e.dist=i);e.message&&(e.message=de(e.message,o));const a=e.exception&&e.exception.values&&e.exception.values[0];a&&a.value&&(a.value=de(a.value,o));const s=e.request;s&&s.url&&(s.url=de(s.url,o))}(a,e),function(e,t){t.length>0&&(e.sdk=e.sdk||{},e.sdk.integrations=[...e.sdk.integrations||[],...t])}(a,s),void 0===t.type&&function(e,t){const n=be._sentryDebugIds;if(!n)return;let r;const i=fn.get(t);i?r=i:(r=new Map,fn.set(t,r));const o=Object.keys(n).reduce(((e,i)=>{let o;const a=r.get(i);a?o=a:(o=t(i),r.set(i,o));for(let t=o.length-1;t>=0;t--){const r=o[t];if(r.filename){e[r.filename]=n[i];break}}return e}),{});try{e.exception.values.forEach((e=>{e.stacktrace.frames.forEach((e=>{e.filename&&(e.debug_id=o[e.filename])}))}))}catch(e){}}(a,e.stackParser);let c=r;n.captureContext&&(c=Ht.clone(c).update(n.captureContext));let l=kt(a);if(c){if(c.getAttachments){const e=[...n.attachments||[],...c.getAttachments()];e.length&&(n.attachments=e)}l=c.applyToEvent(a,n)}return l.then((e=>(e&&function(e){const t={};try{e.exception.values.forEach((e=>{e.stacktrace.frames.forEach((e=>{e.debug_id&&(e.abs_path?t[e.abs_path]=e.debug_id:e.filename&&(t[e.filename]=e.debug_id),delete e.debug_id)}))}))}catch(e){}if(0===Object.keys(t).length)return;e.debug_meta=e.debug_meta||{},e.debug_meta.images=e.debug_meta.images||[];const n=e.debug_meta.images;Object.keys(t).forEach((e=>{n.push({type:\"sourcemap\",code_file:e,debug_id:t[e]})}))}(e),\"number\"==typeof i&&i>0?function(e,t,n){if(!e)return null;const r={...e,...e.breadcrumbs&&{breadcrumbs:e.breadcrumbs.map((e=>({...e,...e.data&&{data:_t(e.data,t,n)}})))},...e.user&&{user:_t(e.user,t,n)},...e.contexts&&{contexts:_t(e.contexts,t,n)},...e.extra&&{extra:_t(e.extra,t,n)}};e.contexts&&e.contexts.trace&&r.contexts&&(r.contexts.trace=e.contexts.trace,e.contexts.trace.data&&(r.contexts.trace.data=_t(e.contexts.trace.data,t,n)));e.spans&&(r.spans=e.spans.map((e=>(e.data&&(e.data=_t(e.data,t,n)),e))));return r}(e,i,o):e)))}const fn=new WeakMap;const gn=\"Not capturing exception because it's already been captured.\";class vn{__init(){this._integrations={}}__init2(){this._integrationsInitialized=!1}__init3(){this._numProcessing=0}__init4(){this._outcomes={}}__init5(){this._hooks={}}constructor(e){if(vn.prototype.__init.call(this),vn.prototype.__init2.call(this),vn.prototype.__init3.call(this),vn.prototype.__init4.call(this),vn.prototype.__init5.call(this),this._options=e,e.dsn?this._dsn=Le(e.dsn):(\"undefined\"==typeof __SENTRY_DEBUG__||__SENTRY_DEBUG__)&&Ae.warn(\"No DSN provided, client will not do anything.\"),this._dsn){const t=function(e,t={}){const n=\"string\"==typeof t?t:t.tunnel,r=\"string\"!=typeof t&&t._metadata?t._metadata.sdk:void 0;return n||`${function(e){return`${function(e){const t=e.protocol?`${e.protocol}:`:\"\",n=e.port?`:${e.port}`:\"\";return`${t}//${e.host}${n}${e.path?`/${e.path}`:\"\"}/api/`}(e)}${e.projectId}/envelope/`}(e)}?${ln(e,r)}`}(this._dsn,e);this._transport=e.transport({recordDroppedEvent:this.recordDroppedEvent.bind(this),...e.transportOptions,url:t})}}captureException(e,t,n){if(yt(e))return void((\"undefined\"==typeof __SENTRY_DEBUG__||__SENTRY_DEBUG__)&&Ae.log(gn));let r=t&&t.event_id;return this._process(this.eventFromException(e,t).then((e=>this._captureEvent(e,t,n))).then((e=>{r=e}))),r}captureMessage(e,t,n,r){let i=n&&n.event_id;const o=ae(e)?this.eventFromMessage(String(e),t,n):this.eventFromException(e,n);return this._process(o.then((e=>this._captureEvent(e,n,r))).then((e=>{i=e}))),i}captureEvent(e,t,n){if(t&&t.originalException&&yt(t.originalException))return void((\"undefined\"==typeof __SENTRY_DEBUG__||__SENTRY_DEBUG__)&&Ae.log(gn));let r=t&&t.event_id;return this._process(this._captureEvent(e,t,n).then((e=>{r=e}))),r}captureSession(e){this._isEnabled()?\"string\"!=typeof e.release?(\"undefined\"==typeof __SENTRY_DEBUG__||__SENTRY_DEBUG__)&&Ae.warn(\"Discarded session because of missing or non-string release\"):(this.sendSession(e),Wt(e,{init:!1})):(\"undefined\"==typeof __SENTRY_DEBUG__||__SENTRY_DEBUG__)&&Ae.warn(\"SDK not enabled, will not capture session.\")}getDsn(){return this._dsn}getOptions(){return this._options}getSdkMetadata(){return this._options._metadata}getTransport(){return this._transport}flush(e){const t=this._transport;return t?this._isClientDoneProcessing(e).then((n=>t.flush(e).then((e=>n&&e)))):kt(!0)}close(e){return this.flush(e).then((e=>(this.getOptions().enabled=!1,e)))}setupIntegrations(){this._isEnabled()&&!this._integrationsInitialized&&(this._integrations=function(e){const t={};return e.forEach((e=>{e&&hn(e,t)})),t}(this._options.integrations),this._integrationsInitialized=!0)}getIntegrationById(e){return this._integrations[e]}getIntegration(e){try{return this._integrations[e.id]||null}catch(t){return(\"undefined\"==typeof __SENTRY_DEBUG__||__SENTRY_DEBUG__)&&Ae.warn(`Cannot retrieve integration ${e.id} from the current Client`),null}}addIntegration(e){hn(e,this._integrations)}sendEvent(e,t={}){if(this._dsn){let n=un(e,this._dsn,this._options._metadata,this._options.tunnel);for(const e of t.attachments||[])n=Nt(n,Ut(e,this._options.transportOptions&&this._options.transportOptions.textEncoder));const r=this._sendEnvelope(n);r&&r.then((t=>this.emit(\"afterSendEvent\",e,t)),null)}}sendSession(e){if(this._dsn){const t=function(e,t,n,r){const i=$t(n);return It({sent_at:(new Date).toISOString(),...i&&{sdk:i},...!!r&&{dsn:je(t)}},[\"aggregates\"in e?[{type:\"sessions\"},e]:[{type:\"session\"},e.toJSON()]])}(e,this._dsn,this._options._metadata,this._options.tunnel);this._sendEnvelope(t)}}recordDroppedEvent(e,t,n){if(this._options.sendClientReports){const n=`${e}:${t}`;(\"undefined\"==typeof __SENTRY_DEBUG__||__SENTRY_DEBUG__)&&Ae.log(`Adding outcome: \"${n}\"`),this._outcomes[n]=this._outcomes[n]+1||1}}on(e,t){this._hooks[e]||(this._hooks[e]=[]),this._hooks[e].push(t)}emit(e,...t){this._hooks[e]&&this._hooks[e].forEach((e=>e(...t)))}_updateSessionFromEvent(e,t){let n=!1,r=!1;const i=t.exception&&t.exception.values;if(i){r=!0;for(const e of i){const t=e.mechanism;if(t&&!1===t.handled){n=!0;break}}}const o=\"ok\"===e.status;(o&&0===e.errors||o&&n)&&(Wt(e,{...n&&{status:\"crashed\"},errors:e.errors||Number(r||n)}),this.captureSession(e))}_isClientDoneProcessing(e){return new Ct((t=>{let n=0;const r=setInterval((()=>{0==this._numProcessing?(clearInterval(r),t(!0)):(n+=1,e&&n>=e&&(clearInterval(r),t(!1)))}),1)}))}_isEnabled(){return!1!==this.getOptions().enabled&&void 0!==this._dsn}_prepareEvent(e,t,n){const r=this.getOptions(),i=Object.keys(this._integrations);return!t.integrations&&i.length>0&&(t.integrations=i),pn(r,e,t,n).then((e=>{if(null===e)return e;const{propagationContext:t}=e.sdkProcessingMetadata||{};if(!(e.contexts&&e.contexts.trace)&&t){const{traceId:r,spanId:i,parentSpanId:o,dsc:a}=t;e.contexts={trace:{trace_id:r,span_id:i,parent_span_id:o},...e.contexts};const s=a||function(e,t,n){const r=t.getOptions(),{publicKey:i}=t.getDsn()||{},{segment:o}=n&&n.getUser()||{},a=$e({environment:r.environment||Yt,release:r.release,user_segment:o,public_key:i,trace_id:e});return t.emit&&t.emit(\"createDsc\",a),a}(r,this,n);e.sdkProcessingMetadata={dynamicSamplingContext:s,...e.sdkProcessingMetadata}}return e}))}_captureEvent(e,t={},n){return this._processEvent(e,t,n).then((e=>e.event_id),(e=>{if(\"undefined\"==typeof __SENTRY_DEBUG__||__SENTRY_DEBUG__){const t=e;\"log\"===t.logLevel?Ae.log(t.message):Ae.warn(t)}}))}_processEvent(e,t,n){const r=this.getOptions(),{sampleRate:i}=r;if(!this._isEnabled())return Et(new Ie(\"SDK not enabled, will not capture event.\",\"log\"));const o=yn(e),a=mn(e),s=e.type||\"error\",c=`before send for type \\`${s}\\``;if(a&&\"number\"==typeof i&&Math.random()>i)return this.recordDroppedEvent(\"sample_rate\",\"error\",e),Et(new Ie(`Discarding event because it's not included in the random sample (sampling rate = ${i})`,\"log\"));const l=\"replay_event\"===s?\"replay\":s;return this._prepareEvent(e,t,n).then((n=>{if(null===n)throw this.recordDroppedEvent(\"event_processor\",l,e),new Ie(\"An event processor returned `null`, will not send event.\",\"log\");if(t.data&&!0===t.data.__sentry__)return n;const i=function(e,t,n){const{beforeSend:r,beforeSendTransaction:i}=e;if(mn(t)&&r)return r(t,n);if(yn(t)&&i)return i(t,n);return t}(r,n,t);return function(e,t){const n=`${t} must return \\`null\\` or a valid event.`;if(le(e))return e.then((e=>{if(!se(e)&&null!==e)throw new Ie(n);return e}),(e=>{throw new Ie(`${t} rejected with ${e}`)}));if(!se(e)&&null!==e)throw new Ie(n);return e}(i,c)})).then((r=>{if(null===r)throw this.recordDroppedEvent(\"before_send\",l,e),new Ie(`${c} returned \\`null\\`, will not send event.`,\"log\");const i=n&&n.getSession();!o&&i&&this._updateSessionFromEvent(i,r);const a=r.transaction_info;if(o&&a&&r.transaction!==e.transaction){const e=\"custom\";r.transaction_info={...a,source:e}}return this.sendEvent(r,t),r})).then(null,(e=>{if(e instanceof Ie)throw e;throw this.captureException(e,{data:{__sentry__:!0},originalException:e}),new Ie(`Event processing pipeline threw an error, original event will not be sent. Details have been sent as a new event.\\nReason: ${e}`)}))}_process(e){this._numProcessing++,e.then((e=>(this._numProcessing--,e)),(e=>(this._numProcessing--,e)))}_sendEnvelope(e){if(this._transport&&this._dsn)return this.emit(\"beforeEnvelope\",e),this._transport.send(e).then(null,(e=>{(\"undefined\"==typeof __SENTRY_DEBUG__||__SENTRY_DEBUG__)&&Ae.error(\"Error while sending event:\",e)}));(\"undefined\"==typeof __SENTRY_DEBUG__||__SENTRY_DEBUG__)&&Ae.error(\"Transport disabled\")}_clearOutcomes(){const e=this._outcomes;return this._outcomes={},Object.keys(e).map((t=>{const[n,r]=t.split(\":\");return{reason:n,category:r,quantity:e[t]}}))}}function mn(e){return void 0===e.type}function yn(e){return\"transaction\"===e.type}const _n=30;function bn(e,t,n=Mt(e.bufferSize||_n)){let r={};function i(i){const o=[];if(Rt(i,((t,n)=>{const i=Jt(n);if(function(e,t,n=Date.now()){return function(e,t){return e[t]||e.all||0}(e,t)>n}(r,i)){const r=wn(t,n);e.recordDroppedEvent(\"ratelimit_backoff\",i,r)}else o.push(t)})),0===o.length)return kt();const a=It(i[0],o),s=t=>{Rt(a,((n,r)=>{const i=wn(n,r);e.recordDroppedEvent(t,Jt(r),i)}))};return n.add((()=>t({body:Ft(a,e.textEncoder)}).then((e=>(void 0!==e.statusCode&&(e.statusCode<200||e.statusCode>=300)&&(\"undefined\"==typeof __SENTRY_DEBUG__||__SENTRY_DEBUG__)&&Ae.warn(`Sentry responded with status code ${e.statusCode} to sent event.`),r=qt(r,e),e)),(e=>{throw s(\"network_error\"),e})))).then((e=>e),(e=>{if(e instanceof Ie)return(\"undefined\"==typeof __SENTRY_DEBUG__||__SENTRY_DEBUG__)&&Ae.error(\"Skipped sending event because buffer is full.\"),s(\"queue_overflow\"),kt();throw e}))}return i.__sentry__baseTransport__=!0,{send:i,flush:e=>n.drain(e)}}function wn(e,t){if(\"event\"===t||\"transaction\"===t)return Array.isArray(e)?e[1]:void 0}const Sn=\"7.60.1\";let kn;class En{constructor(){En.prototype.__init.call(this)}static __initStatic(){this.id=\"FunctionToString\"}__init(){this.name=En.id}setupOnce(){kn=Function.prototype.toString;try{Function.prototype.toString=function(...e){const t=Fe(this)||this;return kn.apply(t,e)}}catch(e){}}}En.__initStatic();const Cn=[/^Script error\\.?$/,/^Javascript error: Script error\\.? on line 0$/],Mn=[/^.*healthcheck.*$/,/^.*healthy.*$/,/^.*live.*$/,/^.*ready.*$/,/^.*heartbeat.*$/,/^.*\\/health$/,/^.*\\/healthz$/];class Tn{static __initStatic(){this.id=\"InboundFilters\"}__init(){this.name=Tn.id}constructor(e={}){this._options=e,Tn.prototype.__init.call(this)}setupOnce(e,t){const n=e=>{const n=t();if(n){const t=n.getIntegration(Tn);if(t){const r=n.getClient(),i=r?r.getOptions():{},o=function(e={},t={}){return{allowUrls:[...e.allowUrls||[],...t.allowUrls||[]],denyUrls:[...e.denyUrls||[],...t.denyUrls||[]],ignoreErrors:[...e.ignoreErrors||[],...t.ignoreErrors||[],...e.disableErrorDefaults?[]:Cn],ignoreTransactions:[...e.ignoreTransactions||[],...t.ignoreTransactions||[],...e.disableTransactionDefaults?[]:Mn],ignoreInternal:void 0===e.ignoreInternal||e.ignoreInternal}}(t._options,i);return function(e,t){if(t.ignoreInternal&&function(e){try{return\"SentryError\"===e.exception.values[0].type}catch(e){}return!1}(e))return(\"undefined\"==typeof __SENTRY_DEBUG__||__SENTRY_DEBUG__)&&Ae.warn(`Event dropped due to being internal Sentry Error.\\nEvent: ${gt(e)}`),!0;if(function(e,t){if(e.type||!t||!t.length)return!1;return function(e){if(e.message)return[e.message];if(e.exception){const{values:t}=e.exception;try{const{type:e=\"\",value:n=\"\"}=t&&t[t.length-1]||{};return[`${n}`,`${e}: ${n}`]}catch(t){return(\"undefined\"==typeof __SENTRY_DEBUG__||__SENTRY_DEBUG__)&&Ae.error(`Cannot extract message for event ${gt(e)}`),[]}}return[]}(e).some((e=>fe(e,t)))}(e,t.ignoreErrors))return(\"undefined\"==typeof __SENTRY_DEBUG__||__SENTRY_DEBUG__)&&Ae.warn(`Event dropped due to being matched by \\`ignoreErrors\\` option.\\nEvent: ${gt(e)}`),!0;if(function(e,t){if(\"transaction\"!==e.type||!t||!t.length)return!1;const n=e.transaction;return!!n&&fe(n,t)}(e,t.ignoreTransactions))return(\"undefined\"==typeof __SENTRY_DEBUG__||__SENTRY_DEBUG__)&&Ae.warn(`Event dropped due to being matched by \\`ignoreTransactions\\` option.\\nEvent: ${gt(e)}`),!0;if(function(e,t){if(!t||!t.length)return!1;const n=On(e);return!!n&&fe(n,t)}(e,t.denyUrls))return(\"undefined\"==typeof __SENTRY_DEBUG__||__SENTRY_DEBUG__)&&Ae.warn(`Event dropped due to being matched by \\`denyUrls\\` option.\\nEvent: ${gt(e)}.\\nUrl: ${On(e)}`),!0;if(!function(e,t){if(!t||!t.length)return!0;const n=On(e);return!n||fe(n,t)}(e,t.allowUrls))return(\"undefined\"==typeof __SENTRY_DEBUG__||__SENTRY_DEBUG__)&&Ae.warn(`Event dropped due to not being matched by \\`allowUrls\\` option.\\nEvent: ${gt(e)}.\\nUrl: ${On(e)}`),!0;return!1}(e,o)?null:e}}return e};n.id=this.name,e(n)}}function On(e){try{let t;try{t=e.exception.values[0].stacktrace.frames}catch(e){}return t?function(e=[]){for(let t=e.length-1;t>=0;t--){const n=e[t];if(n&&\"<anonymous>\"!==n.filename&&\"[native code]\"!==n.filename)return n.filename||null}return null}(t):null}catch(t){return(\"undefined\"==typeof __SENTRY_DEBUG__||__SENTRY_DEBUG__)&&Ae.error(`Cannot extract url for event ${gt(e)}`),null}}Tn.__initStatic();var Pn=Object.freeze({__proto__:null,FunctionToString:En,InboundFilters:Tn});const An=be;let Dn=0;function jn(){return Dn>0}function xn(e,t={},n){if(\"function\"!=typeof e)return e;try{const t=e.__sentry_wrapped__;if(t)return t;if(Fe(e))return e}catch(t){return e}const r=function(){const r=Array.prototype.slice.call(arguments);try{n&&\"function\"==typeof n&&n.apply(this,arguments);const i=r.map((e=>xn(e,t)));return e.apply(this,i)}catch(e){throw Dn++,setTimeout((()=>{Dn--})),i=n=>{var i,o;n.addEventProcessor((e=>(t.mechanism&&(vt(e,void 0,void 0),mt(e,t.mechanism)),e.extra={...e.extra,arguments:r},e))),i=e,on().captureException(i,{captureContext:o})},on().withScope(i),e}var i};try{for(const t in e)Object.prototype.hasOwnProperty.call(e,t)&&(r[t]=e[t])}catch(e){}Be(r,e),Re(e,\"__sentry_wrapped__\",r);try{Object.getOwnPropertyDescriptor(r,\"name\").configurable&&Object.defineProperty(r,\"name\",{get:()=>e.name})}catch(e){}return r}function Ln(e,t){const n=Nn(e,t),r={type:t&&t.name,value:Bn(t)};return n.length&&(r.stacktrace={frames:n}),void 0===r.type&&\"\"===r.value&&(r.value=\"Unrecoverable error caught\"),r}function In(e,t){return{exception:{values:[Ln(e,t)]}}}function Nn(e,t){const n=t.stacktrace||t.stack||\"\",r=function(e){if(e){if(\"number\"==typeof e.framesToPop)return e.framesToPop;if(Rn.test(e.message))return 1}return 0}(t);try{return e(n,r)}catch(e){}return[]}const Rn=/Minified React error #\\d+;/i;function Bn(e){const t=e&&e.message;return t?t.error&&\"string\"==typeof t.error.message?t.error.message:t:\"No error message\"}function Fn(e,t,n,r,i){let o;if(re(t)&&t.error){return In(e,t.error)}if(ie(t)||ne(t,\"DOMException\")){const i=t;if(\"stack\"in t)o=In(e,t);else{const t=i.name||(ie(i)?\"DOMError\":\"DOMException\"),a=i.message?`${t}: ${i.message}`:t;o=Un(e,a,n,r),vt(o,a)}return\"code\"in i&&(o.tags={...o.tags,\"DOMException.code\":`${i.code}`}),o}if(te(t))return In(e,t);if(se(t)||ce(t)){return o=function(e,t,n,r){const i=on().getClient(),o=i&&i.getOptions().normalizeDepth,a={exception:{values:[{type:ce(t)?t.constructor.name:r?\"UnhandledRejection\":\"Error\",value:Vn(t,{isUnhandledRejection:r})}]},extra:{__serialized__:bt(t,o)}};if(n){const t=Nn(e,n);t.length&&(a.exception.values[0].stacktrace={frames:t})}return a}(e,t,n,i),mt(o,{synthetic:!0}),o}return o=Un(e,t,n,r),vt(o,`${t}`,void 0),mt(o,{synthetic:!0}),o}function Un(e,t,n,r){const i={message:t};if(r&&n){const r=Nn(e,n);r.length&&(i.exception={values:[{value:t,stacktrace:{frames:r}}]})}return i}function Vn(e,{isUnhandledRejection:t}){const n=function(e,t=40){const n=Object.keys(Ue(e));if(n.sort(),!n.length)return\"[object has no keys]\";if(n[0].length>=t)return de(n[0],t);for(let e=n.length;e>0;e--){const r=n.slice(0,e).join(\", \");if(!(r.length>t))return e===n.length?r:de(r,t)}return\"\"}(e),r=t?\"promise rejection\":\"exception\";if(re(e))return`Event \\`ErrorEvent\\` captured as ${r} with message \\`${e.message}\\``;if(ce(e)){return`Event \\`${function(e){try{const t=Object.getPrototypeOf(e);return t?t.constructor.name:void 0}catch(e){}}(e)}\\` (type=${e.type}) captured as ${r}`}return`Object captured as ${r} with keys: ${n}`}const Jn=1024,$n=\"Breadcrumbs\";class Gn{static __initStatic(){this.id=$n}__init(){this.name=Gn.id}constructor(e){Gn.prototype.__init.call(this),this.options={console:!0,dom:!0,fetch:!0,history:!0,sentry:!0,xhr:!0,...e}}setupOnce(){this.options.console&&nt(\"console\",qn),this.options.dom&&nt(\"dom\",function(e){function t(t){let n,r=\"object\"==typeof e?e.serializeAttribute:void 0,i=\"object\"==typeof e&&\"number\"==typeof e.maxStringLength?e.maxStringLength:void 0;i&&i>Jn&&((\"undefined\"==typeof __SENTRY_DEBUG__||__SENTRY_DEBUG__)&&Ae.warn(`\\`dom.maxStringLength\\` cannot exceed 1024, but a value of ${i} was configured. Sentry will use 1024 instead.`),i=Jn),\"string\"==typeof r&&(r=[r]);try{const e=t.event;n=function(e){return!!e&&!!e.target}(e)?Ce(e.target,{keyAttrs:r,maxStringLength:i}):Ce(e,{keyAttrs:r,maxStringLength:i})}catch(e){n=\"<unknown>\"}0!==n.length&&on().addBreadcrumb({category:`ui.${t.name}`,message:n},{event:t.event,name:t.name,global:t.global})}return t}(this.options.dom)),this.options.xhr&&nt(\"xhr\",Yn),this.options.fetch&&nt(\"fetch\",zn),this.options.history&&nt(\"history\",Wn)}addSentryBreadcrumb(e){this.options.sentry&&on().addBreadcrumb({category:\"sentry.\"+(\"transaction\"===e.type?\"transaction\":\"event\"),event_id:e.event_id,level:e.level,message:gt(e)},{event:e})}}function qn(e){for(let t=0;t<e.args.length;t++)if(\"ref=Ref<\"===e.args[t]){e.args[t+1]=\"viewRef\";break}const t={category:\"console\",data:{arguments:e.args,logger:\"console\"},level:(n=e.level,\"warn\"===n?\"warning\":Ot.includes(n)?n:\"log\"),message:he(e.args,\" \")};var n;if(\"assert\"===e.level){if(!1!==e.args[0])return;t.message=`Assertion failed: ${he(e.args.slice(1),\" \")||\"console.assert\"}`,t.data.arguments=e.args.slice(1)}on().addBreadcrumb(t,{input:e.args,level:e.level})}function Yn(e){const{startTimestamp:t,endTimestamp:n}=e,r=e.xhr[Xe];if(!t||!n||!r)return;const{method:i,url:o,status_code:a,body:s}=r,c={method:i,url:o,status_code:a},l={xhr:e.xhr,input:s,startTimestamp:t,endTimestamp:n};on().addBreadcrumb({category:\"xhr\",data:c,type:\"http\"},l)}function zn(e){const{startTimestamp:t,endTimestamp:n}=e;if(n&&(!e.fetchData.url.match(/sentry_key/)||\"POST\"!==e.fetchData.method))if(e.error){const r=e.fetchData,i={data:e.error,input:e.args,startTimestamp:t,endTimestamp:n};on().addBreadcrumb({category:\"fetch\",data:r,level:\"error\",type:\"http\"},i)}else{const r={...e.fetchData,status_code:e.response&&e.response.status},i={input:e.args,response:e.response,startTimestamp:t,endTimestamp:n};on().addBreadcrumb({category:\"fetch\",data:r,type:\"http\"},i)}}function Wn(e){let t=e.from,n=e.to;const r=Tt(An.location.href);let i=Tt(t);const o=Tt(n);i.path||(i=r),r.protocol===o.protocol&&r.host===o.host&&(n=o.relative),r.protocol===i.protocol&&r.host===i.host&&(t=i.relative),on().addBreadcrumb({category:\"navigation\",data:{from:t,to:n}})}Gn.__initStatic();class Hn extends vn{constructor(e){const t=An.SENTRY_SDK_SOURCE||\"npm\";e._metadata=e._metadata||{},e._metadata.sdk=e._metadata.sdk||{name:\"sentry.javascript.browser\",packages:[{name:`${t}:@sentry/browser`,version:Sn}],version:Sn},super(e),e.sendClientReports&&An.document&&An.document.addEventListener(\"visibilitychange\",(()=>{\"hidden\"===An.document.visibilityState&&this._flushOutcomes()}))}eventFromException(e,t){return function(e,t,n,r){const i=Fn(e,t,n&&n.syntheticException||void 0,r);return mt(i),i.level=\"error\",n&&n.event_id&&(i.event_id=n.event_id),kt(i)}(this._options.stackParser,e,t,this._options.attachStacktrace)}eventFromMessage(e,t=\"info\",n){return function(e,t,n=\"info\",r,i){const o=Un(e,t,r&&r.syntheticException||void 0,i);return o.level=n,r&&r.event_id&&(o.event_id=r.event_id),kt(o)}(this._options.stackParser,e,t,n,this._options.attachStacktrace)}sendEvent(e,t){const n=this.getIntegrationById($n);n&&n.addSentryBreadcrumb&&n.addSentryBreadcrumb(e),super.sendEvent(e,t)}captureUserFeedback(e){if(!this._isEnabled())return void((\"undefined\"==typeof __SENTRY_DEBUG__||__SENTRY_DEBUG__)&&Ae.warn(\"SDK not enabled, will not capture user feedback.\"));const t=function(e,{metadata:t,tunnel:n,dsn:r}){const i={event_id:e.event_id,sent_at:(new Date).toISOString(),...t&&t.sdk&&{sdk:{name:t.sdk.name,version:t.sdk.version}},...!!n&&!!r&&{dsn:je(r)}},o=function(e){return[{type:\"user_report\"},e]}(e);return It(i,[o])}(e,{metadata:this.getSdkMetadata(),dsn:this.getDsn(),tunnel:this.getOptions().tunnel});this._sendEnvelope(t)}_prepareEvent(e,t,n){return e.platform=e.platform||\"javascript\",super._prepareEvent(e,t,n)}_flushOutcomes(){const e=this._clearOutcomes();if(0===e.length)return void((\"undefined\"==typeof __SENTRY_DEBUG__||__SENTRY_DEBUG__)&&Ae.log(\"No outcomes to send\"));if(!this._dsn)return void((\"undefined\"==typeof __SENTRY_DEBUG__||__SENTRY_DEBUG__)&&Ae.log(\"No dsn provided, will not send outcomes\"));(\"undefined\"==typeof __SENTRY_DEBUG__||__SENTRY_DEBUG__)&&Ae.log(\"Sending outcomes:\",e);const t=(n=e,It((r=this._options.tunnel&&je(this._dsn))?{dsn:r}:{},[[{type:\"client_report\"},{timestamp:i||xt(),discarded_events:n}]]));var n,r,i;this._sendEnvelope(t)}}let Qn;function Kn(e,t=function(){if(Qn)return Qn;if(We(An.fetch))return Qn=An.fetch.bind(An);const e=An.document;let t=An.fetch;if(e&&\"function\"==typeof e.createElement)try{const n=e.createElement(\"iframe\");n.hidden=!0,e.head.appendChild(n);const r=n.contentWindow;r&&r.fetch&&(t=r.fetch),e.head.removeChild(n)}catch(e){(\"undefined\"==typeof __SENTRY_DEBUG__||__SENTRY_DEBUG__)&&Ae.warn(\"Could not create sandbox iframe for pure fetch check, bailing to window.fetch: \",e)}return Qn=t.bind(An)}()){let n=0,r=0;return bn(e,(function(i){const o=i.body.length;n+=o,r++;const a={body:i.body,method:\"POST\",referrerPolicy:\"origin\",headers:e.headers,keepalive:n<=6e4&&r<15,...e.fetchOptions};try{return t(e.url,a).then((e=>(n-=o,r--,{statusCode:e.status,headers:{\"x-sentry-rate-limits\":e.headers.get(\"X-Sentry-Rate-Limits\"),\"retry-after\":e.headers.get(\"Retry-After\")}})))}catch(e){return Qn=void 0,n-=o,r--,Et(e)}}))}class Xn{static __initStatic(){this.id=\"GlobalHandlers\"}__init(){this.name=Xn.id}__init2(){this._installFunc={onerror:Zn,onunhandledrejection:er}}constructor(e){Xn.prototype.__init.call(this),Xn.prototype.__init2.call(this),this._options={onerror:!0,onunhandledrejection:!0,...e}}setupOnce(){Error.stackTraceLimit=50;const e=this._options;for(const n in e){const r=this._installFunc[n];r&&e[n]&&(t=n,(\"undefined\"==typeof __SENTRY_DEBUG__||__SENTRY_DEBUG__)&&Ae.log(`Global Handler attached: ${t}`),r(),this._installFunc[n]=void 0)}var t}}function Zn(){nt(\"error\",(e=>{const[t,n,r]=rr();if(!t.getIntegration(Xn))return;const{msg:i,url:o,line:a,column:s,error:c}=e;if(jn()||c&&c.__sentry_own_request__)return;const l=void 0===c&&oe(i)?function(e,t,n,r){const i=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/i;let o=re(e)?e.message:e,a=\"Error\";const s=o.match(i);s&&(a=s[1],o=s[2]);const c={exception:{values:[{type:a,value:o}]}};return tr(c,t,n,r)}(i,o,a,s):tr(Fn(n,c||i,void 0,r,!1),o,a,s);l.level=\"error\",nr(t,c,l,\"onerror\")}))}function er(){nt(\"unhandledrejection\",(e=>{const[t,n,r]=rr();if(!t.getIntegration(Xn))return;let i=e;try{\"reason\"in e?i=e.reason:\"detail\"in e&&\"reason\"in e.detail&&(i=e.detail.reason)}catch(e){}if(jn()||i&&i.__sentry_own_request__)return!0;const o=ae(i)?{exception:{values:[{type:\"UnhandledRejection\",value:`Non-Error promise rejection captured with value: ${String(i)}`}]}}:Fn(n,i,void 0,r,!0);o.level=\"error\",nr(t,i,o,\"onunhandledrejection\")}))}function tr(e,t,n,r){const i=e.exception=e.exception||{},o=i.values=i.values||[],a=o[0]=o[0]||{},s=a.stacktrace=a.stacktrace||{},c=s.frames=s.frames||[],l=isNaN(parseInt(r,10))?void 0:r,u=isNaN(parseInt(n,10))?void 0:n,d=oe(t)&&t.length>0?t:function(){try{return ke.document.location.href}catch(e){return\"\"}}();return 0===c.length&&c.push({colno:l,filename:d,function:\"?\",in_app:!0,lineno:u}),e}function nr(e,t,n,r){mt(n,{handled:!1,type:r}),e.captureEvent(n,{originalException:t})}function rr(){const e=on(),t=e.getClient(),n=t&&t.getOptions()||{stackParser:()=>[],attachStacktrace:!1};return[e,n.stackParser,n.attachStacktrace]}Xn.__initStatic();const ir=[\"EventTarget\",\"Window\",\"Node\",\"ApplicationCache\",\"AudioTrackList\",\"ChannelMergerNode\",\"CryptoOperation\",\"EventSource\",\"FileReader\",\"HTMLUnknownElement\",\"IDBDatabase\",\"IDBRequest\",\"IDBTransaction\",\"KeyOperation\",\"MediaController\",\"MessagePort\",\"ModalWindow\",\"Notification\",\"SVGElementInstance\",\"Screen\",\"TextTrack\",\"TextTrackCue\",\"TextTrackList\",\"WebSocket\",\"WebSocketWorker\",\"Worker\",\"XMLHttpRequest\",\"XMLHttpRequestEventTarget\",\"XMLHttpRequestUpload\"];class or{static __initStatic(){this.id=\"TryCatch\"}__init(){this.name=or.id}constructor(e){or.prototype.__init.call(this),this._options={XMLHttpRequest:!0,eventTarget:!0,requestAnimationFrame:!0,setInterval:!0,setTimeout:!0,...e}}setupOnce(){this._options.setTimeout&&Ne(An,\"setTimeout\",ar),this._options.setInterval&&Ne(An,\"setInterval\",ar),this._options.requestAnimationFrame&&Ne(An,\"requestAnimationFrame\",sr),this._options.XMLHttpRequest&&\"XMLHttpRequest\"in An&&Ne(XMLHttpRequest.prototype,\"send\",cr);const e=this._options.eventTarget;if(e){(Array.isArray(e)?e:ir).forEach(lr)}}}function ar(e){return function(...t){const n=t[0];return t[0]=xn(n,{mechanism:{data:{function:Ye(e)},handled:!0,type:\"instrument\"}}),e.apply(this,t)}}function sr(e){return function(t){return e.apply(this,[xn(t,{mechanism:{data:{function:\"requestAnimationFrame\",handler:Ye(e)},handled:!0,type:\"instrument\"}})])}}function cr(e){return function(...t){const n=this;return[\"onload\",\"onerror\",\"onprogress\",\"onreadystatechange\"].forEach((e=>{e in n&&\"function\"==typeof n[e]&&Ne(n,e,(function(t){const n={mechanism:{data:{function:e,handler:Ye(t)},handled:!0,type:\"instrument\"}},r=Fe(t);return r&&(n.mechanism.data.handler=Ye(r)),xn(t,n)}))})),e.apply(this,t)}}function lr(e){const t=An,n=t[e]&&t[e].prototype;n&&n.hasOwnProperty&&n.hasOwnProperty(\"addEventListener\")&&(Ne(n,\"addEventListener\",(function(t){return function(n,r,i){try{\"function\"==typeof r.handleEvent&&(r.handleEvent=xn(r.handleEvent,{mechanism:{data:{function:\"handleEvent\",handler:Ye(r),target:e},handled:!0,type:\"instrument\"}}))}catch(e){}return t.apply(this,[n,xn(r,{mechanism:{data:{function:\"addEventListener\",handler:Ye(r),target:e},handled:!0,type:\"instrument\"}}),i])}})),Ne(n,\"removeEventListener\",(function(e){return function(t,n,r){const i=n;try{const n=i&&i.__sentry_wrapped__;n&&e.call(this,t,n,r)}catch(e){}return e.call(this,t,i,r)}})))}or.__initStatic();class ur{static __initStatic(){this.id=\"LinkedErrors\"}__init(){this.name=ur.id}constructor(e={}){ur.prototype.__init.call(this),this._key=e.key||\"cause\",this._limit=e.limit||5}setupOnce(e,t){e(((e,n)=>{const r=t(),i=r.getClient(),o=r.getIntegration(ur);if(!i||!o)return e;const a=i.getOptions();return ge(Ln,a.stackParser,a.maxValueLength,o._key,o._limit,e,n),e}))}}ur.__initStatic();class dr{constructor(){dr.prototype.__init.call(this)}static __initStatic(){this.id=\"HttpContext\"}__init(){this.name=dr.id}setupOnce(){Kt((e=>{if(on().getIntegration(dr)){if(!An.navigator&&!An.location&&!An.document)return e;const t=e.request&&e.request.url||An.location&&An.location.href,{referrer:n}=An.document||{},{userAgent:r}=An.navigator||{},i={...e.request&&e.request.headers,...n&&{Referer:n},...r&&{\"User-Agent\":r}},o={...e.request,...t&&{url:t},headers:i};return{...e,request:o}}return e}))}}dr.__initStatic();class hr{constructor(){hr.prototype.__init.call(this)}static __initStatic(){this.id=\"Dedupe\"}__init(){this.name=hr.id}setupOnce(e,t){const n=e=>{if(e.type)return e;const n=t().getIntegration(hr);if(n){try{if(function(e,t){if(!t)return!1;if(function(e,t){const n=e.message,r=t.message;if(!n&&!r)return!1;if(n&&!r||!n&&r)return!1;if(n!==r)return!1;if(!fr(e,t))return!1;if(!pr(e,t))return!1;return!0}(e,t))return!0;if(function(e,t){const n=gr(t),r=gr(e);if(!n||!r)return!1;if(n.type!==r.type||n.value!==r.value)return!1;if(!fr(e,t))return!1;if(!pr(e,t))return!1;return!0}(e,t))return!0;return!1}(e,n._previousEvent))return(\"undefined\"==typeof __SENTRY_DEBUG__||__SENTRY_DEBUG__)&&Ae.warn(\"Event dropped due to being a duplicate of previously captured event.\"),null}catch(t){return n._previousEvent=e}return n._previousEvent=e}return e};n.id=this.name,e(n)}}function pr(e,t){let n=vr(e),r=vr(t);if(!n&&!r)return!0;if(n&&!r||!n&&r)return!1;if(r.length!==n.length)return!1;for(let e=0;e<r.length;e++){const t=r[e],i=n[e];if(t.filename!==i.filename||t.lineno!==i.lineno||t.colno!==i.colno||t.function!==i.function)return!1}return!0}function fr(e,t){let n=e.fingerprint,r=t.fingerprint;if(!n&&!r)return!0;if(n&&!r||!n&&r)return!1;try{return!(n.join(\"\")!==r.join(\"\"))}catch(e){return!1}}function gr(e){return e.exception&&e.exception.values&&e.exception.values[0]}function vr(e){const t=e.exception;if(t)try{return t.values[0].stacktrace.frames}catch(e){return}}hr.__initStatic();var mr=Object.freeze({__proto__:null,Breadcrumbs:Gn,Dedupe:hr,GlobalHandlers:Xn,HttpContext:dr,LinkedErrors:ur,TryCatch:or});let yr={};An.Sentry&&An.Sentry.Integrations&&(yr=An.Sentry.Integrations);const _r={...yr,...Pn,...mr};var br=\"new\",wr=\"loading\",Sr=\"loaded\",kr=\"joining-meeting\",Er=\"joined-meeting\",Cr=\"left-meeting\",Mr=\"error\",Tr=\"blocked\",Or=\"off\",Pr=\"sendable\",Ar=\"loading\",Dr=\"interrupted\",jr=\"playable\",xr=\"unknown\",Lr=\"full\",Ir=\"lobby\",Nr=\"none\",Rr=\"base\",Br=\"*\",Fr=\"ejected\",Ur=\"nbf-room\",Vr=\"nbf-token\",Jr=\"exp-room\",$r=\"exp-token\",Gr=\"no-room\",qr=\"meeting-full\",Yr=\"end-of-life\",zr=\"not-allowed\",Wr=\"connection-error\",Hr=\"cam-in-use\",Qr=\"mic-in-use\",Kr=\"cam-mic-in-use\",Xr=\"permissions\",Zr=\"undefined-mediadevices\",ei=\"not-found\",ti=\"constraints\",ni=\"unknown\",ri=\"iframe-ready-for-launch-config\",ii=\"iframe-launch-config\",oi=\"theme-updated\",ai=\"loading\",si=\"load-attempt-failed\",ci=\"loaded\",li=\"started-camera\",ui=\"camera-error\",di=\"joining-meeting\",hi=\"joined-meeting\",pi=\"left-meeting\",fi=\"participant-joined\",gi=\"participant-updated\",vi=\"participant-left\",mi=\"participant-counts-updated\",yi=\"access-state-updated\",_i=\"meeting-session-summary-updated\",bi=\"meeting-session-state-updated\",wi=\"meeting-session-data-error\",Si=\"waiting-participant-added\",ki=\"waiting-participant-updated\",Ei=\"waiting-participant-removed\",Ci=\"track-started\",Mi=\"track-stopped\",Ti=\"transcription-started\",Oi=\"transcription-stopped\",Pi=\"transcription-error\",Ai=\"recording-started\",Di=\"recording-stopped\",ji=\"recording-stats\",xi=\"recording-error\",Li=\"recording-upload-completed\",Ii=\"recording-data\",Ni=\"app-message\",Ri=\"transcription-message\",Bi=\"remote-media-player-started\",Fi=\"remote-media-player-updated\",Ui=\"remote-media-player-stopped\",Vi=\"local-screen-share-started\",Ji=\"local-screen-share-stopped\",$i=\"local-screen-share-canceled\",Gi=\"active-speaker-change\",qi=\"active-speaker-mode-change\",Yi=\"network-quality-change\",zi=\"network-connection\",Wi=\"cpu-load-change\",Hi=\"face-counts-updated\",Qi=\"fullscreen\",Ki=\"exited-fullscreen\",Xi=\"live-streaming-started\",Zi=\"live-streaming-updated\",eo=\"live-streaming-stopped\",to=\"live-streaming-error\",no=\"lang-updated\",ro=\"receive-settings-updated\",io=\"input-settings-updated\",oo=\"nonfatal-error\",ao=\"error\",so=4096,co=102400,lo=\"iframe-call-message\",uo=\"local-screen-start\",ho=\"daily-method-update-live-streaming-endpoints\",po=\"transmit-log\",fo=\"daily-custom-track\",go={NONE:\"none\",BGBLUR:\"background-blur\",BGIMAGE:\"background-image\",FACE_DETECTION:\"face-detection\"},vo={NONE:\"none\",NOISE_CANCELLATION:\"noise-cancellation\"},mo={PLAY:\"play\",PAUSE:\"pause\"},yo=10,_o=[\"jpg\",\"png\",\"jpeg\"],bo=\"add-endpoints\",wo=\"remove-endpoints\",So=\"sip-call-transfer\";function ko(){return!Eo()&&\"undefined\"!=typeof window&&window.navigator&&window.navigator.userAgent?window.navigator.userAgent:\"\"}function Eo(){return\"undefined\"!=typeof navigator&&navigator.product&&\"ReactNative\"===navigator.product}function Co(){return navigator&&navigator.mediaDevices&&navigator.mediaDevices.getUserMedia}function Mo(){return!!(navigator&&navigator.mediaDevices&&navigator.mediaDevices.getDisplayMedia)&&(function(e,t){if(!e||!t)return!0;switch(e){case\"Chrome\":return t.major>=75;case\"Safari\":return RTCRtpTransceiver.prototype.hasOwnProperty(\"currentDirection\")&&!(13===t.major&&0===t.minor&&0===t.point);case\"Firefox\":return t.major>=67}return!0}(Io(),No())||Eo())}function To(){if(Eo())return!1;if(!document)return!1;var e=document.createElement(\"iframe\");return!!e.requestFullscreen||!!e.webkitRequestFullscreen}var Oo=function(){try{var e=document.createElement(\"canvas\"),t=null!=e.getContext(\"webgl2\");return e.remove(),t}catch(e){return!1}}();function Po(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return!Eo()&&(!!Oo&&(e?function(){if(Lo())return!1;return[\"Chrome\",\"Firefox\"].includes(Io())}():function(){if(Lo())return!1;var e=Io();if(\"Safari\"===e){var t=Fo();if(t.major<15||15===t.major&&t.minor<4)return!1}if(\"Chrome\"===e){return Ro().major>=77}if(\"Firefox\"===e){return Uo().major>=97}return[\"Chrome\",\"Firefox\",\"Safari\"].includes(e)}()))}var Ao=[\"Chrome\",\"Firefox\",\"Safari\"];function Do(){return!Eo()&&(!xo()&&(\"undefined\"!=typeof AudioWorkletNode&&Ao.includes(Io())))}function jo(){return Co()&&!function(){var e,t=Io();if(!ko())return!0;switch(t){case\"Chrome\":return(e=Ro()).major&&e.major>0&&e.major<75;case\"Firefox\":return(e=Uo()).major<91;case\"Safari\":return(e=Fo()).major<13||13===e.major&&e.minor<1;default:return!0}}()}function xo(){return ko().match(/Linux; Android/)}function Lo(){var e,t,n=ko(),r=n.match(/Mac/)&&(!Eo()&&\"undefined\"!=typeof window&&null!==(e=window)&&void 0!==e&&null!==(t=e.navigator)&&void 0!==t&&t.maxTouchPoints?window.navigator.maxTouchPoints:0)>=5;return!!(n.match(/Mobi/)||n.match(/Android/)||r)||(!!ko().match(/DailyAnd\\//)||void 0)}function Io(){if(\"undefined\"!=typeof window){var e=ko();return Bo()?\"Safari\":e.indexOf(\"Edge\")>-1?\"Edge\":e.match(/Chrome\\//)?\"Chrome\":e.indexOf(\"Safari\")>-1?\"Safari\":e.indexOf(\"Firefox\")>-1?\"Firefox\":e.indexOf(\"MSIE\")>-1||e.indexOf(\".NET\")>-1?\"IE\":\"Unknown Browser\"}}function No(){switch(Io()){case\"Chrome\":return Ro();case\"Safari\":return Fo();case\"Firefox\":return Uo();case\"Edge\":return function(){var e=0,t=0;if(\"undefined\"!=typeof window){var n=ko().match(/Edge\\/(\\d+).(\\d+)/);if(n)try{e=parseInt(n[1]),t=parseInt(n[2])}catch(e){}}return{major:e,minor:t}}()}}function Ro(){var e=0,t=0,n=0,r=0,i=!1;if(\"undefined\"!=typeof window){var o=ko(),a=o.match(/Chrome\\/(\\d+).(\\d+).(\\d+).(\\d+)/);if(a)try{e=parseInt(a[1]),t=parseInt(a[2]),n=parseInt(a[3]),r=parseInt(a[4]),i=o.indexOf(\"OPR/\")>-1}catch(e){}}return{major:e,minor:t,build:n,patch:r,opera:i}}function Bo(){return!!ko().match(/iPad|iPhone|iPod/i)&&Co()}function Fo(){var e=0,t=0,n=0;if(\"undefined\"!=typeof window){var r=ko().match(/Version\\/(\\d+).(\\d+)(.(\\d+))?/);if(r)try{e=parseInt(r[1]),t=parseInt(r[2]),n=parseInt(r[4])}catch(e){}else Bo()&&(e=14,t=0,n=3)}return{major:e,minor:t,point:n}}function Uo(){var e=0,t=0;if(\"undefined\"!=typeof window){var n=ko().match(/Firefox\\/(\\d+).(\\d+)/);if(n)try{e=parseInt(n[1]),t=parseInt(n[2])}catch(e){}}return{major:e,minor:t}}var Vo=function(){function e(){t(this,e)}return o(e,[{key:\"addListenerForMessagesFromCallMachine\",value:function(e,t,n){Q()}},{key:\"addListenerForMessagesFromDailyJs\",value:function(e,t,n){Q()}},{key:\"sendMessageToCallMachine\",value:function(e,t,n,r){Q()}},{key:\"sendMessageToDailyJs\",value:function(e,t){Q()}},{key:\"removeListener\",value:function(e){Q()}}]),e}();function Jo(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function $o(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Jo(Object(n),!0).forEach((function(t){d(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Jo(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Go(e){var t=function(){if(\"undefined\"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if(\"function\"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,r=u(e);if(t){var i=u(this).constructor;n=Reflect.construct(r,arguments,i)}else n=r.apply(this,arguments);return l(this,n)}}var qo=function(e){c(r,Vo);var n=Go(r);function r(){var e;return t(this,r),(e=n.call(this))._wrappedListeners={},e._messageCallbacks={},e}return o(r,[{key:\"addListenerForMessagesFromCallMachine\",value:function(e,t,n){var r=this,i=function(i){if(i.data&&\"iframe-call-message\"===i.data.what&&(!i.data.callClientId||i.data.callClientId===t)&&(!i.data.from||\"module\"!==i.data.from)){var o=$o({},i.data);if(delete o.from,o.callbackStamp&&r._messageCallbacks[o.callbackStamp]){var a=o.callbackStamp;r._messageCallbacks[a].call(n,o),delete r._messageCallbacks[a]}delete o.what,delete o.callbackStamp,e.call(n,o)}};this._wrappedListeners[e]=i,window.addEventListener(\"message\",i)}},{key:\"addListenerForMessagesFromDailyJs\",value:function(e,t,n){var r=function(r){var i;if(!(!r.data||r.data.what!==lo||!r.data.action||r.data.from&&\"module\"!==r.data.from||r.data.callClientId&&t&&r.data.callClientId!==t||null!=r&&null!==(i=r.data)&&void 0!==i&&i.callFrameId)){var o=r.data;e.call(n,o)}};this._wrappedListeners[e]=r,window.addEventListener(\"message\",r)}},{key:\"sendMessageToCallMachine\",value:function(e,t,n,r){if(!n)throw new Error(\"undefined callClientId. Are you trying to use a DailyCall instance previously destroyed?\");var i=$o({},e);if(i.what=lo,i.from=\"module\",i.callClientId=n,t){var o=H();this._messageCallbacks[o]=t,i.callbackStamp=o}var a=r?r.contentWindow:window,s=this._callMachineTargetOrigin(r);s&&a.postMessage(i,s)}},{key:\"sendMessageToDailyJs\",value:function(e,t){e.what=lo,e.callClientId=t,e.from=\"embedded\",window.postMessage(e,this._targetOriginFromWindowLocation())}},{key:\"removeListener\",value:function(e){var t=this._wrappedListeners[e];t&&(window.removeEventListener(\"message\",t),delete this._wrappedListeners[e])}},{key:\"forwardPackagedMessageToCallMachine\",value:function(e,t,n){var r=$o({},e);r.callClientId=n;var i=t?t.contentWindow:window,o=this._callMachineTargetOrigin(t);o&&i.postMessage(r,o)}},{key:\"addListenerForPackagedMessagesFromCallMachine\",value:function(e,t){var n=function(n){if(n.data&&\"iframe-call-message\"===n.data.what&&(!n.data.callClientId||n.data.callClientId===t)&&(!n.data.from||\"module\"!==n.data.from)){var r=n.data;e(r)}};return this._wrappedListeners[e]=n,window.addEventListener(\"message\",n),e}},{key:\"removeListenerForPackagedMessagesFromCallMachine\",value:function(e){var t=this._wrappedListeners[e];t&&(window.removeEventListener(\"message\",t),delete this._wrappedListeners[e])}},{key:\"_callMachineTargetOrigin\",value:function(e){return e?e.src?new URL(e.src).origin:void 0:this._targetOriginFromWindowLocation()}},{key:\"_targetOriginFromWindowLocation\",value:function(){return\"file:\"===window.location.protocol?\"*\":window.location.origin}}]),r}();function Yo(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function zo(e){var t=function(){if(\"undefined\"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if(\"function\"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,r=u(e);if(t){var i=u(this).constructor;n=Reflect.construct(r,arguments,i)}else n=r.apply(this,arguments);return l(this,n)}}var Wo=function(e){c(r,Vo);var n=zo(r);function r(){var e;return t(this,r),e=n.call(this),global.callMachineToDailyJsEmitter=global.callMachineToDailyJsEmitter||new m.EventEmitter,global.dailyJsToCallMachineEmitter=global.dailyJsToCallMachineEmitter||new m.EventEmitter,e._wrappedListeners={},e._messageCallbacks={},e}return o(r,[{key:\"addListenerForMessagesFromCallMachine\",value:function(e,t,n){this._addListener(e,global.callMachineToDailyJsEmitter,t,n,\"received call machine message\")}},{key:\"addListenerForMessagesFromDailyJs\",value:function(e,t,n){this._addListener(e,global.dailyJsToCallMachineEmitter,t,n,\"received daily-js message\")}},{key:\"sendMessageToCallMachine\",value:function(e,t,n){this._sendMessage(e,global.dailyJsToCallMachineEmitter,n,t,\"sending message to call machine\")}},{key:\"sendMessageToDailyJs\",value:function(e,t){this._sendMessage(e,global.callMachineToDailyJsEmitter,t,null,\"sending message to daily-js\")}},{key:\"removeListener\",value:function(e){var t=this._wrappedListeners[e];t&&(global.callMachineToDailyJsEmitter.removeListener(\"message\",t),global.dailyJsToCallMachineEmitter.removeListener(\"message\",t),delete this._wrappedListeners[e])}},{key:\"_addListener\",value:function(e,t,n,r,i){var o=this,a=function(t){if(t.callClientId===n){if(t.callbackStamp&&o._messageCallbacks[t.callbackStamp]){var i=t.callbackStamp;o._messageCallbacks[i].call(r,t),delete o._messageCallbacks[i]}e.call(r,t)}};this._wrappedListeners[e]=a,t.addListener(\"message\",a)}},{key:\"_sendMessage\",value:function(e,t,n,r,i){var o=function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Yo(Object(n),!0).forEach((function(t){d(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Yo(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({},e);if(o.callClientId=n,r){var a=H();this._messageCallbacks[a]=r,o.callbackStamp=a}t.emit(\"message\",o)}}]),r}(),Ho=\"replace\",Qo=\"shallow-merge\",Ko=[Ho,Qo];var Xo=function(){function e(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=n.data,i=n.mergeStrategy,o=void 0===i?Ho:i;t(this,e),e._validateMergeStrategy(o),e._validateData(r,o),this.mergeStrategy=o,this.data=r}return o(e,[{key:\"isNoOp\",value:function(){return e.isNoOpUpdate(this.data,this.mergeStrategy)}}],[{key:\"isNoOpUpdate\",value:function(e,t){return 0===Object.keys(e).length&&t===Qo}},{key:\"_validateMergeStrategy\",value:function(e){if(!Ko.includes(e))throw Error(\"Unrecognized mergeStrategy provided. Options are: [\".concat(Ko,\"]\"))}},{key:\"_validateData\",value:function(e,t){if(!function(e){if(null==e||\"object\"!==n(e))return!1;var t=Object.getPrototypeOf(e);return null==t||t===Object.prototype}(e))throw Error(\"Meeting session data must be a plain (map-like) object\");var r;try{if(r=JSON.stringify(e),t===Ho){var i=JSON.parse(r);I(i,e)||console.warn(\"The meeting session data provided will be modified when serialized.\",i,e)}else if(t===Qo)for(var o in e)if(Object.hasOwnProperty.call(e,o)&&void 0!==e[o]){var a=JSON.parse(JSON.stringify(e[o]));I(e[o],a)||console.warn(\"At least one key in the meeting session data provided will be modified when serialized.\",a,e[o])}}catch(e){throw Error(\"Meeting session data must be serializable to JSON: \".concat(e))}if(r.length>co)throw Error(\"Meeting session data is too large (\".concat(r.length,\" characters). Maximum size suppported is \").concat(co,\".\"))}}]),e}();function Zo(e,t,n){return Zo=function(){if(\"undefined\"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if(\"function\"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}()?Reflect.construct.bind():function(e,t,n){var r=[null];r.push.apply(r,t);var i=new(Function.bind.apply(e,r));return n&&s(i,n.prototype),i},Zo.apply(null,arguments)}function ea(e){var t=\"function\"==typeof Map?new Map:void 0;return ea=function(e){if(null===e||(n=e,-1===Function.toString.call(n).indexOf(\"[native code]\")))return e;var n;if(\"function\"!=typeof e)throw new TypeError(\"Super expression must either be null or a function\");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,r)}function r(){return Zo(e,arguments,u(this).constructor)}return r.prototype=Object.create(e.prototype,{constructor:{value:r,enumerable:!1,writable:!0,configurable:!0}}),s(r,e)},ea(e)}function ta(e){var t=function(){if(\"undefined\"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if(\"function\"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,r=u(e);if(t){var i=u(this).constructor;n=Reflect.construct(r,arguments,i)}else n=r.apply(this,arguments);return l(this,n)}}function na(e){var t,n=null===(t=window._daily)||void 0===t?void 0:t.pendings;if(n){var r=n.indexOf(e);-1!==r&&n.splice(r,1)}}var ra=function(){function e(n){t(this,e),this._currentLoad=null,this._callClientId=n}return o(e,[{key:\"load\",value:function(){var e,t=this,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=arguments.length>1?arguments[1]:void 0,i=arguments.length>2?arguments[2]:void 0;if(this.loaded)return window._daily.instances[this._callClientId].callMachine.reset(),void r(!0);e=this._callClientId,window._daily.pendings.push(e),this._currentLoad&&this._currentLoad.cancel(),this._currentLoad=new ia(n,(function(){r(!1)}),(function(e,n){n||na(t._callClientId),i(e,n)})),this._currentLoad.start()}},{key:\"cancel\",value:function(){this._currentLoad&&this._currentLoad.cancel(),na(this._callClientId)}},{key:\"loaded\",get:function(){return this._currentLoad&&this._currentLoad.succeeded}}]),e}(),ia=function(){function e(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=arguments.length>1?arguments[1]:void 0,i=arguments.length>2?arguments[2]:void 0;t(this,e),this._attemptsRemaining=3,this._currentAttempt=null,this._dailyConfig=n,this._successCallback=r,this._failureCallback=i}return o(e,[{key:\"start\",value:function(){var e=this;if(!this._currentAttempt){this._currentAttempt=new sa(this._dailyConfig,this._successCallback,(function t(n){e._currentAttempt.cancelled||(e._attemptsRemaining--,e._failureCallback(n,e._attemptsRemaining>0),e._attemptsRemaining<=0||setTimeout((function(){e._currentAttempt.cancelled||(e._currentAttempt=new sa(e._dailyConfig,e._successCallback,t),e._currentAttempt.start())}),3e3))})),this._currentAttempt.start()}}},{key:\"cancel\",value:function(){this._currentAttempt&&this._currentAttempt.cancel()}},{key:\"cancelled\",get:function(){return this._currentAttempt&&this._currentAttempt.cancelled}},{key:\"succeeded\",get:function(){return this._currentAttempt&&this._currentAttempt.succeeded}}]),e}(),oa=function(e){c(r,ea(Error));var n=ta(r);function r(){return t(this,r),n.apply(this,arguments)}return o(r)}(),aa=2e4,sa=function(){function e(n,r,i){t(this,e),this._loadAttemptImpl=Eo()||!n.avoidEval?new ca(n,r,i):new la(n,r,i)}var n;return o(e,[{key:\"start\",value:(n=p((function*(){return this._loadAttemptImpl.start()})),function(){return n.apply(this,arguments)})},{key:\"cancel\",value:function(){this._loadAttemptImpl.cancel()}},{key:\"cancelled\",get:function(){return this._loadAttemptImpl.cancelled}},{key:\"succeeded\",get:function(){return this._loadAttemptImpl.succeeded}}]),e}(),ca=function(){function e(n,r,i){t(this,e),this.cancelled=!1,this.succeeded=!1,this._networkTimedOut=!1,this._networkTimeout=null,this._iosCache=\"undefined\"!=typeof iOSCallObjectBundleCache&&iOSCallObjectBundleCache,this._refetchHeaders=null,this._dailyConfig=n,this._successCallback=r,this._failureCallback=i}var n,r,i,a;return o(e,[{key:\"start\",value:(a=p((function*(){var e=X(this._dailyConfig);!(yield this._tryLoadFromIOSCache(e))&&this._loadFromNetwork(e)})),function(){return a.apply(this,arguments)})},{key:\"cancel\",value:function(){clearTimeout(this._networkTimeout),this.cancelled=!0}},{key:\"_tryLoadFromIOSCache\",value:(i=p((function*(e){if(!this._iosCache)return!1;try{var t=yield this._iosCache.get(e);return!!this.cancelled||!!t&&(t.code?(Function('\"use strict\";'+t.code)(),this.succeeded=!0,this._successCallback(),!0):(this._refetchHeaders=t.refetchHeaders,!1))}catch(e){return!1}})),function(e){return i.apply(this,arguments)})},{key:\"_loadFromNetwork\",value:(r=p((function*(e){var t=this;this._networkTimeout=setTimeout((function(){t._networkTimedOut=!0,t._failureCallback({msg:\"Timed out (>\".concat(aa,\" ms) when loading call object bundle \").concat(e),type:\"timeout\"})}),aa);try{var n=this._refetchHeaders?{headers:this._refetchHeaders}:{},r=yield fetch(e,n);if(clearTimeout(this._networkTimeout),this.cancelled||this._networkTimedOut)throw new oa;var i=yield this._getBundleCodeFromResponse(e,r);if(this.cancelled)throw new oa;Function('\"use strict\";'+i)(),this._iosCache&&this._iosCache.set(e,i,r.headers),this.succeeded=!0,this._successCallback()}catch(t){if(clearTimeout(this._networkTimeout),t instanceof oa||this.cancelled||this._networkTimedOut)return;this._failureCallback({msg:\"Failed to load call object bundle \".concat(e,\": \").concat(t),type:t.message})}})),function(e){return r.apply(this,arguments)})},{key:\"_getBundleCodeFromResponse\",value:(n=p((function*(e,t){if(t.ok)return yield t.text();if(this._iosCache&&304===t.status)return(yield this._iosCache.renew(e,t.headers)).code;throw new Error(\"Received \".concat(t.status,\" response\"))})),function(e,t){return n.apply(this,arguments)})}]),e}(),la=function(){function e(n,r,i){t(this,e),this.cancelled=!1,this.succeeded=!1,this._dailyConfig=n,this._successCallback=r,this._failureCallback=i,this._attemptId=H(),this._networkTimeout=null,this._scriptElement=null}return o(e,[{key:\"start\",value:function(){window._dailyCallMachineLoadWaitlist||(window._dailyCallMachineLoadWaitlist=new Set);var e=X(this._dailyConfig);\"object\"===(\"undefined\"==typeof document?\"undefined\":n(document))?this._startLoading(e):this._failureCallback({msg:\"Call object bundle must be loaded in a DOM/web context\",type:\"missing context\"})}},{key:\"cancel\",value:function(){this._stopLoading(),this.cancelled=!0}},{key:\"_startLoading\",value:function(e){var t=this;this._signUpForCallMachineLoadWaitlist(),this._networkTimeout=setTimeout((function(){t._stopLoading(),t._failureCallback({msg:\"Timed out (>\".concat(aa,\" ms) when loading call object bundle \").concat(e),type:\"timeout\"})}),aa);var n=document.getElementsByTagName(\"head\")[0],r=document.createElement(\"script\");this._scriptElement=r,r.onload=function(){t._stopLoading(),t.succeeded=!0,t._successCallback()},r.onerror=function(e){t._stopLoading(),t._failureCallback({msg:\"Failed to load call object bundle \".concat(e.target.src),type:e.message})},r.src=e,n.appendChild(r)}},{key:\"_stopLoading\",value:function(){this._withdrawFromCallMachineLoadWaitlist(),clearTimeout(this._networkTimeout),this._scriptElement&&(this._scriptElement.onload=null,this._scriptElement.onerror=null)}},{key:\"_signUpForCallMachineLoadWaitlist\",value:function(){window._dailyCallMachineLoadWaitlist.add(this._attemptId)}},{key:\"_withdrawFromCallMachineLoadWaitlist\",value:function(){window._dailyCallMachineLoadWaitlist.delete(this._attemptId)}}]),e}(),ua=function(e,t,n){return!0===pa(e.local,t,n)},da=function(e,t,n){return e.local.streams&&e.local.streams[t]&&e.local.streams[t].stream&&e.local.streams[t].stream[\"get\".concat(\"video\"===n?\"Video\":\"Audio\",\"Tracks\")]()[0]},ha=function(e,t,n,r){var i=fa(e,t,n,r);return i&&i.pendingTrack},pa=function(e,t,n){if(!e)return!1;var r=function(e){switch(e){case\"avatar\":return!0;case\"staged\":return e;default:return!!e}},i=e.public.subscribedTracks;return i&&i[t]?-1===[\"cam-audio\",\"cam-video\",\"screen-video\",\"screen-audio\",\"rmpAudio\",\"rmpVideo\"].indexOf(n)&&i[t].custom?[!0,\"staged\"].includes(i[t].custom)?r(i[t].custom):r(i[t].custom[n]):r(i[t][n]):!i||r(i.ALL)},fa=function(e,t,n,r){var i=Object.values(e.streams||{}).filter((function(e){return e.participantId===t&&e.type===n&&e.pendingTrack&&e.pendingTrack.kind===r})).sort((function(e,t){return new Date(t.starttime)-new Date(e.starttime)}));return i&&i[0]},ga=function(e,t){var n=e.local.public.customTracks;if(n&&n[t])return n[t].track};function va(e,t){for(var n=t.getState(),r=0,i=[\"cam\",\"screen\"];r<i.length;r++)for(var o=i[r],a=0,s=[\"video\",\"audio\"];a<s.length;a++){var c=s[a],l=\"cam\"===o?c:\"screen\".concat(c.charAt(0).toUpperCase()+c.slice(1)),u=e.tracks[l];if(u){var d=e.local?da(n,o,c):ha(n,e.session_id,o,c);\"playable\"===u.state&&(u.track=d),u.persistentTrack=d}}}function ma(e,t){try{var n=t.getState();for(var r in e.tracks)if(!ya(r)){var i=e.tracks[r].kind;if(i){var o=e.tracks[r];if(o){var a=e.local?ga(n,r):ha(n,e.session_id,r,i);\"playable\"===o.state&&(e.tracks[r].track=a),o.persistentTrack=a}}else console.error(\"unknown type for custom track\")}}catch(e){console.error(e)}}function ya(e){return[\"video\",\"audio\",\"screenVideo\",\"screenAudio\"].includes(e)}function _a(e,t,n){var r=n.getState();if(e.local){if(e.audio)try{e.audioTrack=r.local.streams.cam.stream.getAudioTracks()[0],e.audioTrack||(e.audio=!1)}catch(e){}if(e.video)try{e.videoTrack=r.local.streams.cam.stream.getVideoTracks()[0],e.videoTrack||(e.video=!1)}catch(e){}if(e.screen)try{e.screenVideoTrack=r.local.streams.screen.stream.getVideoTracks()[0],e.screenAudioTrack=r.local.streams.screen.stream.getAudioTracks()[0],e.screenVideoTrack||e.screenAudioTrack||(e.screen=!1)}catch(e){}}else{var i=!0;try{var o=r.participants[e.session_id];o&&o.public&&o.public.rtcType&&\"peer-to-peer\"===o.public.rtcType.impl&&o.private&&![\"connected\",\"completed\"].includes(o.private.peeringState)&&(i=!1)}catch(e){console.error(e)}if(!i)return e.audio=!1,e.audioTrack=!1,e.video=!1,e.videoTrack=!1,e.screen=!1,void(e.screenTrack=!1);try{r.streams;if(e.audio&&ua(r,e.session_id,\"cam-audio\")){var a=ha(r,e.session_id,\"cam\",\"audio\");a&&(t&&t.audioTrack&&t.audioTrack.id===a.id?e.audioTrack=a:a.muted||(e.audioTrack=a)),e.audioTrack||(e.audio=!1)}if(e.video&&ua(r,e.session_id,\"cam-video\")){var s=ha(r,e.session_id,\"cam\",\"video\");s&&(t&&t.videoTrack&&t.videoTrack.id===s.id?e.videoTrack=s:s.muted||(e.videoTrack=s)),e.videoTrack||(e.video=!1)}if(e.screen&&ua(r,e.session_id,\"screen-audio\")){var c=ha(r,e.session_id,\"screen\",\"audio\");c&&(t&&t.screenAudioTrack&&t.screenAudioTrack.id===c.id?e.screenAudioTrack=c:c.muted||(e.screenAudioTrack=c))}if(e.screen&&ua(r,e.session_id,\"screen-video\")){var l=ha(r,e.session_id,\"screen\",\"video\");l&&(t&&t.screenVideoTrack&&t.screenVideoTrack.id===l.id?e.screenVideoTrack=l:l.muted||(e.screenVideoTrack=l))}e.screenVideoTrack||e.screenAudioTrack||(e.screen=!1)}catch(e){console.error(\"unexpected error matching up tracks\",e)}}}function ba(e,t){var n=\"undefined\"!=typeof Symbol&&e[Symbol.iterator]||e[\"@@iterator\"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(!e)return;if(\"string\"==typeof e)return wa(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);\"Object\"===n&&e.constructor&&(n=e.constructor.name);if(\"Map\"===n||\"Set\"===n)return Array.from(e);if(\"Arguments\"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return wa(e,t)}(e))||t&&e&&\"number\"==typeof e.length){n&&(e=n);var r=0,i=function(){};return{s:i,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}var o,a=!0,s=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return a=e.done,e},e:function(e){s=!0,o=e},f:function(){try{a||null==n.return||n.return()}finally{if(s)throw o}}}}function wa(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var Sa=new Map,ka=null;function Ea(e,t){var n=\"undefined\"!=typeof Symbol&&e[Symbol.iterator]||e[\"@@iterator\"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(!e)return;if(\"string\"==typeof e)return Ca(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);\"Object\"===n&&e.constructor&&(n=e.constructor.name);if(\"Map\"===n||\"Set\"===n)return Array.from(e);if(\"Arguments\"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Ca(e,t)}(e))||t&&e&&\"number\"==typeof e.length){n&&(e=n);var r=0,i=function(){};return{s:i,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}var o,a=!0,s=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return a=e.done,e},e:function(e){s=!0,o=e},f:function(){try{a||null==n.return||n.return()}finally{if(s)throw o}}}}function Ca(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var Ma=new Map,Ta=null,Oa=3e3;function Pa(e){Da()?function(e){Sa.has(e)||(Sa.set(e,{}),navigator.mediaDevices.enumerateDevices().then((function(t){Sa.has(e)&&(Sa.get(e).lastDevicesString=JSON.stringify(t),ka||(ka=function(){var e=p((function*(){var e,t=yield navigator.mediaDevices.enumerateDevices(),n=ba(Sa.keys());try{for(n.s();!(e=n.n()).done;){var r=e.value,i=JSON.stringify(t);i!==Sa.get(r).lastDevicesString&&(Sa.get(r).lastDevicesString=i,r(t))}}catch(e){n.e(e)}finally{n.f()}}));return function(){return e.apply(this,arguments)}}(),navigator.mediaDevices.addEventListener(\"devicechange\",ka)))})).catch((function(){})))}(e):function(e){Ma.has(e)||(Ma.set(e,{}),navigator.mediaDevices.enumerateDevices().then((function(t){Ma.has(e)&&(Ma.get(e).lastDevicesString=JSON.stringify(t),Ta||(Ta=setInterval(p((function*(){var e,t=yield navigator.mediaDevices.enumerateDevices(),n=Ea(Ma.keys());try{for(n.s();!(e=n.n()).done;){var r=e.value,i=JSON.stringify(t);i!==Ma.get(r).lastDevicesString&&(Ma.get(r).lastDevicesString=i,r(t))}}catch(e){n.e(e)}finally{n.f()}})),Oa)))})))}(e)}function Aa(e){Da()?function(e){Sa.has(e)&&(Sa.delete(e),0===Sa.size&&ka&&(navigator.mediaDevices.removeEventListener(\"devicechange\",ka),ka=null))}(e):function(e){Ma.has(e)&&(Ma.delete(e),0===Ma.size&&Ta&&(clearInterval(Ta),Ta=null))}(e)}function Da(){return Eo()||void 0!==navigator.mediaDevices.ondevicechange}var ja=new Set;function xa(e,t){var n=t.isLocalScreenVideo;return e&&\"live\"===e.readyState&&!function(e,t){return(!t.isLocalScreenVideo||\"Chrome\"!==Io())&&e.muted&&!ja.has(e.id)}(e,{isLocalScreenVideo:n})}var La=[\"result\"],Ia=[\"preserveIframe\"];function Na(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Ra(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Na(Object(n),!0).forEach((function(t){d(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Na(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Ba(e){var t=function(){if(\"undefined\"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if(\"function\"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,r=u(e);if(t){var i=u(this).constructor;n=Reflect.construct(r,arguments,i)}else n=r.apply(this,arguments);return l(this,n)}}function Fa(e,t){var n=\"undefined\"!=typeof Symbol&&e[Symbol.iterator]||e[\"@@iterator\"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(!e)return;if(\"string\"==typeof e)return Ua(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);\"Object\"===n&&e.constructor&&(n=e.constructor.name);if(\"Map\"===n||\"Set\"===n)return Array.from(e);if(\"Arguments\"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Ua(e,t)}(e))||t&&e&&\"number\"==typeof e.length){n&&(e=n);var r=0,i=function(){};return{s:i,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}var o,a=!0,s=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return a=e.done,e},e:function(e){s=!0,o=e},f:function(){try{a||null==n.return||n.return()}finally{if(s)throw o}}}}function Ua(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var Va={};var Ja=\"video\",$a=\"voice\",Ga=Eo()?{data:{}}:{data:{},topology:\"none\"},qa={present:0,hidden:0},Ya={maxBitrate:{min:1e5,max:25e5},maxFramerate:{min:1,max:30},scaleResolutionDownBy:{min:1,max:8}},za=Object.keys(Ya),Wa=[\"state\",\"volume\",\"simulcastEncodings\"],Ha={androidInCallNotification:{title:\"string\",subtitle:\"string\",iconName:\"string\",disableForCustomOverride:\"boolean\"},disableAutoDeviceManagement:{audio:\"boolean\",video:\"boolean\"}},Qa={id:{iconPath:\"string\",iconPathDarkMode:\"string\",label:\"string\",tooltip:\"string\"}},Ka={id:{allow:\"string\",controlledBy:\"'*' | 'owners' | string[]\",csp:\"string\",iconURL:\"string\",label:\"string\",loading:\"'eager' | 'lazy'\",location:\"'main' | 'sidebar'\",name:\"string\",referrerPolicy:\"string\",sandbox:\"string\",src:\"string\",srcdoc:\"string\",shared:\"string[] | 'owners' | boolean\"}},Xa={customIntegrations:{validate:_s,help:ms()},customTrayButtons:{validate:ys,help:\"customTrayButtons should be a dictionary of the type \".concat(JSON.stringify(Qa))},url:{validate:function(e){return\"string\"==typeof e},help:\"url should be a string\"},baseUrl:{validate:function(e){return\"string\"==typeof e},help:\"baseUrl should be a string\"},token:{validate:function(e){return\"string\"==typeof e},help:\"token should be a string\",queryString:\"t\"},dailyConfig:{validate:function(e,t){try{return t.validateDailyConfig(e),!0}catch(e){console.error(\"Failed to validate dailyConfig\",e)}return!1},help:\"Unsupported dailyConfig. Check error logs for detailed info.\"},reactNativeConfig:{validate:function(e){return bs(e,Ha)},help:\"reactNativeConfig should look like \".concat(JSON.stringify(Ha),\", all fields optional\")},lang:{validate:function(e){return[\"da\",\"de\",\"en-us\",\"en\",\"es\",\"fi\",\"fr\",\"it\",\"jp\",\"ka\",\"nl\",\"no\",\"pl\",\"pt\",\"pt-BR\",\"ru\",\"sv\",\"tr\",\"user\"].includes(e)},help:\"language not supported. Options are: da, de, en-us, en, es, fi, fr, it, jp, ka, nl, no, pl, pt, pt-BR, ru, sv, tr, user\"},userName:!0,userData:{validate:function(e){try{return ds(e),!0}catch(e){return console.error(e),!1}},help:\"invalid userData type provided\"},startVideoOff:!0,startAudioOff:!0,activeSpeakerMode:!0,showLeaveButton:!0,showLocalVideo:!0,showParticipantsBar:!0,showFullscreenButton:!0,showUserNameChangeUI:!0,iframeStyle:!0,customLayout:!0,cssFile:!0,cssText:!0,bodyClass:!0,videoSource:{validate:function(e,t){return e instanceof MediaStreamTrack&&(t._sharedTracks.videoDeviceId=e),t._preloadCache.videoDeviceId=e,!0}},audioSource:{validate:function(e,t){return e instanceof MediaStreamTrack&&(t._sharedTracks.audioDeviceId=e),t._preloadCache.audioDeviceId=e,!0}},subscribeToTracksAutomatically:{validate:function(e,t){return t._preloadCache.subscribeToTracksAutomatically=e,!0}},theme:{validate:function(e){var t=[\"accent\",\"accentText\",\"background\",\"backgroundAccent\",\"baseText\",\"border\",\"mainAreaBg\",\"mainAreaBgAccent\",\"mainAreaText\",\"supportiveText\"],r=function(e){for(var n=0,r=Object.keys(e);n<r.length;n++){var i=r[n];if(!t.includes(i))return console.error('unsupported color \"'.concat(i,'\". Valid colors: ').concat(t.join(\", \"))),!1;if(!e[i].match(/^#[0-9a-f]{6}|#[0-9a-f]{3}$/i))return console.error(\"\".concat(i,' theme color should be provided in valid hex color format. Received: \"').concat(e[i],'\"')),!1}return!0};return\"object\"===n(e)&&(\"light\"in e&&\"dark\"in e||\"colors\"in e)?\"light\"in e&&\"dark\"in e?\"colors\"in e.light?\"colors\"in e.dark?r(e.light.colors)&&r(e.dark.colors):(console.error('Dark theme is missing \"colors\" property.',e),!1):(console.error('Light theme is missing \"colors\" property.',e),!1):r(e.colors):(console.error('Theme must contain either both \"light\" and \"dark\" properties, or \"colors\".',e),!1)},help:\"unsupported theme configuration. Check error logs for detailed info.\"},layoutConfig:{validate:function(e){if(\"grid\"in e){var t=e.grid;if(\"maxTilesPerPage\"in t){if(!Number.isInteger(t.maxTilesPerPage))return console.error(\"grid.maxTilesPerPage should be an integer. You passed \".concat(t.maxTilesPerPage,\".\")),!1;if(t.maxTilesPerPage>49)return console.error(\"grid.maxTilesPerPage can't be larger than 49 without sacrificing browser performance. Please contact us at https://www.daily.co/contact to talk about your use case.\"),!1}if(\"minTilesPerPage\"in t){if(!Number.isInteger(t.minTilesPerPage))return console.error(\"grid.minTilesPerPage should be an integer. You passed \".concat(t.minTilesPerPage,\".\")),!1;if(t.minTilesPerPage<1)return console.error(\"grid.minTilesPerPage can't be lower than 1.\"),!1;if(\"maxTilesPerPage\"in t&&t.minTilesPerPage>t.maxTilesPerPage)return console.error(\"grid.minTilesPerPage can't be higher than grid.maxTilesPerPage.\"),!1}}return!0},help:\"unsupported layoutConfig. Check error logs for detailed info.\"},receiveSettings:{validate:function(e){return hs(e,{allowAllParticipantsKey:!1})},help:vs({allowAllParticipantsKey:!1})},sendSettings:{validate:function(e,t){return!!function(e,t){try{return t.validateUpdateSendSettings(e),!0}catch(e){return console.error(\"Failed to validate send settings\",e),!1}}(e,t)&&(t._preloadCache.sendSettings=e,!0)},help:\"Invalid sendSettings provided. Check error logs for detailed info.\"},inputSettings:{validate:function(e,t){var n;return!!ps(e)&&(t._preloadCache.inputSettings||(t._preloadCache.inputSettings={}),fs(e,null===(n=t.properties)||void 0===n?void 0:n.dailyConfig),e.audio&&(t._preloadCache.inputSettings.audio=e.audio),e.video&&(t._preloadCache.inputSettings.video=e.video),!0)},help:gs()},layout:{validate:function(e){return\"custom-v1\"===e||\"browser\"===e||\"none\"===e},help:'layout may only be set to \"custom-v1\"',queryString:\"layout\"},emb:{queryString:\"emb\"},embHref:{queryString:\"embHref\"},dailyJsVersion:{queryString:\"dailyJsVersion\"},proxy:{queryString:\"proxy\"},strictMode:!0,allowMultipleCallInstances:!0},Za={styles:{validate:function(e){for(var t in e)if(\"cam\"!==t&&\"screen\"!==t)return!1;if(e.cam)for(var n in e.cam)if(\"div\"!==n&&\"video\"!==n)return!1;if(e.screen)for(var r in e.screen)if(\"div\"!==r&&\"video\"!==r)return!1;return!0},help:\"styles format should be a subset of: { cam: {div: {}, video: {}}, screen: {div: {}, video: {}} }\"},setSubscribedTracks:{validate:function(e,t){if(t._preloadCache.subscribeToTracksAutomatically)return!1;var n=[!0,!1,\"staged\"];if(n.includes(e)||!Eo()&&\"avatar\"===e)return!0;var r=[\"audio\",\"video\",\"screenAudio\",\"screenVideo\",\"rmpAudio\",\"rmpVideo\"];return function e(t){var i=arguments.length>1&&void 0!==arguments[1]&&arguments[1];for(var o in t)if(\"custom\"===o){if(!n.includes(t[o])&&!e(t[o],!0))return!1}else{var a=!i&&!r.includes(o),s=!n.includes(t[o]);if(a||s)return!1}return!0}(e)},help:\"setSubscribedTracks cannot be used when setSubscribeToTracksAutomatically is enabled, and should be of the form: \"+\"true\".concat(Eo()?\"\":\" | 'avatar'\",\" | false | 'staged' | { [audio: true|false|'staged'], [video: true|false|'staged'], [screenAudio: true|false|'staged'], [screenVideo: true|false|'staged'] }\")},setAudio:!0,setVideo:!0,setScreenShare:{validate:function(e){return!1===e},help:\"setScreenShare must be false, as it's only meant for stopping remote participants' screen shares\"},eject:!0,updatePermissions:{validate:function(e){for(var t=0,n=Object.entries(e);t<n.length;t++){var r=g(n[t],2),i=r[0],o=r[1];switch(i){case\"hasPresence\":if(\"boolean\"!=typeof o)return!1;break;case\"canSend\":if(o instanceof Set||o instanceof Array||Array.isArray(o)){var a,s=[\"video\",\"audio\",\"screenVideo\",\"screenAudio\",\"customVideo\",\"customAudio\"],c=Fa(o);try{for(c.s();!(a=c.n()).done;){var l=a.value;if(!s.includes(l))return!1}}catch(e){c.e(e)}finally{c.f()}}else if(\"boolean\"!=typeof o)return!1;(o instanceof Array||Array.isArray(o))&&(e.canSend=new Set(o));break;case\"canAdmin\":if(o instanceof Set||o instanceof Array||Array.isArray(o)){var u,d=[\"participants\",\"streaming\",\"transcription\"],h=Fa(o);try{for(h.s();!(u=h.n()).done;){var p=u.value;if(!d.includes(p))return!1}}catch(e){h.e(e)}finally{h.f()}}else if(\"boolean\"!=typeof o)return!1;(o instanceof Array||Array.isArray(o))&&(e.canAdmin=new Set(o));break;default:return!1}}return!0},help:\"updatePermissions can take hasPresence, canSend, and canAdmin permissions. hasPresence must be a boolean. canSend can be a boolean or an Array or Set of media types (video, audio, screenVideo, screenAudio, customVideo, customAudio). canAdmin can be a boolean or an Array or Set of admin types (participants, streaming, transcription).\"}};Promise.any||(Promise.any=function(){var e=p((function*(e){return new Promise((function(t,n){var r=[];e.forEach((function(i){return Promise.resolve(i).then((function(e){t(e)})).catch((function(t){r.push(t),r.length===e.length&&n(r)}))}))}))}));return function(t){return e.apply(this,arguments)}}());var es=function(r){c(te,m);var i,s,l,u,h,f,v,y,_,b,w,S,k,E,C,M,T,O,P,A,D,j,x,L,N,R,B,F,U,V,J,$,G,q,Y,z,Q,Z,ee=Ba(te);function te(e){var n,r,i,o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(t(this,te),d(a(r=ee.call(this)),\"startListeningForDeviceChanges\",(function(){Pa(r.handleDeviceChange)})),d(a(r),\"stopListeningForDeviceChanges\",(function(){Aa(r.handleDeviceChange)})),d(a(r),\"handleDeviceChange\",(function(e){e=e.map((function(e){return JSON.parse(JSON.stringify(e))})),r.emitDailyJSEvent({action:\"available-devices-updated\",availableDevices:e})})),d(a(r),\"handleNativeAppStateChange\",function(){var e=p((function*(e){if(\"destroyed\"===e)return console.warn(\"App has been destroyed before leaving the meeting. Cleaning up all the resources!\"),void(yield r.destroy());var t=\"active\"===e;r.disableReactNativeAutoDeviceManagement(\"video\")||(t?r.camUnmutedBeforeLosingNativeActiveState&&r.setLocalVideo(!0):(r.camUnmutedBeforeLosingNativeActiveState=r.localVideo(),r.camUnmutedBeforeLosingNativeActiveState&&r.setLocalVideo(!1)))}));return function(t){return e.apply(this,arguments)}}()),d(a(r),\"handleNativeAudioFocusChange\",(function(e){r.disableReactNativeAutoDeviceManagement(\"audio\")||(r._hasNativeAudioFocus=e,r.toggleParticipantAudioBasedOnNativeAudioFocus(),r._hasNativeAudioFocus?r.micUnmutedBeforeLosingNativeAudioFocus&&r.setLocalAudio(!0):(r.micUnmutedBeforeLosingNativeAudioFocus=r.localAudio(),r.setLocalAudio(!1)))})),d(a(r),\"handleNativeSystemScreenCaptureStop\",(function(){r.stopScreenShare()})),r.strictMode=void 0===o.strictMode||o.strictMode,r.allowMultipleCallInstances=null!==(n=o.allowMultipleCallInstances)&&void 0!==n&&n,Object.keys(Va).length&&(r._logDuplicateInstanceAttempt(),!r.allowMultipleCallInstances)){if(r.strictMode)throw new Error(\"Duplicate DailyIframe instances are not allowed\");console.warn(\"Using strictMode: false to allow multiple call instances is now deprecated. Set `allowMultipleCallInstances: true`\")}if(window._daily||(window._daily={pendings:[],instances:{}}),r.callClientId=H(),i=a(r),Va[i.callClientId]=i,window._daily.instances[r.callClientId]={},r._sharedTracks={},window._daily.instances[r.callClientId].tracks=r._sharedTracks,o.dailyJsVersion=te.version(),r._iframe=e,r._callObjectMode=\"none\"===o.layout&&!r._iframe,r._preloadCache={subscribeToTracksAutomatically:!0,audioDeviceId:null,videoDeviceId:null,outputDeviceId:null,inputSettings:null,sendSettings:null,videoTrackForNetworkConnectivityTest:null,videoTrackForConnectionQualityTest:null},void 0!==o.showLocalVideo?r._callObjectMode?console.error(\"showLocalVideo is not available in call object mode\"):r._showLocalVideo=!!o.showLocalVideo:r._showLocalVideo=!0,void 0!==o.showParticipantsBar?r._callObjectMode?console.error(\"showParticipantsBar is not available in call object mode\"):r._showParticipantsBar=!!o.showParticipantsBar:r._showParticipantsBar=!0,void 0!==o.customIntegrations?r._callObjectMode?console.error(\"customIntegrations is not available in call object mode\"):r._customIntegrations=o.customIntegrations:r._customIntegrations={},void 0!==o.customTrayButtons?r._callObjectMode?console.error(\"customTrayButtons is not available in call object mode\"):r._customTrayButtons=o.customTrayButtons:r._customTrayButtons={},void 0!==o.activeSpeakerMode?r._callObjectMode?console.error(\"activeSpeakerMode is not available in call object mode\"):r._activeSpeakerMode=!!o.activeSpeakerMode:r._activeSpeakerMode=!1,o.receiveSettings?r._callObjectMode?r._receiveSettings=o.receiveSettings:console.error(\"receiveSettings is only available in call object mode\"):r._receiveSettings={},r.validateProperties(o),r.properties=Ra({},o),r._preloadCache.inputSettings||(r._preloadCache.inputSettings={}),o.inputSettings&&o.inputSettings.audio&&(r._preloadCache.inputSettings.audio=o.inputSettings.audio),o.inputSettings&&o.inputSettings.video&&(r._preloadCache.inputSettings.video=o.inputSettings.video),r._callObjectLoader=r._callObjectMode?new ra(r.callClientId):null,r._callState=br,r._isPreparingToJoin=!1,r._accessState={access:xr},r._meetingSessionSummary={},r._finalSummaryOfPrevSession={},r._meetingSessionState=Es(Ga,r._callObjectMode),r._nativeInCallAudioMode=Ja,r._participants={},r._isScreenSharing=!1,r._participantCounts=qa,r._rmpPlayerState={},r._waitingParticipants={},r._network={threshold:\"good\",quality:100},r._activeSpeaker={},r._localAudioLevel=0,r._isLocalAudioLevelObserverRunning=!1,r._remoteParticipantsAudioLevel={},r._isRemoteParticipantsAudioLevelObserverRunning=!1,r._maxAppMessageSize=so,r._messageChannel=Eo()?new Wo:new qo,r._iframe&&(r._iframe.requestFullscreen?r._iframe.addEventListener(\"fullscreenchange\",(function(){document.fullscreenElement===r._iframe?(r.emitDailyJSEvent({action:Qi}),r.sendMessageToCallMachine({action:Qi})):(r.emitDailyJSEvent({action:Ki}),r.sendMessageToCallMachine({action:Ki}))})):r._iframe.webkitRequestFullscreen&&r._iframe.addEventListener(\"webkitfullscreenchange\",(function(){document.webkitFullscreenElement===r._iframe?(r.emitDailyJSEvent({action:Qi}),r.sendMessageToCallMachine({action:Qi})):(r.emitDailyJSEvent({action:Ki}),r.sendMessageToCallMachine({action:Ki}))}))),Eo()){var s=r.nativeUtils();s.addAudioFocusChangeListener&&s.removeAudioFocusChangeListener&&s.addAppStateChangeListener&&s.removeAppStateChangeListener&&s.addSystemScreenCaptureStopListener&&s.removeSystemScreenCaptureStopListener||console.warn(\"expected (add|remove)(AudioFocusChange|AppActiveStateChange|SystemScreenCaptureStop)Listener to be available in React Native\"),r._hasNativeAudioFocus=!0,s.addAudioFocusChangeListener(r.handleNativeAudioFocusChange),s.addAppStateChangeListener(r.handleNativeAppStateChange),s.addSystemScreenCaptureStopListener(r.handleNativeSystemScreenCaptureStop)}return r._callObjectMode&&r.startListeningForDeviceChanges(),r._messageChannel.addListenerForMessagesFromCallMachine(r.handleMessageFromCallMachine,r.callClientId,a(r)),r}return o(te,[{key:\"destroy\",value:(Z=p((function*(){var e,t;try{yield this.leave()}catch(e){}var n=this._iframe;if(n){var r=n.parentElement;r&&r.removeChild(n)}if(this._messageChannel.removeListener(this.handleMessageFromCallMachine),Eo()){var i=this.nativeUtils();i.removeAudioFocusChangeListener(this.handleNativeAudioFocusChange),i.removeAppStateChangeListener(this.handleNativeAppStateChange),i.removeSystemScreenCaptureStopListener(this.handleNativeSystemScreenCaptureStop)}this._callObjectMode&&this.stopListeningForDeviceChanges(),this.resetMeetingDependentVars(),this._destroyed=!0,this.emitDailyJSEvent({action:\"call-instance-destroyed\"}),delete Va[this.callClientId],(null===(e=window)||void 0===e||null===(t=e._daily)||void 0===t?void 0:t.instances)&&delete window._daily.instances[this.callClientId],this.strictMode&&(this.callClientId=void 0)})),function(){return Z.apply(this,arguments)})},{key:\"isDestroyed\",value:function(){return!!this._destroyed}},{key:\"loadCss\",value:function(e){var t=e.bodyClass,n=e.cssFile,r=e.cssText;return ls(),this.sendMessageToCallMachine({action:\"load-css\",cssFile:this.absoluteUrl(n),bodyClass:t,cssText:r}),this}},{key:\"iframe\",value:function(){return ls(),this._iframe}},{key:\"meetingState\",value:function(){return this._callState}},{key:\"accessState\",value:function(){return ss(this._callObjectMode,\"accessState()\"),this._accessState}},{key:\"participants\",value:function(){return this._participants}},{key:\"participantCounts\",value:function(){return this._participantCounts}},{key:\"waitingParticipants\",value:function(){return ss(this._callObjectMode,\"waitingParticipants()\"),this._waitingParticipants}},{key:\"validateParticipantProperties\",value:function(e,t){for(var n in t){if(!Za[n])throw new Error(\"unrecognized updateParticipant property \".concat(n));if(Za[n].validate&&!Za[n].validate(t[n],this,this._participants[e]))throw new Error(Za[n].help)}}},{key:\"updateParticipant\",value:function(e,t){return this._participants.local&&this._participants.local.session_id===e&&(e=\"local\"),e&&t&&(this.validateParticipantProperties(e,t),this.sendMessageToCallMachine({action:\"update-participant\",id:e,properties:t})),this}},{key:\"updateParticipants\",value:function(e){var t=this._participants.local&&this._participants.local.session_id;for(var n in e)n===t&&(n=\"local\"),n&&e[n]&&this.validateParticipantProperties(n,e[n]);return this.sendMessageToCallMachine({action:\"update-participants\",participants:e}),this}},{key:\"updateWaitingParticipant\",value:(Q=p((function*(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:\"\",r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(ss(this._callObjectMode,\"updateWaitingParticipant()\"),ns(this._callState,\"updateWaitingParticipant()\"),\"string\"!=typeof t||\"object\"!==n(r))throw new Error(\"updateWaitingParticipant() must take an id string and a updates object\");return new Promise((function(n,i){e.sendMessageToCallMachine({action:\"daily-method-update-waiting-participant\",id:t,updates:r},(function(e){e.error&&i(e.error),e.id||i(new Error(\"unknown error in updateWaitingParticipant()\")),n({id:e.id})}))}))})),function(){return Q.apply(this,arguments)})},{key:\"updateWaitingParticipants\",value:(z=p((function*(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(ss(this._callObjectMode,\"updateWaitingParticipants()\"),ns(this._callState,\"updateWaitingParticipants()\"),\"object\"!==n(t))throw new Error(\"updateWaitingParticipants() must take a mapping between ids and update objects\");return new Promise((function(n,r){e.sendMessageToCallMachine({action:\"daily-method-update-waiting-participants\",updatesById:t},(function(e){e.error&&r(e.error),e.ids||r(new Error(\"unknown error in updateWaitingParticipants()\")),n({ids:e.ids})}))}))})),function(){return z.apply(this,arguments)})},{key:\"requestAccess\",value:(Y=p((function*(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=t.access,r=void 0===n?{level:Lr}:n,i=t.name,o=void 0===i?\"\":i;return ss(this._callObjectMode,\"requestAccess()\"),ns(this._callState,\"requestAccess()\"),new Promise((function(t,n){e.sendMessageToCallMachine({action:\"daily-method-request-access\",access:r,name:o},(function(e){e.error&&n(e.error),e.access||n(new Error(\"unknown error in requestAccess()\")),t({access:e.access,granted:e.granted})}))}))})),function(){return Y.apply(this,arguments)})},{key:\"localAudio\",value:function(){return this._participants.local?![\"blocked\",\"off\"].includes(this._participants.local.tracks.audio.state):null}},{key:\"localVideo\",value:function(){return this._participants.local?![\"blocked\",\"off\"].includes(this._participants.local.tracks.video.state):null}},{key:\"setLocalAudio\",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return\"forceDiscardTrack\"in t&&(Eo()?(console.warn(\"forceDiscardTrack option not supported in React Native; ignoring\"),t={}):e&&(console.warn(\"forceDiscardTrack option only supported when calling setLocalAudio(false); ignoring\"),t={})),this.sendMessageToCallMachine({action:\"local-audio\",state:e,options:t}),this}},{key:\"localScreenAudio\",value:function(){return this._participants.local?![\"blocked\",\"off\"].includes(this._participants.local.tracks.screenAudio.state):null}},{key:\"localScreenVideo\",value:function(){return this._participants.local?![\"blocked\",\"off\"].includes(this._participants.local.tracks.screenVideo.state):null}},{key:\"updateScreenShare\",value:function(e){if(this._isScreenSharing)return this.sendMessageToCallMachine({action:\"local-screen-update\",options:e}),this;console.warn(\"There is no screen share in progress. Try calling startScreenShare first.\")}},{key:\"setLocalVideo\",value:function(e){return this.sendMessageToCallMachine({action:\"local-video\",state:e}),this}},{key:\"getReceiveSettings\",value:(q=p((function*(e){var t=this,r=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}).showInheritedValues,i=void 0!==r&&r;if(ss(this._callObjectMode,\"getReceiveSettings()\"),!this._callMachineInitialized)return this._receiveSettings;switch(n(e)){case\"string\":return new Promise((function(n){t.sendMessageToCallMachine({action:\"get-single-participant-receive-settings\",id:e,showInheritedValues:i},(function(e){n(e.receiveSettings)}))}));case\"undefined\":return this._receiveSettings;default:throw new Error('first argument to getReceiveSettings() must be a participant id (or \"base\"), or there should be no arguments')}})),function(e){return q.apply(this,arguments)})},{key:\"updateReceiveSettings\",value:(G=p((function*(e){var t=this;if(ss(this._callObjectMode,\"updateReceiveSettings()\"),!hs(e,{allowAllParticipantsKey:!0}))throw new Error(vs({allowAllParticipantsKey:!0}));return ns(this._callState,\"updateReceiveSettings()\",\"To specify receive settings earlier, use the receiveSettings config property.\"),new Promise((function(n){t.sendMessageToCallMachine({action:\"update-receive-settings\",receiveSettings:e},(function(e){n({receiveSettings:e.receiveSettings})}))}))})),function(e){return G.apply(this,arguments)})},{key:\"_prepInputSettingsToPresentToUser\",value:function(e){var t,n,r,i,o,a,s,c;if(e){var l={},u=\"none\"===(null===(t=e.audio)||void 0===t||null===(n=t.processor)||void 0===n?void 0:n.type)&&(null===(r=e.audio)||void 0===r||null===(i=r.processor)||void 0===i?void 0:i._isDefaultWhenNone);if(e.audio&&!u){var d=Ra({},e.audio.processor);delete d._isDefaultWhenNone,l.audio=Ra(Ra({},e.audio),{},{processor:d})}var h=\"none\"===(null===(o=e.video)||void 0===o||null===(a=o.processor)||void 0===a?void 0:a.type)&&(null===(s=e.video)||void 0===s||null===(c=s.processor)||void 0===c?void 0:c._isDefaultWhenNone);if(e.video&&!h){var p=Ra({},e.video.processor);delete p._isDefaultWhenNone,l.video=Ra(Ra({},e.video),{},{processor:p})}return l}}},{key:\"getInputSettings\",value:function(){var e=this;return ls(),new Promise((function(t){t(e._getInputSettings())}))}},{key:\"_getInputSettings\",value:function(){var e,t,n,r,i,o,a,s,c={processor:{type:\"none\",_isDefaultWhenNone:!0}};this._inputSettings?(e=(null===(n=this._inputSettings)||void 0===n?void 0:n.video)||c,t=(null===(r=this._inputSettings)||void 0===r?void 0:r.audio)||c):(e=(null===(i=this._preloadCache)||void 0===i||null===(o=i.inputSettings)||void 0===o?void 0:o.video)||c,t=(null===(a=this._preloadCache)||void 0===a||null===(s=a.inputSettings)||void 0===s?void 0:s.audio)||c);var l={audio:t,video:e};return this._prepInputSettingsToPresentToUser(l)}},{key:\"updateInputSettings\",value:($=p((function*(e){var t=this;return ls(),ps(e)?(e&&(this._preloadCache.inputSettings||(this._preloadCache.inputSettings={}),fs(e,this.properties.dailyConfig),e.audio&&(this._preloadCache.inputSettings.audio=e.audio),e.video&&(this._preloadCache.inputSettings.video=e.video)),e.video||e.audio?this._callObjectMode&&!this._callMachineInitialized?this._getInputSettings():new Promise((function(n,r){t.sendMessageToCallMachine({action:\"update-input-settings\",inputSettings:e},(function(e){e.error?r(e.error):n({inputSettings:t._prepInputSettingsToPresentToUser(e.inputSettings)})}))})):this._getInputSettings()):(console.error(gs()),Promise.reject(gs()))})),function(e){return $.apply(this,arguments)})},{key:\"setBandwidth\",value:function(e){var t=e.kbs,n=e.trackConstraints;if(ls(),this._callMachineInitialized)return this.sendMessageToCallMachine({action:\"set-bandwidth\",kbs:t,trackConstraints:n}),this}},{key:\"getDailyLang\",value:function(){var e=this;if(ls(),this._callMachineInitialized)return new Promise((function(t){e.sendMessageToCallMachine({action:\"get-daily-lang\"},(function(e){delete e.action,delete e.callbackStamp,t(e)}))}))}},{key:\"setDailyLang\",value:function(e){return ls(),this.sendMessageToCallMachine({action:\"set-daily-lang\",lang:e}),this}},{key:\"setProxyUrl\",value:function(e){return this.sendMessageToCallMachine({action:\"set-proxy-url\",proxyUrl:e}),this}},{key:\"setIceConfig\",value:function(e){return this.sendMessageToCallMachine({action:\"set-ice-config\",iceConfig:e}),this}},{key:\"meetingSessionSummary\",value:function(){return[Cr,Mr].includes(this._callState)?this._finalSummaryOfPrevSession:this._meetingSessionSummary}},{key:\"getMeetingSession\",value:(J=p((function*(){var e=this;return console.warn(\"getMeetingSession() is deprecated: use meetingSessionSummary(), which will return immediately\"),ns(this._callState,\"getMeetingSession()\"),new Promise((function(t){e.sendMessageToCallMachine({action:\"get-meeting-session\"},(function(e){delete e.action,delete e.callbackStamp,t(e)}))}))})),function(){return J.apply(this,arguments)})},{key:\"meetingSessionState\",value:function(){return ns(this._callState,\"meetingSessionState\"),this._meetingSessionState}},{key:\"setMeetingSessionData\",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:\"replace\";ss(this._callObjectMode,\"setMeetingSessionData()\"),ns(this._callState,\"setMeetingSessionData\");try{!function(e,t){new Xo({data:e,mergeStrategy:t})}(e,t)}catch(e){throw console.error(e),e}try{this.sendMessageToCallMachine({action:\"set-session-data\",data:e,mergeStrategy:t})}catch(e){throw new Error(\"Error setting meeting session data: \".concat(e))}}},{key:\"setUserName\",value:function(e,t){var n=this;return this.properties.userName=e,new Promise((function(r){n.sendMessageToCallMachine({action:\"set-user-name\",name:null!=e?e:\"\",thisMeetingOnly:Eo()||!!t&&!!t.thisMeetingOnly},(function(e){delete e.action,delete e.callbackStamp,r(e)}))}))}},{key:\"setUserData\",value:(V=p((function*(e){var t=this;try{ds(e)}catch(e){throw console.error(e),e}if(this.properties.userData=e,this._callMachineInitialized)return new Promise((function(n){try{t.sendMessageToCallMachine({action:\"set-user-data\",userData:e},(function(e){delete e.action,delete e.callbackStamp,n(e)}))}catch(e){throw new Error(\"Error setting user data: \".concat(e))}}))})),function(e){return V.apply(this,arguments)})},{key:\"validateAudioLevelInterval\",value:function(e){if(e&&(e<100||\"number\"!=typeof e))throw new Error(\"The interval must be a number greater than or equal to 100 milliseconds.\")}},{key:\"startLocalAudioLevelObserver\",value:function(e){var t=this;if(\"undefined\"==typeof AudioWorkletNode&&!Eo())throw new Error(\"startLocalAudioLevelObserver() is not supported on this browser\");if(this.validateAudioLevelInterval(e),this._callMachineInitialized)return this._isLocalAudioLevelObserverRunning=!0,new Promise((function(n,r){t.sendMessageToCallMachine({action:\"start-local-audio-level-observer\",interval:e},(function(e){t._isLocalAudioLevelObserverRunning=!e.error,e.error?r({error:e.error}):n()}))}));this._preloadCache.localAudioLevelObserver={enabled:!0,interval:e}}},{key:\"isLocalAudioLevelObserverRunning\",value:function(){return this._isLocalAudioLevelObserverRunning}},{key:\"stopLocalAudioLevelObserver\",value:function(){this._preloadCache.localAudioLevelObserver=null,this._localAudioLevel=0,this._isLocalAudioLevelObserverRunning=!1,this.sendMessageToCallMachine({action:\"stop-local-audio-level-observer\"})}},{key:\"startRemoteParticipantsAudioLevelObserver\",value:function(e){var t=this;if(this.validateAudioLevelInterval(e),this._callMachineInitialized)return this._isRemoteParticipantsAudioLevelObserverRunning=!0,new Promise((function(n,r){t.sendMessageToCallMachine({action:\"start-remote-participants-audio-level-observer\",interval:e},(function(e){t._isRemoteParticipantsAudioLevelObserverRunning=!e.error,e.error?r({error:e.error}):n()}))}));this._preloadCache.remoteParticipantsAudioLevelObserver={enabled:!0,interval:e}}},{key:\"isRemoteParticipantsAudioLevelObserverRunning\",value:function(){return this._isRemoteParticipantsAudioLevelObserverRunning}},{key:\"stopRemoteParticipantsAudioLevelObserver\",value:function(){this._preloadCache.remoteParticipantsAudioLevelObserver=null,this._remoteParticipantsAudioLevel={},this._isRemoteParticipantsAudioLevelObserverRunning=!1,this.sendMessageToCallMachine({action:\"stop-remote-participants-audio-level-observer\"})}},{key:\"startCamera\",value:(U=p((function*(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(ss(this._callObjectMode,\"startCamera()\"),is(this._callState,this._isPreparingToJoin,\"startCamera()\",\"Did you mean to use setLocalAudio() and/or setLocalVideo() instead?\"),this.needsLoad())try{yield this.load(t)}catch(e){return Promise.reject(e)}else{if(this._didPreAuth){if(t.url&&t.url!==this.properties.url)return console.error(\"url in startCamera() is different than the one used in preAuth()\"),Promise.reject();if(t.token&&t.token!==this.properties.token)return console.error(\"token in startCamera() is different than the one used in preAuth()\"),Promise.reject()}this.validateProperties(t),this.properties=Ra(Ra({},this.properties),t)}return new Promise((function(t){e.sendMessageToCallMachine({action:\"start-camera\",properties:ts(e.properties,e.callClientId),preloadCache:ts(e._preloadCache,e.callClientId)},(function(e){delete e.action,delete e.callbackStamp,t(e)}))}))})),function(){return U.apply(this,arguments)})},{key:\"validateCustomTrack\",value:function(e,t,n){if(n&&n.length>50)throw new Error(\"Custom track `trackName` must not be more than 50 characters\");if(t&&\"music\"!==t&&\"speech\"!==t&&!(t instanceof Object))throw new Error(\"Custom track `mode` must be either `music` | `speech` | `DailyMicAudioModeSettings` or `undefined`\");if(!!n&&[\"cam-audio\",\"cam-video\",\"screen-video\",\"screen-audio\",\"rmpAudio\",\"rmpVideo\",\"customVideoDefaults\"].includes(n))throw new Error(\"Custom track `trackName` must not match a track name already used by daily: cam-audio, cam-video, customVideoDefaults, screen-video, screen-audio, rmpAudio, rmpVideo\");if(!(e instanceof MediaStreamTrack))throw new Error(\"Custom tracks provided must be instances of MediaStreamTrack\")}},{key:\"startCustomTrack\",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{track:track,mode:mode,trackName:trackName};return ls(),ns(this._callState,\"startCustomTrack()\"),this.validateCustomTrack(t.track,t.mode,t.trackName),new Promise((function(n,r){e._sharedTracks.customTrack=t.track,t.track=fo,e.sendMessageToCallMachine({action:\"start-custom-track\",properties:t},(function(e){e.error?r({error:e.error}):n(e.mediaTag)}))}))}},{key:\"stopCustomTrack\",value:function(e){var t=this;return ls(),ns(this._callState,\"stopCustomTrack()\"),new Promise((function(n){t.sendMessageToCallMachine({action:\"stop-custom-track\",mediaTag:e},(function(e){n(e.mediaTag)}))}))}},{key:\"setCamera\",value:function(e){var t=this;return us(),os(this._callMachineInitialized,\"setCamera()\"),new Promise((function(n){t.sendMessageToCallMachine({action:\"set-camera\",cameraDeviceId:e},(function(e){n({device:e.device})}))}))}},{key:\"setAudioDevice\",value:(F=p((function*(e){return us(),this.nativeUtils().setAudioDevice(e),{deviceId:yield this.nativeUtils().getAudioDevice()}})),function(e){return F.apply(this,arguments)})},{key:\"cycleCamera\",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return new Promise((function(n){e.sendMessageToCallMachine({action:\"cycle-camera\",properties:t},(function(e){n({device:e.device})}))}))}},{key:\"cycleMic\",value:function(){var e=this;return ls(),new Promise((function(t){e.sendMessageToCallMachine({action:\"cycle-mic\"},(function(e){t({device:e.device})}))}))}},{key:\"getCameraFacingMode\",value:function(){var e=this;return us(),new Promise((function(t){e.sendMessageToCallMachine({action:\"get-camera-facing-mode\"},(function(e){t(e.facingMode)}))}))}},{key:\"setInputDevicesAsync\",value:(B=p((function*(e){var t=this,n=e.audioDeviceId,r=e.videoDeviceId,i=e.audioSource,o=e.videoSource;return ls(),void 0!==i&&(n=i),void 0!==o&&(r=o),n&&(this._preloadCache.audioDeviceId=n,this._sharedTracks.audioDeviceId=n),r&&(this._preloadCache.videoDeviceId=r,this._sharedTracks.videoDeviceId=r),this._callObjectMode&&this.needsLoad()?{camera:{deviceId:this._preloadCache.videoDeviceId},mic:{deviceId:this._preloadCache.audioDeviceId},speaker:{deviceId:this._preloadCache.outputDeviceId}}:(n instanceof MediaStreamTrack&&(n=fo),r instanceof MediaStreamTrack&&(r=fo),new Promise((function(e){t.sendMessageToCallMachine({action:\"set-input-devices\",audioDeviceId:n,videoDeviceId:r},(function(n){delete n.action,delete n.callbackStamp,n.returnPreloadCache?e({camera:{deviceId:t._preloadCache.videoDeviceId},mic:{deviceId:t._preloadCache.audioDeviceId},speaker:{deviceId:t._preloadCache.outputDeviceId}}):e(n)}))})))})),function(e){return B.apply(this,arguments)})},{key:\"setOutputDeviceAsync\",value:(R=p((function*(e){var t=this,n=e.outputDeviceId;return ls(),n&&(this._preloadCache.outputDeviceId=n),this._callObjectMode&&this.needsLoad()?{camera:{deviceId:this._preloadCache.videoDeviceId},mic:{deviceId:this._preloadCache.audioDeviceId},speaker:{deviceId:this._preloadCache.outputDeviceId}}:new Promise((function(e){t.sendMessageToCallMachine({action:\"set-output-device\",outputDeviceId:n},(function(n){delete n.action,delete n.callbackStamp,n.returnPreloadCache?e({camera:{deviceId:t._preloadCache.videoDeviceId},mic:{deviceId:t._preloadCache.audioDeviceId},speaker:{deviceId:t._preloadCache.outputDeviceId}}):e(n)}))}))})),function(e){return R.apply(this,arguments)})},{key:\"getInputDevices\",value:(N=p((function*(){var e=this;return this._callObjectMode&&this.needsLoad()?{camera:{deviceId:this._preloadCache.videoDeviceId},mic:{deviceId:this._preloadCache.audioDeviceId},speaker:{deviceId:this._preloadCache.outputDeviceId}}:new Promise((function(t){e.sendMessageToCallMachine({action:\"get-input-devices\"},(function(n){delete n.action,delete n.callbackStamp,n.returnPreloadCache?t({camera:{deviceId:e._preloadCache.videoDeviceId},mic:{deviceId:e._preloadCache.audioDeviceId},speaker:{deviceId:e._preloadCache.outputDeviceId}}):t(n)}))}))})),function(){return N.apply(this,arguments)})},{key:\"nativeInCallAudioMode\",value:function(){return us(),this._nativeInCallAudioMode}},{key:\"setNativeInCallAudioMode\",value:function(e){if(us(),[Ja,$a].includes(e)){if(e!==this._nativeInCallAudioMode)return this._nativeInCallAudioMode=e,!this.disableReactNativeAutoDeviceManagement(\"audio\")&&rs(this._callState,this._isPreparingToJoin)&&this.nativeUtils().setAudioMode(this._nativeInCallAudioMode),this}else console.error(\"invalid in-call audio mode specified: \",e)}},{key:\"preAuth\",value:(L=p((function*(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(ss(this._callObjectMode,\"preAuth()\"),is(this._callState,this._isPreparingToJoin,\"preAuth()\"),this.needsLoad()&&(yield this.load(t)),!t.url)throw new Error(\"preAuth() requires at least a url to be provided\");return this.validateProperties(t),this.properties=Ra(Ra({},this.properties),t),new Promise((function(t,n){e.sendMessageToCallMachine({action:\"daily-method-preauth\",properties:ts(e.properties,e.callClientId),preloadCache:ts(e._preloadCache,e.callClientId)},(function(r){return r.error?n(r.error):r.access?(e._didPreAuth=!0,void t({access:r.access})):n(new Error(\"unknown error in preAuth()\"))}))}))})),function(){return L.apply(this,arguments)})},{key:\"load\",value:(x=p((function*(e){var t=this;if(this.needsLoad()){if(this._destroyed&&(this._logUseAfterDestroy(),this.strictMode))throw new Error(\"Use after destroy\");if(e&&(this.validateProperties(e),this.properties=Ra(Ra({},this.properties),e)),!this._callObjectMode&&!this.properties.url)throw new Error(\"can't load iframe meeting because url property isn't set\");return this._updateCallState(wr),this.emitDailyJSEvent({action:ai}),this._callObjectMode?new Promise((function(e,n){t._callObjectLoader.cancel();var r=Date.now();t._callObjectLoader.load(t.properties.dailyConfig,(function(n){t._bundleLoadTime=n?\"no-op\":Date.now()-r,t._updateCallState(Sr),n&&t.emitDailyJSEvent({action:ci}),e()}),(function(e,r){if(t.emitDailyJSEvent({action:si}),!r){t._updateCallState(Mr),t.resetMeetingDependentVars();var i={action:ao,errorMsg:e.msg,error:{type:\"connection-error\",msg:\"Failed to load call object bundle.\",details:{on:\"load\",sourceError:e,bundleUrl:X(t.properties.dailyConfig)}}};t._maybeSendToSentry(i),t.emitDailyJSEvent(i),n(e.msg)}}))})):(this._iframe.src=K(this.assembleMeetingUrl(),this.properties.dailyConfig),new Promise((function(e,n){t._loadedCallback=function(r){t._callState!==Mr?(t._updateCallState(Sr),(t.properties.cssFile||t.properties.cssText)&&t.loadCss(t.properties),e()):n(r)}})))}})),function(e){return x.apply(this,arguments)})},{key:\"join\",value:(j=p((function*(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this._testCallInProgress&&this.stopTestCallQuality();var n=!1;if(this.needsLoad()){this.updateIsPreparingToJoin(!0);try{yield this.load(t)}catch(e){return this.updateIsPreparingToJoin(!1),Promise.reject(e)}}else{if(n=!(!this.properties.cssFile&&!this.properties.cssText),this._didPreAuth){if(t.url&&t.url!==this.properties.url)return console.error(\"url in join() is different than the one used in preAuth()\"),this.updateIsPreparingToJoin(!1),Promise.reject();if(t.token&&t.token!==this.properties.token)return console.error(\"token in join() is different than the one used in preAuth()\"),this.updateIsPreparingToJoin(!1),Promise.reject()}if(t.url&&!this._callObjectMode&&t.url&&t.url!==this.properties.url)return console.error(\"url in join() is different than the one used in load() (\".concat(this.properties.url,\" -> \").concat(t.url,\")\")),this.updateIsPreparingToJoin(!1),Promise.reject();this.validateProperties(t),this.properties=Ra(Ra({},this.properties),t)}return void 0!==t.showLocalVideo&&(this._callObjectMode?console.error(\"showLocalVideo is not available in callObject mode\"):this._showLocalVideo=!!t.showLocalVideo),void 0!==t.showParticipantsBar&&(this._callObjectMode?console.error(\"showParticipantsBar is not available in callObject mode\"):this._showParticipantsBar=!!t.showParticipantsBar),this._callState===Er||this._callState===kr?(console.warn(\"already joined meeting, call leave() before joining again\"),void this.updateIsPreparingToJoin(!1)):(this._updateCallState(kr,!1),this.emitDailyJSEvent({action:di}),this._preloadCache.inputSettings||(this._preloadCache.inputSettings={}),t.inputSettings&&t.inputSettings.audio&&(this._preloadCache.inputSettings.audio=t.inputSettings.audio),t.inputSettings&&t.inputSettings.video&&(this._preloadCache.inputSettings.video=t.inputSettings.video),this.sendMessageToCallMachine({action:\"join-meeting\",properties:ts(this.properties,this.callClientId),preloadCache:ts(this._preloadCache,this.callClientId)}),new Promise((function(t,r){e._joinedCallback=function(i,o){if(e._callState!==Mr){if(e._updateCallState(Er),i)for(var a in i){if(e._callObjectMode){var s=e._callMachine().store;va(i[a],s),ma(i[a],s),_a(i[a],e._participants[a],s)}e._participants[a]=Ra({},i[a]),e.toggleParticipantAudioBasedOnNativeAudioFocus()}n&&e.loadCss(e.properties),t(i)}else r(o)}})))})),function(){return j.apply(this,arguments)})},{key:\"leave\",value:(D=p((function*(){var e=this;return this._testCallInProgress&&this.stopTestCallQuality(),new Promise((function(t){e._callState===Cr||e._callState===Mr?t():e._callObjectLoader&&!e._callObjectLoader.loaded?(e._callObjectLoader.cancel(),e._updateCallState(Cr),e.resetMeetingDependentVars(),e.emitDailyJSEvent({action:Cr}),t()):(e._resolveLeave=t,e.sendMessageToCallMachine({action:\"leave-meeting\"}))}))})),function(){return D.apply(this,arguments)})},{key:\"startScreenShare\",value:(A=p((function*(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(os(this._callMachineInitialized,\"startScreenShare()\"),t.screenVideoSendSettings&&this._validateVideoSendSettings(\"screenVideo\",t.screenVideoSendSettings),t.mediaStream&&(this._sharedTracks.screenMediaStream=t.mediaStream,t.mediaStream=fo),\"undefined\"!=typeof DailyNativeUtils&&void 0!==DailyNativeUtils.isIOS&&DailyNativeUtils.isIOS){var n=this.nativeUtils();if(yield n.isScreenBeingCaptured())return void this.emitDailyJSEvent({action:oo,type:\"screen-share-error\",errorMsg:\"Could not start the screen sharing. The screen is already been captured!\"});n.setSystemScreenCaptureStartCallback((function(){n.setSystemScreenCaptureStartCallback(null),e.sendMessageToCallMachine({action:uo,captureOptions:t})})),n.presentSystemScreenCapturePrompt()}else this.sendMessageToCallMachine({action:uo,captureOptions:t})})),function(){return A.apply(this,arguments)})},{key:\"stopScreenShare\",value:function(){os(this._callMachineInitialized,\"stopScreenShare()\"),this.sendMessageToCallMachine({action:\"local-screen-stop\"})}},{key:\"startRecording\",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.sendMessageToCallMachine(Ra({action:\"local-recording-start\"},e))}},{key:\"updateRecording\",value:function(e){var t=e.layout,n=void 0===t?{preset:\"default\"}:t,r=e.instanceId;this.sendMessageToCallMachine({action:\"daily-method-update-recording\",layout:n,instanceId:r})}},{key:\"stopRecording\",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.sendMessageToCallMachine(Ra({action:\"local-recording-stop\"},e))}},{key:\"startLiveStreaming\",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.sendMessageToCallMachine(Ra({action:\"daily-method-start-live-streaming\"},e))}},{key:\"updateLiveStreaming\",value:function(e){var t=e.layout,n=void 0===t?{preset:\"default\"}:t,r=e.instanceId;this.sendMessageToCallMachine({action:\"daily-method-update-live-streaming\",layout:n,instanceId:r})}},{key:\"addLiveStreamingEndpoints\",value:function(e){var t=e.endpoints,n=e.instanceId;this.sendMessageToCallMachine({action:ho,endpointsOp:bo,endpoints:t,instanceId:n})}},{key:\"removeLiveStreamingEndpoints\",value:function(e){var t=e.endpoints,n=e.instanceId;this.sendMessageToCallMachine({action:ho,endpointsOp:wo,endpoints:t,instanceId:n})}},{key:\"stopLiveStreaming\",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.sendMessageToCallMachine(Ra({action:\"daily-method-stop-live-streaming\"},e))}},{key:\"validateDailyConfig\",value:function(e){e.camSimulcastEncodings&&(console.warn(\"camSimulcastEncodings is deprecated. Use sendSettings, found in DailyCallOptions, to provide camera simulcast settings.\"),this.validateSimulcastEncodings(e.camSimulcastEncodings)),e.screenSimulcastEncodings&&console.warn(\"screenSimulcastEncodings is deprecated. Use sendSettings, found in DailyCallOptions, to provide screen simulcast settings.\"),xo()&&e.noAutoDefaultDeviceChange&&console.warn(\"noAutoDefaultDeviceChange is not supported on Android, and will be ignored.\")}},{key:\"validateSimulcastEncodings\",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(e){if(!(e instanceof Array||Array.isArray(e)))throw new Error(\"encodings must be an Array\");if(!ks(e.length,1,3))throw new Error(\"encodings must be an Array with between 1 to \".concat(3,\" layers\"));for(var r=0;r<e.length;r++){var i=e[r];for(var o in this._validateEncodingLayerHasValidProperties(i),i)if(za.includes(o)){if(\"number\"!=typeof i[o])throw new Error(\"\".concat(o,\" must be a number\"));if(t){var a=t[o],s=a.min,c=a.max;if(!ks(i[o],s,c))throw new Error(\"\".concat(o,\" value not in range. valid range: \").concat(s,\" to \").concat(c))}}else if(![\"active\",\"scalabilityMode\"].includes(o))throw new Error(\"Invalid key \".concat(o,\", valid keys are:\")+Object.values(za));if(n&&!i.hasOwnProperty(\"maxBitrate\"))throw new Error(\"maxBitrate is not specified\")}}}},{key:\"startRemoteMediaPlayer\",value:(P=p((function*(e){var t=this,n=e.url,r=e.settings,i=void 0===r?{state:mo.PLAY}:r;try{!function(e){if(\"string\"!=typeof e)throw new Error('url parameter must be \"string\" type')}(n),Ss(i),function(e){for(var t in e)if(!Wa.includes(t))throw new Error(\"Invalid key \".concat(t,\", valid keys are: \").concat(Wa));e.simulcastEncodings&&this.validateSimulcastEncodings(e.simulcastEncodings,Ya,!0)}(i)}catch(e){throw console.error(\"invalid argument Error: \".concat(e)),console.error('startRemoteMediaPlayer arguments must be of the form:\\n  { url: \"playback url\",\\n  settings?:\\n  {state: \"play\"|\"pause\", simulcastEncodings?: [{}] } }'),e}return new Promise((function(e,r){t.sendMessageToCallMachine({action:\"daily-method-start-remote-media-player\",url:n,settings:i},(function(t){t.error?r({error:t.error,errorMsg:t.errorMsg}):e({session_id:t.session_id,remoteMediaPlayerState:{state:t.state,settings:t.settings}})}))}))})),function(e){return P.apply(this,arguments)})},{key:\"stopRemoteMediaPlayer\",value:(O=p((function*(e){var t=this;if(\"string\"!=typeof e)throw new Error(\" remotePlayerID must be of type string\");return new Promise((function(n,r){t.sendMessageToCallMachine({action:\"daily-method-stop-remote-media-player\",session_id:e},(function(e){e.error?r({error:e.error,errorMsg:e.errorMsg}):n()}))}))})),function(e){return O.apply(this,arguments)})},{key:\"updateRemoteMediaPlayer\",value:(T=p((function*(e){var t=this,n=e.session_id,r=e.settings;try{Ss(r)}catch(e){throw console.error(\"invalid argument Error: \".concat(e)),console.error('updateRemoteMediaPlayer arguments must be of the form:\\n  session_id: \"participant session\",\\n  { settings?: {state: \"play\"|\"pause\"} }'),e}return new Promise((function(e,i){t.sendMessageToCallMachine({action:\"daily-method-update-remote-media-player\",session_id:n,settings:r},(function(t){t.error?i({error:t.error,errorMsg:t.errorMsg}):e({session_id:t.session_id,remoteMediaPlayerState:{state:t.state,settings:t.settings}})}))}))})),function(e){return T.apply(this,arguments)})},{key:\"startTranscription\",value:function(e){this.sendMessageToCallMachine(Ra({action:\"daily-method-start-transcription\"},e))}},{key:\"stopTranscription\",value:function(){this.sendMessageToCallMachine({action:\"daily-method-stop-transcription\"})}},{key:\"startDialOut\",value:(M=p((function*(e){var t=this;ns(this._callState,\"startDialOut()\");var n=function(e){if(e){if(!Array.isArray(e))throw new Error(\"Error starting dial out: audio codec must be an array\");if(e.length<=0)throw new Error(\"Error starting dial out: audio codec array specified but empty\");e.forEach((function(e){if(\"string\"!=typeof e)throw new Error(\"Error starting dial out: audio codec must be a string\");if(\"OPUS\"!==e&&\"PCMU\"!==e&&\"PCMA\"!==e&&\"G722\"!==e)throw new Error(\"Error starting dial out: audio codec must be one of OPUS, PCMU, PCMA, G722\")}))}};if(!e.sipUri&&!e.phoneNumber)throw new Error(\"Error starting dial out: either a sip uri or phone number must be provided\");if(e.sipUri&&e.phoneNumber)throw new Error(\"Error starting dial out: only one of sip uri or phone number must be provided\");if(e.sipUri){if(\"string\"!=typeof e.sipUri)throw new Error(\"Error starting dial out: sipUri must be a string\");if(!e.sipUri.startsWith(\"sip:\"))throw new Error(\"Error starting dial out: Invalid SIP URI, must start with 'sip:'\");if(e.video&&\"boolean\"!=typeof e.video)throw new Error(\"Error starting dial out: video must be a boolean value\");!function(e){if(e&&(n(e.audio),e.video)){if(!Array.isArray(e.video))throw new Error(\"Error starting dial out: video codec must be an array\");if(e.video.length<=0)throw new Error(\"Error starting dial out: video codec array specified but empty\");e.video.forEach((function(e){if(\"string\"!=typeof e)throw new Error(\"Error starting dial out: video codec must be a string\");if(\"H264\"!==e&&\"VP8\"!==e)throw new Error(\"Error starting dial out: video codec must be H264 or VP8\")}))}}(e.codecs)}if(e.phoneNumber){if(\"string\"!=typeof e.phoneNumber)throw new Error(\"Error starting dial out: phoneNumber must be a string\");if(!/^\\+\\d{1,}$/.test(e.phoneNumber))throw new Error(\"Error starting dial out: Invalid phone number, must be valid phone number as per E.164\");e.codecs&&n(e.codecs.audio)}if(e.callerId){if(\"string\"!=typeof e.callerId)throw new Error(\"Error starting dial out: callerId must be a string\");if(e.sipUri)throw new Error(\"Error starting dial out: callerId not allowed with sipUri\")}if(e.displayName){if(\"string\"!=typeof e.displayName)throw new Error(\"Error starting dial out: displayName must be a string\");if(e.displayName.length>=200)throw new Error(\"Error starting dial out: displayName length must be less than 200\")}return new Promise((function(n,r){t.sendMessageToCallMachine(Ra({action:\"dialout-start\"},e),(function(e){e.error?r(e.error):n(e)}))}))})),function(e){return M.apply(this,arguments)})},{key:\"stopDialOut\",value:function(e){var t=this;return ns(this._callState,\"stopDialOut()\"),new Promise((function(n,r){t.sendMessageToCallMachine(Ra({action:\"dialout-stop\"},e),(function(e){e.error?r(e.error):n(e)}))}))}},{key:\"sipCallTransfer\",value:(C=p((function*(e){var t=this;if(ns(this._callState,\"sipCallTransfer()\"),!e)throw new Error(\"sipCallTransfer() requires a sessionId and toEndPoint\");return e.useSipRefer=!1,ws(e,\"sipCallTransfer\"),new Promise((function(n,r){t.sendMessageToCallMachine(Ra({action:So},e),(function(e){e.error?r(e.error):n(e)}))}))})),function(e){return C.apply(this,arguments)})},{key:\"sipRefer\",value:(E=p((function*(e){var t=this;if(ns(this._callState,\"sipRefer()\"),!e)throw new Error(\"sessionId and toEndPoint are mandatory parameter\");return e.useSipRefer=!0,ws(e,\"sipRefer\"),new Promise((function(n,r){t.sendMessageToCallMachine(Ra({action:So},e),(function(e){e.error?r(e.error):n(e)}))}))})),function(e){return E.apply(this,arguments)})},{key:\"sendDTMF\",value:(k=p((function*(e){var t=this;return ns(this._callState,\"sendDTMF()\"),function(e){var t=e.sessionId,n=e.tones;if(!t||!n)throw new Error(\"sessionId and tones are mandatory parameter\");if(\"string\"!=typeof t||\"string\"!=typeof n)throw new Error(\"sessionId and tones should be of string type\");if(n.length>20)throw new Error(\"tones string must be upto 20 characters\");var r=/[^0-9A-D*#]/g,i=n.match(r);if(i&&i[0])throw new Error(\"\".concat(i[0],\" is not valid DTMF tone\"))}(e),new Promise((function(n,r){t.sendMessageToCallMachine(Ra({action:\"send-dtmf\"},e),(function(e){e.error?r(e.error):n(e)}))}))})),function(e){return k.apply(this,arguments)})},{key:\"getNetworkStats\",value:function(){var e=this;if(this._callState!==Er){return{stats:{latest:{}}}}return new Promise((function(t){e.sendMessageToCallMachine({action:\"get-calc-stats\"},(function(n){t(Ra({stats:n.stats},e._network))}))}))}},{key:\"testWebsocketConnectivity\",value:(S=p((function*(){var e=this;if(as(this._testCallInProgress,\"testWebsocketConnectivity()\"),this.needsLoad())try{yield this.load()}catch(e){return Promise.reject(e)}return new Promise((function(t,n){e.sendMessageToCallMachine({action:\"test-websocket-connectivity\"},(function(e){e.error?n(e.error):t(e.results)}))}))})),function(){return S.apply(this,arguments)})},{key:\"abortTestWebsocketConnectivity\",value:function(){this.sendMessageToCallMachine({action:\"abort-test-websocket-connectivity\"})}},{key:\"_validateVideoTrackForNetworkTests\",value:function(e){return e?e instanceof MediaStreamTrack?!!xa(e,{isLocalScreenVideo:!1})||(console.error(\"Video track is not playable. This test needs a live video track.\"),!1):(console.error(\"Video track needs to be of type `MediaStreamTrack`.\"),!1):(console.error(\"Missing video track. You must provide a video track in order to run this test.\"),!1)}},{key:\"testCallQuality\",value:(w=p((function*(){var t=this;ls(),ss(this._callObjectMode,\"testCallQuality()\"),os(this._callMachineInitialized,\"testCallQuality()\",null,!0),is(this._callState,this._isPreparingToJoin,\"testCallQuality()\");var n=this._testCallAlreadyInProgress,r=function(e){n||(t._testCallInProgress=e)};if(r(!0),this.needsLoad())try{var i=this._callState;yield this.load(),this._callState=i}catch(e){return r(!1),Promise.reject(e)}return new Promise((function(n){t.sendMessageToCallMachine({action:\"test-call-quality\",dailyJsVersion:t.properties.dailyJsVersion},(function(i){var o=i.results,a=o.result,s=e(o,La);if(\"failed\"===a){var c,l=Ra({},s);null!==(c=s.error)&&void 0!==c&&c.details?(s.error.details=JSON.parse(s.error.details),l.error=Ra(Ra({},l.error),{},{details:Ra({},l.error.details)}),l.error.details.duringTest=\"testCallQuality\"):(l.error=l.error?Ra({},l.error):{},l.error.details={duringTest:\"testCallQuality\"}),t._maybeSendToSentry(l)}r(!1),n(Ra({result:a},s))}))}))})),function(){return w.apply(this,arguments)})},{key:\"stopTestCallQuality\",value:function(){this.sendMessageToCallMachine({action:\"stop-test-call-quality\"})}},{key:\"testConnectionQuality\",value:(b=p((function*(e){var t;Eo()?(console.warn(\"testConnectionQuality() is deprecated: use testPeerToPeerCallQuality() instead\"),t=yield this.testPeerToPeerCallQuality(e)):(console.warn(\"testConnectionQuality() is deprecated: use testCallQuality() instead\"),t=yield this.testCallQuality());var n={result:t.result,secondsElapsed:t.secondsElapsed};return t.data&&(n.data={maxRTT:t.data.maxRoundTripTime,packetLoss:t.data.avgRecvPacketLoss}),n})),function(e){return b.apply(this,arguments)})},{key:\"testPeerToPeerCallQuality\",value:(_=p((function*(e){var t=this;if(as(this._testCallInProgress,\"testPeerToPeerCallQuality()\"),this.needsLoad())try{yield this.load()}catch(e){return Promise.reject(e)}var n=e.videoTrack,r=e.duration;if(!this._validateVideoTrackForNetworkTests(n))throw new Error(\"Video track error\");return this._sharedTracks.videoTrackForConnectionQualityTest=n,new Promise((function(e,n){t.sendMessageToCallMachine({action:\"test-p2p-call-quality\",duration:r},(function(t){t.error?n(t.error):e(t.results)}))}))})),function(e){return _.apply(this,arguments)})},{key:\"stopTestConnectionQuality\",value:function(){Eo()?(console.warn(\"stopTestConnectionQuality() is deprecated: use testPeerToPeerCallQuality() and stopTestPeerToPeerCallQuality() instead\"),this.stopTestPeerToPeerCallQuality()):(console.warn(\"stopTestConnectionQuality() is deprecated: use testCallQuality() and stopTestCallQuality() instead\"),this.stopTestCallQuality())}},{key:\"stopTestPeerToPeerCallQuality\",value:function(){this.sendMessageToCallMachine({action:\"stop-test-p2p-call-quality\"})}},{key:\"testNetworkConnectivity\",value:(y=p((function*(e){var t=this;if(as(this._testCallInProgress,\"testNetworkConnectivity()\"),this.needsLoad())try{yield this.load()}catch(e){return Promise.reject(e)}if(!this._validateVideoTrackForNetworkTests(e))throw new Error(\"Video track error\");return this._sharedTracks.videoTrackForNetworkConnectivityTest=e,new Promise((function(e,n){t.sendMessageToCallMachine({action:\"test-network-connectivity\"},(function(t){t.error?n(t.error):e(t.results)}))}))})),function(e){return y.apply(this,arguments)})},{key:\"abortTestNetworkConnectivity\",value:function(){this.sendMessageToCallMachine({action:\"abort-test-network-connectivity\"})}},{key:\"getCpuLoadStats\",value:function(){var e=this;return new Promise((function(t){if(e._callState===Er){e.sendMessageToCallMachine({action:\"get-cpu-load-stats\"},(function(e){t(e.cpuStats)}))}else t({cpuLoadState:void 0,cpuLoadStateReason:void 0,stats:{}})}))}},{key:\"_validateEncodingLayerHasValidProperties\",value:function(e){var t;if(!((null===(t=Object.keys(e))||void 0===t?void 0:t.length)>0))throw new Error(\"Empty encoding is not allowed. At least one of these valid keys should be specified:\"+Object.values(za))}},{key:\"_validateVideoSendSettings\",value:function(e,t){var r=\"screenVideo\"===e?[\"default-screen-video\",\"detail-optimized\",\"motion-optimized\",\"motion-and-detail-balanced\"]:[\"default-video\",\"bandwidth-optimized\",\"bandwidth-and-quality-balanced\",\"quality-optimized\",\"adaptive-2-layers\",\"adaptive-3-layers\"],i=\"Video send settings should be either an object or one of the supported presets: \".concat(r.join());if(\"string\"==typeof t){if(!r.includes(t))throw new Error(i)}else{if(\"object\"!==n(t))throw new Error(i);if(!t.maxQuality&&!t.encodings&&void 0===t.allowAdaptiveLayers)throw new Error(\"Video send settings must contain at least maxQuality, allowAdaptiveLayers or encodings attribute\");if(t.maxQuality&&-1===[\"low\",\"medium\",\"high\"].indexOf(t.maxQuality))throw new Error(\"maxQuality must be either low, medium or high\");if(t.encodings){var o=!1;switch(Object.keys(t.encodings).length){case 1:o=!t.encodings.low;break;case 2:o=!t.encodings.low||!t.encodings.medium;break;case 3:o=!t.encodings.low||!t.encodings.medium||!t.encodings.high;break;default:o=!0}if(o)throw new Error(\"Encodings must be defined as: low, low and medium, or low, medium and high.\");t.encodings.low&&this._validateEncodingLayerHasValidProperties(t.encodings.low),t.encodings.medium&&this._validateEncodingLayerHasValidProperties(t.encodings.medium),t.encodings.high&&this._validateEncodingLayerHasValidProperties(t.encodings.high)}}}},{key:\"validateUpdateSendSettings\",value:function(e){var t=this;if(!e||0===Object.keys(e).length)throw new Error(\"Send settings must contain at least information for one track!\");Object.entries(e).forEach((function(e){var n=g(e,2),r=n[0],i=n[1];t._validateVideoSendSettings(r,i)}))}},{key:\"updateSendSettings\",value:function(e){var t=this;return this.validateUpdateSendSettings(e),this.needsLoad()?(this._preloadCache.sendSettings=e,{sendSettings:this._preloadCache.sendSettings}):new Promise((function(n,r){t.sendMessageToCallMachine({action:\"update-send-settings\",sendSettings:e},(function(e){e.error?r(e.error):n(e.sendSettings)}))}))}},{key:\"getSendSettings\",value:function(){return this._sendSettings||this._preloadCache.sendSettings}},{key:\"getLocalAudioLevel\",value:function(){return this._localAudioLevel}},{key:\"getRemoteParticipantsAudioLevel\",value:function(){return this._remoteParticipantsAudioLevel}},{key:\"getActiveSpeaker\",value:function(){return ls(),this._activeSpeaker}},{key:\"setActiveSpeakerMode\",value:function(e){return ls(),this.sendMessageToCallMachine({action:\"set-active-speaker-mode\",enabled:e}),this}},{key:\"activeSpeakerMode\",value:function(){return ls(),this._activeSpeakerMode}},{key:\"subscribeToTracksAutomatically\",value:function(){return this._preloadCache.subscribeToTracksAutomatically}},{key:\"setSubscribeToTracksAutomatically\",value:function(e){return ns(this._callState,\"setSubscribeToTracksAutomatically()\",\"Use the subscribeToTracksAutomatically configuration property.\"),this._preloadCache.subscribeToTracksAutomatically=e,this.sendMessageToCallMachine({action:\"daily-method-subscribe-to-tracks-automatically\",enabled:e}),this}},{key:\"enumerateDevices\",value:(v=p((function*(){var e=this;if(this._callObjectMode){var t=yield navigator.mediaDevices.enumerateDevices();return\"Firefox\"===Io()&&No().major>115&&No().major<123&&(t=t.filter((function(e){return\"audiooutput\"!==e.kind}))),{devices:t.map((function(e){var t=JSON.parse(JSON.stringify(e));if(!Eo()&&\"videoinput\"===e.kind&&e.getCapabilities){var n,r=e.getCapabilities();t.facing=(null==r||null===(n=r.facingMode)||void 0===n?void 0:n.length)>=1?r.facingMode[0]:void 0}return t}))}}return new Promise((function(t){e.sendMessageToCallMachine({action:\"enumerate-devices\"},(function(e){t({devices:e.devices})}))}))})),function(){return v.apply(this,arguments)})},{key:\"sendAppMessage\",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:\"*\";if(ns(this._callState,\"sendAppMessage()\"),JSON.stringify(e).length>this._maxAppMessageSize)throw new Error(\"Message data too large. Max size is \"+this._maxAppMessageSize);return this.sendMessageToCallMachine({action:\"app-msg\",data:e,to:t}),this}},{key:\"addFakeParticipant\",value:function(e){return ls(),ns(this._callState,\"addFakeParticipant()\"),this.sendMessageToCallMachine(Ra({action:\"add-fake-participant\"},e)),this}},{key:\"setShowNamesMode\",value:function(e){return cs(this._callObjectMode,\"setShowNamesMode()\"),ls(),e&&\"always\"!==e&&\"never\"!==e?(console.error('setShowNamesMode argument should be \"always\", \"never\", or false'),this):(this.sendMessageToCallMachine({action:\"set-show-names\",mode:e}),this)}},{key:\"setShowLocalVideo\",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];return cs(this._callObjectMode,\"setShowLocalVideo()\"),ls(),ns(this._callState,\"setShowLocalVideo()\"),\"boolean\"!=typeof e?(console.error(\"setShowLocalVideo only accepts a boolean value\"),this):(this.sendMessageToCallMachine({action:\"set-show-local-video\",show:e}),this._showLocalVideo=e,this)}},{key:\"showLocalVideo\",value:function(){return cs(this._callObjectMode,\"showLocalVideo()\"),ls(),this._showLocalVideo}},{key:\"setShowParticipantsBar\",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];return cs(this._callObjectMode,\"setShowParticipantsBar()\"),ls(),ns(this._callState,\"setShowParticipantsBar()\"),\"boolean\"!=typeof e?(console.error(\"setShowParticipantsBar only accepts a boolean value\"),this):(this.sendMessageToCallMachine({action:\"set-show-participants-bar\",show:e}),this._showParticipantsBar=e,this)}},{key:\"showParticipantsBar\",value:function(){return cs(this._callObjectMode,\"showParticipantsBar()\"),ls(),this._showParticipantsBar}},{key:\"customIntegrations\",value:function(){return ls(),cs(this._callObjectMode,\"customIntegrations()\"),this._customIntegrations}},{key:\"setCustomIntegrations\",value:function(e){return ls(),cs(this._callObjectMode,\"setCustomIntegrations()\"),ns(this._callState,\"setCustomIntegrations()\"),_s(e)?(this.sendMessageToCallMachine({action:\"set-custom-integrations\",integrations:e}),this._customIntegrations=e,this):this}},{key:\"startCustomIntegrations\",value:function(e){var t=this;if(ls(),cs(this._callObjectMode,\"startCustomIntegrations()\"),ns(this._callState,\"startCustomIntegrations()\"),Array.isArray(e)&&e.some((function(e){return\"string\"!=typeof e}))||!Array.isArray(e)&&\"string\"!=typeof e)return console.error(\"startCustomIntegrations() only accepts string | string[]\"),this;var n=\"string\"==typeof e?[e]:e,r=n.filter((function(e){return!(e in t._customIntegrations)}));return r.length?(console.error(\"Can't find custom integration(s): \\\"\".concat(r.join(\", \"),'\"')),this):(this.sendMessageToCallMachine({action:\"start-custom-integrations\",ids:n}),this)}},{key:\"stopCustomIntegrations\",value:function(e){var t=this;if(ls(),cs(this._callObjectMode,\"stopCustomIntegrations()\"),ns(this._callState,\"stopCustomIntegrations()\"),Array.isArray(e)&&e.some((function(e){return\"string\"!=typeof e}))||!Array.isArray(e)&&\"string\"!=typeof e)return console.error(\"stopCustomIntegrations() only accepts string | string[]\"),this;var n=\"string\"==typeof e?[e]:e,r=n.filter((function(e){return!(e in t._customIntegrations)}));return r.length?(console.error(\"Can't find custom integration(s): \\\"\".concat(r.join(\", \"),'\"')),this):(this.sendMessageToCallMachine({action:\"stop-custom-integrations\",ids:n}),this)}},{key:\"customTrayButtons\",value:function(){return cs(this._callObjectMode,\"customTrayButtons()\"),ls(),this._customTrayButtons}},{key:\"updateCustomTrayButtons\",value:function(e){return cs(this._callObjectMode,\"updateCustomTrayButtons()\"),ls(),ns(this._callState,\"updateCustomTrayButtons()\"),ys(e)?(this.sendMessageToCallMachine({action:\"update-custom-tray-buttons\",btns:e}),this._customTrayButtons=e,this):(console.error(\"updateCustomTrayButtons only accepts a dictionary of the type \".concat(JSON.stringify(Qa))),this)}},{key:\"theme\",value:function(){return cs(this._callObjectMode,\"theme()\"),this.properties.theme}},{key:\"setTheme\",value:function(e){var t=this;return cs(this._callObjectMode,\"setTheme()\"),new Promise((function(n,r){try{t.validateProperties({theme:e}),t.properties.theme=Ra({},e),t.sendMessageToCallMachine({action:\"set-theme\",theme:t.properties.theme});try{t.emitDailyJSEvent({action:oi,theme:t.properties.theme})}catch(e){console.log(\"could not emit 'theme-updated'\",e)}n(t.properties.theme)}catch(e){r(e)}}))}},{key:\"requestFullscreen\",value:(f=p((function*(){if(ls(),this._iframe&&!document.fullscreenElement&&To())try{(yield this._iframe.requestFullscreen)?this._iframe.requestFullscreen():this._iframe.webkitRequestFullscreen()}catch(e){console.log(\"could not make video call fullscreen\",e)}})),function(){return f.apply(this,arguments)})},{key:\"exitFullscreen\",value:function(){ls(),document.fullscreenElement?document.exitFullscreen():document.webkitFullscreenElement&&document.webkitExitFullscreen()}},{key:\"getSidebarView\",value:(h=p((function*(){var e=this;return this._callObjectMode?(console.error(\"getSidebarView is not available in callObject mode\"),Promise.resolve(null)):new Promise((function(t){e.sendMessageToCallMachine({action:\"get-sidebar-view\"},(function(e){t(e.view)}))}))})),function(){return h.apply(this,arguments)})},{key:\"setSidebarView\",value:function(e){return this._callObjectMode?(console.error(\"setSidebarView is not available in callObject mode\"),this):(this.sendMessageToCallMachine({action:\"set-sidebar-view\",view:e}),this)}},{key:\"room\",value:(u=p((function*(){var e=this,t=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}).includeRoomConfigDefaults,n=void 0===t||t;return this._accessState.access===xr||this.needsLoad()?this.properties.url?{roomUrlPendingJoin:this.properties.url}:null:new Promise((function(t){e.sendMessageToCallMachine({action:\"lib-room-info\",includeRoomConfigDefaults:n},(function(e){delete e.action,delete e.callbackStamp,t(e)}))}))})),function(){return u.apply(this,arguments)})},{key:\"geo\",value:(l=p((function*(){try{var e=yield fetch(\"https://gs.daily.co/_ks_/x-swsl/:\");return{current:(yield e.json()).geo}}catch(e){return console.error(\"geo lookup failed\",e),{current:\"\"}}})),function(){return l.apply(this,arguments)})},{key:\"setNetworkTopology\",value:(s=p((function*(e){var t=this;return ls(),ns(this._callState,\"setNetworkTopology()\"),new Promise((function(n,r){t.sendMessageToCallMachine({action:\"set-network-topology\",opts:e},(function(e){e.error?r({error:e.error}):n({workerId:e.workerId})}))}))})),function(e){return s.apply(this,arguments)})},{key:\"getNetworkTopology\",value:(i=p((function*(){var e=this;return new Promise((function(t,n){e.needsLoad()&&t({topology:\"none\"}),e.sendMessageToCallMachine({action:\"get-network-topology\"},(function(e){e.error?n({error:e.error}):t({topology:e.topology})}))}))})),function(){return i.apply(this,arguments)})},{key:\"setPlayNewParticipantSound\",value:function(e){if(ls(),\"number\"!=typeof e&&!0!==e&&!1!==e)throw new Error(\"argument to setShouldPlayNewParticipantSound should be true, false, or a number, but is \".concat(e));this.sendMessageToCallMachine({action:\"daily-method-set-play-ding\",arg:e})}},{key:\"on\",value:function(e,t){return m.prototype.on.call(this,e,t)}},{key:\"once\",value:function(e,t){return m.prototype.once.call(this,e,t)}},{key:\"off\",value:function(e,t){return m.prototype.off.call(this,e,t)}},{key:\"validateProperties\",value:function(e){for(var t in e){if(!Xa[t])throw new Error(\"unrecognized property '\".concat(t,\"'\"));if(Xa[t].validate&&!Xa[t].validate(e[t],this))throw new Error(\"property '\".concat(t,\"': \").concat(Xa[t].help))}}},{key:\"assembleMeetingUrl\",value:function(){var e,t,n=Ra(Ra({},this.properties),{},{emb:this.callClientId,embHref:encodeURIComponent(window.location.href),proxy:null!==(e=this.properties.dailyConfig)&&void 0!==e&&e.proxyUrl?encodeURIComponent(null===(t=this.properties.dailyConfig)||void 0===t?void 0:t.proxyUrl):void 0}),r=n.url.match(/\\?/)?\"&\":\"?\";return n.url+r+Object.keys(Xa).filter((function(e){return Xa[e].queryString&&void 0!==n[e]})).map((function(e){return\"\".concat(Xa[e].queryString,\"=\").concat(n[e])})).join(\"&\")}},{key:\"needsLoad\",value:function(){return[br,wr,Cr,Mr].includes(this._callState)}},{key:\"sendMessageToCallMachine\",value:function(e,t){if(this._destroyed&&(this._logUseAfterDestroy(),this.strictMode))throw new Error(\"Use after destroy\");this._messageChannel.sendMessageToCallMachine(e,t,this.callClientId,this._iframe)}},{key:\"forwardPackagedMessageToCallMachine\",value:function(e){this._messageChannel.forwardPackagedMessageToCallMachine(e,this._iframe,this.callClientId)}},{key:\"addListenerForPackagedMessagesFromCallMachine\",value:function(e){return this._messageChannel.addListenerForPackagedMessagesFromCallMachine(e,this.callClientId)}},{key:\"removeListenerForPackagedMessagesFromCallMachine\",value:function(e){this._messageChannel.removeListenerForPackagedMessagesFromCallMachine(e)}},{key:\"handleMessageFromCallMachine\",value:function(t){switch(t.action){case ri:this.sendMessageToCallMachine(Ra({action:ii},this.properties));break;case\"call-machine-initialized\":this._callMachineInitialized=!0;var n={action:po,level:\"log\",code:1011,stats:{event:\"bundle load\",time:\"no-op\"===this._bundleLoadTime?0:this._bundleLoadTime,preLoaded:\"no-op\"===this._bundleLoadTime,url:X(this.properties.dailyConfig)}};this.sendMessageToCallMachine(n),this._delayDuplicateInstanceLog&&this._logDuplicateInstanceAttempt();break;case ci:this._loadedCallback&&(this._loadedCallback(),this._loadedCallback=null),this.emitDailyJSEvent(t);break;case hi:var r,i=Ra({},t);delete i.internal,this._maxAppMessageSize=(null===(r=t.internal)||void 0===r?void 0:r._maxAppMessageSize)||so,this._joinedCallback&&(this._joinedCallback(t.participants),this._joinedCallback=null),this.emitDailyJSEvent(i);break;case fi:case gi:if(this._callState===Cr)return;if(t.participant&&t.participant.session_id){var o=t.participant.local?\"local\":t.participant.session_id;if(this._callObjectMode){var a=this._callMachine().store;va(t.participant,a),ma(t.participant,a),_a(t.participant,this._participants[o],a)}try{this.maybeParticipantTracksStopped(this._participants[o],t.participant),this.maybeParticipantTracksStarted(this._participants[o],t.participant),this.maybeEventRecordingStopped(this._participants[o],t.participant),this.maybeEventRecordingStarted(this._participants[o],t.participant)}catch(e){console.error(\"track events error\",e)}this.compareEqualForParticipantUpdateEvent(t.participant,this._participants[o])||(this._participants[o]=Ra({},t.participant),this.toggleParticipantAudioBasedOnNativeAudioFocus(),this.emitDailyJSEvent(t))}break;case vi:if(t.participant&&t.participant.session_id){var s=this._participants[t.participant.session_id];s&&this.maybeParticipantTracksStopped(s,null),delete this._participants[t.participant.session_id],this.emitDailyJSEvent(t)}break;case mi:I(this._participantCounts,t.participantCounts)||(this._participantCounts=t.participantCounts,this.emitDailyJSEvent(t));break;case yi:var c={access:t.access};t.awaitingAccess&&(c.awaitingAccess=t.awaitingAccess),I(this._accessState,c)||(this._accessState=c,this.emitDailyJSEvent(t));break;case _i:if(t.meetingSession){this._meetingSessionSummary=t.meetingSession,this.emitDailyJSEvent(t);var l=Ra(Ra({},t),{},{action:\"meeting-session-updated\"});this.emitDailyJSEvent(l)}break;case ao:var u;this._iframe&&!t.preserveIframe&&(this._iframe.src=\"\"),this._updateCallState(Mr),this.resetMeetingDependentVars(),this._loadedCallback&&(this._loadedCallback(t.errorMsg),this._loadedCallback=null),t.preserveIframe;var d=e(t,Ia);null!=d&&null!==(u=d.error)&&void 0!==u&&u.details&&(d.error.details=JSON.parse(d.error.details)),this._maybeSendToSentry(t),this._joinedCallback&&(this._joinedCallback(null,d),this._joinedCallback=null),this.emitDailyJSEvent(d);break;case pi:this._callState!==Mr&&this._updateCallState(Cr),this.resetMeetingDependentVars(),this._resolveLeave&&(this._resolveLeave(),this._resolveLeave=null),this.emitDailyJSEvent(t);break;case\"selected-devices-updated\":t.devices&&this.emitDailyJSEvent(t);break;case Yi:var h=t.threshold,p=t.quality;h===this._network.threshold&&p===this._network.quality||(this._network.quality=p,this._network.threshold=h,this.emitDailyJSEvent(t));break;case Wi:t&&t.cpuLoadState&&this.emitDailyJSEvent(t);break;case Hi:t&&void 0!==t.faceCounts&&this.emitDailyJSEvent(t);break;case Gi:var f=t.activeSpeaker;this._activeSpeaker.peerId!==f.peerId&&(this._activeSpeaker.peerId=f.peerId,this.emitDailyJSEvent({action:t.action,activeSpeaker:this._activeSpeaker}));break;case\"show-local-video-changed\":if(this._callObjectMode)return;var g=t.show;this._showLocalVideo=g,this.emitDailyJSEvent({action:t.action,show:g});break;case qi:var v=t.enabled;this._activeSpeakerMode!==v&&(this._activeSpeakerMode=v,this.emitDailyJSEvent({action:t.action,enabled:this._activeSpeakerMode}));break;case Si:case ki:case Ei:this._waitingParticipants=t.allWaitingParticipants,this.emitDailyJSEvent({action:t.action,participant:t.participant});break;case ro:I(this._receiveSettings,t.receiveSettings)||(this._receiveSettings=t.receiveSettings,this.emitDailyJSEvent({action:t.action,receiveSettings:t.receiveSettings}));break;case io:if(!I(this._inputSettings,t.inputSettings)){var m=this._getInputSettings();this._inputSettings=t.inputSettings,this._preloadCache.inputSettings={},I(m,this._getInputSettings())||this.emitDailyJSEvent({action:t.action,inputSettings:this._getInputSettings()})}break;case\"send-settings-updated\":I(this._sendSettings,t.sendSettings)||(this._sendSettings=t.sendSettings,this._preloadCache.sendSettings=null,this.emitDailyJSEvent({action:t.action,sendSettings:t.sendSettings}));break;case\"local-audio-level\":this._localAudioLevel=t.audioLevel,this._preloadCache.localAudioLevelObserver=null,this.emitDailyJSEvent(t);break;case\"remote-participants-audio-level\":this._remoteParticipantsAudioLevel=t.participantsAudioLevel,this._preloadCache.remoteParticipantsAudioLevelObserver=null,this.emitDailyJSEvent(t);break;case Bi:var y=t.session_id;this._rmpPlayerState[y]=t.playerState,this.emitDailyJSEvent(t);break;case Ui:delete this._rmpPlayerState[t.session_id],this.emitDailyJSEvent(t);break;case Fi:var _=t.session_id,b=this._rmpPlayerState[_];b&&this.compareEqualForRMPUpdateEvent(b,t.remoteMediaPlayerState)||(this._rmpPlayerState[_]=t.remoteMediaPlayerState,this.emitDailyJSEvent(t));break;case\"custom-button-click\":case\"sidebar-view-changed\":this.emitDailyJSEvent(t);break;case bi:var w=this._meetingSessionState.topology!==(t.meetingSessionState&&t.meetingSessionState.topology);this._meetingSessionState=Es(t.meetingSessionState,this._callObjectMode),(this._callObjectMode||w)&&this.emitDailyJSEvent(t);break;case Vi:this._isScreenSharing=!0,this.emitDailyJSEvent(t);break;case Ji:case $i:this._isScreenSharing=!1,this.emitDailyJSEvent(t);break;case Ai:case Di:case ji:case xi:case Li:case Ti:case Oi:case Pi:case li:case ui:case Ni:case Ri:case zi:case Ii:case Xi:case Zi:case eo:case to:case oo:case no:case\"dialin-ready\":case\"dialin-connected\":case\"dialin-error\":case\"dialin-stopped\":case\"dialin-warning\":case\"dialout-connected\":case\"dialout-answered\":case\"dialout-error\":case\"dialout-stopped\":case\"dialout-warning\":this.emitDailyJSEvent(t);break;case\"request-fullscreen\":this.requestFullscreen();break;case\"request-exit-fullscreen\":this.exitFullscreen()}}},{key:\"maybeEventRecordingStopped\",value:function(e,t){var n=\"record\";e&&(t.local||!1!==t[n]||e[n]===t[n]||this.emitDailyJSEvent({action:Di}))}},{key:\"maybeEventRecordingStarted\",value:function(e,t){var n=\"record\";e&&(t.local||!0!==t[n]||e[n]===t[n]||this.emitDailyJSEvent({action:Ai}))}},{key:\"maybeEventTrackStopped\",value:function(e,t,n,r){e&&(\"ended\"!==e.readyState&&t&&e.id===t.id||this.emitDailyJSEvent({action:Mi,track:e,participant:n,type:r}))}},{key:\"maybeEventTrackStarted\",value:function(e,t,n,r){t&&(e&&\"ended\"!==e.readyState&&t.id===e.id||this.emitDailyJSEvent({action:Ci,track:t,participant:n,type:r}))}},{key:\"maybeParticipantTracksStopped\",value:function(e,t){if(e)for(var n in e.tracks)this.maybeEventTrackStopped(e.tracks[n].track,t&&t.tracks[n]?t.tracks[n].track:null,t,n)}},{key:\"maybeParticipantTracksStarted\",value:function(e,t){if(t)for(var n in t.tracks)this.maybeEventTrackStarted(e&&e.tracks[n]?e.tracks[n].track:null,t.tracks[n].track,t,n)}},{key:\"compareEqualForRMPUpdateEvent\",value:function(e,t){var n,r;return e.state===t.state&&(null===(n=e.settings)||void 0===n?void 0:n.volume)===(null===(r=t.settings)||void 0===r?void 0:r.volume)}},{key:\"emitDailyJSEvent\",value:function(e){try{e.callClientId=this.callClientId,this.emit(e.action,e)}catch(t){console.log(\"could not emit\",e,t)}}},{key:\"compareEqualForParticipantUpdateEvent\",value:function(e,t){return!!I(e,t)&&((!e.videoTrack||!t.videoTrack||e.videoTrack.id===t.videoTrack.id&&e.videoTrack.muted===t.videoTrack.muted&&e.videoTrack.enabled===t.videoTrack.enabled)&&(!e.audioTrack||!t.audioTrack||e.audioTrack.id===t.audioTrack.id&&e.audioTrack.muted===t.audioTrack.muted&&e.audioTrack.enabled===t.audioTrack.enabled))}},{key:\"nativeUtils\",value:function(){return Eo()?\"undefined\"==typeof DailyNativeUtils?(console.warn(\"in React Native, DailyNativeUtils is expected to be available\"),null):DailyNativeUtils:null}},{key:\"updateIsPreparingToJoin\",value:function(e){this._updateCallState(this._callState,e)}},{key:\"_updateCallState\",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this._isPreparingToJoin;if(e!==this._callState||t!==this._isPreparingToJoin){var n=this._callState,r=this._isPreparingToJoin;this._callState=e,this._isPreparingToJoin=t;var i=rs(n,r),o=rs(this._callState,this._isPreparingToJoin);i!==o&&(this.updateKeepDeviceAwake(o),this.updateDeviceAudioMode(o),this.updateShowAndroidOngoingMeetingNotification(o),this.updateNoOpRecordingEnsuringBackgroundContinuity(o))}}},{key:\"resetMeetingDependentVars\",value:function(){this._participants={},this._participantCounts=qa,this._waitingParticipants={},this._activeSpeaker={},this._activeSpeakerMode=!1,this._didPreAuth=!1,this._accessState={access:xr},this._finalSummaryOfPrevSession=this._meetingSessionSummary,this._meetingSessionSummary={},this._meetingSessionState=Es(Ga,this._callObjectMode),this._isScreenSharing=!1,this._receiveSettings={},this._inputSettings=void 0,this._sendSettings={},this._localAudioLevel=0,this._isLocalAudioLevelObserverRunning=!1,this._remoteParticipantsAudioLevel={},this._isRemoteParticipantsAudioLevelObserverRunning=!1,this._maxAppMessageSize=so,this._callMachineInitialized=!1,this._bundleLoadTime=void 0,this._preloadCache}},{key:\"updateKeepDeviceAwake\",value:function(e){Eo()&&this.nativeUtils().setKeepDeviceAwake(e,this.callClientId)}},{key:\"updateDeviceAudioMode\",value:function(e){if(Eo()&&!this.disableReactNativeAutoDeviceManagement(\"audio\")){var t=e?this._nativeInCallAudioMode:\"idle\";this.nativeUtils().setAudioMode(t)}}},{key:\"updateShowAndroidOngoingMeetingNotification\",value:function(e){if(Eo()&&this.nativeUtils().setShowOngoingMeetingNotification){var t,n,r,i;if(this.properties.reactNativeConfig&&this.properties.reactNativeConfig.androidInCallNotification){var o=this.properties.reactNativeConfig.androidInCallNotification;t=o.title,n=o.subtitle,r=o.iconName,i=o.disableForCustomOverride}i&&(e=!1),this.nativeUtils().setShowOngoingMeetingNotification(e,t,n,r,this.callClientId)}}},{key:\"updateNoOpRecordingEnsuringBackgroundContinuity\",value:function(e){Eo()&&this.nativeUtils().enableNoOpRecordingEnsuringBackgroundContinuity&&this.nativeUtils().enableNoOpRecordingEnsuringBackgroundContinuity(e)}},{key:\"toggleParticipantAudioBasedOnNativeAudioFocus\",value:function(){var e,t;if(Eo()){var n=null===(e=this._callMachine())||void 0===e||null===(t=e.store)||void 0===t?void 0:t.getState();for(var r in null==n?void 0:n.streams){var i=n.streams[r];i&&i.pendingTrack&&\"audio\"===i.pendingTrack.kind&&(i.pendingTrack.enabled=this._hasNativeAudioFocus)}}}},{key:\"disableReactNativeAutoDeviceManagement\",value:function(e){return this.properties.reactNativeConfig&&this.properties.reactNativeConfig.disableAutoDeviceManagement&&this.properties.reactNativeConfig.disableAutoDeviceManagement[e]}},{key:\"absoluteUrl\",value:function(e){if(void 0!==e){var t=document.createElement(\"a\");return t.href=e,t.href}}},{key:\"sayHello\",value:function(){var e=\"hello, world.\";return console.log(e),e}},{key:\"_logUseAfterDestroy\",value:function(){var e=Object.values(Va)[0];if(this.needsLoad()){if(e&&!e.needsLoad()){var t={action:po,level:\"error\",code:this.strictMode?9995:9997};e.sendMessageToCallMachine(t)}else if(!this.strictMode){console.error(\"You are are attempting to use a call instance that was previously destroyed, which is unsupported. Please remove `strictMode: false` from your constructor properties to enable strict mode to track down and fix this unsupported usage.\")}}else{var n={action:po,level:\"error\",code:this.strictMode?9995:9997};this._messageChannel.sendMessageToCallMachine(n,null,this.callClientId,this._iframe)}}},{key:\"_logDuplicateInstanceAttempt\",value:function(){for(var e=0,t=Object.values(Va);e<t.length;e++){var n=t[e];n._callMachineInitialized?(n.sendMessageToCallMachine({action:po,level:\"warn\",code:this.allowMultipleCallInstances?9993:9992}),n._delayDuplicateInstanceLog=!1):n._delayDuplicateInstanceLog=!0}}},{key:\"_maybeSendToSentry\",value:function(e){var t,n,r,i,o,a;if(null!==(t=e.error)&&void 0!==t&&t.type){if(![\"connection-error\",\"end-of-life\",\"no-room\"].includes(e.error.type))return}var s=null!==(n=this.properties)&&void 0!==n&&n.url?new URL(this.properties.url):void 0,c=\"production\";s&&s.host.includes(\".staging.daily\")&&(c=\"staging\");var l,u,d,h,p,f=new Hn({dsn:\"https://f10f1c81e5d44a4098416c0867a8b740@o77906.ingest.sentry.io/168844\",transport:Kn,integrations:[new _r.GlobalHandlers({onunhandledrejection:!1}),new _r.HttpContext],environment:c}),g=new tn(f,void 0,te.version());if(this.session_id&&g.setExtra(\"sessionId\",this.session_id),this.properties){var v=Ra({},this.properties);v.userName=v.userName?\"[Filtered]\":void 0,v.userData=v.userData?\"[Filtered]\":void 0,v.token=v.token?\"[Filtered]\":void 0,g.setExtra(\"properties\",v)}if(s){var m=s.searchParams.get(\"domain\");if(!m){var y=s.host.match(/(.*?)\\./);m=y&&y[1]||\"\"}m&&g.setTag(\"domain\",m)}e.error&&(g.setTag(\"fatalErrorType\",e.error.type),g.setExtra(\"errorDetails\",e.error.details),(null===(l=e.error.details)||void 0===l?void 0:l.uri)&&g.setTag(\"serverAddress\",e.error.details.uri),(null===(u=e.error.details)||void 0===u?void 0:u.workerGroup)&&g.setTag(\"workerGroup\",e.error.details.workerGroup),(null===(d=e.error.details)||void 0===d?void 0:d.geoGroup)&&g.setTag(\"geoGroup\",e.error.details.geoGroup),(null===(h=e.error.details)||void 0===h?void 0:h.on)&&g.setTag(\"connectionAttempt\",e.error.details.on),null!==(p=e.error.details)&&void 0!==p&&p.bundleUrl&&(g.setTag(\"bundleUrl\",e.error.details.bundleUrl),g.setTag(\"bundleError\",e.error.details.sourceError.type)));g.setTags({callMode:this._callObjectMode?Eo()?\"reactNative\":null!==(r=this.properties)&&void 0!==r&&null!==(i=r.dailyConfig)&&void 0!==i&&null!==(o=i.callMode)&&void 0!==o&&o.includes(\"prebuilt\")?this.properties.dailyConfig.callMode:\"custom\":\"prebuilt-frame\",version:te.version()});var _=(null===(a=e.error)||void 0===a?void 0:a.msg)||e.errorMsg;g.run((function(e){e.captureException(new Error(_))}))}},{key:\"_callMachine\",value:function(){var e,t,n;return null===(e=window._daily)||void 0===e||null===(t=e.instances)||void 0===t||null===(n=t[this.callClientId])||void 0===n?void 0:n.callMachine}}],[{key:\"supportedBrowser\",value:function(){if(Eo())return{supported:!0,mobile:!0,name:\"React Native\",version:null,supportsScreenShare:!0,supportsSfu:!0,supportsVideoProcessing:!1,supportsAudioProcessing:!1};var e=W.getParser(ko());return{supported:!!jo(),mobile:\"mobile\"===e.getPlatformType(),name:e.getBrowserName(),version:e.getBrowserVersion(),supportsFullscreen:!!To(),supportsScreenShare:!!Mo(),supportsSfu:!!jo(),supportsVideoProcessing:Po(),supportsAudioProcessing:Do()}}},{key:\"version\",value:function(){return\"0.70.0\"}},{key:\"createCallObject\",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return e.layout=\"none\",new te(null,e)}},{key:\"wrap\",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(ls(),!e||!e.contentWindow||\"string\"!=typeof e.src)throw new Error(\"DailyIframe::Wrap needs an iframe-like first argument\");return t.layout||(t.customLayout?t.layout=\"custom-v1\":t.layout=\"browser\"),new te(e,t)}},{key:\"createFrame\",value:function(e,t){var n,r;ls(),e&&t?(n=e,r=t):e&&e.append?(n=e,r={}):(n=document.body,r=e||{});var i=r.iframeStyle;i||(i=n===document.body?{position:\"fixed\",border:\"1px solid black\",backgroundColor:\"white\",width:\"375px\",height:\"450px\",right:\"1em\",bottom:\"1em\"}:{border:0,width:\"100%\",height:\"100%\"});var o=document.createElement(\"iframe\");window.navigator&&window.navigator.userAgent.match(/Chrome\\/61\\./)?o.allow=\"microphone, camera\":o.allow=\"microphone; camera; autoplay; display-capture; screen-wake-lock\",o.style.visibility=\"hidden\",n.appendChild(o),o.style.visibility=null,Object.keys(i).forEach((function(e){return o.style[e]=i[e]})),r.layout||(r.customLayout?r.layout=\"custom-v1\":r.layout=\"browser\");try{return new te(o,r)}catch(e){throw n.removeChild(o),e}}},{key:\"createTransparentFrame\",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};ls();var t=document.createElement(\"iframe\");return t.allow=\"microphone; camera; autoplay\",t.style.cssText=\"\\n      position: fixed;\\n      top: 0;\\n      left: 0;\\n      width: 100%;\\n      height: 100%;\\n      border: 0;\\n      pointer-events: none;\\n    \",document.body.appendChild(t),e.layout||(e.layout=\"custom-v1\"),te.wrap(t,e)}},{key:\"getCallInstance\",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:void 0;return e?Va[e]:Object.values(Va)[0]}}]),te}();function ts(e,t){var n={};for(var r in e)if(e[r]instanceof MediaStreamTrack)n[r]=fo;else if(\"dailyConfig\"===r){if(e[r].modifyLocalSdpHook){var i=window._daily.instances[t].customCallbacks||{};i.modifyLocalSdpHook=e[r].modifyLocalSdpHook,window._daily.instances[t].customCallbacks=i,delete e[r].modifyLocalSdpHook}if(e[r].modifyRemoteSdpHook){var o=window._daily.instances[t].customCallbacks||{};o.modifyRemoteSdpHook=e[r].modifyRemoteSdpHook,window._daily.instances[t].customCallbacks=o,delete e[r].modifyRemoteSdpHook}n[r]=e[r]}else n[r]=e[r];return n}function ns(e){var t=arguments.length>2?arguments[2]:void 0;if(e!==Er){var n=\"\".concat(arguments.length>1&&void 0!==arguments[1]?arguments[1]:\"This daily-js method\",\" only supported after join.\");throw t&&(n+=\" \".concat(t)),console.error(n),new Error(n)}}function rs(e,t){return[kr,Er].includes(e)||t}function is(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:\"This daily-js method\",r=arguments.length>3?arguments[3]:void 0;if(rs(e,t)){var i=\"\".concat(n,\" not supported after joining a meeting.\");throw r&&(i+=\" \".concat(r)),console.error(i),new Error(i)}}function os(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:\"This daily-js method\",n=arguments.length>2?arguments[2]:void 0;if(!e){var r=\"\".concat(t,arguments.length>3&&void 0!==arguments[3]&&arguments[3]?\" requires preAuth() or startCamera() to initialize call state.\":\" requires preAuth(), startCamera(), or join() to initialize call state.\");throw n&&(r+=\" \".concat(n)),console.error(r),new Error(r)}}function as(e){if(e){var t=\"A pre-call quality test is in progress. Please try \".concat(arguments.length>1&&void 0!==arguments[1]?arguments[1]:\"This daily-js method\",\" again once testing has completed. Use stopTestCallQuality() to end it early.\");throw console.error(t),new Error(t)}}function ss(e){if(!e){var t=\"\".concat(arguments.length>1&&void 0!==arguments[1]?arguments[1]:\"This daily-js method\",\" is only supported on custom callObject instances\");throw console.error(t),new Error(t)}}function cs(e){if(e){var t=\"\".concat(arguments.length>1&&void 0!==arguments[1]?arguments[1]:\"This daily-js method\",\" is only supported as part of Daily's Prebuilt\");throw console.error(t),new Error(t)}}function ls(){if(Eo())throw new Error(\"This daily-js method is not currently supported in React Native\")}function us(){if(!Eo())throw new Error(\"This daily-js method is only supported in React Native\")}function ds(e){if(void 0===e)return!0;var t;if(\"string\"==typeof e)t=e;else try{t=JSON.stringify(e),I(JSON.parse(t),e)||console.warn(\"The userData provided will be modified when serialized.\")}catch(e){throw Error(\"userData must be serializable to JSON: \".concat(e))}if(t.length>4096)throw Error(\"userData is too large (\".concat(t.length,\" characters). Maximum size suppported is \").concat(4096,\".\"));return!0}function hs(e,t){for(var n=t.allowAllParticipantsKey,r=function(e){var t=[\"local\"];return n||t.push(\"*\"),e&&!t.includes(e)},i=function(e){return!!(void 0===e.layer||Number.isInteger(e.layer)&&e.layer>=0||\"inherit\"===e.layer)},o=function(e){return!!e&&(!(e.video&&!i(e.video))&&!(e.screenVideo&&!i(e.screenVideo)))},a=0,s=Object.entries(e);a<s.length;a++){var c=g(s[a],2),l=c[0],u=c[1];if(!r(l)||!o(u))return!1}return!0}function ps(e){return\"object\"===n(e)&&(!(e.video&&(\"object\"!==n(e.video)||!function(e){var t=[\"type\",\"config\"];if(!e)return!1;if(\"object\"!==n(e))return!1;if(!function(e){if(\"string\"!=typeof e)return!1;if(!Object.values(go).includes(e))return console.error(\"inputSettings video processor type invalid\"),!1;return!0}(e.type))return!1;if(e.config){if(\"object\"!==n(e.config))return!1;if(!function(e,t){var n=Object.keys(t);if(0===n.length)return!0;var r=\"invalid object in inputSettings -> video -> processor -> config\";switch(e){case go.BGBLUR:return n.length>1||\"strength\"!==n[0]?(console.error(r),!1):!(\"number\"!=typeof t.strength||t.strength<=0||t.strength>1||isNaN(t.strength))||(console.error(\"\".concat(r,\"; expected: {0 < strength <= 1}, got: \").concat(t.strength)),!1);case go.BGIMAGE:return!(void 0!==t.source&&!function(e){if(\"default\"===e.source)return e.type=\"default\",!0;if(e.source instanceof ArrayBuffer)return!0;if(Z(e.source))return e.type=\"url\",!!function(e){var t=new URL(e),n=t.pathname;if(\"data:\"===t.protocol)try{var r=n.substring(n.indexOf(\":\")+1,n.indexOf(\";\")).split(\"/\")[1];return _o.includes(r)}catch(e){return console.error(\"failed to deduce blob content type\",e),!1}var i=n.split(\".\").at(-1).toLowerCase().trim();return _o.includes(i)}(e.source)||(console.error(\"invalid image type; supported types: [\".concat(_o.join(\", \"),\"]\")),!1);return t=e.source,n=Number(t),isNaN(n)||!Number.isInteger(n)||n<=0||n>yo?(console.error(\"invalid image selection; must be an int, > 0, <= \".concat(yo)),!1):(e.type=\"daily-preselect\",!0);var t,n}(t));default:return!0}}(e.type,e.config))return!1}return Object.keys(e).filter((function(e){return!t.includes(e)})).forEach((function(t){console.warn(\"invalid key inputSettings -> video -> processor : \".concat(t)),delete e[t]})),!0}(e.video.processor)))&&!(e.audio&&(\"object\"!==n(e.audio)||(r=e.audio.processor,i=[\"type\"],!r||\"object\"!==n(r)||(Object.keys(r).filter((function(e){return!i.includes(e)})).forEach((function(e){console.warn(\"invalid key inputSettings -> audio -> processor : \".concat(e)),delete r[e]})),t=r.type,\"string\"!=typeof t||!Object.values(vo).includes(t)&&(console.error(\"inputSettings audio processor type invalid\"),1))))));var t,r,i}function fs(e,t){var n,r=[];e.video&&!Po(null!==(n=null==t?void 0:t.useLegacyVideoProcessor)&&void 0!==n&&n)&&(delete e.video,r.push(\"video\")),e.audio&&!Do()&&(delete e.audio,r.push(\"audio\")),r.length>0&&console.error(\"Ignoring settings for browser- or platform-unsupported input processor(s): \".concat(r.join(\", \")))}function gs(){var e=Object.values(go).join(\" | \"),t=Object.values(vo).join(\" | \");return\"inputSettings must be of the form: { video?: { processor: { type: [ \".concat(e,\" ], config?: {} } }, audio?: { processor: {type: [ \").concat(t,\" ] } } }\")}function vs(e){var t=e.allowAllParticipantsKey;return\"receiveSettings must be of the form { [<remote participant id> | \".concat(Rr).concat(t?' | \"'.concat(Br,'\"'):\"\",\"]: \")+'{ [video: [{ layer: [<non-negative integer> | \"inherit\"] } | \"inherit\"]], [screenVideo: [{ layer: [<non-negative integer> | \"inherit\"] } | \"inherit\"]] }}}'}function ms(){return\"customIntegrations should be an object of type \".concat(JSON.stringify(Ka),\".\")}function ys(e){if(e&&\"object\"!==n(e)||Array.isArray(e))return console.error(\"customTrayButtons should be an Object of the type \".concat(JSON.stringify(Qa),\".\")),!1;if(e)for(var t=0,r=Object.entries(e);t<r.length;t++)for(var i=g(r[t],1)[0],o=0,a=Object.entries(e[i]);o<a.length;o++){var s=g(a[o],2),c=s[0],l=s[1];if(\"iconPath\"===c&&!Z(l))return console.error(\"customTrayButton \".concat(c,\" should be a url.\")),!1;if(\"iconPathDarkMode\"===c&&!Z(l))return console.error(\"customTrayButton \".concat(c,\" should be a url.\")),!1;var u=Qa.id[c];if(!u)return console.error(\"customTrayButton does not support key \".concat(c)),!1;if(n(l)!==u)return console.error(\"customTrayButton \".concat(c,\" should be a \").concat(u,\".\")),!1}return!0}function _s(e){if(!e||e&&\"object\"!==n(e)||Array.isArray(e))return console.error(ms()),!1;for(var t=function(e){return\"\".concat(e,\" should be \").concat(Ka.id[e])},r=function(e,t){return console.error(\"customIntegration \".concat(e,\": \").concat(t))},i=0,o=Object.entries(e);i<o.length;i++){var a=g(o[i],1)[0];if(!(\"label\"in e[a]))return r(a,\"label is required\"),!1;if(!(\"location\"in e[a]))return r(a,\"location is required\"),!1;if(!(\"src\"in e[a])&&!(\"srcdoc\"in e[a]))return r(a,\"src or srcdoc is required\"),!1;for(var s=0,c=Object.entries(e[a]);s<c.length;s++){var l=g(c[s],2),u=l[0],d=l[1];switch(u){case\"allow\":case\"csp\":case\"name\":case\"referrerPolicy\":case\"sandbox\":if(\"string\"!=typeof d)return r(a,t(u)),!1;break;case\"iconURL\":if(!Z(d))return r(a,\"\".concat(u,\" should be a url\")),!1;break;case\"src\":if(\"srcdoc\"in e[a])return r(a,\"cannot have both src and srcdoc\"),!1;if(!Z(d))return r(a,'src \"'.concat(d,'\" is not a valid URL')),!1;break;case\"srcdoc\":if(\"src\"in e[a])return r(a,\"cannot have both src and srcdoc\"),!1;if(\"string\"!=typeof d)return r(a,t(u)),!1;break;case\"location\":if(![\"main\",\"sidebar\"].includes(d))return r(a,t(u)),!1;break;case\"controlledBy\":if(\"*\"!==d&&\"owners\"!==d&&(!Array.isArray(d)||d.some((function(e){return\"string\"!=typeof e}))))return r(a,t(u)),!1;break;case\"shared\":if((!Array.isArray(d)||d.some((function(e){return\"string\"!=typeof e})))&&\"owners\"!==d&&\"boolean\"!=typeof d)return r(a,t(u)),!1;break;default:if(!Ka.id[u])return console.error(\"customIntegration does not support key \".concat(u)),!1}}}return!0}function bs(e,t){if(void 0===t)return!1;switch(n(t)){case\"string\":return n(e)===t;case\"object\":if(\"object\"!==n(e))return!1;for(var r in e)if(!bs(e[r],t[r]))return!1;return!0;default:return!1}}function ws(e,t){var n=e.sessionId,r=e.toEndPoint,i=e.useSipRefer;if(!n||!r)throw new Error(\"\".concat(t,\"() requires a sessionId and toEndPoint\"));if(\"string\"!=typeof n||\"string\"!=typeof r)throw new Error(\"Invalid paramater: sessionId and toEndPoint must be of type string\");if(i&&!r.startsWith(\"sip:\"))throw new Error('\"toEndPoint\" must be a \"sip\" address');if(!r.startsWith(\"sip:\")&&!r.startsWith(\"+\"))throw new Error(\"toEndPoint: \".concat(r,' must starts with either \"sip:\" or \"+\"'))}function Ss(e){if(\"object\"!==n(e))throw new Error('RemoteMediaPlayerSettings: must be \"object\" type');if(e.state&&!Object.values(mo).includes(e.state))throw new Error(\"Invalid value for RemoteMediaPlayerSettings.state, valid values are: \"+JSON.stringify(mo));if(e.volume){if(\"number\"!=typeof e.volume)throw new Error('RemoteMediaPlayerSettings.volume: must be \"number\" type');if(e.volume<0||e.volume>2)throw new Error(\"RemoteMediaPlayerSettings.volume: must be between 0.0 - 2.0\")}}function ks(e,t,n){return!(\"number\"!=typeof e||e<t||e>n)}function Es(e,t){return e&&!t&&delete e.data,e}export{Lr as DAILY_ACCESS_LEVEL_FULL,Ir as DAILY_ACCESS_LEVEL_LOBBY,Nr as DAILY_ACCESS_LEVEL_NONE,xr as DAILY_ACCESS_UNKNOWN,Kr as DAILY_CAMERA_ERROR_CAM_AND_MIC_IN_USE,Hr as DAILY_CAMERA_ERROR_CAM_IN_USE,ti as DAILY_CAMERA_ERROR_CONSTRAINTS,Qr as DAILY_CAMERA_ERROR_MIC_IN_USE,ei as DAILY_CAMERA_ERROR_NOT_FOUND,Xr as DAILY_CAMERA_ERROR_PERMISSIONS,Zr as DAILY_CAMERA_ERROR_UNDEF_MEDIADEVICES,ni as DAILY_CAMERA_ERROR_UNKNOWN,yi as DAILY_EVENT_ACCESS_STATE_UPDATED,Gi as DAILY_EVENT_ACTIVE_SPEAKER_CHANGE,qi as DAILY_EVENT_ACTIVE_SPEAKER_MODE_CHANGE,Ni as DAILY_EVENT_APP_MSG,ui as DAILY_EVENT_CAMERA_ERROR,Wi as DAILY_EVENT_CPU_LOAD_CHANGE,ao as DAILY_EVENT_ERROR,Ki as DAILY_EVENT_EXIT_FULLSCREEN,Hi as DAILY_EVENT_FACE_COUNTS_UPDATED,Qi as DAILY_EVENT_FULLSCREEN,ii as DAILY_EVENT_IFRAME_LAUNCH_CONFIG,ri as DAILY_EVENT_IFRAME_READY_FOR_LAUNCH_CONFIG,io as DAILY_EVENT_INPUT_SETTINGS_UPDATED,hi as DAILY_EVENT_JOINED_MEETING,di as DAILY_EVENT_JOINING_MEETING,no as DAILY_EVENT_LANG_UPDATED,pi as DAILY_EVENT_LEFT_MEETING,to as DAILY_EVENT_LIVE_STREAMING_ERROR,Xi as DAILY_EVENT_LIVE_STREAMING_STARTED,eo as DAILY_EVENT_LIVE_STREAMING_STOPPED,Zi as DAILY_EVENT_LIVE_STREAMING_UPDATED,ci as DAILY_EVENT_LOADED,ai as DAILY_EVENT_LOADING,si as DAILY_EVENT_LOAD_ATTEMPT_FAILED,$i as DAILY_EVENT_LOCAL_SCREEN_SHARE_CANCELED,Vi as DAILY_EVENT_LOCAL_SCREEN_SHARE_STARTED,Ji as DAILY_EVENT_LOCAL_SCREEN_SHARE_STOPPED,wi as DAILY_EVENT_MEETING_SESSION_DATA_ERROR,bi as DAILY_EVENT_MEETING_SESSION_STATE_UPDATED,_i as DAILY_EVENT_MEETING_SESSION_SUMMARY_UPDATED,zi as DAILY_EVENT_NETWORK_CONNECTION,Yi as DAILY_EVENT_NETWORK_QUALITY_CHANGE,oo as DAILY_EVENT_NONFATAL_ERROR,mi as DAILY_EVENT_PARTICIPANT_COUNTS_UPDATED,fi as DAILY_EVENT_PARTICIPANT_JOINED,vi as DAILY_EVENT_PARTICIPANT_LEFT,gi as DAILY_EVENT_PARTICIPANT_UPDATED,ro as DAILY_EVENT_RECEIVE_SETTINGS_UPDATED,Ii as DAILY_EVENT_RECORDING_DATA,xi as DAILY_EVENT_RECORDING_ERROR,Ai as DAILY_EVENT_RECORDING_STARTED,ji as DAILY_EVENT_RECORDING_STATS,Di as DAILY_EVENT_RECORDING_STOPPED,Li as DAILY_EVENT_RECORDING_UPLOAD_COMPLETED,Bi as DAILY_EVENT_REMOTE_MEDIA_PLAYER_STARTED,Ui as DAILY_EVENT_REMOTE_MEDIA_PLAYER_STOPPED,Fi as DAILY_EVENT_REMOTE_MEDIA_PLAYER_UPDATED,li as DAILY_EVENT_STARTED_CAMERA,oi as DAILY_EVENT_THEME_UPDATED,Ci as DAILY_EVENT_TRACK_STARTED,Mi as DAILY_EVENT_TRACK_STOPPED,Pi as DAILY_EVENT_TRANSCRIPTION_ERROR,Ri as DAILY_EVENT_TRANSCRIPTION_MSG,Ti as DAILY_EVENT_TRANSCRIPTION_STARTED,Oi as DAILY_EVENT_TRANSCRIPTION_STOPPED,Si as DAILY_EVENT_WAITING_PARTICIPANT_ADDED,Ei as DAILY_EVENT_WAITING_PARTICIPANT_REMOVED,ki as DAILY_EVENT_WAITING_PARTICIPANT_UPDATED,Wr as DAILY_FATAL_ERROR_CONNECTION,Fr as DAILY_FATAL_ERROR_EJECTED,Yr as DAILY_FATAL_ERROR_EOL,Jr as DAILY_FATAL_ERROR_EXP_ROOM,$r as DAILY_FATAL_ERROR_EXP_TOKEN,qr as DAILY_FATAL_ERROR_MEETING_FULL,Ur as DAILY_FATAL_ERROR_NBF_ROOM,Vr as DAILY_FATAL_ERROR_NBF_TOKEN,zr as DAILY_FATAL_ERROR_NOT_ALLOWED,Gr as DAILY_FATAL_ERROR_NO_ROOM,Br as DAILY_RECEIVE_SETTINGS_ALL_PARTICIPANTS_KEY,Rr as DAILY_RECEIVE_SETTINGS_BASE_KEY,Mr as DAILY_STATE_ERROR,Er as DAILY_STATE_JOINED,kr as DAILY_STATE_JOINING,Cr as DAILY_STATE_LEFT,br as DAILY_STATE_NEW,Tr as DAILY_TRACK_STATE_BLOCKED,Dr as DAILY_TRACK_STATE_INTERRUPTED,Ar as DAILY_TRACK_STATE_LOADING,Or as DAILY_TRACK_STATE_OFF,jr as DAILY_TRACK_STATE_PLAYABLE,Pr as DAILY_TRACK_STATE_SENDABLE,es as default};\n", "import { Controller } from \"@hotwired/stimulus\";\r\nimport { loading } from '../utils/_loading';\r\n\r\nexport default class extends Controller {\r\n  static targets = [\r\n    'dates',\r\n    'label',\r\n    'stepOneForm',\r\n    'stepTwoForm',\r\n    'emptyState',\r\n    'formDetails',\r\n    'timeSlot',\r\n    'product',\r\n    'noSlots'\r\n  ];\r\n  static values  = { calendarUrl: String, merchant: String, slug: String }\r\n\r\n  connect() {}\r\n\r\n  filterSlotsFor(timeOfDay) {\r\n    const slotMapping = {\r\n      'morning':    [0,1,2,3,4,5,6,7,8,9,10,11],\r\n      'afternoon':  [12,13,14,15,16,17],\r\n      'evening':    [18,19,20,21,22,23]\r\n    }\r\n\r\n    this.timeSlotTargets.forEach((ts, index) => {\r\n      if (!slotMapping[timeOfDay].includes(parseInt(ts.dataset.timeSlot))) {\r\n        ts.classList.add('d-none');\r\n      } else {\r\n        ts.classList.remove('d-none');\r\n      }\r\n    })\r\n\r\n    const visible = this.timeSlotTargets.filter(ts => !ts.classList.contains('d-none'));\r\n\r\n    if (visible[0]) {\r\n      visible[0].querySelector('input').checked = true;\r\n    } else {\r\n      this.noSlotsTarget.classList.remove('d-none');\r\n    }\r\n\r\n  }\r\n\r\n  filterSlots(e) {\r\n    this.noSlotsTarget.classList.add('d-none');\r\n    this.filterSlotsFor(e.target.htmlFor);\r\n  }\r\n\r\n  selectedProduct() {\r\n    return this.productTargets.find(x => {\r\n      return x.querySelector('input:checked');\r\n    });\r\n  }\r\n\r\n  resetAvailability() {\r\n    this.formDetailsTarget.classList.add('d-none');\r\n    this.emptyStateTarget.classList.remove('d-none');\r\n  }\r\n}\r\n", "import { Controller } from \"@hotwired/stimulus\";\r\nimport { loading } from '../utils/_loading';\r\n\r\nexport default class extends Controller {\r\n  static targets = [\r\n    'dates',\r\n    'label',\r\n    'emptyState',\r\n    'formDetails',\r\n    'timeSlot',\r\n    'product',\r\n    'noSlots'\r\n  ];\r\n\r\n  static values  = {\r\n    calendarUrl: String,\r\n    merchant:    String,\r\n    slug:        String\r\n  }\r\n\r\n  SELECTED_COLOUR = '#ececf9';\r\n  INITIAL_COLOUR  = '#f8f9fa';\r\n\r\n  selectDirection(e) {\r\n    e.preventDefault();\r\n    const initialDatesHeight = this.datesTarget.clientHeight;\r\n\r\n    this.datesTarget.innerHTML = loading('Getting dates');\r\n    this.datesTarget.classList.add('p-4', 'justify-content-center', 'd-flex');\r\n    this.datesTarget.style.height = `${initialDatesHeight}px`;\r\n\r\n    const direction = e.target.dataset.direction;\r\n\r\n    let form               = new FormData();\r\n    const csrfTokenMetaTag = document.querySelector('meta[name=\"csrf-token\"]')\r\n    const csrfToken        = csrfTokenMetaTag ? csrfTokenMetaTag.getAttribute('content') : null;\r\n    const urlParams        = new URLSearchParams(window.location.search);\r\n\r\n    form.append('calendar', JSON.stringify({\r\n      direction: direction,\r\n      merchant: this.merchantValue,\r\n      merchant_id: this.selectedMerchantId(),\r\n      slug:     this.slugValue,\r\n      current_selections: {\r\n        month: urlParams.get('month') || (new Date().getMonth() + 1),\r\n        year:  urlParams.get('year')  || new Date().getFullYear()\r\n      }\r\n    }));\r\n\r\n    fetch(this.calendarUrlValue, {\r\n      method: \"POST\",\r\n      body: form,\r\n      headers: {\r\n        'X-CSRF-Token': csrfToken\r\n      },\r\n      credentials: 'include'\r\n    })\r\n    .then(response => response.json())\r\n    .then(result => {\r\n      history.pushState(null, '', result.data.new_url.toString());\r\n      this.datesTarget.classList.remove('p-4', 'justify-content-center', 'd-flex');\r\n\r\n      this.labelTarget.innerHTML    = result.data.label\r\n      this.datesTarget.innerHTML    = result.data.html;\r\n      this.datesTarget.style.height = 'initial';\r\n    })\r\n  }\r\n\r\n  selectDate(e) {\r\n    e.preventDefault();\r\n    // Shouldnt have to do this, but doing it for now\r\n    e.target.querySelector('input').checked = true;\r\n\r\n    Array.from(document.querySelectorAll('.wui-calendar__date--active')).forEach((dt) => { dt.style.backgroundColor = this.INITIAL_COLOUR; });\r\n    e.target.style.backgroundColor = this.SELECTED_COLOUR;\r\n\r\n    const dateId                        = e.target.dataset.id;\r\n    const initialDatesHeight            = document.querySelector('.wui-calendar').clientHeight;\r\n    this.formDetailsTarget.style.height = `${initialDatesHeight}px`;\r\n    this.formDetailsTarget.innerHTML    = loading('Fetching details');\r\n\r\n    this.formDetailsTarget.classList.remove('d-none');\r\n    this.emptyStateTarget.classList.add('d-none');\r\n\r\n    let form               = new FormData();\r\n    const csrfTokenMetaTag = document.querySelector('meta[name=\"csrf-token\"]')\r\n    const csrfToken        = csrfTokenMetaTag ? csrfTokenMetaTag.getAttribute('content') : null;\r\n\r\n    form.append('availability', JSON.stringify({\r\n      date_id:  dateId,\r\n      merchant: this.merchantValue,\r\n      slug:     this.slugValue,\r\n      service_duration: this.selectedProduct().dataset.duration,\r\n      merchant_id: this.selectedMerchantId()\r\n    }));\r\n\r\n    fetch('/bookings/availability', {\r\n      method: \"POST\",\r\n      body: form,\r\n      headers: {\r\n        'X-CSRF-Token': csrfToken\r\n      },\r\n      credentials: 'include'\r\n    })\r\n    .then(response => response.json())\r\n    .then(result => {\r\n      this.formDetailsTarget.style.height = 'initial';\r\n      this.formDetailsTarget.style.minHeight = `${initialDatesHeight}px`;\r\n      this.formDetailsTarget.innerHTML = result.data.html;\r\n      this.filterSlotsFor('morning');\r\n\r\n      this.scrollToNext();\r\n    })\r\n  }\r\n\r\n  scrollToNext() {\r\n    const slotsSelectionDiv = document.querySelector('[data-target=\"bookings.stepTwoForm\"]');\r\n    if (!slotsSelectionDiv) {\r\n      return;\r\n    }\r\n\r\n    const rect        = slotsSelectionDiv.getBoundingClientRect();\r\n    const scrollTop   = window.pageYOffset || document.documentElement.scrollTop;\r\n    const scrollLeft  = window.pageXOffset || document.documentElement.scrollLeft;\r\n\r\n\r\n    const position = {\r\n      top:  rect.top + scrollTop,\r\n      left: rect.left + scrollLeft\r\n    };\r\n\r\n    window.scrollTo({\r\n      top:  position.top,\r\n      left: position.left,\r\n      behavior: 'smooth'\r\n    });\r\n  }\r\n\r\n  filterSlotsFor(timeOfDay) {\r\n    const slotMapping = {\r\n      'morning':    [0,1,2,3,4,5,6,7,8,9,10,11],\r\n      'afternoon':  [12,13,14,15,16,17],\r\n      'evening':    [18,19,20,21,22,23]\r\n    }\r\n\r\n    this.timeSlotTargets.forEach((ts, index) => {\r\n      if (!slotMapping[timeOfDay].includes(parseInt(ts.dataset.timeSlot))) {\r\n        ts.classList.add('d-none');\r\n      } else {\r\n        ts.classList.remove('d-none');\r\n      }\r\n    })\r\n\r\n    const visible = this.timeSlotTargets.filter(ts => !ts.classList.contains('d-none'));\r\n\r\n    if (visible[0]) {\r\n      visible[0].querySelector('input').checked = true;\r\n    } else {\r\n      this.noSlotsTarget.classList.remove('d-none');\r\n    }\r\n\r\n  }\r\n\r\n  filterSlots(e) {\r\n    this.noSlotsTarget.classList.add('d-none');\r\n    this.filterSlotsFor(e.target.htmlFor);\r\n  }\r\n\r\n  selectedProduct() {\r\n    return this.productTargets.find(x => {\r\n      return x.querySelector('input:checked');\r\n    });\r\n  }\r\n\r\n  resetAvailability() {\r\n    if (this.selectedDate()) {\r\n      const dateInput     = this.selectedDate();\r\n      dateInput.checked   = false;\r\n\r\n      dateInput.parentElement.style.backgroundColor = '#f8f9fa';\r\n    }\r\n\r\n    this.formDetailsTarget.classList.add('d-none');\r\n    this.emptyStateTarget.classList.remove('d-none');\r\n  }\r\n\r\n  selectedDate() {\r\n    const dates = document.querySelectorAll('[data-date-item]');\r\n\r\n    return Array.from(dates).find(x => {\r\n      return x.checked;\r\n    });\r\n  }\r\n\r\n  selectedMerchantId() {\r\n    return document.querySelector('select#merchant_id').querySelector('option[selected=\"selected\"]').value;\r\n  }\r\n}\r\n", "import { Controller } from \"@hotwired/stimulus\";\nimport Rails from '@rails/ujs';\n\nexport default class extends Controller {\n  static targets = [\n    'autoRedeemFields',\n    'autoRedeemCheckbox',\n    'infiniteCheckbox',\n    'expiryDate',\n    'splitCheckbox',\n    'splitCount',\n    'usageLimit',\n    'generateButton',\n    'autoRedeemButton',\n    'autoRedeemModal',\n    'currentTotal',\n    'fullTotal',\n    'actionsWithoutCurrentAmount',\n    'actionsWithCurrentAmount',\n    'valuesWithoutCurrentAmount',\n    'valuesWithCurrentAmount',\n    'notice',\n    'errorNotice'\n  ];\n\n  initialize() {\n    this.toggleInfiniteUsage(this.infiniteCheckboxTarget.checked);\n    this.toggleCounts(this.splitCheckboxTarget.checked);\n    this.toggleAutoRedeem(this.autoRedeemCheckboxTarget.checked);\n  }\n\n  connect() {\n    this.autoRedeemModalTarget.addEventListener('show.bs.modal', event => {\n      // ========= Reset Everything\n      this.actionsWithoutCurrentAmountTargets.forEach(i => i.classList.add('d-none'));\n      this.actionsWithCurrentAmountTargets.forEach(i => i.classList.remove('d-none'));\n\n      this.valuesWithoutCurrentAmountTargets.forEach(i => i.classList.add('d-none'));\n      this.valuesWithCurrentAmountTargets.forEach(i => i.classList.remove('d-none'));\n\n      this.noticeTarget.classList.remove('d-none');\n      this.errorNoticeTarget.classList.add('d-none');\n      // =========\n\n      const form        = event.target.closest('form');\n      const formData    = new FormData(form);\n\n      Rails.ajax({\n        type:     'post',\n        dataType: 'json',\n        url:      '/points_calculator',\n        data:     formData,\n        success: (response) => {\n          const current_total_text = `${response.data.current_points}`;\n          const full_total_text    = `${response.data.total_points}`;\n\n          if (response.data.show_total_only) {\n            this.actionsWithoutCurrentAmountTargets.forEach(i => i.classList.remove('d-none'));\n            this.actionsWithCurrentAmountTargets.forEach(i => i.classList.add('d-none'));\n\n            this.valuesWithoutCurrentAmountTargets.forEach(i => i.classList.remove('d-none'));\n            this.valuesWithCurrentAmountTargets.forEach(i => i.classList.add('d-none'));\n          }\n\n          this.currentTotalTargets.forEach(i => i.innerHTML = current_total_text);\n          this.fullTotalTargets.forEach(i => i.innerHTML = full_total_text);\n        },\n        error: (error) => {\n          this.currentTotalTargets.forEach(i => i.innerHTML = 'Error Calculating');\n          this.fullTotalTargets.forEach(i => i.innerHTML = 'Error Calculating');\n\n          this.actionsWithoutCurrentAmountTargets.forEach(i => i.classList.add('d-none'));\n          this.actionsWithCurrentAmountTargets.forEach(i => i.classList.add('d-none'));\n\n          this.noticeTarget.classList.add('d-none');\n          this.errorNoticeTarget.classList.remove('d-none');\n        },\n      });\n    });\n  }\n\n  toggleAutoRedeem(eventOrBool) {\n    if (this.getValue(eventOrBool)) {\n      this.autoRedeemFieldsTarget.classList.remove('d-none');\n      this.autoRedeemButtonTarget.classList.remove('d-none');\n      this.generateButtonTarget.classList.add('d-none');\n    } else {\n      this.autoRedeemFieldsTarget.classList.add('d-none');\n      this.autoRedeemButtonTarget.classList.add('d-none');\n      this.generateButtonTarget.classList.remove('d-none');\n    }\n  }\n\n  toggleInfiniteUsage(eventOrBool) {\n    if (this.getValue(eventOrBool)) {\n      this.disableFields([\n        this.expiryDateTarget,\n        this.splitCountTarget,\n        this.usageLimitTarget,\n        this.splitCheckboxTarget,\n      ]);\n      this.splitCheckboxTarget.checked = false;\n      this.infiniteCheckboxTarget.checked = true;\n    } else {\n      this.enableFields([\n        this.expiryDateTarget,\n        this.usageLimitTarget,\n        this.splitCheckboxTarget,\n      ]);\n\n      this.infiniteCheckboxTarget.checked = false;\n    }\n  }\n\n  toggleCounts(eventOrBool) {\n    if (this.getValue(eventOrBool)) {\n      this.enableFields([this.splitCountTarget]);\n      this.disableFields([this.usageLimitTarget]);\n    } else {\n      this.disableFields([this.splitCountTarget]);\n      this.enableFields([this.usageLimitTarget]);\n    }\n  }\n\n  getValue(eventOrBool) {\n    return typeof eventOrBool === 'boolean'\n      ? eventOrBool\n      : eventOrBool.target.checked;\n  }\n\n  disableFields(fields) {\n    fields.forEach(field => {\n      field.disabled = true;\n    })\n  }\n\n  enableFields(fields) {\n    fields.forEach((field) => {\n      field.disabled = false;\n    });\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\";\r\nimport { loading } from '../utils/_loading';\r\nimport isEmpty from '../utils/_empty';\r\n\r\nexport default class extends Controller {\r\n  static targets = [\r\n    'confirmationModal',\r\n    'content',\r\n    'paymentOptions'\r\n  ];\r\n\r\n  static values  = {\r\n    calendarUrl:  String,\r\n    merchant:     String,\r\n    slug:         String\r\n  }\r\n\r\n  connect() {\r\n    this.confirmationModalTarget.addEventListener('show.bs.modal', _event => {\r\n      this.blockSlots();\r\n    });\r\n  }\r\n\r\n  bookSlots(e) {\r\n    let clickable;\r\n    let form               = e.target.closest('form');\r\n    let formData           = new FormData(form);\r\n    const csrfTokenMetaTag = document.querySelector('meta[name=\"csrf-token\"]')\r\n    const csrfToken        = csrfTokenMetaTag ? csrfTokenMetaTag.getAttribute('content') : null;\r\n    let filtered           = [];\r\n    let errors             = [];\r\n\r\n    this.collect_inputs(filtered, form);\r\n\r\n    filtered.forEach((field) => {\r\n      if (isEmpty(field.value)) {\r\n        const accordionItem     = field.closest('.accordion-item');\r\n        clickable               = accordionItem.querySelector('.accordion-button');\r\n        field.style.borderColor = 'red';\r\n\r\n        errors.push([field, clickable]);\r\n      } else {\r\n        field.style.borderColor = 'rgba(0,0,0,0.08)';\r\n      }\r\n    });\r\n\r\n    if (errors.length > 0) {\r\n      const htmlBtn = errors[0][1];\r\n      if (htmlBtn.classList.contains('collapsed')) {\r\n        htmlBtn.click();\r\n      }\r\n    }\r\n\r\n    if (errors.length === 0) {\r\n      this.contentTarget.innerHTML = '';\r\n      this.contentTarget.classList.add('p-5');\r\n      this.contentTarget.innerHTML = loading('Preparing booking');\r\n\r\n      fetch(form.action, {\r\n        method: \"POST\",\r\n        body: formData,\r\n        headers: {\r\n          'X-CSRF-Token': csrfToken\r\n        },\r\n        credentials: 'include'\r\n      })\r\n      .then(response => response.json())\r\n      .then(result => {\r\n        window.location = result.data.redirect_url;\r\n      })\r\n    }\r\n  }\r\n\r\n  blockSlots() {\r\n    this.contentTarget.classList.add('p-5');\r\n    this.contentTarget.innerHTML = loading();\r\n\r\n    let form               = new FormData();\r\n    const csrfTokenMetaTag = document.querySelector('meta[name=\"csrf-token\"]')\r\n    const csrfToken        = csrfTokenMetaTag ? csrfTokenMetaTag.getAttribute('content') : null;\r\n\r\n    form.append('availability', JSON.stringify({\r\n      product_id:  this.selectedProduct().dataset.id,\r\n      merchant_id: this.selectedMerchantId(),\r\n      slots: {\r\n        day:  this.selectedDate().value,\r\n        slot: this.selectedTimeSlot().dataset.id\r\n      }\r\n    }));\r\n\r\n    fetch('/bookings/availability', {\r\n      method: \"PUT\",\r\n      body: form,\r\n      headers: {\r\n        'X-CSRF-Token': csrfToken\r\n      },\r\n      credentials: 'include'\r\n    })\r\n    .then(response => response.json())\r\n    .then(result => {\r\n      const existingInputs = document.querySelectorAll('input[name=\"booking[booking_id]\"]');\r\n      existingInputs.forEach(i => i.remove());\r\n\r\n      let hiddenInput    = document.createElement('input');\r\n      hiddenInput.type   = 'hidden';\r\n      hiddenInput.name   = 'booking[booking_id]';\r\n      hiddenInput.value  = result.data.booking_id;\r\n\r\n      this.contentTarget.closest('form').appendChild(hiddenInput);\r\n\r\n      this.contentTarget.classList.remove('p-5')\r\n      this.contentTarget.innerHTML = result.data.html;\r\n      this.paymentOptionsTarget.classList.remove('d-none')\r\n    });\r\n  }\r\n\r\n  cancelConfirmation() {\r\n    this.contentTarget.innerHTML = loading('Releasing dates');\r\n    let form               = new FormData();\r\n    const csrfTokenMetaTag = document.querySelector('meta[name=\"csrf-token\"]')\r\n    const csrfToken        = csrfTokenMetaTag ? csrfTokenMetaTag.getAttribute('content') : null;\r\n\r\n    form.append('availability', JSON.stringify({\r\n      product_id: this.selectedProduct().dataset.id,\r\n      merchant_id: this.selectedMerchantId(),\r\n      slots: {\r\n        day:  this.selectedDate().value,\r\n        slot: this.selectedTimeSlot().dataset.id\r\n      }\r\n    }));\r\n\r\n    this.resetAvailability();\r\n\r\n    fetch('/bookings/availability', {\r\n      method: \"DELETE\",\r\n      body: form,\r\n      headers: {\r\n        'X-CSRF-Token': csrfToken\r\n      },\r\n      credentials: 'include'\r\n    })\r\n    .then(response => response.json())\r\n    .then(result => {\r\n      this.contentTarget.innerHTML = result.data.html;\r\n    })\r\n  }\r\n\r\n  resetAvailability() {\r\n    const slotsSelector = document.querySelector('[data-target=\"calendar.formDetails\"]');\r\n    const emptyState    = document.querySelector('[data-target=\"calendar.emptyState\"]');\r\n    const dateInput     = this.selectedDate();\r\n\r\n    slotsSelector.classList.add('d-none');\r\n    emptyState.classList.remove('d-none');\r\n\r\n    dateInput.checked = false;\r\n    dateInput.parentElement.style.backgroundColor = '#f8f9fa';\r\n\r\n    this.clearBookingIds();\r\n  }\r\n\r\n  selectedProduct() {\r\n    const products = document.querySelectorAll('[data-target*=\"calendar.product\"]');\r\n\r\n    return Array.from(products).find(x => {\r\n      return x.querySelector('input:checked');\r\n    });\r\n  }\r\n\r\n  selectedTimeSlot() {\r\n    const timeSlots = document.querySelectorAll('[data-target=\"calendar.timeSlot\"]');\r\n\r\n    return Array.from(timeSlots).find(x => {\r\n      return x.querySelector('input:checked');\r\n    });\r\n  }\r\n\r\n  selectedDate() {\r\n    const dates = document.querySelectorAll('[data-date-item]');\r\n\r\n    return Array.from(dates).find(x => {\r\n      return x.checked;\r\n    });\r\n  }\r\n\r\n  selectedMerchantId() {\r\n    return document.querySelector('select#merchant_id').querySelector('option[selected=\"selected\"]').value;\r\n  }\r\n\r\n  clearBookingIds() {\r\n    const existingInputs = document.querySelectorAll('input[name=\"booking[booking_id]\"]');\r\n    existingInputs.forEach(i => i.remove());\r\n  }\r\n\r\n  collect_inputs(collection, form) {\r\n    form.querySelectorAll('input').forEach((field) => {\r\n      if(!['hidden', 'submit'].includes(field.type) && field.required) {\r\n        collection.push(field);\r\n      }\r\n    });\r\n  }\r\n}\r\n", "export default(data) => (\n  data === null ||\n  data === undefined ||\n  data === '' ||\n  // data === false ||\n  // data === 0 ||\n  // data === '0' ||\n  (Array.isArray(data) && data.length === 0) ||\n  (typeof data === 'object' && Object.keys(data).length === 0)\n);\n", "import { Controller } from \"@hotwired/stimulus\";\r\nimport * as CookieConsent from \"vanilla-cookieconsent\";\r\nimport en from \"./cookie_consent/translations/en\";\r\n\r\nexport default class extends Controller {\r\n  connect() {\r\n    /**\r\n     * All config. options available here:\r\n     * https://cookieconsent.orestbida.com/reference/configuration-reference.html\r\n     */\r\n    CookieConsent.run({\r\n      // root: 'body',\r\n      // autoShow: true,\r\n      // disablePageInteraction: true,\r\n      // hideFromBots: true,\r\n      // mode: 'opt-in',\r\n      // revision: 0,\r\n\r\n      cookie: {\r\n        name: '_uju_consent_cookie',\r\n        // domain: location.hostname,\r\n        // path: '/',\r\n        // sameSite: \"Lax\",\r\n        // expiresAfterDays: 365,\r\n      },\r\n\r\n      // https://cookieconsent.orestbida.com/reference/configuration-reference.html#guioptions\r\n      guiOptions: {\r\n        consentModal: {\r\n          layout: 'box wide',\r\n          position: 'bottom right',\r\n          equalWeightButtons: true,\r\n          flipButtons: false\r\n        },\r\n        preferencesModal: {\r\n          layout: 'box',\r\n          equalWeightButtons: true,\r\n          flipButtons: false\r\n        }\r\n      },\r\n\r\n      // Keeping these for debug purposes\r\n      onFirstConsent: ({cookie}) => {},\r\n\r\n      onConsent: ({cookie}) => {},\r\n\r\n      onChange: ({changedCategories, changedServices}) => {},\r\n\r\n      onModalReady: ({modalName}) => {},\r\n\r\n      onModalShow: ({modalName}) => {},\r\n\r\n      onModalHide: ({modalName}) => {},\r\n\r\n      categories: {\r\n        necessary: {\r\n          enabled: true,\r\n          readOnly: true\r\n        },\r\n        analytics: {\r\n          enabled: true,\r\n          // https://cookieconsent.orestbida.com/reference/configuration-reference.html#category-services\r\n          // services: {\r\n          //   uju_analytics: {\r\n          //     label: 'Uju Analytics',\r\n          //     onAccept: () => {},\r\n          //     onReject: () => {}\r\n          //   }\r\n          // }\r\n        },\r\n        ads: {}\r\n      },\r\n\r\n      language: {\r\n        default: 'en',\r\n        translations: {\r\n          en: en\r\n        }\r\n      }\r\n    });\r\n  }\r\n}\r\n", "/*!\n* CookieConsent 3.0.1\n* https://github.com/orestbida/cookieconsent\n* Author Orest Bida\n* Released under the MIT License\n*/\nconst e='opt-in',t='opt-out',o='show--consent',n='show--preferences',a='disable--interaction',s='data-category',c='div',r='button',i='aria-hidden',l='btn-group',d='click',f='data-role',_='consentModal',u='preferencesModal';class p{constructor(){this.t={mode:e,revision:0,autoShow:!0,lazyHtmlGeneration:!0,autoClearCookies:!0,manageScriptTags:!0,hideFromBots:!0,cookie:{name:'cc_cookie',expiresAfterDays:182,domain:'',path:'/',sameSite:'Lax'}},this.o={i:{},l:'',_:{},u:{},p:{},m:[],v:!1,h:null,C:null,S:null,M:'',D:!0,T:!1,k:!1,A:!1,N:!1,H:[],V:!1,I:!0,L:[],j:!1,F:'',P:!1,O:[],R:[],B:[],G:[],J:!1,U:!1,$:!1,q:[],K:[],W:[],X:{},Y:{},Z:{},ee:{},te:{},oe:[]},this.ne={ae:{},se:{}},this.ce={},this.re={ie:'cc:onFirstConsent',le:'cc:onConsent',de:'cc:onChange',fe:'cc:onModalShow',_e:'cc:onModalHide',ue:'cc:onModalReady'}}}const m=new p,g=(e,t)=>e.indexOf(t),b=(e,t)=>-1!==g(e,t),v=e=>Array.isArray(e),y=e=>'string'==typeof e,h=e=>!!e&&'object'==typeof e&&!v(e),C=e=>'function'==typeof e,w=e=>Object.keys(e),S=e=>Array.from(new Set(e)),x=()=>document.activeElement,M=e=>e.preventDefault(),D=(e,t)=>e.querySelectorAll(t),T=e=>e.dispatchEvent(new Event('change')),k=e=>{const t=document.createElement(e);return e===r&&(t.type=e),t},E=(e,t,o)=>e.setAttribute(t,o),A=(e,t,o)=>{e.removeAttribute(o?'data-'+t:t)},N=(e,t,o)=>e.getAttribute(o?'data-'+t:t),H=(e,t)=>e.appendChild(t),V=(e,t)=>e.classList.add(t),I=(e,t)=>V(e,'cm__'+t),L=(e,t)=>V(e,'pm__'+t),j=(e,t)=>e.classList.remove(t),F=e=>{if('object'!=typeof e)return e;if(e instanceof Date)return new Date(e.getTime());let t=Array.isArray(e)?[]:{};for(let o in e){let n=e[o];t[o]=F(n)}return t},P=()=>{const e={},{O:t,X:o,Y:n}=m.o;for(const a of t)e[a]=G(n[a],w(o[a]));return e},O=(e,t)=>dispatchEvent(new CustomEvent(e,{detail:t})),R=(e,t,o,n)=>{e.addEventListener(t,o),n&&m.o.m.push({pe:e,me:t,ge:o})},B=()=>{const e=m.t.cookie.expiresAfterDays;return C(e)?e(m.o.F):e},G=(e,t)=>{const o=e||[],n=t||[];return o.filter((e=>!b(n,e))).concat(n.filter((e=>!b(o,e))))},J=e=>{m.o.R=S(e),m.o.F=(()=>{let e='custom';const{R:t,O:o,B:n}=m.o,a=t.length;return a===o.length?e='all':a===n.length&&(e='necessary'),e})()},U=(e,t,o,n)=>{const a='accept-',{show:s,showPreferences:c,hide:r,hidePreferences:i,acceptCategory:l}=t,f=e||document,_=e=>D(f,`[data-cc=\"${e}\"]`),u=(e,t)=>{M(e),l(t),i(),r()},p=_('show-preferencesModal'),g=_('show-consentModal'),b=_(a+'all'),v=_(a+'necessary'),y=_(a+'custom'),h=m.t.lazyHtmlGeneration;for(const e of p)E(e,'aria-haspopup','dialog'),R(e,d,(e=>{M(e),c()})),h&&(R(e,'mouseenter',(e=>{M(e),m.o.N||o(t,n)}),!0),R(e,'focus',(()=>{m.o.N||o(t,n)})));for(let e of g)E(e,'aria-haspopup','dialog'),R(e,d,(e=>{M(e),s(!0)}),!0);for(let e of b)R(e,d,(e=>{u(e,'all')}),!0);for(let e of y)R(e,d,(e=>{u(e)}),!0);for(let e of v)R(e,d,(e=>{u(e,[])}),!0)},$=(e,t)=>{e&&(t&&(e.tabIndex=-1),e.focus(),t&&e.removeAttribute('tabindex'))},z=(e,t)=>{const o=n=>{n.target.removeEventListener('transitionend',o),'opacity'===n.propertyName&&'1'===getComputedStyle(e).opacity&&$((e=>1===e?m.ne.be:m.ne.ve)(t))};R(e,'transitionend',o)};let q;const K=e=>{clearTimeout(q),e?V(m.ne.ye,a):q=setTimeout((()=>{j(m.ne.ye,a)}),500)},Q=['M 19.5 4.5 L 4.5 19.5 M 4.5 4.501 L 19.5 19.5','M 3.572 13.406 L 8.281 18.115 L 20.428 5.885','M 21.999 6.94 L 11.639 17.18 L 2.001 6.82 '],W=(e=0,t=1.5)=>`<svg viewBox=\"0 0 24 24\" stroke-width=\"${t}\"><path d=\"${Q[e]}\"/></svg>`,X=e=>{const t=m.ne,o=m.o;(e=>{const n=e===t.he,a=o.i.disablePageInteraction?t.ye:n?t.Ce:t.ye;R(a,'keydown',(t=>{if('Tab'!==t.key||!(n?o.k&&!o.A:o.A))return;const a=x(),s=n?o.q:o.K;0!==s.length&&(t.shiftKey?a!==s[0]&&e.contains(a)||(M(t),$(s[1])):a!==s[1]&&e.contains(a)||(M(t),$(s[0])))}),!0)})(e)},Y=['[href]',r,'input','details','[tabindex]'].map((e=>e+':not([tabindex=\"-1\"])')).join(','),Z=e=>{const{o:t,ne:o}=m,n=(e,t)=>{const o=D(e,Y);t[0]=o[0],t[1]=o[o.length-1]};1===e&&t.T&&n(o.he,t.q),2===e&&t.N&&n(o.we,t.K)},ee=(e,t,o)=>{const{de:n,le:a,ie:s,_e:c,ue:r,fe:i}=m.ce,l=m.re;if(t){const n={modalName:t};return e===l.fe?C(i)&&i(n):e===l._e?C(c)&&c(n):(n.modal=o,C(r)&&r(n)),O(e,n)}const d={cookie:m.o.p};e===l.ie?C(s)&&s(F(d)):e===l.le?C(a)&&a(F(d)):(d.changedCategories=m.o.L,d.changedServices=m.o.ee,C(n)&&n(F(d))),O(e,F(d))},te=(e,t)=>{try{return e()}catch(e){return!t&&console.warn('CookieConsent:',e),!1}},oe=e=>{const{Y:t,ee:o,O:n,X:a,oe:c,p:r,L:i}=m.o;for(const e of n){const n=o[e]||t[e]||[];for(const o of n){const n=a[e][o];if(!n)continue;const{onAccept:s,onReject:c}=n;!n.Se&&b(t[e],o)?(n.Se=!0,C(s)&&s()):n.Se&&!b(t[e],o)&&(n.Se=!1,C(c)&&c())}}if(!m.t.manageScriptTags)return;const l=c,d=e||r.categories||[],f=(e,n)=>{if(n>=e.length)return;const a=c[n];if(a.xe)return f(e,n+1);const r=a.Me,l=a.De,_=a.Te,u=b(d,l),p=!!_&&b(t[l],_);if(!_&&!a.ke&&u||!_&&a.ke&&!u&&b(i,l)||_&&!a.ke&&p||_&&a.ke&&!p&&b(o[l]||[],_)){a.xe=!0;const t=N(r,'type',!0);A(r,'type',!!t),A(r,s);let o=N(r,'src',!0);o&&A(r,'src',!0);const c=k('script');c.textContent=r.innerHTML;for(const{nodeName:e}of r.attributes)E(c,e,r[e]||N(r,e));t&&(c.type=t),o?c.src=o:o=r.src;const i=!!o&&(!t||['text/javascript','module'].includes(t));if(i&&(c.onload=c.onerror=()=>{f(e,++n)}),r.replaceWith(c),i)return}f(e,++n)};f(l,0)},ne='bottom',ae='left',se='center',ce='right',re='inline',ie='wide',le='pm--',de=['middle','top',ne],fe=[ae,se,ce],_e={box:{Ee:[ie,re],Ae:de,Ne:fe,He:ne,Ve:ce},cloud:{Ee:[re],Ae:de,Ne:fe,He:ne,Ve:se},bar:{Ee:[re],Ae:de.slice(1),Ne:[],He:ne,Ve:''}},ue={box:{Ee:[],Ae:[],Ne:[],He:'',Ve:''},bar:{Ee:[ie],Ae:[],Ne:[ae,ce],He:'',Ve:ae}},pe=e=>{const t=m.o.i.guiOptions,o=t&&t.consentModal,n=t&&t.preferencesModal;0===e&&me(m.ne.he,_e,o,'cm--','box','cm'),1===e&&me(m.ne.we,ue,n,le,'box','pm')},me=(e,t,o,n,a,s)=>{e.className=s;const c=o&&o.layout,r=o&&o.position,i=o&&o.flipButtons,l=!o||!1!==o.equalWeightButtons,d=c&&c.split(' ')||[],f=d[0],_=d[1],u=f in t?f:a,p=t[u],g=b(p.Ee,_)&&_,v=r&&r.split(' ')||[],y=v[0],h=n===le?v[0]:v[1],C=b(p.Ae,y)?y:p.He,w=b(p.Ne,h)?h:p.Ve,S=t=>{t&&V(e,n+t)};S(u),S(g),S(C),S(w),i&&S('flip');const x=s+'__btn--secondary';if('cm'===s){const{Ie:e,Le:t}=m.ne;e&&(l?j(e,x):V(e,x)),t&&(l?j(t,x):V(t,x))}else{const{je:e}=m.ne;e&&(l?j(e,x):V(e,x))}},ge=(e,t)=>{const o=m.o,n=m.ne,{hide:a,hidePreferences:s,acceptCategory:_}=e,p=e=>{_(e),s(),a()},g=o.u&&o.u.preferencesModal;if(!g)return;const b=g.title,v=g.closeIconLabel,C=g.acceptAllBtn,S=g.acceptNecessaryBtn,x=g.savePreferencesBtn,M=g.sections||[],D=C||S||x;if(n.Fe)n.Pe=k(c),L(n.Pe,'body');else{n.Fe=k(c),V(n.Fe,'pm-wrapper');const e=k('div');V(e,'pm-overlay'),H(n.Fe,e),R(e,d,s),n.we=k(c),V(n.we,'pm'),E(n.we,'role','dialog'),E(n.we,i,!0),E(n.we,'aria-modal',!0),E(n.we,'aria-labelledby','pm__title'),R(n.ye,'keydown',(e=>{27===e.keyCode&&s()}),!0),n.Oe=k(c),L(n.Oe,'header'),n.Re=k('h2'),L(n.Re,'title'),n.Re.id='pm__title',n.Be=k(r),L(n.Be,'close-btn'),E(n.Be,'aria-label',g.closeIconLabel||''),R(n.Be,d,s),n.Ge=k('span'),n.Ge.innerHTML=W(),H(n.Be,n.Ge),n.Je=k(c),L(n.Je,'body'),n.Ue=k(c),L(n.Ue,'footer');var T=k(c);V(T,'btns');var A=k(c),N=k(c);L(A,l),L(N,l),H(n.Ue,A),H(n.Ue,N),H(n.Oe,n.Re),H(n.Oe,n.Be),n.ve=k(c),E(n.ve,'tabIndex',-1),H(n.we,n.ve),H(n.we,n.Oe),H(n.we,n.Je),D&&H(n.we,n.Ue),H(n.Fe,n.we)}let I;b&&(n.Re.innerHTML=b,v&&E(n.Be,'aria-label',v)),M.forEach(((e,t)=>{const a=e.title,s=e.description,l=e.linkedCategory,f=l&&o.P[l],_=e.cookieTable,u=_&&_.body,p=_&&_.caption,m=u&&u.length>0,b=!!f,v=b&&o.X[l],C=h(v)&&w(v)||[],S=b&&(!!s||!!m||w(v).length>0);var x=k(c);if(L(x,'section'),S||s){var M=k(c);L(M,'section-desc-wrapper')}let D=C.length;if(S&&D>0){const e=k(c);L(e,'section-services');for(const t of C){const o=v[t],n=o&&o.label||t,a=k(c),s=k(c),r=k(c),i=k(c);L(a,'service'),L(i,'service-title'),L(s,'service-header'),L(r,'service-icon');const d=be(n,t,f,!0,l);i.innerHTML=n,H(s,r),H(s,i),H(a,s),H(a,d),H(e,a)}H(M,e)}if(a){var T=k(c),A=k(b?r:c);if(L(T,'section-title-wrapper'),L(A,'section-title'),A.innerHTML=a,H(T,A),b){const e=k('span');e.innerHTML=W(2,3.5),L(e,'section-arrow'),H(T,e),x.className+='--toggle';const t=be(a,l,f);let o=g.serviceCounterLabel;if(D>0&&y(o)){let e=k('span');L(e,'badge'),L(e,'service-counter'),E(e,i,!0),E(e,'data-servicecounter',D),o&&(o=o.split('|'),o=o.length>1&&D>1?o[1]:o[0],E(e,'data-counterlabel',o)),e.innerHTML=D+(o?' '+o:''),H(A,e)}if(S){L(x,'section--expandable');var N=l+'-desc';E(A,'aria-expanded',!1),E(A,'aria-controls',N)}H(T,t)}else E(A,'role','heading'),E(A,'aria-level','3');H(x,T)}if(s){var F=k('p');L(F,'section-desc'),F.innerHTML=s,H(M,F)}if(S&&(E(M,i,'true'),M.id=N,((e,t,o)=>{R(A,d,(()=>{t.classList.contains('is-expanded')?(j(t,'is-expanded'),E(o,'aria-expanded','false'),E(e,i,'true')):(V(t,'is-expanded'),E(o,'aria-expanded','true'),E(e,i,'false'))}))})(M,x,A),m)){const e=k('table'),o=k('thead'),a=k('tbody');if(p){const t=k('caption');L(t,'table-caption'),t.innerHTML=p,e.appendChild(t)}L(e,'section-table'),L(o,'table-head'),L(a,'table-body');const s=_.headers,r=w(s),i=n.$e.createDocumentFragment(),l=k('tr');for(const e of r){const o=s[e],n=k('th');n.id='cc__row-'+o+t,E(n,'scope','col'),L(n,'table-th'),n.innerHTML=o,H(i,n)}H(l,i),H(o,l);const d=n.$e.createDocumentFragment();for(const e of u){const o=k('tr');L(o,'table-tr');for(const n of r){const a=s[n],r=e[n],i=k('td'),l=k(c);L(i,'table-td'),E(i,'data-column',a),E(i,'headers','cc__row-'+a+t),l.insertAdjacentHTML('beforeend',r),H(i,l),H(o,i)}H(d,o)}H(a,d),H(e,o),H(e,a),H(M,e)}(S||s)&&H(x,M);const P=n.Pe||n.Je;b?(I||(I=k(c),L(I,'section-toggles')),I.appendChild(x)):I=null,H(P,I||x)})),C&&(n.ze||(n.ze=k(r),L(n.ze,'btn'),E(n.ze,f,'all'),H(A,n.ze),R(n.ze,d,(()=>p('all')))),n.ze.innerHTML=C),S&&(n.je||(n.je=k(r),L(n.je,'btn'),E(n.je,f,'necessary'),H(A,n.je),R(n.je,d,(()=>p([])))),n.je.innerHTML=S),x&&(n.qe||(n.qe=k(r),L(n.qe,'btn'),L(n.qe,'btn--secondary'),E(n.qe,f,'save'),H(N,n.qe),R(n.qe,d,(()=>p()))),n.qe.innerHTML=x),n.Pe&&(n.we.replaceChild(n.Pe,n.Je),n.Je=n.Pe),pe(1),o.N||(o.N=!0,ee(m.re.ue,u,n.we),t(e),H(n.Ce,n.Fe),X(n.we),setTimeout((()=>V(n.Fe,'cc--anim')),100)),Z(2)};function be(e,t,o,n,a){const c=m.o,r=m.ne,l=k('label'),f=k('input'),_=k('span'),u=k('span'),p=k('span'),g=k('span'),v=k('span');if(g.innerHTML=W(1,3),v.innerHTML=W(0,3),f.type='checkbox',V(l,'section__toggle-wrapper'),V(f,'section__toggle'),V(g,'toggle__icon-on'),V(v,'toggle__icon-off'),V(_,'toggle__icon'),V(u,'toggle__icon-circle'),V(p,'toggle__label'),E(_,i,'true'),n?(V(l,'toggle-service'),E(f,s,a),r.se[a][t]=f):r.ae[t]=f,n?(e=>{R(f,'change',(()=>{const t=r.se[e],o=r.ae[e];c.Z[e]=[];for(let o in t){const n=t[o];n.checked&&c.Z[e].push(n.value)}o.checked=c.Z[e].length>0}))})(a):(e=>{R(f,d,(()=>{const t=r.se[e],o=f.checked;c.Z[e]=[];for(let n in t)t[n].checked=o,o&&c.Z[e].push(n)}))})(t),f.value=t,p.textContent=e.replace(/<.*>.*<\\/.*>/gm,''),H(u,v),H(u,g),H(_,u),c.D)(o.readOnly||o.enabled)&&(f.checked=!0);else if(n){const e=c.Y[a];f.checked=o.readOnly||b(e,t)}else b(c.R,t)&&(f.checked=!0);return o.readOnly&&(f.disabled=!0),H(l,f),H(l,_),H(l,p),l}const ve=()=>{const e=k('span');return m.ne.Ke||(m.ne.Ke=e),e},ye=(e,t)=>{const o=m.o,n=m.ne,{hide:a,showPreferences:s,acceptCategory:u}=e,p=o.u&&o.u.consentModal;if(!p)return;const g=p.acceptAllBtn,b=p.acceptNecessaryBtn,v=p.showPreferencesBtn,y=p.closeIconLabel,h=p.footer,C=p.label,w=p.title,S=e=>{a(),u(e)};if(!n.Qe){n.Qe=k(c),n.he=k(c),n.We=k(c),n.Xe=k(c),n.Ye=k(c),V(n.Qe,'cm-wrapper'),V(n.he,'cm'),I(n.We,'body'),I(n.Xe,'texts'),I(n.Ye,'btns'),E(n.he,'role','dialog'),E(n.he,'aria-modal','true'),E(n.he,i,'false'),E(n.he,'aria-describedby','cm__desc'),C?E(n.he,'aria-label',C):w&&E(n.he,'aria-labelledby','cm__title');const e='box',t=o.i.guiOptions,a=t&&t.consentModal,s=(a&&a.layout||e).split(' ')[0]===e;w&&y&&s&&(n.Le||(n.Le=k(r),n.Le.innerHTML=W(),I(n.Le,'btn'),I(n.Le,'btn--close'),R(n.Le,d,(()=>{S([])})),H(n.We,n.Le)),E(n.Le,'aria-label',y)),H(n.We,n.Xe),(g||b||v)&&H(n.We,n.Ye),n.be=k(c),E(n.be,'tabIndex',-1),H(n.he,n.be),H(n.he,n.We),H(n.Qe,n.he)}w&&(n.Ze||(n.Ze=k('h2'),n.Ze.className=n.Ze.id='cm__title',H(n.Xe,n.Ze)),n.Ze.innerHTML=w);let x=p.description;if(x&&(o.V&&(x=x.replace('{{revisionMessage}}',o.I?'':p.revisionMessage||'')),n.et||(n.et=k('p'),n.et.className=n.et.id='cm__desc',H(n.Xe,n.et)),n.et.innerHTML=x),g&&(n.tt||(n.tt=k(r),H(n.tt,ve()),I(n.tt,'btn'),E(n.tt,f,'all'),R(n.tt,d,(()=>{S('all')}))),n.tt.firstElementChild.innerHTML=g),b&&(n.Ie||(n.Ie=k(r),H(n.Ie,ve()),I(n.Ie,'btn'),E(n.Ie,f,'necessary'),R(n.Ie,d,(()=>{S([])}))),n.Ie.firstElementChild.innerHTML=b),v&&(n.ot||(n.ot=k(r),H(n.ot,ve()),I(n.ot,'btn'),I(n.ot,'btn--secondary'),E(n.ot,f,'show'),R(n.ot,'mouseenter',(()=>{o.N||ge(e,t)})),R(n.ot,d,s)),n.ot.firstElementChild.innerHTML=v),n.nt||(n.nt=k(c),I(n.nt,l),g&&H(n.nt,n.tt),b&&H(n.nt,n.Ie),(g||b)&&H(n.We,n.nt),H(n.Ye,n.nt)),n.ot&&!n.st&&(n.st=k(c),n.Ie&&n.tt?(I(n.st,l),H(n.st,n.ot),H(n.Ye,n.st)):(H(n.nt,n.ot),I(n.nt,l+'--uneven'))),h){if(!n.ct){let e=k(c),t=k(c);n.ct=k(c),I(e,'footer'),I(t,'links'),I(n.ct,'link-group'),H(t,n.ct),H(e,t),H(n.he,e)}n.ct.innerHTML=h}pe(0),o.T||(o.T=!0,ee(m.re.ue,_,n.he),t(e),H(n.Ce,n.Qe),X(n.he),setTimeout((()=>V(n.Qe,'cc--anim')),100)),Z(1),U(n.We,e,ge,t)},he=e=>{if(!y(e))return null;if(e in m.o._)return e;let t=e.slice(0,2);return t in m.o._?t:null},Ce=()=>m.o.l||m.o.i.language.default,we=e=>{e&&(m.o.l=e)},Se=async e=>{const t=m.o;let o=he(e)?e:Ce(),n=t._[o];return y(n)?n=await(async e=>{try{const t=await fetch(e);return await t.json()}catch(e){return console.error(e),!1}})(n):C(n)&&(n=await n()),!!n&&(t.u=n,we(o),!0)},xe=()=>{let e=m.o.i.language.rtl,t=m.ne.Ce;e&&t&&(v(e)||(e=[e]),b(e,m.o.l)?V(t,'cc--rtl'):j(t,'cc--rtl'))},Me=()=>{const e=m.ne;if(e.Ce)return;e.Ce=k(c),e.Ce.id='cc-main',e.Ce.setAttribute('data-nosnippet',''),xe();let t=m.o.i.root;t&&y(t)&&(t=document.querySelector(t)),(t||e.$e.body).appendChild(e.Ce)},De=e=>te((()=>localStorage.removeItem(e))),Te=(e,t)=>{if(t instanceof RegExp)return e.filter((e=>t.test(e)));{const o=g(e,t);return o>-1?[e[o]]:[]}},ke=e=>{const{hostname:t,protocol:o}=location,{name:n,path:a,domain:s,sameSite:c,useLocalStorage:r}=m.t.cookie,i=e?(()=>{const e=m.o.S,t=e?new Date-e:0;return 864e5*B()-t})():864e5*B(),l=new Date;l.setTime(l.getTime()+i),m.o.p.expirationTime=l.getTime();const d=JSON.stringify(m.o.p);let f=n+'='+encodeURIComponent(d)+(0!==i?'; expires='+l.toUTCString():'')+'; Path='+a+'; SameSite='+c;b(t,'.')&&(f+='; Domain='+s),'https:'===o&&(f+='; Secure'),r?((e,t)=>{te((()=>localStorage.setItem(e,t)))})(n,d):document.cookie=f,m.o.p},Ee=(e,t,o)=>{if(0===e.length)return;const n=o||m.t.cookie.domain,a=t||m.t.cookie.path,s='www.'===n.slice(0,4),c=s&&n.substring(4),r=(e,t)=>{document.cookie=e+'=; path='+a+(t?'; domain=.'+t:'')+'; expires=Thu, 01 Jan 1970 00:00:01 GMT;'};for(const t of e)r(t),r(t,n),s&&r(t,c)},Ae=e=>{const t=e||m.t.cookie.name,o=m.t.cookie.useLocalStorage;return((e,t)=>{let o;return o=te((()=>JSON.parse(t?e:decodeURIComponent(e))),!0)||{},o})(o?(n=t,te((()=>localStorage.getItem(n)))||''):Ne(t,!0),o);var n},Ne=(e,t)=>{const o=document.cookie.match('(^|;)\\\\s*'+e+'\\\\s*=\\\\s*([^;]+)');return o?t?o.pop():e:''},He=e=>{const t=document.cookie.split(/;\\s*/),o=[];for(const n of t){let t=n.split('=')[0];e?te((()=>{e.test(t)&&o.push(t)})):o.push(t)}return o},Ve=(o,n=[])=>{((e,t)=>{const{O:o,R:n,B:a,N:s,Z:c,G:r,X:i}=m.o;let l=[];if(e){v(e)?l.push(...e):y(e)&&(l='all'===e?o:[e]);for(const e of o)c[e]=b(l,e)?w(i[e]):[]}else l=[...n,...r],s&&(l=(()=>{const e=m.ne.ae;if(!e)return[];let t=[];for(let o in e)e[o].checked&&t.push(o);return t})());l=l.filter((e=>!b(o,e)||!b(t,e))),l.push(...a),J(l)})(o,n),(e=>{const t=m.o,{Z:o,B:n,Y:a,X:s,O:c}=t,r=c;t.te=F(a);for(const e of r){const c=s[e],r=w(c),i=o[e]&&o[e].length>0,l=b(n,e);if(0!==r.length){if(a[e]=[],l)a[e].push(...r);else if(i){const t=o[e];a[e].push(...t)}else a[e]=t.Z[e];a[e]=S(a[e])}}})(),(()=>{const o=m.o;o.L=m.t.mode===t&&o.D?G(o.G,o.R):G(o.R,o.p.categories);let n=o.L.length>0,a=!1;for(const e of o.O)o.ee[e]=G(o.Y[e],o.te[e]),o.ee[e].length>0&&(a=!0);const s=m.ne.ae;for(const e in s)s[e].checked=b(o.R,e);for(const e of o.O){const t=m.ne.se[e],n=o.Y[e];for(const e in t)t[e].checked=b(n,e)}o.C||(o.C=new Date),o.M||(o.M=([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g,(e=>(e^crypto.getRandomValues(new Uint8Array(1))[0]&15>>e/4).toString(16)))),o.p={categories:F(o.R),revision:m.t.revision,data:o.h,consentTimestamp:o.C.toISOString(),consentId:o.M,services:F(o.Y)};let c=!1;const r=n||a;(o.D||r)&&(o.D&&(o.D=!1,c=!0),o.S=o.S?new Date:o.C,o.p.lastConsentTimestamp=o.S.toISOString(),ke(),m.t.autoClearCookies&&(c||r)&&(e=>{const t=m.o,o=He(),n=(e=>{const t=m.o;return(e?t.O:t.L).filter((e=>{const o=t.P[e];return!!o&&!o.readOnly&&!!o.autoClear}))})(e);for(const e in t.ee)for(const n of t.ee[e]){const a=t.X[e][n].cookies;if(!b(t.Y[e],n)&&a)for(const e of a){const t=Te(o,e.name);Ee(t,e.path,e.domain)}}for(const a of n){const n=t.P[a].autoClear,s=n&&n.cookies||[],c=b(t.L,a),r=!b(t.R,a),i=c&&r;if(e?r:i){n.reloadPage&&i&&(t.j=!0);for(const e of s){const t=Te(o,e.name);Ee(t,e.path,e.domain)}}}})(c),oe()),c&&(ee(m.re.ie),ee(m.re.le),m.t.mode===e)||(r&&ee(m.re.de),o.j&&(o.j=!1,location.reload()))})()},Ie=e=>{const t=m.o.D?[]:m.o.R;return b(t,e)},Le=(e,t)=>{const{O:o,X:n}=m.o;if(!(e&&t&&y(t)&&b(o,t)&&0!==w(n[t]).length))return!1;((e,t)=>{const o=m.o,{X:n,Z:a,N:s}=o,c=m.ne.se[t]||{},r=m.ne.ae[t]||{},i=w(n[t]);if(a[t]=[],y(e)){if('all'===e){if(a[t].push(...i),s)for(let e in c)c[e].checked=!0,T(c[e])}else if(b(i,e)&&a[t].push(e),s)for(let t in c)c[t].checked=e===t,T(c[t])}else if(v(e))for(let o of i){const n=b(e,o);n&&a[t].push(o),s&&(c[o].checked=n,T(c[o]))}const l=0===a[t].length;o.R=l?o.R.filter((e=>e!==t)):S([...o.R,t]),s&&(r.checked=!l,T(r))})(e,t),Ve()},je=(e,t)=>{const o=m.o.D?[]:m.o.Y[t]||[];return b(o,e)},Fe=e=>''!==Ne(e,!0),Pe=(e,t,o)=>{let n=[];const a=e=>{if(y(e)){let t=Ne(e);''!==t&&n.push(t)}else n.push(...He(e))};if(v(e))for(let t of e)a(t);else a(e);Ee(n,t,o)},Oe=e=>{const{ne:t,o:n}=m;if(!n.k){if(!n.T){if(!e)return;ye(Je,Me)}n.k=!0,n.U=x(),n.v&&K(!0),z(t.he,1),V(t.ye,o),E(t.he,i,'false'),setTimeout((()=>{$(m.ne.be)}),100),ee(m.re.fe,_)}},Re=()=>{const{ne:e,o:t,re:n}=m;t.k&&(t.k=!1,t.v&&K(),$(e.Ke,!0),j(e.ye,o),E(e.he,i,'true'),$(t.U),t.U=null,ee(n._e,_))},Be=()=>{const e=m.o;e.A||(e.N||ge(Je,Me),e.A=!0,e.k?e.$=x():e.U=x(),z(m.ne.we,2),V(m.ne.ye,n),E(m.ne.we,i,'false'),setTimeout((()=>{$(m.ne.ve)}),100),ee(m.re.fe,u))},Ge=()=>{const e=m.o;e.A&&(e.A=!1,(()=>{const e=We(),t=m.o.P,o=m.ne.ae,n=m.ne.se,a=e=>b(m.o.G,e);for(const s in o){const c=!!t[s].readOnly;o[s].checked=c||(e?Ie(s):a(s));for(const t in n[s])n[s][t].checked=c||(e?je(t,s):a(s))}})(),$(m.ne.Ge,!0),j(m.ne.ye,n),E(m.ne.we,i,'true'),e.k?($(e.$),e.$=null):($(e.U),e.U=null),ee(m.re._e,u))};var Je={show:Oe,hide:Re,showPreferences:Be,hidePreferences:Ge,acceptCategory:Ve};const Ue=async(e,t)=>{if(!he(e))return!1;const o=m.o;return!(e===Ce()&&!0!==t||!await Se(e)||(we(e),o.T&&ye(Je,Me),o.N&&ge(Je,Me),xe(),0))},$e=()=>{const{F:e,Y:t}=m.o,{accepted:o,rejected:n}=(()=>{const{D:e,R:t,O:o}=m.o;return{accepted:t,rejected:e?[]:o.filter((e=>!b(t,e)))}})();return F({acceptType:e,acceptedCategories:o,rejectedCategories:n,acceptedServices:t,rejectedServices:P()})},ze=(e,t)=>{let o=document.querySelector('script[src=\"'+e+'\"]');return new Promise((n=>{if(o)return n(!0);if(o=k('script'),h(t))for(const e in t)E(o,e,t[e]);o.onload=()=>n(!0),o.onerror=()=>{o.remove(),n(!1)},o.src=e,H(document.head,o)}))},qe=e=>{let t,o=e.value,n=e.mode,a=!1;const s=m.o;if('update'===n){s.h=t=Ke('data');const e=typeof t==typeof o;if(e&&'object'==typeof t){!t&&(t={});for(let e in o)t[e]!==o[e]&&(t[e]=o[e],a=!0)}else!e&&t||t===o||(t=o,a=!0)}else t=o,a=!0;return a&&(s.h=t,s.p.data=t,ke(!0)),a},Ke=(e,t)=>{const o=Ae(t);return e?o[e]:o},Qe=e=>{const t=m.t,o=m.o.i;return e?t[e]||o[e]:{...t,...o,cookie:{...t.cookie}}},We=()=>!m.o.D,Xe=async e=>{const{o:o,t:n,re:a}=m,c=window;if(!c._ccRun){if(c._ccRun=!0,(e=>{const{ne:o,t:n,o:a}=m,c=n,r=a,{cookie:i}=c,l=m.ce,d=e.cookie,f=e.categories,_=w(f)||[],u=navigator,p=document;o.$e=p,o.ye=p.documentElement,i.domain=location.hostname,r.i=e,r.P=f,r.O=_,r._=e.language.translations,r.v=!!e.disablePageInteraction,l.ie=e.onFirstConsent,l.le=e.onConsent,l.de=e.onChange,l._e=e.onModalHide,l.fe=e.onModalShow,l.ue=e.onModalReady;const{mode:g,autoShow:v,lazyHtmlGeneration:y,autoClearCookies:C,revision:S,manageScriptTags:x,hideFromBots:M}=e;g===t&&(c.mode=g),'boolean'==typeof C&&(c.autoClearCookies=C),'boolean'==typeof x&&(c.manageScriptTags=x),'number'==typeof S&&S>=0&&(c.revision=S,r.V=!0),'boolean'==typeof v&&(c.autoShow=v),'boolean'==typeof y&&(c.lazyHtmlGeneration=y),!1===M&&(c.hideFromBots=!1),!0===c.hideFromBots&&u&&(r.J=u.userAgent&&/bot|crawl|spider|slurp|teoma/i.test(u.userAgent)||u.webdriver),h(d)&&(c.cookie={...i,...d}),c.autoClearCookies,r.V,c.manageScriptTags,(e=>{const{P:t,X:o,Y:n,Z:a,B:s}=m.o;for(let c of e){const e=t[c],r=e.services||{},i=h(r)&&w(r)||[];o[c]={},n[c]=[],a[c]=[],e.readOnly&&(s.push(c),n[c]=i),m.ne.se[c]={};for(let e of i){const t=r[e];t.Se=!1,o[c][e]=t}}})(_),(()=>{if(!m.t.manageScriptTags)return;const e=m.o,t=D(document,'script['+s+']');for(const o of t){let t=N(o,s),n=o.dataset.service||'',a=!1;if(t&&'!'===t.charAt(0)&&(t=t.slice(1),a=!0),'!'===n.charAt(0)&&(n=n.slice(1),a=!0),b(e.O,t)&&(e.oe.push({Me:o,xe:!1,ke:a,De:t,Te:n}),n)){const o=e.X[t];o[n]||(o[n]={Se:!1})}}})(),we((()=>{const e=m.o.i.language.autoDetect;if(e){const t={browser:navigator.language,document:document.documentElement.lang},o=he(t[e]);if(o)return o}return Ce()})())})(e),o.J)return;(()=>{const e=m.o,o=m.t,n=Ae(),{categories:a,services:s,consentId:c,consentTimestamp:r,lastConsentTimestamp:i,data:l,revision:d}=n,f=v(a);e.p=n,e.M=c;const _=!!c&&y(c);e.C=r,e.C&&(e.C=new Date(r)),e.S=i,e.S&&(e.S=new Date(i)),e.h=void 0!==l?l:null,e.V&&_&&d!==o.revision&&(e.I=!1),e.D=!(_&&e.I&&e.C&&e.S&&f),o.cookie.useLocalStorage&&!e.D&&(e.D=(new Date).getTime()>(n.expirationTime||0),e.D&&De(o.cookie.name)),e.D,(()=>{const e=m.o;for(const o of e.O){const n=e.P[o];if(n.readOnly||n.enabled){e.G.push(o);const n=e.X[o]||{};for(let a in n)e.Z[o].push(a),e.i.mode===t&&e.Y[o].push(a)}}})(),e.D?o.mode===t&&(e.R=[...e.G]):(e.Z={...e.Y},e.Y={...e.Y,...s},J([...e.B,...a]))})();const i=We();if(!await Se())return!1;if(U(null,r=Je,ge,Me),m.o.D&&ye(r,Me),m.t.lazyHtmlGeneration||ge(r,Me),n.autoShow&&!i&&Oe(!0),i)return oe(),ee(a.le);n.mode===t&&oe(o.G)}var r},Ye=e=>{const{Ce:t,ye:s}=m.ne,{name:c,path:r,domain:i,useLocalStorage:l}=m.t.cookie;e&&(l?De(c):Pe(c,r,i));for(const{pe:e,me:t,ge:o}of m.o.m)e.removeEventListener(t,o);t&&t.remove(),s&&s.classList.remove(a,n,o);const d=new p;for(const e in m)m[e]=d[e];window._ccRun=!1};export{Ve as acceptCategory,Le as acceptService,Ie as acceptedCategory,je as acceptedService,Pe as eraseCookies,Qe as getConfig,Ke as getCookie,$e as getUserPreferences,Re as hide,Ge as hidePreferences,ze as loadScript,Ye as reset,Xe as run,qe as setCookieData,Ue as setLanguage,Oe as show,Be as showPreferences,We as validConsent,Fe as validCookie};\n", "export default {\r\n  consentModal: {\r\n    title: 'We use cookies',\r\n    description: 'We use cookies to improve your experience on our site and to show you personalized content. By continuing to use our site, you accept our use of cookies. To learn more, please read our Privacy Policy.',\r\n    acceptAllBtn: 'Accept all',\r\n    acceptNecessaryBtn: 'Reject all',\r\n    showPreferencesBtn: 'Manage Individual preferences',\r\n    // closeIconLabel: 'Reject all and close modal',\r\n    footer: `\r\n      <a href=\"/privacy-policy\" target=\"_blank\">Privacy Policy</a>\r\n    `,\r\n  },\r\n  preferencesModal: {\r\n    title: 'Manage cookie preferences',\r\n    acceptAllBtn: 'Accept all',\r\n    acceptNecessaryBtn: 'Reject all',\r\n    savePreferencesBtn: 'Accept current selection',\r\n    closeIconLabel: 'Close modal',\r\n    serviceCounterLabel: 'Service|Services',\r\n    sections: [\r\n      {\r\n        title: 'Your Privacy Choices',\r\n        description: `In this panel you can express some preferences related to the processing of your personal information. You may review and change expressed choices at any time by resurfacing this panel via the provided link. To deny your consent to the specific processing activities described below, switch the toggles to off or use the \u201CReject all\u201D button and confirm you want to save your choices.`,\r\n      },\r\n      {\r\n        title: 'Strictly Necessary',\r\n        description: 'These cookies are essential for the proper functioning of the website and cannot be disabled.',\r\n        cookieTable: {\r\n          caption: 'Cookie table',\r\n          headers: {\r\n            name: 'Cookie',\r\n            domain: 'Domain',\r\n            desc: 'Description'\r\n          },\r\n          body: [\r\n            {\r\n              name: '_uju_session',\r\n              domain: location.hostname,\r\n              desc: 'Anonymously stores session data to maintain user state, track activity during a visit, and enable logging in for a secure personalised experience.',\r\n            }\r\n          ]\r\n        },\r\n\r\n        //this field will generate a toggle linked to the 'necessary' category\r\n        linkedCategory: 'necessary'\r\n      },\r\n      {\r\n        title: 'Performance and Analytics',\r\n        description: 'These cookies collect information about how you use our website. All of the data is anonymized and cannot be used to identify you.',\r\n        linkedCategory: 'analytics',\r\n        cookieTable: {\r\n          caption: 'Cookie table',\r\n          headers: {\r\n            name: 'Cookie',\r\n            domain: 'Domain',\r\n            desc: 'Description'\r\n          },\r\n          body: [\r\n            {\r\n              name: 'ahoy_visitor',\r\n              domain: location.hostname,\r\n              desc: 'Anonymously tracks a unique visitor ID for analytics purposes across sessions.',\r\n            },\r\n            {\r\n              name: 'ahoy_visit',\r\n              domain: location.hostname,\r\n              desc: 'Anonymously records a unique visit ID for each session to track individual visits.',\r\n            }\r\n          ]\r\n        }\r\n      },\r\n      // {\r\n      //   title: 'Targeting and Advertising',\r\n      //   description: 'These cookies are used to make advertising messages more relevant to you and your interests. The intention is to display ads that are relevant and engaging for the individual user and thereby more valuable for publishers and third party advertisers.',\r\n      //   linkedCategory: 'ads',\r\n      // },\r\n      {\r\n        title: 'More information',\r\n        description: 'For any queries in relation to my policy on cookies and your choices, please <a href=\"/contact-us\">contact us</a>'\r\n      }\r\n    ]\r\n  }\r\n}\r\n", "import { Controller } from \"@hotwired/stimulus\";\nimport { Datepicker } from 'vanillajs-datepicker';\n\nexport default class extends Controller {\n  static targets = [\"datePickable\"];\n\n  connect() {\n    this.datePickableTargets.forEach(elem => {\n      new Datepicker(elem, {\n        format: 'dd/mm/yyyy',\n        minDate: elem.dataset.minDate,\n        maxDate: elem.dataset.maxDate\n      });\n    });\n  }\n}\n", "export function lastItemOf(arr) {\n  return arr[arr.length - 1];\n}\n\n// push only the items not included in the array\nexport function pushUnique(arr, ...items) {\n  items.forEach((item) => {\n    if (arr.includes(item)) {\n      return;\n    }\n    arr.push(item);\n  });\n  return arr;\n}\n\nexport function stringToArray(str, separator) {\n  // convert empty string to an empty array\n  return str ? str.split(separator) : [];\n}\n\nexport function isInRange(testVal, min, max) {\n  const minOK = min === undefined || testVal >= min;\n  const maxOK = max === undefined || testVal <= max;\n  return minOK && maxOK;\n}\n\nexport function limitToRange(val, min, max) {\n  if (val < min) {\n    return min;\n  }\n  if (val > max) {\n    return max;\n  }\n  return val;\n}\n\nexport function createTagRepeat(tagName, repeat, attributes = {}, index = 0, html = '') {\n  const openTagSrc = Object.keys(attributes).reduce((src, attr) => {\n    let val = attributes[attr];\n    if (typeof val === 'function') {\n      val = val(index);\n    }\n    return `${src} ${attr}=\"${val}\"`;\n  }, tagName);\n  html += `<${openTagSrc}></${tagName}>`;\n\n  const next = index + 1;\n  return next < repeat\n    ? createTagRepeat(tagName, repeat, attributes, next, html)\n    : html;\n}\n\n// Remove the spacing surrounding tags for HTML parser not to create text nodes\n// before/after elements\nexport function optimizeTemplateHTML(html) {\n  return html.replace(/>\\s+/g, '>').replace(/\\s+</, '<');\n}\n", "export function stripTime(timeValue) {\n  return new Date(timeValue).setHours(0, 0, 0, 0);\n}\n\nexport function today() {\n  return new Date().setHours(0, 0, 0, 0);\n}\n\n// Get the time value of the start of given date or year, month and day\nexport function dateValue(...args) {\n  switch (args.length) {\n    case 0:\n      return today();\n    case 1:\n      return stripTime(args[0]);\n  }\n\n  // use setFullYear() to keep 2-digit year from being mapped to 1900-1999\n  const newDate = new Date(0);\n  newDate.setFullYear(...args);\n  return newDate.setHours(0, 0, 0, 0);\n}\n\nexport function addDays(date, amount) {\n  const newDate = new Date(date);\n  return newDate.setDate(newDate.getDate() + amount);\n}\n\nexport function addWeeks(date, amount) {\n  return addDays(date, amount * 7);\n}\n\nexport function addMonths(date, amount) {\n  // If the day of the date is not in the new month, the last day of the new\n  // month will be returned. e.g. Jan 31 + 1 month \u2192 Feb 28 (not Mar 03)\n  const newDate = new Date(date);\n  const monthsToSet = newDate.getMonth() + amount;\n  let expectedMonth = monthsToSet % 12;\n  if (expectedMonth < 0) {\n    expectedMonth += 12;\n  }\n\n  const time = newDate.setMonth(monthsToSet);\n  return newDate.getMonth() !== expectedMonth ? newDate.setDate(0) : time;\n}\n\nexport function addYears(date, amount) {\n  // If the date is Feb 29 and the new year is not a leap year, Feb 28 of the\n  // new year will be returned.\n  const newDate = new Date(date);\n  const expectedMonth = newDate.getMonth();\n  const time = newDate.setFullYear(newDate.getFullYear() + amount);\n  return expectedMonth === 1 && newDate.getMonth() === 2 ? newDate.setDate(0) : time;\n}\n\n// Calculate the distance bettwen 2 days of the week\nfunction dayDiff(day, from) {\n  return (day - from + 7) % 7;\n}\n\n// Get the date of the specified day of the week of given base date\nexport function dayOfTheWeekOf(baseDate, dayOfWeek, weekStart = 0) {\n  const baseDay = new Date(baseDate).getDay();\n  return addDays(baseDate, dayDiff(dayOfWeek, weekStart) - dayDiff(baseDay, weekStart));\n}\n\nfunction calcWeekNum(dayOfTheWeek, sameDayOfFirstWeek) {\n  return Math.round((dayOfTheWeek - sameDayOfFirstWeek) / 604800000) + 1;\n}\n\n// Get the ISO week number of a date\nexport function getIsoWeek(date) {\n  // - Start of ISO week is Monday\n  // - Use Thursday for culculation because the first Thursday of ISO week is\n  //   always in January\n  const thuOfTheWeek = dayOfTheWeekOf(date, 4, 1);\n  // - Week 1 in ISO week is the week including Jan 04\n  // - Use the Thu of given date's week (instead of given date itself) to\n  //   calculate week 1 of the year so that Jan 01 - 03 won't be miscalculated\n  //   as week 0 when Jan 04 is Mon - Wed\n  const firstThu = dayOfTheWeekOf(new Date(thuOfTheWeek).setMonth(0, 4), 4, 1);\n  // return Math.round((thuOfTheWeek - firstThu) / 604800000) + 1;\n  return calcWeekNum(thuOfTheWeek, firstThu);\n}\n\n// Calculate week number in traditional week number system\n// @see https://en.wikipedia.org/wiki/Week#Other_week_numbering_systems\nfunction calcTraditionalWeekNumber(date, weekStart) {\n  // - Week 1 of traditional week is the week including the Jan 01\n  // - Use Jan 01 of given date's year to calculate the start of week 1\n  const startOfFirstWeek = dayOfTheWeekOf(new Date(date).setMonth(0, 1), weekStart, weekStart);\n  const startOfTheWeek = dayOfTheWeekOf(date, weekStart, weekStart);\n  const weekNum = calcWeekNum(startOfTheWeek, startOfFirstWeek);\n  if (weekNum < 53) {\n    return weekNum;\n  }\n  // If the 53rd week includes Jan 01, it's actually next year's week 1\n  const weekOneOfNextYear = dayOfTheWeekOf(new Date(date).setDate(32), weekStart, weekStart);\n  return startOfTheWeek === weekOneOfNextYear ? 1 : weekNum;\n}\n\n// Get the Western traditional week number of a date\nexport function getWesternTradWeek(date) {\n  // Start of Western traditionl week is Sunday\n  return calcTraditionalWeekNumber(date, 0);\n}\n\n// Get the Middle Eastern week number of a date\nexport function getMidEasternWeek(date) {\n  // Start of Middle Eastern week is Saturday\n  return calcTraditionalWeekNumber(date, 6);\n}\n\n// Get the start year of the period of years that includes given date\n// years: length of the year period\nexport function startOfYearPeriod(date, years) {\n  /* @see https://en.wikipedia.org/wiki/Year_zero#ISO_8601 */\n  const year = new Date(date).getFullYear();\n  return Math.floor(year / years) * years;\n}\n\n// Convert date to the first/last date of the month/year of the date\nexport function regularizeDate(date, timeSpan, useLastDate) {\n  if (timeSpan !== 1 && timeSpan !== 2) {\n    return date;\n  }\n  const newDate = new Date(date);\n  if (timeSpan === 1) {\n    useLastDate\n      ? newDate.setMonth(newDate.getMonth() + 1, 0)\n      : newDate.setDate(1);\n  } else {\n    useLastDate\n      ? newDate.setFullYear(newDate.getFullYear() + 1, 0, 0)\n      : newDate.setMonth(0, 1);\n  }\n  return newDate.setHours(0, 0, 0, 0);\n}\n", "import {stripTime, today} from './date.js';\nimport {lastItemOf} from './utils.js';\n\n// pattern for format parts\nexport const reFormatTokens = /dd?|DD?|mm?|MM?|yy?(?:yy)?/;\n// pattern for non date parts\nexport const reNonDateParts = /[\\s!-/:-@[-`{-~\u5E74\u6708\u65E5]+/;\n// cache for persed formats\nlet knownFormats = {};\n// parse funtions for date parts\nconst parseFns = {\n  y(date, year) {\n    return new Date(date).setFullYear(parseInt(year, 10));\n  },\n  m(date, month, locale) {\n    const newDate = new Date(date);\n    let monthIndex = parseInt(month, 10) - 1;\n\n    if (isNaN(monthIndex)) {\n      if (!month) {\n        return NaN;\n      }\n\n      const monthName = month.toLowerCase();\n      const compareNames = name => name.toLowerCase().startsWith(monthName);\n      // compare with both short and full names because some locales have periods\n      // in the short names (not equal to the first X letters of the full names)\n      monthIndex = locale.monthsShort.findIndex(compareNames);\n      if (monthIndex < 0) {\n        monthIndex = locale.months.findIndex(compareNames);\n      }\n      if (monthIndex < 0) {\n        return NaN;\n      }\n    }\n\n    newDate.setMonth(monthIndex);\n    return newDate.getMonth() !== normalizeMonth(monthIndex)\n      ? newDate.setDate(0)\n      : newDate.getTime();\n  },\n  d(date, day) {\n    return new Date(date).setDate(parseInt(day, 10));\n  },\n};\n// format functions for date parts\nconst formatFns = {\n  d(date) {\n    return date.getDate();\n  },\n  dd(date) {\n    return padZero(date.getDate(), 2);\n  },\n  D(date, locale) {\n    return locale.daysShort[date.getDay()];\n  },\n  DD(date, locale) {\n    return locale.days[date.getDay()];\n  },\n  m(date) {\n    return date.getMonth() + 1;\n  },\n  mm(date) {\n    return padZero(date.getMonth() + 1, 2);\n  },\n  M(date, locale) {\n    return locale.monthsShort[date.getMonth()];\n  },\n  MM(date, locale) {\n    return locale.months[date.getMonth()];\n  },\n  y(date) {\n    return date.getFullYear();\n  },\n  yy(date) {\n    return padZero(date.getFullYear(), 2).slice(-2);\n  },\n  yyyy(date) {\n    return padZero(date.getFullYear(), 4);\n  },\n};\n\n// get month index in normal range (0 - 11) from any number\nfunction normalizeMonth(monthIndex) {\n  return monthIndex > -1 ? monthIndex % 12 : normalizeMonth(monthIndex + 12);\n}\n\nfunction padZero(num, length) {\n  return num.toString().padStart(length, '0');\n}\n\nfunction parseFormatString(format) {\n  if (typeof format !== 'string') {\n    throw new Error(\"Invalid date format.\");\n  }\n  if (format in knownFormats) {\n    return knownFormats[format];\n  }\n\n  // sprit the format string into parts and seprators\n  const separators = format.split(reFormatTokens);\n  const parts = format.match(new RegExp(reFormatTokens, 'g'));\n  if (separators.length === 0 || !parts) {\n    throw new Error(\"Invalid date format.\");\n  }\n\n  // collect format functions used in the format\n  const partFormatters = parts.map(token => formatFns[token]);\n\n  // collect parse function keys used in the format\n  // iterate over parseFns' keys in order to keep the order of the keys.\n  const partParserKeys = Object.keys(parseFns).reduce((keys, key) => {\n    const token = parts.find(part => part[0] !== 'D' && part[0].toLowerCase() === key);\n    if (token) {\n      keys.push(key);\n    }\n    return keys;\n  }, []);\n\n  return knownFormats[format] = {\n    parser(dateStr, locale) {\n      const dateParts = dateStr.split(reNonDateParts).reduce((dtParts, part, index) => {\n        if (part.length > 0 && parts[index]) {\n          const token = parts[index][0];\n          if (token === 'M') {\n            dtParts.m = part;\n          } else if (token !== 'D') {\n            dtParts[token] = part;\n          }\n        }\n        return dtParts;\n      }, {});\n\n      // iterate over partParserkeys so that the parsing is made in the oder\n      // of year, month and day to prevent the day parser from correcting last\n      // day of month wrongly\n      return partParserKeys.reduce((origDate, key) => {\n        const newDate = parseFns[key](origDate, dateParts[key], locale);\n        // ingnore the part failed to parse\n        return isNaN(newDate) ? origDate : newDate;\n      }, today());\n    },\n    formatter(date, locale) {\n      let dateStr = partFormatters.reduce((str, fn, index) => {\n        return str += `${separators[index]}${fn(date, locale)}`;\n      }, '');\n      // separators' length is always parts' length + 1,\n      return dateStr += lastItemOf(separators);\n    },\n  };\n}\n\nexport function parseDate(dateStr, format, locale) {\n  if (dateStr instanceof Date || typeof dateStr === 'number') {\n    const date = stripTime(dateStr);\n    return isNaN(date) ? undefined : date;\n  }\n  if (!dateStr) {\n    return undefined;\n  }\n  if (dateStr === 'today') {\n    return today();\n  }\n\n  if (format && format.toValue) {\n    const date = format.toValue(dateStr, format, locale);\n    return isNaN(date) ? undefined : stripTime(date);\n  }\n\n  return parseFormatString(format).parser(dateStr, locale);\n}\n\nexport function formatDate(date, format, locale) {\n  if (isNaN(date) || (!date && date !== 0)) {\n    return '';\n  }\n\n  const dateObj = typeof date === 'number' ? new Date(date) : date;\n\n  if (format.toDisplay) {\n    return format.toDisplay(dateObj, format, locale);\n  }\n\n  return parseFormatString(format).formatter(dateObj, locale);\n}\n", "const range = document.createRange();\n\nexport function parseHTML(html) {\n  return range.createContextualFragment(html);\n}\n\nexport function getParent(el) {\n  return el.parentElement\n    || (el.parentNode instanceof ShadowRoot ? el.parentNode.host : undefined);\n}\n\nexport function isActiveElement(el) {\n  return el.getRootNode().activeElement === el;\n}\n\n// equivalent to jQuery's :visble\nexport function isVisible(el) {\n  return !!(el.offsetWidth || el.offsetHeight || el.getClientRects().length);\n}\n\nexport function hideElement(el) {\n  if (el.style.display === 'none') {\n    return;\n  }\n  // back up the existing display setting in data-style-display\n  if (el.style.display) {\n    el.dataset.styleDisplay = el.style.display;\n  }\n  el.style.display = 'none';\n}\n\nexport function showElement(el) {\n  if (el.style.display !== 'none') {\n    return;\n  }\n  if (el.dataset.styleDisplay) {\n    // restore backed-up dispay property\n    el.style.display = el.dataset.styleDisplay;\n    delete el.dataset.styleDisplay;\n  } else {\n    el.style.display = '';\n  }\n}\n\nexport function emptyChildNodes(el) {\n  if (el.firstChild) {\n    el.removeChild(el.firstChild);\n    emptyChildNodes(el);\n  }\n}\n\nexport function replaceChildNodes(el, newChildNodes) {\n  emptyChildNodes(el);\n  if (newChildNodes instanceof DocumentFragment) {\n    el.appendChild(newChildNodes);\n  } else if (typeof newChildNodes === 'string') {\n    el.appendChild(parseHTML(newChildNodes));\n  } else if (typeof newChildNodes.forEach === 'function') {\n    newChildNodes.forEach((node) => {\n      el.appendChild(node);\n    });\n  }\n}\n", "const listenerRegistry = new WeakMap();\nconst {addEventListener, removeEventListener} = EventTarget.prototype;\n\n// Register event listeners to a key object\n// listeners: array of listener definitions;\n//   - each definition must be a flat array of event target and the arguments\n//     used to call addEventListener() on the target\nexport function registerListeners(keyObj, listeners) {\n  let registered = listenerRegistry.get(keyObj);\n  if (!registered) {\n    registered = [];\n    listenerRegistry.set(keyObj, registered);\n  }\n  listeners.forEach((listener) => {\n    addEventListener.call(...listener);\n    registered.push(listener);\n  });\n}\n\nexport function unregisterListeners(keyObj) {\n  let listeners = listenerRegistry.get(keyObj);\n  if (!listeners) {\n    return;\n  }\n  listeners.forEach((listener) => {\n    removeEventListener.call(...listener);\n  });\n  listenerRegistry.delete(keyObj);\n}\n\n// Event.composedPath() polyfill for Edge\n// based on https://gist.github.com/kleinfreund/e9787d73776c0e3750dcfcdc89f100ec\nif (!Event.prototype.composedPath) {\n  const getComposedPath = (node, path = []) => {\n    path.push(node);\n\n    let parent;\n    if (node.parentNode) {\n      parent = node.parentNode;\n    } else if (node.host) { // ShadowRoot\n      parent = node.host;\n    } else if (node.defaultView) {  // Document\n      parent = node.defaultView;\n    }\n    return parent ? getComposedPath(parent, path) : path;\n  };\n\n  Event.prototype.composedPath = function () {\n    return getComposedPath(this.target);\n  };\n}\n\nfunction findFromPath(path, criteria, currentTarget) {\n  const [node, ...rest] = path;\n  if (criteria(node)) {\n    return node;\n  }\n  if (node === currentTarget || node.tagName === 'HTML' || rest.length === 0) {\n    // stop when reaching currentTarget or <html>\n    return;\n  }\n  return findFromPath(rest, criteria, currentTarget);\n}\n\n// Search for the actual target of a delegated event\nexport function findElementInEventPath(ev, selector) {\n  const criteria = typeof selector === 'function'\n    ? selector\n    : el => el instanceof Element && el.matches(selector);\n  return findFromPath(ev.composedPath(), criteria, ev.currentTarget);\n}\n", "// default locales\nexport default {\n  en: {\n    days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n    daysShort: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n    daysMin: [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"],\n    months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n    monthsShort: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\n    today: \"Today\",\n    clear: \"Clear\",\n    titleFormat: \"MM y\"\n  }\n};\n", "// config options updatable by setOptions() and their default values\nexport default {\n  autohide: false,\n  beforeShowDay: null,\n  beforeShowDecade: null,\n  beforeShowMonth: null,\n  beforeShowYear: null,\n  clearButton: false,\n  dateDelimiter: ',',\n  datesDisabled: [],\n  daysOfWeekDisabled: [],\n  daysOfWeekHighlighted: [],\n  defaultViewDate: undefined, // placeholder, defaults to today() by the program\n  disableTouchKeyboard: false,\n  enableOnReadonly: true,\n  format: 'mm/dd/yyyy',\n  language: 'en',\n  maxDate: null,\n  maxNumberOfDates: 1,\n  maxView: 3,\n  minDate: null,\n  nextArrow: '\u00BB',\n  orientation: 'auto',\n  pickLevel: 0,\n  prevArrow: '\u00AB',\n  showDaysOfWeek: true,\n  showOnClick: true,\n  showOnFocus: true,\n  startView: 0,\n  title: '',\n  todayButton: false,\n  todayButtonMode: 0,\n  todayHighlight: false,\n  updateOnBlur: true,\n  weekNumbers: 0,\n  weekStart: 0,\n};\n", "import {pushUnique} from '../lib/utils.js';\nimport {\n  dateValue,\n  regularizeDate,\n  getIsoWeek,\n  getWesternTradWeek,\n  getMidEasternWeek,\n} from '../lib/date.js';\nimport {reFormatTokens, parseDate} from '../lib/date-format.js';\nimport {parseHTML} from '../lib/dom.js';\nimport defaultOptions from './defaultOptions.js';\n\nconst {\n  language: defaultLang,\n  format: defaultFormat,\n  weekStart: defaultWeekStart,\n} = defaultOptions;\n\n// Reducer function to filter out invalid day-of-week from the input\nfunction sanitizeDOW(dow, day) {\n  return dow.length < 6 && day >= 0 && day < 7\n    ? pushUnique(dow, day)\n    : dow;\n}\n\nfunction determineGetWeekMethod(numberingMode, weekStart) {\n  const methodId = numberingMode === 4\n    ? (weekStart === 6 ? 3 : !weekStart + 1)\n    : numberingMode;\n  switch (methodId) {\n    case 1:\n      return getIsoWeek;\n    case 2:\n      return getWesternTradWeek;\n    case 3:\n      return getMidEasternWeek;\n  }\n}\n\nfunction updateWeekStart(newValue, config, weekNumbers) {\n  config.weekStart = newValue;\n  config.weekEnd = (newValue + 6) % 7;\n  if (weekNumbers === 4) {\n    config.getWeekNumber = determineGetWeekMethod(4, newValue);\n  }\n  return newValue;\n}\n\n// validate input date. if invalid, fallback to the original value\nfunction validateDate(value, format, locale, origValue) {\n  const date = parseDate(value, format, locale);\n  return date !== undefined ? date : origValue;\n}\n\n// Validate viewId. if invalid, fallback to the original value\nfunction validateViewId(value, origValue, max = 3) {\n  const viewId = parseInt(value, 10);\n  return viewId >= 0 && viewId <= max ? viewId : origValue;\n}\n\nfunction replaceOptions(options, from, to, convert = undefined) {\n  if (from in options) {\n    if (!(to in options)) {\n      options[to] = convert ? convert(options[from]) : options[from];\n    }\n    delete options[from];\n  }\n}\n\n// Create Datepicker configuration to set\nexport default function processOptions(options, datepicker) {\n  const inOpts = Object.assign({}, options);\n  const config = {};\n  const locales = datepicker.constructor.locales;\n  const rangeEnd = !!datepicker.rangeSideIndex;\n  let {\n    datesDisabled,\n    format,\n    language,\n    locale,\n    maxDate,\n    maxView,\n    minDate,\n    pickLevel,\n    startView,\n    weekNumbers,\n    weekStart,\n  } = datepicker.config || {};\n\n  // for backword compatibility\n  replaceOptions(inOpts, 'calendarWeeks', 'weekNumbers', val => val ? 1 : 0);\n  replaceOptions(inOpts, 'clearBtn', 'clearButton');\n  replaceOptions(inOpts, 'todayBtn', 'todayButton');\n  replaceOptions(inOpts, 'todayBtnMode', 'todayButtonMode');\n\n  if (inOpts.language) {\n    let lang;\n    if (inOpts.language !== language) {\n      if (locales[inOpts.language]) {\n        lang = inOpts.language;\n      } else {\n        // Check if langauge + region tag can fallback to the one without\n        // region (e.g. fr-CA \u2192 fr)\n        lang = inOpts.language.split('-')[0];\n        if (!locales[lang]) {\n          lang = false;\n        }\n      }\n    }\n    delete inOpts.language;\n    if (lang) {\n      language = config.language = lang;\n\n      // update locale as well when updating language\n      const origLocale = locale || locales[defaultLang];\n      // use default language's properties for the fallback\n      locale = Object.assign({\n        format: defaultFormat,\n        weekStart: defaultWeekStart\n      }, locales[defaultLang]);\n      if (language !== defaultLang) {\n        Object.assign(locale, locales[language]);\n      }\n      config.locale = locale;\n      // if format and/or weekStart are the same as old locale's defaults,\n      // update them to new locale's defaults\n      if (format === origLocale.format) {\n        format = config.format = locale.format;\n      }\n      if (weekStart === origLocale.weekStart) {\n        weekStart = updateWeekStart(locale.weekStart, config, weekNumbers);\n      }\n    }\n  }\n\n  if (inOpts.format) {\n    const hasToDisplay = typeof inOpts.format.toDisplay === 'function';\n    const hasToValue = typeof inOpts.format.toValue === 'function';\n    const validFormatString = reFormatTokens.test(inOpts.format);\n    if ((hasToDisplay && hasToValue) || validFormatString) {\n      format = config.format = inOpts.format;\n    }\n    delete inOpts.format;\n  }\n\n  //*** pick level ***//\n  let newPickLevel = pickLevel;\n  if ('pickLevel' in inOpts) {\n    newPickLevel = validateViewId(inOpts.pickLevel, pickLevel, 2);\n    delete inOpts.pickLevel;\n  }\n  if (newPickLevel !== pickLevel) {\n    if (newPickLevel > pickLevel) {\n      // complement current minDate/madDate so that the existing range will be\n      // expanded to fit the new level later\n      if (!('minDate' in inOpts)) {\n        inOpts.minDate = minDate;\n      }\n      if (!('maxDate' in inOpts)) {\n        inOpts.maxDate = maxDate;\n      }\n    }\n    // complement datesDisabled so that it will be reset later\n    if (datesDisabled && !inOpts.datesDisabled) {\n      inOpts.datesDisabled = [];\n    }\n    pickLevel = config.pickLevel = newPickLevel;\n  }\n\n  //*** dates ***//\n  // while min and maxDate for \"no limit\" in the options are better to be null\n  // (especially when updating), the ones in the config have to be undefined\n  // because null is treated as 0 (= unix epoch) when comparing with time value\n  let minDt = minDate;\n  let maxDt = maxDate;\n  if ('minDate' in inOpts) {\n    const defaultMinDt = dateValue(0, 0, 1);\n    minDt = inOpts.minDate === null\n      ? defaultMinDt  // set 0000-01-01 to prevent negative values for year\n      : validateDate(inOpts.minDate, format, locale, minDt);\n    if (minDt !== defaultMinDt) {\n      minDt = regularizeDate(minDt, pickLevel, false);\n    }\n    delete inOpts.minDate;\n  }\n  if ('maxDate' in inOpts) {\n    maxDt = inOpts.maxDate === null\n      ? undefined\n      : validateDate(inOpts.maxDate, format, locale, maxDt);\n    if (maxDt !== undefined) {\n      maxDt = regularizeDate(maxDt, pickLevel, true);\n    }\n    delete inOpts.maxDate;\n  }\n  if (maxDt < minDt) {\n    minDate = config.minDate = maxDt;\n    maxDate = config.maxDate = minDt;\n  } else {\n    if (minDate !== minDt) {\n      minDate = config.minDate = minDt;\n    }\n    if (maxDate !== maxDt) {\n      maxDate = config.maxDate = maxDt;\n    }\n  }\n\n  if (inOpts.datesDisabled) {\n    const dtsDisabled = inOpts.datesDisabled;\n    if (typeof dtsDisabled === 'function') {\n      config.datesDisabled = null;\n      config.checkDisabled = (timeValue, viewId) => dtsDisabled(\n        new Date(timeValue),\n        viewId,\n        rangeEnd\n      );\n    } else {\n      const disabled = config.datesDisabled = dtsDisabled.reduce((dates, dt) => {\n        const date = parseDate(dt, format, locale);\n        return date !== undefined\n          ? pushUnique(dates, regularizeDate(date, pickLevel, rangeEnd))\n          : dates;\n      }, []);\n      config.checkDisabled = timeValue => disabled.includes(timeValue);\n    }\n    delete inOpts.datesDisabled;\n  }\n  if ('defaultViewDate' in inOpts) {\n    const viewDate = parseDate(inOpts.defaultViewDate, format, locale);\n    if (viewDate !== undefined) {\n      config.defaultViewDate = viewDate;\n    }\n    delete inOpts.defaultViewDate;\n  }\n\n  //*** days of week ***//\n  if ('weekStart' in inOpts) {\n    const wkStart = Number(inOpts.weekStart) % 7;\n    if (!isNaN(wkStart)) {\n      weekStart = updateWeekStart(wkStart, config, weekNumbers);\n    }\n    delete inOpts.weekStart;\n  }\n  if (inOpts.daysOfWeekDisabled) {\n    config.daysOfWeekDisabled = inOpts.daysOfWeekDisabled.reduce(sanitizeDOW, []);\n    delete inOpts.daysOfWeekDisabled;\n  }\n  if (inOpts.daysOfWeekHighlighted) {\n    config.daysOfWeekHighlighted = inOpts.daysOfWeekHighlighted.reduce(sanitizeDOW, []);\n    delete inOpts.daysOfWeekHighlighted;\n  }\n\n  //*** week numbers ***//\n  if ('weekNumbers' in inOpts) {\n    let method = inOpts.weekNumbers;\n    if (method) {\n      const getWeekNumber = typeof method === 'function'\n        ? (timeValue, startOfWeek) => method(new Date(timeValue), startOfWeek)\n        : determineGetWeekMethod((method = parseInt(method, 10)), weekStart);\n      if (getWeekNumber) {\n        weekNumbers = config.weekNumbers = method;\n        config.getWeekNumber = getWeekNumber;\n      }\n    } else {\n      weekNumbers = config.weekNumbers = 0;\n      config.getWeekNumber = null;\n    }\n    delete inOpts.weekNumbers;\n  }\n\n  //*** multi date ***//\n  if ('maxNumberOfDates' in inOpts) {\n    const maxNumberOfDates = parseInt(inOpts.maxNumberOfDates, 10);\n    if (maxNumberOfDates >= 0) {\n      config.maxNumberOfDates = maxNumberOfDates;\n      config.multidate = maxNumberOfDates !== 1;\n    }\n    delete inOpts.maxNumberOfDates;\n  }\n  if (inOpts.dateDelimiter) {\n    config.dateDelimiter = String(inOpts.dateDelimiter);\n    delete inOpts.dateDelimiter;\n  }\n\n  //*** view ***//\n  let newMaxView = maxView;\n  if ('maxView' in inOpts) {\n    newMaxView = validateViewId(inOpts.maxView, maxView);\n    delete inOpts.maxView;\n  }\n  // ensure max view >= pick level\n  newMaxView = pickLevel > newMaxView ? pickLevel : newMaxView;\n  if (newMaxView !== maxView) {\n    maxView = config.maxView = newMaxView;\n  }\n\n  let newStartView = startView;\n  if ('startView' in inOpts) {\n    newStartView = validateViewId(inOpts.startView, newStartView);\n    delete inOpts.startView;\n  }\n  // ensure pick level <= start view <= max view\n  if (newStartView < pickLevel) {\n    newStartView = pickLevel;\n  } else if (newStartView > maxView) {\n    newStartView = maxView;\n  }\n  if (newStartView !== startView) {\n    config.startView = newStartView;\n  }\n\n  //*** template ***//\n  if (inOpts.prevArrow) {\n    const prevArrow = parseHTML(inOpts.prevArrow);\n    if (prevArrow.childNodes.length > 0) {\n      config.prevArrow = prevArrow.childNodes;\n    }\n    delete inOpts.prevArrow;\n  }\n  if (inOpts.nextArrow) {\n    const nextArrow = parseHTML(inOpts.nextArrow);\n    if (nextArrow.childNodes.length > 0) {\n      config.nextArrow = nextArrow.childNodes;\n    }\n    delete inOpts.nextArrow;\n  }\n\n  //*** misc ***//\n  if ('disableTouchKeyboard' in inOpts) {\n    config.disableTouchKeyboard = 'ontouchstart' in document && !!inOpts.disableTouchKeyboard;\n    delete inOpts.disableTouchKeyboard;\n  }\n  if (inOpts.orientation) {\n    const orientation = inOpts.orientation.toLowerCase().split(/\\s+/g);\n    config.orientation = {\n      x: orientation.find(x => (x === 'left' || x === 'right')) || 'auto',\n      y: orientation.find(y => (y === 'top' || y === 'bottom')) || 'auto',\n    };\n    delete inOpts.orientation;\n  }\n  if ('todayButtonMode' in inOpts) {\n    switch(inOpts.todayButtonMode) {\n      case 0:\n      case 1:\n        config.todayButtonMode = inOpts.todayButtonMode;\n    }\n    delete inOpts.todayButtonMode;\n  }\n\n  //*** copy the rest ***//\n  Object.entries(inOpts).forEach(([key, value]) => {\n    if (value !== undefined && key in defaultOptions) {\n      config[key] = value;\n    }\n  });\n\n  return config;\n}\n", "const defaultShortcutKeys = {\n  show: {key: 'ArrowDown'},\n  hide: null,\n  toggle: {key: 'Escape'},\n  prevButton: {key: 'ArrowLeft', ctrlOrMetaKey: true},\n  nextButton: {key: 'ArrowRight', ctrlOrMetaKey: true},\n  viewSwitch: {key: 'ArrowUp', ctrlOrMetaKey: true},\n  clearButton: {key: 'Backspace', ctrlOrMetaKey: true},\n  todayButton: {key: '.', ctrlOrMetaKey: true},\n  exitEditMode: {key: 'ArrowDown', ctrlOrMetaKey: true},\n};\n\nexport default function createShortcutKeyConfig(options) {\n  return Object.keys(defaultShortcutKeys).reduce((keyDefs, shortcut) => {\n    const keyDef = options[shortcut] === undefined\n      ? defaultShortcutKeys[shortcut]\n      : options[shortcut];\n    const key = keyDef && keyDef.key;\n    if (!key || typeof key !== 'string') {\n      return keyDefs;\n    }\n\n    const normalizedDef = {\n      key,\n      ctrlOrMetaKey: !!(keyDef.ctrlOrMetaKey || keyDef.ctrlKey || keyDef.metaKey),\n    };\n    if (key.length > 1) {\n      normalizedDef.altKey = !!keyDef.altKey;\n      normalizedDef.shiftKey = !!keyDef.shiftKey;\n    }\n    keyDefs[shortcut] = normalizedDef;\n    return keyDefs;\n  }, {});\n}\n", "import {optimizeTemplateHTML} from '../../lib/utils.js';\n\nconst getButtons = buttonList => buttonList\n  .map(classes => `<button type=\"button\" class=\"%buttonClass% ${classes}\" tabindex=\"-1\"></button>`)\n  .join('');\n\nexport default optimizeTemplateHTML(`<div class=\"datepicker\">\n  <div class=\"datepicker-picker\">\n    <div class=\"datepicker-header\">\n      <div class=\"datepicker-title\"></div>\n      <div class=\"datepicker-controls\">\n        ${getButtons([\n          'prev-button prev-btn',\n          'view-switch',\n          'next-button next-btn',\n        ])}\n      </div>\n    </div>\n    <div class=\"datepicker-main\"></div>\n    <div class=\"datepicker-footer\">\n      <div class=\"datepicker-controls\">\n        ${getButtons([\n          'today-button today-btn',\n          'clear-button clear-btn',\n        ])}\n      </div>\n    </div>\n  </div>\n</div>`);\n", "import {createTagRepeat, optimizeTemplateHTML} from '../../lib/utils.js';\n\nexport default optimizeTemplateHTML(`<div class=\"days\">\n  <div class=\"days-of-week\">${createTagRepeat('span', 7, {class: 'dow'})}</div>\n  <div class=\"datepicker-grid\">${createTagRepeat('span', 42)}</div>\n</div>`);\n", "import {createTagRepeat, optimizeTemplateHTML} from '../../lib/utils.js';\n\nexport default optimizeTemplateHTML(`<div class=\"week-numbers calendar-weeks\">\n  <div class=\"days-of-week\"><span class=\"dow\"></span></div>\n  <div class=\"weeks\">${createTagRepeat('span', 6, {class: 'week'})}</div>\n</div>`);\n\n", "import {pushUnique} from '../../lib/utils.js';\nimport {parseHTML, replaceChildNodes} from '../../lib/dom.js';\n\n// Base class of the view classes\nexport default class View {\n  constructor(picker, config) {\n    Object.assign(this, config, {\n      picker,\n      element: parseHTML(`<div class=\"datepicker-view\"></div>`).firstChild,\n      selected: [],\n      isRangeEnd: !!picker.datepicker.rangeSideIndex,\n    });\n    this.init(this.picker.datepicker.config);\n  }\n\n  init(options) {\n    if ('pickLevel' in options) {\n      this.isMinView = this.id === options.pickLevel;\n    }\n    this.setOptions(options);\n    this.updateFocus();\n    this.updateSelection();\n  }\n\n  prepareForRender(switchLabel, prevButtonDisabled, nextButtonDisabled) {\n    // refresh disabled years on every render in order to clear the ones added\n    // by beforeShow hook at previous render\n    this.disabled = [];\n\n    const picker = this.picker;\n    picker.setViewSwitchLabel(switchLabel);\n    picker.setPrevButtonDisabled(prevButtonDisabled);\n    picker.setNextButtonDisabled(nextButtonDisabled);\n  }\n\n  setDisabled(date, classList) {\n    classList.add('disabled');\n    pushUnique(this.disabled, date);\n  }\n\n  // Execute beforeShow() callback and apply the result to the element\n  // args:\n  performBeforeHook(el, timeValue) {\n    let result = this.beforeShow(new Date(timeValue));\n    switch (typeof result) {\n      case 'boolean':\n        result = {enabled: result};\n        break;\n      case 'string':\n        result = {classes: result};\n    }\n\n    if (result) {\n      const classList = el.classList;\n      if (result.enabled === false) {\n        this.setDisabled(timeValue, classList);\n      }\n      if (result.classes) {\n        const extraClasses = result.classes.split(/\\s+/);\n        classList.add(...extraClasses);\n        if (extraClasses.includes('disabled')) {\n          this.setDisabled(timeValue, classList);\n        }\n      }\n      if (result.content) {\n        replaceChildNodes(el, result.content);\n      }\n    }\n  }\n\n  renderCell(el, content, cellVal, date, {selected, range}, outOfScope, extraClasses = []) {\n    el.textContent = content;\n    if (this.isMinView) {\n      el.dataset.date = date;\n    }\n\n    const classList = el.classList;\n    el.className = `datepicker-cell ${this.cellClass}`;\n    if (cellVal < this.first) {\n      classList.add('prev');\n    } else if (cellVal > this.last) {\n      classList.add('next');\n    }\n    classList.add(...extraClasses);\n    if (outOfScope || this.checkDisabled(date, this.id)) {\n      this.setDisabled(date, classList);\n    }\n    if (range) {\n      const [rangeStart, rangeEnd] = range;\n      if (cellVal > rangeStart && cellVal < rangeEnd) {\n        classList.add('range');\n      }\n      if (cellVal === rangeStart) {\n        classList.add('range-start');\n      }\n      if (cellVal === rangeEnd) {\n        classList.add('range-end');\n      }\n    }\n    if (selected.includes(cellVal)) {\n      classList.add('selected');\n    }\n    if (cellVal === this.focused) {\n      classList.add('focused');\n    }\n\n    if (this.beforeShow) {\n      this.performBeforeHook(el, date);\n    }\n  }\n\n  refreshCell(el, cellVal, selected, [rangeStart, rangeEnd]) {\n    const classList = el.classList;\n    classList.remove('range', 'range-start', 'range-end', 'selected', 'focused');\n    if (cellVal > rangeStart && cellVal < rangeEnd) {\n      classList.add('range');\n    }\n    if (cellVal === rangeStart) {\n      classList.add('range-start');\n    }\n    if (cellVal === rangeEnd) {\n      classList.add('range-end');\n    }\n    if (selected.includes(cellVal)) {\n      classList.add('selected');\n    }\n    if (cellVal === this.focused) {\n      classList.add('focused');\n    }\n  }\n\n  changeFocusedCell(cellIndex) {\n    this.grid.querySelectorAll('.focused').forEach((el) => {\n      el.classList.remove('focused');\n    });\n    this.grid.children[cellIndex].classList.add('focused');\n  }\n}\n", "import {today, dateValue, addDays, addWeeks, dayOfTheWeekOf} from '../../lib/date.js';\nimport {formatDate} from '../../lib/date-format.js';\nimport {parseHTML, showElement, hideElement} from '../../lib/dom.js';\nimport daysTemplate from '../templates/daysTemplate.js';\nimport weekNumbersTemplate from '../templates/weekNumbersTemplate.js';\nimport View from './View.js';\n\nexport default class DaysView extends View {\n  constructor(picker) {\n    super(picker, {\n      id: 0,\n      name: 'days',\n      cellClass: 'day',\n    });\n  }\n\n  init(options, onConstruction = true) {\n    if (onConstruction) {\n      const inner = parseHTML(daysTemplate).firstChild;\n      this.dow = inner.firstChild;\n      this.grid = inner.lastChild;\n      this.element.appendChild(inner);\n    }\n    super.init(options);\n  }\n\n  setOptions(options) {\n    let updateDOW;\n\n    if ('minDate' in options) {\n      this.minDate = options.minDate;\n    }\n    if ('maxDate' in options) {\n      this.maxDate = options.maxDate;\n    }\n    if (options.checkDisabled) {\n      this.checkDisabled = options.checkDisabled;\n    }\n    if (options.daysOfWeekDisabled) {\n      this.daysOfWeekDisabled = options.daysOfWeekDisabled;\n      updateDOW = true;\n    }\n    if (options.daysOfWeekHighlighted) {\n      this.daysOfWeekHighlighted = options.daysOfWeekHighlighted;\n    }\n    if ('todayHighlight' in options) {\n      this.todayHighlight = options.todayHighlight;\n    }\n    if ('weekStart' in options) {\n      this.weekStart = options.weekStart;\n      this.weekEnd = options.weekEnd;\n      updateDOW = true;\n    }\n    if (options.locale) {\n      const locale = this.locale = options.locale;\n      this.dayNames = locale.daysMin;\n      this.switchLabelFormat = locale.titleFormat;\n      updateDOW = true;\n    }\n    if ('beforeShowDay' in options) {\n      this.beforeShow = typeof options.beforeShowDay === 'function'\n        ? options.beforeShowDay\n        : undefined;\n    }\n\n    if ('weekNumbers' in options) {\n      if (options.weekNumbers && !this.weekNumbers) {\n        const weeksElem = parseHTML(weekNumbersTemplate).firstChild;\n        this.weekNumbers = {\n          element: weeksElem,\n          dow: weeksElem.firstChild,\n          weeks: weeksElem.lastChild,\n        };\n        this.element.insertBefore(weeksElem, this.element.firstChild);\n      } else if (this.weekNumbers && !options.weekNumbers) {\n        this.element.removeChild(this.weekNumbers.element);\n        this.weekNumbers = null;\n      }\n    }\n\n    if ('getWeekNumber' in options) {\n      this.getWeekNumber = options.getWeekNumber;\n    }\n\n    if ('showDaysOfWeek' in options) {\n      if (options.showDaysOfWeek) {\n        showElement(this.dow);\n        if (this.weekNumbers) {\n          showElement(this.weekNumbers.dow);\n        }\n      } else {\n        hideElement(this.dow);\n        if (this.weekNumbers) {\n          hideElement(this.weekNumbers.dow);\n        }\n      }\n    }\n\n    // update days-of-week when locale, daysOfweekDisabled or weekStart is changed\n    if (updateDOW) {\n      Array.from(this.dow.children).forEach((el, index) => {\n        const dow = (this.weekStart + index) % 7;\n        el.textContent = this.dayNames[dow];\n        el.className = this.daysOfWeekDisabled.includes(dow) ? 'dow disabled' : 'dow';\n      });\n    }\n  }\n\n  // Apply update on the focused date to view's settings\n  updateFocus() {\n    const viewDate = new Date(this.picker.viewDate);\n    const viewYear = viewDate.getFullYear();\n    const viewMonth = viewDate.getMonth();\n    const firstOfMonth = dateValue(viewYear, viewMonth, 1);\n    const start = dayOfTheWeekOf(firstOfMonth, this.weekStart, this.weekStart);\n\n    this.first = firstOfMonth;\n    this.last = dateValue(viewYear, viewMonth + 1, 0);\n    this.start = start;\n    this.focused = this.picker.viewDate;\n  }\n\n  // Apply update on the selected dates to view's settings\n  updateSelection() {\n    const {dates, rangepicker} = this.picker.datepicker;\n    this.selected = dates;\n    if (rangepicker) {\n      this.range = rangepicker.dates;\n    }\n  }\n\n   // Update the entire view UI\n  render() {\n    // update today marker on ever render\n    this.today = this.todayHighlight ? today() : undefined;\n\n    this.prepareForRender(\n      formatDate(this.focused, this.switchLabelFormat, this.locale),\n      this.first <= this.minDate,\n      this.last >= this.maxDate\n    );\n\n    if (this.weekNumbers) {\n      const weekStart = this.weekStart;\n      const startOfWeek = dayOfTheWeekOf(this.first, weekStart, weekStart);\n      Array.from(this.weekNumbers.weeks.children).forEach((el, index) => {\n        const dateOfWeekStart = addWeeks(startOfWeek, index);\n        el.textContent = this.getWeekNumber(dateOfWeekStart, weekStart);\n        if (index > 3) {\n          el.classList[dateOfWeekStart > this.last ? 'add' : 'remove']('next');\n        }\n      });\n    }\n    Array.from(this.grid.children).forEach((el, index) => {\n      const current = addDays(this.start, index);\n      const dateObj = new Date(current);\n      const day = dateObj.getDay();\n      const extraClasses = [];\n\n      if (this.today === current) {\n        extraClasses.push('today');\n      }\n      if (this.daysOfWeekHighlighted.includes(day)) {\n        extraClasses.push('highlighted');\n      }\n\n      this.renderCell(\n        el,\n        dateObj.getDate(),\n        current,\n        current,\n        this,\n        current < this.minDate\n          || current > this.maxDate\n          || this.daysOfWeekDisabled.includes(day),\n        extraClasses\n      );\n    });\n  }\n\n  // Update the view UI by applying the changes of selected and focused items\n  refresh() {\n    const range = this.range || [];\n    Array.from(this.grid.children).forEach((el) => {\n      this.refreshCell(el, Number(el.dataset.date), this.selected, range);\n    });\n  }\n\n  // Update the view UI by applying the change of focused item\n  refreshFocus() {\n    this.changeFocusedCell(Math.round((this.focused - this.start) / 86400000));\n  }\n}\n", "import {pushUnique, createTagRepeat} from '../../lib/utils.js';\nimport {dateValue, regularizeDate} from '../../lib/date.js';\nimport {parseHTML} from '../../lib/dom.js';\nimport View from './View.js';\n\nfunction computeMonthRange(range, thisYear) {\n  if (!range || !range[0] || !range[1]) {\n    return;\n  }\n\n  const [[startY, startM], [endY, endM]] = range;\n  if (startY > thisYear || endY < thisYear) {\n    return;\n  }\n  return [\n    startY === thisYear ? startM : -1,\n    endY === thisYear ? endM : 12,\n  ];\n}\n\nexport default class MonthsView extends View {\n  constructor(picker) {\n    super(picker, {\n      id: 1,\n      name: 'months',\n      cellClass: 'month',\n    });\n  }\n\n  init(options, onConstruction = true) {\n    if (onConstruction) {\n      this.grid = this.element;\n      this.element.classList.add('months', 'datepicker-grid');\n      this.grid.appendChild(parseHTML(createTagRepeat('span', 12, {'data-month': ix => ix})));\n      this.first = 0;\n      this.last = 11;\n    }\n    super.init(options);\n  }\n\n  setOptions(options) {\n    if (options.locale) {\n      this.monthNames = options.locale.monthsShort;\n    }\n    if ('minDate' in options) {\n      if (options.minDate === undefined) {\n        this.minYear = this.minMonth = this.minDate = undefined;\n      } else {\n        const minDateObj = new Date(options.minDate);\n        this.minYear = minDateObj.getFullYear();\n        this.minMonth = minDateObj.getMonth();\n        this.minDate = minDateObj.setDate(1);\n      }\n    }\n    if ('maxDate' in options) {\n      if (options.maxDate === undefined) {\n        this.maxYear = this.maxMonth = this.maxDate = undefined;\n      } else {\n        const maxDateObj = new Date(options.maxDate);\n        this.maxYear = maxDateObj.getFullYear();\n        this.maxMonth = maxDateObj.getMonth();\n        this.maxDate = dateValue(this.maxYear, this.maxMonth + 1, 0);\n      }\n    }\n    if (options.checkDisabled) {\n      this.checkDisabled = this.isMinView || options.datesDisabled === null\n        ? options.checkDisabled\n        : () => false;\n    }\n    if ('beforeShowMonth' in options) {\n      this.beforeShow = typeof options.beforeShowMonth === 'function'\n        ? options.beforeShowMonth\n        : undefined;\n    }\n  }\n\n  // Update view's settings to reflect the viewDate set on the picker\n  updateFocus() {\n    const viewDate = new Date(this.picker.viewDate);\n    this.year = viewDate.getFullYear();\n    this.focused = viewDate.getMonth();\n  }\n\n  // Update view's settings to reflect the selected dates\n  updateSelection() {\n    const {dates, rangepicker} = this.picker.datepicker;\n    this.selected = dates.reduce((selected, timeValue) => {\n      const date = new Date(timeValue);\n      const year = date.getFullYear();\n      const month = date.getMonth();\n      if (selected[year] === undefined) {\n        selected[year] = [month];\n      } else {\n        pushUnique(selected[year], month);\n      }\n      return selected;\n    }, {});\n    if (rangepicker && rangepicker.dates) {\n      this.range = rangepicker.dates.map(timeValue => {\n        const date = new Date(timeValue);\n        return isNaN(date) ? undefined : [date.getFullYear(), date.getMonth()];\n      });\n    }\n  }\n\n  // Update the entire view UI\n  render() {\n    this.prepareForRender(\n      this.year,\n      this.year <= this.minYear,\n      this.year >= this.maxYear\n    );\n\n    const selected = this.selected[this.year] || [];\n    const yrOutOfRange = this.year < this.minYear || this.year > this.maxYear;\n    const isMinYear = this.year === this.minYear;\n    const isMaxYear = this.year === this.maxYear;\n    const range = computeMonthRange(this.range, this.year);\n\n    Array.from(this.grid.children).forEach((el, index) => {\n      const date = regularizeDate(new Date(this.year, index, 1), 1, this.isRangeEnd);\n\n      this.renderCell(\n        el,\n        this.monthNames[index],\n        index,\n        date,\n        {selected, range},\n        yrOutOfRange\n          || isMinYear && index < this.minMonth\n          || isMaxYear && index > this.maxMonth\n      );\n    });\n  }\n\n  // Update the view UI by applying the changes of selected and focused items\n  refresh() {\n    const selected = this.selected[this.year] || [];\n    const range = computeMonthRange(this.range, this.year) || [];\n    Array.from(this.grid.children).forEach((el, index) => {\n      this.refreshCell(el, index, selected, range);\n    });\n  }\n\n  // Update the view UI by applying the change of focused item\n  refreshFocus() {\n    this.changeFocusedCell(this.focused);\n  }\n}", "import {pushUnique, createTagRepeat} from '../../lib/utils.js';\nimport {dateValue, regularizeDate, startOfYearPeriod} from '../../lib/date.js';\nimport {parseHTML} from '../../lib/dom.js';\nimport View from './View.js';\n\nfunction toTitleCase(word) {\n  return [...word].reduce((str, ch, ix) => str += ix ? ch : ch.toUpperCase(), '');\n}\n\n// Class representing the years and decades view elements\nexport default class YearsView extends View {\n  constructor(picker, config) {\n    super(picker, config);\n  }\n\n  init(options, onConstruction = true) {\n    if (onConstruction) {\n      this.navStep = this.step * 10;\n      this.beforeShowOption = `beforeShow${toTitleCase(this.cellClass)}`;\n      this.grid = this.element;\n      this.element.classList.add(this.name, 'datepicker-grid');\n      this.grid.appendChild(parseHTML(createTagRepeat('span', 12)));\n    }\n    super.init(options);\n  }\n\n  setOptions(options) {\n    if ('minDate' in options) {\n      if (options.minDate === undefined) {\n        this.minYear = this.minDate = undefined;\n      } else {\n        this.minYear = startOfYearPeriod(options.minDate, this.step);\n        this.minDate = dateValue(this.minYear, 0, 1);\n      }\n    }\n    if ('maxDate' in options) {\n      if (options.maxDate === undefined) {\n        this.maxYear = this.maxDate = undefined;\n      } else {\n        this.maxYear = startOfYearPeriod(options.maxDate, this.step);\n        this.maxDate = dateValue(this.maxYear, 11, 31);\n      }\n    }\n    if (options.checkDisabled) {\n      this.checkDisabled = this.isMinView || options.datesDisabled === null\n        ? options.checkDisabled\n        : () => false;\n    }\n    if (this.beforeShowOption in options) {\n      const beforeShow = options[this.beforeShowOption];\n      this.beforeShow = typeof beforeShow === 'function' ? beforeShow : undefined;\n    }\n  }\n\n  // Update view's settings to reflect the viewDate set on the picker\n  updateFocus() {\n    const viewDate = new Date(this.picker.viewDate);\n    const first = startOfYearPeriod(viewDate, this.navStep);\n    const last = first + 9 * this.step;\n\n    this.first = first;\n    this.last = last;\n    this.start = first - this.step;\n    this.focused = startOfYearPeriod(viewDate, this.step);\n  }\n\n  // Update view's settings to reflect the selected dates\n  updateSelection() {\n    const {dates, rangepicker} = this.picker.datepicker;\n    this.selected = dates.reduce((years, timeValue) => {\n      return pushUnique(years, startOfYearPeriod(timeValue, this.step));\n    }, []);\n    if (rangepicker && rangepicker.dates) {\n      this.range = rangepicker.dates.map(timeValue => {\n        if (timeValue !== undefined) {\n          return startOfYearPeriod(timeValue, this.step);\n        }\n      });\n    }\n  }\n\n  // Update the entire view UI\n  render() {\n    this.prepareForRender(\n      `${this.first}-${this.last}`,\n      this.first <= this.minYear,\n      this.last >= this.maxYear\n    );\n\n    Array.from(this.grid.children).forEach((el, index) => {\n      const current = this.start + (index * this.step);\n      const date = regularizeDate(new Date(current, 0, 1), 2, this.isRangeEnd);\n\n      el.dataset.year = current;\n      this.renderCell(\n        el,\n        current,\n        current,\n        date,\n        this,\n        current < this.minYear || current > this.maxYear\n      );\n    });\n  }\n\n  // Update the view UI by applying the changes of selected and focused items\n  refresh() {\n    const range = this.range || [];\n    Array.from(this.grid.children).forEach((el) => {\n      this.refreshCell(el, Number(el.textContent), this.selected, range);\n    });\n  }\n\n  // Update the view UI by applying the change of focused item\n  refreshFocus() {\n    this.changeFocusedCell(Math.round((this.focused - this.start) / this.step));\n  }\n}\n", "import {limitToRange} from '../lib/utils.js';\nimport {today, addMonths, addYears} from '../lib/date.js';\nimport {isActiveElement} from '../lib/dom.js';\n\nexport function triggerDatepickerEvent(datepicker, type) {\n  const options = {\n    bubbles: true,\n    cancelable: true,\n    detail: {\n      date: datepicker.getDate(),\n      viewDate: new Date(datepicker.picker.viewDate),\n      viewId: datepicker.picker.currentView.id,\n      datepicker,\n    },\n  };\n  datepicker.element.dispatchEvent(new CustomEvent(type, options));\n}\n\n// direction: -1 (to previous), 1 (to next)\nexport function goToPrevOrNext(datepicker, direction) {\n  const {config, picker} = datepicker;\n  const {currentView, viewDate} = picker;\n  let newViewDate;\n  switch (currentView.id) {\n    case 0:\n      newViewDate = addMonths(viewDate, direction);\n      break;\n    case 1:\n      newViewDate = addYears(viewDate, direction);\n      break;\n    default:\n      newViewDate = addYears(viewDate, direction * currentView.navStep);\n  }\n  newViewDate = limitToRange(newViewDate, config.minDate, config.maxDate);\n  picker.changeFocus(newViewDate).render();\n}\n\nexport function switchView(datepicker) {\n  const viewId = datepicker.picker.currentView.id;\n  if (viewId === datepicker.config.maxView) {\n    return;\n  }\n  datepicker.picker.changeView(viewId + 1).render();\n}\n\nexport function clearSelection(datepicker) {\n  datepicker.setDate({clear: true});\n}\n\nexport function goToOrSelectToday(datepicker) {\n  const currentDate = today();\n  if (datepicker.config.todayButtonMode === 1) {\n    datepicker.setDate(currentDate, {forceRefresh: true, viewDate: currentDate});\n  } else {\n    datepicker.setFocusedDate(currentDate, true);\n  }\n}\n\nexport function unfocus(datepicker) {\n  const onBlur = () => {\n    if (datepicker.config.updateOnBlur) {\n      datepicker.update({revert: true});\n    } else {\n      datepicker.refresh('input');\n    }\n    datepicker.hide();\n  };\n  const element = datepicker.element;\n\n  if (isActiveElement(element)) {\n    element.addEventListener('blur', onBlur, {once: true});\n  } else {\n    onBlur();\n  }\n}\n", "import {addMonths, addYears} from '../lib/date.js';\nimport {findElementInEventPath} from '../lib/event.js';\nimport {goToPrevOrNext, switchView} from './functions.js';\n\nfunction goToSelectedMonthOrYear(datepicker, selection) {\n  const picker = datepicker.picker;\n  const viewDate = new Date(picker.viewDate);\n  const viewId = picker.currentView.id;\n  const newDate = viewId === 1\n    ? addMonths(viewDate, selection - viewDate.getMonth())\n    : addYears(viewDate, selection - viewDate.getFullYear());\n\n  picker.changeFocus(newDate).changeView(viewId - 1).render();\n}\n\nexport function onClickViewSwitch(datepicker) {\n  switchView(datepicker);\n}\n\nexport function onClickPrevButton(datepicker) {\n  goToPrevOrNext(datepicker, -1);\n}\n\nexport function onClickNextButton(datepicker) {\n  goToPrevOrNext(datepicker, 1);\n}\n\n// For the picker's main block to delegete the events from `datepicker-cell`s\nexport function onClickView(datepicker, ev) {\n  const target = findElementInEventPath(ev, '.datepicker-cell');\n  if (!target || target.classList.contains('disabled')) {\n    return;\n  }\n\n  const {id, isMinView} = datepicker.picker.currentView;\n  const data = target.dataset;\n  if (isMinView) {\n    datepicker.setDate(Number(data.date));\n  } else if (id === 1) {\n    goToSelectedMonthOrYear(datepicker, Number(data.month));\n  } else {\n    goToSelectedMonthOrYear(datepicker, Number(data.year));\n  }\n}\n\nexport function onMousedownPicker(ev) {\n  ev.preventDefault();\n}\n", "import {lastItemOf, isInRange, limitToRange} from '../lib/utils.js';\nimport {today, regularizeDate} from '../lib/date.js';\nimport {\n  parseHTML,\n  getParent,\n  showElement,\n  hideElement,\n  emptyChildNodes,\n} from '../lib/dom.js';\nimport {registerListeners} from '../lib/event.js';\nimport pickerTemplate from './templates/pickerTemplate.js';\nimport DaysView from './views/DaysView.js';\nimport MonthsView from './views/MonthsView.js';\nimport YearsView from './views/YearsView.js';\nimport {\n  triggerDatepickerEvent,\n  clearSelection,\n  goToOrSelectToday,\n} from '../events/functions.js';\nimport {\n  onClickViewSwitch,\n  onClickPrevButton,\n  onClickNextButton,\n  onClickView,\n  onMousedownPicker,\n} from '../events/pickerListeners.js';\n\nconst orientClasses = ['left', 'top', 'right', 'bottom'].reduce((obj, key) => {\n  obj[key] = `datepicker-orient-${key}`;\n  return obj;\n}, {});\nconst toPx = num => num ? `${num}px` : num;\n\nfunction processPickerOptions(picker, options) {\n  if ('title' in options) {\n    if (options.title) {\n      picker.controls.title.textContent = options.title;\n      showElement(picker.controls.title);\n    } else {\n      picker.controls.title.textContent = '';\n      hideElement(picker.controls.title);\n    }\n  }\n  if (options.prevArrow) {\n    const prevButton = picker.controls.prevButton;\n    emptyChildNodes(prevButton);\n    options.prevArrow.forEach((node) => {\n      prevButton.appendChild(node.cloneNode(true));\n    });\n  }\n  if (options.nextArrow) {\n    const nextButton = picker.controls.nextButton;\n    emptyChildNodes(nextButton);\n    options.nextArrow.forEach((node) => {\n      nextButton.appendChild(node.cloneNode(true));\n    });\n  }\n  if (options.locale) {\n    picker.controls.todayButton.textContent = options.locale.today;\n    picker.controls.clearButton.textContent = options.locale.clear;\n  }\n  if ('todayButton' in options) {\n    if (options.todayButton) {\n      showElement(picker.controls.todayButton);\n    } else {\n      hideElement(picker.controls.todayButton);\n    }\n  }\n  if ('minDate' in options || 'maxDate' in options) {\n    const {minDate, maxDate} = picker.datepicker.config;\n    picker.controls.todayButton.disabled = !isInRange(today(), minDate, maxDate);\n  }\n  if ('clearButton' in options) {\n    if (options.clearButton) {\n      showElement(picker.controls.clearButton);\n    } else {\n      hideElement(picker.controls.clearButton);\n    }\n  }\n}\n\n// Compute view date to reset, which will be...\n// - the last item of the selected dates or defaultViewDate if no selection\n// - limitted to minDate or maxDate if it exceeds the range\nfunction computeResetViewDate(datepicker) {\n  const {dates, config, rangeSideIndex} = datepicker;\n  const viewDate = dates.length > 0\n    ? lastItemOf(dates)\n    : regularizeDate(config.defaultViewDate, config.pickLevel, rangeSideIndex);\n  return limitToRange(viewDate, config.minDate, config.maxDate);\n}\n\n// Change current view's view date\nfunction setViewDate(picker, newDate) {\n  if (!('_oldViewDate' in picker) && newDate !== picker.viewDate) {\n    picker._oldViewDate = picker.viewDate;\n  }\n  picker.viewDate = newDate;\n\n  // return whether the new date is in different period on time from the one\n  // displayed in the current view\n  // when true, the view needs to be re-rendered on the next UI refresh.\n  const {id, year, first, last} = picker.currentView;\n  const viewYear = new Date(newDate).getFullYear();\n  switch (id) {\n    case 0:\n      return newDate < first || newDate > last;\n    case 1:\n      return viewYear !== year;\n    default:\n      return viewYear < first || viewYear > last;\n  }\n}\n\nfunction getTextDirection(el) {\n  return window.getComputedStyle(el).direction;\n}\n\n// find the closet scrollable ancestor elemnt under the body\nfunction findScrollParents(el) {\n  const parent = getParent(el);\n  if (parent === document.body || !parent) {\n    return;\n  }\n\n  // checking overflow only is enough because computed overflow cannot be\n  // visible or a combination of visible and other when either axis is set\n  // to other than visible.\n  // (Setting one axis to other than 'visible' while the other is 'visible'\n  // results in the other axis turning to 'auto')\n  return window.getComputedStyle(parent).overflow !== 'visible'\n    ? parent\n    : findScrollParents(parent);\n}\n\n// Class representing the picker UI\nexport default class Picker {\n  constructor(datepicker) {\n    const {config, inputField} = this.datepicker = datepicker;\n\n    const template = pickerTemplate.replace(/%buttonClass%/g, config.buttonClass);\n    const element = this.element = parseHTML(template).firstChild;\n    const [header, main, footer] = element.firstChild.children;\n    const title = header.firstElementChild;\n    const [prevButton, viewSwitch, nextButton] = header.lastElementChild.children;\n    const [todayButton, clearButton] = footer.firstChild.children;\n    const controls = {\n      title,\n      prevButton,\n      viewSwitch,\n      nextButton,\n      todayButton,\n      clearButton,\n    };\n    this.main = main;\n    this.controls = controls;\n\n    const elementClass = inputField ? 'dropdown' : 'inline';\n    element.classList.add(`datepicker-${elementClass}`);\n\n    processPickerOptions(this, config);\n    this.viewDate = computeResetViewDate(datepicker);\n\n    // set up event listeners\n    registerListeners(datepicker, [\n      [element, 'mousedown', onMousedownPicker],\n      [main, 'click', onClickView.bind(null, datepicker)],\n      [controls.viewSwitch, 'click', onClickViewSwitch.bind(null, datepicker)],\n      [controls.prevButton, 'click', onClickPrevButton.bind(null, datepicker)],\n      [controls.nextButton, 'click', onClickNextButton.bind(null, datepicker)],\n      [controls.todayButton, 'click', goToOrSelectToday.bind(null, datepicker)],\n      [controls.clearButton, 'click', clearSelection.bind(null, datepicker)],\n    ]);\n\n    // set up views\n    this.views = [\n      new DaysView(this),\n      new MonthsView(this),\n      new YearsView(this, {id: 2, name: 'years', cellClass: 'year', step: 1}),\n      new YearsView(this, {id: 3, name: 'decades', cellClass: 'decade', step: 10}),\n    ];\n    this.currentView = this.views[config.startView];\n\n    this.currentView.render();\n    this.main.appendChild(this.currentView.element);\n    if (config.container) {\n      config.container.appendChild(this.element);\n    } else {\n      inputField.after(this.element);\n    }\n  }\n\n  setOptions(options) {\n    processPickerOptions(this, options);\n    this.views.forEach((view) => {\n      view.init(options, false);\n    });\n    this.currentView.render();\n  }\n\n  detach() {\n    this.element.remove();\n  }\n\n  show() {\n    if (this.active) {\n      return;\n    }\n\n    const {datepicker, element} = this;\n    const inputField = datepicker.inputField;\n    if (inputField) {\n      // ensure picker's direction matches input's\n      const inputDirection = getTextDirection(inputField);\n      if (inputDirection !== getTextDirection(getParent(element))) {\n        element.dir = inputDirection;\n      } else if (element.dir) {\n        element.removeAttribute('dir');\n      }\n\n      // Determine the picker's position first to prevent `orientation: 'auto'`\n      // from being miscalculated to 'bottom' after the picker temporarily\n      // shown below the input field expands the document height if the field\n      // is at the bottom edge of the document\n      this.place();\n      element.classList.add('active');\n\n      if (datepicker.config.disableTouchKeyboard) {\n        inputField.blur();\n      }\n    } else {\n      element.classList.add('active');\n    }\n    this.active = true;\n    triggerDatepickerEvent(datepicker, 'show');\n  }\n\n  hide() {\n    if (!this.active) {\n      return;\n    }\n    this.datepicker.exitEditMode();\n    this.element.classList.remove('active');\n    this.active = false;\n    triggerDatepickerEvent(this.datepicker, 'hide');\n  }\n\n  place() {\n    const {classList, style} = this.element;\n    // temporarily display the picker to get its size and offset parent\n    style.display = 'block';\n\n    const {\n      width: calendarWidth,\n      height: calendarHeight,\n    } = this.element.getBoundingClientRect();\n    const offsetParent = this.element.offsetParent;\n    // turn the picker back to hidden so that the position is determined with\n    // the state before it is shown.\n    style.display = '';\n\n    const {config, inputField} = this.datepicker;\n    const {\n      left: inputLeft,\n      top: inputTop,\n      right: inputRight,\n      bottom: inputBottom,\n      width: inputWidth,\n      height: inputHeight\n    } = inputField.getBoundingClientRect();\n    let {x: orientX, y: orientY} = config.orientation;\n    let left = inputLeft;\n    let top = inputTop;\n\n    // caliculate offsetLeft/Top of inputField\n    if (offsetParent === document.body || !offsetParent) {\n      left += window.scrollX;\n      top += window.scrollY;\n    } else {\n      const offsetParentRect = offsetParent.getBoundingClientRect();\n      left -= offsetParentRect.left - offsetParent.scrollLeft;\n      top -= offsetParentRect.top - offsetParent.scrollTop;\n    }\n\n    // caliculate the boundaries of the visible area that contains inputField\n    const scrollParent = findScrollParents(inputField);\n    let scrollAreaLeft = 0;\n    let scrollAreaTop = 0;\n    let {\n      clientWidth: scrollAreaRight,\n      clientHeight: scrollAreaBottom,\n    } = document.documentElement;\n\n    if (scrollParent) {\n      const scrollParentRect = scrollParent.getBoundingClientRect();\n      if (scrollParentRect.top > 0) {\n        scrollAreaTop = scrollParentRect.top;\n      }\n      if (scrollParentRect.left > 0) {\n        scrollAreaLeft = scrollParentRect.left;\n      }\n      if (scrollParentRect.right < scrollAreaRight) {\n        scrollAreaRight = scrollParentRect.right;\n      }\n      if (scrollParentRect.bottom < scrollAreaBottom) {\n        scrollAreaBottom = scrollParentRect.bottom;\n      }\n    }\n\n    // determine the horizontal orientation and left position\n    let adjustment = 0;\n    if (orientX === 'auto') {\n      if (inputLeft < scrollAreaLeft) {\n        orientX = 'left';\n        adjustment = scrollAreaLeft - inputLeft;\n      } else if (inputLeft + calendarWidth > scrollAreaRight) {\n        orientX = 'right';\n        if (scrollAreaRight < inputRight) {\n          adjustment = scrollAreaRight - inputRight;\n        }\n      } else if (getTextDirection(inputField) === 'rtl') {\n        orientX = inputRight - calendarWidth < scrollAreaLeft ? 'left' : 'right';\n      } else {\n        orientX = 'left';\n      }\n    }\n    if (orientX === 'right') {\n      left += inputWidth - calendarWidth;\n    }\n    left += adjustment;\n\n    // determine the vertical orientation and top position\n    if (orientY === 'auto') {\n      if (inputTop - calendarHeight > scrollAreaTop) {\n        orientY = inputBottom + calendarHeight > scrollAreaBottom ? 'top' : 'bottom';\n      } else {\n        orientY = 'bottom';\n      }\n    }\n    if (orientY === 'top') {\n      top -= calendarHeight;\n    } else {\n      top += inputHeight;\n    }\n\n    classList.remove(...Object.values(orientClasses));\n    classList.add(orientClasses[orientX], orientClasses[orientY]);\n\n    style.left = toPx(left);\n    style.top = toPx(top);\n  }\n\n  setViewSwitchLabel(labelText) {\n    this.controls.viewSwitch.textContent = labelText;\n  }\n\n  setPrevButtonDisabled(disabled) {\n    this.controls.prevButton.disabled = disabled;\n  }\n\n  setNextButtonDisabled(disabled) {\n    this.controls.nextButton.disabled = disabled;\n  }\n\n  changeView(viewId) {\n    const currentView = this.currentView;\n    if (viewId !== currentView.id) {\n      if (!this._oldView) {\n        this._oldView = currentView;\n      }\n      this.currentView = this.views[viewId];\n      this._renderMethod = 'render';\n    }\n    return this;\n  }\n\n  // Change the focused date (view date)\n  changeFocus(newViewDate) {\n    this._renderMethod = setViewDate(this, newViewDate) ? 'render' : 'refreshFocus';\n    this.views.forEach((view) => {\n      view.updateFocus();\n    });\n    return this;\n  }\n\n  // Apply the change of the selected dates\n  update(viewDate = undefined) {\n    const newViewDate = viewDate === undefined\n      ? computeResetViewDate(this.datepicker)\n      : viewDate;\n    this._renderMethod = setViewDate(this, newViewDate) ? 'render' : 'refresh';\n    this.views.forEach((view) => {\n      view.updateFocus();\n      view.updateSelection();\n    });\n    return this;\n  }\n\n  // Refresh the picker UI\n  render(quickRender = true) {\n    const {currentView, datepicker, _oldView: oldView} = this;\n    const oldViewDate = new Date(this._oldViewDate);\n    const renderMethod = (quickRender && this._renderMethod) || 'render';\n    delete this._oldView;\n    delete this._oldViewDate;\n    delete this._renderMethod;\n\n    currentView[renderMethod]();\n    if (oldView) {\n      this.main.replaceChild(currentView.element, oldView.element);\n      triggerDatepickerEvent(datepicker, 'changeView');\n    }\n    if (!isNaN(oldViewDate)) {\n      const newViewDate = new Date(this.viewDate);\n      if (newViewDate.getFullYear() !== oldViewDate.getFullYear()) {\n        triggerDatepickerEvent(datepicker, 'changeYear');\n      }\n      if (newViewDate.getMonth() !== oldViewDate.getMonth()) {\n        triggerDatepickerEvent(datepicker, 'changeMonth');\n      }\n    }\n  }\n}\n", "import {isInRange} from '../lib/utils.js';\nimport {isActiveElement} from '../lib/dom.js';\nimport {addDays, addMonths, addYears} from '../lib/date.js';\nimport {\n  goToPrevOrNext,\n  switchView,\n  clearSelection,\n  goToOrSelectToday,\n  unfocus,\n} from './functions.js';\n\n// Find the closest date that doesn't meet the condition for unavailable date\n// Returns undefined if no available date is found\n// addFn: function to calculate the next date\n//   - args: time value, amount\n// increase: amount to pass to addFn\n// testFn: function to test the unavailability of the date\n//   - args: time value; return: true if unavailable\nfunction findNextAvailableOne(date, addFn, increase, testFn, min, max) {\n  if (!isInRange(date, min, max)) {\n    return;\n  }\n  if (testFn(date)) {\n    const newDate = addFn(date, increase);\n    return findNextAvailableOne(newDate, addFn, increase, testFn, min, max);\n  }\n  return date;\n}\n\n// direction: -1 (left/up), 1 (right/down)\n// vertical: true for up/down, false for left/right\nfunction moveByArrowKey(datepicker, direction, vertical) {\n  const picker = datepicker.picker;\n  const currentView = picker.currentView;\n  const step = currentView.step || 1;\n  let viewDate = picker.viewDate;\n  let addFn;\n  switch (currentView.id) {\n    case 0:\n      viewDate = addDays(viewDate, vertical ? direction * 7 : direction);\n      addFn = addDays;\n      break;\n    case 1:\n      viewDate = addMonths(viewDate, vertical ? direction * 4 : direction);\n      addFn = addMonths;\n      break;\n    default:\n      viewDate = addYears(viewDate, direction * (vertical ? 4 : 1) * step);\n      addFn = addYears;\n  }\n  viewDate = findNextAvailableOne(\n    viewDate,\n    addFn,\n    direction < 0 ? -step : step,\n    (date) => currentView.disabled.includes(date),\n    currentView.minDate,\n    currentView.maxDate\n  );\n  if (viewDate !== undefined) {\n    picker.changeFocus(viewDate).render();\n  }\n}\n\nexport function onKeydown(datepicker, ev) {\n  const {config, picker, editMode} = datepicker;\n  const active = picker.active;\n  const {key, altKey, shiftKey} = ev;\n  const ctrlOrMetaKey = ev.ctrlKey || ev.metaKey;\n  const cancelEvent = () => {\n    ev.preventDefault();\n    ev.stopPropagation();\n  };\n\n  // tab/enter keys should not be taken by shortcut keys\n  if (key === 'Tab') {\n    unfocus(datepicker);\n    return;\n  }\n  if (key === 'Enter') {\n    if (!active) {\n      datepicker.update();\n    } else if (editMode) {\n      datepicker.exitEditMode({update: true, autohide: config.autohide});\n    } else {\n      const currentView = picker.currentView;\n      if (currentView.isMinView) {\n        datepicker.setDate(picker.viewDate);\n      } else {\n        picker.changeView(currentView.id - 1).render();\n        cancelEvent();\n      }\n    }\n    return;\n  }\n\n  const shortcutKeys = config.shortcutKeys;\n  const keyInfo = {key, ctrlOrMetaKey, altKey, shiftKey};\n  const shortcut = Object.keys(shortcutKeys).find((item) => {\n    const keyDef = shortcutKeys[item];\n    return !Object.keys(keyDef).find(prop => keyDef[prop] !== keyInfo[prop]);\n  });\n  if (shortcut) {\n    let action;\n    if (shortcut === 'toggle') {\n      action = shortcut;\n    } else if (editMode) {\n      if (shortcut === 'exitEditMode') {\n        action = shortcut;\n      }\n    } else if (active) {\n      if (shortcut === 'hide') {\n        action = shortcut;\n      } else if (shortcut === 'prevButton') {\n        action = [goToPrevOrNext, [datepicker, -1]];\n      } else if (shortcut === 'nextButton') {\n        action = [goToPrevOrNext, [datepicker, 1]];\n      } else if (shortcut === 'viewSwitch') {\n        action = [switchView, [datepicker]];\n      } else if (config.clearButton && shortcut === 'clearButton') {\n        action = [clearSelection, [datepicker]];\n      } else if (config.todayButton && shortcut === 'todayButton') {\n        action = [goToOrSelectToday, [datepicker]];\n      }\n    } else if (shortcut === 'show') {\n      action = shortcut;\n    }\n    if (action) {\n      if (Array.isArray(action)) {\n        action[0].apply(null, action[1]);\n      } else {\n        datepicker[action]();\n      }\n      cancelEvent();\n      return;\n    }\n  }\n\n  // perform as a regular <input> when picker in hidden or in edit mode\n  if (!active || editMode) {\n    return;\n  }\n\n  const handleArrowKeyPress = (direction, vertical) => {\n    if (shiftKey || ctrlOrMetaKey || altKey) {\n      datepicker.enterEditMode();\n    } else {\n      moveByArrowKey(datepicker, direction, vertical);\n      ev.preventDefault();\n    }\n  };\n\n  if (key === 'ArrowLeft') {\n    handleArrowKeyPress(-1, false);\n  } else if (key === 'ArrowRight') {\n    handleArrowKeyPress(1, false);\n  } else if (key === 'ArrowUp') {\n    handleArrowKeyPress(-1, true);\n  } else if (key === 'ArrowDown') {\n    handleArrowKeyPress(1, true);\n  } else if (\n    key === 'Backspace'\n    || key === 'Delete'\n      // When autofill is performed, Chromium-based browsers trigger fake\n      // keydown/keyup events that don't have the `key` property (on Edge,\n      // keyup only) in addition to the input event. Therefore, we need to\n      // check the existence of `key`'s value before checking the length.\n      // (issue #144)\n    || (key && key.length === 1 && !ctrlOrMetaKey)\n  ) {\n    datepicker.enterEditMode();\n  }\n}\n\nexport function onFocus(datepicker) {\n  if (datepicker.config.showOnFocus && !datepicker._showing) {\n    datepicker.show();\n  }\n}\n\n// for the prevention for entering edit mode while getting focus on click\nexport function onMousedown(datepicker, ev) {\n  const el = ev.target;\n  if (datepicker.picker.active || datepicker.config.showOnClick) {\n    el._active = isActiveElement(el);\n    el._clicking = setTimeout(() => {\n      delete el._active;\n      delete el._clicking;\n    }, 2000);\n  }\n}\n\nexport function onClickInput(datepicker, ev) {\n  const el = ev.target;\n  if (!el._clicking) {\n    return;\n  }\n  clearTimeout(el._clicking);\n  delete el._clicking;\n\n  if (el._active) {\n    datepicker.enterEditMode();\n  }\n  delete el._active;\n\n  if (datepicker.config.showOnClick) {\n    datepicker.show();\n  }\n}\n\nexport function onPaste(datepicker, ev) {\n  if (ev.clipboardData.types.includes('text/plain')) {\n    datepicker.enterEditMode();\n  }\n}\n", "import {isActiveElement} from '../lib/dom.js';\nimport {findElementInEventPath} from '../lib/event.js';\nimport {unfocus} from './functions.js';\n\n// for the `document` to delegate the events from outside the picker/input field\nexport function onClickOutside(datepicker, ev) {\n  const {element, picker} = datepicker;\n  // check both picker's and input's activeness to make updateOnBlur work in\n  // the cases where...\n  // - picker is hidden by ESC key press \u2192 input stays focused\n  // - input is unfocused by closing mobile keyboard \u2192 piker is kept shown\n  if (!picker.active && !isActiveElement(element)) {\n    return;\n  }\n  const pickerElem = picker.element;\n  if (findElementInEventPath(ev, el => el === element || el === pickerElem)) {\n    return;\n  }\n  unfocus(datepicker);\n}\n", "import {lastItemOf, stringToArray, isInRange} from './lib/utils.js';\nimport {today, regularizeDate} from './lib/date.js';\nimport {parseDate, formatDate} from './lib/date-format.js';\nimport {isActiveElement} from './lib/dom.js';\nimport {registerListeners, unregisterListeners} from './lib/event.js';\nimport locales from './i18n/base-locales.js';\nimport defaultOptions from './options/defaultOptions.js';\nimport processOptions from './options/processOptions.js';\nimport createShortcutKeyConfig from './options/shortcutKeys.js';\nimport Picker from './picker/Picker.js';\nimport {triggerDatepickerEvent} from './events/functions.js';\nimport {\n  onKeydown,\n  onFocus,\n  onMousedown,\n  onClickInput,\n  onPaste,\n} from './events/elementListeners.js';\nimport {onClickOutside} from './events/otherListeners.js';\n\nfunction stringifyDates(dates, config) {\n  return dates\n    .map(dt => formatDate(dt, config.format, config.locale))\n    .join(config.dateDelimiter);\n}\n\n// parse input dates and create an array of time values for selection\n// returns undefined if there are no valid dates in inputDates\n// when origDates (current selection) is passed, the function works to mix\n// the input dates into the current selection\nfunction processInputDates(datepicker, inputDates, clear = false) {\n  if (inputDates.length === 0) {\n    // empty input is considered valid unless origiDates is passed\n    return clear ? [] : undefined;\n  }\n\n  const {config, dates: origDates, rangeSideIndex} = datepicker;\n  const {pickLevel, maxNumberOfDates} = config;\n  let newDates = inputDates.reduce((dates, dt) => {\n    let date = parseDate(dt, config.format, config.locale);\n    if (date === undefined) {\n      return dates;\n    }\n    // adjust to 1st of the month/Jan 1st of the year\n    // or to the last day of the monh/Dec 31st of the year if the datepicker\n    // is the range-end picker of a rangepicker\n    date = regularizeDate(date, pickLevel, rangeSideIndex);\n    if (\n      isInRange(date, config.minDate, config.maxDate)\n      && !dates.includes(date)\n      && !config.checkDisabled(date, pickLevel)\n      && (pickLevel > 0 || !config.daysOfWeekDisabled.includes(new Date(date).getDay()))\n    ) {\n      dates.push(date);\n    }\n    return dates;\n  }, []);\n  if (newDates.length === 0) {\n    return;\n  }\n  if (config.multidate && !clear) {\n    // get the synmetric difference between origDates and newDates\n    newDates = newDates.reduce((dates, date) => {\n      if (!origDates.includes(date)) {\n        dates.push(date);\n      }\n      return dates;\n    }, origDates.filter(date => !newDates.includes(date)));\n  }\n  // do length check always because user can input multiple dates regardless of the mode\n  return maxNumberOfDates && newDates.length > maxNumberOfDates\n    ? newDates.slice(maxNumberOfDates * -1)\n    : newDates;\n}\n\n// refresh the UI elements\n// modes: 1: input only, 2, picker only, 3 both\nfunction refreshUI(datepicker, mode = 3, quickRender = true, viewDate = undefined) {\n  const {config, picker, inputField} = datepicker;\n  if (mode & 2) {\n    const newView = picker.active ? config.pickLevel : config.startView;\n    picker.update(viewDate).changeView(newView).render(quickRender);\n  }\n  if (mode & 1 && inputField) {\n    inputField.value = stringifyDates(datepicker.dates, config);\n  }\n}\n\nfunction setDate(datepicker, inputDates, options) {\n  const config = datepicker.config;\n  let {clear, render, autohide, revert, forceRefresh, viewDate} = options;\n  if (render === undefined) {\n    render = true;\n  }\n  if (!render) {\n    autohide = forceRefresh = false;\n  } else if (autohide === undefined) {\n    autohide = config.autohide;\n  }\n  viewDate = parseDate(viewDate, config.format, config.locale);\n\n  const newDates = processInputDates(datepicker, inputDates, clear);\n  if (!newDates && !revert) {\n    return;\n  }\n  if (newDates && newDates.toString() !== datepicker.dates.toString()) {\n    datepicker.dates = newDates;\n    refreshUI(datepicker, render ? 3 : 1, true, viewDate);\n    triggerDatepickerEvent(datepicker, 'changeDate');\n  } else {\n    refreshUI(datepicker, forceRefresh ? 3 : 1, true, viewDate);\n  }\n\n  if (autohide) {\n    datepicker.hide();\n  }\n}\n\nfunction getOutputConverter(datepicker, format) {\n  return format\n    ? date => formatDate(date, format, datepicker.config.locale)\n    : date => new Date(date);\n}\n\n/**\n * Class representing a date picker\n */\nexport default class Datepicker {\n  /**\n   * Create a date picker\n   * @param  {Element} element - element to bind a date picker\n   * @param  {Object} [options] - config options\n   * @param  {DateRangePicker} [rangepicker] - DateRangePicker instance the\n   * date picker belongs to. Use this only when creating date picker as a part\n   * of date range picker\n   */\n  constructor(element, options = {}, rangepicker = undefined) {\n    element.datepicker = this;\n    this.element = element;\n    this.dates = [];\n\n    // initialize config\n    const config = this.config = Object.assign({\n      buttonClass: (options.buttonClass && String(options.buttonClass)) || 'button',\n      container: null,\n      defaultViewDate: today(),\n      maxDate: undefined,\n      minDate: undefined,\n    }, processOptions(defaultOptions, this));\n\n    // configure by type\n    let inputField;\n    if (element.tagName === 'INPUT') {\n      inputField = this.inputField = element;\n      inputField.classList.add('datepicker-input');\n      if (options.container) {\n        // omit string type check because it doesn't guarantee to avoid errors\n        // (invalid selector string causes abend with sytax error)\n        config.container = options.container instanceof HTMLElement\n          ? options.container\n          : document.querySelector(options.container);\n      }\n    } else {\n      config.container = element;\n    }\n    if (rangepicker) {\n      // check validiry\n      const index = rangepicker.inputs.indexOf(inputField);\n      const datepickers = rangepicker.datepickers;\n      if (index < 0 || index > 1 || !Array.isArray(datepickers)) {\n        throw Error('Invalid rangepicker object.');\n      }\n      // attach itaelf to the rangepicker here so that processInputDates() can\n      // determine if this is the range-end picker of the rangepicker while\n      // setting inital values when pickLevel > 0\n      datepickers[index] = this;\n      this.rangepicker = rangepicker;\n      this.rangeSideIndex = index;\n    }\n\n    // set up config\n    this._options = options;\n    Object.assign(config, processOptions(options, this));\n    config.shortcutKeys = createShortcutKeyConfig(options.shortcutKeys || {});\n\n    // process initial value\n    const initialDates = stringToArray(\n      element.value || element.dataset.date,\n      config.dateDelimiter\n    );\n    delete element.dataset.date;\n    const inputDateValues = processInputDates(this, initialDates);\n    if (inputDateValues && inputDateValues.length > 0) {\n      this.dates = inputDateValues;\n    }\n    if (inputField) {\n      inputField.value = stringifyDates(this.dates, config);\n    }\n\n    // set up picekr element\n    const picker = this.picker = new Picker(this);\n\n    const keydownListener = [element, 'keydown', onKeydown.bind(null, this)];\n    if (inputField) {\n      registerListeners(this, [\n        keydownListener,\n        [inputField, 'focus', onFocus.bind(null, this)],\n        [inputField, 'mousedown', onMousedown.bind(null, this)],\n        [inputField, 'click', onClickInput.bind(null, this)],\n        [inputField, 'paste', onPaste.bind(null, this)],\n        // To detect a click on outside, just listening to mousedown is enough,\n        // no need to listen to touchstart.\n        // Actually, listening to touchstart can be a problem because, while\n        // mousedown is fired only on tapping but not on swiping/pinching,\n        // touchstart is fired on swiping/pinching as well.\n        // (issue #95)\n        [document, 'mousedown', onClickOutside.bind(null, this)],\n        [window, 'resize', picker.place.bind(picker)]\n      ]);\n    } else {\n      registerListeners(this, [keydownListener]);\n      this.show();\n    }\n  }\n\n  /**\n   * Format Date object or time value in given format and language\n   * @param  {Date|Number} date - date or time value to format\n   * @param  {String|Object} format - format string or object that contains\n   * toDisplay() custom formatter, whose signature is\n   * - args:\n   *   - date: {Date} - Date instance of the date passed to the method\n   *   - format: {Object} - the format object passed to the method\n   *   - locale: {Object} - locale for the language specified by `lang`\n   * - return:\n   *     {String} formatted date\n   * @param  {String} [lang=en] - language code for the locale to use\n   * @return {String} formatted date\n   */\n  static formatDate(date, format, lang) {\n    return formatDate(date, format, lang && locales[lang] || locales.en);\n  }\n\n  /**\n   * Parse date string\n   * @param  {String|Date|Number} dateStr - date string, Date object or time\n   * value to parse\n   * @param  {String|Object} format - format string or object that contains\n   * toValue() custom parser, whose signature is\n   * - args:\n   *   - dateStr: {String|Date|Number} - the dateStr passed to the method\n   *   - format: {Object} - the format object passed to the method\n   *   - locale: {Object} - locale for the language specified by `lang`\n   * - return:\n   *     {Date|Number} parsed date or its time value\n   * @param  {String} [lang=en] - language code for the locale to use\n   * @return {Number} time value of parsed date\n   */\n  static parseDate(dateStr, format, lang) {\n    return parseDate(dateStr, format, lang && locales[lang] || locales.en);\n  }\n\n  /**\n   * @type {Object} - Installed locales in `[languageCode]: localeObject` format\n   * en`:_English (US)_ is pre-installed.\n   */\n  static get locales() {\n    return locales;\n  }\n\n  /**\n   * @type {Boolean} - Whether the picker element is shown. `true` whne shown\n   */\n  get active() {\n    return !!(this.picker && this.picker.active);\n  }\n\n  /**\n   * @type {HTMLDivElement} - DOM object of picker element\n   */\n  get pickerElement() {\n    return this.picker ? this.picker.element : undefined;\n  }\n\n  /**\n   * Set new values to the config options\n   * @param {Object} options - config options to update\n   */\n  setOptions(options) {\n    const newOptions = processOptions(options, this);\n    Object.assign(this._options, options);\n    Object.assign(this.config, newOptions);\n    this.picker.setOptions(newOptions);\n\n    refreshUI(this, 3);\n  }\n\n  /**\n   * Show the picker element\n   */\n  show() {\n    if (this.inputField) {\n      const {config, inputField} = this;\n      if (inputField.disabled || (inputField.readOnly && !config.enableOnReadonly)) {\n        return;\n      }\n      if (!isActiveElement(inputField) && !config.disableTouchKeyboard) {\n        this._showing = true;\n        inputField.focus();\n        delete this._showing;\n      }\n    }\n    this.picker.show();\n  }\n\n  /**\n   * Hide the picker element\n   * Not available on inline picker\n   */\n  hide() {\n    if (!this.inputField) {\n      return;\n    }\n    this.picker.hide();\n    this.picker.update().changeView(this.config.startView).render();\n  }\n\n  /**\n   * Toggle the display of the picker element\n   * Not available on inline picker\n   *\n   * Unlike hide(), the picker does not return to the start view when hiding.\n   */\n  toggle() {\n    if (!this.picker.active) {\n      this.show();\n    } else if (this.inputField) {\n      this.picker.hide();\n    }\n  }\n\n  /**\n   * Destroy the Datepicker instance\n   * @return {Detepicker} - the instance destroyed\n   */\n  destroy() {\n    this.hide();\n    unregisterListeners(this);\n    this.picker.detach();\n    const element = this.element;\n    element.classList.remove('datepicker-input');\n    delete element.datepicker;\n    return this;\n  }\n\n  /**\n   * Get the selected date(s)\n   *\n   * The method returns a Date object of selected date by default, and returns\n   * an array of selected dates in multidate mode. If format string is passed,\n   * it returns date string(s) formatted in given format.\n   *\n   * @param  {String} [format] - format string to stringify the date(s)\n   * @return {Date|String|Date[]|String[]} - selected date(s), or if none is\n   * selected, empty array in multidate mode and undefined in sigledate mode\n   */\n  getDate(format = undefined) {\n    const callback = getOutputConverter(this, format);\n\n    if (this.config.multidate) {\n      return this.dates.map(callback);\n    }\n    if (this.dates.length > 0) {\n      return callback(this.dates[0]);\n    }\n  }\n\n  /**\n   * Set selected date(s)\n   *\n   * In multidate mode, you can pass multiple dates as a series of arguments\n   * or an array. (Since each date is parsed individually, the type of the\n   * dates doesn't have to be the same.)\n   * The given dates are used to toggle the select status of each date. The\n   * number of selected dates is kept from exceeding the length set to\n   * maxNumberOfDates.\n   *\n   * With clear: true option, the method can be used to clear the selection\n   * and to replace the selection instead of toggling in multidate mode.\n   * If the option is passed with no date arguments or an empty dates array,\n   * it works as \"clear\" (clear the selection then set nothing), and if the\n   * option is passed with new dates to select, it works as \"replace\" (clear\n   * the selection then set the given dates)\n   *\n   * When render: false option is used, the method omits re-rendering the\n   * picker element. In this case, you need to call refresh() method later in\n   * order for the picker element to reflect the changes. The input field is\n   * refreshed always regardless of this option.\n   *\n   * When invalid (unparsable, repeated, disabled or out-of-range) dates are\n   * passed, the method ignores them and applies only valid ones. In the case\n   * that all the given dates are invalid, which is distinguished from passing\n   * no dates, the method considers it as an error and leaves the selection\n   * untouched. (The input field also remains untouched unless revert: true\n   * option is used.)\n   * Replacing the selection with the same date(s) also causes a similar\n   * situation. In both cases, the method does not refresh the picker element\n   * unless forceRefresh: true option is used.\n   *\n   * If viewDate option is used, the method changes the focused date to the\n   * specified date instead of the last item of the selection.\n   *\n   * @param {...(Date|Number|String)|Array} [dates] - Date strings, Date\n   * objects, time values or mix of those for new selection\n   * @param {Object} [options] - function options\n   * - clear: {boolean} - Whether to clear the existing selection\n   *     defualt: false\n   * - render: {boolean} - Whether to re-render the picker element\n   *     default: true\n   * - autohide: {boolean} - Whether to hide the picker element after re-render\n   *     Ignored when used with render: false\n   *     default: config.autohide\n   * - revert: {boolean} - Whether to refresh the input field when all the\n   *     passed dates are invalid\n   *     default: false\n   * - forceRefresh: {boolean} - Whether to refresh the picker element when\n   *     passed dates don't change the existing selection\n   *     default: false\n   * - viewDate: {Date|Number|String} - Date to be focused after setiing date(s)\n   *     default: The last item of the resulting selection, or defaultViewDate\n   *     config option if none is selected\n   */\n  setDate(...args) {\n    const dates = [...args];\n    const opts = {};\n    const lastArg = lastItemOf(args);\n    if (\n      lastArg\n      && typeof lastArg === 'object'\n      && !Array.isArray(lastArg)\n      && !(lastArg instanceof Date)\n    ) {\n      Object.assign(opts, dates.pop());\n    }\n\n    const inputDates = Array.isArray(dates[0]) ? dates[0] : dates;\n    setDate(this, inputDates, opts);\n  }\n\n  /**\n   * Update the selected date(s) with input field's value\n   * Not available on inline picker\n   *\n   * The input field will be refreshed with properly formatted date string.\n   *\n   * In the case that all the entered dates are invalid (unparsable, repeated,\n   * disabled or out-of-range), which is distinguished from empty input field,\n   * the method leaves the input field untouched as well as the selection by\n   * default. If revert: true option is used in this case, the input field is\n   * refreshed with the existing selection.\n   * The method also doesn't refresh the picker element in this case and when\n   * the entered dates are the same as the existing selection. If\n   * forceRefresh: true option is used, the picker element is refreshed in\n   * these cases too.\n   *\n   * @param  {Object} [options] - function options\n   * - autohide: {boolean} - whether to hide the picker element after refresh\n   *     default: false\n   * - revert: {boolean} - Whether to refresh the input field when all the\n   *     passed dates are invalid\n   *     default: false\n   * - forceRefresh: {boolean} - Whether to refresh the picer element when\n   *     input field's value doesn't change the existing selection\n   *     default: false\n   */\n  update(options = undefined) {\n    if (!this.inputField) {\n      return;\n    }\n\n    const opts = Object.assign(options || {}, {clear: true, render: true, viewDate: undefined});\n    const inputDates = stringToArray(this.inputField.value, this.config.dateDelimiter);\n    setDate(this, inputDates, opts);\n  }\n\n  /**\n   * Get the focused date\n   *\n   * The method returns a Date object of focused date by default. If format\n   * string is passed, it returns date string formatted in given format.\n   *\n   * @param  {String} [format] - format string to stringify the date\n   * @return {Date|String} - focused date (viewDate)\n   */\n  getFocusedDate(format = undefined) {\n    return getOutputConverter(this, format)(this.picker.viewDate);\n  }\n\n  /**\n   * Set focused date\n   *\n   * By default, the method updates the focus on the view shown at the time,\n   * or the one set to the startView config option if the picker is hidden.\n   * When resetView: true is passed, the view displayed is changed to the\n   * pickLevel config option's if the picker is shown.\n   *\n   * @param {Date|Number|String} viewDate - date string, Date object, time\n   * values of the date to focus\n   * @param {Boolean} [resetView] - whether to change the view to pickLevel\n   * config option's when the picker is shown. Ignored when the picker is\n   * hidden\n   */\n  setFocusedDate(viewDate, resetView = false) {\n    const {config, picker, active, rangeSideIndex} = this;\n    const pickLevel = config.pickLevel;\n    const newViewDate = parseDate(viewDate, config.format, config.locale);\n    if (newViewDate === undefined) {\n      return;\n    }\n\n    picker.changeFocus(regularizeDate(newViewDate, pickLevel, rangeSideIndex));\n    if (active && resetView) {\n      picker.changeView(pickLevel);\n    }\n    picker.render();\n  }\n\n  /**\n   * Refresh the picker element and the associated input field\n   * @param {String} [target] - target item when refreshing one item only\n   * 'picker' or 'input'\n   * @param {Boolean} [forceRender] - whether to re-render the picker element\n   * regardless of its state instead of optimized refresh\n   */\n  refresh(target = undefined, forceRender = false) {\n    if (target && typeof target !== 'string') {\n      forceRender = target;\n      target = undefined;\n    }\n\n    let mode;\n    if (target === 'picker') {\n      mode = 2;\n    } else if (target === 'input') {\n      mode = 1;\n    } else {\n      mode = 3;\n    }\n    refreshUI(this, mode, !forceRender);\n  }\n\n  /**\n   * Enter edit mode\n   * Not available on inline picker or when the picker element is hidden\n   */\n  enterEditMode() {\n    const inputField = this.inputField;\n    if (!inputField || inputField.readOnly || !this.picker.active || this.editMode) {\n      return;\n    }\n    this.editMode = true;\n    inputField.classList.add('in-edit');\n  }\n\n  /**\n   * Exit from edit mode\n   * Not available on inline picker\n   * @param  {Object} [options] - function options\n   * - update: {boolean} - whether to call update() after exiting\n   *     If false, input field is revert to the existing selection\n   *     default: false\n   */\n  exitEditMode(options = undefined) {\n    if (!this.inputField || !this.editMode) {\n      return;\n    }\n    const opts = Object.assign({update: false}, options);\n    delete this.editMode;\n    this.inputField.classList.remove('in-edit');\n    if (opts.update) {\n      this.update(opts);\n    }\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\";\n\nexport default class extends Controller {\n  static targets = [\"validatable\", \"errorsContainer\", \"errorsList\"];\n\n  errorsHash = {};\n\n  connect() {}\n\n  submitForm(event) {\n    this.resetErrors();\n\n    const form          = event.target;\n    const inputs        = form.querySelectorAll(\"[required=required]\");\n    const missingFields = this.buildMissingFiledsList(inputs, form);\n    const listItems     = this.buildErrorListItems(missingFields);\n\n    if (this.hasErrors(listItems)) {\n      this.showErrors(listItems);\n    }\n\n    // If our form is invalid, prevent default on the event\n    // so that the form is not submitted\n    if (true) {\n      event.preventDefault();\n    }\n  }\n\n  buildMissingFiledsList(formInputs, form) {\n    return Array.from(formInputs).map((input) => {\n      let validations = {};\n\n      if (input.dataset.validate) {\n        validations = JSON.parse(input.dataset.validate);\n      }\n\n      Object.values(validations).forEach((_validation) => {});\n\n      if (input.value === \"\" || input.value === null || input.value === undefined) {\n        return input.dataset.name;\n      }\n    });\n  }\n\n  buildErrorListItems(missingFields) {\n    return missingFields.filter(i => i).map((field) => `<li>${field}</li>`);\n  }\n\n  hasErrors(listItems) {\n    return listItems.length > 0;\n  }\n\n  resetErrors() {\n    this.errorsContainerTarget.classList.add('d-none');\n    this.errorsListTarget.innerHTML = '';\n  }\n\n  showErrors(listItems) {\n    this.errorsContainerTarget.classList.remove('d-none');\n    this.errorsListTarget.innerHTML = listItems.join('');\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\";\nimport { SET_LS_STATE } from \"../utils/_localstorage\"\n\nexport default class extends Controller {\n  LOCATION_KEY = 'ur-current-location';\n\n  connect() {\n    navigator.geolocation.getCurrentPosition(position => {\n      const data = JSON.stringify({\n        latitude:   position.coords.latitude,\n        longitude:  position.coords.longitude,\n        accuracy:   position.coords.accuracy\n      });\n\n      SET_LS_STATE(this.LOCATION_KEY, data);\n    });\n  }\n}\n", "export const GET_LS_STATE          = (key) => localStorage.getItem(key);\nexport const SET_LS_STATE          = (key, value) => localStorage.setItem(key, value);\nexport const REMOVE_LS_STATE       = (key) => localStorage.removeItem(key);\nexport const LS_ORDER_SESSION_KEYS = (partialMatch) => Object.keys(localStorage).filter(key => key.match(partialMatch))\n", "// Visit The Stimulus Handbook for more details\n// https://stimulusjs.org/handbook/introduction\n//\n// This example controller works with specially annotated HTML like:\n//\n// <div data-controller=\"hello\">\n//   <h1 data-target=\"hello.output\"></h1>\n// </div>\n\nimport { Controller } from \"@hotwired/stimulus\";\n\nexport default class extends Controller {\n  static targets = [ \"output\" ]\n\n  connect() {\n    this.outputTarget.textContent = 'Hello, Stimulus!'\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\";\r\nimport { loading } from '../../utils/_loading';\r\nimport isEmpty from '../../utils/_empty';\r\n\r\nexport default class extends Controller {\r\n  static targets = [\r\n    'form',\r\n    'actions'\r\n  ];\r\n  // static values  = { calendarUrl: String, merchant: String, slug: String }\r\n\r\n  connect() {\r\n    document.body.classList.add('uju-embedded-form');\r\n    const formContent = this.formTarget;\r\n    let filtered = [];\r\n    let allInputFields = [];\r\n    let initialFieldColour;\r\n    const token = document.querySelector('[data-controller=\"iframe--form\"]').dataset.token;\r\n\r\n    this.collectAllInputs(allInputFields, this.scope);\r\n    this.collectInputs(filtered, this.scope);\r\n    this.collectTextareas(filtered, this.scope);\r\n\r\n    // Remove required so we can do a manual check\r\n    filtered.forEach(field => (field.required = false));\r\n\r\n    let form = document.querySelector('[data-question-validatable]');\r\n\r\n    if (![null, undefined].includes(form)) {\r\n      const submitButton = form.querySelector('input[type=\"submit\"]');\r\n\r\n      if (submitButton) {\r\n        submitButton.removeAttribute('data-disable-with');\r\n      }\r\n\r\n      form.addEventListener(\"submit\", (e) => {\r\n        e.preventDefault();\r\n\r\n        let clickable;\r\n        let errors = [];\r\n        initialFieldColour = 'rgba(0,0,0,0.08)';\r\n\r\n        filtered.forEach((field) => {\r\n          if (isEmpty(field.value)) {\r\n            const accordionItem     = field.closest('.accordion-item');\r\n            clickable               = accordionItem.querySelector('.accordion-button');\r\n            field.style.borderColor = 'red';\r\n\r\n            errors.push([field, clickable]);\r\n          } else {\r\n            field.style.borderColor = initialFieldColour;\r\n          }\r\n        });\r\n\r\n        if (errors.length > 0) {\r\n          const htmlBtn = errors[0][1];\r\n          if (htmlBtn.classList.contains('collapsed')) {\r\n            htmlBtn.click();\r\n          }\r\n        }\r\n\r\n        if (this.readyToSubmit(errors)) {\r\n          formContent.innerHTML = loading('Preparing ...');\r\n          formContent.style.minHeight = '200px';\r\n\r\n          const url = new URL(form.action);\r\n          url.searchParams.append('access_type', 'iframe');\r\n\r\n          const formData = new FormData(form);\r\n\r\n          allInputFields.forEach((field) => {\r\n            switch(field.type) {\r\n              case 'radio':\r\n                if (field.checked) {\r\n                  formData.append(field.name, field.value);\r\n                }\r\n                break;\r\n              case 'checkbox':\r\n                if (field.checked) {\r\n                  formData.append(field.name, field.value);\r\n                }\r\n                break;\r\n              default:\r\n                formData.append(field.name, field.value);\r\n                break;\r\n            }\r\n          })\r\n\r\n          fetch(url, {\r\n            method: \"POST\",\r\n            body: formData,\r\n            headers: {\r\n              'Authorization': `Bearer ${token}`\r\n            },\r\n            credentials: 'include'\r\n          })\r\n          .then(response => response.json())\r\n          .then(result => {\r\n            formContent.innerHTML = result.data.html;\r\n            this.actionsTarget.classList.add('d-none');\r\n          })\r\n          .catch((result) => {\r\n            formContent.innerHTML = result.data.html;\r\n          })\r\n        }\r\n      });\r\n    }\r\n  }\r\n\r\n  readyToSubmit = (errors) => {\r\n    return errors.length === 0;\r\n  }\r\n\r\n  collectAllInputs = (collection, scope) => {\r\n    if (scope.element) {\r\n      scope.element.querySelectorAll('input').forEach((field) => {\r\n        if(!['hidden', 'submit', 'checkbox', 'radio'].includes(field.type)) {\r\n          collection.push(field);\r\n        }\r\n      });\r\n\r\n      // URL\r\n      scope.element.querySelectorAll('input[type=\"url\"]').forEach((field) => {\r\n        collection.push(field);\r\n      });\r\n\r\n      // NUMBERS\r\n      scope.element.querySelectorAll('input[type=\"number\"]').forEach((field) => {\r\n        collection.push(field);\r\n      });\r\n\r\n      // CHECKBOX\r\n      scope.element.querySelectorAll('input[type=\"checkbox\"]').forEach((field) => {\r\n        collection.push(field);\r\n      });\r\n\r\n      // RADIO\r\n      scope.element.querySelectorAll('input[type=\"radio\"]').forEach((field) => {\r\n        collection.push(field);\r\n      });\r\n\r\n      // TEXT AREAS\r\n      scope.element.querySelectorAll('textarea').forEach((field) => {\r\n        collection.push(field);\r\n      });\r\n\r\n      // SELECT FIELDS\r\n      scope.element.querySelectorAll('select').forEach((field) => {\r\n        collection.push(field);\r\n      });\r\n    }\r\n  }\r\n\r\n  collectInputs = (collection, scope) => {\r\n    if (scope.element) {\r\n      scope.element.querySelectorAll('input').forEach((field) => {\r\n        if(!['hidden', 'submit'].includes(field.type) && field.required) {\r\n          collection.push(field);\r\n        }\r\n      });\r\n    }\r\n  }\r\n\r\n  collectTextareas = (collection, scope) => {\r\n    if (scope.element) {\r\n      scope.element.querySelectorAll('textarea').forEach((field) => {\r\n        if(field.required) {\r\n          collection.push(field);\r\n        }\r\n      });\r\n    }\r\n  }\r\n}\r\n", "import { Controller } from \"@hotwired/stimulus\";\r\n\r\nexport default class extends Controller {\r\n  connect() {\r\n    this.updateTime();\r\n    this.intervalId = setInterval(this.updateTime, 1000);\r\n  }\r\n\r\n  updateTime() {\r\n    const now           = new Date();\r\n    const hours         = String(now.getHours()).padStart(2, '0');\r\n    const minutes       = String(now.getMinutes()).padStart(2, '0');\r\n    const formattedTime = `${hours}:${minutes}`;\r\n\r\n    if (this.currentTime === formattedTime) {\r\n      return;\r\n    }\r\n\r\n    const displayEl     = document.querySelector('[data-time-display]')\r\n    displayEl.innerHTML = formattedTime;\r\n    this.currentTime    = formattedTime;\r\n  }\r\n\r\n  disconnect() {\r\n    clearInterval(this.intervalId);\r\n  }\r\n}\r\n", "import { Controller } from \"@hotwired/stimulus\";\r\nimport { loading } from '../../utils/_loading';\r\nimport { debounce } from '../../utils/_debounce';\r\nimport DragSelect from \"dragselect\";\r\n\r\nexport default class extends Controller {\r\n  static targets = [\r\n    'selectable'\r\n  ]\r\n\r\n  static values = { url: String }\r\n\r\n  SELECTED_COLOUR  = 'rgba(74, 215, 209, 0.5)';\r\n  INITIAL_COLOUR   = 'initial';\r\n  AVL_BOOKING_ICON = 'ri-calendar-check-line';\r\n  UNC_BOOKING_ICON = 'ri-calendar-2-line';\r\n  BKD_BOOKING_ICON = 'ri-calendar-close-line';\r\n\r\n  connect() {\r\n    this.setActiveSlots();\r\n\r\n    const ds = new DragSelect({\r\n      selectables: this.selectableTargets,\r\n      draggability: false,\r\n    });\r\n\r\n    ds.subscribe(\"DS:end\", debounce((e) => {\r\n      this.toggleAvailability(e.items);\r\n    }, 250));\r\n  }\r\n\r\n  toggleAvailability(targets) {\r\n    let form = new FormData();\r\n\r\n    targets.forEach((target) => {\r\n      const innerDiv     = target.querySelector('.inner');\r\n      const merchantId = document.body.dataset.currentMerchant;\r\n      innerDiv.classList.add('justify-content-center');\r\n\r\n      innerDiv.innerHTML = loading('', 'sm');\r\n\r\n      form.append('availability', JSON.stringify({ date: targets.map(i => i.dataset.id), merchant_id: merchantId}))\r\n    });\r\n\r\n    const csrfTokenMetaTag = document.querySelector('meta[name=\"csrf-token\"]')\r\n    const csrfToken        = csrfTokenMetaTag ? csrfTokenMetaTag.getAttribute('content') : null;\r\n\r\n    fetch(this.urlValue, {\r\n      method: \"PATCH\",\r\n      body: form,\r\n      headers: {\r\n        'X-CSRF-Token': csrfToken\r\n      },\r\n      credentials: 'include'\r\n    })\r\n    .then(response => response.json())\r\n    .then(result => {\r\n      if (result.message === 'success') {\r\n        result.data.items.forEach((updatedItem) => {\r\n          const cell     = this.selectableTargets.find(i => i.dataset.id === Object.keys(updatedItem)[0])\r\n          const innerDiv = cell.querySelector('.inner');\r\n          let icon       = document.createElement('i');\r\n          let statusEl   = document.createElement('span');\r\n          let currMappedStatus = this.mapStatusToShortStatus(Object.values(updatedItem)[0].status);\r\n\r\n\r\n          innerDiv.classList.remove('justify-content-center');\r\n\r\n          statusEl.classList.add('fs-10');\r\n          statusEl.classList.add('ms-2');\r\n\r\n          statusEl.innerHTML = currMappedStatus;\r\n\r\n          innerDiv.innerHTML = '&nbsp;';\r\n          innerDiv.appendChild(icon);\r\n          innerDiv.appendChild(statusEl);\r\n\r\n          // if status is avl then green\r\n          // if status is bkd then no change\r\n          // if status is unc then no change\r\n          // if status is nvl then clear\r\n\r\n          switch (currMappedStatus) {\r\n            case \"avl\":\r\n              icon.classList.add(this.AVL_BOOKING_ICON);\r\n              innerDiv.style.backgroundColor = this.SELECTED_COLOUR;\r\n              break;\r\n            case \"nvl\":\r\n              innerDiv.innerHTML = '&nbsp;';\r\n              innerDiv.style.backgroundColor = this.INITIAL_COLOUR;\r\n              break;\r\n            case \"unc\":\r\n              icon.classList.add(this.UNC_BOOKING_ICON);\r\n              statusEl.innerHTML = currMappedStatus;\r\n              break;\r\n            case \"bkd\":\r\n              icon.classList.add(this.BKD_BOOKING_ICON);\r\n              statusEl.innerHTML = currMappedStatus;\r\n              break;\r\n          }\r\n        });\r\n      }\r\n    })\r\n    .catch(console.error)\r\n  }\r\n\r\n  setActiveSlots(){\r\n    this.selectableTargets.forEach(element => {\r\n      this.paintCells(element);\r\n    });\r\n  }\r\n\r\n  paintCells(element) {\r\n    if(element.dataset.active === \"true\") {\r\n      const inner = element.querySelector('.inner');\r\n      let icon    = document.createElement('i');\r\n\r\n      icon.classList.add(element.dataset.icon);\r\n\r\n      let statusEl = document.createElement('span')\r\n      statusEl.classList.add('fs-10');\r\n      statusEl.classList.add('ms-2');\r\n      statusEl.innerHTML = element.dataset.status;\r\n\r\n      inner.style.backgroundColor = element.dataset.colour;\r\n      inner.appendChild(icon);\r\n      inner.appendChild(statusEl);\r\n    }\r\n  }\r\n\r\n  mapStatusToShortStatus(status) {\r\n    return {\r\n      'AVAILABLE':     'avl',\r\n      'UNCONFIRMED':   'unc',\r\n      'BOOKED':        'bkd',\r\n      'NOT_AVAILABLE': 'nvl'\r\n    }[status]\r\n  }\r\n}\r\n", "/***\n\n ~~~ Version 3.1.1 ~~~\n\n ******************************************\n\n    ____                   _____      __          __ \n   / __ \\_________ _____ _/ ___/___  / /__  _____/ /_\n  / / / / ___/ __ `/ __ `/\\__ \\/ _ \\/ / _ \\/ ___/ __/\n / /_/ / /  / /_/ / /_/ /___/ /  __/ /  __/ /__/ /_  \n/_____/_/   \\__,_/\\__, //____/\\___/_/\\___/\\___/\\__/  \n               /____/                              \n\n ******************************************\n \n {*} {*} STAR THIS PROJECT ON GITHUB {*} {*}\n\n https://github.com/ThibaultJanBeyer/DragSelect\n Please give it a like, this is what makes me happy :-)\n Thank You\n\n {*} {*} STAR THIS PROJECT ON GITHUB {*} {*}\n \n ***************************************\n ********* GPLv3 / Commercial **********\n ***************************************\n Created 2017 by ThibaultJanBeyer\n Web: http://www.DragSelect.com/\n GitHub: https://github.com/ThibaultJanBeyer/DragSelect\n ***************************************\n*/\nconst addModificationObservers = (nodes, cb) => {\n    const callback = cb;\n    window.addEventListener('resize', callback);\n    window.addEventListener('scroll', callback);\n    const observer = new MutationObserver(callback);\n    const resizeObserver = new ResizeObserver(callback);\n    nodes.forEach((el, i) => {\n        observer.observe(el, {\n            childList: i !== 0,\n            attributes: true,\n        });\n        if (el instanceof Element)\n            resizeObserver.observe(el);\n    });\n    /**\n     * Removes all observers\n     */\n    const cleanup = () => {\n        window.removeEventListener('resize', callback);\n        window.removeEventListener('scroll', callback);\n        observer.disconnect();\n        resizeObserver.disconnect();\n    };\n    return { observer, resizeObserver, callback, cleanup };\n};\n\n/**\n * Returns a function, that, as long as it continues to be invoked, will not\n * be triggered. The function will be called after it stops being called for\n * `wait` milliseconds. All credits to [Trey Huffine]{@link https://levelup.gitconnected.com/debounce-in-javascript-improve-your-applications-performance-5b01855e086}\n */\nconst debounce = (func, wait) => {\n    let timeout;\n    // This is the function that is returned and will be executed many times\n    // We spread (...args) to capture any number of parameters we want to pass\n    return (...args) => {\n        // The callback function to be executed after\n        // the debounce time has elapsed\n        const later = () => {\n            // null timeout to indicate the debounce ended\n            timeout = undefined;\n            // Execute the callback\n            func(...args);\n        };\n        // This will reset the waiting every function execution.\n        // This is the step that prevents the function from\n        // being executed because it will never reach the\n        // inside of the previous setTimeout\n        clearTimeout(timeout);\n        // Restart the debounce waiting period.\n        // setTimeout returns a truthy value (it differs in web vs Node)\n        timeout = setTimeout(later, wait);\n    };\n};\n\nconst getAllParentNodes = (node) => {\n    const traverse = (toWatch, index = 0) => {\n        const parent = toWatch[index]?.parentNode;\n        if (parent) {\n            toWatch.push(parent);\n            index++;\n            return traverse(toWatch, index);\n        }\n        return toWatch;\n    };\n    return traverse([node]);\n};\n\n/**\n * Returns the top/left/bottom/right/width/height\n * values of an area. If area is document then everything\n * except the sizes will be nulled.\n */\nconst getAreaRect = (area, zoom) => {\n    if (area instanceof Document)\n        return {\n            top: 0,\n            left: 0,\n            bottom: 0,\n            right: 0,\n            width: window.innerWidth,\n            height: window.innerHeight,\n        };\n    const rect = area.getBoundingClientRect();\n    return {\n        top: rect.top,\n        left: rect.left,\n        bottom: rect.bottom,\n        right: rect.right,\n        width: (area.clientWidth || rect.width) * zoom,\n        height: (area.clientHeight || rect.height) * zoom,\n    };\n};\n\n/** Fix: some elements have to have a special position attribute for calculations */\nconst handleElementPositionAttribute = ({ computedStyle, node, }) => {\n    const { position } = computedStyle;\n    const isPositioned = position === 'absolute' || position === 'relative' || position === 'fixed';\n    if (!(node instanceof Document) && !isPositioned)\n        node.style.position = 'relative';\n};\n\nlet DOC_ELEMENT; // we store this in the module cache as it is highly unlikely the user to change document\n/** Scroll the element in the specified direction */\nconst scrollElement = (element, directions, multiplier = 1) => {\n    if (!directions?.length || !element)\n        return;\n    let _element = element; // we are typecasting because if it's of type Document we grab the corresponding HTMLElement anyhow\n    if (element instanceof Document) {\n        if (DOC_ELEMENT)\n            _element = DOC_ELEMENT; // cached\n        // either the document is scrollable or the body is scrollable\n        if (Number.isFinite(document?.documentElement?.scrollTop)) {\n            const prev = document.documentElement.scrollTop;\n            document.documentElement.scrollTop += 1;\n            if (document.documentElement.scrollTop === prev) {\n                _element = document.body;\n                DOC_ELEMENT = document.body;\n            }\n            else {\n                document.documentElement.scrollTop = prev;\n                _element = document.documentElement;\n                DOC_ELEMENT = document.documentElement;\n            }\n        }\n    }\n    const scrollTop = directions.includes('top') && _element.scrollTop > 0;\n    const scrollBot = directions.includes('bottom') && _element.scrollTop < _element.scrollHeight;\n    const scrollLeft = directions.includes('left') && _element.scrollLeft > 0;\n    const scrollRight = directions.includes('right') && _element.scrollLeft < _element.scrollWidth;\n    if (scrollTop)\n        _element.scrollTop -= 1 * multiplier;\n    if (scrollBot)\n        _element.scrollTop += 1 * multiplier;\n    if (scrollLeft)\n        _element.scrollLeft -= 1 * multiplier;\n    if (scrollRight)\n        _element.scrollLeft += 1 * multiplier;\n};\n\nclass Area {\n    DS;\n    PS;\n    Settings;\n    _observers;\n    _node;\n    _parentNodes;\n    _computedStyle;\n    _computedBorder;\n    _rect;\n    constructor({ DS, PS }) {\n        this.DS = DS;\n        this.PS = PS;\n        this.Settings = this.DS.stores.SettingsStore.s;\n        this._node = this.Settings.area;\n        this.setArea(this.Settings.area);\n        this.PS.subscribe('Settings:updated:area', ({ settings: { area } }) => this.setArea(area));\n        this.PS.subscribe('Interaction:init', this.init);\n        this.PS.subscribe('Interaction:end', this.reset);\n    }\n    setArea = (area) => {\n        this.reset();\n        this._node = area;\n        handleElementPositionAttribute({\n            computedStyle: this.computedStyle,\n            node: this._node,\n        });\n        // first immediate debounce to update values after dom-update\n        setTimeout(() => {\n            this.PS.publish('Area:modified:pre', { item: this.HTMLNode });\n            this.reset();\n            this.PS.publish('Area:modified', { item: this.HTMLNode });\n        });\n    };\n    init = () => {\n        this._observers = addModificationObservers(this.parentNodes, debounce((event) => {\n            if (!this.hasRelevantBeenModified())\n                return;\n            this.PS.publish('Area:modified:pre', { event, item: this.HTMLNode });\n            this.reset();\n            this.PS.publish('Area:modified', { event, item: this.HTMLNode });\n        }, 60));\n    };\n    // Check whether the for us relevant values have been changed before making a fuzz\n    hasRelevantBeenModified = () => {\n        const prevComputedStyle = this.computedStyle;\n        const prevRect = this.rect;\n        const prevComputedBorder = this.computedBorder;\n        const prevParentNodes = this.parentNodes;\n        this.reset();\n        if (JSON.stringify(prevComputedStyle) !== JSON.stringify(this.computedStyle))\n            return true;\n        if (JSON.stringify(prevRect) !== JSON.stringify(this.rect))\n            return true;\n        if (JSON.stringify(prevComputedBorder) !== JSON.stringify(this.computedBorder))\n            return true;\n        if (prevParentNodes.length !== this.parentNodes.length &&\n            prevParentNodes.some((el) => !this.parentNodes.includes(el)))\n            return true;\n        return false;\n    };\n    reset = () => {\n        this._computedStyle = undefined;\n        this._rect = undefined;\n        this._computedBorder = undefined;\n        this._parentNodes = undefined;\n    };\n    stop = () => {\n        this._observers?.cleanup();\n        this.reset();\n    };\n    /// ///////////////////////////////////////////////////////////////////////////////////\n    // Scroll\n    /** Scroll the area in the specified direction */\n    scroll = (directions, multiplier) => {\n        const data = {\n            scroll_directions: directions,\n            scroll_multiplier: multiplier,\n        };\n        this.PS.publish('Area:scroll:pre', data);\n        scrollElement(this._node, directions, multiplier);\n        this.PS.publish('Area:scroll', data);\n    };\n    /// ///////////////////////////////////////////////////////////////////////////////////\n    // Node Getters\n    get HTMLNode() {\n        return this._node;\n    }\n    /** The computed border from the element (caches result) */\n    get computedBorder() {\n        if (this._computedBorder)\n            return this._computedBorder;\n        return {\n            top: parseInt(this.computedStyle.borderTopWidth),\n            bottom: parseInt(this.computedStyle.borderBottomWidth),\n            left: parseInt(this.computedStyle.borderLeftWidth),\n            right: parseInt(this.computedStyle.borderRightWidth),\n        };\n    }\n    /** The computed styles from the element (caches result) */\n    get computedStyle() {\n        if (this._computedStyle)\n            return this._computedStyle;\n        let tempStyles;\n        if (this.HTMLNode instanceof Document)\n            tempStyles = window.getComputedStyle(this.HTMLNode.body || this.HTMLNode.documentElement);\n        else\n            tempStyles = window.getComputedStyle(this.HTMLNode);\n        return (this._computedStyle = {\n            borderTopWidth: tempStyles.borderTopWidth,\n            borderBottomWidth: tempStyles.borderBottomWidth,\n            borderLeftWidth: tempStyles.borderLeftWidth,\n            borderRightWidth: tempStyles.borderRightWidth,\n            position: tempStyles.position,\n        });\n    }\n    /** The element rect (caches result) (without scrollbar or borders) */\n    get rect() {\n        if (this._rect)\n            return this._rect;\n        return (this._rect = getAreaRect(this.HTMLNode, this.DS.stores.SettingsStore.s.zoom));\n    }\n    get parentNodes() {\n        if (this._parentNodes)\n            return this._parentNodes;\n        return (this._parentNodes = getAllParentNodes(this.HTMLNode));\n    }\n}\n\nconst calcVect = ({ x: x1, y: y1 }, operator, { x: x2, y: y2 }) => {\n    const calculations = {\n        '+': {\n            x: x1 + x2,\n            y: y1 + y2,\n        },\n        '-': {\n            x: x1 - x2,\n            y: y1 - y2,\n        },\n        '*': {\n            x: x1 * x2,\n            y: y1 * y2,\n        },\n        '/': {\n            x: x1 / x2,\n            y: y1 / y2,\n        },\n    };\n    return calculations[operator];\n};\nconst rect2vect = (rect) => ({ x: rect.left, y: rect.top });\nconst vect2rect = (vect, dimension = 0) => ({\n    left: vect.x,\n    top: vect.y,\n    right: vect.x,\n    bottom: vect.y,\n    width: dimension,\n    height: dimension,\n});\nconst num2vect = (n) => ({ x: n, y: n });\n\nconst handleKeyboardDragPosDifference = ({ shiftKey, keyboardDragSpeed, zoom, key, dragKeys, scrollDiff, }) => {\n    const posDirection = { x: 0, y: 0 };\n    const increase = shiftKey\n        ? keyboardDragSpeed * 4 * zoom\n        : keyboardDragSpeed * zoom;\n    if (dragKeys?.left.includes(key))\n        posDirection.x = scrollDiff.x || -increase;\n    if (dragKeys?.right.includes(key))\n        posDirection.x = scrollDiff.x || increase;\n    if (dragKeys?.up.includes(key))\n        posDirection.y = scrollDiff.y || -increase;\n    if (dragKeys?.down.includes(key))\n        posDirection.y = scrollDiff.y || increase;\n    return posDirection;\n};\n\nconst getComputedTranslatePositions = (element) => {\n    const position = {\n        x: 0,\n        y: 0,\n    };\n    const computed = window.getComputedStyle(element);\n    if (!computed.transform || computed.transform === 'none')\n        return position;\n    if (computed.transform.indexOf('3d') >= 0) {\n        const match = computed.transform.trim().match(/matrix3d\\((.*?)\\)/);\n        if (match && match.length) {\n            const values = match[1]?.split(',');\n            position.x = parseInt(values[12]) || 0;\n            position.y = parseInt(values[13]) || 0;\n        }\n        return position;\n    }\n    const match = computed.transform.trim().match(/matrix\\((.*?)\\)/);\n    if (match && match.length) {\n        const values = match[1]?.split(',');\n        position.x = parseInt(values[4]) || 0;\n        position.y = parseInt(values[5]) || 0;\n    }\n    return position;\n};\nconst getTranslatedPositions = (element) => {\n    const { transform } = element.style;\n    if (!transform || transform.indexOf('translate') < 0)\n        return getComputedTranslatePositions(element);\n    const position = {\n        x: 0,\n        y: 0,\n    };\n    const match = transform.trim().match(/translate[3dD]*?\\(.*?\\)/);\n    if (match) {\n        const split = match[0]?.split('(');\n        if (split) {\n            const values = split[1]?.split(',');\n            position.x = parseInt(values[0]) || 0;\n            position.y = parseInt(values[1]) || 0;\n        }\n    }\n    if (!position.x && !position.x)\n        return getComputedTranslatePositions(element);\n    return position;\n};\nconst getTopLeftPosition = (element) => {\n    const { style } = element;\n    const position = {\n        x: parseInt(style.left) || 0,\n        y: parseInt(style.top) || 0,\n    };\n    // initial positions\n    if (!position.x && !position.x) {\n        const computed = window.getComputedStyle(element);\n        return {\n            x: parseInt(computed.left) || 0,\n            y: parseInt(computed.top) || 0,\n        };\n    }\n    return position;\n};\n/**\n * Returns the X and Y coordinates based on styles\n * Can handle translate and top/left\n */\nconst getStylePosition = (element, useTranslate) => {\n    if (useTranslate)\n        return getTranslatedPositions(element);\n    return getTopLeftPosition(element);\n};\n\n/** Sets the style position to the X and Y coordinates. Can handle translate and top/left */\nconst setStylePosition = (element, values, useTranslate) => {\n    if (useTranslate) {\n        const prevTransform = element.style.transform;\n        element.style.transform = `translate3d(${values.x}px,${values.y}px,1px) ${prevTransform.replace(/translate.*?\\)/g, '')}`;\n    }\n    else {\n        element.style.left = `${values.x}px`;\n        element.style.top = `${values.y}px`;\n    }\n    return element;\n};\n\n/** Moves the element in a posDirection */\nconst moveElement = ({ element, posDirection, useTransform }) => {\n    const elementPos = getStylePosition(element, useTransform);\n    const newPos = calcVect(elementPos, '+', posDirection);\n    setStylePosition(element, newPos, useTransform);\n};\n\n/**\n * Modify direction value so that the rect of draggable elements\n * does not exceed the boundaries of container rect\n */\nconst limitDirection = ({ containerRect, selectionRect, direction, scrollAmount }) => {\n    const delta = {\n        top: containerRect.top - selectionRect.top + scrollAmount.y,\n        left: containerRect.left - selectionRect.left + scrollAmount.x,\n        bottom: containerRect.bottom - selectionRect.bottom + scrollAmount.y,\n        right: containerRect.right - selectionRect.right + scrollAmount.x,\n    };\n    if (direction.x === 0 && direction.y === 0)\n        return direction;\n    if (direction.y < 0)\n        direction.y = Math.max(direction.y, delta.top);\n    if (direction.x < 0)\n        direction.x = Math.max(direction.x, delta.left);\n    if (direction.y > 0)\n        direction.y = Math.min(direction.y, delta.bottom);\n    if (direction.x > 0)\n        direction.x = Math.min(direction.x, delta.right);\n    selectionRect.top += direction.y;\n    selectionRect.bottom += direction.y;\n    selectionRect.left += direction.x;\n    selectionRect.right += direction.x;\n    return direction;\n};\n\nclass Drag {\n    _prevCursorPos;\n    _prevScrollPos;\n    _elements = [];\n    _dragKeys;\n    _dragKeysFlat = [];\n    _selectionRect = vect2rect(num2vect(0));\n    DS;\n    PS;\n    Settings;\n    constructor({ DS, PS }) {\n        this.DS = DS;\n        this.PS = PS;\n        this.Settings = this.DS.stores.SettingsStore.s;\n        this.PS.subscribe('Settings:updated:dragKeys', this.assignDragKeys);\n        this.assignDragKeys();\n        this.PS.subscribe('Interaction:start', this.start);\n        this.PS.subscribe('Interaction:end', this.stop);\n        this.PS.subscribe('Interaction:update', this.update);\n        this.PS.subscribe('KeyStore:down', this.keyboardDrag);\n        this.PS.subscribe('KeyStore:up', this.keyboardEnd);\n    }\n    assignDragKeys = () => {\n        this._dragKeys = {\n            up: this.Settings.dragKeys.up.map((k) => k.toLowerCase()),\n            down: this.Settings.dragKeys.down.map((k) => k.toLowerCase()),\n            left: this.Settings.dragKeys.left.map((k) => k.toLowerCase()),\n            right: this.Settings.dragKeys.right.map((k) => k.toLowerCase()),\n        };\n        this._dragKeysFlat = [\n            ...this._dragKeys.up,\n            ...this._dragKeys.down,\n            ...this._dragKeys.left,\n            ...this._dragKeys.right,\n        ];\n    };\n    keyboardDrag = ({ event, key, }) => {\n        const _key = key.toLowerCase();\n        if (!this.Settings.keyboardDrag ||\n            !this._dragKeysFlat.includes(_key) ||\n            !this.DS.SelectedSet.size ||\n            !this.Settings.draggability ||\n            this.DS.continue)\n            return;\n        const publishData = {\n            event,\n            isDragging: true,\n            isDraggingKeyboard: true,\n            key,\n        };\n        this.PS.publish(['Interaction:start:pre', 'Interaction:start'], publishData);\n        this._elements = this.DS.getSelection();\n        this._selectionRect = this.DS.Selection.boundingRect;\n        this.handleZIndex(true);\n        let posDirection = handleKeyboardDragPosDifference({\n            shiftKey: this.DS.stores.KeyStore.currentValues.includes('shift'),\n            keyboardDragSpeed: this.Settings.keyboardDragSpeed,\n            zoom: this.Settings.zoom,\n            key: _key,\n            scrollDiff: this._scrollDiff,\n            dragKeys: this._dragKeys,\n        });\n        posDirection = limitDirection({\n            direction: posDirection,\n            containerRect: this.DS.SelectorArea.rect,\n            scrollAmount: this.DS.stores.ScrollStore.scrollAmount,\n            selectionRect: this._selectionRect,\n        });\n        this.moveElements(posDirection);\n        this.PS.publish(['Interaction:update:pre', 'Interaction:update'], publishData);\n    };\n    keyboardEnd = ({ event, key, }) => {\n        const _key = key.toLowerCase();\n        if (!this.Settings.keyboardDrag ||\n            !this._dragKeysFlat.includes(_key) ||\n            !this.DS.SelectedSet.size ||\n            !this.Settings.draggability)\n            return;\n        const publishData = {\n            event,\n            isDragging: this.Settings.draggability,\n            isDraggingKeyboard: true,\n            key,\n        };\n        this.PS.publish(['Interaction:end:pre', 'Interaction:end'], publishData);\n    };\n    start = ({ isDragging, isDraggingKeyboard, }) => {\n        if (!isDragging || isDraggingKeyboard)\n            return;\n        this._prevCursorPos = undefined;\n        this._prevScrollPos = undefined;\n        this._elements = this.DS.getSelection();\n        this._selectionRect = this.DS.Selection.boundingRect;\n        this.handleZIndex(true);\n    };\n    stop = () => {\n        this._prevCursorPos = undefined;\n        this._prevScrollPos = undefined;\n        this.handleZIndex(false);\n        this._elements = [];\n    };\n    update = ({ isDragging, isDraggingKeyboard, }) => {\n        if (!isDragging ||\n            !this._elements.length ||\n            isDraggingKeyboard ||\n            this.DS.continue)\n            return;\n        let posDirection = calcVect(this._cursorDiff, '+', this._scrollDiff);\n        posDirection = limitDirection({\n            direction: posDirection,\n            containerRect: this.DS.SelectorArea.rect,\n            scrollAmount: this.DS.stores.ScrollStore.scrollAmount,\n            selectionRect: this._selectionRect,\n        });\n        this.moveElements(posDirection);\n    };\n    handleZIndex = (add) => {\n        if (this.Settings.useLayers) {\n            this._elements.forEach((element) => (element.style.zIndex = `${(parseInt(element.style.zIndex) || 0) + (add ? 9999 : -9998)}`));\n        }\n    };\n    moveElements = (posDirection) => {\n        // [PUBLICLY EXPOSED METHOD]\n        const { elements, direction } = this.filterDragElements({\n            elements: this._elements,\n            direction: posDirection,\n        });\n        elements.forEach((element) => {\n            moveElement({\n                element,\n                posDirection: direction,\n                containerRect: this.DS.SelectorArea.rect,\n                useTransform: this.Settings.useTransform,\n            });\n        });\n    };\n    get _cursorDiff() {\n        const currentPointerVal = this.DS.stores.PointerStore.currentVal;\n        const cursorDiff = this._prevCursorPos\n            ? calcVect(currentPointerVal, '-', this._prevCursorPos)\n            : { x: 0, y: 0 };\n        this._prevCursorPos = currentPointerVal;\n        return cursorDiff;\n    }\n    get _scrollDiff() {\n        const currentScrollVal = this.DS.stores.ScrollStore.currentVal;\n        const scrollDiff = this._prevScrollPos\n            ? calcVect(currentScrollVal, '-', this._prevScrollPos)\n            : { x: 0, y: 0 };\n        this._prevScrollPos = currentScrollVal;\n        return scrollDiff;\n    }\n    ////\n    // [PUBLICLY EXPOSED METHODS]\n    /**\n     * Can be overridden to apply further filtering logic after the items to move are identified but before they actually get moved\n     * Is expected to return the elements in the same shape as passed in\n     */\n    filterDragElements = ({ elements, direction, }) => ({\n        elements,\n        direction,\n    });\n}\n\nconst isCollision = (el1, el2, percent = 0) => {\n    if (!el1 || !el2)\n        return false;\n    let element1 = el1;\n    if (percent > 0) {\n        const widthPoint = (el1.right - el1.left) * percent;\n        const heightPoint = (el1.bottom - el1.top) * percent;\n        element1 = {\n            left: el1.left + widthPoint,\n            right: el1.right - widthPoint,\n            top: el1.top + heightPoint,\n            bottom: el1.bottom - heightPoint,\n        };\n    }\n    if (element1.left < el2.right && // 1.\n        element1.right > el2.left && // 2.\n        element1.top < el2.bottom && // 3.\n        element1.bottom > el2.top // 4.\n    )\n        return true;\n    // collision detected!\n    return false;\n};\n\nconst ensureArray = input => {\n    if (!input)\n        return [];\n    if (!Array.isArray(input) && typeof input[Symbol.iterator] !== 'function')\n        return [input];\n    return [...new Set([...input])];\n};\n\nclass DropZone {\n    id;\n    element;\n    _droppables;\n    _rect;\n    _observers;\n    _timeout;\n    _itemsDropped = [];\n    _itemsInside;\n    DS;\n    PS;\n    Settings;\n    isDestroyed = false;\n    _parentNodes;\n    constructor({ DS, PS, id, element, droppables, }) {\n        this.DS = DS;\n        this.PS = PS;\n        this.Settings = this.DS.stores.SettingsStore.s;\n        this.id = id;\n        this.element = element;\n        if (droppables)\n            this.droppables = ensureArray(droppables);\n        this.element.classList.add(`${this.Settings.dropZoneClass}`);\n        this.PS.subscribe('Settings:updated:dropZoneClass', ({ settings }) => {\n            if (!this.element)\n                return;\n            this.element.classList.remove(settings['dropZoneClass:pre']);\n            this.element.classList.add(settings.dropZoneClass);\n        });\n        this._observers = addModificationObservers(this.parentNodes, debounce(() => (this._rect = undefined), this.Settings.refreshMemoryRate));\n        this.PS.subscribe('Interaction:start', this.start);\n        this.PS.subscribe('Interaction:end', this.stop);\n    }\n    setReadyClasses = (action) => {\n        if (this.isDestroyed)\n            return;\n        const selectedEls = this.droppables.filter((el) => this.DS.SelectedSet.has(el));\n        if (!selectedEls.length)\n            return;\n        selectedEls.forEach((item) => {\n            item.classList[action](`${this.Settings.droppableClass}`);\n            item.classList[action](`${this.Settings.droppableClass}-${this.id}`);\n        });\n        this.element.classList[action](`${this.Settings.dropZoneReadyClass}`);\n    };\n    /** This zone is NOT the target of a drop */\n    handleNoDrop = () => {\n        if (this.isDestroyed)\n            return;\n        // for each selected element that is not part of the target zone, remove the classes\n        this.DS.SelectedSet.forEach((item) => {\n            item.classList.remove(this.Settings.droppedTargetClass);\n            item.classList.remove(`${this.Settings.droppedTargetClass}-${this.id}`);\n        });\n        // and remove them from the zones dropped items\n        this._itemsDropped = this._itemsDropped.filter((item) => !this.DS.SelectedSet.has(item));\n        // if the zone has no dropped left, also remove the zones class\n        if (!this._itemsDropped?.length)\n            this.element.classList.remove(`${this.Settings.dropZoneTargetClass}`);\n    };\n    /** This zone IS the target of a drop */\n    handleDrop = () => {\n        if (this.isDestroyed)\n            return;\n        this._itemsDropped = [\n            ...new Set([\n                ...this._itemsDropped,\n                ...this.droppables?.filter((item) => this.DS.SelectedSet.has(item)),\n            ]),\n        ];\n        // add the target class to the zones dropped items\n        this._itemsDropped?.forEach((item) => {\n            item.classList.add(`${this.Settings.droppedTargetClass}`);\n            item.classList.add(`${this.Settings.droppedTargetClass}-${this.id}`);\n        });\n        // if the zone has dropped, add the zones class\n        if (this._itemsDropped?.length)\n            this.element.classList.add(`${this.Settings.dropZoneTargetClass}`);\n    };\n    handleItemsInsideClasses = () => {\n        let isAnyInside = false;\n        this.droppables.forEach((item) => {\n            if (this.itemsInside?.includes(item)) {\n                item.classList.add(`${this.Settings.droppedInsideClass}`);\n                item.classList.add(`${this.Settings.droppedInsideClass}-${this.id}`);\n                isAnyInside = true;\n            }\n            else {\n                item.classList.remove(`${this.Settings.droppedInsideClass}-${this.id}`);\n                if (!item.className.includes(`${this.Settings.droppedInsideClass}-`))\n                    item.classList.remove(`${this.Settings.droppedInsideClass}`);\n            }\n        });\n        if (isAnyInside)\n            this.element.classList.add(`${this.Settings.dropZoneInsideClass}`);\n        else\n            this.element.classList.remove(`${this.Settings.dropZoneInsideClass}`);\n    };\n    start = ({ isDragging }) => {\n        if (!isDragging || this.isDestroyed)\n            return;\n        this.setReadyClasses('add');\n    };\n    stop = ({ isDragging }) => {\n        if (!isDragging || this.isDestroyed)\n            return;\n        this.setReadyClasses('remove');\n        this.handleItemsInsideClasses();\n    };\n    destroy() {\n        this._observers?.cleanup();\n        this.element.classList.remove(`${this.Settings.dropZoneClass}`);\n        this.element.classList.remove(`${this.Settings.dropZoneTargetClass}`);\n        this.element.classList.remove(`${this.Settings.dropZoneReadyClass}`);\n        this.droppables.forEach((item) => {\n            item.classList.remove(`${this.Settings.droppedTargetClass}`);\n            item.classList.remove(`${this.Settings.droppedTargetClass}-${this.id}`);\n            item.classList.remove(`${this.Settings.droppableClass}`);\n            item.classList.remove(`${this.Settings.droppableClass}-${this.id}`);\n        });\n        this.PS.unsubscribe('Interaction:start', this.start);\n        this.PS.unsubscribe('Interaction:end', this.stop);\n        this.isDestroyed = true;\n    }\n    toObject = () => ({\n        id: this.id,\n        element: this.element,\n        droppables: this.droppables,\n        itemsDropped: this.itemsDropped,\n        itemsInside: this.itemsInside,\n    });\n    get rect() {\n        if (this.isDestroyed)\n            return undefined;\n        if (this._rect)\n            return this._rect;\n        return (this._rect = this.element.getBoundingClientRect());\n    }\n    get itemsDropped() {\n        if (this.isDestroyed)\n            return undefined;\n        return this._itemsDropped;\n    }\n    get itemsInside() {\n        if (this.isDestroyed)\n            return undefined;\n        if (this._itemsInside)\n            return this._itemsInside;\n        this._itemsInside = this.droppables.flatMap((item) => {\n            const itemRect = this.DS.SelectableSet.rects.get(item);\n            if (this.rect &&\n                isCollision(itemRect, this.rect, this.Settings.dropInsideThreshold))\n                return [item];\n            return [];\n        });\n        // since elements can be moved while this getter is called, we need to update the values every X seconds\n        if (this._timeout)\n            clearTimeout(this._timeout);\n        this._timeout = setTimeout(() => (this._itemsInside = undefined), this.Settings.refreshMemoryRate);\n        return this._itemsInside;\n    }\n    get parentNodes() {\n        if (this._parentNodes)\n            return this._parentNodes;\n        return (this._parentNodes = getAllParentNodes(this.element));\n    }\n    get droppables() {\n        if (this._droppables)\n            return this._droppables;\n        return this.DS.SelectableSet.elements;\n    }\n    set droppables(value) {\n        this._droppables = value;\n    }\n}\n\nclass DropZones {\n    /** Get the drop zone by the zone element */\n    _zoneByElement = new Map();\n    /** Get the drop zone by the zone id */\n    _zoneById = new Map();\n    /** Get the drop zones by one zone item */\n    _zonesByDroppable = new Map();\n    /** Get the drop zones by one zone item */\n    _zones;\n    DS;\n    PS;\n    Settings;\n    constructor({ DS, PS }) {\n        this.DS = DS;\n        this.PS = PS;\n        this.Settings = this.DS.stores.SettingsStore.s;\n        this.PS.subscribe('Settings:updated:dropZones', ({ settings }) => this.setDropZones(settings));\n        this.setDropZones({ dropZones: this.Settings.dropZones });\n        this.PS.subscribe('Interaction:end', this.stop);\n    }\n    setDropZones = ({ dropZones, }) => {\n        if (!dropZones)\n            return;\n        if (this._zones)\n            this._zones.forEach((zone) => zone.destroy());\n        this._zones = dropZones.map((zone) => new DropZone({ DS: this.DS, PS: this.PS, ...zone }));\n        this._zones.forEach((zone) => {\n            this._zoneByElement.set(zone.element, zone);\n            this._zoneById.set(zone.id, zone);\n            zone.droppables.forEach((droppable) => {\n                const zones = this._zonesByDroppable.get(droppable);\n                if (!zones?.length)\n                    return this._zonesByDroppable.set(droppable, [zone]);\n                this._zonesByDroppable.set(droppable, [...new Set([...zones, zone])]);\n            });\n        });\n    };\n    _handleDrops = (target) => {\n        this._zones?.forEach((zone) => {\n            if (zone !== target)\n                zone.handleNoDrop();\n        });\n        if (!target)\n            return;\n        target.handleDrop();\n    };\n    _getZoneByElementsFromPoint = (elements, { x, y }) => {\n        for (let i = 0, il = elements.length; i < il; i++) {\n            const zone = this._zoneByElement.get(elements[i]);\n            if (isCollision(zone?.rect, { left: x, right: x, top: y, bottom: y }, Math.min(this.Settings.dropTargetThreshold, 0.5)))\n                return zone;\n        }\n    };\n    stop = ({ isDragging, isDraggingKeyboard, event, }) => {\n        if (!isDragging)\n            return;\n        const target = this.getTarget({ isDraggingKeyboard, event });\n        this._handleDrops(target);\n    };\n    /// ///////////////////////////////////////////////////////////////////////////////////\n    // Getters\n    getItemsDroppedById = (zoneId) => {\n        const zone = this._zoneById.get(zoneId);\n        if (!zone)\n            return console.warn(`[DragSelect] No zone found (id: ${zoneId})`);\n        return zone.itemsDropped;\n    };\n    getItemsInsideById = (zoneId, addClasses) => {\n        const zone = this._zoneById.get(zoneId);\n        if (!zone)\n            return console.warn(`[DragSelect] No zone found (id: ${zoneId})`);\n        if (addClasses)\n            zone.handleItemsInsideClasses();\n        return zone.itemsInside;\n    };\n    getKeyboardItemCenter = (isDraggingKeyboard, event) => {\n        if (!isDraggingKeyboard || !event)\n            return;\n        const rect = event.target?.getBoundingClientRect();\n        // center of rect\n        const x = rect.left + rect.width / 2;\n        const y = rect.top + rect.height / 2;\n        return { x, y };\n    };\n    /** Returns first DropsZone under current pointer or coordinates if passed */\n    getTarget = ({ coordinates, isDraggingKeyboard, event, }) => {\n        if (!this._zones?.length)\n            return;\n        let keyboardCoordinates;\n        if (!coordinates && isDraggingKeyboard && event) {\n            keyboardCoordinates = this.getKeyboardItemCenter(isDraggingKeyboard, event);\n        }\n        const x = coordinates?.x ||\n            keyboardCoordinates?.x ||\n            this.DS.stores.PointerStore.currentVal.x;\n        const y = coordinates?.y ||\n            keyboardCoordinates?.y ||\n            this.DS.stores.PointerStore.currentVal.y;\n        const elements = document.elementsFromPoint(x, y);\n        return this._getZoneByElementsFromPoint(elements, { x, y });\n    };\n}\n\nclass Interaction {\n    isInteracting;\n    isDragging = false;\n    DS;\n    PS;\n    Settings;\n    constructor({ DS, PS }) {\n        this.DS = DS;\n        this.PS = PS;\n        this.Settings = this.DS.stores.SettingsStore.s;\n        // not on every modification, just on change of area\n        this.PS.subscribe('Settings:updated:area', ({ settings }) => {\n            this.removeAreaEventListeners(settings['area:pre']);\n            this.setAreaEventListeners(settings['area']);\n        });\n        this.PS.subscribe('PointerStore:updated', ({ event }) => this.update({ event }));\n        this.PS.subscribe('Selectable:click', this.onClick);\n        this.PS.subscribe('Selectable:pointer', ({ event }) => this.start(event));\n        this.PS.subscribe('Interaction:start:pre', ({ event }) => this._start(event));\n        this.PS.subscribe('Interaction:init:pre', this._init);\n        this.PS.subscribe('Interaction:end:pre', ({ event }) => this._reset(event));\n        this.PS.subscribe('Area:scroll', this.update);\n    }\n    init = () => this.PS.publish('Interaction:init:pre', { init: true });\n    _init = () => {\n        this.stop();\n        this.setAreaEventListeners();\n        this.PS.publish('Interaction:init', { init: true });\n    };\n    _canInteract(event) {\n        const isKeyboardClick = 'clientX' in event &&\n            event.clientX === 0 &&\n            event.clientY === 0 &&\n            event.detail === 0 &&\n            event.target;\n        if (('button' in event && event.button === 2) || // right-clicks\n            this.isInteracting || // fix double-click issues\n            (event.target && !this.DS.SelectorArea.isInside(event.target)) || // fix outside elements issue\n            (!isKeyboardClick && !this.DS.SelectorArea.isClicked(event)) // make sure the mouse click is inside the area\n        )\n            return false;\n        return true;\n    }\n    start = (event) => this.PS.publish('Interaction:start:pre', {\n        event: event,\n        isDragging: this.isDragging,\n    });\n    _start = (event) => {\n        if (event.type === 'touchstart')\n            event.preventDefault(); // Call preventDefault() to prevent double click issue, see https://github.com/ThibaultJanBeyer/DragSelect/pull/29 & https://developer.mozilla.org/vi/docs/Web/API/Touch_events/Supporting_both_TouchEvent_and_MouseEvent\n        if (!this._canInteract(event))\n            return;\n        this.isInteracting = true;\n        this.isDragging = this.isDragEvent(event);\n        this.PS.publish('Interaction:start', {\n            event,\n            isDragging: this.isDragging,\n        });\n        this.setDocEventListeners();\n    };\n    isDragEvent = (event) => {\n        let clickedElement = null;\n        if (event.target && 'closest' in event.target)\n            clickedElement = event.target.closest(`.${this.Settings.selectableClass}`);\n        if (!this.Settings.draggability ||\n            this.DS.stores.KeyStore.isMultiSelectKeyPressed(event) ||\n            !clickedElement)\n            return false;\n        if (this.Settings.immediateDrag) {\n            if (!this.DS.SelectedSet.size)\n                this.DS.SelectedSet.add(clickedElement);\n            else if (!this.DS.SelectedSet.has(clickedElement)) {\n                this.DS.SelectedSet.clear();\n                this.DS.SelectedSet.add(clickedElement);\n            }\n        }\n        if (this.DS.SelectedSet.has(clickedElement))\n            return true;\n        return false;\n    };\n    /**\n     * Triggers when a node is actively selected: <button> nodes that are pressed via the keyboard.\n     * Making DragSelect accessible for everyone!\n     */\n    onClick = ({ event }) => {\n        if (!this._canInteract(event))\n            return;\n        if (event.detail > 0)\n            return; // mouse interaction\n        const { stores: { PointerStore, KeyStore }, SelectableSet, SelectedSet, } = this.DS;\n        PointerStore.start(event);\n        const node = event.target;\n        if (node && !SelectableSet.has(node))\n            return;\n        if (!KeyStore.isMultiSelectKeyPressed(event))\n            SelectedSet.clear();\n        if (node)\n            SelectedSet.toggle(node);\n        this.reset(event); // simulate mouse-up (that does not exist on keyboard)\n    };\n    stop = (area = this.DS.Area.HTMLNode) => {\n        this.removeAreaEventListeners(area);\n        this.removeDocEventListeners();\n    };\n    update = ({ event, scroll_directions, scroll_multiplier, }) => {\n        if (this.isInteracting)\n            this.PS.publish(['Interaction:update:pre', 'Interaction:update'], {\n                event,\n                scroll_directions,\n                scroll_multiplier,\n                isDragging: this.isDragging,\n            });\n    };\n    reset = (event) => this.PS.publish('Interaction:end:pre', {\n        event,\n        isDragging: this.isDragging,\n    });\n    _reset = (event) => {\n        const { isDragging } = this;\n        this.isInteracting = false;\n        this.isDragging = false;\n        this.removeDocEventListeners();\n        this.PS.publish('Interaction:end', { event, isDragging });\n    };\n    //////////////////////////////////////////////////////////////////////////////////////\n    // Event Listeners\n    setAreaEventListeners = (area = this.DS.Area.HTMLNode) => {\n        // @TODO: fix pointer events mixing issue see [PR](https://github.com/ThibaultJanBeyer/DragSelect/pull/128#issuecomment-1154885289)\n        if (this.Settings.usePointerEvents)\n            area.addEventListener('pointerdown', this.start, {\n                passive: false,\n            });\n        else\n            area.addEventListener('mousedown', this.start);\n        area.addEventListener('touchstart', this.start, {\n            passive: false,\n        });\n    };\n    removeAreaEventListeners = (area = this.DS.Area.HTMLNode) => {\n        // @TODO: fix pointer events mixing issue see [PR](https://github.com/ThibaultJanBeyer/DragSelect/pull/128#issuecomment-1154885289)\n        if (this.Settings.usePointerEvents) {\n            area.removeEventListener('pointerdown', this.start, {\n                // @ts-ignore\n                passive: false,\n            });\n        }\n        else\n            area.removeEventListener('mousedown', this.start);\n        area.removeEventListener('touchstart', this.start, {\n            // @ts-ignore\n            passive: false,\n        });\n    };\n    setDocEventListeners = () => {\n        // @TODO: fix pointer events mixing issue see [PR](https://github.com/ThibaultJanBeyer/DragSelect/pull/128#issuecomment-1154885289)\n        if (this.Settings.usePointerEvents) {\n            document.addEventListener('pointerup', this.reset);\n            document.addEventListener('pointercancel', this.reset);\n        }\n        else\n            document.addEventListener('mouseup', this.reset);\n        document.addEventListener('touchend', this.reset);\n    };\n    removeDocEventListeners = () => {\n        // @TODO: fix pointer events mixing issue see [PR](https://github.com/ThibaultJanBeyer/DragSelect/pull/128#issuecomment-1154885289)\n        if (this.Settings.usePointerEvents) {\n            document.removeEventListener('pointerup', this.reset);\n            document.removeEventListener('pointercancel', this.reset);\n        }\n        else\n            document.removeEventListener('mouseup', this.reset);\n        document.removeEventListener('touchend', this.reset);\n    };\n}\n\nclass KeyStore {\n    _currentValues = new Set();\n    _keyMapping = {\n        control: 'ctrlKey',\n        shift: 'shiftKey',\n        meta: 'metaKey',\n    };\n    DS;\n    PS;\n    settings;\n    /**\n     * @class KeyStore\n     * @constructor KeyStore\n     * @ignore\n     */\n    constructor({ DS, PS }) {\n        this.DS = DS;\n        this.PS = PS;\n        this.settings = this.DS.stores.SettingsStore.s;\n        this.PS.subscribe('Interaction:init', this.init);\n    }\n    init = () => {\n        document.addEventListener('keydown', this.keydown);\n        document.addEventListener('keyup', this.keyup);\n        window.addEventListener('blur', this.reset);\n    };\n    keydown = (event) => {\n        if (!event.key?.toLocaleLowerCase)\n            return;\n        const key = event.key.toLowerCase();\n        this.PS.publish('KeyStore:down:pre', { event, key });\n        this._currentValues.add(key);\n        this.PS.publish('KeyStore:down', { event, key });\n    };\n    keyup = (event) => {\n        if (!event.key?.toLocaleLowerCase)\n            return;\n        const key = event.key.toLowerCase();\n        this.PS.publish('KeyStore:up:pre', { event, key });\n        this._currentValues.delete(key);\n        this.PS.publish('KeyStore:up', { event, key });\n    };\n    stop = () => {\n        document.removeEventListener('keydown', this.keydown);\n        document.removeEventListener('keyup', this.reset);\n        window.removeEventListener('blur', this.reset);\n        this.reset();\n    };\n    reset = () => this._currentValues.clear();\n    isMultiSelectKeyPressed(event) {\n        if (this.settings.multiSelectMode)\n            return true;\n        const multiSelectKeys = this.settings.multiSelectKeys?.map((key) => key.toLocaleLowerCase()) ?? [];\n        if (this.currentValues.some((key) => multiSelectKeys.includes(key)))\n            return true;\n        if (event && multiSelectKeys.some((key) => event[this._keyMapping[key]]))\n            return true;\n        return false;\n    }\n    get currentValues() {\n        return Array.from(this._currentValues.values());\n    }\n}\n\n/**\n * Returns cursor x, y position based on event object\n */\nconst getPointerPos = ({ event }) => ({\n    x: event.clientX,\n    y: event.clientY,\n});\n\nclass PointerStore {\n    _isMouseInteraction = false;\n    // Position relative to area\n    _initialValArea = { x: 0, y: 0 };\n    _currentValArea = { x: 0, y: 0 };\n    _lastValArea = { x: 0, y: 0 };\n    // General Pointer Position\n    _initialVal = { x: 0, y: 0 };\n    _currentVal = { x: 0, y: 0 };\n    _lastVal = { x: 0, y: 0 };\n    _lastTouch;\n    DS;\n    PS;\n    settings;\n    constructor({ DS, PS }) {\n        this.DS = DS;\n        this.PS = PS;\n        this.settings = this.DS.stores.SettingsStore.s;\n        this.PS.subscribe('Interaction:init', this.init);\n        this.PS.subscribe('Interaction:start', ({ event }) => this.start(event));\n        this.PS.subscribe('Interaction:end', ({ event }) => this.reset(event));\n    }\n    init = () => {\n        if (this.settings.usePointerEvents)\n            document.addEventListener('pointermove', this.update, { passive: false });\n        else\n            document.addEventListener('mousemove', this.update);\n        document.addEventListener('touchmove', this.update, { passive: false });\n    };\n    start(event) {\n        if (!event)\n            return;\n        this._isMouseInteraction = true;\n        this.currentVal = this.initialVal = this.getPointerPosition(event);\n    }\n    getPointerPosition = (event) => getPointerPos({\n        event: this._normalizedEvent(event),\n    });\n    update = (event) => {\n        // type Event to satisfy event listeners, but we know type is : event as InteractionEvent\n        if (!event)\n            return;\n        this.PS.publish('PointerStore:updated:pre', {\n            event: event,\n        });\n        this.currentVal = this.getPointerPosition(event);\n        if (!this._isMouseInteraction)\n            return;\n        this.PS.publish('PointerStore:updated', {\n            event: event,\n        });\n    };\n    stop = () => {\n        // @TODO: fix pointer events mixing issue see [PR](https://github.com/ThibaultJanBeyer/DragSelect/pull/128#issuecomment-1154885289)\n        if (this.settings.usePointerEvents)\n            document.removeEventListener('pointermove', this.update, {\n                // @ts-ignore\n                passive: false,\n            });\n        else\n            document.removeEventListener('mousemove', this.update);\n        document.removeEventListener('touchmove', this.update, {\n            // @ts-ignore\n            passive: false,\n        });\n        this.reset();\n    };\n    reset = (event) => {\n        this.currentVal = this.lastVal = this.getPointerPosition(event);\n        // debounce in order \"onClick\" to work\n        setTimeout(() => (this._isMouseInteraction = false), 100);\n    };\n    _normalizedEvent(event) {\n        // null KeyboardEvents\n        if (!event || event instanceof KeyboardEvent)\n            return { clientX: 0, clientY: 0 };\n        // touchend has not touches. so we take the last touch if a touchevent, we need to store the positions\n        if ('touches' in event) {\n            if (event.type !== 'touchend')\n                this._lastTouch = event;\n            // if a touchevent, return the last touch rather than the regular event\n            // as we need .touches[0] from that event\n            return this._lastTouch?.touches[0] || event.touches[0];\n        }\n        return event;\n    }\n    /** First recorded pointer position within the area */\n    get initialValArea() {\n        if (!this._initialValArea)\n            return { x: 0, y: 0 };\n        return this._initialValArea;\n    }\n    /** Current pointer position within the area */\n    get currentValArea() {\n        if (!this._currentValArea)\n            return { x: 0, y: 0 };\n        return this._currentValArea;\n    }\n    /** Last recorded pointer position within the area */\n    get lastValArea() {\n        if (!this._lastValArea)\n            return { x: 0, y: 0 };\n        return this._lastValArea;\n    }\n    /** First recorded pointer position */\n    get initialVal() {\n        if (!this._initialVal)\n            return { x: 0, y: 0 };\n        return this._initialVal;\n    }\n    /** Current pointer position */\n    get currentVal() {\n        if (!this._currentVal)\n            return { x: 0, y: 0 };\n        return this._currentVal;\n    }\n    /** Last recorded pointer position */\n    get lastVal() {\n        if (!this._lastVal)\n            return { x: 0, y: 0 };\n        return this._lastVal;\n    }\n    set initialVal(value) {\n        this._initialVal = value;\n        this._initialValArea =\n            value &&\n                calcVect(value, '-', calcVect(rect2vect(this.DS.Area.rect), '+', rect2vect(this.DS.Area.computedBorder)));\n    }\n    set currentVal(value) {\n        this._currentVal = value;\n        this._currentValArea =\n            value &&\n                calcVect(value, '-', calcVect(rect2vect(this.DS.Area.rect), '+', rect2vect(this.DS.Area.computedBorder)));\n    }\n    set lastVal(value) {\n        this._lastVal = value;\n        this._lastValArea =\n            value &&\n                calcVect(value, '-', calcVect(rect2vect(this.DS.Area.rect), '+', rect2vect(this.DS.Area.computedBorder)));\n    }\n}\n\nclass PubSub {\n    subscribers = {};\n    DS;\n    constructor({ DS }) {\n        this.DS = DS;\n    }\n    /**\n     * Subscribe to an event\n     * @returns event id, can be used to unsubscribe more efficiently\n     */\n    subscribe = (eventName, callback) => {\n        if (!Array.isArray(this.subscribers[eventName]))\n            this.subscribers[eventName] = [];\n        const subscribers = this.subscribers[eventName];\n        subscribers.push(callback);\n        return subscribers.length - 1;\n    };\n    /**\n     * Removes event subscription\n     * @param callback the callback method signature, has to be exactly the same as when subscribing. Consider using \"id\" instead.\n     * @param id event id returned when subscribed (more performant than callback search)\n     */\n    unsubscribe = (eventName, callback, id) => {\n        const index = id ?? this.subscribers[eventName]?.findIndex((cb) => cb === callback);\n        this.subscribers[eventName]?.splice(Number(index), 1);\n    };\n    /**\n     * Publishes an event to all subscribers\n     * @param eventName\n     * @param data passed to the subscription method\n     */\n    publish = (eventName, data) => {\n        if (Array.isArray(eventName))\n            eventName.forEach((name) => this._publish(name, data));\n        else\n            this._publish(eventName, data);\n    };\n    _publish = (eventName, data) => {\n        const subscribers = this.subscribers[eventName] ?? [];\n        if (eventName.includes(`:pre`))\n            this._handlePrePublish(subscribers, data);\n        else\n            this._handlePublish(subscribers, data);\n    };\n    // non-pre events are executed first in first out\n    _handlePublish = (subscribers, data) => {\n        for (let i = 0, il = subscribers.length; i < il; i++) {\n            if (this.DS.stopped)\n                return;\n            subscribers[i]?.(data);\n        }\n    };\n    // pre events are executed last in first out (so user callbacks are called before DS callbacks)\n    _handlePrePublish = (subscribers, data) => {\n        let i = subscribers.length;\n        while (i--) {\n            if (this.DS.stopped)\n                return;\n            subscribers[i]?.(data);\n        }\n    };\n}\n\nconst getDocumentScroll = () => ({\n    y: document.body?.scrollTop || document.documentElement?.scrollTop || 0,\n    x: document.body?.scrollLeft || document.documentElement?.scrollLeft || 0,\n});\n\nconst getCurrentScroll = area => {\n    if (!area || area instanceof Document)\n        return getDocumentScroll();\n    return {\n        x: area.scrollLeft >= 0 ? area.scrollLeft : getDocumentScroll().x,\n        y: area.scrollTop >= 0 ? area.scrollTop : getDocumentScroll().y,\n    };\n};\n\nconst canScroll = area => {\n    const scroll = getCurrentScroll(area);\n    if (scroll.x || scroll.y)\n        return true;\n    if (area instanceof Document) {\n        if (area.body)\n            return _canScroll(area.body);\n        return _canScroll(area.documentElement);\n    }\n    return _canScroll(area);\n};\n// @TODO: Determine if there is a better way to test scrollability\nconst _canScroll = (el) => {\n    const currentScrollTop = el.scrollTop;\n    const canScroll = Boolean(el.scrollTop = 1);\n    el.scrollTop = currentScrollTop;\n    return canScroll;\n};\n\nclass ScrollStore {\n    _initialVal = { x: 0, y: 0 };\n    _currentVal = { x: 0, y: 0 };\n    _canScroll;\n    DS;\n    PS;\n    Settings;\n    constructor({ DS, PS }) {\n        this.DS = DS;\n        this.PS = PS;\n        this.Settings = this.DS.stores.SettingsStore.s;\n        this.PS.subscribe('Area:modified', () => {\n            this.stop();\n            this.init();\n        });\n        this.PS.subscribe('Interaction:init', this.init);\n        this.PS.subscribe('Interaction:start', () => this.start());\n        this.PS.subscribe('Interaction:end', () => this.reset());\n    }\n    init = () => this.addListeners();\n    addListeners = () => this.DS.Area.HTMLNode.addEventListener('scroll', this.update);\n    removeListeners = () => this.DS.Area.HTMLNode.removeEventListener('scroll', this.update);\n    start = () => {\n        this._currentVal = this._initialVal = getCurrentScroll(this.DS.Area.HTMLNode);\n    };\n    update = () => (this._currentVal = getCurrentScroll(this.DS.Area.HTMLNode));\n    stop = () => {\n        this.reset();\n        this.removeListeners();\n    };\n    reset = () => {\n        this._initialVal = { x: 0, y: 0 };\n        this._canScroll = undefined;\n    };\n    get canScroll() {\n        if (typeof this._canScroll === 'boolean')\n            return this._canScroll;\n        return (this._canScroll = canScroll(this.DS.Area.HTMLNode));\n    }\n    get scrollAmount() {\n        const scrollDiff = calcVect(this.currentVal, '-', this.initialVal);\n        // if area is zoomed, the scroll values are skewed, we need to fix that manually :(\n        const zoom = num2vect(this.Settings.zoom);\n        const zoomScroll = calcVect(calcVect(scrollDiff, '*', zoom), '-', scrollDiff);\n        return {\n            x: scrollDiff.x + zoomScroll.x,\n            y: scrollDiff.y + zoomScroll.y,\n        };\n    }\n    get initialVal() {\n        if (!this._initialVal)\n            return { x: 0, y: 0 };\n        return this._initialVal;\n    }\n    get currentVal() {\n        if (!this._currentVal)\n            this._currentVal = getCurrentScroll(this.DS.Area.HTMLNode);\n        return this._currentVal;\n    }\n}\n\nclass SelectableSet extends Set {\n    _rects;\n    _timeout;\n    DS;\n    PS;\n    Settings;\n    constructor({ DS, PS }) {\n        super();\n        this.DS = DS;\n        this.PS = PS;\n        this.Settings = this.DS.stores.SettingsStore.s;\n        this.PS.subscribe('Interaction:init', this.init);\n        this.PS.subscribe('Settings:updated:selectables', () => {\n            this.clear();\n            this.init();\n        });\n        this.PS.subscribe('Settings:updated:selectableClass', ({ settings }) => {\n            this.forEach((el) => {\n                el.classList.remove(settings['selectableClass:pre']);\n                el.classList.add(settings.selectableClass);\n            });\n        });\n    }\n    init = () => ensureArray(this.Settings.selectables).forEach((el) => this.add(el));\n    add(element) {\n        if (!element || super.has(element))\n            return this;\n        const publishData = {\n            items: this.elements,\n            item: element,\n        };\n        this.PS.publish('Selectable:added:pre', publishData);\n        element.classList.add(this.Settings.selectableClass);\n        element.addEventListener('click', this._onClick);\n        if (this.Settings.usePointerEvents)\n            element.addEventListener('pointerdown', this._onPointer, { passive: false });\n        else\n            element.addEventListener('mousedown', this._onPointer);\n        element.addEventListener('touchstart', this._onPointer, { passive: false });\n        if (this.Settings.draggability && !this.Settings.useTransform)\n            handleElementPositionAttribute({\n                computedStyle: window.getComputedStyle(element),\n                node: element,\n            });\n        this.PS.publish('Selectable:added', publishData);\n        return super.add(element);\n    }\n    delete(element) {\n        if (!element || !super.has(element))\n            return true;\n        const publishData = {\n            items: this.elements,\n            item: element,\n        };\n        this.PS.publish('Selectable:removed:pre', publishData);\n        element.classList.remove(this.Settings.selectableClass);\n        element.classList.remove(this.Settings.hoverClass);\n        element.removeEventListener('click', this._onClick);\n        if (this.Settings.usePointerEvents)\n            element.removeEventListener('pointerdown', this._onPointer, {\n                // @ts-ignore\n                passive: false,\n            });\n        else\n            element.removeEventListener('mousedown', this._onPointer);\n        element.removeEventListener('touchstart', this._onPointer, {\n            // @ts-ignore\n            passive: false,\n        });\n        this.PS.publish('Selectable:removed', publishData);\n        return super.delete(element);\n    }\n    clear = () => this.forEach((el) => this.delete(el));\n    _onClick = (event) => // we know it\u2019s only a MouseEvent\n     this.PS.publish(['Selectable:click:pre', 'Selectable:click'], { event: event });\n    _onPointer = (event) => // we know it\u2019s only an InteractionEvent\n     this.PS.publish(['Selectable:pointer:pre', 'Selectable:pointer'], { event: event });\n    addAll = (elements) => elements.forEach((el) => this.add(el));\n    deleteAll = (elements) => elements.forEach((el) => this.delete(el));\n    /**\n     * Gets the bounding rect from private memory if available. If not gets it from the DOM.\n     * => Does not force rect calculation on all elements\n     */\n    getElementRect = (element) => this._rects ? this._rects.get(element) : element.getBoundingClientRect();\n    get elements() {\n        return Array.from(this.values());\n    }\n    get rects() {\n        if (this._rects)\n            return this._rects;\n        this._rects = new Map();\n        this.forEach((element) => this._rects?.set(element, element.getBoundingClientRect()));\n        // since elements can be moved, we need to update the rects every X ms\n        if (this._timeout)\n            clearTimeout(this._timeout);\n        this._timeout = setTimeout(() => (this._rects = undefined), this.Settings.refreshMemoryRate);\n        return this._rects;\n    }\n}\n\nclass SelectedSet extends Set {\n    _rects;\n    _timeout;\n    DS;\n    PS;\n    Settings;\n    constructor({ DS, PS }) {\n        super();\n        this.DS = DS;\n        this.PS = PS;\n        this.Settings = this.DS.stores.SettingsStore.s;\n    }\n    add(element) {\n        if (!element || super.has(element))\n            return this;\n        const publishData = {\n            items: this.elements,\n            item: element,\n        };\n        this.PS.publish('Selected:added:pre', publishData);\n        super.add(element);\n        element.classList.add(this.Settings.selectedClass);\n        if (this.Settings.useLayers)\n            element.style.zIndex = `${(parseInt(element.style.zIndex) || 0) + 1}`;\n        this.PS.publish('Selected:added', publishData);\n        return this;\n    }\n    delete(element) {\n        if (!element || !super.has(element))\n            return true;\n        const publishData = {\n            items: this.elements,\n            item: element,\n        };\n        this.PS.publish('Selected:removed:pre', publishData);\n        const deleted = super.delete(element);\n        element.classList.remove(this.Settings.selectedClass);\n        if (this.Settings.useLayers)\n            element.style.zIndex = `${(parseInt(element.style.zIndex) || 0) - 1}`;\n        this.PS.publish('Selected:removed', publishData);\n        return deleted;\n    }\n    clear = () => this.forEach((el) => this.delete(el));\n    /** Adds/Removes an element. If it is already selected = remove, if not = add. */\n    toggle(element) {\n        if (this.has(element))\n            this.delete(element);\n        else\n            this.add(element);\n        return element;\n    }\n    addAll = (elements) => elements.forEach((el) => this.add(el));\n    deleteAll = (elements) => elements.forEach((el) => this.delete(el));\n    get elements() {\n        return Array.from(this.values());\n    }\n    get rects() {\n        if (this._rects)\n            return this._rects;\n        this._rects = new Map();\n        this.forEach((element) => this._rects?.set(element, element.getBoundingClientRect()));\n        // since elements can be moved, we need to update the rects every X ms\n        if (this._timeout)\n            clearTimeout(this._timeout);\n        this._timeout = setTimeout(() => (this._rects = undefined), this.Settings.refreshMemoryRate);\n        return this._rects;\n    }\n}\n\nconst createSelectorElement = (customStyles) => {\n    const selector = document.createElement('div');\n    selector.style.position = 'absolute';\n    if (!customStyles) {\n        selector.style.background = 'rgba(0, 175, 255, 0.2)';\n        selector.style.border = '1px solid rgba(0, 175, 255, 0.8)';\n        selector.style.display = 'none';\n        selector.style.pointerEvents = 'none'; // fix for issue #8 (ie11+)\n    }\n    return selector;\n};\n\n/** Reliably returns the exact x,y,w,h positions of the selector element */\nconst getSelectorPosition = ({ scrollAmount, initialPointerPos, pointerPos }) => {\n    /** check for direction\n     *\n     * This is quite complicated, so also quite complicated to explain. Lemme\u2019 try:\n     *\n     * Problem #1:\n     * Sadly in HTML we can not have negative sizes.\n     * so if we want to scale our element 10px to the right then it is easy,\n     * we just have to add +10px to the width. But if we want to scale the element\n     * -10px to the left then things become more complicated, we have to move\n     * the element -10px to the left on the x axis and also scale the element\n     * by +10px width to fake a negative sizing.\n     *\n     * One solution to this problem is using css-transforms scale() with\n     * transform-origin of top left. BUT we can\u2019t use this since it will size\n     * everything, then when your element has a border for example, the border will\n     * get inanely huge. Also transforms are not widely supported in IE.\n     *\n     * Example #1:\n     * Unfortunately, things get even more complicated when we are inside a scroll-able\n     * DIV. Then, let\u2019s say we scroll to the right by 10px and move the cursor right by 5px in our\n     * checks we have to subtract 10px from the initialcursor position in our check\n     * (since the initial position is moved to the left by 10px) so in our example:\n     * 1. pointerPos.x (5) > initialPointerPos.x (0) - scrollAmount.x (10) === 5 > -10 === true\n     * then set the x position to the cursors start position\n     * selectorPos.x = initialPointerPos.x (0) - scrollAmount.x (10) === 10 // 2.\n     * then we can calculate the elements width, which is\n     * the new cursor position minus the initial one plus the scroll amount, so in our example:\n     * 3. selectorPos.w = pointerPos.x (5) - initialPointerPos.x (0) + scrollAmount.x (10) === 15;\n     *\n     * let\u2019s say after that movement we now scroll 20px to the left and move our cursor by 30px to the left:\n     * 1b. pointerPos.x (-30) > initialPointerPos.x (0) - scrollAmount.x (-20) === -30 < --20 === -30 < +20 === false;\n     * 2b. selectorPos.x = pointerPos.x (-30) === -30; move left position to cursor (for more info see Problem #1)\n     * 3b. selectorPos.w = initialPointerPos.x (0) - pointerPos.x (-30) - scrollAmount.x (-20) === 0--30--20 === 0+30+20 === 50;  // scale width to original left position (for more info see Problem #1)\n     *\n     * same thing has to be done for top/bottom\n     *\n     * I hope that makes sense. Try stuff out and play around with variables to get a hang of it.\n     */\n    const selectorPos = {};\n    // right\n    if (pointerPos.x > initialPointerPos.x - scrollAmount.x) {\n        // 1.\n        selectorPos.left = initialPointerPos.x - scrollAmount.x; // 2.\n        selectorPos.width = pointerPos.x - initialPointerPos.x + scrollAmount.x; // 3.\n        // left\n    }\n    else {\n        // 1b.\n        selectorPos.left = pointerPos.x; // 2b.\n        selectorPos.width = initialPointerPos.x - pointerPos.x - scrollAmount.x; // 3b.\n    }\n    // bottom\n    if (pointerPos.y > initialPointerPos.y - scrollAmount.y) {\n        selectorPos.top = initialPointerPos.y - scrollAmount.y;\n        selectorPos.height = pointerPos.y - initialPointerPos.y + scrollAmount.y;\n        // top\n    }\n    else {\n        selectorPos.top = pointerPos.y;\n        selectorPos.height = initialPointerPos.y - pointerPos.y - scrollAmount.y;\n    }\n    return selectorPos;\n};\n\n/** Updates element style left, top, width, height values according to pos input object */\nvar updateElementStylePos = (element, pos) => {\n    if (pos.left)\n        element.style.left = `${pos.left}px`;\n    if (pos.top)\n        element.style.top = `${pos.top}px`;\n    if (pos.width)\n        element.style.width = `${pos.width}px`;\n    if (pos.height)\n        element.style.height = `${pos.height}px`;\n};\n\nclass Selector {\n    _rect;\n    DS;\n    PS;\n    Settings;\n    HTMLNode;\n    constructor({ DS, PS }) {\n        this.DS = DS;\n        this.PS = PS;\n        this.Settings = this.DS.stores.SettingsStore.s;\n        this.HTMLNode = this.Settings.selector; // to make TS happy, will be replaced in `attachSelector`\n        this.PS.subscribe('Settings:updated:selectorClass', ({ settings }) => {\n            this.HTMLNode.classList.remove(settings['selectorClass:pre']);\n            this.HTMLNode.classList.add(settings.selectorClass);\n        });\n        this.PS.subscribe('Settings:updated:selector', this.attachSelector);\n        this.PS.subscribe('Settings:updated:customStyles', this.attachSelector);\n        this.attachSelector();\n        this.PS.subscribe('Interaction:start', this.start);\n        this.PS.subscribe('Interaction:update', this.update);\n        this.PS.subscribe('Interaction:end', this.stop);\n    }\n    attachSelector = () => {\n        if (this.HTMLNode && this.DS.SelectorArea?.HTMLNode)\n            this.DS.SelectorArea.HTMLNode.removeChild(this.HTMLNode);\n        this.HTMLNode = this.Settings.selector || createSelectorElement(this.Settings.customStyles);\n        this.HTMLNode.classList.add(this.Settings.selectorClass);\n        if (this.HTMLNode && this.DS.SelectorArea?.HTMLNode)\n            this.DS.SelectorArea.HTMLNode.appendChild(this.HTMLNode);\n    };\n    start = ({ isDragging }) => {\n        if (isDragging)\n            return;\n        const { stores: { PointerStore }, } = this.DS;\n        const pPos = PointerStore.initialValArea;\n        updateElementStylePos(this.HTMLNode, vect2rect(pPos, 1));\n        this.HTMLNode.style.display = 'block';\n        this._rect = undefined;\n    };\n    stop = () => {\n        this.HTMLNode.style.width = '0';\n        this.HTMLNode.style.height = '0';\n        this.HTMLNode.style.display = 'none';\n    };\n    /** Moves the selection to the correct place */\n    update = ({ isDragging }) => {\n        if (isDragging || this.DS.continue)\n            return;\n        const { stores: { ScrollStore, PointerStore }, } = this.DS;\n        const pos = getSelectorPosition({\n            scrollAmount: ScrollStore.scrollAmount,\n            initialPointerPos: PointerStore.initialValArea,\n            pointerPos: PointerStore.currentValArea,\n        });\n        updateElementStylePos(this.HTMLNode, pos);\n        this._rect = undefined;\n    };\n    get rect() {\n        if (this._rect)\n            return this._rect;\n        return (this._rect = this.HTMLNode.getBoundingClientRect());\n    }\n}\n\n/** Logic when an element is selected */\nconst handleSelection = ({ element, force, multiSelectionToggle, SelectedSet, hoverClassName, }) => {\n    if (element.classList.contains(hoverClassName) && !force)\n        return;\n    if (!SelectedSet.has(element))\n        SelectedSet.add(element);\n    else if (multiSelectionToggle)\n        SelectedSet.delete(element);\n    element.classList.add(hoverClassName);\n};\n\n/** Logic when an element is de-selected */\nconst handleUnSelection = ({ element, force, SelectedSet, PrevSelectedSet, hoverClassName, }) => {\n    if (!element.classList.contains(hoverClassName) && !force)\n        return;\n    const inSelection = SelectedSet.has(element);\n    const inPrevSelection = PrevSelectedSet.has(element);\n    /**\n     * Special for issue #9.\n     * if a multi-select-key is pressed, ds 'remembers' the last selection and reverts\n     * to that state if the selection is not kept, to mimic the natural OS behaviour\n     * = if item was selected and is not in selection anymore, reselect it\n     * = if item was not selected and is not in selection anymore, unselect it\n     */\n    if (inSelection && !inPrevSelection)\n        SelectedSet.delete(element);\n    else if (!inSelection && inPrevSelection)\n        SelectedSet.add(element);\n    element.classList.remove(hoverClassName);\n};\n\n// @TODO: calculate the difference in all directions based on the mouse position! (since the selection square ratio won\u2019t change we don\u2019t have to re-calculate and re-fetch the position of every element in the square during drag)\n/** Returns the compound bounding rect of multiple elements */\nconst getSelectionRect = (SelectedSet) => {\n    const rect = {\n        top: Number.POSITIVE_INFINITY,\n        left: Number.POSITIVE_INFINITY,\n        bottom: Number.NEGATIVE_INFINITY,\n        right: Number.NEGATIVE_INFINITY,\n        width: Number.NEGATIVE_INFINITY,\n        height: Number.NEGATIVE_INFINITY,\n    };\n    SelectedSet.rects.forEach(elementRect => {\n        rect.top = Math.min(rect.top, elementRect.top || rect.top);\n        rect.left = Math.min(rect.left, elementRect.left || rect.left);\n        rect.bottom = Math.max(rect.bottom, elementRect.bottom || rect.bottom);\n        rect.right = Math.max(rect.right, elementRect.right || rect.right);\n    });\n    rect.height = rect.bottom - rect.top;\n    rect.width = rect.right - rect.left;\n    return rect;\n};\n\nclass Selection {\n    _prevSelectedSet = new Set();\n    _boundingRect;\n    _timeout;\n    DS;\n    PS;\n    Settings;\n    constructor({ DS, PS }) {\n        this.DS = DS;\n        this.PS = PS;\n        this.Settings = this.DS.stores.SettingsStore.s;\n        this.PS.subscribe('Interaction:start', this.start);\n        this.PS.subscribe('Interaction:update', this.update);\n    }\n    /** Stores the previous selection (solves #9) */\n    _storePrevious(event) {\n        const { stores: { KeyStore }, SelectedSet, } = this.DS;\n        if (KeyStore.isMultiSelectKeyPressed(event))\n            this._prevSelectedSet = new Set(SelectedSet);\n        else\n            this._prevSelectedSet = new Set();\n    }\n    start = ({ event, isDragging, }) => {\n        if (isDragging)\n            return;\n        this._storePrevious(event);\n        this._handleInsideSelection(true, event);\n    };\n    update = ({ isDragging }) => {\n        if (isDragging || this.DS.continue)\n            return;\n        this._handleInsideSelection();\n    };\n    /** Checks if any selectable element is inside selection. */\n    _handleInsideSelection = (force, event) => {\n        const { SelectableSet, SelectorArea, Selector } = this.DS;\n        const multiSelectionToggle = this.DS.stores.KeyStore.isMultiSelectKeyPressed(event) &&\n            this.Settings.multiSelectToggling;\n        const selectionThreshold = this.Settings.selectionThreshold;\n        const elRects = SelectableSet.rects;\n        const selectorRect = Selector.rect;\n        const select = new Map();\n        const unselect = new Map();\n        for (const [element, elementRect] of elRects) {\n            if (!SelectorArea.isInside(element, elementRect))\n                continue;\n            if (isCollision(elementRect, selectorRect, selectionThreshold))\n                select.set(element, elementRect);\n            else\n                unselect.set(element, elementRect);\n        }\n        if (this.DS.continue)\n            return;\n        // [PUBLICLY EXPOSED METHOD]\n        const { select: filteredSelect, unselect: filteredUnselect } = this.filterSelected({ select, unselect, selectorRect });\n        filteredSelect.forEach((_, element) => handleSelection({\n            element,\n            force,\n            multiSelectionToggle,\n            SelectedSet: this.DS.SelectedSet,\n            hoverClassName: this.Settings.hoverClass,\n        }));\n        filteredUnselect.forEach((_, element) => handleUnSelection({\n            element,\n            force,\n            SelectedSet: this.DS.SelectedSet,\n            hoverClassName: this.Settings.hoverClass,\n            PrevSelectedSet: this._prevSelectedSet,\n        }));\n    };\n    get boundingRect() {\n        if (this._boundingRect)\n            return this._boundingRect;\n        this._boundingRect = getSelectionRect(this.DS.SelectedSet);\n        // since elements can be moved, we need to update the rects every X ms\n        if (this._timeout)\n            clearTimeout(this._timeout);\n        this._timeout = setTimeout(() => (this._boundingRect = undefined), this.Settings.refreshMemoryRate);\n        return this._boundingRect;\n    }\n    ////\n    // [PUBLICLY EXPOSED METHODS]\n    /**\n     * Can be overridden to apply further filtering logic after the items to select are identified but before they actually get selected\n     * Is expected to return the select / unselect maps in the same shape as passed in\n     */\n    filterSelected = ({ select, unselect, selectorRect, }) => ({ select, unselect });\n}\n\nconst createSelectorAreaElement = () => {\n    const node = document.createElement('div');\n    node.style.position = 'fixed';\n    node.style.overflow = 'hidden';\n    node.style.pointerEvents = 'none';\n    node.style.zIndex = '999999999999999999';\n    return node;\n};\n\n/**\n * Returns the edges that an element is overflowing\n */\nconst getOverflowEdges = ({ elementRect, containerRect, tolerance = {\n    x: 0,\n    y: 0,\n}, }) => {\n    const edges = [];\n    if (elementRect.top - tolerance.y < containerRect.top)\n        edges.push('top');\n    if (elementRect.left - tolerance.x < containerRect.left)\n        edges.push('left');\n    if (elementRect.bottom + tolerance.y > containerRect.bottom)\n        edges.push('bottom');\n    if (elementRect.right + tolerance.y > containerRect.right)\n        edges.push('right');\n    return edges;\n};\n\nclass SelectorArea {\n    _scrollInterval;\n    _rect;\n    currentEdges = [];\n    DS;\n    PS;\n    Settings;\n    HTMLNode;\n    constructor({ DS, PS }) {\n        this.DS = DS;\n        this.PS = PS;\n        this.Settings = this.DS.stores.SettingsStore.s;\n        this.HTMLNode = createSelectorAreaElement();\n        this.PS.subscribe('Settings:updated:selectorAreaClass', ({ settings }) => {\n            this.HTMLNode.classList.remove(settings['selectorAreaClass:pre']);\n            this.HTMLNode.classList.add(settings['selectorAreaClass']);\n        });\n        this.HTMLNode.classList.add(this.Settings.selectorAreaClass);\n        this.PS.subscribe('Area:modified', this.updatePos);\n        this.PS.subscribe('Area:modified', this.updatePos);\n        this.PS.subscribe('Interaction:init', this.init);\n        this.PS.subscribe('Interaction:start', ({ isDraggingKeyboard }) => this.startAutoScroll({ isDraggingKeyboard }));\n        this.PS.subscribe('Interaction:end', () => {\n            this.updatePos();\n            this.stopAutoScroll();\n        });\n    }\n    init = () => {\n        this.applyElements('append');\n        this.updatePos();\n    };\n    /** Adding / Removing elements to document */\n    applyElements = (method) => {\n        const docEl = document.body ? 'body' : 'documentElement';\n        const methodName = `${method}Child`;\n        this.HTMLNode[methodName](this.DS.Selector.HTMLNode);\n        document[docEl][methodName](this.HTMLNode);\n    };\n    /** Updates the selectorAreas positions to match the areas */\n    updatePos = () => {\n        this._rect = undefined;\n        const rect = this.DS.Area.rect;\n        const border = this.DS.Area.computedBorder;\n        const { style } = this.HTMLNode;\n        const top = `${rect.top + border.top}px`;\n        const left = `${rect.left + border.left}px`;\n        const width = `${rect.width}px`;\n        const height = `${rect.height}px`;\n        if (style.top !== top)\n            style.top = top;\n        if (style.left !== left)\n            style.left = left;\n        if (style.width !== width)\n            style.width = width;\n        if (style.height !== height)\n            style.height = height;\n    };\n    stop = (remove) => {\n        this.stopAutoScroll();\n        if (remove)\n            this.applyElements('remove');\n    };\n    //////////////////////////////////////////////////////////////////////////////////////\n    // AutoScroll\n    startAutoScroll = ({ isDraggingKeyboard, }) => {\n        if (isDraggingKeyboard)\n            return;\n        this.currentEdges = [];\n        this._scrollInterval = setInterval(() => this.handleAutoScroll(), 16);\n    };\n    /** Creates an interval that auto-scrolls while the cursor is near the edge */\n    handleAutoScroll = () => {\n        if (this.DS.continue)\n            return;\n        const { stores: { PointerStore }, Area, } = this.DS;\n        this.currentEdges = getOverflowEdges({\n            elementRect: vect2rect(PointerStore.currentVal),\n            containerRect: this.rect,\n            tolerance: this.Settings.overflowTolerance,\n        });\n        if (this.currentEdges.length)\n            Area.scroll(this.currentEdges, this.Settings.autoScrollSpeed);\n    };\n    stopAutoScroll = () => {\n        this.currentEdges = [];\n        clearInterval(this._scrollInterval);\n    };\n    //////////////////////////////////////////////////////////////////////////////////////\n    // Booleans\n    /**\n     * Checks if the element is either inside the Selector Area (as a reachable child or touching the area)\n     * @param elementRect - slight performance improvements when passed\n     */\n    isInside = (element, elementRect) => {\n        if (this.DS.Area.HTMLNode.contains(element) &&\n            this.DS.stores.ScrollStore.canScroll)\n            return true;\n        return isCollision(this.rect, elementRect || element.getBoundingClientRect());\n    };\n    /** checks if the click was triggered on the area. */\n    isClicked(event) {\n        const { stores: { PointerStore }, } = this.DS;\n        const initialVal = event\n            ? PointerStore.getPointerPosition(event)\n            : PointerStore.initialVal;\n        return isCollision({\n            left: initialVal.x,\n            top: initialVal.y,\n            right: initialVal.x,\n            bottom: initialVal.y,\n        }, this.rect);\n    }\n    get rect() {\n        if (this._rect)\n            return this._rect;\n        return (this._rect = this.HTMLNode.getBoundingClientRect());\n    }\n}\n\nconst wrongTypeWarn = (key, type) => console.warn(`[DragSelect] TypeIssue: setting \"${key}\" is not of type \"${type}\".`);\nconst hydrateHelper = (key, value, withFallback, fallback) => {\n    // no value available\n    if (value === undefined)\n        return withFallback ? { [key]: fallback } : {};\n    // force unsetting of a value\n    if (value === null)\n        return { [key]: null };\n    // TypeCheck [GENERIC]\n    let isAvailable = true; // if it\u2019s not undefined, it was set voluntarily\n    let forceFallback = false;\n    // TypeCheck [String]\n    const expectedString = typeof fallback === 'string';\n    if (expectedString)\n        isAvailable = typeof value === 'string' || value instanceof String;\n    if (expectedString && !isAvailable) {\n        forceFallback = true;\n        wrongTypeWarn(key, 'string');\n    }\n    // TypeCheck [Number]\n    const expectedNumber = !Number.isNaN(fallback) && typeof fallback === 'number';\n    if (expectedNumber)\n        isAvailable = !Number.isNaN(value) && typeof value === 'number';\n    if (expectedNumber && !isAvailable) {\n        forceFallback = true;\n        wrongTypeWarn(key, 'number');\n    }\n    // TypeCheck [Object]\n    const expectedObject = Object.prototype.toString.call(fallback) === '[object Object]';\n    if (expectedObject)\n        isAvailable = Object.prototype.toString.call(value) === '[object Object]';\n    if (expectedObject && !isAvailable) {\n        forceFallback = true;\n        wrongTypeWarn(key, 'object');\n    }\n    // TypeCheck [Boolean]\n    const expectedBoolean = typeof fallback === 'boolean';\n    if (expectedBoolean)\n        isAvailable = typeof value === 'boolean';\n    if (expectedBoolean && !isAvailable) {\n        forceFallback = true;\n        wrongTypeWarn(key, 'boolean');\n    }\n    // TypeCheck [Array]\n    const expectedArray = Array.isArray(fallback);\n    if (expectedArray)\n        isAvailable = Array.isArray(value);\n    if (expectedArray && !isAvailable) {\n        forceFallback = true;\n        wrongTypeWarn(key, 'array');\n    }\n    const isFallback = forceFallback || withFallback;\n    // Special rule for [dragKeys]\n    if (key === 'dragKeys' && isAvailable)\n        return { [key]: Object.assign(fallback, value) };\n    if (key === 'dragKeys' && !isAvailable)\n        return isFallback ? { [key]: fallback } : {};\n    // Special rule for [dropZones]\n    if (key === 'dropZones' &&\n        isAvailable &&\n        Array.isArray(value) &&\n        new Set(value.map((v) => v.id)).size !== value.length)\n        console.warn(`[DragSelect] UniqueConstraintsIssue: setting \"dropZones\" contains duplicate ids.`);\n    if (isAvailable)\n        return { [key]: value };\n    if (isFallback)\n        return { [key]: fallback };\n    return {};\n};\n/**\n * This helper method creates the setting object,\n * - if the settings provided are of wrong type, the fallback value will be used\n * - - except for if settings are undefined or explicitly marked as \"null\"\n * - if \"withfallback\" is true, it will return the object with all settings:\n * - - if not provided from the settings object (or wrong type), the fallback will be used\n * (the fallback value for each setting is the last prop of the hydrateHelper)\n */\nconst hydrateSettings = (settings, withFallback) => ({\n    ...hydrateHelper('area', settings.area, withFallback, document),\n    ...hydrateHelper('selectables', settings.selectables, withFallback, null),\n    ...hydrateHelper('autoScrollSpeed', settings.autoScrollSpeed, withFallback, 5),\n    ...hydrateHelper('overflowTolerance', settings.overflowTolerance, withFallback, { x: 25, y: 25 }),\n    ...hydrateHelper('zoom', settings.zoom, withFallback, 1),\n    ...hydrateHelper('customStyles', settings.customStyles, withFallback, false),\n    ...hydrateHelper('multiSelectMode', settings.multiSelectMode, withFallback, false),\n    ...hydrateHelper('multiSelectToggling', settings.multiSelectToggling, withFallback, true),\n    ...hydrateHelper('multiSelectKeys', settings.multiSelectKeys, withFallback, [\n        'Control',\n        'Shift',\n        'Meta',\n    ]),\n    ...hydrateHelper('selector', settings.selector, withFallback, null),\n    ...hydrateHelper('selectionThreshold', settings.selectionThreshold, withFallback, 0),\n    ...hydrateHelper('draggability', settings.draggability, withFallback, true),\n    ...hydrateHelper('immediateDrag', settings.immediateDrag, withFallback, true),\n    ...hydrateHelper('keyboardDrag', settings.keyboardDrag, withFallback, true),\n    ...hydrateHelper('dragKeys', settings.dragKeys, withFallback, {\n        up: ['ArrowUp'],\n        down: ['ArrowDown'],\n        left: ['ArrowLeft'],\n        right: ['ArrowRight'],\n    }),\n    ...hydrateHelper('keyboardDragSpeed', settings.keyboardDragSpeed, withFallback, 10),\n    ...hydrateHelper('useTransform', settings.useTransform, withFallback, true),\n    ...hydrateHelper('refreshMemoryRate', settings.refreshMemoryRate, withFallback, 80),\n    ...hydrateHelper('dropZones', settings.dropZones, withFallback, []),\n    ...hydrateHelper('dropInsideThreshold', settings.dropInsideThreshold, withFallback, 1),\n    ...hydrateHelper('dropTargetThreshold', settings.dropTargetThreshold, withFallback, 0),\n    ...hydrateHelper('usePointerEvents', settings.usePointerEvents, withFallback, false),\n    ...hydrateHelper('hoverClass', settings.hoverClass, withFallback, 'ds-hover'),\n    ...hydrateHelper('selectableClass', settings.selectableClass, withFallback, 'ds-selectable'),\n    ...hydrateHelper('selectedClass', settings.selectedClass, withFallback, 'ds-selected'),\n    ...hydrateHelper('selectorClass', settings.selectorClass, withFallback, 'ds-selector'),\n    ...hydrateHelper('selectorAreaClass', settings.selectorAreaClass, withFallback, 'ds-selector-area'),\n    ...hydrateHelper('droppedTargetClass', settings.droppedTargetClass, withFallback, 'ds-dropped-target'),\n    ...hydrateHelper('droppedInsideClass', settings.droppedInsideClass, withFallback, 'ds-dropped-inside'),\n    ...hydrateHelper('droppableClass', settings.droppableClass, withFallback, 'ds-droppable'),\n    ...hydrateHelper('dropZoneClass', settings.dropZoneClass, withFallback, 'ds-dropzone'),\n    ...hydrateHelper('dropZoneReadyClass', settings.dropZoneReadyClass, withFallback, 'ds-dropzone-ready'),\n    ...hydrateHelper('dropZoneTargetClass', settings.dropZoneTargetClass, withFallback, 'ds-dropzone-target'),\n    ...hydrateHelper('dropZoneInsideClass', settings.dropZoneInsideClass, withFallback, 'ds-dropzone-inside'),\n    ...hydrateHelper('useLayers', settings.useLayers, withFallback, true),\n});\n\nclass SettingsStore {\n    _settings = {};\n    /**\n     * Holds the settings and their previous value `:pre`\n     * @example {\n     *    autoScrollSpeed: 3,\n     *    'autoScrollSpeed:pre': 5\n     * }\n     **/\n    s = {};\n    PS;\n    /**\n     * @class ScrollStore\n     * @constructor ScrollStore\n     * @param {{ DS:DragSelect, settings:Settings }} p\n     * @ignore\n     */\n    constructor({ PS, settings }) {\n        this.PS = PS;\n        this.update({ settings, init: true });\n    }\n    update = ({ settings, init }) => {\n        this.PS.publish('Settings:updated:pre', {\n            settings: this._settings,\n            'settings:init': Boolean(init),\n            'settings:new': settings\n        });\n        this._update({ settings, init });\n    };\n    _update = ({ settings = {}, init = false }) => {\n        const _settings = hydrateSettings(settings, init);\n        for (const [key, value] of Object.entries(_settings)) {\n            ((key, value) => {\n                if (!(key in this._settings)) {\n                    Object.defineProperty(this.s, key, {\n                        get: () => this._settings[key],\n                        set: (newValue) => this.update({ settings: { [key]: newValue } }),\n                    });\n                }\n                this._settings[`${key}:pre`] = this._settings[key]; // need to cast as K, see https://stackoverflow.com/a/76070928/3712591\n                this._settings[key] = value;\n                const update = {\n                    settings: this._settings,\n                    'settings:init': init,\n                    'settings:new': settings\n                };\n                this.PS.publish('Settings:updated', update);\n                this.PS.publish(`Settings:updated:${key}`, update);\n            })(key, value); // method used for typecasting, see https://stackoverflow.com/q/76036535/3712591\n        }\n    };\n}\n\nconst deprecatedNamesMap = {\n    elementselect: 'DS:select',\n    elementunselect: 'DS:unselect',\n    autoscroll: 'DS:scroll',\n    dragstart: 'DS:start',\n    dragmove: 'DS:update',\n    callback: 'DS:end',\n    preelementselect: 'DS:select:pre',\n    preelementunselect: 'DS:unselect:pre',\n    preautoscroll: 'DS:scroll:pre',\n    predragstart: 'DS:start:pre',\n    predragmove: 'DS:update:pre',\n    precallback: 'DS:end:pre',\n};\nconst endExtraData = (data, DS) => {\n    const target = DS.DropZones.getTarget(data);\n    return {\n        ...data,\n        ...(target ? { dropTarget: target.toObject() } : {}),\n    };\n};\n/** Maps internal events to external ones */\nconst subscriberAliases = ({ PS, DS, }) => {\n    const mapping = {\n        'Selected:added': [\n            { name: 'preelementselect' },\n            { name: 'elementselect' },\n            { name: 'DS:select:pre' },\n            { name: 'DS:select' },\n        ],\n        'Selected:removed': [\n            { name: 'preelementunselect' },\n            { name: 'elementunselect' },\n            { name: 'DS:unselect:pre' },\n            { name: 'DS:unselect' },\n        ],\n        'Selectable:added': [{ name: 'DS:added:pre' }, { name: 'DS:added' }],\n        'Selectable:removed': [{ name: 'DS:removed:pre' }, { name: 'DS:removed' }],\n        'Area:scroll': [\n            { name: 'preautoscroll' },\n            { name: 'autoscroll' },\n            { name: 'DS:scroll:pre' },\n            { name: 'DS:scroll' },\n        ],\n        'Interaction:start': [\n            { name: 'predragstart' },\n            { name: 'dragstart' },\n            { name: 'DS:start:pre' },\n            { name: 'DS:start' },\n        ],\n        'Interaction:update': [\n            { name: 'predragmove', condition: (data) => (data.event ? data : null) },\n            { name: 'dragmove', condition: (data) => (data.event ? data : null) },\n            {\n                name: 'DS:update:pre',\n                condition: (data) => (data.event ? data : null),\n            },\n            { name: 'DS:update', condition: (data) => (data.event ? data : null) },\n        ],\n        'Interaction:end': [\n            { name: 'precallback', extraData: (data, DS) => endExtraData(data, DS) },\n            { name: 'callback', extraData: (data, DS) => endExtraData(data, DS) },\n            { name: 'DS:end:pre', extraData: (data, DS) => endExtraData(data, DS) },\n            { name: 'DS:end', extraData: (data, DS) => endExtraData(data, DS) },\n        ],\n    };\n    for (const [sub_name, sub_pubs] of Object.entries(mapping))\n        addSubscribers({ sub_name, sub_pubs, DS, PS });\n};\nconst addSubscribers = ({ sub_name, DS, PS, sub_pubs, }) => {\n    // Subscribe to the internal event\n    PS.subscribe(sub_name, (data) => \n    // publish to each of the mapped ones\n    sub_pubs.forEach((sub_pub) => publish({ sub_pub, data, DS })));\n};\nconst publish = ({ sub_pub, data, DS, }) => {\n    // If the events condition is met, publish the external event\n    const cleanedData = !sub_pub.condition ? data : sub_pub.condition(data, DS);\n    if (cleanedData) {\n        const extra = (sub_pub.extraData && sub_pub.extraData(data, DS)) || {};\n        DS.publish(sub_pub.name, {\n            // add extra data as needed\n            items: DS.SelectedSet.elements,\n            isDragging: DS.Interaction.isDragging,\n            ...cleanedData,\n            ...extra,\n        });\n    }\n};\n\n/*\n    ____                   _____      __          __\n   / __ \\_________ _____ _/ ___/___  / /__  _____/ /_\n  / / / / ___/ __ `/ __ `/\\__ \\/ _ \\/ / _ \\/ ___/ __/\n / /_/ / /  / /_/ / /_/ /___/ /  __/ /  __/ /__/ /_\n/_____/_/   \\__,_/\\__, //____/\\___/_/\\___/\\___/\\__/\n                 /____/\n\n {*} {*} STAR THIS PROJECT ON GITHUB {*} {*}\n\n https://github.com/ThibaultJanBeyer/DragSelect\n Please give it a like, this is what makes me happy :-)\n Thank You\n\n {*} {*} STAR THIS PROJECT ON GITHUB {*} {*}\n\n ***************************************\n ********* GPLv3 / Commercial **********\n ***************************************\n Created 2017 by ThibaultJanBeyer\n Web: http://www.DragSelect.com/\n GitHub: https://github.com/ThibaultJanBeyer/DragSelect\n ***************************************\n*/\n// Setup\n/// ///////////////////////////////////////////////////////////////////////////////////\nclass DragSelect {\n    /** used to skip all current Selection and dragNdrop functionality */\n    continue = false;\n    PubSub;\n    stores;\n    Area;\n    Selector;\n    SelectorArea;\n    SelectableSet;\n    SelectedSet;\n    Selection;\n    Drag;\n    DropZones;\n    Interaction;\n    stopped;\n    constructor(settings) {\n        this.stopped = false;\n        this.PubSub = new PubSub({ DS: this });\n        this.stores = {};\n        (this.stores.SettingsStore = new SettingsStore({\n            settings,\n            PS: this.PubSub,\n        })),\n            (this.stores.PointerStore = new PointerStore({\n                DS: this,\n                PS: this.PubSub,\n            })),\n            (this.stores.ScrollStore = new ScrollStore({\n                DS: this,\n                PS: this.PubSub,\n            })),\n            (this.stores.KeyStore = new KeyStore({ DS: this, PS: this.PubSub })),\n            (this.Area = new Area({ DS: this, PS: this.PubSub }));\n        this.Selector = new Selector({ DS: this, PS: this.PubSub });\n        this.SelectorArea = new SelectorArea({ DS: this, PS: this.PubSub });\n        this.SelectableSet = new SelectableSet({ DS: this, PS: this.PubSub });\n        this.SelectedSet = new SelectedSet({ DS: this, PS: this.PubSub });\n        this.Selection = new Selection({ DS: this, PS: this.PubSub });\n        this.Drag = new Drag({ DS: this, PS: this.PubSub });\n        this.DropZones = new DropZones({ DS: this, PS: this.PubSub });\n        this.Interaction = new Interaction({ DS: this, PS: this.PubSub });\n        subscriberAliases({ DS: this, PS: this.PubSub });\n        this.PubSub.subscribe('Interaction:end', () => (this.continue = false));\n        this.PubSub.subscribe('DS:end', ({ items }) => (this.continue = false));\n        this.start();\n    }\n    // Useful methods for the user\n    //////////////////////////////////////////////////////////////////////////////////////\n    static isCollision;\n    // any input data from the user is valid in this public PubSub but the exposed values are recommended\n    /** Subscribe to events */\n    subscribe = (eventName, callback) => {\n        // Deprecation warnings\n        if (deprecatedNamesMap[eventName])\n            console.warn(`[DragSelect]: The event name \"${eventName}\" is deprecated and was/will be removed in a future version. Please use the new event name \"${deprecatedNamesMap[eventName]}\" instead.`);\n        this.PubSub.subscribe(eventName, callback);\n    };\n    /** Un-Subscribe from events */\n    unsubscribe = (eventName, callback, id) => this.PubSub.unsubscribe(eventName, callback, id);\n    /** Publish events */\n    publish = (eventName, data) => this.PubSub.publish(eventName, data);\n    /** Initializes the functionality. Automatically triggered when created. Also, reset the functionality after a teardown */\n    start = () => {\n        this.stopped = false;\n        this.Interaction.init();\n    };\n    /**\n     * Complete function teardown\n     * Will teardown/stop the whole functionality\n     * @param remove if elements should be removed.\n     * @param fromSelection if elements should also be added/removed to the selection.\n     * @param withCallback if elements should also be added/removed to the selection.\n     */\n    stop(remove = true, fromSelection = true, withCallback = false) {\n        if (withCallback)\n            this.publish('DS:end', {\n                items: this.SelectedSet.elements,\n                isDragging: this.Interaction.isDragging,\n            });\n        this.Interaction.stop();\n        this.Area.stop();\n        this.Drag.stop();\n        this.Selector.stop();\n        this.SelectorArea.stop(remove);\n        this.stores.KeyStore.stop();\n        this.stores.PointerStore.stop();\n        this.stores.ScrollStore.stop();\n        if (remove)\n            this.SelectableSet.clear();\n        if (fromSelection)\n            this.SelectedSet.clear();\n        this.stopped = true;\n    }\n    /**\n     * Utility to override DragSelect internal functionality:\n     * Break will skip the selection or dragging functionality (until after the callback) but let everything continue to run.\n     * Useful utility to write your own functionality/move/dragNdrop based on DragSelect pointer positions.\n     */\n    break = () => (this.continue = true);\n    /** Update any setting dynamically */\n    setSettings = (settings) => this.stores.SettingsStore.update({ settings });\n    /** Returns the current selected nodes */\n    getSelection = () => this.SelectedSet.elements;\n    /**\n     * Adds several elements to the selection list also adds the specific classes and take into account all calculations.\n     * Does not clear the selection, in contrary to .setSelection. Can add multiple elements at once\n     * @param elements one or multiple elements\n     * @param triggerCallback if callback should be called\n     * @param dontAddToSelectables if element should not be added to the list of selectable elements\n     * @return all selected elements\n     */\n    addSelection(elements, triggerCallback = false, dontAddToSelectables = false) {\n        const els = ensureArray(elements);\n        this.SelectedSet.addAll(els);\n        if (!dontAddToSelectables)\n            this.addSelectables(elements, false, false);\n        if (triggerCallback)\n            this.PubSub.publish('DS:end', {\n                items: this.SelectedSet.elements,\n                isDragging: this.Interaction.isDragging,\n            });\n        return this.getSelection();\n    }\n    /**\n     * Removes specific elements from the selection\n     * Multiple elements can be given at once, in contrary to unselect\n     * @param elements one or multiple elements\n     * @param triggerCallback if callback should be called\n     * @param removeFromSelectables if element should be removed from the list of selectable elements\n     * @return all selected elements\n     */\n    removeSelection(elements, triggerCallback = false, removeFromSelectables = false) {\n        const els = ensureArray(elements);\n        this.SelectedSet.deleteAll(els);\n        if (removeFromSelectables)\n            this.removeSelectables(elements, false, false);\n        if (triggerCallback)\n            this.PubSub.publish('DS:end', {\n                items: this.SelectedSet.elements,\n                isDragging: this.Interaction.isDragging,\n            });\n        return this.getSelection();\n    }\n    /**\n     * Toggles specific elements from the selection:\n     * If element is not in selection it will be added, if it is already selected, it will be removed.\n     * Multiple elements can be given at once.\n     * @param elements one or multiple elements\n     * @param triggerCallback if callback should be called\n     * @param removeFromSelectables if element should not be added/removed to the list of selectable elements accordingly\n     * @return all selected elements\n     */\n    toggleSelection(elements, triggerCallback = false, removeFromSelectables = false) {\n        const els = ensureArray(elements);\n        els.forEach((el) => this.SelectedSet.has(el)\n            ? this.removeSelection(elements, triggerCallback, removeFromSelectables)\n            : this.addSelection(elements, triggerCallback, removeFromSelectables));\n        if (triggerCallback)\n            this.PubSub.publish('DS:end', {\n                items: this.SelectedSet.elements,\n                isDragging: this.Interaction.isDragging,\n            });\n        return this.getSelection();\n    }\n    /**\n     * Sets the current selected elements and optionally run the callback\n     * By default, adds new elements also to the list of selectables\n     * @param elements dom elements\n     * @param triggerCallback if callback should be called\n     * @param dontAddToSelectables if element should not be added to the list of selectable elements\n     */\n    setSelection(elements, triggerCallback = false, dontAddToSelectables = false) {\n        this.clearSelection();\n        this.addSelection(elements, triggerCallback, dontAddToSelectables);\n        return this.getSelection();\n    }\n    /**\n     * Unselect / Deselect all current selected Nodes\n     * @param triggerCallback if callback should be called\n     * @return this.selected, should be empty\n     */\n    clearSelection(triggerCallback = false) {\n        this.SelectedSet.clear();\n        if (triggerCallback)\n            this.PubSub.publish('DS:end', {\n                items: this.SelectedSet.elements,\n                isDragging: this.Interaction.isDragging,\n            });\n        return this.getSelection();\n    }\n    /**\n     * Add elements that can be selected. No node is added twice\n     * @param elements dom element(s)\n     * @param addToSelection if elements should also be added to current selection\n     * @param triggerCallback if callback should be called\n     * @return the added element(s)\n     */\n    addSelectables(elements, addToSelection, triggerCallback) {\n        const els = ensureArray(elements);\n        this.SelectableSet.addAll(els);\n        if (addToSelection)\n            this.SelectedSet.addAll(els);\n        if (triggerCallback)\n            this.PubSub.publish('DS:end', {\n                items: this.SelectedSet.elements,\n                isDragging: this.Interaction.isDragging,\n            });\n        return els;\n    }\n    /** Gets all nodes that can potentially be selected */\n    getSelectables = () => this.SelectableSet.elements;\n    /**\n     * Remove elements from the elements that can be selected.\n     * @param elements dom element(s)\n     * @param removeFromSelection if elements should also be removed from current selection\n     * @param triggerCallback if callback should be called\n     * @return the removed element(s)\n     */\n    removeSelectables(elements, removeFromSelection, triggerCallback) {\n        const els = ensureArray(elements);\n        this.SelectableSet.deleteAll(els);\n        if (removeFromSelection)\n            this.removeSelection(elements);\n        if (triggerCallback)\n            this.PubSub.publish('DS:end', {\n                items: this.SelectedSet.elements,\n                isDragging: this.Interaction.isDragging,\n            });\n        return els;\n    }\n    /** The starting/initial position of the cursor/selector */\n    getInitialCursorPosition = () => this.stores.PointerStore.initialVal;\n    /** The last seen position of the cursor/selector */\n    getCurrentCursorPosition = () => this.stores.PointerStore.currentVal;\n    /** The previous position of the cursor/selector */\n    getPreviousCursorPosition = () => this.stores.PointerStore.lastVal;\n    /** The starting/initial position of the cursor/selector */\n    getInitialCursorPositionArea = () => this.stores.PointerStore.initialValArea;\n    /** The last seen position of the cursor/selector */\n    getCurrentCursorPositionArea = () => this.stores.PointerStore.currentValArea;\n    /** The previous position of the cursor/selector */\n    getPreviousCursorPositionArea = () => this.stores.PointerStore.lastValArea;\n    /** Whether the multi-selection key was pressed */\n    isMultiSelect = (event) => this.stores.KeyStore.isMultiSelectKeyPressed(event);\n    /** Whether the user is currently drag n dropping elements (instead of selection) */\n    isDragging = () => this.Interaction.isDragging;\n    /** Returns first DropsZone under coordinates, if no coordinated provided current pointer coordinates are used */\n    getZoneByCoordinates = (coordinates) => this.DropZones.getTarget({ coordinates })?.toObject();\n    /** Returns itemsDropped into zone by zone id */\n    getItemsDroppedByZoneId = (zoneId) => this.DropZones.getItemsDroppedById(zoneId);\n    /**\n     * Returns itemsInside by zone id\n     * @param addClasses whether or not to add/remove the \"inside\" classes to the items\n     */\n    getItemsInsideByZoneId = (zoneId, addClasses) => this.DropZones.getItemsInsideById(zoneId, addClasses);\n}\nDragSelect.isCollision = isCollision;\n\nexport { DragSelect as default };\n", "import { Controller } from \"@hotwired/stimulus\";\nimport Uppy                from '@uppy/core';\nimport Dashboard           from '@uppy/dashboard';\nimport ActiveStorageUpload from '@excid3/uppy-activestorage-upload';\n\nexport default class extends Controller {\n  static targets = ['file', 'documentUploading', 'documentUploadingSvg', 'documentMainContent']\n\n  connect() {\n    if (!this.uppy) {\n      this.uppy = new Uppy({\n        id: 'DOCUMENTS',\n        autoProceed: false,\n        allowMultipleUploads: false,\n        allowMultipleUploadBatches: false,\n        // logger: Uppy.debugLogger,\n        onBeforeFileAdded: (file) => {\n          const valid = this.validateType(file);\n\n          if (valid)\n            return file;\n\n          this.uppy.info('Invalid file type: only pdf, png and jpg allowed');\n          return false;\n        },\n        onBeforeUpload: (files) => {\n          const valid = this.validateTotalSize(files);\n\n          if (valid)\n            return files;\n\n          this.uppy.info('Total file size too big: Max 5mb');\n          return false;\n        },\n      });\n\n      document.querySelectorAll('[data-uppy]').forEach(el => this.setupUppy(el));\n    }\n  }\n\n  disconnect() {\n    if (this.uppy)\n      this.uppy.close({ reason: 'Documents disconnected' });\n  }\n\n  setupUppy(el) {\n    let trigger = el.querySelector('[data-behavior=\"uppy-trigger\"]');\n    let form = el.closest('form');\n    let directUploadUrl = document.querySelector(\"meta[name='direct-upload-url']\").getAttribute(\"content\");\n    let fieldName = el.dataset.uppy;\n\n    if (trigger)\n      trigger.addEventListener('click', (e) => e.preventDefault());\n\n    if (directUploadUrl)\n      this.uppy.use(ActiveStorageUpload, {\n        id: `ActiveStorageUploadDocs_${fieldName}`,\n        directUploadUrl: directUploadUrl\n      });\n\n    if (trigger)\n      this.uppy.use(Dashboard, {\n        trigger: trigger,\n        closeAfterFinish: true,\n        allowMultipleUploadBatches: false,\n        autoOpenFileEditor: false,\n        allowMultipleUploads: false\n      });\n\n    this.uppy.on('complete', (result) => {\n      el.querySelectorAll('[data-pending-upload]').forEach(element => element.parentNode.removeChild(element));\n\n      result.successful.forEach((file) => {\n        this.appendUploadedFile(el, file, fieldName);\n      });\n\n      this.showLoading();\n\n      this.uppy.cancelAll();\n\n      if (document.querySelector('[data-upload-type=\"immediate\"]'))\n        form.submit();\n    });\n  }\n\n  showLoading() {\n    this.documentUploadingSvgTarget.innerHTML = this.lottieFileUploading();\n    this.documentMainContentTarget.classList.add('d-none');\n    this.documentUploadingTarget.classList.remove('d-none');\n  }\n\n  lottieFileUploading() {\n    return ' \\\n      <lottie-player \\\n        src=\"/vendor/lottie/doc_upload.json\" \\\n        background=\"transparent\" \\\n        speed=\"1\" \\\n        loop=\"true\" \\\n        style=\"width: 100%; height: 300px;\" \\\n        autoplay \\\n      ></lottie-player>';\n  }\n\n  appendUploadedFile(element, file, fieldName) {\n    const hiddenField = document.createElement('input');\n\n    hiddenField.setAttribute('type', 'hidden');\n    hiddenField.setAttribute('name', fieldName);\n    hiddenField.setAttribute('data-pending-upload', true);\n    hiddenField.setAttribute('value', file.response.signed_id);\n\n    element.appendChild(hiddenField);\n    this.showLoading();\n  }\n\n  setPreview(element, file) {\n    const defaultImageUrl = document.querySelector('[data-default-logo-url]').dataset.defaultLogoUrl;\n    let preview           = element.querySelector('[data-behavior=\"uppy-preview\"]');\n\n    if (preview) {\n      let src = (file.preview) ? file.preview : defaultImageUrl\n      preview.src = src\n    }\n  }\n\n  validateTotalSize(files) {\n    const max_size = 5 * 1024 * 1024;\n\n    const total_size = Object.keys(files).reduce((total, file) => {\n      return total += files[file].size;\n    }, 0);\n\n    return total_size < max_size;\n  }\n\n  validateType(file) {\n    const valid_types = ['image/png', 'image/jpg', 'image/jpeg', 'application/pdf'];\n    return valid_types.includes(file.type);\n  }\n}\n", "/* eslint-disable no-undef */\nimport BasePlugin from \"@uppy/core/lib/BasePlugin.js\"\nimport { createId } from \"@paralleldrive/cuid2\"\n// const Translator = require('@uppy/utils/lib/Translator');\n// const { Provider, Socket } = require('@uppy/companion-client');\n// const emitSocketProgress = require('@uppy/utils/lib/emitSocketProgress');\n// const getSocketHost = require('@uppy/utils/lib/getSocketHost');\nimport \"@uppy/utils/lib/RateLimitedQueue\"\nconst { DirectUpload } = require(\"@rails/activestorage\")\n\nexport default class ActiveStorageUpload extends BasePlugin {\n  constructor(uppy, opts) {\n    super(uppy, opts)\n\n    this.id = opts.id || \"ActiveStorageUpload\"\n    this.title = opts.title || \"ActiveStorageUpload\"\n    this.type = \"uploader\"\n\n    const defaultOptions = {\n      limit: 0,\n      timeout: 30 * 1000,\n      directUploadUrl: null,\n    }\n\n    this.opts = Object.assign({}, defaultOptions, opts)\n\n    // Simultaneous upload limiting is shared across all uploads with this plugin.\n    if (typeof this.opts.limit === \"number\" && this.opts.limit !== 0) {\n      this.limitUploads = new RateLimitedQueue(this.opts.limit)\n    } else {\n      this.limitUploads = fn => fn\n    }\n\n    this.handleUpload = this.handleUpload.bind(this)\n  }\n\n  install() {\n    this.uppy.addUploader(this.handleUpload)\n  }\n\n  uninstall() {\n    this.uppy.removeUploader(this.handleUpload)\n  }\n\n  handleUpload(fileIDs) {\n    if (fileIDs.length === 0) {\n      this.uppy.log(\"[ActiveStorage] No files to upload!\")\n      return Promise.resolve()\n    }\n\n    this.uppy.log(\"[ActiveStorage] Uploading...\")\n    const files = fileIDs.map(fileID => this.uppy.getFile(fileID))\n\n    return this.uploadFiles(files).then(() => null)\n  }\n\n  upload(file, current, total) {\n    this.uppy.log(`uploading ${current} of ${total}`)\n\n    return new Promise((resolve, reject) => {\n      const timer = this.createProgressTimeout(this.opts.timeout, error => {\n        //xhr.abort();\n        this.uppy.emit(\"upload-error\", file, error)\n        reject(error)\n      })\n\n      var directHandlers = {\n        directUploadWillStoreFileWithXHR: null,\n        directUploadDidProgress: null,\n      }\n      directHandlers.directUploadDidProgress = ev => {\n        this.uppy.log(`[XHRUpload] ${id} progress: ${ev.loaded} / ${ev.total}`)\n        timer.progress()\n\n        if (ev.lengthComputable) {\n          this.uppy.emit(\"upload-progress\", file, {\n            uploader: this,\n            bytesUploaded: ev.loaded,\n            bytesTotal: ev.total,\n          })\n        }\n      }\n      directHandlers.directUploadWillStoreFileWithXHR = request => {\n        request.upload.addEventListener(\"progress\", event =>\n          directHandlers.directUploadDidProgress(event)\n        )\n      }\n\n      const { data, meta } = file\n\n      if (!data.name && meta.name) {\n        data.name = meta.name\n      }\n\n      const upload = new DirectUpload(data, this.opts.directUploadUrl, directHandlers);\n      const id = createId()\n\n      upload.create((error, blob) => {\n        this.uppy.log(`[XHRUpload] ${id} finished`)\n        timer.done()\n\n        if (error) {\n          const response = {\n            status: \"error\",\n          }\n\n          this.uppy.setFileState(file.id, { response })\n\n          this.uppy.emit(\"upload-error\", file, error)\n          return reject(error)\n        } else {\n          const response = {\n            status: \"success\",\n            directUploadSignedId: blob.signed_id,\n          }\n\n          this.uppy.setFileState(file.id, { response })\n\n          this.uppy.emit(\"upload-success\", file, blob)\n\n          return resolve(file)\n        }\n      })\n\n      this.uppy.on(\"file-removed\", removedFile => {\n        if (removedFile.id === file.id) {\n          timer.done()\n          upload.abort && upload.abort()\n        }\n      })\n\n      this.uppy.on(\"upload-cancel\", fileID => {\n        if (fileID === file.id) {\n          timer.done()\n          upload.abort && upload.abort()\n        }\n      })\n\n      this.uppy.on(\"cancel-all\", () => {\n        timer.done()\n        upload.abort && upload.abort()\n      })\n    })\n  }\n\n  uploadFiles(files) {\n    const actions = files.map((file, i) => {\n      const current = parseInt(i, 10) + 1\n      const total = files.length\n\n      if (file.error) {\n        return () => Promise.reject(new Error(file.error))\n      } else {\n        this.uppy.emit(\"upload-started\", file)\n        return this.upload.bind(this, file, current, total)\n      }\n    })\n\n    const promises = actions.map(action => {\n      const limitedAction = this.limitUploads(action)\n      return limitedAction()\n    })\n\n    return Promise.allSettled(promises)\n  }\n\n  // Helper to abort upload requests if there has not been any progress for `timeout` ms.\n  // Create an instance using `timer = createProgressTimeout(10000, onTimeout)`\n  // Call `timer.progress()` to signal that there has been progress of any kind.\n  // Call `timer.done()` when the upload has completed.\n  createProgressTimeout(timeout, timeoutHandler) {\n    const uppy = this.uppy\n    const self = this\n    let isDone = false\n\n    function onTimedOut() {\n      uppy.log(\"[XHRUpload] timed out\")\n      const error = new Error(self.i18n(\"timedOut\", { seconds: Math.ceil(timeout / 1000) }))\n      timeoutHandler(error)\n    }\n\n    let aliveTimer = null\n    function progress() {\n      // Some browsers fire another progress event when the upload is\n      // cancelled, so we have to ignore progress after the timer was\n      // told to stop.\n      if (isDone) return\n\n      if (timeout > 0) {\n        if (aliveTimer) clearTimeout(aliveTimer)\n        aliveTimer = setTimeout(onTimedOut, timeout)\n      }\n    }\n\n    function done() {\n      uppy.log(\"[XHRUpload] timer done\")\n      if (aliveTimer) {\n        clearTimeout(aliveTimer)\n        aliveTimer = null\n      }\n      isDone = true\n    }\n\n    return {\n      progress,\n      done,\n    }\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\";\nimport Uppy                from '@uppy/core';\nimport Dashboard           from '@uppy/dashboard';\nimport ActiveStorageUpload from '@excid3/uppy-activestorage-upload';\nimport ImageEditor         from '@uppy/image-editor';\n\nexport default class extends Controller {\n  static targets = ['file', 'documentUploading', 'documentUploadingSvg', 'documentMainContent']\n\n  connect() {\n    if (!this.uppy) {\n      this.uppy = new Uppy({\n        id: 'Logo',\n        autoProceed: false,\n        allowMultipleUploads: false,\n        // logger: Uppy.debugLogger,\n        allowMultipleUploadBatches: false\n      });\n\n      document.querySelectorAll('[data-uppy]').forEach(el => this.setupUppy(el));\n    }\n  }\n\n  disconnect() {\n    if (this.uppy)\n      this.uppy.close({ reason: 'logo disconnected' })\n  }\n\n  setupUppy(el) {\n    let trigger = el.querySelector('[data-behavior=\"uppy-trigger\"]');\n    let form = el.closest('form');\n    let directUploadUrl = document.querySelector(\"meta[name='direct-upload-url']\").getAttribute(\"content\");\n    let fieldName = el.dataset.uppy;\n\n    if (trigger)\n      trigger.addEventListener('click', (e) => e.preventDefault());\n\n    if (directUploadUrl)\n      this.uppy.use(ActiveStorageUpload, {\n        id: 'ActiveStorageUpload',\n        directUploadUrl: directUploadUrl\n      });\n\n    if (trigger)\n      this.uppy.use(Dashboard, {\n        trigger: trigger,\n        closeAfterFinish: true,\n        allowMultipleUploadBatches: false,\n        autoOpenFileEditor: true,\n        allowMultipleUploads: false\n      });\n\n    this.uppy.use(ImageEditor, {\n      id: 'ImageEditor',\n      target: Dashboard,\n      quality: 0.8,\n      cropperOptions: {\n        viewMode: 1,\n        background: false,\n        autoCropArea: 1,\n        responsive: true,\n        aspectRatio: 1\n      }\n    })\n\n    this.uppy.on('complete', (result) => {\n      el.querySelectorAll('[data-pending-upload]').forEach(element => element.parentNode.removeChild(element));\n\n      result.successful.forEach((file) => {\n        this.appendUploadedFile(el, file, fieldName);\n        this.setPreview(el, file);\n      });\n\n      this.showLoading();\n\n      this.uppy.cancelAll();\n      form.submit();\n    });\n  }\n\n  appendUploadedFile(element, file, fieldName) {\n    const hiddenField = document.createElement('input');\n\n    hiddenField.setAttribute('type', 'hidden');\n    hiddenField.setAttribute('name', fieldName);\n    hiddenField.setAttribute('data-pending-upload', true);\n    hiddenField.setAttribute('value', file.response.signed_id);\n\n    element.appendChild(hiddenField);\n  }\n\n  setPreview(element, file) {\n    const defaultImageUrl = document.querySelector('[data-default-logo-url]').dataset.defaultLogoUrl;\n    let preview           = element.querySelector('[data-behavior=\"uppy-preview\"]');\n\n    if (preview) {\n      let src = (file.preview) ? file.preview : defaultImageUrl\n      preview.src = src\n    }\n  }\n\n  showLoading() {\n    this.documentUploadingSvgTarget.innerHTML = this.lottieFileUploading();\n    this.documentMainContentTarget.classList.add('d-none');\n    this.documentUploadingTarget.classList.remove('d-none');\n  }\n\n  lottieFileUploading() {\n    return ' \\\n      <lottie-player \\\n        src=\"/vendor/lottie/doc_upload.json\" \\\n        background=\"transparent\" \\\n        speed=\"1\" \\\n        loop=\"true\" \\\n        style=\"width: 100%; height: 300px;\" \\\n        autoplay \\\n      ></lottie-player>';\n  }\n\n  enableSubmit() {\n    const button = document.querySelector('[data-submit]');\n    button.disabled = false;\n\n    document.querySelector('[data-save-notice]').classList.remove('d-none');\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\";\nimport { Offcanvas } from \"bootstrap\";\nimport Rails from \"@rails/ujs\"\n\nexport default class extends Controller {\n  static targets = ['offcanvasWrapper'];\n\n  connect() {}\n\n  triggerOffcanvas(e) {\n    e.preventDefault();\n    this.offcanvasWrapperTarget.innerHTML = this.loadingDiv();\n\n    const orderId     = e.target.dataset.orderId;\n    const bsOffcanvas = new Offcanvas('#offcanvas-order-quick-view');\n\n    bsOffcanvas.toggle();\n\n    Rails.ajax({\n      type:     'get',\n      dataType: 'json',\n      url:      `/api/v1/point_of_sale/orders/${orderId}`,\n      success:  (response) => {\n        const wrapper     = document.querySelector(\"#offcanvas-order-quick-view\");\n        wrapper.innerHTML = response.data.html;\n      },\n      error:    (err) => {\n        console.error(err);\n      },\n    });\n  }\n\n  loadingDiv() {\n    return '<div class=\"page-loader d-flex justify-content-center align-items-center flex-column\"><div><div class=\"spinner-border\" role=\"status\"><span class=\"visually-hidden\">Loading...</span></div></div><div class=\"page-loader-text\"> ... Fetching Order Details ...</div></div>';\n  }\n\n  updateStatus(e) {\n    const orderId   = e.target.dataset.orderId;\n    const newStatus = e.target.value;\n    const form      = new FormData();\n\n    const data = {\n      id:     orderId,\n      status: newStatus,\n      page:   this.locationParams().page\n    };\n\n    form.append('order', JSON.stringify(data));\n\n    Rails.ajax({\n      type:     'put',\n      dataType: 'json',\n      url:      `/api/v1/point_of_sale/orders/${orderId}`,\n      data:     form,\n      success:  (response) => {\n        const wrapper     = document.querySelector(\"#offcanvas-order-quick-view\");\n        wrapper.innerHTML = response.data.html;\n      },\n      error:    (err) => {\n        console.error(err);\n      },\n    });\n  }\n\n  updateOrderItemStatus(e) {\n    const orderId     = e.target.dataset.orderId;\n    const orderItemId = e.target.dataset.orderItemId;\n    const newStatus   = e.target.value;\n    const form        = new FormData();\n\n    const data = {\n      id:      orderItemId,\n      status:  newStatus,\n      page:    this.locationParams().page\n    };\n\n    form.append('order_item', JSON.stringify(data));\n\n    Rails.ajax({\n      type:     'put',\n      dataType: 'json',\n      url:      `/api/v1/point_of_sale/orders/${orderId}/order_items/${orderItemId}`,\n      data:     form,\n      success:  (response) => {\n        const wrapper     = document.querySelector(\"#offcanvas-order-quick-view\");\n        wrapper.innerHTML = response.data.html;\n      },\n      error:    (err) => {\n        console.error(err);\n      },\n    });\n  }\n\n  locationParams() {\n    return new Proxy(new URLSearchParams(window.location.search), {\n      get: (searchParams, prop) => searchParams.get(prop),\n    });\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\";\nimport Uppy                from '@uppy/core';\nimport Dashboard           from '@uppy/dashboard';\nimport ActiveStorageUpload from '@excid3/uppy-activestorage-upload';\nimport ImageEditor         from '@uppy/image-editor';\n\nexport default class extends Controller {\n  static targets = ['file', 'documentUploading', 'documentUploadingSvg', 'documentMainContent']\n\n  connect() {\n    if (!this.uppy) {\n      this.uppy = new Uppy({\n        id: 'DOCUMENTS',\n        autoProceed: false,\n        allowMultipleUploads: false,\n        allowMultipleUploadBatches: false,\n        // logger: Uppy.debugLogger,\n        onBeforeFileAdded: (file) => {\n          const valid = this.validateType(file);\n\n          if (valid)\n            return file;\n\n          this.uppy.info('Invalid file type: only csv allowed');\n          return false;\n        },\n        onBeforeUpload: (files) => {\n          const valid = this.validateTotalSize(files);\n\n          if (valid)\n            return files;\n\n          this.uppy.info('Total file size too big: Max 5mb');\n          return false;\n        },\n      });\n\n      document.querySelectorAll('[data-uppy]').forEach(el => this.setupUppy(el));\n    }\n  }\n\n  disconnect() {\n    if (this.uppy)\n      this.uppy.close({ reason: 'Documents disconnected' });\n  }\n\n  setupUppy(el) {\n    let trigger         = el.querySelector('[data-behavior=\"uppy-trigger\"]');\n    let form            = el.closest('form');\n    let directUploadUrl = document.querySelector(\"meta[name='direct-upload-url']\").getAttribute(\"content\");\n    let fieldName       = el.dataset.uppy;\n\n    if (trigger)\n      trigger.addEventListener('click', (e) => e.preventDefault());\n\n    if (directUploadUrl)\n      this.uppy.use(ActiveStorageUpload, {\n        id: `ActiveStorageUploadDocs_${fieldName}`,\n        directUploadUrl: directUploadUrl\n      });\n\n    if (trigger)\n      this.uppy.use(Dashboard, {\n        trigger: trigger,\n        closeAfterFinish: true,\n        allowMultipleUploadBatches: false,\n        autoOpenFileEditor: false,\n        allowMultipleUploads: false\n      });\n\n    this.uppy.on('complete', (result) => {\n      el.querySelectorAll('[data-pending-upload]').forEach(element => element.parentNode.removeChild(element));\n\n      result.successful.forEach((file) => {\n        this.appendUploadedFile(el, file, fieldName);\n      });\n\n      this.showLoading();\n\n      this.uppy.cancelAll();\n      form.submit();\n    });\n  }\n\n  showLoading() {\n    this.documentUploadingSvgTarget.innerHTML = this.lottieFileUploading();\n    this.documentMainContentTarget.classList.add('d-none');\n    this.documentUploadingTarget.classList.remove('d-none');\n  }\n\n  lottieFileUploading() {\n    return ' \\\n      <lottie-player \\\n        src=\"/vendor/lottie/doc_upload.json\" \\\n        background=\"transparent\" \\\n        speed=\"1\" \\\n        loop=\"true\" \\\n        style=\"width: 100%; height: 300px;\" \\\n        autoplay \\\n      ></lottie-player>';\n  }\n\n  appendUploadedFile(element, file, fieldName) {\n    const hiddenField = document.createElement('input');\n\n    hiddenField.setAttribute('type', 'hidden');\n    hiddenField.setAttribute('name', fieldName);\n    hiddenField.setAttribute('data-pending-upload', true);\n    hiddenField.setAttribute('value', file.response.signed_id);\n\n    element.appendChild(hiddenField);\n  }\n\n  setPreview(element, file) {\n    const defaultImageUrl = document.querySelector('[data-default-logo-url]').dataset.defaultLogoUrl;\n    let preview           = element.querySelector('[data-behavior=\"uppy-preview\"]');\n\n    if (preview) {\n      let src = (file.preview) ? file.preview : defaultImageUrl\n      preview.src = src\n    }\n  }\n\n  validateTotalSize(files) {\n    const max_size = 5 * 1024 * 1024;\n\n    const total_size = Object.keys(files).reduce((total, file) => {\n      return total += files[file].size;\n    }, 0);\n\n    return total_size < max_size;\n  }\n\n  validateType(file) {\n    const valid_types = ['text/csv'];\n    return valid_types.includes(file.type);\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\";\n\nexport default class extends Controller {\n  static targets = [ 'package' ]\n\n  initialize() {\n    this.setPackageDetails();\n  }\n\n  setPackageDetails() {\n    this.packageTargets.forEach(item => {\n      const defaultPrice = item.dataset.packageMonthlyPrice;\n      const isFree = item.querySelector('select').value === 'Free';\n\n      if (isFree) {\n        item.querySelector('select').value = 'Free';\n      } else {\n        item.querySelector('select').value = 'Monthly';\n      }\n\n      item.querySelector('#packagePrice').innerHTML = defaultPrice;\n    });\n  }\n\n  calculateChange(event) {\n    const selectedName = event.target.dataset.id;\n    const newPeriod    = event.target.value;\n\n    const selected = this.packageTargets.find(item => {\n      return item.dataset.packageName === selectedName\n    });\n\n    const monthlyPrice = selected.dataset.packageMonthlyPrice;\n    const yearlyPrice  = selected.dataset.packageYearlyPrice;\n\n    if (newPeriod === 'Yearly') {\n      selected.querySelector('#packagePrice').innerHTML = yearlyPrice;\n    } else {\n      selected.querySelector('#packagePrice').innerHTML = monthlyPrice;\n    }\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\";\n\nexport default class extends Controller {\n  static targets = ['valueField', 'promoCodeField', 'typeField'];\n\n  connect() {\n    const currentType = this.typeFieldTarget.value;\n    this.selectType(currentType);\n  }\n\n\n  selectType(eventOrString) {\n    let typeValue;\n    typeof eventOrString === 'string'\n      ? (typeValue = eventOrString)\n      : (typeValue = eventOrString.target.value);\n\n    switch(typeValue) {\n      case 'promo_code':\n        this.disableFields([this.valueFieldTarget]);\n        this.enableFields([this.promoCodeFieldTarget]);\n        break;\n      default:\n        this.disableFields([this.promoCodeFieldTarget]);\n        this.enableFields([this.valueFieldTarget]);\n        break;\n    }\n  }\n\n  disableFields(fields) {\n    fields.forEach(field => {\n      field.closest('.wui-form__group').classList.add('d-none');\n      field.disabled = true;\n    })\n  }\n\n  enableFields(fields) {\n    fields.forEach((field) => {\n      field.closest('.wui-form__group').classList.remove('d-none');\n      field.disabled = false;\n    });\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\";\r\nimport Rails from '@rails/ujs';\r\nimport { loading } from '../utils/_loading';\r\n\r\nexport default class extends Controller {\r\n  static targets          = ['display', 'product', 'prompt', 'result', 'resultText', 'resultValue', 'productRewardValue'];\r\n  COMPLETE_NUMBER_REGEX   = /^\\d+\\.\\d{2,}$/;\r\n  INCOMPLETE_NUMBER_REGEX = /^\\d+\\.\\d{1,1}$/;\r\n  SUCCESS_MESSAGE         = '\uD83D\uDE4C';\r\n\r\n  addNumber(event) {\r\n    if (this.COMPLETE_NUMBER_REGEX.test(this.displayTarget.innerHTML)) {\r\n      return;\r\n    }\r\n\r\n    const value = event.target.dataset.numberpadValue;\r\n\r\n    if (this.INCOMPLETE_NUMBER_REGEX.test(this.displayTarget.innerHTML)) {\r\n      if (value === '00' ) {\r\n        const currentValue = this.displayTarget.innerHTML;\r\n        this.displayTarget.innerHTML = currentValue.slice(0, -1);\r\n\r\n        this.displayTarget.innerHTML += '00';\r\n        return;\r\n      }\r\n\r\n      this.displayTarget.innerHTML += event.target.dataset.numberpadValue;\r\n    } else {\r\n      if (this.displayTarget.innerHTML === '0' || this.displayTarget.innerHTML === this.SUCCESS_MESSAGE) {\r\n        this.displayTarget.innerHTML = value.toString();\r\n      } else {\r\n        this.displayTarget.innerHTML += value.toString();\r\n      }\r\n    }\r\n  }\r\n\r\n  backspace() {\r\n    if (this.displayTarget.innerHTML.length === 1 || this.displayTarget.innerHTML === this.SUCCESS_MESSAGE) {\r\n      this.displayTarget.innerHTML = '0';\r\n      return;\r\n    }\r\n\r\n    const currentValue = this.displayTarget.innerHTML;\r\n\r\n    this.displayTarget.innerHTML = currentValue.slice(0, -1);\r\n  }\r\n\r\n  generateCode() {\r\n    this.triggerLoading();\r\n\r\n    const value = this.displayTarget.innerHTML;\r\n    const form  = new FormData();\r\n\r\n    form.append('product_id', this.productTarget.value);\r\n    form.append('purchase_value', value);\r\n\r\n    Rails.ajax({\r\n      type:     'post',\r\n      dataType: 'json',\r\n      url:      '/api/v1/rewards/generate_code',\r\n      data:     form,\r\n      success: (response) => {\r\n        this.displayTarget.innerHTML      = this.SUCCESS_MESSAGE;\r\n        this.resultTextTarget.innerHTML   = response.data.qr_code;\r\n        this.resultValueTarget.innerHTML  = response.data.value;\r\n\r\n        this.promptTarget.classList.add('d-none');\r\n        this.resultTarget.classList.remove('d-none');\r\n      },\r\n      error: (_response) => {\r\n        console.error('Unable to create code');\r\n      },\r\n    });\r\n  }\r\n\r\n  triggerLoading() {\r\n    this.promptTarget.classList.remove('d-none');\r\n    this.resultTarget.classList.add('d-none');\r\n\r\n    this.promptTarget.innerHTML = loading('Generating Code');\r\n  }\r\n\r\n  productChange(event) {\r\n    const options          = event.target.options;\r\n    const selectedOptions  = Array.from(options).filter((option) => option.selected);\r\n    const rewardValue      = selectedOptions[0].dataset.numberpadReward;\r\n\r\n    this.productRewardValueTargets.forEach((target) => {\r\n      target.innerHTML = `${rewardValue}%`;\r\n    })\r\n  }\r\n}\r\n", "import { Controller } from \"@hotwired/stimulus\";\n\nexport default class extends Controller {\n  static targets = [\n    'formPartial',\n    'form',\n    'partialWrapper',\n    'selectedType',\n    'emptyState',\n  ];\n\n  initialize() {\n    // Store the partials\n    this.partialClones = this.formPartialTargets.slice();\n\n    // Remove the partials from the DOM\n    this.formPartialTargets.forEach(partial => {\n      partial.remove();\n    });\n\n    // Load the partial if there's a value (Edit page)\n    if (this.selectedTypeTarget && this.selectedTypeTarget.value !== '') {\n      this.selectType(this.selectedTypeTarget.value);\n    }\n  }\n\n\n  selectType(eventOrString) {\n    this._removePartialsFromDOM();\n    this.emptyStateTarget.classList.add(\"d-none\");\n\n    let selectValue;\n    typeof eventOrString === 'string'\n      ? (selectValue = eventOrString)\n      : (selectValue = eventOrString.target.value);\n\n    switch (selectValue) {\n      case \"woo_commerce\":\n        this._appendPartial(\"woo_commerce\");\n        break;\n      default:\n        this.emptyStateTarget.classList.remove(\"d-none\");\n        return;\n    }\n  }\n\n  _findPartial(name, collection) {\n    return collection.find(\n      (element) => element.getAttribute('data-form-partial') === name\n    );\n  }\n\n  _appendPartial(partialName) {\n    const partial = this._findPartial(partialName, this.partialClones);\n    partial.classList.remove('d-none');\n    this.partialWrapperTarget.append(partial);\n  }\n\n  _removePartialsFromDOM() {\n    this.formPartialTargets.forEach((element) => {\n      element.classList.add('d-none');\n      element.remove();\n    });\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\";\n\nexport default class extends Controller {\n  static targets = [\"emailItem\", \"emailsContainer\"];\n\n  connect() {\n    this.clonedNode = this.emailItemTargets[0].cloneNode(true);\n  }\n\n  add() {\n    this.emailsContainerTarget.append(this.clonedNode);\n    this.clonedNode = this.emailItemTargets[this.emailItemTargets.length - 1].cloneNode(true);\n  }\n\n  remove(event) {\n    if (this.emailItemTargets.length > 1) {\n      event.target.closest(\".row\").remove();\n    }\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\";\nimport {\n  GET_SS_STATE,\n  SET_SS_STATE,\n  REMOVE_SS_STATE,\n  SS_ORDER_SESSION_KEYS,\n} from \"../../utils/_sessionstorage\";\nimport isEmpty from \"../../utils/_empty\";\nimport Rails from \"@rails/ujs\";\nimport { Offcanvas, Modal } from \"bootstrap\";\n\nexport default class extends Controller {\n  static targets = [\n    \"addToOrderButton\",\n    \"orderSessionId\",\n    \"activeOrdersItemCount\",\n    \"activeOrdersTotal\",\n    \"activeCartBanner\",\n    \"activeOrderIncrement\",\n    \"activeOrderDecrement\",\n    \"orderSummary\",\n    \"offcanvasWrapper\",\n    \"mainForm\",\n    \"cardAuthorizations\",\n    \"paymentActions\",\n    \"paymentConfirmation\",\n    \"newSessionEmail\",\n    \"newSessionPassword\",\n    \"newSessionRememberMe\",\n    \"newRegistrationFirstName\",\n    \"newRegistrationLastName\",\n    \"newRegistrationEmail\",\n    \"newRegistrationPassword\",\n    \"newRegistrationAcceptTerms\",\n  ];\n\n  connect() {\n    if (document.querySelector(\"#offcanvas-smart-orders\")) {\n      const bsOffcanvas = new Offcanvas(\"#offcanvas-smart-orders\");\n\n      if (this.locationParams().continue_signup) {\n        bsOffcanvas.toggle();\n        this.triggerSignUp();\n      }\n\n      if (this.locationParams().continue_signin) {\n        bsOffcanvas.toggle();\n\n        this.triggerSignIn();\n      }\n    }\n\n    this.initializeActiveCartDetails();\n  }\n\n  incrementOrder(event) {\n    event.preventDefault();\n    const identifier = event.target.dataset.identifier;\n    const inputEl = document.querySelector(\n      `input[data-identifier=\"${identifier}\"]`,\n    );\n\n    if (inputEl !== null) {\n      inputEl.stepUp();\n    }\n  }\n\n  decrementOrder(event) {\n    event.preventDefault();\n    const identifier = event.target.dataset.identifier;\n    const inputEl = document.querySelector(\n      `input[data-identifier=\"${identifier}\"]`,\n    );\n\n    if (inputEl !== null) {\n      if (inputEl.value > 0) {\n        inputEl.stepDown();\n      }\n    }\n  }\n\n  triggerOffcanvas(e) {\n    e.preventDefault();\n    const productId = e.target.dataset.productId;\n    const bsOffcanvas = new Offcanvas(\"#offcanvas-smart-orders\");\n\n    this.offcanvasWrapperTarget.innerHTML = this.loadingDiv();\n\n    bsOffcanvas.toggle();\n\n    Rails.ajax({\n      type: \"get\",\n      dataType: \"json\",\n      url: `/api/v1/point_of_sale/products/${productId}`,\n      success: (response) => {\n        this.offcanvasWrapperTarget.innerHTML = response.data.html;\n      },\n      error: (_err) => {},\n    });\n  }\n\n  triggerConfirmationModal(e) {\n    e.preventDefault();\n    const patronId = e.target.dataset.patronId;\n    const payEl = document.querySelector(\"#pay-modal\");\n    const modal = Modal.getOrCreateInstance(payEl);\n\n    const sessionId = this.orderSessionIdTarget.dataset.orderSessionId;\n    const cartItems = JSON.parse(GET_SS_STATE(sessionId)).cart;\n    const form = new FormData();\n\n    form.append(\"patron_id\", patronId);\n    form.append(\"products\", JSON.stringify(cartItems));\n\n    this.paymentConfirmationTarget.innerHTML = `<div class='p-5'>${this.loadingDiv()}</div>`;\n\n    Rails.ajax({\n      type: \"post\",\n      dataType: \"json\",\n      url: \"/api/v1/point_of_sale/payment_confirmation\",\n      data: form,\n      success: (response) => {\n        this.paymentConfirmationTarget.innerHTML = response.data.html;\n      },\n      error: (err) => {\n        if (err.error || err.message) {\n          document\n            .querySelector(\"body\")\n            .insertAdjacentHTML(\n              \"afterbegin\",\n              `<div class=\"wui-form__meta text-center  wui-form__meta--error wui-form__meta--rounded mb-3 wui-flash-message animate__animated animate__delay-3s animate__fadeOutUp z-index-float\">${err.error || err.message}</div>`,\n            );\n\n          if (err.data.redirect_url) {\n            window.location = err.data.redirect_url;\n          }\n        } else {\n          console.error(err);\n        }\n      },\n    });\n\n    modal.toggle();\n  }\n\n  loadingDiv() {\n    return '<div class=\"page-loader d-flex justify-content-center align-items-center flex-column\"><div><div class=\"spinner-border\" role=\"status\"><span class=\"visually-hidden\">Loading...</span></div></div><div class=\"page-loader-text\"></div></div>';\n  }\n\n  #getnumberCartProductsOfSameType(userSessionId, selectedProductId) {\n    const cart = JSON.parse(GET_SS_STATE(userSessionId)).cart;\n\n    return cart.reduce((total, product) => {\n      if (product.productId === selectedProductId) {\n        return total + Number(product.quantity);\n      }\n    }, 0);\n  }\n  // TODO: Rename to validateProductLimit to not confuse with inventory\n  #validateProductQuantity(\n    productPurchaseLimit,\n    quantity,\n    quantityOfSameProductsInCart,\n  ) {\n    const minimumLimitPerPurchase = 1;\n    const totalNumberOfProductOrders = quantityOfSameProductsInCart + quantity;\n    const isPurchaseLimitValid =\n      productPurchaseLimit >= minimumLimitPerPurchase;\n    const doesProductOrderExceedLimit =\n      totalNumberOfProductOrders > productPurchaseLimit;\n\n    if (\n      isPurchaseLimitValid &&\n      (quantity > productPurchaseLimit || doesProductOrderExceedLimit)\n    ) {\n      window.alert(\n        `Purchase limit for this product is ${productPurchaseLimit} items.`,\n      );\n      return false;\n    } else {\n      return true;\n    }\n  }\n\n  addToOrder(e) {\n    e.preventDefault();\n    const productId = e.target.dataset.productId;\n    const sessionId = this.orderSessionIdTarget.dataset.orderSessionId;\n\n    let validityForm = new FormData();\n    validityForm.append(\"product_id\", productId);\n    validityForm.append(\n      \"cart_items\",\n      JSON.stringify(this.cartItems(sessionId)),\n    );\n\n    Rails.ajax({\n      type: \"post\",\n      dataType: \"json\",\n      url: \"/api/v1/point_of_sale/cart/validate_entry\",\n      data: validityForm,\n      success: () => {\n        const limitPerPurchase = e.target.dataset.limitPerPurchase;\n        const productOptionNames =\n          e.target.dataset.productOptionNames.split(\",\");\n        const numberOfproductsOfSameType =\n          this.#getnumberCartProductsOfSameType(sessionId, productId);\n        const inputEl = document.querySelector(\n          `input[data-identifier=\"${productId}\"]`,\n        );\n        let form = this.mainFormTarget;\n        const formData = new FormData(form);\n        let selVal = [];\n\n        let strippedId = productId.replaceAll(\"-\", \"\");\n\n        productOptionNames.forEach((pon) => {\n          let regexString = `selected_values[product_option_values][${strippedId}][${pon}][id]`;\n\n          for (const pair of Array.from(formData.entries()).filter(\n            (i) => i[0].replaceAll(\"-\", \"\") === regexString.toString(),\n          )) {\n            selVal.push(pair[1]);\n          }\n        });\n\n        if (inputEl) {\n          let quantity;\n\n          if (\n            this.#validateProductQuantity(\n              limitPerPurchase,\n              Number(inputEl.value),\n              numberOfproductsOfSameType,\n            )\n          ) {\n            quantity = Number(inputEl.value);\n          }\n\n          if (quantity === Number(0) || quantity === undefined) {\n            return;\n          }\n\n          const selectedOptions = selVal;\n\n          let items = { productId, quantity, selectedOptions };\n          let cartItems;\n\n          if (isEmpty(GET_SS_STATE(sessionId))) {\n            cartItems = [items];\n            SET_SS_STATE(sessionId, JSON.stringify({ cart: cartItems }));\n          } else {\n            cartItems = JSON.parse(GET_SS_STATE(sessionId)).cart;\n            cartItems.push(items);\n\n            SET_SS_STATE(sessionId, JSON.stringify({ cart: cartItems }));\n          }\n          this.setActiveCartDetails(cartItems);\n          inputEl.value = 1;\n          inputEl.dispatchEvent(new Event(\"change\"));\n          this.createNotification(quantity);\n        }\n      },\n      error: (e) => {\n        this.createNotification(null, \"error\", e.message);\n        return;\n      },\n    });\n  }\n\n  cartItems(sessionId) {\n    return JSON.parse(GET_SS_STATE(sessionId)).cart;\n  }\n\n  initializeActiveCartDetails() {\n    const sessionId = this.orderSessionIdTarget.dataset.orderSessionId;\n\n    if (sessionId) {\n      const sessionId = this.orderSessionIdTarget.dataset.orderSessionId;\n      let cartItems;\n\n      if (isEmpty(GET_SS_STATE(sessionId))) {\n        SET_SS_STATE(sessionId, JSON.stringify({ cart: [] }));\n      } else {\n        cartItems = JSON.parse(GET_SS_STATE(sessionId)).cart;\n\n        SET_SS_STATE(sessionId, JSON.stringify({ cart: cartItems }));\n      }\n      this.setActiveCartDetails(cartItems);\n    } else {\n      console.error(\"No order session id\");\n    }\n  }\n\n  setActiveCartDetails(cartItems) {\n    if (isEmpty(cartItems)) {\n      return;\n    }\n\n    const totalItemCount = cartItems.reduce((total, item) => {\n      return total + Number(item.quantity);\n    }, 0);\n\n    const form = new FormData();\n\n    form.append(\"products\", JSON.stringify(cartItems));\n\n    Rails.ajax({\n      type: \"post\",\n      dataType: \"json\",\n      url: \"/api/v1/point_of_sale/cost_calculator\",\n      data: form,\n      success: (response) => {\n        this.activeOrdersTotalTarget.innerHTML =\n          response.data.total_cost_formatted;\n        this.activeOrdersItemCountTarget.innerHTML = `${totalItemCount} ${totalItemCount === 1 ? \"Item\" : \"Items\"}`;\n        this.orderSummaryTarget.innerHTML = response.data.summary_html;\n\n        this.updateCartIndicators(totalItemCount);\n      },\n      error: (e) => {\n        console.error(\"error\", e);\n      },\n    });\n  }\n\n  updateCartIndicators(itemCount) {\n    const pageContext = document.querySelector(\"body\").dataset.context;\n    let badgePosition = pageContext === \"patrons\" ? \"50\" : \"100\";\n    let cartTriggers = document.querySelectorAll(\"[data-cart-trigger]\");\n\n    cartTriggers.forEach((ct) => {\n      ct.innerHTML = `<i class=\"ri-shopping-cart-line\" style=\"pointer-events: none;\"></i>\n        <span class=\"position-absolute top-0 start-${badgePosition} translate-middle badge rounded-pill bg-danger\" style=\"pointer-events: none;\">\n          ${itemCount}\n          <span class=\"visually-hidden\" style=\"pointer-events: none;\">Cart Items</span>\n        </span>\n      `;\n    });\n  }\n\n  submitOrder(e) {\n    e.preventDefault();\n\n    const pageLoader = document.querySelector(\".page-loader\");\n    const pageLoaderText = document.querySelector(\".page-loader-text\");\n    const yieldedContent = document.querySelector(\".yielded-content\");\n\n    if (pageLoader && pageLoaderText && yieldedContent) {\n      pageLoaderText.innerHTML = \" ... Preparing Payment ...\";\n      pageLoader.classList.remove(\"d-none\");\n      yieldedContent.classList.add(\"d-none\");\n    }\n\n    const sessionId = this.orderSessionIdTarget.dataset.orderSessionId;\n    const cartItems = JSON.parse(GET_SS_STATE(sessionId)).cart;\n    const form = document.querySelector(\"#payment-form\");\n    const formData = new FormData(form);\n\n    formData.append(\"products\", JSON.stringify(cartItems));\n\n    Rails.ajax({\n      type: \"post\",\n      dataType: \"json\",\n      url: form.action,\n      data: formData,\n      success: (response) => {\n        this.clearExistingOrderSessions();\n        this.activeOrdersTotalTarget.innerHTML = \"...\";\n        this.activeOrdersItemCountTarget.innerHTML = \"...\";\n        this.activeCartBannerTarget.classList.add(\"d-none\");\n        const redirectUrl = response.data.redirect_url;\n        window.location = redirectUrl;\n      },\n      error: (err) => {\n        if (err.data.redirect_url) {\n          window.location = err.data.redirect_url;\n          return;\n        }\n\n        if (err.error || err.message) {\n          document\n            .querySelector(\"body\")\n            .insertAdjacentHTML(\n              \"afterbegin\",\n              `<div class=\"wui-form__meta text-center  wui-form__meta--error wui-form__meta--rounded mb-3 wui-flash-message animate__animated animate__delay-3s animate__fadeOutUp z-index-float\">${err.error || err.message}</div>`,\n            );\n        } else {\n          console.error(err);\n        }\n      },\n    });\n  }\n\n  clearExistingOrderSessions() {\n    const partialKey =\n      this.orderSessionIdTarget.dataset.orderSessionId.split(\"_\")[0];\n    SS_ORDER_SESSION_KEYS(partialKey).forEach(REMOVE_SS_STATE);\n  }\n\n  clearOrder(event) {\n    event.preventDefault();\n    const sessionId = this.orderSessionIdTarget.dataset.orderSessionId;\n    SET_SS_STATE(sessionId, JSON.stringify({ cart: [] }));\n\n    this.orderSummaryTarget.innerHTML = this.emptyStateHtml();\n\n    this.updateCartIndicators(0);\n  }\n\n  createNotification(itemCount, type = \"success\", content = null) {\n    const newFlash = document.createElement(\"a\");\n    const newContent =\n      content == null\n        ? `${itemCount} items added - ${this.viewCartLinkHtml()}`\n        : content;\n\n    newFlash.classList.add(\n      \"added-to-cart-notification\",\n      \"wui-form__meta\",\n      \"text-center\",\n      `wui-form__meta--${type}`,\n      \"wui-form__meta--rounded\",\n      \"mb-3\",\n      \"wui-flash-message\",\n      \"animate__animated\",\n      \"animate__delay-5s\",\n      \"animate__fadeOutUp\",\n      \"z-index-float\",\n      \"text-decoration-none\",\n    );\n\n    newFlash.style = `top: ${window.scrollY + 20}px`;\n\n    newFlash.insertAdjacentHTML(\"afterbegin\", newContent);\n\n    document.body.append(newFlash);\n\n    setTimeout(() => {\n      newFlash.remove();\n    }, 8000);\n  }\n\n  emptyStateHtml() {\n    return `<div class=\"wui-empty-state wui-no-shadow\">\n      <div class=\"wui-empty-state__icon\">\n        <i class=\"ri-shopping-cart-line\"></i>\n      </div><div class=\"wui-empty-state__title\">Your cart is empty</div>\n      <div class=\"wui-empty-state__message\">Add items to your cart to get started</div>\n    </div>`;\n  }\n\n  viewCartLinkHtml() {\n    return `<a class=\"text-dark\" href=\"#\" data-cart-trigger=\"true\">View Cart</a>`;\n  }\n\n  triggerSignUp() {\n    this.offcanvasWrapperTarget.innerHTML = this.loadingDiv();\n\n    Rails.ajax({\n      type: \"get\",\n      dataType: \"json\",\n      url: \"/patrons/sign_up\",\n      success: (response) => {\n        this.offcanvasWrapperTarget.innerHTML = \"\";\n        this.offcanvasWrapperTarget.insertAdjacentHTML(\n          \"afterbegin\",\n          response.html,\n        );\n      },\n      error: (_err) => {},\n    });\n  }\n\n  triggerSignIn() {\n    this.offcanvasWrapperTarget.innerHTML = this.loadingDiv();\n\n    Rails.ajax({\n      type: \"get\",\n      dataType: \"json\",\n      url: \"/patrons/sign_in\",\n      success: (response) => {\n        this.offcanvasWrapperTarget.innerHTML = \"\";\n        this.offcanvasWrapperTarget.insertAdjacentHTML(\n          \"afterbegin\",\n          response.html,\n        );\n      },\n      error: (_err) => {},\n    });\n  }\n\n  submitSignIn(e) {\n    e.preventDefault();\n\n    const email = this.newSessionEmailTarget.value;\n    const password = this.newSessionPasswordTarget.value;\n    const rememberMe = this.newSessionRememberMeTarget.value;\n    const formData = new FormData();\n\n    formData.append(\"patron[email]\", email);\n    formData.append(\"patron[password]\", password);\n    formData.append(\"patron[remember_me]\", rememberMe);\n\n    this.offcanvasWrapperTarget.innerHTML = this.loadingDiv();\n\n    Rails.ajax({\n      type: \"post\",\n      dataType: \"json\",\n      data: formData,\n      url: \"/patrons/sign_in\",\n      success: (response) => {\n        this.offcanvasWrapperTarget.innerHTML = \"\";\n        this.offcanvasWrapperTarget.insertAdjacentHTML(\n          \"afterbegin\",\n          response.html,\n        );\n      },\n      error: (err) => {\n        this.offcanvasWrapperTarget.innerHTML = \"\";\n        this.offcanvasWrapperTarget.insertAdjacentHTML(\"afterbegin\", err.html);\n      },\n    });\n  }\n\n  submitSignUp(e) {\n    e.preventDefault();\n\n    const firstName = this.newRegistrationFirstNameTarget.value;\n    const lastName = this.newRegistrationLastNameTarget.value;\n    const email = this.newRegistrationEmailTarget.value;\n    const password = this.newRegistrationPasswordTarget.value;\n    const acceptTerms = this.newRegistrationAcceptTermsTarget.value;\n\n    const formData = new FormData();\n\n    formData.append(\"patron[email]\", email);\n    formData.append(\"patron[password]\", password);\n    formData.append(\"patron[profile_attributes][first_name]\", firstName);\n    formData.append(\"patron[profile_attributes][last_name]\", lastName);\n    formData.append(\"patron[accept_terms]\", acceptTerms);\n\n    this.offcanvasWrapperTarget.innerHTML = this.loadingDiv();\n\n    Rails.ajax({\n      type: \"post\",\n      dataType: \"json\",\n      data: formData,\n      url: \"/patrons/\",\n      success: (response) => {\n        this.offcanvasWrapperTarget.innerHTML = \"\";\n        this.offcanvasWrapperTarget.insertAdjacentHTML(\n          \"afterbegin\",\n          response.html,\n        );\n      },\n      error: (err) => {\n        this.offcanvasWrapperTarget.innerHTML = \"\";\n        this.offcanvasWrapperTarget.insertAdjacentHTML(\"afterbegin\", err.html);\n      },\n    });\n  }\n\n  locationParams() {\n    return new Proxy(new URLSearchParams(window.location.search), {\n      get: (searchParams, prop) => searchParams.get(prop),\n    });\n  }\n\n  disconnect() {\n    // REMOVE_SS_STATE(this.orderSessionIdTarget.dataset.orderSessionId);\n  }\n}\n", "export const GET_SS_STATE          = (key) => sessionStorage.getItem(key);\nexport const SET_SS_STATE          = (key, value) => sessionStorage.setItem(key, value);\nexport const REMOVE_SS_STATE       = (key) => sessionStorage.removeItem(key);\nexport const SS_ORDER_SESSION_KEYS = (partialMatch) => Object.keys(sessionStorage).filter(key => key.match(partialMatch))\n", "import { Controller } from \"@hotwired/stimulus\";\r\nimport { loading } from \"../utils/_loading\";\r\nimport { GET_SS_STATE } from \"../utils/_sessionstorage\";\r\nimport Rails from '@rails/ujs';\r\n\r\nexport default class extends Controller {\r\n  static targets = [\r\n    'deliveryDetails',\r\n    'collectionDetails',\r\n    'deliverySwitch',\r\n    'collectionSwitch',\r\n    'orderSummary'\r\n  ];\r\n\r\n  connect() {\r\n    this.initializeToggles();\r\n  }\r\n\r\n  initializeToggles() {\r\n\r\n  }\r\n\r\n  toggleAddressDetails(fulfillmentType) {\r\n    if (fulfillmentType === 'delivery') {\r\n      if (this.hasDeliveryDetailsTarget) {\r\n        this.deliveryDetailsTarget.classList.remove('d-none');\r\n      }\r\n\r\n      if (this.hasCollectionDetailsTarget) {\r\n        this.collectionDetailsTarget.classList.add('d-none');\r\n      }\r\n    } else {\r\n      if (this.hasCollectionDetailsTarget) {\r\n        this.collectionDetailsTarget.classList.remove('d-none');\r\n      }\r\n\r\n      if (this.hasDeliveryDetailsTarget) {\r\n        this.deliveryDetailsTarget.classList.add('d-none');\r\n      }\r\n    }\r\n  }\r\n\r\n  toggleFulfillmentDetails(e) {\r\n    this.toggleAddressDetails(e.currentTarget.value);\r\n\r\n    this.orderSummaryTarget.classList.add('pb-5');\r\n    this.orderSummaryTarget.innerHTML = loading('');\r\n\r\n    const form      = new FormData();\r\n    const sessionId = document.querySelector('[data-order-session-id]').dataset.orderSessionId;\r\n    const cartItems = JSON.parse(GET_SS_STATE(sessionId)).cart;\r\n\r\n    form.append('products', JSON.stringify(cartItems));\r\n    form.append('fulfillment_type', e.currentTarget.value);\r\n\r\n    Rails.ajax({\r\n      type: 'post',\r\n      dataType: 'json',\r\n      url: '/api/v1/point_of_sale/cost_calculator',\r\n      data: form,\r\n      success: (response) => {\r\n        this.orderSummaryTarget.classList.remove('pb-5');\r\n        this.orderSummaryTarget.innerHTML = response.data.summary_html;\r\n      },\r\n      error: (e) => {\r\n        console.error('error', e);\r\n      },\r\n    });\r\n  }\r\n\r\n}\r\n", "import { Controller } from \"@hotwired/stimulus\";\r\nimport posthog from \"posthog-js\";\r\n\r\nexport default class extends Controller {\r\n  connect() {\r\n    posthog.init('phc_Q3QYoO93Ac9YbUx7Coo4KHcDhu5gVscudzBTWOCA2Xh',\r\n      {\r\n        api_host: 'https://us.i.posthog.com',\r\n        person_profiles: 'always' // or 'always' to create profiles for anonymous users as well\r\n      }\r\n    )\r\n  }\r\n}\r\n", "import { ErrorProperties } from '../extensions/exception-autocapture/error-conversion'\nimport type { PostHog } from '../posthog-core'\nimport { SessionIdManager } from '../sessionid'\nimport {\n    DeadClicksAutoCaptureConfig,\n    ErrorEventArgs,\n    ErrorMetadata,\n    Properties,\n    RemoteConfig,\n    SiteAppLoader,\n} from '../types'\n\n/*\n * Global helpers to protect access to browser globals in a way that is safer for different targets\n * like DOM, SSR, Web workers etc.\n *\n * NOTE: Typically we want the \"window\" but globalThis works for both the typical browser context as\n * well as other contexts such as the web worker context. Window is still exported for any bits that explicitly require it.\n * If in doubt - export the global you need from this file and use that as an optional value. This way the code path is forced\n * to handle the case where the global is not available.\n */\n\n// eslint-disable-next-line no-restricted-globals\nconst win: (Window & typeof globalThis) | undefined = typeof window !== 'undefined' ? window : undefined\n\nexport type AssignableWindow = Window &\n    typeof globalThis &\n    Record<string, any> & {\n        __PosthogExtensions__?: PostHogExtensions\n\n        _POSTHOG_REMOTE_CONFIG?: Record<\n            string,\n            {\n                config: RemoteConfig\n                siteApps: SiteAppLoader[]\n            }\n        >\n    }\n\n/**\n * This is our contract between (potentially) lazily loaded extensions and the SDK\n * changes to this interface can be breaking changes for users of the SDK\n */\n\nexport type PostHogExtensionKind =\n    | 'toolbar'\n    | 'exception-autocapture'\n    | 'web-vitals'\n    | 'recorder'\n    | 'tracing-headers'\n    | 'surveys'\n    | 'dead-clicks-autocapture'\n    | 'remote-config'\n\nexport interface LazyLoadedDeadClicksAutocaptureInterface {\n    start: (observerTarget: Node) => void\n    stop: () => void\n}\n\ninterface PostHogExtensions {\n    loadExternalDependency?: (\n        posthog: PostHog,\n        kind: PostHogExtensionKind,\n        callback: (error?: string | Event, event?: Event) => void\n    ) => void\n\n    loadSiteApp?: (posthog: PostHog, appUrl: string, callback: (error?: string | Event, event?: Event) => void) => void\n\n    parseErrorAsProperties?: (\n        [event, source, lineno, colno, error]: ErrorEventArgs,\n        metadata?: ErrorMetadata\n    ) => ErrorProperties\n    errorWrappingFunctions?: {\n        wrapOnError: (captureFn: (props: Properties) => void) => () => void\n        wrapUnhandledRejection: (captureFn: (props: Properties) => void) => () => void\n    }\n    rrweb?: { record: any; version: string }\n    rrwebPlugins?: { getRecordConsolePlugin: any; getRecordNetworkPlugin?: any }\n    canActivateRepeatedly?: (survey: any) => boolean\n    generateSurveys?: (posthog: PostHog) => any | undefined\n    postHogWebVitalsCallbacks?: {\n        onLCP: (metric: any) => void\n        onCLS: (metric: any) => void\n        onFCP: (metric: any) => void\n        onINP: (metric: any) => void\n    }\n    tracingHeadersPatchFns?: {\n        _patchFetch: (sessionManager?: SessionIdManager) => () => void\n        _patchXHR: (sessionManager?: SessionIdManager) => () => void\n    }\n    initDeadClicksAutocapture?: (\n        ph: PostHog,\n        config: DeadClicksAutoCaptureConfig\n    ) => LazyLoadedDeadClicksAutocaptureInterface\n}\n\nconst global: typeof globalThis | undefined = typeof globalThis !== 'undefined' ? globalThis : win\n\nexport const ArrayProto = Array.prototype\nexport const nativeForEach = ArrayProto.forEach\nexport const nativeIndexOf = ArrayProto.indexOf\n\nexport const navigator = global?.navigator\nexport const document = global?.document\nexport const location = global?.location\nexport const fetch = global?.fetch\nexport const XMLHttpRequest =\n    global?.XMLHttpRequest && 'withCredentials' in new global.XMLHttpRequest() ? global.XMLHttpRequest : undefined\nexport const AbortController = global?.AbortController\nexport const userAgent = navigator?.userAgent\nexport const assignableWindow: AssignableWindow = win ?? ({} as any)\n\nexport { win as window }\n", "import { PostHog } from './posthog-core'\nimport type { SegmentAnalytics } from './extensions/segment-integration'\nimport { recordOptions } from './extensions/replay/sessionrecording-utils'\n\nexport type Property = any\nexport type Properties = Record<string, Property>\n\nexport const COPY_AUTOCAPTURE_EVENT = '$copy_autocapture'\n\nexport const knownUnsafeEditableEvent = [\n    '$snapshot',\n    '$pageview',\n    '$pageleave',\n    '$set',\n    'survey dismissed',\n    'survey sent',\n    'survey shown',\n    '$identify',\n    '$groupidentify',\n    '$create_alias',\n    '$$client_ingestion_warning',\n    '$web_experiment_applied',\n    '$feature_enrollment_update',\n    '$feature_flag_called',\n] as const\n\n/**\n * These events can be processed by the `beforeCapture` function\n * but can cause unexpected confusion in data.\n *\n * Some features of PostHog rely on receiving 100% of these events\n */\nexport type KnownUnsafeEditableEvent = (typeof knownUnsafeEditableEvent)[number]\n\n/**\n * These are known events PostHog events that can be processed by the `beforeCapture` function\n * That means PostHog functionality does not rely on receiving 100% of these for calculations\n * So, it is safe to sample them to reduce the volume of events sent to PostHog\n */\nexport type KnownEventName =\n    | '$heatmaps_data'\n    | '$opt_in'\n    | '$exception'\n    | '$$heatmap'\n    | '$web_vitals'\n    | '$dead_click'\n    | '$autocapture'\n    | typeof COPY_AUTOCAPTURE_EVENT\n    | '$rageclick'\n\nexport type EventName =\n    | KnownUnsafeEditableEvent\n    | KnownEventName\n    // magic value so that the type of EventName is a set of known strings or any other string\n    // which means you get autocomplete for known strings\n    // but no type complaints when you add an arbitrary string\n    | (string & {})\n\nexport interface CaptureResult {\n    uuid: string\n    event: EventName\n    properties: Properties\n    $set?: Properties\n    $set_once?: Properties\n    timestamp?: Date\n}\n\nexport type AutocaptureCompatibleElement = 'a' | 'button' | 'form' | 'input' | 'select' | 'textarea' | 'label'\nexport type DomAutocaptureEvents = 'click' | 'change' | 'submit'\n\n/**\n * If an array is passed for an allowlist, autocapture events will only be sent for elements matching\n * at least one of the elements in the array. Multiple allowlists can be used\n */\nexport interface AutocaptureConfig {\n    /**\n     * List of URLs to allow autocapture on, can be strings to match\n     * or regexes e.g. ['https://example.com', 'test.com/.*']\n     * this is useful when you want to autocapture on specific pages only\n     *\n     * if you set both url_allowlist and url_ignorelist,\n     * we check the allowlist first and then the ignorelist.\n     * the ignorelist can override the allowlist\n     */\n    url_allowlist?: (string | RegExp)[]\n\n    /**\n     * List of URLs to not allow autocapture on, can be strings to match\n     * or regexes e.g. ['https://example.com', 'test.com/.*']\n     * this is useful when you want to autocapture on most pages but not some specific ones\n     *\n     * if you set both url_allowlist and url_ignorelist,\n     * we check the allowlist first and then the ignorelist.\n     * the ignorelist can override the allowlist\n     */\n    url_ignorelist?: (string | RegExp)[]\n\n    /**\n     * List of DOM events to allow autocapture on  e.g. ['click', 'change', 'submit']\n     */\n    dom_event_allowlist?: DomAutocaptureEvents[]\n\n    /**\n     * List of DOM elements to allow autocapture on\n     * e.g. ['a', 'button', 'form', 'input', 'select', 'textarea', 'label']\n     *\n     * We consider the tree of elements from the root to the target element of the click event\n     * so for the tree `div > div > button > svg`\n     * if the allowlist has `button` then we allow the capture when the `button` or the `svg` is the click target\n     * but not if either of the `div`s are detected as the click target\n     */\n    element_allowlist?: AutocaptureCompatibleElement[]\n\n    /**\n     * List of CSS selectors to allow autocapture on\n     * e.g. ['[ph-capture]']\n     * we consider the tree of elements from the root to the target element of the click event\n     * so for the tree div > div > button > svg\n     * and allow list config `['[id]']`\n     * we will capture the click if the click-target or its parents has any id\n     *\n     * Everything is allowed when there's no allowlist\n     */\n    css_selector_allowlist?: string[]\n\n    /**\n     * Exclude certain element attributes from autocapture\n     * E.g. ['aria-label'] or [data-attr-pii]\n     */\n    element_attribute_ignorelist?: string[]\n\n    /**\n     * When set to true, autocapture will capture the text of any element that is cut or copied.\n     */\n    capture_copied_text?: boolean\n}\n\nexport interface BootstrapConfig {\n    distinctID?: string\n    isIdentifiedID?: boolean\n    featureFlags?: Record<string, boolean | string>\n    featureFlagPayloads?: Record<string, JsonType>\n\n    /**\n     * Optionally provide a sessionID, this is so that you can provide an existing sessionID here to continue a user's session across a domain or device. It MUST be:\n     * - unique to this user\n     * - a valid UUID v7\n     * - the timestamp part must be <= the timestamp of the first event in the session\n     * - the timestamp of the last event in the session must be < the timestamp part + 24 hours\n     * **/\n    sessionID?: string\n}\n\nexport type SupportedWebVitalsMetrics = 'LCP' | 'CLS' | 'FCP' | 'INP'\n\nexport interface PerformanceCaptureConfig {\n    /**\n     *  Works with session replay to use the browser's native performance observer to capture performance metrics\n     */\n    network_timing?: boolean\n\n    /**\n     * Use chrome's web vitals library to wrap fetch and capture web vitals\n     */\n    web_vitals?: boolean\n\n    /**\n     * We observe very large values reported by the Chrome web vitals library\n     * These outliers are likely not real, useful values, and we exclude them\n     * You can set this to 0 in order to include all values, NB this is not recommended\n     *\n     * @default 15 * 60 * 1000 (15 minutes)\n     */\n    __web_vitals_max_value?: number\n\n    /**\n     * By default all 4 metrics are captured\n     * You can set this config to restrict which metrics are captured\n     * e.g. ['CLS', 'FCP'] to only capture those two metrics\n     * NB setting this does not override whether the capture is enabled\n     *\n     * @default ['LCP', 'CLS', 'FCP', 'INP']\n     */\n    web_vitals_allowed_metrics?: SupportedWebVitalsMetrics[]\n\n    /**\n     * We delay flushing web vitals metrics to reduce the number of events we send\n     * This is the maximum time we will wait before sending the metrics\n     *\n     * @default 5000\n     */\n    web_vitals_delayed_flush_ms?: number\n}\n\nexport interface DeadClickCandidate {\n    node: Element\n    originalEvent: MouseEvent\n    timestamp: number\n    // time between click and the most recent scroll\n    scrollDelayMs?: number\n    // time between click and the most recent mutation\n    mutationDelayMs?: number\n    // time between click and the most recent selection changed event\n    selectionChangedDelayMs?: number\n    // if neither scroll nor mutation seen before threshold passed\n    absoluteDelayMs?: number\n}\n\nexport type DeadClicksAutoCaptureConfig = {\n    /**\n     * We'll not consider a click to be a dead click, if it's followed by a scroll within `scroll_threshold_ms` milliseconds\n     *\n     * @default 100\n     */\n    scroll_threshold_ms?: number\n\n    /**\n     * We'll not consider a click to be a dead click, if it's followed by a selection change within `selection_change_threshold_ms` milliseconds\n     *\n     * @default 100\n     */\n    selection_change_threshold_ms?: number\n\n    /**\n     * We'll not consider a click to be a dead click, if it's followed by a mutation within `mutation_threshold_ms` milliseconds\n     *\n     * @default 2500\n     */\n    mutation_threshold_ms?: number\n\n    /**\n     * Allows setting behavior for when a dead click is captured.\n     * For e.g. to support capture to heatmaps\n     *\n     * If not provided the default behavior is to auto-capture dead click events\n     *\n     * Only intended to be provided by our own SDK\n     */\n    __onCapture?: ((click: DeadClickCandidate, properties: Properties) => void) | undefined\n} & Pick<AutocaptureConfig, 'element_attribute_ignorelist'>\n\nexport interface HeatmapConfig {\n    /**\n     * How often to send batched data in `$heatmap_data` events\n     * If set to 0 or not set, sends using the default interval of 1 second\n     *\n     * @default 1000\n     */\n    flush_interval_milliseconds: number\n}\n\nexport type BeforeSendFn = (cr: CaptureResult | null) => CaptureResult | null\n\n/**\n * Configuration options for the PostHog JavaScript SDK.\n * @see https://posthog.com/docs/libraries/js#config\n */\nexport interface PostHogConfig {\n    /** URL of your PostHog instance.\n     *\n     * @default 'https://us.i.posthog.com'\n     */\n    api_host: string\n\n    /**\n     * If using a reverse proxy for `api_host` then this should be the actual PostHog app URL (e.g. https://us.posthog.com).\n     * This ensures that links to PostHog point to the correct host.\n     *\n     * @default null\n     */\n    ui_host: string | null\n\n    /**\n     * The transport method to use for API requests.\n     *\n     * @default 'fetch'\n     */\n    api_transport?: 'XHR' | 'fetch'\n\n    /**\n     * The token for your PostHog project.\n     * It should NOT be provided manually in the config, but rather passed as the first parameter to `posthog.init()`.\n     */\n    token: string\n\n    /**\n     * The name this instance will be identified by.\n     * You don't need to set this most of the time,\n     * but can be useful if you have several Posthog instances running at the same time.\n     *\n     * @default 'posthog'\n     */\n    name: string\n\n    /**\n     * Determines whether PostHog should autocapture events.\n     * This setting does not affect capturing pageview events (see `capture_pageview`).\n     *\n     * @default true\n     */\n    autocapture: boolean | AutocaptureConfig\n\n    /**\n     * Determines whether PostHog should capture rage clicks.\n     *\n     * @default true\n     */\n    rageclick: boolean\n\n    /**\n     * Determines if cookie should be set on the top level domain (example.com).\n     * If PostHog-js is loaded on a subdomain (test.example.com), and `cross_subdomain_cookie` is set to false,\n     * it'll set the cookie on the subdomain only (test.example.com).\n     *\n     * NOTE: It will be set to `false` if we detect that the domain is a subdomain of a platform that is excluded from cross-subdomain cookie setting.\n     * The current list of excluded platforms is `herokuapp.com`, `vercel.app`, and `netlify.app`.\n     *\n     * @see `isCrossDomainCookie`\n     * @default true\n     */\n    cross_subdomain_cookie: boolean\n\n    /**\n     * Determines how PostHog stores information about the user. See [persistence](https://posthog.com/docs/libraries/js#persistence) for details.\n     *\n     * @default 'localStorage+cookie'\n     */\n    persistence: 'localStorage' | 'cookie' | 'memory' | 'localStorage+cookie' | 'sessionStorage'\n\n    /**\n     * The name for the super properties persistent store\n     *\n     * @default ''\n     */\n    persistence_name: string\n\n    /** @deprecated - Use 'persistence_name' instead */\n    cookie_name?: string\n\n    /**\n     * A function to be called once the PostHog scripts have loaded successfully.\n     *\n     * @param posthog_instance - The PostHog instance that has been loaded.\n     */\n    loaded: (posthog_instance: PostHog) => void\n\n    /**\n     * Determines whether PostHog should save referrer information.\n     *\n     * @default true\n     */\n    save_referrer: boolean\n\n    /**\n     * Determines whether PostHog should save marketing parameters.\n     * These are `utm_*` paramaters and friends.\n     *\n     * @see {CAMPAIGN_PARAMS} from './utils/event-utils' - Default campaign parameters like utm_source, utm_medium, etc.\n     * @default true\n     */\n    save_campaign_params: boolean\n\n    /** @deprecated - Use `save_campaign_params` instead */\n    store_google?: boolean\n\n    /**\n     * Used to extend the list of campaign parameters that are saved by default.\n     *\n     * @see {CAMPAIGN_PARAMS} from './utils/event-utils' - Default campaign parameters like utm_source, utm_medium, etc.\n     * @default []\n     */\n    custom_campaign_params: string[]\n\n    /**\n     * Used to extend the list of user agents that are blocked by default.\n     *\n     * @see {DEFAULT_BLOCKED_UA_STRS} from './utils/blocked-uas' - Default list of blocked user agents.\n     * @default []\n     */\n    custom_blocked_useragents: string[]\n\n    /**\n     * Determines whether PostHog should be in debug mode.\n     * You can enable this to get more detailed logging.\n     *\n     * You can also enable this on your website by appending `?__posthog_debug=true` at the end of your URL\n     * You can also call `posthog.debug()` in your code to enable debug mode\n     *\n     * @default false\n     */\n    debug: boolean\n\n    /** @deprecated Use `debug` instead */\n    verbose?: boolean\n\n    /**\n     * Determines whether PostHog should capture pageview events automatically.\n     *\n     * @default true\n     */\n    capture_pageview: boolean\n\n    /**\n     * Determines whether PostHog should capture pageleave events.\n     * If set to `true`, it will capture pageleave events for all pages.\n     * If set to `'if_capture_pageview'`, it will only capture pageleave events if `capture_pageview` is also set to `true`.\n     *\n     * @default 'if_capture_pageview'\n     */\n    capture_pageleave: boolean | 'if_capture_pageview'\n\n    /**\n     * Determines the number of days to store cookies for.\n     *\n     * @default 365\n     */\n    cookie_expiration: number\n\n    /**\n     * Determines whether PostHog should upgrade old cookies.\n     * If set to `true`, the library will check for a cookie from our old js library and import super properties from it, then the old cookie is deleted.\n     * This option only works in the initialization, so make sure you set it when you create the library.\n     *\n     * @default false\n     */\n    upgrade: boolean\n\n    /**\n     * Determines whether PostHog should disable session recording.\n     *\n     * @default false\n     */\n    disable_session_recording: boolean\n\n    /**\n     * Determines whether PostHog should disable persistence.\n     * If set to `true`, the library will not save any data to the browser. It will also delete any data previously saved to the browser.\n     *\n     * @default false\n     */\n    disable_persistence: boolean\n\n    /** @deprecated - use `disable_persistence` instead */\n    disable_cookie?: boolean\n\n    /**\n     * Determines whether PostHog should disable surveys.\n     *\n     * @default false\n     */\n    disable_surveys: boolean\n\n    /**\n     * Determines whether PostHog should disable web experiments.\n     *\n     * Currently disabled while we're in BETA. It will be toggled to `true` in a future release.\n     *\n     * @default true\n     */\n    disable_web_experiments: boolean\n\n    /**\n     * Determines whether PostHog should disable any external dependency loading.\n     * This will prevent PostHog from requesting any external scripts such as those needed for Session Replay, Surveys or Site Apps.\n     *\n     * @default false\n     */\n    disable_external_dependency_loading: boolean\n\n    /**\n     * A function to be called when a script is being loaded.\n     * This can be used to modify the script before it is loaded.\n     * This is useful for adding a nonce to the script, for example.\n     *\n     * @param script - The script element that is being loaded.\n     * @returns The modified script element, or null if the script should not be loaded.\n     */\n    prepare_external_dependency_script?: (script: HTMLScriptElement) => HTMLScriptElement | null\n\n    /**\n     * Determines whether PostHog should enable recording console logs.\n     * When undefined, it falls back to the remote config setting.\n     *\n     * @default undefined\n     */\n    enable_recording_console_log?: boolean\n\n    /**\n     * Determines whether PostHog should use secure cookies.\n     * If this is `true`, PostHog cookies will be marked as secure,\n     * meaning they will only be transmitted over HTTPS.\n     *\n     * @default window.location.protocol === 'https:'\n     */\n    secure_cookie: boolean\n\n    /**\n     * Determines whether PostHog should capture IP addresses.\n     *\n     * @default true\n     */\n    ip: boolean\n\n    /**\n     * Determines if users should be opted out of PostHog tracking by default,\n     * requiring additional logic to opt them into capturing by calling `posthog.opt_in_capturing()`.\n     *\n     * @default false\n     */\n    opt_out_capturing_by_default: boolean\n\n    /**\n     * Determines where we'll save the information about whether users are opted out of capturing.\n     *\n     * @default 'localStorage'\n     */\n    opt_out_capturing_persistence_type: 'localStorage' | 'cookie'\n\n    /**\n     * Determines if users should be opted out of browser data storage by this PostHog instance by default,\n     * requiring additional logic to opt them into capturing by calling `posthog.opt_in_capturing()`.\n     *\n     * @default false\n     */\n    opt_out_persistence_by_default?: boolean\n\n    /**\n     * Determines if users should be opted out of user agent filtering such as googlebot or other bots.\n     * If this is set to `true`, PostHog will set `$browser_type` to either `bot` or `browser` for all events,\n     * but will process all events as if they were from a browser.\n     *\n     * @default false\n     */\n    opt_out_useragent_filter: boolean\n\n    /**\n     * Determines the prefix for the cookie used to store the information about whether users are opted out of capturing.\n     * When `null`, it falls back to the default prefix found in `consent.ts`.\n     *\n     * @default null\n     */\n    opt_out_capturing_cookie_prefix: string | null\n\n    /**\n     * Determines if users should be opted in to site apps.\n     *\n     * @default false\n     */\n    opt_in_site_apps: boolean\n\n    /**\n     * Determines whether PostHog should respect the Do Not Track header when computing\n     * consent in `ConsentManager`.\n     *\n     * @see `ConsentManager`\n     * @default false\n     */\n    respect_dnt: boolean\n\n    /**\n     * A list of properties that should never be sent with capture calls.\n     *\n     * @default []\n     */\n    property_denylist: string[]\n\n    /** @deprecated - use `property_denylist` instead  */\n    property_blacklist?: string[]\n\n    /**\n     * A list of headers that should be sent with requests to the PostHog API.\n     *\n     * @default {}\n     */\n    request_headers: { [header_name: string]: string }\n\n    /** @deprecated - use `request_headers` instead  */\n    xhr_headers?: { [header_name: string]: string }\n\n    /**\n     * A function that is called when a request to the PostHog API fails.\n     *\n     * @param error - The `RequestResponse` object that occurred.\n     */\n    on_request_error?: (error: RequestResponse) => void\n\n    /** @deprecated - use `on_request_error` instead  */\n    on_xhr_error?: (failedRequest: XMLHttpRequest) => void\n\n    /**\n     * Determines whether PostHog should batch requests to the PostHog API.\n     *\n     * @default true\n     */\n    request_batching: boolean\n\n    /**\n     * Determines the maximum length of the properties string that can be sent with capture calls.\n     *\n     * @default 65535\n     */\n    properties_string_max_length: number\n\n    /**\n     * Determines the session recording options.\n     *\n     * @see `SessionRecordingOptions`\n     * @default {}\n     */\n    session_recording: SessionRecordingOptions\n\n    /**\n     * Determines the session idle timeout in seconds.\n     * Any new event that's happened after this timeout will create a new session.\n     *\n     * @default 30 * 60 -- 30 minutes\n     */\n    session_idle_timeout_seconds: number\n\n    /**\n     * Prevent autocapture from capturing any attribute names on elements.\n     *\n     * @default false\n     */\n    mask_all_element_attributes: boolean\n\n    /**\n     * Prevent autocapture from capturing `textContent` on elements.\n     *\n     * @default false\n     */\n    mask_all_text: boolean\n\n    /**\n     * Prevent autocapture from capturing personal data properties.\n     * These include campaign parameters, UTM parameters, and other parameters that could be considered personal data under e.g. GDPR.\n     *\n     * @default false\n     */\n    mask_personal_data_properties: boolean\n\n    /**\n     * Custom list of personal data properties to mask.\n     *\n     * @default []\n     */\n    custom_personal_data_properties: string[]\n\n    /**\n     * One of the very first things the PostHog library does when init() is called\n     * is make a request to the /decide endpoint on PostHog's backend.\n     * This endpoint contains information on how to run the PostHog library\n     * so events are properly received in the backend.\n     *\n     * This endpoint is required to run most features of the library.\n     * However, if you're not using any of the described features,\n     * you may wish to turn off the call completely to avoid an extra request\n     * and reduce resource usage on both the client and the server.\n     *\n     * @default false\n     */\n    advanced_disable_decide: boolean\n\n    /**\n     * Will keep /decide running, but without any feature flag requests\n     *\n     * @default false\n     */\n    advanced_disable_feature_flags: boolean\n\n    /**\n     * Stops from firing feature flag requests on first page load.\n     * Only requests feature flags when user identity or properties are updated,\n     * or you manually request for flags to be loaded.\n     *\n     * @default false\n     */\n    advanced_disable_feature_flags_on_first_load: boolean\n\n    /**\n     * Determines whether PostHog should disable toolbar metrics.\n     * This is our internal instrumentation for our toolbar in your website.\n     *\n     * @default false\n     */\n    advanced_disable_toolbar_metrics: boolean\n\n    /**\n     * Sets timeout for fetching feature flags\n     *\n     * @default 3000\n     */\n    feature_flag_request_timeout_ms: number\n\n    /**\n     * Function to get the device ID.\n     * This doesn't usually need to be set, but can be useful if you want to use a custom device ID.\n     *\n     * @param uuid - The UUID we would use for the device ID.\n     * @returns The device ID.\n     *\n     * @default (uuid) => uuid\n     */\n    get_device_id: (uuid: string) => string\n\n    /**\n     * This function or array of functions - if provided - are called immediately before sending data to the server.\n     * It allows you to edit data before it is sent, or choose not to send it all.\n     * if provided as an array the functions are called in the order they are provided\n     * any one function returning null means the event will not be sent\n     */\n    before_send?: BeforeSendFn | BeforeSendFn[]\n\n    /** @deprecated - use `before_send` instead */\n    sanitize_properties: ((properties: Properties, event_name: string) => Properties) | null\n\n    /** @deprecated - use `before_send` instead */\n    _onCapture: (eventName: string, eventData: CaptureResult) => void\n\n    /**\n     * Determines whether to capture performance metrics.\n     * These include Network Timing and Web Vitals.\n     *\n     * When `undefined`, fallback to the remote configuration.\n     * If `false`, neither network timing nor web vitals will work.\n     * If an object, that will override the remote configuration.\n     *\n     * @see {PerformanceCaptureConfig}\n     * @default undefined\n     */\n    capture_performance?: boolean | PerformanceCaptureConfig\n\n    /**\n     * Determines whether to disable compression when sending events to the server.\n     * WARNING: Should only be used for testing. Could negatively impact performance.\n     *\n     * @default false\n     */\n    disable_compression: boolean\n\n    /**\n     * An object containing the `distinctID`, `isIdentifiedID`, and `featureFlags` keys,\n     * where `distinctID` is a string, and `featureFlags` is an object of key-value pairs.\n     *\n     * Since there is a delay between initializing PostHog and fetching feature flags,\n     * feature flags are not always available immediately.\n     * This makes them unusable if you want to do something like redirecting a user\n     * to a different page based on a feature flag.\n     *\n     * You can, therefore, fetch the feature flags in your server and pre-fill them here,\n     * allowing PostHog to know the feature flag values immediately.\n     *\n     * After the SDK fetches feature flags from PostHog, it will use those flag values instead of bootstrapped ones.\n     *\n     * @default {}\n     */\n    bootstrap: BootstrapConfig\n\n    /**\n     * The segment analytics object.\n     *\n     * @see https://posthog.com/docs/libraries/segment\n     */\n    segment?: SegmentAnalytics\n\n    /**\n     * Determines whether to capture heatmaps.\n     *\n     * @see {HeatmapConfig}\n     * @default undefined\n     */\n    capture_heatmaps?: boolean | HeatmapConfig\n\n    /* @deprecated - use `capture_heatmaps` instead */\n    enable_heatmaps?: boolean\n\n    /**\n     * Determines whether to capture dead clicks.\n     *\n     * @see {DeadClicksAutoCaptureConfig}\n     * @default undefined\n     */\n    capture_dead_clicks?: boolean | DeadClicksAutoCaptureConfig\n\n    /**\n     * Determines whether to disable scroll properties.\n     * These allow you to keep track of how far down someone scrolled in your website.\n     *\n     * @default false\n     */\n    disable_scroll_properties?: boolean\n\n    /**\n     * Let the pageview scroll stats use a custom css selector for the root element, e.g. `main`\n     * It will use `window.document.documentElement` if not specified.\n     */\n    scroll_root_selector?: string | string[]\n\n    /**\n     * You can control whether events from PostHog-js have person processing enabled with the `person_profiles` config setting.\n     * There are three options:\n     * - `person_profiles: 'always'` - we will process persons data for all events\n     * - `person_profiles: 'never'` - we won't process persons for any event. This means that anonymous users will not be merged once they sign up or login, so you lose the ability to create funnels that track users from anonymous to identified. All events (including `$identify`) will be sent with `$process_person_profile: False`.\n     * - `person_profiles: 'identified_only'` _(default)_ - we will only process persons when you call `posthog.identify`, `posthog.alias`, `posthog.setPersonProperties`, `posthog.group`, `posthog.setPersonPropertiesForFlags` or `posthog.setGroupPropertiesForFlags` Anonymous users won't get person profiles.\n     *\n     * @default 'identified_only'\n     */\n    person_profiles?: 'always' | 'never' | 'identified_only'\n\n    /** @deprecated - use `person_profiles` instead  */\n    process_person?: 'always' | 'never' | 'identified_only'\n\n    /**\n     * Client side rate limiting\n     */\n    rate_limiting?: {\n        /**\n         * The average number of events per second that should be permitted\n         *\n         * @default 10\n         */\n        events_per_second?: number\n\n        /**\n         * How many events can be captured in a burst. This defaults to 10 times the events_per_second count\n         *\n         * @default 10 * `events_per_second`\n         */\n        events_burst_limit?: number\n    }\n\n    /**\n     * Used when sending data via `fetch`, use with care.\n     * This is intentionally meant to be used with NextJS `fetch`\n     *\n     * Incorrect `cache` usage may cause out-of-date data for feature flags, actions tracking, etc.\n     * See https://nextjs.org/docs/app/api-reference/functions/fetch#fetchurl-options\n     */\n    fetch_options?: {\n        cache?: RequestInit['cache']\n        next_options?: NextOptions\n    }\n\n    // ------- PREVIEW CONFIGS -------\n\n    /**\n     * PREVIEW - MAY CHANGE WITHOUT WARNING - DO NOT USE IN PRODUCTION\n     * Whether to wrap fetch and add tracing headers to the request\n     * */\n    __add_tracing_headers?: boolean\n\n    /**\n     * PREVIEW - MAY CHANGE WITHOUT WARNING - DO NOT USE IN PRODUCTION\n     * Enables the new RemoteConfig approach to loading config instead of decide\n     * */\n    __preview_remote_config?: boolean\n\n    /**\n     * PREVIEW - MAY CHANGE WITHOUT WARNING - DO NOT USE IN PRODUCTION\n     * Whether to send a sentinel value for distinct id, device id, and session id, which will be replaced server-side by a cookieless hash\n     * */\n    __preview_experimental_cookieless_mode?: boolean\n\n    // ------- RETIRED CONFIGS - NO REPLACEMENT OR USAGE -------\n\n    /** @deprecated - NOT USED ANYMORE, kept here for backwards compatibility reasons */\n    api_method?: string\n\n    /** @deprecated - NOT USED ANYMORE, kept here for backwards compatibility reasons */\n    inapp_protocol?: string\n\n    /** @deprecated - NOT USED ANYMORE, kept here for backwards compatibility reasons */\n    inapp_link_new_window?: boolean\n}\n\nexport interface SessionRecordingOptions {\n    /**\n     * Derived from `rrweb.record` options\n     * @see https://github.com/rrweb-io/rrweb/blob/master/guide.md\n     * @default 'ph-nocapture'\n     */\n    blockClass?: string | RegExp\n\n    /**\n     * Derived from `rrweb.record` options\n     * @see https://github.com/rrweb-io/rrweb/blob/master/guide.md\n     * @default null\n     */\n    blockSelector?: string | null\n\n    /**\n     * Derived from `rrweb.record` options\n     * @see https://github.com/rrweb-io/rrweb/blob/master/guide.md\n     * @default 'ph-ignore-input'\n     */\n    ignoreClass?: string\n\n    /**\n     * Derived from `rrweb.record` options\n     * @see https://github.com/rrweb-io/rrweb/blob/master/guide.md\n     * @default 'ph-mask'\n     */\n    maskTextClass?: string | RegExp\n\n    /**\n     * Derived from `rrweb.record` options\n     * @see https://github.com/rrweb-io/rrweb/blob/master/guide.md\n     */\n    maskTextSelector?: string | null\n\n    /**\n     * Derived from `rrweb.record` options\n     * @see https://github.com/rrweb-io/rrweb/blob/master/guide.md\n     */\n    maskTextFn?: ((text: string, element?: HTMLElement) => string) | null\n\n    /**\n     * Derived from `rrweb.record` options\n     * @see https://github.com/rrweb-io/rrweb/blob/master/guide.md\n     */\n    maskAllInputs?: boolean\n\n    /**\n     * Derived from `rrweb.record` options\n     * @see https://github.com/rrweb-io/rrweb/blob/master/guide.md\n     */\n    maskInputOptions?: recordOptions['maskInputOptions']\n\n    /**\n     * Derived from `rrweb.record` options\n     * @see https://github.com/rrweb-io/rrweb/blob/master/guide.md\n     */\n    maskInputFn?: ((text: string, element?: HTMLElement) => string) | null\n\n    /**\n     * Derived from `rrweb.record` options\n     * @see https://github.com/rrweb-io/rrweb/blob/master/guide.md\n     * @default {}\n     */\n    slimDOMOptions?: recordOptions['slimDOMOptions']\n\n    /**\n     * Derived from `rrweb.record` options\n     * @see https://github.com/rrweb-io/rrweb/blob/master/guide.md\n     * @default false\n     */\n    collectFonts?: boolean\n\n    /**\n     * Derived from `rrweb.record` options\n     * @see https://github.com/rrweb-io/rrweb/blob/master/guide.md\n     * @default true\n     */\n    inlineStylesheet?: boolean\n\n    /**\n     * Derived from `rrweb.record` options\n     * @see https://github.com/rrweb-io/rrweb/blob/master/guide.md\n     * @default false\n     */\n    recordCrossOriginIframes?: boolean\n\n    /**\n     * Derived from `rrweb.record` options\n     * @see https://github.com/rrweb-io/rrweb/blob/master/guide.md\n     * @default false\n     */\n    recordHeaders?: boolean\n\n    /**\n     * Derived from `rrweb.record` options\n     * @see https://github.com/rrweb-io/rrweb/blob/master/guide.md\n     * @default false\n     */\n    recordBody?: boolean\n\n    /**\n     * Allows local config to override remote canvas recording settings from the decide response\n     */\n    captureCanvas?: SessionRecordingCanvasOptions\n\n    /**\n     * Modify the network request before it is captured. Returning null or undefined stops it being captured\n     */\n    maskCapturedNetworkRequestFn?: ((data: CapturedNetworkRequest) => CapturedNetworkRequest | null | undefined) | null\n\n    /** @deprecated - use maskCapturedNetworkRequestFn instead  */\n    maskNetworkRequestFn?: ((data: NetworkRequest) => NetworkRequest | null | undefined) | null\n\n    /**\n     * ADVANCED: while a user is active we take a full snapshot of the browser every interval.\n     * For very few sites playback performance might be better with different interval.\n     * Set to 0 to disable\n     *\n     * @default 1000 * 60 * 5 (5 minutes)\n     */\n    full_snapshot_interval_millis?: number\n\n    /**\n     * ADVANCED: whether to partially compress rrweb events before sending them to the server,\n     * defaults to true, can be set to false to disable partial compression\n     * NB requests are still compressed when sent to the server regardless of this setting\n     *\n     * @default true\n     */\n    compress_events?: boolean\n\n    /**\n     * ADVANCED: alters the threshold before a recording considers a user has become idle.\n     * Normally only altered alongside changes to session_idle_timeout_ms.\n     *\n     * @default 1000 * 60 * 5 (5 minutes)\n     */\n    session_idle_threshold_ms?: number\n\n    /**\n     * ADVANCED: alters the refill rate for the token bucket mutation throttling\n     * Normally only altered alongside posthog support guidance.\n     * Accepts values between 0 and 100\n     *\n     * @default 10\n     */\n    __mutationRateLimiterRefillRate?: number\n\n    /**\n     * ADVANCED: alters the bucket size for the token bucket mutation throttling\n     * Normally only altered alongside posthog support guidance.\n     * Accepts values between 0 and 100\n     *\n     * @default 100\n     */\n    __mutationRateLimiterBucketSize?: number\n}\n\nexport type SessionIdChangedCallback = (\n    sessionId: string,\n    windowId: string | null | undefined,\n    changeReason?: { noSessionId: boolean; activityTimeout: boolean; sessionPastMaximumLength: boolean }\n) => void\n\nexport enum Compression {\n    GZipJS = 'gzip-js',\n    Base64 = 'base64',\n}\n\n// Request types - these should be kept minimal to what request.ts needs\n\n// Minimal class to allow interop between different request methods (xhr / fetch)\nexport interface RequestResponse {\n    statusCode: number\n    text?: string\n    json?: any\n}\n\nexport type RequestCallback = (response: RequestResponse) => void\n\n// See https://nextjs.org/docs/app/api-reference/functions/fetch#fetchurl-options\ntype NextOptions = { revalidate: false | 0 | number; tags: string[] }\n\nexport interface RequestOptions {\n    url: string\n    // Data can be a single object or an array of objects when batched\n    data?: Record<string, any> | Record<string, any>[]\n    headers?: Record<string, any>\n    transport?: 'XHR' | 'fetch' | 'sendBeacon'\n    method?: 'POST' | 'GET'\n    urlQueryArgs?: { compression: Compression }\n    callback?: RequestCallback\n    timeout?: number\n    noRetries?: boolean\n    compression?: Compression | 'best-available'\n    fetchOptions?: {\n        cache?: RequestInit['cache']\n        next?: NextOptions\n    }\n}\n\n// Queued request types - the same as a request but with additional queueing information\n\nexport interface QueuedRequestOptions extends RequestOptions {\n    batchKey?: string /** key of queue, e.g. 'sessionRecording' vs 'event' */\n}\n\n// Used explicitly for retriable requests\nexport interface RetriableRequestOptions extends QueuedRequestOptions {\n    retriesPerformedSoFar?: number\n}\n\nexport interface CaptureOptions {\n    /**\n     * Used when `$identify` is called\n     * Will set person properties overriding previous values\n     */\n    $set?: Properties\n\n    /**\n     * Used when `$identify` is called\n     * Will set person properties but only once, it will NOT override previous values\n     */\n    $set_once?: Properties\n\n    /**\n     * Used to override the desired endpoint for the captured event\n     */\n    _url?: string\n\n    /**\n     * key of queue, e.g. 'sessionRecording' vs 'event'\n     */\n    _batchKey?: string\n\n    /**\n     * If set, overrides and disables config.properties_string_max_length\n     */\n    _noTruncate?: boolean\n\n    /**\n     * If set, skips the batched queue\n     */\n    send_instantly?: boolean\n\n    /**\n     * If set, skips the client side rate limiting\n     */\n    skip_client_rate_limiting?: boolean\n\n    /**\n     * If set, overrides the desired transport method\n     */\n    transport?: RequestOptions['transport']\n\n    /**\n     * If set, overrides the current timestamp\n     */\n    timestamp?: Date\n}\n\nexport type FlagVariant = { flag: string; variant: string }\n\nexport type SessionRecordingCanvasOptions = {\n    /**\n     * If set, records the canvas\n     *\n     * @default false\n     */\n    recordCanvas?: boolean | null\n\n    /**\n     * If set, records the canvas at the given FPS\n     * Can be set in the remote configuration\n     * Limited between 0 and 12\n     *\n     * @default 0\n     */\n    canvasFps?: number | null\n\n    /**\n     * If set, records the canvas at the given quality\n     * Can be set in the remote configuration\n     * Must be an integer between 0 and 1\n     *\n     * @default 0\n     */\n    canvasQuality?: string | null\n}\n\n/**\n * Remote configuration for the PostHog instance\n *\n * All of these settings can be configured directly in your PostHog instance\n * Any configuration set in the client overrides the information from the server\n */\nexport interface RemoteConfig {\n    /**\n     * Supported compression algorithms\n     */\n    supportedCompression: Compression[]\n\n    /**\n     * If set, disables autocapture\n     */\n    autocapture_opt_out?: boolean\n\n    /**\n     *     originally capturePerformance was replay only and so boolean true\n     *     is equivalent to { network_timing: true }\n     *     now capture performance can be separately enabled within replay\n     *     and as a standalone web vitals tracker\n     *     people can have them enabled separately\n     *     they work standalone but enhance each other\n     *     TODO: deprecate this so we make a new config that doesn't need this explanation\n     */\n    capturePerformance?: boolean | PerformanceCaptureConfig\n\n    /**\n     * Whether we should use a custom endpoint for analytics\n     *\n     * @default { endpoint: \"/e\" }\n     */\n    analytics?: {\n        endpoint?: string\n    }\n\n    /**\n     * Whether the `$elements_chain` property should be sent as a string or as an array\n     *\n     * @default false\n     */\n    elementsChainAsString?: boolean\n\n    /**\n     * This is currently in development and may have breaking changes without a major version bump\n     */\n    autocaptureExceptions?: boolean | { endpoint?: string }\n\n    /**\n     * Session recording configuration options\n     */\n    sessionRecording?: SessionRecordingCanvasOptions & {\n        endpoint?: string\n        consoleLogRecordingEnabled?: boolean\n        // the API returns a decimal between 0 and 1 as a string\n        sampleRate?: string | null\n        minimumDurationMilliseconds?: number\n        linkedFlag?: string | FlagVariant | null\n        networkPayloadCapture?: Pick<NetworkRecordOptions, 'recordBody' | 'recordHeaders'>\n        urlTriggers?: SessionRecordingUrlTrigger[]\n        scriptConfig?: { script?: string | undefined }\n        urlBlocklist?: SessionRecordingUrlTrigger[]\n        eventTriggers?: string[]\n    }\n\n    /**\n     * Whether surveys are enabled\n     */\n    surveys?: boolean\n\n    /**\n     * Parameters for the toolbar\n     */\n    toolbarParams: ToolbarParams\n\n    /**\n     * @deprecated renamed to toolbarParams, still present on older API responses\n     */\n    editorParams?: ToolbarParams\n\n    /**\n     * @deprecated, moved to toolbarParams\n     */\n    toolbarVersion: 'toolbar'\n\n    /**\n     * Whether the user is authenticated\n     */\n    isAuthenticated: boolean\n\n    /**\n     * List of site apps with their IDs and URLs\n     */\n    siteApps: { id: string; url: string }[]\n\n    /**\n     * Whether heatmaps are enabled\n     */\n    heatmaps?: boolean\n\n    /**\n     * Whether to only capture identified users by default\n     */\n    defaultIdentifiedOnly?: boolean\n\n    /**\n     * Whether to capture dead clicks\n     */\n    captureDeadClicks?: boolean\n\n    /**\n     * Indicates if the team has any flags enabled (if not we don't need to load them)\n     */\n    hasFeatureFlags?: boolean\n}\n\n/**\n * Decide returns everything we have on the remote config plus feature flags and their payloads\n */\nexport interface DecideResponse extends RemoteConfig {\n    featureFlags: Record<string, string | boolean>\n    featureFlagPayloads: Record<string, JsonType>\n    errorsWhileComputingFlags: boolean\n}\n\nexport type SiteAppGlobals = {\n    event: {\n        uuid: string\n        event: EventName\n        properties: Properties\n        timestamp?: Date\n        elements_chain?: string\n        distinct_id?: string\n    }\n    person: {\n        properties: Properties\n    }\n    groups: Record<string, { id: string; type: string; properties: Properties }>\n}\n\nexport type SiteAppLoader = {\n    id: string\n    init: (config: { posthog: PostHog; callback: (success: boolean) => void }) => {\n        processEvent?: (globals: SiteAppGlobals) => void\n    }\n}\n\nexport type SiteApp = {\n    id: string\n    loaded: boolean\n    errored: boolean\n    processEvent?: (globals: SiteAppGlobals) => void\n}\n\nexport type FeatureFlagsCallback = (\n    flags: string[],\n    variants: Record<string, string | boolean>,\n    context?: {\n        errorsLoading?: boolean\n    }\n) => void\n\nexport interface PersistentStore {\n    is_supported: () => boolean\n    error: (error: any) => void\n    parse: (name: string) => any\n    get: (name: string) => any\n    set: (\n        name: string,\n        value: any,\n        expire_days?: number | null,\n        cross_subdomain?: boolean,\n        secure?: boolean,\n        debug?: boolean\n    ) => void\n    remove: (name: string, cross_subdomain?: boolean) => void\n}\n\n// eslint-disable-next-line @typescript-eslint/no-empty-object-type\nexport type Breaker = {}\nexport type EventHandler = (event: Event) => boolean | void\n\nexport type ToolbarUserIntent = 'add-action' | 'edit-action'\nexport type ToolbarSource = 'url' | 'localstorage'\nexport type ToolbarVersion = 'toolbar'\n\n/* sync with posthog */\nexport interface ToolbarParams {\n    token?: string /** public posthog-js token */\n    temporaryToken?: string /** private temporary user token */\n    actionId?: number\n    userIntent?: ToolbarUserIntent\n    source?: ToolbarSource\n    toolbarVersion?: ToolbarVersion\n    instrument?: boolean\n    distinctId?: string\n    userEmail?: string\n    dataAttributes?: string[]\n    featureFlags?: Record<string, string | boolean>\n}\n\nexport type SnippetArrayItem = [method: string, ...args: any[]]\n\nexport type JsonRecord = { [key: string]: JsonType }\nexport type JsonType = string | number | boolean | null | JsonRecord | Array<JsonType>\n\n/** A feature that isn't publicly available yet.*/\nexport interface EarlyAccessFeature {\n    // Sync this with the backend's EarlyAccessFeatureSerializer!\n    name: string\n    description: string\n    stage: 'concept' | 'alpha' | 'beta'\n    documentationUrl: string | null\n    flagKey: string | null\n}\n\nexport type EarlyAccessFeatureCallback = (earlyAccessFeatures: EarlyAccessFeature[]) => void\n\nexport interface EarlyAccessFeatureResponse {\n    earlyAccessFeatures: EarlyAccessFeature[]\n}\n\nexport type Headers = Record<string, string>\n\n/* for rrweb/network@1\n ** when that is released as part of rrweb this can be removed\n ** don't rely on this type, it may change without notice\n */\nexport type InitiatorType =\n    | 'audio'\n    | 'beacon'\n    | 'body'\n    | 'css'\n    | 'early-hint'\n    | 'embed'\n    | 'fetch'\n    | 'frame'\n    | 'iframe'\n    | 'icon'\n    | 'image'\n    | 'img'\n    | 'input'\n    | 'link'\n    | 'navigation'\n    | 'object'\n    | 'ping'\n    | 'script'\n    | 'track'\n    | 'video'\n    | 'xmlhttprequest'\n\nexport type NetworkRecordOptions = {\n    initiatorTypes?: InitiatorType[]\n    maskRequestFn?: (data: CapturedNetworkRequest) => CapturedNetworkRequest | undefined\n    recordHeaders?: boolean | { request: boolean; response: boolean }\n    recordBody?: boolean | string[] | { request: boolean | string[]; response: boolean | string[] }\n    recordInitialRequests?: boolean\n    /**\n     * whether to record PerformanceEntry events for network requests\n     */\n    recordPerformance?: boolean\n    /**\n     * the PerformanceObserver will only observe these entry types\n     */\n    performanceEntryTypeToObserve: string[]\n    /**\n     * the maximum size of the request/response body to record\n     * NB this will be at most 1MB even if set larger\n     */\n    payloadSizeLimitBytes: number\n    /**\n     * some domains we should never record the payload\n     * for example other companies session replay ingestion payloads aren't super useful but are gigantic\n     * if this isn't provided we use a default list\n     * if this is provided - we add the provided list to the default list\n     * i.e. we never record the payloads on the default deny list\n     */\n    payloadHostDenyList?: string[]\n}\n\n/** @deprecated - use CapturedNetworkRequest instead  */\nexport type NetworkRequest = {\n    url: string\n}\n\n// In rrweb this is called NetworkRequest, but we already exposed that as having only URL\n// we also want to vary from the rrweb NetworkRequest because we want to include\n// all PerformanceEntry properties too.\n// that has 4 required properties\n//     readonly duration: DOMHighResTimeStamp;\n//     readonly entryType: string;\n//     readonly name: string;\n//     readonly startTime: DOMHighResTimeStamp;\n// NB: properties below here are ALPHA, don't rely on them, they may change without notice\n\n// we mirror PerformanceEntry since we read into this type from a PerformanceObserver,\n// but we don't want to inherit its readonly-iness\ntype Writable<T> = { -readonly [P in keyof T]: T[P] }\n\nexport type CapturedNetworkRequest = Writable<Omit<PerformanceEntry, 'toJSON'>> & {\n    // properties below here are ALPHA, don't rely on them, they may change without notice\n    method?: string\n    initiatorType?: InitiatorType\n    status?: number\n    timeOrigin?: number\n    timestamp?: number\n    startTime?: number\n    endTime?: number\n    requestHeaders?: Headers\n    requestBody?: string | null\n    responseHeaders?: Headers\n    responseBody?: string | null\n    // was this captured before fetch/xhr could have been wrapped\n    isInitial?: boolean\n}\n\nexport type ErrorEventArgs = [\n    event: string | Event,\n    source?: string | undefined,\n    lineno?: number | undefined,\n    colno?: number | undefined,\n    error?: Error | undefined,\n]\n\nexport type ErrorMetadata = {\n    handled?: boolean\n    synthetic?: boolean\n    syntheticException?: Error\n    overrideExceptionType?: string\n    overrideExceptionMessage?: string\n    defaultExceptionType?: string\n    defaultExceptionMessage?: string\n}\n\n// levels originally copied from Sentry to work with the sentry integration\n// and to avoid relying on a frequently changing @sentry/types dependency\n// but provided as an array of literal types, so we can constrain the level below\nexport const severityLevels = ['fatal', 'error', 'warning', 'log', 'info', 'debug'] as const\nexport declare type SeverityLevel = (typeof severityLevels)[number]\n\nexport interface ErrorProperties {\n    $exception_type: string\n    $exception_message: string\n    $exception_level: SeverityLevel\n    $exception_source?: string\n    $exception_lineno?: number\n    $exception_colno?: number\n    $exception_DOMException_code?: string\n    $exception_is_synthetic?: boolean\n    $exception_stack_trace_raw?: string\n    $exception_handled?: boolean\n    $exception_personURL?: string\n}\n\nexport interface ErrorConversions {\n    errorToProperties: (args: ErrorEventArgs) => ErrorProperties\n    unhandledRejectionToProperties: (args: [ev: PromiseRejectionEvent]) => ErrorProperties\n}\n\nexport interface SessionRecordingUrlTrigger {\n    url: string\n    matching: 'regex'\n}\n", "import packageInfo from '../package.json'\n\n// overridden in posthog-core,\n// e.g.     Config.DEBUG = Config.DEBUG || instance.config.debug\nconst Config = {\n    DEBUG: false,\n    LIB_VERSION: packageInfo.version,\n}\n\nexport default Config\n", "import { Breaker, Properties } from '../types'\nimport { hasOwnProperty, isArray, isFormData, isNull, isNullish, isString } from './type-utils'\nimport { logger } from './logger'\nimport { nativeForEach, nativeIndexOf } from './globals'\n\nconst breaker: Breaker = {}\n\nexport function eachArray<E = any>(\n    obj: E[] | null | undefined,\n    iterator: (value: E, key: number) => void | Breaker,\n    thisArg?: any\n): void {\n    if (isArray(obj)) {\n        if (nativeForEach && obj.forEach === nativeForEach) {\n            obj.forEach(iterator, thisArg)\n        } else if ('length' in obj && obj.length === +obj.length) {\n            for (let i = 0, l = obj.length; i < l; i++) {\n                if (i in obj && iterator.call(thisArg, obj[i], i) === breaker) {\n                    return\n                }\n            }\n        }\n    }\n}\n\n/**\n * @param {*=} obj\n * @param {function(...*)=} iterator\n * @param {Object=} thisArg\n */\nexport function each(obj: any, iterator: (value: any, key: any) => void | Breaker, thisArg?: any): void {\n    if (isNullish(obj)) {\n        return\n    }\n    if (isArray(obj)) {\n        return eachArray(obj, iterator, thisArg)\n    }\n    if (isFormData(obj)) {\n        for (const pair of obj.entries()) {\n            if (iterator.call(thisArg, pair[1], pair[0]) === breaker) {\n                return\n            }\n        }\n        return\n    }\n    for (const key in obj) {\n        if (hasOwnProperty.call(obj, key)) {\n            if (iterator.call(thisArg, obj[key], key) === breaker) {\n                return\n            }\n        }\n    }\n}\n\nexport const extend = function (obj: Record<string, any>, ...args: Record<string, any>[]): Record<string, any> {\n    eachArray(args, function (source) {\n        for (const prop in source) {\n            if (source[prop] !== void 0) {\n                obj[prop] = source[prop]\n            }\n        }\n    })\n    return obj\n}\n\nexport const extendArray = function <T>(obj: T[], ...args: T[][]): T[] {\n    eachArray(args, function (source) {\n        eachArray(source, function (item) {\n            obj.push(item)\n        })\n    })\n    return obj\n}\n\nexport const include = function (\n    obj: null | string | Array<any> | Record<string, any>,\n    target: any\n): boolean | Breaker {\n    let found = false\n    if (isNull(obj)) {\n        return found\n    }\n    if (nativeIndexOf && obj.indexOf === nativeIndexOf) {\n        return obj.indexOf(target) != -1\n    }\n    each(obj, function (value) {\n        if (found || (found = value === target)) {\n            return breaker\n        }\n        return\n    })\n    return found\n}\n\n/**\n * Object.entries() polyfill\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/entries\n */\nexport function entries<T = any>(obj: Record<string, T>): [string, T][] {\n    const ownProps = Object.keys(obj)\n    let i = ownProps.length\n    const resArray = new Array(i) // preallocate the Array\n\n    while (i--) {\n        resArray[i] = [ownProps[i], obj[ownProps[i]]]\n    }\n    return resArray\n}\n\nexport const isValidRegex = function (str: string): boolean {\n    try {\n        new RegExp(str)\n    } catch {\n        return false\n    }\n    return true\n}\n\nexport const trySafe = function <T>(fn: () => T): T | undefined {\n    try {\n        return fn()\n    } catch {\n        return undefined\n    }\n}\n\nexport const safewrap = function <F extends (...args: any[]) => any = (...args: any[]) => any>(f: F): F {\n    return function (...args) {\n        try {\n            // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n            // @ts-ignore\n            return f.apply(this, args)\n        } catch (e) {\n            logger.critical(\n                'Implementation error. Please turn on debug mode and open a ticket on https://app.posthog.com/home#panel=support%3Asupport%3A.'\n            )\n            logger.critical(e)\n        }\n    } as F\n}\n\n// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\nexport const safewrapClass = function (klass: Function, functions: string[]): void {\n    for (let i = 0; i < functions.length; i++) {\n        klass.prototype[functions[i]] = safewrap(klass.prototype[functions[i]])\n    }\n}\n\nexport const stripEmptyProperties = function (p: Properties): Properties {\n    const ret: Properties = {}\n    each(p, function (v, k) {\n        if (isString(v) && v.length > 0) {\n            ret[k] = v\n        }\n    })\n    return ret\n}\n\n/**\n * Deep copies an object.\n * It handles cycles by replacing all references to them with `undefined`\n * Also supports customizing native values\n *\n * @param value\n * @param customizer\n * @returns {{}|undefined|*}\n */\nfunction deepCircularCopy<T extends Record<string, any> = Record<string, any>>(\n    value: T,\n    customizer?: <K extends keyof T = keyof T>(value: T[K], key?: K) => T[K]\n): T | undefined {\n    const COPY_IN_PROGRESS_SET = new Set()\n\n    function internalDeepCircularCopy(value: T, key?: string): T | undefined {\n        if (value !== Object(value)) return customizer ? customizer(value as any, key) : value // primitive value\n\n        if (COPY_IN_PROGRESS_SET.has(value)) return undefined\n        COPY_IN_PROGRESS_SET.add(value)\n        let result: T\n\n        if (isArray(value)) {\n            result = [] as any as T\n            eachArray(value, (it) => {\n                result.push(internalDeepCircularCopy(it))\n            })\n        } else {\n            result = {} as T\n            each(value, (val, key) => {\n                if (!COPY_IN_PROGRESS_SET.has(val)) {\n                    ;(result as any)[key] = internalDeepCircularCopy(val, key)\n                }\n            })\n        }\n        return result\n    }\n    return internalDeepCircularCopy(value)\n}\n\nexport function _copyAndTruncateStrings<T extends Record<string, any> = Record<string, any>>(\n    object: T,\n    maxStringLength: number | null\n): T {\n    return deepCircularCopy(object, (value: any) => {\n        if (isString(value) && !isNull(maxStringLength)) {\n            return (value as string).slice(0, maxStringLength)\n        }\n        return value\n    }) as T\n}\n\n// NOTE: Update PostHogConfig docs if you change this list\n// We will not try to catch all bullets here, but we should make an effort to catch the most common ones\n// You should be highly against adding more to this list, because ultimately customers can configure\n// their `cross_subdomain_cookie` setting to anything they want.\nconst EXCLUDED_FROM_CROSS_SUBDOMAIN_COOKIE = ['herokuapp.com', 'vercel.app', 'netlify.app']\nexport function isCrossDomainCookie(documentLocation: Location | undefined) {\n    const hostname = documentLocation?.hostname\n\n    if (!isString(hostname)) {\n        return false\n    }\n    // split and slice isn't a great way to match arbitrary domains,\n    // but it's good enough for ensuring we only match herokuapp.com when it is the TLD\n    // for the hostname\n    const lastTwoParts = hostname.split('.').slice(-2).join('.')\n\n    for (const excluded of EXCLUDED_FROM_CROSS_SUBDOMAIN_COOKIE) {\n        if (lastTwoParts === excluded) {\n            return false\n        }\n    }\n\n    return true\n}\n\nexport function find<T>(value: T[], predicate: (value: T) => boolean): T | undefined {\n    for (let i = 0; i < value.length; i++) {\n        if (predicate(value[i])) {\n            return value[i]\n        }\n    }\n    return undefined\n}\n\n// Use this instead of element.addEventListener to avoid eslint errors\n// this properly implements the default options for passive event listeners\nexport function addEventListener(\n    element: Window | Document | Element | undefined,\n    event: string,\n    callback: EventListener,\n    options?: AddEventListenerOptions\n): void {\n    const { capture = false, passive = true } = options ?? {}\n\n    // This is the only place where we are allowed to call this function\n    // because the whole idea is that we should be calling this instead of the built-in one\n    // eslint-disable-next-line posthog-js/no-add-event-listener\n    element?.addEventListener(event, callback, { capture, passive })\n}\n", "import { isValidRegex } from '.'\n\nexport function includes<T = any>(str: T[] | string, needle: T): boolean {\n    return (str as any).indexOf(needle) !== -1\n}\n\n// UNDERSCORE\n// Embed part of the Underscore Library\nexport const trim = function (str: string): string {\n    return str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '')\n}\nexport const stripLeadingDollar = function (s: string): string {\n    return s.replace(/^\\$/, '')\n}\n\nexport function isDistinctIdStringLike(value: string): boolean {\n    return ['distinct_id', 'distinctid'].includes(value.toLowerCase())\n}\n\nexport const isMatchingRegex = function (value: string, pattern: string): boolean {\n    if (!isValidRegex(pattern)) return false\n    try {\n        return new RegExp(pattern).test(value)\n    } catch {\n        return false\n    }\n}\n", "import { window } from './globals'\nimport { knownUnsafeEditableEvent, KnownUnsafeEditableEvent } from '../types'\nimport { includes } from './string-utils'\n\n// eslint-disable-next-line posthog-js/no-direct-array-check\nconst nativeIsArray = Array.isArray\nconst ObjProto = Object.prototype\nexport const hasOwnProperty = ObjProto.hasOwnProperty\nconst toString = ObjProto.toString\n\nexport const isArray =\n    nativeIsArray ||\n    function (obj: any): obj is any[] {\n        return toString.call(obj) === '[object Array]'\n    }\n\n// from a comment on http://dbj.org/dbj/?p=286\n// fails on only one very rare and deliberate custom object:\n// let bomb = { toString : undefined, valueOf: function(o) { return \"function BOMBA!\"; }};\nexport const isFunction = (x: unknown): x is (...args: any[]) => any => {\n    // eslint-disable-next-line posthog-js/no-direct-function-check\n    return typeof x === 'function'\n}\n\nexport const isNativeFunction = (x: unknown): x is (...args: any[]) => any =>\n    isFunction(x) && x.toString().indexOf('[native code]') !== -1\n\n// When angular patches functions they pass the above `isNativeFunction` check (at least the MutationObserver)\nexport const isAngularZonePresent = (): boolean => {\n    return !!(window as any).Zone\n}\n\n// Underscore Addons\nexport const isObject = (x: unknown): x is Record<string, any> => {\n    // eslint-disable-next-line posthog-js/no-direct-object-check\n    return x === Object(x) && !isArray(x)\n}\nexport const isEmptyObject = (x: unknown) => {\n    if (isObject(x)) {\n        for (const key in x) {\n            if (hasOwnProperty.call(x, key)) {\n                return false\n            }\n        }\n        return true\n    }\n    return false\n}\nexport const isUndefined = (x: unknown): x is undefined => x === void 0\n\nexport const isString = (x: unknown): x is string => {\n    // eslint-disable-next-line posthog-js/no-direct-string-check\n    return toString.call(x) == '[object String]'\n}\n\nexport const isEmptyString = (x: unknown): boolean => isString(x) && x.trim().length === 0\n\nexport const isNull = (x: unknown): x is null => {\n    // eslint-disable-next-line posthog-js/no-direct-null-check\n    return x === null\n}\n\n/*\n    sometimes you want to check if something is null or undefined\n    that's what this is for\n */\nexport const isNullish = (x: unknown): x is null | undefined => isUndefined(x) || isNull(x)\n\nexport const isNumber = (x: unknown): x is number => {\n    // eslint-disable-next-line posthog-js/no-direct-number-check\n    return toString.call(x) == '[object Number]'\n}\nexport const isBoolean = (x: unknown): x is boolean => {\n    // eslint-disable-next-line posthog-js/no-direct-boolean-check\n    return toString.call(x) === '[object Boolean]'\n}\n\nexport const isDocument = (x: unknown): x is Document => {\n    // eslint-disable-next-line posthog-js/no-direct-document-check\n    return x instanceof Document\n}\n\nexport const isFormData = (x: unknown): x is FormData => {\n    // eslint-disable-next-line posthog-js/no-direct-form-data-check\n    return x instanceof FormData\n}\n\nexport const isFile = (x: unknown): x is File => {\n    // eslint-disable-next-line posthog-js/no-direct-file-check\n    return x instanceof File\n}\n\nexport const isKnownUnsafeEditableEvent = (x: unknown): x is KnownUnsafeEditableEvent => {\n    return includes(knownUnsafeEditableEvent as unknown as string[], x)\n}\n", "import Config from '../config'\nimport { isUndefined } from './type-utils'\nimport { assignableWindow, window } from './globals'\n\nexport type Logger = {\n    _log: (level: 'log' | 'warn' | 'error', ...args: any[]) => void\n    info: (...args: any[]) => void\n    warn: (...args: any[]) => void\n    error: (...args: any[]) => void\n    critical: (...args: any[]) => void\n    uninitializedWarning: (methodName: string) => void\n    createLogger: (prefix: string) => Logger\n}\n\nconst _createLogger = (prefix: string): Logger => {\n    const logger: Logger = {\n        _log: (level: 'log' | 'warn' | 'error', ...args: any[]) => {\n            if (\n                window &&\n                (Config.DEBUG || assignableWindow.POSTHOG_DEBUG) &&\n                !isUndefined(window.console) &&\n                window.console\n            ) {\n                const consoleLog =\n                    '__rrweb_original__' in window.console[level]\n                        ? (window.console[level] as any)['__rrweb_original__']\n                        : window.console[level]\n\n                // eslint-disable-next-line no-console\n                consoleLog(prefix, ...args)\n            }\n        },\n\n        info: (...args: any[]) => {\n            logger._log('log', ...args)\n        },\n\n        warn: (...args: any[]) => {\n            logger._log('warn', ...args)\n        },\n\n        error: (...args: any[]) => {\n            logger._log('error', ...args)\n        },\n\n        critical: (...args: any[]) => {\n            // Critical errors are always logged to the console\n            // eslint-disable-next-line no-console\n            console.error(prefix, ...args)\n        },\n\n        uninitializedWarning: (methodName: string) => {\n            logger.error(`You must initialize PostHog before calling ${methodName}`)\n        },\n\n        createLogger: (additionalPrefix: string) => _createLogger(`${prefix} ${additionalPrefix}`),\n    }\n    return logger\n}\n\nexport const logger = _createLogger('[PostHog.js]')\n\nexport const createLogger = logger.createLogger\n", "import type { PostHog } from '../posthog-core'\nimport { assignableWindow, document, PostHogExtensionKind } from '../utils/globals'\nimport { createLogger } from '../utils/logger'\n\nconst logger = createLogger('[ExternalScriptsLoader]')\n\nconst loadScript = (posthog: PostHog, url: string, callback: (error?: string | Event, event?: Event) => void) => {\n    if (posthog.config.disable_external_dependency_loading) {\n        logger.warn(`${url} was requested but loading of external scripts is disabled.`)\n        return callback('Loading of external scripts is disabled')\n    }\n\n    const addScript = () => {\n        if (!document) {\n            return callback('document not found')\n        }\n        let scriptTag: HTMLScriptElement | null = document.createElement('script')\n        scriptTag.type = 'text/javascript'\n        scriptTag.crossOrigin = 'anonymous'\n        scriptTag.src = url\n        scriptTag.onload = (event) => callback(undefined, event)\n        scriptTag.onerror = (error) => callback(error)\n\n        if (posthog.config.prepare_external_dependency_script) {\n            scriptTag = posthog.config.prepare_external_dependency_script(scriptTag)\n        }\n\n        if (!scriptTag) {\n            return callback('prepare_external_dependency_script returned null')\n        }\n\n        const scripts = document.querySelectorAll('body > script')\n        if (scripts.length > 0) {\n            scripts[0].parentNode?.insertBefore(scriptTag, scripts[0])\n        } else {\n            // In exceptional situations this call might load before the DOM is fully ready.\n            document.body.appendChild(scriptTag)\n        }\n    }\n\n    if (document?.body) {\n        addScript()\n    } else {\n        // Inlining this because we don't care about `passive: true` here\n        // and this saves us ~3% of the bundle size\n        // eslint-disable-next-line posthog-js/no-add-event-listener\n        document?.addEventListener('DOMContentLoaded', addScript)\n    }\n}\n\nassignableWindow.__PosthogExtensions__ = assignableWindow.__PosthogExtensions__ || {}\nassignableWindow.__PosthogExtensions__.loadExternalDependency = (\n    posthog: PostHog,\n    kind: PostHogExtensionKind,\n    callback: (error?: string | Event, event?: Event) => void\n): void => {\n    let scriptUrlToLoad = `/static/${kind}.js` + `?v=${posthog.version}`\n\n    if (kind === 'remote-config') {\n        scriptUrlToLoad = `/array/${posthog.config.token}/config.js`\n    }\n\n    if (kind === 'toolbar') {\n        // toolbar.js is served from the PostHog CDN, this has a TTL of 24 hours.\n        // the toolbar asset includes a rotating \"token\" that is valid for 5 minutes.\n        const fiveMinutesInMillis = 5 * 60 * 1000\n        // this ensures that we bust the cache periodically\n        const timestampToNearestFiveMinutes = Math.floor(Date.now() / fiveMinutesInMillis) * fiveMinutesInMillis\n\n        scriptUrlToLoad = `${scriptUrlToLoad}&t=${timestampToNearestFiveMinutes}`\n    }\n    const url = posthog.requestRouter.endpointFor('assets', scriptUrlToLoad)\n\n    loadScript(posthog, url, callback)\n}\n\nassignableWindow.__PosthogExtensions__.loadSiteApp = (\n    posthog: PostHog,\n    url: string,\n    callback: (error?: string | Event, event?: Event) => void\n): void => {\n    const scriptUrl = posthog.requestRouter.endpointFor('api', url)\n\n    loadScript(posthog, scriptUrl, callback)\n}\n", "/*\n * Constants\n */\n\n/* PROPERTY KEYS */\n\n// This key is deprecated, but we want to check for it to see whether aliasing is allowed.\nexport const PEOPLE_DISTINCT_ID_KEY = '$people_distinct_id'\nexport const DISTINCT_ID = 'distinct_id'\nexport const ALIAS_ID_KEY = '__alias'\nexport const CAMPAIGN_IDS_KEY = '__cmpns'\nexport const EVENT_TIMERS_KEY = '__timers'\nexport const AUTOCAPTURE_DISABLED_SERVER_SIDE = '$autocapture_disabled_server_side'\nexport const HEATMAPS_ENABLED_SERVER_SIDE = '$heatmaps_enabled_server_side'\nexport const EXCEPTION_CAPTURE_ENABLED_SERVER_SIDE = '$exception_capture_enabled_server_side'\nexport const WEB_VITALS_ENABLED_SERVER_SIDE = '$web_vitals_enabled_server_side'\nexport const DEAD_CLICKS_ENABLED_SERVER_SIDE = '$dead_clicks_enabled_server_side'\nexport const WEB_VITALS_ALLOWED_METRICS = '$web_vitals_allowed_metrics'\nexport const SESSION_RECORDING_ENABLED_SERVER_SIDE = '$session_recording_enabled_server_side'\nexport const CONSOLE_LOG_RECORDING_ENABLED_SERVER_SIDE = '$console_log_recording_enabled_server_side'\nexport const SESSION_RECORDING_NETWORK_PAYLOAD_CAPTURE = '$session_recording_network_payload_capture'\nexport const SESSION_RECORDING_CANVAS_RECORDING = '$session_recording_canvas_recording'\nexport const SESSION_RECORDING_SAMPLE_RATE = '$replay_sample_rate'\nexport const SESSION_RECORDING_MINIMUM_DURATION = '$replay_minimum_duration'\nexport const SESSION_RECORDING_SCRIPT_CONFIG = '$replay_script_config'\nexport const SESSION_ID = '$sesid'\nexport const SESSION_RECORDING_IS_SAMPLED = '$session_is_sampled'\nexport const SESSION_RECORDING_URL_TRIGGER_ACTIVATED_SESSION = '$session_recording_url_trigger_activated_session'\nexport const SESSION_RECORDING_URL_TRIGGER_STATUS = '$session_recording_url_trigger_status'\nexport const SESSION_RECORDING_EVENT_TRIGGER_ACTIVATED_SESSION = '$session_recording_event_trigger_activated_session'\nexport const SESSION_RECORDING_EVENT_TRIGGER_STATUS = '$session_recording_event_trigger_status'\nexport const ENABLED_FEATURE_FLAGS = '$enabled_feature_flags'\nexport const PERSISTENCE_EARLY_ACCESS_FEATURES = '$early_access_features'\nexport const STORED_PERSON_PROPERTIES_KEY = '$stored_person_properties'\nexport const STORED_GROUP_PROPERTIES_KEY = '$stored_group_properties'\nexport const SURVEYS = '$surveys'\nexport const SURVEYS_ACTIVATED = '$surveys_activated'\nexport const FLAG_CALL_REPORTED = '$flag_call_reported'\nexport const USER_STATE = '$user_state'\nexport const CLIENT_SESSION_PROPS = '$client_session_props'\nexport const CAPTURE_RATE_LIMIT = '$capture_rate_limit'\n\n/** @deprecated Delete this when INITIAL_PERSON_INFO has been around for long enough to ignore backwards compat */\nexport const INITIAL_CAMPAIGN_PARAMS = '$initial_campaign_params'\n/** @deprecated Delete this when INITIAL_PERSON_INFO has been around for long enough to ignore backwards compat */\nexport const INITIAL_REFERRER_INFO = '$initial_referrer_info'\nexport const INITIAL_PERSON_INFO = '$initial_person_info'\nexport const ENABLE_PERSON_PROCESSING = '$epp'\nexport const TOOLBAR_ID = '__POSTHOG_TOOLBAR__'\nexport const TOOLBAR_CONTAINER_CLASS = 'toolbar-global-fade-container'\n\n/**\n * PREVIEW - MAY CHANGE WITHOUT WARNING - DO NOT USE IN PRODUCTION\n * Sentinel value for distinct id, device id, session id. Signals that the server should generate the value\n * */\nexport const COOKIELESS_SENTINEL_VALUE = '$posthog_cookieless'\nexport const COOKIELESS_MODE_FLAG_PROPERTY = '$cookieless_mode'\n\nexport const WEB_EXPERIMENTS = '$web_experiments'\n\n// These are properties that are reserved and will not be automatically included in events\nexport const PERSISTENCE_RESERVED_PROPERTIES = [\n    PEOPLE_DISTINCT_ID_KEY,\n    ALIAS_ID_KEY,\n    CAMPAIGN_IDS_KEY,\n    EVENT_TIMERS_KEY,\n    SESSION_RECORDING_ENABLED_SERVER_SIDE,\n    HEATMAPS_ENABLED_SERVER_SIDE,\n    SESSION_ID,\n    ENABLED_FEATURE_FLAGS,\n    USER_STATE,\n    PERSISTENCE_EARLY_ACCESS_FEATURES,\n    STORED_GROUP_PROPERTIES_KEY,\n    STORED_PERSON_PROPERTIES_KEY,\n    SURVEYS,\n    FLAG_CALL_REPORTED,\n    CLIENT_SESSION_PROPS,\n    CAPTURE_RATE_LIMIT,\n    INITIAL_CAMPAIGN_PARAMS,\n    INITIAL_REFERRER_INFO,\n    ENABLE_PERSON_PROCESSING,\n]\n", "import { entries, extend } from './utils'\nimport { PostHog } from './posthog-core'\nimport {\n    DecideResponse,\n    FeatureFlagsCallback,\n    EarlyAccessFeatureCallback,\n    EarlyAccessFeatureResponse,\n    Properties,\n    JsonType,\n    Compression,\n    EarlyAccessFeature,\n} from './types'\nimport { PostHogPersistence } from './posthog-persistence'\n\nimport {\n    PERSISTENCE_EARLY_ACCESS_FEATURES,\n    ENABLED_FEATURE_FLAGS,\n    STORED_GROUP_PROPERTIES_KEY,\n    STORED_PERSON_PROPERTIES_KEY,\n    FLAG_CALL_REPORTED,\n} from './constants'\n\nimport { isArray } from './utils/type-utils'\nimport { createLogger } from './utils/logger'\n\nconst logger = createLogger('[FeatureFlags]')\n\nconst PERSISTENCE_ACTIVE_FEATURE_FLAGS = '$active_feature_flags'\nconst PERSISTENCE_OVERRIDE_FEATURE_FLAGS = '$override_feature_flags'\nconst PERSISTENCE_FEATURE_FLAG_PAYLOADS = '$feature_flag_payloads'\nconst PERSISTENCE_OVERRIDE_FEATURE_FLAG_PAYLOADS = '$override_feature_flag_payloads'\n\nexport const filterActiveFeatureFlags = (featureFlags?: Record<string, string | boolean>) => {\n    const activeFeatureFlags: Record<string, string | boolean> = {}\n    for (const [key, value] of entries(featureFlags || {})) {\n        if (value) {\n            activeFeatureFlags[key] = value\n        }\n    }\n    return activeFeatureFlags\n}\n\nexport const parseFeatureFlagDecideResponse = (\n    response: Partial<DecideResponse>,\n    persistence: PostHogPersistence,\n    currentFlags: Record<string, string | boolean> = {},\n    currentFlagPayloads: Record<string, JsonType> = {}\n) => {\n    const flags = response['featureFlags']\n    const flagPayloads = response['featureFlagPayloads']\n    if (!flags) {\n        return\n    }\n    // using the v1 api\n    if (isArray(flags)) {\n        const $enabled_feature_flags: Record<string, boolean> = {}\n        if (flags) {\n            for (let i = 0; i < flags.length; i++) {\n                $enabled_feature_flags[flags[i]] = true\n            }\n        }\n        persistence &&\n            persistence.register({\n                [PERSISTENCE_ACTIVE_FEATURE_FLAGS]: flags,\n                [ENABLED_FEATURE_FLAGS]: $enabled_feature_flags,\n            })\n        return\n    }\n\n    // using the v2+ api\n    let newFeatureFlags = flags\n    let newFeatureFlagPayloads = flagPayloads\n    if (response.errorsWhileComputingFlags) {\n        // if not all flags were computed, we upsert flags instead of replacing them\n        newFeatureFlags = { ...currentFlags, ...newFeatureFlags }\n        newFeatureFlagPayloads = { ...currentFlagPayloads, ...newFeatureFlagPayloads }\n    }\n    persistence &&\n        persistence.register({\n            [PERSISTENCE_ACTIVE_FEATURE_FLAGS]: Object.keys(filterActiveFeatureFlags(newFeatureFlags)),\n            [ENABLED_FEATURE_FLAGS]: newFeatureFlags || {},\n            [PERSISTENCE_FEATURE_FLAG_PAYLOADS]: newFeatureFlagPayloads || {},\n        })\n}\n\ntype FeatureFlagOverrides = {\n    [flagName: string]: string | boolean\n}\n\ntype FeatureFlagPayloadOverrides = {\n    [flagName: string]: JsonType\n}\n\ntype FeatureFlagOverrideOptions = {\n    flags?: boolean | string[] | FeatureFlagOverrides\n    payloads?: FeatureFlagPayloadOverrides\n    suppressWarning?: boolean\n}\n\ntype OverrideFeatureFlagsOptions =\n    | boolean // clear all overrides\n    | string[] // enable list of flags\n    | FeatureFlagOverrides // set variants directly\n    | FeatureFlagOverrideOptions\n\nexport class PostHogFeatureFlags {\n    _override_warning: boolean = false\n    featureFlagEventHandlers: FeatureFlagsCallback[]\n    $anon_distinct_id: string | undefined\n    private _hasLoadedFlags: boolean = false\n    private _requestInFlight: boolean = false\n    private _reloadingDisabled: boolean = false\n    private _additionalReloadRequested: boolean = false\n    private _reloadDebouncer?: any\n    private _decideCalled: boolean = false\n    private _flagsLoadedFromRemote: boolean = false\n\n    constructor(private instance: PostHog) {\n        this.featureFlagEventHandlers = []\n    }\n\n    decide(): void {\n        if (this.instance.config.__preview_remote_config) {\n            // If remote config is enabled we don't call decide and we mark it as called so that we don't simulate it\n            this._decideCalled = true\n            return\n        }\n\n        // TRICKY: We want to disable flags if we don't have a queued reload, and one of the settings exist for disabling on first load\n        const disableFlags =\n            !this._reloadDebouncer &&\n            (this.instance.config.advanced_disable_feature_flags ||\n                this.instance.config.advanced_disable_feature_flags_on_first_load)\n\n        this._callDecideEndpoint({\n            disableFlags,\n        })\n    }\n\n    get hasLoadedFlags(): boolean {\n        return this._hasLoadedFlags\n    }\n\n    getFlags(): string[] {\n        return Object.keys(this.getFlagVariants())\n    }\n\n    getFlagVariants(): Record<string, string | boolean> {\n        const enabledFlags = this.instance.get_property(ENABLED_FEATURE_FLAGS)\n        const overriddenFlags = this.instance.get_property(PERSISTENCE_OVERRIDE_FEATURE_FLAGS)\n        if (!overriddenFlags) {\n            return enabledFlags || {}\n        }\n\n        const finalFlags = extend({}, enabledFlags)\n        const overriddenKeys = Object.keys(overriddenFlags)\n        for (let i = 0; i < overriddenKeys.length; i++) {\n            finalFlags[overriddenKeys[i]] = overriddenFlags[overriddenKeys[i]]\n        }\n        if (!this._override_warning) {\n            logger.warn(' Overriding feature flags!', {\n                enabledFlags,\n                overriddenFlags,\n                finalFlags,\n            })\n            this._override_warning = true\n        }\n        return finalFlags\n    }\n\n    getFlagPayloads(): Record<string, JsonType> {\n        const flagPayloads = this.instance.get_property(PERSISTENCE_FEATURE_FLAG_PAYLOADS)\n        const overriddenPayloads = this.instance.get_property(PERSISTENCE_OVERRIDE_FEATURE_FLAG_PAYLOADS)\n\n        if (!overriddenPayloads) {\n            return flagPayloads || {}\n        }\n\n        const finalPayloads = extend({}, flagPayloads || {})\n        const overriddenKeys = Object.keys(overriddenPayloads)\n        for (let i = 0; i < overriddenKeys.length; i++) {\n            finalPayloads[overriddenKeys[i]] = overriddenPayloads[overriddenKeys[i]]\n        }\n\n        if (!this._override_warning) {\n            logger.warn(' Overriding feature flag payloads!', {\n                flagPayloads,\n                overriddenPayloads,\n                finalPayloads,\n            })\n            this._override_warning = true\n        }\n        return finalPayloads\n    }\n\n    /**\n     * Reloads feature flags asynchronously.\n     *\n     * Constraints:\n     *\n     * 1. Avoid parallel requests\n     * 2. Delay a few milliseconds after each reloadFeatureFlags call to batch subsequent changes together\n     */\n    reloadFeatureFlags(): void {\n        if (this._reloadingDisabled || this.instance.config.advanced_disable_feature_flags) {\n            // If reloading has been explicitly disabled then we don't want to do anything\n            // Or if feature flags are disabled\n            return\n        }\n\n        if (this._reloadDebouncer) {\n            // If we're already in a debounce then we don't want to do anything\n            return\n        }\n\n        // Debounce multiple calls on the same tick\n        this._reloadDebouncer = setTimeout(() => {\n            this._callDecideEndpoint()\n        }, 5)\n    }\n\n    private clearDebouncer(): void {\n        clearTimeout(this._reloadDebouncer)\n        this._reloadDebouncer = undefined\n    }\n\n    ensureFlagsLoaded(): void {\n        if (this._hasLoadedFlags || this._requestInFlight || this._reloadDebouncer) {\n            // If we are or have already loaded the flags then we don't want to do anything\n            return\n        }\n\n        this.reloadFeatureFlags()\n    }\n\n    setAnonymousDistinctId(anon_distinct_id: string): void {\n        this.$anon_distinct_id = anon_distinct_id\n    }\n\n    setReloadingPaused(isPaused: boolean): void {\n        this._reloadingDisabled = isPaused\n    }\n\n    /**\n     * NOTE: This is used both for flags and remote config. Once the RemoteConfig is fully released this will essentially only\n     * be for flags and can eventually be replaced with the new flags endpoint\n     */\n    _callDecideEndpoint(options?: { disableFlags?: boolean }): void {\n        // Ensure we don't have double queued decide requests\n        this.clearDebouncer()\n        if (this.instance.config.advanced_disable_decide) {\n            // The way this is documented is essentially used to refuse to ever call the decide endpoint.\n            return\n        }\n        if (this._requestInFlight) {\n            this._additionalReloadRequested = true\n            return\n        }\n        const token = this.instance.config.token\n        const data: Record<string, any> = {\n            token: token,\n            distinct_id: this.instance.get_distinct_id(),\n            groups: this.instance.getGroups(),\n            $anon_distinct_id: this.$anon_distinct_id,\n            person_properties: this.instance.get_property(STORED_PERSON_PROPERTIES_KEY),\n            group_properties: this.instance.get_property(STORED_GROUP_PROPERTIES_KEY),\n        }\n\n        if (options?.disableFlags || this.instance.config.advanced_disable_feature_flags) {\n            data.disable_flags = true\n        }\n\n        this._requestInFlight = true\n        this.instance._send_request({\n            method: 'POST',\n            url: this.instance.requestRouter.endpointFor('api', '/decide/?v=3'),\n            data,\n            compression: this.instance.config.disable_compression ? undefined : Compression.Base64,\n            timeout: this.instance.config.feature_flag_request_timeout_ms,\n            callback: (response) => {\n                let errorsLoading = true\n\n                if (response.statusCode === 200) {\n                    // successful request\n                    // reset anon_distinct_id after at least a single request with it\n                    // makes it through\n                    this.$anon_distinct_id = undefined\n                    errorsLoading = false\n                }\n\n                this._requestInFlight = false\n\n                if (!this._decideCalled) {\n                    this._decideCalled = true\n                    this.instance._onRemoteConfig(response.json ?? {})\n                }\n\n                if (data.disable_flags) {\n                    // If flags are disabled then there is no need to call decide again (flags are the only thing that may change)\n                    return\n                }\n\n                this._flagsLoadedFromRemote = !errorsLoading\n                this.receivedFeatureFlags(response.json ?? {}, errorsLoading)\n\n                if (this._additionalReloadRequested) {\n                    this._additionalReloadRequested = false\n                    this._callDecideEndpoint()\n                }\n            },\n        })\n    }\n\n    /*\n     * Get feature flag's value for user.\n     *\n     * ### Usage:\n     *\n     *     if(posthog.getFeatureFlag('my-flag') === 'some-variant') { // do something }\n     *\n     * @param {Object|String} key Key of the feature flag.\n     * @param {Object|String} options (optional) If {send_event: false}, we won't send an $feature_flag_call event to PostHog.\n     */\n    getFeatureFlag(key: string, options: { send_event?: boolean } = {}): boolean | string | undefined {\n        if (!this._hasLoadedFlags && !(this.getFlags() && this.getFlags().length > 0)) {\n            logger.warn('getFeatureFlag for key \"' + key + '\" failed. Feature flags didn\\'t load in time.')\n            return undefined\n        }\n        const flagValue = this.getFlagVariants()[key]\n        const flagReportValue = `${flagValue}`\n        const flagCallReported: Record<string, string[]> = this.instance.get_property(FLAG_CALL_REPORTED) || {}\n\n        if (options.send_event || !('send_event' in options)) {\n            if (!(key in flagCallReported) || !flagCallReported[key].includes(flagReportValue)) {\n                if (isArray(flagCallReported[key])) {\n                    flagCallReported[key].push(flagReportValue)\n                } else {\n                    flagCallReported[key] = [flagReportValue]\n                }\n                this.instance.persistence?.register({ [FLAG_CALL_REPORTED]: flagCallReported })\n\n                this.instance.capture('$feature_flag_called', {\n                    $feature_flag: key,\n                    $feature_flag_response: flagValue,\n                    $feature_flag_payload: this.getFeatureFlagPayload(key) || null,\n                    $feature_flag_bootstrapped_response: this.instance.config.bootstrap?.featureFlags?.[key] || null,\n                    $feature_flag_bootstrapped_payload:\n                        this.instance.config.bootstrap?.featureFlagPayloads?.[key] || null,\n                    // If we haven't yet received a response from the /decide endpoint, we must have used the bootstrapped value\n                    $used_bootstrap_value: !this._flagsLoadedFromRemote,\n                })\n            }\n        }\n        return flagValue\n    }\n\n    getFeatureFlagPayload(key: string): JsonType {\n        const payloads = this.getFlagPayloads()\n        return payloads[key]\n    }\n\n    /*\n     * See if feature flag is enabled for user.\n     *\n     * ### Usage:\n     *\n     *     if(posthog.isFeatureEnabled('beta-feature')) { // do something }\n     *\n     * @param {Object|String} key Key of the feature flag.\n     * @param {Object|String} options (optional) If {send_event: false}, we won't send an $feature_flag_call event to PostHog.\n     */\n    isFeatureEnabled(key: string, options: { send_event?: boolean } = {}): boolean | undefined {\n        if (!this._hasLoadedFlags && !(this.getFlags() && this.getFlags().length > 0)) {\n            logger.warn('isFeatureEnabled for key \"' + key + '\" failed. Feature flags didn\\'t load in time.')\n            return undefined\n        }\n        return !!this.getFeatureFlag(key, options)\n    }\n\n    addFeatureFlagsHandler(handler: FeatureFlagsCallback): void {\n        this.featureFlagEventHandlers.push(handler)\n    }\n\n    removeFeatureFlagsHandler(handler: FeatureFlagsCallback): void {\n        this.featureFlagEventHandlers = this.featureFlagEventHandlers.filter((h) => h !== handler)\n    }\n\n    receivedFeatureFlags(response: Partial<DecideResponse>, errorsLoading?: boolean): void {\n        if (!this.instance.persistence) {\n            return\n        }\n        this._hasLoadedFlags = true\n\n        const currentFlags = this.getFlagVariants()\n        const currentFlagPayloads = this.getFlagPayloads()\n        parseFeatureFlagDecideResponse(response, this.instance.persistence, currentFlags, currentFlagPayloads)\n        this._fireFeatureFlagsCallbacks(errorsLoading)\n    }\n\n    /**\n     * @deprecated Use overrideFeatureFlags instead. This will be removed in a future version.\n     */\n    override(flags: boolean | string[] | Record<string, string | boolean>, suppressWarning: boolean = false): void {\n        logger.warn('override is deprecated. Please use overrideFeatureFlags instead.')\n        this.overrideFeatureFlags({\n            flags: flags,\n            suppressWarning: suppressWarning,\n        })\n    }\n\n    /**\n     * Override feature flags on the client-side. Useful for setting non-persistent feature flags,\n     * or for testing/debugging feature flags in the PostHog app.\n     *\n     * ### Usage:\n     *\n     *     - posthog.feature_flags.overrideFeatureFlags(false) // clear all overrides\n     *     - posthog.feature_flags.overrideFeatureFlags(['beta-feature']) // enable flags\n     *     - posthog.feature_flags.overrideFeatureFlags({'beta-feature': 'variant'}) // set variants\n     *     - posthog.feature_flags.overrideFeatureFlags({ // set both flags and payloads\n     *         flags: {'beta-feature': 'variant'},\n     *         payloads: { 'beta-feature': { someData: true } }\n     *       })\n     *     - posthog.feature_flags.overrideFeatureFlags({ // only override payloads\n     *         payloads: { 'beta-feature': { someData: true } }\n     *       })\n     */\n    overrideFeatureFlags(overrideOptions: OverrideFeatureFlagsOptions): void {\n        if (!this.instance.__loaded || !this.instance.persistence) {\n            return logger.uninitializedWarning('posthog.feature_flags.overrideFeatureFlags')\n        }\n\n        // Clear all overrides if false, lets you do something like posthog.feature_flags.overrideFeatureFlags(false)\n        if (overrideOptions === false) {\n            this.instance.persistence.unregister(PERSISTENCE_OVERRIDE_FEATURE_FLAGS)\n            this.instance.persistence.unregister(PERSISTENCE_OVERRIDE_FEATURE_FLAG_PAYLOADS)\n            this._fireFeatureFlagsCallbacks()\n            return\n        }\n\n        if (\n            overrideOptions &&\n            typeof overrideOptions === 'object' &&\n            ('flags' in overrideOptions || 'payloads' in overrideOptions)\n        ) {\n            const options = overrideOptions\n            this._override_warning = Boolean(options.suppressWarning ?? false)\n\n            // Handle flags if provided, lets you do something like posthog.feature_flags.overrideFeatureFlags({flags: ['beta-feature']})\n            if ('flags' in options) {\n                if (options.flags === false) {\n                    this.instance.persistence.unregister(PERSISTENCE_OVERRIDE_FEATURE_FLAGS)\n                } else if (options.flags) {\n                    if (isArray(options.flags)) {\n                        const flagsObj: Record<string, string | boolean> = {}\n                        for (let i = 0; i < options.flags.length; i++) {\n                            flagsObj[options.flags[i]] = true\n                        }\n                        this.instance.persistence.register({ [PERSISTENCE_OVERRIDE_FEATURE_FLAGS]: flagsObj })\n                    } else {\n                        this.instance.persistence.register({ [PERSISTENCE_OVERRIDE_FEATURE_FLAGS]: options.flags })\n                    }\n                }\n            }\n\n            // Handle payloads independently, lets you do something like posthog.feature_flags.overrideFeatureFlags({payloads: { 'beta-feature': { someData: true } }})\n            if ('payloads' in options) {\n                if (options.payloads === false) {\n                    this.instance.persistence.unregister(PERSISTENCE_OVERRIDE_FEATURE_FLAG_PAYLOADS)\n                } else if (options.payloads) {\n                    this.instance.persistence.register({\n                        [PERSISTENCE_OVERRIDE_FEATURE_FLAG_PAYLOADS]: options.payloads,\n                    })\n                }\n            }\n\n            this._fireFeatureFlagsCallbacks()\n            return\n        }\n\n        this._fireFeatureFlagsCallbacks()\n    }\n\n    /*\n     * Register an event listener that runs when feature flags become available or when they change.\n     * If there are flags, the listener is called immediately in addition to being called on future changes.\n     *\n     * ### Usage:\n     *\n     *     posthog.onFeatureFlags(function(featureFlags) { // do something })\n     *\n     * @param {Function} [callback] The callback function will be called once the feature flags are ready or when they are updated.\n     *                              It'll return a list of feature flags enabled for the user.\n     * @returns {Function} A function that can be called to unsubscribe the listener. Used by useEffect when the component unmounts.\n     */\n    onFeatureFlags(callback: FeatureFlagsCallback): () => void {\n        this.addFeatureFlagsHandler(callback)\n        if (this._hasLoadedFlags) {\n            const { flags, flagVariants } = this._prepareFeatureFlagsForCallbacks()\n            callback(flags, flagVariants)\n        }\n        return () => this.removeFeatureFlagsHandler(callback)\n    }\n\n    updateEarlyAccessFeatureEnrollment(key: string, isEnrolled: boolean): void {\n        const existing_early_access_features: EarlyAccessFeature[] =\n            this.instance.get_property(PERSISTENCE_EARLY_ACCESS_FEATURES) || []\n        const feature = existing_early_access_features.find((f) => f.flagKey === key)\n\n        const enrollmentPersonProp = {\n            [`$feature_enrollment/${key}`]: isEnrolled,\n        }\n\n        const properties: Properties = {\n            $feature_flag: key,\n            $feature_enrollment: isEnrolled,\n            $set: enrollmentPersonProp,\n        }\n\n        if (feature) {\n            properties['$early_access_feature_name'] = feature.name\n        }\n\n        this.instance.capture('$feature_enrollment_update', properties)\n        this.setPersonPropertiesForFlags(enrollmentPersonProp, false)\n\n        const newFlags = { ...this.getFlagVariants(), [key]: isEnrolled }\n        this.instance.persistence?.register({\n            [PERSISTENCE_ACTIVE_FEATURE_FLAGS]: Object.keys(filterActiveFeatureFlags(newFlags)),\n            [ENABLED_FEATURE_FLAGS]: newFlags,\n        })\n        this._fireFeatureFlagsCallbacks()\n    }\n\n    getEarlyAccessFeatures(callback: EarlyAccessFeatureCallback, force_reload = false): void {\n        const existing_early_access_features = this.instance.get_property(PERSISTENCE_EARLY_ACCESS_FEATURES)\n\n        if (!existing_early_access_features || force_reload) {\n            this.instance._send_request({\n                url: this.instance.requestRouter.endpointFor(\n                    'api',\n                    `/api/early_access_features/?token=${this.instance.config.token}`\n                ),\n                method: 'GET',\n                callback: (response) => {\n                    if (!response.json) {\n                        return\n                    }\n                    const earlyAccessFeatures = (response.json as EarlyAccessFeatureResponse).earlyAccessFeatures\n                    this.instance.persistence?.register({ [PERSISTENCE_EARLY_ACCESS_FEATURES]: earlyAccessFeatures })\n                    return callback(earlyAccessFeatures)\n                },\n            })\n        } else {\n            return callback(existing_early_access_features)\n        }\n    }\n\n    _prepareFeatureFlagsForCallbacks(): { flags: string[]; flagVariants: Record<string, string | boolean> } {\n        const flags = this.getFlags()\n        const flagVariants = this.getFlagVariants()\n\n        // Return truthy\n        const truthyFlags = flags.filter((flag) => flagVariants[flag])\n        const truthyFlagVariants = Object.keys(flagVariants)\n            .filter((variantKey) => flagVariants[variantKey])\n            .reduce((res: Record<string, string | boolean>, key) => {\n                res[key] = flagVariants[key]\n                return res\n            }, {})\n\n        return {\n            flags: truthyFlags,\n            flagVariants: truthyFlagVariants,\n        }\n    }\n\n    _fireFeatureFlagsCallbacks(errorsLoading?: boolean): void {\n        const { flags, flagVariants } = this._prepareFeatureFlagsForCallbacks()\n        this.featureFlagEventHandlers.forEach((handler) => handler(flags, flagVariants, { errorsLoading }))\n    }\n\n    /**\n     * Set override person properties for feature flags.\n     * This is used when dealing with new persons / where you don't want to wait for ingestion\n     * to update user properties.\n     */\n    setPersonPropertiesForFlags(properties: Properties, reloadFeatureFlags = true): void {\n        // Get persisted person properties\n        const existingProperties = this.instance.get_property(STORED_PERSON_PROPERTIES_KEY) || {}\n\n        this.instance.register({\n            [STORED_PERSON_PROPERTIES_KEY]: {\n                ...existingProperties,\n                ...properties,\n            },\n        })\n\n        if (reloadFeatureFlags) {\n            this.instance.reloadFeatureFlags()\n        }\n    }\n\n    resetPersonPropertiesForFlags(): void {\n        this.instance.unregister(STORED_PERSON_PROPERTIES_KEY)\n    }\n\n    /**\n     * Set override group properties for feature flags.\n     * This is used when dealing with new groups / where you don't want to wait for ingestion\n     * to update properties.\n     * Takes in an object, the key of which is the group type.\n     * For example:\n     *     setGroupPropertiesForFlags({'organization': { name: 'CYZ', employees: '11' } })\n     */\n    setGroupPropertiesForFlags(properties: { [type: string]: Properties }, reloadFeatureFlags = true): void {\n        // Get persisted group properties\n        const existingProperties = this.instance.get_property(STORED_GROUP_PROPERTIES_KEY) || {}\n\n        if (Object.keys(existingProperties).length !== 0) {\n            Object.keys(existingProperties).forEach((groupType) => {\n                existingProperties[groupType] = {\n                    ...existingProperties[groupType],\n                    ...properties[groupType],\n                }\n                delete properties[groupType]\n            })\n        }\n\n        this.instance.register({\n            [STORED_GROUP_PROPERTIES_KEY]: {\n                ...existingProperties,\n                ...properties,\n            },\n        })\n\n        if (reloadFeatureFlags) {\n            this.instance.reloadFeatureFlags()\n        }\n    }\n\n    resetGroupPropertiesForFlags(group_type?: string): void {\n        if (group_type) {\n            const existingProperties = this.instance.get_property(STORED_GROUP_PROPERTIES_KEY) || {}\n            this.instance.register({\n                [STORED_GROUP_PROPERTIES_KEY]: { ...existingProperties, [group_type]: {} },\n            })\n        } else {\n            this.instance.unregister(STORED_GROUP_PROPERTIES_KEY)\n        }\n    }\n}\n", "/**\n * uuidv7: An experimental implementation of the proposed UUID Version 7\n *\n * @license Apache-2.0\n * @copyright 2021-2023 LiosK\n * @packageDocumentation\n *\n * from https://github.com/LiosK/uuidv7/blob/e501462ea3d23241de13192ceae726956f9b3b7d/src/index.ts\n */\n\n// polyfill for IE11\nimport { window } from './utils/globals'\n\nimport { isNumber, isUndefined } from './utils/type-utils'\n\nif (!Math.trunc) {\n    Math.trunc = function (v) {\n        return v < 0 ? Math.ceil(v) : Math.floor(v)\n    }\n}\n\n// polyfill for IE11\nif (!Number.isInteger) {\n    Number.isInteger = function (value) {\n        return isNumber(value) && isFinite(value) && Math.floor(value) === value\n    }\n}\n\nconst DIGITS = '0123456789abcdef'\n\n/** Represents a UUID as a 16-byte byte array. */\nexport class UUID {\n    /** @param bytes - The 16-byte byte array representation. */\n    constructor(readonly bytes: Readonly<Uint8Array>) {\n        if (bytes.length !== 16) {\n            throw new TypeError('not 128-bit length')\n        }\n    }\n\n    /**\n     * Builds a byte array from UUIDv7 field values.\n     *\n     * @param unixTsMs - A 48-bit `unix_ts_ms` field value.\n     * @param randA - A 12-bit `rand_a` field value.\n     * @param randBHi - The higher 30 bits of 62-bit `rand_b` field value.\n     * @param randBLo - The lower 32 bits of 62-bit `rand_b` field value.\n     */\n    static fromFieldsV7(unixTsMs: number, randA: number, randBHi: number, randBLo: number): UUID {\n        if (\n            !Number.isInteger(unixTsMs) ||\n            !Number.isInteger(randA) ||\n            !Number.isInteger(randBHi) ||\n            !Number.isInteger(randBLo) ||\n            unixTsMs < 0 ||\n            randA < 0 ||\n            randBHi < 0 ||\n            randBLo < 0 ||\n            unixTsMs > 0xffff_ffff_ffff ||\n            randA > 0xfff ||\n            randBHi > 0x3fff_ffff ||\n            randBLo > 0xffff_ffff\n        ) {\n            throw new RangeError('invalid field value')\n        }\n\n        const bytes = new Uint8Array(16)\n        bytes[0] = unixTsMs / 2 ** 40\n        bytes[1] = unixTsMs / 2 ** 32\n        bytes[2] = unixTsMs / 2 ** 24\n        bytes[3] = unixTsMs / 2 ** 16\n        bytes[4] = unixTsMs / 2 ** 8\n        bytes[5] = unixTsMs\n        bytes[6] = 0x70 | (randA >>> 8)\n        bytes[7] = randA\n        bytes[8] = 0x80 | (randBHi >>> 24)\n        bytes[9] = randBHi >>> 16\n        bytes[10] = randBHi >>> 8\n        bytes[11] = randBHi\n        bytes[12] = randBLo >>> 24\n        bytes[13] = randBLo >>> 16\n        bytes[14] = randBLo >>> 8\n        bytes[15] = randBLo\n        return new UUID(bytes)\n    }\n\n    /** @returns The 8-4-4-4-12 canonical hexadecimal string representation. */\n    toString(): string {\n        let text = ''\n        for (let i = 0; i < this.bytes.length; i++) {\n            text = text + DIGITS.charAt(this.bytes[i] >>> 4) + DIGITS.charAt(this.bytes[i] & 0xf)\n            if (i === 3 || i === 5 || i === 7 || i === 9) {\n                text += '-'\n            }\n        }\n\n        if (text.length !== 36) {\n            // We saw one customer whose bundling code was mangling the UUID generation\n            // rather than accept a bad UUID, we throw an error here.\n            throw new Error('Invalid UUIDv7 was generated')\n        }\n        return text\n    }\n\n    /** Creates an object from `this`. */\n    clone(): UUID {\n        return new UUID(this.bytes.slice(0))\n    }\n\n    /** Returns true if `this` is equivalent to `other`. */\n    equals(other: UUID): boolean {\n        return this.compareTo(other) === 0\n    }\n\n    /**\n     * Returns a negative integer, zero, or positive integer if `this` is less\n     * than, equal to, or greater than `other`, respectively.\n     */\n    compareTo(other: UUID): number {\n        for (let i = 0; i < 16; i++) {\n            const diff = this.bytes[i] - other.bytes[i]\n            if (diff !== 0) {\n                return Math.sign(diff)\n            }\n        }\n        return 0\n    }\n}\n\n/** Encapsulates the monotonic counter state. */\nclass V7Generator {\n    private timestamp = 0\n    private counter = 0\n    private readonly random = new DefaultRandom()\n\n    /**\n     * Generates a new UUIDv7 object from the current timestamp, or resets the\n     * generator upon significant timestamp rollback.\n     *\n     * This method returns monotonically increasing UUIDs unless the up-to-date\n     * timestamp is significantly (by ten seconds or more) smaller than the one\n     * embedded in the immediately preceding UUID. If such a significant clock\n     * rollback is detected, this method resets the generator and returns a new\n     * UUID based on the current timestamp.\n     */\n    generate(): UUID {\n        const value = this.generateOrAbort()\n        if (!isUndefined(value)) {\n            return value\n        } else {\n            // reset state and resume\n            this.timestamp = 0\n            const valueAfterReset = this.generateOrAbort()\n            if (isUndefined(valueAfterReset)) {\n                throw new Error('Could not generate UUID after timestamp reset')\n            }\n            return valueAfterReset\n        }\n    }\n\n    /**\n     * Generates a new UUIDv7 object from the current timestamp, or returns\n     * `undefined` upon significant timestamp rollback.\n     *\n     * This method returns monotonically increasing UUIDs unless the up-to-date\n     * timestamp is significantly (by ten seconds or more) smaller than the one\n     * embedded in the immediately preceding UUID. If such a significant clock\n     * rollback is detected, this method aborts and returns `undefined`.\n     */\n    generateOrAbort(): UUID | undefined {\n        const MAX_COUNTER = 0x3ff_ffff_ffff\n        const ROLLBACK_ALLOWANCE = 10_000 // 10 seconds\n\n        const ts = Date.now()\n        if (ts > this.timestamp) {\n            this.timestamp = ts\n            this.resetCounter()\n        } else if (ts + ROLLBACK_ALLOWANCE > this.timestamp) {\n            // go on with previous timestamp if new one is not much smaller\n            this.counter++\n            if (this.counter > MAX_COUNTER) {\n                // increment timestamp at counter overflow\n                this.timestamp++\n                this.resetCounter()\n            }\n        } else {\n            // abort if clock went backwards to unbearable extent\n            return undefined\n        }\n\n        return UUID.fromFieldsV7(\n            this.timestamp,\n            Math.trunc(this.counter / 2 ** 30),\n            this.counter & (2 ** 30 - 1),\n            this.random.nextUint32()\n        )\n    }\n\n    /** Initializes the counter at a 42-bit random integer. */\n    private resetCounter(): void {\n        this.counter = this.random.nextUint32() * 0x400 + (this.random.nextUint32() & 0x3ff)\n    }\n}\n\n/** A global flag to force use of cryptographically strong RNG. */\ndeclare const UUIDV7_DENY_WEAK_RNG: boolean\n\n/** Stores `crypto.getRandomValues()` available in the environment. */\nlet getRandomValues: <T extends Uint8Array | Uint32Array>(buffer: T) => T = (buffer) => {\n    // fall back on Math.random() unless the flag is set to true\n    // TRICKY: don't use the isUndefined method here as can't pass the reference\n    if (typeof UUIDV7_DENY_WEAK_RNG !== 'undefined' && UUIDV7_DENY_WEAK_RNG) {\n        throw new Error('no cryptographically strong RNG available')\n    }\n\n    for (let i = 0; i < buffer.length; i++) {\n        buffer[i] = Math.trunc(Math.random() * 0x1_0000) * 0x1_0000 + Math.trunc(Math.random() * 0x1_0000)\n    }\n    return buffer\n}\n\n// detect Web Crypto API\nif (window && !isUndefined(window.crypto) && crypto.getRandomValues) {\n    getRandomValues = (buffer) => crypto.getRandomValues(buffer)\n}\n\n/**\n * Wraps `crypto.getRandomValues()` and compatibles to enable buffering; this\n * uses a small buffer by default to avoid unbearable throughput decline in some\n * environments as well as the waste of time and space for unused values.\n */\nclass DefaultRandom {\n    private readonly buffer = new Uint32Array(8)\n    private cursor = Infinity\n    nextUint32(): number {\n        if (this.cursor >= this.buffer.length) {\n            getRandomValues(this.buffer)\n            this.cursor = 0\n        }\n        return this.buffer[this.cursor++]\n    }\n}\n\nlet defaultGenerator: V7Generator | undefined\n\n/**\n * Generates a UUIDv7 string.\n *\n * @returns The 8-4-4-4-12 canonical hexadecimal string representation\n * (\"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\").\n */\nexport const uuidv7 = (): string => uuidv7obj().toString()\n\n/** Generates a UUIDv7 object. */\nconst uuidv7obj = (): UUID => (defaultGenerator || (defaultGenerator = new V7Generator())).generate()\n\nexport const uuid7ToTimestampMs = (uuid: string): number => {\n    // remove hyphens\n    const hex = uuid.replace(/-/g, '')\n    // ensure that it's a version 7 UUID\n    if (hex.length !== 32) {\n        throw new Error('Not a valid UUID')\n    }\n    if (hex[12] !== '7') {\n        throw new Error('Not a UUIDv7')\n    }\n    // the first 6 bytes are the timestamp, which means that we can read only the first 12 hex characters\n    return parseInt(hex.substring(0, 12), 16)\n}\n", "import { extend } from './utils'\nimport { PersistentStore, Properties } from './types'\nimport {\n    DISTINCT_ID,\n    ENABLE_PERSON_PROCESSING,\n    INITIAL_PERSON_INFO,\n    SESSION_ID,\n    SESSION_RECORDING_IS_SAMPLED,\n} from './constants'\n\nimport { isNull, isUndefined } from './utils/type-utils'\nimport { logger } from './utils/logger'\nimport { window, document } from './utils/globals'\nimport { uuidv7 } from './uuidv7'\n\nconst Y1970 = 'Thu, 01 Jan 1970 00:00:00 GMT'\n// we store the discovered subdomain in memory because it might be read multiple times\nlet firstNonPublicSubDomain = ''\n\n// helper to allow tests to clear this \"cache\"\nexport const resetSubDomainCache = () => {\n    firstNonPublicSubDomain = ''\n}\n\n/**\n * Browsers don't offer a way to check if something is a public suffix\n * e.g. `.com.au`, `.io`, `.org.uk`\n *\n * But they do reject cookies set on public suffixes\n * Setting a cookie on `.co.uk` would mean it was sent for every `.co.uk` site visited\n *\n * So, we can use this to check if a domain is a public suffix\n * by trying to set a cookie on a subdomain of the provided hostname\n * until the browser accepts it\n *\n * inspired by https://github.com/AngusFu/browser-root-domain\n */\nexport function seekFirstNonPublicSubDomain(hostname: string, cookieJar = document): string {\n    if (firstNonPublicSubDomain) {\n        return firstNonPublicSubDomain\n    }\n\n    if (!cookieJar) {\n        return ''\n    }\n    if (['localhost', '127.0.0.1'].includes(hostname)) return ''\n\n    const list = hostname.split('.')\n    let len = Math.min(list.length, 8) // paranoia - we know this number should be small\n    const key = 'dmn_chk_' + uuidv7()\n    const R = new RegExp('(^|;)\\\\s*' + key + '=1')\n\n    while (!firstNonPublicSubDomain && len--) {\n        const candidate = list.slice(len).join('.')\n        const candidateCookieValue = key + '=1;domain=.' + candidate\n\n        // try to set cookie\n        cookieJar.cookie = candidateCookieValue\n\n        if (R.test(cookieJar.cookie)) {\n            // the cookie was accepted by the browser, remove the test cookie\n            cookieJar.cookie = candidateCookieValue + ';expires=' + Y1970\n            firstNonPublicSubDomain = candidate\n        }\n    }\n\n    return firstNonPublicSubDomain\n}\n\nconst DOMAIN_MATCH_REGEX = /[a-z0-9][a-z0-9-]+\\.[a-z]{2,}$/i\nconst originalCookieDomainFn = (hostname: string): string => {\n    const matches = hostname.match(DOMAIN_MATCH_REGEX)\n    return matches ? matches[0] : ''\n}\n\nexport function chooseCookieDomain(hostname: string, cross_subdomain: boolean | undefined): string {\n    if (cross_subdomain) {\n        // NOTE: Could we use this for cross domain tracking?\n        let matchedSubDomain = seekFirstNonPublicSubDomain(hostname)\n\n        if (!matchedSubDomain) {\n            const originalMatch = originalCookieDomainFn(hostname)\n            if (originalMatch !== matchedSubDomain) {\n                logger.info('Warning: cookie subdomain discovery mismatch', originalMatch, matchedSubDomain)\n            }\n            matchedSubDomain = originalMatch\n        }\n\n        return matchedSubDomain ? '; domain=.' + matchedSubDomain : ''\n    }\n    return ''\n}\n\n// Methods partially borrowed from quirksmode.org/js/cookies.html\nexport const cookieStore: PersistentStore = {\n    is_supported: () => !!document,\n\n    error: function (msg) {\n        logger.error('cookieStore error: ' + msg)\n    },\n\n    get: function (name) {\n        if (!document) {\n            return\n        }\n\n        try {\n            const nameEQ = name + '='\n            const ca = document.cookie.split(';').filter((x) => x.length)\n            for (let i = 0; i < ca.length; i++) {\n                let c = ca[i]\n                while (c.charAt(0) == ' ') {\n                    c = c.substring(1, c.length)\n                }\n                if (c.indexOf(nameEQ) === 0) {\n                    return decodeURIComponent(c.substring(nameEQ.length, c.length))\n                }\n            }\n        } catch {}\n        return null\n    },\n\n    parse: function (name) {\n        let cookie\n        try {\n            cookie = JSON.parse(cookieStore.get(name)) || {}\n        } catch {\n            // noop\n        }\n        return cookie\n    },\n\n    set: function (name, value, days, cross_subdomain, is_secure) {\n        if (!document) {\n            return\n        }\n        try {\n            let expires = '',\n                secure = ''\n\n            const cdomain = chooseCookieDomain(document.location.hostname, cross_subdomain)\n\n            if (days) {\n                const date = new Date()\n                date.setTime(date.getTime() + days * 24 * 60 * 60 * 1000)\n                expires = '; expires=' + date.toUTCString()\n            }\n\n            if (is_secure) {\n                secure = '; secure'\n            }\n\n            const new_cookie_val =\n                name +\n                '=' +\n                encodeURIComponent(JSON.stringify(value)) +\n                expires +\n                '; SameSite=Lax; path=/' +\n                cdomain +\n                secure\n\n            // 4096 bytes is the size at which some browsers (e.g. firefox) will not store a cookie, warn slightly before that\n            if (new_cookie_val.length > 4096 * 0.9) {\n                logger.warn('cookieStore warning: large cookie, len=' + new_cookie_val.length)\n            }\n\n            document.cookie = new_cookie_val\n            return new_cookie_val\n        } catch {\n            return\n        }\n    },\n\n    remove: function (name, cross_subdomain) {\n        try {\n            cookieStore.set(name, '', -1, cross_subdomain)\n        } catch {\n            return\n        }\n    },\n}\n\nlet _localStorage_supported: boolean | null = null\n\nexport const localStore: PersistentStore = {\n    is_supported: function () {\n        if (!isNull(_localStorage_supported)) {\n            return _localStorage_supported\n        }\n\n        let supported = true\n        if (!isUndefined(window)) {\n            try {\n                const key = '__mplssupport__',\n                    val = 'xyz'\n                localStore.set(key, val)\n                if (localStore.get(key) !== '\"xyz\"') {\n                    supported = false\n                }\n                localStore.remove(key)\n            } catch {\n                supported = false\n            }\n        } else {\n            supported = false\n        }\n        if (!supported) {\n            logger.error('localStorage unsupported; falling back to cookie store')\n        }\n\n        _localStorage_supported = supported\n        return supported\n    },\n\n    error: function (msg) {\n        logger.error('localStorage error: ' + msg)\n    },\n\n    get: function (name) {\n        try {\n            return window?.localStorage.getItem(name)\n        } catch (err) {\n            localStore.error(err)\n        }\n        return null\n    },\n\n    parse: function (name) {\n        try {\n            return JSON.parse(localStore.get(name)) || {}\n        } catch {\n            // noop\n        }\n        return null\n    },\n\n    set: function (name, value) {\n        try {\n            window?.localStorage.setItem(name, JSON.stringify(value))\n        } catch (err) {\n            localStore.error(err)\n        }\n    },\n\n    remove: function (name) {\n        try {\n            window?.localStorage.removeItem(name)\n        } catch (err) {\n            localStore.error(err)\n        }\n    },\n}\n\n// Use localstorage for most data but still use cookie for COOKIE_PERSISTED_PROPERTIES\n// This solves issues with cookies having too much data in them causing headers too large\n// Also makes sure we don't have to send a ton of data to the server\nconst COOKIE_PERSISTED_PROPERTIES = [\n    DISTINCT_ID,\n    SESSION_ID,\n    SESSION_RECORDING_IS_SAMPLED,\n    ENABLE_PERSON_PROCESSING,\n    INITIAL_PERSON_INFO,\n]\n\nexport const localPlusCookieStore: PersistentStore = {\n    ...localStore,\n    parse: function (name) {\n        try {\n            let cookieProperties: Properties = {}\n            try {\n                // See if there's a cookie stored with data.\n                cookieProperties = cookieStore.parse(name) || {}\n            } catch {}\n            const value = extend(cookieProperties, JSON.parse(localStore.get(name) || '{}'))\n            localStore.set(name, value)\n            return value\n        } catch {\n            // noop\n        }\n        return null\n    },\n\n    set: function (name, value, days, cross_subdomain, is_secure, debug) {\n        try {\n            localStore.set(name, value, undefined, undefined, debug)\n            const cookiePersistedProperties: Record<string, any> = {}\n            COOKIE_PERSISTED_PROPERTIES.forEach((key) => {\n                if (value[key]) {\n                    cookiePersistedProperties[key] = value[key]\n                }\n            })\n\n            if (Object.keys(cookiePersistedProperties).length) {\n                cookieStore.set(name, cookiePersistedProperties, days, cross_subdomain, is_secure, debug)\n            }\n        } catch (err) {\n            localStore.error(err)\n        }\n    },\n\n    remove: function (name, cross_subdomain) {\n        try {\n            window?.localStorage.removeItem(name)\n            cookieStore.remove(name, cross_subdomain)\n        } catch (err) {\n            localStore.error(err)\n        }\n    },\n}\n\nconst memoryStorage: Properties = {}\n\n// Storage that only lasts the length of the pageview if we don't want to use cookies\nexport const memoryStore: PersistentStore = {\n    is_supported: function () {\n        return true\n    },\n\n    error: function (msg) {\n        logger.error('memoryStorage error: ' + msg)\n    },\n\n    get: function (name) {\n        return memoryStorage[name] || null\n    },\n\n    parse: function (name) {\n        return memoryStorage[name] || null\n    },\n\n    set: function (name, value) {\n        memoryStorage[name] = value\n    },\n\n    remove: function (name) {\n        delete memoryStorage[name]\n    },\n}\n\nlet sessionStorageSupported: boolean | null = null\nexport const resetSessionStorageSupported = () => {\n    sessionStorageSupported = null\n}\n// Storage that only lasts the length of a tab/window. Survives page refreshes\nexport const sessionStore: PersistentStore = {\n    is_supported: function () {\n        if (!isNull(sessionStorageSupported)) {\n            return sessionStorageSupported\n        }\n        sessionStorageSupported = true\n        if (!isUndefined(window)) {\n            try {\n                const key = '__support__',\n                    val = 'xyz'\n                sessionStore.set(key, val)\n                if (sessionStore.get(key) !== '\"xyz\"') {\n                    sessionStorageSupported = false\n                }\n                sessionStore.remove(key)\n            } catch {\n                sessionStorageSupported = false\n            }\n        } else {\n            sessionStorageSupported = false\n        }\n        return sessionStorageSupported\n    },\n\n    error: function (msg) {\n        logger.error('sessionStorage error: ', msg)\n    },\n\n    get: function (name) {\n        try {\n            return window?.sessionStorage.getItem(name)\n        } catch (err) {\n            sessionStore.error(err)\n        }\n        return null\n    },\n\n    parse: function (name) {\n        try {\n            return JSON.parse(sessionStore.get(name)) || null\n        } catch {\n            // noop\n        }\n        return null\n    },\n\n    set: function (name, value) {\n        try {\n            window?.sessionStorage.setItem(name, JSON.stringify(value))\n        } catch (err) {\n            sessionStore.error(err)\n        }\n    },\n\n    remove: function (name) {\n        try {\n            window?.sessionStorage.removeItem(name)\n        } catch (err) {\n            sessionStore.error(err)\n        }\n    },\n}\n", "import { each } from './'\n\nimport { isArray, isFile, isUndefined } from './type-utils'\nimport { logger } from './logger'\nimport { document } from './globals'\n\nconst localDomains = ['localhost', '127.0.0.1']\n\n/**\n * IE11 doesn't support `new URL`\n * so we can create an anchor element and use that to parse the URL\n * there's a lot of overlap between HTMLHyperlinkElementUtils and URL\n * meaning useful properties like `pathname` are available on both\n */\nexport const convertToURL = (url: string): HTMLAnchorElement | null => {\n    const location = document?.createElement('a')\n    if (isUndefined(location)) {\n        return null\n    }\n\n    location.href = url\n    return location\n}\n\nexport const formDataToQuery = function (formdata: Record<string, any> | FormData, arg_separator = '&'): string {\n    let use_val: string\n    let use_key: string\n    const tph_arr: string[] = []\n\n    each(formdata, function (val: File | string | undefined, key: string | undefined) {\n        // the key might be literally the string undefined for e.g. if {undefined: 'something'}\n        if (isUndefined(val) || isUndefined(key) || key === 'undefined') {\n            return\n        }\n\n        use_val = encodeURIComponent(isFile(val) ? val.name : val.toString())\n        use_key = encodeURIComponent(key)\n        tph_arr[tph_arr.length] = use_key + '=' + use_val\n    })\n\n    return tph_arr.join(arg_separator)\n}\n\nexport const getQueryParam = function (url: string, param: string): string {\n    const withoutHash: string = url.split('#')[0] || ''\n    const queryParams: string = withoutHash.split('?')[1] || ''\n\n    const queryParts = queryParams.split('&')\n    let keyValuePair\n\n    for (let i = 0; i < queryParts.length; i++) {\n        const parts = queryParts[i].split('=')\n        if (parts[0] === param) {\n            keyValuePair = parts\n            break\n        }\n    }\n\n    if (!isArray(keyValuePair) || keyValuePair.length < 2) {\n        return ''\n    } else {\n        let result = keyValuePair[1]\n        try {\n            result = decodeURIComponent(result)\n        } catch {\n            logger.error('Skipping decoding for malformed query param: ' + result)\n        }\n        return result.replace(/\\+/g, ' ')\n    }\n}\n\n// replace any query params in the url with the provided mask value. Tries to keep the URL as instant as possible,\n// including preserving malformed text in most cases\nexport const maskQueryParams = function <T extends string | undefined>(\n    url: T,\n    maskedParams: string[] | undefined,\n    mask: string\n): T extends string ? string : undefined {\n    if (!url || !maskedParams || !maskedParams.length) {\n        return url as any\n    }\n\n    const splitHash = url.split('#')\n    const withoutHash: string = splitHash[0] || ''\n    const hash = splitHash[1]\n\n    const splitQuery: string[] = withoutHash.split('?')\n    const queryString: string = splitQuery[1]\n    const urlWithoutQueryAndHash: string = splitQuery[0]\n    const queryParts = (queryString || '').split('&')\n\n    // use an array of strings rather than an object to preserve ordering and duplicates\n    const paramStrings: string[] = []\n\n    for (let i = 0; i < queryParts.length; i++) {\n        const keyValuePair = queryParts[i].split('=')\n        if (!isArray(keyValuePair)) {\n            continue\n        } else if (maskedParams.includes(keyValuePair[0])) {\n            paramStrings.push(keyValuePair[0] + '=' + mask)\n        } else {\n            paramStrings.push(queryParts[i])\n        }\n    }\n\n    let result = urlWithoutQueryAndHash\n    if (queryString != null) {\n        result += '?' + paramStrings.join('&')\n    }\n    if (hash != null) {\n        result += '#' + hash\n    }\n\n    return result as any\n}\n\nexport const _getHashParam = function (hash: string, param: string): string | null {\n    const matches = hash.match(new RegExp(param + '=([^&]*)'))\n    return matches ? matches[1] : null\n}\n\nexport const isLocalhost = (): boolean => {\n    return localDomains.includes(location.hostname)\n}\n", "import { isFunction, isUndefined } from './type-utils'\nimport { includes } from './string-utils'\n\n/**\n * this device detection code is (at time of writing) about 3% of the size of the entire library\n * this is mostly because the identifiers user in regexes and results can't be minified away since\n * they have meaning\n *\n * so, there are some pre-uglifying choices in the code to help reduce the size\n * e.g. many repeated strings are stored as variables and then old-fashioned concatenated together\n *\n * TL;DR here be dragons\n */\nconst FACEBOOK = 'Facebook'\nconst MOBILE = 'Mobile'\nconst IOS = 'iOS'\nconst ANDROID = 'Android'\nconst TABLET = 'Tablet'\nconst ANDROID_TABLET = ANDROID + ' ' + TABLET\nconst IPAD = 'iPad'\nconst APPLE = 'Apple'\nconst APPLE_WATCH = APPLE + ' Watch'\nconst SAFARI = 'Safari'\nconst BLACKBERRY = 'BlackBerry'\nconst SAMSUNG = 'Samsung'\nconst SAMSUNG_BROWSER = SAMSUNG + 'Browser'\nconst SAMSUNG_INTERNET = SAMSUNG + ' Internet'\nconst CHROME = 'Chrome'\nconst CHROME_OS = CHROME + ' OS'\nconst CHROME_IOS = CHROME + ' ' + IOS\nconst INTERNET_EXPLORER = 'Internet Explorer'\nconst INTERNET_EXPLORER_MOBILE = INTERNET_EXPLORER + ' ' + MOBILE\nconst OPERA = 'Opera'\nconst OPERA_MINI = OPERA + ' Mini'\nconst EDGE = 'Edge'\nconst MICROSOFT_EDGE = 'Microsoft ' + EDGE\nconst FIREFOX = 'Firefox'\nconst FIREFOX_IOS = FIREFOX + ' ' + IOS\nconst NINTENDO = 'Nintendo'\nconst PLAYSTATION = 'PlayStation'\nconst XBOX = 'Xbox'\nconst ANDROID_MOBILE = ANDROID + ' ' + MOBILE\nconst MOBILE_SAFARI = MOBILE + ' ' + SAFARI\nconst WINDOWS = 'Windows'\nconst WINDOWS_PHONE = WINDOWS + ' Phone'\nconst NOKIA = 'Nokia'\nconst OUYA = 'Ouya'\nconst GENERIC = 'Generic'\nconst GENERIC_MOBILE = GENERIC + ' ' + MOBILE.toLowerCase()\nconst GENERIC_TABLET = GENERIC + ' ' + TABLET.toLowerCase()\nconst KONQUEROR = 'Konqueror'\n\nconst BROWSER_VERSION_REGEX_SUFFIX = '(\\\\d+(\\\\.\\\\d+)?)'\nconst DEFAULT_BROWSER_VERSION_REGEX = new RegExp('Version/' + BROWSER_VERSION_REGEX_SUFFIX)\n\nconst XBOX_REGEX = new RegExp(XBOX, 'i')\nconst PLAYSTATION_REGEX = new RegExp(PLAYSTATION + ' \\\\w+', 'i')\nconst NINTENDO_REGEX = new RegExp(NINTENDO + ' \\\\w+', 'i')\nconst BLACKBERRY_REGEX = new RegExp(BLACKBERRY + '|PlayBook|BB10', 'i')\n\nconst windowsVersionMap: Record<string, string> = {\n    'NT3.51': 'NT 3.11',\n    'NT4.0': 'NT 4.0',\n    '5.0': '2000',\n    '5.1': 'XP',\n    '5.2': 'XP',\n    '6.0': 'Vista',\n    '6.1': '7',\n    '6.2': '8',\n    '6.3': '8.1',\n    '6.4': '10',\n    '10.0': '10',\n}\n\n/**\n * Safari detection turns out to be complicated. For e.g. https://stackoverflow.com/a/29696509\n * We can be slightly loose because some options have been ruled out (e.g. firefox on iOS)\n * before this check is made\n */\nfunction isSafari(userAgent: string): boolean {\n    return includes(userAgent, SAFARI) && !includes(userAgent, CHROME) && !includes(userAgent, ANDROID)\n}\n\nconst safariCheck = (ua: string, vendor?: string) => (vendor && includes(vendor, APPLE)) || isSafari(ua)\n\n/**\n * This function detects which browser is running this script.\n * The order of the checks are important since many user agents\n * include keywords used in later checks.\n */\nexport const detectBrowser = function (user_agent: string, vendor: string | undefined): string {\n    vendor = vendor || '' // vendor is undefined for at least IE9\n\n    if (includes(user_agent, ' OPR/') && includes(user_agent, 'Mini')) {\n        return OPERA_MINI\n    } else if (includes(user_agent, ' OPR/')) {\n        return OPERA\n    } else if (BLACKBERRY_REGEX.test(user_agent)) {\n        return BLACKBERRY\n    } else if (includes(user_agent, 'IE' + MOBILE) || includes(user_agent, 'WPDesktop')) {\n        return INTERNET_EXPLORER_MOBILE\n    }\n    // https://developer.samsung.com/internet/user-agent-string-format\n    else if (includes(user_agent, SAMSUNG_BROWSER)) {\n        return SAMSUNG_INTERNET\n    } else if (includes(user_agent, EDGE) || includes(user_agent, 'Edg/')) {\n        return MICROSOFT_EDGE\n    } else if (includes(user_agent, 'FBIOS')) {\n        return FACEBOOK + ' ' + MOBILE\n    } else if (includes(user_agent, 'UCWEB') || includes(user_agent, 'UCBrowser')) {\n        return 'UC Browser'\n    } else if (includes(user_agent, 'CriOS')) {\n        return CHROME_IOS // why not just Chrome?\n    } else if (includes(user_agent, 'CrMo')) {\n        return CHROME\n    } else if (includes(user_agent, CHROME)) {\n        return CHROME\n    } else if (includes(user_agent, ANDROID) && includes(user_agent, SAFARI)) {\n        return ANDROID_MOBILE\n    } else if (includes(user_agent, 'FxiOS')) {\n        return FIREFOX_IOS\n    } else if (includes(user_agent.toLowerCase(), KONQUEROR.toLowerCase())) {\n        return KONQUEROR\n    } else if (safariCheck(user_agent, vendor)) {\n        return includes(user_agent, MOBILE) ? MOBILE_SAFARI : SAFARI\n    } else if (includes(user_agent, FIREFOX)) {\n        return FIREFOX\n    } else if (includes(user_agent, 'MSIE') || includes(user_agent, 'Trident/')) {\n        return INTERNET_EXPLORER\n    } else if (includes(user_agent, 'Gecko')) {\n        return FIREFOX\n    }\n\n    return ''\n}\n\nconst versionRegexes: Record<string, RegExp[]> = {\n    [INTERNET_EXPLORER_MOBILE]: [new RegExp('rv:' + BROWSER_VERSION_REGEX_SUFFIX)],\n    [MICROSOFT_EDGE]: [new RegExp(EDGE + '?\\\\/' + BROWSER_VERSION_REGEX_SUFFIX)],\n    [CHROME]: [new RegExp('(' + CHROME + '|CrMo)\\\\/' + BROWSER_VERSION_REGEX_SUFFIX)],\n    [CHROME_IOS]: [new RegExp('CriOS\\\\/' + BROWSER_VERSION_REGEX_SUFFIX)],\n    'UC Browser': [new RegExp('(UCBrowser|UCWEB)\\\\/' + BROWSER_VERSION_REGEX_SUFFIX)],\n    [SAFARI]: [DEFAULT_BROWSER_VERSION_REGEX],\n    [MOBILE_SAFARI]: [DEFAULT_BROWSER_VERSION_REGEX],\n    [OPERA]: [new RegExp('(' + OPERA + '|OPR)\\\\/' + BROWSER_VERSION_REGEX_SUFFIX)],\n    [FIREFOX]: [new RegExp(FIREFOX + '\\\\/' + BROWSER_VERSION_REGEX_SUFFIX)],\n    [FIREFOX_IOS]: [new RegExp('FxiOS\\\\/' + BROWSER_VERSION_REGEX_SUFFIX)],\n    [KONQUEROR]: [new RegExp('Konqueror[:/]?' + BROWSER_VERSION_REGEX_SUFFIX, 'i')],\n    // not every blackberry user agent has the version after the name\n    [BLACKBERRY]: [new RegExp(BLACKBERRY + ' ' + BROWSER_VERSION_REGEX_SUFFIX), DEFAULT_BROWSER_VERSION_REGEX],\n    [ANDROID_MOBILE]: [new RegExp('android\\\\s' + BROWSER_VERSION_REGEX_SUFFIX, 'i')],\n    [SAMSUNG_INTERNET]: [new RegExp(SAMSUNG_BROWSER + '\\\\/' + BROWSER_VERSION_REGEX_SUFFIX)],\n    [INTERNET_EXPLORER]: [new RegExp('(rv:|MSIE )' + BROWSER_VERSION_REGEX_SUFFIX)],\n    Mozilla: [new RegExp('rv:' + BROWSER_VERSION_REGEX_SUFFIX)],\n}\n\n/**\n * This function detects which browser version is running this script,\n * parsing major and minor version (e.g., 42.1). User agent strings from:\n * http://www.useragentstring.com/pages/useragentstring.php\n *\n * `navigator.vendor` is passed in and used to help with detecting certain browsers\n * NB `navigator.vendor` is deprecated and not present in every browser\n */\nexport const detectBrowserVersion = function (userAgent: string, vendor: string | undefined): number | null {\n    const browser = detectBrowser(userAgent, vendor)\n    const regexes: RegExp[] | undefined = versionRegexes[browser as keyof typeof versionRegexes]\n    if (isUndefined(regexes)) {\n        return null\n    }\n\n    for (let i = 0; i < regexes.length; i++) {\n        const regex = regexes[i]\n        const matches = userAgent.match(regex)\n        if (matches) {\n            return parseFloat(matches[matches.length - 2])\n        }\n    }\n    return null\n}\n\n// to avoid repeating regexes or calling them twice, we have an array of matches\n// the first regex that matches uses its matcher function to return the result\nconst osMatchers: [\n    RegExp,\n    [string, string] | ((match: RegExpMatchArray | null, user_agent: string) => [string, string]),\n][] = [\n    [\n        new RegExp(XBOX + '; ' + XBOX + ' (.*?)[);]', 'i'),\n        (match) => {\n            return [XBOX, (match && match[1]) || '']\n        },\n    ],\n    [new RegExp(NINTENDO, 'i'), [NINTENDO, '']],\n    [new RegExp(PLAYSTATION, 'i'), [PLAYSTATION, '']],\n    [BLACKBERRY_REGEX, [BLACKBERRY, '']],\n    [\n        new RegExp(WINDOWS, 'i'),\n        (_, user_agent) => {\n            if (/Phone/.test(user_agent) || /WPDesktop/.test(user_agent)) {\n                return [WINDOWS_PHONE, '']\n            }\n            // not all JS versions support negative lookbehind, so we need two checks here\n            if (new RegExp(MOBILE).test(user_agent) && !/IEMobile\\b/.test(user_agent)) {\n                return [WINDOWS + ' ' + MOBILE, '']\n            }\n            const match = /Windows NT ([0-9.]+)/i.exec(user_agent)\n            if (match && match[1]) {\n                const version = match[1]\n                let osVersion = windowsVersionMap[version] || ''\n                if (/arm/i.test(user_agent)) {\n                    osVersion = 'RT'\n                }\n                return [WINDOWS, osVersion]\n            }\n            return [WINDOWS, '']\n        },\n    ],\n    [\n        /((iPhone|iPad|iPod).*?OS (\\d+)_(\\d+)_?(\\d+)?|iPhone)/,\n        (match) => {\n            if (match && match[3]) {\n                const versionParts = [match[3], match[4], match[5] || '0']\n                return [IOS, versionParts.join('.')]\n            }\n            return [IOS, '']\n        },\n    ],\n    [\n        /(watch.*\\/(\\d+\\.\\d+\\.\\d+)|watch os,(\\d+\\.\\d+),)/i,\n        (match) => {\n            // e.g. Watch4,3/5.3.8 (16U680)\n            let version = ''\n            if (match && match.length >= 3) {\n                version = isUndefined(match[2]) ? match[3] : match[2]\n            }\n            return ['watchOS', version]\n        },\n    ],\n    [\n        new RegExp('(' + ANDROID + ' (\\\\d+)\\\\.(\\\\d+)\\\\.?(\\\\d+)?|' + ANDROID + ')', 'i'),\n        (match) => {\n            if (match && match[2]) {\n                const versionParts = [match[2], match[3], match[4] || '0']\n                return [ANDROID, versionParts.join('.')]\n            }\n            return [ANDROID, '']\n        },\n    ],\n    [\n        /Mac OS X (\\d+)[_.](\\d+)[_.]?(\\d+)?/i,\n        (match) => {\n            const result: [string, string] = ['Mac OS X', '']\n            if (match && match[1]) {\n                const versionParts = [match[1], match[2], match[3] || '0']\n                result[1] = versionParts.join('.')\n            }\n            return result\n        },\n    ],\n    [\n        /Mac/i,\n        // mop up a few non-standard UAs that should match mac\n        ['Mac OS X', ''],\n    ],\n    [/CrOS/, [CHROME_OS, '']],\n    [/Linux|debian/i, ['Linux', '']],\n]\n\nexport const detectOS = function (user_agent: string): [string, string] {\n    for (let i = 0; i < osMatchers.length; i++) {\n        const [rgex, resultOrFn] = osMatchers[i]\n        const match = rgex.exec(user_agent)\n        const result = match && (isFunction(resultOrFn) ? resultOrFn(match, user_agent) : resultOrFn)\n        if (result) {\n            return result\n        }\n    }\n    return ['', '']\n}\n\nexport const detectDevice = function (user_agent: string): string {\n    if (NINTENDO_REGEX.test(user_agent)) {\n        return NINTENDO\n    } else if (PLAYSTATION_REGEX.test(user_agent)) {\n        return PLAYSTATION\n    } else if (XBOX_REGEX.test(user_agent)) {\n        return XBOX\n    } else if (new RegExp(OUYA, 'i').test(user_agent)) {\n        return OUYA\n    } else if (new RegExp('(' + WINDOWS_PHONE + '|WPDesktop)', 'i').test(user_agent)) {\n        return WINDOWS_PHONE\n    } else if (/iPad/.test(user_agent)) {\n        return IPAD\n    } else if (/iPod/.test(user_agent)) {\n        return 'iPod Touch'\n    } else if (/iPhone/.test(user_agent)) {\n        return 'iPhone'\n    } else if (/(watch)(?: ?os[,/]|\\d,\\d\\/)[\\d.]+/i.test(user_agent)) {\n        return APPLE_WATCH\n    } else if (BLACKBERRY_REGEX.test(user_agent)) {\n        return BLACKBERRY\n    } else if (/(kobo)\\s(ereader|touch)/i.test(user_agent)) {\n        return 'Kobo'\n    } else if (new RegExp(NOKIA, 'i').test(user_agent)) {\n        return NOKIA\n    } else if (\n        // Kindle Fire without Silk / Echo Show\n        /(kf[a-z]{2}wi|aeo[c-r]{2})( bui|\\))/i.test(user_agent) ||\n        // Kindle Fire HD\n        /(kf[a-z]+)( bui|\\)).+silk\\//i.test(user_agent)\n    ) {\n        return 'Kindle Fire'\n    } else if (/(Android|ZTE)/i.test(user_agent)) {\n        if (\n            !new RegExp(MOBILE).test(user_agent) ||\n            /(9138B|TB782B|Nexus [97]|pixel c|HUAWEISHT|BTV|noble nook|smart ultra 6)/i.test(user_agent)\n        ) {\n            if (\n                (/pixel[\\daxl ]{1,6}/i.test(user_agent) && !/pixel c/i.test(user_agent)) ||\n                /(huaweimed-al00|tah-|APA|SM-G92|i980|zte|U304AA)/i.test(user_agent) ||\n                (/lmy47v/i.test(user_agent) && !/QTAQZ3/i.test(user_agent))\n            ) {\n                return ANDROID\n            }\n            return ANDROID_TABLET\n        } else {\n            return ANDROID\n        }\n    } else if (new RegExp('(pda|' + MOBILE + ')', 'i').test(user_agent)) {\n        return GENERIC_MOBILE\n    } else if (new RegExp(TABLET, 'i').test(user_agent) && !new RegExp(TABLET + ' pc', 'i').test(user_agent)) {\n        return GENERIC_TABLET\n    } else {\n        return ''\n    }\n}\n\nexport const detectDeviceType = function (user_agent: string): string {\n    const device = detectDevice(user_agent)\n    if (\n        device === IPAD ||\n        device === ANDROID_TABLET ||\n        device === 'Kobo' ||\n        device === 'Kindle Fire' ||\n        device === GENERIC_TABLET\n    ) {\n        return TABLET\n    } else if (device === NINTENDO || device === XBOX || device === PLAYSTATION || device === OUYA) {\n        return 'Console'\n    } else if (device === APPLE_WATCH) {\n        return 'Wearable'\n    } else if (device) {\n        return MOBILE\n    } else {\n        return 'Desktop'\n    }\n}\n", "import { getQueryParam, convertToURL, maskQueryParams } from './request-utils'\nimport { isNull } from './type-utils'\nimport { Properties } from '../types'\nimport Config from '../config'\nimport { each, extend, extendArray, stripEmptyProperties } from './index'\nimport { document, location, userAgent, window } from './globals'\nimport { detectBrowser, detectBrowserVersion, detectDevice, detectDeviceType, detectOS } from './user-agent-utils'\nimport { stripLeadingDollar } from './string-utils'\n\nconst URL_REGEX_PREFIX = 'https?://(.*)'\n\n// CAMPAIGN_PARAMS and EVENT_TO_PERSON_PROPERTIES should be kept in sync with\n// https://github.com/PostHog/posthog/blob/master/plugin-server/src/utils/db/utils.ts#L60\n\n// The list of campaign parameters that could be considered personal data under e.g. GDPR.\n// These can be masked in URLs and properties before being sent to posthog.\nexport const PERSONAL_DATA_CAMPAIGN_PARAMS = [\n    'gclid', // google ads\n    'gclsrc', // google ads 360\n    'dclid', // google display ads\n    'gbraid', // google ads, web to app\n    'wbraid', // google ads, app to web\n    'fbclid', // facebook\n    'msclkid', // microsoft\n    'twclid', // twitter\n    'li_fat_id', // linkedin\n    'igshid', // instagram\n    'ttclid', // tiktok\n    'rdt_cid', // reddit\n    'irclid', // impact\n    '_kx', // klaviyo\n]\n\nexport const CAMPAIGN_PARAMS = extendArray(\n    [\n        'utm_source',\n        'utm_medium',\n        'utm_campaign',\n        'utm_content',\n        'utm_term',\n        'gad_source', // google ads source\n        'mc_cid', // mailchimp campaign id\n    ],\n    PERSONAL_DATA_CAMPAIGN_PARAMS\n)\n\nexport const EVENT_TO_PERSON_PROPERTIES = [\n    // mobile params\n    '$app_build',\n    '$app_name',\n    '$app_namespace',\n    '$app_version',\n    // web params\n    '$browser',\n    '$browser_version',\n    '$device_type',\n    '$current_url',\n    '$pathname',\n    '$os',\n    '$os_name', // $os_name is a special case, it's treated as an alias of $os!\n    '$os_version',\n    '$referring_domain',\n    '$referrer',\n]\n\nexport const MASKED = '<masked>'\n\nexport const Info = {\n    campaignParams: function ({\n        customTrackedParams,\n        maskPersonalDataProperties,\n        customPersonalDataProperties,\n    }: {\n        customTrackedParams?: string[]\n        maskPersonalDataProperties?: boolean\n        customPersonalDataProperties?: string[] | undefined\n    } = {}): Record<string, string> {\n        if (!document) {\n            return {}\n        }\n\n        const paramsToMask = maskPersonalDataProperties\n            ? extendArray([], PERSONAL_DATA_CAMPAIGN_PARAMS, customPersonalDataProperties || [])\n            : []\n\n        return this._campaignParamsFromUrl(maskQueryParams(document.URL, paramsToMask, MASKED), customTrackedParams)\n    },\n\n    _campaignParamsFromUrl: function (url: string, customParams?: string[]): Record<string, string> {\n        const campaign_keywords = CAMPAIGN_PARAMS.concat(customParams || [])\n\n        const params: Record<string, any> = {}\n        each(campaign_keywords, function (kwkey) {\n            const kw = getQueryParam(url, kwkey)\n            params[kwkey] = kw ? kw : null\n        })\n\n        return params\n    },\n\n    _searchEngine: function (referrer: string): string | null {\n        if (!referrer) {\n            return null\n        } else {\n            if (referrer.search(URL_REGEX_PREFIX + 'google.([^/?]*)') === 0) {\n                return 'google'\n            } else if (referrer.search(URL_REGEX_PREFIX + 'bing.com') === 0) {\n                return 'bing'\n            } else if (referrer.search(URL_REGEX_PREFIX + 'yahoo.com') === 0) {\n                return 'yahoo'\n            } else if (referrer.search(URL_REGEX_PREFIX + 'duckduckgo.com') === 0) {\n                return 'duckduckgo'\n            } else {\n                return null\n            }\n        }\n    },\n\n    _searchInfoFromReferrer: function (referrer: string): Record<string, any> {\n        const search = Info._searchEngine(referrer)\n        const param = search != 'yahoo' ? 'q' : 'p'\n        const ret: Record<string, any> = {}\n\n        if (!isNull(search)) {\n            ret['$search_engine'] = search\n\n            const keyword = document ? getQueryParam(document.referrer, param) : ''\n            if (keyword.length) {\n                ret['ph_keyword'] = keyword\n            }\n        }\n\n        return ret\n    },\n\n    searchInfo: function (): Record<string, any> {\n        const referrer = document?.referrer\n        if (!referrer) {\n            return {}\n        }\n        return this._searchInfoFromReferrer(referrer)\n    },\n\n    /**\n     * This function detects which browser is running this script.\n     * The order of the checks are important since many user agents\n     * include keywords used in later checks.\n     */\n    browser: detectBrowser,\n\n    /**\n     * This function detects which browser version is running this script,\n     * parsing major and minor version (e.g., 42.1). User agent strings from:\n     * http://www.useragentstring.com/pages/useragentstring.php\n     *\n     * `navigator.vendor` is passed in and used to help with detecting certain browsers\n     * NB `navigator.vendor` is deprecated and not present in every browser\n     */\n    browserVersion: detectBrowserVersion,\n\n    browserLanguage: function (): string | undefined {\n        return (\n            navigator.language || // Any modern browser\n            (navigator as Record<string, any>).userLanguage // IE11\n        )\n    },\n\n    browserLanguagePrefix: function (): string | undefined {\n        const browserLanguage = this.browserLanguage()\n        return typeof browserLanguage === 'string' ? browserLanguage.split('-')[0] : undefined\n    },\n\n    os: detectOS,\n\n    device: detectDevice,\n\n    deviceType: detectDeviceType,\n\n    referrer: function (): string {\n        return document?.referrer || '$direct'\n    },\n\n    referringDomain: function (): string {\n        if (!document?.referrer) {\n            return '$direct'\n        }\n        return convertToURL(document.referrer)?.host || '$direct'\n    },\n\n    referrerInfo: function (): Record<string, any> {\n        return {\n            $referrer: this.referrer(),\n            $referring_domain: this.referringDomain(),\n        }\n    },\n\n    initialPersonInfo: function (): Record<string, any> {\n        // we're being a bit more economical with bytes here because this is stored in the cookie\n        return {\n            r: this.referrer().substring(0, 1000),\n            u: location?.href.substring(0, 1000),\n        }\n    },\n\n    initialPersonPropsFromInfo: function (info: Record<string, any>): Record<string, any> {\n        const { r: initial_referrer, u: initial_current_url } = info\n        const referring_domain =\n            initial_referrer == null\n                ? undefined\n                : initial_referrer == '$direct'\n                  ? '$direct'\n                  : convertToURL(initial_referrer)?.host\n\n        const props: Record<string, string | undefined> = {\n            $initial_referrer: initial_referrer,\n            $initial_referring_domain: referring_domain,\n        }\n        if (initial_current_url) {\n            props['$initial_current_url'] = initial_current_url\n            const location = convertToURL(initial_current_url)\n            props['$initial_host'] = location?.host\n            props['$initial_pathname'] = location?.pathname\n            const campaignParams = this._campaignParamsFromUrl(initial_current_url)\n            each(campaignParams, function (v, k: string) {\n                props['$initial_' + stripLeadingDollar(k)] = v\n            })\n        }\n        if (initial_referrer) {\n            const searchInfo = this._searchInfoFromReferrer(initial_referrer)\n            each(searchInfo, function (v, k: string) {\n                props['$initial_' + stripLeadingDollar(k)] = v\n            })\n        }\n        return props\n    },\n\n    timezone: function (): string | undefined {\n        try {\n            return Intl.DateTimeFormat().resolvedOptions().timeZone\n        } catch {\n            return undefined\n        }\n    },\n\n    timezoneOffset: function (): number | undefined {\n        try {\n            return new Date().getTimezoneOffset()\n        } catch {\n            return undefined\n        }\n    },\n\n    properties: function ({\n        maskPersonalDataProperties,\n        customPersonalDataProperties,\n    }: {\n        maskPersonalDataProperties?: boolean\n        customPersonalDataProperties?: string[]\n    } = {}): Properties {\n        if (!userAgent) {\n            return {}\n        }\n        const paramsToMask = maskPersonalDataProperties\n            ? extendArray([], PERSONAL_DATA_CAMPAIGN_PARAMS, customPersonalDataProperties || [])\n            : []\n        const [os_name, os_version] = Info.os(userAgent)\n        return extend(\n            stripEmptyProperties({\n                $os: os_name,\n                $os_version: os_version,\n                $browser: Info.browser(userAgent, navigator.vendor),\n                $device: Info.device(userAgent),\n                $device_type: Info.deviceType(userAgent),\n                $timezone: Info.timezone(),\n                $timezone_offset: Info.timezoneOffset(),\n            }),\n            {\n                $current_url: maskQueryParams(location?.href, paramsToMask, MASKED),\n                $host: location?.host,\n                $pathname: location?.pathname,\n                $raw_user_agent: userAgent.length > 1000 ? userAgent.substring(0, 997) + '...' : userAgent,\n                $browser_version: Info.browserVersion(userAgent, navigator.vendor),\n                $browser_language: Info.browserLanguage(),\n                $browser_language_prefix: Info.browserLanguagePrefix(),\n                $screen_height: window?.screen.height,\n                $screen_width: window?.screen.width,\n                $viewport_height: window?.innerHeight,\n                $viewport_width: window?.innerWidth,\n                $lib: 'web',\n                $lib_version: Config.LIB_VERSION,\n                $insert_id: Math.random().toString(36).substring(2, 10) + Math.random().toString(36).substring(2, 10),\n                $time: Date.now() / 1000, // epoch time in seconds\n            }\n        )\n    },\n\n    people_properties: function (): Properties {\n        if (!userAgent) {\n            return {}\n        }\n\n        const [os_name, os_version] = Info.os(userAgent)\n        return extend(\n            stripEmptyProperties({\n                $os: os_name,\n                $os_version: os_version,\n                $browser: Info.browser(userAgent, navigator.vendor),\n            }),\n            {\n                $browser_version: Info.browserVersion(userAgent, navigator.vendor),\n            }\n        )\n    },\n}\n", "/* eslint camelcase: \"off\" */\n\nimport { each, extend, include, stripEmptyProperties } from './utils'\nimport { cookieStore, localPlusCookieStore, localStore, memoryStore, sessionStore } from './storage'\nimport { PersistentStore, PostHogConfig, Properties } from './types'\nimport {\n    ENABLED_FEATURE_FLAGS,\n    EVENT_TIMERS_KEY,\n    INITIAL_CAMPAIGN_PARAMS,\n    INITIAL_PERSON_INFO,\n    INITIAL_REFERRER_INFO,\n    PERSISTENCE_RESERVED_PROPERTIES,\n} from './constants'\n\nimport { isEmptyObject, isObject, isUndefined } from './utils/type-utils'\nimport { Info } from './utils/event-utils'\nimport { logger } from './utils/logger'\nimport { stripLeadingDollar } from './utils/string-utils'\n\nconst CASE_INSENSITIVE_PERSISTENCE_TYPES: readonly Lowercase<PostHogConfig['persistence']>[] = [\n    'cookie',\n    'localstorage',\n    'localstorage+cookie',\n    'sessionstorage',\n    'memory',\n]\n\nconst parseName = (config: PostHogConfig): string => {\n    let token = ''\n    if (config['token']) {\n        token = config['token'].replace(/\\+/g, 'PL').replace(/\\//g, 'SL').replace(/=/g, 'EQ')\n    }\n\n    if (config['persistence_name']) {\n        return 'ph_' + config['persistence_name']\n    } else {\n        return 'ph_' + token + '_posthog'\n    }\n}\n\n/**\n * PostHog Persistence Object\n * @constructor\n */\nexport class PostHogPersistence {\n    private config: PostHogConfig\n    props: Properties\n    storage: PersistentStore\n    campaign_params_saved: boolean\n    name: string\n    disabled: boolean | undefined\n    secure: boolean | undefined\n    expire_days: number | undefined\n    default_expiry: number | undefined\n    cross_subdomain: boolean | undefined\n\n    constructor(config: PostHogConfig) {\n        this.config = config\n        this.props = {}\n        this.campaign_params_saved = false\n        this.name = parseName(config)\n        this.storage = this.buildStorage(config)\n        this.load()\n        if (config.debug) {\n            logger.info('Persistence loaded', config['persistence'], { ...this.props })\n        }\n        this.update_config(config, config)\n        this.save()\n    }\n\n    private buildStorage(config: PostHogConfig) {\n        if (\n            CASE_INSENSITIVE_PERSISTENCE_TYPES.indexOf(\n                config['persistence'].toLowerCase() as Lowercase<PostHogConfig['persistence']>\n            ) === -1\n        ) {\n            logger.critical(\n                'Unknown persistence type ' + config['persistence'] + '; falling back to localStorage+cookie'\n            )\n            config['persistence'] = 'localStorage+cookie'\n        }\n\n        let store: PersistentStore\n        // We handle storage type in a case-insensitive way for backwards compatibility\n        const storage_type = config['persistence'].toLowerCase() as Lowercase<PostHogConfig['persistence']>\n        if (storage_type === 'localstorage' && localStore.is_supported()) {\n            store = localStore\n        } else if (storage_type === 'localstorage+cookie' && localPlusCookieStore.is_supported()) {\n            store = localPlusCookieStore\n        } else if (storage_type === 'sessionstorage' && sessionStore.is_supported()) {\n            store = sessionStore\n        } else if (storage_type === 'memory') {\n            store = memoryStore\n        } else if (storage_type === 'cookie') {\n            store = cookieStore\n        } else if (localPlusCookieStore.is_supported()) {\n            // selected storage type wasn't supported, fallback to 'localstorage+cookie' if possible\n            store = localPlusCookieStore\n        } else {\n            store = cookieStore\n        }\n\n        return store\n    }\n\n    properties(): Properties {\n        const p: Properties = {}\n        // Filter out reserved properties\n        each(this.props, function (v, k) {\n            if (k === ENABLED_FEATURE_FLAGS && isObject(v)) {\n                const keys = Object.keys(v)\n                for (let i = 0; i < keys.length; i++) {\n                    p[`$feature/${keys[i]}`] = v[keys[i]]\n                }\n            } else if (!include(PERSISTENCE_RESERVED_PROPERTIES, k)) {\n                p[k] = v\n            }\n        })\n        return p\n    }\n\n    load(): void {\n        if (this.disabled) {\n            return\n        }\n\n        const entry = this.storage.parse(this.name)\n\n        if (entry) {\n            this.props = extend({}, entry)\n        }\n    }\n\n    /**\n     * NOTE: Saving frequently causes issues with Recordings and Consent Management Platform (CMP) tools which\n     * observe cookie changes, and modify their UI, often causing infinite loops.\n     * As such callers of this should ideally check that the data has changed beforehand\n     */\n    save(): void {\n        if (this.disabled) {\n            return\n        }\n        this.storage.set(this.name, this.props, this.expire_days, this.cross_subdomain, this.secure, this.config.debug)\n    }\n\n    remove(): void {\n        // remove both domain and subdomain cookies\n        this.storage.remove(this.name, false)\n        this.storage.remove(this.name, true)\n    }\n\n    // removes the storage entry and deletes all loaded data\n    // forced name for tests\n\n    clear(): void {\n        this.remove()\n        this.props = {}\n    }\n\n    /**\n     * @param {Object} props\n     * @param {*=} default_value\n     * @param {number=} days\n     */\n\n    register_once(props: Properties, default_value: any, days?: number): boolean {\n        if (isObject(props)) {\n            if (isUndefined(default_value)) {\n                default_value = 'None'\n            }\n            this.expire_days = isUndefined(days) ? this.default_expiry : days\n\n            let hasChanges = false\n\n            each(props, (val, prop) => {\n                if (!this.props.hasOwnProperty(prop) || this.props[prop] === default_value) {\n                    this.props[prop] = val\n                    hasChanges = true\n                }\n            })\n\n            if (hasChanges) {\n                this.save()\n                return true\n            }\n        }\n        return false\n    }\n\n    /**\n     * @param {Object} props\n     * @param {number=} days\n     */\n\n    register(props: Properties, days?: number): boolean {\n        if (isObject(props)) {\n            this.expire_days = isUndefined(days) ? this.default_expiry : days\n\n            let hasChanges = false\n\n            each(props, (val, prop) => {\n                if (props.hasOwnProperty(prop) && this.props[prop] !== val) {\n                    this.props[prop] = val\n                    hasChanges = true\n                }\n            })\n\n            if (hasChanges) {\n                this.save()\n                return true\n            }\n        }\n        return false\n    }\n\n    unregister(prop: string): void {\n        if (prop in this.props) {\n            delete this.props[prop]\n            this.save()\n        }\n    }\n\n    update_campaign_params(): void {\n        if (!this.campaign_params_saved) {\n            const campaignParams = Info.campaignParams({\n                customTrackedParams: this.config.custom_campaign_params,\n                maskPersonalDataProperties: this.config.mask_personal_data_properties,\n                customPersonalDataProperties: this.config.custom_personal_data_properties,\n            })\n            // only save campaign params if there were any\n            if (!isEmptyObject(stripEmptyProperties(campaignParams))) {\n                this.register(campaignParams)\n            }\n            this.campaign_params_saved = true\n        }\n    }\n    update_search_keyword(): void {\n        this.register(Info.searchInfo())\n    }\n\n    update_referrer_info(): void {\n        this.register_once(Info.referrerInfo(), undefined)\n    }\n\n    set_initial_person_info(): void {\n        if (this.props[INITIAL_CAMPAIGN_PARAMS] || this.props[INITIAL_REFERRER_INFO]) {\n            // the user has initial properties stored the previous way, don't save them again\n            return\n        }\n\n        this.register_once(\n            {\n                [INITIAL_PERSON_INFO]: Info.initialPersonInfo(),\n            },\n            undefined\n        )\n    }\n\n    get_referrer_info(): Properties {\n        return stripEmptyProperties({\n            $referrer: this['props']['$referrer'],\n            $referring_domain: this['props']['$referring_domain'],\n        })\n    }\n\n    get_initial_props(): Properties {\n        const p: Properties = {}\n\n        // this section isn't written to anymore, but we should keep reading from it for backwards compatibility\n        // for a while\n        each([INITIAL_REFERRER_INFO, INITIAL_CAMPAIGN_PARAMS], (key) => {\n            const initialReferrerInfo = this.props[key]\n            if (initialReferrerInfo) {\n                each(initialReferrerInfo, function (v, k) {\n                    p['$initial_' + stripLeadingDollar(k)] = v\n                })\n            }\n        })\n        const initialPersonInfo = this.props[INITIAL_PERSON_INFO]\n        if (initialPersonInfo) {\n            const initialPersonProps = Info.initialPersonPropsFromInfo(initialPersonInfo)\n            extend(p, initialPersonProps)\n        }\n\n        return p\n    }\n\n    // safely fills the passed in object with stored properties,\n    // does not override any properties defined in both\n    // returns the passed in object\n\n    safe_merge(props: Properties): Properties {\n        each(this.props, function (val, prop) {\n            if (!(prop in props)) {\n                props[prop] = val\n            }\n        })\n\n        return props\n    }\n\n    update_config(config: PostHogConfig, oldConfig: PostHogConfig): void {\n        this.default_expiry = this.expire_days = config['cookie_expiration']\n        this.set_disabled(config['disable_persistence'])\n        this.set_cross_subdomain(config['cross_subdomain_cookie'])\n        this.set_secure(config['secure_cookie'])\n\n        if (config.persistence !== oldConfig.persistence) {\n            // If the persistence type has changed, we need to migrate the data.\n            const newStore = this.buildStorage(config)\n            const props = this.props\n\n            // clear the old store\n            this.clear()\n            this.storage = newStore\n            this.props = props\n\n            this.save()\n        }\n    }\n\n    set_disabled(disabled: boolean): void {\n        this.disabled = disabled\n        if (this.disabled) {\n            this.remove()\n        } else {\n            this.save()\n        }\n    }\n\n    set_cross_subdomain(cross_subdomain: boolean): void {\n        if (cross_subdomain !== this.cross_subdomain) {\n            this.cross_subdomain = cross_subdomain\n            this.remove()\n            this.save()\n        }\n    }\n\n    get_cross_subdomain(): boolean {\n        return !!this.cross_subdomain\n    }\n\n    set_secure(secure: boolean): void {\n        if (secure !== this.secure) {\n            this.secure = secure\n            this.remove()\n            this.save()\n        }\n    }\n\n    set_event_timer(event_name: string, timestamp: number): void {\n        const timers = this.props[EVENT_TIMERS_KEY] || {}\n        timers[event_name] = timestamp\n        this.props[EVENT_TIMERS_KEY] = timers\n        this.save()\n    }\n\n    remove_event_timer(event_name: string): number {\n        const timers = this.props[EVENT_TIMERS_KEY] || {}\n        const timestamp = timers[event_name]\n        if (!isUndefined(timestamp)) {\n            delete this.props[EVENT_TIMERS_KEY][event_name]\n            this.save()\n        }\n        return timestamp\n    }\n\n    get_property(prop: string): any {\n        return this.props[prop]\n    }\n\n    set_property(prop: string, to: any): void {\n        this.props[prop] = to\n        this.save()\n    }\n}\n", "import type { eventWithTime, listenerHandler, pluginEvent } from '@rrweb/types'\nimport type { record } from '@rrweb/record'\n\nimport { isObject } from '../../utils/type-utils'\nimport { SnapshotBuffer } from './sessionrecording'\n\n// taken from https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Cyclic_object_value#circular_references\nexport function circularReferenceReplacer() {\n    const ancestors: any[] = []\n    return function (this: any, _key: string, value: any) {\n        if (isObject(value)) {\n            // `this` is the object that value is contained in,\n            // i.e., its direct parent.\n            while (ancestors.length > 0 && ancestors[ancestors.length - 1] !== this) {\n                ancestors.pop()\n            }\n            if (ancestors.includes(value)) {\n                return '[Circular]'\n            }\n            ancestors.push(value)\n            return value\n        } else {\n            return value\n        }\n    }\n}\n\nexport function estimateSize(sizeable: unknown): number {\n    return JSON.stringify(sizeable, circularReferenceReplacer())?.length || 0\n}\n\nexport const replacementImageURI =\n    'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHJlY3Qgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBmaWxsPSJibGFjayIvPgo8cGF0aCBkPSJNOCAwSDE2TDAgMTZWOEw4IDBaIiBmaWxsPSIjMkQyRDJEIi8+CjxwYXRoIGQ9Ik0xNiA4VjE2SDhMMTYgOFoiIGZpbGw9IiMyRDJEMkQiLz4KPC9zdmc+Cg=='\n\nexport const FULL_SNAPSHOT_EVENT_TYPE = 2\nexport const META_EVENT_TYPE = 4\nexport const INCREMENTAL_SNAPSHOT_EVENT_TYPE = 3\nexport const PLUGIN_EVENT_TYPE = 6\nexport const MUTATION_SOURCE_TYPE = 0\n\nexport const MAX_MESSAGE_SIZE = 5000000 // ~5mb\n\nexport type rrwebRecord = {\n    (options: recordOptions): listenerHandler\n    addCustomEvent: (tag: string, payload: any) => void\n    takeFullSnapshot: () => void\n    mirror: {\n        getId(n: Node | undefined | null): number\n        getNode(id: number): Node | null\n    }\n}\n\nexport declare type recordOptions = Exclude<Parameters<typeof record<eventWithTime>>[0], undefined>\n\n/*\n * Check whether a data payload is nearing 5mb. If it is, it checks the data for\n * data URIs (the likely culprit for large payloads). If it finds data URIs, it either replaces\n * it with a generic image (if it's an image) or removes it.\n * @data {object} the rr-web data object\n * @returns {object} the rr-web data object with data uris filtered out\n */\nexport function ensureMaxMessageSize(data: eventWithTime): { event: eventWithTime; size: number } {\n    let stringifiedData = JSON.stringify(data)\n    // Note: with compression, this limit may be able to be increased\n    // but we're assuming most of the size is from a data uri which\n    // is unlikely to be compressed further\n\n    if (stringifiedData.length > MAX_MESSAGE_SIZE) {\n        // Regex that matches the pattern for a dataURI with the shape 'data:{mime type};{encoding},{data}'. It:\n        // 1) Checks if the pattern starts with 'data:' (potentially, not at the start of the string)\n        // 2) Extracts the mime type of the data uri in the first group\n        // 3) Determines when the data URI ends.Depending on if it's used in the src tag or css, it can end with a ) or \"\n        const dataURIRegex = /data:([\\w/\\-.]+);(\\w+),([^)\"]*)/gim\n        const matches = stringifiedData.matchAll(dataURIRegex)\n        for (const match of matches) {\n            if (match[1].toLocaleLowerCase().slice(0, 6) === 'image/') {\n                stringifiedData = stringifiedData.replace(match[0], replacementImageURI)\n            } else {\n                stringifiedData = stringifiedData.replace(match[0], '')\n            }\n        }\n    }\n    return { event: JSON.parse(stringifiedData), size: stringifiedData.length }\n}\n\nexport const CONSOLE_LOG_PLUGIN_NAME = 'rrweb/console@1' // The name of the rr-web plugin that emits console logs\n\n// Console logs can be really large. This function truncates large logs\n// It's a simple function that just truncates long strings.\n// TODO: Ideally this function would have better handling of objects + lists,\n// so they could still be rendered in a pretty way after truncation.\nexport function truncateLargeConsoleLogs(_event: eventWithTime) {\n    const event = _event as pluginEvent<{ payload: string[] }>\n\n    const MAX_STRING_SIZE = 2000 // Maximum number of characters allowed in a string\n    const MAX_STRINGS_PER_LOG = 10 // A log can consist of multiple strings (e.g. consol.log('string1', 'string2'))\n\n    if (\n        event &&\n        isObject(event) &&\n        event.type === PLUGIN_EVENT_TYPE &&\n        isObject(event.data) &&\n        event.data.plugin === CONSOLE_LOG_PLUGIN_NAME\n    ) {\n        // Note: event.data.payload.payload comes from rr-web, and is an array of strings\n        if (event.data.payload.payload.length > MAX_STRINGS_PER_LOG) {\n            event.data.payload.payload = event.data.payload.payload.slice(0, MAX_STRINGS_PER_LOG)\n            event.data.payload.payload.push('...[truncated]')\n        }\n        const updatedPayload = []\n        for (let i = 0; i < event.data.payload.payload.length; i++) {\n            if (\n                event.data.payload.payload[i] && // Value can be null\n                event.data.payload.payload[i].length > MAX_STRING_SIZE\n            ) {\n                updatedPayload.push(event.data.payload.payload[i].slice(0, MAX_STRING_SIZE) + '...[truncated]')\n            } else {\n                updatedPayload.push(event.data.payload.payload[i])\n            }\n        }\n        event.data.payload.payload = updatedPayload\n        // Return original type\n        return _event\n    }\n    return _event\n}\n\nexport const SEVEN_MEGABYTES = 1024 * 1024 * 7 * 0.9 // ~7mb (with some wiggle room)\n\n// recursively splits large buffers into smaller ones\n// uses a pretty high size limit to avoid splitting too much\nexport function splitBuffer(buffer: SnapshotBuffer, sizeLimit: number = SEVEN_MEGABYTES): SnapshotBuffer[] {\n    if (buffer.size >= sizeLimit && buffer.data.length > 1) {\n        const half = Math.floor(buffer.data.length / 2)\n        const firstHalf = buffer.data.slice(0, half)\n        const secondHalf = buffer.data.slice(half)\n        return [\n            splitBuffer({\n                size: estimateSize(firstHalf),\n                data: firstHalf,\n                sessionId: buffer.sessionId,\n                windowId: buffer.windowId,\n            }),\n            splitBuffer({\n                size: estimateSize(secondHalf),\n                data: secondHalf,\n                sessionId: buffer.sessionId,\n                windowId: buffer.windowId,\n            }),\n        ].flatMap((x) => x)\n    } else {\n        return [buffer]\n    }\n}\n", "var EventType = /* @__PURE__ */ ((EventType2) => {\n  EventType2[EventType2[\"DomContentLoaded\"] = 0] = \"DomContentLoaded\";\n  EventType2[EventType2[\"Load\"] = 1] = \"Load\";\n  EventType2[EventType2[\"FullSnapshot\"] = 2] = \"FullSnapshot\";\n  EventType2[EventType2[\"IncrementalSnapshot\"] = 3] = \"IncrementalSnapshot\";\n  EventType2[EventType2[\"Meta\"] = 4] = \"Meta\";\n  EventType2[EventType2[\"Custom\"] = 5] = \"Custom\";\n  EventType2[EventType2[\"Plugin\"] = 6] = \"Plugin\";\n  return EventType2;\n})(EventType || {});\nvar IncrementalSource = /* @__PURE__ */ ((IncrementalSource2) => {\n  IncrementalSource2[IncrementalSource2[\"Mutation\"] = 0] = \"Mutation\";\n  IncrementalSource2[IncrementalSource2[\"MouseMove\"] = 1] = \"MouseMove\";\n  IncrementalSource2[IncrementalSource2[\"MouseInteraction\"] = 2] = \"MouseInteraction\";\n  IncrementalSource2[IncrementalSource2[\"Scroll\"] = 3] = \"Scroll\";\n  IncrementalSource2[IncrementalSource2[\"ViewportResize\"] = 4] = \"ViewportResize\";\n  IncrementalSource2[IncrementalSource2[\"Input\"] = 5] = \"Input\";\n  IncrementalSource2[IncrementalSource2[\"TouchMove\"] = 6] = \"TouchMove\";\n  IncrementalSource2[IncrementalSource2[\"MediaInteraction\"] = 7] = \"MediaInteraction\";\n  IncrementalSource2[IncrementalSource2[\"StyleSheetRule\"] = 8] = \"StyleSheetRule\";\n  IncrementalSource2[IncrementalSource2[\"CanvasMutation\"] = 9] = \"CanvasMutation\";\n  IncrementalSource2[IncrementalSource2[\"Font\"] = 10] = \"Font\";\n  IncrementalSource2[IncrementalSource2[\"Log\"] = 11] = \"Log\";\n  IncrementalSource2[IncrementalSource2[\"Drag\"] = 12] = \"Drag\";\n  IncrementalSource2[IncrementalSource2[\"StyleDeclaration\"] = 13] = \"StyleDeclaration\";\n  IncrementalSource2[IncrementalSource2[\"Selection\"] = 14] = \"Selection\";\n  IncrementalSource2[IncrementalSource2[\"AdoptedStyleSheet\"] = 15] = \"AdoptedStyleSheet\";\n  IncrementalSource2[IncrementalSource2[\"CustomElement\"] = 16] = \"CustomElement\";\n  return IncrementalSource2;\n})(IncrementalSource || {});\nvar MouseInteractions = /* @__PURE__ */ ((MouseInteractions2) => {\n  MouseInteractions2[MouseInteractions2[\"MouseUp\"] = 0] = \"MouseUp\";\n  MouseInteractions2[MouseInteractions2[\"MouseDown\"] = 1] = \"MouseDown\";\n  MouseInteractions2[MouseInteractions2[\"Click\"] = 2] = \"Click\";\n  MouseInteractions2[MouseInteractions2[\"ContextMenu\"] = 3] = \"ContextMenu\";\n  MouseInteractions2[MouseInteractions2[\"DblClick\"] = 4] = \"DblClick\";\n  MouseInteractions2[MouseInteractions2[\"Focus\"] = 5] = \"Focus\";\n  MouseInteractions2[MouseInteractions2[\"Blur\"] = 6] = \"Blur\";\n  MouseInteractions2[MouseInteractions2[\"TouchStart\"] = 7] = \"TouchStart\";\n  MouseInteractions2[MouseInteractions2[\"TouchMove_Departed\"] = 8] = \"TouchMove_Departed\";\n  MouseInteractions2[MouseInteractions2[\"TouchEnd\"] = 9] = \"TouchEnd\";\n  MouseInteractions2[MouseInteractions2[\"TouchCancel\"] = 10] = \"TouchCancel\";\n  return MouseInteractions2;\n})(MouseInteractions || {});\nvar PointerTypes = /* @__PURE__ */ ((PointerTypes2) => {\n  PointerTypes2[PointerTypes2[\"Mouse\"] = 0] = \"Mouse\";\n  PointerTypes2[PointerTypes2[\"Pen\"] = 1] = \"Pen\";\n  PointerTypes2[PointerTypes2[\"Touch\"] = 2] = \"Touch\";\n  return PointerTypes2;\n})(PointerTypes || {});\nvar CanvasContext = /* @__PURE__ */ ((CanvasContext2) => {\n  CanvasContext2[CanvasContext2[\"2D\"] = 0] = \"2D\";\n  CanvasContext2[CanvasContext2[\"WebGL\"] = 1] = \"WebGL\";\n  CanvasContext2[CanvasContext2[\"WebGL2\"] = 2] = \"WebGL2\";\n  return CanvasContext2;\n})(CanvasContext || {});\nvar MediaInteractions = /* @__PURE__ */ ((MediaInteractions2) => {\n  MediaInteractions2[MediaInteractions2[\"Play\"] = 0] = \"Play\";\n  MediaInteractions2[MediaInteractions2[\"Pause\"] = 1] = \"Pause\";\n  MediaInteractions2[MediaInteractions2[\"Seeked\"] = 2] = \"Seeked\";\n  MediaInteractions2[MediaInteractions2[\"VolumeChange\"] = 3] = \"VolumeChange\";\n  MediaInteractions2[MediaInteractions2[\"RateChange\"] = 4] = \"RateChange\";\n  return MediaInteractions2;\n})(MediaInteractions || {});\nvar ReplayerEvents = /* @__PURE__ */ ((ReplayerEvents2) => {\n  ReplayerEvents2[\"Start\"] = \"start\";\n  ReplayerEvents2[\"Pause\"] = \"pause\";\n  ReplayerEvents2[\"Resume\"] = \"resume\";\n  ReplayerEvents2[\"Resize\"] = \"resize\";\n  ReplayerEvents2[\"Finish\"] = \"finish\";\n  ReplayerEvents2[\"FullsnapshotRebuilded\"] = \"fullsnapshot-rebuilded\";\n  ReplayerEvents2[\"LoadStylesheetStart\"] = \"load-stylesheet-start\";\n  ReplayerEvents2[\"LoadStylesheetEnd\"] = \"load-stylesheet-end\";\n  ReplayerEvents2[\"SkipStart\"] = \"skip-start\";\n  ReplayerEvents2[\"SkipEnd\"] = \"skip-end\";\n  ReplayerEvents2[\"MouseInteraction\"] = \"mouse-interaction\";\n  ReplayerEvents2[\"EventCast\"] = \"event-cast\";\n  ReplayerEvents2[\"CustomEvent\"] = \"custom-event\";\n  ReplayerEvents2[\"Flush\"] = \"flush\";\n  ReplayerEvents2[\"StateChange\"] = \"state-change\";\n  ReplayerEvents2[\"PlayBack\"] = \"play-back\";\n  ReplayerEvents2[\"Destroy\"] = \"destroy\";\n  return ReplayerEvents2;\n})(ReplayerEvents || {});\nexport {\n  CanvasContext,\n  EventType,\n  IncrementalSource,\n  MediaInteractions,\n  MouseInteractions,\n  PointerTypes,\n  ReplayerEvents\n};\n//# sourceMappingURL=types.js.map\n", "import { TOOLBAR_CONTAINER_CLASS, TOOLBAR_ID } from '../constants'\n\nexport function isElementInToolbar(el: EventTarget | null): boolean {\n    if (el instanceof Element) {\n        // closest isn't available in IE11, but we'll polyfill when bundling\n        return el.id === TOOLBAR_ID || !!el.closest?.('.' + TOOLBAR_CONTAINER_CLASS)\n    }\n    return false\n}\n\n/*\n * Check whether an element has nodeType Node.ELEMENT_NODE\n * @param {Element} el - element to check\n * @returns {boolean} whether el is of the correct nodeType\n */\nexport function isElementNode(el: Node | Element | undefined | null): el is Element {\n    return !!el && el.nodeType === 1 // Node.ELEMENT_NODE - use integer constant for browser portability\n}\n\n/*\n * Check whether an element is of a given tag type.\n * Due to potential reference discrepancies (such as the webcomponents.js polyfill),\n * we want to match tagNames instead of specific references because something like\n * element === document.body won't always work because element might not be a native\n * element.\n * @param {Element} el - element to check\n * @param {string} tag - tag name (e.g., \"div\")\n * @returns {boolean} whether el is of the given tag type\n */\nexport function isTag(el: Element | undefined | null, tag: string): el is HTMLElement {\n    return !!el && !!el.tagName && el.tagName.toLowerCase() === tag.toLowerCase()\n}\n\n/*\n * Check whether an element has nodeType Node.TEXT_NODE\n * @param {Element} el - element to check\n * @returns {boolean} whether el is of the correct nodeType\n */\nexport function isTextNode(el: Element | undefined | null): el is HTMLElement {\n    return !!el && el.nodeType === 3 // Node.TEXT_NODE - use integer constant for browser portability\n}\n\n/*\n * Check whether an element has nodeType Node.DOCUMENT_FRAGMENT_NODE\n * @param {Element} el - element to check\n * @returns {boolean} whether el is of the correct nodeType\n */\nexport function isDocumentFragment(el: Element | ParentNode | undefined | null): el is DocumentFragment {\n    return !!el && el.nodeType === 11 // Node.DOCUMENT_FRAGMENT_NODE - use integer constant for browser portability\n}\n", "import { AutocaptureConfig, Properties } from './types'\nimport { each, entries } from './utils'\n\nimport { isArray, isNullish, isString, isUndefined } from './utils/type-utils'\nimport { logger } from './utils/logger'\nimport { window } from './utils/globals'\nimport { isDocumentFragment, isElementNode, isTag, isTextNode } from './utils/element-utils'\nimport { includes, trim } from './utils/string-utils'\n\nexport function splitClassString(s: string): string[] {\n    return s ? trim(s).split(/\\s+/) : []\n}\n\nfunction checkForURLMatches(urlsList: (string | RegExp)[]): boolean {\n    const url = window?.location.href\n    return !!(url && urlsList && urlsList.some((regex) => url.match(regex)))\n}\n\n/*\n * Get the className of an element, accounting for edge cases where element.className is an object\n *\n * Because this is a string it can contain unexpected characters\n * So, this method safely splits the className and returns that array.\n */\nexport function getClassNames(el: Element): string[] {\n    let className = ''\n    switch (typeof el.className) {\n        case 'string':\n            className = el.className\n            break\n        // TODO: when is this ever used?\n        case 'object': // handle cases where className might be SVGAnimatedString or some other type\n            className =\n                (el.className && 'baseVal' in el.className ? (el.className as any).baseVal : null) ||\n                el.getAttribute('class') ||\n                ''\n            break\n        default:\n            className = ''\n    }\n\n    return splitClassString(className)\n}\n\nexport function makeSafeText(s: string | null | undefined): string | null {\n    if (isNullish(s)) {\n        return null\n    }\n\n    return (\n        trim(s)\n            // scrub potentially sensitive values\n            .split(/(\\s+)/)\n            .filter((s) => shouldCaptureValue(s))\n            .join('')\n            // normalize whitespace\n            .replace(/[\\r\\n]/g, ' ')\n            .replace(/[ ]+/g, ' ')\n            // truncate\n            .substring(0, 255)\n    )\n}\n\n/*\n * Get the direct text content of an element, protecting against sensitive data collection.\n * Concats textContent of each of the element's text node children; this avoids potential\n * collection of sensitive data that could happen if we used element.textContent and the\n * element had sensitive child elements, since element.textContent includes child content.\n * Scrubs values that look like they could be sensitive (i.e. cc or ssn number).\n * @param {Element} el - element to get the text of\n * @returns {string} the element's direct text content\n */\nexport function getSafeText(el: Element): string {\n    let elText = ''\n\n    if (shouldCaptureElement(el) && !isSensitiveElement(el) && el.childNodes && el.childNodes.length) {\n        each(el.childNodes, function (child) {\n            if (isTextNode(child) && child.textContent) {\n                elText += makeSafeText(child.textContent) ?? ''\n            }\n        })\n    }\n\n    return trim(elText)\n}\n\nexport function getEventTarget(e: Event): Element | null {\n    // https://developer.mozilla.org/en-US/docs/Web/API/Event/target#Compatibility_notes\n    if (isUndefined(e.target)) {\n        return (e.srcElement as Element) || null\n    } else {\n        if ((e.target as HTMLElement)?.shadowRoot) {\n            return (e.composedPath()[0] as Element) || null\n        }\n        return (e.target as Element) || null\n    }\n}\n\nexport const autocaptureCompatibleElements = ['a', 'button', 'form', 'input', 'select', 'textarea', 'label']\n\n/*\n if there is no config, then all elements are allowed\n if there is a config, and there is an allow list, then only elements in the allow list are allowed\n assumes that some other code is checking this element's parents\n */\nfunction checkIfElementTreePassesElementAllowList(\n    elements: Element[],\n    autocaptureConfig: AutocaptureConfig | undefined\n): boolean {\n    const allowlist = autocaptureConfig?.element_allowlist\n    if (isUndefined(allowlist)) {\n        // everything is allowed, when there is no allow list\n        return true\n    }\n\n    // check each element in the tree\n    // if any of the elements are in the allow list, then the tree is allowed\n    for (const el of elements) {\n        if (allowlist.some((elementType) => el.tagName.toLowerCase() === elementType)) {\n            return true\n        }\n    }\n\n    // otherwise there is an allow list and this element tree didn't match it\n    return false\n}\n\n/*\n if there is no config, then all elements are allowed\n if there is a config, and there is an allow list, then\n only elements that match the css selector in the allow list are allowed\n assumes that some other code is checking this element's parents\n */\nfunction checkIfElementTreePassesCSSSelectorAllowList(\n    elements: Element[],\n    autocaptureConfig: AutocaptureConfig | undefined\n): boolean {\n    const allowlist = autocaptureConfig?.css_selector_allowlist\n    if (isUndefined(allowlist)) {\n        // everything is allowed, when there is no allow list\n        return true\n    }\n\n    // check each element in the tree\n    // if any of the elements are in the allow list, then the tree is allowed\n    for (const el of elements) {\n        if (allowlist.some((selector) => el.matches(selector))) {\n            return true\n        }\n    }\n\n    // otherwise there is an allow list and this element tree didn't match it\n    return false\n}\n\nexport function getParentElement(curEl: Element): Element | false {\n    const parentNode = curEl.parentNode\n    if (!parentNode || !isElementNode(parentNode)) return false\n    return parentNode\n}\n\n/*\n * Check whether a DOM event should be \"captured\" or if it may contain sentitive data\n * using a variety of heuristics.\n * @param {Element} el - element to check\n * @param {Event} event - event to check\n * @param {Object} autocaptureConfig - autocapture config\n * @param {boolean} captureOnAnyElement - whether to capture on any element, clipboard autocapture doesn't restrict to \"clickable\" elements\n * @param {string[]} allowedEventTypes - event types to capture, normally just 'click', but some autocapture types react to different events, some elements have fixed events (e.g., form has \"submit\")\n * @returns {boolean} whether the event should be captured\n */\nexport function shouldCaptureDomEvent(\n    el: Element,\n    event: Event,\n    autocaptureConfig: AutocaptureConfig | undefined = undefined,\n    captureOnAnyElement?: boolean,\n    allowedEventTypes?: string[]\n): boolean {\n    if (!window || !el || isTag(el, 'html') || !isElementNode(el)) {\n        return false\n    }\n\n    if (autocaptureConfig?.url_allowlist) {\n        // if the current URL is not in the allow list, don't capture\n        if (!checkForURLMatches(autocaptureConfig.url_allowlist)) {\n            return false\n        }\n    }\n\n    if (autocaptureConfig?.url_ignorelist) {\n        // if the current URL is in the ignore list, don't capture\n        if (checkForURLMatches(autocaptureConfig.url_ignorelist)) {\n            return false\n        }\n    }\n\n    if (autocaptureConfig?.dom_event_allowlist) {\n        const allowlist = autocaptureConfig.dom_event_allowlist\n        if (allowlist && !allowlist.some((eventType) => event.type === eventType)) {\n            return false\n        }\n    }\n\n    let parentIsUsefulElement = false\n    const targetElementList: Element[] = [el]\n    let parentNode: Element | boolean = true\n    let curEl: Element = el\n    while (curEl.parentNode && !isTag(curEl, 'body')) {\n        // If element is a shadow root, we skip it\n        if (isDocumentFragment(curEl.parentNode)) {\n            targetElementList.push((curEl.parentNode as any).host)\n            curEl = (curEl.parentNode as any).host\n            continue\n        }\n        parentNode = getParentElement(curEl)\n        if (!parentNode) break\n        if (captureOnAnyElement || autocaptureCompatibleElements.indexOf(parentNode.tagName.toLowerCase()) > -1) {\n            parentIsUsefulElement = true\n        } else {\n            const compStyles = window.getComputedStyle(parentNode)\n            if (compStyles && compStyles.getPropertyValue('cursor') === 'pointer') {\n                parentIsUsefulElement = true\n            }\n        }\n\n        targetElementList.push(parentNode)\n        curEl = parentNode\n    }\n\n    if (!checkIfElementTreePassesElementAllowList(targetElementList, autocaptureConfig)) {\n        return false\n    }\n\n    if (!checkIfElementTreePassesCSSSelectorAllowList(targetElementList, autocaptureConfig)) {\n        return false\n    }\n\n    const compStyles = window.getComputedStyle(el)\n    if (compStyles && compStyles.getPropertyValue('cursor') === 'pointer' && event.type === 'click') {\n        return true\n    }\n\n    const tag = el.tagName.toLowerCase()\n    switch (tag) {\n        case 'html':\n            return false\n        case 'form':\n            return (allowedEventTypes || ['submit']).indexOf(event.type) >= 0\n        case 'input':\n        case 'select':\n        case 'textarea':\n            return (allowedEventTypes || ['change', 'click']).indexOf(event.type) >= 0\n        default:\n            if (parentIsUsefulElement) return (allowedEventTypes || ['click']).indexOf(event.type) >= 0\n            return (\n                (allowedEventTypes || ['click']).indexOf(event.type) >= 0 &&\n                (autocaptureCompatibleElements.indexOf(tag) > -1 || el.getAttribute('contenteditable') === 'true')\n            )\n    }\n}\n\n/*\n * Check whether a DOM element should be \"captured\" or if it may contain sentitive data\n * using a variety of heuristics.\n * @param {Element} el - element to check\n * @returns {boolean} whether the element should be captured\n */\nexport function shouldCaptureElement(el: Element): boolean {\n    for (let curEl = el; curEl.parentNode && !isTag(curEl, 'body'); curEl = curEl.parentNode as Element) {\n        const classes = getClassNames(curEl)\n        if (includes(classes, 'ph-sensitive') || includes(classes, 'ph-no-capture')) {\n            return false\n        }\n    }\n\n    if (includes(getClassNames(el), 'ph-include')) {\n        return true\n    }\n\n    // don't include hidden or password fields\n    const type = (el as HTMLInputElement).type || ''\n    if (isString(type)) {\n        // it's possible for el.type to be a DOM element if el is a form with a child input[name=\"type\"]\n        switch (type.toLowerCase()) {\n            case 'hidden':\n                return false\n            case 'password':\n                return false\n        }\n    }\n\n    // filter out data from fields that look like sensitive fields\n    const name = (el as HTMLInputElement).name || el.id || ''\n    // See https://github.com/posthog/posthog-js/issues/165\n    // Under specific circumstances a bug caused .replace to be called on a DOM element\n    // instead of a string, removing the element from the page. Ensure this issue is mitigated.\n    if (isString(name)) {\n        // it's possible for el.name or el.id to be a DOM element if el is a form with a child input[name=\"name\"]\n        const sensitiveNameRegex =\n            /^cc|cardnum|ccnum|creditcard|csc|cvc|cvv|exp|pass|pwd|routing|seccode|securitycode|securitynum|socialsec|socsec|ssn/i\n        if (sensitiveNameRegex.test(name.replace(/[^a-zA-Z0-9]/g, ''))) {\n            return false\n        }\n    }\n\n    return true\n}\n\n/*\n * Check whether a DOM element is 'sensitive' and we should only capture limited data\n * @param {Element} el - element to check\n * @returns {boolean} whether the element should be captured\n */\nexport function isSensitiveElement(el: Element): boolean {\n    // don't send data from inputs or similar elements since there will always be\n    // a risk of clientside javascript placing sensitive data in attributes\n    const allowedInputTypes = ['button', 'checkbox', 'submit', 'reset']\n    if (\n        (isTag(el, 'input') && !allowedInputTypes.includes((el as HTMLInputElement).type)) ||\n        isTag(el, 'select') ||\n        isTag(el, 'textarea') ||\n        el.getAttribute('contenteditable') === 'true'\n    ) {\n        return true\n    }\n    return false\n}\n\n// Define the core pattern for matching credit card numbers\nconst coreCCPattern = `(4[0-9]{12}(?:[0-9]{3})?)|(5[1-5][0-9]{14})|(6(?:011|5[0-9]{2})[0-9]{12})|(3[47][0-9]{13})|(3(?:0[0-5]|[68][0-9])[0-9]{11})|((?:2131|1800|35[0-9]{3})[0-9]{11})`\n// Create the Anchored version of the regex by adding '^' at the start and '$' at the end\nconst anchoredCCRegex = new RegExp(`^(?:${coreCCPattern})$`)\n// The Unanchored version is essentially the core pattern, usable as is for partial matches\nconst unanchoredCCRegex = new RegExp(coreCCPattern)\n\n// Define the core pattern for matching SSNs with optional dashes\nconst coreSSNPattern = `\\\\d{3}-?\\\\d{2}-?\\\\d{4}`\n// Create the Anchored version of the regex by adding '^' at the start and '$' at the end\nconst anchoredSSNRegex = new RegExp(`^(${coreSSNPattern})$`)\n// The Unanchored version is essentially the core pattern itself, usable for partial matches\nconst unanchoredSSNRegex = new RegExp(`(${coreSSNPattern})`)\n\n/*\n * Check whether a string value should be \"captured\" or if it may contain sensitive data\n * using a variety of heuristics.\n * @param {string} value - string value to check\n * @param {boolean} anchorRegexes - whether to anchor the regexes to the start and end of the string\n * @returns {boolean} whether the element should be captured\n */\nexport function shouldCaptureValue(value: string, anchorRegexes = true): boolean {\n    if (isNullish(value)) {\n        return false\n    }\n\n    if (isString(value)) {\n        value = trim(value)\n\n        // check to see if input value looks like a credit card number\n        // see: https://www.safaribooksonline.com/library/view/regular-expressions-cookbook/9781449327453/ch04s20.html\n        const ccRegex = anchorRegexes ? anchoredCCRegex : unanchoredCCRegex\n        if (ccRegex.test((value || '').replace(/[- ]/g, ''))) {\n            return false\n        }\n\n        // check to see if input value looks like a social security number\n        const ssnRegex = anchorRegexes ? anchoredSSNRegex : unanchoredSSNRegex\n        if (ssnRegex.test(value)) {\n            return false\n        }\n    }\n\n    return true\n}\n\n/*\n * Check whether an attribute name is an Angular style attr (either _ngcontent or _nghost)\n * These update on each build and lead to noise in the element chain\n * More details on the attributes here: https://angular.io/guide/view-encapsulation\n * @param {string} attributeName - string value to check\n * @returns {boolean} whether the element is an angular tag\n */\nexport function isAngularStyleAttr(attributeName: string): boolean {\n    if (isString(attributeName)) {\n        return attributeName.substring(0, 10) === '_ngcontent' || attributeName.substring(0, 7) === '_nghost'\n    }\n    return false\n}\n\n/*\n * Iterate through children of a target element looking for span tags\n * and return the text content of the span tags, separated by spaces,\n * along with the direct text content of the target element\n * @param {Element} target - element to check\n * @returns {string} text content of the target element and its child span tags\n */\nexport function getDirectAndNestedSpanText(target: Element): string {\n    let text = getSafeText(target)\n    text = `${text} ${getNestedSpanText(target)}`.trim()\n    return shouldCaptureValue(text) ? text : ''\n}\n\n/*\n * Iterate through children of a target element looking for span tags\n * and return the text content of the span tags, separated by spaces\n * @param {Element} target - element to check\n * @returns {string} text content of span tags\n */\nexport function getNestedSpanText(target: Element): string {\n    let text = ''\n    if (target && target.childNodes && target.childNodes.length) {\n        each(target.childNodes, function (child) {\n            if (child && child.tagName?.toLowerCase() === 'span') {\n                try {\n                    const spanText = getSafeText(child)\n                    text = `${text} ${spanText}`.trim()\n\n                    if (child.childNodes && child.childNodes.length) {\n                        text = `${text} ${getNestedSpanText(child)}`.trim()\n                    }\n                } catch (e) {\n                    logger.error('[AutoCapture]', e)\n                }\n            }\n        })\n    }\n    return text\n}\n\n/*\nBack in the day storing events in Postgres we use Elements for autocapture events.\nNow we're using elements_chain. We used to do this parsing/processing during ingestion.\nThis code is just copied over from ingestion, but we should optimize it\nto create elements_chain string directly.\n*/\nexport function getElementsChainString(elements: Properties[]): string {\n    return elementsToString(extractElements(elements))\n}\n\n// This interface is called 'Element' in plugin-scaffold https://github.com/PostHog/plugin-scaffold/blob/b07d3b879796ecc7e22deb71bf627694ba05386b/src/types.ts#L200\n// However 'Element' is a DOM Element when run in the browser, so we have to rename it\ninterface PHElement {\n    text?: string\n    tag_name?: string\n    href?: string\n    attr_id?: string\n    attr_class?: string[]\n    nth_child?: number\n    nth_of_type?: number\n    attributes?: Record<string, any>\n    event_id?: number\n    order?: number\n    group_id?: number\n}\n\nfunction escapeQuotes(input: string): string {\n    return input.replace(/\"|\\\\\"/g, '\\\\\"')\n}\n\nfunction elementsToString(elements: PHElement[]): string {\n    const ret = elements.map((element) => {\n        let el_string = ''\n        if (element.tag_name) {\n            el_string += element.tag_name\n        }\n        if (element.attr_class) {\n            element.attr_class.sort()\n            for (const single_class of element.attr_class) {\n                el_string += `.${single_class.replace(/\"/g, '')}`\n            }\n        }\n        const attributes: Record<string, any> = {\n            ...(element.text ? { text: element.text } : {}),\n            'nth-child': element.nth_child ?? 0,\n            'nth-of-type': element.nth_of_type ?? 0,\n            ...(element.href ? { href: element.href } : {}),\n            ...(element.attr_id ? { attr_id: element.attr_id } : {}),\n            ...element.attributes,\n        }\n        const sortedAttributes: Record<string, any> = {}\n        entries(attributes)\n            .sort(([a], [b]) => a.localeCompare(b))\n            .forEach(\n                ([key, value]) => (sortedAttributes[escapeQuotes(key.toString())] = escapeQuotes(value.toString()))\n            )\n        el_string += ':'\n        el_string += entries(attributes)\n            .map(([key, value]) => `${key}=\"${value}\"`)\n            .join('')\n        return el_string\n    })\n    return ret.join(';')\n}\n\nfunction extractElements(elements: Properties[]): PHElement[] {\n    return elements.map((el) => {\n        const response = {\n            text: el['$el_text']?.slice(0, 400),\n            tag_name: el['tag_name'],\n            href: el['attr__href']?.slice(0, 2048),\n            attr_class: extractAttrClass(el),\n            attr_id: el['attr__id'],\n            nth_child: el['nth_child'],\n            nth_of_type: el['nth_of_type'],\n            attributes: {} as { [id: string]: any },\n        }\n\n        entries(el)\n            .filter(([key]) => key.indexOf('attr__') === 0)\n            .forEach(([key, value]) => (response.attributes[key] = value))\n        return response\n    })\n}\n\nfunction extractAttrClass(el: Properties): PHElement['attr_class'] {\n    const attr_class = el['attr__class']\n    if (!attr_class) {\n        return undefined\n    } else if (isArray(attr_class)) {\n        return attr_class\n    } else {\n        return splitClassString(attr_class)\n    }\n}\n", "import { CapturedNetworkRequest, NetworkRecordOptions, PostHogConfig } from '../../types'\nimport { isFunction, isNullish, isString, isUndefined } from '../../utils/type-utils'\nimport { convertToURL } from '../../utils/request-utils'\nimport { logger } from '../../utils/logger'\nimport { shouldCaptureValue } from '../../autocapture-utils'\nimport { each } from '../../utils'\n\nconst LOGGER_PREFIX = '[SessionRecording]'\n\nconst REDACTED = 'redacted'\n\nexport const defaultNetworkOptions: Required<NetworkRecordOptions> = {\n    initiatorTypes: [\n        'audio',\n        'beacon',\n        'body',\n        'css',\n        'early-hint',\n        'embed',\n        'fetch',\n        'frame',\n        'iframe',\n        'icon',\n        'image',\n        'img',\n        'input',\n        'link',\n        'navigation',\n        'object',\n        'ping',\n        'script',\n        'track',\n        'video',\n        'xmlhttprequest',\n    ],\n    maskRequestFn: (data: CapturedNetworkRequest) => data,\n    recordHeaders: false,\n    recordBody: false,\n    recordInitialRequests: false,\n    recordPerformance: false,\n    performanceEntryTypeToObserve: [\n        // 'event', // This is too noisy as it covers all browser events\n        'first-input',\n        // 'mark', // Mark is used too liberally. We would need to filter for specific marks\n        // 'measure', // Measure is used too liberally. We would need to filter for specific measures\n        'navigation',\n        'paint',\n        'resource',\n    ],\n    payloadSizeLimitBytes: 1000000,\n    payloadHostDenyList: [\n        '.lr-ingest.io',\n        '.ingest.sentry.io',\n        '.clarity.ms',\n        // NB no leading dot here\n        'analytics.google.com',\n    ],\n}\n\nconst HEADER_DENY_LIST = [\n    'authorization',\n    'x-forwarded-for',\n    'authorization',\n    'cookie',\n    'set-cookie',\n    'x-api-key',\n    'x-real-ip',\n    'remote-addr',\n    'forwarded',\n    'proxy-authorization',\n    'x-csrf-token',\n    'x-csrftoken',\n    'x-xsrf-token',\n]\n\nconst PAYLOAD_CONTENT_DENY_LIST = [\n    'password',\n    'secret',\n    'passwd',\n    'api_key',\n    'apikey',\n    'auth',\n    'credentials',\n    'mysql_pwd',\n    'privatekey',\n    'private_key',\n    'token',\n]\n\n// we always remove headers on the deny list because we never want to capture this sensitive data\nconst removeAuthorizationHeader = (data: CapturedNetworkRequest): CapturedNetworkRequest => {\n    const headers = data.requestHeaders\n    if (!isNullish(headers)) {\n        each(Object.keys(headers ?? {}), (header) => {\n            if (HEADER_DENY_LIST.includes(header.toLowerCase())) {\n                headers[header] = REDACTED\n            }\n        })\n    }\n    return data\n}\n\nconst POSTHOG_PATHS_TO_IGNORE = ['/s/', '/e/', '/i/']\n// want to ignore posthog paths when capturing requests, or we can get trapped in a loop\n// because calls to PostHog would be reported using a call to PostHog which would be reported....\nconst ignorePostHogPaths = (\n    data: CapturedNetworkRequest,\n    apiHostConfig: PostHogConfig['api_host']\n): CapturedNetworkRequest | undefined => {\n    const url = convertToURL(data.name)\n\n    // we need to account for api host config as e.g. pathname could be /ingest/s/ and we want to ignore that\n    let replaceValue = apiHostConfig.indexOf('http') === 0 ? convertToURL(apiHostConfig)?.pathname : apiHostConfig\n    if (replaceValue === '/') {\n        replaceValue = ''\n    }\n    const pathname = url?.pathname.replace(replaceValue || '', '')\n\n    if (url && pathname && POSTHOG_PATHS_TO_IGNORE.some((path) => pathname.indexOf(path) === 0)) {\n        return undefined\n    }\n    return data\n}\n\nfunction estimateBytes(payload: string): number {\n    return new Blob([payload]).size\n}\n\nfunction enforcePayloadSizeLimit(\n    payload: string | null | undefined,\n    headers: Record<string, any> | undefined,\n    limit: number,\n    description: string\n): string | null | undefined {\n    if (isNullish(payload)) {\n        return payload\n    }\n\n    let requestContentLength: string | number = headers?.['content-length'] || estimateBytes(payload)\n    if (isString(requestContentLength)) {\n        requestContentLength = parseInt(requestContentLength)\n    }\n\n    if (requestContentLength > limit) {\n        return LOGGER_PREFIX + ` ${description} body too large to record (${requestContentLength} bytes)`\n    }\n\n    return payload\n}\n\n// people can have arbitrarily large payloads on their site, but we don't want to ingest them\nconst limitPayloadSize = (\n    options: NetworkRecordOptions\n): ((data: CapturedNetworkRequest | undefined) => CapturedNetworkRequest | undefined) => {\n    // the smallest of 1MB or the specified limit if there is one\n    const limit = Math.min(1000000, options.payloadSizeLimitBytes ?? 1000000)\n\n    return (data) => {\n        if (data?.requestBody) {\n            data.requestBody = enforcePayloadSizeLimit(data.requestBody, data.requestHeaders, limit, 'Request')\n        }\n\n        if (data?.responseBody) {\n            data.responseBody = enforcePayloadSizeLimit(data.responseBody, data.responseHeaders, limit, 'Response')\n        }\n\n        return data\n    }\n}\n\nfunction scrubPayload(payload: string | null | undefined, label: 'Request' | 'Response'): string | null | undefined {\n    if (isNullish(payload)) {\n        return payload\n    }\n    let scrubbed = payload\n\n    if (!shouldCaptureValue(scrubbed, false)) {\n        scrubbed = LOGGER_PREFIX + ' ' + label + ' body ' + REDACTED\n    }\n    each(PAYLOAD_CONTENT_DENY_LIST, (text) => {\n        if (scrubbed?.length && scrubbed?.indexOf(text) !== -1) {\n            scrubbed = LOGGER_PREFIX + ' ' + label + ' body ' + REDACTED + ' as might contain: ' + text\n        }\n    })\n\n    return scrubbed\n}\n\nfunction scrubPayloads(capturedRequest: CapturedNetworkRequest | undefined): CapturedNetworkRequest | undefined {\n    if (isUndefined(capturedRequest)) {\n        return undefined\n    }\n\n    capturedRequest.requestBody = scrubPayload(capturedRequest.requestBody, 'Request')\n    capturedRequest.responseBody = scrubPayload(capturedRequest.responseBody, 'Response')\n\n    return capturedRequest\n}\n\n/**\n *  whether a maskRequestFn is provided or not,\n *  we ensure that we remove the denied header from requests\n *  we _never_ want to record that header by accident\n *  if someone complains then we'll add an opt-in to let them override it\n */\nexport const buildNetworkRequestOptions = (\n    instanceConfig: PostHogConfig,\n    remoteNetworkOptions: Pick<\n        NetworkRecordOptions,\n        'recordHeaders' | 'recordBody' | 'recordPerformance' | 'payloadHostDenyList'\n    >\n): NetworkRecordOptions => {\n    const config: NetworkRecordOptions = {\n        payloadSizeLimitBytes: defaultNetworkOptions.payloadSizeLimitBytes,\n        performanceEntryTypeToObserve: [...defaultNetworkOptions.performanceEntryTypeToObserve],\n        payloadHostDenyList: [\n            ...(remoteNetworkOptions.payloadHostDenyList || []),\n            ...defaultNetworkOptions.payloadHostDenyList,\n        ],\n    }\n    // client can always disable despite remote options\n    const canRecordHeaders =\n        instanceConfig.session_recording.recordHeaders === false ? false : remoteNetworkOptions.recordHeaders\n    const canRecordBody =\n        instanceConfig.session_recording.recordBody === false ? false : remoteNetworkOptions.recordBody\n    const canRecordPerformance =\n        instanceConfig.capture_performance === false ? false : remoteNetworkOptions.recordPerformance\n\n    const payloadLimiter = limitPayloadSize(config)\n\n    const enforcedCleaningFn: NetworkRecordOptions['maskRequestFn'] = (d: CapturedNetworkRequest) =>\n        payloadLimiter(ignorePostHogPaths(removeAuthorizationHeader(d), instanceConfig.api_host))\n\n    const hasDeprecatedMaskFunction = isFunction(instanceConfig.session_recording.maskNetworkRequestFn)\n\n    if (hasDeprecatedMaskFunction && isFunction(instanceConfig.session_recording.maskCapturedNetworkRequestFn)) {\n        logger.warn(\n            'Both `maskNetworkRequestFn` and `maskCapturedNetworkRequestFn` are defined. `maskNetworkRequestFn` will be ignored.'\n        )\n    }\n\n    if (hasDeprecatedMaskFunction) {\n        instanceConfig.session_recording.maskCapturedNetworkRequestFn = (data: CapturedNetworkRequest) => {\n            const cleanedURL = instanceConfig.session_recording.maskNetworkRequestFn!({ url: data.name })\n            return {\n                ...data,\n                name: cleanedURL?.url,\n            } as CapturedNetworkRequest\n        }\n    }\n\n    config.maskRequestFn = isFunction(instanceConfig.session_recording.maskCapturedNetworkRequestFn)\n        ? (data) => {\n              const cleanedRequest = enforcedCleaningFn(data)\n              return cleanedRequest\n                  ? (instanceConfig.session_recording.maskCapturedNetworkRequestFn?.(cleanedRequest) ?? undefined)\n                  : undefined\n          }\n        : (data) => scrubPayloads(enforcedCleaningFn(data))\n\n    return {\n        ...defaultNetworkOptions,\n        ...config,\n        recordHeaders: canRecordHeaders,\n        recordBody: canRecordBody,\n        recordPerformance: canRecordPerformance,\n        recordInitialRequests: canRecordPerformance,\n    }\n}\n", "import { isNumber } from './type-utils'\nimport { logger } from './logger'\n\n/**\n * Clamps a value to a range.\n * @param value the value to clamp\n * @param min the minimum value\n * @param max the maximum value\n * @param label if provided then enables logging and prefixes all logs with labels\n * @param fallbackValue if provided then returns this value if the value is not a valid number\n */\nexport function clampToRange(value: unknown, min: number, max: number, label?: string, fallbackValue?: number): number {\n    if (min > max) {\n        logger.warn('min cannot be greater than max.')\n        min = max\n    }\n\n    if (!isNumber(value)) {\n        label &&\n            logger.warn(\n                label + ' must be a number. using max or fallback. max: ' + max + ', fallback: ' + fallbackValue\n            )\n        return clampToRange(fallbackValue || max, min, max, label)\n    } else if (value > max) {\n        label && logger.warn(label + ' cannot be  greater than max: ' + max + '. Using max value instead.')\n        return max\n    } else if (value < min) {\n        label && logger.warn(label + ' cannot be less than min: ' + min + '. Using min value instead.')\n        return min\n    } else {\n        return value\n    }\n}\n", "import type { eventWithTime, mutationCallbackParam } from '@rrweb/types'\nimport { INCREMENTAL_SNAPSHOT_EVENT_TYPE, MUTATION_SOURCE_TYPE, rrwebRecord } from './sessionrecording-utils'\nimport { clampToRange } from '../../utils/number-utils'\n\nexport class MutationRateLimiter {\n    private bucketSize = 100\n    private refillRate = 10\n    private mutationBuckets: Record<string, number> = {}\n    private loggedTracker: Record<string, boolean> = {}\n\n    constructor(\n        private readonly rrweb: rrwebRecord,\n        private readonly options: {\n            bucketSize?: number\n            refillRate?: number\n            onBlockedNode?: (id: number, node: Node | null) => void\n        } = {}\n    ) {\n        this.refillRate = clampToRange(\n            this.options.refillRate ?? this.refillRate,\n            0,\n            100,\n            'mutation throttling refill rate'\n        )\n        this.bucketSize = clampToRange(\n            this.options.bucketSize ?? this.bucketSize,\n            0,\n            100,\n            'mutation throttling bucket size'\n        )\n        setInterval(() => {\n            this.refillBuckets()\n        }, 1000)\n    }\n\n    private refillBuckets = () => {\n        Object.keys(this.mutationBuckets).forEach((key) => {\n            this.mutationBuckets[key] = this.mutationBuckets[key] + this.refillRate\n\n            if (this.mutationBuckets[key] >= this.bucketSize) {\n                delete this.mutationBuckets[key]\n            }\n        })\n    }\n\n    private getNodeOrRelevantParent = (id: number): [number, Node | null] => {\n        // For some nodes we know they are part of a larger tree such as an SVG.\n        // For those we want to block the entire node, not just the specific attribute\n\n        const node = this.rrweb.mirror.getNode(id)\n\n        // Check if the node is an Element and then find the closest parent that is an SVG\n        if (node?.nodeName !== 'svg' && node instanceof Element) {\n            const closestSVG = node.closest('svg')\n\n            if (closestSVG) {\n                return [this.rrweb.mirror.getId(closestSVG), closestSVG]\n            }\n        }\n\n        return [id, node]\n    }\n\n    private numberOfChanges = (data: Partial<mutationCallbackParam>) => {\n        return (\n            (data.removes?.length ?? 0) +\n            (data.attributes?.length ?? 0) +\n            (data.texts?.length ?? 0) +\n            (data.adds?.length ?? 0)\n        )\n    }\n\n    public throttleMutations = (event: eventWithTime) => {\n        if (event.type !== INCREMENTAL_SNAPSHOT_EVENT_TYPE || event.data.source !== MUTATION_SOURCE_TYPE) {\n            return event\n        }\n\n        const data = event.data as Partial<mutationCallbackParam>\n        const initialMutationCount = this.numberOfChanges(data)\n\n        if (data.attributes) {\n            // Most problematic mutations come from attrs where the style or minor properties are changed rapidly\n            data.attributes = data.attributes.filter((attr) => {\n                const [nodeId, node] = this.getNodeOrRelevantParent(attr.id)\n\n                if (this.mutationBuckets[nodeId] === 0) {\n                    return false\n                }\n\n                this.mutationBuckets[nodeId] = this.mutationBuckets[nodeId] ?? this.bucketSize\n                this.mutationBuckets[nodeId] = Math.max(this.mutationBuckets[nodeId] - 1, 0)\n\n                if (this.mutationBuckets[nodeId] === 0) {\n                    if (!this.loggedTracker[nodeId]) {\n                        this.loggedTracker[nodeId] = true\n                        this.options.onBlockedNode?.(nodeId, node)\n                    }\n                }\n\n                return attr\n            })\n        }\n\n        // Check if every part of the mutation is empty in which case there is nothing to do\n        const mutationCount = this.numberOfChanges(data)\n\n        if (mutationCount === 0 && initialMutationCount !== mutationCount) {\n            // If we have modified the mutation count and the remaining count is 0, then we don't need the event.\n            return\n        }\n        return event\n    }\n}\n", "// DEFLATE is a complex format; to read this code, you should probably check the RFC first:\n// https://tools.ietf.org/html/rfc1951\n// You may also wish to take a look at the guide I made about this program:\n// https://gist.github.com/101arrowz/253f31eb5abc3d9275ab943003ffecad\n// Much of the following code is similar to that of UZIP.js:\n// https://github.com/photopea/UZIP.js\n// Many optimizations have been made, so the bundle size is ultimately smaller but performance is similar.\n// Sometimes 0 will appear where -1 would be more appropriate. This is because using a uint\n// is better for memory in most engines (I *think*).\nvar ch2 = {};\nvar wk = (function (c, id, msg, transfer, cb) {\n    var u = ch2[id] || (ch2[id] = URL.createObjectURL(new Blob([c], { type: 'text/javascript' })));\n    var w = new Worker(u);\n    w.onerror = function (e) { return cb(e.error, null); };\n    w.onmessage = function (e) { return cb(null, e.data); };\n    w.postMessage(msg, transfer);\n    return w;\n});\n\n// aliases for shorter compressed code (most minifers don't do this)\nvar u8 = Uint8Array, u16 = Uint16Array, u32 = Uint32Array;\n// fixed length extra bits\nvar fleb = new u8([0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, /* unused */ 0, 0, /* impossible */ 0]);\n// fixed distance extra bits\n// see fleb note\nvar fdeb = new u8([0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, /* unused */ 0, 0]);\n// code length index map\nvar clim = new u8([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]);\n// get base, reverse index map from extra bits\nvar freb = function (eb, start) {\n    var b = new u16(31);\n    for (var i = 0; i < 31; ++i) {\n        b[i] = start += 1 << eb[i - 1];\n    }\n    // numbers here are at max 18 bits\n    var r = new u32(b[30]);\n    for (var i = 1; i < 30; ++i) {\n        for (var j = b[i]; j < b[i + 1]; ++j) {\n            r[j] = ((j - b[i]) << 5) | i;\n        }\n    }\n    return [b, r];\n};\nvar _a = freb(fleb, 2), fl = _a[0], revfl = _a[1];\n// we can ignore the fact that the other numbers are wrong; they never happen anyway\nfl[28] = 258, revfl[258] = 28;\nvar _b = freb(fdeb, 0), fd = _b[0], revfd = _b[1];\n// map of value to reverse (assuming 16 bits)\nvar rev = new u16(32768);\nfor (var i = 0; i < 32768; ++i) {\n    // reverse table algorithm from SO\n    var x = ((i & 0xAAAA) >>> 1) | ((i & 0x5555) << 1);\n    x = ((x & 0xCCCC) >>> 2) | ((x & 0x3333) << 2);\n    x = ((x & 0xF0F0) >>> 4) | ((x & 0x0F0F) << 4);\n    rev[i] = (((x & 0xFF00) >>> 8) | ((x & 0x00FF) << 8)) >>> 1;\n}\n// create huffman tree from u8 \"map\": index -> code length for code index\n// mb (max bits) must be at most 15\n// TODO: optimize/split up?\nvar hMap = (function (cd, mb, r) {\n    var s = cd.length;\n    // index\n    var i = 0;\n    // u16 \"map\": index -> # of codes with bit length = index\n    var l = new u16(mb);\n    // length of cd must be 288 (total # of codes)\n    for (; i < s; ++i)\n        ++l[cd[i] - 1];\n    // u16 \"map\": index -> minimum code for bit length = index\n    var le = new u16(mb);\n    for (i = 0; i < mb; ++i) {\n        le[i] = (le[i - 1] + l[i - 1]) << 1;\n    }\n    var co;\n    if (r) {\n        // u16 \"map\": index -> number of actual bits, symbol for code\n        co = new u16(1 << mb);\n        // bits to remove for reverser\n        var rvb = 15 - mb;\n        for (i = 0; i < s; ++i) {\n            // ignore 0 lengths\n            if (cd[i]) {\n                // num encoding both symbol and bits read\n                var sv = (i << 4) | cd[i];\n                // free bits\n                var r_1 = mb - cd[i];\n                // start value\n                var v = le[cd[i] - 1]++ << r_1;\n                // m is end value\n                for (var m = v | ((1 << r_1) - 1); v <= m; ++v) {\n                    // every 16 bit value starting with the code yields the same result\n                    co[rev[v] >>> rvb] = sv;\n                }\n            }\n        }\n    }\n    else {\n        co = new u16(s);\n        for (i = 0; i < s; ++i)\n            co[i] = rev[le[cd[i] - 1]++] >>> (15 - cd[i]);\n    }\n    return co;\n});\n// fixed length tree\nvar flt = new u8(288);\nfor (var i = 0; i < 144; ++i)\n    flt[i] = 8;\nfor (var i = 144; i < 256; ++i)\n    flt[i] = 9;\nfor (var i = 256; i < 280; ++i)\n    flt[i] = 7;\nfor (var i = 280; i < 288; ++i)\n    flt[i] = 8;\n// fixed distance tree\nvar fdt = new u8(32);\nfor (var i = 0; i < 32; ++i)\n    fdt[i] = 5;\n// fixed length map\nvar flm = /*#__PURE__*/ hMap(flt, 9, 0), flrm = /*#__PURE__*/ hMap(flt, 9, 1);\n// fixed distance map\nvar fdm = /*#__PURE__*/ hMap(fdt, 5, 0), fdrm = /*#__PURE__*/ hMap(fdt, 5, 1);\n// find max of array\nvar max = function (a) {\n    var m = a[0];\n    for (var i = 1; i < a.length; ++i) {\n        if (a[i] > m)\n            m = a[i];\n    }\n    return m;\n};\n// read d, starting at bit p and mask with m\nvar bits = function (d, p, m) {\n    var o = (p / 8) >> 0;\n    return ((d[o] | (d[o + 1] << 8)) >>> (p & 7)) & m;\n};\n// read d, starting at bit p continuing for at least 16 bits\nvar bits16 = function (d, p) {\n    var o = (p / 8) >> 0;\n    return ((d[o] | (d[o + 1] << 8) | (d[o + 2] << 16)) >>> (p & 7));\n};\n// get end of byte\nvar shft = function (p) { return ((p / 8) >> 0) + (p & 7 && 1); };\n// typed array slice - allows garbage collector to free original reference,\n// while being more compatible than .slice\nvar slc = function (v, s, e) {\n    if (s == null || s < 0)\n        s = 0;\n    if (e == null || e > v.length)\n        e = v.length;\n    // can't use .constructor in case user-supplied\n    var n = new (v instanceof u16 ? u16 : v instanceof u32 ? u32 : u8)(e - s);\n    n.set(v.subarray(s, e));\n    return n;\n};\n// expands raw DEFLATE data\nvar inflt = function (dat, buf, st) {\n    // source length\n    var sl = dat.length;\n    // have to estimate size\n    var noBuf = !buf || st;\n    // no state\n    var noSt = !st || st.i;\n    if (!st)\n        st = {};\n    // Assumes roughly 33% compression ratio average\n    if (!buf)\n        buf = new u8(sl * 3);\n    // ensure buffer can fit at least l elements\n    var cbuf = function (l) {\n        var bl = buf.length;\n        // need to increase size to fit\n        if (l > bl) {\n            // Double or set to necessary, whichever is greater\n            var nbuf = new u8(Math.max(bl * 2, l));\n            nbuf.set(buf);\n            buf = nbuf;\n        }\n    };\n    //  last chunk         bitpos           bytes\n    var final = st.f || 0, pos = st.p || 0, bt = st.b || 0, lm = st.l, dm = st.d, lbt = st.m, dbt = st.n;\n    // total bits\n    var tbts = sl * 8;\n    do {\n        if (!lm) {\n            // BFINAL - this is only 1 when last chunk is next\n            st.f = final = bits(dat, pos, 1);\n            // type: 0 = no compression, 1 = fixed huffman, 2 = dynamic huffman\n            var type = bits(dat, pos + 1, 3);\n            pos += 3;\n            if (!type) {\n                // go to end of byte boundary\n                var s = shft(pos) + 4, l = dat[s - 4] | (dat[s - 3] << 8), t = s + l;\n                if (t > sl) {\n                    if (noSt)\n                        throw 'unexpected EOF';\n                    break;\n                }\n                // ensure size\n                if (noBuf)\n                    cbuf(bt + l);\n                // Copy over uncompressed data\n                buf.set(dat.subarray(s, t), bt);\n                // Get new bitpos, update byte count\n                st.b = bt += l, st.p = pos = t * 8;\n                continue;\n            }\n            else if (type == 1)\n                lm = flrm, dm = fdrm, lbt = 9, dbt = 5;\n            else if (type == 2) {\n                //  literal                            lengths\n                var hLit = bits(dat, pos, 31) + 257, hcLen = bits(dat, pos + 10, 15) + 4;\n                var tl = hLit + bits(dat, pos + 5, 31) + 1;\n                pos += 14;\n                // length+distance tree\n                var ldt = new u8(tl);\n                // code length tree\n                var clt = new u8(19);\n                for (var i = 0; i < hcLen; ++i) {\n                    // use index map to get real code\n                    clt[clim[i]] = bits(dat, pos + i * 3, 7);\n                }\n                pos += hcLen * 3;\n                // code lengths bits\n                var clb = max(clt), clbmsk = (1 << clb) - 1;\n                if (!noSt && pos + tl * (clb + 7) > tbts)\n                    break;\n                // code lengths map\n                var clm = hMap(clt, clb, 1);\n                for (var i = 0; i < tl;) {\n                    var r = clm[bits(dat, pos, clbmsk)];\n                    // bits read\n                    pos += r & 15;\n                    // symbol\n                    var s = r >>> 4;\n                    // code length to copy\n                    if (s < 16) {\n                        ldt[i++] = s;\n                    }\n                    else {\n                        //  copy   count\n                        var c = 0, n = 0;\n                        if (s == 16)\n                            n = 3 + bits(dat, pos, 3), pos += 2, c = ldt[i - 1];\n                        else if (s == 17)\n                            n = 3 + bits(dat, pos, 7), pos += 3;\n                        else if (s == 18)\n                            n = 11 + bits(dat, pos, 127), pos += 7;\n                        while (n--)\n                            ldt[i++] = c;\n                    }\n                }\n                //    length tree                 distance tree\n                var lt = ldt.subarray(0, hLit), dt = ldt.subarray(hLit);\n                // max length bits\n                lbt = max(lt);\n                // max dist bits\n                dbt = max(dt);\n                lm = hMap(lt, lbt, 1);\n                dm = hMap(dt, dbt, 1);\n            }\n            else\n                throw 'invalid block type';\n            if (pos > tbts)\n                throw 'unexpected EOF';\n        }\n        // Make sure the buffer can hold this + the largest possible addition\n        // Maximum chunk size (practically, theoretically infinite) is 2^17;\n        if (noBuf)\n            cbuf(bt + 131072);\n        var lms = (1 << lbt) - 1, dms = (1 << dbt) - 1;\n        var mxa = lbt + dbt + 18;\n        while (noSt || pos + mxa < tbts) {\n            // bits read, code\n            var c = lm[bits16(dat, pos) & lms], sym = c >>> 4;\n            pos += c & 15;\n            if (pos > tbts)\n                throw 'unexpected EOF';\n            if (!c)\n                throw 'invalid length/literal';\n            if (sym < 256)\n                buf[bt++] = sym;\n            else if (sym == 256) {\n                lm = null;\n                break;\n            }\n            else {\n                var add = sym - 254;\n                // no extra bits needed if less\n                if (sym > 264) {\n                    // index\n                    var i = sym - 257, b = fleb[i];\n                    add = bits(dat, pos, (1 << b) - 1) + fl[i];\n                    pos += b;\n                }\n                // dist\n                var d = dm[bits16(dat, pos) & dms], dsym = d >>> 4;\n                if (!d)\n                    throw 'invalid distance';\n                pos += d & 15;\n                var dt = fd[dsym];\n                if (dsym > 3) {\n                    var b = fdeb[dsym];\n                    dt += bits16(dat, pos) & ((1 << b) - 1), pos += b;\n                }\n                if (pos > tbts)\n                    throw 'unexpected EOF';\n                if (noBuf)\n                    cbuf(bt + 131072);\n                var end = bt + add;\n                for (; bt < end; bt += 4) {\n                    buf[bt] = buf[bt - dt];\n                    buf[bt + 1] = buf[bt + 1 - dt];\n                    buf[bt + 2] = buf[bt + 2 - dt];\n                    buf[bt + 3] = buf[bt + 3 - dt];\n                }\n                bt = end;\n            }\n        }\n        st.l = lm, st.p = pos, st.b = bt;\n        if (lm)\n            final = 1, st.m = lbt, st.d = dm, st.n = dbt;\n    } while (!final);\n    return bt == buf.length ? buf : slc(buf, 0, bt);\n};\n// starting at p, write the minimum number of bits that can hold v to d\nvar wbits = function (d, p, v) {\n    v <<= p & 7;\n    var o = (p / 8) >> 0;\n    d[o] |= v;\n    d[o + 1] |= v >>> 8;\n};\n// starting at p, write the minimum number of bits (>8) that can hold v to d\nvar wbits16 = function (d, p, v) {\n    v <<= p & 7;\n    var o = (p / 8) >> 0;\n    d[o] |= v;\n    d[o + 1] |= v >>> 8;\n    d[o + 2] |= v >>> 16;\n};\n// creates code lengths from a frequency table\nvar hTree = function (d, mb) {\n    // Need extra info to make a tree\n    var t = [];\n    for (var i = 0; i < d.length; ++i) {\n        if (d[i])\n            t.push({ s: i, f: d[i] });\n    }\n    var s = t.length;\n    var t2 = t.slice();\n    if (!s)\n        return [new u8(0), 0];\n    if (s == 1) {\n        var v = new u8(t[0].s + 1);\n        v[t[0].s] = 1;\n        return [v, 1];\n    }\n    t.sort(function (a, b) { return a.f - b.f; });\n    // after i2 reaches last ind, will be stopped\n    // freq must be greater than largest possible number of symbols\n    t.push({ s: -1, f: 25001 });\n    var l = t[0], r = t[1], i0 = 0, i1 = 1, i2 = 2;\n    t[0] = { s: -1, f: l.f + r.f, l: l, r: r };\n    // efficient algorithm from UZIP.js\n    // i0 is lookbehind, i2 is lookahead - after processing two low-freq\n    // symbols that combined have high freq, will start processing i2 (high-freq,\n    // non-composite) symbols instead\n    // see https://reddit.com/r/photopea/comments/ikekht/uzipjs_questions/\n    while (i1 != s - 1) {\n        l = t[t[i0].f < t[i2].f ? i0++ : i2++];\n        r = t[i0 != i1 && t[i0].f < t[i2].f ? i0++ : i2++];\n        t[i1++] = { s: -1, f: l.f + r.f, l: l, r: r };\n    }\n    var maxSym = t2[0].s;\n    for (var i = 1; i < s; ++i) {\n        if (t2[i].s > maxSym)\n            maxSym = t2[i].s;\n    }\n    // code lengths\n    var tr = new u16(maxSym + 1);\n    // max bits in tree\n    var mbt = ln(t[i1 - 1], tr, 0);\n    if (mbt > mb) {\n        // more algorithms from UZIP.js\n        // TODO: find out how this code works (debt)\n        //  ind    debt\n        var i = 0, dt = 0;\n        //    left            cost\n        var lft = mbt - mb, cst = 1 << lft;\n        t2.sort(function (a, b) { return tr[b.s] - tr[a.s] || a.f - b.f; });\n        for (; i < s; ++i) {\n            var i2_1 = t2[i].s;\n            if (tr[i2_1] > mb) {\n                dt += cst - (1 << (mbt - tr[i2_1]));\n                tr[i2_1] = mb;\n            }\n            else\n                break;\n        }\n        dt >>>= lft;\n        while (dt > 0) {\n            var i2_2 = t2[i].s;\n            if (tr[i2_2] < mb)\n                dt -= 1 << (mb - tr[i2_2]++ - 1);\n            else\n                ++i;\n        }\n        for (; i >= 0 && dt; --i) {\n            var i2_3 = t2[i].s;\n            if (tr[i2_3] == mb) {\n                --tr[i2_3];\n                ++dt;\n            }\n        }\n        mbt = mb;\n    }\n    return [new u8(tr), mbt];\n};\n// get the max length and assign length codes\nvar ln = function (n, l, d) {\n    return n.s == -1\n        ? Math.max(ln(n.l, l, d + 1), ln(n.r, l, d + 1))\n        : (l[n.s] = d);\n};\n// length codes generation\nvar lc = function (c) {\n    var s = c.length;\n    // Note that the semicolon was intentional\n    while (s && !c[--s])\n        ;\n    var cl = new u16(++s);\n    //  ind      num         streak\n    var cli = 0, cln = c[0], cls = 1;\n    var w = function (v) { cl[cli++] = v; };\n    for (var i = 1; i <= s; ++i) {\n        if (c[i] == cln && i != s)\n            ++cls;\n        else {\n            if (!cln && cls > 2) {\n                for (; cls > 138; cls -= 138)\n                    w(32754);\n                if (cls > 2) {\n                    w(cls > 10 ? ((cls - 11) << 5) | 28690 : ((cls - 3) << 5) | 12305);\n                    cls = 0;\n                }\n            }\n            else if (cls > 3) {\n                w(cln), --cls;\n                for (; cls > 6; cls -= 6)\n                    w(8304);\n                if (cls > 2)\n                    w(((cls - 3) << 5) | 8208), cls = 0;\n            }\n            while (cls--)\n                w(cln);\n            cls = 1;\n            cln = c[i];\n        }\n    }\n    return [cl.subarray(0, cli), s];\n};\n// calculate the length of output from tree, code lengths\nvar clen = function (cf, cl) {\n    var l = 0;\n    for (var i = 0; i < cl.length; ++i)\n        l += cf[i] * cl[i];\n    return l;\n};\n// writes a fixed block\n// returns the new bit pos\nvar wfblk = function (out, pos, dat) {\n    // no need to write 00 as type: TypedArray defaults to 0\n    var s = dat.length;\n    var o = shft(pos + 2);\n    out[o] = s & 255;\n    out[o + 1] = s >>> 8;\n    out[o + 2] = out[o] ^ 255;\n    out[o + 3] = out[o + 1] ^ 255;\n    for (var i = 0; i < s; ++i)\n        out[o + i + 4] = dat[i];\n    return (o + 4 + s) * 8;\n};\n// writes a block\nvar wblk = function (dat, out, final, syms, lf, df, eb, li, bs, bl, p) {\n    wbits(out, p++, final);\n    ++lf[256];\n    var _a = hTree(lf, 15), dlt = _a[0], mlb = _a[1];\n    var _b = hTree(df, 15), ddt = _b[0], mdb = _b[1];\n    var _c = lc(dlt), lclt = _c[0], nlc = _c[1];\n    var _d = lc(ddt), lcdt = _d[0], ndc = _d[1];\n    var lcfreq = new u16(19);\n    for (var i = 0; i < lclt.length; ++i)\n        lcfreq[lclt[i] & 31]++;\n    for (var i = 0; i < lcdt.length; ++i)\n        lcfreq[lcdt[i] & 31]++;\n    var _e = hTree(lcfreq, 7), lct = _e[0], mlcb = _e[1];\n    var nlcc = 19;\n    for (; nlcc > 4 && !lct[clim[nlcc - 1]]; --nlcc)\n        ;\n    var flen = (bl + 5) << 3;\n    var ftlen = clen(lf, flt) + clen(df, fdt) + eb;\n    var dtlen = clen(lf, dlt) + clen(df, ddt) + eb + 14 + 3 * nlcc + clen(lcfreq, lct) + (2 * lcfreq[16] + 3 * lcfreq[17] + 7 * lcfreq[18]);\n    if (flen <= ftlen && flen <= dtlen)\n        return wfblk(out, p, dat.subarray(bs, bs + bl));\n    var lm, ll, dm, dl;\n    wbits(out, p, 1 + (dtlen < ftlen)), p += 2;\n    if (dtlen < ftlen) {\n        lm = hMap(dlt, mlb, 0), ll = dlt, dm = hMap(ddt, mdb, 0), dl = ddt;\n        var llm = hMap(lct, mlcb, 0);\n        wbits(out, p, nlc - 257);\n        wbits(out, p + 5, ndc - 1);\n        wbits(out, p + 10, nlcc - 4);\n        p += 14;\n        for (var i = 0; i < nlcc; ++i)\n            wbits(out, p + 3 * i, lct[clim[i]]);\n        p += 3 * nlcc;\n        var lcts = [lclt, lcdt];\n        for (var it = 0; it < 2; ++it) {\n            var clct = lcts[it];\n            for (var i = 0; i < clct.length; ++i) {\n                var len = clct[i] & 31;\n                wbits(out, p, llm[len]), p += lct[len];\n                if (len > 15)\n                    wbits(out, p, (clct[i] >>> 5) & 127), p += clct[i] >>> 12;\n            }\n        }\n    }\n    else {\n        lm = flm, ll = flt, dm = fdm, dl = fdt;\n    }\n    for (var i = 0; i < li; ++i) {\n        if (syms[i] > 255) {\n            var len = (syms[i] >>> 18) & 31;\n            wbits16(out, p, lm[len + 257]), p += ll[len + 257];\n            if (len > 7)\n                wbits(out, p, (syms[i] >>> 23) & 31), p += fleb[len];\n            var dst = syms[i] & 31;\n            wbits16(out, p, dm[dst]), p += dl[dst];\n            if (dst > 3)\n                wbits16(out, p, (syms[i] >>> 5) & 8191), p += fdeb[dst];\n        }\n        else {\n            wbits16(out, p, lm[syms[i]]), p += ll[syms[i]];\n        }\n    }\n    wbits16(out, p, lm[256]);\n    return p + ll[256];\n};\n// deflate options (nice << 13) | chain\nvar deo = /*#__PURE__*/ new u32([65540, 131080, 131088, 131104, 262176, 1048704, 1048832, 2114560, 2117632]);\n// empty\nvar et = /*#__PURE__*/ new u8(0);\n// compresses data into a raw DEFLATE buffer\nvar dflt = function (dat, lvl, plvl, pre, post, lst) {\n    var s = dat.length;\n    var o = new u8(pre + s + 5 * (1 + Math.floor(s / 7000)) + post);\n    // writing to this writes to the output buffer\n    var w = o.subarray(pre, o.length - post);\n    var pos = 0;\n    if (!lvl || s < 8) {\n        for (var i = 0; i <= s; i += 65535) {\n            // end\n            var e = i + 65535;\n            if (e < s) {\n                // write full block\n                pos = wfblk(w, pos, dat.subarray(i, e));\n            }\n            else {\n                // write final block\n                w[i] = lst;\n                pos = wfblk(w, pos, dat.subarray(i, s));\n            }\n        }\n    }\n    else {\n        var opt = deo[lvl - 1];\n        var n = opt >>> 13, c = opt & 8191;\n        var msk_1 = (1 << plvl) - 1;\n        //    prev 2-byte val map    curr 2-byte val map\n        var prev = new u16(32768), head = new u16(msk_1 + 1);\n        var bs1_1 = Math.ceil(plvl / 3), bs2_1 = 2 * bs1_1;\n        var hsh = function (i) { return (dat[i] ^ (dat[i + 1] << bs1_1) ^ (dat[i + 2] << bs2_1)) & msk_1; };\n        // 24576 is an arbitrary number of maximum symbols per block\n        // 424 buffer for last block\n        var syms = new u32(25000);\n        // length/literal freq   distance freq\n        var lf = new u16(288), df = new u16(32);\n        //  l/lcnt  exbits  index  l/lind  waitdx  bitpos\n        var lc_1 = 0, eb = 0, i = 0, li = 0, wi = 0, bs = 0;\n        for (; i < s; ++i) {\n            // hash value\n            var hv = hsh(i);\n            // index mod 32768\n            var imod = i & 32767;\n            // previous index with this value\n            var pimod = head[hv];\n            prev[imod] = pimod;\n            head[hv] = imod;\n            // We always should modify head and prev, but only add symbols if\n            // this data is not yet processed (\"wait\" for wait index)\n            if (wi <= i) {\n                // bytes remaining\n                var rem = s - i;\n                if ((lc_1 > 7000 || li > 24576) && rem > 423) {\n                    pos = wblk(dat, w, 0, syms, lf, df, eb, li, bs, i - bs, pos);\n                    li = lc_1 = eb = 0, bs = i;\n                    for (var j = 0; j < 286; ++j)\n                        lf[j] = 0;\n                    for (var j = 0; j < 30; ++j)\n                        df[j] = 0;\n                }\n                //  len    dist   chain\n                var l = 2, d = 0, ch_1 = c, dif = (imod - pimod) & 32767;\n                if (rem > 2 && hv == hsh(i - dif)) {\n                    var maxn = Math.min(n, rem) - 1;\n                    var maxd = Math.min(32767, i);\n                    // max possible length\n                    // not capped at dif because decompressors implement \"rolling\" index population\n                    var ml = Math.min(258, rem);\n                    while (dif <= maxd && --ch_1 && imod != pimod) {\n                        if (dat[i + l] == dat[i + l - dif]) {\n                            var nl = 0;\n                            for (; nl < ml && dat[i + nl] == dat[i + nl - dif]; ++nl)\n                                ;\n                            if (nl > l) {\n                                l = nl, d = dif;\n                                // break out early when we reach \"nice\" (we are satisfied enough)\n                                if (nl > maxn)\n                                    break;\n                                // now, find the rarest 2-byte sequence within this\n                                // length of literals and search for that instead.\n                                // Much faster than just using the start\n                                var mmd = Math.min(dif, nl - 2);\n                                var md = 0;\n                                for (var j = 0; j < mmd; ++j) {\n                                    var ti = (i - dif + j + 32768) & 32767;\n                                    var pti = prev[ti];\n                                    var cd = (ti - pti + 32768) & 32767;\n                                    if (cd > md)\n                                        md = cd, pimod = ti;\n                                }\n                            }\n                        }\n                        // check the previous match\n                        imod = pimod, pimod = prev[imod];\n                        dif += (imod - pimod + 32768) & 32767;\n                    }\n                }\n                // d will be nonzero only when a match was found\n                if (d) {\n                    // store both dist and len data in one Uint32\n                    // Make sure this is recognized as a len/dist with 28th bit (2^28)\n                    syms[li++] = 268435456 | (revfl[l] << 18) | revfd[d];\n                    var lin = revfl[l] & 31, din = revfd[d] & 31;\n                    eb += fleb[lin] + fdeb[din];\n                    ++lf[257 + lin];\n                    ++df[din];\n                    wi = i + l;\n                    ++lc_1;\n                }\n                else {\n                    syms[li++] = dat[i];\n                    ++lf[dat[i]];\n                }\n            }\n        }\n        pos = wblk(dat, w, lst, syms, lf, df, eb, li, bs, i - bs, pos);\n        // this is the easiest way to avoid needing to maintain state\n        if (!lst)\n            pos = wfblk(w, pos, et);\n    }\n    return slc(o, 0, pre + shft(pos) + post);\n};\n// CRC32 table\nvar crct = /*#__PURE__*/ (function () {\n    var t = new u32(256);\n    for (var i = 0; i < 256; ++i) {\n        var c = i, k = 9;\n        while (--k)\n            c = ((c & 1) && 0xEDB88320) ^ (c >>> 1);\n        t[i] = c;\n    }\n    return t;\n})();\n// CRC32\nvar crc = function () {\n    var c = 0xFFFFFFFF;\n    return {\n        p: function (d) {\n            // closures have awful performance\n            var cr = c;\n            for (var i = 0; i < d.length; ++i)\n                cr = crct[(cr & 255) ^ d[i]] ^ (cr >>> 8);\n            c = cr;\n        },\n        d: function () { return c ^ 0xFFFFFFFF; }\n    };\n};\n// Alder32\nvar adler = function () {\n    var a = 1, b = 0;\n    return {\n        p: function (d) {\n            // closures have awful performance\n            var n = a, m = b;\n            var l = d.length;\n            for (var i = 0; i != l;) {\n                var e = Math.min(i + 5552, l);\n                for (; i < e; ++i)\n                    n += d[i], m += n;\n                n %= 65521, m %= 65521;\n            }\n            a = n, b = m;\n        },\n        d: function () { return ((a >>> 8) << 16 | (b & 255) << 8 | (b >>> 8)) + ((a & 255) << 23) * 2; }\n    };\n};\n;\n// deflate with opts\nvar dopt = function (dat, opt, pre, post, st) {\n    return dflt(dat, opt.level == null ? 6 : opt.level, opt.mem == null ? Math.ceil(Math.max(8, Math.min(13, Math.log(dat.length))) * 1.5) : (12 + opt.mem), pre, post, !st);\n};\n// Walmart object spread\nvar mrg = function (a, b) {\n    var o = {};\n    for (var k in a)\n        o[k] = a[k];\n    for (var k in b)\n        o[k] = b[k];\n    return o;\n};\n// worker clone\n// This is possibly the craziest part of the entire codebase, despite how simple it may seem.\n// The only parameter to this function is a closure that returns an array of variables outside of the function scope.\n// We're going to try to figure out the variable names used in the closure as strings because that is crucial for workerization.\n// We will return an object mapping of true variable name to value (basically, the current scope as a JS object).\n// The reason we can't just use the original variable names is minifiers mangling the toplevel scope.\n// This took me three weeks to figure out how to do.\nvar wcln = function (fn, fnStr, td) {\n    var dt = fn();\n    var st = fn.toString();\n    var ks = st.slice(st.indexOf('[') + 1, st.lastIndexOf(']')).replace(/ /g, '').split(',');\n    for (var i = 0; i < dt.length; ++i) {\n        var v = dt[i], k = ks[i];\n        if (typeof v == 'function') {\n            fnStr += ';' + k + '=';\n            var st_1 = v.toString();\n            if (v.prototype) {\n                // for global objects\n                if (st_1.indexOf('[native code]') != -1) {\n                    var spInd = st_1.indexOf(' ', 8) + 1;\n                    fnStr += st_1.slice(spInd, st_1.indexOf('(', spInd));\n                }\n                else {\n                    fnStr += st_1;\n                    for (var t in v.prototype)\n                        fnStr += ';' + k + '.prototype.' + t + '=' + v.prototype[t].toString();\n                }\n            }\n            else\n                fnStr += st_1;\n        }\n        else\n            td[k] = v;\n    }\n    return [fnStr, td];\n};\nvar ch = [];\n// clone bufs\nvar cbfs = function (v) {\n    var tl = [];\n    for (var k in v) {\n        if (v[k] instanceof u8 || v[k] instanceof u16 || v[k] instanceof u32)\n            tl.push((v[k] = new v[k].constructor(v[k])).buffer);\n    }\n    return tl;\n};\n// use a worker to execute code\nvar wrkr = function (fns, init, id, cb) {\n    var _a;\n    if (!ch[id]) {\n        var fnStr = '', td_1 = {}, m = fns.length - 1;\n        for (var i = 0; i < m; ++i)\n            _a = wcln(fns[i], fnStr, td_1), fnStr = _a[0], td_1 = _a[1];\n        ch[id] = wcln(fns[m], fnStr, td_1);\n    }\n    var td = mrg({}, ch[id][1]);\n    return wk(ch[id][0] + ';onmessage=function(e){for(var k in e.data)self[k]=e.data[k];onmessage=' + init.toString() + '}', id, td, cbfs(td), cb);\n};\n// base async inflate fn\nvar bInflt = function () { return [u8, u16, u32, fleb, fdeb, clim, fl, fd, flrm, fdrm, rev, hMap, max, bits, bits16, shft, slc, inflt, inflateSync, pbf, gu8]; };\nvar bDflt = function () { return [u8, u16, u32, fleb, fdeb, clim, revfl, revfd, flm, flt, fdm, fdt, rev, deo, et, hMap, wbits, wbits16, hTree, ln, lc, clen, wfblk, wblk, shft, slc, dflt, dopt, deflateSync, pbf]; };\n// gzip extra\nvar gze = function () { return [gzh, gzhl, wbytes, crc, crct]; };\n// gunzip extra\nvar guze = function () { return [gzs, gzl]; };\n// zlib extra\nvar zle = function () { return [zlh, wbytes, adler]; };\n// unzlib extra\nvar zule = function () { return [zlv]; };\n// post buf\nvar pbf = function (msg) { return postMessage(msg, [msg.buffer]); };\n// get u8\nvar gu8 = function (o) { return o && o.size && new u8(o.size); };\n// async helper\nvar cbify = function (dat, opts, fns, init, id, cb) {\n    var w = wrkr(fns, init, id, function (err, dat) {\n        w.terminate();\n        cb(err, dat);\n    });\n    if (!opts.consume)\n        dat = new u8(dat);\n    w.postMessage([dat, opts], [dat.buffer]);\n    return function () { w.terminate(); };\n};\n// auto stream\nvar astrm = function (strm) {\n    strm.ondata = function (dat, final) { return postMessage([dat, final], [dat.buffer]); };\n    return function (ev) { return strm.push(ev.data[0], ev.data[1]); };\n};\n// async stream attach\nvar astrmify = function (fns, strm, opts, init, id) {\n    var t;\n    var w = wrkr(fns, init, id, function (err, dat) {\n        if (err)\n            w.terminate(), strm.ondata.call(strm, err);\n        else {\n            if (dat[1])\n                w.terminate();\n            strm.ondata.call(strm, err, dat[0], dat[1]);\n        }\n    });\n    w.postMessage(opts);\n    strm.push = function (d, f) {\n        if (t)\n            throw 'stream finished';\n        if (!strm.ondata)\n            throw 'no stream handler';\n        w.postMessage([d, t = f], [d.buffer]);\n    };\n    strm.terminate = function () { w.terminate(); };\n};\n// read 2 bytes\nvar b2 = function (d, b) { return d[b] | (d[b + 1] << 8); };\n// read 4 bytes\nvar b4 = function (d, b) { return (d[b] | (d[b + 1] << 8) | (d[b + 2] << 16)) + (d[b + 3] << 23) * 2; };\n// write bytes\nvar wbytes = function (d, b, v) {\n    for (; v; ++b)\n        d[b] = v, v >>>= 8;\n};\n// gzip header\nvar gzh = function (c, o) {\n    var fn = o.filename;\n    c[0] = 31, c[1] = 139, c[2] = 8, c[8] = o.level < 2 ? 4 : o.level == 9 ? 2 : 0, c[9] = 3; // assume Unix\n    if (o.mtime != 0)\n        wbytes(c, 4, Math.floor(new Date(o.mtime || Date.now()) / 1000));\n    if (fn) {\n        c[3] = 8;\n        for (var i = 0; i <= fn.length; ++i)\n            c[i + 10] = fn.charCodeAt(i);\n    }\n};\n// gzip footer: -8 to -4 = CRC, -4 to -0 is length\n// gzip start\nvar gzs = function (d) {\n    if (d[0] != 31 || d[1] != 139 || d[2] != 8)\n        throw 'invalid gzip data';\n    var flg = d[3];\n    var st = 10;\n    if (flg & 4)\n        st += d[10] | (d[11] << 8) + 2;\n    for (var zs = (flg >> 3 & 1) + (flg >> 4 & 1); zs > 0; zs -= !d[st++])\n        ;\n    return st + (flg & 2);\n};\n// gzip length\nvar gzl = function (d) {\n    var l = d.length;\n    return (d[l - 4] | d[l - 3] << 8 | d[l - 2] << 16) + (2 * (d[l - 1] << 23));\n};\n// gzip header length\nvar gzhl = function (o) { return 10 + ((o.filename && (o.filename.length + 1)) || 0); };\n// zlib header\nvar zlh = function (c, o) {\n    var lv = o.level, fl = lv == 0 ? 0 : lv < 6 ? 1 : lv == 9 ? 3 : 2;\n    c[0] = 120, c[1] = (fl << 6) | (fl ? (32 - 2 * fl) : 1);\n};\n// zlib valid\nvar zlv = function (d) {\n    if ((d[0] & 15) != 8 || (d[0] >>> 4) > 7 || ((d[0] << 8 | d[1]) % 31))\n        throw 'invalid zlib data';\n    if (d[1] & 32)\n        throw 'invalid zlib data: preset dictionaries not supported';\n};\nfunction AsyncCmpStrm(opts, cb) {\n    if (!cb && typeof opts == 'function')\n        cb = opts, opts = {};\n    this.ondata = cb;\n    return opts;\n}\n// zlib footer: -4 to -0 is Adler32\n/**\n * Streaming DEFLATE compression\n */\nvar Deflate = /*#__PURE__*/ (function () {\n    function Deflate(opts, cb) {\n        if (!cb && typeof opts == 'function')\n            cb = opts, opts = {};\n        this.ondata = cb;\n        this.o = opts || {};\n    }\n    Deflate.prototype.p = function (c, f) {\n        this.ondata(dopt(c, this.o, 0, 0, !f), f);\n    };\n    /**\n     * Pushes a chunk to be deflated\n     * @param chunk The chunk to push\n     * @param final Whether this is the last chunk\n     */\n    Deflate.prototype.push = function (chunk, final) {\n        if (this.d)\n            throw 'stream finished';\n        if (!this.ondata)\n            throw 'no stream handler';\n        this.d = final;\n        this.p(chunk, final || false);\n    };\n    return Deflate;\n}());\nexport { Deflate };\n/**\n * Asynchronous streaming DEFLATE compression\n */\nvar AsyncDeflate = /*#__PURE__*/ (function () {\n    function AsyncDeflate(opts, cb) {\n        astrmify([\n            bDflt,\n            function () { return [astrm, Deflate]; }\n        ], this, AsyncCmpStrm.call(this, opts, cb), function (ev) {\n            var strm = new Deflate(ev.data);\n            onmessage = astrm(strm);\n        }, 6);\n    }\n    return AsyncDeflate;\n}());\nexport { AsyncDeflate };\nexport function deflate(data, opts, cb) {\n    if (!cb)\n        cb = opts, opts = {};\n    if (typeof cb != 'function')\n        throw 'no callback';\n    return cbify(data, opts, [\n        bDflt,\n    ], function (ev) { return pbf(deflateSync(ev.data[0], ev.data[1])); }, 0, cb);\n}\n/**\n * Compresses data with DEFLATE without any wrapper\n * @param data The data to compress\n * @param opts The compression options\n * @returns The deflated version of the data\n */\nexport function deflateSync(data, opts) {\n    if (opts === void 0) { opts = {}; }\n    return dopt(data, opts, 0, 0);\n}\n/**\n * Streaming DEFLATE decompression\n */\nvar Inflate = /*#__PURE__*/ (function () {\n    /**\n     * Creates an inflation stream\n     * @param cb The callback to call whenever data is inflated\n     */\n    function Inflate(cb) {\n        this.s = {};\n        this.p = new u8(0);\n        this.ondata = cb;\n    }\n    Inflate.prototype.e = function (c) {\n        if (this.d)\n            throw 'stream finished';\n        if (!this.ondata)\n            throw 'no stream handler';\n        var l = this.p.length;\n        var n = new u8(l + c.length);\n        n.set(this.p), n.set(c, l), this.p = n;\n    };\n    Inflate.prototype.c = function (final) {\n        this.d = this.s.i = final || false;\n        var bts = this.s.b;\n        var dt = inflt(this.p, this.o, this.s);\n        this.ondata(slc(dt, bts, this.s.b), this.d);\n        this.o = slc(dt, this.s.b - 32768), this.s.b = this.o.length;\n        this.p = slc(this.p, (this.s.p / 8) >> 0), this.s.p &= 7;\n    };\n    /**\n     * Pushes a chunk to be inflated\n     * @param chunk The chunk to push\n     * @param final Whether this is the final chunk\n     */\n    Inflate.prototype.push = function (chunk, final) {\n        this.e(chunk), this.c(final);\n    };\n    return Inflate;\n}());\nexport { Inflate };\n/**\n * Asynchronous streaming DEFLATE decompression\n */\nvar AsyncInflate = /*#__PURE__*/ (function () {\n    /**\n     * Creates an asynchronous inflation stream\n     * @param cb The callback to call whenever data is deflated\n     */\n    function AsyncInflate(cb) {\n        this.ondata = cb;\n        astrmify([\n            bInflt,\n            function () { return [astrm, Inflate]; }\n        ], this, 0, function () {\n            var strm = new Inflate();\n            onmessage = astrm(strm);\n        }, 7);\n    }\n    return AsyncInflate;\n}());\nexport { AsyncInflate };\nexport function inflate(data, opts, cb) {\n    if (!cb)\n        cb = opts, opts = {};\n    if (typeof cb != 'function')\n        throw 'no callback';\n    return cbify(data, opts, [\n        bInflt\n    ], function (ev) { return pbf(inflateSync(ev.data[0], gu8(ev.data[1]))); }, 1, cb);\n}\n/**\n * Expands DEFLATE data with no wrapper\n * @param data The data to decompress\n * @param out Where to write the data. Saves memory if you know the decompressed size and provide an output buffer of that length.\n * @returns The decompressed version of the data\n */\nexport function inflateSync(data, out) {\n    return inflt(data, out);\n}\n// before you yell at me for not just using extends, my reason is that TS inheritance is hard to workerize.\n/**\n * Streaming GZIP compression\n */\nvar Gzip = /*#__PURE__*/ (function () {\n    function Gzip(opts, cb) {\n        this.c = crc();\n        this.l = 0;\n        this.v = 1;\n        Deflate.call(this, opts, cb);\n    }\n    /**\n     * Pushes a chunk to be GZIPped\n     * @param chunk The chunk to push\n     * @param final Whether this is the last chunk\n     */\n    Gzip.prototype.push = function (chunk, final) {\n        Deflate.prototype.push.call(this, chunk, final);\n    };\n    Gzip.prototype.p = function (c, f) {\n        this.c.p(c);\n        this.l += c.length;\n        var raw = dopt(c, this.o, this.v && gzhl(this.o), f && 8, !f);\n        if (this.v)\n            gzh(raw, this.o), this.v = 0;\n        if (f)\n            wbytes(raw, raw.length - 8, this.c.d()), wbytes(raw, raw.length - 4, this.l);\n        this.ondata(raw, f);\n    };\n    return Gzip;\n}());\nexport { Gzip };\n/**\n * Asynchronous streaming GZIP compression\n */\nvar AsyncGzip = /*#__PURE__*/ (function () {\n    function AsyncGzip(opts, cb) {\n        astrmify([\n            bDflt,\n            gze,\n            function () { return [astrm, Deflate, Gzip]; }\n        ], this, AsyncCmpStrm.call(this, opts, cb), function (ev) {\n            var strm = new Gzip(ev.data);\n            onmessage = astrm(strm);\n        }, 8);\n    }\n    return AsyncGzip;\n}());\nexport { AsyncGzip };\nexport function gzip(data, opts, cb) {\n    if (!cb)\n        cb = opts, opts = {};\n    if (typeof cb != 'function')\n        throw 'no callback';\n    return cbify(data, opts, [\n        bDflt,\n        gze,\n        function () { return [gzipSync]; }\n    ], function (ev) { return pbf(gzipSync(ev.data[0], ev.data[1])); }, 2, cb);\n}\n/**\n * Compresses data with GZIP\n * @param data The data to compress\n * @param opts The compression options\n * @returns The gzipped version of the data\n */\nexport function gzipSync(data, opts) {\n    if (opts === void 0) { opts = {}; }\n    var c = crc(), l = data.length;\n    c.p(data);\n    var d = dopt(data, opts, gzhl(opts), 8), s = d.length;\n    return gzh(d, opts), wbytes(d, s - 8, c.d()), wbytes(d, s - 4, l), d;\n}\n/**\n * Streaming GZIP decompression\n */\nvar Gunzip = /*#__PURE__*/ (function () {\n    /**\n     * Creates a GUNZIP stream\n     * @param cb The callback to call whenever data is inflated\n     */\n    function Gunzip(cb) {\n        this.v = 1;\n        Inflate.call(this, cb);\n    }\n    /**\n     * Pushes a chunk to be GUNZIPped\n     * @param chunk The chunk to push\n     * @param final Whether this is the last chunk\n     */\n    Gunzip.prototype.push = function (chunk, final) {\n        Inflate.prototype.e.call(this, chunk);\n        if (this.v) {\n            var s = gzs(this.p);\n            if (s >= this.p.length && !final)\n                return;\n            this.p = this.p.subarray(s), this.v = 0;\n        }\n        if (final) {\n            if (this.p.length < 8)\n                throw 'invalid gzip stream';\n            this.p = this.p.subarray(0, -8);\n        }\n        // necessary to prevent TS from using the closure value\n        // This allows for workerization to function correctly\n        Inflate.prototype.c.call(this, final);\n    };\n    return Gunzip;\n}());\nexport { Gunzip };\n/**\n * Asynchronous streaming GZIP decompression\n */\nvar AsyncGunzip = /*#__PURE__*/ (function () {\n    /**\n     * Creates an asynchronous GUNZIP stream\n     * @param cb The callback to call whenever data is deflated\n     */\n    function AsyncGunzip(cb) {\n        this.ondata = cb;\n        astrmify([\n            bInflt,\n            guze,\n            function () { return [astrm, Inflate, Gunzip]; }\n        ], this, 0, function () {\n            var strm = new Gunzip();\n            onmessage = astrm(strm);\n        }, 9);\n    }\n    return AsyncGunzip;\n}());\nexport { AsyncGunzip };\nexport function gunzip(data, opts, cb) {\n    if (!cb)\n        cb = opts, opts = {};\n    if (typeof cb != 'function')\n        throw 'no callback';\n    return cbify(data, opts, [\n        bInflt,\n        guze,\n        function () { return [gunzipSync]; }\n    ], function (ev) { return pbf(gunzipSync(ev.data[0])); }, 3, cb);\n}\n/**\n * Expands GZIP data\n * @param data The data to decompress\n * @param out Where to write the data. GZIP already encodes the output size, so providing this doesn't save memory.\n * @returns The decompressed version of the data\n */\nexport function gunzipSync(data, out) {\n    return inflt(data.subarray(gzs(data), -8), out || new u8(gzl(data)));\n}\n/**\n * Streaming Zlib compression\n */\nvar Zlib = /*#__PURE__*/ (function () {\n    function Zlib(opts, cb) {\n        this.c = adler();\n        this.v = 1;\n        Deflate.call(this, opts, cb);\n    }\n    /**\n     * Pushes a chunk to be zlibbed\n     * @param chunk The chunk to push\n     * @param final Whether this is the last chunk\n     */\n    Zlib.prototype.push = function (chunk, final) {\n        Deflate.prototype.push.call(this, chunk, final);\n    };\n    Zlib.prototype.p = function (c, f) {\n        this.c.p(c);\n        var raw = dopt(c, this.o, this.v && 2, f && 4, !f);\n        if (this.v)\n            zlh(raw, this.o), this.v = 0;\n        if (f)\n            wbytes(raw, raw.length - 4, this.c.d());\n        this.ondata(raw, f);\n    };\n    return Zlib;\n}());\nexport { Zlib };\n/**\n * Asynchronous streaming Zlib compression\n */\nvar AsyncZlib = /*#__PURE__*/ (function () {\n    function AsyncZlib(opts, cb) {\n        astrmify([\n            bDflt,\n            zle,\n            function () { return [astrm, Deflate, Zlib]; }\n        ], this, AsyncCmpStrm.call(this, opts, cb), function (ev) {\n            var strm = new Zlib(ev.data);\n            onmessage = astrm(strm);\n        }, 10);\n    }\n    return AsyncZlib;\n}());\nexport { AsyncZlib };\nexport function zlib(data, opts, cb) {\n    if (!cb)\n        cb = opts, opts = {};\n    if (typeof cb != 'function')\n        throw 'no callback';\n    return cbify(data, opts, [\n        bDflt,\n        zle,\n        function () { return [zlibSync]; }\n    ], function (ev) { return pbf(zlibSync(ev.data[0], ev.data[1])); }, 4, cb);\n}\n/**\n * Compress data with Zlib\n * @param data The data to compress\n * @param opts The compression options\n * @returns The zlib-compressed version of the data\n */\nexport function zlibSync(data, opts) {\n    if (opts === void 0) { opts = {}; }\n    var a = adler();\n    a.p(data);\n    var d = dopt(data, opts, 2, 4);\n    return zlh(d, opts), wbytes(d, d.length - 4, a.d()), d;\n}\n/**\n * Streaming Zlib decompression\n */\nvar Unzlib = /*#__PURE__*/ (function () {\n    /**\n     * Creates a Zlib decompression stream\n     * @param cb The callback to call whenever data is inflated\n     */\n    function Unzlib(cb) {\n        this.v = 1;\n        Inflate.call(this, cb);\n    }\n    /**\n     * Pushes a chunk to be unzlibbed\n     * @param chunk The chunk to push\n     * @param final Whether this is the last chunk\n     */\n    Unzlib.prototype.push = function (chunk, final) {\n        Inflate.prototype.e.call(this, chunk);\n        if (this.v) {\n            if (this.p.length < 2 && !final)\n                return;\n            this.p = this.p.subarray(2), this.v = 0;\n        }\n        if (final) {\n            if (this.p.length < 4)\n                throw 'invalid zlib stream';\n            this.p = this.p.subarray(0, -4);\n        }\n        // necessary to prevent TS from using the closure value\n        // This allows for workerization to function correctly\n        Inflate.prototype.c.call(this, final);\n    };\n    return Unzlib;\n}());\nexport { Unzlib };\n/**\n * Asynchronous streaming Zlib decompression\n */\nvar AsyncUnzlib = /*#__PURE__*/ (function () {\n    /**\n     * Creates an asynchronous Zlib decompression stream\n     * @param cb The callback to call whenever data is deflated\n     */\n    function AsyncUnzlib(cb) {\n        this.ondata = cb;\n        astrmify([\n            bInflt,\n            zule,\n            function () { return [astrm, Inflate, Unzlib]; }\n        ], this, 0, function () {\n            var strm = new Unzlib();\n            onmessage = astrm(strm);\n        }, 11);\n    }\n    return AsyncUnzlib;\n}());\nexport { AsyncUnzlib };\nexport function unzlib(data, opts, cb) {\n    if (!cb)\n        cb = opts, opts = {};\n    if (typeof cb != 'function')\n        throw 'no callback';\n    return cbify(data, opts, [\n        bInflt,\n        zule,\n        function () { return [unzlibSync]; }\n    ], function (ev) { return pbf(unzlibSync(ev.data[0], gu8(ev.data[1]))); }, 5, cb);\n}\n/**\n * Expands Zlib data\n * @param data The data to decompress\n * @param out Where to write the data. Saves memory if you know the decompressed size and provide an output buffer of that length.\n * @returns The decompressed version of the data\n */\nexport function unzlibSync(data, out) {\n    return inflt((zlv(data), data.subarray(2, -4)), out);\n}\n// Default algorithm for compression (used because having a known output size allows faster decompression)\nexport { gzip as compress, AsyncGzip as AsyncCompress };\n// Default algorithm for compression (used because having a known output size allows faster decompression)\nexport { gzipSync as compressSync, Gzip as Compress };\n/**\n * Streaming GZIP, Zlib, or raw DEFLATE decompression\n */\nvar Decompress = /*#__PURE__*/ (function () {\n    /**\n     * Creates a decompression stream\n     * @param cb The callback to call whenever data is decompressed\n     */\n    function Decompress(cb) {\n        this.G = Gunzip;\n        this.I = Inflate;\n        this.Z = Unzlib;\n        this.ondata = cb;\n    }\n    /**\n     * Pushes a chunk to be decompressed\n     * @param chunk The chunk to push\n     * @param final Whether this is the last chunk\n     */\n    Decompress.prototype.push = function (chunk, final) {\n        if (!this.ondata)\n            throw 'no stream handler';\n        if (!this.s) {\n            if (this.p && this.p.length) {\n                var n = new u8(this.p.length + chunk.length);\n                n.set(this.p), n.set(chunk, this.p.length);\n            }\n            else\n                this.p = chunk;\n            if (this.p.length > 2) {\n                var _this_1 = this;\n                var cb = function () { _this_1.ondata.apply(_this_1, arguments); };\n                this.s = (this.p[0] == 31 && this.p[1] == 139 && this.p[2] == 8)\n                    ? new this.G(cb)\n                    : ((this.p[0] & 15) != 8 || (this.p[0] >> 4) > 7 || ((this.p[0] << 8 | this.p[1]) % 31))\n                        ? new this.I(cb)\n                        : new this.Z(cb);\n                this.s.push(this.p, final);\n                this.p = null;\n            }\n        }\n        else\n            this.s.push(chunk, final);\n    };\n    return Decompress;\n}());\nexport { Decompress };\n/**\n * Asynchronous streaming GZIP, Zlib, or raw DEFLATE decompression\n */\nvar AsyncDecompress = /*#__PURE__*/ (function () {\n    /**\n   * Creates an asynchronous decompression stream\n   * @param cb The callback to call whenever data is decompressed\n   */\n    function AsyncDecompress(cb) {\n        this.G = AsyncGunzip;\n        this.I = AsyncInflate;\n        this.Z = AsyncUnzlib;\n        this.ondata = cb;\n    }\n    /**\n     * Pushes a chunk to be decompressed\n     * @param chunk The chunk to push\n     * @param final Whether this is the last chunk\n     */\n    AsyncDecompress.prototype.push = function (chunk, final) {\n        Decompress.prototype.push.call(this, chunk, final);\n    };\n    return AsyncDecompress;\n}());\nexport { AsyncDecompress };\nexport function decompress(data, opts, cb) {\n    if (!cb)\n        cb = opts, opts = {};\n    if (typeof cb != 'function')\n        throw 'no callback';\n    return (data[0] == 31 && data[1] == 139 && data[2] == 8)\n        ? gunzip(data, opts, cb)\n        : ((data[0] & 15) != 8 || (data[0] >> 4) > 7 || ((data[0] << 8 | data[1]) % 31))\n            ? inflate(data, opts, cb)\n            : unzlib(data, opts, cb);\n}\n/**\n * Expands compressed GZIP, Zlib, or raw DEFLATE data, automatically detecting the format\n * @param data The data to decompress\n * @param out Where to write the data. Saves memory if you know the decompressed size and provide an output buffer of that length.\n * @returns The decompressed version of the data\n */\nexport function decompressSync(data, out) {\n    return (data[0] == 31 && data[1] == 139 && data[2] == 8)\n        ? gunzipSync(data, out)\n        : ((data[0] & 15) != 8 || (data[0] >> 4) > 7 || ((data[0] << 8 | data[1]) % 31))\n            ? inflateSync(data, out)\n            : unzlibSync(data, out);\n}\n// flatten a directory structure\nvar fltn = function (d, p, t, o) {\n    for (var k in d) {\n        var val = d[k], n = p + k;\n        if (val instanceof u8)\n            t[n] = [val, o];\n        else if (Array.isArray(val))\n            t[n] = [val[0], mrg(o, val[1])];\n        else\n            fltn(val, n + '/', t, o);\n    }\n};\n/**\n * Converts a string into a Uint8Array for use with compression/decompression methods\n * @param str The string to encode\n * @param latin1 Whether or not to interpret the data as Latin-1. This should\n *               not need to be true unless decoding a binary string.\n * @returns The string encoded in UTF-8/Latin-1 binary\n */\nexport function strToU8(str, latin1) {\n    var l = str.length;\n    if (!latin1 && typeof TextEncoder != 'undefined')\n        return new TextEncoder().encode(str);\n    var ar = new u8(str.length + (str.length >>> 1));\n    var ai = 0;\n    var w = function (v) { ar[ai++] = v; };\n    for (var i = 0; i < l; ++i) {\n        if (ai + 5 > ar.length) {\n            var n = new u8(ai + 8 + ((l - i) << 1));\n            n.set(ar);\n            ar = n;\n        }\n        var c = str.charCodeAt(i);\n        if (c < 128 || latin1)\n            w(c);\n        else if (c < 2048)\n            w(192 | (c >>> 6)), w(128 | (c & 63));\n        else if (c > 55295 && c < 57344)\n            c = 65536 + (c & 1023 << 10) | (str.charCodeAt(++i) & 1023),\n                w(240 | (c >>> 18)), w(128 | ((c >>> 12) & 63)), w(128 | ((c >>> 6) & 63)), w(128 | (c & 63));\n        else\n            w(224 | (c >>> 12)), w(128 | ((c >>> 6) & 63)), w(128 | (c & 63));\n    }\n    return slc(ar, 0, ai);\n}\n/**\n * Converts a Uint8Array to a string\n * @param dat The data to decode to string\n * @param latin1 Whether or not to interpret the data as Latin-1. This should\n *               not need to be true unless encoding to binary string.\n * @returns The original UTF-8/Latin-1 string\n */\nexport function strFromU8(dat, latin1) {\n    var r = '';\n    if (!latin1 && typeof TextDecoder != 'undefined')\n        return new TextDecoder().decode(dat);\n    for (var i = 0; i < dat.length;) {\n        var c = dat[i++];\n        if (c < 128 || latin1)\n            r += String.fromCharCode(c);\n        else if (c < 224)\n            r += String.fromCharCode((c & 31) << 6 | (dat[i++] & 63));\n        else if (c < 240)\n            r += String.fromCharCode((c & 15) << 12 | (dat[i++] & 63) << 6 | (dat[i++] & 63));\n        else\n            c = ((c & 15) << 18 | (dat[i++] & 63) << 12 | (dat[i++] & 63) << 6 | (dat[i++] & 63)) - 65536,\n                r += String.fromCharCode(55296 | (c >> 10), 56320 | (c & 1023));\n    }\n    return r;\n}\n;\n// skip local zip header\nvar slzh = function (d, b) { return b + 30 + b2(d, b + 26) + b2(d, b + 28); };\n// read zip header\nvar zh = function (d, b, z) {\n    var fnl = b2(d, b + 28), fn = strFromU8(d.subarray(b + 46, b + 46 + fnl), !(b2(d, b + 8) & 2048)), es = b + 46 + fnl;\n    var _a = z ? z64e(d, es) : [b4(d, b + 20), b4(d, b + 24), b4(d, b + 42)], sc = _a[0], su = _a[1], off = _a[2];\n    return [b2(d, b + 10), sc, su, fn, es + b2(d, b + 30) + b2(d, b + 32), off];\n};\n// read zip64 extra field\nvar z64e = function (d, b) {\n    for (; b2(d, b) != 1; b += 4 + b2(d, b + 2))\n        ;\n    return [b4(d, b + 12), b4(d, b + 4), b4(d, b + 20)];\n};\n// write zip header\nvar wzh = function (d, b, c, cmp, su, fn, u, o, ce, t) {\n    var fl = fn.length, l = cmp.length;\n    wbytes(d, b, ce != null ? 0x2014B50 : 0x4034B50), b += 4;\n    if (ce != null)\n        d[b] = 20, b += 2;\n    d[b] = 20, b += 2; // spec compliance? what's that?\n    d[b++] = (t == 8 && (o.level == 1 ? 6 : o.level < 6 ? 4 : o.level == 9 ? 2 : 0)), d[b++] = u && 8;\n    d[b] = t, b += 2;\n    var dt = new Date(o.mtime || Date.now()), y = dt.getFullYear() - 1980;\n    if (y < 0 || y > 119)\n        throw 'date not in range 1980-2099';\n    wbytes(d, b, ((y << 24) * 2) | ((dt.getMonth() + 1) << 21) | (dt.getDate() << 16) | (dt.getHours() << 11) | (dt.getMinutes() << 5) | (dt.getSeconds() >>> 1));\n    b += 4;\n    wbytes(d, b, c);\n    wbytes(d, b + 4, l);\n    wbytes(d, b + 8, su);\n    wbytes(d, b + 12, fl), b += 16; // skip extra field, comment\n    if (ce != null)\n        wbytes(d, b += 10, ce), b += 4;\n    d.set(fn, b);\n    b += fl;\n    if (ce == null)\n        d.set(cmp, b);\n};\n// write zip footer (end of central directory)\nvar wzf = function (o, b, c, d, e) {\n    wbytes(o, b, 0x6054B50); // skip disk\n    wbytes(o, b + 8, c);\n    wbytes(o, b + 10, c);\n    wbytes(o, b + 12, d);\n    wbytes(o, b + 16, e);\n};\nexport function zip(data, opts, cb) {\n    if (!cb)\n        cb = opts, opts = {};\n    if (typeof cb != 'function')\n        throw 'no callback';\n    var r = {};\n    fltn(data, '', r, opts);\n    var k = Object.keys(r);\n    var lft = k.length, o = 0, tot = 0;\n    var slft = lft, files = new Array(lft);\n    var term = [];\n    var tAll = function () {\n        for (var i = 0; i < term.length; ++i)\n            term[i]();\n    };\n    var cbf = function () {\n        var out = new u8(tot + 22), oe = o, cdl = tot - o;\n        tot = 0;\n        for (var i = 0; i < slft; ++i) {\n            var f = files[i];\n            try {\n                wzh(out, tot, f.c, f.d, f.m, f.n, f.u, f.p, null, f.t);\n                wzh(out, o, f.c, f.d, f.m, f.n, f.u, f.p, tot, f.t), o += 46 + f.n.length, tot += 30 + f.n.length + f.d.length;\n            }\n            catch (e) {\n                return cb(e, null);\n            }\n        }\n        wzf(out, o, files.length, cdl, oe);\n        cb(null, out);\n    };\n    if (!lft)\n        cbf();\n    var _loop_1 = function (i) {\n        var fn = k[i];\n        var _a = r[fn], file = _a[0], p = _a[1];\n        var c = crc(), m = file.length;\n        c.p(file);\n        var n = strToU8(fn), s = n.length;\n        var t = p.level == 0 ? 0 : 8;\n        var cbl = function (e, d) {\n            if (e) {\n                tAll();\n                cb(e, null);\n            }\n            else {\n                var l = d.length;\n                files[i] = {\n                    t: t,\n                    d: d,\n                    m: m,\n                    c: c.d(),\n                    u: fn.length != l,\n                    n: n,\n                    p: p\n                };\n                o += 30 + s + l;\n                tot += 76 + 2 * s + l;\n                if (!--lft)\n                    cbf();\n            }\n        };\n        if (n.length > 65535)\n            cbl('filename too long', null);\n        if (!t)\n            cbl(null, file);\n        else if (m < 160000) {\n            try {\n                cbl(null, deflateSync(file, p));\n            }\n            catch (e) {\n                cbl(e, null);\n            }\n        }\n        else\n            term.push(deflate(file, p, cbl));\n    };\n    // Cannot use lft because it can decrease\n    for (var i = 0; i < slft; ++i) {\n        _loop_1(i);\n    }\n    return tAll;\n}\n/**\n * Synchronously creates a ZIP file. Prefer using `zip` for better performance\n * with more than one file.\n * @param data The directory structure for the ZIP archive\n * @param opts The main options, merged with per-file options\n * @returns The generated ZIP archive\n */\nexport function zipSync(data, opts) {\n    if (opts === void 0) { opts = {}; }\n    var r = {};\n    var files = [];\n    fltn(data, '', r, opts);\n    var o = 0;\n    var tot = 0;\n    for (var fn in r) {\n        var _a = r[fn], file = _a[0], p = _a[1];\n        var t = p.level == 0 ? 0 : 8;\n        var n = strToU8(fn), s = n.length;\n        if (n.length > 65535)\n            throw 'filename too long';\n        var d = t ? deflateSync(file, p) : file, l = d.length;\n        var c = crc();\n        c.p(file);\n        files.push({\n            t: t,\n            d: d,\n            m: file.length,\n            c: c.d(),\n            u: fn.length != s,\n            n: n,\n            o: o,\n            p: p\n        });\n        o += 30 + s + l;\n        tot += 76 + 2 * s + l;\n    }\n    var out = new u8(tot + 22), oe = o, cdl = tot - o;\n    for (var i = 0; i < files.length; ++i) {\n        var f = files[i];\n        wzh(out, f.o, f.c, f.d, f.m, f.n, f.u, f.p, null, f.t);\n        wzh(out, o, f.c, f.d, f.m, f.n, f.u, f.p, f.o, f.t), o += 46 + f.n.length;\n    }\n    wzf(out, o, files.length, cdl, oe);\n    return out;\n}\n/**\n * Asynchronously decompresses a ZIP archive\n * @param data The raw compressed ZIP file\n * @param cb The callback to call with the decompressed files\n * @returns A function that can be used to immediately terminate the unzipping\n */\nexport function unzip(data, cb) {\n    if (typeof cb != 'function')\n        throw 'no callback';\n    var term = [];\n    var tAll = function () {\n        for (var i = 0; i < term.length; ++i)\n            term[i]();\n    };\n    var files = {};\n    var e = data.length - 22;\n    for (; b4(data, e) != 0x6054B50; --e) {\n        if (!e || data.length - e > 65558) {\n            cb('invalid zip file', null);\n            return;\n        }\n    }\n    ;\n    var lft = b2(data, e + 8);\n    if (!lft)\n        cb(null, {});\n    var c = lft;\n    var o = b4(data, e + 16);\n    var z = o == 4294967295;\n    if (z) {\n        e = b4(data, e - 12);\n        if (b4(data, e) != 0x6064B50)\n            throw 'invalid zip file';\n        c = lft = b4(data, e + 32);\n        o = b4(data, e + 48);\n    }\n    var _loop_2 = function (i) {\n        var _a = zh(data, o, z), c_1 = _a[0], sc = _a[1], su = _a[2], fn = _a[3], no = _a[4], off = _a[5], b = slzh(data, off);\n        o = no;\n        var cbl = function (e, d) {\n            if (e) {\n                tAll();\n                cb(e, null);\n            }\n            else {\n                files[fn] = d;\n                if (!--lft)\n                    cb(null, files);\n            }\n        };\n        if (!c_1)\n            cbl(null, slc(data, b, b + sc));\n        else if (c_1 == 8) {\n            var infl = data.subarray(b, b + sc);\n            if (sc < 320000) {\n                try {\n                    cbl(null, inflateSync(infl, new u8(su)));\n                }\n                catch (e) {\n                    cbl(e, null);\n                }\n            }\n            else\n                term.push(inflate(infl, { size: su }, cbl));\n        }\n        else\n            cbl('unknown compression type ' + c_1, null);\n    };\n    for (var i = 0; i < c; ++i) {\n        _loop_2(i);\n    }\n    return tAll;\n}\n/**\n * Synchronously decompresses a ZIP archive. Prefer using `unzip` for better\n * performance with more than one file.\n * @param data The raw compressed ZIP file\n * @returns The decompressed files\n */\nexport function unzipSync(data) {\n    var files = {};\n    var e = data.length - 22;\n    for (; b4(data, e) != 0x6054B50; --e) {\n        if (!e || data.length - e > 65558)\n            throw 'invalid zip file';\n    }\n    ;\n    var c = b2(data, e + 8);\n    if (!c)\n        return {};\n    var o = b4(data, e + 16);\n    var z = o == 4294967295;\n    if (z) {\n        e = b4(data, e - 12);\n        if (b4(data, e) != 0x6064B50)\n            throw 'invalid zip file';\n        c = b4(data, e + 32);\n        o = b4(data, e + 48);\n    }\n    for (var i = 0; i < c; ++i) {\n        var _a = zh(data, o, z), c_2 = _a[0], sc = _a[1], su = _a[2], fn = _a[3], no = _a[4], off = _a[5], b = slzh(data, off);\n        o = no;\n        if (!c_2)\n            files[fn] = slc(data, b, b + sc);\n        else if (c_2 == 8)\n            files[fn] = inflateSync(data.subarray(b, b + sc), new u8(su));\n        else\n            throw 'unknown compression type ' + c_2;\n    }\n    return files;\n}\n", "import { clampToRange } from '../utils/number-utils'\nimport { isArray, isUndefined } from '../utils/type-utils'\n\nexport function appendArray(currentValue: string[] | undefined, sampleType: string | string[]): string[] {\n    return [...(currentValue ? currentValue : []), ...(isArray(sampleType) ? sampleType : [sampleType])]\n}\n\nexport function updateThreshold(currentValue: number | undefined, percent: number): number {\n    return (isUndefined(currentValue) ? 1 : currentValue) * percent\n}\n\nexport function simpleHash(str: string) {\n    let hash = 0\n    for (let i = 0; i < str.length; i++) {\n        hash = (hash << 5) - hash + str.charCodeAt(i) // (hash * 31) + char code\n        hash |= 0 // Convert to 32bit integer\n    }\n    return Math.abs(hash)\n}\n\n/*\n * receives percent as a number between 0 and 1\n */\nexport function sampleOnProperty(prop: string, percent: number): boolean {\n    return simpleHash(prop) % 100 < clampToRange(percent * 100, 0, 100)\n}\n", "import {\n    CONSOLE_LOG_RECORDING_ENABLED_SERVER_SIDE,\n    SESSION_RECORDING_CANVAS_RECORDING,\n    SESSION_RECORDING_ENABLED_SERVER_SIDE,\n    SESSION_RECORDING_EVENT_TRIGGER_ACTIVATED_SESSION,\n    SESSION_RECORDING_IS_SAMPLED,\n    SESSION_RECORDING_MINIMUM_DURATION,\n    SESSION_RECORDING_NETWORK_PAYLOAD_CAPTURE,\n    SESSION_RECORDING_SAMPLE_RATE,\n    SESSION_RECORDING_SCRIPT_CONFIG,\n    SESSION_RECORDING_URL_TRIGGER_ACTIVATED_SESSION,\n} from '../../constants'\nimport {\n    estimateSize,\n    INCREMENTAL_SNAPSHOT_EVENT_TYPE,\n    recordOptions,\n    rrwebRecord,\n    splitBuffer,\n    truncateLargeConsoleLogs,\n} from './sessionrecording-utils'\nimport { PostHog } from '../../posthog-core'\nimport {\n    CaptureResult,\n    FlagVariant,\n    NetworkRecordOptions,\n    NetworkRequest,\n    Properties,\n    RemoteConfig,\n    SessionRecordingUrlTrigger,\n} from '../../types'\nimport {\n    customEvent,\n    EventType,\n    type eventWithTime,\n    IncrementalSource,\n    type listenerHandler,\n    RecordPlugin,\n} from '@rrweb/types'\n\nimport { isBoolean, isFunction, isNullish, isNumber, isObject, isString, isUndefined } from '../../utils/type-utils'\nimport { createLogger } from '../../utils/logger'\nimport { assignableWindow, document, PostHogExtensionKind, window } from '../../utils/globals'\nimport { buildNetworkRequestOptions } from './config'\nimport { isLocalhost } from '../../utils/request-utils'\nimport { MutationRateLimiter } from './mutation-rate-limiter'\nimport { gzipSync, strFromU8, strToU8 } from 'fflate'\nimport { clampToRange } from '../../utils/number-utils'\nimport Config from '../../config'\nimport { includes } from '../../utils/string-utils'\nimport { addEventListener } from '../../utils'\nimport { sampleOnProperty } from '../sampling'\n\nconst LOGGER_PREFIX = '[SessionRecording]'\nconst logger = createLogger(LOGGER_PREFIX)\n\ntype SessionStartReason =\n    | 'sampling_overridden'\n    | 'recording_initialized'\n    | 'linked_flag_matched'\n    | 'linked_flag_overridden'\n    | 'sampled'\n    | 'session_id_changed'\n    | 'url_trigger_matched'\n    | 'event_trigger_matched'\n\nconst BASE_ENDPOINT = '/s/'\n\nconst ONE_MINUTE = 1000 * 60\nconst FIVE_MINUTES = ONE_MINUTE * 5\nconst TWO_SECONDS = 2000\nexport const RECORDING_IDLE_THRESHOLD_MS = FIVE_MINUTES\nconst ONE_KB = 1024\nconst PARTIAL_COMPRESSION_THRESHOLD = ONE_KB\nexport const RECORDING_MAX_EVENT_SIZE = ONE_KB * ONE_KB * 0.9 // ~1mb (with some wiggle room)\nexport const RECORDING_BUFFER_TIMEOUT = 2000 // 2 seconds\nexport const SESSION_RECORDING_BATCH_KEY = 'recordings'\n\nconst ACTIVE_SOURCES = [\n    IncrementalSource.MouseMove,\n    IncrementalSource.MouseInteraction,\n    IncrementalSource.Scroll,\n    IncrementalSource.ViewportResize,\n    IncrementalSource.Input,\n    IncrementalSource.TouchMove,\n    IncrementalSource.MediaInteraction,\n    IncrementalSource.Drag,\n]\n\nexport type TriggerType = 'url' | 'event'\ntype TriggerStatus = 'trigger_activated' | 'trigger_pending' | 'trigger_disabled'\n\n/**\n * Session recording starts in buffering mode while waiting for decide response\n * Once the response is received it might be disabled, active or sampled\n * When sampled that means a sample rate is set and the last time the session id was rotated\n * the sample rate determined this session should be sent to the server.\n */\ntype SessionRecordingStatus = 'disabled' | 'sampled' | 'active' | 'buffering' | 'paused'\n\nexport interface SnapshotBuffer {\n    size: number\n    data: any[]\n    sessionId: string\n    windowId: string\n}\n\ninterface QueuedRRWebEvent {\n    rrwebMethod: () => void\n    attempt: number\n    // the timestamp this was first put into this queue\n    enqueuedAt: number\n}\n\ninterface SessionIdlePayload {\n    eventTimestamp: number\n    lastActivityTimestamp: number\n    threshold: number\n    bufferLength: number\n    bufferSize: number\n}\n\nconst newQueuedEvent = (rrwebMethod: () => void): QueuedRRWebEvent => ({\n    rrwebMethod,\n    enqueuedAt: Date.now(),\n    attempt: 1,\n})\n\ntype compressedFullSnapshotEvent = {\n    type: EventType.FullSnapshot\n    data: string\n}\n\ntype compressedIncrementalSnapshotEvent = {\n    type: EventType.IncrementalSnapshot\n    data: {\n        source: IncrementalSource\n        texts: string\n        attributes: string\n        removes: string\n        adds: string\n    }\n}\n\ntype compressedIncrementalStyleSnapshotEvent = {\n    type: EventType.IncrementalSnapshot\n    data: {\n        source: IncrementalSource.StyleSheetRule\n        id?: number\n        styleId?: number\n        replace?: string\n        replaceSync?: string\n        adds: string\n        removes: string\n    }\n}\n\nexport type compressedEvent =\n    | compressedIncrementalStyleSnapshotEvent\n    | compressedFullSnapshotEvent\n    | compressedIncrementalSnapshotEvent\nexport type compressedEventWithTime = compressedEvent & {\n    timestamp: number\n    delay?: number\n    // marker for compression version\n    cv: '2024-10'\n}\n\nfunction gzipToString(data: unknown): string {\n    return strFromU8(gzipSync(strToU8(JSON.stringify(data))), true)\n}\n\n// rrweb's packer takes an event and returns a string or the reverse on unpact,\n// but we want to be able to inspect metadata during ingestion, and don't want to compress the entire event\n// so we have a custom packer that only compresses part of some events\nfunction compressEvent(event: eventWithTime): eventWithTime | compressedEventWithTime {\n    const originalSize = estimateSize(event)\n    if (originalSize < PARTIAL_COMPRESSION_THRESHOLD) {\n        return event\n    }\n\n    try {\n        if (event.type === EventType.FullSnapshot) {\n            return {\n                ...event,\n                data: gzipToString(event.data),\n                cv: '2024-10',\n            }\n        }\n        if (event.type === EventType.IncrementalSnapshot && event.data.source === IncrementalSource.Mutation) {\n            return {\n                ...event,\n                cv: '2024-10',\n                data: {\n                    ...event.data,\n                    texts: gzipToString(event.data.texts),\n                    attributes: gzipToString(event.data.attributes),\n                    removes: gzipToString(event.data.removes),\n                    adds: gzipToString(event.data.adds),\n                },\n            }\n        }\n        if (event.type === EventType.IncrementalSnapshot && event.data.source === IncrementalSource.StyleSheetRule) {\n            return {\n                ...event,\n                cv: '2024-10',\n                data: {\n                    ...event.data,\n                    adds: gzipToString(event.data.adds),\n                    removes: gzipToString(event.data.removes),\n                },\n            }\n        }\n    } catch (e) {\n        logger.error('could not compress event - will use uncompressed event', e)\n    }\n    return event\n}\n\nfunction isSessionIdleEvent(e: eventWithTime): e is eventWithTime & customEvent {\n    return e.type === EventType.Custom && e.data.tag === 'sessionIdle'\n}\n\nfunction sessionRecordingUrlTriggerMatches(url: string, triggers: SessionRecordingUrlTrigger[]) {\n    return triggers.some((trigger) => {\n        switch (trigger.matching) {\n            case 'regex':\n                return new RegExp(trigger.url).test(url)\n            default:\n                return false\n        }\n    })\n}\n\n/** When we put the recording into a paused state, we add a custom event.\n *  However in the paused state, events are dropped, and never make it to the buffer,\n *  so we need to manually let this one through */\nfunction isRecordingPausedEvent(e: eventWithTime) {\n    return e.type === EventType.Custom && e.data.tag === 'recording paused'\n}\n\nexport class SessionRecording {\n    private _endpoint: string\n    private flushBufferTimer?: any\n\n    // we have a buffer - that contains PostHog snapshot events ready to be sent to the server\n    private buffer: SnapshotBuffer\n    // and a queue - that contains rrweb events that we want to send to rrweb, but rrweb wasn't able to accept them yet\n    private queuedRRWebEvents: QueuedRRWebEvent[] = []\n\n    private mutationRateLimiter?: MutationRateLimiter\n    private _captureStarted: boolean\n    private stopRrweb: listenerHandler | undefined\n    private receivedDecide: boolean\n    private isIdle = false\n\n    private _linkedFlagSeen: boolean = false\n    private _lastActivityTimestamp: number = Date.now()\n    private windowId: string\n    private sessionId: string\n    private _linkedFlag: string | FlagVariant | null = null\n\n    private _fullSnapshotTimer?: ReturnType<typeof setInterval>\n\n    private _removePageViewCaptureHook: (() => void) | undefined = undefined\n    private _onSessionIdListener: (() => void) | undefined = undefined\n    private _persistDecideOnSessionListener: (() => void) | undefined = undefined\n    private _samplingSessionListener: (() => void) | undefined = undefined\n\n    // if pageview capture is disabled\n    // then we can manually track href changes\n    private _lastHref?: string\n\n    private _urlTriggers: SessionRecordingUrlTrigger[] = []\n    private _urlBlocklist: SessionRecordingUrlTrigger[] = []\n\n    private _urlBlocked: boolean = false\n\n    private _eventTriggers: string[] = []\n    private _removeEventTriggerCaptureHook: (() => void) | undefined = undefined\n\n    // Util to help developers working on this feature manually override\n    _forceAllowLocalhostNetworkCapture = false\n\n    private get sessionIdleThresholdMilliseconds(): number {\n        return this.instance.config.session_recording.session_idle_threshold_ms || RECORDING_IDLE_THRESHOLD_MS\n    }\n\n    private get rrwebRecord(): rrwebRecord | undefined {\n        return assignableWindow?.__PosthogExtensions__?.rrweb?.record\n    }\n\n    public get started(): boolean {\n        // TODO could we use status instead of _captureStarted?\n        return this._captureStarted\n    }\n\n    private get sessionManager() {\n        if (!this.instance.sessionManager) {\n            throw new Error(LOGGER_PREFIX + ' must be started with a valid sessionManager.')\n        }\n\n        return this.instance.sessionManager\n    }\n\n    private get fullSnapshotIntervalMillis(): number {\n        if (this.triggerStatus === 'trigger_pending') {\n            return ONE_MINUTE\n        }\n\n        return this.instance.config.session_recording?.full_snapshot_interval_millis ?? FIVE_MINUTES\n    }\n\n    private get isSampled(): boolean | null {\n        const currentValue = this.instance.get_property(SESSION_RECORDING_IS_SAMPLED)\n        return isBoolean(currentValue) ? currentValue : null\n    }\n\n    private get sessionDuration(): number | null {\n        const mostRecentSnapshot = this.buffer?.data[this.buffer?.data.length - 1]\n        const { sessionStartTimestamp } = this.sessionManager.checkAndGetSessionAndWindowId(true)\n        return mostRecentSnapshot ? mostRecentSnapshot.timestamp - sessionStartTimestamp : null\n    }\n\n    private get isRecordingEnabled() {\n        const enabled_server_side = !!this.instance.get_property(SESSION_RECORDING_ENABLED_SERVER_SIDE)\n        const enabled_client_side = !this.instance.config.disable_session_recording\n        return window && enabled_server_side && enabled_client_side\n    }\n\n    private get isConsoleLogCaptureEnabled() {\n        const enabled_server_side = !!this.instance.get_property(CONSOLE_LOG_RECORDING_ENABLED_SERVER_SIDE)\n        const enabled_client_side = this.instance.config.enable_recording_console_log\n        return enabled_client_side ?? enabled_server_side\n    }\n\n    private get canvasRecording(): { enabled: boolean; fps: number; quality: number } {\n        const canvasRecording_client_side = this.instance.config.session_recording.captureCanvas\n        const canvasRecording_server_side = this.instance.get_property(SESSION_RECORDING_CANVAS_RECORDING)\n\n        const enabled = canvasRecording_client_side?.recordCanvas ?? canvasRecording_server_side?.enabled ?? false\n        const fps = canvasRecording_client_side?.canvasFps ?? canvasRecording_server_side?.fps ?? 0\n        const quality = canvasRecording_client_side?.canvasQuality ?? canvasRecording_server_side?.quality ?? 0\n\n        return {\n            enabled,\n            fps: clampToRange(fps, 0, 12, 'canvas recording fps'),\n            quality: clampToRange(quality, 0, 1, 'canvas recording quality'),\n        }\n    }\n\n    // network payload capture config has three parts\n    // each can be configured server side or client side\n    private get networkPayloadCapture():\n        | Pick<NetworkRecordOptions, 'recordHeaders' | 'recordBody' | 'recordPerformance'>\n        | undefined {\n        const networkPayloadCapture_server_side = this.instance.get_property(SESSION_RECORDING_NETWORK_PAYLOAD_CAPTURE)\n        const networkPayloadCapture_client_side = {\n            recordHeaders: this.instance.config.session_recording?.recordHeaders,\n            recordBody: this.instance.config.session_recording?.recordBody,\n        }\n        const headersEnabled =\n            networkPayloadCapture_client_side?.recordHeaders || networkPayloadCapture_server_side?.recordHeaders\n        const bodyEnabled =\n            networkPayloadCapture_client_side?.recordBody || networkPayloadCapture_server_side?.recordBody\n        const clientConfigForPerformanceCapture = isObject(this.instance.config.capture_performance)\n            ? this.instance.config.capture_performance.network_timing\n            : this.instance.config.capture_performance\n        const networkTimingEnabled = !!(isBoolean(clientConfigForPerformanceCapture)\n            ? clientConfigForPerformanceCapture\n            : networkPayloadCapture_server_side?.capturePerformance)\n\n        return headersEnabled || bodyEnabled || networkTimingEnabled\n            ? { recordHeaders: headersEnabled, recordBody: bodyEnabled, recordPerformance: networkTimingEnabled }\n            : undefined\n    }\n\n    private get sampleRate(): number | null {\n        const rate = this.instance.get_property(SESSION_RECORDING_SAMPLE_RATE)\n        return isNumber(rate) ? rate : null\n    }\n\n    private get minimumDuration(): number | null {\n        const duration = this.instance.get_property(SESSION_RECORDING_MINIMUM_DURATION)\n        return isNumber(duration) ? duration : null\n    }\n\n    /**\n     * defaults to buffering mode until a decide response is received\n     * once a decide response is received status can be disabled, active or sampled\n     */\n    get status(): SessionRecordingStatus {\n        if (!this.receivedDecide) {\n            return 'buffering'\n        }\n\n        if (!this.isRecordingEnabled) {\n            return 'disabled'\n        }\n\n        if (this._urlBlocked) {\n            return 'paused'\n        }\n\n        if (!isNullish(this._linkedFlag) && !this._linkedFlagSeen) {\n            return 'buffering'\n        }\n\n        if (this.triggerStatus === 'trigger_pending') {\n            return 'buffering'\n        }\n\n        if (isBoolean(this.isSampled)) {\n            return this.isSampled ? 'sampled' : 'disabled'\n        } else {\n            return 'active'\n        }\n    }\n\n    private get urlTriggerStatus(): TriggerStatus {\n        if (this._urlTriggers.length === 0) {\n            return 'trigger_disabled'\n        }\n\n        const currentTriggerSession = this.instance?.get_property(SESSION_RECORDING_URL_TRIGGER_ACTIVATED_SESSION)\n        return currentTriggerSession === this.sessionId ? 'trigger_activated' : 'trigger_pending'\n    }\n\n    private get eventTriggerStatus(): TriggerStatus {\n        if (this._eventTriggers.length === 0) {\n            return 'trigger_disabled'\n        }\n\n        const currentTriggerSession = this.instance?.get_property(SESSION_RECORDING_EVENT_TRIGGER_ACTIVATED_SESSION)\n        return currentTriggerSession === this.sessionId ? 'trigger_activated' : 'trigger_pending'\n    }\n\n    private get triggerStatus(): TriggerStatus {\n        const eitherIsActivated =\n            this.eventTriggerStatus === 'trigger_activated' || this.urlTriggerStatus === 'trigger_activated'\n        const eitherIsPending =\n            this.eventTriggerStatus === 'trigger_pending' || this.urlTriggerStatus === 'trigger_pending'\n        return eitherIsActivated ? 'trigger_activated' : eitherIsPending ? 'trigger_pending' : 'trigger_disabled'\n    }\n\n    constructor(private readonly instance: PostHog) {\n        this._captureStarted = false\n        this._endpoint = BASE_ENDPOINT\n        this.stopRrweb = undefined\n        this.receivedDecide = false\n\n        if (!this.instance.sessionManager) {\n            logger.error('started without valid sessionManager')\n            throw new Error(LOGGER_PREFIX + ' started without valid sessionManager. This is a bug.')\n        }\n        if (this.instance.config.__preview_experimental_cookieless_mode) {\n            throw new Error(LOGGER_PREFIX + ' cannot be used with __preview_experimental_cookieless_mode.')\n        }\n\n        // we know there's a sessionManager, so don't need to start without a session id\n        const { sessionId, windowId } = this.sessionManager.checkAndGetSessionAndWindowId()\n        this.sessionId = sessionId\n        this.windowId = windowId\n\n        this.buffer = this.clearBuffer()\n\n        if (this.sessionIdleThresholdMilliseconds >= this.sessionManager.sessionTimeoutMs) {\n            logger.warn(\n                `session_idle_threshold_ms (${this.sessionIdleThresholdMilliseconds}) is greater than the session timeout (${this.sessionManager.sessionTimeoutMs}). Session will never be detected as idle`\n            )\n        }\n    }\n\n    private _onBeforeUnload = (): void => {\n        this._flushBuffer()\n    }\n\n    private _onOffline = (): void => {\n        this._tryAddCustomEvent('browser offline', {})\n    }\n\n    private _onOnline = (): void => {\n        this._tryAddCustomEvent('browser online', {})\n    }\n\n    private _onVisibilityChange = (): void => {\n        if (document?.visibilityState) {\n            const label = 'window ' + document.visibilityState\n            this._tryAddCustomEvent(label, {})\n        }\n    }\n\n    startIfEnabledOrStop(startReason?: SessionStartReason) {\n        if (this.isRecordingEnabled) {\n            this._startCapture(startReason)\n\n            // calling addEventListener multiple times is safe and will not add duplicates\n            addEventListener(window, 'beforeunload', this._onBeforeUnload)\n            addEventListener(window, 'offline', this._onOffline)\n            addEventListener(window, 'online', this._onOnline)\n            addEventListener(window, 'visibilitychange', this._onVisibilityChange)\n\n            // on reload there might be an already sampled session that should be continued before decide response,\n            // so we call this here _and_ in the decide response\n            this._setupSampling()\n\n            this._addEventTriggerListener()\n\n            if (isNullish(this._removePageViewCaptureHook)) {\n                // :TRICKY: rrweb does not capture navigation within SPA-s, so hook into our $pageview events to get access to all events.\n                //   Dropping the initial event is fine (it's always captured by rrweb).\n                this._removePageViewCaptureHook = this.instance.on('eventCaptured', (event) => {\n                    // If anything could go wrong here it has the potential to block the main loop,\n                    // so we catch all errors.\n                    try {\n                        if (event.event === '$pageview') {\n                            const href = event?.properties.$current_url\n                                ? this._maskUrl(event?.properties.$current_url)\n                                : ''\n                            if (!href) {\n                                return\n                            }\n                            this._tryAddCustomEvent('$pageview', { href })\n                        }\n                    } catch (e) {\n                        logger.error('Could not add $pageview to rrweb session', e)\n                    }\n                })\n            }\n\n            if (!this._onSessionIdListener) {\n                this._onSessionIdListener = this.sessionManager.onSessionId((sessionId, windowId, changeReason) => {\n                    if (changeReason) {\n                        this._tryAddCustomEvent('$session_id_change', { sessionId, windowId, changeReason })\n\n                        this.instance?.persistence?.unregister(SESSION_RECORDING_EVENT_TRIGGER_ACTIVATED_SESSION)\n                        this.instance?.persistence?.unregister(SESSION_RECORDING_URL_TRIGGER_ACTIVATED_SESSION)\n                    }\n                })\n            }\n        } else {\n            this.stopRecording()\n        }\n    }\n\n    stopRecording() {\n        if (this._captureStarted && this.stopRrweb) {\n            this.stopRrweb()\n            this.stopRrweb = undefined\n            this._captureStarted = false\n\n            window?.removeEventListener('beforeunload', this._onBeforeUnload)\n            window?.removeEventListener('offline', this._onOffline)\n            window?.removeEventListener('online', this._onOnline)\n            window?.removeEventListener('visibilitychange', this._onVisibilityChange)\n\n            this.clearBuffer()\n            clearInterval(this._fullSnapshotTimer)\n\n            this._removePageViewCaptureHook?.()\n            this._removePageViewCaptureHook = undefined\n            this._removeEventTriggerCaptureHook?.()\n            this._removeEventTriggerCaptureHook = undefined\n            this._onSessionIdListener?.()\n            this._onSessionIdListener = undefined\n            this._samplingSessionListener?.()\n            this._samplingSessionListener = undefined\n\n            logger.info('stopped')\n        }\n    }\n\n    private makeSamplingDecision(sessionId: string): void {\n        const sessionIdChanged = this.sessionId !== sessionId\n\n        // capture the current sample rate,\n        // because it is re-used multiple times\n        // and the bundler won't minimise any of the references\n        const currentSampleRate = this.sampleRate\n\n        if (!isNumber(currentSampleRate)) {\n            this.instance.persistence?.register({\n                [SESSION_RECORDING_IS_SAMPLED]: null,\n            })\n            return\n        }\n\n        const storedIsSampled = this.isSampled\n\n        /**\n         * if we get this far then we should make a sampling decision.\n         * When the session id changes or there is no stored sampling decision for this session id\n         * then we should make a new decision.\n         *\n         * Otherwise, we should use the stored decision.\n         */\n        const makeDecision = sessionIdChanged || !isBoolean(storedIsSampled)\n        const shouldSample = makeDecision ? sampleOnProperty(sessionId, currentSampleRate) : storedIsSampled\n\n        if (makeDecision) {\n            if (shouldSample) {\n                this._reportStarted('sampled')\n            } else {\n                logger.warn(\n                    `Sample rate (${currentSampleRate}) has determined that this sessionId (${sessionId}) will not be sent to the server.`\n                )\n            }\n\n            this._tryAddCustomEvent('samplingDecisionMade', {\n                sampleRate: currentSampleRate,\n                isSampled: shouldSample,\n            })\n        }\n\n        this.instance.persistence?.register({\n            [SESSION_RECORDING_IS_SAMPLED]: shouldSample,\n        })\n    }\n\n    onRemoteConfig(response: RemoteConfig) {\n        this._tryAddCustomEvent('$remote_config_received', response)\n        this._persistRemoteConfig(response)\n\n        this._linkedFlag = response.sessionRecording?.linkedFlag || null\n\n        if (response.sessionRecording?.endpoint) {\n            this._endpoint = response.sessionRecording?.endpoint\n        }\n\n        this._setupSampling()\n\n        if (!isNullish(this._linkedFlag) && !this._linkedFlagSeen) {\n            const linkedFlag = isString(this._linkedFlag) ? this._linkedFlag : this._linkedFlag.flag\n            const linkedVariant = isString(this._linkedFlag) ? null : this._linkedFlag.variant\n            this.instance.onFeatureFlags((_flags, variants) => {\n                const flagIsPresent = isObject(variants) && linkedFlag in variants\n                const linkedFlagMatches = linkedVariant ? variants[linkedFlag] === linkedVariant : flagIsPresent\n                if (linkedFlagMatches) {\n                    this._reportStarted('linked_flag_matched', {\n                        linkedFlag,\n                        linkedVariant,\n                    })\n                }\n                this._linkedFlagSeen = linkedFlagMatches\n            })\n        }\n\n        if (response.sessionRecording?.urlTriggers) {\n            this._urlTriggers = response.sessionRecording.urlTriggers\n        }\n\n        if (response.sessionRecording?.urlBlocklist) {\n            this._urlBlocklist = response.sessionRecording.urlBlocklist\n        }\n\n        if (response.sessionRecording?.eventTriggers) {\n            this._eventTriggers = response.sessionRecording.eventTriggers\n        }\n\n        this.receivedDecide = true\n        this.startIfEnabledOrStop()\n    }\n\n    /**\n     * This might be called more than once so needs to be idempotent\n     */\n    private _setupSampling() {\n        if (isNumber(this.sampleRate) && isNullish(this._samplingSessionListener)) {\n            this._samplingSessionListener = this.sessionManager.onSessionId((sessionId) => {\n                this.makeSamplingDecision(sessionId)\n            })\n        }\n    }\n\n    private _persistRemoteConfig(response: RemoteConfig): void {\n        if (this.instance.persistence) {\n            const persistence = this.instance.persistence\n\n            const persistResponse = () => {\n                const receivedSampleRate = response.sessionRecording?.sampleRate\n\n                const parsedSampleRate = isNullish(receivedSampleRate) ? null : parseFloat(receivedSampleRate)\n                const receivedMinimumDuration = response.sessionRecording?.minimumDurationMilliseconds\n\n                persistence.register({\n                    [SESSION_RECORDING_ENABLED_SERVER_SIDE]: !!response['sessionRecording'],\n                    [CONSOLE_LOG_RECORDING_ENABLED_SERVER_SIDE]: response.sessionRecording?.consoleLogRecordingEnabled,\n                    [SESSION_RECORDING_NETWORK_PAYLOAD_CAPTURE]: {\n                        capturePerformance: response.capturePerformance,\n                        ...response.sessionRecording?.networkPayloadCapture,\n                    },\n                    [SESSION_RECORDING_CANVAS_RECORDING]: {\n                        enabled: response.sessionRecording?.recordCanvas,\n                        fps: response.sessionRecording?.canvasFps,\n                        quality: response.sessionRecording?.canvasQuality,\n                    },\n                    [SESSION_RECORDING_SAMPLE_RATE]: parsedSampleRate,\n                    [SESSION_RECORDING_MINIMUM_DURATION]: isUndefined(receivedMinimumDuration)\n                        ? null\n                        : receivedMinimumDuration,\n                    [SESSION_RECORDING_SCRIPT_CONFIG]: response.sessionRecording?.scriptConfig,\n                })\n            }\n\n            persistResponse()\n\n            // in case we see multiple decide responses, we should only listen with the response from the most recent one\n            this._persistDecideOnSessionListener?.()\n            this._persistDecideOnSessionListener = this.sessionManager.onSessionId(persistResponse)\n        }\n    }\n\n    log(message: string, level: 'log' | 'warn' | 'error' = 'log') {\n        this.instance.sessionRecording?.onRRwebEmit({\n            type: 6,\n            data: {\n                plugin: 'rrweb/console@1',\n                payload: {\n                    level,\n                    trace: [],\n                    // Even though it is a string we stringify it as that's what rrweb expects\n                    payload: [JSON.stringify(message)],\n                },\n            },\n            timestamp: Date.now(),\n        })\n    }\n\n    private _startCapture(startReason?: SessionStartReason) {\n        if (isUndefined(Object.assign) || isUndefined(Array.from)) {\n            // According to the rrweb docs, rrweb is not supported on IE11 and below:\n            // \"rrweb does not support IE11 and below because it uses the MutationObserver API which was supported by these browsers.\"\n            // https://github.com/rrweb-io/rrweb/blob/master/guide.md#compatibility-note\n            //\n            // However, MutationObserver does exist on IE11, it just doesn't work well and does not detect all changes.\n            // Instead, when we load \"recorder.js\", the first JS error is about \"Object.assign\" and \"Array.from\" being undefined.\n            // Thus instead of MutationObserver, we look for this function and block recording if it's undefined.\n            return\n        }\n\n        // We do not switch recorder versions midway through a recording.\n        // do not start if explicitly disabled or if the user has opted out\n        if (\n            this._captureStarted ||\n            this.instance.config.disable_session_recording ||\n            this.instance.consent.isOptedOut()\n        ) {\n            return\n        }\n\n        this._captureStarted = true\n        // We want to ensure the sessionManager is reset if necessary on load of the recorder\n        this.sessionManager.checkAndGetSessionAndWindowId()\n\n        // If recorder.js is already loaded (if array.full.js snippet is used or posthog-js/dist/recorder is\n        // imported), don't load script. Otherwise, remotely import recorder.js from cdn since it hasn't been loaded.\n        if (!this.rrwebRecord) {\n            assignableWindow.__PosthogExtensions__?.loadExternalDependency?.(this.instance, this.scriptName, (err) => {\n                if (err) {\n                    return logger.error('could not load recorder', err)\n                }\n\n                this._onScriptLoaded()\n            })\n        } else {\n            this._onScriptLoaded()\n        }\n\n        logger.info('starting')\n        if (this.status === 'active') {\n            this._reportStarted(startReason || 'recording_initialized')\n        }\n    }\n\n    private get scriptName(): PostHogExtensionKind {\n        return (\n            (this.instance?.persistence?.get_property(SESSION_RECORDING_SCRIPT_CONFIG)\n                ?.script as PostHogExtensionKind) || 'recorder'\n        )\n    }\n\n    private isInteractiveEvent(event: eventWithTime) {\n        return (\n            event.type === INCREMENTAL_SNAPSHOT_EVENT_TYPE &&\n            ACTIVE_SOURCES.indexOf(event.data?.source as IncrementalSource) !== -1\n        )\n    }\n\n    private _updateWindowAndSessionIds(event: eventWithTime) {\n        // Some recording events are triggered by non-user events (e.g. \"X minutes ago\" text updating on the screen).\n        // We don't want to extend the session or trigger a new session in these cases. These events are designated by event\n        // type -> incremental update, and source -> mutation.\n\n        const isUserInteraction = this.isInteractiveEvent(event)\n\n        if (!isUserInteraction && !this.isIdle) {\n            // We check if the lastActivityTimestamp is old enough to go idle\n            const timeSinceLastActivity = event.timestamp - this._lastActivityTimestamp\n            if (timeSinceLastActivity > this.sessionIdleThresholdMilliseconds) {\n                // we mark as idle right away,\n                // or else we get multiple idle events\n                // if there are lots of non-user activity events being emitted\n                this.isIdle = true\n\n                // don't take full snapshots while idle\n                clearInterval(this._fullSnapshotTimer)\n\n                this._tryAddCustomEvent('sessionIdle', {\n                    eventTimestamp: event.timestamp,\n                    lastActivityTimestamp: this._lastActivityTimestamp,\n                    threshold: this.sessionIdleThresholdMilliseconds,\n                    bufferLength: this.buffer.data.length,\n                    bufferSize: this.buffer.size,\n                })\n\n                // proactively flush the buffer in case the session is idle for a long time\n                this._flushBuffer()\n            }\n        }\n\n        let returningFromIdle = false\n        if (isUserInteraction) {\n            this._lastActivityTimestamp = event.timestamp\n            if (this.isIdle) {\n                // Remove the idle state\n                this.isIdle = false\n                this._tryAddCustomEvent('sessionNoLongerIdle', {\n                    reason: 'user activity',\n                    type: event.type,\n                })\n                returningFromIdle = true\n            }\n        }\n\n        if (this.isIdle) {\n            return\n        }\n\n        // We only want to extend the session if it is an interactive event.\n        const { windowId, sessionId } = this.sessionManager.checkAndGetSessionAndWindowId(\n            !isUserInteraction,\n            event.timestamp\n        )\n\n        const sessionIdChanged = this.sessionId !== sessionId\n        const windowIdChanged = this.windowId !== windowId\n\n        this.windowId = windowId\n        this.sessionId = sessionId\n\n        if (sessionIdChanged || windowIdChanged) {\n            this.stopRecording()\n            this.startIfEnabledOrStop('session_id_changed')\n        } else if (returningFromIdle) {\n            this._scheduleFullSnapshot()\n        }\n    }\n\n    private _tryRRWebMethod(queuedRRWebEvent: QueuedRRWebEvent): boolean {\n        try {\n            queuedRRWebEvent.rrwebMethod()\n            return true\n        } catch (e) {\n            // Sometimes a race can occur where the recorder is not fully started yet\n            if (this.queuedRRWebEvents.length < 10) {\n                this.queuedRRWebEvents.push({\n                    enqueuedAt: queuedRRWebEvent.enqueuedAt || Date.now(),\n                    attempt: queuedRRWebEvent.attempt++,\n                    rrwebMethod: queuedRRWebEvent.rrwebMethod,\n                })\n            } else {\n                logger.warn('could not emit queued rrweb event.', e, queuedRRWebEvent)\n            }\n\n            return false\n        }\n    }\n\n    private _tryAddCustomEvent(tag: string, payload: any): boolean {\n        return this._tryRRWebMethod(newQueuedEvent(() => this.rrwebRecord!.addCustomEvent(tag, payload)))\n    }\n\n    private _tryTakeFullSnapshot(): boolean {\n        return this._tryRRWebMethod(newQueuedEvent(() => this.rrwebRecord!.takeFullSnapshot()))\n    }\n\n    private _onScriptLoaded() {\n        // rrweb config info: https://github.com/rrweb-io/rrweb/blob/7d5d0033258d6c29599fb08412202d9a2c7b9413/src/record/index.ts#L28\n        const sessionRecordingOptions: recordOptions = {\n            // select set of rrweb config options we expose to our users\n            // see https://github.com/rrweb-io/rrweb/blob/master/guide.md\n            blockClass: 'ph-no-capture',\n            blockSelector: undefined,\n            ignoreClass: 'ph-ignore-input',\n            maskTextClass: 'ph-mask',\n            maskTextSelector: undefined,\n            maskTextFn: undefined,\n            maskAllInputs: true,\n            maskInputOptions: { password: true },\n            maskInputFn: undefined,\n            slimDOMOptions: {},\n            collectFonts: false,\n            inlineStylesheet: true,\n            recordCrossOriginIframes: false,\n        }\n\n        // only allows user to set our allow-listed options\n        const userSessionRecordingOptions = this.instance.config.session_recording\n        for (const [key, value] of Object.entries(userSessionRecordingOptions || {})) {\n            if (key in sessionRecordingOptions) {\n                if (key === 'maskInputOptions') {\n                    // ensure password is set if not included\n                    sessionRecordingOptions.maskInputOptions = { password: true, ...value }\n                } else {\n                    // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n                    // @ts-ignore\n                    sessionRecordingOptions[key] = value\n                }\n            }\n        }\n\n        if (this.canvasRecording && this.canvasRecording.enabled) {\n            sessionRecordingOptions.recordCanvas = true\n            sessionRecordingOptions.sampling = { canvas: this.canvasRecording.fps }\n            sessionRecordingOptions.dataURLOptions = { type: 'image/webp', quality: this.canvasRecording.quality }\n        }\n\n        if (!this.rrwebRecord) {\n            logger.error(\n                'onScriptLoaded was called but rrwebRecord is not available. This indicates something has gone wrong.'\n            )\n            return\n        }\n\n        this.mutationRateLimiter =\n            this.mutationRateLimiter ??\n            new MutationRateLimiter(this.rrwebRecord, {\n                refillRate: this.instance.config.session_recording.__mutationRateLimiterRefillRate,\n                bucketSize: this.instance.config.session_recording.__mutationRateLimiterBucketSize,\n                onBlockedNode: (id, node) => {\n                    const message = `Too many mutations on node '${id}'. Rate limiting. This could be due to SVG animations or something similar`\n                    logger.info(message, {\n                        node: node,\n                    })\n\n                    this.log(LOGGER_PREFIX + ' ' + message, 'warn')\n                },\n            })\n\n        const activePlugins = this._gatherRRWebPlugins()\n        this.stopRrweb = this.rrwebRecord({\n            emit: (event) => {\n                this.onRRwebEmit(event)\n            },\n            plugins: activePlugins,\n            ...sessionRecordingOptions,\n        })\n\n        // We reset the last activity timestamp, resetting the idle timer\n        this._lastActivityTimestamp = Date.now()\n        this.isIdle = false\n\n        this._tryAddCustomEvent('$session_options', {\n            sessionRecordingOptions,\n            activePlugins: activePlugins.map((p) => p?.name),\n        })\n\n        this._tryAddCustomEvent('$posthog_config', {\n            config: this.instance.config,\n        })\n    }\n\n    private _scheduleFullSnapshot(): void {\n        if (this._fullSnapshotTimer) {\n            clearInterval(this._fullSnapshotTimer)\n        }\n        // we don't schedule snapshots while idle\n        if (this.isIdle) {\n            return\n        }\n\n        const interval = this.fullSnapshotIntervalMillis\n        if (!interval) {\n            return\n        }\n\n        this._fullSnapshotTimer = setInterval(() => {\n            this._tryTakeFullSnapshot()\n        }, interval)\n    }\n\n    private _gatherRRWebPlugins() {\n        const plugins: RecordPlugin<unknown>[] = []\n\n        const recordConsolePlugin = assignableWindow.__PosthogExtensions__?.rrwebPlugins?.getRecordConsolePlugin\n        if (recordConsolePlugin && this.isConsoleLogCaptureEnabled) {\n            plugins.push(recordConsolePlugin())\n        }\n\n        const networkPlugin = assignableWindow.__PosthogExtensions__?.rrwebPlugins?.getRecordNetworkPlugin\n        if (this.networkPayloadCapture && isFunction(networkPlugin)) {\n            const canRecordNetwork = !isLocalhost() || this._forceAllowLocalhostNetworkCapture\n\n            if (canRecordNetwork) {\n                plugins.push(\n                    networkPlugin(buildNetworkRequestOptions(this.instance.config, this.networkPayloadCapture))\n                )\n            } else {\n                logger.info('NetworkCapture not started because we are on localhost.')\n            }\n        }\n\n        return plugins\n    }\n\n    onRRwebEmit(rawEvent: eventWithTime) {\n        this._processQueuedEvents()\n\n        if (!rawEvent || !isObject(rawEvent)) {\n            return\n        }\n\n        if (rawEvent.type === EventType.Meta) {\n            const href = this._maskUrl(rawEvent.data.href)\n            this._lastHref = href\n            if (!href) {\n                return\n            }\n            rawEvent.data.href = href\n        } else {\n            this._pageViewFallBack()\n        }\n\n        // Check if the URL matches any trigger patterns\n        this._checkUrlTriggerConditions()\n\n        if (this.status === 'paused' && !isRecordingPausedEvent(rawEvent)) {\n            return\n        }\n\n        // we're processing a full snapshot, so we should reset the timer\n        if (rawEvent.type === EventType.FullSnapshot) {\n            this._scheduleFullSnapshot()\n        }\n\n        // Clear the buffer if waiting for a trigger, and only keep data from after the current full snapshot\n        if (rawEvent.type === EventType.FullSnapshot && this.triggerStatus === 'trigger_pending') {\n            this.clearBuffer()\n        }\n\n        const throttledEvent = this.mutationRateLimiter\n            ? this.mutationRateLimiter.throttleMutations(rawEvent)\n            : rawEvent\n\n        if (!throttledEvent) {\n            return\n        }\n\n        // TODO: Re-add ensureMaxMessageSize once we are confident in it\n        const event = truncateLargeConsoleLogs(throttledEvent)\n\n        this._updateWindowAndSessionIds(event)\n\n        // When in an idle state we keep recording, but don't capture the events,\n        if (this.isIdle && !isSessionIdleEvent(event)) {\n            return\n        }\n\n        if (isSessionIdleEvent(event)) {\n            // session idle events have a timestamp when rrweb sees them\n            // which can artificially lengthen a session\n            // we know when we detected it based on the payload and can correct the timestamp\n            const payload = event.data.payload as SessionIdlePayload\n            if (payload) {\n                const lastActivity = payload.lastActivityTimestamp\n                const threshold = payload.threshold\n                event.timestamp = lastActivity + threshold\n            }\n        }\n\n        const eventToSend =\n            (this.instance.config.session_recording.compress_events ?? true) ? compressEvent(event) : event\n        const size = estimateSize(eventToSend)\n\n        const properties = {\n            $snapshot_bytes: size,\n            $snapshot_data: eventToSend,\n            $session_id: this.sessionId,\n            $window_id: this.windowId,\n        }\n\n        if (this.status === 'disabled') {\n            this.clearBuffer()\n            return\n        }\n\n        this._captureSnapshotBuffered(properties)\n    }\n\n    private _pageViewFallBack() {\n        if (this.instance.config.capture_pageview || !window) {\n            return\n        }\n        const currentUrl = this._maskUrl(window.location.href)\n        if (this._lastHref !== currentUrl) {\n            this._tryAddCustomEvent('$url_changed', { href: currentUrl })\n            this._lastHref = currentUrl\n        }\n    }\n\n    private _processQueuedEvents() {\n        if (this.queuedRRWebEvents.length) {\n            // if rrweb isn't ready to accept events earlier then we queued them up\n            // now that emit has been called rrweb should be ready to accept them\n            // so, before we process this event, we try our queued events _once_ each\n            // we don't want to risk queuing more things and never exiting this loop!\n            // if they fail here, they'll be pushed into a new queue,\n            // and tried on the next loop.\n            // there is a risk of this queue growing in an uncontrolled manner,\n            // so its length is limited elsewhere\n            // for now this is to help us ensure we can capture events that happen\n            // and try to identify more about when it is failing\n            const itemsToProcess = [...this.queuedRRWebEvents]\n            this.queuedRRWebEvents = []\n            itemsToProcess.forEach((queuedRRWebEvent) => {\n                if (Date.now() - queuedRRWebEvent.enqueuedAt <= TWO_SECONDS) {\n                    this._tryRRWebMethod(queuedRRWebEvent)\n                }\n            })\n        }\n    }\n\n    private _maskUrl(url: string): string | undefined {\n        const userSessionRecordingOptions = this.instance.config.session_recording\n\n        if (userSessionRecordingOptions.maskNetworkRequestFn) {\n            let networkRequest: NetworkRequest | null | undefined = {\n                url,\n            }\n\n            // TODO we should deprecate this and use the same function for this masking and the rrweb/network plugin\n            // TODO or deprecate this and provide a new clearer name so this would be `maskURLPerformanceFn` or similar\n            networkRequest = userSessionRecordingOptions.maskNetworkRequestFn(networkRequest)\n\n            return networkRequest?.url\n        }\n\n        return url\n    }\n\n    private clearBuffer(): SnapshotBuffer {\n        this.buffer = {\n            size: 0,\n            data: [],\n            sessionId: this.sessionId,\n            windowId: this.windowId,\n        }\n        return this.buffer\n    }\n\n    private _flushBuffer(): SnapshotBuffer {\n        if (this.flushBufferTimer) {\n            clearTimeout(this.flushBufferTimer)\n            this.flushBufferTimer = undefined\n        }\n\n        const minimumDuration = this.minimumDuration\n        const sessionDuration = this.sessionDuration\n        // if we have old data in the buffer but the session has rotated then the\n        // session duration might be negative, in that case we want to flush the buffer\n        const isPositiveSessionDuration = isNumber(sessionDuration) && sessionDuration >= 0\n        const isBelowMinimumDuration =\n            isNumber(minimumDuration) && isPositiveSessionDuration && sessionDuration < minimumDuration\n\n        if (this.status === 'buffering' || this.status === 'paused' || isBelowMinimumDuration) {\n            this.flushBufferTimer = setTimeout(() => {\n                this._flushBuffer()\n            }, RECORDING_BUFFER_TIMEOUT)\n            return this.buffer\n        }\n\n        if (this.buffer.data.length > 0) {\n            const snapshotEvents = splitBuffer(this.buffer)\n            snapshotEvents.forEach((snapshotBuffer) => {\n                this._captureSnapshot({\n                    $snapshot_bytes: snapshotBuffer.size,\n                    $snapshot_data: snapshotBuffer.data,\n                    $session_id: snapshotBuffer.sessionId,\n                    $window_id: snapshotBuffer.windowId,\n                    $lib: 'web',\n                    $lib_version: Config.LIB_VERSION,\n                })\n            })\n        }\n\n        // buffer is empty, we clear it in case the session id has changed\n        return this.clearBuffer()\n    }\n\n    private _captureSnapshotBuffered(properties: Properties) {\n        const additionalBytes = 2 + (this.buffer?.data.length || 0) // 2 bytes for the array brackets and 1 byte for each comma\n        if (\n            !this.isIdle && // we never want to flush when idle\n            (this.buffer.size + properties.$snapshot_bytes + additionalBytes > RECORDING_MAX_EVENT_SIZE ||\n                this.buffer.sessionId !== this.sessionId)\n        ) {\n            this.buffer = this._flushBuffer()\n        }\n\n        this.buffer.size += properties.$snapshot_bytes\n        this.buffer.data.push(properties.$snapshot_data)\n\n        if (!this.flushBufferTimer && !this.isIdle) {\n            this.flushBufferTimer = setTimeout(() => {\n                this._flushBuffer()\n            }, RECORDING_BUFFER_TIMEOUT)\n        }\n    }\n\n    private _captureSnapshot(properties: Properties) {\n        // :TRICKY: Make sure we batch these requests, use a custom endpoint and don't truncate the strings.\n        this.instance.capture('$snapshot', properties, {\n            _url: this.instance.requestRouter.endpointFor('api', this._endpoint),\n            _noTruncate: true,\n            _batchKey: SESSION_RECORDING_BATCH_KEY,\n            skip_client_rate_limiting: true,\n        })\n    }\n\n    private _checkUrlTriggerConditions() {\n        if (typeof window === 'undefined' || !window.location.href) {\n            return\n        }\n\n        const url = window.location.href\n\n        const wasBlocked = this.status === 'paused'\n        const isNowBlocked = sessionRecordingUrlTriggerMatches(url, this._urlBlocklist)\n\n        if (isNowBlocked && !wasBlocked) {\n            this._pauseRecording()\n        } else if (!isNowBlocked && wasBlocked) {\n            this._resumeRecording()\n        }\n\n        if (sessionRecordingUrlTriggerMatches(url, this._urlTriggers)) {\n            this._activateTrigger('url')\n        }\n    }\n\n    private _activateTrigger(triggerType: TriggerType) {\n        if (this.triggerStatus === 'trigger_pending') {\n            // status is stored separately for URL and event triggers\n            this.instance?.persistence?.register({\n                [triggerType === 'url'\n                    ? SESSION_RECORDING_URL_TRIGGER_ACTIVATED_SESSION\n                    : SESSION_RECORDING_EVENT_TRIGGER_ACTIVATED_SESSION]: this.sessionId,\n            })\n\n            this._flushBuffer()\n            this._reportStarted((triggerType + '_trigger_matched') as SessionStartReason)\n        }\n    }\n\n    private _pauseRecording() {\n        if (this.status === 'paused') {\n            return\n        }\n\n        // we can't flush the buffer here since someone might be starting on a blocked page,\n        // and we need to be sure that we don't record that page\n        // so we might not get the below custom event but events will report the paused status\n        // which will allow debugging of sessions that start on blocked pages\n        this._urlBlocked = true\n\n        // Clear the snapshot timer since we don't want new snapshots while paused\n        clearInterval(this._fullSnapshotTimer)\n\n        logger.info('recording paused due to URL blocker')\n        this._tryAddCustomEvent('recording paused', { reason: 'url blocker' })\n    }\n\n    private _resumeRecording() {\n        if (this.status !== 'paused') {\n            return\n        }\n\n        this._urlBlocked = false\n\n        this._tryTakeFullSnapshot()\n        this._scheduleFullSnapshot()\n\n        this._tryAddCustomEvent('recording resumed', { reason: 'left blocked url' })\n        logger.info('recording resumed')\n    }\n\n    private _addEventTriggerListener() {\n        if (this._eventTriggers.length === 0 || !isNullish(this._removeEventTriggerCaptureHook)) {\n            return\n        }\n\n        this._removeEventTriggerCaptureHook = this.instance.on('eventCaptured', (event: CaptureResult) => {\n            // If anything could go wrong here it has the potential to block the main loop,\n            // so we catch all errors.\n            try {\n                if (this._eventTriggers.includes(event.event)) {\n                    this._activateTrigger('event')\n                }\n            } catch (e) {\n                logger.error('Could not activate event trigger', e)\n            }\n        })\n    }\n\n    /**\n     * this ignores the linked flag config and (if other conditions are met) causes capture to start\n     *\n     * It is not usual to call this directly,\n     * instead call `posthog.startSessionRecording({linked_flag: true})`\n     * */\n    public overrideLinkedFlag() {\n        this._linkedFlagSeen = true\n        this._tryTakeFullSnapshot()\n        this._reportStarted('linked_flag_overridden')\n    }\n\n    /**\n     * this ignores the sampling config and (if other conditions are met) causes capture to start\n     *\n     * It is not usual to call this directly,\n     * instead call `posthog.startSessionRecording({sampling: true})`\n     * */\n    public overrideSampling() {\n        this.instance.persistence?.register({\n            // short-circuits the `makeSamplingDecision` function in the session recording module\n            [SESSION_RECORDING_IS_SAMPLED]: true,\n        })\n        this._tryTakeFullSnapshot()\n        this._reportStarted('sampling_overridden')\n    }\n\n    /**\n     * this ignores the URL/Event trigger config and (if other conditions are met) causes capture to start\n     *\n     * It is not usual to call this directly,\n     * instead call `posthog.startSessionRecording({trigger: 'url' | 'event'})`\n     * */\n    public overrideTrigger(triggerType: TriggerType) {\n        this._activateTrigger(triggerType)\n    }\n\n    private _reportStarted(startReason: SessionStartReason, tagPayload?: Record<string, any>) {\n        this.instance.register_for_session({\n            $session_recording_start_reason: startReason,\n        })\n        logger.info(startReason.replace('_', ' '), tagPayload)\n        if (!includes(['recording_initialized', 'session_id_changed'], startReason)) {\n            this._tryAddCustomEvent(startReason, tagPayload)\n        }\n    }\n}\n", "import { PostHog } from './posthog-core'\nimport { RemoteConfig } from './types'\n\nimport { createLogger } from './utils/logger'\nimport { assignableWindow } from './utils/globals'\n\nconst logger = createLogger('[RemoteConfig]')\n\nexport class RemoteConfigLoader {\n    constructor(private readonly instance: PostHog) {}\n\n    get remoteConfig(): RemoteConfig | undefined {\n        return assignableWindow._POSTHOG_REMOTE_CONFIG?.[this.instance.config.token]?.config\n    }\n\n    private _loadRemoteConfigJs(cb: (config?: RemoteConfig) => void): void {\n        if (assignableWindow.__PosthogExtensions__?.loadExternalDependency) {\n            assignableWindow.__PosthogExtensions__?.loadExternalDependency?.(this.instance, 'remote-config', () => {\n                return cb(this.remoteConfig)\n            })\n        } else {\n            logger.error('PostHog Extensions not found. Cannot load remote config.')\n            cb()\n        }\n    }\n\n    private _loadRemoteConfigJSON(cb: (config?: RemoteConfig) => void): void {\n        this.instance._send_request({\n            method: 'GET',\n            url: this.instance.requestRouter.endpointFor('assets', `/array/${this.instance.config.token}/config`),\n            callback: (response) => {\n                cb(response.json as RemoteConfig | undefined)\n            },\n        })\n    }\n\n    load(): void {\n        try {\n            // Attempt 1 - use the pre-loaded config if it came as part of the token-specific array.js\n            if (this.remoteConfig) {\n                logger.info('Using preloaded remote config', this.remoteConfig)\n                this.onRemoteConfig(this.remoteConfig)\n                return\n            }\n\n            if (this.instance.config.advanced_disable_decide) {\n                // This setting is essentially saying \"dont call external APIs\" hence we respect it here\n                logger.warn('Remote config is disabled. Falling back to local config.')\n                return\n            }\n\n            // Attempt 2 - if we have the external deps loader then lets load the script version of the config that includes site apps\n            this._loadRemoteConfigJs((config) => {\n                if (!config) {\n                    logger.info('No config found after loading remote JS config. Falling back to JSON.')\n                    // Attempt 3 Load the config json instead of the script - we won't get site apps etc. but we will get the config\n                    this._loadRemoteConfigJSON((config) => {\n                        this.onRemoteConfig(config)\n                    })\n                    return\n                }\n\n                this.onRemoteConfig(config)\n            })\n        } catch (error) {\n            logger.error('Error loading remote config', error)\n        }\n    }\n\n    private onRemoteConfig(config?: RemoteConfig): void {\n        // NOTE: Once this is rolled out we will remove the \"decide\" related code above. Until then the code duplication is fine.\n        if (!config) {\n            logger.error('Failed to fetch remote config from PostHog.')\n            return\n        }\n\n        if (!this.instance.config.__preview_remote_config) {\n            logger.info('__preview_remote_config is disabled. Logging config instead', config)\n            return\n        }\n\n        this.instance._onRemoteConfig(config)\n\n        // We only need to reload if we haven't already loaded the flags or if the request is in flight\n        if (config.hasFeatureFlags !== false) {\n            // If the config has feature flags, we need to call decide to get the feature flags\n            // This completely separates it from the config logic which is good in terms of separation of concerns\n            this.instance.featureFlags.ensureFlagsLoaded()\n        }\n    }\n}\n", "import { addEventListener, trySafe } from '../utils'\nimport { PostHog } from '../posthog-core'\nimport { ToolbarParams } from '../types'\nimport { _getHashParam } from '../utils/request-utils'\nimport { createLogger } from '../utils/logger'\nimport { window, document, assignableWindow } from '../utils/globals'\nimport { TOOLBAR_ID } from '../constants'\nimport { isFunction, isNullish } from '../utils/type-utils'\n\n// TRICKY: Many web frameworks will modify the route on load, potentially before posthog is initialized.\n// To get ahead of this we grab it as soon as the posthog-js is parsed\nconst STATE_FROM_WINDOW = window?.location\n    ? _getHashParam(window.location.hash, '__posthog') || _getHashParam(location.hash, 'state')\n    : null\n\nconst LOCALSTORAGE_KEY = '_postHogToolbarParams'\n\nconst logger = createLogger('[Toolbar]')\n\nenum ToolbarState {\n    UNINITIALIZED = 0,\n    LOADING = 1,\n    LOADED = 2,\n}\n\nexport class Toolbar {\n    instance: PostHog\n\n    constructor(instance: PostHog) {\n        this.instance = instance\n    }\n\n    // NOTE: We store the state of the toolbar in the global scope to avoid multiple instances of the SDK loading the toolbar\n    private setToolbarState(state: ToolbarState) {\n        assignableWindow['ph_toolbar_state'] = state\n    }\n\n    private getToolbarState(): ToolbarState {\n        return assignableWindow['ph_toolbar_state'] ?? ToolbarState.UNINITIALIZED\n    }\n\n    /**\n     * To load the toolbar, we need an access token and other state. That state comes from one of three places:\n     * 1. In the URL hash params\n     * 2. From session storage under the key `toolbarParams` if the toolbar was initialized on a previous page\n     */\n    maybeLoadToolbar(\n        location: Location | undefined = undefined,\n        localStorage: Storage | undefined = undefined,\n        history: History | undefined = undefined\n    ): boolean {\n        if (!window || !document) {\n            return false\n        }\n        location = location ?? window.location\n        history = history ?? window.history\n\n        try {\n            // Before running the code we check if we can access localStorage, if not we opt-out\n            if (!localStorage) {\n                try {\n                    window.localStorage.setItem('test', 'test')\n                    window.localStorage.removeItem('test')\n                } catch {\n                    return false\n                }\n\n                // If localStorage was undefined, and localStorage is supported we set the default value\n                localStorage = window?.localStorage\n            }\n\n            /**\n             * Info about the state\n             * The state is a json object\n             * 1. (Legacy) The state can be `state={}` as a urlencoded object of info. In this case\n             * 2. The state should now be found in `__posthog={}` and can be base64 encoded or urlencoded.\n             * 3. Base64 encoding is preferred and will gradually be rolled out everywhere\n             */\n\n            const stateHash =\n                STATE_FROM_WINDOW || _getHashParam(location.hash, '__posthog') || _getHashParam(location.hash, 'state')\n\n            let toolbarParams: ToolbarParams\n            const state = stateHash\n                ? trySafe(() => JSON.parse(atob(decodeURIComponent(stateHash)))) ||\n                  trySafe(() => JSON.parse(decodeURIComponent(stateHash)))\n                : null\n\n            const parseFromUrl = state && state['action'] === 'ph_authorize'\n\n            if (parseFromUrl) {\n                // happens if they are initializing the toolbar using an old snippet\n                toolbarParams = state\n                toolbarParams.source = 'url'\n\n                if (toolbarParams && Object.keys(toolbarParams).length > 0) {\n                    if (state['desiredHash']) {\n                        // hash that was in the url before the redirect\n                        location.hash = state['desiredHash']\n                    } else if (history) {\n                        // second param is unused see https://developer.mozilla.org/en-US/docs/Web/API/History/replaceState\n                        history.replaceState(history.state, '', location.pathname + location.search) // completely remove hash\n                    } else {\n                        location.hash = '' // clear hash (but leaves # unfortunately)\n                    }\n                }\n            } else {\n                // get credentials from localStorage from a previous initialization\n\n                toolbarParams = JSON.parse(localStorage.getItem(LOCALSTORAGE_KEY) || '{}')\n                toolbarParams.source = 'localstorage'\n\n                // delete \"add-action\" or other intent from toolbarParams, otherwise we'll have the same intent\n                // every time we open the page (e.g. you just visiting your own site an hour later)\n                delete toolbarParams.userIntent\n            }\n\n            if (toolbarParams['token'] && this.instance.config.token === toolbarParams['token']) {\n                this.loadToolbar(toolbarParams)\n                return true\n            } else {\n                return false\n            }\n        } catch {\n            return false\n        }\n    }\n\n    private _callLoadToolbar(params: ToolbarParams) {\n        const loadFn = assignableWindow['ph_load_toolbar'] || assignableWindow['ph_load_editor']\n        if (isNullish(loadFn) || !isFunction(loadFn)) {\n            logger.warn('No toolbar load function found')\n            return\n        }\n        loadFn(params, this.instance)\n    }\n\n    loadToolbar(params?: ToolbarParams): boolean {\n        const toolbarRunning = !!document?.getElementById(TOOLBAR_ID)\n\n        if (!window || toolbarRunning) {\n            // The toolbar will clear the localStorage key when it's done with it. If it is present that indicates the toolbar is already open and running\n            return false\n        }\n\n        const disableToolbarMetrics =\n            this.instance.requestRouter.region === 'custom' && this.instance.config.advanced_disable_toolbar_metrics\n\n        const toolbarParams = {\n            token: this.instance.config.token,\n            ...params,\n            apiURL: this.instance.requestRouter.endpointFor('ui'),\n            ...(disableToolbarMetrics ? { instrument: false } : {}),\n        }\n        window.localStorage.setItem(\n            LOCALSTORAGE_KEY,\n            JSON.stringify({\n                ...toolbarParams,\n                source: undefined,\n            })\n        )\n\n        if (this.getToolbarState() === ToolbarState.LOADED) {\n            this._callLoadToolbar(toolbarParams)\n        } else if (this.getToolbarState() === ToolbarState.UNINITIALIZED) {\n            // only load the toolbar once, even if there are multiple instances of PostHogLib\n            this.setToolbarState(ToolbarState.LOADING)\n\n            assignableWindow.__PosthogExtensions__?.loadExternalDependency?.(this.instance, 'toolbar', (err) => {\n                if (err) {\n                    logger.error('[Toolbar] Failed to load', err)\n                    this.setToolbarState(ToolbarState.UNINITIALIZED)\n                    return\n                }\n                this.setToolbarState(ToolbarState.LOADED)\n                this._callLoadToolbar(toolbarParams)\n            })\n\n            // Turbolinks doesn't fire an onload event but does replace the entire body, including the toolbar.\n            // Thus, we ensure the toolbar is only loaded inside the body, and then reloaded on turbolinks:load.\n            addEventListener(window, 'turbolinks:load', () => {\n                this.setToolbarState(ToolbarState.UNINITIALIZED)\n                this.loadToolbar(toolbarParams)\n            })\n        }\n\n        return true\n    }\n\n    /** @deprecated Use \"loadToolbar\" instead. */\n    _loadEditor(params: ToolbarParams): boolean {\n        return this.loadToolbar(params)\n    }\n\n    /** @deprecated Use \"maybeLoadToolbar\" instead. */\n    maybeLoadEditor(\n        location: Location | undefined = undefined,\n        localStorage: Storage | undefined = undefined,\n        history: History | undefined = undefined\n    ): boolean {\n        return this.maybeLoadToolbar(location, localStorage, history)\n    }\n}\n", "import { QueuedRequestOptions } from './types'\nimport { each } from './utils'\n\nimport { isArray, isUndefined } from './utils/type-utils'\n\nexport class RequestQueue {\n    // We start in a paused state and only start flushing when enabled by the parent\n    private isPaused: boolean = true\n    private queue: QueuedRequestOptions[] = []\n    private flushTimeout?: ReturnType<typeof setTimeout>\n    private flushTimeoutMs = 3000\n    private sendRequest: (req: QueuedRequestOptions) => void\n\n    constructor(sendRequest: (req: QueuedRequestOptions) => void) {\n        this.sendRequest = sendRequest\n    }\n\n    enqueue(req: QueuedRequestOptions): void {\n        this.queue.push(req)\n\n        if (!this.flushTimeout) {\n            this.setFlushTimeout()\n        }\n    }\n\n    unload(): void {\n        this.clearFlushTimeout()\n        const requests = this.queue.length > 0 ? this.formatQueue() : {}\n        const requestValues = Object.values(requests)\n\n        // Always force events to be sent before recordings, as events are more important, and recordings are bigger and thus less likely to arrive\n        const sortedRequests = [\n            ...requestValues.filter((r) => r.url.indexOf('/e') === 0),\n            ...requestValues.filter((r) => r.url.indexOf('/e') !== 0),\n        ]\n        sortedRequests.map((req) => {\n            this.sendRequest({ ...req, transport: 'sendBeacon' })\n        })\n    }\n\n    enable(): void {\n        this.isPaused = false\n        this.setFlushTimeout()\n    }\n\n    private setFlushTimeout(): void {\n        if (this.isPaused) {\n            return\n        }\n        this.flushTimeout = setTimeout(() => {\n            this.clearFlushTimeout()\n            if (this.queue.length > 0) {\n                const requests = this.formatQueue()\n                for (const key in requests) {\n                    const req = requests[key]\n                    const now = new Date().getTime()\n\n                    if (req.data && isArray(req.data)) {\n                        each(req.data, (data) => {\n                            data['offset'] = Math.abs(data['timestamp'] - now)\n                            delete data['timestamp']\n                        })\n                    }\n                    this.sendRequest(req)\n                }\n            }\n        }, this.flushTimeoutMs)\n    }\n\n    private clearFlushTimeout(): void {\n        clearTimeout(this.flushTimeout)\n        this.flushTimeout = undefined\n    }\n\n    private formatQueue(): Record<string, QueuedRequestOptions> {\n        const requests: Record<string, QueuedRequestOptions> = {}\n        each(this.queue, (request: QueuedRequestOptions) => {\n            const req = request\n            const key = (req ? req.batchKey : null) || req.url\n            if (isUndefined(requests[key])) {\n                // TODO: What about this -it seems to batch data into an array - do we always want that?\n                requests[key] = { ...req, data: [] }\n            }\n\n            requests[key].data?.push(req.data)\n        })\n\n        this.queue = []\n        return requests\n    }\n}\n", "import { isNull } from './type-utils'\n\nexport function _base64Encode(data: null): null\nexport function _base64Encode(data: undefined): undefined\nexport function _base64Encode(data: string): string\nexport function _base64Encode(data: string | null | undefined): string | null | undefined {\n    const b64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='\n    let o1,\n        o2,\n        o3,\n        h1,\n        h2,\n        h3,\n        h4,\n        bits,\n        i = 0,\n        ac = 0,\n        enc = ''\n    const tmp_arr: string[] = []\n\n    if (!data) {\n        return data\n    }\n\n    data = utf8Encode(data)\n\n    do {\n        // pack three octets into four hexets\n        o1 = data.charCodeAt(i++)\n        o2 = data.charCodeAt(i++)\n        o3 = data.charCodeAt(i++)\n\n        bits = (o1 << 16) | (o2 << 8) | o3\n\n        h1 = (bits >> 18) & 0x3f\n        h2 = (bits >> 12) & 0x3f\n        h3 = (bits >> 6) & 0x3f\n        h4 = bits & 0x3f\n\n        // use hexets to index into b64, and append result to encoded string\n        tmp_arr[ac++] = b64.charAt(h1) + b64.charAt(h2) + b64.charAt(h3) + b64.charAt(h4)\n    } while (i < data.length)\n\n    enc = tmp_arr.join('')\n\n    switch (data.length % 3) {\n        case 1:\n            enc = enc.slice(0, -2) + '=='\n            break\n        case 2:\n            enc = enc.slice(0, -1) + '='\n            break\n    }\n\n    return enc\n}\n\nexport const utf8Encode = function (string: string): string {\n    string = (string + '').replace(/\\r\\n/g, '\\n').replace(/\\r/g, '\\n')\n\n    let utftext = '',\n        start,\n        end\n    let stringl = 0,\n        n\n\n    start = end = 0\n    stringl = string.length\n\n    for (n = 0; n < stringl; n++) {\n        const c1 = string.charCodeAt(n)\n        let enc = null\n\n        if (c1 < 128) {\n            end++\n        } else if (c1 > 127 && c1 < 2048) {\n            enc = String.fromCharCode((c1 >> 6) | 192, (c1 & 63) | 128)\n        } else {\n            enc = String.fromCharCode((c1 >> 12) | 224, ((c1 >> 6) & 63) | 128, (c1 & 63) | 128)\n        }\n        if (!isNull(enc)) {\n            if (end > start) {\n                utftext += string.substring(start, end)\n            }\n            utftext += enc\n            start = end = n + 1\n        }\n    }\n\n    if (end > start) {\n        utftext += string.substring(start, string.length)\n    }\n\n    return utftext\n}\n", "import { each, find } from './utils'\nimport Config from './config'\nimport { Compression, RequestOptions, RequestResponse } from './types'\nimport { formDataToQuery } from './utils/request-utils'\n\nimport { logger } from './utils/logger'\nimport { AbortController, fetch, navigator, XMLHttpRequest } from './utils/globals'\nimport { gzipSync, strToU8 } from 'fflate'\n\nimport { _base64Encode } from './utils/encode-utils'\n\n// eslint-disable-next-line compat/compat\nexport const SUPPORTS_REQUEST = !!XMLHttpRequest || !!fetch\n\nconst CONTENT_TYPE_PLAIN = 'text/plain'\nconst CONTENT_TYPE_JSON = 'application/json'\nconst CONTENT_TYPE_FORM = 'application/x-www-form-urlencoded'\nconst SIXTY_FOUR_KILOBYTES = 64 * 1024\n/*\n fetch will fail if we request keepalive with a body greater than 64kb\n sets the threshold lower than that so that\n any overhead doesn't push over the threshold after checking here\n*/\nconst KEEP_ALIVE_THRESHOLD = SIXTY_FOUR_KILOBYTES * 0.8\ntype EncodedBody = {\n    contentType: string\n    body: string | BlobPart\n    estimatedSize: number\n}\n\nexport const extendURLParams = (url: string, params: Record<string, any>): string => {\n    const [baseUrl, search] = url.split('?')\n    const newParams = { ...params }\n\n    search?.split('&').forEach((pair) => {\n        const [key] = pair.split('=')\n        delete newParams[key]\n    })\n\n    let newSearch = formDataToQuery(newParams)\n    newSearch = newSearch ? (search ? search + '&' : '') + newSearch : search\n\n    return `${baseUrl}?${newSearch}`\n}\n\nexport const jsonStringify = (data: any, space?: string | number): string => {\n    // With plain JSON.stringify, we get an exception when a property is a BigInt. This has caused problems for some users,\n    // see https://github.com/PostHog/posthog-js/issues/1440\n    // To work around this, we convert BigInts to strings before stringifying the data. This is not ideal, as we lose\n    // information that this was originally a number, but given ClickHouse doesn't support BigInts, the customer\n    // would not be able to operate on these numerically anyway.\n    return JSON.stringify(data, (_, value) => (typeof value === 'bigint' ? value.toString() : value), space)\n}\n\nconst encodeToDataString = (data: string | Record<string, any>): string => {\n    return 'data=' + encodeURIComponent(typeof data === 'string' ? data : jsonStringify(data))\n}\n\nconst encodePostData = ({ data, compression }: RequestOptions): EncodedBody | undefined => {\n    if (!data) {\n        return\n    }\n\n    if (compression === Compression.GZipJS) {\n        const gzipData = gzipSync(strToU8(jsonStringify(data)), { mtime: 0 })\n        const blob = new Blob([gzipData], { type: CONTENT_TYPE_PLAIN })\n        return {\n            contentType: CONTENT_TYPE_PLAIN,\n            body: blob,\n            estimatedSize: blob.size,\n        }\n    }\n\n    if (compression === Compression.Base64) {\n        const b64data = _base64Encode(jsonStringify(data))\n        const encodedBody = encodeToDataString(b64data)\n\n        return {\n            contentType: CONTENT_TYPE_FORM,\n            body: encodedBody,\n            estimatedSize: new Blob([encodedBody]).size,\n        }\n    }\n\n    const jsonBody = jsonStringify(data)\n    return {\n        contentType: CONTENT_TYPE_JSON,\n        body: jsonBody,\n        estimatedSize: new Blob([jsonBody]).size,\n    }\n}\n\nconst xhr = (options: RequestOptions) => {\n    const req = new XMLHttpRequest!()\n    req.open(options.method || 'GET', options.url, true)\n    const { contentType, body } = encodePostData(options) ?? {}\n\n    each(options.headers, function (headerValue, headerName) {\n        req.setRequestHeader(headerName, headerValue)\n    })\n\n    if (contentType) {\n        req.setRequestHeader('Content-Type', contentType)\n    }\n\n    if (options.timeout) {\n        req.timeout = options.timeout\n    }\n    // send the ph_optout cookie\n    // withCredentials cannot be modified until after calling .open on Android and Mobile Safari\n    req.withCredentials = true\n    req.onreadystatechange = () => {\n        // XMLHttpRequest.DONE == 4, except in safari 4\n        if (req.readyState === 4) {\n            const response: RequestResponse = {\n                statusCode: req.status,\n                text: req.responseText,\n            }\n            if (req.status === 200) {\n                try {\n                    response.json = JSON.parse(req.responseText)\n                } catch {\n                    // logger.error(e)\n                }\n            }\n\n            options.callback?.(response)\n        }\n    }\n    req.send(body)\n}\n\nconst _fetch = (options: RequestOptions) => {\n    const { contentType, body, estimatedSize } = encodePostData(options) ?? {}\n\n    // eslint-disable-next-line compat/compat\n    const headers = new Headers()\n    each(options.headers, function (headerValue, headerName) {\n        headers.append(headerName, headerValue)\n    })\n\n    if (contentType) {\n        headers.append('Content-Type', contentType)\n    }\n\n    const url = options.url\n    let aborter: { signal: any; timeout: ReturnType<typeof setTimeout> } | null = null\n\n    if (AbortController) {\n        const controller = new AbortController()\n        aborter = {\n            signal: controller.signal,\n            timeout: setTimeout(() => controller.abort(), options.timeout),\n        }\n    }\n\n    fetch!(url, {\n        method: options?.method || 'GET',\n        headers,\n        // if body is greater than 64kb, then fetch with keepalive will error\n        // see 8:10:5 at https://fetch.spec.whatwg.org/#http-network-or-cache-fetch,\n        // but we do want to set keepalive sometimes as it can  help with success\n        // when e.g. a page is being closed\n        // so let's get the best of both worlds and only set keepalive for POST requests\n        // where the body is less than 64kb\n        // NB this is fetch keepalive and not http keepalive\n        keepalive: options.method === 'POST' && (estimatedSize || 0) < KEEP_ALIVE_THRESHOLD,\n        body,\n        signal: aborter?.signal,\n        ...options.fetchOptions,\n    })\n        .then((response) => {\n            return response.text().then((responseText) => {\n                const res: RequestResponse = {\n                    statusCode: response.status,\n                    text: responseText,\n                }\n\n                if (response.status === 200) {\n                    try {\n                        res.json = JSON.parse(responseText)\n                    } catch (e) {\n                        logger.error(e)\n                    }\n                }\n\n                options.callback?.(res)\n            })\n        })\n        .catch((error) => {\n            logger.error(error)\n            options.callback?.({ statusCode: 0, text: error })\n        })\n        .finally(() => (aborter ? clearTimeout(aborter.timeout) : null))\n\n    return\n}\n\nconst _sendBeacon = (options: RequestOptions) => {\n    // beacon documentation https://w3c.github.io/beacon/\n    // beacons format the message and use the type property\n\n    const url = extendURLParams(options.url, {\n        beacon: '1',\n    })\n\n    try {\n        const { contentType, body } = encodePostData(options) ?? {}\n        // sendBeacon requires a blob so we convert it\n        const sendBeaconBody = typeof body === 'string' ? new Blob([body], { type: contentType }) : body\n        navigator!.sendBeacon!(url, sendBeaconBody)\n    } catch {\n        // send beacon is a best-effort, fire-and-forget mechanism on page unload,\n        // we don't want to throw errors here\n    }\n}\n\nconst AVAILABLE_TRANSPORTS: { transport: RequestOptions['transport']; method: (options: RequestOptions) => void }[] = []\n\n// We add the transports in order of preference\nif (fetch) {\n    AVAILABLE_TRANSPORTS.push({\n        transport: 'fetch',\n        method: _fetch,\n    })\n}\n\nif (XMLHttpRequest) {\n    AVAILABLE_TRANSPORTS.push({\n        transport: 'XHR',\n        method: xhr,\n    })\n}\n\nif (navigator?.sendBeacon) {\n    AVAILABLE_TRANSPORTS.push({\n        transport: 'sendBeacon',\n        method: _sendBeacon,\n    })\n}\n\n// This is the entrypoint. It takes care of sanitizing the options and then calls the appropriate request method.\nexport const request = (_options: RequestOptions) => {\n    // Clone the options so we don't modify the original object\n    const options = { ..._options }\n    options.timeout = options.timeout || 60000\n\n    options.url = extendURLParams(options.url, {\n        _: new Date().getTime().toString(),\n        ver: Config.LIB_VERSION,\n        compression: options.compression,\n    })\n\n    const transport = options.transport ?? 'fetch'\n\n    const transportMethod =\n        find(AVAILABLE_TRANSPORTS, (t) => t.transport === transport)?.method ?? AVAILABLE_TRANSPORTS[0].method\n\n    if (!transportMethod) {\n        throw new Error('No available transport method')\n    }\n\n    transportMethod(options)\n}\n", "import { RetriableRequestOptions } from './types'\n\nimport { isNumber, isUndefined } from './utils/type-utils'\nimport { logger } from './utils/logger'\nimport { window } from './utils/globals'\nimport { PostHog } from './posthog-core'\nimport { extendURLParams } from './request'\nimport { addEventListener } from './utils'\n\nconst thirtyMinutes = 30 * 60 * 1000\n\n/**\n * Generates a jitter-ed exponential backoff delay in milliseconds\n *\n * The base value is 6 seconds, which is doubled with each retry\n * up to the maximum of 30 minutes\n *\n * Each value then has +/- 50% jitter\n *\n * Giving a range of 6 seconds up to 45 minutes\n */\nexport function pickNextRetryDelay(retriesPerformedSoFar: number): number {\n    const rawBackoffTime = 3000 * 2 ** retriesPerformedSoFar\n    const minBackoff = rawBackoffTime / 2\n    const cappedBackoffTime = Math.min(thirtyMinutes, rawBackoffTime)\n    const jitterFraction = Math.random() - 0.5 // A random number between -0.5 and 0.5\n    const jitter = jitterFraction * (cappedBackoffTime - minBackoff)\n    return Math.ceil(cappedBackoffTime + jitter)\n}\n\ninterface RetryQueueElement {\n    retryAt: number\n    requestOptions: RetriableRequestOptions\n}\n\nexport class RetryQueue {\n    private isPolling: boolean = false // flag to continue to recursively poll or not\n    private poller: number | undefined // to become interval for reference to clear later\n    private pollIntervalMs: number = 3000\n    private queue: RetryQueueElement[] = []\n    private areWeOnline: boolean\n\n    constructor(private instance: PostHog) {\n        this.queue = []\n        this.areWeOnline = true\n\n        if (!isUndefined(window) && 'onLine' in window.navigator) {\n            this.areWeOnline = window.navigator.onLine\n\n            addEventListener(window, 'online', () => {\n                this.areWeOnline = true\n                this.flush()\n            })\n\n            addEventListener(window, 'offline', () => {\n                this.areWeOnline = false\n            })\n        }\n    }\n\n    retriableRequest({ retriesPerformedSoFar, ...options }: RetriableRequestOptions): void {\n        if (isNumber(retriesPerformedSoFar) && retriesPerformedSoFar > 0) {\n            options.url = extendURLParams(options.url, { retry_count: retriesPerformedSoFar })\n        }\n\n        this.instance._send_request({\n            ...options,\n            callback: (response) => {\n                if (response.statusCode !== 200 && (response.statusCode < 400 || response.statusCode >= 500)) {\n                    if ((retriesPerformedSoFar ?? 0) < 10) {\n                        this.enqueue({\n                            retriesPerformedSoFar,\n                            ...options,\n                        })\n                        return\n                    }\n                }\n\n                options.callback?.(response)\n            },\n        })\n    }\n\n    private enqueue(requestOptions: RetriableRequestOptions): void {\n        const retriesPerformedSoFar = requestOptions.retriesPerformedSoFar || 0\n        requestOptions.retriesPerformedSoFar = retriesPerformedSoFar + 1\n\n        const msToNextRetry = pickNextRetryDelay(retriesPerformedSoFar)\n        const retryAt = Date.now() + msToNextRetry\n\n        this.queue.push({ retryAt, requestOptions })\n\n        let logMessage = `Enqueued failed request for retry in ${msToNextRetry}`\n        if (!navigator.onLine) {\n            logMessage += ' (Browser is offline)'\n        }\n        logger.warn(logMessage)\n\n        if (!this.isPolling) {\n            this.isPolling = true\n            this.poll()\n        }\n    }\n\n    private poll(): void {\n        this.poller && clearTimeout(this.poller)\n        this.poller = setTimeout(() => {\n            if (this.areWeOnline && this.queue.length > 0) {\n                this.flush()\n            }\n            this.poll()\n        }, this.pollIntervalMs) as any as number\n    }\n\n    private flush(): void {\n        const now = Date.now()\n        const notToFlush: RetryQueueElement[] = []\n        const toFlush = this.queue.filter((item) => {\n            if (item.retryAt < now) {\n                return true\n            }\n            notToFlush.push(item)\n            return false\n        })\n\n        this.queue = notToFlush\n\n        if (toFlush.length > 0) {\n            for (const { requestOptions } of toFlush) {\n                this.retriableRequest(requestOptions)\n            }\n        }\n    }\n\n    unload(): void {\n        if (this.poller) {\n            clearTimeout(this.poller)\n            this.poller = undefined\n        }\n\n        for (const { requestOptions } of this.queue) {\n            try {\n                // we've had send beacon in place for at least 2 years\n                // eslint-disable-next-line compat/compat\n                this.instance._send_request({\n                    ...requestOptions,\n                    transport: 'sendBeacon',\n                })\n            } catch (e) {\n                // Note sendBeacon automatically retries, and after the first retry it will lose reference to contextual `this`.\n                // This means in some cases `this.getConfig` will be undefined.\n                logger.error(e)\n            }\n        }\n        this.queue = []\n    }\n}\n", "import { PostHogPersistence } from './posthog-persistence'\nimport { SESSION_ID } from './constants'\nimport { sessionStore } from './storage'\nimport { PostHogConfig, SessionIdChangedCallback } from './types'\nimport { uuid7ToTimestampMs, uuidv7 } from './uuidv7'\nimport { window } from './utils/globals'\n\nimport { isArray, isNumber, isUndefined } from './utils/type-utils'\nimport { createLogger } from './utils/logger'\n\nimport { clampToRange } from './utils/number-utils'\nimport { PostHog } from './posthog-core'\nimport { addEventListener } from './utils'\n\nconst logger = createLogger('[SessionId]')\n\nexport const DEFAULT_SESSION_IDLE_TIMEOUT_SECONDS = 30 * 60 // 30 minutes\nexport const MAX_SESSION_IDLE_TIMEOUT_SECONDS = 10 * 60 * 60 // 10 hours\nconst MIN_SESSION_IDLE_TIMEOUT_SECONDS = 60 // 1 minute\nconst SESSION_LENGTH_LIMIT_MILLISECONDS = 24 * 3600 * 1000 // 24 hours\n\nexport class SessionIdManager {\n    private readonly _sessionIdGenerator: () => string\n    private readonly _windowIdGenerator: () => string\n    private config: Partial<PostHogConfig>\n    private persistence: PostHogPersistence\n    private _windowId: string | null | undefined\n    private _sessionId: string | null | undefined\n    private readonly _window_id_storage_key: string\n    private readonly _primary_window_exists_storage_key: string\n    private _sessionStartTimestamp: number | null\n\n    private _sessionActivityTimestamp: number | null\n    private _sessionIdChangedHandlers: SessionIdChangedCallback[] = []\n    private readonly _sessionTimeoutMs: number\n\n    // we track activity so we can end the session proactively when it has passed the idle timeout\n    private _enforceIdleTimeout: ReturnType<typeof setTimeout> | undefined\n\n    constructor(instance: PostHog, sessionIdGenerator?: () => string, windowIdGenerator?: () => string) {\n        if (!instance.persistence) {\n            throw new Error('SessionIdManager requires a PostHogPersistence instance')\n        }\n        if (instance.config.__preview_experimental_cookieless_mode) {\n            throw new Error('SessionIdManager cannot be used with __preview_experimental_cookieless_mode')\n        }\n\n        this.config = instance.config\n        this.persistence = instance.persistence\n        this._windowId = undefined\n        this._sessionId = undefined\n        this._sessionStartTimestamp = null\n        this._sessionActivityTimestamp = null\n        this._sessionIdGenerator = sessionIdGenerator || uuidv7\n        this._windowIdGenerator = windowIdGenerator || uuidv7\n\n        const persistenceName = this.config['persistence_name'] || this.config['token']\n\n        const desiredTimeout = this.config['session_idle_timeout_seconds'] || DEFAULT_SESSION_IDLE_TIMEOUT_SECONDS\n        this._sessionTimeoutMs =\n            clampToRange(\n                desiredTimeout,\n                MIN_SESSION_IDLE_TIMEOUT_SECONDS,\n                MAX_SESSION_IDLE_TIMEOUT_SECONDS,\n                'session_idle_timeout_seconds',\n                DEFAULT_SESSION_IDLE_TIMEOUT_SECONDS\n            ) * 1000\n\n        instance.register({ $configured_session_timeout_ms: this._sessionTimeoutMs })\n        this.resetIdleTimer()\n\n        this._window_id_storage_key = 'ph_' + persistenceName + '_window_id'\n        this._primary_window_exists_storage_key = 'ph_' + persistenceName + '_primary_window_exists'\n\n        // primary_window_exists is set when the DOM has been loaded and is cleared on unload\n        // if it exists here it means there was no unload which suggests this window is opened as a tab duplication, window.open, etc.\n        if (this._canUseSessionStorage()) {\n            const lastWindowId = sessionStore.parse(this._window_id_storage_key)\n\n            const primaryWindowExists = sessionStore.parse(this._primary_window_exists_storage_key)\n            if (lastWindowId && !primaryWindowExists) {\n                // Persist window from previous storage state\n                this._windowId = lastWindowId\n            } else {\n                // Wipe any reference to previous window id\n                sessionStore.remove(this._window_id_storage_key)\n            }\n            // Flag this session as having a primary window\n            sessionStore.set(this._primary_window_exists_storage_key, true)\n        }\n\n        if (this.config.bootstrap?.sessionID) {\n            try {\n                const sessionStartTimestamp = uuid7ToTimestampMs(this.config.bootstrap.sessionID)\n                this._setSessionId(this.config.bootstrap.sessionID, new Date().getTime(), sessionStartTimestamp)\n            } catch (e) {\n                logger.error('Invalid sessionID in bootstrap', e)\n            }\n        }\n\n        this._listenToReloadWindow()\n    }\n\n    get sessionTimeoutMs(): number {\n        return this._sessionTimeoutMs\n    }\n\n    onSessionId(callback: SessionIdChangedCallback): () => void {\n        // KLUDGE: when running in tests the handlers array was always undefined\n        // it's yucky but safe to set it here so that it's always definitely available\n        if (isUndefined(this._sessionIdChangedHandlers)) {\n            this._sessionIdChangedHandlers = []\n        }\n\n        this._sessionIdChangedHandlers.push(callback)\n        if (this._sessionId) {\n            callback(this._sessionId, this._windowId)\n        }\n        return () => {\n            this._sessionIdChangedHandlers = this._sessionIdChangedHandlers.filter((h) => h !== callback)\n        }\n    }\n\n    private _canUseSessionStorage(): boolean {\n        // We only want to use sessionStorage if persistence is enabled and not memory storage\n        return this.config.persistence !== 'memory' && !this.persistence.disabled && sessionStore.is_supported()\n    }\n\n    // Note: this tries to store the windowId in sessionStorage. SessionStorage is unique to the current window/tab,\n    // and persists page loads/reloads. So it's uniquely suited for storing the windowId. This function also respects\n    // when persistence is disabled (by user config) and when sessionStorage is not supported (it *should* be supported on all browsers),\n    // and in that case, it falls back to memory (which sadly, won't persist page loads)\n    private _setWindowId(windowId: string): void {\n        if (windowId !== this._windowId) {\n            this._windowId = windowId\n            if (this._canUseSessionStorage()) {\n                sessionStore.set(this._window_id_storage_key, windowId)\n            }\n        }\n    }\n\n    private _getWindowId(): string | null {\n        if (this._windowId) {\n            return this._windowId\n        }\n        if (this._canUseSessionStorage()) {\n            return sessionStore.parse(this._window_id_storage_key)\n        }\n        // New window id will be generated\n        return null\n    }\n\n    // Note: 'this.persistence.register' can be disabled in the config.\n    // In that case, this works by storing sessionId and the timestamp in memory.\n    private _setSessionId(\n        sessionId: string | null,\n        sessionActivityTimestamp: number | null,\n        sessionStartTimestamp: number | null\n    ): void {\n        if (\n            sessionId !== this._sessionId ||\n            sessionActivityTimestamp !== this._sessionActivityTimestamp ||\n            sessionStartTimestamp !== this._sessionStartTimestamp\n        ) {\n            this._sessionStartTimestamp = sessionStartTimestamp\n            this._sessionActivityTimestamp = sessionActivityTimestamp\n            this._sessionId = sessionId\n\n            this.persistence.register({\n                [SESSION_ID]: [sessionActivityTimestamp, sessionId, sessionStartTimestamp],\n            })\n        }\n    }\n\n    private _getSessionId(): [number, string, number] {\n        if (this._sessionId && this._sessionActivityTimestamp && this._sessionStartTimestamp) {\n            return [this._sessionActivityTimestamp, this._sessionId, this._sessionStartTimestamp]\n        }\n        const sessionIdInfo = this.persistence.props[SESSION_ID]\n\n        if (isArray(sessionIdInfo) && sessionIdInfo.length === 2) {\n            // Storage does not yet have a session start time. Add the last activity timestamp as the start time\n            sessionIdInfo.push(sessionIdInfo[0])\n        }\n\n        return sessionIdInfo || [0, null, 0]\n    }\n\n    // Resets the session id by setting it to null. On the subsequent call to checkAndGetSessionAndWindowId,\n    // new ids will be generated.\n    resetSessionId(): void {\n        this._setSessionId(null, null, null)\n    }\n\n    /*\n     * Listens to window unloads and removes the primaryWindowExists key from sessionStorage.\n     * Reloaded or fresh tabs created after a DOM unloads (reloading the same tab) WILL NOT have this primaryWindowExists flag in session storage.\n     * Cloned sessions (new tab, tab duplication, window.open(), ...) WILL have this primaryWindowExists flag in their copied session storage.\n     * We conditionally check the primaryWindowExists value in the constructor to decide if the window id in the last session storage should be carried over.\n     */\n    private _listenToReloadWindow(): void {\n        addEventListener(\n            window,\n            'beforeunload',\n            () => {\n                if (this._canUseSessionStorage()) {\n                    sessionStore.remove(this._primary_window_exists_storage_key)\n                }\n            },\n            // Not making it passive to try and force the browser to handle this before the page is unloaded\n            { capture: false }\n        )\n    }\n\n    /*\n     * This function returns the current sessionId and windowId. It should be used to\n     * access these values over directly calling `._sessionId` or `._windowId`.\n     * In addition to returning the sessionId and windowId, this function also manages cycling the\n     * sessionId and windowId when appropriate by doing the following:\n     *\n     * 1. If the sessionId or windowId is not set, it will generate a new one and store it.\n     * 2. If the readOnly param is set to false, it will:\n     *    a. Check if it has been > SESSION_CHANGE_THRESHOLD since the last call with this flag set.\n     *       If so, it will generate a new sessionId and store it.\n     *    b. Update the timestamp stored with the sessionId to ensure the current session is extended\n     *       for the appropriate amount of time.\n     *\n     * @param {boolean} readOnly (optional) Defaults to False. Should be set to True when the call to the function should not extend or cycle the session (e.g. being called for non-user generated events)\n     * @param {Number} timestamp (optional) Defaults to the current time. The timestamp to be stored with the sessionId (used when determining if a new sessionId should be generated)\n     */\n    checkAndGetSessionAndWindowId(readOnly = false, _timestamp: number | null = null) {\n        if (this.config.__preview_experimental_cookieless_mode) {\n            throw new Error(\n                'checkAndGetSessionAndWindowId should not be called in __preview_experimental_cookieless_mode'\n            )\n        }\n        const timestamp = _timestamp || new Date().getTime()\n\n        // eslint-disable-next-line prefer-const\n        let [lastActivityTimestamp, sessionId, startTimestamp] = this._getSessionId()\n        let windowId = this._getWindowId()\n\n        const sessionPastMaximumLength =\n            isNumber(startTimestamp) &&\n            startTimestamp > 0 &&\n            Math.abs(timestamp - startTimestamp) > SESSION_LENGTH_LIMIT_MILLISECONDS\n\n        let valuesChanged = false\n        const noSessionId = !sessionId\n        const activityTimeout = !readOnly && Math.abs(timestamp - lastActivityTimestamp) > this.sessionTimeoutMs\n        if (noSessionId || activityTimeout || sessionPastMaximumLength) {\n            sessionId = this._sessionIdGenerator()\n            windowId = this._windowIdGenerator()\n            logger.info('new session ID generated', {\n                sessionId,\n                windowId,\n                changeReason: { noSessionId, activityTimeout, sessionPastMaximumLength },\n            })\n            startTimestamp = timestamp\n            valuesChanged = true\n        } else if (!windowId) {\n            windowId = this._windowIdGenerator()\n            valuesChanged = true\n        }\n\n        const newActivityTimestamp =\n            lastActivityTimestamp === 0 || !readOnly || sessionPastMaximumLength ? timestamp : lastActivityTimestamp\n        const sessionStartTimestamp = startTimestamp === 0 ? new Date().getTime() : startTimestamp\n\n        this._setWindowId(windowId)\n        this._setSessionId(sessionId, newActivityTimestamp, sessionStartTimestamp)\n\n        if (!readOnly) {\n            this.resetIdleTimer()\n        }\n\n        if (valuesChanged) {\n            this._sessionIdChangedHandlers.forEach((handler) =>\n                handler(\n                    sessionId,\n                    windowId,\n                    valuesChanged ? { noSessionId, activityTimeout, sessionPastMaximumLength } : undefined\n                )\n            )\n        }\n\n        return {\n            sessionId,\n            windowId,\n            sessionStartTimestamp,\n            changeReason: valuesChanged ? { noSessionId, activityTimeout, sessionPastMaximumLength } : undefined,\n            lastActivityTimestamp: lastActivityTimestamp,\n        }\n    }\n\n    private resetIdleTimer() {\n        clearTimeout(this._enforceIdleTimeout)\n        this._enforceIdleTimeout = setTimeout(() => {\n            // enforce idle timeout a little after the session timeout to ensure the session is reset even without activity\n            this.resetSessionId()\n        }, this.sessionTimeoutMs * 1.1)\n    }\n}\n", "import { PostHog } from '../posthog-core'\n\n/**\n * The request router helps simplify the logic to determine which endpoints should be called for which things\n * The basic idea is that for a given region (US or EU), we have a set of endpoints that we should call depending\n * on the type of request (events, replays, decide, etc.) and handle overrides that may come from configs or the decide endpoint\n */\n\nexport enum RequestRouterRegion {\n    US = 'us',\n    EU = 'eu',\n    CUSTOM = 'custom',\n}\n\nexport type RequestRouterTarget = 'api' | 'ui' | 'assets'\n\nconst ingestionDomain = 'i.posthog.com'\n\nexport class RequestRouter {\n    instance: PostHog\n    private _regionCache: Record<string, RequestRouterRegion> = {}\n\n    constructor(instance: PostHog) {\n        this.instance = instance\n    }\n\n    get apiHost(): string {\n        const host = this.instance.config.api_host.trim().replace(/\\/$/, '')\n        if (host === 'https://app.posthog.com') {\n            return 'https://us.i.posthog.com'\n        }\n        return host\n    }\n    get uiHost(): string | undefined {\n        let host = this.instance.config.ui_host?.replace(/\\/$/, '')\n\n        if (!host) {\n            // No ui_host set, get it from the api_host. But api_host differs\n            // from the actual UI host, so replace the ingestion subdomain with just posthog.com\n            host = this.apiHost.replace(`.${ingestionDomain}`, '.posthog.com')\n        }\n\n        if (host === 'https://app.posthog.com') {\n            return 'https://us.posthog.com'\n        }\n\n        return host\n    }\n\n    get region(): RequestRouterRegion {\n        // We don't need to compute this every time so we cache the result\n        if (!this._regionCache[this.apiHost]) {\n            if (/https:\\/\\/(app|us|us-assets)(\\.i)?\\.posthog\\.com/i.test(this.apiHost)) {\n                this._regionCache[this.apiHost] = RequestRouterRegion.US\n            } else if (/https:\\/\\/(eu|eu-assets)(\\.i)?\\.posthog\\.com/i.test(this.apiHost)) {\n                this._regionCache[this.apiHost] = RequestRouterRegion.EU\n            } else {\n                this._regionCache[this.apiHost] = RequestRouterRegion.CUSTOM\n            }\n        }\n        return this._regionCache[this.apiHost]\n    }\n\n    endpointFor(target: RequestRouterTarget, path: string = ''): string {\n        if (path) {\n            path = path[0] === '/' ? path : `/${path}`\n        }\n\n        if (target === 'ui') {\n            return this.uiHost + path\n        }\n\n        if (this.region === RequestRouterRegion.CUSTOM) {\n            return this.apiHost + path\n        }\n\n        const suffix = ingestionDomain + path\n\n        switch (target) {\n            case 'assets':\n                return `https://${this.region}-assets.${suffix}`\n            case 'api':\n                return `https://${this.region}.${suffix}`\n        }\n    }\n}\n", "/**\n * Integrate Sentry with PostHog. This will add a direct link to the person in Sentry, and an $exception event in PostHog\n *\n * ### Usage\n *\n *     Sentry.init({\n *          dsn: 'https://example',\n *          integrations: [\n *              new posthog.SentryIntegration(posthog)\n *          ]\n *     })\n *\n * @param {Object} [posthog] The posthog object\n * @param {string} [organization] Optional: The Sentry organization, used to send a direct link from PostHog to Sentry\n * @param {Number} [projectId] Optional: The Sentry project id, used to send a direct link from PostHog to Sentry\n * @param {string} [prefix] Optional: Url of a self-hosted sentry instance (default: https://sentry.io/organizations/)\n * @param {SeverityLevel[] | '*'} [severityAllowList] Optional: send events matching the provided levels. Use '*' to send all events (default: ['error'])\n */\n\nimport { PostHog } from '../posthog-core'\nimport { SeverityLevel } from '../types'\n\n// NOTE - we can't import from @sentry/types because it changes frequently and causes clashes\n// We only use a small subset of the types, so we can just define the integration overall and use any for the rest\n\n// import {\n//     Event as _SentryEvent,\n//     EventProcessor as _SentryEventProcessor,\n//     Hub as _SentryHub,\n//     Integration as _SentryIntegration,\n//     SeverityLevel as _SeverityLevel,\n//     IntegrationClass as _SentryIntegrationClass,\n// } from '@sentry/types'\n\n// Uncomment the above and comment the below to get type checking for development\n\ntype _SentryEvent = any\ntype _SentryException = any\ntype _SentryEventProcessor = any\ntype _SentryHub = any\n\ninterface _SentryIntegration {\n    name: string\n    processEvent(event: _SentryEvent): _SentryEvent\n}\n\ninterface _SentryIntegrationClass {\n    name: string\n    setupOnce(addGlobalEventProcessor: (callback: _SentryEventProcessor) => void, getCurrentHub: () => _SentryHub): void\n}\n\ninterface SentryExceptionProperties {\n    $sentry_event_id: any\n    $sentry_exception: any\n    $sentry_exception_message: any\n    $sentry_exception_type: any\n    $sentry_tags: any\n    $sentry_url?: string\n}\n\nexport type SentryIntegrationOptions = {\n    organization?: string\n    projectId?: number\n    prefix?: string\n    severityAllowList?: SeverityLevel[] | '*'\n}\n\nconst NAME = 'posthog-js'\n\nexport function createEventProcessor(\n    _posthog: PostHog,\n    { organization, projectId, prefix, severityAllowList = ['error'] }: SentryIntegrationOptions = {}\n): (event: _SentryEvent) => _SentryEvent {\n    return (event) => {\n        const shouldProcessLevel = severityAllowList === '*' || severityAllowList.includes(event.level as SeverityLevel)\n        if (!shouldProcessLevel || !_posthog.__loaded) return event\n        if (!event.tags) event.tags = {}\n\n        const personUrl = _posthog.requestRouter.endpointFor(\n            'ui',\n            `/project/${_posthog.config.token}/person/${_posthog.get_distinct_id()}`\n        )\n        event.tags['PostHog Person URL'] = personUrl\n        if (_posthog.sessionRecordingStarted()) {\n            event.tags['PostHog Recording URL'] = _posthog.get_session_replay_url({ withTimestamp: true })\n        }\n\n        const exceptions: _SentryException[] = event.exception?.values || []\n\n        exceptions.forEach((exception) => {\n            if (exception.stacktrace) {\n                exception.stacktrace.type = 'raw'\n\n                exception.stacktrace.frames.forEach((frame: any) => {\n                    frame.platform = 'web:javascript'\n                })\n            }\n        })\n\n        const data: SentryExceptionProperties & {\n            // two properties added to match any exception auto-capture\n            // added manually to avoid any dependency on the lazily loaded content\n            $exception_message: any\n            $exception_type: any\n            $exception_list: any\n            $exception_personURL: string\n            $exception_level: SeverityLevel\n        } = {\n            // PostHog Exception Properties,\n            $exception_message: exceptions[0]?.value || event.message,\n            $exception_type: exceptions[0]?.type,\n            $exception_personURL: personUrl,\n            $exception_level: event.level,\n            $exception_list: exceptions,\n            // Sentry Exception Properties\n            $sentry_event_id: event.event_id,\n            $sentry_exception: event.exception,\n            $sentry_exception_message: exceptions[0]?.value || event.message,\n            $sentry_exception_type: exceptions[0]?.type,\n            $sentry_tags: event.tags,\n        }\n\n        if (organization && projectId) {\n            data['$sentry_url'] =\n                (prefix || 'https://sentry.io/organizations/') +\n                organization +\n                '/issues/?project=' +\n                projectId +\n                '&query=' +\n                event.event_id\n        }\n\n        _posthog.exceptions.sendExceptionEvent(data)\n\n        return event\n    }\n}\n\n// V8 integration - function based\nexport function sentryIntegration(_posthog: PostHog, options?: SentryIntegrationOptions): _SentryIntegration {\n    const processor = createEventProcessor(_posthog, options)\n    return {\n        name: NAME,\n        processEvent(event) {\n            return processor(event)\n        },\n    }\n}\n// V7 integration - class based\nexport class SentryIntegration implements _SentryIntegrationClass {\n    name: string\n\n    setupOnce: (\n        addGlobalEventProcessor: (callback: _SentryEventProcessor) => void,\n        getCurrentHub: () => _SentryHub\n    ) => void\n\n    constructor(\n        _posthog: PostHog,\n        organization?: string,\n        projectId?: number,\n        prefix?: string,\n        severityAllowList?: SeverityLevel[] | '*'\n    ) {\n        // setupOnce gets called by Sentry when it intializes the plugin\n        this.name = NAME\n        this.setupOnce = function (addGlobalEventProcessor: (callback: _SentryEventProcessor) => void) {\n            addGlobalEventProcessor(\n                createEventProcessor(_posthog, { organization, projectId, prefix, severityAllowList })\n            )\n        }\n    }\n}\n", "/**\n * Extend Segment with extra PostHog JS functionality. Required for things like Recordings and feature flags to work correctly.\n *\n * ### Usage\n *\n *  ```js\n *  // After your standard segment anyalytics install\n *  analytics.load(\"GOEDfA21zZTtR7clsBuDvmBKAtAdZ6Np\");\n *\n *  analytics.ready(() => {\n *    posthog.init('<posthog-api-key>', {\n *      capture_pageview: false,\n *      segment: window.analytics, // NOTE: Be sure to use window.analytics here!\n *    });\n *    window.analytics.page();\n *  })\n *  ```\n */\nimport { PostHog } from '../posthog-core'\nimport { createLogger } from '../utils/logger'\n\nimport { uuidv7 } from '../uuidv7'\nimport { isFunction } from '../utils/type-utils'\nimport { USER_STATE } from '../constants'\n\nconst logger = createLogger('[SegmentIntegration]')\n\nexport type SegmentUser = {\n    anonymousId(): string | undefined\n    id(): string | undefined\n}\n\nexport type SegmentAnalytics = {\n    user: () => SegmentUser | Promise<SegmentUser>\n    register: (integration: SegmentPlugin) => Promise<void>\n}\n\n// Loosely based on https://github.com/segmentio/analytics-next/blob/master/packages/core/src/plugins/index.ts\nexport interface SegmentContext {\n    event: {\n        event: string\n        userId?: string\n        anonymousId?: string\n        properties: any\n    }\n}\n\ntype SegmentFunction = (ctx: SegmentContext) => Promise<SegmentContext> | SegmentContext\n\nexport interface SegmentPlugin {\n    name: string\n    version: string\n    type: 'enrichment'\n    isLoaded: () => boolean\n    load: (ctx: SegmentContext, instance: any, config?: any) => Promise<unknown>\n    unload?: (ctx: SegmentContext, instance: any) => Promise<unknown> | unknown\n    ready?: () => Promise<unknown>\n    track?: SegmentFunction\n    identify?: SegmentFunction\n    page?: SegmentFunction\n    group?: SegmentFunction\n    alias?: SegmentFunction\n    screen?: SegmentFunction\n}\n\nconst createSegmentIntegration = (posthog: PostHog): SegmentPlugin => {\n    if (!Promise || !Promise.resolve) {\n        logger.warn('This browser does not have Promise support, and can not use the segment integration')\n    }\n\n    const enrichEvent = (ctx: SegmentContext, eventName: string | undefined) => {\n        if (!eventName) {\n            return ctx\n        }\n        if (!ctx.event.userId && ctx.event.anonymousId !== posthog.get_distinct_id()) {\n            // This is our only way of detecting that segment's analytics.reset() has been called so we also call it\n            logger.info('No userId set, resetting PostHog')\n            posthog.reset()\n        }\n        if (ctx.event.userId && ctx.event.userId !== posthog.get_distinct_id()) {\n            logger.info('UserId set, identifying with PostHog')\n            posthog.identify(ctx.event.userId)\n        }\n\n        const additionalProperties = posthog._calculate_event_properties(\n            eventName,\n            ctx.event.properties ?? {},\n            new Date()\n        )\n        ctx.event.properties = Object.assign({}, additionalProperties, ctx.event.properties)\n        return ctx\n    }\n\n    return {\n        name: 'PostHog JS',\n        type: 'enrichment',\n        version: '1.0.0',\n        isLoaded: () => true,\n        // check and early return above\n        // eslint-disable-next-line compat/compat\n        load: () => Promise.resolve(),\n        track: (ctx) => enrichEvent(ctx, ctx.event.event),\n        page: (ctx) => enrichEvent(ctx, '$pageview'),\n        identify: (ctx) => enrichEvent(ctx, '$identify'),\n        screen: (ctx) => enrichEvent(ctx, '$screen'),\n    }\n}\n\nfunction setupPostHogFromSegment(posthog: PostHog, done: () => void) {\n    const segment = posthog.config.segment\n    if (!segment) {\n        return done()\n    }\n\n    const bootstrapUser = (user: SegmentUser) => {\n        // Use segments anonymousId instead\n        const getSegmentAnonymousId = () => user.anonymousId() || uuidv7()\n        posthog.config.get_device_id = getSegmentAnonymousId\n\n        // If a segment user ID exists, set it as the distinct_id\n        if (user.id()) {\n            posthog.register({\n                distinct_id: user.id(),\n                $device_id: getSegmentAnonymousId(),\n            })\n            posthog.persistence!.set_property(USER_STATE, 'identified')\n        }\n\n        done()\n    }\n\n    const segmentUser = segment.user()\n\n    // If segmentUser is a promise then we need to wait for it to resolve\n    if ('then' in segmentUser && isFunction(segmentUser.then)) {\n        segmentUser.then((user) => bootstrapUser(user))\n    } else {\n        bootstrapUser(segmentUser as SegmentUser)\n    }\n}\n\nexport function setupSegmentIntegration(posthog: PostHog, done: () => void) {\n    const segment = posthog.config.segment\n    if (!segment) {\n        return done()\n    }\n\n    setupPostHogFromSegment(posthog, () => {\n        segment.register(createSegmentIntegration(posthog)).then(() => {\n            done()\n        })\n    })\n}\n", "import { window } from './utils/globals'\nimport { PostHog } from './posthog-core'\nimport { isUndefined } from './utils/type-utils'\nimport { clampToRange } from './utils/number-utils'\nimport { extend } from './utils'\n\ninterface PageViewEventProperties {\n    $pageview_id?: string\n    $prev_pageview_id?: string\n    $prev_pageview_pathname?: string\n    $prev_pageview_duration?: number // seconds\n    $prev_pageview_last_scroll?: number\n    $prev_pageview_last_scroll_percentage?: number\n    $prev_pageview_max_scroll?: number\n    $prev_pageview_max_scroll_percentage?: number\n    $prev_pageview_last_content?: number\n    $prev_pageview_last_content_percentage?: number\n    $prev_pageview_max_content?: number\n    $prev_pageview_max_content_percentage?: number\n}\n\n// This keeps track of the PageView state (such as the previous PageView's path, timestamp, id, and scroll properties).\n// We store the state in memory, which means that for non-SPA sites, the state will be lost on page reload. This means\n// that non-SPA sites should always send a $pageleave event on any navigation, before the page unloads. For SPA sites,\n// they only need to send a $pageleave event when the user navigates away from the site, as the information is not lost\n// on an internal navigation, and is included as the $prev_pageview_ properties in the next $pageview event.\n\n// Practically, this means that to find the scroll properties for a given pageview, you need to find the event where\n// event name is $pageview or $pageleave and where $prev_pageview_id matches the original pageview event's id.\n\nexport class PageViewManager {\n    _currentPageview?: { timestamp: Date; pageViewId: string | undefined; pathname: string | undefined }\n    _instance: PostHog\n\n    constructor(instance: PostHog) {\n        this._instance = instance\n    }\n\n    doPageView(timestamp: Date, pageViewId?: string): PageViewEventProperties {\n        const response = this._previousPageViewProperties(timestamp, pageViewId)\n\n        // On a pageview we reset the contexts\n        this._currentPageview = { pathname: window?.location.pathname ?? '', pageViewId, timestamp }\n        this._instance.scrollManager.resetContext()\n\n        return response\n    }\n\n    doPageLeave(timestamp: Date): PageViewEventProperties {\n        return this._previousPageViewProperties(timestamp, this._currentPageview?.pageViewId)\n    }\n\n    doEvent(): PageViewEventProperties {\n        return { $pageview_id: this._currentPageview?.pageViewId }\n    }\n\n    private _previousPageViewProperties(timestamp: Date, pageviewId: string | undefined): PageViewEventProperties {\n        const previousPageView = this._currentPageview\n\n        if (!previousPageView) {\n            return { $pageview_id: pageviewId }\n        }\n\n        let properties: PageViewEventProperties = {\n            $pageview_id: pageviewId,\n            $prev_pageview_id: previousPageView.pageViewId,\n        }\n\n        const scrollContext = this._instance.scrollManager.getContext()\n\n        if (scrollContext && !this._instance.config.disable_scroll_properties) {\n            let { maxScrollHeight, lastScrollY, maxScrollY, maxContentHeight, lastContentY, maxContentY } =\n                scrollContext\n\n            if (\n                !isUndefined(maxScrollHeight) &&\n                !isUndefined(lastScrollY) &&\n                !isUndefined(maxScrollY) &&\n                !isUndefined(maxContentHeight) &&\n                !isUndefined(lastContentY) &&\n                !isUndefined(maxContentY)\n            ) {\n                // Use ceil, so that e.g. scrolling 999.5px of a 1000px page is considered 100% scrolled\n                maxScrollHeight = Math.ceil(maxScrollHeight)\n                lastScrollY = Math.ceil(lastScrollY)\n                maxScrollY = Math.ceil(maxScrollY)\n                maxContentHeight = Math.ceil(maxContentHeight)\n                lastContentY = Math.ceil(lastContentY)\n                maxContentY = Math.ceil(maxContentY)\n\n                // if the maximum scroll height is near 0, then the percentage is 1\n                const lastScrollPercentage =\n                    maxScrollHeight <= 1 ? 1 : clampToRange(lastScrollY / maxScrollHeight, 0, 1)\n                const maxScrollPercentage = maxScrollHeight <= 1 ? 1 : clampToRange(maxScrollY / maxScrollHeight, 0, 1)\n                const lastContentPercentage =\n                    maxContentHeight <= 1 ? 1 : clampToRange(lastContentY / maxContentHeight, 0, 1)\n                const maxContentPercentage =\n                    maxContentHeight <= 1 ? 1 : clampToRange(maxContentY / maxContentHeight, 0, 1)\n\n                properties = extend(properties, {\n                    $prev_pageview_last_scroll: lastScrollY,\n                    $prev_pageview_last_scroll_percentage: lastScrollPercentage,\n                    $prev_pageview_max_scroll: maxScrollY,\n                    $prev_pageview_max_scroll_percentage: maxScrollPercentage,\n                    $prev_pageview_last_content: lastContentY,\n                    $prev_pageview_last_content_percentage: lastContentPercentage,\n                    $prev_pageview_max_content: maxContentY,\n                    $prev_pageview_max_content_percentage: maxContentPercentage,\n                })\n            }\n        }\n\n        if (previousPageView.pathname) {\n            properties.$prev_pageview_pathname = previousPageView.pathname\n        }\n        if (previousPageView.timestamp) {\n            // Use seconds, for consistency with our other duration-related properties like $duration\n            properties.$prev_pageview_duration = (timestamp.getTime() - previousPageView.timestamp.getTime()) / 1000\n        }\n\n        return properties\n    }\n}\n", "var n,l,u,t,i,o,r,f,e,c={},s=[],a=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,h=Array.isArray;function v(n,l){for(var u in l)n[u]=l[u];return n}function p(n){var l=n.parentNode;l&&l.removeChild(n)}function y(l,u,t){var i,o,r,f={};for(r in u)\"key\"==r?i=u[r]:\"ref\"==r?o=u[r]:f[r]=u[r];if(arguments.length>2&&(f.children=arguments.length>3?n.call(arguments,2):t),\"function\"==typeof l&&null!=l.defaultProps)for(r in l.defaultProps)void 0===f[r]&&(f[r]=l.defaultProps[r]);return d(l,f,i,o,null)}function d(n,t,i,o,r){var f={type:n,props:t,key:i,ref:o,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,constructor:void 0,__v:null==r?++u:r,__i:-1,__u:0};return null==r&&null!=l.vnode&&l.vnode(f),f}function _(){return{current:null}}function g(n){return n.children}function b(n,l){this.props=n,this.context=l}function m(n,l){if(null==l)return n.__?m(n.__,n.__i+1):null;for(var u;l<n.__k.length;l++)if(null!=(u=n.__k[l])&&null!=u.__e)return u.__e;return\"function\"==typeof n.type?m(n):null}function k(n){var l,u;if(null!=(n=n.__)&&null!=n.__c){for(n.__e=n.__c.base=null,l=0;l<n.__k.length;l++)if(null!=(u=n.__k[l])&&null!=u.__e){n.__e=n.__c.base=u.__e;break}return k(n)}}function w(n){(!n.__d&&(n.__d=!0)&&i.push(n)&&!x.__r++||o!==l.debounceRendering)&&((o=l.debounceRendering)||r)(x)}function x(){var n,u,t,o,r,e,c,s,a;for(i.sort(f);n=i.shift();)n.__d&&(u=i.length,o=void 0,e=(r=(t=n).__v).__e,s=[],a=[],(c=t.__P)&&((o=v({},r)).__v=r.__v+1,l.vnode&&l.vnode(o),L(c,o,r,t.__n,void 0!==c.ownerSVGElement,32&r.__u?[e]:null,s,null==e?m(r):e,!!(32&r.__u),a),o.__.__k[o.__i]=o,M(s,o,a),o.__e!=e&&k(o)),i.length>u&&i.sort(f));x.__r=0}function C(n,l,u,t,i,o,r,f,e,a,h){var v,p,y,d,_,g=t&&t.__k||s,b=l.length;for(u.__d=e,P(u,l,g),e=u.__d,v=0;v<b;v++)null!=(y=u.__k[v])&&\"boolean\"!=typeof y&&\"function\"!=typeof y&&(p=-1===y.__i?c:g[y.__i]||c,y.__i=v,L(n,y,p,i,o,r,f,e,a,h),d=y.__e,y.ref&&p.ref!=y.ref&&(p.ref&&z(p.ref,null,y),h.push(y.ref,y.__c||d,y)),null==_&&null!=d&&(_=d),65536&y.__u||p.__k===y.__k?e=S(y,e,n):\"function\"==typeof y.type&&void 0!==y.__d?e=y.__d:d&&(e=d.nextSibling),y.__d=void 0,y.__u&=-196609);u.__d=e,u.__e=_}function P(n,l,u){var t,i,o,r,f,e=l.length,c=u.length,s=c,a=0;for(n.__k=[],t=0;t<e;t++)null!=(i=n.__k[t]=null==(i=l[t])||\"boolean\"==typeof i||\"function\"==typeof i?null:\"string\"==typeof i||\"number\"==typeof i||\"bigint\"==typeof i||i.constructor==String?d(null,i,null,null,i):h(i)?d(g,{children:i},null,null,null):void 0===i.constructor&&i.__b>0?d(i.type,i.props,i.key,i.ref?i.ref:null,i.__v):i)?(i.__=n,i.__b=n.__b+1,f=H(i,u,r=t+a,s),i.__i=f,o=null,-1!==f&&(s--,(o=u[f])&&(o.__u|=131072)),null==o||null===o.__v?(-1==f&&a--,\"function\"!=typeof i.type&&(i.__u|=65536)):f!==r&&(f===r+1?a++:f>r?s>e-r?a+=f-r:a--:a=f<r&&f==r-1?f-r:0,f!==t+a&&(i.__u|=65536))):(o=u[t])&&null==o.key&&o.__e&&(o.__e==n.__d&&(n.__d=m(o)),N(o,o,!1),u[t]=null,s--);if(s)for(t=0;t<c;t++)null!=(o=u[t])&&0==(131072&o.__u)&&(o.__e==n.__d&&(n.__d=m(o)),N(o,o))}function S(n,l,u){var t,i;if(\"function\"==typeof n.type){for(t=n.__k,i=0;t&&i<t.length;i++)t[i]&&(t[i].__=n,l=S(t[i],l,u));return l}return n.__e!=l&&(u.insertBefore(n.__e,l||null),l=n.__e),l&&l.nextSibling}function $(n,l){return l=l||[],null==n||\"boolean\"==typeof n||(h(n)?n.some(function(n){$(n,l)}):l.push(n)),l}function H(n,l,u,t){var i=n.key,o=n.type,r=u-1,f=u+1,e=l[u];if(null===e||e&&i==e.key&&o===e.type)return u;if(t>(null!=e&&0==(131072&e.__u)?1:0))for(;r>=0||f<l.length;){if(r>=0){if((e=l[r])&&0==(131072&e.__u)&&i==e.key&&o===e.type)return r;r--}if(f<l.length){if((e=l[f])&&0==(131072&e.__u)&&i==e.key&&o===e.type)return f;f++}}return-1}function I(n,l,u){\"-\"===l[0]?n.setProperty(l,null==u?\"\":u):n[l]=null==u?\"\":\"number\"!=typeof u||a.test(l)?u:u+\"px\"}function T(n,l,u,t,i){var o;n:if(\"style\"===l)if(\"string\"==typeof u)n.style.cssText=u;else{if(\"string\"==typeof t&&(n.style.cssText=t=\"\"),t)for(l in t)u&&l in u||I(n.style,l,\"\");if(u)for(l in u)t&&u[l]===t[l]||I(n.style,l,u[l])}else if(\"o\"===l[0]&&\"n\"===l[1])o=l!==(l=l.replace(/(PointerCapture)$|Capture$/,\"$1\")),l=l.toLowerCase()in n?l.toLowerCase().slice(2):l.slice(2),n.l||(n.l={}),n.l[l+o]=u,u?t?u.u=t.u:(u.u=Date.now(),n.addEventListener(l,o?D:A,o)):n.removeEventListener(l,o?D:A,o);else{if(i)l=l.replace(/xlink(H|:h)/,\"h\").replace(/sName$/,\"s\");else if(\"width\"!==l&&\"height\"!==l&&\"href\"!==l&&\"list\"!==l&&\"form\"!==l&&\"tabIndex\"!==l&&\"download\"!==l&&\"rowSpan\"!==l&&\"colSpan\"!==l&&\"role\"!==l&&l in n)try{n[l]=null==u?\"\":u;break n}catch(n){}\"function\"==typeof u||(null==u||!1===u&&\"-\"!==l[4]?n.removeAttribute(l):n.setAttribute(l,u))}}function A(n){var u=this.l[n.type+!1];if(n.t){if(n.t<=u.u)return}else n.t=Date.now();return u(l.event?l.event(n):n)}function D(n){return this.l[n.type+!0](l.event?l.event(n):n)}function L(n,u,t,i,o,r,f,e,c,s){var a,p,y,d,_,m,k,w,x,P,S,$,H,I,T,A=u.type;if(void 0!==u.constructor)return null;128&t.__u&&(c=!!(32&t.__u),r=[e=u.__e=t.__e]),(a=l.__b)&&a(u);n:if(\"function\"==typeof A)try{if(w=u.props,x=(a=A.contextType)&&i[a.__c],P=a?x?x.props.value:a.__:i,t.__c?k=(p=u.__c=t.__c).__=p.__E:(\"prototype\"in A&&A.prototype.render?u.__c=p=new A(w,P):(u.__c=p=new b(w,P),p.constructor=A,p.render=O),x&&x.sub(p),p.props=w,p.state||(p.state={}),p.context=P,p.__n=i,y=p.__d=!0,p.__h=[],p._sb=[]),null==p.__s&&(p.__s=p.state),null!=A.getDerivedStateFromProps&&(p.__s==p.state&&(p.__s=v({},p.__s)),v(p.__s,A.getDerivedStateFromProps(w,p.__s))),d=p.props,_=p.state,p.__v=u,y)null==A.getDerivedStateFromProps&&null!=p.componentWillMount&&p.componentWillMount(),null!=p.componentDidMount&&p.__h.push(p.componentDidMount);else{if(null==A.getDerivedStateFromProps&&w!==d&&null!=p.componentWillReceiveProps&&p.componentWillReceiveProps(w,P),!p.__e&&(null!=p.shouldComponentUpdate&&!1===p.shouldComponentUpdate(w,p.__s,P)||u.__v===t.__v)){for(u.__v!==t.__v&&(p.props=w,p.state=p.__s,p.__d=!1),u.__e=t.__e,u.__k=t.__k,u.__k.forEach(function(n){n&&(n.__=u)}),S=0;S<p._sb.length;S++)p.__h.push(p._sb[S]);p._sb=[],p.__h.length&&f.push(p);break n}null!=p.componentWillUpdate&&p.componentWillUpdate(w,p.__s,P),null!=p.componentDidUpdate&&p.__h.push(function(){p.componentDidUpdate(d,_,m)})}if(p.context=P,p.props=w,p.__P=n,p.__e=!1,$=l.__r,H=0,\"prototype\"in A&&A.prototype.render){for(p.state=p.__s,p.__d=!1,$&&$(u),a=p.render(p.props,p.state,p.context),I=0;I<p._sb.length;I++)p.__h.push(p._sb[I]);p._sb=[]}else do{p.__d=!1,$&&$(u),a=p.render(p.props,p.state,p.context),p.state=p.__s}while(p.__d&&++H<25);p.state=p.__s,null!=p.getChildContext&&(i=v(v({},i),p.getChildContext())),y||null==p.getSnapshotBeforeUpdate||(m=p.getSnapshotBeforeUpdate(d,_)),C(n,h(T=null!=a&&a.type===g&&null==a.key?a.props.children:a)?T:[T],u,t,i,o,r,f,e,c,s),p.base=u.__e,u.__u&=-161,p.__h.length&&f.push(p),k&&(p.__E=p.__=null)}catch(n){u.__v=null,c||null!=r?(u.__e=e,u.__u|=c?160:32,r[r.indexOf(e)]=null):(u.__e=t.__e,u.__k=t.__k),l.__e(n,u,t)}else null==r&&u.__v===t.__v?(u.__k=t.__k,u.__e=t.__e):u.__e=j(t.__e,u,t,i,o,r,f,c,s);(a=l.diffed)&&a(u)}function M(n,u,t){u.__d=void 0;for(var i=0;i<t.length;i++)z(t[i],t[++i],t[++i]);l.__c&&l.__c(u,n),n.some(function(u){try{n=u.__h,u.__h=[],n.some(function(n){n.call(u)})}catch(n){l.__e(n,u.__v)}})}function j(l,u,t,i,o,r,f,e,s){var a,v,y,d,_,g,b,k=t.props,w=u.props,x=u.type;if(\"svg\"===x&&(o=!0),null!=r)for(a=0;a<r.length;a++)if((_=r[a])&&\"setAttribute\"in _==!!x&&(x?_.localName===x:3===_.nodeType)){l=_,r[a]=null;break}if(null==l){if(null===x)return document.createTextNode(w);l=o?document.createElementNS(\"http://www.w3.org/2000/svg\",x):document.createElement(x,w.is&&w),r=null,e=!1}if(null===x)k===w||e&&l.data===w||(l.data=w);else{if(r=r&&n.call(l.childNodes),k=t.props||c,!e&&null!=r)for(k={},a=0;a<l.attributes.length;a++)k[(_=l.attributes[a]).name]=_.value;for(a in k)_=k[a],\"children\"==a||(\"dangerouslySetInnerHTML\"==a?y=_:\"key\"===a||a in w||T(l,a,null,_,o));for(a in w)_=w[a],\"children\"==a?d=_:\"dangerouslySetInnerHTML\"==a?v=_:\"value\"==a?g=_:\"checked\"==a?b=_:\"key\"===a||e&&\"function\"!=typeof _||k[a]===_||T(l,a,_,k[a],o);if(v)e||y&&(v.__html===y.__html||v.__html===l.innerHTML)||(l.innerHTML=v.__html),u.__k=[];else if(y&&(l.innerHTML=\"\"),C(l,h(d)?d:[d],u,t,i,o&&\"foreignObject\"!==x,r,f,r?r[0]:t.__k&&m(t,0),e,s),null!=r)for(a=r.length;a--;)null!=r[a]&&p(r[a]);e||(a=\"value\",void 0!==g&&(g!==l[a]||\"progress\"===x&&!g||\"option\"===x&&g!==k[a])&&T(l,a,g,k[a],!1),a=\"checked\",void 0!==b&&b!==l[a]&&T(l,a,b,k[a],!1))}return l}function z(n,u,t){try{\"function\"==typeof n?n(u):n.current=u}catch(n){l.__e(n,t)}}function N(n,u,t){var i,o;if(l.unmount&&l.unmount(n),(i=n.ref)&&(i.current&&i.current!==n.__e||z(i,null,u)),null!=(i=n.__c)){if(i.componentWillUnmount)try{i.componentWillUnmount()}catch(n){l.__e(n,u)}i.base=i.__P=null,n.__c=void 0}if(i=n.__k)for(o=0;o<i.length;o++)i[o]&&N(i[o],u,t||\"function\"!=typeof n.type);t||null==n.__e||p(n.__e),n.__=n.__e=n.__d=void 0}function O(n,l,u){return this.constructor(n,u)}function q(u,t,i){var o,r,f,e;l.__&&l.__(u,t),r=(o=\"function\"==typeof i)?null:i&&i.__k||t.__k,f=[],e=[],L(t,u=(!o&&i||t).__k=y(g,null,[u]),r||c,c,void 0!==t.ownerSVGElement,!o&&i?[i]:r?null:t.firstChild?n.call(t.childNodes):null,f,!o&&i?i:r?r.__e:t.firstChild,o,e),M(f,u,e)}function B(n,l){q(n,l,B)}function E(l,u,t){var i,o,r,f,e=v({},l.props);for(r in l.type&&l.type.defaultProps&&(f=l.type.defaultProps),u)\"key\"==r?i=u[r]:\"ref\"==r?o=u[r]:e[r]=void 0===u[r]&&void 0!==f?f[r]:u[r];return arguments.length>2&&(e.children=arguments.length>3?n.call(arguments,2):t),d(l.type,e,i||l.key,o||l.ref,null)}function F(n,l){var u={__c:l=\"__cC\"+e++,__:n,Consumer:function(n,l){return n.children(l)},Provider:function(n){var u,t;return this.getChildContext||(u=[],(t={})[l]=this,this.getChildContext=function(){return t},this.shouldComponentUpdate=function(n){this.props.value!==n.value&&u.some(function(n){n.__e=!0,w(n)})},this.sub=function(n){u.push(n);var l=n.componentWillUnmount;n.componentWillUnmount=function(){u.splice(u.indexOf(n),1),l&&l.call(n)}}),n.children}};return u.Provider.__=u.Consumer.contextType=u}n=s.slice,l={__e:function(n,l,u,t){for(var i,o,r;l=l.__;)if((i=l.__c)&&!i.__)try{if((o=i.constructor)&&null!=o.getDerivedStateFromError&&(i.setState(o.getDerivedStateFromError(n)),r=i.__d),null!=i.componentDidCatch&&(i.componentDidCatch(n,t||{}),r=i.__d),r)return i.__E=i}catch(l){n=l}throw n}},u=0,t=function(n){return null!=n&&null==n.constructor},b.prototype.setState=function(n,l){var u;u=null!=this.__s&&this.__s!==this.state?this.__s:this.__s=v({},this.state),\"function\"==typeof n&&(n=n(v({},u),this.props)),n&&v(u,n),null!=n&&this.__v&&(l&&this._sb.push(l),w(this))},b.prototype.forceUpdate=function(n){this.__v&&(this.__e=!0,n&&this.__h.push(n),w(this))},b.prototype.render=g,i=[],r=\"function\"==typeof Promise?Promise.prototype.then.bind(Promise.resolve()):setTimeout,f=function(n,l){return n.__v.__b-l.__v.__b},x.__r=0,e=0;export{b as Component,g as Fragment,E as cloneElement,F as createContext,y as createElement,_ as createRef,y as h,B as hydrate,t as isValidElement,l as options,q as render,$ as toChildArray};\n//# sourceMappingURL=preact.module.js.map\n", "import { VNode, cloneElement, createContext } from 'preact'\nimport { PostHog } from '../../posthog-core'\nimport { MultipleSurveyQuestion, Survey, SurveyAppearance, SurveyQuestion } from '../../posthog-surveys-types'\nimport { document as _document, window as _window } from '../../utils/globals'\nimport { createLogger } from '../../utils/logger'\n// We cast the types here which is dangerous but protected by the top level generateSurveys call\nconst window = _window as Window & typeof globalThis\nconst document = _document as Document\nconst SurveySeenPrefix = 'seenSurvey_'\n\nconst logger = createLogger('[Surveys]')\n\nexport const style = (appearance: SurveyAppearance | null) => {\n    const positions = {\n        left: 'left: 30px;',\n        right: 'right: 30px;',\n        center: `\n            left: 50%;\n            transform: translateX(-50%);\n          `,\n    }\n    return `\n          .survey-form, .thank-you-message {\n              position: fixed;\n              margin: 0px;\n              bottom: 0px;\n              color: black;\n              font-weight: normal;\n              font-family: ${appearance?.fontFamily || '-apple-system'}, BlinkMacSystemFont, \"Inter\", \"Segoe UI\", \"Roboto\", Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";\n              text-align: left;\n              max-width: ${parseInt(appearance?.maxWidth || '300')}px;\n              width: 100%;\n              z-index: ${parseInt(appearance?.zIndex || '99999')};\n              border: 1.5px solid ${appearance?.borderColor || '#c9c6c6'};\n              border-bottom: 0px;\n              ${positions[appearance?.position || 'right'] || 'right: 30px;'}\n              flex-direction: column;\n              background: ${appearance?.backgroundColor || '#eeeded'};\n              border-top-left-radius: 10px;\n              border-top-right-radius: 10px;\n              box-shadow: -6px 0 16px -8px rgb(0 0 0 / 8%), -9px 0 28px 0 rgb(0 0 0 / 5%), -12px 0 48px 16px rgb(0 0 0 / 3%);\n          }\n\n          .survey-box, .thank-you-message-container {\n              padding: 20px 25px 10px;\n              display: flex;\n              flex-direction: column;\n              border-radius: 10px;\n          }\n\n          .thank-you-message {\n              text-align: center;\n          }\n\n          .form-submit[disabled] {\n              opacity: 0.6;\n              filter: grayscale(50%);\n              cursor: not-allowed;\n          }\n          .survey-form textarea {\n              color: #2d2d2d;\n              font-size: 14px;\n              font-family: ${appearance?.fontFamily || '-apple-system'}, BlinkMacSystemFont, \"Inter\", \"Segoe UI\", \"Roboto\", Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";\n              background: white;\n              color: black;\n              outline: none;\n              padding-left: 10px;\n              padding-right: 10px;\n              padding-top: 10px;\n              border-radius: 6px;\n              border-color: ${appearance?.borderColor || '#c9c6c6'};\n              margin-top: 14px;\n              width: 100%;\n              box-sizing: border-box;\n          }\n          .survey-box:has(.survey-question:empty):not(:has(.survey-question-description)) textarea {\n              margin-top: 0;\n          }\n          .form-submit {\n              box-sizing: border-box;\n              margin: 0;\n              font-family: inherit;\n              overflow: visible;\n              text-transform: none;\n              position: relative;\n              display: inline-block;\n              font-weight: 700;\n              white-space: nowrap;\n              text-align: center;\n              border: 1.5px solid transparent;\n              cursor: pointer;\n              user-select: none;\n              touch-action: manipulation;\n              padding: 12px;\n              font-size: 14px;\n              border-radius: 6px;\n              outline: 0;\n              background: ${appearance?.submitButtonColor || 'black'} !important;\n              text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.12);\n              box-shadow: 0 2px 0 rgba(0, 0, 0, 0.045);\n              width: 100%;\n          }\n          .form-cancel {\n              display: flex;\n              float: right;\n              border: none;\n              background: none;\n              cursor: pointer;\n          }\n          .cancel-btn-wrapper {\n              position: absolute;\n              width: 35px;\n              height: 35px;\n              border-radius: 100%;\n              top: 0;\n              right: 0;\n              transform: translate(50%, -50%);\n              background: white;\n              border: 1.5px solid ${appearance?.borderColor || '#c9c6c6'};\n              display: flex;\n              justify-content: center;\n              align-items: center;\n          }\n          .bolded { font-weight: 600; }\n          .buttons {\n              display: flex;\n              justify-content: center;\n          }\n          .footer-branding {\n              font-size: 11px;\n              margin-top: 10px;\n              text-align: center;\n              display: flex;\n              justify-content: center;\n              gap: 4px;\n              align-items: center;\n              font-weight: 500;\n              background: ${appearance?.backgroundColor || '#eeeded'};\n              text-decoration: none;\n              backgroundColor: ${appearance?.backgroundColor || '#eeeded'};\n              color: ${getContrastingTextColor(appearance?.backgroundColor || '#eeeded')};\n          }\n          .survey-question {\n              font-weight: 500;\n              font-size: 14px;\n              background: ${appearance?.backgroundColor || '#eeeded'};\n          }\n          .question-textarea-wrapper {\n              display: flex;\n              flex-direction: column;\n          }\n          .survey-question-description {\n              font-size: 13px;\n              padding-top: 5px;\n              background: ${appearance?.backgroundColor || '#eeeded'};\n          }\n          .ratings-number {\n              font-size: 16px;\n              font-weight: 600;\n              padding: 8px 0px;\n              border: none;\n          }\n          .ratings-number:hover {\n              cursor: pointer;\n          }\n          .rating-options {\n              margin-top: 14px;\n          }\n          .rating-options-number {\n              display: grid;\n              border-radius: 6px;\n              overflow: hidden;\n              border: 1.5px solid ${appearance?.borderColor || '#c9c6c6'};\n          }\n          .rating-options-number > .ratings-number {\n              border-right: 1px solid ${appearance?.borderColor || '#c9c6c6'};\n          }\n          .rating-options-number > .ratings-number:last-of-type {\n              border-right: 0px;\n          }\n          .rating-options-number .rating-active {\n              background: ${appearance?.ratingButtonActiveColor || 'black'};\n          }\n          .rating-options-emoji {\n              display: flex;\n              justify-content: space-between;\n          }\n          .ratings-emoji {\n              font-size: 16px;\n              background-color: transparent;\n              border: none;\n              padding: 0px;\n          }\n          .ratings-emoji:hover {\n              cursor: pointer;\n          }\n          .ratings-emoji.rating-active svg {\n              fill: ${appearance?.ratingButtonActiveColor || 'black'};\n          }\n          .emoji-svg {\n              fill: '#939393';\n          }\n          .rating-text {\n              display: flex;\n              flex-direction: row;\n              font-size: 11px;\n              justify-content: space-between;\n              margin-top: 6px;\n              background: ${appearance?.backgroundColor || '#eeeded'};\n              opacity: .60;\n          }\n          .multiple-choice-options {\n              margin-top: 13px;\n              font-size: 14px;\n          }\n          .survey-box:has(.survey-question:empty):not(:has(.survey-question-description)) .multiple-choice-options {\n              margin-top: 0;\n          }\n          .multiple-choice-options .choice-option {\n              display: flex;\n              align-items: center;\n              gap: 4px;\n              font-size: 13px;\n              cursor: pointer;\n              margin-bottom: 5px;\n              position: relative;\n          }\n          .multiple-choice-options > .choice-option:last-of-type {\n              margin-bottom: 0px;\n          }\n          .multiple-choice-options input {\n              cursor: pointer;\n              position: absolute;\n              opacity: 0;\n          }\n          .choice-check {\n              position: absolute;\n              right: 10px;\n              background: white;\n          }\n          .choice-check svg {\n              display: none;\n          }\n          .multiple-choice-options .choice-option:hover .choice-check svg {\n              display: inline-block;\n              opacity: .25;\n          }\n          .multiple-choice-options input:checked + label + .choice-check svg {\n              display: inline-block;\n              opacity: 100% !important;\n          }\n          .multiple-choice-options input:checked + label {\n              font-weight: bold;\n              border: 1.5px solid rgba(0,0,0);\n          }\n          .multiple-choice-options input:checked + label input {\n              font-weight: bold;\n          }\n          .multiple-choice-options label {\n              width: 100%;\n              cursor: pointer;\n              padding: 10px;\n              border: 1.5px solid rgba(0,0,0,.25);\n              border-radius: 4px;\n              background: white;\n          }\n          .multiple-choice-options .choice-option-open label {\n              padding-right: 30px;\n              display: flex;\n              flex-wrap: wrap;\n              gap: 8px;\n              max-width: 100%;\n          }\n          .multiple-choice-options .choice-option-open label span {\n              width: 100%;\n          }\n          .multiple-choice-options .choice-option-open input:disabled + label {\n              opacity: 0.6;\n          }\n          .multiple-choice-options .choice-option-open label input {\n              position: relative;\n              opacity: 1;\n              flex-grow: 1;\n              border: 0;\n              outline: 0;\n          }\n          .thank-you-message-body {\n              margin-top: 6px;\n              font-size: 14px;\n              background: ${appearance?.backgroundColor || '#eeeded'};\n          }\n          .thank-you-message-header {\n              margin: 10px 0px 0px;\n              background: ${appearance?.backgroundColor || '#eeeded'};\n          }\n          .thank-you-message-container .form-submit {\n              margin-top: 20px;\n              margin-bottom: 10px;\n          }\n          .thank-you-message-countdown {\n              margin-left: 6px;\n          }\n          .bottom-section {\n              margin-top: 14px;\n          }\n          `\n}\n\nfunction nameToHex(name: string) {\n    return {\n        aliceblue: '#f0f8ff',\n        antiquewhite: '#faebd7',\n        aqua: '#00ffff',\n        aquamarine: '#7fffd4',\n        azure: '#f0ffff',\n        beige: '#f5f5dc',\n        bisque: '#ffe4c4',\n        black: '#000000',\n        blanchedalmond: '#ffebcd',\n        blue: '#0000ff',\n        blueviolet: '#8a2be2',\n        brown: '#a52a2a',\n        burlywood: '#deb887',\n        cadetblue: '#5f9ea0',\n        chartreuse: '#7fff00',\n        chocolate: '#d2691e',\n        coral: '#ff7f50',\n        cornflowerblue: '#6495ed',\n        cornsilk: '#fff8dc',\n        crimson: '#dc143c',\n        cyan: '#00ffff',\n        darkblue: '#00008b',\n        darkcyan: '#008b8b',\n        darkgoldenrod: '#b8860b',\n        darkgray: '#a9a9a9',\n        darkgreen: '#006400',\n        darkkhaki: '#bdb76b',\n        darkmagenta: '#8b008b',\n        darkolivegreen: '#556b2f',\n        darkorange: '#ff8c00',\n        darkorchid: '#9932cc',\n        darkred: '#8b0000',\n        darksalmon: '#e9967a',\n        darkseagreen: '#8fbc8f',\n        darkslateblue: '#483d8b',\n        darkslategray: '#2f4f4f',\n        darkturquoise: '#00ced1',\n        darkviolet: '#9400d3',\n        deeppink: '#ff1493',\n        deepskyblue: '#00bfff',\n        dimgray: '#696969',\n        dodgerblue: '#1e90ff',\n        firebrick: '#b22222',\n        floralwhite: '#fffaf0',\n        forestgreen: '#228b22',\n        fuchsia: '#ff00ff',\n        gainsboro: '#dcdcdc',\n        ghostwhite: '#f8f8ff',\n        gold: '#ffd700',\n        goldenrod: '#daa520',\n        gray: '#808080',\n        green: '#008000',\n        greenyellow: '#adff2f',\n        honeydew: '#f0fff0',\n        hotpink: '#ff69b4',\n        'indianred ': '#cd5c5c',\n        indigo: '#4b0082',\n        ivory: '#fffff0',\n        khaki: '#f0e68c',\n        lavender: '#e6e6fa',\n        lavenderblush: '#fff0f5',\n        lawngreen: '#7cfc00',\n        lemonchiffon: '#fffacd',\n        lightblue: '#add8e6',\n        lightcoral: '#f08080',\n        lightcyan: '#e0ffff',\n        lightgoldenrodyellow: '#fafad2',\n        lightgrey: '#d3d3d3',\n        lightgreen: '#90ee90',\n        lightpink: '#ffb6c1',\n        lightsalmon: '#ffa07a',\n        lightseagreen: '#20b2aa',\n        lightskyblue: '#87cefa',\n        lightslategray: '#778899',\n        lightsteelblue: '#b0c4de',\n        lightyellow: '#ffffe0',\n        lime: '#00ff00',\n        limegreen: '#32cd32',\n        linen: '#faf0e6',\n        magenta: '#ff00ff',\n        maroon: '#800000',\n        mediumaquamarine: '#66cdaa',\n        mediumblue: '#0000cd',\n        mediumorchid: '#ba55d3',\n        mediumpurple: '#9370d8',\n        mediumseagreen: '#3cb371',\n        mediumslateblue: '#7b68ee',\n        mediumspringgreen: '#00fa9a',\n        mediumturquoise: '#48d1cc',\n        mediumvioletred: '#c71585',\n        midnightblue: '#191970',\n        mintcream: '#f5fffa',\n        mistyrose: '#ffe4e1',\n        moccasin: '#ffe4b5',\n        navajowhite: '#ffdead',\n        navy: '#000080',\n        oldlace: '#fdf5e6',\n        olive: '#808000',\n        olivedrab: '#6b8e23',\n        orange: '#ffa500',\n        orangered: '#ff4500',\n        orchid: '#da70d6',\n        palegoldenrod: '#eee8aa',\n        palegreen: '#98fb98',\n        paleturquoise: '#afeeee',\n        palevioletred: '#d87093',\n        papayawhip: '#ffefd5',\n        peachpuff: '#ffdab9',\n        peru: '#cd853f',\n        pink: '#ffc0cb',\n        plum: '#dda0dd',\n        powderblue: '#b0e0e6',\n        purple: '#800080',\n        red: '#ff0000',\n        rosybrown: '#bc8f8f',\n        royalblue: '#4169e1',\n        saddlebrown: '#8b4513',\n        salmon: '#fa8072',\n        sandybrown: '#f4a460',\n        seagreen: '#2e8b57',\n        seashell: '#fff5ee',\n        sienna: '#a0522d',\n        silver: '#c0c0c0',\n        skyblue: '#87ceeb',\n        slateblue: '#6a5acd',\n        slategray: '#708090',\n        snow: '#fffafa',\n        springgreen: '#00ff7f',\n        steelblue: '#4682b4',\n        tan: '#d2b48c',\n        teal: '#008080',\n        thistle: '#d8bfd8',\n        tomato: '#ff6347',\n        turquoise: '#40e0d0',\n        violet: '#ee82ee',\n        wheat: '#f5deb3',\n        white: '#ffffff',\n        whitesmoke: '#f5f5f5',\n        yellow: '#ffff00',\n        yellowgreen: '#9acd32',\n    }[name.toLowerCase()]\n}\n\nfunction hex2rgb(c: string) {\n    if (c[0] === '#') {\n        const hexColor = c.replace(/^#/, '')\n        const r = parseInt(hexColor.slice(0, 2), 16)\n        const g = parseInt(hexColor.slice(2, 4), 16)\n        const b = parseInt(hexColor.slice(4, 6), 16)\n        return 'rgb(' + r + ',' + g + ',' + b + ')'\n    }\n    return 'rgb(255, 255, 255)'\n}\n\nexport function getContrastingTextColor(color: string = defaultBackgroundColor) {\n    let rgb\n    if (color[0] === '#') {\n        rgb = hex2rgb(color)\n    }\n    if (color.startsWith('rgb')) {\n        rgb = color\n    }\n    // otherwise it's a color name\n    const nameColorToHex = nameToHex(color)\n    if (nameColorToHex) {\n        rgb = hex2rgb(nameColorToHex)\n    }\n    if (!rgb) {\n        return 'black'\n    }\n    const colorMatch = rgb.match(/^rgba?\\((\\d+),\\s*(\\d+),\\s*(\\d+)(?:,\\s*(\\d+(?:\\.\\d+)?))?\\)$/)\n    if (colorMatch) {\n        const r = parseInt(colorMatch[1])\n        const g = parseInt(colorMatch[2])\n        const b = parseInt(colorMatch[3])\n        const hsp = Math.sqrt(0.299 * (r * r) + 0.587 * (g * g) + 0.114 * (b * b))\n        return hsp > 127.5 ? 'black' : 'white'\n    }\n    return 'black'\n}\nexport function getTextColor(el: HTMLElement) {\n    const backgroundColor = window.getComputedStyle(el).backgroundColor\n    if (backgroundColor === 'rgba(0, 0, 0, 0)') {\n        return 'black'\n    }\n    const colorMatch = backgroundColor.match(/^rgba?\\((\\d+),\\s*(\\d+),\\s*(\\d+)(?:,\\s*(\\d+(?:\\.\\d+)?))?\\)$/)\n    if (!colorMatch) return 'black'\n\n    const r = parseInt(colorMatch[1])\n    const g = parseInt(colorMatch[2])\n    const b = parseInt(colorMatch[3])\n    const hsp = Math.sqrt(0.299 * (r * r) + 0.587 * (g * g) + 0.114 * (b * b))\n    return hsp > 127.5 ? 'black' : 'white'\n}\n\nexport const defaultSurveyAppearance: SurveyAppearance = {\n    backgroundColor: '#eeeded',\n    submitButtonColor: 'black',\n    submitButtonTextColor: 'white',\n    ratingButtonColor: 'white',\n    ratingButtonActiveColor: 'black',\n    borderColor: '#c9c6c6',\n    placeholder: 'Start typing...',\n    whiteLabel: false,\n    displayThankYouMessage: true,\n    thankYouMessageHeader: 'Thank you for your feedback!',\n    position: 'right',\n}\n\nexport const defaultBackgroundColor = '#eeeded'\n\nexport const createShadow = (styleSheet: string, surveyId: string, element?: Element) => {\n    const div = document.createElement('div')\n    div.className = `PostHogSurvey${surveyId}`\n    const shadow = div.attachShadow({ mode: 'open' })\n    if (styleSheet) {\n        const styleElement = Object.assign(document.createElement('style'), {\n            innerText: styleSheet,\n        })\n        shadow.appendChild(styleElement)\n    }\n    ;(element ? element : document.body).appendChild(div)\n    return shadow\n}\n\nexport const sendSurveyEvent = (\n    responses: Record<string, string | number | string[] | null> = {},\n    survey: Survey,\n    posthog?: PostHog\n) => {\n    if (!posthog) {\n        logger.error('[survey sent] event not captured, PostHog instance not found.')\n        return\n    }\n    localStorage.setItem(getSurveySeenKey(survey), 'true')\n\n    posthog.capture('survey sent', {\n        $survey_name: survey.name,\n        $survey_id: survey.id,\n        $survey_iteration: survey.current_iteration,\n        $survey_iteration_start_date: survey.current_iteration_start_date,\n        $survey_questions: survey.questions.map((question) => question.question),\n        sessionRecordingUrl: posthog.get_session_replay_url?.(),\n        ...responses,\n        $set: {\n            [getSurveyInteractionProperty(survey, 'responded')]: true,\n        },\n    })\n    window.dispatchEvent(new Event('PHSurveySent'))\n}\n\nexport const dismissedSurveyEvent = (survey: Survey, posthog?: PostHog, readOnly?: boolean) => {\n    // TODO: state management and unit tests for this would be nice\n    if (!posthog) {\n        logger.error('[survey dismissed] event not captured, PostHog instance not found.')\n        return\n    }\n    if (readOnly) {\n        return\n    }\n    posthog.capture('survey dismissed', {\n        $survey_name: survey.name,\n        $survey_id: survey.id,\n        $survey_iteration: survey.current_iteration,\n        $survey_iteration_start_date: survey.current_iteration_start_date,\n        sessionRecordingUrl: posthog.get_session_replay_url?.(),\n        $set: {\n            [getSurveyInteractionProperty(survey, 'dismissed')]: true,\n        },\n    })\n    localStorage.setItem(getSurveySeenKey(survey), 'true')\n    window.dispatchEvent(new Event('PHSurveyClosed'))\n}\n\n// Use the Fisher-yates algorithm to shuffle this array\n// https://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle\nexport const shuffle = (array: any[]) => {\n    return array\n        .map((a) => ({ sort: Math.floor(Math.random() * 10), value: a }))\n        .sort((a, b) => a.sort - b.sort)\n        .map((a) => a.value)\n}\n\nconst reverseIfUnshuffled = (unshuffled: any[], shuffled: any[]): any[] => {\n    if (unshuffled.length === shuffled.length && unshuffled.every((val, index) => val === shuffled[index])) {\n        return shuffled.reverse()\n    }\n\n    return shuffled\n}\n\nexport const getDisplayOrderChoices = (question: MultipleSurveyQuestion): string[] => {\n    if (!question.shuffleOptions) {\n        return question.choices\n    }\n\n    const displayOrderChoices = question.choices\n    let openEndedChoice = ''\n    if (question.hasOpenChoice) {\n        // if the question has an open-ended choice, its always the last element in the choices array.\n        openEndedChoice = displayOrderChoices.pop()!\n    }\n\n    const shuffledOptions = reverseIfUnshuffled(displayOrderChoices, shuffle(displayOrderChoices))\n\n    if (question.hasOpenChoice) {\n        question.choices.push(openEndedChoice)\n        shuffledOptions.push(openEndedChoice)\n    }\n\n    return shuffledOptions\n}\n\nexport const getDisplayOrderQuestions = (survey: Survey): SurveyQuestion[] => {\n    // retain the original questionIndex so we can correlate values in the webapp\n    survey.questions.forEach((question, idx) => {\n        question.originalQuestionIndex = idx\n    })\n\n    if (!survey.appearance || !survey.appearance.shuffleQuestions) {\n        return survey.questions\n    }\n\n    return reverseIfUnshuffled(survey.questions, shuffle(survey.questions))\n}\n\nexport const hasEvents = (survey: Survey): boolean => {\n    return survey.conditions?.events?.values?.length != undefined && survey.conditions?.events?.values?.length > 0\n}\n\nexport const canActivateRepeatedly = (survey: Survey): boolean => {\n    return !!(survey.conditions?.events?.repeatedActivation && hasEvents(survey))\n}\n\n/**\n * getSurveySeen checks local storage for the surveySeen Key a\n * and overrides this value if the survey can be repeatedly activated by its events.\n * @param survey\n */\nexport const getSurveySeen = (survey: Survey): boolean => {\n    const surveySeen = localStorage.getItem(getSurveySeenKey(survey))\n    if (surveySeen) {\n        // if a survey has already been seen,\n        // we will override it with the event repeated activation value.\n        return !canActivateRepeatedly(survey)\n    }\n\n    return false\n}\n\nexport const getSurveySeenKey = (survey: Survey): string => {\n    let surveySeenKey = `${SurveySeenPrefix}${survey.id}`\n    if (survey.current_iteration && survey.current_iteration > 0) {\n        surveySeenKey = `${SurveySeenPrefix}${survey.id}_${survey.current_iteration}`\n    }\n\n    return surveySeenKey\n}\n\nexport const getSurveySeenStorageKeys = (): string[] => {\n    const surveyKeys = []\n    for (let i = 0; i < localStorage.length; i++) {\n        const key = localStorage.key(i)\n        if (key?.startsWith(SurveySeenPrefix)) {\n            surveyKeys.push(key)\n        }\n    }\n\n    return surveyKeys\n}\n\nconst getSurveyInteractionProperty = (survey: Survey, action: string): string => {\n    let surveyProperty = `$survey_${action}/${survey.id}`\n    if (survey.current_iteration && survey.current_iteration > 0) {\n        surveyProperty = `$survey_${action}/${survey.id}/${survey.current_iteration}`\n    }\n\n    return surveyProperty\n}\n\ninterface SurveyContextProps {\n    isPreviewMode: boolean\n    previewPageIndex: number | undefined\n    handleCloseSurveyPopup: () => void\n    isPopup: boolean\n    onPreviewSubmit: (res: string | string[] | number | null) => void\n}\n\nexport const SurveyContext = createContext<SurveyContextProps>({\n    isPreviewMode: false,\n    previewPageIndex: 0,\n    handleCloseSurveyPopup: () => {},\n    isPopup: true,\n    onPreviewSubmit: () => {},\n})\n\ninterface RenderProps {\n    component: VNode<{ className: string }>\n    children: string\n    renderAsHtml?: boolean\n    style?: React.CSSProperties\n}\n\nexport const renderChildrenAsTextOrHtml = ({ component, children, renderAsHtml, style }: RenderProps) => {\n    return renderAsHtml\n        ? cloneElement(component, {\n              dangerouslySetInnerHTML: { __html: children },\n              style,\n          })\n        : cloneElement(component, {\n              children,\n              style,\n          })\n}\n", "/**\n * Having Survey types in types.ts was confusing tsc\n * and generating an invalid module.d.ts\n * See https://github.com/PostHog/posthog-js/issues/698\n */\n\nexport interface SurveyAppearance {\n    // keep in sync with frontend/src/types.ts -> SurveyAppearance\n    backgroundColor?: string\n    submitButtonColor?: string\n    // text color is deprecated, use auto contrast text color instead\n    textColor?: string\n    // deprecate submit button text eventually\n    submitButtonText?: string\n    submitButtonTextColor?: string\n    descriptionTextColor?: string\n    ratingButtonColor?: string\n    ratingButtonActiveColor?: string\n    ratingButtonHoverColor?: string\n    whiteLabel?: boolean\n    autoDisappear?: boolean\n    displayThankYouMessage?: boolean\n    thankYouMessageHeader?: string\n    thankYouMessageDescription?: string\n    thankYouMessageDescriptionContentType?: SurveyQuestionDescriptionContentType\n    thankYouMessageCloseButtonText?: string\n    borderColor?: string\n    position?: 'left' | 'right' | 'center'\n    placeholder?: string\n    shuffleQuestions?: boolean\n    surveyPopupDelaySeconds?: number\n    // widget options\n    widgetType?: 'button' | 'tab' | 'selector'\n    widgetSelector?: string\n    widgetLabel?: string\n    widgetColor?: string\n    fontFamily?: string\n    // questionable: Not in frontend/src/types.ts -> SurveyAppearance, but used in site app\n    maxWidth?: string\n    zIndex?: string\n}\n\nexport enum SurveyType {\n    Popover = 'popover',\n    API = 'api',\n    Widget = 'widget',\n}\n\nexport type SurveyQuestion = BasicSurveyQuestion | LinkSurveyQuestion | RatingSurveyQuestion | MultipleSurveyQuestion\n\nexport type SurveyQuestionDescriptionContentType = 'html' | 'text'\n\ninterface SurveyQuestionBase {\n    question: string\n    description?: string | null\n    descriptionContentType?: SurveyQuestionDescriptionContentType\n    optional?: boolean\n    buttonText?: string\n    originalQuestionIndex: number\n    branching?: NextQuestionBranching | EndBranching | ResponseBasedBranching | SpecificQuestionBranching\n}\n\nexport interface BasicSurveyQuestion extends SurveyQuestionBase {\n    type: SurveyQuestionType.Open\n}\n\nexport interface LinkSurveyQuestion extends SurveyQuestionBase {\n    type: SurveyQuestionType.Link\n    link?: string | null\n}\n\nexport interface RatingSurveyQuestion extends SurveyQuestionBase {\n    type: SurveyQuestionType.Rating\n    display: 'number' | 'emoji'\n    scale: 3 | 5 | 7 | 10\n    lowerBoundLabel: string\n    upperBoundLabel: string\n}\n\nexport interface MultipleSurveyQuestion extends SurveyQuestionBase {\n    type: SurveyQuestionType.SingleChoice | SurveyQuestionType.MultipleChoice\n    choices: string[]\n    hasOpenChoice?: boolean\n    shuffleOptions?: boolean\n}\n\nexport enum SurveyQuestionType {\n    Open = 'open',\n    MultipleChoice = 'multiple_choice',\n    SingleChoice = 'single_choice',\n    Rating = 'rating',\n    Link = 'link',\n}\n\nexport enum SurveyQuestionBranchingType {\n    NextQuestion = 'next_question',\n    End = 'end',\n    ResponseBased = 'response_based',\n    SpecificQuestion = 'specific_question',\n}\n\ninterface NextQuestionBranching {\n    type: SurveyQuestionBranchingType.NextQuestion\n}\n\ninterface EndBranching {\n    type: SurveyQuestionBranchingType.End\n}\n\ninterface ResponseBasedBranching {\n    type: SurveyQuestionBranchingType.ResponseBased\n    responseValues: Record<string, any>\n}\n\ninterface SpecificQuestionBranching {\n    type: SurveyQuestionBranchingType.SpecificQuestion\n    index: number\n}\n\nexport interface SurveyResponse {\n    surveys: Survey[]\n}\n\nexport type SurveyCallback = (surveys: Survey[]) => void\n\nexport type SurveyMatchType = 'regex' | 'not_regex' | 'exact' | 'is_not' | 'icontains' | 'not_icontains'\n\nexport interface SurveyElement {\n    text?: string\n    $el_text?: string\n    tag_name?: string\n    href?: string\n    attr_id?: string\n    attr_class?: string[]\n    nth_child?: number\n    nth_of_type?: number\n    attributes?: Record<string, any>\n    event_id?: number\n    order?: number\n    group_id?: number\n}\nexport interface SurveyRenderReason {\n    visible: boolean\n    disabledReason?: string\n}\n\nexport interface Survey {\n    // Sync this with the backend's SurveyAPISerializer!\n    id: string\n    name: string\n    description: string\n    type: SurveyType\n    feature_flag_keys:\n        | {\n              key: string\n              value?: string\n          }[]\n        | null\n    linked_flag_key: string | null\n    targeting_flag_key: string | null\n    internal_targeting_flag_key: string | null\n    questions: SurveyQuestion[]\n    appearance: SurveyAppearance | null\n    conditions: {\n        url?: string\n        selector?: string\n        seenSurveyWaitPeriodInDays?: number\n        urlMatchType?: SurveyMatchType\n        events: {\n            repeatedActivation?: boolean\n            values: {\n                name: string\n            }[]\n        } | null\n        actions: {\n            values: SurveyActionType[]\n        } | null\n        deviceTypes?: string[]\n        deviceTypesMatchType?: SurveyMatchType\n    } | null\n    start_date: string | null\n    end_date: string | null\n    current_iteration: number | null\n    current_iteration_start_date: string | null\n}\n\nexport interface SurveyActionType {\n    id: number\n    name: string | null\n    steps?: ActionStepType[]\n}\n\n/** Sync with plugin-server/src/types.ts */\nexport type ActionStepStringMatching = 'contains' | 'exact' | 'regex'\n\nexport interface ActionStepType {\n    event?: string | null\n    selector?: string | null\n    /** @deprecated Only `selector` should be used now. */\n    tag_name?: string\n    text?: string | null\n    /** @default StringMatching.Exact */\n    text_matching?: ActionStepStringMatching | null\n    href?: string | null\n    /** @default ActionStepStringMatching.Exact */\n    href_matching?: ActionStepStringMatching | null\n    url?: string | null\n    /** @default StringMatching.Contains */\n    url_matching?: ActionStepStringMatching | null\n}\n", "export class SimpleEventEmitter {\n    private events: { [key: string]: ((...args: any[]) => void)[] } = {}\n\n    constructor() {\n        this.events = {}\n    }\n\n    on(event: string, listener: (...args: any[]) => void): () => void {\n        if (!this.events[event]) {\n            this.events[event] = []\n        }\n        this.events[event].push(listener)\n\n        return () => {\n            this.events[event] = this.events[event].filter((x) => x !== listener)\n        }\n    }\n\n    emit(event: string, payload: any): void {\n        for (const listener of this.events[event] || []) {\n            listener(payload)\n        }\n        for (const listener of this.events['*'] || []) {\n            listener(event, payload)\n        }\n    }\n}\n", "import { PostHog } from '../../posthog-core'\nimport { ActionStepStringMatching, ActionStepType, SurveyActionType, SurveyElement } from '../../posthog-surveys-types'\nimport { SimpleEventEmitter } from '../../utils/simple-event-emitter'\nimport { CaptureResult } from '../../types'\nimport { isUndefined } from '../../utils/type-utils'\nimport { window } from '../../utils/globals'\nimport { isMatchingRegex } from '../../utils/string-utils'\n\nexport class ActionMatcher {\n    private readonly actionRegistry?: Set<SurveyActionType>\n    private readonly instance?: PostHog\n    private readonly actionEvents: Set<string>\n    private _debugEventEmitter = new SimpleEventEmitter()\n\n    constructor(instance?: PostHog) {\n        this.instance = instance\n        this.actionEvents = new Set<string>()\n        this.actionRegistry = new Set<SurveyActionType>()\n    }\n\n    init() {\n        if (!isUndefined(this.instance?._addCaptureHook)) {\n            const matchEventToAction = (eventName: string, eventPayload: any) => {\n                this.on(eventName, eventPayload)\n            }\n            this.instance?._addCaptureHook(matchEventToAction)\n        }\n    }\n\n    register(actions: SurveyActionType[]): void {\n        if (isUndefined(this.instance?._addCaptureHook)) {\n            return\n        }\n\n        actions.forEach((action) => {\n            this.actionRegistry?.add(action)\n            action.steps?.forEach((step) => {\n                this.actionEvents?.add(step?.event || '')\n            })\n        })\n\n        if (this.instance?.autocapture) {\n            const selectorsToWatch: Set<string> = new Set<string>()\n            actions.forEach((action) => {\n                action.steps?.forEach((step) => {\n                    if (step?.selector) {\n                        selectorsToWatch.add(step?.selector)\n                    }\n                })\n            })\n            this.instance?.autocapture.setElementSelectors(selectorsToWatch)\n        }\n    }\n\n    on(eventName: string, eventPayload?: CaptureResult) {\n        if (eventPayload == null || eventName.length == 0) {\n            return\n        }\n\n        if (!this.actionEvents.has(eventName) && !this.actionEvents.has(<string>eventPayload?.event)) {\n            return\n        }\n\n        if (this.actionRegistry && this.actionRegistry?.size > 0) {\n            this.actionRegistry.forEach((action) => {\n                if (this.checkAction(eventPayload, action)) {\n                    this._debugEventEmitter.emit('actionCaptured', action.name)\n                }\n            })\n        }\n    }\n\n    _addActionHook(callback: (actionName: string, eventPayload?: any) => void): void {\n        this.onAction('actionCaptured', (data) => callback(data))\n    }\n\n    private checkAction(event?: CaptureResult, action?: SurveyActionType): boolean {\n        if (action?.steps == null) {\n            return false\n        }\n\n        for (const step of action.steps) {\n            if (this.checkStep(event, step)) {\n                return true\n            }\n        }\n\n        return false\n    }\n\n    onAction(event: 'actionCaptured', cb: (...args: any[]) => void): () => void {\n        return this._debugEventEmitter.on(event, cb)\n    }\n\n    private checkStep = (event?: CaptureResult, step?: ActionStepType): boolean => {\n        return this.checkStepEvent(event, step) && this.checkStepUrl(event, step) && this.checkStepElement(event, step)\n    }\n\n    private checkStepEvent = (event?: CaptureResult, step?: ActionStepType): boolean => {\n        // CHECK CONDITIONS, OTHERWISE SKIPPED\n        if (step?.event && event?.event !== step?.event) {\n            return false // EVENT NAME IS A MISMATCH\n        }\n        return true\n    }\n\n    private checkStepUrl(event?: CaptureResult, step?: ActionStepType): boolean {\n        // CHECK CONDITIONS, OTHERWISE SKIPPED\n        if (step?.url) {\n            const eventUrl = event?.properties?.$current_url\n            if (!eventUrl || typeof eventUrl !== 'string') {\n                return false // URL IS UNKNOWN\n            }\n            if (!ActionMatcher.matchString(eventUrl, step?.url, step?.url_matching || 'contains')) {\n                return false // URL IS A MISMATCH\n            }\n        }\n        return true\n    }\n\n    private static matchString(url: string, pattern: string, matching: ActionStepStringMatching): boolean {\n        switch (matching) {\n            case 'regex':\n                return !!window && isMatchingRegex(url, pattern)\n            case 'exact':\n                return pattern === url\n            case 'contains':\n                // Simulating SQL LIKE behavior (_ = any single character, % = any zero or more characters)\n                // eslint-disable-next-line no-case-declarations\n                const adjustedRegExpStringPattern = ActionMatcher.escapeStringRegexp(pattern)\n                    .replace(/_/g, '.')\n                    .replace(/%/g, '.*')\n                return isMatchingRegex(url, adjustedRegExpStringPattern)\n\n            default:\n                return false\n        }\n    }\n\n    private static escapeStringRegexp(pattern: string): string {\n        // Escape characters with special meaning either inside or outside character sets.\n        // Use a simple backslash escape when it’s always valid, and a `\\xnn` escape when the simpler form would be disallowed by Unicode patterns’ stricter grammar.\n        return pattern.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&').replace(/-/g, '\\\\x2d')\n    }\n\n    private checkStepElement(event?: CaptureResult, step?: ActionStepType): boolean {\n        // CHECK CONDITIONS, OTHERWISE SKIPPED\n        if (step?.href || step?.tag_name || step?.text) {\n            const elements = this.getElementsList(event)\n            if (\n                !elements.some((element) => {\n                    if (\n                        step?.href &&\n                        !ActionMatcher.matchString(element.href || '', step?.href, step?.href_matching || 'exact')\n                    ) {\n                        return false // ELEMENT HREF IS A MISMATCH\n                    }\n                    if (step?.tag_name && element.tag_name !== step?.tag_name) {\n                        return false // ELEMENT TAG NAME IS A MISMATCH\n                    }\n                    if (\n                        step?.text &&\n                        !(\n                            ActionMatcher.matchString(element.text || '', step?.text, step?.text_matching || 'exact') ||\n                            ActionMatcher.matchString(\n                                element.$el_text || '',\n                                step?.text,\n                                step?.text_matching || 'exact'\n                            )\n                        )\n                    ) {\n                        return false // ELEMENT TEXT IS A MISMATCH\n                    }\n                    return true\n                })\n            ) {\n                // AT LEAST ONE ELEMENT MUST BE A SUBMATCH\n                return false\n            }\n        }\n\n        if (step?.selector) {\n            const elementSelectors = event?.properties?.$element_selectors as unknown as string[]\n            if (!elementSelectors) {\n                return false // SELECTOR IS A MISMATCH\n            }\n            if (!elementSelectors.includes(step?.selector)) {\n                return false // SELECTOR IS A MISMATCH\n            }\n        }\n\n        return true\n    }\n\n    private getElementsList(event?: CaptureResult): SurveyElement[] {\n        if (event?.properties.$elements == null) {\n            return []\n        }\n\n        return event?.properties.$elements as unknown as SurveyElement[]\n    }\n}\n", "import { Survey } from '../posthog-surveys-types'\nimport { SURVEYS_ACTIVATED } from '../constants'\n\nimport { CaptureResult } from '../types'\nimport { ActionMatcher } from '../extensions/surveys/action-matcher'\nimport { PostHog } from '../posthog-core'\nimport { isUndefined } from './type-utils'\n\nexport class SurveyEventReceiver {\n    // eventToSurveys is a mapping of event name to all the surveys that are activated by it\n    private readonly eventToSurveys: Map<string, string[]>\n    // actionToSurveys is a mapping of action name to all the surveys that are activated by it\n    private readonly actionToSurveys: Map<string, string[]>\n    // actionMatcher can look at CaptureResult payloads and match an event to its corresponding action.\n    private actionMatcher?: ActionMatcher | null\n    private readonly instance?: PostHog\n    private static SURVEY_SHOWN_EVENT_NAME = 'survey shown'\n\n    constructor(instance: PostHog) {\n        this.instance = instance\n        this.eventToSurveys = new Map<string, string[]>()\n        this.actionToSurveys = new Map<string, string[]>()\n    }\n\n    register(surveys: Survey[]): void {\n        if (isUndefined(this.instance?._addCaptureHook)) {\n            return\n        }\n\n        this.setupEventBasedSurveys(surveys)\n        this.setupActionBasedSurveys(surveys)\n    }\n\n    private setupActionBasedSurveys(surveys: Survey[]) {\n        const actionBasedSurveys = surveys.filter(\n            (survey: Survey) => survey.conditions?.actions && survey.conditions?.actions?.values?.length > 0\n        )\n\n        if (actionBasedSurveys.length === 0) {\n            return\n        }\n\n        if (this.actionMatcher == null) {\n            this.actionMatcher = new ActionMatcher(this.instance)\n            this.actionMatcher.init()\n            // match any actions to its corresponding survey.\n            const matchActionToSurvey = (actionName: string) => {\n                this.onAction(actionName)\n            }\n\n            this.actionMatcher._addActionHook(matchActionToSurvey)\n        }\n\n        actionBasedSurveys.forEach((survey) => {\n            if (\n                survey.conditions &&\n                survey.conditions?.actions &&\n                survey.conditions?.actions?.values &&\n                survey.conditions?.actions?.values?.length > 0\n            ) {\n                // register the known set of actions with\n                // the action-matcher so it can match\n                // events to actions\n                this.actionMatcher?.register(survey.conditions.actions.values)\n\n                // maintain a mapping of (Action1) => [Survey1, Survey2, Survey3]\n                // where Surveys 1-3 are all activated by Action1\n                survey.conditions?.actions?.values?.forEach((action) => {\n                    if (action && action.name) {\n                        const knownSurveys: string[] | undefined = this.actionToSurveys.get(action.name)\n                        if (knownSurveys) {\n                            knownSurveys.push(survey.id)\n                        }\n                        this.actionToSurveys.set(action.name, knownSurveys || [survey.id])\n                    }\n                })\n            }\n        })\n    }\n\n    private setupEventBasedSurveys(surveys: Survey[]) {\n        const eventBasedSurveys = surveys.filter(\n            (survey: Survey) => survey.conditions?.events && survey.conditions?.events?.values?.length > 0\n        )\n\n        if (eventBasedSurveys.length === 0) {\n            return\n        }\n\n        // match any events to its corresponding survey.\n        const matchEventToSurvey = (eventName: string, eventPayload?: CaptureResult) => {\n            this.onEvent(eventName, eventPayload)\n        }\n        this.instance?._addCaptureHook(matchEventToSurvey)\n\n        surveys.forEach((survey) => {\n            // maintain a mapping of (Event1) => [Survey1, Survey2, Survey3]\n            // where Surveys 1-3 are all activated by Event1\n            survey.conditions?.events?.values?.forEach((event) => {\n                if (event && event.name) {\n                    const knownSurveys: string[] | undefined = this.eventToSurveys.get(event.name)\n                    if (knownSurveys) {\n                        knownSurveys.push(survey.id)\n                    }\n                    this.eventToSurveys.set(event.name, knownSurveys || [survey.id])\n                }\n            })\n        })\n    }\n\n    onEvent(event: string, eventPayload?: CaptureResult): void {\n        const existingActivatedSurveys: string[] = this.instance?.persistence?.props[SURVEYS_ACTIVATED] || []\n        if (\n            SurveyEventReceiver.SURVEY_SHOWN_EVENT_NAME == event &&\n            eventPayload &&\n            existingActivatedSurveys.length > 0\n        ) {\n            // remove survey that from activatedSurveys here.\n            const surveyId = eventPayload?.properties?.$survey_id\n            if (surveyId) {\n                const index = existingActivatedSurveys.indexOf(surveyId)\n                if (index >= 0) {\n                    existingActivatedSurveys.splice(index, 1)\n                    this._updateActivatedSurveys(existingActivatedSurveys)\n                }\n            }\n        } else {\n            if (this.eventToSurveys.has(event)) {\n                this._updateActivatedSurveys(existingActivatedSurveys.concat(this.eventToSurveys.get(event) || []))\n            }\n        }\n    }\n\n    onAction(actionName: string): void {\n        const existingActivatedSurveys: string[] = this.instance?.persistence?.props[SURVEYS_ACTIVATED] || []\n        if (this.actionToSurveys.has(actionName)) {\n            this._updateActivatedSurveys(existingActivatedSurveys.concat(this.actionToSurveys.get(actionName) || []))\n        }\n    }\n\n    private _updateActivatedSurveys(activatedSurveys: string[]) {\n        // we use a new Set here to remove duplicates.\n        this.instance?.persistence?.register({\n            [SURVEYS_ACTIVATED]: [...new Set(activatedSurveys)],\n        })\n    }\n\n    getSurveys(): string[] {\n        const existingActivatedSurveys = this.instance?.persistence?.props[SURVEYS_ACTIVATED]\n        return existingActivatedSurveys ? existingActivatedSurveys : []\n    }\n\n    getEventToSurveys(): Map<string, string[]> {\n        return this.eventToSurveys\n    }\n\n    _getActionMatcher(): ActionMatcher | null | undefined {\n        return this.actionMatcher\n    }\n}\n", "import { SURVEYS } from './constants'\nimport { getSurveySeenStorageKeys } from './extensions/surveys/surveys-utils'\nimport { PostHog } from './posthog-core'\nimport {\n    Survey,\n    SurveyCallback,\n    SurveyQuestionBranchingType,\n    SurveyQuestionType,\n    SurveyMatchType,\n} from './posthog-surveys-types'\nimport { RemoteConfig } from './types'\nimport { Info } from './utils/event-utils'\nimport { assignableWindow, document, userAgent, window } from './utils/globals'\nimport { createLogger } from './utils/logger'\nimport { isMatchingRegex } from './utils/string-utils'\nimport { SurveyEventReceiver } from './utils/survey-event-receiver'\nimport { isNullish } from './utils/type-utils'\n\nconst logger = createLogger('[Surveys]')\n\nexport const surveyValidationMap: Record<SurveyMatchType, (targets: string[], value: string) => boolean> = {\n    icontains: (targets, value) => targets.some((target) => value.toLowerCase().includes(target.toLowerCase())),\n\n    not_icontains: (targets, value) => targets.every((target) => !value.toLowerCase().includes(target.toLowerCase())),\n\n    regex: (targets, value) => targets.some((target) => isMatchingRegex(value, target)),\n\n    not_regex: (targets, value) => targets.every((target) => !isMatchingRegex(value, target)),\n\n    exact: (targets, value) => targets.some((target) => value === target),\n\n    is_not: (targets, value) => targets.every((target) => value !== target),\n}\n\nfunction getRatingBucketForResponseValue(responseValue: number, scale: number) {\n    if (scale === 3) {\n        if (responseValue < 1 || responseValue > 3) {\n            throw new Error('The response must be in range 1-3')\n        }\n\n        return responseValue === 1 ? 'negative' : responseValue === 2 ? 'neutral' : 'positive'\n    } else if (scale === 5) {\n        if (responseValue < 1 || responseValue > 5) {\n            throw new Error('The response must be in range 1-5')\n        }\n\n        return responseValue <= 2 ? 'negative' : responseValue === 3 ? 'neutral' : 'positive'\n    } else if (scale === 7) {\n        if (responseValue < 1 || responseValue > 7) {\n            throw new Error('The response must be in range 1-7')\n        }\n\n        return responseValue <= 3 ? 'negative' : responseValue === 4 ? 'neutral' : 'positive'\n    } else if (scale === 10) {\n        if (responseValue < 0 || responseValue > 10) {\n            throw new Error('The response must be in range 0-10')\n        }\n\n        return responseValue <= 6 ? 'detractors' : responseValue <= 8 ? 'passives' : 'promoters'\n    }\n\n    throw new Error('The scale must be one of: 3, 5, 7, 10')\n}\n\nexport function getNextSurveyStep(\n    survey: Survey,\n    currentQuestionIndex: number,\n    response: string | string[] | number | null\n) {\n    const question = survey.questions[currentQuestionIndex]\n    const nextQuestionIndex = currentQuestionIndex + 1\n\n    if (!question.branching?.type) {\n        if (currentQuestionIndex === survey.questions.length - 1) {\n            return SurveyQuestionBranchingType.End\n        }\n\n        return nextQuestionIndex\n    }\n\n    if (question.branching.type === SurveyQuestionBranchingType.End) {\n        return SurveyQuestionBranchingType.End\n    } else if (question.branching.type === SurveyQuestionBranchingType.SpecificQuestion) {\n        if (Number.isInteger(question.branching.index)) {\n            return question.branching.index\n        }\n    } else if (question.branching.type === SurveyQuestionBranchingType.ResponseBased) {\n        // Single choice\n        if (question.type === SurveyQuestionType.SingleChoice) {\n            // :KLUDGE: for now, look up the choiceIndex based on the response\n            // TODO: once QuestionTypes.MultipleChoiceQuestion is refactored, pass the selected choiceIndex into this method\n            const selectedChoiceIndex = question.choices.indexOf(`${response}`)\n\n            if (question.branching?.responseValues?.hasOwnProperty(selectedChoiceIndex)) {\n                const nextStep = question.branching.responseValues[selectedChoiceIndex]\n\n                // Specific question\n                if (Number.isInteger(nextStep)) {\n                    return nextStep\n                }\n\n                if (nextStep === SurveyQuestionBranchingType.End) {\n                    return SurveyQuestionBranchingType.End\n                }\n\n                return nextQuestionIndex\n            }\n        } else if (question.type === SurveyQuestionType.Rating) {\n            if (typeof response !== 'number' || !Number.isInteger(response)) {\n                throw new Error('The response type must be an integer')\n            }\n\n            const ratingBucket = getRatingBucketForResponseValue(response, question.scale)\n\n            if (question.branching?.responseValues?.hasOwnProperty(ratingBucket)) {\n                const nextStep = question.branching.responseValues[ratingBucket]\n\n                // Specific question\n                if (Number.isInteger(nextStep)) {\n                    return nextStep\n                }\n\n                if (nextStep === SurveyQuestionBranchingType.End) {\n                    return SurveyQuestionBranchingType.End\n                }\n\n                return nextQuestionIndex\n            }\n        }\n\n        return nextQuestionIndex\n    }\n\n    logger.warn('Falling back to next question index due to unexpected branching type')\n    return nextQuestionIndex\n}\n\nfunction defaultMatchType(matchType?: SurveyMatchType): SurveyMatchType {\n    return matchType ?? 'icontains'\n}\n\n// use urlMatchType to validate url condition, fallback to contains for backwards compatibility\nexport function doesSurveyUrlMatch(survey: Survey): boolean {\n    if (!survey.conditions?.url) {\n        return true\n    }\n    // if we dont know the url, assume it is not a match\n    const href = window?.location?.href\n    if (!href) {\n        return false\n    }\n\n    const targets = [survey.conditions.url]\n    return surveyValidationMap[defaultMatchType(survey.conditions?.urlMatchType)](targets, href)\n}\n\nexport function doesSurveyDeviceTypesMatch(survey: Survey): boolean {\n    if (!survey.conditions?.deviceTypes) {\n        return true\n    }\n    // if we dont know the device type, assume it is not a match\n    if (!userAgent) {\n        return false\n    }\n\n    const deviceType = Info.deviceType(userAgent)\n    return surveyValidationMap[defaultMatchType(survey.conditions?.deviceTypesMatchType)](\n        survey.conditions.deviceTypes,\n        deviceType\n    )\n}\n\nexport class PostHogSurveys {\n    private _decideServerResponse?: boolean\n    public _surveyEventReceiver: SurveyEventReceiver | null\n    private _surveyManager: any\n\n    constructor(private readonly instance: PostHog) {\n        // we set this to undefined here because we need the persistence storage for this type\n        // but that's not initialized until loadIfEnabled is called.\n        this._surveyEventReceiver = null\n    }\n\n    onRemoteConfig(response: RemoteConfig) {\n        this._decideServerResponse = !!response['surveys']\n        logger.info(`decideServerResponse set to ${this._decideServerResponse}`)\n\n        this.loadIfEnabled()\n    }\n\n    reset(): void {\n        localStorage.removeItem('lastSeenSurveyDate')\n        const surveyKeys = getSurveySeenStorageKeys()\n        surveyKeys.forEach((key) => localStorage.removeItem(key))\n    }\n\n    loadIfEnabled() {\n        if (this._surveyManager) {\n            // Surveys already loaded.\n            return\n        }\n\n        const disableSurveys = this.instance.config.disable_surveys\n\n        if (disableSurveys) {\n            logger.info('Disabled. Not loading surveys.')\n            return\n        }\n\n        const phExtensions = assignableWindow?.__PosthogExtensions__\n\n        if (!phExtensions) {\n            logger.error('PostHog Extensions not found.')\n            return\n        }\n\n        const generateSurveys = phExtensions.generateSurveys\n\n        if (!this._decideServerResponse) {\n            logger.warn('Decide not loaded yet. Not loading surveys.')\n            return\n        }\n\n        if (this._surveyEventReceiver == null) {\n            this._surveyEventReceiver = new SurveyEventReceiver(this.instance)\n        }\n\n        if (!generateSurveys) {\n            const loadExternalDependency = phExtensions.loadExternalDependency\n\n            if (loadExternalDependency) {\n                loadExternalDependency(this.instance, 'surveys', (err) => {\n                    if (err) {\n                        logger.error('Could not load surveys script', err)\n                        return\n                    }\n\n                    this._surveyManager = phExtensions.generateSurveys?.(this.instance)\n                })\n            } else {\n                logger.error('PostHog loadExternalDependency extension not found. Cannot load remote config.')\n            }\n        } else {\n            this._surveyManager = generateSurveys(this.instance)\n        }\n    }\n\n    getSurveys(callback: SurveyCallback, forceReload = false) {\n        // In case we manage to load the surveys script, but config says not to load surveys\n        // then we shouldn't return survey data\n        if (this.instance.config.disable_surveys) {\n            logger.info('Disabled. Not loading surveys.')\n\n            return callback([])\n        }\n\n        if (this._surveyEventReceiver == null) {\n            this._surveyEventReceiver = new SurveyEventReceiver(this.instance)\n        }\n\n        const existingSurveys = this.instance.get_property(SURVEYS)\n\n        if (!existingSurveys || forceReload) {\n            this.instance._send_request({\n                url: this.instance.requestRouter.endpointFor(\n                    'api',\n                    `/api/surveys/?token=${this.instance.config.token}`\n                ),\n                method: 'GET',\n                callback: (response) => {\n                    const statusCode = response.statusCode\n                    if (statusCode !== 200 || !response.json) {\n                        logger.error(`Surveys API could not be loaded, status: ${statusCode}`)\n                        return callback([])\n                    }\n                    const surveys = response.json.surveys || []\n\n                    const eventOrActionBasedSurveys = surveys.filter(\n                        (survey: Survey) =>\n                            (survey.conditions?.events &&\n                                survey.conditions?.events?.values &&\n                                survey.conditions?.events?.values?.length > 0) ||\n                            (survey.conditions?.actions &&\n                                survey.conditions?.actions?.values &&\n                                survey.conditions?.actions?.values?.length > 0)\n                    )\n\n                    if (eventOrActionBasedSurveys.length > 0) {\n                        this._surveyEventReceiver?.register(eventOrActionBasedSurveys)\n                    }\n\n                    this.instance.persistence?.register({ [SURVEYS]: surveys })\n                    return callback(surveys)\n                },\n            })\n        } else {\n            logger.info('Surveys already loaded, using existing data.')\n            return callback(existingSurveys)\n        }\n    }\n\n    getActiveMatchingSurveys(callback: SurveyCallback, forceReload = false) {\n        this.getSurveys((surveys) => {\n            const activeSurveys = surveys.filter((survey) => {\n                return !!(survey.start_date && !survey.end_date)\n            })\n\n            const conditionMatchedSurveys = activeSurveys.filter((survey) => {\n                if (!survey.conditions) {\n                    return true\n                }\n\n                const urlCheck = doesSurveyUrlMatch(survey)\n                const selectorCheck = survey.conditions?.selector\n                    ? document?.querySelector(survey.conditions.selector)\n                    : true\n                const deviceTypeCheck = doesSurveyDeviceTypesMatch(survey)\n                return urlCheck && selectorCheck && deviceTypeCheck\n            })\n\n            // get all the surveys that have been activated so far with user actions.\n            const activatedSurveys: string[] | undefined = this._surveyEventReceiver?.getSurveys()\n            const targetingMatchedSurveys = conditionMatchedSurveys.filter((survey) => {\n                if (\n                    !survey.linked_flag_key &&\n                    !survey.targeting_flag_key &&\n                    !survey.internal_targeting_flag_key &&\n                    !survey.feature_flag_keys?.length\n                ) {\n                    return true\n                }\n                const linkedFlagCheck = survey.linked_flag_key\n                    ? this.instance.featureFlags.isFeatureEnabled(survey.linked_flag_key)\n                    : true\n                const targetingFlagCheck = survey.targeting_flag_key\n                    ? this.instance.featureFlags.isFeatureEnabled(survey.targeting_flag_key)\n                    : true\n\n                const hasEvents =\n                    survey.conditions?.events &&\n                    survey.conditions?.events?.values &&\n                    survey.conditions?.events?.values.length > 0\n\n                const hasActions =\n                    survey.conditions?.actions &&\n                    survey.conditions?.actions?.values &&\n                    survey.conditions?.actions?.values.length > 0\n                const eventBasedTargetingFlagCheck =\n                    hasEvents || hasActions ? activatedSurveys?.includes(survey.id) : true\n\n                const overrideInternalTargetingFlagCheck = this._canActivateRepeatedly(survey)\n                const internalTargetingFlagCheck =\n                    survey.internal_targeting_flag_key && !overrideInternalTargetingFlagCheck\n                        ? this.instance.featureFlags.isFeatureEnabled(survey.internal_targeting_flag_key)\n                        : true\n                const flagsCheck = this.checkFlags(survey)\n                return (\n                    linkedFlagCheck &&\n                    targetingFlagCheck &&\n                    internalTargetingFlagCheck &&\n                    eventBasedTargetingFlagCheck &&\n                    flagsCheck\n                )\n            })\n\n            return callback(targetingMatchedSurveys)\n        }, forceReload)\n    }\n\n    checkFlags(survey: Survey): boolean {\n        if (!survey.feature_flag_keys?.length) {\n            return true\n        }\n\n        return survey.feature_flag_keys.every(({ key, value }) => {\n            if (!key || !value) {\n                return true\n            }\n            return this.instance.featureFlags.isFeatureEnabled(value)\n        })\n    }\n    getNextSurveyStep = getNextSurveyStep\n\n    // this method is lazily loaded onto the window to avoid loading preact and other dependencies if surveys is not enabled\n    private _canActivateRepeatedly(survey: Survey) {\n        if (isNullish(assignableWindow.__PosthogExtensions__?.canActivateRepeatedly)) {\n            logger.warn('init was not called')\n            return false // TODO does it make sense to have a default here?\n        }\n        return assignableWindow.__PosthogExtensions__.canActivateRepeatedly(survey)\n    }\n\n    canRenderSurvey(surveyId: string) {\n        if (isNullish(this._surveyManager)) {\n            logger.warn('init was not called')\n            return\n        }\n        this.getSurveys((surveys) => {\n            const survey = surveys.filter((x) => x.id === surveyId)[0]\n            this._surveyManager.canRenderSurvey(survey)\n        })\n    }\n\n    renderSurvey(surveyId: string, selector: string) {\n        if (isNullish(this._surveyManager)) {\n            logger.warn('init was not called')\n            return\n        }\n        this.getSurveys((surveys) => {\n            const survey = surveys.filter((x) => x.id === surveyId)[0]\n            this._surveyManager.renderSurvey(survey, document?.querySelector(selector))\n        })\n    }\n}\n", "import { CAPTURE_RATE_LIMIT } from './constants'\nimport type { PostHog } from './posthog-core'\nimport { RequestResponse } from './types'\nimport { createLogger } from './utils/logger'\n\nconst logger = createLogger('[RateLimiter]')\n\nconst ONE_MINUTE_IN_MILLISECONDS = 60 * 1000\nconst RATE_LIMIT_EVENT = '$$client_ingestion_warning'\n\ninterface CaptureResponse {\n    quota_limited?: string[]\n}\n\nexport class RateLimiter {\n    instance: PostHog\n    serverLimits: Record<string, number> = {}\n\n    captureEventsPerSecond: number\n    captureEventsBurstLimit: number\n    lastEventRateLimited = false\n\n    constructor(instance: PostHog) {\n        this.instance = instance\n\n        this.captureEventsPerSecond = instance.config.rate_limiting?.events_per_second || 10\n        this.captureEventsBurstLimit = Math.max(\n            instance.config.rate_limiting?.events_burst_limit || this.captureEventsPerSecond * 10,\n            this.captureEventsPerSecond\n        )\n\n        this.lastEventRateLimited = this.clientRateLimitContext(true).isRateLimited\n    }\n\n    public clientRateLimitContext(checkOnly = false): {\n        isRateLimited: boolean\n        remainingTokens: number\n    } {\n        // This is primarily to prevent runaway loops from flooding capture with millions of events for a single user.\n        // It's as much for our protection as theirs.\n        const now = new Date().getTime()\n        const bucket = this.instance.persistence?.get_property(CAPTURE_RATE_LIMIT) ?? {\n            tokens: this.captureEventsBurstLimit,\n            last: now,\n        }\n\n        bucket.tokens += ((now - bucket.last) / 1000) * this.captureEventsPerSecond\n        bucket.last = now\n\n        if (bucket.tokens > this.captureEventsBurstLimit) {\n            bucket.tokens = this.captureEventsBurstLimit\n        }\n\n        const isRateLimited = bucket.tokens < 1\n\n        if (!isRateLimited && !checkOnly) {\n            bucket.tokens = Math.max(0, bucket.tokens - 1)\n        }\n\n        if (isRateLimited && !this.lastEventRateLimited && !checkOnly) {\n            this.instance.capture(\n                RATE_LIMIT_EVENT,\n                {\n                    $$client_ingestion_warning_message: `posthog-js client rate limited. Config is set to ${this.captureEventsPerSecond} events per second and ${this.captureEventsBurstLimit} events burst limit.`,\n                },\n                {\n                    skip_client_rate_limiting: true,\n                }\n            )\n        }\n\n        this.lastEventRateLimited = isRateLimited\n        this.instance.persistence?.set_property(CAPTURE_RATE_LIMIT, bucket)\n\n        return {\n            isRateLimited,\n            remainingTokens: bucket.tokens,\n        }\n    }\n\n    public isServerRateLimited(batchKey: string | undefined): boolean {\n        const retryAfter = this.serverLimits[batchKey || 'events'] || false\n\n        if (retryAfter === false) {\n            return false\n        }\n        return new Date().getTime() < retryAfter\n    }\n\n    public checkForLimiting = (httpResponse: RequestResponse): void => {\n        const text = httpResponse.text\n\n        if (!text || !text.length) {\n            return\n        }\n\n        try {\n            const response: CaptureResponse = JSON.parse(text)\n            const quotaLimitedProducts = response.quota_limited || []\n            quotaLimitedProducts.forEach((batchKey) => {\n                logger.info(`${batchKey || 'events'} is quota limited.`)\n                this.serverLimits[batchKey] = new Date().getTime() + ONE_MINUTE_IN_MILLISECONDS\n            })\n        } catch (e: any) {\n            logger.warn(`could not rate limit - continuing. Error: \"${e?.message}\"`, { text })\n            return\n        }\n    }\n}\n", "/* Client-side session parameters. These are primarily used by web analytics,\n * which relies on these for session analytics without the plugin server being\n * available for the person level set-once properties. Obviously not consistent\n * between client-side events and server-side events but this is acceptable\n * as web analytics only uses client-side.\n *\n * These have the same lifespan as a session_id\n */\nimport { location } from './utils/globals'\nimport { Info } from './utils/event-utils'\nimport type { SessionIdManager } from './sessionid'\nimport type { PostHogPersistence } from './posthog-persistence'\nimport { CLIENT_SESSION_PROPS } from './constants'\nimport type { PostHog } from './posthog-core'\n\ninterface SessionSourceProps {\n    initialPathName: string\n    referringDomain: string // Is actually host, but named domain for internal consistency. Should contain a port if there is one.\n    utm_medium?: string\n    utm_source?: string\n    utm_campaign?: string\n    utm_content?: string\n    utm_term?: string\n}\n\ninterface StoredSessionSourceProps {\n    sessionId: string\n    props: SessionSourceProps\n}\n\nconst generateSessionSourceParams = (instance?: PostHog): SessionSourceProps => {\n    const config = instance?.config\n    return {\n        initialPathName: location?.pathname || '',\n        referringDomain: Info.referringDomain(),\n        ...Info.campaignParams({\n            customTrackedParams: config?.custom_campaign_params,\n            maskPersonalDataProperties: config?.mask_personal_data_properties,\n            customPersonalDataProperties: config?.custom_personal_data_properties,\n        }),\n    }\n}\n\nexport class SessionPropsManager {\n    private readonly instance: PostHog\n    private readonly _sessionIdManager: SessionIdManager\n    private readonly _persistence: PostHogPersistence\n    private readonly _sessionSourceParamGenerator: (instance?: PostHog) => SessionSourceProps\n\n    constructor(\n        instance: PostHog,\n        sessionIdManager: SessionIdManager,\n        persistence: PostHogPersistence,\n        sessionSourceParamGenerator?: (instance?: PostHog) => SessionSourceProps\n    ) {\n        this.instance = instance\n        this._sessionIdManager = sessionIdManager\n        this._persistence = persistence\n        this._sessionSourceParamGenerator = sessionSourceParamGenerator || generateSessionSourceParams\n\n        this._sessionIdManager.onSessionId(this._onSessionIdCallback)\n    }\n\n    _getStoredProps(): StoredSessionSourceProps | undefined {\n        return this._persistence.props[CLIENT_SESSION_PROPS]\n    }\n\n    _onSessionIdCallback = (sessionId: string) => {\n        const stored = this._getStoredProps()\n        if (stored && stored.sessionId === sessionId) {\n            return\n        }\n\n        const newProps: StoredSessionSourceProps = {\n            sessionId,\n            props: this._sessionSourceParamGenerator(this.instance),\n        }\n        this._persistence.register({ [CLIENT_SESSION_PROPS]: newProps })\n    }\n\n    getSessionProps() {\n        const p = this._getStoredProps()?.props\n        if (!p) {\n            return {}\n        }\n\n        return {\n            $client_session_initial_referring_host: p.referringDomain,\n            $client_session_initial_pathname: p.initialPathName,\n            $client_session_initial_utm_source: p.utm_source,\n            $client_session_initial_utm_campaign: p.utm_campaign,\n            $client_session_initial_utm_medium: p.utm_medium,\n            $client_session_initial_utm_content: p.utm_content,\n            $client_session_initial_utm_term: p.utm_term,\n        }\n    }\n}\n", "export const DEFAULT_BLOCKED_UA_STRS = [\n    'ahrefsbot',\n    'ahrefssiteaudit',\n    'applebot',\n    'baiduspider',\n    'better uptime bot',\n    'bingbot',\n    'bingpreview',\n    'bot.htm',\n    'bot.php',\n    'crawler',\n    'deepscan',\n    'duckduckbot',\n    'facebookexternal',\n    'facebookcatalog',\n    'http://yandex.com/bots',\n    'hubspot',\n    'ia_archiver',\n    'linkedinbot',\n    'mj12bot',\n    'msnbot',\n    'nessus',\n    'petalbot',\n    'pinterest',\n    'prerender',\n    'rogerbot',\n    'screaming frog',\n    'semrushbot',\n    'sitebulb',\n    'slurp',\n    'turnitin',\n    'twitterbot',\n    'vercelbot',\n    'yahoo! slurp',\n    'yandexbot',\n\n    // OpenAI Crawlers\n    'gptbot',\n    'oai-searchbot',\n    'chatgpt-user',\n\n    // headless browsers\n    'headlesschrome',\n    'cypress',\n    // we don't block electron here, as many customers use posthog-js in electron apps\n\n    // a whole bunch of goog-specific crawlers\n    // https://developers.google.com/search/docs/advanced/crawling/overview-google-crawlers\n    'Google-HotelAdsVerifier',\n    'adsbot-google',\n    'apis-google',\n    'duplexweb-google',\n    'feedfetcher-google',\n    'google favicon',\n    'google web preview',\n    'google-read-aloud',\n    'googlebot',\n    'googleweblight',\n    'mediapartners-google',\n    'storebot-google',\n    'Bytespider;',\n]\n\n/**\n * Block various web spiders from executing our JS and sending false capturing data\n */\nexport const isBlockedUA = function (ua: string, customBlockedUserAgents: string[]): boolean {\n    if (!ua) {\n        return false\n    }\n\n    const uaLower = ua.toLowerCase()\n    return DEFAULT_BLOCKED_UA_STRS.concat(customBlockedUserAgents || []).some((blockedUA) => {\n        const blockedUaLower = blockedUA.toLowerCase()\n\n        // can't use includes because IE 11 :/\n        return uaLower.indexOf(blockedUaLower) !== -1\n    })\n}\n\n// There's more in the type, but this is all we use. It's currently experimental, see\n// https://developer.mozilla.org/en-US/docs/Web/API/Navigator/userAgentData\n// if you're reading this in the future, when it's no longer experimental, please remove this type and use an official one.\n// Be extremely defensive here to ensure backwards and *forwards* compatibility, and remove this defensiveness in the\n// future when it is safe to do so.\nexport interface NavigatorUAData {\n    brands?: {\n        brand: string\n        version: string\n    }[]\n}\ndeclare global {\n    interface Navigator {\n        userAgentData?: NavigatorUAData\n    }\n}\n\nexport const isLikelyBot = function (navigator: Navigator | undefined, customBlockedUserAgents: string[]): boolean {\n    if (!navigator) {\n        return false\n    }\n    const ua = navigator.userAgent\n    if (ua) {\n        if (isBlockedUA(ua, customBlockedUserAgents)) {\n            return true\n        }\n    }\n    try {\n        // eslint-disable-next-line compat/compat\n        const uaData = navigator?.userAgentData as NavigatorUAData\n        if (uaData?.brands && uaData.brands.some((brandObj) => isBlockedUA(brandObj?.brand, customBlockedUserAgents))) {\n            return true\n        }\n    } catch {\n        // ignore the error, we were using experimental browser features\n    }\n\n    return !!navigator.webdriver\n\n    // There's some more enhancements we could make in this area, e.g. it's possible to check if Chrome dev tools are\n    // open, which will detect some bots that are trying to mask themselves and might get past the checks above.\n    // However, this would give false positives for actual humans who have dev tools open.\n\n    // We could also use the data in navigator.userAgentData.getHighEntropyValues() to detect bots, but we should wait\n    // until this stops being experimental. The MDN docs imply that this might eventually require user permission.\n    // See https://developer.mozilla.org/en-US/docs/Web/API/NavigatorUAData/getHighEntropyValues\n    // It would be very bad if posthog-js caused a permission prompt to appear on every page load.\n}\n", "// Naive rage click implementation: If mouse has not moved further than RAGE_CLICK_THRESHOLD_PX\n// over RAGE_CLICK_CLICK_COUNT clicks with max RAGE_CLICK_TIMEOUT_MS between clicks, it's\n// counted as a rage click\n\nconst RAGE_CLICK_THRESHOLD_PX = 30\nconst RAGE_CLICK_TIMEOUT_MS = 1000\nconst RAGE_CLICK_CLICK_COUNT = 3\n\nexport default class RageClick {\n    clicks: { x: number; y: number; timestamp: number }[]\n\n    constructor() {\n        this.clicks = []\n    }\n\n    isRageClick(x: number, y: number, timestamp: number): boolean {\n        const lastClick = this.clicks[this.clicks.length - 1]\n        if (\n            lastClick &&\n            Math.abs(x - lastClick.x) + Math.abs(y - lastClick.y) < RAGE_CLICK_THRESHOLD_PX &&\n            timestamp - lastClick.timestamp < RAGE_CLICK_TIMEOUT_MS\n        ) {\n            this.clicks.push({ x, y, timestamp })\n\n            if (this.clicks.length === RAGE_CLICK_CLICK_COUNT) {\n                return true\n            }\n        } else {\n            this.clicks = [{ x, y, timestamp }]\n        }\n\n        return false\n    }\n}\n", "import { PostHog } from '../posthog-core'\nimport { DEAD_CLICKS_ENABLED_SERVER_SIDE } from '../constants'\nimport { isBoolean, isObject } from '../utils/type-utils'\nimport { assignableWindow, document, LazyLoadedDeadClicksAutocaptureInterface } from '../utils/globals'\nimport { createLogger } from '../utils/logger'\nimport { DeadClicksAutoCaptureConfig, RemoteConfig } from '../types'\n\nconst logger = createLogger('[Dead Clicks]')\n\nexport const isDeadClicksEnabledForHeatmaps = () => {\n    return true\n}\nexport const isDeadClicksEnabledForAutocapture = (instance: DeadClicksAutocapture) => {\n    const isRemoteEnabled = !!instance.instance.persistence?.get_property(DEAD_CLICKS_ENABLED_SERVER_SIDE)\n    const clientConfig = instance.instance.config.capture_dead_clicks\n    return isBoolean(clientConfig) ? clientConfig : isRemoteEnabled\n}\n\nexport class DeadClicksAutocapture {\n    get lazyLoadedDeadClicksAutocapture(): LazyLoadedDeadClicksAutocaptureInterface | undefined {\n        return this._lazyLoadedDeadClicksAutocapture\n    }\n\n    private _lazyLoadedDeadClicksAutocapture: LazyLoadedDeadClicksAutocaptureInterface | undefined\n\n    constructor(\n        readonly instance: PostHog,\n        readonly isEnabled: (dca: DeadClicksAutocapture) => boolean,\n        readonly onCapture?: DeadClicksAutoCaptureConfig['__onCapture']\n    ) {\n        this.startIfEnabled()\n    }\n\n    public onRemoteConfig(response: RemoteConfig) {\n        if (this.instance.persistence) {\n            this.instance.persistence.register({\n                [DEAD_CLICKS_ENABLED_SERVER_SIDE]: response?.captureDeadClicks,\n            })\n        }\n        this.startIfEnabled()\n    }\n\n    public startIfEnabled() {\n        if (this.isEnabled(this)) {\n            this.loadScript(() => {\n                this.start()\n            })\n        }\n    }\n\n    private loadScript(cb: () => void): void {\n        if (assignableWindow.__PosthogExtensions__?.initDeadClicksAutocapture) {\n            // already loaded\n            cb()\n        }\n        assignableWindow.__PosthogExtensions__?.loadExternalDependency?.(\n            this.instance,\n            'dead-clicks-autocapture',\n            (err) => {\n                if (err) {\n                    logger.error('failed to load script', err)\n                    return\n                }\n                cb()\n            }\n        )\n    }\n\n    private start() {\n        if (!document) {\n            logger.error('`document` not found. Cannot start.')\n            return\n        }\n\n        if (\n            !this._lazyLoadedDeadClicksAutocapture &&\n            assignableWindow.__PosthogExtensions__?.initDeadClicksAutocapture\n        ) {\n            const config = isObject(this.instance.config.capture_dead_clicks)\n                ? this.instance.config.capture_dead_clicks\n                : {}\n            config.__onCapture = this.onCapture\n\n            this._lazyLoadedDeadClicksAutocapture = assignableWindow.__PosthogExtensions__.initDeadClicksAutocapture(\n                this.instance,\n                config\n            )\n            this._lazyLoadedDeadClicksAutocapture.start(document)\n            logger.info(`starting...`)\n        }\n    }\n\n    stop() {\n        if (this._lazyLoadedDeadClicksAutocapture) {\n            this._lazyLoadedDeadClicksAutocapture.stop()\n            this._lazyLoadedDeadClicksAutocapture = undefined\n            logger.info(`stopping...`)\n        }\n    }\n}\n", "import RageClick from './extensions/rageclick'\nimport { DeadClickCandidate, Properties, RemoteConfig } from './types'\nimport { PostHog } from './posthog-core'\n\nimport { document, window } from './utils/globals'\nimport { getEventTarget, getParentElement } from './autocapture-utils'\nimport { HEATMAPS_ENABLED_SERVER_SIDE } from './constants'\nimport { isEmptyObject, isNumber, isObject, isUndefined } from './utils/type-utils'\nimport { createLogger } from './utils/logger'\nimport { isElementInToolbar, isElementNode, isTag } from './utils/element-utils'\nimport { DeadClicksAutocapture, isDeadClicksEnabledForHeatmaps } from './extensions/dead-clicks-autocapture'\nimport { includes } from './utils/string-utils'\nimport { addEventListener } from './utils'\n\nconst DEFAULT_FLUSH_INTERVAL = 5000\n\nconst logger = createLogger('[Heatmaps]')\n\ntype HeatmapEventBuffer =\n    | {\n          [key: string]: Properties[]\n      }\n    | undefined\n\nfunction elementOrParentPositionMatches(el: Element | null, matches: string[], breakOnElement?: Element): boolean {\n    let curEl: Element | null | false = el\n\n    while (curEl && isElementNode(curEl) && !isTag(curEl, 'body')) {\n        if (curEl === breakOnElement) {\n            return false\n        }\n\n        if (includes(matches, window?.getComputedStyle(curEl).position)) {\n            return true\n        }\n\n        curEl = getParentElement(curEl)\n    }\n\n    return false\n}\n\nfunction isValidMouseEvent(e: unknown): e is MouseEvent {\n    return isObject(e) && 'clientX' in e && 'clientY' in e && isNumber(e.clientX) && isNumber(e.clientY)\n}\n\nexport class Heatmaps {\n    instance: PostHog\n    rageclicks = new RageClick()\n    _enabledServerSide: boolean = false\n    _initialized = false\n    _mouseMoveTimeout: ReturnType<typeof setTimeout> | undefined\n\n    // TODO: Periodically flush this if no other event has taken care of it\n    private buffer: HeatmapEventBuffer\n    private _flushInterval: ReturnType<typeof setInterval> | null = null\n    private deadClicksCapture: DeadClicksAutocapture | undefined\n\n    constructor(instance: PostHog) {\n        this.instance = instance\n        this._enabledServerSide = !!this.instance.persistence?.props[HEATMAPS_ENABLED_SERVER_SIDE]\n\n        addEventListener(window, 'beforeunload', this.flush)\n    }\n\n    public get flushIntervalMilliseconds(): number {\n        let flushInterval = DEFAULT_FLUSH_INTERVAL\n        if (\n            isObject(this.instance.config.capture_heatmaps) &&\n            this.instance.config.capture_heatmaps.flush_interval_milliseconds\n        ) {\n            flushInterval = this.instance.config.capture_heatmaps.flush_interval_milliseconds\n        }\n        return flushInterval\n    }\n\n    public get isEnabled(): boolean {\n        if (!isUndefined(this.instance.config.capture_heatmaps)) {\n            return this.instance.config.capture_heatmaps !== false\n        }\n        if (!isUndefined(this.instance.config.enable_heatmaps)) {\n            return this.instance.config.enable_heatmaps\n        }\n        return this._enabledServerSide\n    }\n\n    public startIfEnabled(): void {\n        if (this.isEnabled) {\n            // nested if here since we only want to run the else\n            // if this.enabled === false\n            // not if this method is called more than once\n            if (this._initialized) {\n                return\n            }\n            logger.info('starting...')\n            this._setupListeners()\n            this._flushInterval = setInterval(this.flush.bind(this), this.flushIntervalMilliseconds)\n        } else {\n            clearInterval(this._flushInterval ?? undefined)\n            this.deadClicksCapture?.stop()\n            this.getAndClearBuffer()\n        }\n    }\n\n    public onRemoteConfig(response: RemoteConfig) {\n        const optIn = !!response['heatmaps']\n\n        if (this.instance.persistence) {\n            this.instance.persistence.register({\n                [HEATMAPS_ENABLED_SERVER_SIDE]: optIn,\n            })\n        }\n        // store this in-memory in case persistence is disabled\n        this._enabledServerSide = optIn\n        this.startIfEnabled()\n    }\n\n    public getAndClearBuffer(): HeatmapEventBuffer {\n        const buffer = this.buffer\n        this.buffer = undefined\n        return buffer\n    }\n\n    private _onDeadClick(click: DeadClickCandidate): void {\n        this._onClick(click.originalEvent, 'deadclick')\n    }\n\n    private _setupListeners(): void {\n        if (!window || !document) {\n            return\n        }\n\n        addEventListener(document, 'click', (e) => this._onClick((e || window?.event) as MouseEvent), { capture: true })\n        addEventListener(document, 'mousemove', (e) => this._onMouseMove((e || window?.event) as MouseEvent), {\n            capture: true,\n        })\n\n        this.deadClicksCapture = new DeadClicksAutocapture(\n            this.instance,\n            isDeadClicksEnabledForHeatmaps,\n            this._onDeadClick.bind(this)\n        )\n        this.deadClicksCapture.startIfEnabled()\n\n        this._initialized = true\n    }\n\n    private _getProperties(e: MouseEvent, type: string): Properties {\n        // We need to know if the target element is fixed or not\n        // If fixed then we won't account for scrolling\n        // If not then we will account for scrolling\n\n        const scrollY = this.instance.scrollManager.scrollY()\n        const scrollX = this.instance.scrollManager.scrollX()\n        const scrollElement = this.instance.scrollManager.scrollElement()\n\n        const isFixedOrSticky = elementOrParentPositionMatches(getEventTarget(e), ['fixed', 'sticky'], scrollElement)\n\n        return {\n            x: e.clientX + (isFixedOrSticky ? 0 : scrollX),\n            y: e.clientY + (isFixedOrSticky ? 0 : scrollY),\n            target_fixed: isFixedOrSticky,\n            type,\n        }\n    }\n\n    private _onClick(e: MouseEvent, type: string = 'click'): void {\n        if (isElementInToolbar(e.target) || !isValidMouseEvent(e)) {\n            return\n        }\n\n        const properties = this._getProperties(e, type)\n\n        if (this.rageclicks?.isRageClick(e.clientX, e.clientY, new Date().getTime())) {\n            this._capture({\n                ...properties,\n                type: 'rageclick',\n            })\n        }\n\n        this._capture(properties)\n    }\n\n    private _onMouseMove(e: Event): void {\n        if (isElementInToolbar(e.target) || !isValidMouseEvent(e)) {\n            return\n        }\n\n        clearTimeout(this._mouseMoveTimeout)\n\n        this._mouseMoveTimeout = setTimeout(() => {\n            this._capture(this._getProperties(e as MouseEvent, 'mousemove'))\n        }, 500)\n    }\n\n    private _capture(properties: Properties): void {\n        if (!window) {\n            return\n        }\n\n        // TODO we should be able to mask this\n        const url = window.location.href\n\n        this.buffer = this.buffer || {}\n\n        if (!this.buffer[url]) {\n            this.buffer[url] = []\n        }\n\n        this.buffer[url].push(properties)\n    }\n\n    private flush(): void {\n        if (!this.buffer || isEmptyObject(this.buffer)) {\n            return\n        }\n\n        this.instance.capture('$$heatmap', {\n            $heatmap_data: this.getAndClearBuffer(),\n        })\n    }\n}\n", "import { window } from './utils/globals'\nimport { PostHog } from './posthog-core'\nimport { isArray } from './utils/type-utils'\nimport { addEventListener } from './utils'\n\nexport interface ScrollContext {\n    // scroll is how far down the page the user has scrolled,\n    // content is how far down the page the user can view content\n    // (e.g. if the page is 1000 tall, but the user's screen is only 500 tall,\n    // and they don't scroll at all, then scroll is 0 and content is 500)\n    maxScrollHeight?: number\n    maxScrollY?: number\n    lastScrollY?: number\n    maxContentHeight?: number\n    maxContentY?: number\n    lastContentY?: number\n}\n\n// This class is responsible for tracking scroll events and maintaining the scroll context\nexport class ScrollManager {\n    private context: ScrollContext | undefined\n\n    constructor(private instance: PostHog) {}\n\n    getContext(): ScrollContext | undefined {\n        return this.context\n    }\n\n    resetContext(): ScrollContext | undefined {\n        const ctx = this.context\n\n        // update the scroll properties for the new page, but wait until the next tick\n        // of the event loop\n        setTimeout(this._updateScrollData, 0)\n\n        return ctx\n    }\n\n    private _updateScrollData = () => {\n        if (!this.context) {\n            this.context = {}\n        }\n\n        const el = this.scrollElement()\n\n        const scrollY = this.scrollY()\n        const scrollHeight = el ? Math.max(0, el.scrollHeight - el.clientHeight) : 0\n        const contentY = scrollY + (el?.clientHeight || 0)\n        const contentHeight = el?.scrollHeight || 0\n\n        this.context.lastScrollY = Math.ceil(scrollY)\n        this.context.maxScrollY = Math.max(scrollY, this.context.maxScrollY ?? 0)\n        this.context.maxScrollHeight = Math.max(scrollHeight, this.context.maxScrollHeight ?? 0)\n\n        this.context.lastContentY = contentY\n        this.context.maxContentY = Math.max(contentY, this.context.maxContentY ?? 0)\n        this.context.maxContentHeight = Math.max(contentHeight, this.context.maxContentHeight ?? 0)\n    }\n\n    // `capture: true` is required to get scroll events for other scrollable elements\n    // on the page, not just the window\n    // see https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#usecapture\n    startMeasuringScrollPosition() {\n        addEventListener(window, 'scroll', this._updateScrollData, { capture: true })\n        addEventListener(window, 'scrollend', this._updateScrollData, { capture: true })\n        addEventListener(window, 'resize', this._updateScrollData)\n    }\n\n    public scrollElement(): Element | undefined {\n        if (this.instance.config.scroll_root_selector) {\n            const selectors = isArray(this.instance.config.scroll_root_selector)\n                ? this.instance.config.scroll_root_selector\n                : [this.instance.config.scroll_root_selector]\n            for (const selector of selectors) {\n                const element = window?.document.querySelector(selector)\n                if (element) {\n                    return element\n                }\n            }\n            return undefined\n        } else {\n            return window?.document.documentElement\n        }\n    }\n\n    public scrollY(): number {\n        if (this.instance.config.scroll_root_selector) {\n            const element = this.scrollElement()\n            return (element && element.scrollTop) || 0\n        } else {\n            return window ? window.scrollY || window.pageYOffset || window.document.documentElement.scrollTop || 0 : 0\n        }\n    }\n\n    public scrollX(): number {\n        if (this.instance.config.scroll_root_selector) {\n            const element = this.scrollElement()\n            return (element && element.scrollLeft) || 0\n        } else {\n            return window ? window.scrollX || window.pageXOffset || window.document.documentElement.scrollLeft || 0 : 0\n        }\n    }\n}\n", "import { addEventListener, each, extend } from './utils'\nimport {\n    autocaptureCompatibleElements,\n    getClassNames,\n    getDirectAndNestedSpanText,\n    getElementsChainString,\n    getEventTarget,\n    getSafeText,\n    isAngularStyleAttr,\n    isSensitiveElement,\n    makeSafeText,\n    shouldCaptureDomEvent,\n    shouldCaptureElement,\n    shouldCaptureValue,\n    splitClassString,\n} from './autocapture-utils'\nimport RageClick from './extensions/rageclick'\nimport { AutocaptureConfig, COPY_AUTOCAPTURE_EVENT, EventName, Properties, RemoteConfig } from './types'\nimport { PostHog } from './posthog-core'\nimport { AUTOCAPTURE_DISABLED_SERVER_SIDE } from './constants'\n\nimport { isBoolean, isFunction, isNull, isObject } from './utils/type-utils'\nimport { createLogger } from './utils/logger'\nimport { document, window } from './utils/globals'\nimport { convertToURL } from './utils/request-utils'\nimport { isDocumentFragment, isElementNode, isTag, isTextNode } from './utils/element-utils'\nimport { includes } from './utils/string-utils'\n\nconst logger = createLogger('[AutoCapture]')\n\nfunction limitText(length: number, text: string): string {\n    if (text.length > length) {\n        return text.slice(0, length) + '...'\n    }\n    return text\n}\n\nexport function getAugmentPropertiesFromElement(elem: Element): Properties {\n    const shouldCaptureEl = shouldCaptureElement(elem)\n    if (!shouldCaptureEl) {\n        return {}\n    }\n\n    const props: Properties = {}\n\n    each(elem.attributes, function (attr: Attr) {\n        if (attr.name && attr.name.indexOf('data-ph-capture-attribute') === 0) {\n            const propertyKey = attr.name.replace('data-ph-capture-attribute-', '')\n            const propertyValue = attr.value\n            if (propertyKey && propertyValue && shouldCaptureValue(propertyValue)) {\n                props[propertyKey] = propertyValue\n            }\n        }\n    })\n\n    return props\n}\n\nexport function previousElementSibling(el: Element): Element | null {\n    if (el.previousElementSibling) {\n        return el.previousElementSibling\n    }\n    let _el: Element | null = el\n    do {\n        _el = _el.previousSibling as Element | null // resolves to ChildNode->Node, which is Element's parent class\n    } while (_el && !isElementNode(_el))\n    return _el\n}\n\nexport function getDefaultProperties(eventType: string): Properties {\n    return {\n        $event_type: eventType,\n        $ce_version: 1,\n    }\n}\n\nexport function getPropertiesFromElement(\n    elem: Element,\n    maskAllAttributes: boolean,\n    maskText: boolean,\n    elementAttributeIgnorelist: string[] | undefined\n): Properties {\n    const tag_name = elem.tagName.toLowerCase()\n    const props: Properties = {\n        tag_name: tag_name,\n    }\n    if (autocaptureCompatibleElements.indexOf(tag_name) > -1 && !maskText) {\n        if (tag_name.toLowerCase() === 'a' || tag_name.toLowerCase() === 'button') {\n            props['$el_text'] = limitText(1024, getDirectAndNestedSpanText(elem))\n        } else {\n            props['$el_text'] = limitText(1024, getSafeText(elem))\n        }\n    }\n\n    const classes = getClassNames(elem)\n    if (classes.length > 0)\n        props['classes'] = classes.filter(function (c) {\n            return c !== ''\n        })\n\n    // capture the deny list here because this not-a-class class makes it tricky to use this.config in the function below\n    each(elem.attributes, function (attr: Attr) {\n        // Only capture attributes we know are safe\n        if (isSensitiveElement(elem) && ['name', 'id', 'class', 'aria-label'].indexOf(attr.name) === -1) return\n\n        if (elementAttributeIgnorelist?.includes(attr.name)) return\n\n        if (!maskAllAttributes && shouldCaptureValue(attr.value) && !isAngularStyleAttr(attr.name)) {\n            let value = attr.value\n            if (attr.name === 'class') {\n                // html attributes can _technically_ contain linebreaks,\n                // but we're very intolerant of them in the class string,\n                // so we strip them.\n                value = splitClassString(value).join(' ')\n            }\n            props['attr__' + attr.name] = limitText(1024, value)\n        }\n    })\n\n    let nthChild = 1\n    let nthOfType = 1\n    let currentElem: Element | null = elem\n    while ((currentElem = previousElementSibling(currentElem))) {\n        // eslint-disable-line no-cond-assign\n        nthChild++\n        if (currentElem.tagName === elem.tagName) {\n            nthOfType++\n        }\n    }\n    props['nth_child'] = nthChild\n    props['nth_of_type'] = nthOfType\n\n    return props\n}\n\nexport function autocapturePropertiesForElement(\n    target: Element,\n    {\n        e,\n        maskAllElementAttributes,\n        maskAllText,\n        elementAttributeIgnoreList,\n        elementsChainAsString,\n    }: {\n        e: Event\n        maskAllElementAttributes: boolean\n        maskAllText: boolean\n        elementAttributeIgnoreList?: string[] | undefined\n        elementsChainAsString: boolean\n    }\n): { props: Properties; explicitNoCapture?: boolean } {\n    const targetElementList = [target]\n    let curEl = target\n    while (curEl.parentNode && !isTag(curEl, 'body')) {\n        if (isDocumentFragment(curEl.parentNode)) {\n            targetElementList.push((curEl.parentNode as any).host)\n            curEl = (curEl.parentNode as any).host\n            continue\n        }\n        targetElementList.push(curEl.parentNode as Element)\n        curEl = curEl.parentNode as Element\n    }\n\n    const elementsJson: Properties[] = []\n    const autocaptureAugmentProperties: Properties = {}\n    let href: string | false = false\n    let explicitNoCapture = false\n\n    each(targetElementList, (el) => {\n        const shouldCaptureEl = shouldCaptureElement(el)\n\n        // if the element or a parent element is an anchor tag\n        // include the href as a property\n        if (el.tagName.toLowerCase() === 'a') {\n            href = el.getAttribute('href')\n            href = shouldCaptureEl && href && shouldCaptureValue(href) && href\n        }\n\n        // allow users to programmatically prevent capturing of elements by adding class 'ph-no-capture'\n        const classes = getClassNames(el)\n        if (includes(classes, 'ph-no-capture')) {\n            explicitNoCapture = true\n        }\n\n        elementsJson.push(\n            getPropertiesFromElement(el, maskAllElementAttributes, maskAllText, elementAttributeIgnoreList)\n        )\n\n        const augmentProperties = getAugmentPropertiesFromElement(el)\n        extend(autocaptureAugmentProperties, augmentProperties)\n    })\n\n    if (explicitNoCapture) {\n        return { props: {}, explicitNoCapture }\n    }\n\n    if (!maskAllText) {\n        // if the element is a button or anchor tag get the span text from any\n        // children and include it as/with the text property on the parent element\n        if (target.tagName.toLowerCase() === 'a' || target.tagName.toLowerCase() === 'button') {\n            elementsJson[0]['$el_text'] = getDirectAndNestedSpanText(target)\n        } else {\n            elementsJson[0]['$el_text'] = getSafeText(target)\n        }\n    }\n\n    let externalHref: string | undefined\n    if (href) {\n        elementsJson[0]['attr__href'] = href\n        const hrefHost = convertToURL(href)?.host\n        const locationHost = window?.location?.host\n        if (hrefHost && locationHost && hrefHost !== locationHost) {\n            externalHref = href\n        }\n    }\n\n    const props = extend(\n        getDefaultProperties(e.type),\n        // Sending \"$elements\" is deprecated. Only one client on US cloud uses this.\n        !elementsChainAsString ? { $elements: elementsJson } : {},\n        // Always send $elements_chain, as it's needed downstream in site app filtering\n        { $elements_chain: getElementsChainString(elementsJson) },\n        elementsJson[0]?.['$el_text'] ? { $el_text: elementsJson[0]?.['$el_text'] } : {},\n        externalHref && e.type === 'click' ? { $external_click_url: externalHref } : {},\n        autocaptureAugmentProperties\n    )\n\n    return { props }\n}\n\nexport class Autocapture {\n    instance: PostHog\n    _initialized: boolean = false\n    _isDisabledServerSide: boolean | null = null\n    _elementSelectors: Set<string> | null\n    rageclicks = new RageClick()\n    _elementsChainAsString = false\n\n    constructor(instance: PostHog) {\n        this.instance = instance\n        this._elementSelectors = null\n    }\n\n    private get config(): AutocaptureConfig {\n        const config = isObject(this.instance.config.autocapture) ? this.instance.config.autocapture : {}\n        // precompile the regex\n        config.url_allowlist = config.url_allowlist?.map((url) => new RegExp(url))\n        config.url_ignorelist = config.url_ignorelist?.map((url) => new RegExp(url))\n        return config\n    }\n\n    _addDomEventHandlers(): void {\n        if (!this.isBrowserSupported()) {\n            logger.info('Disabling Automatic Event Collection because this browser is not supported')\n            return\n        }\n\n        if (!window || !document) {\n            return\n        }\n\n        const handler = (e: Event) => {\n            e = e || window?.event\n            try {\n                this._captureEvent(e)\n            } catch (error) {\n                logger.error('Failed to capture event', error)\n            }\n        }\n\n        addEventListener(document, 'submit', handler, { capture: true })\n        addEventListener(document, 'change', handler, { capture: true })\n        addEventListener(document, 'click', handler, { capture: true })\n\n        if (this.config.capture_copied_text) {\n            const copiedTextHandler = (e: Event) => {\n                e = e || window?.event\n                this._captureEvent(e, COPY_AUTOCAPTURE_EVENT)\n            }\n\n            addEventListener(document, 'copy', copiedTextHandler, { capture: true })\n            addEventListener(document, 'cut', copiedTextHandler, { capture: true })\n        }\n    }\n\n    public startIfEnabled() {\n        if (this.isEnabled && !this._initialized) {\n            this._addDomEventHandlers()\n            this._initialized = true\n        }\n    }\n\n    public onRemoteConfig(response: RemoteConfig) {\n        if (response.elementsChainAsString) {\n            this._elementsChainAsString = response.elementsChainAsString\n        }\n\n        if (this.instance.persistence) {\n            this.instance.persistence.register({\n                [AUTOCAPTURE_DISABLED_SERVER_SIDE]: !!response['autocapture_opt_out'],\n            })\n        }\n        // store this in-memory in case persistence is disabled\n        this._isDisabledServerSide = !!response['autocapture_opt_out']\n        this.startIfEnabled()\n    }\n\n    public setElementSelectors(selectors: Set<string>): void {\n        this._elementSelectors = selectors\n    }\n\n    public getElementSelectors(element: Element | null): string[] | null {\n        const elementSelectors: string[] = []\n\n        this._elementSelectors?.forEach((selector) => {\n            const matchedElements = document?.querySelectorAll(selector)\n            matchedElements?.forEach((matchedElement: Element) => {\n                if (element === matchedElement) {\n                    elementSelectors.push(selector)\n                }\n            })\n        })\n\n        return elementSelectors\n    }\n\n    public get isEnabled(): boolean {\n        const persistedServerDisabled = this.instance.persistence?.props[AUTOCAPTURE_DISABLED_SERVER_SIDE]\n        const memoryDisabled = this._isDisabledServerSide\n\n        if (\n            isNull(memoryDisabled) &&\n            !isBoolean(persistedServerDisabled) &&\n            !this.instance.config.advanced_disable_decide\n        ) {\n            // We only enable if we know that the server has not disabled it (unless decide is disabled)\n            return false\n        }\n\n        const disabledServer = this._isDisabledServerSide ?? !!persistedServerDisabled\n        const disabledClient = !this.instance.config.autocapture\n        return !disabledClient && !disabledServer\n    }\n\n    private _captureEvent(e: Event, eventName: EventName = '$autocapture'): boolean | void {\n        if (!this.isEnabled) {\n            return\n        }\n\n        /*** Don't mess with this code without running IE8 tests on it ***/\n        let target = getEventTarget(e)\n        if (isTextNode(target)) {\n            // defeat Safari bug (see: http://www.quirksmode.org/js/events_properties.html)\n            target = (target.parentNode || null) as Element | null\n        }\n\n        if (eventName === '$autocapture' && e.type === 'click' && e instanceof MouseEvent) {\n            if (\n                this.instance.config.rageclick &&\n                this.rageclicks?.isRageClick(e.clientX, e.clientY, new Date().getTime())\n            ) {\n                this._captureEvent(e, '$rageclick')\n            }\n        }\n\n        const isCopyAutocapture = eventName === COPY_AUTOCAPTURE_EVENT\n        if (\n            target &&\n            shouldCaptureDomEvent(\n                target,\n                e,\n                this.config,\n                // mostly this method cares about the target element, but in the case of copy events,\n                // we want some of the work this check does without insisting on the target element's type\n                isCopyAutocapture,\n                // we also don't want to restrict copy checks to clicks,\n                // so we pass that knowledge in here, rather than add the logic inside the check\n                isCopyAutocapture ? ['copy', 'cut'] : undefined\n            )\n        ) {\n            const { props, explicitNoCapture } = autocapturePropertiesForElement(target, {\n                e,\n                maskAllElementAttributes: this.instance.config.mask_all_element_attributes,\n                maskAllText: this.instance.config.mask_all_text,\n                elementAttributeIgnoreList: this.config.element_attribute_ignorelist,\n                elementsChainAsString: this._elementsChainAsString,\n            })\n\n            if (explicitNoCapture) {\n                return false\n            }\n\n            const elementSelectors = this.getElementSelectors(target)\n            if (elementSelectors && elementSelectors.length > 0) {\n                props['$element_selectors'] = elementSelectors\n            }\n\n            if (eventName === COPY_AUTOCAPTURE_EVENT) {\n                // you can't read the data from the clipboard event,\n                // but you can guess that you can read it from the window's current selection\n                const selectedContent = makeSafeText(window?.getSelection()?.toString())\n                const clipType = (e as ClipboardEvent).type || 'clipboard'\n                if (!selectedContent) {\n                    return false\n                }\n                props['$selected_content'] = selectedContent\n                props['$copy_type'] = clipType\n            }\n\n            this.instance.capture(eventName, props)\n            return true\n        }\n    }\n\n    isBrowserSupported(): boolean {\n        return isFunction(document?.querySelectorAll)\n    }\n}\n", "import { PostHog } from '../posthog-core'\nimport { assignableWindow } from '../utils/globals'\nimport { createLogger } from '../utils/logger'\nimport { isUndefined } from '../utils/type-utils'\n\nconst logger = createLogger('[TracingHeaders]')\n\nexport class TracingHeaders {\n    private _restoreXHRPatch: (() => void) | undefined = undefined\n    private _restoreFetchPatch: (() => void) | undefined = undefined\n\n    constructor(private readonly instance: PostHog) {}\n\n    private _loadScript(cb: () => void): void {\n        if (assignableWindow.__PosthogExtensions__?.tracingHeadersPatchFns) {\n            // already loaded\n            cb()\n        }\n\n        assignableWindow.__PosthogExtensions__?.loadExternalDependency?.(this.instance, 'tracing-headers', (err) => {\n            if (err) {\n                return logger.error('failed to load script', err)\n            }\n            cb()\n        })\n    }\n    public startIfEnabledOrStop() {\n        if (this.instance.config.__add_tracing_headers) {\n            this._loadScript(this._startCapturing)\n        } else {\n            this._restoreXHRPatch?.()\n            this._restoreFetchPatch?.()\n            // we don't want to call these twice so we reset them\n            this._restoreXHRPatch = undefined\n            this._restoreFetchPatch = undefined\n        }\n    }\n\n    private _startCapturing = () => {\n        if (isUndefined(this._restoreXHRPatch)) {\n            assignableWindow.__PosthogExtensions__?.tracingHeadersPatchFns?._patchXHR(this.instance.sessionManager)\n        }\n        if (isUndefined(this._restoreFetchPatch)) {\n            assignableWindow.__PosthogExtensions__?.tracingHeadersPatchFns?._patchFetch(this.instance.sessionManager)\n        }\n    }\n}\n", "import { PostHog } from './posthog-core'\nimport { find } from './utils'\nimport { assignableWindow, navigator } from './utils/globals'\nimport { cookieStore, localStore } from './storage'\nimport { PersistentStore } from './types'\nimport { includes } from './utils/string-utils'\n\nconst OPT_OUT_PREFIX = '__ph_opt_in_out_'\n\nexport enum ConsentStatus {\n    PENDING = -1,\n    DENIED = 0,\n    GRANTED = 1,\n}\n\n/**\n * ConsentManager provides tools for managing user consent as configured by the application.\n */\nexport class ConsentManager {\n    private _storage?: PersistentStore\n\n    constructor(private instance: PostHog) {}\n\n    private get config() {\n        return this.instance.config\n    }\n\n    public get consent(): ConsentStatus {\n        if (this.getDnt()) {\n            return ConsentStatus.DENIED\n        }\n\n        return this.storedConsent\n    }\n\n    public isOptedOut() {\n        return (\n            this.consent === ConsentStatus.DENIED ||\n            (this.consent === ConsentStatus.PENDING && this.config.opt_out_capturing_by_default)\n        )\n    }\n\n    public isOptedIn() {\n        return !this.isOptedOut()\n    }\n\n    public optInOut(isOptedIn: boolean) {\n        this.storage.set(\n            this.storageKey,\n            isOptedIn ? 1 : 0,\n            this.config.cookie_expiration,\n            this.config.cross_subdomain_cookie,\n            this.config.secure_cookie\n        )\n    }\n\n    public reset() {\n        this.storage.remove(this.storageKey, this.config.cross_subdomain_cookie)\n    }\n\n    private get storageKey() {\n        const { token, opt_out_capturing_cookie_prefix } = this.instance.config\n        return (opt_out_capturing_cookie_prefix || OPT_OUT_PREFIX) + token\n    }\n\n    private get storedConsent(): ConsentStatus {\n        const value = this.storage.get(this.storageKey)\n        return value === '1' ? ConsentStatus.GRANTED : value === '0' ? ConsentStatus.DENIED : ConsentStatus.PENDING\n    }\n\n    private get storage() {\n        if (!this._storage) {\n            const persistenceType = this.config.opt_out_capturing_persistence_type\n            this._storage = persistenceType === 'localStorage' ? localStore : cookieStore\n            const otherStorage = persistenceType === 'localStorage' ? cookieStore : localStore\n\n            if (otherStorage.get(this.storageKey)) {\n                if (!this._storage.get(this.storageKey)) {\n                    // This indicates we have moved to a new storage format so we migrate the value over\n                    this.optInOut(otherStorage.get(this.storageKey) === '1')\n                }\n\n                otherStorage.remove(this.storageKey, this.config.cross_subdomain_cookie)\n            }\n        }\n\n        return this._storage\n    }\n\n    private getDnt(): boolean {\n        if (!this.config.respect_dnt) {\n            return false\n        }\n        return !!find(\n            [\n                navigator?.doNotTrack, // standard\n                (navigator as any)?.['msDoNotTrack'],\n                assignableWindow['doNotTrack'],\n            ],\n            (dntValue): boolean => {\n                return includes([true, 1, '1', 'yes'], dntValue)\n            }\n        )\n    }\n}\n", "import { assignableWindow, window } from '../../utils/globals'\nimport { PostHog } from '../../posthog-core'\nimport { Properties, RemoteConfig } from '../../types'\n\nimport { createLogger } from '../../utils/logger'\nimport { EXCEPTION_CAPTURE_ENABLED_SERVER_SIDE } from '../../constants'\n\nconst logger = createLogger('[ExceptionAutocapture]')\n\nexport class ExceptionObserver {\n    instance: PostHog\n    remoteEnabled: boolean | undefined\n    private originalOnUnhandledRejectionHandler: Window['onunhandledrejection'] | null | undefined = undefined\n    private unwrapOnError: (() => void) | undefined\n    private unwrapUnhandledRejection: (() => void) | undefined\n\n    constructor(instance: PostHog) {\n        this.instance = instance\n        this.remoteEnabled = !!this.instance.persistence?.props[EXCEPTION_CAPTURE_ENABLED_SERVER_SIDE]\n\n        this.startIfEnabled()\n    }\n\n    get isEnabled() {\n        return this.remoteEnabled ?? false\n    }\n\n    get isCapturing() {\n        return !!(window?.onerror as any)?.__POSTHOG_INSTRUMENTED__\n    }\n\n    get hasHandlers() {\n        return this.originalOnUnhandledRejectionHandler || this.unwrapOnError\n    }\n\n    startIfEnabled(): void {\n        if (this.isEnabled && !this.isCapturing) {\n            logger.info('enabled, starting...')\n            this.loadScript(this.startCapturing)\n        }\n    }\n\n    private loadScript(cb: () => void): void {\n        if (this.hasHandlers) {\n            // already loaded\n            cb()\n        }\n\n        assignableWindow.__PosthogExtensions__?.loadExternalDependency?.(\n            this.instance,\n            'exception-autocapture',\n            (err) => {\n                if (err) {\n                    return logger.error('failed to load script', err)\n                }\n                cb()\n            }\n        )\n    }\n\n    private startCapturing = () => {\n        if (!window || !this.isEnabled || this.hasHandlers || this.isCapturing) {\n            return\n        }\n\n        const wrapOnError = assignableWindow.__PosthogExtensions__?.errorWrappingFunctions?.wrapOnError\n        const wrapUnhandledRejection =\n            assignableWindow.__PosthogExtensions__?.errorWrappingFunctions?.wrapUnhandledRejection\n\n        if (!wrapOnError || !wrapUnhandledRejection) {\n            logger.error('failed to load error wrapping functions - cannot start')\n            return\n        }\n\n        try {\n            this.unwrapOnError = wrapOnError(this.captureException.bind(this))\n            this.unwrapUnhandledRejection = wrapUnhandledRejection(this.captureException.bind(this))\n        } catch (e) {\n            logger.error('failed to start', e)\n            this.stopCapturing()\n        }\n    }\n\n    private stopCapturing() {\n        this.unwrapOnError?.()\n        this.unwrapUnhandledRejection?.()\n    }\n\n    onRemoteConfig(response: RemoteConfig) {\n        const autocaptureExceptionsResponse = response.autocaptureExceptions\n\n        // store this in-memory in case persistence is disabled\n        this.remoteEnabled = !!autocaptureExceptionsResponse || false\n\n        if (this.instance.persistence) {\n            this.instance.persistence.register({\n                [EXCEPTION_CAPTURE_ENABLED_SERVER_SIDE]: this.remoteEnabled,\n            })\n        }\n\n        this.startIfEnabled()\n    }\n\n    captureException(errorProperties: Properties) {\n        const posthogHost = this.instance.requestRouter.endpointFor('ui')\n\n        errorProperties.$exception_personURL = `${posthogHost}/project/${\n            this.instance.config.token\n        }/person/${this.instance.get_distinct_id()}`\n\n        this.instance.exceptions.sendExceptionEvent(errorProperties)\n    }\n}\n", "import { PostHog } from '../../posthog-core'\nimport { RemoteConfig, SupportedWebVitalsMetrics } from '../../types'\nimport { createLogger } from '../../utils/logger'\nimport { isBoolean, isNullish, isNumber, isObject, isUndefined } from '../../utils/type-utils'\nimport { WEB_VITALS_ALLOWED_METRICS, WEB_VITALS_ENABLED_SERVER_SIDE } from '../../constants'\nimport { assignableWindow, window } from '../../utils/globals'\n\nconst logger = createLogger('[Web Vitals]')\n\ntype WebVitalsMetricCallback = (metric: any) => void\n\nexport const DEFAULT_FLUSH_TO_CAPTURE_TIMEOUT_MILLISECONDS = 5000\nconst ONE_MINUTE_IN_MILLIS = 60 * 1000\nexport const FIFTEEN_MINUTES_IN_MILLIS = 15 * ONE_MINUTE_IN_MILLIS\n\ntype WebVitalsEventBuffer = { url: string | undefined; metrics: any[]; firstMetricTimestamp: number | undefined }\n\nexport class WebVitalsAutocapture {\n    private _enabledServerSide: boolean = false\n    private _initialized = false\n\n    private buffer: WebVitalsEventBuffer = { url: undefined, metrics: [], firstMetricTimestamp: undefined }\n    private _delayedFlushTimer: ReturnType<typeof setTimeout> | undefined\n\n    constructor(private readonly instance: PostHog) {\n        this._enabledServerSide = !!this.instance.persistence?.props[WEB_VITALS_ENABLED_SERVER_SIDE]\n\n        this.startIfEnabled()\n    }\n\n    public get allowedMetrics(): SupportedWebVitalsMetrics[] {\n        const clientConfigMetricAllowList: SupportedWebVitalsMetrics[] | undefined = isObject(\n            this.instance.config.capture_performance\n        )\n            ? this.instance.config.capture_performance?.web_vitals_allowed_metrics\n            : undefined\n        return !isUndefined(clientConfigMetricAllowList)\n            ? clientConfigMetricAllowList\n            : this.instance.persistence?.props[WEB_VITALS_ALLOWED_METRICS] || ['CLS', 'FCP', 'INP', 'LCP']\n    }\n\n    public get flushToCaptureTimeoutMs(): number {\n        const clientConfig: number | undefined = isObject(this.instance.config.capture_performance)\n            ? this.instance.config.capture_performance.web_vitals_delayed_flush_ms\n            : undefined\n        return clientConfig || DEFAULT_FLUSH_TO_CAPTURE_TIMEOUT_MILLISECONDS\n    }\n\n    public get _maxAllowedValue(): number {\n        const configured =\n            isObject(this.instance.config.capture_performance) &&\n            isNumber(this.instance.config.capture_performance.__web_vitals_max_value)\n                ? this.instance.config.capture_performance.__web_vitals_max_value\n                : FIFTEEN_MINUTES_IN_MILLIS\n        // you can set to 0 to disable the check or any value over ten seconds\n        // 1 milli to 1 minute will be set to 15 minutes, cos that would be a silly low maximum\n        return 0 < configured && configured <= ONE_MINUTE_IN_MILLIS ? FIFTEEN_MINUTES_IN_MILLIS : configured\n    }\n\n    public get isEnabled(): boolean {\n        const clientConfig = isObject(this.instance.config.capture_performance)\n            ? this.instance.config.capture_performance.web_vitals\n            : undefined\n        return isBoolean(clientConfig) ? clientConfig : this._enabledServerSide\n    }\n\n    public startIfEnabled(): void {\n        if (this.isEnabled && !this._initialized) {\n            logger.info('enabled, starting...')\n            this.loadScript(this._startCapturing)\n        }\n    }\n\n    public onRemoteConfig(response: RemoteConfig) {\n        const webVitalsOptIn = isObject(response.capturePerformance) && !!response.capturePerformance.web_vitals\n\n        const allowedMetrics = isObject(response.capturePerformance)\n            ? response.capturePerformance.web_vitals_allowed_metrics\n            : undefined\n\n        if (this.instance.persistence) {\n            this.instance.persistence.register({\n                [WEB_VITALS_ENABLED_SERVER_SIDE]: webVitalsOptIn,\n            })\n\n            this.instance.persistence.register({\n                [WEB_VITALS_ALLOWED_METRICS]: allowedMetrics,\n            })\n        }\n        // store this in-memory in case persistence is disabled\n        this._enabledServerSide = webVitalsOptIn\n\n        this.startIfEnabled()\n    }\n\n    private loadScript(cb: () => void): void {\n        if (assignableWindow.__PosthogExtensions__?.postHogWebVitalsCallbacks) {\n            // already loaded\n            cb()\n        }\n        assignableWindow.__PosthogExtensions__?.loadExternalDependency?.(this.instance, 'web-vitals', (err) => {\n            if (err) {\n                logger.error('failed to load script', err)\n                return\n            }\n            cb()\n        })\n    }\n\n    private _currentURL(): string | undefined {\n        // TODO you should be able to mask the URL here\n        const href = window ? window.location.href : undefined\n        if (!href) {\n            logger.error('Could not determine current URL')\n        }\n        return href\n    }\n\n    private _flushToCapture = () => {\n        clearTimeout(this._delayedFlushTimer)\n        if (this.buffer.metrics.length === 0) {\n            return\n        }\n\n        this.instance.capture(\n            '$web_vitals',\n            this.buffer.metrics.reduce(\n                (acc, metric) => ({\n                    ...acc,\n                    // the entire event so we can use it in the future e.g. includes google's rating\n                    [`$web_vitals_${metric.name}_event`]: { ...metric },\n                    [`$web_vitals_${metric.name}_value`]: metric.value,\n                }),\n                {}\n            )\n        )\n        this.buffer = { url: undefined, metrics: [], firstMetricTimestamp: undefined }\n    }\n\n    private _addToBuffer = (metric: any) => {\n        const sessionIds = this.instance.sessionManager?.checkAndGetSessionAndWindowId(true)\n        if (isUndefined(sessionIds)) {\n            logger.error('Could not read session ID. Dropping metrics!')\n            return\n        }\n\n        this.buffer = this.buffer || { url: undefined, metrics: [], firstMetricTimestamp: undefined }\n\n        const $currentUrl = this._currentURL()\n        if (isUndefined($currentUrl)) {\n            return\n        }\n\n        if (isNullish(metric?.name) || isNullish(metric?.value)) {\n            logger.error('Invalid metric received', metric)\n            return\n        }\n\n        // we observe some very large values sometimes, we'll ignore them\n        // since the likelihood of LCP > 1 hour being correct is very low\n        if (this._maxAllowedValue && metric.value >= this._maxAllowedValue) {\n            logger.error('Ignoring metric with value >= ' + this._maxAllowedValue, metric)\n            return\n        }\n\n        const urlHasChanged = this.buffer.url !== $currentUrl\n\n        if (urlHasChanged) {\n            // we need to send what we have\n            this._flushToCapture()\n            // poor performance is >4s, we wait twice that time to send\n            // this is in case we haven't received all metrics\n            // we'll at least gather some\n            this._delayedFlushTimer = setTimeout(this._flushToCapture, this.flushToCaptureTimeoutMs)\n        }\n\n        if (isUndefined(this.buffer.url)) {\n            this.buffer.url = $currentUrl\n        }\n\n        this.buffer.firstMetricTimestamp = isUndefined(this.buffer.firstMetricTimestamp)\n            ? Date.now()\n            : this.buffer.firstMetricTimestamp\n\n        if (metric.attribution && metric.attribution.interactionTargetElement) {\n            // we don't want to send the entire element\n            // they can be very large\n            // TODO we could run this through autocapture code so that we get elements chain info\n            //  and can display the element in the UI\n            metric.attribution.interactionTargetElement = undefined\n        }\n\n        this.buffer.metrics.push({\n            ...metric,\n            $current_url: $currentUrl,\n            $session_id: sessionIds.sessionId,\n            $window_id: sessionIds.windowId,\n            timestamp: Date.now(),\n        })\n\n        if (this.buffer.metrics.length === this.allowedMetrics.length) {\n            // we have all allowed metrics\n            this._flushToCapture()\n        }\n    }\n\n    private _startCapturing = () => {\n        let onLCP: WebVitalsMetricCallback | undefined\n        let onCLS: WebVitalsMetricCallback | undefined\n        let onFCP: WebVitalsMetricCallback | undefined\n        let onINP: WebVitalsMetricCallback | undefined\n\n        const posthogExtensions = assignableWindow.__PosthogExtensions__\n        if (!isUndefined(posthogExtensions) && !isUndefined(posthogExtensions.postHogWebVitalsCallbacks)) {\n            ;({ onLCP, onCLS, onFCP, onINP } = posthogExtensions.postHogWebVitalsCallbacks)\n        }\n\n        if (!onLCP || !onCLS || !onFCP || !onINP) {\n            logger.error('web vitals callbacks not loaded - not starting')\n            return\n        }\n\n        // register performance observers\n        if (this.allowedMetrics.indexOf('LCP') > -1) {\n            onLCP(this._addToBuffer.bind(this))\n        }\n        if (this.allowedMetrics.indexOf('CLS') > -1) {\n            onCLS(this._addToBuffer.bind(this))\n        }\n        if (this.allowedMetrics.indexOf('FCP') > -1) {\n            onFCP(this._addToBuffer.bind(this))\n        }\n        if (this.allowedMetrics.indexOf('INP') > -1) {\n            onINP(this._addToBuffer.bind(this))\n        }\n\n        this._initialized = true\n    }\n}\n", "import { PostHog } from './posthog-core'\nimport { navigator, window } from './utils/globals'\nimport {\n    WebExperiment,\n    WebExperimentsCallback,\n    WebExperimentTransform,\n    WebExperimentUrlMatchType,\n    WebExperimentVariant,\n} from './web-experiments-types'\nimport { WEB_EXPERIMENTS } from './constants'\nimport { isNullish, isString } from './utils/type-utils'\nimport { getQueryParam } from './utils/request-utils'\nimport { isMatchingRegex } from './utils/string-utils'\nimport { logger } from './utils/logger'\nimport { Info } from './utils/event-utils'\nimport { isLikelyBot } from './utils/blocked-uas'\n\nexport const webExperimentUrlValidationMap: Record<\n    WebExperimentUrlMatchType,\n    (conditionsUrl: string, location: Location) => boolean\n> = {\n    icontains: (conditionsUrl, location) =>\n        !!window && location.href.toLowerCase().indexOf(conditionsUrl.toLowerCase()) > -1,\n    not_icontains: (conditionsUrl, location) =>\n        !!window && location.href.toLowerCase().indexOf(conditionsUrl.toLowerCase()) === -1,\n    regex: (conditionsUrl, location) => !!window && isMatchingRegex(location.href, conditionsUrl),\n    not_regex: (conditionsUrl, location) => !!window && !isMatchingRegex(location.href, conditionsUrl),\n    exact: (conditionsUrl, location) => location.href === conditionsUrl,\n    is_not: (conditionsUrl, location) => location.href !== conditionsUrl,\n}\n\nexport class WebExperiments {\n    private _flagToExperiments?: Map<string, WebExperiment>\n\n    constructor(private instance: PostHog) {\n        this.instance.onFeatureFlags((flags: string[]) => {\n            this.onFeatureFlags(flags)\n        })\n    }\n\n    onFeatureFlags(flags: string[]) {\n        if (this._is_bot()) {\n            WebExperiments.logInfo('Refusing to render web experiment since the viewer is a likely bot')\n            return\n        }\n\n        if (this.instance.config.disable_web_experiments) {\n            return\n        }\n\n        if (isNullish(this._flagToExperiments)) {\n            // Indicates first load so we trigger the loaders\n            this._flagToExperiments = new Map<string, WebExperiment>()\n            this.loadIfEnabled()\n            this.previewWebExperiment()\n            return\n        }\n\n        WebExperiments.logInfo('applying feature flags', flags)\n        flags.forEach((flag) => {\n            if (this._flagToExperiments && this._flagToExperiments?.has(flag)) {\n                const selectedVariant = this.instance.getFeatureFlag(flag) as unknown as string\n                const webExperiment = this._flagToExperiments?.get(flag)\n                if (selectedVariant && webExperiment?.variants[selectedVariant]) {\n                    this.applyTransforms(\n                        webExperiment.name,\n                        selectedVariant,\n                        webExperiment.variants[selectedVariant].transforms\n                    )\n                }\n            }\n        })\n    }\n\n    previewWebExperiment() {\n        const location = WebExperiments.getWindowLocation()\n        if (location?.search) {\n            const experimentID = getQueryParam(location?.search, '__experiment_id')\n            const variant = getQueryParam(location?.search, '__experiment_variant')\n            if (experimentID && variant) {\n                WebExperiments.logInfo(`previewing web experiments ${experimentID} && ${variant}`)\n                this.getWebExperiments(\n                    (webExperiments) => {\n                        this.showPreviewWebExperiment(parseInt(experimentID), variant, webExperiments)\n                    },\n                    false,\n                    true\n                )\n            }\n        }\n    }\n\n    loadIfEnabled() {\n        if (this.instance.config.disable_web_experiments) {\n            return\n        }\n\n        this.getWebExperimentsAndEvaluateDisplayLogic()\n    }\n\n    public getWebExperimentsAndEvaluateDisplayLogic = (forceReload: boolean = false): void => {\n        this.getWebExperiments((webExperiments) => {\n            WebExperiments.logInfo(`retrieved web experiments from the server`)\n            this._flagToExperiments = new Map<string, WebExperiment>()\n\n            webExperiments.forEach((webExperiment) => {\n                if (webExperiment.feature_flag_key) {\n                    if (this._flagToExperiments) {\n                        WebExperiments.logInfo(\n                            `setting flag key `,\n                            webExperiment.feature_flag_key,\n                            ` to web experiment `,\n                            webExperiment\n                        )\n                        this._flagToExperiments?.set(webExperiment.feature_flag_key, webExperiment)\n                    }\n\n                    const selectedVariant = this.instance.getFeatureFlag(webExperiment.feature_flag_key)\n                    if (isString(selectedVariant) && webExperiment.variants[selectedVariant]) {\n                        this.applyTransforms(\n                            webExperiment.name,\n                            selectedVariant,\n                            webExperiment.variants[selectedVariant].transforms\n                        )\n                    }\n                } else if (webExperiment.variants) {\n                    for (const variant in webExperiment.variants) {\n                        const testVariant = webExperiment.variants[variant]\n                        const matchTest = WebExperiments.matchesTestVariant(testVariant)\n                        if (matchTest) {\n                            this.applyTransforms(webExperiment.name, variant, testVariant.transforms)\n                        }\n                    }\n                }\n            })\n        }, forceReload)\n    }\n\n    public getWebExperiments(callback: WebExperimentsCallback, forceReload: boolean, previewing?: boolean) {\n        if (this.instance.config.disable_web_experiments && !previewing) {\n            return callback([])\n        }\n\n        const existingWebExperiments = this.instance.get_property(WEB_EXPERIMENTS)\n        if (existingWebExperiments && !forceReload) {\n            return callback(existingWebExperiments)\n        }\n\n        this.instance._send_request({\n            url: this.instance.requestRouter.endpointFor(\n                'api',\n                `/api/web_experiments/?token=${this.instance.config.token}`\n            ),\n            method: 'GET',\n            callback: (response) => {\n                if (response.statusCode !== 200 || !response.json) {\n                    return callback([])\n                }\n                const webExperiments = response.json.experiments || []\n                return callback(webExperiments)\n            },\n        })\n    }\n\n    private showPreviewWebExperiment(experimentID: number, variant: string, webExperiments: WebExperiment[]) {\n        const previewExperiments = webExperiments.filter((exp) => exp.id === experimentID)\n        if (previewExperiments && previewExperiments.length > 0) {\n            WebExperiments.logInfo(\n                `Previewing web experiment [${previewExperiments[0].name}] with variant [${variant}]`\n            )\n            this.applyTransforms(\n                previewExperiments[0].name,\n                variant,\n                previewExperiments[0].variants[variant].transforms\n            )\n        }\n    }\n    private static matchesTestVariant(testVariant: WebExperimentVariant) {\n        if (isNullish(testVariant.conditions)) {\n            return false\n        }\n        return WebExperiments.matchUrlConditions(testVariant) && WebExperiments.matchUTMConditions(testVariant)\n    }\n\n    private static matchUrlConditions(testVariant: WebExperimentVariant): boolean {\n        if (isNullish(testVariant.conditions) || isNullish(testVariant.conditions?.url)) {\n            return true\n        }\n\n        const location = WebExperiments.getWindowLocation()\n        if (location) {\n            const urlCheck = testVariant.conditions?.url\n                ? webExperimentUrlValidationMap[testVariant.conditions?.urlMatchType ?? 'icontains'](\n                      testVariant.conditions.url,\n                      location\n                  )\n                : true\n            return urlCheck\n        }\n\n        return false\n    }\n\n    public static getWindowLocation(): Location | undefined {\n        return window?.location\n    }\n\n    private static matchUTMConditions(testVariant: WebExperimentVariant): boolean {\n        if (isNullish(testVariant.conditions) || isNullish(testVariant.conditions?.utm)) {\n            return true\n        }\n        const campaignParams = Info.campaignParams()\n        if (campaignParams['utm_source']) {\n            // eslint-disable-next-line compat/compat\n            const utmCampaignMatched = testVariant.conditions?.utm?.utm_campaign\n                ? testVariant.conditions?.utm?.utm_campaign == campaignParams['utm_campaign']\n                : true\n\n            const utmSourceMatched = testVariant.conditions?.utm?.utm_source\n                ? testVariant.conditions?.utm?.utm_source == campaignParams['utm_source']\n                : true\n\n            const utmMediumMatched = testVariant.conditions?.utm?.utm_medium\n                ? testVariant.conditions?.utm?.utm_medium == campaignParams['utm_medium']\n                : true\n\n            const utmTermMatched = testVariant.conditions?.utm?.utm_term\n                ? testVariant.conditions?.utm?.utm_term == campaignParams['utm_term']\n                : true\n\n            return utmCampaignMatched && utmMediumMatched && utmTermMatched && utmSourceMatched\n        }\n\n        return false\n    }\n\n    private static logInfo(msg: string, ...args: any[]) {\n        logger.info(`[WebExperiments] ${msg}`, args)\n    }\n\n    private applyTransforms(experiment: string, variant: string, transforms: WebExperimentTransform[]) {\n        if (this._is_bot()) {\n            WebExperiments.logInfo('Refusing to render web experiment since the viewer is a likely bot')\n            return\n        }\n\n        if (variant === 'control') {\n            WebExperiments.logInfo('Control variants leave the page unmodified.')\n            return\n        }\n\n        transforms.forEach((transform) => {\n            if (transform.selector) {\n                WebExperiments.logInfo(\n                    `applying transform of variant ${variant} for experiment ${experiment} `,\n                    transform\n                )\n\n                // eslint-disable-next-line no-restricted-globals\n                const elements = document?.querySelectorAll(transform.selector)\n                elements?.forEach((element) => {\n                    const htmlElement = element as HTMLElement\n                    if (transform.attributes) {\n                        transform.attributes.forEach((attribute) => {\n                            switch (attribute.name) {\n                                case 'text':\n                                    htmlElement.innerText = attribute.value\n                                    break\n\n                                case 'html':\n                                    htmlElement.innerHTML = attribute.value\n                                    break\n\n                                case 'cssClass':\n                                    htmlElement.className = attribute.value\n                                    break\n\n                                default:\n                                    htmlElement.setAttribute(attribute.name, attribute.value)\n                            }\n                        })\n                    }\n\n                    if (transform.text) {\n                        htmlElement.innerText = transform.text\n                    }\n\n                    if (transform.html) {\n                        if (htmlElement.parentElement) {\n                            htmlElement.parentElement.innerHTML = transform.html\n                        } else {\n                            htmlElement.innerHTML = transform.html\n                        }\n                    }\n\n                    if (transform.css) {\n                        htmlElement.setAttribute('style', transform.css)\n                    }\n                })\n            }\n        })\n    }\n\n    _is_bot(): boolean | undefined {\n        if (navigator && this.instance) {\n            return isLikelyBot(navigator, this.instance.config.custom_blocked_useragents)\n        } else {\n            return undefined\n        }\n    }\n}\n", "import { PostHog } from './posthog-core'\nimport { Properties } from './types'\n\nexport class PostHogExceptions {\n    constructor(private readonly instance: PostHog) {}\n\n    /**\n     * :TRICKY: Make sure we batch these requests\n     */\n    sendExceptionEvent(properties: Properties) {\n        this.instance.capture('$exception', properties, {\n            _noTruncate: true,\n            _batchKey: 'exceptionEvent',\n        })\n    }\n}\n", "import { PostHog } from './posthog-core'\nimport { CaptureResult, Properties, RemoteConfig, SiteApp, SiteAppGlobals, SiteAppLoader } from './types'\nimport { assignableWindow } from './utils/globals'\nimport { createLogger } from './utils/logger'\n\nconst logger = createLogger('[SiteApps]')\n\nexport class SiteApps {\n    apps: Record<string, SiteApp>\n\n    private stopBuffering?: () => void\n    private bufferedInvocations: SiteAppGlobals[]\n\n    constructor(private instance: PostHog) {\n        // events captured between loading posthog-js and the site app; up to 1000 events\n        this.bufferedInvocations = []\n        this.apps = {}\n    }\n\n    public get isEnabled(): boolean {\n        return !!this.instance.config.opt_in_site_apps\n    }\n\n    private eventCollector(_eventName: string, eventPayload?: CaptureResult | undefined) {\n        if (!eventPayload) {\n            return\n        }\n        const globals = this.globalsForEvent(eventPayload)\n        this.bufferedInvocations.push(globals)\n        if (this.bufferedInvocations.length > 1000) {\n            this.bufferedInvocations = this.bufferedInvocations.slice(10)\n        }\n    }\n\n    get siteAppLoaders(): SiteAppLoader[] | undefined {\n        return assignableWindow._POSTHOG_REMOTE_CONFIG?.[this.instance.config.token]?.siteApps\n    }\n\n    init() {\n        if (this.isEnabled) {\n            const stop = this.instance._addCaptureHook(this.eventCollector.bind(this))\n            this.stopBuffering = () => {\n                stop()\n                this.bufferedInvocations = []\n                this.stopBuffering = undefined\n            }\n        }\n    }\n\n    globalsForEvent(event: CaptureResult): SiteAppGlobals {\n        if (!event) {\n            throw new Error('Event payload is required')\n        }\n        const groups: SiteAppGlobals['groups'] = {}\n        const groupIds = this.instance.get_property('$groups') || []\n        const groupProperties: Record<string, Properties> = this.instance.get_property('$stored_group_properties') || {}\n        for (const [type, properties] of Object.entries(groupProperties)) {\n            groups[type] = { id: groupIds[type], type, properties }\n        }\n        const { $set_once, $set, ..._event } = event\n        const globals = {\n            event: {\n                ..._event,\n                properties: {\n                    ...event.properties,\n                    ...($set ? { $set: { ...(event.properties?.$set ?? {}), ...$set } } : {}),\n                    ...($set_once ? { $set_once: { ...(event.properties?.$set_once ?? {}), ...$set_once } } : {}),\n                },\n                elements_chain: event.properties?.['$elements_chain'] ?? '',\n                // TODO:\n                // - elements_chain_href: '',\n                // - elements_chain_texts: [] as string[],\n                // - elements_chain_ids: [] as string[],\n                // - elements_chain_elements: [] as string[],\n                distinct_id: event.properties?.['distinct_id'],\n            },\n            person: {\n                properties: this.instance.get_property('$stored_person_properties'),\n            },\n            groups,\n        }\n        return globals\n    }\n\n    setupSiteApp(loader: SiteAppLoader) {\n        const app: SiteApp = {\n            id: loader.id,\n            loaded: false,\n            errored: false,\n        }\n        this.apps[loader.id] = app\n\n        const onLoaded = (success: boolean) => {\n            this.apps[loader.id].errored = !success\n            this.apps[loader.id].loaded = true\n\n            logger.info(`Site app with id ${loader.id} ${success ? 'loaded' : 'errored'}`)\n\n            if (success && this.bufferedInvocations.length) {\n                logger.info(`Processing ${this.bufferedInvocations.length} events for site app with id ${loader.id}`)\n                this.bufferedInvocations.forEach((globals) => app.processEvent?.(globals))\n            }\n\n            for (const app of Object.values(this.apps)) {\n                if (!app.loaded) {\n                    // If any other apps are not loaded, we don't want to stop buffering\n                    return\n                }\n            }\n\n            this.stopBuffering?.()\n        }\n\n        try {\n            const { processEvent } = loader.init({\n                posthog: this.instance,\n                callback: (success) => {\n                    onLoaded(success)\n                },\n            })\n\n            if (processEvent) {\n                app.processEvent = processEvent\n            }\n        } catch (e) {\n            logger.error(`Error while initializing PostHog app with config id ${loader.id}`, e)\n            onLoaded(false)\n        }\n    }\n\n    private onCapturedEvent(event: CaptureResult) {\n        if (Object.keys(this.apps).length === 0) {\n            return\n        }\n\n        const globals = this.globalsForEvent(event)\n\n        for (const app of Object.values(this.apps)) {\n            try {\n                app.processEvent?.(globals)\n            } catch (e) {\n                logger.error(`Error while processing event ${event.event} for site app ${app.id}`, e)\n            }\n        }\n    }\n\n    onRemoteConfig(response: RemoteConfig): void {\n        if (this.siteAppLoaders?.length) {\n            if (!this.isEnabled) {\n                logger.error(`PostHog site apps are disabled. Enable the \"opt_in_site_apps\" config to proceed.`)\n                return\n            }\n\n            for (const app of this.siteAppLoaders) {\n                this.setupSiteApp(app)\n            }\n\n            // NOTE: We could improve this to only fire if we actually have listeners for the event\n            this.instance.on('eventCaptured', (event) => this.onCapturedEvent(event))\n\n            return\n        }\n\n        // NOTE: Below his is now only the fallback for legacy site app support. Once we have fully removed to the remote config loader we can get rid of this\n\n        this.stopBuffering?.()\n\n        if (!response['siteApps']?.length) {\n            return\n        }\n\n        if (!this.isEnabled) {\n            logger.error(`PostHog site apps are disabled. Enable the \"opt_in_site_apps\" config to proceed.`)\n            return\n        }\n\n        for (const { id, url } of response['siteApps']) {\n            assignableWindow[`__$$ph_site_app_${id}`] = this.instance\n            assignableWindow.__PosthogExtensions__?.loadSiteApp?.(this.instance, url, (err) => {\n                if (err) {\n                    return logger.error(`Error while initializing PostHog app with config id ${id}`, err)\n                }\n            })\n        }\n    }\n}\n", "import { jsonStringify } from '../request'\nimport type { Properties } from '../types'\n\nexport function getIdentifyHash(\n    distinct_id: string,\n    userPropertiesToSet?: Properties,\n    userPropertiesToSetOnce?: Properties\n): string {\n    return jsonStringify({ distinct_id, userPropertiesToSet, userPropertiesToSetOnce })\n}\n", "import Config from './config'\nimport {\n    _copyAndTruncateStrings,\n    each,\n    eachArray,\n    extend,\n    safewrapClass,\n    isCrossDomainCookie,\n    addEventListener,\n} from './utils'\nimport { assignableWindow, document, location, navigator, userAgent, window } from './utils/globals'\nimport { PostHogFeatureFlags } from './posthog-featureflags'\nimport { PostHogPersistence } from './posthog-persistence'\nimport {\n    ALIAS_ID_KEY,\n    FLAG_CALL_REPORTED,\n    PEOPLE_DISTINCT_ID_KEY,\n    USER_STATE,\n    ENABLE_PERSON_PROCESSING,\n    COOKIELESS_SENTINEL_VALUE,\n    COOKIELESS_MODE_FLAG_PROPERTY,\n} from './constants'\nimport { SessionRecording } from './extensions/replay/sessionrecording'\nimport { RemoteConfigLoader } from './remote-config'\nimport { Toolbar } from './extensions/toolbar'\nimport { localStore } from './storage'\nimport { RequestQueue } from './request-queue'\nimport { RetryQueue } from './retry-queue'\nimport { SessionIdManager } from './sessionid'\nimport { RequestRouter, RequestRouterRegion } from './utils/request-router'\nimport {\n    CaptureOptions,\n    CaptureResult,\n    Compression,\n    EarlyAccessFeatureCallback,\n    EventName,\n    JsonType,\n    PostHogConfig,\n    Properties,\n    Property,\n    QueuedRequestOptions,\n    RemoteConfig,\n    RequestCallback,\n    SessionIdChangedCallback,\n    SnippetArrayItem,\n    ToolbarParams,\n} from './types'\nimport { SentryIntegration, SentryIntegrationOptions, sentryIntegration } from './extensions/sentry-integration'\nimport { setupSegmentIntegration } from './extensions/segment-integration'\nimport { PageViewManager } from './page-view'\nimport { PostHogSurveys } from './posthog-surveys'\nimport { RateLimiter } from './rate-limiter'\nimport { uuidv7 } from './uuidv7'\nimport { Survey, SurveyCallback, SurveyQuestionBranchingType } from './posthog-surveys-types'\nimport {\n    isArray,\n    isEmptyObject,\n    isEmptyString,\n    isFunction,\n    isKnownUnsafeEditableEvent,\n    isNullish,\n    isNumber,\n    isObject,\n    isString,\n    isUndefined,\n} from './utils/type-utils'\nimport { Info } from './utils/event-utils'\nimport { logger } from './utils/logger'\nimport { SessionPropsManager } from './session-props'\nimport { isLikelyBot } from './utils/blocked-uas'\nimport { extendURLParams, request, SUPPORTS_REQUEST } from './request'\nimport { Heatmaps } from './heatmaps'\nimport { ScrollManager } from './scroll-manager'\nimport { SimpleEventEmitter } from './utils/simple-event-emitter'\nimport { Autocapture } from './autocapture'\nimport { TracingHeaders } from './extensions/tracing-headers'\nimport { ConsentManager } from './consent'\nimport { ExceptionObserver } from './extensions/exception-autocapture'\nimport { WebVitalsAutocapture } from './extensions/web-vitals'\nimport { WebExperiments } from './web-experiments'\nimport { PostHogExceptions } from './posthog-exceptions'\nimport { SiteApps } from './site-apps'\nimport { DeadClicksAutocapture, isDeadClicksEnabledForAutocapture } from './extensions/dead-clicks-autocapture'\nimport { includes, isDistinctIdStringLike } from './utils/string-utils'\nimport { getIdentifyHash } from './utils/identify-utils'\n\n/*\nSIMPLE STYLE GUIDE:\n\nthis.x === public function\nthis._x === internal - only use within this file\nthis.__x === private - only use within the class\n\nGlobals should be all caps\n*/\n\n/* posthog.init is called with `Partial<PostHogConfig>`\n * and we want to ensure that only valid keys are passed to the config object.\n * TypeScript does not enforce that the object passed does not have extra keys.\n * So someone can call with { bootstrap: { distinctId: '123'} }\n * which is not a valid key. They should have passed distinctID (upper case D).\n * That's a really tricky mistake to spot.\n * The OnlyValidKeys type ensures that only keys that are valid in the PostHogConfig type are allowed.\n */\ntype OnlyValidKeys<T, Shape> = T extends Shape ? (Exclude<keyof T, keyof Shape> extends never ? T : never) : never\n\nconst instances: Record<string, PostHog> = {}\n\n// some globals for comparisons\nconst __NOOP = () => {}\n\nconst PRIMARY_INSTANCE_NAME = 'posthog'\n\n/*\n * Dynamic... constants? Is that an oxymoron?\n */\n// http://hacks.mozilla.org/2009/07/cross-site-xmlhttprequest-with-cors/\n// https://developer.mozilla.org/en-US/docs/DOM/XMLHttpRequest#withCredentials\n\n// IE<10 does not support cross-origin XHR's but script tags\n// with defer won't block window.onload; ENQUEUE_REQUESTS\n// should only be true for Opera<12\nlet ENQUEUE_REQUESTS = !SUPPORTS_REQUEST && userAgent?.indexOf('MSIE') === -1 && userAgent?.indexOf('Mozilla') === -1\n\n// NOTE: Remember to update `types.ts` when changing a default value\n// to guarantee documentation is up to date, make sure to also update our website docs\n// NOTE²: This shouldn't ever change because we try very hard to be backwards-compatible\nexport const defaultConfig = (): PostHogConfig => ({\n    api_host: 'https://us.i.posthog.com',\n    ui_host: null,\n    token: '',\n    autocapture: true,\n    rageclick: true,\n    cross_subdomain_cookie: isCrossDomainCookie(document?.location),\n    persistence: 'localStorage+cookie', // up to 1.92.0 this was 'cookie'. It's easy to migrate as 'localStorage+cookie' will migrate data from cookie storage\n    persistence_name: '',\n    loaded: __NOOP,\n    save_campaign_params: true,\n    custom_campaign_params: [],\n    custom_blocked_useragents: [],\n    save_referrer: true,\n    capture_pageview: true,\n    capture_pageleave: 'if_capture_pageview', // We'll only capture pageleave events if capture_pageview is also true\n    debug: (location && isString(location?.search) && location.search.indexOf('__posthog_debug=true') !== -1) || false,\n    cookie_expiration: 365,\n    upgrade: false,\n    disable_session_recording: false,\n    disable_persistence: false,\n    disable_web_experiments: true, // disabled in beta.\n    disable_surveys: false,\n    disable_external_dependency_loading: false,\n    enable_recording_console_log: undefined, // When undefined, it falls back to the server-side setting\n    secure_cookie: window?.location?.protocol === 'https:',\n    ip: true,\n    opt_out_capturing_by_default: false,\n    opt_out_persistence_by_default: false,\n    opt_out_useragent_filter: false,\n    opt_out_capturing_persistence_type: 'localStorage',\n    opt_out_capturing_cookie_prefix: null,\n    opt_in_site_apps: false,\n    property_denylist: [],\n    respect_dnt: false,\n    sanitize_properties: null,\n    request_headers: {}, // { header: value, header2: value }\n    request_batching: true,\n    properties_string_max_length: 65535,\n    session_recording: {},\n    mask_all_element_attributes: false,\n    mask_all_text: false,\n    mask_personal_data_properties: false,\n    custom_personal_data_properties: [],\n    advanced_disable_decide: false,\n    advanced_disable_feature_flags: false,\n    advanced_disable_feature_flags_on_first_load: false,\n    advanced_disable_toolbar_metrics: false,\n    feature_flag_request_timeout_ms: 3000,\n    on_request_error: (res) => {\n        const error = 'Bad HTTP status: ' + res.statusCode + ' ' + res.text\n        logger.error(error)\n    },\n    get_device_id: (uuid) => uuid,\n    capture_performance: undefined,\n    name: 'posthog',\n    bootstrap: {},\n    disable_compression: false,\n    session_idle_timeout_seconds: 30 * 60, // 30 minutes\n    person_profiles: 'identified_only',\n    before_send: undefined,\n\n    // Used for internal testing\n    _onCapture: __NOOP,\n})\n\nexport const configRenames = (origConfig: Partial<PostHogConfig>): Partial<PostHogConfig> => {\n    const renames: Partial<PostHogConfig> = {}\n    if (!isUndefined(origConfig.process_person)) {\n        renames.person_profiles = origConfig.process_person\n    }\n    if (!isUndefined(origConfig.xhr_headers)) {\n        renames.request_headers = origConfig.xhr_headers\n    }\n    if (!isUndefined(origConfig.cookie_name)) {\n        renames.persistence_name = origConfig.cookie_name\n    }\n    if (!isUndefined(origConfig.disable_cookie)) {\n        renames.disable_persistence = origConfig.disable_cookie\n    }\n    if (!isUndefined(origConfig.store_google)) {\n        renames.save_campaign_params = origConfig.store_google\n    }\n    if (!isUndefined(origConfig.verbose)) {\n        renames.debug = origConfig.verbose\n    }\n    // on_xhr_error is not present, as the type is different to on_request_error\n\n    // the original config takes priority over the renames\n    const newConfig = extend({}, renames, origConfig)\n\n    // merge property_blacklist into property_denylist\n    if (isArray(origConfig.property_blacklist)) {\n        if (isUndefined(origConfig.property_denylist)) {\n            newConfig.property_denylist = origConfig.property_blacklist\n        } else if (isArray(origConfig.property_denylist)) {\n            newConfig.property_denylist = [...origConfig.property_blacklist, ...origConfig.property_denylist]\n        } else {\n            logger.error('Invalid value for property_denylist config: ' + origConfig.property_denylist)\n        }\n    }\n\n    return newConfig\n}\n\nclass DeprecatedWebPerformanceObserver {\n    get _forceAllowLocalhost(): boolean {\n        return this.__forceAllowLocalhost\n    }\n\n    set _forceAllowLocalhost(value: boolean) {\n        logger.error(\n            'WebPerformanceObserver is deprecated and has no impact on network capture. Use `_forceAllowLocalhostNetworkCapture` on `posthog.sessionRecording`'\n        )\n        this.__forceAllowLocalhost = value\n    }\n\n    private __forceAllowLocalhost: boolean = false\n}\n\n/**\n * PostHog Library Object\n * @constructor\n */\nexport class PostHog {\n    __loaded: boolean\n    config: PostHogConfig\n\n    rateLimiter: RateLimiter\n    scrollManager: ScrollManager\n    pageViewManager: PageViewManager\n    featureFlags: PostHogFeatureFlags\n    surveys: PostHogSurveys\n    experiments: WebExperiments\n    toolbar: Toolbar\n    exceptions: PostHogExceptions\n    consent: ConsentManager\n\n    // These are instance-specific state created after initialisation\n    persistence?: PostHogPersistence\n    sessionPersistence?: PostHogPersistence\n    sessionManager?: SessionIdManager\n    sessionPropsManager?: SessionPropsManager\n    requestRouter: RequestRouter\n    siteApps?: SiteApps\n    autocapture?: Autocapture\n    heatmaps?: Heatmaps\n    webVitalsAutocapture?: WebVitalsAutocapture\n    exceptionObserver?: ExceptionObserver\n    deadClicksAutocapture?: DeadClicksAutocapture\n\n    _requestQueue?: RequestQueue\n    _retryQueue?: RetryQueue\n    sessionRecording?: SessionRecording\n    webPerformance = new DeprecatedWebPerformanceObserver()\n\n    _initialPageviewCaptured: boolean\n    _triggered_notifs: any\n    compression?: Compression\n    __request_queue: QueuedRequestOptions[]\n    analyticsDefaultEndpoint: string\n    version = Config.LIB_VERSION\n    _initialPersonProfilesConfig: 'always' | 'never' | 'identified_only' | null\n    _cachedIdentify: string | null\n\n    SentryIntegration: typeof SentryIntegration\n    sentryIntegration: (options?: SentryIntegrationOptions) => ReturnType<typeof sentryIntegration>\n\n    private _internalEventEmitter = new SimpleEventEmitter()\n\n    // Legacy property to support existing usage - this isn't technically correct but it's what it has always been - a proxy for flags being loaded\n    public get decideEndpointWasHit(): boolean {\n        return this.featureFlags?.hasLoadedFlags ?? false\n    }\n\n    /** DEPRECATED: We keep this to support existing usage but now one should just call .setPersonProperties */\n    people: {\n        set: (prop: string | Properties, to?: string, callback?: RequestCallback) => void\n        set_once: (prop: string | Properties, to?: string, callback?: RequestCallback) => void\n    }\n\n    constructor() {\n        this.config = defaultConfig()\n\n        this.SentryIntegration = SentryIntegration\n        this.sentryIntegration = (options?: SentryIntegrationOptions) => sentryIntegration(this, options)\n        this.__request_queue = []\n        this.__loaded = false\n        this.analyticsDefaultEndpoint = '/e/'\n        this._initialPageviewCaptured = false\n        this._initialPersonProfilesConfig = null\n        this._cachedIdentify = null\n        this.featureFlags = new PostHogFeatureFlags(this)\n        this.toolbar = new Toolbar(this)\n        this.scrollManager = new ScrollManager(this)\n        this.pageViewManager = new PageViewManager(this)\n        this.surveys = new PostHogSurveys(this)\n        this.experiments = new WebExperiments(this)\n        this.exceptions = new PostHogExceptions(this)\n        this.rateLimiter = new RateLimiter(this)\n        this.requestRouter = new RequestRouter(this)\n        this.consent = new ConsentManager(this)\n\n        // NOTE: See the property definition for deprecation notice\n        this.people = {\n            set: (prop: string | Properties, to?: string, callback?: RequestCallback) => {\n                const setProps = isString(prop) ? { [prop]: to } : prop\n                this.setPersonProperties(setProps)\n                callback?.({} as any)\n            },\n            set_once: (prop: string | Properties, to?: string, callback?: RequestCallback) => {\n                const setProps = isString(prop) ? { [prop]: to } : prop\n                this.setPersonProperties(undefined, setProps)\n                callback?.({} as any)\n            },\n        }\n\n        this.on('eventCaptured', (data) => logger.info(`send \"${data?.event}\"`, data))\n    }\n\n    // Initialization methods\n\n    /**\n     * This function initializes a new instance of the PostHog capturing object.\n     * All new instances are added to the main posthog object as sub properties (such as\n     * posthog.library_name) and also returned by this function. To define a\n     * second instance on the page, you would call:\n     *\n     *     posthog.init('new token', { your: 'config' }, 'library_name');\n     *\n     * and use it like so:\n     *\n     *     posthog.library_name.capture(...);\n     *\n     * @param {String} token   Your PostHog API token\n     * @param {Object} [config]  A dictionary of config options to override. <a href=\"https://github.com/posthog/posthog-js/blob/6e0e873/src/posthog-core.js#L57-L91\">See a list of default config options</a>.\n     * @param {String} [name]    The name for the new posthog instance that you want created\n     */\n    init(\n        token: string,\n        config?: OnlyValidKeys<Partial<PostHogConfig>, Partial<PostHogConfig>>,\n        name?: string\n    ): PostHog | undefined {\n        if (!name || name === PRIMARY_INSTANCE_NAME) {\n            // This means we are initializing the primary instance (i.e. this)\n            return this._init(token, config, name)\n        } else {\n            const namedPosthog = instances[name] ?? new PostHog()\n            namedPosthog._init(token, config, name)\n            instances[name] = namedPosthog\n\n            // Add as a property to the primary instance (this isn't type-safe but its how it was always done)\n            ;(instances[PRIMARY_INSTANCE_NAME] as any)[name] = namedPosthog\n\n            return namedPosthog\n        }\n    }\n\n    // posthog._init(token:string, config:object, name:string)\n    //\n    // This function sets up the current instance of the posthog\n    // library.  The difference between this method and the init(...)\n    // method is this one initializes the actual instance, whereas the\n    // init(...) method sets up a new library and calls _init on it.\n    //\n    // Note that there are operations that can be asynchronous, so we\n    // accept a callback that is called when all the asynchronous work\n    // is done. Note that we do not use promises because we want to be\n    // IE11 compatible. We could use polyfills, which would make the\n    // code a bit cleaner, but will add some overhead.\n    //\n    _init(token: string, config: Partial<PostHogConfig> = {}, name?: string): PostHog {\n        if (isUndefined(token) || isEmptyString(token)) {\n            logger.critical(\n                'PostHog was initialized without a token. This likely indicates a misconfiguration. Please check the first argument passed to posthog.init()'\n            )\n            return this\n        }\n\n        if (this.__loaded) {\n            logger.warn('You have already initialized PostHog! Re-initializing is a no-op')\n            return this\n        }\n\n        this.__loaded = true\n        this.config = {} as PostHogConfig // will be set right below\n        this._triggered_notifs = []\n\n        if (config.person_profiles) {\n            this._initialPersonProfilesConfig = config.person_profiles\n        }\n\n        this.set_config(\n            extend({}, defaultConfig(), configRenames(config), {\n                name: name,\n                token: token,\n            })\n        )\n\n        if (this.config.on_xhr_error) {\n            logger.error('on_xhr_error is deprecated. Use on_request_error instead')\n        }\n\n        this.compression = config.disable_compression ? undefined : Compression.GZipJS\n\n        this.persistence = new PostHogPersistence(this.config)\n        this.sessionPersistence =\n            this.config.persistence === 'sessionStorage' || this.config.persistence === 'memory'\n                ? this.persistence\n                : new PostHogPersistence({ ...this.config, persistence: 'sessionStorage' })\n\n        // should I store the initial person profiles config in persistence?\n        const initialPersistenceProps = { ...this.persistence.props }\n        const initialSessionProps = { ...this.sessionPersistence.props }\n\n        this._requestQueue = new RequestQueue((req) => this._send_retriable_request(req))\n        this._retryQueue = new RetryQueue(this)\n        this.__request_queue = []\n\n        if (!this.config.__preview_experimental_cookieless_mode) {\n            this.sessionManager = new SessionIdManager(this)\n            this.sessionPropsManager = new SessionPropsManager(this, this.sessionManager, this.persistence)\n        }\n\n        new TracingHeaders(this).startIfEnabledOrStop()\n\n        this.siteApps = new SiteApps(this)\n        this.siteApps?.init()\n\n        if (!this.config.__preview_experimental_cookieless_mode) {\n            this.sessionRecording = new SessionRecording(this)\n            this.sessionRecording.startIfEnabledOrStop()\n        }\n\n        if (!this.config.disable_scroll_properties) {\n            this.scrollManager.startMeasuringScrollPosition()\n        }\n\n        this.autocapture = new Autocapture(this)\n        this.autocapture.startIfEnabled()\n        this.surveys.loadIfEnabled()\n\n        this.heatmaps = new Heatmaps(this)\n        this.heatmaps.startIfEnabled()\n\n        this.webVitalsAutocapture = new WebVitalsAutocapture(this)\n\n        this.exceptionObserver = new ExceptionObserver(this)\n        this.exceptionObserver.startIfEnabled()\n\n        this.deadClicksAutocapture = new DeadClicksAutocapture(this, isDeadClicksEnabledForAutocapture)\n        this.deadClicksAutocapture.startIfEnabled()\n\n        // if any instance on the page has debug = true, we set the\n        // global debug to be true\n        Config.DEBUG = Config.DEBUG || this.config.debug\n        if (Config.DEBUG) {\n            logger.info('Starting in debug mode', {\n                this: this,\n                config,\n                thisC: { ...this.config },\n                p: initialPersistenceProps,\n                s: initialSessionProps,\n            })\n        }\n\n        this._sync_opt_out_with_persistence()\n\n        // isUndefined doesn't provide typehint here so wouldn't reduce bundle as we'd need to assign\n        // eslint-disable-next-line posthog-js/no-direct-undefined-check\n        if (config.bootstrap?.distinctID !== undefined) {\n            const uuid = this.config.get_device_id(uuidv7())\n            const deviceID = config.bootstrap?.isIdentifiedID ? uuid : config.bootstrap.distinctID\n            this.persistence.set_property(USER_STATE, config.bootstrap?.isIdentifiedID ? 'identified' : 'anonymous')\n            this.register({\n                distinct_id: config.bootstrap.distinctID,\n                $device_id: deviceID,\n            })\n        }\n\n        if (this._hasBootstrappedFeatureFlags()) {\n            const activeFlags = Object.keys(config.bootstrap?.featureFlags || {})\n                .filter((flag) => !!config.bootstrap?.featureFlags?.[flag])\n                .reduce(\n                    (res: Record<string, string | boolean>, key) => (\n                        (res[key] = config.bootstrap?.featureFlags?.[key] || false), res\n                    ),\n                    {}\n                )\n            const featureFlagPayloads = Object.keys(config.bootstrap?.featureFlagPayloads || {})\n                .filter((key) => activeFlags[key])\n                .reduce((res: Record<string, JsonType>, key) => {\n                    if (config.bootstrap?.featureFlagPayloads?.[key]) {\n                        res[key] = config.bootstrap?.featureFlagPayloads?.[key]\n                    }\n                    return res\n                }, {})\n\n            this.featureFlags.receivedFeatureFlags({ featureFlags: activeFlags, featureFlagPayloads })\n        }\n\n        if (this.config.__preview_experimental_cookieless_mode) {\n            this.register_once(\n                {\n                    distinct_id: COOKIELESS_SENTINEL_VALUE,\n                    $device_id: null,\n                },\n                ''\n            )\n        } else if (!this.get_distinct_id()) {\n            // There is no need to set the distinct id\n            // or the device id if something was already stored\n            // in the persistence\n            const uuid = this.config.get_device_id(uuidv7())\n\n            this.register_once(\n                {\n                    distinct_id: uuid,\n                    $device_id: uuid,\n                },\n                ''\n            )\n            // distinct id == $device_id is a proxy for anonymous user\n            this.persistence.set_property(USER_STATE, 'anonymous')\n        }\n        // Set up event handler for pageleave\n        // Use `onpagehide` if available, see https://calendar.perfplanet.com/2020/beaconing-in-practice/#beaconing-reliability-avoiding-abandons\n        //\n        // Not making it passive to try and force the browser to handle this before the page is unloaded\n        addEventListener(window, 'onpagehide' in self ? 'pagehide' : 'unload', this._handle_unload.bind(this), {\n            passive: false,\n        })\n\n        this.toolbar.maybeLoadToolbar()\n\n        // We want to avoid promises for IE11 compatibility, so we use callbacks here\n        if (config.segment) {\n            setupSegmentIntegration(this, () => this._loaded())\n        } else {\n            this._loaded()\n        }\n\n        if (isFunction(this.config._onCapture) && this.config._onCapture !== __NOOP) {\n            logger.warn('onCapture is deprecated. Please use `before_send` instead')\n            this.on('eventCaptured', (data) => this.config._onCapture(data.event, data))\n        }\n\n        return this\n    }\n\n    _onRemoteConfig(config: RemoteConfig) {\n        if (!(document && document.body)) {\n            logger.info('document not ready yet, trying again in 500 milliseconds...')\n            setTimeout(() => {\n                this._onRemoteConfig(config)\n            }, 500)\n            return\n        }\n\n        this.compression = undefined\n        if (config.supportedCompression && !this.config.disable_compression) {\n            this.compression = includes(config['supportedCompression'], Compression.GZipJS)\n                ? Compression.GZipJS\n                : includes(config['supportedCompression'], Compression.Base64)\n                  ? Compression.Base64\n                  : undefined\n        }\n\n        if (config.analytics?.endpoint) {\n            this.analyticsDefaultEndpoint = config.analytics.endpoint\n        }\n\n        this.set_config({\n            person_profiles: this._initialPersonProfilesConfig ? this._initialPersonProfilesConfig : 'identified_only',\n        })\n\n        this.siteApps?.onRemoteConfig(config)\n        this.sessionRecording?.onRemoteConfig(config)\n        this.autocapture?.onRemoteConfig(config)\n        this.heatmaps?.onRemoteConfig(config)\n        this.surveys.onRemoteConfig(config)\n        this.webVitalsAutocapture?.onRemoteConfig(config)\n        this.exceptionObserver?.onRemoteConfig(config)\n        this.deadClicksAutocapture?.onRemoteConfig(config)\n    }\n\n    _loaded(): void {\n        try {\n            this.config.loaded(this)\n        } catch (err) {\n            logger.critical('`loaded` function failed', err)\n        }\n\n        this._start_queue_if_opted_in()\n\n        // this happens after \"loaded\" so a user can call identify or any other things before the pageview fires\n        if (this.config.capture_pageview) {\n            // NOTE: We want to fire this on the next tick as the previous implementation had this side effect\n            // and some clients may rely on it\n            setTimeout(() => {\n                if (this.consent.isOptedIn()) {\n                    this._captureInitialPageview()\n                }\n            }, 1)\n        }\n\n        new RemoteConfigLoader(this).load()\n        this.featureFlags.decide()\n    }\n\n    _start_queue_if_opted_in(): void {\n        if (!this.has_opted_out_capturing()) {\n            if (this.config.request_batching) {\n                this._requestQueue?.enable()\n            }\n        }\n    }\n\n    _dom_loaded(): void {\n        if (!this.has_opted_out_capturing()) {\n            eachArray(this.__request_queue, (item) => this._send_retriable_request(item))\n        }\n\n        this.__request_queue = []\n        this._start_queue_if_opted_in()\n    }\n\n    _handle_unload(): void {\n        if (!this.config.request_batching) {\n            if (this._shouldCapturePageleave()) {\n                this.capture('$pageleave', null, { transport: 'sendBeacon' })\n            }\n            return\n        }\n\n        if (this._shouldCapturePageleave()) {\n            this.capture('$pageleave')\n        }\n\n        this._requestQueue?.unload()\n        this._retryQueue?.unload()\n    }\n\n    _send_request(options: QueuedRequestOptions): void {\n        if (!this.__loaded) {\n            return\n        }\n\n        if (ENQUEUE_REQUESTS) {\n            this.__request_queue.push(options)\n            return\n        }\n\n        if (this.rateLimiter.isServerRateLimited(options.batchKey)) {\n            return\n        }\n\n        options.transport = options.transport || this.config.api_transport\n        options.url = extendURLParams(options.url, {\n            // Whether to detect ip info or not\n            ip: this.config.ip ? 1 : 0,\n        })\n        options.headers = {\n            ...this.config.request_headers,\n        }\n        options.compression = options.compression === 'best-available' ? this.compression : options.compression\n\n        // Specially useful if you're doing SSR with NextJS\n        // Users must be careful when tweaking `cache` because they might get out-of-date feature flags\n        options.fetchOptions = options.fetchOptions || this.config.fetch_options\n\n        request({\n            ...options,\n            callback: (response) => {\n                this.rateLimiter.checkForLimiting(response)\n\n                if (response.statusCode >= 400) {\n                    this.config.on_request_error?.(response)\n                }\n\n                options.callback?.(response)\n            },\n        })\n    }\n\n    _send_retriable_request(options: QueuedRequestOptions): void {\n        if (this._retryQueue) {\n            this._retryQueue.retriableRequest(options)\n        } else {\n            this._send_request(options)\n        }\n    }\n\n    /**\n     * _execute_array() deals with processing any posthog function\n     * calls that were called before the PostHog library were loaded\n     * (and are thus stored in an array so they can be called later)\n     *\n     * Note: we fire off all the posthog function calls && user defined\n     * functions BEFORE we fire off posthog capturing calls. This is so\n     * identify/register/set_config calls can properly modify early\n     * capturing calls.\n     *\n     * @param {Array} array\n     */\n    _execute_array(array: SnippetArrayItem[]): void {\n        let fn_name\n        const alias_calls: SnippetArrayItem[] = []\n        const other_calls: SnippetArrayItem[] = []\n        const capturing_calls: SnippetArrayItem[] = []\n        eachArray(array, (item) => {\n            if (item) {\n                fn_name = item[0]\n                if (isArray(fn_name)) {\n                    capturing_calls.push(item) // chained call e.g. posthog.get_group().set()\n                } else if (isFunction(item)) {\n                    ;(item as any).call(this)\n                } else if (isArray(item) && fn_name === 'alias') {\n                    alias_calls.push(item)\n                } else if (isArray(item) && fn_name.indexOf('capture') !== -1 && isFunction((this as any)[fn_name])) {\n                    capturing_calls.push(item)\n                } else {\n                    other_calls.push(item)\n                }\n            }\n        })\n\n        const execute = function (calls: SnippetArrayItem[], thisArg: any) {\n            eachArray(\n                calls,\n                function (item) {\n                    if (isArray(item[0])) {\n                        // chained call\n                        let caller = thisArg\n                        each(item, function (call) {\n                            caller = caller[call[0]].apply(caller, call.slice(1))\n                        })\n                    } else {\n                        // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n                        // @ts-ignore\n                        this[item[0]].apply(this, item.slice(1))\n                    }\n                },\n                thisArg\n            )\n        }\n\n        execute(alias_calls, this)\n        execute(other_calls, this)\n        execute(capturing_calls, this)\n    }\n\n    _hasBootstrappedFeatureFlags(): boolean {\n        return (\n            (this.config.bootstrap?.featureFlags && Object.keys(this.config.bootstrap?.featureFlags).length > 0) ||\n            false\n        )\n    }\n\n    /**\n     * push() keeps the standard async-array-push\n     * behavior around after the lib is loaded.\n     * This is only useful for external integrations that\n     * do not wish to rely on our convenience methods\n     * (created in the snippet).\n     *\n     * ### Usage:\n     *     posthog.push(['register', { a: 'b' }]);\n     *\n     * @param {Array} item A [function_name, args...] array to be executed\n     */\n    push(item: SnippetArrayItem): void {\n        this._execute_array([item])\n    }\n\n    /**\n     * Capture an event. This is the most important and\n     * frequently used PostHog function.\n     *\n     * ### Usage:\n     *\n     *     // capture an event named 'Registered'\n     *     posthog.capture('Registered', {'Gender': 'Male', 'Age': 21});\n     *\n     *     // capture an event using navigator.sendBeacon\n     *     posthog.capture('Left page', {'duration_seconds': 35}, {transport: 'sendBeacon'});\n     *\n     * @param {String} event_name The name of the event. This can be anything the user does - 'Button Click', 'Sign Up', 'Item Purchased', etc.\n     * @param {Object} [properties] A set of properties to include with the event you're sending. These describe the user who did the event or details about the event itself.\n     * @param {Object} [config] Optional configuration for this capture request.\n     * @param {String} [config.transport] Transport method for network request ('XHR' or 'sendBeacon').\n     * @param {Date} [config.timestamp] Timestamp is a Date object. If not set, it'll automatically be set to the current time.\n     */\n    capture(\n        event_name: EventName,\n        properties?: Properties | null,\n        options?: CaptureOptions\n    ): CaptureResult | undefined {\n        // While developing, a developer might purposefully _not_ call init(),\n        // in this case, we would like capture to be a noop.\n        if (!this.__loaded || !this.persistence || !this.sessionPersistence || !this._requestQueue) {\n            logger.uninitializedWarning('posthog.capture')\n            return\n        }\n\n        if (this.consent.isOptedOut()) {\n            return\n        }\n\n        // typing doesn't prevent interesting data\n        if (isUndefined(event_name) || !isString(event_name)) {\n            logger.error('No event name provided to posthog.capture')\n            return\n        }\n\n        if (!this.config.opt_out_useragent_filter && this._is_bot()) {\n            return\n        }\n\n        const clientRateLimitContext = !options?.skip_client_rate_limiting\n            ? this.rateLimiter.clientRateLimitContext()\n            : undefined\n\n        if (clientRateLimitContext?.isRateLimited) {\n            logger.critical('This capture call is ignored due to client rate limiting.')\n            return\n        }\n\n        // update persistence\n        this.sessionPersistence.update_search_keyword()\n\n        // The initial campaign/referrer props need to be stored in the regular persistence, as they are there to mimic\n        // the person-initial props. The non-initial versions are stored in the sessionPersistence, as they are sent\n        // with every event and used by the session table to create session-initial props.\n        if (this.config.save_campaign_params) {\n            this.sessionPersistence.update_campaign_params()\n        }\n        if (this.config.save_referrer) {\n            this.sessionPersistence.update_referrer_info()\n        }\n\n        if (this.config.save_campaign_params || this.config.save_referrer) {\n            this.persistence.set_initial_person_info()\n        }\n\n        const systemTime = new Date()\n        const timestamp = options?.timestamp || systemTime\n\n        const uuid = uuidv7()\n        let data: CaptureResult = {\n            uuid,\n            event: event_name,\n            properties: this._calculate_event_properties(event_name, properties || {}, timestamp, uuid),\n        }\n\n        if (clientRateLimitContext) {\n            data.properties['$lib_rate_limit_remaining_tokens'] = clientRateLimitContext.remainingTokens\n        }\n\n        const setProperties = options?.$set\n        if (setProperties) {\n            data.$set = options?.$set\n        }\n        const setOnceProperties = this._calculate_set_once_properties(options?.$set_once)\n        if (setOnceProperties) {\n            data.$set_once = setOnceProperties\n        }\n\n        data = _copyAndTruncateStrings(data, options?._noTruncate ? null : this.config.properties_string_max_length)\n        data.timestamp = timestamp\n        if (!isUndefined(options?.timestamp)) {\n            data.properties['$event_time_override_provided'] = true\n            data.properties['$event_time_override_system_time'] = systemTime\n        }\n\n        // Top-level $set overriding values from the one from properties is taken from the plugin-server normalizeEvent\n        // This doesn't handle $set_once, because posthog-people doesn't either\n        const finalSet = { ...data.properties['$set'], ...data['$set'] }\n        if (!isEmptyObject(finalSet)) {\n            this.setPersonPropertiesForFlags(finalSet)\n        }\n\n        if (!isNullish(this.config.before_send)) {\n            const beforeSendResult = this._runBeforeSend(data)\n            if (!beforeSendResult) {\n                return\n            } else {\n                data = beforeSendResult\n            }\n        }\n\n        this._internalEventEmitter.emit('eventCaptured', data)\n\n        const requestOptions: QueuedRequestOptions = {\n            method: 'POST',\n            url: options?._url ?? this.requestRouter.endpointFor('api', this.analyticsDefaultEndpoint),\n            data,\n            compression: 'best-available',\n            batchKey: options?._batchKey,\n        }\n\n        if (this.config.request_batching && (!options || options?._batchKey) && !options?.send_instantly) {\n            this._requestQueue.enqueue(requestOptions)\n        } else {\n            this._send_retriable_request(requestOptions)\n        }\n\n        return data\n    }\n\n    _addCaptureHook(callback: (eventName: string, eventPayload?: CaptureResult) => void): () => void {\n        return this.on('eventCaptured', (data) => callback(data.event, data))\n    }\n\n    _calculate_event_properties(\n        event_name: string,\n        event_properties: Properties,\n        timestamp?: Date,\n        uuid?: string\n    ): Properties {\n        timestamp = timestamp || new Date()\n        if (!this.persistence || !this.sessionPersistence) {\n            return event_properties\n        }\n\n        // set defaults\n        const startTimestamp = this.persistence.remove_event_timer(event_name)\n        let properties = { ...event_properties }\n        properties['token'] = this.config.token\n\n        if (this.config.__preview_experimental_cookieless_mode) {\n            // Set a flag to tell the plugin server to use cookieless server hash mode\n            properties[COOKIELESS_MODE_FLAG_PROPERTY] = true\n        }\n\n        if (event_name === '$snapshot') {\n            const persistenceProps = { ...this.persistence.properties(), ...this.sessionPersistence.properties() }\n            properties['distinct_id'] = persistenceProps.distinct_id\n            if (\n                // we spotted one customer that was managing to send `false` for ~9k events a day\n                !(isString(properties['distinct_id']) || isNumber(properties['distinct_id'])) ||\n                isEmptyString(properties['distinct_id'])\n            ) {\n                logger.error('Invalid distinct_id for replay event. This indicates a bug in your implementation')\n            }\n            return properties\n        }\n\n        const infoProperties = Info.properties({\n            maskPersonalDataProperties: this.config.mask_personal_data_properties,\n            customPersonalDataProperties: this.config.custom_personal_data_properties,\n        })\n\n        if (this.sessionManager) {\n            const { sessionId, windowId } = this.sessionManager.checkAndGetSessionAndWindowId()\n            properties['$session_id'] = sessionId\n            properties['$window_id'] = windowId\n        }\n\n        if (this.sessionRecording) {\n            properties['$recording_status'] = this.sessionRecording.status\n        }\n\n        if (this.requestRouter.region === RequestRouterRegion.CUSTOM) {\n            properties['$lib_custom_api_host'] = this.config.api_host\n        }\n\n        let pageviewProperties: Record<string, any>\n        if (event_name === '$pageview') {\n            pageviewProperties = this.pageViewManager.doPageView(timestamp, uuid)\n        } else if (event_name === '$pageleave') {\n            pageviewProperties = this.pageViewManager.doPageLeave(timestamp)\n        } else {\n            pageviewProperties = this.pageViewManager.doEvent()\n        }\n        properties = extend(properties, pageviewProperties)\n\n        if (event_name === '$pageview' && document) {\n            properties['title'] = document.title\n        }\n\n        // set $duration if time_event was previously called for this event\n        if (!isUndefined(startTimestamp)) {\n            const duration_in_ms = timestamp.getTime() - startTimestamp\n            properties['$duration'] = parseFloat((duration_in_ms / 1000).toFixed(3))\n        }\n\n        // this is only added when this.config.opt_out_useragent_filter is true,\n        // or it would always add \"browser\"\n        if (userAgent && this.config.opt_out_useragent_filter) {\n            properties['$browser_type'] = this._is_bot() ? 'bot' : 'browser'\n        }\n\n        // note: extend writes to the first object, so lets make sure we\n        // don't write to the persistence properties object and info\n        // properties object by passing in a new object\n\n        // update properties with pageview info and super-properties\n        properties = extend(\n            {},\n            infoProperties,\n            this.persistence.properties(),\n            this.sessionPersistence.properties(),\n            properties\n        )\n\n        properties['$is_identified'] = this._isIdentified()\n\n        if (isArray(this.config.property_denylist)) {\n            each(this.config.property_denylist, function (denylisted_prop) {\n                delete properties[denylisted_prop]\n            })\n        } else {\n            logger.error(\n                'Invalid value for property_denylist config: ' +\n                    this.config.property_denylist +\n                    ' or property_blacklist config: ' +\n                    this.config.property_blacklist\n            )\n        }\n\n        const sanitize_properties = this.config.sanitize_properties\n        if (sanitize_properties) {\n            logger.error('sanitize_properties is deprecated. Use before_send instead')\n            properties = sanitize_properties(properties, event_name)\n        }\n\n        // add person processing flag as very last step, so it cannot be overridden\n        const hasPersonProcessing = this._hasPersonProcessing()\n        properties['$process_person_profile'] = hasPersonProcessing\n        // if the event has person processing, ensure that all future events will too, even if the setting changes\n        if (hasPersonProcessing) {\n            this._requirePersonProcessing('_calculate_event_properties')\n        }\n\n        return properties\n    }\n\n    _calculate_set_once_properties(dataSetOnce?: Properties): Properties | undefined {\n        if (!this.persistence || !this._hasPersonProcessing()) {\n            return dataSetOnce\n        }\n        // if we're an identified person, send initial params with every event\n        let setOnceProperties = extend({}, this.persistence.get_initial_props(), dataSetOnce || {})\n        const sanitize_properties = this.config.sanitize_properties\n        if (sanitize_properties) {\n            logger.error('sanitize_properties is deprecated. Use before_send instead')\n            setOnceProperties = sanitize_properties(setOnceProperties, '$set_once')\n        }\n        if (isEmptyObject(setOnceProperties)) {\n            return undefined\n        }\n        return setOnceProperties\n    }\n\n    /**\n     * Register a set of super properties, which are included with all\n     * events. This will overwrite previous super property values, except\n     * for session properties (see `register_for_session(properties)`).\n     *\n     * ### Usage:\n     *\n     *     // register 'Gender' as a super property\n     *     posthog.register({'Gender': 'Female'});\n     *\n     *     // register several super properties when a user signs up\n     *     posthog.register({\n     *         'Email': 'jdoe@example.com',\n     *         'Account Type': 'Free'\n     *     });\n     *\n     *     // Display the properties\n     *     console.log(posthog.persistence.properties())\n     *\n     * @param {Object} properties properties to store about the user\n     * @param {Number} [days] How many days since the user's last visit to store the super properties\n     */\n    register(properties: Properties, days?: number): void {\n        this.persistence?.register(properties, days)\n    }\n\n    /**\n     * Register a set of super properties only once. These will not\n     * overwrite previous super property values, unlike register().\n     *\n     * ### Usage:\n     *\n     *     // register a super property for the first time only\n     *     posthog.register_once({\n     *         'First Login Date': new Date().toISOString()\n     *     });\n     *\n     *     // Display the properties\n     *     console.log(posthog.persistence.properties())\n     *\n     * ### Notes:\n     *\n     * If default_value is specified, current super properties\n     * with that value will be overwritten.\n     *\n     * @param {Object} properties An associative array of properties to store about the user\n     * @param {*} [default_value] Value to override if already set in super properties (ex: 'False') Default: 'None'\n     * @param {Number} [days] How many days since the users last visit to store the super properties\n     */\n    register_once(properties: Properties, default_value?: Property, days?: number): void {\n        this.persistence?.register_once(properties, default_value, days)\n    }\n\n    /**\n     * Register a set of super properties, which are included with all events, but only\n     * for THIS SESSION. These will overwrite all other super property values.\n     *\n     * Unlike regular super properties, which last in LocalStorage for a long time,\n     * session super properties get cleared after a session ends.\n     *\n     * ### Usage:\n     *\n     *     // register on all events this session\n     *     posthog.register_for_session({'referer': customGetReferer()});\n     *\n     *     // register several session super properties when a user signs up\n     *     posthog.register_for_session({\n     *         'selectedPlan': 'pro',\n     *         'completedSteps': 4,\n     *     });\n     *\n     *     // Display the properties\n     *     console.log(posthog.sessionPersistence.properties())\n     *\n     * @param {Object} properties An associative array of properties to store about the user\n     */\n    register_for_session(properties: Properties): void {\n        this.sessionPersistence?.register(properties)\n    }\n\n    /**\n     * Delete a super property stored with the current user.\n     *\n     * @param {String} property The name of the super property to remove\n     */\n    unregister(property: string): void {\n        this.persistence?.unregister(property)\n    }\n\n    /**\n     * Delete a session super property stored with the current user.\n     *\n     * @param {String} property The name of the session super property to remove\n     */\n    unregister_for_session(property: string): void {\n        this.sessionPersistence?.unregister(property)\n    }\n\n    _register_single(prop: string, value: Property) {\n        this.register({ [prop]: value })\n    }\n\n    /*\n     * Get feature flag value for user (supports multivariate flags).\n     *\n     * ### Usage:\n     *\n     *     if(posthog.getFeatureFlag('beta-feature') === 'some-value') { // do something }\n     *\n     * @param {Object|String} prop Key of the feature flag.\n     * @param {Object|String} options (optional) If {send_event: false}, we won't send an $feature_flag_call event to PostHog.\n     */\n    getFeatureFlag(key: string, options?: { send_event?: boolean }): boolean | string | undefined {\n        return this.featureFlags.getFeatureFlag(key, options)\n    }\n\n    /*\n     * Get feature flag payload value matching key for user (supports multivariate flags).\n     *\n     * ### Usage:\n     *\n     *     if(posthog.getFeatureFlag('beta-feature') === 'some-value') {\n     *          const someValue = posthog.getFeatureFlagPayload('beta-feature')\n     *          // do something\n     *     }\n     *\n     * @param {Object|String} prop Key of the feature flag.\n     */\n    getFeatureFlagPayload(key: string): JsonType {\n        const payload = this.featureFlags.getFeatureFlagPayload(key)\n        try {\n            return JSON.parse(payload as any)\n        } catch {\n            return payload\n        }\n    }\n\n    /*\n     * See if feature flag is enabled for user.\n     *\n     * ### Usage:\n     *\n     *     if(posthog.isFeatureEnabled('beta-feature')) { // do something }\n     *\n     * @param {Object|String} prop Key of the feature flag.\n     * @param {Object|String} options (optional) If {send_event: false}, we won't send an $feature_flag_call event to PostHog.\n     */\n    isFeatureEnabled(key: string, options?: { send_event: boolean }): boolean | undefined {\n        return this.featureFlags.isFeatureEnabled(key, options)\n    }\n\n    reloadFeatureFlags(): void {\n        this.featureFlags.reloadFeatureFlags()\n    }\n\n    /** Opt the user in or out of an early access feature. */\n    updateEarlyAccessFeatureEnrollment(key: string, isEnrolled: boolean): void {\n        this.featureFlags.updateEarlyAccessFeatureEnrollment(key, isEnrolled)\n    }\n\n    /** Get the list of early access features. To check enrollment status, use `isFeatureEnabled`. */\n    getEarlyAccessFeatures(callback: EarlyAccessFeatureCallback, force_reload = false): void {\n        return this.featureFlags.getEarlyAccessFeatures(callback, force_reload)\n    }\n\n    /**\n     * Exposes a set of events that PostHog will emit.\n     * e.g. `eventCaptured` is emitted immediately before trying to send an event\n     *\n     * Unlike  `onFeatureFlags` and `onSessionId` these are not called when the\n     * listener is registered, the first callback will be the next event\n     * _after_ registering a listener\n     */\n    on(event: 'eventCaptured', cb: (...args: any[]) => void): () => void {\n        return this._internalEventEmitter.on(event, cb)\n    }\n\n    /*\n     * Register an event listener that runs when feature flags become available or when they change.\n     * If there are flags, the listener is called immediately in addition to being called on future changes.\n     *\n     * ### Usage:\n     *\n     *     posthog.onFeatureFlags(function(featureFlags) { // do something })\n     *\n     * @param {Function} [callback] The callback function will be called once the feature flags are ready or when they are updated.\n     *                              It'll return a list of feature flags enabled for the user.\n     * @returns {Function} A function that can be called to unsubscribe the listener. Used by useEffect when the component unmounts.\n     */\n    onFeatureFlags(callback: (flags: string[], variants: Record<string, string | boolean>) => void): () => void {\n        return this.featureFlags.onFeatureFlags(callback)\n    }\n\n    /*\n     * Register an event listener that runs whenever the session id or window id change.\n     * If there is already a session id, the listener is called immediately in addition to being called on future changes.\n     *\n     * Can be used, for example, to sync the PostHog session id with a backend session.\n     *\n     * ### Usage:\n     *\n     *     posthog.onSessionId(function(sessionId, windowId) { // do something })\n     *\n     * @param {Function} [callback] The callback function will be called once a session id is present or when it or the window id are updated.\n     * @returns {Function} A function that can be called to unsubscribe the listener. E.g. Used by useEffect when the component unmounts.\n     */\n    onSessionId(callback: SessionIdChangedCallback): () => void {\n        return this.sessionManager?.onSessionId(callback) ?? (() => {})\n    }\n\n    /** Get list of all surveys. */\n    getSurveys(callback: SurveyCallback, forceReload = false): void {\n        this.surveys.getSurveys(callback, forceReload)\n    }\n\n    /** Get surveys that should be enabled for the current user. */\n    getActiveMatchingSurveys(callback: SurveyCallback, forceReload = false): void {\n        this.surveys.getActiveMatchingSurveys(callback, forceReload)\n    }\n\n    /** Render a survey on a specific element. */\n    renderSurvey(surveyId: string, selector: string): void {\n        this.surveys.renderSurvey(surveyId, selector)\n    }\n\n    /** Checks the feature flags associated with this Survey to see if the survey can be rendered. */\n    canRenderSurvey(surveyId: string): void {\n        this.surveys.canRenderSurvey(surveyId)\n    }\n\n    /** Get the next step of the survey: a question index or `end` */\n    getNextSurveyStep(\n        survey: Survey,\n        currentQuestionIndex: number,\n        response: string | string[] | number | null\n    ): number | SurveyQuestionBranchingType.End {\n        return this.surveys.getNextSurveyStep(survey, currentQuestionIndex, response)\n    }\n\n    /**\n     * Identify a user with a unique ID instead of a PostHog\n     * randomly generated distinct_id. If the method is never called,\n     * then unique visitors will be identified by a UUID that is generated\n     * the first time they visit the site.\n     *\n     * If user properties are passed, they are also sent to posthog.\n     *\n     * ### Usage:\n     *\n     *      posthog.identify('[user unique id]')\n     *      posthog.identify('[user unique id]', { email: 'john@example.com' })\n     *      posthog.identify('[user unique id]', {}, { referral_code: '12345' })\n     *\n     * ### Notes:\n     *\n     * You can call this function to overwrite a previously set\n     * unique ID for the current user.\n     *\n     * If the user has been identified ($user_state in persistence is set to 'identified'),\n     * then capture of $identify is skipped to avoid merging users. For example,\n     * if your system allows an admin user to impersonate another user.\n     *\n     * Then a single browser instance can have:\n     *\n     *  `identify('a') -> capture(1) -> identify('b') -> capture(2)`\n     *\n     * and capture 1 and capture 2 will have the correct distinct_id.\n     * but users a and b will NOT be merged in posthog.\n     *\n     * However, if reset is called then:\n     *\n     *  `identify('a') -> capture(1) -> reset() -> capture(2) -> identify('b') -> capture(3)`\n     *\n     * users a and b are not merged.\n     * Capture 1 is associated with user a.\n     * A new distinct id is generated for capture 2.\n     * which is merged with user b.\n     * So, capture 2 and 3 are associated with user b.\n     *\n     * If you want to merge two identified users, you can call posthog.alias\n     *\n     * @param {String} [new_distinct_id] A string that uniquely identifies a user. If not provided, the distinct_id currently in the persistent store (cookie or localStorage) will be used.\n     * @param {Object} [userPropertiesToSet] Optional: An associative array of properties to store about the user\n     * @param {Object} [userPropertiesToSetOnce] Optional: An associative array of properties to store about the user. If property is previously set, this does not override that value.\n     */\n    identify(new_distinct_id?: string, userPropertiesToSet?: Properties, userPropertiesToSetOnce?: Properties): void {\n        if (!this.__loaded || !this.persistence) {\n            return logger.uninitializedWarning('posthog.identify')\n        }\n        if (isNumber(new_distinct_id)) {\n            new_distinct_id = (new_distinct_id as number).toString()\n            logger.warn(\n                'The first argument to posthog.identify was a number, but it should be a string. It has been converted to a string.'\n            )\n        }\n\n        //if the new_distinct_id has not been set ignore the identify event\n        if (!new_distinct_id) {\n            logger.error('Unique user id has not been set in posthog.identify')\n            return\n        }\n\n        if (isDistinctIdStringLike(new_distinct_id)) {\n            logger.critical(\n                `The string \"${new_distinct_id}\" was set in posthog.identify which indicates an error. This ID should be unique to the user and not a hardcoded string.`\n            )\n            return\n        }\n\n        if (!this._requirePersonProcessing('posthog.identify')) {\n            return\n        }\n\n        const previous_distinct_id = this.get_distinct_id()\n        this.register({ $user_id: new_distinct_id })\n\n        if (!this.get_property('$device_id')) {\n            // The persisted distinct id might not actually be a device id at all\n            // it might be a distinct id of the user from before\n            const device_id = previous_distinct_id\n            this.register_once(\n                {\n                    $had_persisted_distinct_id: true,\n                    $device_id: device_id,\n                },\n                ''\n            )\n        }\n\n        // if the previous distinct id had an alias stored, then we clear it\n        if (new_distinct_id !== previous_distinct_id && new_distinct_id !== this.get_property(ALIAS_ID_KEY)) {\n            this.unregister(ALIAS_ID_KEY)\n            this.register({ distinct_id: new_distinct_id })\n        }\n\n        const isKnownAnonymous = (this.persistence.get_property(USER_STATE) || 'anonymous') === 'anonymous'\n\n        // send an $identify event any time the distinct_id is changing and the old ID is an anonymous ID\n        // - logic on the server will determine whether or not to do anything with it.\n        if (new_distinct_id !== previous_distinct_id && isKnownAnonymous) {\n            this.persistence.set_property(USER_STATE, 'identified')\n\n            // Update current user properties\n            this.setPersonPropertiesForFlags(userPropertiesToSet || {}, false)\n\n            this.capture(\n                '$identify',\n                {\n                    distinct_id: new_distinct_id,\n                    $anon_distinct_id: previous_distinct_id,\n                },\n                { $set: userPropertiesToSet || {}, $set_once: userPropertiesToSetOnce || {} }\n            )\n            // let the reload feature flag request know to send this previous distinct id\n            // for flag consistency\n            this.featureFlags.setAnonymousDistinctId(previous_distinct_id)\n\n            this._cachedIdentify = getIdentifyHash(new_distinct_id, userPropertiesToSet, userPropertiesToSetOnce)\n        } else if (userPropertiesToSet || userPropertiesToSetOnce) {\n            // If the distinct_id is not changing, but we have user properties to set, we can check if they have changed\n            // and if so, send a $set event\n\n            if (\n                this._cachedIdentify !== getIdentifyHash(new_distinct_id, userPropertiesToSet, userPropertiesToSetOnce)\n            ) {\n                this.setPersonProperties(userPropertiesToSet, userPropertiesToSetOnce)\n\n                this._cachedIdentify = getIdentifyHash(new_distinct_id, userPropertiesToSet, userPropertiesToSetOnce)\n            } else {\n                logger.info('A duplicate posthog.identify call was made with the same properties. It has been ignored.')\n            }\n        }\n\n        // Reload active feature flags if the user identity changes.\n        // Note we don't reload this on property changes as these get processed async\n        if (new_distinct_id !== previous_distinct_id) {\n            this.reloadFeatureFlags()\n            // also clear any stored flag calls\n            this.unregister(FLAG_CALL_REPORTED)\n        }\n    }\n\n    /**\n     * Sets properties for the Person associated with the current distinct_id. If config.person_profiles is set to\n     * identified_only, and a Person profile has not been created yet, this will create one.\n     *\n     *\n     * @param {Object} [userPropertiesToSet] Optional: An associative array of properties to store about the user\n     * @param {Object} [userPropertiesToSetOnce] Optional: An associative array of properties to store about the user. If property is previously set, this does not override that value.\n     */\n    setPersonProperties(userPropertiesToSet?: Properties, userPropertiesToSetOnce?: Properties): void {\n        if (!userPropertiesToSet && !userPropertiesToSetOnce) {\n            return\n        }\n\n        if (!this._requirePersonProcessing('posthog.setPersonProperties')) {\n            return\n        }\n\n        // Update current user properties\n        this.setPersonPropertiesForFlags(userPropertiesToSet || {})\n\n        // if exactly this $set call has been sent before, don't send it again - determine based on hash of properties\n\n        this.capture('$set', { $set: userPropertiesToSet || {}, $set_once: userPropertiesToSetOnce || {} })\n    }\n\n    /**\n     * Sets group analytics information for subsequent events and reloads feature flags.\n     *\n     * @param {String} groupType Group type (example: 'organization')\n     * @param {String} groupKey Group key (example: 'org::5')\n     * @param {Object} groupPropertiesToSet Optional properties to set for group\n     */\n    group(groupType: string, groupKey: string, groupPropertiesToSet?: Properties): void {\n        if (!groupType || !groupKey) {\n            logger.error('posthog.group requires a group type and group key')\n            return\n        }\n\n        if (!this._requirePersonProcessing('posthog.group')) {\n            return\n        }\n\n        const existingGroups = this.getGroups()\n\n        // if group key changes, remove stored group properties\n        if (existingGroups[groupType] !== groupKey) {\n            this.resetGroupPropertiesForFlags(groupType)\n        }\n\n        this.register({ $groups: { ...existingGroups, [groupType]: groupKey } })\n\n        if (groupPropertiesToSet) {\n            this.capture('$groupidentify', {\n                $group_type: groupType,\n                $group_key: groupKey,\n                $group_set: groupPropertiesToSet,\n            })\n            this.setGroupPropertiesForFlags({ [groupType]: groupPropertiesToSet })\n        }\n\n        // If groups change and no properties change, reload feature flags.\n        // The property change reload case is handled in setGroupPropertiesForFlags.\n        if (existingGroups[groupType] !== groupKey && !groupPropertiesToSet) {\n            this.reloadFeatureFlags()\n        }\n    }\n\n    /**\n     * Resets only the group properties of the user currently logged in.\n     */\n    resetGroups(): void {\n        this.register({ $groups: {} })\n        this.resetGroupPropertiesForFlags()\n\n        // If groups changed, reload feature flags.\n        this.reloadFeatureFlags()\n    }\n\n    /**\n     * Set override person properties for feature flags.\n     * This is used when dealing with new persons / where you don't want to wait for ingestion\n     * to update user properties.\n     */\n    setPersonPropertiesForFlags(properties: Properties, reloadFeatureFlags = true): void {\n        this.featureFlags.setPersonPropertiesForFlags(properties, reloadFeatureFlags)\n    }\n\n    resetPersonPropertiesForFlags(): void {\n        this.featureFlags.resetPersonPropertiesForFlags()\n    }\n\n    /**\n     * Set override group properties for feature flags.\n     * This is used when dealing with new groups / where you don't want to wait for ingestion\n     * to update properties.\n     * Takes in an object, the key of which is the group type.\n     * For example:\n     *     setGroupPropertiesForFlags({'organization': { name: 'CYZ', employees: '11' } })\n     */\n    setGroupPropertiesForFlags(properties: { [type: string]: Properties }, reloadFeatureFlags = true): void {\n        if (!this._requirePersonProcessing('posthog.setGroupPropertiesForFlags')) {\n            return\n        }\n        this.featureFlags.setGroupPropertiesForFlags(properties, reloadFeatureFlags)\n    }\n\n    resetGroupPropertiesForFlags(group_type?: string): void {\n        this.featureFlags.resetGroupPropertiesForFlags(group_type)\n    }\n\n    /**\n     * Clears super properties and generates a new random distinct_id for this instance.\n     * Useful for clearing data when a user logs out.\n     */\n    reset(reset_device_id?: boolean): void {\n        logger.info('reset')\n        if (!this.__loaded) {\n            return logger.uninitializedWarning('posthog.reset')\n        }\n        const device_id = this.get_property('$device_id')\n        this.consent.reset()\n        this.persistence?.clear()\n        this.sessionPersistence?.clear()\n        this.surveys.reset()\n        this.persistence?.set_property(USER_STATE, 'anonymous')\n        this.sessionManager?.resetSessionId()\n        this._cachedIdentify = null\n        if (this.config.__preview_experimental_cookieless_mode) {\n            this.register_once(\n                {\n                    distinct_id: COOKIELESS_SENTINEL_VALUE,\n                    $device_id: null,\n                },\n                ''\n            )\n        } else {\n            const uuid = this.config.get_device_id(uuidv7())\n            this.register_once(\n                {\n                    distinct_id: uuid,\n                    $device_id: reset_device_id ? uuid : device_id,\n                },\n                ''\n            )\n        }\n\n        this.register(\n            {\n                $last_posthog_reset: new Date().toISOString(),\n            },\n            1\n        )\n    }\n\n    /**\n     * Returns the current distinct id of the user. This is either the id automatically\n     * generated by the library or the id that has been passed by a call to identify().\n     *\n     * ### Notes:\n     *\n     * get_distinct_id() can only be called after the PostHog library has finished loading.\n     * init() has a loaded function available to handle this automatically. For example:\n     *\n     *     // set distinct_id after the posthog library has loaded\n     *     posthog.init('YOUR PROJECT TOKEN', {\n     *         loaded: function(posthog) {\n     *             distinct_id = posthog.get_distinct_id();\n     *         }\n     *     });\n     */\n    get_distinct_id(): string {\n        return this.get_property('distinct_id')\n    }\n\n    getGroups(): Record<string, any> {\n        return this.get_property('$groups') || {}\n    }\n\n    /**\n     * Returns the current session_id.\n     *\n     * NOTE: This should only be used for informative purposes.\n     * Any actual internal use case for the session_id should be handled by the sessionManager.\n     */\n\n    get_session_id(): string {\n        return this.sessionManager?.checkAndGetSessionAndWindowId(true).sessionId ?? ''\n    }\n\n    /**\n     * Returns the Replay url for the current session.\n     *\n     * @param options Options for the url\n     * @param options.withTimestamp Whether to include the timestamp in the url (defaults to false)\n     * @param options.timestampLookBack How many seconds to look back for the timestamp (defaults to 10)\n     */\n    get_session_replay_url(options?: { withTimestamp?: boolean; timestampLookBack?: number }): string {\n        if (!this.sessionManager) {\n            return ''\n        }\n        const { sessionId, sessionStartTimestamp } = this.sessionManager.checkAndGetSessionAndWindowId(true)\n        let url = this.requestRouter.endpointFor('ui', `/project/${this.config.token}/replay/${sessionId}`)\n        if (options?.withTimestamp && sessionStartTimestamp) {\n            const LOOK_BACK = options.timestampLookBack ?? 10\n            if (!sessionStartTimestamp) {\n                return url\n            }\n            const recordingStartTime = Math.max(\n                Math.floor((new Date().getTime() - sessionStartTimestamp) / 1000) - LOOK_BACK,\n                0\n            )\n            url += `?t=${recordingStartTime}`\n        }\n\n        return url\n    }\n\n    /**\n     * Create an alias, which PostHog will use to link two distinct_ids going forward (not retroactively).\n     * Multiple aliases can map to the same original ID, but not vice-versa. Aliases can also be chained - the\n     * following is a valid scenario:\n     *\n     *     posthog.alias('new_id', 'existing_id');\n     *     ...\n     *     posthog.alias('newer_id', 'new_id');\n     *\n     * If the original ID is not passed in, we will use the current distinct_id - probably the auto-generated GUID.\n     *\n     * ### Notes:\n     *\n     * The best practice is to call alias() when a unique ID is first created for a user\n     * (e.g., when a user first registers for an account and provides an email address).\n     * alias() should never be called more than once for a given user, except to\n     * chain a newer ID to a previously new ID, as described above.\n     *\n     * @param {String} alias A unique identifier that you want to use for this user in the future.\n     * @param {String} [original] The current identifier being used for this user.\n     */\n    alias(alias: string, original?: string): CaptureResult | void | number {\n        // If the $people_distinct_id key exists in persistence, there has been a previous\n        // posthog.people.identify() call made for this user. It is VERY BAD to make an alias with\n        // this ID, as it will duplicate users.\n        if (alias === this.get_property(PEOPLE_DISTINCT_ID_KEY)) {\n            logger.critical('Attempting to create alias for existing People user - aborting.')\n            return -2\n        }\n        if (!this._requirePersonProcessing('posthog.alias')) {\n            return\n        }\n\n        if (isUndefined(original)) {\n            original = this.get_distinct_id()\n        }\n        if (alias !== original) {\n            this._register_single(ALIAS_ID_KEY, alias)\n            return this.capture('$create_alias', { alias: alias, distinct_id: original })\n        } else {\n            logger.warn('alias matches current distinct_id - skipping api call.')\n            this.identify(alias)\n            return -1\n        }\n    }\n\n    /**\n     * Update the configuration of a posthog library instance.\n     *\n     * @param {Partial<PostHogConfig>} config A dictionary of new configuration values to update\n     */\n    set_config(config: Partial<PostHogConfig>): void {\n        const oldConfig = { ...this.config }\n        if (isObject(config)) {\n            extend(this.config, configRenames(config))\n\n            this.persistence?.update_config(this.config, oldConfig)\n            this.sessionPersistence =\n                this.config.persistence === 'sessionStorage' || this.config.persistence === 'memory'\n                    ? this.persistence\n                    : new PostHogPersistence({ ...this.config, persistence: 'sessionStorage' })\n\n            if (localStore.is_supported() && localStore.get('ph_debug') === 'true') {\n                this.config.debug = true\n            }\n            if (this.config.debug) {\n                Config.DEBUG = true\n                logger.info('set_config', {\n                    config,\n                    oldConfig,\n                    newConfig: { ...this.config },\n                })\n            }\n\n            this.sessionRecording?.startIfEnabledOrStop()\n            this.autocapture?.startIfEnabled()\n            this.heatmaps?.startIfEnabled()\n            this.surveys.loadIfEnabled()\n            this._sync_opt_out_with_persistence()\n        }\n    }\n\n    /**\n     * turns session recording on, and updates the config option `disable_session_recording` to false\n     * @param override.sampling - optional boolean to override the default sampling behavior - ensures the next session recording to start will not be skipped by sampling config.\n     * @param override.linked_flag - optional boolean to override the default linked_flag behavior - ensures the next session recording to start will not be skipped by linked_flag config.\n     * @param override.url_trigger - optional boolean to override the default url_trigger behavior - ensures the next session recording to start will not be skipped by url_trigger config.\n     * @param override.event_trigger - optional boolean to override the default event_trigger behavior - ensures the next session recording to start will not be skipped by event_trigger config.\n     * @param override - optional boolean to override the default sampling behavior - ensures the next session recording to start will not be skipped by sampling or linked_flag config. `true` is shorthand for { sampling: true, linked_flag: true }\n     */\n    startSessionRecording(\n        override?: { sampling?: boolean; linked_flag?: boolean; url_trigger?: true; event_trigger?: true } | true\n    ): void {\n        const overrideAll = override === true\n        const overrideConfig = {\n            sampling: overrideAll || !!override?.sampling,\n            linked_flag: overrideAll || !!override?.linked_flag,\n            url_trigger: overrideAll || !!override?.url_trigger,\n            event_trigger: overrideAll || !!override?.event_trigger,\n        }\n\n        if (Object.values(overrideConfig).some(Boolean)) {\n            // allow the session id check to rotate session id if necessary\n            this.sessionManager?.checkAndGetSessionAndWindowId()\n\n            if (overrideConfig.sampling) {\n                this.sessionRecording?.overrideSampling()\n            }\n\n            if (overrideConfig.linked_flag) {\n                this.sessionRecording?.overrideLinkedFlag()\n            }\n\n            if (overrideConfig.url_trigger) {\n                this.sessionRecording?.overrideTrigger('url')\n            }\n\n            if (overrideConfig.event_trigger) {\n                this.sessionRecording?.overrideTrigger('event')\n            }\n        }\n\n        this.set_config({ disable_session_recording: false })\n    }\n\n    /**\n     * turns session recording off, and updates the config option\n     * disable_session_recording to true\n     */\n    stopSessionRecording(): void {\n        this.set_config({ disable_session_recording: true })\n    }\n\n    /**\n     * returns a boolean indicating whether session recording\n     * is currently running\n     */\n    sessionRecordingStarted(): boolean {\n        return !!this.sessionRecording?.started\n    }\n\n    /** Capture a caught exception manually */\n    captureException(error: Error, additionalProperties?: Properties): void {\n        const syntheticException = new Error('PostHog syntheticException')\n        const properties: Properties = isFunction(assignableWindow.__PosthogExtensions__?.parseErrorAsProperties)\n            ? {\n                  ...assignableWindow.__PosthogExtensions__.parseErrorAsProperties(\n                      [error.message, undefined, undefined, undefined, error],\n                      // create synthetic error to get stack in cases where user input does not contain one\n                      // creating the exceptions soon into our code as possible means we should only have to\n                      // remove a single frame (this 'captureException' method) from the resultant stack\n                      { syntheticException }\n                  ),\n                  ...additionalProperties,\n              }\n            : {\n                  $exception_level: 'error',\n                  $exception_list: [\n                      {\n                          type: error.name,\n                          value: error.message,\n                          mechanism: {\n                              handled: true,\n                              synthetic: false,\n                          },\n                      },\n                  ],\n                  ...additionalProperties,\n              }\n\n        this.exceptions.sendExceptionEvent(properties)\n    }\n\n    /**\n     * returns a boolean indicating whether the toolbar loaded\n     * @param toolbarParams\n     */\n\n    loadToolbar(params: ToolbarParams): boolean {\n        return this.toolbar.loadToolbar(params)\n    }\n\n    /**\n     * Returns the value of the super property named property_name. If no such\n     * property is set, get_property() will return the undefined value.\n     *\n     * ### Notes:\n     *\n     * get_property() can only be called after the PostHog library has finished loading.\n     * init() has a loaded function available to handle this automatically. For example:\n     *\n     *     // grab value for '$user_id' after the posthog library has loaded\n     *     posthog.init('YOUR PROJECT TOKEN', {\n     *         loaded: function(posthog) {\n     *             user_id = posthog.get_property('$user_id');\n     *         }\n     *     });\n     *\n     * @param {String} property_name The name of the super property you want to retrieve\n     */\n    get_property(property_name: string): Property | undefined {\n        return this.persistence?.props[property_name]\n    }\n\n    /**\n     * Returns the value of the session super property named property_name. If no such\n     * property is set, getSessionProperty() will return the undefined value.\n     *\n     * ### Notes:\n     *\n     * This is based on browser-level `sessionStorage`, NOT the PostHog session.\n     * getSessionProperty() can only be called after the PostHog library has finished loading.\n     * init() has a loaded function available to handle this automatically. For example:\n     *\n     *     // grab value for 'user_id' after the posthog library has loaded\n     *     posthog.init('YOUR PROJECT TOKEN', {\n     *         loaded: function(posthog) {\n     *             user_id = posthog.getSessionProperty('user_id');\n     *         }\n     *     });\n     *\n     * @param {String} property_name The name of the session super property you want to retrieve\n     */\n    getSessionProperty(property_name: string): Property | undefined {\n        return this.sessionPersistence?.props[property_name]\n    }\n\n    toString(): string {\n        let name = this.config.name ?? PRIMARY_INSTANCE_NAME\n        if (name !== PRIMARY_INSTANCE_NAME) {\n            name = PRIMARY_INSTANCE_NAME + '.' + name\n        }\n        return name\n    }\n\n    _isIdentified(): boolean {\n        return (\n            this.persistence?.get_property(USER_STATE) === 'identified' ||\n            this.sessionPersistence?.get_property(USER_STATE) === 'identified'\n        )\n    }\n\n    _hasPersonProcessing(): boolean {\n        return !(\n            this.config.person_profiles === 'never' ||\n            (this.config.person_profiles === 'identified_only' &&\n                !this._isIdentified() &&\n                isEmptyObject(this.getGroups()) &&\n                !this.persistence?.props?.[ALIAS_ID_KEY] &&\n                !this.persistence?.props?.[ENABLE_PERSON_PROCESSING])\n        )\n    }\n\n    _shouldCapturePageleave(): boolean {\n        return (\n            this.config.capture_pageleave === true ||\n            (this.config.capture_pageleave === 'if_capture_pageview' && this.config.capture_pageview)\n        )\n    }\n\n    /**\n     *  Creates a person profile for the current user, if they don't already have one and config.person_profiles is set\n     *  to 'identified_only'. Produces a warning and does not create a profile if config.person_profiles is set to\n     *  'never'.\n     */\n    createPersonProfile(): void {\n        if (this._hasPersonProcessing()) {\n            // if a person profile already exists, don't send an event when we don't need to\n            return\n        }\n        if (!this._requirePersonProcessing('posthog.createPersonProfile')) {\n            return\n        }\n        // sent a $set event. We don't set any properties here, but attribution props will be added later\n        this.setPersonProperties({}, {})\n    }\n\n    /**\n     * Enables person processing if possible, returns true if it does so or already enabled, false otherwise\n     *\n     * @param function_name\n     */\n    _requirePersonProcessing(function_name: string): boolean {\n        if (this.config.person_profiles === 'never') {\n            logger.error(\n                function_name + ' was called, but process_person is set to \"never\". This call will be ignored.'\n            )\n            return false\n        }\n        this._register_single(ENABLE_PERSON_PROCESSING, true)\n        return true\n    }\n\n    private _sync_opt_out_with_persistence(): void {\n        const isOptedOut = this.consent.isOptedOut()\n        const defaultPersistenceDisabled = this.config.opt_out_persistence_by_default\n\n        // TRICKY: We want a deterministic state for persistence so that a new pageload has the same persistence\n        const persistenceDisabled = this.config.disable_persistence || (isOptedOut && !!defaultPersistenceDisabled)\n\n        if (this.persistence?.disabled !== persistenceDisabled) {\n            this.persistence?.set_disabled(persistenceDisabled)\n        }\n        if (this.sessionPersistence?.disabled !== persistenceDisabled) {\n            this.sessionPersistence?.set_disabled(persistenceDisabled)\n        }\n    }\n\n    /**\n     * Opt the user in to data capturing and cookies/localstorage for this PostHog instance\n     * If the config.opt_out_persistence_by_default is set to false, the SDK persistence will be enabled.\n     *\n     * ### Usage\n     *\n     *     // opt user in\n     *     posthog.opt_in_capturing();\n     *\n     *     // opt user in with specific event name, properties, cookie configuration\n     *     posthog.opt_in_capturing({\n     *         capture_event_name: 'User opted in',\n     *         capture_event_properties: {\n     *             'email': 'jdoe@example.com'\n     *         }\n     *     });\n     *\n     * @param {Object} [config] A dictionary of config options to override\n     * @param {string} [config.capture_event_name=$opt_in] Event name to be used for capturing the opt-in action. Set to `null` or `false` to skip capturing the optin event\n     * @param {Object} [config.capture_properties] Set of properties to be captured along with the opt-in action\n     */\n    opt_in_capturing(options?: {\n        captureEventName?: EventName | null | false /** event name to be used for capturing the opt-in action */\n        captureProperties?: Properties /** set of properties to be captured along with the opt-in action */\n    }): void {\n        this.consent.optInOut(true)\n        this._sync_opt_out_with_persistence()\n\n        // Don't capture if captureEventName is null or false\n        if (isUndefined(options?.captureEventName) || options?.captureEventName) {\n            this.capture(options?.captureEventName ?? '$opt_in', options?.captureProperties, { send_instantly: true })\n        }\n\n        if (this.config.capture_pageview) {\n            this._captureInitialPageview()\n        }\n    }\n\n    /**\n     * Opt the user out of data capturing and cookies/localstorage for this PostHog instance.\n     * If the config.opt_out_persistence_by_default is set to true, the SDK persistence will be disabled.\n     *\n     */\n    opt_out_capturing(): void {\n        this.consent.optInOut(false)\n        this._sync_opt_out_with_persistence()\n    }\n\n    /**\n     * Check whether the user has opted in to data capturing and cookies/localstorage for this PostHog instance\n     *\n     * @returns {boolean} current opt-in status\n     */\n    has_opted_in_capturing(): boolean {\n        return this.consent.isOptedIn()\n    }\n\n    /**\n     * Check whether the user has opted out of data capturing and cookies/localstorage for this PostHog instance\n     *\n     * @returns {boolean} current opt-out status\n     */\n    has_opted_out_capturing(): boolean {\n        return this.consent.isOptedOut()\n    }\n\n    /**\n     * Clear the user's opt in/out status of data capturing and cookies/localstorage for this PostHog instance\n     */\n    clear_opt_in_out_capturing(): void {\n        this.consent.reset()\n        this._sync_opt_out_with_persistence()\n    }\n\n    _is_bot(): boolean | undefined {\n        if (navigator) {\n            return isLikelyBot(navigator, this.config.custom_blocked_useragents)\n        } else {\n            return undefined\n        }\n    }\n\n    _captureInitialPageview(): void {\n        if (document && !this._initialPageviewCaptured) {\n            this._initialPageviewCaptured = true\n            this.capture('$pageview', { title: document.title }, { send_instantly: true })\n        }\n    }\n\n    /**\n     * Enables or disables debug mode.\n     * You can also enable debug mode by appending `?__posthog_debug=true` to the URL\n     *\n     * @param {boolean} [debug] If true, will enable debug mode.\n     */\n    debug(debug?: boolean): void {\n        if (debug === false) {\n            window?.console.log(\"You've disabled debug mode.\")\n            localStorage && localStorage.removeItem('ph_debug')\n            this.set_config({ debug: false })\n        } else {\n            window?.console.log(\n                \"You're now in debug mode. All calls to PostHog will be logged in your console.\\nYou can disable this with `posthog.debug(false)`.\"\n            )\n            localStorage && localStorage.setItem('ph_debug', 'true')\n            this.set_config({ debug: true })\n        }\n    }\n\n    private _runBeforeSend(data: CaptureResult): CaptureResult | null {\n        if (isNullish(this.config.before_send)) {\n            return data\n        }\n\n        const fns = isArray(this.config.before_send) ? this.config.before_send : [this.config.before_send]\n        let beforeSendResult: CaptureResult | null = data\n        for (const fn of fns) {\n            beforeSendResult = fn(beforeSendResult)\n            if (isNullish(beforeSendResult)) {\n                const logMessage = `Event '${data.event}' was rejected in beforeSend function`\n                if (isKnownUnsafeEditableEvent(data.event)) {\n                    logger.warn(`${logMessage}. This can cause unexpected behavior.`)\n                } else {\n                    logger.info(logMessage)\n                }\n                return null\n            }\n            if (!beforeSendResult.properties || isEmptyObject(beforeSendResult.properties)) {\n                logger.warn(\n                    `Event '${data.event}' has no properties after beforeSend function, this is likely an error.`\n                )\n            }\n        }\n        return beforeSendResult\n    }\n\n    public getPageViewId(): string | undefined {\n        return this.pageViewManager._currentPageview?.pageViewId\n    }\n}\n\nsafewrapClass(PostHog, ['identify'])\n\nconst add_dom_loaded_handler = function () {\n    // Cross browser DOM Loaded support\n    function dom_loaded_handler() {\n        // function flag since we only want to execute this once\n        if ((dom_loaded_handler as any).done) {\n            return\n        }\n        ;(dom_loaded_handler as any).done = true\n\n        ENQUEUE_REQUESTS = false\n\n        each(instances, function (inst: PostHog) {\n            inst._dom_loaded()\n        })\n    }\n\n    if (document?.addEventListener) {\n        if (document.readyState === 'complete') {\n            // safari 4 can fire the DOMContentLoaded event before loading all\n            // external JS (including this file). you will see some copypasta\n            // on the internet that checks for 'complete' and 'loaded', but\n            // 'loaded' is an IE thing\n            dom_loaded_handler()\n        } else {\n            addEventListener(document, 'DOMContentLoaded', dom_loaded_handler, { capture: false })\n        }\n\n        return\n    }\n\n    // Only IE6-8 don't support `document.addEventListener` and we don't support them\n    // so let's simply log an error stating PostHog couldn't be initialized\n    // We're checking for `window` to avoid erroring out on a SSR context\n    if (window) {\n        logger.error(\"Browser doesn't support `document.addEventListener` so PostHog couldn't be initialized\")\n    }\n}\n\nexport function init_from_snippet(): void {\n    const posthogMain = (instances[PRIMARY_INSTANCE_NAME] = new PostHog())\n\n    const snippetPostHog = assignableWindow['posthog']\n\n    if (snippetPostHog) {\n        /**\n         * The snippet uses some clever tricks to allow deferred loading of array.js (this code)\n         *\n         * window.posthog is an array which the queue of calls made before the lib is loaded\n         * It has methods attached to it to simulate the posthog object so for instance\n         *\n         * window.posthog.init(\"TOKEN\", {api_host: \"foo\" })\n         * window.posthog.capture(\"my-event\", {foo: \"bar\" })\n         *\n         * ... will mean that window.posthog will look like this:\n         * window.posthog == [\n         *  [\"my-event\", {foo: \"bar\"}]\n         * ]\n         *\n         * window.posthog[_i] == [\n         *   [\"TOKEN\", {api_host: \"foo\" }, \"posthog\"]\n         * ]\n         *\n         * If a name is given to the init function then the same as above is true but as a sub-property on the object:\n         *\n         * window.posthog.init(\"TOKEN\", {}, \"ph2\")\n         * window.posthog.ph2.people.set({foo: \"bar\"})\n         *\n         * window.posthog.ph2 == []\n         * window.posthog.people == [\n         *  [\"set\", {foo: \"bar\"}]\n         * ]\n         *\n         */\n\n        // Call all pre-loaded init calls properly\n\n        each(snippetPostHog['_i'], function (item: [token: string, config: Partial<PostHogConfig>, name: string]) {\n            if (item && isArray(item)) {\n                const instance = posthogMain.init(item[0], item[1], item[2])\n\n                const instanceSnippet = snippetPostHog[item[2]] || snippetPostHog\n\n                if (instance) {\n                    // Crunch through the people queue first - we queue this data up &\n                    // flush on identify, so it's better to do all these operations first\n                    instance._execute_array.call(instance.people, instanceSnippet.people)\n                    instance._execute_array(instanceSnippet)\n                }\n            }\n        })\n    }\n\n    assignableWindow['posthog'] = posthogMain\n\n    add_dom_loaded_handler()\n}\n\nexport function init_as_module(): PostHog {\n    const posthogMain = (instances[PRIMARY_INSTANCE_NAME] = new PostHog())\n\n    add_dom_loaded_handler()\n\n    return posthogMain\n}\n", "import { init_as_module } from '../posthog-core'\nexport { PostHog } from '../posthog-core'\nexport * from '../types'\nexport * from '../posthog-surveys-types'\nexport const posthog = init_as_module()\nexport default posthog\n", "import { Controller } from \"@hotwired/stimulus\";\n\nexport default class extends Controller {\n  static targets = [\"product\", \"productContainer\"];\n\n  connect() {\n    this.clonedNode = this.productTargets[0].cloneNode(true);\n  }\n\n  add() {\n    this.productContainerTarget.append(this.clonedNode);\n    this.clonedNode = this.productTargets[this.productTargets.length - 1].cloneNode(true);\n  }\n\n  remove(event) {\n    if (this.productTargets.length > 1) {\n      event.target.closest(\".row\").remove();\n    }\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\";\r\nimport Rails from \"@rails/ujs\";\r\n\r\n\r\nexport default class extends Controller {\r\n  static targets = ['subscriptionsDisplay'];\r\n\r\n  PUSH_WORKER_URL        =  document.querySelector('meta[name=\"push-worker-url\"]').getAttribute(\"content\");\r\n  APPLICATION_SERVER_KEY =  document.querySelector('meta[name=\"application-server-key\"]').getAttribute(\"content\");\r\n  CONTEXT                =  document.body.dataset.context\r\n  CONTEXT_ID             =  document.body.dataset.contextId\r\n  CONTEXT_MAPPING        =  {\r\n                              merchants:  'Merchant',\r\n                              patrons:    'Patron',\r\n                              admin:      'Admin',\r\n                              agents:     'Agent'\r\n                            }\r\n\r\n  REGISTRATION_STATES    =  {\r\n                              granted:  'granted',\r\n                              denied:   'denied',\r\n                            }\r\n\r\n  connect() {}\r\n\r\n  triggerNotificationRegistration() {\r\n    if (\"Notification\" in window) {\r\n      this._requestPermission();\r\n    } else {\r\n      console.warn(\"Push notifications not supported.\");\r\n    }\r\n  }\r\n\r\n  registerServiceWorker() {\r\n    // Check if the browser supports service workers\r\n    if (\"serviceWorker\" in navigator) {\r\n      navigator.serviceWorker\r\n        .register(this.PUSH_WORKER_URL)\r\n        .then((serviceWorkerRegistration) => {\r\n          serviceWorkerRegistration.pushManager\r\n            .getSubscription()\r\n            .then((existingSubscription) => {\r\n              if (!existingSubscription) {\r\n                this._subscribeToPushNotifications(serviceWorkerRegistration)\r\n              } else {\r\n                this._saveSubscription(existingSubscription);\r\n              }\r\n            });\r\n        })\r\n        .catch((error) => {\r\n          console.error(\"Error during registration Service Worker:\", error);\r\n        });\r\n    }\r\n  }\r\n\r\n  _saveSubscription(subscription) {\r\n    // Extract necessary subscription data\r\n    const endpoint = subscription.endpoint;\r\n    const p256dh   = btoa(\r\n      String.fromCharCode.apply(null, new Uint8Array(subscription.getKey(\"p256dh\")))\r\n    );\r\n    const auth = btoa(\r\n      String.fromCharCode.apply(null, new Uint8Array(subscription.getKey(\"auth\")))\r\n    );\r\n\r\n    const pushable_type = this.CONTEXT_MAPPING[this.CONTEXT];\r\n\r\n    let form = new FormData();\r\n\r\n    form.append('subscription[endpoint]', endpoint);\r\n    form.append('subscription[p256dh]', p256dh);\r\n    form.append('subscription[auth]', auth);\r\n    form.append('subscription[pushable_type]', pushable_type);\r\n    form.append('subscription[pushable_id]', this.CONTEXT_ID);\r\n\r\n    Rails.ajax({\r\n      type:     'post',\r\n      dataType: 'json',\r\n      url:      '/api/v1/push/subscriptions',\r\n      data:     form,\r\n      success: (response) => {\r\n        this.subscriptionsDisplayTarget.innerHTML = response.data.html;\r\n      },\r\n      error: (response) => {\r\n        console.error(response);\r\n      },\r\n    });\r\n  }\r\n\r\n  _requestPermission() {\r\n    Notification.requestPermission().then((permission) => {\r\n      if (permission === this.REGISTRATION_STATES.granted) {\r\n        this.registerServiceWorker();\r\n      } else if (permission === this.REGISTRATION_STATES.denied) {\r\n        console.warn(\"User rejected to allow notifications.\");\r\n      } else {\r\n        console.warn(\"User still didn't give an answer about notifications.\");\r\n      }\r\n    });\r\n  }\r\n\r\n  _subscribeToPushNotifications(serviceWorkerRegistration) {\r\n    serviceWorkerRegistration.pushManager\r\n      .subscribe({\r\n        userVisibleOnly: true,\r\n        applicationServerKey: this._urlBase64ToUint8Array(this.APPLICATION_SERVER_KEY),\r\n      })\r\n      .then((subscription) => {\r\n        this._saveSubscription(subscription);\r\n      });\r\n  }\r\n\r\n  _urlBase64ToUint8Array(base64String) {\r\n    var padding = '='.repeat((4 - base64String.length % 4) % 4);\r\n    var base64 = (base64String + padding)\r\n        .replace(/\\-/g, '+')\r\n        .replace(/_/g, '/');\r\n\r\n    var rawData = window.atob(base64);\r\n    var outputArray = new Uint8Array(rawData.length);\r\n\r\n    for (var i = 0; i < rawData.length; ++i) {\r\n        outputArray[i] = rawData.charCodeAt(i);\r\n    }\r\n    return outputArray;\r\n}\r\n}\r\n", "import { Controller } from \"@hotwired/stimulus\";\r\nimport isEmpty from \"../utils/_empty\";\r\n\r\nexport default class extends Controller {\r\n  static targets = [];\r\n\r\n  connect() {\r\n    let filtered = [];\r\n    let initialFieldColour;\r\n\r\n    this.collectAllInputs(filtered, this.scope);\r\n\r\n    // Remove required so we can do a manual check\r\n    filtered.forEach(field => (field.required = false));\r\n\r\n    const form = document.querySelector('[data-question-validatable]');\r\n\r\n    if (form !== null || form !== undefined) {\r\n      const submitButton = form.querySelector('input[type=\"submit\"]');\r\n\r\n      if (submitButton) {\r\n        submitButton.removeAttribute('data-disable-with');\r\n      }\r\n\r\n      form.addEventListener(\"submit\", function(e) {\r\n        e.preventDefault();\r\n\r\n        let clickable;\r\n        let errors = [];\r\n        initialFieldColour = 'rgba(0,0,0,0.08)';\r\n\r\n        filtered.forEach((field) => {\r\n          if (isEmpty(field.value)) {\r\n            const accordionItem     = field.closest('.accordion-item');\r\n            clickable               = accordionItem.querySelector('.accordion-button');\r\n            field.style.borderColor = 'red';\r\n\r\n            errors.push([field, clickable]);\r\n          } else {\r\n            field.style.borderColor = initialFieldColour;\r\n          }\r\n        });\r\n\r\n        if (errors.length > 0) {\r\n          const htmlBtn = errors[0][1];\r\n          if (htmlBtn.classList.contains('collapsed')) {\r\n            htmlBtn.click();\r\n          }\r\n        }\r\n\r\n        if (errors.length === 0) {\r\n          form.submit();\r\n        }\r\n      });\r\n    }\r\n  }\r\n\r\n  collectAllInputs = (collection, scope) => {\r\n    if (scope.element) {\r\n      scope.element.querySelectorAll('input').forEach((field) => {\r\n        if(!['hidden', 'submit', 'checkbox', 'radio'].includes(field.type) && field.required) {\r\n          collection.push(field);\r\n        }\r\n      });\r\n\r\n      // URL\r\n      scope.element.querySelectorAll('input[type=\"url\"]').forEach((field) => {\r\n        if(field.required) {\r\n          collection.push(field);\r\n        }\r\n      });\r\n\r\n      // PHONE\r\n      scope.element.querySelectorAll('input[type=\"tel\"]').forEach((field) => {\r\n        if(field.required) {\r\n          collection.push(field);\r\n        }\r\n      });\r\n\r\n      // NUMBERS\r\n      scope.element.querySelectorAll('input[type=\"number\"]').forEach((field) => {\r\n        if(field.required) {\r\n          collection.push(field);\r\n        }\r\n      });\r\n\r\n      // CHECKBOX\r\n      scope.element.querySelectorAll('input[type=\"checkbox\"]').forEach((field) => {\r\n        if(field.required) {\r\n          collection.push(field);\r\n        }\r\n      });\r\n\r\n      // RADIO\r\n      scope.element.querySelectorAll('input[type=\"radio\"]').forEach((field) => {\r\n        if(field.required) {\r\n          collection.push(field);\r\n        }\r\n      });\r\n\r\n      // TEXT AREAS\r\n      scope.element.querySelectorAll('textarea').forEach((field) => {\r\n        if(field.required) {\r\n          collection.push(field);\r\n        }\r\n      });\r\n\r\n      // SELECT FIELDS\r\n      scope.element.querySelectorAll('select').forEach((field) => {\r\n        if(field.required) {\r\n          collection.push(field);\r\n        }\r\n      });\r\n    }\r\n  }\r\n}\r\n", "import { Controller } from \"@hotwired/stimulus\";\nimport Rails from '@rails/ujs';\nimport { Html5Qrcode } from \"html5-qrcode\";\nimport { loading } from \"../utils/_loading\";\n\n\nexport default class extends Controller {\n  static targets = [\n    'success',\n    'failure',\n    'failureReason',\n    'reader',\n    'output',\n    'switch',\n    'noDevice',\n    'deviceLoadingList',\n    'deviceListWrapper',\n    'originalState'\n  ];\n  static values = {\n    patron:   String,\n    url:      String,\n    scanType: String\n  }\n\n  initialize() {\n    this.html5QrCode = new Html5Qrcode(\"reader\");\n    this.devices = [];\n    this.cameraId = null;\n\n    this.clonedOriginalState = this.originalStateTarget.cloneNode(true);\n  }\n\n  connect() {\n    if (this.html5QrCode.getState() === 1) {\n      this.getDeviceCameras();\n    }\n  }\n\n  disconnect() {\n    if ([2,3].includes(this.html5QrCode.getState())) {\n      this.html5QrCode.stop().then(() => {\n        this.devices = [];\n        this.cameraId = null;\n        console.info('[UJU Scanner] Camera disconnected!');\n      }).catch((err) => {\n        console.error('[UJU Scanner]', err);\n      });\n    }\n  }\n\n  getDeviceCameras() {\n    Html5Qrcode.getCameras()\n      .then((devices) => {\n        this.devices = devices;\n\n        this.setCameraAndStart(this.devices[this.devices.length - 1][\"id\"]);\n        this.deviceLoadingListTarget.classList.add(\"d-none\");\n        this.switchTarget.classList.remove(\"d-none\");\n\n      })\n      .catch(_error => {\n        this.switchTarget.classList.add(\"d-none\");\n        this.deviceListWrapperTarget.classList.add(\"d-none\");\n        this.noDeviceTarget.classList.remove(\"d-none\");\n      })\n  }\n\n  setCameraAndStart(id) {\n    this.deviceListWrapperTarget.classList.add(\"d-none\");\n    this.cameraId = id;\n    this.startCapture();\n  }\n\n  switchCamera(event) {\n    event.preventDefault();\n    if (this.devices.length < 2) { return }\n\n    this.html5QrCode.stop().then(() => {\n      const otherDevice = this.devices.find(d => d[\"id\"] !== this.cameraId);\n      this.cameraId = otherDevice[\"id\"]\n      this.startCapture();\n    })\n  }\n\n  startCapture() {\n    this.readerTarget.classList.remove('d-none');\n\n    this.html5QrCode\n      .start(\n        { deviceId: { exact: this.cameraId } },\n        {\n          fps: 30,\n          qrbox: 250,\n        },\n        (qrCodeMessage) => this.onScanSuccess(qrCodeMessage),\n        (error) => this.onScanFailure(error)\n      )\n      .then(() => {\n        console.info('[UJU Scanner] Camera connected!');\n      })\n      .catch((_err) => {});\n  }\n\n  onScanSuccess(qrCodeMessage) {\n    this.html5QrCode.stop().then(() => {\n      this.html5QrCode.clear();\n      let codeData;\n\n      var form = new FormData();\n\n      switch (this.scanTypeValue) {\n        case \"rewards\":\n          codeData = {\n            reward_code: qrCodeMessage,\n            patron: this.patronValue,\n          };\n          break;\n\n        case \"event_registration\":\n          codeData = {\n            event_registration_purchase: qrCodeMessage,\n          };\n          break;\n\n        default:\n          codeData = {}; // Optional: Handle unknown scan types\n          break;\n      }\n\n      form.append(this.scanTypeValue, JSON.stringify(codeData));\n\n      Rails.ajax({\n        type:     'post',\n        dataType: 'json',\n        url: this.urlValue,\n        data: form,\n        success: (response) => {\n          this.switchTarget.classList.add('d-none');\n          this.readerTarget.classList.add('d-none');\n          this.successTarget.classList.remove('d-none');\n          if (response.data) {\n            this.successTarget.insertAdjacentHTML( 'afterbegin', response.data );\n          }\n        },\n        error: (response) => {\n          this.switchTarget.classList.add('d-none');\n          this.readerTarget.classList.add('d-none');\n          this.failureTarget.classList.remove('d-none');\n          if (response.data.error) {\n            this.failureReasonTarget.innerHTML = `<span class=\"badge rounded-pill bg-danger\">${response.data.error}</span>`;\n          }\n        },\n      });\n    });\n  }\n\n  onScanFailure(_error) { }\n\n  scanAgain(event) {\n    event.preventDefault();\n    this.successTarget.classList.add('d-none');\n    this.failureTarget.classList.add('d-none');\n    this.switchTarget.classList.remove('d-none');\n    this.startCapture();\n  }\n}\n", null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, "import { Controller } from \"@hotwired/stimulus\";\n\nexport default class extends Controller {\n  static targets = [\n    'formPartial',\n    'form',\n    'partialWrapper',\n    'selectedType',\n    'emptyState'\n  ];\n\n  initialize() {\n    // Store the partials\n    this.partialClones = this.formPartialTargets.slice();\n\n    // Remove the partials from the DOM\n    this.formPartialTargets.forEach(partial => {\n      partial.remove();\n    });\n\n    // Load the partial if there's a value (Edit page)\n    if (this.selectedTypeTarget && this.selectedTypeTarget.value !== '') {\n      this.selectType(this.selectedTypeTarget.value);\n    }\n\n  }\n\n  selectType(eventOrString) {\n    this._removePartialsFromDOM();\n    this.emptyStateTarget.classList.add(\"d-none\");\n\n    let selectValue;\n    typeof eventOrString === 'string'\n      ? (selectValue = eventOrString)\n      : (selectValue = eventOrString.target.value);\n\n    switch (selectValue) {\n      case \"Product::Service\":\n        this._appendPartial(\"service\");\n        break;\n      case \"Product::Action\":\n        this._appendPartial(\"action\");\n        break;\n      case \"Product::Item\":\n        this._appendPartial(\"item\");\n        break;\n      case \"Product::Special\":\n        this._appendPartial(\"special\");\n        break;\n      case \"Product::Referral\":\n        this._appendPartial(\"referral\");\n        break;\n      case \"Product::Dynamic\":\n        this._appendPartial(\"dynamic\");\n        break;\n      default:\n        this.emptyStateTarget.classList.remove(\"d-none\");\n        return;\n    }\n  }\n\n  _findPartial(name, collection) {\n    return collection.find(\n      (element) => element.getAttribute('data-form-partial') === name\n    );\n  }\n\n  _appendPartial(partialName) {\n    const partial = this._findPartial(partialName, this.partialClones);\n    partial.classList.remove('d-none');\n    this.partialWrapperTarget.append(partial);\n  }\n\n  _removePartialsFromDOM() {\n    this.formPartialTargets.forEach((element) => {\n      element.classList.add('d-none');\n      element.remove();\n    });\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\";\n\nexport default class extends Controller {\n  SERVICE_WORKER_URL = document.querySelector('meta[name=\"service-worker-url\"]').getAttribute(\"content\");\n\n  connect() {\n    if (navigator.serviceWorker) {\n      if (navigator.serviceWorker.controller) {\n        // If the service worker is already running, skip to state change\n        this.stateChange();\n      } else {\n        // Register the service worker, and wait for it to become active\n        navigator.serviceWorker\n          .register(this.SERVICE_WORKER_URL)\n          .then(function (reg) {});\n        navigator.serviceWorker.addEventListener(\n          \"controllerchange\",\n          this.controllerChange.bind(this)\n        );\n      }\n    }\n  }\n\n  controllerChange(event) {\n    navigator.serviceWorker.controller.addEventListener(\n      \"statechange\",\n      this.stateChange.bind(this)\n    );\n  }\n\n  stateChange() {\n    // perform any visual manipulations here\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\";\r\nimport { Modal }      from \"bootstrap\";\r\n\r\nexport default class extends Controller {\r\n  static targets = [ \"modal\" ]\r\n\r\n  connect() {\r\n    let modal = new Modal(this.modalTarget);\r\n    modal.show();\r\n  }\r\n}\r\n", "import { Controller } from \"@hotwired/stimulus\";\n\nexport default class extends Controller {\n  static targets = [\"notice\"];\n\n  copy(event) {\n    navigator.clipboard.writeText(event.target.getAttribute(\"data-token\"));\n    this.toggleNotice();\n  }\n\n  toggleNotice() {\n    this.noticeTarget.classList.remove(\"d-none\");\n\n    setTimeout(() => {\n      this.noticeTarget.classList.add(\"d-none\");\n    }, 3000);\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\";\nimport Uppy                from '@uppy/core';\nimport Dashboard           from '@uppy/dashboard';\nimport ActiveStorageUpload from '@excid3/uppy-activestorage-upload';\nimport ImageEditor         from '@uppy/image-editor';\n\n// const Uppy                = require('@uppy/core');\n// const Dashboard           = require('@uppy/dashboard');\n// const ActiveStorageUpload = require('@excid3/uppy-activestorage-upload');\n// const ImageEditor         = require('@uppy/image-editor');\n\nexport default class extends Controller {\n  static targets = [\n    'file',\n    'documentUploading',\n    'documentUploadingSvg',\n    'documentMainContent',\n    'uploadable'\n  ]\n\n  oneMegabyte = 1048576;\n\n  connect() {\n    this.uploadableTargets.forEach(target => {\n      const id            = target.dataset.uploadableName;\n      const aspectRatio   = target.dataset.uploadableAspectRatio;\n      const uppyEl        = target.querySelector('[data-uppy]');\n      const maxNumFiles   = Number(target.dataset.uploadableMaxNumFiles || 1);\n      const currentImages = Array.from(target.querySelectorAll('img')).filter(item => !Array.from(item.classList).includes('wui-fallback-image'));\n      const autoSubmit    = target.dataset.uploadableAutoSubmit === 'true';\n      // const isProduction  = document.querySelector(\"meta[name='environment']\").getAttribute(\"content\") === 'production';\n\n      const uppyInst = new Uppy({\n        debug:                      false,\n        autoProceed:                false,\n        allowMultipleUploads:       false,\n        allowMultipleUploadBatches: false,\n        restrictions: {\n                                    maxNumberOfFiles: maxNumFiles,\n                                    maxFileSize:      5 * this.oneMegabyte,\n                                    maxTotalFileSize: maxNumFiles * 5 * this.oneMegabyte,\n        },\n        allowedFileTypes:           ['image/*']\n      });\n\n\n      // if (currentImages && false) {\n      //   uppyInst.on('dashboard:modal-open', () => {\n      //     currentImages.forEach((img) => {\n      //       fetch(img.src)\n      //         .then(res => res.blob())\n      //         .then((blob) => {\n      //           let uploadId = uppyInst.addFile({\n      //             name: img.dataset.fileName,\n      //             type: blob.type,\n      //             data: blob\n      //           });\n\n      //           uppyInst.setFileState(uploadId, {\n      //             progress: { uploadComplete: true, uploadStarted: true }\n      //           });\n      //         })\n      //     });\n      //   });\n      // }\n\n      this.setupUppy(uppyEl, id, aspectRatio, uppyInst, autoSubmit);\n    });\n  }\n\n  disconnect() {\n    if (this.uppy)\n      this.uppy.close({ reason: 'disconnected' })\n  }\n\n  setupUppy(el, id, aspectRatio, uppyInst, autoSubmit) {\n    let defaultAR       = \"1/1\";\n    let trigger         = el.querySelector('[data-behavior=\"uppy-trigger\"]');\n    let form            = el.closest('form');\n    let directUploadUrl = document.querySelector(\"meta[name='direct-upload-url']\").getAttribute(\"content\");\n    let fieldName       = el.dataset.uppy;\n\n    if (trigger) {\n      trigger.addEventListener('click', (e) => e.preventDefault());\n    }\n\n    if (directUploadUrl)\n      uppyInst.use(ActiveStorageUpload, {\n        id: `ActiveStorageUpload - ${id}`,\n        directUploadUrl: directUploadUrl\n      });\n\n    if (trigger) {\n      uppyInst.use(Dashboard, {\n        id: `Dashboard - ${id}`,\n        trigger: `#${trigger.id}`,\n        closeAfterFinish: true,\n        allowMultipleUploadBatches: false,\n        autoOpenFileEditor: false,\n        allowMultipleUploads: false\n      });\n    }\n\n    let [aspectRatioX, aspectRatioY] = this.extractAspectRatioFrom(aspectRatio || defaultAR);\n    const ratioFractional            = Number(aspectRatioX / aspectRatioY);\n\n    let cropperOptions = {\n      viewMode:           2,\n      background:         true,\n      autoCropArea:       1,\n      initialAspectRatio: ratioFractional,\n      cropBoxMovable:     true,\n      cropBoxResizable:   true,\n      guides:             true,\n      center:             true\n    }\n\n\n    uppyInst.use(ImageEditor, {\n      id: `ImageEditor - ${id}`,\n      target: Dashboard,\n      quality: 0.5,\n      cropperOptions,\n      actions: {\n        revert:                 false,\n        rotate:                 false,\n        granularRotate:         false,\n        flip:                   false,\n        zoomIn:                 false,\n        zoomOut:                false,\n        cropSquare:             ratioFractional === 1,\n        cropWidescreen:         ratioFractional === Number(16/9),\n        cropWidescreenVertical: false,\n      }\n    })\n\n    uppyInst.on('complete', (result) => {\n      el.querySelectorAll('[data-pending-upload]').forEach(element => element.parentNode.removeChild(element));\n\n      result.successful.forEach((file) => {\n        this.appendUploadedFile(el, file, fieldName);\n        this.setPreview(el, file);\n      });\n\n      uppyInst.cancelAll();\n\n      if (autoSubmit) {\n        this.showLoading(el, id);\n        form.submit();\n      }\n    });\n  }\n\n  appendUploadedFile(element, file, fieldName) {\n    const hiddenField = document.createElement('input');\n\n    hiddenField.setAttribute('type', 'hidden');\n    hiddenField.setAttribute('name', fieldName);\n    hiddenField.setAttribute('data-pending-upload', true);\n    hiddenField.setAttribute('value', file.response.signed_id);\n\n    element.appendChild(hiddenField);\n  }\n\n  setPreview(element, file) {\n    const defaultImageUrl = document.querySelector('[data-default-image-url]').dataset.defaultLogoUrl;\n    let preview           = element.querySelector('[data-behavior=\"uppy-preview\"]');\n\n    if (preview) {\n      let src = (file.preview) ? file.preview : defaultImageUrl\n      preview.src = src\n    }\n  }\n\n  showLoading(_el, id) {\n    this.documentUploadingSvgTarget.innerHTML = this.lottieFileUploading();\n    const container = this.documentMainContentTargets.find(i => i.dataset.name === id);\n    if (container)\n      container.classList.add('d-none');\n    this.documentUploadingTarget.classList.remove('d-none');\n  }\n\n  lottieFileUploading() {\n    return ' \\\n      <lottie-player \\\n        src=\"/vendor/lottie/doc_upload.json\" \\\n        background=\"transparent\" \\\n        speed=\"1\" \\\n        loop=\"true\" \\\n        style=\"width: 100%; height: 300px;\" \\\n        autoplay \\\n      ></lottie-player>';\n  }\n\n  enableSubmit() {\n    const button = document.querySelector('[data-submit]');\n    button.disabled = false;\n\n    document.querySelector('[data-save-notice]').classList.remove('d-none');\n  }\n\n  extractAspectRatioFrom(string) {\n    return string.split(\"/\");\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\";\nimport Rails from \"@rails/ujs\"\nlet debounce = require(\"lodash/debounce\");\n\nexport default class extends Controller {\n  static targets = [\"dropdownItem\", \"dropdownList\", \"input\", \"hiddenInput\", \"searchUrl\"];\n\n  connect() {\n    this.filterItems = debounce(this.filterItems, 100).bind(this);\n  }\n\n  selectItem(e) {\n    e.preventDefault();\n\n    const target      = e.target;\n    const optionText  = target.firstChild.nodeValue;\n    const optionValue = target.dataset.value;\n    const fieldName   = target.dataset.field;\n\n    this.inputTarget.value        = optionText;\n    this.hiddenInputTarget.value  = optionValue;\n  }\n\n  filterItems(e) {\n    this.appendSearching();\n\n    const currentText = e.target.value;\n    const form        = new FormData();\n    const data        = { text: currentText, merchant_id: this.inputTarget.dataset.merchantId };\n\n    form.append('query', JSON.stringify(data));\n\n    Rails.ajax({\n      type:     'post',\n      dataType: 'json',\n      url:      this.inputTarget.dataset.searchUrl,\n      data:     form,\n      success:  (response) => {\n        this.refreshList();\n        this.dropdownListTarget.innerHTML = '';\n\n        response.data.forEach((i) => {\n          this.dropdownListTarget.insertAdjacentHTML(\"beforeend\", i);\n        });\n\n        if (response.data.length === 0) {\n          this.appendEmptyItem();\n        }\n      },\n      error: () => this.appendEmptyItem(),\n    });\n  }\n\n  refreshList() {\n    this.dropdownListTarget.innerHTML = '';\n  }\n\n  appendEmptyItem() {\n    let li = document.createElement('li');\n\n    li.classList.add('dropdown-item');\n    li.textContent = 'No results';\n\n    this.dropdownListTarget.appendChild(li);\n  }\n\n  appendSearching() {\n    this.refreshList();\n    let li = document.createElement('li');\n\n    li.classList.add('dropdown-item');\n    li.textContent = 'Searching ...';\n\n    this.dropdownListTarget.appendChild(li);\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\";\nimport Inputmask from \"inputmask\";\n\nexport default class extends Controller {\n  static targets = [\"maskable\"];\n  connect() {\n    const defaultMaskFormat = \"(99)99 9999999\";\n\n    this.maskableTargets.forEach(element => {\n      const maskFormat = element.dataset.format || defaultMaskFormat;\n      const maskObject = new Inputmask(maskFormat)\n\n      maskObject.mask(element);\n    });\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\";\n\nexport default class extends Controller {\n  static targets = [\"appendable\", \"formprepend\", \"fieldsContainer\"];\n  connect() {}\n\n  appendToForm(e) {\n    const time            = new Date().getTime()\n    const objString       = e.target.dataset.formPrepend;\n    const newObjectString = objString.replaceAll(\"new_record\", time);\n\n    this.fieldsContainerTarget.insertAdjacentHTML('beforeend', newObjectString);\n  }\n\n  convertStringToHTML(str) {\n    let parser = new DOMParser();\n    let doc    = parser.parseFromString(str, 'text/html');\n\n    return doc.body.firstChild;\n  };\n\n  remove(_e) {}\n}\n", "import { Controller } from \"@hotwired/stimulus\";\r\n\r\nexport default class extends Controller {\r\n  static targets = [\r\n    \"availableCards\",\r\n    \"availableCardsTrigger\"\r\n  ];\r\n\r\n  connect() {\r\n    this.availableCardsTriggerTargets.forEach((labelEl) => {\r\n      const identifier      = labelEl.dataset.availableCardsTriggerValue;\r\n      let checkboxContainer = labelEl.querySelector(`[data-checkbox-container=\"${identifier}\"]`);\r\n\r\n      if (checkboxContainer) {\r\n        let checkbox = checkboxContainer.querySelector('input');\r\n\r\n        if (checkbox.checked) {\r\n          this.selectOption(labelEl);\r\n        }\r\n      }\r\n    })\r\n  }\r\n\r\n  selectOption(eventOrEl) {\r\n    let labelEl = eventOrEl;\r\n\r\n    if (eventOrEl instanceof Event) {\r\n      labelEl = eventOrEl.target;\r\n    }\r\n\r\n    if(labelEl.tagName === 'LABEL' && labelEl.dataset.availableCardsTriggerValue) {\r\n      this.availableCardsTargets.forEach((ac) => ac.classList.add('d-none'));\r\n      const cardIdentifier = labelEl.dataset.availableCardsTriggerValue;\r\n\r\n      const cardEl = this.availableCardsTargets.find((ac) => {\r\n        return ac.dataset.availableCards === cardIdentifier;\r\n      });\r\n\r\n      if (cardEl) {\r\n        cardEl.classList.remove('d-none');\r\n      }\r\n    }\r\n  }\r\n}\r\n", "import { Controller } from \"@hotwired/stimulus\";\r\n\r\nexport default class extends Controller {\r\n  static targets = [\r\n    'customRewardField',\r\n    'percentRewardField',\r\n    'selectedRewardType'\r\n  ];\r\n\r\n  connect() {\r\n    // Select Reward Type\r\n    if (this.hasSelectedRewardTypeTarget && this.selectedRewardTypeTarget.value !== '') {\r\n      this.toggleRewardType(this.selectedRewardTypeTarget.value);\r\n    }\r\n  }\r\n\r\n  toggleRewardType(eventOrString) {\r\n    let selectValue;\r\n    typeof eventOrString === 'string'\r\n      ? (selectValue = eventOrString)\r\n      : (selectValue = eventOrString.target.value);\r\n\r\n    if (selectValue === 'Custom') {\r\n      this.customRewardFieldTarget.classList.remove('d-none');\r\n      this.percentRewardFieldTarget.classList.add('d-none');\r\n    }\r\n\r\n    if (selectValue === 'Percent') {\r\n      this.customRewardFieldTarget.classList.add('d-none');\r\n      this.percentRewardFieldTarget.classList.remove('d-none');\r\n    }\r\n  }\r\n}\r\n", "import { Controller } from \"@hotwired/stimulus\";\r\nimport { loading } from \"../utils/_loading\"\r\n\r\nclass RequestError extends Error {\r\n  constructor(message, response) {\r\n    super(message);\r\n    this.response = response;\r\n    this.message = message;\r\n  }\r\n}\r\n\r\nexport default class extends Controller {\r\n  static targets = ['form', 'content', 'selectionForm'];\r\n\r\n  connect() {}\r\n\r\n  triggerForm(_e) {\r\n    this.contentTarget.classList.add('p-5');\r\n    this.contentTarget.innerHTML = loading();\r\n\r\n    fetch('/api/v1/sessions/fetch_form', {\r\n      method: \"GET\"\r\n    })\r\n    .then(response => response.json())\r\n    .then(result => {\r\n      this.contentTarget.classList.remove('p-5');\r\n      this.contentTarget.innerHTML = result.data.html;\r\n    })\r\n  }\r\n\r\n  submitForm(_e) {\r\n    const form = new FormData(this.formTarget);\r\n    const url  = this.formTarget.action;\r\n\r\n    this.contentTarget.classList.add('p-5');\r\n    this.contentTarget.innerHTML = loading();\r\n\r\n    fetch(url, {\r\n      method: \"POST\",\r\n      body: form\r\n    })\r\n    .then(response => {\r\n      if (response.ok) {\r\n        return response.json();\r\n      }\r\n\r\n      throw new RequestError('Invalid email or password', response);\r\n    })\r\n    .then(result => {\r\n      if(result.data.redirect_url) {\r\n        window.location.href = result.data.redirect_url;\r\n      } else {\r\n        this.contentTarget.classList.remove('p-5');\r\n        this.contentTarget.innerHTML = result.data.html;\r\n      }\r\n    })\r\n    .catch(error=> error.response.json())\r\n    .then(response => {\r\n      this.contentTarget.classList.remove('p-5');\r\n      this.contentTarget.innerHTML = response.data.html;\r\n    })\r\n    .catch(_error => {\r\n      return;\r\n    })\r\n  }\r\n\r\n  submitSelectForm(_e) {\r\n    const form = new FormData(this.selectionFormTarget);\r\n    const url  = this.selectionFormTarget.action;\r\n\r\n    fetch(url, {\r\n      method: \"POST\",\r\n      body: form\r\n    })\r\n    .then(response => {\r\n      if (response.ok) {\r\n        return response.json();\r\n      }\r\n\r\n      throw new RequestError('Invalid email or password', response);\r\n    })\r\n    .then(result => {\r\n      if(result.data.redirect_url) {\r\n        window.location.href = result.data.redirect_url;\r\n      }\r\n    })\r\n  }\r\n}\r\n", "import { Controller } from \"@hotwired/stimulus\";\n\nexport default class extends Controller {\n  static targets = [\"emailInput\", \"successMessage\", \"errorMessage\"];\n\n  onSuccess() {\n    this.emailInputTarget.classList.add('d-none');\n    this.errorMessageTarget.classList.add('d-none');\n\n    this.successMessageTarget.classList.remove('d-none');\n  }\n\n  onError(response) {\n    const errorMsg = response.detail[0][\"message\"];\n    this.errorMessageTarget.innerHTML = errorMsg;\n    this.errorMessageTarget.classList.remove('d-none');\n  }\n}\n", "\n        import * as module0 from './bookings/product_filter_controller.js';import * as module1 from './bookings/professional_select_controller.js';import * as module2 from './bookings/video_controller.js';import * as module3 from './bookings_controller.js';import * as module4 from './calendar_controller.js';import * as module5 from './codes_controller.js';import * as module6 from './confirmations_controller.js';import * as module7 from './cookie_consent_controller.js';import * as module8 from './date_picker_controller.js';import * as module9 from './form_controller.js';import * as module10 from './geolocation_controller.js';import * as module11 from './hello_controller.js';import * as module12 from './iframe/form_controller.js';import * as module13 from './live_time_controller.js';import * as module14 from './merchants/availability_controller.js';import * as module15 from './merchants/documents_upload_controller.js';import * as module16 from './merchants/logo_upload_controller.js';import * as module17 from './merchants/point_of_sale/order_quick_view_controller.js';import * as module18 from './merchants/rewardables_upload_controller.js';import * as module19 from './merchants/subscription_selector_controller.js';import * as module20 from './merchants/voucher_deliverables_controller.js';import * as module21 from './numberpad_controller.js';import * as module22 from './partial_toggler_controller.js';import * as module23 from './patrons/referrals_controller.js';import * as module24 from './patrons/smart_orders_controller.js';import * as module25 from './payment_confirmation_controller.js';import * as module26 from './posthog_controller.js';import * as module27 from './products_controller.js';import * as module28 from './push_controller.js';import * as module29 from './questions_validator_controller.js';import * as module30 from './scanner_controller.js';import * as module31 from './service_controller.js';import * as module32 from './service_worker_controller.js';import * as module33 from './shared/auto_open_modal_controller.js';import * as module34 from './shared/copy_to_clipboard_controller.js';import * as module35 from './shared/image_upload_controller.js';import * as module36 from './shared/live_dropdown_controller.js';import * as module37 from './shared/masked_field_controller.js';import * as module38 from './shared/nested_attributes_controller.js';import * as module39 from './shared/payment_option_controller.js';import * as module40 from './shared/reward_type_controller.js';import * as module41 from './sign_in_controller.js';import * as module42 from './subscribers_controller.js'\n        const modules = [{name: 'bookings--product-filter', module: module0, filename: 'bookings/product_filter_controller.js'},{name: 'bookings--professional-select', module: module1, filename: 'bookings/professional_select_controller.js'},{name: 'bookings--video', module: module2, filename: 'bookings/video_controller.js'},{name: 'bookings', module: module3, filename: 'bookings_controller.js'},{name: 'calendar', module: module4, filename: 'calendar_controller.js'},{name: 'codes', module: module5, filename: 'codes_controller.js'},{name: 'confirmations', module: module6, filename: 'confirmations_controller.js'},{name: 'cookie-consent', module: module7, filename: 'cookie_consent_controller.js'},{name: 'date-picker', module: module8, filename: 'date_picker_controller.js'},{name: 'form', module: module9, filename: 'form_controller.js'},{name: 'geolocation', module: module10, filename: 'geolocation_controller.js'},{name: 'hello', module: module11, filename: 'hello_controller.js'},{name: 'iframe--form', module: module12, filename: 'iframe/form_controller.js'},{name: 'live-time', module: module13, filename: 'live_time_controller.js'},{name: 'merchants--availability', module: module14, filename: 'merchants/availability_controller.js'},{name: 'merchants--documents-upload', module: module15, filename: 'merchants/documents_upload_controller.js'},{name: 'merchants--logo-upload', module: module16, filename: 'merchants/logo_upload_controller.js'},{name: 'merchants--point-of-sale--order-quick-view', module: module17, filename: 'merchants/point_of_sale/order_quick_view_controller.js'},{name: 'merchants--rewardables-upload', module: module18, filename: 'merchants/rewardables_upload_controller.js'},{name: 'merchants--subscription-selector', module: module19, filename: 'merchants/subscription_selector_controller.js'},{name: 'merchants--voucher-deliverables', module: module20, filename: 'merchants/voucher_deliverables_controller.js'},{name: 'numberpad', module: module21, filename: 'numberpad_controller.js'},{name: 'partial-toggler', module: module22, filename: 'partial_toggler_controller.js'},{name: 'patrons--referrals', module: module23, filename: 'patrons/referrals_controller.js'},{name: 'patrons--smart-orders', module: module24, filename: 'patrons/smart_orders_controller.js'},{name: 'payment-confirmation', module: module25, filename: 'payment_confirmation_controller.js'},{name: 'posthog', module: module26, filename: 'posthog_controller.js'},{name: 'products', module: module27, filename: 'products_controller.js'},{name: 'push', module: module28, filename: 'push_controller.js'},{name: 'questions-validator', module: module29, filename: 'questions_validator_controller.js'},{name: 'scanner', module: module30, filename: 'scanner_controller.js'},{name: 'service', module: module31, filename: 'service_controller.js'},{name: 'service-worker', module: module32, filename: 'service_worker_controller.js'},{name: 'shared--auto-open-modal', module: module33, filename: 'shared/auto_open_modal_controller.js'},{name: 'shared--copy-to-clipboard', module: module34, filename: 'shared/copy_to_clipboard_controller.js'},{name: 'shared--image-upload', module: module35, filename: 'shared/image_upload_controller.js'},{name: 'shared--live-dropdown', module: module36, filename: 'shared/live_dropdown_controller.js'},{name: 'shared--masked-field', module: module37, filename: 'shared/masked_field_controller.js'},{name: 'shared--nested-attributes', module: module38, filename: 'shared/nested_attributes_controller.js'},{name: 'shared--payment-option', module: module39, filename: 'shared/payment_option_controller.js'},{name: 'shared--reward-type', module: module40, filename: 'shared/reward_type_controller.js'},{name: 'sign-in', module: module41, filename: 'sign_in_controller.js'},{name: 'subscribers', module: module42, filename: 'subscribers_controller.js'}]\n        export default modules;\n      ", "\n        \n        const modules = []\n        export default modules;\n      ", "// Load all the controllers within this directory and all subdirectories.\n// Controller files must be named *_controller.js.\n\nimport { Application } from \"@hotwired/stimulus\";\n\nimport controllers    from \"./**/*_controller.js\";\nimport tScontrollers  from \"./**/*_controller.ts\";\n\nconst application = Application.start();\n\ncontrollers.concat(tScontrollers).forEach((controller) => {\n  application.register(controller.name, controller.module.default);\n});\n", "document.documentElement.style.setProperty('--vh', `${window.innerHeight * 0.01}px`);\nwindow.addEventListener('resize', () => {\n  let vh = window.innerHeight * 0.01;\n  document.documentElement.style.setProperty('--vh', `${vh}px`);\n});\n", "/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n    extendStatics = Object.setPrototypeOf ||\r\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n        function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n    return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n    if (typeof b !== \"function\" && b !== null)\r\n        throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n    extendStatics(d, b);\r\n    function __() { this.constructor = d; }\r\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n    __assign = Object.assign || function __assign(t) {\r\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n            s = arguments[i];\r\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n        }\r\n        return t;\r\n    }\r\n    return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n    var t = {};\r\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n        t[p] = s[p];\r\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n                t[p[i]] = s[p[i]];\r\n        }\r\n    return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n    return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n    return new (P || (P = Promise))(function (resolve, reject) {\r\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n    });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n    function verb(n) { return function (v) { return step([n, v]); }; }\r\n    function step(op) {\r\n        if (f) throw new TypeError(\"Generator is already executing.\");\r\n        while (_) try {\r\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n            if (y = 0, t) op = [op[0] & 2, t.value];\r\n            switch (op[0]) {\r\n                case 0: case 1: t = op; break;\r\n                case 4: _.label++; return { value: op[1], done: false };\r\n                case 5: _.label++; y = op[1]; op = [0]; continue;\r\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n                default:\r\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n                    if (t[2]) _.ops.pop();\r\n                    _.trys.pop(); continue;\r\n            }\r\n            op = body.call(thisArg, _);\r\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n    }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n    if (k2 === undefined) k2 = k;\r\n    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n    if (k2 === undefined) k2 = k;\r\n    o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n    for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n    if (m) return m.call(o);\r\n    if (o && typeof o.length === \"number\") return {\r\n        next: function () {\r\n            if (o && i >= o.length) o = void 0;\r\n            return { value: o && o[i++], done: !o };\r\n        }\r\n    };\r\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n    if (!m) return o;\r\n    var i = m.call(o), r, ar = [], e;\r\n    try {\r\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n    }\r\n    catch (error) { e = { error: error }; }\r\n    finally {\r\n        try {\r\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n        }\r\n        finally { if (e) throw e.error; }\r\n    }\r\n    return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n    for (var ar = [], i = 0; i < arguments.length; i++)\r\n        ar = ar.concat(__read(arguments[i]));\r\n    return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n    for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n    for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n        for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n            r[k] = a[j];\r\n    return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n    if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n        if (ar || !(i in from)) {\r\n            if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n            ar[i] = from[i];\r\n        }\r\n    }\r\n    return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n    return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n    return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n    function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n    function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n    function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n    function fulfill(value) { resume(\"next\", value); }\r\n    function reject(value) { resume(\"throw\", value); }\r\n    function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n    var i, p;\r\n    return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n    function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var m = o[Symbol.asyncIterator], i;\r\n    return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n    function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n    function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n    if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n    return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n    Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n    o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n    if (mod && mod.__esModule) return mod;\r\n    var result = {};\r\n    if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n    __setModuleDefault(result, mod);\r\n    return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n    return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n    if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n    if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n    return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n    if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n    if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n    if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n    return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n", "/**\n * @license\n * Copyright 2019 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t=window.ShadowRoot&&(void 0===window.ShadyCSS||window.ShadyCSS.nativeShadow)&&\"adoptedStyleSheets\"in Document.prototype&&\"replace\"in CSSStyleSheet.prototype,e=Symbol(),n=new Map;class s{constructor(t,n){if(this._$cssResult$=!0,n!==e)throw Error(\"CSSResult is not constructable. Use `unsafeCSS` or `css` instead.\");this.cssText=t}get styleSheet(){let e=n.get(this.cssText);return t&&void 0===e&&(n.set(this.cssText,e=new CSSStyleSheet),e.replaceSync(this.cssText)),e}toString(){return this.cssText}}const o=t=>new s(\"string\"==typeof t?t:t+\"\",e),r=(t,...n)=>{const o=1===t.length?t[0]:n.reduce(((e,n,s)=>e+(t=>{if(!0===t._$cssResult$)return t.cssText;if(\"number\"==typeof t)return t;throw Error(\"Value passed to 'css' function must be a 'css' function result: \"+t+\". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.\")})(n)+t[s+1]),t[0]);return new s(o,e)},i=(e,n)=>{t?e.adoptedStyleSheets=n.map((t=>t instanceof CSSStyleSheet?t:t.styleSheet)):n.forEach((t=>{const n=document.createElement(\"style\"),s=window.litNonce;void 0!==s&&n.setAttribute(\"nonce\",s),n.textContent=t.cssText,e.appendChild(n)}))},S=t?t=>t:t=>t instanceof CSSStyleSheet?(t=>{let e=\"\";for(const n of t.cssRules)e+=n.cssText;return o(e)})(t):t;export{s as CSSResult,i as adoptStyles,r as css,S as getCompatibleStyle,t as supportsAdoptingStyleSheets,o as unsafeCSS};\n//# sourceMappingURL=css-tag.js.map\n", "import{getCompatibleStyle as t,adoptStyles as i}from\"./css-tag.js\";export{CSSResult,adoptStyles,css,getCompatibleStyle,supportsAdoptingStyleSheets,unsafeCSS}from\"./css-tag.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */var s;const e=window.trustedTypes,r=e?e.emptyScript:\"\",h=window.reactiveElementPolyfillSupport,o={toAttribute(t,i){switch(i){case Boolean:t=t?r:null;break;case Object:case Array:t=null==t?t:JSON.stringify(t)}return t},fromAttribute(t,i){let s=t;switch(i){case Boolean:s=null!==t;break;case Number:s=null===t?null:Number(t);break;case Object:case Array:try{s=JSON.parse(t)}catch(t){s=null}}return s}},n=(t,i)=>i!==t&&(i==i||t==t),l={attribute:!0,type:String,converter:o,reflect:!1,hasChanged:n};class a extends HTMLElement{constructor(){super(),this._$Et=new Map,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Ei=null,this.o()}static addInitializer(t){var i;null!==(i=this.l)&&void 0!==i||(this.l=[]),this.l.push(t)}static get observedAttributes(){this.finalize();const t=[];return this.elementProperties.forEach(((i,s)=>{const e=this._$Eh(s,i);void 0!==e&&(this._$Eu.set(e,s),t.push(e))})),t}static createProperty(t,i=l){if(i.state&&(i.attribute=!1),this.finalize(),this.elementProperties.set(t,i),!i.noAccessor&&!this.prototype.hasOwnProperty(t)){const s=\"symbol\"==typeof t?Symbol():\"__\"+t,e=this.getPropertyDescriptor(t,s,i);void 0!==e&&Object.defineProperty(this.prototype,t,e)}}static getPropertyDescriptor(t,i,s){return{get(){return this[i]},set(e){const r=this[t];this[i]=e,this.requestUpdate(t,r,s)},configurable:!0,enumerable:!0}}static getPropertyOptions(t){return this.elementProperties.get(t)||l}static finalize(){if(this.hasOwnProperty(\"finalized\"))return!1;this.finalized=!0;const t=Object.getPrototypeOf(this);if(t.finalize(),this.elementProperties=new Map(t.elementProperties),this._$Eu=new Map,this.hasOwnProperty(\"properties\")){const t=this.properties,i=[...Object.getOwnPropertyNames(t),...Object.getOwnPropertySymbols(t)];for(const s of i)this.createProperty(s,t[s])}return this.elementStyles=this.finalizeStyles(this.styles),!0}static finalizeStyles(i){const s=[];if(Array.isArray(i)){const e=new Set(i.flat(1/0).reverse());for(const i of e)s.unshift(t(i))}else void 0!==i&&s.push(t(i));return s}static _$Eh(t,i){const s=i.attribute;return!1===s?void 0:\"string\"==typeof s?s:\"string\"==typeof t?t.toLowerCase():void 0}o(){var t;this._$Ep=new Promise((t=>this.enableUpdating=t)),this._$AL=new Map,this._$Em(),this.requestUpdate(),null===(t=this.constructor.l)||void 0===t||t.forEach((t=>t(this)))}addController(t){var i,s;(null!==(i=this._$Eg)&&void 0!==i?i:this._$Eg=[]).push(t),void 0!==this.renderRoot&&this.isConnected&&(null===(s=t.hostConnected)||void 0===s||s.call(t))}removeController(t){var i;null===(i=this._$Eg)||void 0===i||i.splice(this._$Eg.indexOf(t)>>>0,1)}_$Em(){this.constructor.elementProperties.forEach(((t,i)=>{this.hasOwnProperty(i)&&(this._$Et.set(i,this[i]),delete this[i])}))}createRenderRoot(){var t;const s=null!==(t=this.shadowRoot)&&void 0!==t?t:this.attachShadow(this.constructor.shadowRootOptions);return i(s,this.constructor.elementStyles),s}connectedCallback(){var t;void 0===this.renderRoot&&(this.renderRoot=this.createRenderRoot()),this.enableUpdating(!0),null===(t=this._$Eg)||void 0===t||t.forEach((t=>{var i;return null===(i=t.hostConnected)||void 0===i?void 0:i.call(t)}))}enableUpdating(t){}disconnectedCallback(){var t;null===(t=this._$Eg)||void 0===t||t.forEach((t=>{var i;return null===(i=t.hostDisconnected)||void 0===i?void 0:i.call(t)}))}attributeChangedCallback(t,i,s){this._$AK(t,s)}_$ES(t,i,s=l){var e,r;const h=this.constructor._$Eh(t,s);if(void 0!==h&&!0===s.reflect){const n=(null!==(r=null===(e=s.converter)||void 0===e?void 0:e.toAttribute)&&void 0!==r?r:o.toAttribute)(i,s.type);this._$Ei=t,null==n?this.removeAttribute(h):this.setAttribute(h,n),this._$Ei=null}}_$AK(t,i){var s,e,r;const h=this.constructor,n=h._$Eu.get(t);if(void 0!==n&&this._$Ei!==n){const t=h.getPropertyOptions(n),l=t.converter,a=null!==(r=null!==(e=null===(s=l)||void 0===s?void 0:s.fromAttribute)&&void 0!==e?e:\"function\"==typeof l?l:null)&&void 0!==r?r:o.fromAttribute;this._$Ei=n,this[n]=a(i,t.type),this._$Ei=null}}requestUpdate(t,i,s){let e=!0;void 0!==t&&(((s=s||this.constructor.getPropertyOptions(t)).hasChanged||n)(this[t],i)?(this._$AL.has(t)||this._$AL.set(t,i),!0===s.reflect&&this._$Ei!==t&&(void 0===this._$E_&&(this._$E_=new Map),this._$E_.set(t,s))):e=!1),!this.isUpdatePending&&e&&(this._$Ep=this._$EC())}async _$EC(){this.isUpdatePending=!0;try{await this._$Ep}catch(t){Promise.reject(t)}const t=this.scheduleUpdate();return null!=t&&await t,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){var t;if(!this.isUpdatePending)return;this.hasUpdated,this._$Et&&(this._$Et.forEach(((t,i)=>this[i]=t)),this._$Et=void 0);let i=!1;const s=this._$AL;try{i=this.shouldUpdate(s),i?(this.willUpdate(s),null===(t=this._$Eg)||void 0===t||t.forEach((t=>{var i;return null===(i=t.hostUpdate)||void 0===i?void 0:i.call(t)})),this.update(s)):this._$EU()}catch(t){throw i=!1,this._$EU(),t}i&&this._$AE(s)}willUpdate(t){}_$AE(t){var i;null===(i=this._$Eg)||void 0===i||i.forEach((t=>{var i;return null===(i=t.hostUpdated)||void 0===i?void 0:i.call(t)})),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(t)),this.updated(t)}_$EU(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$Ep}shouldUpdate(t){return!0}update(t){void 0!==this._$E_&&(this._$E_.forEach(((t,i)=>this._$ES(i,this[i],t))),this._$E_=void 0),this._$EU()}updated(t){}firstUpdated(t){}}a.finalized=!0,a.elementProperties=new Map,a.elementStyles=[],a.shadowRootOptions={mode:\"open\"},null==h||h({ReactiveElement:a}),(null!==(s=globalThis.reactiveElementVersions)&&void 0!==s?s:globalThis.reactiveElementVersions=[]).push(\"1.2.1\");export{a as ReactiveElement,o as defaultConverter,n as notEqual};\n//# sourceMappingURL=reactive-element.js.map\n", "/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nvar t;const i=globalThis.trustedTypes,s=i?i.createPolicy(\"lit-html\",{createHTML:t=>t}):void 0,e=`lit$${(Math.random()+\"\").slice(9)}$`,o=\"?\"+e,n=`<${o}>`,l=document,h=(t=\"\")=>l.createComment(t),r=t=>null===t||\"object\"!=typeof t&&\"function\"!=typeof t,d=Array.isArray,u=t=>{var i;return d(t)||\"function\"==typeof(null===(i=t)||void 0===i?void 0:i[Symbol.iterator])},c=/<(?:(!--|\\/[^a-zA-Z])|(\\/?[a-zA-Z][^>\\s]*)|(\\/?$))/g,v=/-->/g,a=/>/g,f=/>|[ \t\\n\f\\r](?:([^\\s\"'>=/]+)([ \t\\n\f\\r]*=[ \t\\n\f\\r]*(?:[^ \t\\n\f\\r\"'`<>=]|(\"|')|))|$)/g,_=/'/g,m=/\"/g,g=/^(?:script|style|textarea)$/i,p=t=>(i,...s)=>({_$litType$:t,strings:i,values:s}),$=p(1),y=p(2),b=Symbol.for(\"lit-noChange\"),w=Symbol.for(\"lit-nothing\"),T=new WeakMap,x=(t,i,s)=>{var e,o;const n=null!==(e=null==s?void 0:s.renderBefore)&&void 0!==e?e:i;let l=n._$litPart$;if(void 0===l){const t=null!==(o=null==s?void 0:s.renderBefore)&&void 0!==o?o:null;n._$litPart$=l=new N(i.insertBefore(h(),t),t,void 0,null!=s?s:{})}return l._$AI(t),l},A=l.createTreeWalker(l,129,null,!1),C=(t,i)=>{const o=t.length-1,l=[];let h,r=2===i?\"<svg>\":\"\",d=c;for(let i=0;i<o;i++){const s=t[i];let o,u,p=-1,$=0;for(;$<s.length&&(d.lastIndex=$,u=d.exec(s),null!==u);)$=d.lastIndex,d===c?\"!--\"===u[1]?d=v:void 0!==u[1]?d=a:void 0!==u[2]?(g.test(u[2])&&(h=RegExp(\"</\"+u[2],\"g\")),d=f):void 0!==u[3]&&(d=f):d===f?\">\"===u[0]?(d=null!=h?h:c,p=-1):void 0===u[1]?p=-2:(p=d.lastIndex-u[2].length,o=u[1],d=void 0===u[3]?f:'\"'===u[3]?m:_):d===m||d===_?d=f:d===v||d===a?d=c:(d=f,h=void 0);const y=d===f&&t[i+1].startsWith(\"/>\")?\" \":\"\";r+=d===c?s+n:p>=0?(l.push(o),s.slice(0,p)+\"$lit$\"+s.slice(p)+e+y):s+e+(-2===p?(l.push(void 0),i):y)}const u=r+(t[o]||\"<?>\")+(2===i?\"</svg>\":\"\");if(!Array.isArray(t)||!t.hasOwnProperty(\"raw\"))throw Error(\"invalid template strings array\");return[void 0!==s?s.createHTML(u):u,l]};class E{constructor({strings:t,_$litType$:s},n){let l;this.parts=[];let r=0,d=0;const u=t.length-1,c=this.parts,[v,a]=C(t,s);if(this.el=E.createElement(v,n),A.currentNode=this.el.content,2===s){const t=this.el.content,i=t.firstChild;i.remove(),t.append(...i.childNodes)}for(;null!==(l=A.nextNode())&&c.length<u;){if(1===l.nodeType){if(l.hasAttributes()){const t=[];for(const i of l.getAttributeNames())if(i.endsWith(\"$lit$\")||i.startsWith(e)){const s=a[d++];if(t.push(i),void 0!==s){const t=l.getAttribute(s.toLowerCase()+\"$lit$\").split(e),i=/([.?@])?(.*)/.exec(s);c.push({type:1,index:r,name:i[2],strings:t,ctor:\".\"===i[1]?M:\"?\"===i[1]?H:\"@\"===i[1]?I:S})}else c.push({type:6,index:r})}for(const i of t)l.removeAttribute(i)}if(g.test(l.tagName)){const t=l.textContent.split(e),s=t.length-1;if(s>0){l.textContent=i?i.emptyScript:\"\";for(let i=0;i<s;i++)l.append(t[i],h()),A.nextNode(),c.push({type:2,index:++r});l.append(t[s],h())}}}else if(8===l.nodeType)if(l.data===o)c.push({type:2,index:r});else{let t=-1;for(;-1!==(t=l.data.indexOf(e,t+1));)c.push({type:7,index:r}),t+=e.length-1}r++}}static createElement(t,i){const s=l.createElement(\"template\");return s.innerHTML=t,s}}function P(t,i,s=t,e){var o,n,l,h;if(i===b)return i;let d=void 0!==e?null===(o=s._$Cl)||void 0===o?void 0:o[e]:s._$Cu;const u=r(i)?void 0:i._$litDirective$;return(null==d?void 0:d.constructor)!==u&&(null===(n=null==d?void 0:d._$AO)||void 0===n||n.call(d,!1),void 0===u?d=void 0:(d=new u(t),d._$AT(t,s,e)),void 0!==e?(null!==(l=(h=s)._$Cl)&&void 0!==l?l:h._$Cl=[])[e]=d:s._$Cu=d),void 0!==d&&(i=P(t,d._$AS(t,i.values),d,e)),i}class V{constructor(t,i){this.v=[],this._$AN=void 0,this._$AD=t,this._$AM=i}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}p(t){var i;const{el:{content:s},parts:e}=this._$AD,o=(null!==(i=null==t?void 0:t.creationScope)&&void 0!==i?i:l).importNode(s,!0);A.currentNode=o;let n=A.nextNode(),h=0,r=0,d=e[0];for(;void 0!==d;){if(h===d.index){let i;2===d.type?i=new N(n,n.nextSibling,this,t):1===d.type?i=new d.ctor(n,d.name,d.strings,this,t):6===d.type&&(i=new L(n,this,t)),this.v.push(i),d=e[++r]}h!==(null==d?void 0:d.index)&&(n=A.nextNode(),h++)}return o}m(t){let i=0;for(const s of this.v)void 0!==s&&(void 0!==s.strings?(s._$AI(t,s,i),i+=s.strings.length-2):s._$AI(t[i])),i++}}class N{constructor(t,i,s,e){var o;this.type=2,this._$AH=w,this._$AN=void 0,this._$AA=t,this._$AB=i,this._$AM=s,this.options=e,this._$Cg=null===(o=null==e?void 0:e.isConnected)||void 0===o||o}get _$AU(){var t,i;return null!==(i=null===(t=this._$AM)||void 0===t?void 0:t._$AU)&&void 0!==i?i:this._$Cg}get parentNode(){let t=this._$AA.parentNode;const i=this._$AM;return void 0!==i&&11===t.nodeType&&(t=i.parentNode),t}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(t,i=this){t=P(this,t,i),r(t)?t===w||null==t||\"\"===t?(this._$AH!==w&&this._$AR(),this._$AH=w):t!==this._$AH&&t!==b&&this.$(t):void 0!==t._$litType$?this.T(t):void 0!==t.nodeType?this.S(t):u(t)?this.A(t):this.$(t)}M(t,i=this._$AB){return this._$AA.parentNode.insertBefore(t,i)}S(t){this._$AH!==t&&(this._$AR(),this._$AH=this.M(t))}$(t){this._$AH!==w&&r(this._$AH)?this._$AA.nextSibling.data=t:this.S(l.createTextNode(t)),this._$AH=t}T(t){var i;const{values:s,_$litType$:e}=t,o=\"number\"==typeof e?this._$AC(t):(void 0===e.el&&(e.el=E.createElement(e.h,this.options)),e);if((null===(i=this._$AH)||void 0===i?void 0:i._$AD)===o)this._$AH.m(s);else{const t=new V(o,this),i=t.p(this.options);t.m(s),this.S(i),this._$AH=t}}_$AC(t){let i=T.get(t.strings);return void 0===i&&T.set(t.strings,i=new E(t)),i}A(t){d(this._$AH)||(this._$AH=[],this._$AR());const i=this._$AH;let s,e=0;for(const o of t)e===i.length?i.push(s=new N(this.M(h()),this.M(h()),this,this.options)):s=i[e],s._$AI(o),e++;e<i.length&&(this._$AR(s&&s._$AB.nextSibling,e),i.length=e)}_$AR(t=this._$AA.nextSibling,i){var s;for(null===(s=this._$AP)||void 0===s||s.call(this,!1,!0,i);t&&t!==this._$AB;){const i=t.nextSibling;t.remove(),t=i}}setConnected(t){var i;void 0===this._$AM&&(this._$Cg=t,null===(i=this._$AP)||void 0===i||i.call(this,t))}}class S{constructor(t,i,s,e,o){this.type=1,this._$AH=w,this._$AN=void 0,this.element=t,this.name=i,this._$AM=e,this.options=o,s.length>2||\"\"!==s[0]||\"\"!==s[1]?(this._$AH=Array(s.length-1).fill(new String),this.strings=s):this._$AH=w}get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}_$AI(t,i=this,s,e){const o=this.strings;let n=!1;if(void 0===o)t=P(this,t,i,0),n=!r(t)||t!==this._$AH&&t!==b,n&&(this._$AH=t);else{const e=t;let l,h;for(t=o[0],l=0;l<o.length-1;l++)h=P(this,e[s+l],i,l),h===b&&(h=this._$AH[l]),n||(n=!r(h)||h!==this._$AH[l]),h===w?t=w:t!==w&&(t+=(null!=h?h:\"\")+o[l+1]),this._$AH[l]=h}n&&!e&&this.k(t)}k(t){t===w?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,null!=t?t:\"\")}}class M extends S{constructor(){super(...arguments),this.type=3}k(t){this.element[this.name]=t===w?void 0:t}}const k=i?i.emptyScript:\"\";class H extends S{constructor(){super(...arguments),this.type=4}k(t){t&&t!==w?this.element.setAttribute(this.name,k):this.element.removeAttribute(this.name)}}class I extends S{constructor(t,i,s,e,o){super(t,i,s,e,o),this.type=5}_$AI(t,i=this){var s;if((t=null!==(s=P(this,t,i,0))&&void 0!==s?s:w)===b)return;const e=this._$AH,o=t===w&&e!==w||t.capture!==e.capture||t.once!==e.once||t.passive!==e.passive,n=t!==w&&(e===w||o);o&&this.element.removeEventListener(this.name,this,e),n&&this.element.addEventListener(this.name,this,t),this._$AH=t}handleEvent(t){var i,s;\"function\"==typeof this._$AH?this._$AH.call(null!==(s=null===(i=this.options)||void 0===i?void 0:i.host)&&void 0!==s?s:this.element,t):this._$AH.handleEvent(t)}}class L{constructor(t,i,s){this.element=t,this.type=6,this._$AN=void 0,this._$AM=i,this.options=s}get _$AU(){return this._$AM._$AU}_$AI(t){P(this,t)}}const R={P:\"$lit$\",V:e,L:o,I:1,N:C,R:V,D:u,j:P,H:N,O:S,F:H,B:I,W:M,Z:L},z=window.litHtmlPolyfillSupport;null==z||z(E,N),(null!==(t=globalThis.litHtmlVersions)&&void 0!==t?t:globalThis.litHtmlVersions=[]).push(\"2.1.2\");export{R as _$LH,$ as html,b as noChange,w as nothing,x as render,y as svg};\n//# sourceMappingURL=lit-html.js.map\n", "import{ReactiveElement as t}from\"@lit/reactive-element\";export*from\"@lit/reactive-element\";import{render as e,noChange as i}from\"lit-html\";export*from\"lit-html\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */var l,o;const r=t;class s extends t{constructor(){super(...arguments),this.renderOptions={host:this},this._$Dt=void 0}createRenderRoot(){var t,e;const i=super.createRenderRoot();return null!==(t=(e=this.renderOptions).renderBefore)&&void 0!==t||(e.renderBefore=i.firstChild),i}update(t){const i=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(t),this._$Dt=e(i,this.renderRoot,this.renderOptions)}connectedCallback(){var t;super.connectedCallback(),null===(t=this._$Dt)||void 0===t||t.setConnected(!0)}disconnectedCallback(){var t;super.disconnectedCallback(),null===(t=this._$Dt)||void 0===t||t.setConnected(!1)}render(){return i}}s.finalized=!0,s._$litElement$=!0,null===(l=globalThis.litElementHydrateSupport)||void 0===l||l.call(globalThis,{LitElement:s});const n=globalThis.litElementPolyfillSupport;null==n||n({LitElement:s});const h={_$AK:(t,e,i)=>{t._$AK(e,i)},_$AL:t=>t._$AL};(null!==(o=globalThis.litElementVersions)&&void 0!==o?o:globalThis.litElementVersions=[]).push(\"3.1.2\");export{s as LitElement,r as UpdatingElement,h as _$LE};\n//# sourceMappingURL=lit-element.js.map\n", "/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst n=n=>e=>\"function\"==typeof e?((n,e)=>(window.customElements.define(n,e),e))(n,e):((n,e)=>{const{kind:t,elements:i}=e;return{kind:t,elements:i,finisher(e){window.customElements.define(n,e)}}})(n,e);export{n as customElement};\n//# sourceMappingURL=custom-element.js.map\n", "/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst i=(i,e)=>\"method\"===e.kind&&e.descriptor&&!(\"value\"in e.descriptor)?{...e,finisher(n){n.createProperty(e.key,i)}}:{kind:\"field\",key:Symbol(),placement:\"own\",descriptor:{},originalKey:e.key,initializer(){\"function\"==typeof e.initializer&&(this[e.key]=e.initializer.call(this))},finisher(n){n.createProperty(e.key,i)}};function e(e){return(n,t)=>void 0!==t?((i,e,n)=>{e.constructor.createProperty(n,i)})(e,n,t):i(e,n)}export{e as property};\n//# sourceMappingURL=property.js.map\n", "import{property as r}from\"./property.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */function t(t){return r({...t,state:!0})}export{t as state};\n//# sourceMappingURL=state.js.map\n", "/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst e=(e,t,o)=>{Object.defineProperty(t,o,e)},t=(e,t)=>({kind:\"method\",placement:\"prototype\",key:t.key,descriptor:e}),o=({finisher:e,descriptor:t})=>(o,n)=>{var r;if(void 0===n){const n=null!==(r=o.originalKey)&&void 0!==r?r:o.key,i=null!=t?{kind:\"method\",placement:\"prototype\",key:n,descriptor:t(o.key)}:{...o,key:n};return null!=e&&(i.finisher=function(t){e(t,n)}),i}{const r=o.constructor;void 0!==t&&Object.defineProperty(o,n,t(n)),null==e||e(r,n)}};export{o as decorateProperty,e as legacyPrototypeMethod,t as standardPrototypeMethod};\n//# sourceMappingURL=base.js.map\n", "import{decorateProperty as r}from\"./base.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */function e(e){return r({finisher:(r,t)=>{Object.assign(r.prototype[t],e)}})}export{e as eventOptions};\n//# sourceMappingURL=event-options.js.map\n", "import{decorateProperty as o}from\"./base.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */function i(i,n){return o({descriptor:o=>{const t={get(){var o,n;return null!==(n=null===(o=this.renderRoot)||void 0===o?void 0:o.querySelector(i))&&void 0!==n?n:null},enumerable:!0,configurable:!0};if(n){const n=\"symbol\"==typeof o?Symbol():\"__\"+o;t.get=function(){var o,t;return void 0===this[n]&&(this[n]=null!==(t=null===(o=this.renderRoot)||void 0===o?void 0:o.querySelector(i))&&void 0!==t?t:null),this[n]}}return t}})}export{i as query};\n//# sourceMappingURL=query.js.map\n", "import{decorateProperty as r}from\"./base.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */function e(e){return r({descriptor:r=>({get(){var r,o;return null!==(o=null===(r=this.renderRoot)||void 0===r?void 0:r.querySelectorAll(e))&&void 0!==o?o:[]},enumerable:!0,configurable:!0})})}export{e as queryAll};\n//# sourceMappingURL=query-all.js.map\n", "import{decorateProperty as r}from\"./base.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nfunction e(e){return r({descriptor:r=>({async get(){var r;return await this.updateComplete,null===(r=this.renderRoot)||void 0===r?void 0:r.querySelector(e)},enumerable:!0,configurable:!0})})}export{e as queryAsync};\n//# sourceMappingURL=query-async.js.map\n", "import{decorateProperty as o}from\"./base.js\";\n/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */var n;const e=null!=(null===(n=window.HTMLSlotElement)||void 0===n?void 0:n.prototype.assignedElements)?(o,n)=>o.assignedElements(n):(o,n)=>o.assignedNodes(n).filter((o=>o.nodeType===Node.ELEMENT_NODE));function l(n){const{slot:l,selector:t}=null!=n?n:{};return o({descriptor:o=>({get(){var o;const r=\"slot\"+(l?`[name=${l}]`:\":not([name])\"),i=null===(o=this.renderRoot)||void 0===o?void 0:o.querySelector(r),s=null!=i?e(i,n):[];return t?s.filter((o=>o.matches(t))):s},enumerable:!0,configurable:!0})})}export{l as queryAssignedElements};\n//# sourceMappingURL=query-assigned-elements.js.map\n", "import{decorateProperty as e}from\"./base.js\";import{queryAssignedElements as t}from\"./query-assigned-elements.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */function o(o,n,r){let l,s=o;return\"object\"==typeof o?(s=o.slot,l=o):l={flatten:n},r?t({slot:s,flatten:n,selector:r}):e({descriptor:e=>({get(){var e,t;const o=\"slot\"+(s?`[name=${s}]`:\":not([name])\"),n=null===(e=this.renderRoot)||void 0===e?void 0:e.querySelector(o);return null!==(t=null==n?void 0:n.assignedNodes(l))&&void 0!==t?t:[]},enumerable:!0,configurable:!0})})}export{o as queryAssignedNodes};\n//# sourceMappingURL=query-assigned-nodes.js.map\n", "(typeof navigator !== \"undefined\") && (function (global, factory) {\r\n  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\r\n  typeof define === 'function' && define.amd ? define(factory) :\r\n  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.lottie = factory());\r\n})(this, (function () { 'use strict';\r\n\r\n  var svgNS = 'http://www.w3.org/2000/svg';\r\n  var locationHref = '';\r\n  var _useWebWorker = false;\r\n  var initialDefaultFrame = -999999;\r\n\r\n  var setWebWorker = function setWebWorker(flag) {\r\n    _useWebWorker = !!flag;\r\n  };\r\n\r\n  var getWebWorker = function getWebWorker() {\r\n    return _useWebWorker;\r\n  };\r\n\r\n  var setLocationHref = function setLocationHref(value) {\r\n    locationHref = value;\r\n  };\r\n\r\n  var getLocationHref = function getLocationHref() {\r\n    return locationHref;\r\n  };\r\n\r\n  function createTag(type) {\r\n    // return {appendChild:function(){},setAttribute:function(){},style:{}}\r\n    return document.createElement(type);\r\n  }\r\n\r\n  function extendPrototype(sources, destination) {\r\n    var i;\r\n    var len = sources.length;\r\n    var sourcePrototype;\r\n\r\n    for (i = 0; i < len; i += 1) {\r\n      sourcePrototype = sources[i].prototype;\r\n\r\n      for (var attr in sourcePrototype) {\r\n        if (Object.prototype.hasOwnProperty.call(sourcePrototype, attr)) destination.prototype[attr] = sourcePrototype[attr];\r\n      }\r\n    }\r\n  }\r\n\r\n  function getDescriptor(object, prop) {\r\n    return Object.getOwnPropertyDescriptor(object, prop);\r\n  }\r\n\r\n  function createProxyFunction(prototype) {\r\n    function ProxyFunction() {}\r\n\r\n    ProxyFunction.prototype = prototype;\r\n    return ProxyFunction;\r\n  }\r\n\r\n  // import Howl from '../../3rd_party/howler';\r\n  var audioControllerFactory = function () {\r\n    function AudioController(audioFactory) {\r\n      this.audios = [];\r\n      this.audioFactory = audioFactory;\r\n      this._volume = 1;\r\n      this._isMuted = false;\r\n    }\r\n\r\n    AudioController.prototype = {\r\n      addAudio: function addAudio(audio) {\r\n        this.audios.push(audio);\r\n      },\r\n      pause: function pause() {\r\n        var i;\r\n        var len = this.audios.length;\r\n\r\n        for (i = 0; i < len; i += 1) {\r\n          this.audios[i].pause();\r\n        }\r\n      },\r\n      resume: function resume() {\r\n        var i;\r\n        var len = this.audios.length;\r\n\r\n        for (i = 0; i < len; i += 1) {\r\n          this.audios[i].resume();\r\n        }\r\n      },\r\n      setRate: function setRate(rateValue) {\r\n        var i;\r\n        var len = this.audios.length;\r\n\r\n        for (i = 0; i < len; i += 1) {\r\n          this.audios[i].setRate(rateValue);\r\n        }\r\n      },\r\n      createAudio: function createAudio(assetPath) {\r\n        if (this.audioFactory) {\r\n          return this.audioFactory(assetPath);\r\n        }\r\n\r\n        if (window.Howl) {\r\n          return new window.Howl({\r\n            src: [assetPath]\r\n          });\r\n        }\r\n\r\n        return {\r\n          isPlaying: false,\r\n          play: function play() {\r\n            this.isPlaying = true;\r\n          },\r\n          seek: function seek() {\r\n            this.isPlaying = false;\r\n          },\r\n          playing: function playing() {},\r\n          rate: function rate() {},\r\n          setVolume: function setVolume() {}\r\n        };\r\n      },\r\n      setAudioFactory: function setAudioFactory(audioFactory) {\r\n        this.audioFactory = audioFactory;\r\n      },\r\n      setVolume: function setVolume(value) {\r\n        this._volume = value;\r\n\r\n        this._updateVolume();\r\n      },\r\n      mute: function mute() {\r\n        this._isMuted = true;\r\n\r\n        this._updateVolume();\r\n      },\r\n      unmute: function unmute() {\r\n        this._isMuted = false;\r\n\r\n        this._updateVolume();\r\n      },\r\n      getVolume: function getVolume() {\r\n        return this._volume;\r\n      },\r\n      _updateVolume: function _updateVolume() {\r\n        var i;\r\n        var len = this.audios.length;\r\n\r\n        for (i = 0; i < len; i += 1) {\r\n          this.audios[i].volume(this._volume * (this._isMuted ? 0 : 1));\r\n        }\r\n      }\r\n    };\r\n    return function () {\r\n      return new AudioController();\r\n    };\r\n  }();\r\n\r\n  var createTypedArray = function () {\r\n    function createRegularArray(type, len) {\r\n      var i = 0;\r\n      var arr = [];\r\n      var value;\r\n\r\n      switch (type) {\r\n        case 'int16':\r\n        case 'uint8c':\r\n          value = 1;\r\n          break;\r\n\r\n        default:\r\n          value = 1.1;\r\n          break;\r\n      }\r\n\r\n      for (i = 0; i < len; i += 1) {\r\n        arr.push(value);\r\n      }\r\n\r\n      return arr;\r\n    }\r\n\r\n    function createTypedArrayFactory(type, len) {\r\n      if (type === 'float32') {\r\n        return new Float32Array(len);\r\n      }\r\n\r\n      if (type === 'int16') {\r\n        return new Int16Array(len);\r\n      }\r\n\r\n      if (type === 'uint8c') {\r\n        return new Uint8ClampedArray(len);\r\n      }\r\n\r\n      return createRegularArray(type, len);\r\n    }\r\n\r\n    if (typeof Uint8ClampedArray === 'function' && typeof Float32Array === 'function') {\r\n      return createTypedArrayFactory;\r\n    }\r\n\r\n    return createRegularArray;\r\n  }();\r\n\r\n  function createSizedArray(len) {\r\n    return Array.apply(null, {\r\n      length: len\r\n    });\r\n  }\r\n\r\n  function _typeof$6(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$6 = function _typeof(obj) { return typeof obj; }; } else { _typeof$6 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$6(obj); }\r\n  var subframeEnabled = true;\r\n  var expressionsPlugin = null;\r\n  var expressionsInterfaces = null;\r\n  var idPrefix$1 = '';\r\n  var isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\r\n  var _shouldRoundValues = false;\r\n  var bmPow = Math.pow;\r\n  var bmSqrt = Math.sqrt;\r\n  var bmFloor = Math.floor;\r\n  var bmMax = Math.max;\r\n  var bmMin = Math.min;\r\n  var BMMath = {};\r\n\r\n  (function () {\r\n    var propertyNames = ['abs', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atanh', 'atan2', 'ceil', 'cbrt', 'expm1', 'clz32', 'cos', 'cosh', 'exp', 'floor', 'fround', 'hypot', 'imul', 'log', 'log1p', 'log2', 'log10', 'max', 'min', 'pow', 'random', 'round', 'sign', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'trunc', 'E', 'LN10', 'LN2', 'LOG10E', 'LOG2E', 'PI', 'SQRT1_2', 'SQRT2'];\r\n    var i;\r\n    var len = propertyNames.length;\r\n\r\n    for (i = 0; i < len; i += 1) {\r\n      BMMath[propertyNames[i]] = Math[propertyNames[i]];\r\n    }\r\n  })();\r\n\r\n  function ProjectInterface$1() {\r\n    return {};\r\n  }\r\n\r\n  BMMath.random = Math.random;\r\n\r\n  BMMath.abs = function (val) {\r\n    var tOfVal = _typeof$6(val);\r\n\r\n    if (tOfVal === 'object' && val.length) {\r\n      var absArr = createSizedArray(val.length);\r\n      var i;\r\n      var len = val.length;\r\n\r\n      for (i = 0; i < len; i += 1) {\r\n        absArr[i] = Math.abs(val[i]);\r\n      }\r\n\r\n      return absArr;\r\n    }\r\n\r\n    return Math.abs(val);\r\n  };\r\n\r\n  var defaultCurveSegments = 150;\r\n  var degToRads = Math.PI / 180;\r\n  var roundCorner = 0.5519;\r\n\r\n  function roundValues(flag) {\r\n    _shouldRoundValues = !!flag;\r\n  }\r\n\r\n  function bmRnd(value) {\r\n    if (_shouldRoundValues) {\r\n      return Math.round(value);\r\n    }\r\n\r\n    return value;\r\n  }\r\n\r\n  function styleDiv(element) {\r\n    element.style.position = 'absolute';\r\n    element.style.top = 0;\r\n    element.style.left = 0;\r\n    element.style.display = 'block';\r\n    element.style.transformOrigin = '0 0';\r\n    element.style.webkitTransformOrigin = '0 0';\r\n    element.style.backfaceVisibility = 'visible';\r\n    element.style.webkitBackfaceVisibility = 'visible';\r\n    element.style.transformStyle = 'preserve-3d';\r\n    element.style.webkitTransformStyle = 'preserve-3d';\r\n    element.style.mozTransformStyle = 'preserve-3d';\r\n  }\r\n\r\n  function BMEnterFrameEvent(type, currentTime, totalTime, frameMultiplier) {\r\n    this.type = type;\r\n    this.currentTime = currentTime;\r\n    this.totalTime = totalTime;\r\n    this.direction = frameMultiplier < 0 ? -1 : 1;\r\n  }\r\n\r\n  function BMCompleteEvent(type, frameMultiplier) {\r\n    this.type = type;\r\n    this.direction = frameMultiplier < 0 ? -1 : 1;\r\n  }\r\n\r\n  function BMCompleteLoopEvent(type, totalLoops, currentLoop, frameMultiplier) {\r\n    this.type = type;\r\n    this.currentLoop = currentLoop;\r\n    this.totalLoops = totalLoops;\r\n    this.direction = frameMultiplier < 0 ? -1 : 1;\r\n  }\r\n\r\n  function BMSegmentStartEvent(type, firstFrame, totalFrames) {\r\n    this.type = type;\r\n    this.firstFrame = firstFrame;\r\n    this.totalFrames = totalFrames;\r\n  }\r\n\r\n  function BMDestroyEvent(type, target) {\r\n    this.type = type;\r\n    this.target = target;\r\n  }\r\n\r\n  function BMRenderFrameErrorEvent(nativeError, currentTime) {\r\n    this.type = 'renderFrameError';\r\n    this.nativeError = nativeError;\r\n    this.currentTime = currentTime;\r\n  }\r\n\r\n  function BMConfigErrorEvent(nativeError) {\r\n    this.type = 'configError';\r\n    this.nativeError = nativeError;\r\n  }\r\n\r\n  function BMAnimationConfigErrorEvent(type, nativeError) {\r\n    this.type = type;\r\n    this.nativeError = nativeError;\r\n  }\r\n\r\n  var createElementID = function () {\r\n    var _count = 0;\r\n    return function createID() {\r\n      _count += 1;\r\n      return idPrefix$1 + '__lottie_element_' + _count;\r\n    };\r\n  }();\r\n\r\n  function HSVtoRGB(h, s, v) {\r\n    var r;\r\n    var g;\r\n    var b;\r\n    var i;\r\n    var f;\r\n    var p;\r\n    var q;\r\n    var t;\r\n    i = Math.floor(h * 6);\r\n    f = h * 6 - i;\r\n    p = v * (1 - s);\r\n    q = v * (1 - f * s);\r\n    t = v * (1 - (1 - f) * s);\r\n\r\n    switch (i % 6) {\r\n      case 0:\r\n        r = v;\r\n        g = t;\r\n        b = p;\r\n        break;\r\n\r\n      case 1:\r\n        r = q;\r\n        g = v;\r\n        b = p;\r\n        break;\r\n\r\n      case 2:\r\n        r = p;\r\n        g = v;\r\n        b = t;\r\n        break;\r\n\r\n      case 3:\r\n        r = p;\r\n        g = q;\r\n        b = v;\r\n        break;\r\n\r\n      case 4:\r\n        r = t;\r\n        g = p;\r\n        b = v;\r\n        break;\r\n\r\n      case 5:\r\n        r = v;\r\n        g = p;\r\n        b = q;\r\n        break;\r\n\r\n      default:\r\n        break;\r\n    }\r\n\r\n    return [r, g, b];\r\n  }\r\n\r\n  function RGBtoHSV(r, g, b) {\r\n    var max = Math.max(r, g, b);\r\n    var min = Math.min(r, g, b);\r\n    var d = max - min;\r\n    var h;\r\n    var s = max === 0 ? 0 : d / max;\r\n    var v = max / 255;\r\n\r\n    switch (max) {\r\n      case min:\r\n        h = 0;\r\n        break;\r\n\r\n      case r:\r\n        h = g - b + d * (g < b ? 6 : 0);\r\n        h /= 6 * d;\r\n        break;\r\n\r\n      case g:\r\n        h = b - r + d * 2;\r\n        h /= 6 * d;\r\n        break;\r\n\r\n      case b:\r\n        h = r - g + d * 4;\r\n        h /= 6 * d;\r\n        break;\r\n\r\n      default:\r\n        break;\r\n    }\r\n\r\n    return [h, s, v];\r\n  }\r\n\r\n  function addSaturationToRGB(color, offset) {\r\n    var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255);\r\n    hsv[1] += offset;\r\n\r\n    if (hsv[1] > 1) {\r\n      hsv[1] = 1;\r\n    } else if (hsv[1] <= 0) {\r\n      hsv[1] = 0;\r\n    }\r\n\r\n    return HSVtoRGB(hsv[0], hsv[1], hsv[2]);\r\n  }\r\n\r\n  function addBrightnessToRGB(color, offset) {\r\n    var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255);\r\n    hsv[2] += offset;\r\n\r\n    if (hsv[2] > 1) {\r\n      hsv[2] = 1;\r\n    } else if (hsv[2] < 0) {\r\n      hsv[2] = 0;\r\n    }\r\n\r\n    return HSVtoRGB(hsv[0], hsv[1], hsv[2]);\r\n  }\r\n\r\n  function addHueToRGB(color, offset) {\r\n    var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255);\r\n    hsv[0] += offset / 360;\r\n\r\n    if (hsv[0] > 1) {\r\n      hsv[0] -= 1;\r\n    } else if (hsv[0] < 0) {\r\n      hsv[0] += 1;\r\n    }\r\n\r\n    return HSVtoRGB(hsv[0], hsv[1], hsv[2]);\r\n  }\r\n\r\n  var rgbToHex = function () {\r\n    var colorMap = [];\r\n    var i;\r\n    var hex;\r\n\r\n    for (i = 0; i < 256; i += 1) {\r\n      hex = i.toString(16);\r\n      colorMap[i] = hex.length === 1 ? '0' + hex : hex;\r\n    }\r\n\r\n    return function (r, g, b) {\r\n      if (r < 0) {\r\n        r = 0;\r\n      }\r\n\r\n      if (g < 0) {\r\n        g = 0;\r\n      }\r\n\r\n      if (b < 0) {\r\n        b = 0;\r\n      }\r\n\r\n      return '#' + colorMap[r] + colorMap[g] + colorMap[b];\r\n    };\r\n  }();\r\n\r\n  var setSubframeEnabled = function setSubframeEnabled(flag) {\r\n    subframeEnabled = !!flag;\r\n  };\r\n\r\n  var getSubframeEnabled = function getSubframeEnabled() {\r\n    return subframeEnabled;\r\n  };\r\n\r\n  var setExpressionsPlugin = function setExpressionsPlugin(value) {\r\n    expressionsPlugin = value;\r\n  };\r\n\r\n  var getExpressionsPlugin = function getExpressionsPlugin() {\r\n    return expressionsPlugin;\r\n  };\r\n\r\n  var setExpressionInterfaces = function setExpressionInterfaces(value) {\r\n    expressionsInterfaces = value;\r\n  };\r\n\r\n  var getExpressionInterfaces = function getExpressionInterfaces() {\r\n    return expressionsInterfaces;\r\n  };\r\n\r\n  var setDefaultCurveSegments = function setDefaultCurveSegments(value) {\r\n    defaultCurveSegments = value;\r\n  };\r\n\r\n  var getDefaultCurveSegments = function getDefaultCurveSegments() {\r\n    return defaultCurveSegments;\r\n  };\r\n\r\n  var setIdPrefix = function setIdPrefix(value) {\r\n    idPrefix$1 = value;\r\n  };\r\n\r\n  var getIdPrefix = function getIdPrefix() {\r\n    return idPrefix$1;\r\n  };\r\n\r\n  function createNS(type) {\r\n    // return {appendChild:function(){},setAttribute:function(){},style:{}}\r\n    return document.createElementNS(svgNS, type);\r\n  }\r\n\r\n  function _typeof$5(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$5 = function _typeof(obj) { return typeof obj; }; } else { _typeof$5 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$5(obj); }\r\n\r\n  var dataManager = function () {\r\n    var _counterId = 1;\r\n    var processes = [];\r\n    var workerFn;\r\n    var workerInstance;\r\n    var workerProxy = {\r\n      onmessage: function onmessage() {},\r\n      postMessage: function postMessage(path) {\r\n        workerFn({\r\n          data: path\r\n        });\r\n      }\r\n    };\r\n    var _workerSelf = {\r\n      postMessage: function postMessage(data) {\r\n        workerProxy.onmessage({\r\n          data: data\r\n        });\r\n      }\r\n    };\r\n\r\n    function createWorker(fn) {\r\n      if (window.Worker && window.Blob && getWebWorker()) {\r\n        var blob = new Blob(['var _workerSelf = self; self.onmessage = ', fn.toString()], {\r\n          type: 'text/javascript'\r\n        }); // var blob = new Blob(['self.onmessage = ', fn.toString()], { type: 'text/javascript' });\r\n\r\n        var url = URL.createObjectURL(blob);\r\n        return new Worker(url);\r\n      }\r\n\r\n      workerFn = fn;\r\n      return workerProxy;\r\n    }\r\n\r\n    function setupWorker() {\r\n      if (!workerInstance) {\r\n        workerInstance = createWorker(function workerStart(e) {\r\n          function dataFunctionManager() {\r\n            function completeLayers(layers, comps) {\r\n              var layerData;\r\n              var i;\r\n              var len = layers.length;\r\n              var j;\r\n              var jLen;\r\n              var k;\r\n              var kLen;\r\n\r\n              for (i = 0; i < len; i += 1) {\r\n                layerData = layers[i];\r\n\r\n                if ('ks' in layerData && !layerData.completed) {\r\n                  layerData.completed = true;\r\n\r\n                  if (layerData.hasMask) {\r\n                    var maskProps = layerData.masksProperties;\r\n                    jLen = maskProps.length;\r\n\r\n                    for (j = 0; j < jLen; j += 1) {\r\n                      if (maskProps[j].pt.k.i) {\r\n                        convertPathsToAbsoluteValues(maskProps[j].pt.k);\r\n                      } else {\r\n                        kLen = maskProps[j].pt.k.length;\r\n\r\n                        for (k = 0; k < kLen; k += 1) {\r\n                          if (maskProps[j].pt.k[k].s) {\r\n                            convertPathsToAbsoluteValues(maskProps[j].pt.k[k].s[0]);\r\n                          }\r\n\r\n                          if (maskProps[j].pt.k[k].e) {\r\n                            convertPathsToAbsoluteValues(maskProps[j].pt.k[k].e[0]);\r\n                          }\r\n                        }\r\n                      }\r\n                    }\r\n                  }\r\n\r\n                  if (layerData.ty === 0) {\r\n                    layerData.layers = findCompLayers(layerData.refId, comps);\r\n                    completeLayers(layerData.layers, comps);\r\n                  } else if (layerData.ty === 4) {\r\n                    completeShapes(layerData.shapes);\r\n                  } else if (layerData.ty === 5) {\r\n                    completeText(layerData);\r\n                  }\r\n                }\r\n              }\r\n            }\r\n\r\n            function completeChars(chars, assets) {\r\n              if (chars) {\r\n                var i = 0;\r\n                var len = chars.length;\r\n\r\n                for (i = 0; i < len; i += 1) {\r\n                  if (chars[i].t === 1) {\r\n                    // var compData = findComp(chars[i].data.refId, assets);\r\n                    chars[i].data.layers = findCompLayers(chars[i].data.refId, assets); // chars[i].data.ip = 0;\r\n                    // chars[i].data.op = 99999;\r\n                    // chars[i].data.st = 0;\r\n                    // chars[i].data.sr = 1;\r\n                    // chars[i].w = compData.w;\r\n                    // chars[i].data.ks = {\r\n                    //   a: { k: [0, 0, 0], a: 0 },\r\n                    //   p: { k: [0, -compData.h, 0], a: 0 },\r\n                    //   r: { k: 0, a: 0 },\r\n                    //   s: { k: [100, 100], a: 0 },\r\n                    //   o: { k: 100, a: 0 },\r\n                    // };\r\n\r\n                    completeLayers(chars[i].data.layers, assets);\r\n                  }\r\n                }\r\n              }\r\n            }\r\n\r\n            function findComp(id, comps) {\r\n              var i = 0;\r\n              var len = comps.length;\r\n\r\n              while (i < len) {\r\n                if (comps[i].id === id) {\r\n                  return comps[i];\r\n                }\r\n\r\n                i += 1;\r\n              }\r\n\r\n              return null;\r\n            }\r\n\r\n            function findCompLayers(id, comps) {\r\n              var comp = findComp(id, comps);\r\n\r\n              if (comp) {\r\n                if (!comp.layers.__used) {\r\n                  comp.layers.__used = true;\r\n                  return comp.layers;\r\n                }\r\n\r\n                return JSON.parse(JSON.stringify(comp.layers));\r\n              }\r\n\r\n              return null;\r\n            }\r\n\r\n            function completeShapes(arr) {\r\n              var i;\r\n              var len = arr.length;\r\n              var j;\r\n              var jLen;\r\n\r\n              for (i = len - 1; i >= 0; i -= 1) {\r\n                if (arr[i].ty === 'sh') {\r\n                  if (arr[i].ks.k.i) {\r\n                    convertPathsToAbsoluteValues(arr[i].ks.k);\r\n                  } else {\r\n                    jLen = arr[i].ks.k.length;\r\n\r\n                    for (j = 0; j < jLen; j += 1) {\r\n                      if (arr[i].ks.k[j].s) {\r\n                        convertPathsToAbsoluteValues(arr[i].ks.k[j].s[0]);\r\n                      }\r\n\r\n                      if (arr[i].ks.k[j].e) {\r\n                        convertPathsToAbsoluteValues(arr[i].ks.k[j].e[0]);\r\n                      }\r\n                    }\r\n                  }\r\n                } else if (arr[i].ty === 'gr') {\r\n                  completeShapes(arr[i].it);\r\n                }\r\n              }\r\n            }\r\n\r\n            function convertPathsToAbsoluteValues(path) {\r\n              var i;\r\n              var len = path.i.length;\r\n\r\n              for (i = 0; i < len; i += 1) {\r\n                path.i[i][0] += path.v[i][0];\r\n                path.i[i][1] += path.v[i][1];\r\n                path.o[i][0] += path.v[i][0];\r\n                path.o[i][1] += path.v[i][1];\r\n              }\r\n            }\r\n\r\n            function checkVersion(minimum, animVersionString) {\r\n              var animVersion = animVersionString ? animVersionString.split('.') : [100, 100, 100];\r\n\r\n              if (minimum[0] > animVersion[0]) {\r\n                return true;\r\n              }\r\n\r\n              if (animVersion[0] > minimum[0]) {\r\n                return false;\r\n              }\r\n\r\n              if (minimum[1] > animVersion[1]) {\r\n                return true;\r\n              }\r\n\r\n              if (animVersion[1] > minimum[1]) {\r\n                return false;\r\n              }\r\n\r\n              if (minimum[2] > animVersion[2]) {\r\n                return true;\r\n              }\r\n\r\n              if (animVersion[2] > minimum[2]) {\r\n                return false;\r\n              }\r\n\r\n              return null;\r\n            }\r\n\r\n            var checkText = function () {\r\n              var minimumVersion = [4, 4, 14];\r\n\r\n              function updateTextLayer(textLayer) {\r\n                var documentData = textLayer.t.d;\r\n                textLayer.t.d = {\r\n                  k: [{\r\n                    s: documentData,\r\n                    t: 0\r\n                  }]\r\n                };\r\n              }\r\n\r\n              function iterateLayers(layers) {\r\n                var i;\r\n                var len = layers.length;\r\n\r\n                for (i = 0; i < len; i += 1) {\r\n                  if (layers[i].ty === 5) {\r\n                    updateTextLayer(layers[i]);\r\n                  }\r\n                }\r\n              }\r\n\r\n              return function (animationData) {\r\n                if (checkVersion(minimumVersion, animationData.v)) {\r\n                  iterateLayers(animationData.layers);\r\n\r\n                  if (animationData.assets) {\r\n                    var i;\r\n                    var len = animationData.assets.length;\r\n\r\n                    for (i = 0; i < len; i += 1) {\r\n                      if (animationData.assets[i].layers) {\r\n                        iterateLayers(animationData.assets[i].layers);\r\n                      }\r\n                    }\r\n                  }\r\n                }\r\n              };\r\n            }();\r\n\r\n            var checkChars = function () {\r\n              var minimumVersion = [4, 7, 99];\r\n              return function (animationData) {\r\n                if (animationData.chars && !checkVersion(minimumVersion, animationData.v)) {\r\n                  var i;\r\n                  var len = animationData.chars.length;\r\n\r\n                  for (i = 0; i < len; i += 1) {\r\n                    var charData = animationData.chars[i];\r\n\r\n                    if (charData.data && charData.data.shapes) {\r\n                      completeShapes(charData.data.shapes);\r\n                      charData.data.ip = 0;\r\n                      charData.data.op = 99999;\r\n                      charData.data.st = 0;\r\n                      charData.data.sr = 1;\r\n                      charData.data.ks = {\r\n                        p: {\r\n                          k: [0, 0],\r\n                          a: 0\r\n                        },\r\n                        s: {\r\n                          k: [100, 100],\r\n                          a: 0\r\n                        },\r\n                        a: {\r\n                          k: [0, 0],\r\n                          a: 0\r\n                        },\r\n                        r: {\r\n                          k: 0,\r\n                          a: 0\r\n                        },\r\n                        o: {\r\n                          k: 100,\r\n                          a: 0\r\n                        }\r\n                      };\r\n\r\n                      if (!animationData.chars[i].t) {\r\n                        charData.data.shapes.push({\r\n                          ty: 'no'\r\n                        });\r\n                        charData.data.shapes[0].it.push({\r\n                          p: {\r\n                            k: [0, 0],\r\n                            a: 0\r\n                          },\r\n                          s: {\r\n                            k: [100, 100],\r\n                            a: 0\r\n                          },\r\n                          a: {\r\n                            k: [0, 0],\r\n                            a: 0\r\n                          },\r\n                          r: {\r\n                            k: 0,\r\n                            a: 0\r\n                          },\r\n                          o: {\r\n                            k: 100,\r\n                            a: 0\r\n                          },\r\n                          sk: {\r\n                            k: 0,\r\n                            a: 0\r\n                          },\r\n                          sa: {\r\n                            k: 0,\r\n                            a: 0\r\n                          },\r\n                          ty: 'tr'\r\n                        });\r\n                      }\r\n                    }\r\n                  }\r\n                }\r\n              };\r\n            }();\r\n\r\n            var checkPathProperties = function () {\r\n              var minimumVersion = [5, 7, 15];\r\n\r\n              function updateTextLayer(textLayer) {\r\n                var pathData = textLayer.t.p;\r\n\r\n                if (typeof pathData.a === 'number') {\r\n                  pathData.a = {\r\n                    a: 0,\r\n                    k: pathData.a\r\n                  };\r\n                }\r\n\r\n                if (typeof pathData.p === 'number') {\r\n                  pathData.p = {\r\n                    a: 0,\r\n                    k: pathData.p\r\n                  };\r\n                }\r\n\r\n                if (typeof pathData.r === 'number') {\r\n                  pathData.r = {\r\n                    a: 0,\r\n                    k: pathData.r\r\n                  };\r\n                }\r\n              }\r\n\r\n              function iterateLayers(layers) {\r\n                var i;\r\n                var len = layers.length;\r\n\r\n                for (i = 0; i < len; i += 1) {\r\n                  if (layers[i].ty === 5) {\r\n                    updateTextLayer(layers[i]);\r\n                  }\r\n                }\r\n              }\r\n\r\n              return function (animationData) {\r\n                if (checkVersion(minimumVersion, animationData.v)) {\r\n                  iterateLayers(animationData.layers);\r\n\r\n                  if (animationData.assets) {\r\n                    var i;\r\n                    var len = animationData.assets.length;\r\n\r\n                    for (i = 0; i < len; i += 1) {\r\n                      if (animationData.assets[i].layers) {\r\n                        iterateLayers(animationData.assets[i].layers);\r\n                      }\r\n                    }\r\n                  }\r\n                }\r\n              };\r\n            }();\r\n\r\n            var checkColors = function () {\r\n              var minimumVersion = [4, 1, 9];\r\n\r\n              function iterateShapes(shapes) {\r\n                var i;\r\n                var len = shapes.length;\r\n                var j;\r\n                var jLen;\r\n\r\n                for (i = 0; i < len; i += 1) {\r\n                  if (shapes[i].ty === 'gr') {\r\n                    iterateShapes(shapes[i].it);\r\n                  } else if (shapes[i].ty === 'fl' || shapes[i].ty === 'st') {\r\n                    if (shapes[i].c.k && shapes[i].c.k[0].i) {\r\n                      jLen = shapes[i].c.k.length;\r\n\r\n                      for (j = 0; j < jLen; j += 1) {\r\n                        if (shapes[i].c.k[j].s) {\r\n                          shapes[i].c.k[j].s[0] /= 255;\r\n                          shapes[i].c.k[j].s[1] /= 255;\r\n                          shapes[i].c.k[j].s[2] /= 255;\r\n                          shapes[i].c.k[j].s[3] /= 255;\r\n                        }\r\n\r\n                        if (shapes[i].c.k[j].e) {\r\n                          shapes[i].c.k[j].e[0] /= 255;\r\n                          shapes[i].c.k[j].e[1] /= 255;\r\n                          shapes[i].c.k[j].e[2] /= 255;\r\n                          shapes[i].c.k[j].e[3] /= 255;\r\n                        }\r\n                      }\r\n                    } else {\r\n                      shapes[i].c.k[0] /= 255;\r\n                      shapes[i].c.k[1] /= 255;\r\n                      shapes[i].c.k[2] /= 255;\r\n                      shapes[i].c.k[3] /= 255;\r\n                    }\r\n                  }\r\n                }\r\n              }\r\n\r\n              function iterateLayers(layers) {\r\n                var i;\r\n                var len = layers.length;\r\n\r\n                for (i = 0; i < len; i += 1) {\r\n                  if (layers[i].ty === 4) {\r\n                    iterateShapes(layers[i].shapes);\r\n                  }\r\n                }\r\n              }\r\n\r\n              return function (animationData) {\r\n                if (checkVersion(minimumVersion, animationData.v)) {\r\n                  iterateLayers(animationData.layers);\r\n\r\n                  if (animationData.assets) {\r\n                    var i;\r\n                    var len = animationData.assets.length;\r\n\r\n                    for (i = 0; i < len; i += 1) {\r\n                      if (animationData.assets[i].layers) {\r\n                        iterateLayers(animationData.assets[i].layers);\r\n                      }\r\n                    }\r\n                  }\r\n                }\r\n              };\r\n            }();\r\n\r\n            var checkShapes = function () {\r\n              var minimumVersion = [4, 4, 18];\r\n\r\n              function completeClosingShapes(arr) {\r\n                var i;\r\n                var len = arr.length;\r\n                var j;\r\n                var jLen;\r\n\r\n                for (i = len - 1; i >= 0; i -= 1) {\r\n                  if (arr[i].ty === 'sh') {\r\n                    if (arr[i].ks.k.i) {\r\n                      arr[i].ks.k.c = arr[i].closed;\r\n                    } else {\r\n                      jLen = arr[i].ks.k.length;\r\n\r\n                      for (j = 0; j < jLen; j += 1) {\r\n                        if (arr[i].ks.k[j].s) {\r\n                          arr[i].ks.k[j].s[0].c = arr[i].closed;\r\n                        }\r\n\r\n                        if (arr[i].ks.k[j].e) {\r\n                          arr[i].ks.k[j].e[0].c = arr[i].closed;\r\n                        }\r\n                      }\r\n                    }\r\n                  } else if (arr[i].ty === 'gr') {\r\n                    completeClosingShapes(arr[i].it);\r\n                  }\r\n                }\r\n              }\r\n\r\n              function iterateLayers(layers) {\r\n                var layerData;\r\n                var i;\r\n                var len = layers.length;\r\n                var j;\r\n                var jLen;\r\n                var k;\r\n                var kLen;\r\n\r\n                for (i = 0; i < len; i += 1) {\r\n                  layerData = layers[i];\r\n\r\n                  if (layerData.hasMask) {\r\n                    var maskProps = layerData.masksProperties;\r\n                    jLen = maskProps.length;\r\n\r\n                    for (j = 0; j < jLen; j += 1) {\r\n                      if (maskProps[j].pt.k.i) {\r\n                        maskProps[j].pt.k.c = maskProps[j].cl;\r\n                      } else {\r\n                        kLen = maskProps[j].pt.k.length;\r\n\r\n                        for (k = 0; k < kLen; k += 1) {\r\n                          if (maskProps[j].pt.k[k].s) {\r\n                            maskProps[j].pt.k[k].s[0].c = maskProps[j].cl;\r\n                          }\r\n\r\n                          if (maskProps[j].pt.k[k].e) {\r\n                            maskProps[j].pt.k[k].e[0].c = maskProps[j].cl;\r\n                          }\r\n                        }\r\n                      }\r\n                    }\r\n                  }\r\n\r\n                  if (layerData.ty === 4) {\r\n                    completeClosingShapes(layerData.shapes);\r\n                  }\r\n                }\r\n              }\r\n\r\n              return function (animationData) {\r\n                if (checkVersion(minimumVersion, animationData.v)) {\r\n                  iterateLayers(animationData.layers);\r\n\r\n                  if (animationData.assets) {\r\n                    var i;\r\n                    var len = animationData.assets.length;\r\n\r\n                    for (i = 0; i < len; i += 1) {\r\n                      if (animationData.assets[i].layers) {\r\n                        iterateLayers(animationData.assets[i].layers);\r\n                      }\r\n                    }\r\n                  }\r\n                }\r\n              };\r\n            }();\r\n\r\n            function completeData(animationData) {\r\n              if (animationData.__complete) {\r\n                return;\r\n              }\r\n\r\n              checkColors(animationData);\r\n              checkText(animationData);\r\n              checkChars(animationData);\r\n              checkPathProperties(animationData);\r\n              checkShapes(animationData);\r\n              completeLayers(animationData.layers, animationData.assets);\r\n              completeChars(animationData.chars, animationData.assets);\r\n              animationData.__complete = true;\r\n            }\r\n\r\n            function completeText(data) {\r\n              if (data.t.a.length === 0 && !('m' in data.t.p)) {// data.singleShape = true;\r\n              }\r\n            }\r\n\r\n            var moduleOb = {};\r\n            moduleOb.completeData = completeData;\r\n            moduleOb.checkColors = checkColors;\r\n            moduleOb.checkChars = checkChars;\r\n            moduleOb.checkPathProperties = checkPathProperties;\r\n            moduleOb.checkShapes = checkShapes;\r\n            moduleOb.completeLayers = completeLayers;\r\n            return moduleOb;\r\n          }\r\n\r\n          if (!_workerSelf.dataManager) {\r\n            _workerSelf.dataManager = dataFunctionManager();\r\n          }\r\n\r\n          if (!_workerSelf.assetLoader) {\r\n            _workerSelf.assetLoader = function () {\r\n              function formatResponse(xhr) {\r\n                // using typeof doubles the time of execution of this method,\r\n                // so if available, it's better to use the header to validate the type\r\n                var contentTypeHeader = xhr.getResponseHeader('content-type');\r\n\r\n                if (contentTypeHeader && xhr.responseType === 'json' && contentTypeHeader.indexOf('json') !== -1) {\r\n                  return xhr.response;\r\n                }\r\n\r\n                if (xhr.response && _typeof$5(xhr.response) === 'object') {\r\n                  return xhr.response;\r\n                }\r\n\r\n                if (xhr.response && typeof xhr.response === 'string') {\r\n                  return JSON.parse(xhr.response);\r\n                }\r\n\r\n                if (xhr.responseText) {\r\n                  return JSON.parse(xhr.responseText);\r\n                }\r\n\r\n                return null;\r\n              }\r\n\r\n              function loadAsset(path, fullPath, callback, errorCallback) {\r\n                var response;\r\n                var xhr = new XMLHttpRequest(); // set responseType after calling open or IE will break.\r\n\r\n                try {\r\n                  // This crashes on Android WebView prior to KitKat\r\n                  xhr.responseType = 'json';\r\n                } catch (err) {} // eslint-disable-line no-empty\r\n\r\n\r\n                xhr.onreadystatechange = function () {\r\n                  if (xhr.readyState === 4) {\r\n                    if (xhr.status === 200) {\r\n                      response = formatResponse(xhr);\r\n                      callback(response);\r\n                    } else {\r\n                      try {\r\n                        response = formatResponse(xhr);\r\n                        callback(response);\r\n                      } catch (err) {\r\n                        if (errorCallback) {\r\n                          errorCallback(err);\r\n                        }\r\n                      }\r\n                    }\r\n                  }\r\n                };\r\n\r\n                try {\r\n                  // Hack to workaround banner validation\r\n                  xhr.open(['G', 'E', 'T'].join(''), path, true);\r\n                } catch (error) {\r\n                  // Hack to workaround banner validation\r\n                  xhr.open(['G', 'E', 'T'].join(''), fullPath + '/' + path, true);\r\n                }\r\n\r\n                xhr.send();\r\n              }\r\n\r\n              return {\r\n                load: loadAsset\r\n              };\r\n            }();\r\n          }\r\n\r\n          if (e.data.type === 'loadAnimation') {\r\n            _workerSelf.assetLoader.load(e.data.path, e.data.fullPath, function (data) {\r\n              _workerSelf.dataManager.completeData(data);\r\n\r\n              _workerSelf.postMessage({\r\n                id: e.data.id,\r\n                payload: data,\r\n                status: 'success'\r\n              });\r\n            }, function () {\r\n              _workerSelf.postMessage({\r\n                id: e.data.id,\r\n                status: 'error'\r\n              });\r\n            });\r\n          } else if (e.data.type === 'complete') {\r\n            var animation = e.data.animation;\r\n\r\n            _workerSelf.dataManager.completeData(animation);\r\n\r\n            _workerSelf.postMessage({\r\n              id: e.data.id,\r\n              payload: animation,\r\n              status: 'success'\r\n            });\r\n          } else if (e.data.type === 'loadData') {\r\n            _workerSelf.assetLoader.load(e.data.path, e.data.fullPath, function (data) {\r\n              _workerSelf.postMessage({\r\n                id: e.data.id,\r\n                payload: data,\r\n                status: 'success'\r\n              });\r\n            }, function () {\r\n              _workerSelf.postMessage({\r\n                id: e.data.id,\r\n                status: 'error'\r\n              });\r\n            });\r\n          }\r\n        });\r\n\r\n        workerInstance.onmessage = function (event) {\r\n          var data = event.data;\r\n          var id = data.id;\r\n          var process = processes[id];\r\n          processes[id] = null;\r\n\r\n          if (data.status === 'success') {\r\n            process.onComplete(data.payload);\r\n          } else if (process.onError) {\r\n            process.onError();\r\n          }\r\n        };\r\n      }\r\n    }\r\n\r\n    function createProcess(onComplete, onError) {\r\n      _counterId += 1;\r\n      var id = 'processId_' + _counterId;\r\n      processes[id] = {\r\n        onComplete: onComplete,\r\n        onError: onError\r\n      };\r\n      return id;\r\n    }\r\n\r\n    function loadAnimation(path, onComplete, onError) {\r\n      setupWorker();\r\n      var processId = createProcess(onComplete, onError);\r\n      workerInstance.postMessage({\r\n        type: 'loadAnimation',\r\n        path: path,\r\n        fullPath: window.location.origin + window.location.pathname,\r\n        id: processId\r\n      });\r\n    }\r\n\r\n    function loadData(path, onComplete, onError) {\r\n      setupWorker();\r\n      var processId = createProcess(onComplete, onError);\r\n      workerInstance.postMessage({\r\n        type: 'loadData',\r\n        path: path,\r\n        fullPath: window.location.origin + window.location.pathname,\r\n        id: processId\r\n      });\r\n    }\r\n\r\n    function completeAnimation(anim, onComplete, onError) {\r\n      setupWorker();\r\n      var processId = createProcess(onComplete, onError);\r\n      workerInstance.postMessage({\r\n        type: 'complete',\r\n        animation: anim,\r\n        id: processId\r\n      });\r\n    }\r\n\r\n    return {\r\n      loadAnimation: loadAnimation,\r\n      loadData: loadData,\r\n      completeAnimation: completeAnimation\r\n    };\r\n  }();\r\n\r\n  var ImagePreloader = function () {\r\n    var proxyImage = function () {\r\n      var canvas = createTag('canvas');\r\n      canvas.width = 1;\r\n      canvas.height = 1;\r\n      var ctx = canvas.getContext('2d');\r\n      ctx.fillStyle = 'rgba(0,0,0,0)';\r\n      ctx.fillRect(0, 0, 1, 1);\r\n      return canvas;\r\n    }();\r\n\r\n    function imageLoaded() {\r\n      this.loadedAssets += 1;\r\n\r\n      if (this.loadedAssets === this.totalImages && this.loadedFootagesCount === this.totalFootages) {\r\n        if (this.imagesLoadedCb) {\r\n          this.imagesLoadedCb(null);\r\n        }\r\n      }\r\n    }\r\n\r\n    function footageLoaded() {\r\n      this.loadedFootagesCount += 1;\r\n\r\n      if (this.loadedAssets === this.totalImages && this.loadedFootagesCount === this.totalFootages) {\r\n        if (this.imagesLoadedCb) {\r\n          this.imagesLoadedCb(null);\r\n        }\r\n      }\r\n    }\r\n\r\n    function getAssetsPath(assetData, assetsPath, originalPath) {\r\n      var path = '';\r\n\r\n      if (assetData.e) {\r\n        path = assetData.p;\r\n      } else if (assetsPath) {\r\n        var imagePath = assetData.p;\r\n\r\n        if (imagePath.indexOf('images/') !== -1) {\r\n          imagePath = imagePath.split('/')[1];\r\n        }\r\n\r\n        path = assetsPath + imagePath;\r\n      } else {\r\n        path = originalPath;\r\n        path += assetData.u ? assetData.u : '';\r\n        path += assetData.p;\r\n      }\r\n\r\n      return path;\r\n    }\r\n\r\n    function testImageLoaded(img) {\r\n      var _count = 0;\r\n      var intervalId = setInterval(function () {\r\n        var box = img.getBBox();\r\n\r\n        if (box.width || _count > 500) {\r\n          this._imageLoaded();\r\n\r\n          clearInterval(intervalId);\r\n        }\r\n\r\n        _count += 1;\r\n      }.bind(this), 50);\r\n    }\r\n\r\n    function createImageData(assetData) {\r\n      var path = getAssetsPath(assetData, this.assetsPath, this.path);\r\n      var img = createNS('image');\r\n\r\n      if (isSafari) {\r\n        this.testImageLoaded(img);\r\n      } else {\r\n        img.addEventListener('load', this._imageLoaded, false);\r\n      }\r\n\r\n      img.addEventListener('error', function () {\r\n        ob.img = proxyImage;\r\n\r\n        this._imageLoaded();\r\n      }.bind(this), false);\r\n      img.setAttributeNS('http://www.w3.org/1999/xlink', 'href', path);\r\n\r\n      if (this._elementHelper.append) {\r\n        this._elementHelper.append(img);\r\n      } else {\r\n        this._elementHelper.appendChild(img);\r\n      }\r\n\r\n      var ob = {\r\n        img: img,\r\n        assetData: assetData\r\n      };\r\n      return ob;\r\n    }\r\n\r\n    function createImgData(assetData) {\r\n      var path = getAssetsPath(assetData, this.assetsPath, this.path);\r\n      var img = createTag('img');\r\n      img.crossOrigin = 'anonymous';\r\n      img.addEventListener('load', this._imageLoaded, false);\r\n      img.addEventListener('error', function () {\r\n        ob.img = proxyImage;\r\n\r\n        this._imageLoaded();\r\n      }.bind(this), false);\r\n      img.src = path;\r\n      var ob = {\r\n        img: img,\r\n        assetData: assetData\r\n      };\r\n      return ob;\r\n    }\r\n\r\n    function createFootageData(data) {\r\n      var ob = {\r\n        assetData: data\r\n      };\r\n      var path = getAssetsPath(data, this.assetsPath, this.path);\r\n      dataManager.loadData(path, function (footageData) {\r\n        ob.img = footageData;\r\n\r\n        this._footageLoaded();\r\n      }.bind(this), function () {\r\n        ob.img = {};\r\n\r\n        this._footageLoaded();\r\n      }.bind(this));\r\n      return ob;\r\n    }\r\n\r\n    function loadAssets(assets, cb) {\r\n      this.imagesLoadedCb = cb;\r\n      var i;\r\n      var len = assets.length;\r\n\r\n      for (i = 0; i < len; i += 1) {\r\n        if (!assets[i].layers) {\r\n          if (!assets[i].t || assets[i].t === 'seq') {\r\n            this.totalImages += 1;\r\n            this.images.push(this._createImageData(assets[i]));\r\n          } else if (assets[i].t === 3) {\r\n            this.totalFootages += 1;\r\n            this.images.push(this.createFootageData(assets[i]));\r\n          }\r\n        }\r\n      }\r\n    }\r\n\r\n    function setPath(path) {\r\n      this.path = path || '';\r\n    }\r\n\r\n    function setAssetsPath(path) {\r\n      this.assetsPath = path || '';\r\n    }\r\n\r\n    function getAsset(assetData) {\r\n      var i = 0;\r\n      var len = this.images.length;\r\n\r\n      while (i < len) {\r\n        if (this.images[i].assetData === assetData) {\r\n          return this.images[i].img;\r\n        }\r\n\r\n        i += 1;\r\n      }\r\n\r\n      return null;\r\n    }\r\n\r\n    function destroy() {\r\n      this.imagesLoadedCb = null;\r\n      this.images.length = 0;\r\n    }\r\n\r\n    function loadedImages() {\r\n      return this.totalImages === this.loadedAssets;\r\n    }\r\n\r\n    function loadedFootages() {\r\n      return this.totalFootages === this.loadedFootagesCount;\r\n    }\r\n\r\n    function setCacheType(type, elementHelper) {\r\n      if (type === 'svg') {\r\n        this._elementHelper = elementHelper;\r\n        this._createImageData = this.createImageData.bind(this);\r\n      } else {\r\n        this._createImageData = this.createImgData.bind(this);\r\n      }\r\n    }\r\n\r\n    function ImagePreloaderFactory() {\r\n      this._imageLoaded = imageLoaded.bind(this);\r\n      this._footageLoaded = footageLoaded.bind(this);\r\n      this.testImageLoaded = testImageLoaded.bind(this);\r\n      this.createFootageData = createFootageData.bind(this);\r\n      this.assetsPath = '';\r\n      this.path = '';\r\n      this.totalImages = 0;\r\n      this.totalFootages = 0;\r\n      this.loadedAssets = 0;\r\n      this.loadedFootagesCount = 0;\r\n      this.imagesLoadedCb = null;\r\n      this.images = [];\r\n    }\r\n\r\n    ImagePreloaderFactory.prototype = {\r\n      loadAssets: loadAssets,\r\n      setAssetsPath: setAssetsPath,\r\n      setPath: setPath,\r\n      loadedImages: loadedImages,\r\n      loadedFootages: loadedFootages,\r\n      destroy: destroy,\r\n      getAsset: getAsset,\r\n      createImgData: createImgData,\r\n      createImageData: createImageData,\r\n      imageLoaded: imageLoaded,\r\n      footageLoaded: footageLoaded,\r\n      setCacheType: setCacheType\r\n    };\r\n    return ImagePreloaderFactory;\r\n  }();\r\n\r\n  function BaseEvent() {}\r\n\r\n  BaseEvent.prototype = {\r\n    triggerEvent: function triggerEvent(eventName, args) {\r\n      if (this._cbs[eventName]) {\r\n        var callbacks = this._cbs[eventName];\r\n\r\n        for (var i = 0; i < callbacks.length; i += 1) {\r\n          callbacks[i](args);\r\n        }\r\n      }\r\n    },\r\n    addEventListener: function addEventListener(eventName, callback) {\r\n      if (!this._cbs[eventName]) {\r\n        this._cbs[eventName] = [];\r\n      }\r\n\r\n      this._cbs[eventName].push(callback);\r\n\r\n      return function () {\r\n        this.removeEventListener(eventName, callback);\r\n      }.bind(this);\r\n    },\r\n    removeEventListener: function removeEventListener(eventName, callback) {\r\n      if (!callback) {\r\n        this._cbs[eventName] = null;\r\n      } else if (this._cbs[eventName]) {\r\n        var i = 0;\r\n        var len = this._cbs[eventName].length;\r\n\r\n        while (i < len) {\r\n          if (this._cbs[eventName][i] === callback) {\r\n            this._cbs[eventName].splice(i, 1);\r\n\r\n            i -= 1;\r\n            len -= 1;\r\n          }\r\n\r\n          i += 1;\r\n        }\r\n\r\n        if (!this._cbs[eventName].length) {\r\n          this._cbs[eventName] = null;\r\n        }\r\n      }\r\n    }\r\n  };\r\n\r\n  var markerParser = function () {\r\n    function parsePayloadLines(payload) {\r\n      var lines = payload.split('\\r\\n');\r\n      var keys = {};\r\n      var line;\r\n      var keysCount = 0;\r\n\r\n      for (var i = 0; i < lines.length; i += 1) {\r\n        line = lines[i].split(':');\r\n\r\n        if (line.length === 2) {\r\n          keys[line[0]] = line[1].trim();\r\n          keysCount += 1;\r\n        }\r\n      }\r\n\r\n      if (keysCount === 0) {\r\n        throw new Error();\r\n      }\r\n\r\n      return keys;\r\n    }\r\n\r\n    return function (_markers) {\r\n      var markers = [];\r\n\r\n      for (var i = 0; i < _markers.length; i += 1) {\r\n        var _marker = _markers[i];\r\n        var markerData = {\r\n          time: _marker.tm,\r\n          duration: _marker.dr\r\n        };\r\n\r\n        try {\r\n          markerData.payload = JSON.parse(_markers[i].cm);\r\n        } catch (_) {\r\n          try {\r\n            markerData.payload = parsePayloadLines(_markers[i].cm);\r\n          } catch (__) {\r\n            markerData.payload = {\r\n              name: _markers[i].cm\r\n            };\r\n          }\r\n        }\r\n\r\n        markers.push(markerData);\r\n      }\r\n\r\n      return markers;\r\n    };\r\n  }();\r\n\r\n  var ProjectInterface = function () {\r\n    function registerComposition(comp) {\r\n      this.compositions.push(comp);\r\n    }\r\n\r\n    return function () {\r\n      function _thisProjectFunction(name) {\r\n        var i = 0;\r\n        var len = this.compositions.length;\r\n\r\n        while (i < len) {\r\n          if (this.compositions[i].data && this.compositions[i].data.nm === name) {\r\n            if (this.compositions[i].prepareFrame && this.compositions[i].data.xt) {\r\n              this.compositions[i].prepareFrame(this.currentFrame);\r\n            }\r\n\r\n            return this.compositions[i].compInterface;\r\n          }\r\n\r\n          i += 1;\r\n        }\r\n\r\n        return null;\r\n      }\r\n\r\n      _thisProjectFunction.compositions = [];\r\n      _thisProjectFunction.currentFrame = 0;\r\n      _thisProjectFunction.registerComposition = registerComposition;\r\n      return _thisProjectFunction;\r\n    };\r\n  }();\r\n\r\n  var renderers = {};\r\n\r\n  var registerRenderer = function registerRenderer(key, value) {\r\n    renderers[key] = value;\r\n  };\r\n\r\n  function getRenderer(key) {\r\n    return renderers[key];\r\n  }\r\n\r\n  function _typeof$4(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$4 = function _typeof(obj) { return typeof obj; }; } else { _typeof$4 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$4(obj); }\r\n\r\n  var AnimationItem = function AnimationItem() {\r\n    this._cbs = [];\r\n    this.name = '';\r\n    this.path = '';\r\n    this.isLoaded = false;\r\n    this.currentFrame = 0;\r\n    this.currentRawFrame = 0;\r\n    this.firstFrame = 0;\r\n    this.totalFrames = 0;\r\n    this.frameRate = 0;\r\n    this.frameMult = 0;\r\n    this.playSpeed = 1;\r\n    this.playDirection = 1;\r\n    this.playCount = 0;\r\n    this.animationData = {};\r\n    this.assets = [];\r\n    this.isPaused = true;\r\n    this.autoplay = false;\r\n    this.loop = true;\r\n    this.renderer = null;\r\n    this.animationID = createElementID();\r\n    this.assetsPath = '';\r\n    this.timeCompleted = 0;\r\n    this.segmentPos = 0;\r\n    this.isSubframeEnabled = getSubframeEnabled();\r\n    this.segments = [];\r\n    this._idle = true;\r\n    this._completedLoop = false;\r\n    this.projectInterface = ProjectInterface();\r\n    this.imagePreloader = new ImagePreloader();\r\n    this.audioController = audioControllerFactory();\r\n    this.markers = [];\r\n    this.configAnimation = this.configAnimation.bind(this);\r\n    this.onSetupError = this.onSetupError.bind(this);\r\n    this.onSegmentComplete = this.onSegmentComplete.bind(this);\r\n    this.drawnFrameEvent = new BMEnterFrameEvent('drawnFrame', 0, 0, 0);\r\n  };\r\n\r\n  extendPrototype([BaseEvent], AnimationItem);\r\n\r\n  AnimationItem.prototype.setParams = function (params) {\r\n    if (params.wrapper || params.container) {\r\n      this.wrapper = params.wrapper || params.container;\r\n    }\r\n\r\n    var animType = 'svg';\r\n\r\n    if (params.animType) {\r\n      animType = params.animType;\r\n    } else if (params.renderer) {\r\n      animType = params.renderer;\r\n    }\r\n\r\n    var RendererClass = getRenderer(animType);\r\n    this.renderer = new RendererClass(this, params.rendererSettings);\r\n    this.imagePreloader.setCacheType(animType, this.renderer.globalData.defs);\r\n    this.renderer.setProjectInterface(this.projectInterface);\r\n    this.animType = animType;\r\n\r\n    if (params.loop === '' || params.loop === null || params.loop === undefined || params.loop === true) {\r\n      this.loop = true;\r\n    } else if (params.loop === false) {\r\n      this.loop = false;\r\n    } else {\r\n      this.loop = parseInt(params.loop, 10);\r\n    }\r\n\r\n    this.autoplay = 'autoplay' in params ? params.autoplay : true;\r\n    this.name = params.name ? params.name : '';\r\n    this.autoloadSegments = Object.prototype.hasOwnProperty.call(params, 'autoloadSegments') ? params.autoloadSegments : true;\r\n    this.assetsPath = params.assetsPath;\r\n    this.initialSegment = params.initialSegment;\r\n\r\n    if (params.audioFactory) {\r\n      this.audioController.setAudioFactory(params.audioFactory);\r\n    }\r\n\r\n    if (params.animationData) {\r\n      this.setupAnimation(params.animationData);\r\n    } else if (params.path) {\r\n      if (params.path.lastIndexOf('\\\\') !== -1) {\r\n        this.path = params.path.substr(0, params.path.lastIndexOf('\\\\') + 1);\r\n      } else {\r\n        this.path = params.path.substr(0, params.path.lastIndexOf('/') + 1);\r\n      }\r\n\r\n      this.fileName = params.path.substr(params.path.lastIndexOf('/') + 1);\r\n      this.fileName = this.fileName.substr(0, this.fileName.lastIndexOf('.json'));\r\n      dataManager.loadAnimation(params.path, this.configAnimation, this.onSetupError);\r\n    }\r\n  };\r\n\r\n  AnimationItem.prototype.onSetupError = function () {\r\n    this.trigger('data_failed');\r\n  };\r\n\r\n  AnimationItem.prototype.setupAnimation = function (data) {\r\n    dataManager.completeAnimation(data, this.configAnimation);\r\n  };\r\n\r\n  AnimationItem.prototype.setData = function (wrapper, animationData) {\r\n    if (animationData) {\r\n      if (_typeof$4(animationData) !== 'object') {\r\n        animationData = JSON.parse(animationData);\r\n      }\r\n    }\r\n\r\n    var params = {\r\n      wrapper: wrapper,\r\n      animationData: animationData\r\n    };\r\n    var wrapperAttributes = wrapper.attributes;\r\n    params.path = wrapperAttributes.getNamedItem('data-animation-path') // eslint-disable-line no-nested-ternary\r\n    ? wrapperAttributes.getNamedItem('data-animation-path').value : wrapperAttributes.getNamedItem('data-bm-path') // eslint-disable-line no-nested-ternary\r\n    ? wrapperAttributes.getNamedItem('data-bm-path').value : wrapperAttributes.getNamedItem('bm-path') ? wrapperAttributes.getNamedItem('bm-path').value : '';\r\n    params.animType = wrapperAttributes.getNamedItem('data-anim-type') // eslint-disable-line no-nested-ternary\r\n    ? wrapperAttributes.getNamedItem('data-anim-type').value : wrapperAttributes.getNamedItem('data-bm-type') // eslint-disable-line no-nested-ternary\r\n    ? wrapperAttributes.getNamedItem('data-bm-type').value : wrapperAttributes.getNamedItem('bm-type') // eslint-disable-line no-nested-ternary\r\n    ? wrapperAttributes.getNamedItem('bm-type').value : wrapperAttributes.getNamedItem('data-bm-renderer') // eslint-disable-line no-nested-ternary\r\n    ? wrapperAttributes.getNamedItem('data-bm-renderer').value : wrapperAttributes.getNamedItem('bm-renderer') ? wrapperAttributes.getNamedItem('bm-renderer').value : 'canvas';\r\n    var loop = wrapperAttributes.getNamedItem('data-anim-loop') // eslint-disable-line no-nested-ternary\r\n    ? wrapperAttributes.getNamedItem('data-anim-loop').value : wrapperAttributes.getNamedItem('data-bm-loop') // eslint-disable-line no-nested-ternary\r\n    ? wrapperAttributes.getNamedItem('data-bm-loop').value : wrapperAttributes.getNamedItem('bm-loop') ? wrapperAttributes.getNamedItem('bm-loop').value : '';\r\n\r\n    if (loop === 'false') {\r\n      params.loop = false;\r\n    } else if (loop === 'true') {\r\n      params.loop = true;\r\n    } else if (loop !== '') {\r\n      params.loop = parseInt(loop, 10);\r\n    }\r\n\r\n    var autoplay = wrapperAttributes.getNamedItem('data-anim-autoplay') // eslint-disable-line no-nested-ternary\r\n    ? wrapperAttributes.getNamedItem('data-anim-autoplay').value : wrapperAttributes.getNamedItem('data-bm-autoplay') // eslint-disable-line no-nested-ternary\r\n    ? wrapperAttributes.getNamedItem('data-bm-autoplay').value : wrapperAttributes.getNamedItem('bm-autoplay') ? wrapperAttributes.getNamedItem('bm-autoplay').value : true;\r\n    params.autoplay = autoplay !== 'false';\r\n    params.name = wrapperAttributes.getNamedItem('data-name') // eslint-disable-line no-nested-ternary\r\n    ? wrapperAttributes.getNamedItem('data-name').value : wrapperAttributes.getNamedItem('data-bm-name') // eslint-disable-line no-nested-ternary\r\n    ? wrapperAttributes.getNamedItem('data-bm-name').value : wrapperAttributes.getNamedItem('bm-name') ? wrapperAttributes.getNamedItem('bm-name').value : '';\r\n    var prerender = wrapperAttributes.getNamedItem('data-anim-prerender') // eslint-disable-line no-nested-ternary\r\n    ? wrapperAttributes.getNamedItem('data-anim-prerender').value : wrapperAttributes.getNamedItem('data-bm-prerender') // eslint-disable-line no-nested-ternary\r\n    ? wrapperAttributes.getNamedItem('data-bm-prerender').value : wrapperAttributes.getNamedItem('bm-prerender') ? wrapperAttributes.getNamedItem('bm-prerender').value : '';\r\n\r\n    if (prerender === 'false') {\r\n      params.prerender = false;\r\n    }\r\n\r\n    this.setParams(params);\r\n  };\r\n\r\n  AnimationItem.prototype.includeLayers = function (data) {\r\n    if (data.op > this.animationData.op) {\r\n      this.animationData.op = data.op;\r\n      this.totalFrames = Math.floor(data.op - this.animationData.ip);\r\n    }\r\n\r\n    var layers = this.animationData.layers;\r\n    var i;\r\n    var len = layers.length;\r\n    var newLayers = data.layers;\r\n    var j;\r\n    var jLen = newLayers.length;\r\n\r\n    for (j = 0; j < jLen; j += 1) {\r\n      i = 0;\r\n\r\n      while (i < len) {\r\n        if (layers[i].id === newLayers[j].id) {\r\n          layers[i] = newLayers[j];\r\n          break;\r\n        }\r\n\r\n        i += 1;\r\n      }\r\n    }\r\n\r\n    if (data.chars || data.fonts) {\r\n      this.renderer.globalData.fontManager.addChars(data.chars);\r\n      this.renderer.globalData.fontManager.addFonts(data.fonts, this.renderer.globalData.defs);\r\n    }\r\n\r\n    if (data.assets) {\r\n      len = data.assets.length;\r\n\r\n      for (i = 0; i < len; i += 1) {\r\n        this.animationData.assets.push(data.assets[i]);\r\n      }\r\n    }\r\n\r\n    this.animationData.__complete = false;\r\n    dataManager.completeAnimation(this.animationData, this.onSegmentComplete);\r\n  };\r\n\r\n  AnimationItem.prototype.onSegmentComplete = function (data) {\r\n    this.animationData = data;\r\n    var expressionsPlugin = getExpressionsPlugin();\r\n\r\n    if (expressionsPlugin) {\r\n      expressionsPlugin.initExpressions(this);\r\n    }\r\n\r\n    this.loadNextSegment();\r\n  };\r\n\r\n  AnimationItem.prototype.loadNextSegment = function () {\r\n    var segments = this.animationData.segments;\r\n\r\n    if (!segments || segments.length === 0 || !this.autoloadSegments) {\r\n      this.trigger('data_ready');\r\n      this.timeCompleted = this.totalFrames;\r\n      return;\r\n    }\r\n\r\n    var segment = segments.shift();\r\n    this.timeCompleted = segment.time * this.frameRate;\r\n    var segmentPath = this.path + this.fileName + '_' + this.segmentPos + '.json';\r\n    this.segmentPos += 1;\r\n    dataManager.loadData(segmentPath, this.includeLayers.bind(this), function () {\r\n      this.trigger('data_failed');\r\n    }.bind(this));\r\n  };\r\n\r\n  AnimationItem.prototype.loadSegments = function () {\r\n    var segments = this.animationData.segments;\r\n\r\n    if (!segments) {\r\n      this.timeCompleted = this.totalFrames;\r\n    }\r\n\r\n    this.loadNextSegment();\r\n  };\r\n\r\n  AnimationItem.prototype.imagesLoaded = function () {\r\n    this.trigger('loaded_images');\r\n    this.checkLoaded();\r\n  };\r\n\r\n  AnimationItem.prototype.preloadImages = function () {\r\n    this.imagePreloader.setAssetsPath(this.assetsPath);\r\n    this.imagePreloader.setPath(this.path);\r\n    this.imagePreloader.loadAssets(this.animationData.assets, this.imagesLoaded.bind(this));\r\n  };\r\n\r\n  AnimationItem.prototype.configAnimation = function (animData) {\r\n    if (!this.renderer) {\r\n      return;\r\n    }\r\n\r\n    try {\r\n      this.animationData = animData;\r\n\r\n      if (this.initialSegment) {\r\n        this.totalFrames = Math.floor(this.initialSegment[1] - this.initialSegment[0]);\r\n        this.firstFrame = Math.round(this.initialSegment[0]);\r\n      } else {\r\n        this.totalFrames = Math.floor(this.animationData.op - this.animationData.ip);\r\n        this.firstFrame = Math.round(this.animationData.ip);\r\n      }\r\n\r\n      this.renderer.configAnimation(animData);\r\n\r\n      if (!animData.assets) {\r\n        animData.assets = [];\r\n      }\r\n\r\n      this.assets = this.animationData.assets;\r\n      this.frameRate = this.animationData.fr;\r\n      this.frameMult = this.animationData.fr / 1000;\r\n      this.renderer.searchExtraCompositions(animData.assets);\r\n      this.markers = markerParser(animData.markers || []);\r\n      this.trigger('config_ready');\r\n      this.preloadImages();\r\n      this.loadSegments();\r\n      this.updaFrameModifier();\r\n      this.waitForFontsLoaded();\r\n\r\n      if (this.isPaused) {\r\n        this.audioController.pause();\r\n      }\r\n    } catch (error) {\r\n      this.triggerConfigError(error);\r\n    }\r\n  };\r\n\r\n  AnimationItem.prototype.waitForFontsLoaded = function () {\r\n    if (!this.renderer) {\r\n      return;\r\n    }\r\n\r\n    if (this.renderer.globalData.fontManager.isLoaded) {\r\n      this.checkLoaded();\r\n    } else {\r\n      setTimeout(this.waitForFontsLoaded.bind(this), 20);\r\n    }\r\n  };\r\n\r\n  AnimationItem.prototype.checkLoaded = function () {\r\n    if (!this.isLoaded && this.renderer.globalData.fontManager.isLoaded && (this.imagePreloader.loadedImages() || this.renderer.rendererType !== 'canvas') && this.imagePreloader.loadedFootages()) {\r\n      this.isLoaded = true;\r\n      var expressionsPlugin = getExpressionsPlugin();\r\n\r\n      if (expressionsPlugin) {\r\n        expressionsPlugin.initExpressions(this);\r\n      }\r\n\r\n      this.renderer.initItems();\r\n      setTimeout(function () {\r\n        this.trigger('DOMLoaded');\r\n      }.bind(this), 0);\r\n      this.gotoFrame();\r\n\r\n      if (this.autoplay) {\r\n        this.play();\r\n      }\r\n    }\r\n  };\r\n\r\n  AnimationItem.prototype.resize = function (width, height) {\r\n    // Adding this validation for backwards compatibility in case an event object was being passed down\r\n    var _width = typeof width === 'number' ? width : undefined;\r\n\r\n    var _height = typeof height === 'number' ? height : undefined;\r\n\r\n    this.renderer.updateContainerSize(_width, _height);\r\n  };\r\n\r\n  AnimationItem.prototype.setSubframe = function (flag) {\r\n    this.isSubframeEnabled = !!flag;\r\n  };\r\n\r\n  AnimationItem.prototype.gotoFrame = function () {\r\n    this.currentFrame = this.isSubframeEnabled ? this.currentRawFrame : ~~this.currentRawFrame; // eslint-disable-line no-bitwise\r\n\r\n    if (this.timeCompleted !== this.totalFrames && this.currentFrame > this.timeCompleted) {\r\n      this.currentFrame = this.timeCompleted;\r\n    }\r\n\r\n    this.trigger('enterFrame');\r\n    this.renderFrame();\r\n    this.trigger('drawnFrame');\r\n  };\r\n\r\n  AnimationItem.prototype.renderFrame = function () {\r\n    if (this.isLoaded === false || !this.renderer) {\r\n      return;\r\n    }\r\n\r\n    try {\r\n      this.renderer.renderFrame(this.currentFrame + this.firstFrame);\r\n    } catch (error) {\r\n      this.triggerRenderFrameError(error);\r\n    }\r\n  };\r\n\r\n  AnimationItem.prototype.play = function (name) {\r\n    if (name && this.name !== name) {\r\n      return;\r\n    }\r\n\r\n    if (this.isPaused === true) {\r\n      this.isPaused = false;\r\n      this.trigger('_pause');\r\n      this.audioController.resume();\r\n\r\n      if (this._idle) {\r\n        this._idle = false;\r\n        this.trigger('_active');\r\n      }\r\n    }\r\n  };\r\n\r\n  AnimationItem.prototype.pause = function (name) {\r\n    if (name && this.name !== name) {\r\n      return;\r\n    }\r\n\r\n    if (this.isPaused === false) {\r\n      this.isPaused = true;\r\n      this.trigger('_play');\r\n      this._idle = true;\r\n      this.trigger('_idle');\r\n      this.audioController.pause();\r\n    }\r\n  };\r\n\r\n  AnimationItem.prototype.togglePause = function (name) {\r\n    if (name && this.name !== name) {\r\n      return;\r\n    }\r\n\r\n    if (this.isPaused === true) {\r\n      this.play();\r\n    } else {\r\n      this.pause();\r\n    }\r\n  };\r\n\r\n  AnimationItem.prototype.stop = function (name) {\r\n    if (name && this.name !== name) {\r\n      return;\r\n    }\r\n\r\n    this.pause();\r\n    this.playCount = 0;\r\n    this._completedLoop = false;\r\n    this.setCurrentRawFrameValue(0);\r\n  };\r\n\r\n  AnimationItem.prototype.getMarkerData = function (markerName) {\r\n    var marker;\r\n\r\n    for (var i = 0; i < this.markers.length; i += 1) {\r\n      marker = this.markers[i];\r\n\r\n      if (marker.payload && marker.payload.name === markerName) {\r\n        return marker;\r\n      }\r\n    }\r\n\r\n    return null;\r\n  };\r\n\r\n  AnimationItem.prototype.goToAndStop = function (value, isFrame, name) {\r\n    if (name && this.name !== name) {\r\n      return;\r\n    }\r\n\r\n    var numValue = Number(value);\r\n\r\n    if (isNaN(numValue)) {\r\n      var marker = this.getMarkerData(value);\r\n\r\n      if (marker) {\r\n        this.goToAndStop(marker.time, true);\r\n      }\r\n    } else if (isFrame) {\r\n      this.setCurrentRawFrameValue(value);\r\n    } else {\r\n      this.setCurrentRawFrameValue(value * this.frameModifier);\r\n    }\r\n\r\n    this.pause();\r\n  };\r\n\r\n  AnimationItem.prototype.goToAndPlay = function (value, isFrame, name) {\r\n    if (name && this.name !== name) {\r\n      return;\r\n    }\r\n\r\n    var numValue = Number(value);\r\n\r\n    if (isNaN(numValue)) {\r\n      var marker = this.getMarkerData(value);\r\n\r\n      if (marker) {\r\n        if (!marker.duration) {\r\n          this.goToAndStop(marker.time, true);\r\n        } else {\r\n          this.playSegments([marker.time, marker.time + marker.duration], true);\r\n        }\r\n      }\r\n    } else {\r\n      this.goToAndStop(numValue, isFrame, name);\r\n    }\r\n\r\n    this.play();\r\n  };\r\n\r\n  AnimationItem.prototype.advanceTime = function (value) {\r\n    if (this.isPaused === true || this.isLoaded === false) {\r\n      return;\r\n    }\r\n\r\n    var nextValue = this.currentRawFrame + value * this.frameModifier;\r\n    var _isComplete = false; // Checking if nextValue > totalFrames - 1 for addressing non looping and looping animations.\r\n    // If animation won't loop, it should stop at totalFrames - 1. If it will loop it should complete the last frame and then loop.\r\n\r\n    if (nextValue >= this.totalFrames - 1 && this.frameModifier > 0) {\r\n      if (!this.loop || this.playCount === this.loop) {\r\n        if (!this.checkSegments(nextValue > this.totalFrames ? nextValue % this.totalFrames : 0)) {\r\n          _isComplete = true;\r\n          nextValue = this.totalFrames - 1;\r\n        }\r\n      } else if (nextValue >= this.totalFrames) {\r\n        this.playCount += 1;\r\n\r\n        if (!this.checkSegments(nextValue % this.totalFrames)) {\r\n          this.setCurrentRawFrameValue(nextValue % this.totalFrames);\r\n          this._completedLoop = true;\r\n          this.trigger('loopComplete');\r\n        }\r\n      } else {\r\n        this.setCurrentRawFrameValue(nextValue);\r\n      }\r\n    } else if (nextValue < 0) {\r\n      if (!this.checkSegments(nextValue % this.totalFrames)) {\r\n        if (this.loop && !(this.playCount-- <= 0 && this.loop !== true)) {\r\n          // eslint-disable-line no-plusplus\r\n          this.setCurrentRawFrameValue(this.totalFrames + nextValue % this.totalFrames);\r\n\r\n          if (!this._completedLoop) {\r\n            this._completedLoop = true;\r\n          } else {\r\n            this.trigger('loopComplete');\r\n          }\r\n        } else {\r\n          _isComplete = true;\r\n          nextValue = 0;\r\n        }\r\n      }\r\n    } else {\r\n      this.setCurrentRawFrameValue(nextValue);\r\n    }\r\n\r\n    if (_isComplete) {\r\n      this.setCurrentRawFrameValue(nextValue);\r\n      this.pause();\r\n      this.trigger('complete');\r\n    }\r\n  };\r\n\r\n  AnimationItem.prototype.adjustSegment = function (arr, offset) {\r\n    this.playCount = 0;\r\n\r\n    if (arr[1] < arr[0]) {\r\n      if (this.frameModifier > 0) {\r\n        if (this.playSpeed < 0) {\r\n          this.setSpeed(-this.playSpeed);\r\n        } else {\r\n          this.setDirection(-1);\r\n        }\r\n      }\r\n\r\n      this.totalFrames = arr[0] - arr[1];\r\n      this.timeCompleted = this.totalFrames;\r\n      this.firstFrame = arr[1];\r\n      this.setCurrentRawFrameValue(this.totalFrames - 0.001 - offset);\r\n    } else if (arr[1] > arr[0]) {\r\n      if (this.frameModifier < 0) {\r\n        if (this.playSpeed < 0) {\r\n          this.setSpeed(-this.playSpeed);\r\n        } else {\r\n          this.setDirection(1);\r\n        }\r\n      }\r\n\r\n      this.totalFrames = arr[1] - arr[0];\r\n      this.timeCompleted = this.totalFrames;\r\n      this.firstFrame = arr[0];\r\n      this.setCurrentRawFrameValue(0.001 + offset);\r\n    }\r\n\r\n    this.trigger('segmentStart');\r\n  };\r\n\r\n  AnimationItem.prototype.setSegment = function (init, end) {\r\n    var pendingFrame = -1;\r\n\r\n    if (this.isPaused) {\r\n      if (this.currentRawFrame + this.firstFrame < init) {\r\n        pendingFrame = init;\r\n      } else if (this.currentRawFrame + this.firstFrame > end) {\r\n        pendingFrame = end - init;\r\n      }\r\n    }\r\n\r\n    this.firstFrame = init;\r\n    this.totalFrames = end - init;\r\n    this.timeCompleted = this.totalFrames;\r\n\r\n    if (pendingFrame !== -1) {\r\n      this.goToAndStop(pendingFrame, true);\r\n    }\r\n  };\r\n\r\n  AnimationItem.prototype.playSegments = function (arr, forceFlag) {\r\n    if (forceFlag) {\r\n      this.segments.length = 0;\r\n    }\r\n\r\n    if (_typeof$4(arr[0]) === 'object') {\r\n      var i;\r\n      var len = arr.length;\r\n\r\n      for (i = 0; i < len; i += 1) {\r\n        this.segments.push(arr[i]);\r\n      }\r\n    } else {\r\n      this.segments.push(arr);\r\n    }\r\n\r\n    if (this.segments.length && forceFlag) {\r\n      this.adjustSegment(this.segments.shift(), 0);\r\n    }\r\n\r\n    if (this.isPaused) {\r\n      this.play();\r\n    }\r\n  };\r\n\r\n  AnimationItem.prototype.resetSegments = function (forceFlag) {\r\n    this.segments.length = 0;\r\n    this.segments.push([this.animationData.ip, this.animationData.op]);\r\n\r\n    if (forceFlag) {\r\n      this.checkSegments(0);\r\n    }\r\n  };\r\n\r\n  AnimationItem.prototype.checkSegments = function (offset) {\r\n    if (this.segments.length) {\r\n      this.adjustSegment(this.segments.shift(), offset);\r\n      return true;\r\n    }\r\n\r\n    return false;\r\n  };\r\n\r\n  AnimationItem.prototype.destroy = function (name) {\r\n    if (name && this.name !== name || !this.renderer) {\r\n      return;\r\n    }\r\n\r\n    this.renderer.destroy();\r\n    this.imagePreloader.destroy();\r\n    this.trigger('destroy');\r\n    this._cbs = null;\r\n    this.onEnterFrame = null;\r\n    this.onLoopComplete = null;\r\n    this.onComplete = null;\r\n    this.onSegmentStart = null;\r\n    this.onDestroy = null;\r\n    this.renderer = null;\r\n    this.renderer = null;\r\n    this.imagePreloader = null;\r\n    this.projectInterface = null;\r\n  };\r\n\r\n  AnimationItem.prototype.setCurrentRawFrameValue = function (value) {\r\n    this.currentRawFrame = value;\r\n    this.gotoFrame();\r\n  };\r\n\r\n  AnimationItem.prototype.setSpeed = function (val) {\r\n    this.playSpeed = val;\r\n    this.updaFrameModifier();\r\n  };\r\n\r\n  AnimationItem.prototype.setDirection = function (val) {\r\n    this.playDirection = val < 0 ? -1 : 1;\r\n    this.updaFrameModifier();\r\n  };\r\n\r\n  AnimationItem.prototype.setVolume = function (val, name) {\r\n    if (name && this.name !== name) {\r\n      return;\r\n    }\r\n\r\n    this.audioController.setVolume(val);\r\n  };\r\n\r\n  AnimationItem.prototype.getVolume = function () {\r\n    return this.audioController.getVolume();\r\n  };\r\n\r\n  AnimationItem.prototype.mute = function (name) {\r\n    if (name && this.name !== name) {\r\n      return;\r\n    }\r\n\r\n    this.audioController.mute();\r\n  };\r\n\r\n  AnimationItem.prototype.unmute = function (name) {\r\n    if (name && this.name !== name) {\r\n      return;\r\n    }\r\n\r\n    this.audioController.unmute();\r\n  };\r\n\r\n  AnimationItem.prototype.updaFrameModifier = function () {\r\n    this.frameModifier = this.frameMult * this.playSpeed * this.playDirection;\r\n    this.audioController.setRate(this.playSpeed * this.playDirection);\r\n  };\r\n\r\n  AnimationItem.prototype.getPath = function () {\r\n    return this.path;\r\n  };\r\n\r\n  AnimationItem.prototype.getAssetsPath = function (assetData) {\r\n    var path = '';\r\n\r\n    if (assetData.e) {\r\n      path = assetData.p;\r\n    } else if (this.assetsPath) {\r\n      var imagePath = assetData.p;\r\n\r\n      if (imagePath.indexOf('images/') !== -1) {\r\n        imagePath = imagePath.split('/')[1];\r\n      }\r\n\r\n      path = this.assetsPath + imagePath;\r\n    } else {\r\n      path = this.path;\r\n      path += assetData.u ? assetData.u : '';\r\n      path += assetData.p;\r\n    }\r\n\r\n    return path;\r\n  };\r\n\r\n  AnimationItem.prototype.getAssetData = function (id) {\r\n    var i = 0;\r\n    var len = this.assets.length;\r\n\r\n    while (i < len) {\r\n      if (id === this.assets[i].id) {\r\n        return this.assets[i];\r\n      }\r\n\r\n      i += 1;\r\n    }\r\n\r\n    return null;\r\n  };\r\n\r\n  AnimationItem.prototype.hide = function () {\r\n    this.renderer.hide();\r\n  };\r\n\r\n  AnimationItem.prototype.show = function () {\r\n    this.renderer.show();\r\n  };\r\n\r\n  AnimationItem.prototype.getDuration = function (isFrame) {\r\n    return isFrame ? this.totalFrames : this.totalFrames / this.frameRate;\r\n  };\r\n\r\n  AnimationItem.prototype.updateDocumentData = function (path, documentData, index) {\r\n    try {\r\n      var element = this.renderer.getElementByPath(path);\r\n      element.updateDocumentData(documentData, index);\r\n    } catch (error) {// TODO: decide how to handle catch case\r\n    }\r\n  };\r\n\r\n  AnimationItem.prototype.trigger = function (name) {\r\n    if (this._cbs && this._cbs[name]) {\r\n      switch (name) {\r\n        case 'enterFrame':\r\n          this.triggerEvent(name, new BMEnterFrameEvent(name, this.currentFrame, this.totalFrames, this.frameModifier));\r\n          break;\r\n\r\n        case 'drawnFrame':\r\n          this.drawnFrameEvent.currentTime = this.currentFrame;\r\n          this.drawnFrameEvent.totalTime = this.totalFrames;\r\n          this.drawnFrameEvent.direction = this.frameModifier;\r\n          this.triggerEvent(name, this.drawnFrameEvent);\r\n          break;\r\n\r\n        case 'loopComplete':\r\n          this.triggerEvent(name, new BMCompleteLoopEvent(name, this.loop, this.playCount, this.frameMult));\r\n          break;\r\n\r\n        case 'complete':\r\n          this.triggerEvent(name, new BMCompleteEvent(name, this.frameMult));\r\n          break;\r\n\r\n        case 'segmentStart':\r\n          this.triggerEvent(name, new BMSegmentStartEvent(name, this.firstFrame, this.totalFrames));\r\n          break;\r\n\r\n        case 'destroy':\r\n          this.triggerEvent(name, new BMDestroyEvent(name, this));\r\n          break;\r\n\r\n        default:\r\n          this.triggerEvent(name);\r\n      }\r\n    }\r\n\r\n    if (name === 'enterFrame' && this.onEnterFrame) {\r\n      this.onEnterFrame.call(this, new BMEnterFrameEvent(name, this.currentFrame, this.totalFrames, this.frameMult));\r\n    }\r\n\r\n    if (name === 'loopComplete' && this.onLoopComplete) {\r\n      this.onLoopComplete.call(this, new BMCompleteLoopEvent(name, this.loop, this.playCount, this.frameMult));\r\n    }\r\n\r\n    if (name === 'complete' && this.onComplete) {\r\n      this.onComplete.call(this, new BMCompleteEvent(name, this.frameMult));\r\n    }\r\n\r\n    if (name === 'segmentStart' && this.onSegmentStart) {\r\n      this.onSegmentStart.call(this, new BMSegmentStartEvent(name, this.firstFrame, this.totalFrames));\r\n    }\r\n\r\n    if (name === 'destroy' && this.onDestroy) {\r\n      this.onDestroy.call(this, new BMDestroyEvent(name, this));\r\n    }\r\n  };\r\n\r\n  AnimationItem.prototype.triggerRenderFrameError = function (nativeError) {\r\n    var error = new BMRenderFrameErrorEvent(nativeError, this.currentFrame);\r\n    this.triggerEvent('error', error);\r\n\r\n    if (this.onError) {\r\n      this.onError.call(this, error);\r\n    }\r\n  };\r\n\r\n  AnimationItem.prototype.triggerConfigError = function (nativeError) {\r\n    var error = new BMConfigErrorEvent(nativeError, this.currentFrame);\r\n    this.triggerEvent('error', error);\r\n\r\n    if (this.onError) {\r\n      this.onError.call(this, error);\r\n    }\r\n  };\r\n\r\n  var animationManager = function () {\r\n    var moduleOb = {};\r\n    var registeredAnimations = [];\r\n    var initTime = 0;\r\n    var len = 0;\r\n    var playingAnimationsNum = 0;\r\n    var _stopped = true;\r\n    var _isFrozen = false;\r\n\r\n    function removeElement(ev) {\r\n      var i = 0;\r\n      var animItem = ev.target;\r\n\r\n      while (i < len) {\r\n        if (registeredAnimations[i].animation === animItem) {\r\n          registeredAnimations.splice(i, 1);\r\n          i -= 1;\r\n          len -= 1;\r\n\r\n          if (!animItem.isPaused) {\r\n            subtractPlayingCount();\r\n          }\r\n        }\r\n\r\n        i += 1;\r\n      }\r\n    }\r\n\r\n    function registerAnimation(element, animationData) {\r\n      if (!element) {\r\n        return null;\r\n      }\r\n\r\n      var i = 0;\r\n\r\n      while (i < len) {\r\n        if (registeredAnimations[i].elem === element && registeredAnimations[i].elem !== null) {\r\n          return registeredAnimations[i].animation;\r\n        }\r\n\r\n        i += 1;\r\n      }\r\n\r\n      var animItem = new AnimationItem();\r\n      setupAnimation(animItem, element);\r\n      animItem.setData(element, animationData);\r\n      return animItem;\r\n    }\r\n\r\n    function getRegisteredAnimations() {\r\n      var i;\r\n      var lenAnims = registeredAnimations.length;\r\n      var animations = [];\r\n\r\n      for (i = 0; i < lenAnims; i += 1) {\r\n        animations.push(registeredAnimations[i].animation);\r\n      }\r\n\r\n      return animations;\r\n    }\r\n\r\n    function addPlayingCount() {\r\n      playingAnimationsNum += 1;\r\n      activate();\r\n    }\r\n\r\n    function subtractPlayingCount() {\r\n      playingAnimationsNum -= 1;\r\n    }\r\n\r\n    function setupAnimation(animItem, element) {\r\n      animItem.addEventListener('destroy', removeElement);\r\n      animItem.addEventListener('_active', addPlayingCount);\r\n      animItem.addEventListener('_idle', subtractPlayingCount);\r\n      registeredAnimations.push({\r\n        elem: element,\r\n        animation: animItem\r\n      });\r\n      len += 1;\r\n    }\r\n\r\n    function loadAnimation(params) {\r\n      var animItem = new AnimationItem();\r\n      setupAnimation(animItem, null);\r\n      animItem.setParams(params);\r\n      return animItem;\r\n    }\r\n\r\n    function setSpeed(val, animation) {\r\n      var i;\r\n\r\n      for (i = 0; i < len; i += 1) {\r\n        registeredAnimations[i].animation.setSpeed(val, animation);\r\n      }\r\n    }\r\n\r\n    function setDirection(val, animation) {\r\n      var i;\r\n\r\n      for (i = 0; i < len; i += 1) {\r\n        registeredAnimations[i].animation.setDirection(val, animation);\r\n      }\r\n    }\r\n\r\n    function play(animation) {\r\n      var i;\r\n\r\n      for (i = 0; i < len; i += 1) {\r\n        registeredAnimations[i].animation.play(animation);\r\n      }\r\n    }\r\n\r\n    function resume(nowTime) {\r\n      var elapsedTime = nowTime - initTime;\r\n      var i;\r\n\r\n      for (i = 0; i < len; i += 1) {\r\n        registeredAnimations[i].animation.advanceTime(elapsedTime);\r\n      }\r\n\r\n      initTime = nowTime;\r\n\r\n      if (playingAnimationsNum && !_isFrozen) {\r\n        window.requestAnimationFrame(resume);\r\n      } else {\r\n        _stopped = true;\r\n      }\r\n    }\r\n\r\n    function first(nowTime) {\r\n      initTime = nowTime;\r\n      window.requestAnimationFrame(resume);\r\n    }\r\n\r\n    function pause(animation) {\r\n      var i;\r\n\r\n      for (i = 0; i < len; i += 1) {\r\n        registeredAnimations[i].animation.pause(animation);\r\n      }\r\n    }\r\n\r\n    function goToAndStop(value, isFrame, animation) {\r\n      var i;\r\n\r\n      for (i = 0; i < len; i += 1) {\r\n        registeredAnimations[i].animation.goToAndStop(value, isFrame, animation);\r\n      }\r\n    }\r\n\r\n    function stop(animation) {\r\n      var i;\r\n\r\n      for (i = 0; i < len; i += 1) {\r\n        registeredAnimations[i].animation.stop(animation);\r\n      }\r\n    }\r\n\r\n    function togglePause(animation) {\r\n      var i;\r\n\r\n      for (i = 0; i < len; i += 1) {\r\n        registeredAnimations[i].animation.togglePause(animation);\r\n      }\r\n    }\r\n\r\n    function destroy(animation) {\r\n      var i;\r\n\r\n      for (i = len - 1; i >= 0; i -= 1) {\r\n        registeredAnimations[i].animation.destroy(animation);\r\n      }\r\n    }\r\n\r\n    function searchAnimations(animationData, standalone, renderer) {\r\n      var animElements = [].concat([].slice.call(document.getElementsByClassName('lottie')), [].slice.call(document.getElementsByClassName('bodymovin')));\r\n      var i;\r\n      var lenAnims = animElements.length;\r\n\r\n      for (i = 0; i < lenAnims; i += 1) {\r\n        if (renderer) {\r\n          animElements[i].setAttribute('data-bm-type', renderer);\r\n        }\r\n\r\n        registerAnimation(animElements[i], animationData);\r\n      }\r\n\r\n      if (standalone && lenAnims === 0) {\r\n        if (!renderer) {\r\n          renderer = 'svg';\r\n        }\r\n\r\n        var body = document.getElementsByTagName('body')[0];\r\n        body.innerText = '';\r\n        var div = createTag('div');\r\n        div.style.width = '100%';\r\n        div.style.height = '100%';\r\n        div.setAttribute('data-bm-type', renderer);\r\n        body.appendChild(div);\r\n        registerAnimation(div, animationData);\r\n      }\r\n    }\r\n\r\n    function resize() {\r\n      var i;\r\n\r\n      for (i = 0; i < len; i += 1) {\r\n        registeredAnimations[i].animation.resize();\r\n      }\r\n    }\r\n\r\n    function activate() {\r\n      if (!_isFrozen && playingAnimationsNum) {\r\n        if (_stopped) {\r\n          window.requestAnimationFrame(first);\r\n          _stopped = false;\r\n        }\r\n      }\r\n    }\r\n\r\n    function freeze() {\r\n      _isFrozen = true;\r\n    }\r\n\r\n    function unfreeze() {\r\n      _isFrozen = false;\r\n      activate();\r\n    }\r\n\r\n    function setVolume(val, animation) {\r\n      var i;\r\n\r\n      for (i = 0; i < len; i += 1) {\r\n        registeredAnimations[i].animation.setVolume(val, animation);\r\n      }\r\n    }\r\n\r\n    function mute(animation) {\r\n      var i;\r\n\r\n      for (i = 0; i < len; i += 1) {\r\n        registeredAnimations[i].animation.mute(animation);\r\n      }\r\n    }\r\n\r\n    function unmute(animation) {\r\n      var i;\r\n\r\n      for (i = 0; i < len; i += 1) {\r\n        registeredAnimations[i].animation.unmute(animation);\r\n      }\r\n    }\r\n\r\n    moduleOb.registerAnimation = registerAnimation;\r\n    moduleOb.loadAnimation = loadAnimation;\r\n    moduleOb.setSpeed = setSpeed;\r\n    moduleOb.setDirection = setDirection;\r\n    moduleOb.play = play;\r\n    moduleOb.pause = pause;\r\n    moduleOb.stop = stop;\r\n    moduleOb.togglePause = togglePause;\r\n    moduleOb.searchAnimations = searchAnimations;\r\n    moduleOb.resize = resize; // moduleOb.start = start;\r\n\r\n    moduleOb.goToAndStop = goToAndStop;\r\n    moduleOb.destroy = destroy;\r\n    moduleOb.freeze = freeze;\r\n    moduleOb.unfreeze = unfreeze;\r\n    moduleOb.setVolume = setVolume;\r\n    moduleOb.mute = mute;\r\n    moduleOb.unmute = unmute;\r\n    moduleOb.getRegisteredAnimations = getRegisteredAnimations;\r\n    return moduleOb;\r\n  }();\r\n\r\n  /* eslint-disable */\r\n  var BezierFactory = function () {\r\n    /**\r\n       * BezierEasing - use bezier curve for transition easing function\r\n       * by Gaëtan Renaudeau 2014 - 2015 – MIT License\r\n       *\r\n       * Credits: is based on Firefox's nsSMILKeySpline.cpp\r\n       * Usage:\r\n       * var spline = BezierEasing([ 0.25, 0.1, 0.25, 1.0 ])\r\n       * spline.get(x) => returns the easing value | x must be in [0, 1] range\r\n       *\r\n       */\r\n    var ob = {};\r\n    ob.getBezierEasing = getBezierEasing;\r\n    var beziers = {};\r\n\r\n    function getBezierEasing(a, b, c, d, nm) {\r\n      var str = nm || ('bez_' + a + '_' + b + '_' + c + '_' + d).replace(/\\./g, 'p');\r\n\r\n      if (beziers[str]) {\r\n        return beziers[str];\r\n      }\r\n\r\n      var bezEasing = new BezierEasing([a, b, c, d]);\r\n      beziers[str] = bezEasing;\r\n      return bezEasing;\r\n    } // These values are established by empiricism with tests (tradeoff: performance VS precision)\r\n\r\n\r\n    var NEWTON_ITERATIONS = 4;\r\n    var NEWTON_MIN_SLOPE = 0.001;\r\n    var SUBDIVISION_PRECISION = 0.0000001;\r\n    var SUBDIVISION_MAX_ITERATIONS = 10;\r\n    var kSplineTableSize = 11;\r\n    var kSampleStepSize = 1.0 / (kSplineTableSize - 1.0);\r\n    var float32ArraySupported = typeof Float32Array === 'function';\r\n\r\n    function A(aA1, aA2) {\r\n      return 1.0 - 3.0 * aA2 + 3.0 * aA1;\r\n    }\r\n\r\n    function B(aA1, aA2) {\r\n      return 3.0 * aA2 - 6.0 * aA1;\r\n    }\r\n\r\n    function C(aA1) {\r\n      return 3.0 * aA1;\r\n    } // Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2.\r\n\r\n\r\n    function calcBezier(aT, aA1, aA2) {\r\n      return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT;\r\n    } // Returns dx/dt given t, x1, and x2, or dy/dt given t, y1, and y2.\r\n\r\n\r\n    function getSlope(aT, aA1, aA2) {\r\n      return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1);\r\n    }\r\n\r\n    function binarySubdivide(aX, aA, aB, mX1, mX2) {\r\n      var currentX,\r\n          currentT,\r\n          i = 0;\r\n\r\n      do {\r\n        currentT = aA + (aB - aA) / 2.0;\r\n        currentX = calcBezier(currentT, mX1, mX2) - aX;\r\n\r\n        if (currentX > 0.0) {\r\n          aB = currentT;\r\n        } else {\r\n          aA = currentT;\r\n        }\r\n      } while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS);\r\n\r\n      return currentT;\r\n    }\r\n\r\n    function newtonRaphsonIterate(aX, aGuessT, mX1, mX2) {\r\n      for (var i = 0; i < NEWTON_ITERATIONS; ++i) {\r\n        var currentSlope = getSlope(aGuessT, mX1, mX2);\r\n        if (currentSlope === 0.0) return aGuessT;\r\n        var currentX = calcBezier(aGuessT, mX1, mX2) - aX;\r\n        aGuessT -= currentX / currentSlope;\r\n      }\r\n\r\n      return aGuessT;\r\n    }\r\n    /**\r\n       * points is an array of [ mX1, mY1, mX2, mY2 ]\r\n       */\r\n\r\n\r\n    function BezierEasing(points) {\r\n      this._p = points;\r\n      this._mSampleValues = float32ArraySupported ? new Float32Array(kSplineTableSize) : new Array(kSplineTableSize);\r\n      this._precomputed = false;\r\n      this.get = this.get.bind(this);\r\n    }\r\n\r\n    BezierEasing.prototype = {\r\n      get: function get(x) {\r\n        var mX1 = this._p[0],\r\n            mY1 = this._p[1],\r\n            mX2 = this._p[2],\r\n            mY2 = this._p[3];\r\n        if (!this._precomputed) this._precompute();\r\n        if (mX1 === mY1 && mX2 === mY2) return x; // linear\r\n        // Because JavaScript number are imprecise, we should guarantee the extremes are right.\r\n\r\n        if (x === 0) return 0;\r\n        if (x === 1) return 1;\r\n        return calcBezier(this._getTForX(x), mY1, mY2);\r\n      },\r\n      // Private part\r\n      _precompute: function _precompute() {\r\n        var mX1 = this._p[0],\r\n            mY1 = this._p[1],\r\n            mX2 = this._p[2],\r\n            mY2 = this._p[3];\r\n        this._precomputed = true;\r\n\r\n        if (mX1 !== mY1 || mX2 !== mY2) {\r\n          this._calcSampleValues();\r\n        }\r\n      },\r\n      _calcSampleValues: function _calcSampleValues() {\r\n        var mX1 = this._p[0],\r\n            mX2 = this._p[2];\r\n\r\n        for (var i = 0; i < kSplineTableSize; ++i) {\r\n          this._mSampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);\r\n        }\r\n      },\r\n\r\n      /**\r\n           * getTForX chose the fastest heuristic to determine the percentage value precisely from a given X projection.\r\n           */\r\n      _getTForX: function _getTForX(aX) {\r\n        var mX1 = this._p[0],\r\n            mX2 = this._p[2],\r\n            mSampleValues = this._mSampleValues;\r\n        var intervalStart = 0.0;\r\n        var currentSample = 1;\r\n        var lastSample = kSplineTableSize - 1;\r\n\r\n        for (; currentSample !== lastSample && mSampleValues[currentSample] <= aX; ++currentSample) {\r\n          intervalStart += kSampleStepSize;\r\n        }\r\n\r\n        --currentSample; // Interpolate to provide an initial guess for t\r\n\r\n        var dist = (aX - mSampleValues[currentSample]) / (mSampleValues[currentSample + 1] - mSampleValues[currentSample]);\r\n        var guessForT = intervalStart + dist * kSampleStepSize;\r\n        var initialSlope = getSlope(guessForT, mX1, mX2);\r\n\r\n        if (initialSlope >= NEWTON_MIN_SLOPE) {\r\n          return newtonRaphsonIterate(aX, guessForT, mX1, mX2);\r\n        }\r\n\r\n        if (initialSlope === 0.0) {\r\n          return guessForT;\r\n        }\r\n\r\n        return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2);\r\n      }\r\n    };\r\n    return ob;\r\n  }();\r\n\r\n  var pooling = function () {\r\n    function _double(arr) {\r\n      return arr.concat(createSizedArray(arr.length));\r\n    }\r\n\r\n    return {\r\n      \"double\": _double\r\n    };\r\n  }();\r\n\r\n  var poolFactory = function () {\r\n    return function (initialLength, _create, _release) {\r\n      var _length = 0;\r\n      var _maxLength = initialLength;\r\n      var pool = createSizedArray(_maxLength);\r\n      var ob = {\r\n        newElement: newElement,\r\n        release: release\r\n      };\r\n\r\n      function newElement() {\r\n        var element;\r\n\r\n        if (_length) {\r\n          _length -= 1;\r\n          element = pool[_length];\r\n        } else {\r\n          element = _create();\r\n        }\r\n\r\n        return element;\r\n      }\r\n\r\n      function release(element) {\r\n        if (_length === _maxLength) {\r\n          pool = pooling[\"double\"](pool);\r\n          _maxLength *= 2;\r\n        }\r\n\r\n        if (_release) {\r\n          _release(element);\r\n        }\r\n\r\n        pool[_length] = element;\r\n        _length += 1;\r\n      }\r\n\r\n      return ob;\r\n    };\r\n  }();\r\n\r\n  var bezierLengthPool = function () {\r\n    function create() {\r\n      return {\r\n        addedLength: 0,\r\n        percents: createTypedArray('float32', getDefaultCurveSegments()),\r\n        lengths: createTypedArray('float32', getDefaultCurveSegments())\r\n      };\r\n    }\r\n\r\n    return poolFactory(8, create);\r\n  }();\r\n\r\n  var segmentsLengthPool = function () {\r\n    function create() {\r\n      return {\r\n        lengths: [],\r\n        totalLength: 0\r\n      };\r\n    }\r\n\r\n    function release(element) {\r\n      var i;\r\n      var len = element.lengths.length;\r\n\r\n      for (i = 0; i < len; i += 1) {\r\n        bezierLengthPool.release(element.lengths[i]);\r\n      }\r\n\r\n      element.lengths.length = 0;\r\n    }\r\n\r\n    return poolFactory(8, create, release);\r\n  }();\r\n\r\n  function bezFunction() {\r\n    var math = Math;\r\n\r\n    function pointOnLine2D(x1, y1, x2, y2, x3, y3) {\r\n      var det1 = x1 * y2 + y1 * x3 + x2 * y3 - x3 * y2 - y3 * x1 - x2 * y1;\r\n      return det1 > -0.001 && det1 < 0.001;\r\n    }\r\n\r\n    function pointOnLine3D(x1, y1, z1, x2, y2, z2, x3, y3, z3) {\r\n      if (z1 === 0 && z2 === 0 && z3 === 0) {\r\n        return pointOnLine2D(x1, y1, x2, y2, x3, y3);\r\n      }\r\n\r\n      var dist1 = math.sqrt(math.pow(x2 - x1, 2) + math.pow(y2 - y1, 2) + math.pow(z2 - z1, 2));\r\n      var dist2 = math.sqrt(math.pow(x3 - x1, 2) + math.pow(y3 - y1, 2) + math.pow(z3 - z1, 2));\r\n      var dist3 = math.sqrt(math.pow(x3 - x2, 2) + math.pow(y3 - y2, 2) + math.pow(z3 - z2, 2));\r\n      var diffDist;\r\n\r\n      if (dist1 > dist2) {\r\n        if (dist1 > dist3) {\r\n          diffDist = dist1 - dist2 - dist3;\r\n        } else {\r\n          diffDist = dist3 - dist2 - dist1;\r\n        }\r\n      } else if (dist3 > dist2) {\r\n        diffDist = dist3 - dist2 - dist1;\r\n      } else {\r\n        diffDist = dist2 - dist1 - dist3;\r\n      }\r\n\r\n      return diffDist > -0.0001 && diffDist < 0.0001;\r\n    }\r\n\r\n    var getBezierLength = function () {\r\n      return function (pt1, pt2, pt3, pt4) {\r\n        var curveSegments = getDefaultCurveSegments();\r\n        var k;\r\n        var i;\r\n        var len;\r\n        var ptCoord;\r\n        var perc;\r\n        var addedLength = 0;\r\n        var ptDistance;\r\n        var point = [];\r\n        var lastPoint = [];\r\n        var lengthData = bezierLengthPool.newElement();\r\n        len = pt3.length;\r\n\r\n        for (k = 0; k < curveSegments; k += 1) {\r\n          perc = k / (curveSegments - 1);\r\n          ptDistance = 0;\r\n\r\n          for (i = 0; i < len; i += 1) {\r\n            ptCoord = bmPow(1 - perc, 3) * pt1[i] + 3 * bmPow(1 - perc, 2) * perc * pt3[i] + 3 * (1 - perc) * bmPow(perc, 2) * pt4[i] + bmPow(perc, 3) * pt2[i];\r\n            point[i] = ptCoord;\r\n\r\n            if (lastPoint[i] !== null) {\r\n              ptDistance += bmPow(point[i] - lastPoint[i], 2);\r\n            }\r\n\r\n            lastPoint[i] = point[i];\r\n          }\r\n\r\n          if (ptDistance) {\r\n            ptDistance = bmSqrt(ptDistance);\r\n            addedLength += ptDistance;\r\n          }\r\n\r\n          lengthData.percents[k] = perc;\r\n          lengthData.lengths[k] = addedLength;\r\n        }\r\n\r\n        lengthData.addedLength = addedLength;\r\n        return lengthData;\r\n      };\r\n    }();\r\n\r\n    function getSegmentsLength(shapeData) {\r\n      var segmentsLength = segmentsLengthPool.newElement();\r\n      var closed = shapeData.c;\r\n      var pathV = shapeData.v;\r\n      var pathO = shapeData.o;\r\n      var pathI = shapeData.i;\r\n      var i;\r\n      var len = shapeData._length;\r\n      var lengths = segmentsLength.lengths;\r\n      var totalLength = 0;\r\n\r\n      for (i = 0; i < len - 1; i += 1) {\r\n        lengths[i] = getBezierLength(pathV[i], pathV[i + 1], pathO[i], pathI[i + 1]);\r\n        totalLength += lengths[i].addedLength;\r\n      }\r\n\r\n      if (closed && len) {\r\n        lengths[i] = getBezierLength(pathV[i], pathV[0], pathO[i], pathI[0]);\r\n        totalLength += lengths[i].addedLength;\r\n      }\r\n\r\n      segmentsLength.totalLength = totalLength;\r\n      return segmentsLength;\r\n    }\r\n\r\n    function BezierData(length) {\r\n      this.segmentLength = 0;\r\n      this.points = new Array(length);\r\n    }\r\n\r\n    function PointData(partial, point) {\r\n      this.partialLength = partial;\r\n      this.point = point;\r\n    }\r\n\r\n    var buildBezierData = function () {\r\n      var storedData = {};\r\n      return function (pt1, pt2, pt3, pt4) {\r\n        var bezierName = (pt1[0] + '_' + pt1[1] + '_' + pt2[0] + '_' + pt2[1] + '_' + pt3[0] + '_' + pt3[1] + '_' + pt4[0] + '_' + pt4[1]).replace(/\\./g, 'p');\r\n\r\n        if (!storedData[bezierName]) {\r\n          var curveSegments = getDefaultCurveSegments();\r\n          var k;\r\n          var i;\r\n          var len;\r\n          var ptCoord;\r\n          var perc;\r\n          var addedLength = 0;\r\n          var ptDistance;\r\n          var point;\r\n          var lastPoint = null;\r\n\r\n          if (pt1.length === 2 && (pt1[0] !== pt2[0] || pt1[1] !== pt2[1]) && pointOnLine2D(pt1[0], pt1[1], pt2[0], pt2[1], pt1[0] + pt3[0], pt1[1] + pt3[1]) && pointOnLine2D(pt1[0], pt1[1], pt2[0], pt2[1], pt2[0] + pt4[0], pt2[1] + pt4[1])) {\r\n            curveSegments = 2;\r\n          }\r\n\r\n          var bezierData = new BezierData(curveSegments);\r\n          len = pt3.length;\r\n\r\n          for (k = 0; k < curveSegments; k += 1) {\r\n            point = createSizedArray(len);\r\n            perc = k / (curveSegments - 1);\r\n            ptDistance = 0;\r\n\r\n            for (i = 0; i < len; i += 1) {\r\n              ptCoord = bmPow(1 - perc, 3) * pt1[i] + 3 * bmPow(1 - perc, 2) * perc * (pt1[i] + pt3[i]) + 3 * (1 - perc) * bmPow(perc, 2) * (pt2[i] + pt4[i]) + bmPow(perc, 3) * pt2[i];\r\n              point[i] = ptCoord;\r\n\r\n              if (lastPoint !== null) {\r\n                ptDistance += bmPow(point[i] - lastPoint[i], 2);\r\n              }\r\n            }\r\n\r\n            ptDistance = bmSqrt(ptDistance);\r\n            addedLength += ptDistance;\r\n            bezierData.points[k] = new PointData(ptDistance, point);\r\n            lastPoint = point;\r\n          }\r\n\r\n          bezierData.segmentLength = addedLength;\r\n          storedData[bezierName] = bezierData;\r\n        }\r\n\r\n        return storedData[bezierName];\r\n      };\r\n    }();\r\n\r\n    function getDistancePerc(perc, bezierData) {\r\n      var percents = bezierData.percents;\r\n      var lengths = bezierData.lengths;\r\n      var len = percents.length;\r\n      var initPos = bmFloor((len - 1) * perc);\r\n      var lengthPos = perc * bezierData.addedLength;\r\n      var lPerc = 0;\r\n\r\n      if (initPos === len - 1 || initPos === 0 || lengthPos === lengths[initPos]) {\r\n        return percents[initPos];\r\n      }\r\n\r\n      var dir = lengths[initPos] > lengthPos ? -1 : 1;\r\n      var flag = true;\r\n\r\n      while (flag) {\r\n        if (lengths[initPos] <= lengthPos && lengths[initPos + 1] > lengthPos) {\r\n          lPerc = (lengthPos - lengths[initPos]) / (lengths[initPos + 1] - lengths[initPos]);\r\n          flag = false;\r\n        } else {\r\n          initPos += dir;\r\n        }\r\n\r\n        if (initPos < 0 || initPos >= len - 1) {\r\n          // FIX for TypedArrays that don't store floating point values with enough accuracy\r\n          if (initPos === len - 1) {\r\n            return percents[initPos];\r\n          }\r\n\r\n          flag = false;\r\n        }\r\n      }\r\n\r\n      return percents[initPos] + (percents[initPos + 1] - percents[initPos]) * lPerc;\r\n    }\r\n\r\n    function getPointInSegment(pt1, pt2, pt3, pt4, percent, bezierData) {\r\n      var t1 = getDistancePerc(percent, bezierData);\r\n      var u1 = 1 - t1;\r\n      var ptX = math.round((u1 * u1 * u1 * pt1[0] + (t1 * u1 * u1 + u1 * t1 * u1 + u1 * u1 * t1) * pt3[0] + (t1 * t1 * u1 + u1 * t1 * t1 + t1 * u1 * t1) * pt4[0] + t1 * t1 * t1 * pt2[0]) * 1000) / 1000;\r\n      var ptY = math.round((u1 * u1 * u1 * pt1[1] + (t1 * u1 * u1 + u1 * t1 * u1 + u1 * u1 * t1) * pt3[1] + (t1 * t1 * u1 + u1 * t1 * t1 + t1 * u1 * t1) * pt4[1] + t1 * t1 * t1 * pt2[1]) * 1000) / 1000;\r\n      return [ptX, ptY];\r\n    }\r\n\r\n    var bezierSegmentPoints = createTypedArray('float32', 8);\r\n\r\n    function getNewSegment(pt1, pt2, pt3, pt4, startPerc, endPerc, bezierData) {\r\n      if (startPerc < 0) {\r\n        startPerc = 0;\r\n      } else if (startPerc > 1) {\r\n        startPerc = 1;\r\n      }\r\n\r\n      var t0 = getDistancePerc(startPerc, bezierData);\r\n      endPerc = endPerc > 1 ? 1 : endPerc;\r\n      var t1 = getDistancePerc(endPerc, bezierData);\r\n      var i;\r\n      var len = pt1.length;\r\n      var u0 = 1 - t0;\r\n      var u1 = 1 - t1;\r\n      var u0u0u0 = u0 * u0 * u0;\r\n      var t0u0u0_3 = t0 * u0 * u0 * 3; // eslint-disable-line camelcase\r\n\r\n      var t0t0u0_3 = t0 * t0 * u0 * 3; // eslint-disable-line camelcase\r\n\r\n      var t0t0t0 = t0 * t0 * t0; //\r\n\r\n      var u0u0u1 = u0 * u0 * u1;\r\n      var t0u0u1_3 = t0 * u0 * u1 + u0 * t0 * u1 + u0 * u0 * t1; // eslint-disable-line camelcase\r\n\r\n      var t0t0u1_3 = t0 * t0 * u1 + u0 * t0 * t1 + t0 * u0 * t1; // eslint-disable-line camelcase\r\n\r\n      var t0t0t1 = t0 * t0 * t1; //\r\n\r\n      var u0u1u1 = u0 * u1 * u1;\r\n      var t0u1u1_3 = t0 * u1 * u1 + u0 * t1 * u1 + u0 * u1 * t1; // eslint-disable-line camelcase\r\n\r\n      var t0t1u1_3 = t0 * t1 * u1 + u0 * t1 * t1 + t0 * u1 * t1; // eslint-disable-line camelcase\r\n\r\n      var t0t1t1 = t0 * t1 * t1; //\r\n\r\n      var u1u1u1 = u1 * u1 * u1;\r\n      var t1u1u1_3 = t1 * u1 * u1 + u1 * t1 * u1 + u1 * u1 * t1; // eslint-disable-line camelcase\r\n\r\n      var t1t1u1_3 = t1 * t1 * u1 + u1 * t1 * t1 + t1 * u1 * t1; // eslint-disable-line camelcase\r\n\r\n      var t1t1t1 = t1 * t1 * t1;\r\n\r\n      for (i = 0; i < len; i += 1) {\r\n        bezierSegmentPoints[i * 4] = math.round((u0u0u0 * pt1[i] + t0u0u0_3 * pt3[i] + t0t0u0_3 * pt4[i] + t0t0t0 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\r\n\r\n        bezierSegmentPoints[i * 4 + 1] = math.round((u0u0u1 * pt1[i] + t0u0u1_3 * pt3[i] + t0t0u1_3 * pt4[i] + t0t0t1 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\r\n\r\n        bezierSegmentPoints[i * 4 + 2] = math.round((u0u1u1 * pt1[i] + t0u1u1_3 * pt3[i] + t0t1u1_3 * pt4[i] + t0t1t1 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\r\n\r\n        bezierSegmentPoints[i * 4 + 3] = math.round((u1u1u1 * pt1[i] + t1u1u1_3 * pt3[i] + t1t1u1_3 * pt4[i] + t1t1t1 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\r\n      }\r\n\r\n      return bezierSegmentPoints;\r\n    }\r\n\r\n    return {\r\n      getSegmentsLength: getSegmentsLength,\r\n      getNewSegment: getNewSegment,\r\n      getPointInSegment: getPointInSegment,\r\n      buildBezierData: buildBezierData,\r\n      pointOnLine2D: pointOnLine2D,\r\n      pointOnLine3D: pointOnLine3D\r\n    };\r\n  }\r\n\r\n  var bez = bezFunction();\r\n\r\n  var PropertyFactory = function () {\r\n    var initFrame = initialDefaultFrame;\r\n    var mathAbs = Math.abs;\r\n\r\n    function interpolateValue(frameNum, caching) {\r\n      var offsetTime = this.offsetTime;\r\n      var newValue;\r\n\r\n      if (this.propType === 'multidimensional') {\r\n        newValue = createTypedArray('float32', this.pv.length);\r\n      }\r\n\r\n      var iterationIndex = caching.lastIndex;\r\n      var i = iterationIndex;\r\n      var len = this.keyframes.length - 1;\r\n      var flag = true;\r\n      var keyData;\r\n      var nextKeyData;\r\n      var keyframeMetadata;\r\n\r\n      while (flag) {\r\n        keyData = this.keyframes[i];\r\n        nextKeyData = this.keyframes[i + 1];\r\n\r\n        if (i === len - 1 && frameNum >= nextKeyData.t - offsetTime) {\r\n          if (keyData.h) {\r\n            keyData = nextKeyData;\r\n          }\r\n\r\n          iterationIndex = 0;\r\n          break;\r\n        }\r\n\r\n        if (nextKeyData.t - offsetTime > frameNum) {\r\n          iterationIndex = i;\r\n          break;\r\n        }\r\n\r\n        if (i < len - 1) {\r\n          i += 1;\r\n        } else {\r\n          iterationIndex = 0;\r\n          flag = false;\r\n        }\r\n      }\r\n\r\n      keyframeMetadata = this.keyframesMetadata[i] || {};\r\n      var k;\r\n      var kLen;\r\n      var perc;\r\n      var jLen;\r\n      var j;\r\n      var fnc;\r\n      var nextKeyTime = nextKeyData.t - offsetTime;\r\n      var keyTime = keyData.t - offsetTime;\r\n      var endValue;\r\n\r\n      if (keyData.to) {\r\n        if (!keyframeMetadata.bezierData) {\r\n          keyframeMetadata.bezierData = bez.buildBezierData(keyData.s, nextKeyData.s || keyData.e, keyData.to, keyData.ti);\r\n        }\r\n\r\n        var bezierData = keyframeMetadata.bezierData;\r\n\r\n        if (frameNum >= nextKeyTime || frameNum < keyTime) {\r\n          var ind = frameNum >= nextKeyTime ? bezierData.points.length - 1 : 0;\r\n          kLen = bezierData.points[ind].point.length;\r\n\r\n          for (k = 0; k < kLen; k += 1) {\r\n            newValue[k] = bezierData.points[ind].point[k];\r\n          } // caching._lastKeyframeIndex = -1;\r\n\r\n        } else {\r\n          if (keyframeMetadata.__fnct) {\r\n            fnc = keyframeMetadata.__fnct;\r\n          } else {\r\n            fnc = BezierFactory.getBezierEasing(keyData.o.x, keyData.o.y, keyData.i.x, keyData.i.y, keyData.n).get;\r\n            keyframeMetadata.__fnct = fnc;\r\n          }\r\n\r\n          perc = fnc((frameNum - keyTime) / (nextKeyTime - keyTime));\r\n          var distanceInLine = bezierData.segmentLength * perc;\r\n          var segmentPerc;\r\n          var addedLength = caching.lastFrame < frameNum && caching._lastKeyframeIndex === i ? caching._lastAddedLength : 0;\r\n          j = caching.lastFrame < frameNum && caching._lastKeyframeIndex === i ? caching._lastPoint : 0;\r\n          flag = true;\r\n          jLen = bezierData.points.length;\r\n\r\n          while (flag) {\r\n            addedLength += bezierData.points[j].partialLength;\r\n\r\n            if (distanceInLine === 0 || perc === 0 || j === bezierData.points.length - 1) {\r\n              kLen = bezierData.points[j].point.length;\r\n\r\n              for (k = 0; k < kLen; k += 1) {\r\n                newValue[k] = bezierData.points[j].point[k];\r\n              }\r\n\r\n              break;\r\n            } else if (distanceInLine >= addedLength && distanceInLine < addedLength + bezierData.points[j + 1].partialLength) {\r\n              segmentPerc = (distanceInLine - addedLength) / bezierData.points[j + 1].partialLength;\r\n              kLen = bezierData.points[j].point.length;\r\n\r\n              for (k = 0; k < kLen; k += 1) {\r\n                newValue[k] = bezierData.points[j].point[k] + (bezierData.points[j + 1].point[k] - bezierData.points[j].point[k]) * segmentPerc;\r\n              }\r\n\r\n              break;\r\n            }\r\n\r\n            if (j < jLen - 1) {\r\n              j += 1;\r\n            } else {\r\n              flag = false;\r\n            }\r\n          }\r\n\r\n          caching._lastPoint = j;\r\n          caching._lastAddedLength = addedLength - bezierData.points[j].partialLength;\r\n          caching._lastKeyframeIndex = i;\r\n        }\r\n      } else {\r\n        var outX;\r\n        var outY;\r\n        var inX;\r\n        var inY;\r\n        var keyValue;\r\n        len = keyData.s.length;\r\n        endValue = nextKeyData.s || keyData.e;\r\n\r\n        if (this.sh && keyData.h !== 1) {\r\n          if (frameNum >= nextKeyTime) {\r\n            newValue[0] = endValue[0];\r\n            newValue[1] = endValue[1];\r\n            newValue[2] = endValue[2];\r\n          } else if (frameNum <= keyTime) {\r\n            newValue[0] = keyData.s[0];\r\n            newValue[1] = keyData.s[1];\r\n            newValue[2] = keyData.s[2];\r\n          } else {\r\n            var quatStart = createQuaternion(keyData.s);\r\n            var quatEnd = createQuaternion(endValue);\r\n            var time = (frameNum - keyTime) / (nextKeyTime - keyTime);\r\n            quaternionToEuler(newValue, slerp(quatStart, quatEnd, time));\r\n          }\r\n        } else {\r\n          for (i = 0; i < len; i += 1) {\r\n            if (keyData.h !== 1) {\r\n              if (frameNum >= nextKeyTime) {\r\n                perc = 1;\r\n              } else if (frameNum < keyTime) {\r\n                perc = 0;\r\n              } else {\r\n                if (keyData.o.x.constructor === Array) {\r\n                  if (!keyframeMetadata.__fnct) {\r\n                    keyframeMetadata.__fnct = [];\r\n                  }\r\n\r\n                  if (!keyframeMetadata.__fnct[i]) {\r\n                    outX = keyData.o.x[i] === undefined ? keyData.o.x[0] : keyData.o.x[i];\r\n                    outY = keyData.o.y[i] === undefined ? keyData.o.y[0] : keyData.o.y[i];\r\n                    inX = keyData.i.x[i] === undefined ? keyData.i.x[0] : keyData.i.x[i];\r\n                    inY = keyData.i.y[i] === undefined ? keyData.i.y[0] : keyData.i.y[i];\r\n                    fnc = BezierFactory.getBezierEasing(outX, outY, inX, inY).get;\r\n                    keyframeMetadata.__fnct[i] = fnc;\r\n                  } else {\r\n                    fnc = keyframeMetadata.__fnct[i];\r\n                  }\r\n                } else if (!keyframeMetadata.__fnct) {\r\n                  outX = keyData.o.x;\r\n                  outY = keyData.o.y;\r\n                  inX = keyData.i.x;\r\n                  inY = keyData.i.y;\r\n                  fnc = BezierFactory.getBezierEasing(outX, outY, inX, inY).get;\r\n                  keyData.keyframeMetadata = fnc;\r\n                } else {\r\n                  fnc = keyframeMetadata.__fnct;\r\n                }\r\n\r\n                perc = fnc((frameNum - keyTime) / (nextKeyTime - keyTime));\r\n              }\r\n            }\r\n\r\n            endValue = nextKeyData.s || keyData.e;\r\n            keyValue = keyData.h === 1 ? keyData.s[i] : keyData.s[i] + (endValue[i] - keyData.s[i]) * perc;\r\n\r\n            if (this.propType === 'multidimensional') {\r\n              newValue[i] = keyValue;\r\n            } else {\r\n              newValue = keyValue;\r\n            }\r\n          }\r\n        }\r\n      }\r\n\r\n      caching.lastIndex = iterationIndex;\r\n      return newValue;\r\n    } // based on @Toji's https://github.com/toji/gl-matrix/\r\n\r\n\r\n    function slerp(a, b, t) {\r\n      var out = [];\r\n      var ax = a[0];\r\n      var ay = a[1];\r\n      var az = a[2];\r\n      var aw = a[3];\r\n      var bx = b[0];\r\n      var by = b[1];\r\n      var bz = b[2];\r\n      var bw = b[3];\r\n      var omega;\r\n      var cosom;\r\n      var sinom;\r\n      var scale0;\r\n      var scale1;\r\n      cosom = ax * bx + ay * by + az * bz + aw * bw;\r\n\r\n      if (cosom < 0.0) {\r\n        cosom = -cosom;\r\n        bx = -bx;\r\n        by = -by;\r\n        bz = -bz;\r\n        bw = -bw;\r\n      }\r\n\r\n      if (1.0 - cosom > 0.000001) {\r\n        omega = Math.acos(cosom);\r\n        sinom = Math.sin(omega);\r\n        scale0 = Math.sin((1.0 - t) * omega) / sinom;\r\n        scale1 = Math.sin(t * omega) / sinom;\r\n      } else {\r\n        scale0 = 1.0 - t;\r\n        scale1 = t;\r\n      }\r\n\r\n      out[0] = scale0 * ax + scale1 * bx;\r\n      out[1] = scale0 * ay + scale1 * by;\r\n      out[2] = scale0 * az + scale1 * bz;\r\n      out[3] = scale0 * aw + scale1 * bw;\r\n      return out;\r\n    }\r\n\r\n    function quaternionToEuler(out, quat) {\r\n      var qx = quat[0];\r\n      var qy = quat[1];\r\n      var qz = quat[2];\r\n      var qw = quat[3];\r\n      var heading = Math.atan2(2 * qy * qw - 2 * qx * qz, 1 - 2 * qy * qy - 2 * qz * qz);\r\n      var attitude = Math.asin(2 * qx * qy + 2 * qz * qw);\r\n      var bank = Math.atan2(2 * qx * qw - 2 * qy * qz, 1 - 2 * qx * qx - 2 * qz * qz);\r\n      out[0] = heading / degToRads;\r\n      out[1] = attitude / degToRads;\r\n      out[2] = bank / degToRads;\r\n    }\r\n\r\n    function createQuaternion(values) {\r\n      var heading = values[0] * degToRads;\r\n      var attitude = values[1] * degToRads;\r\n      var bank = values[2] * degToRads;\r\n      var c1 = Math.cos(heading / 2);\r\n      var c2 = Math.cos(attitude / 2);\r\n      var c3 = Math.cos(bank / 2);\r\n      var s1 = Math.sin(heading / 2);\r\n      var s2 = Math.sin(attitude / 2);\r\n      var s3 = Math.sin(bank / 2);\r\n      var w = c1 * c2 * c3 - s1 * s2 * s3;\r\n      var x = s1 * s2 * c3 + c1 * c2 * s3;\r\n      var y = s1 * c2 * c3 + c1 * s2 * s3;\r\n      var z = c1 * s2 * c3 - s1 * c2 * s3;\r\n      return [x, y, z, w];\r\n    }\r\n\r\n    function getValueAtCurrentTime() {\r\n      var frameNum = this.comp.renderedFrame - this.offsetTime;\r\n      var initTime = this.keyframes[0].t - this.offsetTime;\r\n      var endTime = this.keyframes[this.keyframes.length - 1].t - this.offsetTime;\r\n\r\n      if (!(frameNum === this._caching.lastFrame || this._caching.lastFrame !== initFrame && (this._caching.lastFrame >= endTime && frameNum >= endTime || this._caching.lastFrame < initTime && frameNum < initTime))) {\r\n        if (this._caching.lastFrame >= frameNum) {\r\n          this._caching._lastKeyframeIndex = -1;\r\n          this._caching.lastIndex = 0;\r\n        }\r\n\r\n        var renderResult = this.interpolateValue(frameNum, this._caching);\r\n        this.pv = renderResult;\r\n      }\r\n\r\n      this._caching.lastFrame = frameNum;\r\n      return this.pv;\r\n    }\r\n\r\n    function setVValue(val) {\r\n      var multipliedValue;\r\n\r\n      if (this.propType === 'unidimensional') {\r\n        multipliedValue = val * this.mult;\r\n\r\n        if (mathAbs(this.v - multipliedValue) > 0.00001) {\r\n          this.v = multipliedValue;\r\n          this._mdf = true;\r\n        }\r\n      } else {\r\n        var i = 0;\r\n        var len = this.v.length;\r\n\r\n        while (i < len) {\r\n          multipliedValue = val[i] * this.mult;\r\n\r\n          if (mathAbs(this.v[i] - multipliedValue) > 0.00001) {\r\n            this.v[i] = multipliedValue;\r\n            this._mdf = true;\r\n          }\r\n\r\n          i += 1;\r\n        }\r\n      }\r\n    }\r\n\r\n    function processEffectsSequence() {\r\n      if (this.elem.globalData.frameId === this.frameId || !this.effectsSequence.length) {\r\n        return;\r\n      }\r\n\r\n      if (this.lock) {\r\n        this.setVValue(this.pv);\r\n        return;\r\n      }\r\n\r\n      this.lock = true;\r\n      this._mdf = this._isFirstFrame;\r\n      var i;\r\n      var len = this.effectsSequence.length;\r\n      var finalValue = this.kf ? this.pv : this.data.k;\r\n\r\n      for (i = 0; i < len; i += 1) {\r\n        finalValue = this.effectsSequence[i](finalValue);\r\n      }\r\n\r\n      this.setVValue(finalValue);\r\n      this._isFirstFrame = false;\r\n      this.lock = false;\r\n      this.frameId = this.elem.globalData.frameId;\r\n    }\r\n\r\n    function addEffect(effectFunction) {\r\n      this.effectsSequence.push(effectFunction);\r\n      this.container.addDynamicProperty(this);\r\n    }\r\n\r\n    function ValueProperty(elem, data, mult, container) {\r\n      this.propType = 'unidimensional';\r\n      this.mult = mult || 1;\r\n      this.data = data;\r\n      this.v = mult ? data.k * mult : data.k;\r\n      this.pv = data.k;\r\n      this._mdf = false;\r\n      this.elem = elem;\r\n      this.container = container;\r\n      this.comp = elem.comp;\r\n      this.k = false;\r\n      this.kf = false;\r\n      this.vel = 0;\r\n      this.effectsSequence = [];\r\n      this._isFirstFrame = true;\r\n      this.getValue = processEffectsSequence;\r\n      this.setVValue = setVValue;\r\n      this.addEffect = addEffect;\r\n    }\r\n\r\n    function MultiDimensionalProperty(elem, data, mult, container) {\r\n      this.propType = 'multidimensional';\r\n      this.mult = mult || 1;\r\n      this.data = data;\r\n      this._mdf = false;\r\n      this.elem = elem;\r\n      this.container = container;\r\n      this.comp = elem.comp;\r\n      this.k = false;\r\n      this.kf = false;\r\n      this.frameId = -1;\r\n      var i;\r\n      var len = data.k.length;\r\n      this.v = createTypedArray('float32', len);\r\n      this.pv = createTypedArray('float32', len);\r\n      this.vel = createTypedArray('float32', len);\r\n\r\n      for (i = 0; i < len; i += 1) {\r\n        this.v[i] = data.k[i] * this.mult;\r\n        this.pv[i] = data.k[i];\r\n      }\r\n\r\n      this._isFirstFrame = true;\r\n      this.effectsSequence = [];\r\n      this.getValue = processEffectsSequence;\r\n      this.setVValue = setVValue;\r\n      this.addEffect = addEffect;\r\n    }\r\n\r\n    function KeyframedValueProperty(elem, data, mult, container) {\r\n      this.propType = 'unidimensional';\r\n      this.keyframes = data.k;\r\n      this.keyframesMetadata = [];\r\n      this.offsetTime = elem.data.st;\r\n      this.frameId = -1;\r\n      this._caching = {\r\n        lastFrame: initFrame,\r\n        lastIndex: 0,\r\n        value: 0,\r\n        _lastKeyframeIndex: -1\r\n      };\r\n      this.k = true;\r\n      this.kf = true;\r\n      this.data = data;\r\n      this.mult = mult || 1;\r\n      this.elem = elem;\r\n      this.container = container;\r\n      this.comp = elem.comp;\r\n      this.v = initFrame;\r\n      this.pv = initFrame;\r\n      this._isFirstFrame = true;\r\n      this.getValue = processEffectsSequence;\r\n      this.setVValue = setVValue;\r\n      this.interpolateValue = interpolateValue;\r\n      this.effectsSequence = [getValueAtCurrentTime.bind(this)];\r\n      this.addEffect = addEffect;\r\n    }\r\n\r\n    function KeyframedMultidimensionalProperty(elem, data, mult, container) {\r\n      this.propType = 'multidimensional';\r\n      var i;\r\n      var len = data.k.length;\r\n      var s;\r\n      var e;\r\n      var to;\r\n      var ti;\r\n\r\n      for (i = 0; i < len - 1; i += 1) {\r\n        if (data.k[i].to && data.k[i].s && data.k[i + 1] && data.k[i + 1].s) {\r\n          s = data.k[i].s;\r\n          e = data.k[i + 1].s;\r\n          to = data.k[i].to;\r\n          ti = data.k[i].ti;\r\n\r\n          if (s.length === 2 && !(s[0] === e[0] && s[1] === e[1]) && bez.pointOnLine2D(s[0], s[1], e[0], e[1], s[0] + to[0], s[1] + to[1]) && bez.pointOnLine2D(s[0], s[1], e[0], e[1], e[0] + ti[0], e[1] + ti[1]) || s.length === 3 && !(s[0] === e[0] && s[1] === e[1] && s[2] === e[2]) && bez.pointOnLine3D(s[0], s[1], s[2], e[0], e[1], e[2], s[0] + to[0], s[1] + to[1], s[2] + to[2]) && bez.pointOnLine3D(s[0], s[1], s[2], e[0], e[1], e[2], e[0] + ti[0], e[1] + ti[1], e[2] + ti[2])) {\r\n            data.k[i].to = null;\r\n            data.k[i].ti = null;\r\n          }\r\n\r\n          if (s[0] === e[0] && s[1] === e[1] && to[0] === 0 && to[1] === 0 && ti[0] === 0 && ti[1] === 0) {\r\n            if (s.length === 2 || s[2] === e[2] && to[2] === 0 && ti[2] === 0) {\r\n              data.k[i].to = null;\r\n              data.k[i].ti = null;\r\n            }\r\n          }\r\n        }\r\n      }\r\n\r\n      this.effectsSequence = [getValueAtCurrentTime.bind(this)];\r\n      this.data = data;\r\n      this.keyframes = data.k;\r\n      this.keyframesMetadata = [];\r\n      this.offsetTime = elem.data.st;\r\n      this.k = true;\r\n      this.kf = true;\r\n      this._isFirstFrame = true;\r\n      this.mult = mult || 1;\r\n      this.elem = elem;\r\n      this.container = container;\r\n      this.comp = elem.comp;\r\n      this.getValue = processEffectsSequence;\r\n      this.setVValue = setVValue;\r\n      this.interpolateValue = interpolateValue;\r\n      this.frameId = -1;\r\n      var arrLen = data.k[0].s.length;\r\n      this.v = createTypedArray('float32', arrLen);\r\n      this.pv = createTypedArray('float32', arrLen);\r\n\r\n      for (i = 0; i < arrLen; i += 1) {\r\n        this.v[i] = initFrame;\r\n        this.pv[i] = initFrame;\r\n      }\r\n\r\n      this._caching = {\r\n        lastFrame: initFrame,\r\n        lastIndex: 0,\r\n        value: createTypedArray('float32', arrLen)\r\n      };\r\n      this.addEffect = addEffect;\r\n    }\r\n\r\n    function getProp(elem, data, type, mult, container) {\r\n      var p;\r\n\r\n      if (!data.k.length) {\r\n        p = new ValueProperty(elem, data, mult, container);\r\n      } else if (typeof data.k[0] === 'number') {\r\n        p = new MultiDimensionalProperty(elem, data, mult, container);\r\n      } else {\r\n        switch (type) {\r\n          case 0:\r\n            p = new KeyframedValueProperty(elem, data, mult, container);\r\n            break;\r\n\r\n          case 1:\r\n            p = new KeyframedMultidimensionalProperty(elem, data, mult, container);\r\n            break;\r\n\r\n          default:\r\n            break;\r\n        }\r\n      }\r\n\r\n      if (p.effectsSequence.length) {\r\n        container.addDynamicProperty(p);\r\n      }\r\n\r\n      return p;\r\n    }\r\n\r\n    var ob = {\r\n      getProp: getProp\r\n    };\r\n    return ob;\r\n  }();\r\n\r\n  function DynamicPropertyContainer() {}\r\n\r\n  DynamicPropertyContainer.prototype = {\r\n    addDynamicProperty: function addDynamicProperty(prop) {\r\n      if (this.dynamicProperties.indexOf(prop) === -1) {\r\n        this.dynamicProperties.push(prop);\r\n        this.container.addDynamicProperty(this);\r\n        this._isAnimated = true;\r\n      }\r\n    },\r\n    iterateDynamicProperties: function iterateDynamicProperties() {\r\n      this._mdf = false;\r\n      var i;\r\n      var len = this.dynamicProperties.length;\r\n\r\n      for (i = 0; i < len; i += 1) {\r\n        this.dynamicProperties[i].getValue();\r\n\r\n        if (this.dynamicProperties[i]._mdf) {\r\n          this._mdf = true;\r\n        }\r\n      }\r\n    },\r\n    initDynamicPropertyContainer: function initDynamicPropertyContainer(container) {\r\n      this.container = container;\r\n      this.dynamicProperties = [];\r\n      this._mdf = false;\r\n      this._isAnimated = false;\r\n    }\r\n  };\r\n\r\n  var pointPool = function () {\r\n    function create() {\r\n      return createTypedArray('float32', 2);\r\n    }\r\n\r\n    return poolFactory(8, create);\r\n  }();\r\n\r\n  function ShapePath() {\r\n    this.c = false;\r\n    this._length = 0;\r\n    this._maxLength = 8;\r\n    this.v = createSizedArray(this._maxLength);\r\n    this.o = createSizedArray(this._maxLength);\r\n    this.i = createSizedArray(this._maxLength);\r\n  }\r\n\r\n  ShapePath.prototype.setPathData = function (closed, len) {\r\n    this.c = closed;\r\n    this.setLength(len);\r\n    var i = 0;\r\n\r\n    while (i < len) {\r\n      this.v[i] = pointPool.newElement();\r\n      this.o[i] = pointPool.newElement();\r\n      this.i[i] = pointPool.newElement();\r\n      i += 1;\r\n    }\r\n  };\r\n\r\n  ShapePath.prototype.setLength = function (len) {\r\n    while (this._maxLength < len) {\r\n      this.doubleArrayLength();\r\n    }\r\n\r\n    this._length = len;\r\n  };\r\n\r\n  ShapePath.prototype.doubleArrayLength = function () {\r\n    this.v = this.v.concat(createSizedArray(this._maxLength));\r\n    this.i = this.i.concat(createSizedArray(this._maxLength));\r\n    this.o = this.o.concat(createSizedArray(this._maxLength));\r\n    this._maxLength *= 2;\r\n  };\r\n\r\n  ShapePath.prototype.setXYAt = function (x, y, type, pos, replace) {\r\n    var arr;\r\n    this._length = Math.max(this._length, pos + 1);\r\n\r\n    if (this._length >= this._maxLength) {\r\n      this.doubleArrayLength();\r\n    }\r\n\r\n    switch (type) {\r\n      case 'v':\r\n        arr = this.v;\r\n        break;\r\n\r\n      case 'i':\r\n        arr = this.i;\r\n        break;\r\n\r\n      case 'o':\r\n        arr = this.o;\r\n        break;\r\n\r\n      default:\r\n        arr = [];\r\n        break;\r\n    }\r\n\r\n    if (!arr[pos] || arr[pos] && !replace) {\r\n      arr[pos] = pointPool.newElement();\r\n    }\r\n\r\n    arr[pos][0] = x;\r\n    arr[pos][1] = y;\r\n  };\r\n\r\n  ShapePath.prototype.setTripleAt = function (vX, vY, oX, oY, iX, iY, pos, replace) {\r\n    this.setXYAt(vX, vY, 'v', pos, replace);\r\n    this.setXYAt(oX, oY, 'o', pos, replace);\r\n    this.setXYAt(iX, iY, 'i', pos, replace);\r\n  };\r\n\r\n  ShapePath.prototype.reverse = function () {\r\n    var newPath = new ShapePath();\r\n    newPath.setPathData(this.c, this._length);\r\n    var vertices = this.v;\r\n    var outPoints = this.o;\r\n    var inPoints = this.i;\r\n    var init = 0;\r\n\r\n    if (this.c) {\r\n      newPath.setTripleAt(vertices[0][0], vertices[0][1], inPoints[0][0], inPoints[0][1], outPoints[0][0], outPoints[0][1], 0, false);\r\n      init = 1;\r\n    }\r\n\r\n    var cnt = this._length - 1;\r\n    var len = this._length;\r\n    var i;\r\n\r\n    for (i = init; i < len; i += 1) {\r\n      newPath.setTripleAt(vertices[cnt][0], vertices[cnt][1], inPoints[cnt][0], inPoints[cnt][1], outPoints[cnt][0], outPoints[cnt][1], i, false);\r\n      cnt -= 1;\r\n    }\r\n\r\n    return newPath;\r\n  };\r\n\r\n  ShapePath.prototype.length = function () {\r\n    return this._length;\r\n  };\r\n\r\n  var shapePool = function () {\r\n    function create() {\r\n      return new ShapePath();\r\n    }\r\n\r\n    function release(shapePath) {\r\n      var len = shapePath._length;\r\n      var i;\r\n\r\n      for (i = 0; i < len; i += 1) {\r\n        pointPool.release(shapePath.v[i]);\r\n        pointPool.release(shapePath.i[i]);\r\n        pointPool.release(shapePath.o[i]);\r\n        shapePath.v[i] = null;\r\n        shapePath.i[i] = null;\r\n        shapePath.o[i] = null;\r\n      }\r\n\r\n      shapePath._length = 0;\r\n      shapePath.c = false;\r\n    }\r\n\r\n    function clone(shape) {\r\n      var cloned = factory.newElement();\r\n      var i;\r\n      var len = shape._length === undefined ? shape.v.length : shape._length;\r\n      cloned.setLength(len);\r\n      cloned.c = shape.c;\r\n\r\n      for (i = 0; i < len; i += 1) {\r\n        cloned.setTripleAt(shape.v[i][0], shape.v[i][1], shape.o[i][0], shape.o[i][1], shape.i[i][0], shape.i[i][1], i);\r\n      }\r\n\r\n      return cloned;\r\n    }\r\n\r\n    var factory = poolFactory(4, create, release);\r\n    factory.clone = clone;\r\n    return factory;\r\n  }();\r\n\r\n  function ShapeCollection() {\r\n    this._length = 0;\r\n    this._maxLength = 4;\r\n    this.shapes = createSizedArray(this._maxLength);\r\n  }\r\n\r\n  ShapeCollection.prototype.addShape = function (shapeData) {\r\n    if (this._length === this._maxLength) {\r\n      this.shapes = this.shapes.concat(createSizedArray(this._maxLength));\r\n      this._maxLength *= 2;\r\n    }\r\n\r\n    this.shapes[this._length] = shapeData;\r\n    this._length += 1;\r\n  };\r\n\r\n  ShapeCollection.prototype.releaseShapes = function () {\r\n    var i;\r\n\r\n    for (i = 0; i < this._length; i += 1) {\r\n      shapePool.release(this.shapes[i]);\r\n    }\r\n\r\n    this._length = 0;\r\n  };\r\n\r\n  var shapeCollectionPool = function () {\r\n    var ob = {\r\n      newShapeCollection: newShapeCollection,\r\n      release: release\r\n    };\r\n    var _length = 0;\r\n    var _maxLength = 4;\r\n    var pool = createSizedArray(_maxLength);\r\n\r\n    function newShapeCollection() {\r\n      var shapeCollection;\r\n\r\n      if (_length) {\r\n        _length -= 1;\r\n        shapeCollection = pool[_length];\r\n      } else {\r\n        shapeCollection = new ShapeCollection();\r\n      }\r\n\r\n      return shapeCollection;\r\n    }\r\n\r\n    function release(shapeCollection) {\r\n      var i;\r\n      var len = shapeCollection._length;\r\n\r\n      for (i = 0; i < len; i += 1) {\r\n        shapePool.release(shapeCollection.shapes[i]);\r\n      }\r\n\r\n      shapeCollection._length = 0;\r\n\r\n      if (_length === _maxLength) {\r\n        pool = pooling[\"double\"](pool);\r\n        _maxLength *= 2;\r\n      }\r\n\r\n      pool[_length] = shapeCollection;\r\n      _length += 1;\r\n    }\r\n\r\n    return ob;\r\n  }();\r\n\r\n  var ShapePropertyFactory = function () {\r\n    var initFrame = -999999;\r\n\r\n    function interpolateShape(frameNum, previousValue, caching) {\r\n      var iterationIndex = caching.lastIndex;\r\n      var keyPropS;\r\n      var keyPropE;\r\n      var isHold;\r\n      var j;\r\n      var k;\r\n      var jLen;\r\n      var kLen;\r\n      var perc;\r\n      var vertexValue;\r\n      var kf = this.keyframes;\r\n\r\n      if (frameNum < kf[0].t - this.offsetTime) {\r\n        keyPropS = kf[0].s[0];\r\n        isHold = true;\r\n        iterationIndex = 0;\r\n      } else if (frameNum >= kf[kf.length - 1].t - this.offsetTime) {\r\n        keyPropS = kf[kf.length - 1].s ? kf[kf.length - 1].s[0] : kf[kf.length - 2].e[0];\r\n        /* if(kf[kf.length - 1].s){\r\n                  keyPropS = kf[kf.length - 1].s[0];\r\n              }else{\r\n                  keyPropS = kf[kf.length - 2].e[0];\r\n              } */\r\n\r\n        isHold = true;\r\n      } else {\r\n        var i = iterationIndex;\r\n        var len = kf.length - 1;\r\n        var flag = true;\r\n        var keyData;\r\n        var nextKeyData;\r\n        var keyframeMetadata;\r\n\r\n        while (flag) {\r\n          keyData = kf[i];\r\n          nextKeyData = kf[i + 1];\r\n\r\n          if (nextKeyData.t - this.offsetTime > frameNum) {\r\n            break;\r\n          }\r\n\r\n          if (i < len - 1) {\r\n            i += 1;\r\n          } else {\r\n            flag = false;\r\n          }\r\n        }\r\n\r\n        keyframeMetadata = this.keyframesMetadata[i] || {};\r\n        isHold = keyData.h === 1;\r\n        iterationIndex = i;\r\n\r\n        if (!isHold) {\r\n          if (frameNum >= nextKeyData.t - this.offsetTime) {\r\n            perc = 1;\r\n          } else if (frameNum < keyData.t - this.offsetTime) {\r\n            perc = 0;\r\n          } else {\r\n            var fnc;\r\n\r\n            if (keyframeMetadata.__fnct) {\r\n              fnc = keyframeMetadata.__fnct;\r\n            } else {\r\n              fnc = BezierFactory.getBezierEasing(keyData.o.x, keyData.o.y, keyData.i.x, keyData.i.y).get;\r\n              keyframeMetadata.__fnct = fnc;\r\n            }\r\n\r\n            perc = fnc((frameNum - (keyData.t - this.offsetTime)) / (nextKeyData.t - this.offsetTime - (keyData.t - this.offsetTime)));\r\n          }\r\n\r\n          keyPropE = nextKeyData.s ? nextKeyData.s[0] : keyData.e[0];\r\n        }\r\n\r\n        keyPropS = keyData.s[0];\r\n      }\r\n\r\n      jLen = previousValue._length;\r\n      kLen = keyPropS.i[0].length;\r\n      caching.lastIndex = iterationIndex;\r\n\r\n      for (j = 0; j < jLen; j += 1) {\r\n        for (k = 0; k < kLen; k += 1) {\r\n          vertexValue = isHold ? keyPropS.i[j][k] : keyPropS.i[j][k] + (keyPropE.i[j][k] - keyPropS.i[j][k]) * perc;\r\n          previousValue.i[j][k] = vertexValue;\r\n          vertexValue = isHold ? keyPropS.o[j][k] : keyPropS.o[j][k] + (keyPropE.o[j][k] - keyPropS.o[j][k]) * perc;\r\n          previousValue.o[j][k] = vertexValue;\r\n          vertexValue = isHold ? keyPropS.v[j][k] : keyPropS.v[j][k] + (keyPropE.v[j][k] - keyPropS.v[j][k]) * perc;\r\n          previousValue.v[j][k] = vertexValue;\r\n        }\r\n      }\r\n    }\r\n\r\n    function interpolateShapeCurrentTime() {\r\n      var frameNum = this.comp.renderedFrame - this.offsetTime;\r\n      var initTime = this.keyframes[0].t - this.offsetTime;\r\n      var endTime = this.keyframes[this.keyframes.length - 1].t - this.offsetTime;\r\n      var lastFrame = this._caching.lastFrame;\r\n\r\n      if (!(lastFrame !== initFrame && (lastFrame < initTime && frameNum < initTime || lastFrame > endTime && frameNum > endTime))) {\r\n        /// /\r\n        this._caching.lastIndex = lastFrame < frameNum ? this._caching.lastIndex : 0;\r\n        this.interpolateShape(frameNum, this.pv, this._caching); /// /\r\n      }\r\n\r\n      this._caching.lastFrame = frameNum;\r\n      return this.pv;\r\n    }\r\n\r\n    function resetShape() {\r\n      this.paths = this.localShapeCollection;\r\n    }\r\n\r\n    function shapesEqual(shape1, shape2) {\r\n      if (shape1._length !== shape2._length || shape1.c !== shape2.c) {\r\n        return false;\r\n      }\r\n\r\n      var i;\r\n      var len = shape1._length;\r\n\r\n      for (i = 0; i < len; i += 1) {\r\n        if (shape1.v[i][0] !== shape2.v[i][0] || shape1.v[i][1] !== shape2.v[i][1] || shape1.o[i][0] !== shape2.o[i][0] || shape1.o[i][1] !== shape2.o[i][1] || shape1.i[i][0] !== shape2.i[i][0] || shape1.i[i][1] !== shape2.i[i][1]) {\r\n          return false;\r\n        }\r\n      }\r\n\r\n      return true;\r\n    }\r\n\r\n    function setVValue(newPath) {\r\n      if (!shapesEqual(this.v, newPath)) {\r\n        this.v = shapePool.clone(newPath);\r\n        this.localShapeCollection.releaseShapes();\r\n        this.localShapeCollection.addShape(this.v);\r\n        this._mdf = true;\r\n        this.paths = this.localShapeCollection;\r\n      }\r\n    }\r\n\r\n    function processEffectsSequence() {\r\n      if (this.elem.globalData.frameId === this.frameId) {\r\n        return;\r\n      }\r\n\r\n      if (!this.effectsSequence.length) {\r\n        this._mdf = false;\r\n        return;\r\n      }\r\n\r\n      if (this.lock) {\r\n        this.setVValue(this.pv);\r\n        return;\r\n      }\r\n\r\n      this.lock = true;\r\n      this._mdf = false;\r\n      var finalValue;\r\n\r\n      if (this.kf) {\r\n        finalValue = this.pv;\r\n      } else if (this.data.ks) {\r\n        finalValue = this.data.ks.k;\r\n      } else {\r\n        finalValue = this.data.pt.k;\r\n      }\r\n\r\n      var i;\r\n      var len = this.effectsSequence.length;\r\n\r\n      for (i = 0; i < len; i += 1) {\r\n        finalValue = this.effectsSequence[i](finalValue);\r\n      }\r\n\r\n      this.setVValue(finalValue);\r\n      this.lock = false;\r\n      this.frameId = this.elem.globalData.frameId;\r\n    }\r\n\r\n    function ShapeProperty(elem, data, type) {\r\n      this.propType = 'shape';\r\n      this.comp = elem.comp;\r\n      this.container = elem;\r\n      this.elem = elem;\r\n      this.data = data;\r\n      this.k = false;\r\n      this.kf = false;\r\n      this._mdf = false;\r\n      var pathData = type === 3 ? data.pt.k : data.ks.k;\r\n      this.v = shapePool.clone(pathData);\r\n      this.pv = shapePool.clone(this.v);\r\n      this.localShapeCollection = shapeCollectionPool.newShapeCollection();\r\n      this.paths = this.localShapeCollection;\r\n      this.paths.addShape(this.v);\r\n      this.reset = resetShape;\r\n      this.effectsSequence = [];\r\n    }\r\n\r\n    function addEffect(effectFunction) {\r\n      this.effectsSequence.push(effectFunction);\r\n      this.container.addDynamicProperty(this);\r\n    }\r\n\r\n    ShapeProperty.prototype.interpolateShape = interpolateShape;\r\n    ShapeProperty.prototype.getValue = processEffectsSequence;\r\n    ShapeProperty.prototype.setVValue = setVValue;\r\n    ShapeProperty.prototype.addEffect = addEffect;\r\n\r\n    function KeyframedShapeProperty(elem, data, type) {\r\n      this.propType = 'shape';\r\n      this.comp = elem.comp;\r\n      this.elem = elem;\r\n      this.container = elem;\r\n      this.offsetTime = elem.data.st;\r\n      this.keyframes = type === 3 ? data.pt.k : data.ks.k;\r\n      this.keyframesMetadata = [];\r\n      this.k = true;\r\n      this.kf = true;\r\n      var len = this.keyframes[0].s[0].i.length;\r\n      this.v = shapePool.newElement();\r\n      this.v.setPathData(this.keyframes[0].s[0].c, len);\r\n      this.pv = shapePool.clone(this.v);\r\n      this.localShapeCollection = shapeCollectionPool.newShapeCollection();\r\n      this.paths = this.localShapeCollection;\r\n      this.paths.addShape(this.v);\r\n      this.lastFrame = initFrame;\r\n      this.reset = resetShape;\r\n      this._caching = {\r\n        lastFrame: initFrame,\r\n        lastIndex: 0\r\n      };\r\n      this.effectsSequence = [interpolateShapeCurrentTime.bind(this)];\r\n    }\r\n\r\n    KeyframedShapeProperty.prototype.getValue = processEffectsSequence;\r\n    KeyframedShapeProperty.prototype.interpolateShape = interpolateShape;\r\n    KeyframedShapeProperty.prototype.setVValue = setVValue;\r\n    KeyframedShapeProperty.prototype.addEffect = addEffect;\r\n\r\n    var EllShapeProperty = function () {\r\n      var cPoint = roundCorner;\r\n\r\n      function EllShapePropertyFactory(elem, data) {\r\n        this.v = shapePool.newElement();\r\n        this.v.setPathData(true, 4);\r\n        this.localShapeCollection = shapeCollectionPool.newShapeCollection();\r\n        this.paths = this.localShapeCollection;\r\n        this.localShapeCollection.addShape(this.v);\r\n        this.d = data.d;\r\n        this.elem = elem;\r\n        this.comp = elem.comp;\r\n        this.frameId = -1;\r\n        this.initDynamicPropertyContainer(elem);\r\n        this.p = PropertyFactory.getProp(elem, data.p, 1, 0, this);\r\n        this.s = PropertyFactory.getProp(elem, data.s, 1, 0, this);\r\n\r\n        if (this.dynamicProperties.length) {\r\n          this.k = true;\r\n        } else {\r\n          this.k = false;\r\n          this.convertEllToPath();\r\n        }\r\n      }\r\n\r\n      EllShapePropertyFactory.prototype = {\r\n        reset: resetShape,\r\n        getValue: function getValue() {\r\n          if (this.elem.globalData.frameId === this.frameId) {\r\n            return;\r\n          }\r\n\r\n          this.frameId = this.elem.globalData.frameId;\r\n          this.iterateDynamicProperties();\r\n\r\n          if (this._mdf) {\r\n            this.convertEllToPath();\r\n          }\r\n        },\r\n        convertEllToPath: function convertEllToPath() {\r\n          var p0 = this.p.v[0];\r\n          var p1 = this.p.v[1];\r\n          var s0 = this.s.v[0] / 2;\r\n          var s1 = this.s.v[1] / 2;\r\n\r\n          var _cw = this.d !== 3;\r\n\r\n          var _v = this.v;\r\n          _v.v[0][0] = p0;\r\n          _v.v[0][1] = p1 - s1;\r\n          _v.v[1][0] = _cw ? p0 + s0 : p0 - s0;\r\n          _v.v[1][1] = p1;\r\n          _v.v[2][0] = p0;\r\n          _v.v[2][1] = p1 + s1;\r\n          _v.v[3][0] = _cw ? p0 - s0 : p0 + s0;\r\n          _v.v[3][1] = p1;\r\n          _v.i[0][0] = _cw ? p0 - s0 * cPoint : p0 + s0 * cPoint;\r\n          _v.i[0][1] = p1 - s1;\r\n          _v.i[1][0] = _cw ? p0 + s0 : p0 - s0;\r\n          _v.i[1][1] = p1 - s1 * cPoint;\r\n          _v.i[2][0] = _cw ? p0 + s0 * cPoint : p0 - s0 * cPoint;\r\n          _v.i[2][1] = p1 + s1;\r\n          _v.i[3][0] = _cw ? p0 - s0 : p0 + s0;\r\n          _v.i[3][1] = p1 + s1 * cPoint;\r\n          _v.o[0][0] = _cw ? p0 + s0 * cPoint : p0 - s0 * cPoint;\r\n          _v.o[0][1] = p1 - s1;\r\n          _v.o[1][0] = _cw ? p0 + s0 : p0 - s0;\r\n          _v.o[1][1] = p1 + s1 * cPoint;\r\n          _v.o[2][0] = _cw ? p0 - s0 * cPoint : p0 + s0 * cPoint;\r\n          _v.o[2][1] = p1 + s1;\r\n          _v.o[3][0] = _cw ? p0 - s0 : p0 + s0;\r\n          _v.o[3][1] = p1 - s1 * cPoint;\r\n        }\r\n      };\r\n      extendPrototype([DynamicPropertyContainer], EllShapePropertyFactory);\r\n      return EllShapePropertyFactory;\r\n    }();\r\n\r\n    var StarShapeProperty = function () {\r\n      function StarShapePropertyFactory(elem, data) {\r\n        this.v = shapePool.newElement();\r\n        this.v.setPathData(true, 0);\r\n        this.elem = elem;\r\n        this.comp = elem.comp;\r\n        this.data = data;\r\n        this.frameId = -1;\r\n        this.d = data.d;\r\n        this.initDynamicPropertyContainer(elem);\r\n\r\n        if (data.sy === 1) {\r\n          this.ir = PropertyFactory.getProp(elem, data.ir, 0, 0, this);\r\n          this.is = PropertyFactory.getProp(elem, data.is, 0, 0.01, this);\r\n          this.convertToPath = this.convertStarToPath;\r\n        } else {\r\n          this.convertToPath = this.convertPolygonToPath;\r\n        }\r\n\r\n        this.pt = PropertyFactory.getProp(elem, data.pt, 0, 0, this);\r\n        this.p = PropertyFactory.getProp(elem, data.p, 1, 0, this);\r\n        this.r = PropertyFactory.getProp(elem, data.r, 0, degToRads, this);\r\n        this.or = PropertyFactory.getProp(elem, data.or, 0, 0, this);\r\n        this.os = PropertyFactory.getProp(elem, data.os, 0, 0.01, this);\r\n        this.localShapeCollection = shapeCollectionPool.newShapeCollection();\r\n        this.localShapeCollection.addShape(this.v);\r\n        this.paths = this.localShapeCollection;\r\n\r\n        if (this.dynamicProperties.length) {\r\n          this.k = true;\r\n        } else {\r\n          this.k = false;\r\n          this.convertToPath();\r\n        }\r\n      }\r\n\r\n      StarShapePropertyFactory.prototype = {\r\n        reset: resetShape,\r\n        getValue: function getValue() {\r\n          if (this.elem.globalData.frameId === this.frameId) {\r\n            return;\r\n          }\r\n\r\n          this.frameId = this.elem.globalData.frameId;\r\n          this.iterateDynamicProperties();\r\n\r\n          if (this._mdf) {\r\n            this.convertToPath();\r\n          }\r\n        },\r\n        convertStarToPath: function convertStarToPath() {\r\n          var numPts = Math.floor(this.pt.v) * 2;\r\n          var angle = Math.PI * 2 / numPts;\r\n          /* this.v.v.length = numPts;\r\n                  this.v.i.length = numPts;\r\n                  this.v.o.length = numPts; */\r\n\r\n          var longFlag = true;\r\n          var longRad = this.or.v;\r\n          var shortRad = this.ir.v;\r\n          var longRound = this.os.v;\r\n          var shortRound = this.is.v;\r\n          var longPerimSegment = 2 * Math.PI * longRad / (numPts * 2);\r\n          var shortPerimSegment = 2 * Math.PI * shortRad / (numPts * 2);\r\n          var i;\r\n          var rad;\r\n          var roundness;\r\n          var perimSegment;\r\n          var currentAng = -Math.PI / 2;\r\n          currentAng += this.r.v;\r\n          var dir = this.data.d === 3 ? -1 : 1;\r\n          this.v._length = 0;\r\n\r\n          for (i = 0; i < numPts; i += 1) {\r\n            rad = longFlag ? longRad : shortRad;\r\n            roundness = longFlag ? longRound : shortRound;\r\n            perimSegment = longFlag ? longPerimSegment : shortPerimSegment;\r\n            var x = rad * Math.cos(currentAng);\r\n            var y = rad * Math.sin(currentAng);\r\n            var ox = x === 0 && y === 0 ? 0 : y / Math.sqrt(x * x + y * y);\r\n            var oy = x === 0 && y === 0 ? 0 : -x / Math.sqrt(x * x + y * y);\r\n            x += +this.p.v[0];\r\n            y += +this.p.v[1];\r\n            this.v.setTripleAt(x, y, x - ox * perimSegment * roundness * dir, y - oy * perimSegment * roundness * dir, x + ox * perimSegment * roundness * dir, y + oy * perimSegment * roundness * dir, i, true);\r\n            /* this.v.v[i] = [x,y];\r\n                      this.v.i[i] = [x+ox*perimSegment*roundness*dir,y+oy*perimSegment*roundness*dir];\r\n                      this.v.o[i] = [x-ox*perimSegment*roundness*dir,y-oy*perimSegment*roundness*dir];\r\n                      this.v._length = numPts; */\r\n\r\n            longFlag = !longFlag;\r\n            currentAng += angle * dir;\r\n          }\r\n        },\r\n        convertPolygonToPath: function convertPolygonToPath() {\r\n          var numPts = Math.floor(this.pt.v);\r\n          var angle = Math.PI * 2 / numPts;\r\n          var rad = this.or.v;\r\n          var roundness = this.os.v;\r\n          var perimSegment = 2 * Math.PI * rad / (numPts * 4);\r\n          var i;\r\n          var currentAng = -Math.PI * 0.5;\r\n          var dir = this.data.d === 3 ? -1 : 1;\r\n          currentAng += this.r.v;\r\n          this.v._length = 0;\r\n\r\n          for (i = 0; i < numPts; i += 1) {\r\n            var x = rad * Math.cos(currentAng);\r\n            var y = rad * Math.sin(currentAng);\r\n            var ox = x === 0 && y === 0 ? 0 : y / Math.sqrt(x * x + y * y);\r\n            var oy = x === 0 && y === 0 ? 0 : -x / Math.sqrt(x * x + y * y);\r\n            x += +this.p.v[0];\r\n            y += +this.p.v[1];\r\n            this.v.setTripleAt(x, y, x - ox * perimSegment * roundness * dir, y - oy * perimSegment * roundness * dir, x + ox * perimSegment * roundness * dir, y + oy * perimSegment * roundness * dir, i, true);\r\n            currentAng += angle * dir;\r\n          }\r\n\r\n          this.paths.length = 0;\r\n          this.paths[0] = this.v;\r\n        }\r\n      };\r\n      extendPrototype([DynamicPropertyContainer], StarShapePropertyFactory);\r\n      return StarShapePropertyFactory;\r\n    }();\r\n\r\n    var RectShapeProperty = function () {\r\n      function RectShapePropertyFactory(elem, data) {\r\n        this.v = shapePool.newElement();\r\n        this.v.c = true;\r\n        this.localShapeCollection = shapeCollectionPool.newShapeCollection();\r\n        this.localShapeCollection.addShape(this.v);\r\n        this.paths = this.localShapeCollection;\r\n        this.elem = elem;\r\n        this.comp = elem.comp;\r\n        this.frameId = -1;\r\n        this.d = data.d;\r\n        this.initDynamicPropertyContainer(elem);\r\n        this.p = PropertyFactory.getProp(elem, data.p, 1, 0, this);\r\n        this.s = PropertyFactory.getProp(elem, data.s, 1, 0, this);\r\n        this.r = PropertyFactory.getProp(elem, data.r, 0, 0, this);\r\n\r\n        if (this.dynamicProperties.length) {\r\n          this.k = true;\r\n        } else {\r\n          this.k = false;\r\n          this.convertRectToPath();\r\n        }\r\n      }\r\n\r\n      RectShapePropertyFactory.prototype = {\r\n        convertRectToPath: function convertRectToPath() {\r\n          var p0 = this.p.v[0];\r\n          var p1 = this.p.v[1];\r\n          var v0 = this.s.v[0] / 2;\r\n          var v1 = this.s.v[1] / 2;\r\n          var round = bmMin(v0, v1, this.r.v);\r\n          var cPoint = round * (1 - roundCorner);\r\n          this.v._length = 0;\r\n\r\n          if (this.d === 2 || this.d === 1) {\r\n            this.v.setTripleAt(p0 + v0, p1 - v1 + round, p0 + v0, p1 - v1 + round, p0 + v0, p1 - v1 + cPoint, 0, true);\r\n            this.v.setTripleAt(p0 + v0, p1 + v1 - round, p0 + v0, p1 + v1 - cPoint, p0 + v0, p1 + v1 - round, 1, true);\r\n\r\n            if (round !== 0) {\r\n              this.v.setTripleAt(p0 + v0 - round, p1 + v1, p0 + v0 - round, p1 + v1, p0 + v0 - cPoint, p1 + v1, 2, true);\r\n              this.v.setTripleAt(p0 - v0 + round, p1 + v1, p0 - v0 + cPoint, p1 + v1, p0 - v0 + round, p1 + v1, 3, true);\r\n              this.v.setTripleAt(p0 - v0, p1 + v1 - round, p0 - v0, p1 + v1 - round, p0 - v0, p1 + v1 - cPoint, 4, true);\r\n              this.v.setTripleAt(p0 - v0, p1 - v1 + round, p0 - v0, p1 - v1 + cPoint, p0 - v0, p1 - v1 + round, 5, true);\r\n              this.v.setTripleAt(p0 - v0 + round, p1 - v1, p0 - v0 + round, p1 - v1, p0 - v0 + cPoint, p1 - v1, 6, true);\r\n              this.v.setTripleAt(p0 + v0 - round, p1 - v1, p0 + v0 - cPoint, p1 - v1, p0 + v0 - round, p1 - v1, 7, true);\r\n            } else {\r\n              this.v.setTripleAt(p0 - v0, p1 + v1, p0 - v0 + cPoint, p1 + v1, p0 - v0, p1 + v1, 2);\r\n              this.v.setTripleAt(p0 - v0, p1 - v1, p0 - v0, p1 - v1 + cPoint, p0 - v0, p1 - v1, 3);\r\n            }\r\n          } else {\r\n            this.v.setTripleAt(p0 + v0, p1 - v1 + round, p0 + v0, p1 - v1 + cPoint, p0 + v0, p1 - v1 + round, 0, true);\r\n\r\n            if (round !== 0) {\r\n              this.v.setTripleAt(p0 + v0 - round, p1 - v1, p0 + v0 - round, p1 - v1, p0 + v0 - cPoint, p1 - v1, 1, true);\r\n              this.v.setTripleAt(p0 - v0 + round, p1 - v1, p0 - v0 + cPoint, p1 - v1, p0 - v0 + round, p1 - v1, 2, true);\r\n              this.v.setTripleAt(p0 - v0, p1 - v1 + round, p0 - v0, p1 - v1 + round, p0 - v0, p1 - v1 + cPoint, 3, true);\r\n              this.v.setTripleAt(p0 - v0, p1 + v1 - round, p0 - v0, p1 + v1 - cPoint, p0 - v0, p1 + v1 - round, 4, true);\r\n              this.v.setTripleAt(p0 - v0 + round, p1 + v1, p0 - v0 + round, p1 + v1, p0 - v0 + cPoint, p1 + v1, 5, true);\r\n              this.v.setTripleAt(p0 + v0 - round, p1 + v1, p0 + v0 - cPoint, p1 + v1, p0 + v0 - round, p1 + v1, 6, true);\r\n              this.v.setTripleAt(p0 + v0, p1 + v1 - round, p0 + v0, p1 + v1 - round, p0 + v0, p1 + v1 - cPoint, 7, true);\r\n            } else {\r\n              this.v.setTripleAt(p0 - v0, p1 - v1, p0 - v0 + cPoint, p1 - v1, p0 - v0, p1 - v1, 1, true);\r\n              this.v.setTripleAt(p0 - v0, p1 + v1, p0 - v0, p1 + v1 - cPoint, p0 - v0, p1 + v1, 2, true);\r\n              this.v.setTripleAt(p0 + v0, p1 + v1, p0 + v0 - cPoint, p1 + v1, p0 + v0, p1 + v1, 3, true);\r\n            }\r\n          }\r\n        },\r\n        getValue: function getValue() {\r\n          if (this.elem.globalData.frameId === this.frameId) {\r\n            return;\r\n          }\r\n\r\n          this.frameId = this.elem.globalData.frameId;\r\n          this.iterateDynamicProperties();\r\n\r\n          if (this._mdf) {\r\n            this.convertRectToPath();\r\n          }\r\n        },\r\n        reset: resetShape\r\n      };\r\n      extendPrototype([DynamicPropertyContainer], RectShapePropertyFactory);\r\n      return RectShapePropertyFactory;\r\n    }();\r\n\r\n    function getShapeProp(elem, data, type) {\r\n      var prop;\r\n\r\n      if (type === 3 || type === 4) {\r\n        var dataProp = type === 3 ? data.pt : data.ks;\r\n        var keys = dataProp.k;\r\n\r\n        if (keys.length) {\r\n          prop = new KeyframedShapeProperty(elem, data, type);\r\n        } else {\r\n          prop = new ShapeProperty(elem, data, type);\r\n        }\r\n      } else if (type === 5) {\r\n        prop = new RectShapeProperty(elem, data);\r\n      } else if (type === 6) {\r\n        prop = new EllShapeProperty(elem, data);\r\n      } else if (type === 7) {\r\n        prop = new StarShapeProperty(elem, data);\r\n      }\r\n\r\n      if (prop.k) {\r\n        elem.addDynamicProperty(prop);\r\n      }\r\n\r\n      return prop;\r\n    }\r\n\r\n    function getConstructorFunction() {\r\n      return ShapeProperty;\r\n    }\r\n\r\n    function getKeyframedConstructorFunction() {\r\n      return KeyframedShapeProperty;\r\n    }\r\n\r\n    var ob = {};\r\n    ob.getShapeProp = getShapeProp;\r\n    ob.getConstructorFunction = getConstructorFunction;\r\n    ob.getKeyframedConstructorFunction = getKeyframedConstructorFunction;\r\n    return ob;\r\n  }();\r\n\r\n  /*!\r\n   Transformation Matrix v2.0\r\n   (c) Epistemex 2014-2015\r\n   www.epistemex.com\r\n   By Ken Fyrstenberg\r\n   Contributions by leeoniya.\r\n   License: MIT, header required.\r\n   */\r\n\r\n  /**\r\n   * 2D transformation matrix object initialized with identity matrix.\r\n   *\r\n   * The matrix can synchronize a canvas context by supplying the context\r\n   * as an argument, or later apply current absolute transform to an\r\n   * existing context.\r\n   *\r\n   * All values are handled as floating point values.\r\n   *\r\n   * @param {CanvasRenderingContext2D} [context] - Optional context to sync with Matrix\r\n   * @prop {number} a - scale x\r\n   * @prop {number} b - shear y\r\n   * @prop {number} c - shear x\r\n   * @prop {number} d - scale y\r\n   * @prop {number} e - translate x\r\n   * @prop {number} f - translate y\r\n   * @prop {CanvasRenderingContext2D|null} [context=null] - set or get current canvas context\r\n   * @constructor\r\n   */\r\n\r\n  var Matrix = function () {\r\n    var _cos = Math.cos;\r\n    var _sin = Math.sin;\r\n    var _tan = Math.tan;\r\n    var _rnd = Math.round;\r\n\r\n    function reset() {\r\n      this.props[0] = 1;\r\n      this.props[1] = 0;\r\n      this.props[2] = 0;\r\n      this.props[3] = 0;\r\n      this.props[4] = 0;\r\n      this.props[5] = 1;\r\n      this.props[6] = 0;\r\n      this.props[7] = 0;\r\n      this.props[8] = 0;\r\n      this.props[9] = 0;\r\n      this.props[10] = 1;\r\n      this.props[11] = 0;\r\n      this.props[12] = 0;\r\n      this.props[13] = 0;\r\n      this.props[14] = 0;\r\n      this.props[15] = 1;\r\n      return this;\r\n    }\r\n\r\n    function rotate(angle) {\r\n      if (angle === 0) {\r\n        return this;\r\n      }\r\n\r\n      var mCos = _cos(angle);\r\n\r\n      var mSin = _sin(angle);\r\n\r\n      return this._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\r\n    }\r\n\r\n    function rotateX(angle) {\r\n      if (angle === 0) {\r\n        return this;\r\n      }\r\n\r\n      var mCos = _cos(angle);\r\n\r\n      var mSin = _sin(angle);\r\n\r\n      return this._t(1, 0, 0, 0, 0, mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1);\r\n    }\r\n\r\n    function rotateY(angle) {\r\n      if (angle === 0) {\r\n        return this;\r\n      }\r\n\r\n      var mCos = _cos(angle);\r\n\r\n      var mSin = _sin(angle);\r\n\r\n      return this._t(mCos, 0, mSin, 0, 0, 1, 0, 0, -mSin, 0, mCos, 0, 0, 0, 0, 1);\r\n    }\r\n\r\n    function rotateZ(angle) {\r\n      if (angle === 0) {\r\n        return this;\r\n      }\r\n\r\n      var mCos = _cos(angle);\r\n\r\n      var mSin = _sin(angle);\r\n\r\n      return this._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\r\n    }\r\n\r\n    function shear(sx, sy) {\r\n      return this._t(1, sy, sx, 1, 0, 0);\r\n    }\r\n\r\n    function skew(ax, ay) {\r\n      return this.shear(_tan(ax), _tan(ay));\r\n    }\r\n\r\n    function skewFromAxis(ax, angle) {\r\n      var mCos = _cos(angle);\r\n\r\n      var mSin = _sin(angle);\r\n\r\n      return this._t(mCos, mSin, 0, 0, -mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)._t(1, 0, 0, 0, _tan(ax), 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); // return this._t(mCos, mSin, -mSin, mCos, 0, 0)._t(1, 0, _tan(ax), 1, 0, 0)._t(mCos, -mSin, mSin, mCos, 0, 0);\r\n    }\r\n\r\n    function scale(sx, sy, sz) {\r\n      if (!sz && sz !== 0) {\r\n        sz = 1;\r\n      }\r\n\r\n      if (sx === 1 && sy === 1 && sz === 1) {\r\n        return this;\r\n      }\r\n\r\n      return this._t(sx, 0, 0, 0, 0, sy, 0, 0, 0, 0, sz, 0, 0, 0, 0, 1);\r\n    }\r\n\r\n    function setTransform(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) {\r\n      this.props[0] = a;\r\n      this.props[1] = b;\r\n      this.props[2] = c;\r\n      this.props[3] = d;\r\n      this.props[4] = e;\r\n      this.props[5] = f;\r\n      this.props[6] = g;\r\n      this.props[7] = h;\r\n      this.props[8] = i;\r\n      this.props[9] = j;\r\n      this.props[10] = k;\r\n      this.props[11] = l;\r\n      this.props[12] = m;\r\n      this.props[13] = n;\r\n      this.props[14] = o;\r\n      this.props[15] = p;\r\n      return this;\r\n    }\r\n\r\n    function translate(tx, ty, tz) {\r\n      tz = tz || 0;\r\n\r\n      if (tx !== 0 || ty !== 0 || tz !== 0) {\r\n        return this._t(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, tx, ty, tz, 1);\r\n      }\r\n\r\n      return this;\r\n    }\r\n\r\n    function transform(a2, b2, c2, d2, e2, f2, g2, h2, i2, j2, k2, l2, m2, n2, o2, p2) {\r\n      var _p = this.props;\r\n\r\n      if (a2 === 1 && b2 === 0 && c2 === 0 && d2 === 0 && e2 === 0 && f2 === 1 && g2 === 0 && h2 === 0 && i2 === 0 && j2 === 0 && k2 === 1 && l2 === 0) {\r\n        // NOTE: commenting this condition because TurboFan deoptimizes code when present\r\n        // if(m2 !== 0 || n2 !== 0 || o2 !== 0){\r\n        _p[12] = _p[12] * a2 + _p[15] * m2;\r\n        _p[13] = _p[13] * f2 + _p[15] * n2;\r\n        _p[14] = _p[14] * k2 + _p[15] * o2;\r\n        _p[15] *= p2; // }\r\n\r\n        this._identityCalculated = false;\r\n        return this;\r\n      }\r\n\r\n      var a1 = _p[0];\r\n      var b1 = _p[1];\r\n      var c1 = _p[2];\r\n      var d1 = _p[3];\r\n      var e1 = _p[4];\r\n      var f1 = _p[5];\r\n      var g1 = _p[6];\r\n      var h1 = _p[7];\r\n      var i1 = _p[8];\r\n      var j1 = _p[9];\r\n      var k1 = _p[10];\r\n      var l1 = _p[11];\r\n      var m1 = _p[12];\r\n      var n1 = _p[13];\r\n      var o1 = _p[14];\r\n      var p1 = _p[15];\r\n      /* matrix order (canvas compatible):\r\n           * ace\r\n           * bdf\r\n           * 001\r\n           */\r\n\r\n      _p[0] = a1 * a2 + b1 * e2 + c1 * i2 + d1 * m2;\r\n      _p[1] = a1 * b2 + b1 * f2 + c1 * j2 + d1 * n2;\r\n      _p[2] = a1 * c2 + b1 * g2 + c1 * k2 + d1 * o2;\r\n      _p[3] = a1 * d2 + b1 * h2 + c1 * l2 + d1 * p2;\r\n      _p[4] = e1 * a2 + f1 * e2 + g1 * i2 + h1 * m2;\r\n      _p[5] = e1 * b2 + f1 * f2 + g1 * j2 + h1 * n2;\r\n      _p[6] = e1 * c2 + f1 * g2 + g1 * k2 + h1 * o2;\r\n      _p[7] = e1 * d2 + f1 * h2 + g1 * l2 + h1 * p2;\r\n      _p[8] = i1 * a2 + j1 * e2 + k1 * i2 + l1 * m2;\r\n      _p[9] = i1 * b2 + j1 * f2 + k1 * j2 + l1 * n2;\r\n      _p[10] = i1 * c2 + j1 * g2 + k1 * k2 + l1 * o2;\r\n      _p[11] = i1 * d2 + j1 * h2 + k1 * l2 + l1 * p2;\r\n      _p[12] = m1 * a2 + n1 * e2 + o1 * i2 + p1 * m2;\r\n      _p[13] = m1 * b2 + n1 * f2 + o1 * j2 + p1 * n2;\r\n      _p[14] = m1 * c2 + n1 * g2 + o1 * k2 + p1 * o2;\r\n      _p[15] = m1 * d2 + n1 * h2 + o1 * l2 + p1 * p2;\r\n      this._identityCalculated = false;\r\n      return this;\r\n    }\r\n\r\n    function isIdentity() {\r\n      if (!this._identityCalculated) {\r\n        this._identity = !(this.props[0] !== 1 || this.props[1] !== 0 || this.props[2] !== 0 || this.props[3] !== 0 || this.props[4] !== 0 || this.props[5] !== 1 || this.props[6] !== 0 || this.props[7] !== 0 || this.props[8] !== 0 || this.props[9] !== 0 || this.props[10] !== 1 || this.props[11] !== 0 || this.props[12] !== 0 || this.props[13] !== 0 || this.props[14] !== 0 || this.props[15] !== 1);\r\n        this._identityCalculated = true;\r\n      }\r\n\r\n      return this._identity;\r\n    }\r\n\r\n    function equals(matr) {\r\n      var i = 0;\r\n\r\n      while (i < 16) {\r\n        if (matr.props[i] !== this.props[i]) {\r\n          return false;\r\n        }\r\n\r\n        i += 1;\r\n      }\r\n\r\n      return true;\r\n    }\r\n\r\n    function clone(matr) {\r\n      var i;\r\n\r\n      for (i = 0; i < 16; i += 1) {\r\n        matr.props[i] = this.props[i];\r\n      }\r\n\r\n      return matr;\r\n    }\r\n\r\n    function cloneFromProps(props) {\r\n      var i;\r\n\r\n      for (i = 0; i < 16; i += 1) {\r\n        this.props[i] = props[i];\r\n      }\r\n    }\r\n\r\n    function applyToPoint(x, y, z) {\r\n      return {\r\n        x: x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12],\r\n        y: x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13],\r\n        z: x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14]\r\n      };\r\n      /* return {\r\n           x: x * me.a + y * me.c + me.e,\r\n           y: x * me.b + y * me.d + me.f\r\n           }; */\r\n    }\r\n\r\n    function applyToX(x, y, z) {\r\n      return x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12];\r\n    }\r\n\r\n    function applyToY(x, y, z) {\r\n      return x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13];\r\n    }\r\n\r\n    function applyToZ(x, y, z) {\r\n      return x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14];\r\n    }\r\n\r\n    function getInverseMatrix() {\r\n      var determinant = this.props[0] * this.props[5] - this.props[1] * this.props[4];\r\n      var a = this.props[5] / determinant;\r\n      var b = -this.props[1] / determinant;\r\n      var c = -this.props[4] / determinant;\r\n      var d = this.props[0] / determinant;\r\n      var e = (this.props[4] * this.props[13] - this.props[5] * this.props[12]) / determinant;\r\n      var f = -(this.props[0] * this.props[13] - this.props[1] * this.props[12]) / determinant;\r\n      var inverseMatrix = new Matrix();\r\n      inverseMatrix.props[0] = a;\r\n      inverseMatrix.props[1] = b;\r\n      inverseMatrix.props[4] = c;\r\n      inverseMatrix.props[5] = d;\r\n      inverseMatrix.props[12] = e;\r\n      inverseMatrix.props[13] = f;\r\n      return inverseMatrix;\r\n    }\r\n\r\n    function inversePoint(pt) {\r\n      var inverseMatrix = this.getInverseMatrix();\r\n      return inverseMatrix.applyToPointArray(pt[0], pt[1], pt[2] || 0);\r\n    }\r\n\r\n    function inversePoints(pts) {\r\n      var i;\r\n      var len = pts.length;\r\n      var retPts = [];\r\n\r\n      for (i = 0; i < len; i += 1) {\r\n        retPts[i] = inversePoint(pts[i]);\r\n      }\r\n\r\n      return retPts;\r\n    }\r\n\r\n    function applyToTriplePoints(pt1, pt2, pt3) {\r\n      var arr = createTypedArray('float32', 6);\r\n\r\n      if (this.isIdentity()) {\r\n        arr[0] = pt1[0];\r\n        arr[1] = pt1[1];\r\n        arr[2] = pt2[0];\r\n        arr[3] = pt2[1];\r\n        arr[4] = pt3[0];\r\n        arr[5] = pt3[1];\r\n      } else {\r\n        var p0 = this.props[0];\r\n        var p1 = this.props[1];\r\n        var p4 = this.props[4];\r\n        var p5 = this.props[5];\r\n        var p12 = this.props[12];\r\n        var p13 = this.props[13];\r\n        arr[0] = pt1[0] * p0 + pt1[1] * p4 + p12;\r\n        arr[1] = pt1[0] * p1 + pt1[1] * p5 + p13;\r\n        arr[2] = pt2[0] * p0 + pt2[1] * p4 + p12;\r\n        arr[3] = pt2[0] * p1 + pt2[1] * p5 + p13;\r\n        arr[4] = pt3[0] * p0 + pt3[1] * p4 + p12;\r\n        arr[5] = pt3[0] * p1 + pt3[1] * p5 + p13;\r\n      }\r\n\r\n      return arr;\r\n    }\r\n\r\n    function applyToPointArray(x, y, z) {\r\n      var arr;\r\n\r\n      if (this.isIdentity()) {\r\n        arr = [x, y, z];\r\n      } else {\r\n        arr = [x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12], x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13], x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14]];\r\n      }\r\n\r\n      return arr;\r\n    }\r\n\r\n    function applyToPointStringified(x, y) {\r\n      if (this.isIdentity()) {\r\n        return x + ',' + y;\r\n      }\r\n\r\n      var _p = this.props;\r\n      return Math.round((x * _p[0] + y * _p[4] + _p[12]) * 100) / 100 + ',' + Math.round((x * _p[1] + y * _p[5] + _p[13]) * 100) / 100;\r\n    }\r\n\r\n    function toCSS() {\r\n      // Doesn't make much sense to add this optimization. If it is an identity matrix, it's very likely this will get called only once since it won't be keyframed.\r\n\r\n      /* if(this.isIdentity()) {\r\n              return '';\r\n          } */\r\n      var i = 0;\r\n      var props = this.props;\r\n      var cssValue = 'matrix3d(';\r\n      var v = 10000;\r\n\r\n      while (i < 16) {\r\n        cssValue += _rnd(props[i] * v) / v;\r\n        cssValue += i === 15 ? ')' : ',';\r\n        i += 1;\r\n      }\r\n\r\n      return cssValue;\r\n    }\r\n\r\n    function roundMatrixProperty(val) {\r\n      var v = 10000;\r\n\r\n      if (val < 0.000001 && val > 0 || val > -0.000001 && val < 0) {\r\n        return _rnd(val * v) / v;\r\n      }\r\n\r\n      return val;\r\n    }\r\n\r\n    function to2dCSS() {\r\n      // Doesn't make much sense to add this optimization. If it is an identity matrix, it's very likely this will get called only once since it won't be keyframed.\r\n\r\n      /* if(this.isIdentity()) {\r\n              return '';\r\n          } */\r\n      var props = this.props;\r\n\r\n      var _a = roundMatrixProperty(props[0]);\r\n\r\n      var _b = roundMatrixProperty(props[1]);\r\n\r\n      var _c = roundMatrixProperty(props[4]);\r\n\r\n      var _d = roundMatrixProperty(props[5]);\r\n\r\n      var _e = roundMatrixProperty(props[12]);\r\n\r\n      var _f = roundMatrixProperty(props[13]);\r\n\r\n      return 'matrix(' + _a + ',' + _b + ',' + _c + ',' + _d + ',' + _e + ',' + _f + ')';\r\n    }\r\n\r\n    return function () {\r\n      this.reset = reset;\r\n      this.rotate = rotate;\r\n      this.rotateX = rotateX;\r\n      this.rotateY = rotateY;\r\n      this.rotateZ = rotateZ;\r\n      this.skew = skew;\r\n      this.skewFromAxis = skewFromAxis;\r\n      this.shear = shear;\r\n      this.scale = scale;\r\n      this.setTransform = setTransform;\r\n      this.translate = translate;\r\n      this.transform = transform;\r\n      this.applyToPoint = applyToPoint;\r\n      this.applyToX = applyToX;\r\n      this.applyToY = applyToY;\r\n      this.applyToZ = applyToZ;\r\n      this.applyToPointArray = applyToPointArray;\r\n      this.applyToTriplePoints = applyToTriplePoints;\r\n      this.applyToPointStringified = applyToPointStringified;\r\n      this.toCSS = toCSS;\r\n      this.to2dCSS = to2dCSS;\r\n      this.clone = clone;\r\n      this.cloneFromProps = cloneFromProps;\r\n      this.equals = equals;\r\n      this.inversePoints = inversePoints;\r\n      this.inversePoint = inversePoint;\r\n      this.getInverseMatrix = getInverseMatrix;\r\n      this._t = this.transform;\r\n      this.isIdentity = isIdentity;\r\n      this._identity = true;\r\n      this._identityCalculated = false;\r\n      this.props = createTypedArray('float32', 16);\r\n      this.reset();\r\n    };\r\n  }();\r\n\r\n  function _typeof$3(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$3 = function _typeof(obj) { return typeof obj; }; } else { _typeof$3 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$3(obj); }\r\n  var lottie = {};\r\n  var standalone = '__[STANDALONE]__';\r\n  var animationData = '__[ANIMATIONDATA]__';\r\n  var renderer = '';\r\n\r\n  function setLocation(href) {\r\n    setLocationHref(href);\r\n  }\r\n\r\n  function searchAnimations() {\r\n    if (standalone === true) {\r\n      animationManager.searchAnimations(animationData, standalone, renderer);\r\n    } else {\r\n      animationManager.searchAnimations();\r\n    }\r\n  }\r\n\r\n  function setSubframeRendering(flag) {\r\n    setSubframeEnabled(flag);\r\n  }\r\n\r\n  function setPrefix(prefix) {\r\n    setIdPrefix(prefix);\r\n  }\r\n\r\n  function loadAnimation(params) {\r\n    if (standalone === true) {\r\n      params.animationData = JSON.parse(animationData);\r\n    }\r\n\r\n    return animationManager.loadAnimation(params);\r\n  }\r\n\r\n  function setQuality(value) {\r\n    if (typeof value === 'string') {\r\n      switch (value) {\r\n        case 'high':\r\n          setDefaultCurveSegments(200);\r\n          break;\r\n\r\n        default:\r\n        case 'medium':\r\n          setDefaultCurveSegments(50);\r\n          break;\r\n\r\n        case 'low':\r\n          setDefaultCurveSegments(10);\r\n          break;\r\n      }\r\n    } else if (!isNaN(value) && value > 1) {\r\n      setDefaultCurveSegments(value);\r\n    }\r\n\r\n    if (getDefaultCurveSegments() >= 50) {\r\n      roundValues(false);\r\n    } else {\r\n      roundValues(true);\r\n    }\r\n  }\r\n\r\n  function inBrowser() {\r\n    return typeof navigator !== 'undefined';\r\n  }\r\n\r\n  function installPlugin(type, plugin) {\r\n    if (type === 'expressions') {\r\n      setExpressionsPlugin(plugin);\r\n    }\r\n  }\r\n\r\n  function getFactory(name) {\r\n    switch (name) {\r\n      case 'propertyFactory':\r\n        return PropertyFactory;\r\n\r\n      case 'shapePropertyFactory':\r\n        return ShapePropertyFactory;\r\n\r\n      case 'matrix':\r\n        return Matrix;\r\n\r\n      default:\r\n        return null;\r\n    }\r\n  }\r\n\r\n  lottie.play = animationManager.play;\r\n  lottie.pause = animationManager.pause;\r\n  lottie.setLocationHref = setLocation;\r\n  lottie.togglePause = animationManager.togglePause;\r\n  lottie.setSpeed = animationManager.setSpeed;\r\n  lottie.setDirection = animationManager.setDirection;\r\n  lottie.stop = animationManager.stop;\r\n  lottie.searchAnimations = searchAnimations;\r\n  lottie.registerAnimation = animationManager.registerAnimation;\r\n  lottie.loadAnimation = loadAnimation;\r\n  lottie.setSubframeRendering = setSubframeRendering;\r\n  lottie.resize = animationManager.resize; // lottie.start = start;\r\n\r\n  lottie.goToAndStop = animationManager.goToAndStop;\r\n  lottie.destroy = animationManager.destroy;\r\n  lottie.setQuality = setQuality;\r\n  lottie.inBrowser = inBrowser;\r\n  lottie.installPlugin = installPlugin;\r\n  lottie.freeze = animationManager.freeze;\r\n  lottie.unfreeze = animationManager.unfreeze;\r\n  lottie.setVolume = animationManager.setVolume;\r\n  lottie.mute = animationManager.mute;\r\n  lottie.unmute = animationManager.unmute;\r\n  lottie.getRegisteredAnimations = animationManager.getRegisteredAnimations;\r\n  lottie.useWebWorker = setWebWorker;\r\n  lottie.setIDPrefix = setPrefix;\r\n  lottie.__getFactory = getFactory;\r\n  lottie.version = '5.10.0';\r\n\r\n  function checkReady() {\r\n    if (document.readyState === 'complete') {\r\n      clearInterval(readyStateCheckInterval);\r\n      searchAnimations();\r\n    }\r\n  }\r\n\r\n  function getQueryVariable(variable) {\r\n    var vars = queryString.split('&');\r\n\r\n    for (var i = 0; i < vars.length; i += 1) {\r\n      var pair = vars[i].split('=');\r\n\r\n      if (decodeURIComponent(pair[0]) == variable) {\r\n        // eslint-disable-line eqeqeq\r\n        return decodeURIComponent(pair[1]);\r\n      }\r\n    }\r\n\r\n    return null;\r\n  }\r\n\r\n  var queryString = '';\r\n\r\n  if (standalone) {\r\n    var scripts = document.getElementsByTagName('script');\r\n    var index = scripts.length - 1;\r\n    var myScript = scripts[index] || {\r\n      src: ''\r\n    };\r\n    queryString = myScript.src ? myScript.src.replace(/^[^\\?]+\\??/, '') : ''; // eslint-disable-line no-useless-escape\r\n\r\n    renderer = getQueryVariable('renderer');\r\n  }\r\n\r\n  var readyStateCheckInterval = setInterval(checkReady, 100); // this adds bodymovin to the window object for backwards compatibility\r\n\r\n  try {\r\n    if (!((typeof exports === \"undefined\" ? \"undefined\" : _typeof$3(exports)) === 'object' && typeof module !== 'undefined') && !(typeof define === 'function' && define.amd) // eslint-disable-line no-undef\r\n    ) {\r\n      window.bodymovin = lottie;\r\n    }\r\n  } catch (err) {//\r\n  }\r\n\r\n  var ShapeModifiers = function () {\r\n    var ob = {};\r\n    var modifiers = {};\r\n    ob.registerModifier = registerModifier;\r\n    ob.getModifier = getModifier;\r\n\r\n    function registerModifier(nm, factory) {\r\n      if (!modifiers[nm]) {\r\n        modifiers[nm] = factory;\r\n      }\r\n    }\r\n\r\n    function getModifier(nm, elem, data) {\r\n      return new modifiers[nm](elem, data);\r\n    }\r\n\r\n    return ob;\r\n  }();\r\n\r\n  function ShapeModifier() {}\r\n\r\n  ShapeModifier.prototype.initModifierProperties = function () {};\r\n\r\n  ShapeModifier.prototype.addShapeToModifier = function () {};\r\n\r\n  ShapeModifier.prototype.addShape = function (data) {\r\n    if (!this.closed) {\r\n      // Adding shape to dynamic properties. It covers the case where a shape has no effects applied, to reset it's _mdf state on every tick.\r\n      data.sh.container.addDynamicProperty(data.sh);\r\n      var shapeData = {\r\n        shape: data.sh,\r\n        data: data,\r\n        localShapeCollection: shapeCollectionPool.newShapeCollection()\r\n      };\r\n      this.shapes.push(shapeData);\r\n      this.addShapeToModifier(shapeData);\r\n\r\n      if (this._isAnimated) {\r\n        data.setAsAnimated();\r\n      }\r\n    }\r\n  };\r\n\r\n  ShapeModifier.prototype.init = function (elem, data) {\r\n    this.shapes = [];\r\n    this.elem = elem;\r\n    this.initDynamicPropertyContainer(elem);\r\n    this.initModifierProperties(elem, data);\r\n    this.frameId = initialDefaultFrame;\r\n    this.closed = false;\r\n    this.k = false;\r\n\r\n    if (this.dynamicProperties.length) {\r\n      this.k = true;\r\n    } else {\r\n      this.getValue(true);\r\n    }\r\n  };\r\n\r\n  ShapeModifier.prototype.processKeys = function () {\r\n    if (this.elem.globalData.frameId === this.frameId) {\r\n      return;\r\n    }\r\n\r\n    this.frameId = this.elem.globalData.frameId;\r\n    this.iterateDynamicProperties();\r\n  };\r\n\r\n  extendPrototype([DynamicPropertyContainer], ShapeModifier);\r\n\r\n  function TrimModifier() {}\r\n\r\n  extendPrototype([ShapeModifier], TrimModifier);\r\n\r\n  TrimModifier.prototype.initModifierProperties = function (elem, data) {\r\n    this.s = PropertyFactory.getProp(elem, data.s, 0, 0.01, this);\r\n    this.e = PropertyFactory.getProp(elem, data.e, 0, 0.01, this);\r\n    this.o = PropertyFactory.getProp(elem, data.o, 0, 0, this);\r\n    this.sValue = 0;\r\n    this.eValue = 0;\r\n    this.getValue = this.processKeys;\r\n    this.m = data.m;\r\n    this._isAnimated = !!this.s.effectsSequence.length || !!this.e.effectsSequence.length || !!this.o.effectsSequence.length;\r\n  };\r\n\r\n  TrimModifier.prototype.addShapeToModifier = function (shapeData) {\r\n    shapeData.pathsData = [];\r\n  };\r\n\r\n  TrimModifier.prototype.calculateShapeEdges = function (s, e, shapeLength, addedLength, totalModifierLength) {\r\n    var segments = [];\r\n\r\n    if (e <= 1) {\r\n      segments.push({\r\n        s: s,\r\n        e: e\r\n      });\r\n    } else if (s >= 1) {\r\n      segments.push({\r\n        s: s - 1,\r\n        e: e - 1\r\n      });\r\n    } else {\r\n      segments.push({\r\n        s: s,\r\n        e: 1\r\n      });\r\n      segments.push({\r\n        s: 0,\r\n        e: e - 1\r\n      });\r\n    }\r\n\r\n    var shapeSegments = [];\r\n    var i;\r\n    var len = segments.length;\r\n    var segmentOb;\r\n\r\n    for (i = 0; i < len; i += 1) {\r\n      segmentOb = segments[i];\r\n\r\n      if (!(segmentOb.e * totalModifierLength < addedLength || segmentOb.s * totalModifierLength > addedLength + shapeLength)) {\r\n        var shapeS;\r\n        var shapeE;\r\n\r\n        if (segmentOb.s * totalModifierLength <= addedLength) {\r\n          shapeS = 0;\r\n        } else {\r\n          shapeS = (segmentOb.s * totalModifierLength - addedLength) / shapeLength;\r\n        }\r\n\r\n        if (segmentOb.e * totalModifierLength >= addedLength + shapeLength) {\r\n          shapeE = 1;\r\n        } else {\r\n          shapeE = (segmentOb.e * totalModifierLength - addedLength) / shapeLength;\r\n        }\r\n\r\n        shapeSegments.push([shapeS, shapeE]);\r\n      }\r\n    }\r\n\r\n    if (!shapeSegments.length) {\r\n      shapeSegments.push([0, 0]);\r\n    }\r\n\r\n    return shapeSegments;\r\n  };\r\n\r\n  TrimModifier.prototype.releasePathsData = function (pathsData) {\r\n    var i;\r\n    var len = pathsData.length;\r\n\r\n    for (i = 0; i < len; i += 1) {\r\n      segmentsLengthPool.release(pathsData[i]);\r\n    }\r\n\r\n    pathsData.length = 0;\r\n    return pathsData;\r\n  };\r\n\r\n  TrimModifier.prototype.processShapes = function (_isFirstFrame) {\r\n    var s;\r\n    var e;\r\n\r\n    if (this._mdf || _isFirstFrame) {\r\n      var o = this.o.v % 360 / 360;\r\n\r\n      if (o < 0) {\r\n        o += 1;\r\n      }\r\n\r\n      if (this.s.v > 1) {\r\n        s = 1 + o;\r\n      } else if (this.s.v < 0) {\r\n        s = 0 + o;\r\n      } else {\r\n        s = this.s.v + o;\r\n      }\r\n\r\n      if (this.e.v > 1) {\r\n        e = 1 + o;\r\n      } else if (this.e.v < 0) {\r\n        e = 0 + o;\r\n      } else {\r\n        e = this.e.v + o;\r\n      }\r\n\r\n      if (s > e) {\r\n        var _s = s;\r\n        s = e;\r\n        e = _s;\r\n      }\r\n\r\n      s = Math.round(s * 10000) * 0.0001;\r\n      e = Math.round(e * 10000) * 0.0001;\r\n      this.sValue = s;\r\n      this.eValue = e;\r\n    } else {\r\n      s = this.sValue;\r\n      e = this.eValue;\r\n    }\r\n\r\n    var shapePaths;\r\n    var i;\r\n    var len = this.shapes.length;\r\n    var j;\r\n    var jLen;\r\n    var pathsData;\r\n    var pathData;\r\n    var totalShapeLength;\r\n    var totalModifierLength = 0;\r\n\r\n    if (e === s) {\r\n      for (i = 0; i < len; i += 1) {\r\n        this.shapes[i].localShapeCollection.releaseShapes();\r\n        this.shapes[i].shape._mdf = true;\r\n        this.shapes[i].shape.paths = this.shapes[i].localShapeCollection;\r\n\r\n        if (this._mdf) {\r\n          this.shapes[i].pathsData.length = 0;\r\n        }\r\n      }\r\n    } else if (!(e === 1 && s === 0 || e === 0 && s === 1)) {\r\n      var segments = [];\r\n      var shapeData;\r\n      var localShapeCollection;\r\n\r\n      for (i = 0; i < len; i += 1) {\r\n        shapeData = this.shapes[i]; // if shape hasn't changed and trim properties haven't changed, cached previous path can be used\r\n\r\n        if (!shapeData.shape._mdf && !this._mdf && !_isFirstFrame && this.m !== 2) {\r\n          shapeData.shape.paths = shapeData.localShapeCollection;\r\n        } else {\r\n          shapePaths = shapeData.shape.paths;\r\n          jLen = shapePaths._length;\r\n          totalShapeLength = 0;\r\n\r\n          if (!shapeData.shape._mdf && shapeData.pathsData.length) {\r\n            totalShapeLength = shapeData.totalShapeLength;\r\n          } else {\r\n            pathsData = this.releasePathsData(shapeData.pathsData);\r\n\r\n            for (j = 0; j < jLen; j += 1) {\r\n              pathData = bez.getSegmentsLength(shapePaths.shapes[j]);\r\n              pathsData.push(pathData);\r\n              totalShapeLength += pathData.totalLength;\r\n            }\r\n\r\n            shapeData.totalShapeLength = totalShapeLength;\r\n            shapeData.pathsData = pathsData;\r\n          }\r\n\r\n          totalModifierLength += totalShapeLength;\r\n          shapeData.shape._mdf = true;\r\n        }\r\n      }\r\n\r\n      var shapeS = s;\r\n      var shapeE = e;\r\n      var addedLength = 0;\r\n      var edges;\r\n\r\n      for (i = len - 1; i >= 0; i -= 1) {\r\n        shapeData = this.shapes[i];\r\n\r\n        if (shapeData.shape._mdf) {\r\n          localShapeCollection = shapeData.localShapeCollection;\r\n          localShapeCollection.releaseShapes(); // if m === 2 means paths are trimmed individually so edges need to be found for this specific shape relative to whoel group\r\n\r\n          if (this.m === 2 && len > 1) {\r\n            edges = this.calculateShapeEdges(s, e, shapeData.totalShapeLength, addedLength, totalModifierLength);\r\n            addedLength += shapeData.totalShapeLength;\r\n          } else {\r\n            edges = [[shapeS, shapeE]];\r\n          }\r\n\r\n          jLen = edges.length;\r\n\r\n          for (j = 0; j < jLen; j += 1) {\r\n            shapeS = edges[j][0];\r\n            shapeE = edges[j][1];\r\n            segments.length = 0;\r\n\r\n            if (shapeE <= 1) {\r\n              segments.push({\r\n                s: shapeData.totalShapeLength * shapeS,\r\n                e: shapeData.totalShapeLength * shapeE\r\n              });\r\n            } else if (shapeS >= 1) {\r\n              segments.push({\r\n                s: shapeData.totalShapeLength * (shapeS - 1),\r\n                e: shapeData.totalShapeLength * (shapeE - 1)\r\n              });\r\n            } else {\r\n              segments.push({\r\n                s: shapeData.totalShapeLength * shapeS,\r\n                e: shapeData.totalShapeLength\r\n              });\r\n              segments.push({\r\n                s: 0,\r\n                e: shapeData.totalShapeLength * (shapeE - 1)\r\n              });\r\n            }\r\n\r\n            var newShapesData = this.addShapes(shapeData, segments[0]);\r\n\r\n            if (segments[0].s !== segments[0].e) {\r\n              if (segments.length > 1) {\r\n                var lastShapeInCollection = shapeData.shape.paths.shapes[shapeData.shape.paths._length - 1];\r\n\r\n                if (lastShapeInCollection.c) {\r\n                  var lastShape = newShapesData.pop();\r\n                  this.addPaths(newShapesData, localShapeCollection);\r\n                  newShapesData = this.addShapes(shapeData, segments[1], lastShape);\r\n                } else {\r\n                  this.addPaths(newShapesData, localShapeCollection);\r\n                  newShapesData = this.addShapes(shapeData, segments[1]);\r\n                }\r\n              }\r\n\r\n              this.addPaths(newShapesData, localShapeCollection);\r\n            }\r\n          }\r\n\r\n          shapeData.shape.paths = localShapeCollection;\r\n        }\r\n      }\r\n    } else if (this._mdf) {\r\n      for (i = 0; i < len; i += 1) {\r\n        // Releasign Trim Cached paths data when no trim applied in case shapes are modified inbetween.\r\n        // Don't remove this even if it's losing cached info.\r\n        this.shapes[i].pathsData.length = 0;\r\n        this.shapes[i].shape._mdf = true;\r\n      }\r\n    }\r\n  };\r\n\r\n  TrimModifier.prototype.addPaths = function (newPaths, localShapeCollection) {\r\n    var i;\r\n    var len = newPaths.length;\r\n\r\n    for (i = 0; i < len; i += 1) {\r\n      localShapeCollection.addShape(newPaths[i]);\r\n    }\r\n  };\r\n\r\n  TrimModifier.prototype.addSegment = function (pt1, pt2, pt3, pt4, shapePath, pos, newShape) {\r\n    shapePath.setXYAt(pt2[0], pt2[1], 'o', pos);\r\n    shapePath.setXYAt(pt3[0], pt3[1], 'i', pos + 1);\r\n\r\n    if (newShape) {\r\n      shapePath.setXYAt(pt1[0], pt1[1], 'v', pos);\r\n    }\r\n\r\n    shapePath.setXYAt(pt4[0], pt4[1], 'v', pos + 1);\r\n  };\r\n\r\n  TrimModifier.prototype.addSegmentFromArray = function (points, shapePath, pos, newShape) {\r\n    shapePath.setXYAt(points[1], points[5], 'o', pos);\r\n    shapePath.setXYAt(points[2], points[6], 'i', pos + 1);\r\n\r\n    if (newShape) {\r\n      shapePath.setXYAt(points[0], points[4], 'v', pos);\r\n    }\r\n\r\n    shapePath.setXYAt(points[3], points[7], 'v', pos + 1);\r\n  };\r\n\r\n  TrimModifier.prototype.addShapes = function (shapeData, shapeSegment, shapePath) {\r\n    var pathsData = shapeData.pathsData;\r\n    var shapePaths = shapeData.shape.paths.shapes;\r\n    var i;\r\n    var len = shapeData.shape.paths._length;\r\n    var j;\r\n    var jLen;\r\n    var addedLength = 0;\r\n    var currentLengthData;\r\n    var segmentCount;\r\n    var lengths;\r\n    var segment;\r\n    var shapes = [];\r\n    var initPos;\r\n    var newShape = true;\r\n\r\n    if (!shapePath) {\r\n      shapePath = shapePool.newElement();\r\n      segmentCount = 0;\r\n      initPos = 0;\r\n    } else {\r\n      segmentCount = shapePath._length;\r\n      initPos = shapePath._length;\r\n    }\r\n\r\n    shapes.push(shapePath);\r\n\r\n    for (i = 0; i < len; i += 1) {\r\n      lengths = pathsData[i].lengths;\r\n      shapePath.c = shapePaths[i].c;\r\n      jLen = shapePaths[i].c ? lengths.length : lengths.length + 1;\r\n\r\n      for (j = 1; j < jLen; j += 1) {\r\n        currentLengthData = lengths[j - 1];\r\n\r\n        if (addedLength + currentLengthData.addedLength < shapeSegment.s) {\r\n          addedLength += currentLengthData.addedLength;\r\n          shapePath.c = false;\r\n        } else if (addedLength > shapeSegment.e) {\r\n          shapePath.c = false;\r\n          break;\r\n        } else {\r\n          if (shapeSegment.s <= addedLength && shapeSegment.e >= addedLength + currentLengthData.addedLength) {\r\n            this.addSegment(shapePaths[i].v[j - 1], shapePaths[i].o[j - 1], shapePaths[i].i[j], shapePaths[i].v[j], shapePath, segmentCount, newShape);\r\n            newShape = false;\r\n          } else {\r\n            segment = bez.getNewSegment(shapePaths[i].v[j - 1], shapePaths[i].v[j], shapePaths[i].o[j - 1], shapePaths[i].i[j], (shapeSegment.s - addedLength) / currentLengthData.addedLength, (shapeSegment.e - addedLength) / currentLengthData.addedLength, lengths[j - 1]);\r\n            this.addSegmentFromArray(segment, shapePath, segmentCount, newShape); // this.addSegment(segment.pt1, segment.pt3, segment.pt4, segment.pt2, shapePath, segmentCount, newShape);\r\n\r\n            newShape = false;\r\n            shapePath.c = false;\r\n          }\r\n\r\n          addedLength += currentLengthData.addedLength;\r\n          segmentCount += 1;\r\n        }\r\n      }\r\n\r\n      if (shapePaths[i].c && lengths.length) {\r\n        currentLengthData = lengths[j - 1];\r\n\r\n        if (addedLength <= shapeSegment.e) {\r\n          var segmentLength = lengths[j - 1].addedLength;\r\n\r\n          if (shapeSegment.s <= addedLength && shapeSegment.e >= addedLength + segmentLength) {\r\n            this.addSegment(shapePaths[i].v[j - 1], shapePaths[i].o[j - 1], shapePaths[i].i[0], shapePaths[i].v[0], shapePath, segmentCount, newShape);\r\n            newShape = false;\r\n          } else {\r\n            segment = bez.getNewSegment(shapePaths[i].v[j - 1], shapePaths[i].v[0], shapePaths[i].o[j - 1], shapePaths[i].i[0], (shapeSegment.s - addedLength) / segmentLength, (shapeSegment.e - addedLength) / segmentLength, lengths[j - 1]);\r\n            this.addSegmentFromArray(segment, shapePath, segmentCount, newShape); // this.addSegment(segment.pt1, segment.pt3, segment.pt4, segment.pt2, shapePath, segmentCount, newShape);\r\n\r\n            newShape = false;\r\n            shapePath.c = false;\r\n          }\r\n        } else {\r\n          shapePath.c = false;\r\n        }\r\n\r\n        addedLength += currentLengthData.addedLength;\r\n        segmentCount += 1;\r\n      }\r\n\r\n      if (shapePath._length) {\r\n        shapePath.setXYAt(shapePath.v[initPos][0], shapePath.v[initPos][1], 'i', initPos);\r\n        shapePath.setXYAt(shapePath.v[shapePath._length - 1][0], shapePath.v[shapePath._length - 1][1], 'o', shapePath._length - 1);\r\n      }\r\n\r\n      if (addedLength > shapeSegment.e) {\r\n        break;\r\n      }\r\n\r\n      if (i < len - 1) {\r\n        shapePath = shapePool.newElement();\r\n        newShape = true;\r\n        shapes.push(shapePath);\r\n        segmentCount = 0;\r\n      }\r\n    }\r\n\r\n    return shapes;\r\n  };\r\n\r\n  function PuckerAndBloatModifier() {}\r\n\r\n  extendPrototype([ShapeModifier], PuckerAndBloatModifier);\r\n\r\n  PuckerAndBloatModifier.prototype.initModifierProperties = function (elem, data) {\r\n    this.getValue = this.processKeys;\r\n    this.amount = PropertyFactory.getProp(elem, data.a, 0, null, this);\r\n    this._isAnimated = !!this.amount.effectsSequence.length;\r\n  };\r\n\r\n  PuckerAndBloatModifier.prototype.processPath = function (path, amount) {\r\n    var percent = amount / 100;\r\n    var centerPoint = [0, 0];\r\n    var pathLength = path._length;\r\n    var i = 0;\r\n\r\n    for (i = 0; i < pathLength; i += 1) {\r\n      centerPoint[0] += path.v[i][0];\r\n      centerPoint[1] += path.v[i][1];\r\n    }\r\n\r\n    centerPoint[0] /= pathLength;\r\n    centerPoint[1] /= pathLength;\r\n    var clonedPath = shapePool.newElement();\r\n    clonedPath.c = path.c;\r\n    var vX;\r\n    var vY;\r\n    var oX;\r\n    var oY;\r\n    var iX;\r\n    var iY;\r\n\r\n    for (i = 0; i < pathLength; i += 1) {\r\n      vX = path.v[i][0] + (centerPoint[0] - path.v[i][0]) * percent;\r\n      vY = path.v[i][1] + (centerPoint[1] - path.v[i][1]) * percent;\r\n      oX = path.o[i][0] + (centerPoint[0] - path.o[i][0]) * -percent;\r\n      oY = path.o[i][1] + (centerPoint[1] - path.o[i][1]) * -percent;\r\n      iX = path.i[i][0] + (centerPoint[0] - path.i[i][0]) * -percent;\r\n      iY = path.i[i][1] + (centerPoint[1] - path.i[i][1]) * -percent;\r\n      clonedPath.setTripleAt(vX, vY, oX, oY, iX, iY, i);\r\n    }\r\n\r\n    return clonedPath;\r\n  };\r\n\r\n  PuckerAndBloatModifier.prototype.processShapes = function (_isFirstFrame) {\r\n    var shapePaths;\r\n    var i;\r\n    var len = this.shapes.length;\r\n    var j;\r\n    var jLen;\r\n    var amount = this.amount.v;\r\n\r\n    if (amount !== 0) {\r\n      var shapeData;\r\n      var localShapeCollection;\r\n\r\n      for (i = 0; i < len; i += 1) {\r\n        shapeData = this.shapes[i];\r\n        localShapeCollection = shapeData.localShapeCollection;\r\n\r\n        if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {\r\n          localShapeCollection.releaseShapes();\r\n          shapeData.shape._mdf = true;\r\n          shapePaths = shapeData.shape.paths.shapes;\r\n          jLen = shapeData.shape.paths._length;\r\n\r\n          for (j = 0; j < jLen; j += 1) {\r\n            localShapeCollection.addShape(this.processPath(shapePaths[j], amount));\r\n          }\r\n        }\r\n\r\n        shapeData.shape.paths = shapeData.localShapeCollection;\r\n      }\r\n    }\r\n\r\n    if (!this.dynamicProperties.length) {\r\n      this._mdf = false;\r\n    }\r\n  };\r\n\r\n  var TransformPropertyFactory = function () {\r\n    var defaultVector = [0, 0];\r\n\r\n    function applyToMatrix(mat) {\r\n      var _mdf = this._mdf;\r\n      this.iterateDynamicProperties();\r\n      this._mdf = this._mdf || _mdf;\r\n\r\n      if (this.a) {\r\n        mat.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);\r\n      }\r\n\r\n      if (this.s) {\r\n        mat.scale(this.s.v[0], this.s.v[1], this.s.v[2]);\r\n      }\r\n\r\n      if (this.sk) {\r\n        mat.skewFromAxis(-this.sk.v, this.sa.v);\r\n      }\r\n\r\n      if (this.r) {\r\n        mat.rotate(-this.r.v);\r\n      } else {\r\n        mat.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2]).rotateY(this.or.v[1]).rotateX(this.or.v[0]);\r\n      }\r\n\r\n      if (this.data.p.s) {\r\n        if (this.data.p.z) {\r\n          mat.translate(this.px.v, this.py.v, -this.pz.v);\r\n        } else {\r\n          mat.translate(this.px.v, this.py.v, 0);\r\n        }\r\n      } else {\r\n        mat.translate(this.p.v[0], this.p.v[1], -this.p.v[2]);\r\n      }\r\n    }\r\n\r\n    function processKeys(forceRender) {\r\n      if (this.elem.globalData.frameId === this.frameId) {\r\n        return;\r\n      }\r\n\r\n      if (this._isDirty) {\r\n        this.precalculateMatrix();\r\n        this._isDirty = false;\r\n      }\r\n\r\n      this.iterateDynamicProperties();\r\n\r\n      if (this._mdf || forceRender) {\r\n        var frameRate;\r\n        this.v.cloneFromProps(this.pre.props);\r\n\r\n        if (this.appliedTransformations < 1) {\r\n          this.v.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);\r\n        }\r\n\r\n        if (this.appliedTransformations < 2) {\r\n          this.v.scale(this.s.v[0], this.s.v[1], this.s.v[2]);\r\n        }\r\n\r\n        if (this.sk && this.appliedTransformations < 3) {\r\n          this.v.skewFromAxis(-this.sk.v, this.sa.v);\r\n        }\r\n\r\n        if (this.r && this.appliedTransformations < 4) {\r\n          this.v.rotate(-this.r.v);\r\n        } else if (!this.r && this.appliedTransformations < 4) {\r\n          this.v.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2]).rotateY(this.or.v[1]).rotateX(this.or.v[0]);\r\n        }\r\n\r\n        if (this.autoOriented) {\r\n          var v1;\r\n          var v2;\r\n          frameRate = this.elem.globalData.frameRate;\r\n\r\n          if (this.p && this.p.keyframes && this.p.getValueAtTime) {\r\n            if (this.p._caching.lastFrame + this.p.offsetTime <= this.p.keyframes[0].t) {\r\n              v1 = this.p.getValueAtTime((this.p.keyframes[0].t + 0.01) / frameRate, 0);\r\n              v2 = this.p.getValueAtTime(this.p.keyframes[0].t / frameRate, 0);\r\n            } else if (this.p._caching.lastFrame + this.p.offsetTime >= this.p.keyframes[this.p.keyframes.length - 1].t) {\r\n              v1 = this.p.getValueAtTime(this.p.keyframes[this.p.keyframes.length - 1].t / frameRate, 0);\r\n              v2 = this.p.getValueAtTime((this.p.keyframes[this.p.keyframes.length - 1].t - 0.05) / frameRate, 0);\r\n            } else {\r\n              v1 = this.p.pv;\r\n              v2 = this.p.getValueAtTime((this.p._caching.lastFrame + this.p.offsetTime - 0.01) / frameRate, this.p.offsetTime);\r\n            }\r\n          } else if (this.px && this.px.keyframes && this.py.keyframes && this.px.getValueAtTime && this.py.getValueAtTime) {\r\n            v1 = [];\r\n            v2 = [];\r\n            var px = this.px;\r\n            var py = this.py;\r\n\r\n            if (px._caching.lastFrame + px.offsetTime <= px.keyframes[0].t) {\r\n              v1[0] = px.getValueAtTime((px.keyframes[0].t + 0.01) / frameRate, 0);\r\n              v1[1] = py.getValueAtTime((py.keyframes[0].t + 0.01) / frameRate, 0);\r\n              v2[0] = px.getValueAtTime(px.keyframes[0].t / frameRate, 0);\r\n              v2[1] = py.getValueAtTime(py.keyframes[0].t / frameRate, 0);\r\n            } else if (px._caching.lastFrame + px.offsetTime >= px.keyframes[px.keyframes.length - 1].t) {\r\n              v1[0] = px.getValueAtTime(px.keyframes[px.keyframes.length - 1].t / frameRate, 0);\r\n              v1[1] = py.getValueAtTime(py.keyframes[py.keyframes.length - 1].t / frameRate, 0);\r\n              v2[0] = px.getValueAtTime((px.keyframes[px.keyframes.length - 1].t - 0.01) / frameRate, 0);\r\n              v2[1] = py.getValueAtTime((py.keyframes[py.keyframes.length - 1].t - 0.01) / frameRate, 0);\r\n            } else {\r\n              v1 = [px.pv, py.pv];\r\n              v2[0] = px.getValueAtTime((px._caching.lastFrame + px.offsetTime - 0.01) / frameRate, px.offsetTime);\r\n              v2[1] = py.getValueAtTime((py._caching.lastFrame + py.offsetTime - 0.01) / frameRate, py.offsetTime);\r\n            }\r\n          } else {\r\n            v2 = defaultVector;\r\n            v1 = v2;\r\n          }\r\n\r\n          this.v.rotate(-Math.atan2(v1[1] - v2[1], v1[0] - v2[0]));\r\n        }\r\n\r\n        if (this.data.p && this.data.p.s) {\r\n          if (this.data.p.z) {\r\n            this.v.translate(this.px.v, this.py.v, -this.pz.v);\r\n          } else {\r\n            this.v.translate(this.px.v, this.py.v, 0);\r\n          }\r\n        } else {\r\n          this.v.translate(this.p.v[0], this.p.v[1], -this.p.v[2]);\r\n        }\r\n      }\r\n\r\n      this.frameId = this.elem.globalData.frameId;\r\n    }\r\n\r\n    function precalculateMatrix() {\r\n      if (!this.a.k) {\r\n        this.pre.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);\r\n        this.appliedTransformations = 1;\r\n      } else {\r\n        return;\r\n      }\r\n\r\n      if (!this.s.effectsSequence.length) {\r\n        this.pre.scale(this.s.v[0], this.s.v[1], this.s.v[2]);\r\n        this.appliedTransformations = 2;\r\n      } else {\r\n        return;\r\n      }\r\n\r\n      if (this.sk) {\r\n        if (!this.sk.effectsSequence.length && !this.sa.effectsSequence.length) {\r\n          this.pre.skewFromAxis(-this.sk.v, this.sa.v);\r\n          this.appliedTransformations = 3;\r\n        } else {\r\n          return;\r\n        }\r\n      }\r\n\r\n      if (this.r) {\r\n        if (!this.r.effectsSequence.length) {\r\n          this.pre.rotate(-this.r.v);\r\n          this.appliedTransformations = 4;\r\n        }\r\n      } else if (!this.rz.effectsSequence.length && !this.ry.effectsSequence.length && !this.rx.effectsSequence.length && !this.or.effectsSequence.length) {\r\n        this.pre.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2]).rotateY(this.or.v[1]).rotateX(this.or.v[0]);\r\n        this.appliedTransformations = 4;\r\n      }\r\n    }\r\n\r\n    function autoOrient() {//\r\n      // var prevP = this.getValueAtTime();\r\n    }\r\n\r\n    function addDynamicProperty(prop) {\r\n      this._addDynamicProperty(prop);\r\n\r\n      this.elem.addDynamicProperty(prop);\r\n      this._isDirty = true;\r\n    }\r\n\r\n    function TransformProperty(elem, data, container) {\r\n      this.elem = elem;\r\n      this.frameId = -1;\r\n      this.propType = 'transform';\r\n      this.data = data;\r\n      this.v = new Matrix(); // Precalculated matrix with non animated properties\r\n\r\n      this.pre = new Matrix();\r\n      this.appliedTransformations = 0;\r\n      this.initDynamicPropertyContainer(container || elem);\r\n\r\n      if (data.p && data.p.s) {\r\n        this.px = PropertyFactory.getProp(elem, data.p.x, 0, 0, this);\r\n        this.py = PropertyFactory.getProp(elem, data.p.y, 0, 0, this);\r\n\r\n        if (data.p.z) {\r\n          this.pz = PropertyFactory.getProp(elem, data.p.z, 0, 0, this);\r\n        }\r\n      } else {\r\n        this.p = PropertyFactory.getProp(elem, data.p || {\r\n          k: [0, 0, 0]\r\n        }, 1, 0, this);\r\n      }\r\n\r\n      if (data.rx) {\r\n        this.rx = PropertyFactory.getProp(elem, data.rx, 0, degToRads, this);\r\n        this.ry = PropertyFactory.getProp(elem, data.ry, 0, degToRads, this);\r\n        this.rz = PropertyFactory.getProp(elem, data.rz, 0, degToRads, this);\r\n\r\n        if (data.or.k[0].ti) {\r\n          var i;\r\n          var len = data.or.k.length;\r\n\r\n          for (i = 0; i < len; i += 1) {\r\n            data.or.k[i].to = null;\r\n            data.or.k[i].ti = null;\r\n          }\r\n        }\r\n\r\n        this.or = PropertyFactory.getProp(elem, data.or, 1, degToRads, this); // sh Indicates it needs to be capped between -180 and 180\r\n\r\n        this.or.sh = true;\r\n      } else {\r\n        this.r = PropertyFactory.getProp(elem, data.r || {\r\n          k: 0\r\n        }, 0, degToRads, this);\r\n      }\r\n\r\n      if (data.sk) {\r\n        this.sk = PropertyFactory.getProp(elem, data.sk, 0, degToRads, this);\r\n        this.sa = PropertyFactory.getProp(elem, data.sa, 0, degToRads, this);\r\n      }\r\n\r\n      this.a = PropertyFactory.getProp(elem, data.a || {\r\n        k: [0, 0, 0]\r\n      }, 1, 0, this);\r\n      this.s = PropertyFactory.getProp(elem, data.s || {\r\n        k: [100, 100, 100]\r\n      }, 1, 0.01, this); // Opacity is not part of the transform properties, that's why it won't use this.dynamicProperties. That way transforms won't get updated if opacity changes.\r\n\r\n      if (data.o) {\r\n        this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, elem);\r\n      } else {\r\n        this.o = {\r\n          _mdf: false,\r\n          v: 1\r\n        };\r\n      }\r\n\r\n      this._isDirty = true;\r\n\r\n      if (!this.dynamicProperties.length) {\r\n        this.getValue(true);\r\n      }\r\n    }\r\n\r\n    TransformProperty.prototype = {\r\n      applyToMatrix: applyToMatrix,\r\n      getValue: processKeys,\r\n      precalculateMatrix: precalculateMatrix,\r\n      autoOrient: autoOrient\r\n    };\r\n    extendPrototype([DynamicPropertyContainer], TransformProperty);\r\n    TransformProperty.prototype.addDynamicProperty = addDynamicProperty;\r\n    TransformProperty.prototype._addDynamicProperty = DynamicPropertyContainer.prototype.addDynamicProperty;\r\n\r\n    function getTransformProperty(elem, data, container) {\r\n      return new TransformProperty(elem, data, container);\r\n    }\r\n\r\n    return {\r\n      getTransformProperty: getTransformProperty\r\n    };\r\n  }();\r\n\r\n  function RepeaterModifier() {}\r\n\r\n  extendPrototype([ShapeModifier], RepeaterModifier);\r\n\r\n  RepeaterModifier.prototype.initModifierProperties = function (elem, data) {\r\n    this.getValue = this.processKeys;\r\n    this.c = PropertyFactory.getProp(elem, data.c, 0, null, this);\r\n    this.o = PropertyFactory.getProp(elem, data.o, 0, null, this);\r\n    this.tr = TransformPropertyFactory.getTransformProperty(elem, data.tr, this);\r\n    this.so = PropertyFactory.getProp(elem, data.tr.so, 0, 0.01, this);\r\n    this.eo = PropertyFactory.getProp(elem, data.tr.eo, 0, 0.01, this);\r\n    this.data = data;\r\n\r\n    if (!this.dynamicProperties.length) {\r\n      this.getValue(true);\r\n    }\r\n\r\n    this._isAnimated = !!this.dynamicProperties.length;\r\n    this.pMatrix = new Matrix();\r\n    this.rMatrix = new Matrix();\r\n    this.sMatrix = new Matrix();\r\n    this.tMatrix = new Matrix();\r\n    this.matrix = new Matrix();\r\n  };\r\n\r\n  RepeaterModifier.prototype.applyTransforms = function (pMatrix, rMatrix, sMatrix, transform, perc, inv) {\r\n    var dir = inv ? -1 : 1;\r\n    var scaleX = transform.s.v[0] + (1 - transform.s.v[0]) * (1 - perc);\r\n    var scaleY = transform.s.v[1] + (1 - transform.s.v[1]) * (1 - perc);\r\n    pMatrix.translate(transform.p.v[0] * dir * perc, transform.p.v[1] * dir * perc, transform.p.v[2]);\r\n    rMatrix.translate(-transform.a.v[0], -transform.a.v[1], transform.a.v[2]);\r\n    rMatrix.rotate(-transform.r.v * dir * perc);\r\n    rMatrix.translate(transform.a.v[0], transform.a.v[1], transform.a.v[2]);\r\n    sMatrix.translate(-transform.a.v[0], -transform.a.v[1], transform.a.v[2]);\r\n    sMatrix.scale(inv ? 1 / scaleX : scaleX, inv ? 1 / scaleY : scaleY);\r\n    sMatrix.translate(transform.a.v[0], transform.a.v[1], transform.a.v[2]);\r\n  };\r\n\r\n  RepeaterModifier.prototype.init = function (elem, arr, pos, elemsData) {\r\n    this.elem = elem;\r\n    this.arr = arr;\r\n    this.pos = pos;\r\n    this.elemsData = elemsData;\r\n    this._currentCopies = 0;\r\n    this._elements = [];\r\n    this._groups = [];\r\n    this.frameId = -1;\r\n    this.initDynamicPropertyContainer(elem);\r\n    this.initModifierProperties(elem, arr[pos]);\r\n\r\n    while (pos > 0) {\r\n      pos -= 1; // this._elements.unshift(arr.splice(pos,1)[0]);\r\n\r\n      this._elements.unshift(arr[pos]);\r\n    }\r\n\r\n    if (this.dynamicProperties.length) {\r\n      this.k = true;\r\n    } else {\r\n      this.getValue(true);\r\n    }\r\n  };\r\n\r\n  RepeaterModifier.prototype.resetElements = function (elements) {\r\n    var i;\r\n    var len = elements.length;\r\n\r\n    for (i = 0; i < len; i += 1) {\r\n      elements[i]._processed = false;\r\n\r\n      if (elements[i].ty === 'gr') {\r\n        this.resetElements(elements[i].it);\r\n      }\r\n    }\r\n  };\r\n\r\n  RepeaterModifier.prototype.cloneElements = function (elements) {\r\n    var newElements = JSON.parse(JSON.stringify(elements));\r\n    this.resetElements(newElements);\r\n    return newElements;\r\n  };\r\n\r\n  RepeaterModifier.prototype.changeGroupRender = function (elements, renderFlag) {\r\n    var i;\r\n    var len = elements.length;\r\n\r\n    for (i = 0; i < len; i += 1) {\r\n      elements[i]._render = renderFlag;\r\n\r\n      if (elements[i].ty === 'gr') {\r\n        this.changeGroupRender(elements[i].it, renderFlag);\r\n      }\r\n    }\r\n  };\r\n\r\n  RepeaterModifier.prototype.processShapes = function (_isFirstFrame) {\r\n    var items;\r\n    var itemsTransform;\r\n    var i;\r\n    var dir;\r\n    var cont;\r\n    var hasReloaded = false;\r\n\r\n    if (this._mdf || _isFirstFrame) {\r\n      var copies = Math.ceil(this.c.v);\r\n\r\n      if (this._groups.length < copies) {\r\n        while (this._groups.length < copies) {\r\n          var group = {\r\n            it: this.cloneElements(this._elements),\r\n            ty: 'gr'\r\n          };\r\n          group.it.push({\r\n            a: {\r\n              a: 0,\r\n              ix: 1,\r\n              k: [0, 0]\r\n            },\r\n            nm: 'Transform',\r\n            o: {\r\n              a: 0,\r\n              ix: 7,\r\n              k: 100\r\n            },\r\n            p: {\r\n              a: 0,\r\n              ix: 2,\r\n              k: [0, 0]\r\n            },\r\n            r: {\r\n              a: 1,\r\n              ix: 6,\r\n              k: [{\r\n                s: 0,\r\n                e: 0,\r\n                t: 0\r\n              }, {\r\n                s: 0,\r\n                e: 0,\r\n                t: 1\r\n              }]\r\n            },\r\n            s: {\r\n              a: 0,\r\n              ix: 3,\r\n              k: [100, 100]\r\n            },\r\n            sa: {\r\n              a: 0,\r\n              ix: 5,\r\n              k: 0\r\n            },\r\n            sk: {\r\n              a: 0,\r\n              ix: 4,\r\n              k: 0\r\n            },\r\n            ty: 'tr'\r\n          });\r\n          this.arr.splice(0, 0, group);\r\n\r\n          this._groups.splice(0, 0, group);\r\n\r\n          this._currentCopies += 1;\r\n        }\r\n\r\n        this.elem.reloadShapes();\r\n        hasReloaded = true;\r\n      }\r\n\r\n      cont = 0;\r\n      var renderFlag;\r\n\r\n      for (i = 0; i <= this._groups.length - 1; i += 1) {\r\n        renderFlag = cont < copies;\r\n        this._groups[i]._render = renderFlag;\r\n        this.changeGroupRender(this._groups[i].it, renderFlag);\r\n\r\n        if (!renderFlag) {\r\n          var elems = this.elemsData[i].it;\r\n          var transformData = elems[elems.length - 1];\r\n\r\n          if (transformData.transform.op.v !== 0) {\r\n            transformData.transform.op._mdf = true;\r\n            transformData.transform.op.v = 0;\r\n          } else {\r\n            transformData.transform.op._mdf = false;\r\n          }\r\n        }\r\n\r\n        cont += 1;\r\n      }\r\n\r\n      this._currentCopies = copies; /// /\r\n\r\n      var offset = this.o.v;\r\n      var offsetModulo = offset % 1;\r\n      var roundOffset = offset > 0 ? Math.floor(offset) : Math.ceil(offset);\r\n      var pProps = this.pMatrix.props;\r\n      var rProps = this.rMatrix.props;\r\n      var sProps = this.sMatrix.props;\r\n      this.pMatrix.reset();\r\n      this.rMatrix.reset();\r\n      this.sMatrix.reset();\r\n      this.tMatrix.reset();\r\n      this.matrix.reset();\r\n      var iteration = 0;\r\n\r\n      if (offset > 0) {\r\n        while (iteration < roundOffset) {\r\n          this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, false);\r\n          iteration += 1;\r\n        }\r\n\r\n        if (offsetModulo) {\r\n          this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, offsetModulo, false);\r\n          iteration += offsetModulo;\r\n        }\r\n      } else if (offset < 0) {\r\n        while (iteration > roundOffset) {\r\n          this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, true);\r\n          iteration -= 1;\r\n        }\r\n\r\n        if (offsetModulo) {\r\n          this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, -offsetModulo, true);\r\n          iteration -= offsetModulo;\r\n        }\r\n      }\r\n\r\n      i = this.data.m === 1 ? 0 : this._currentCopies - 1;\r\n      dir = this.data.m === 1 ? 1 : -1;\r\n      cont = this._currentCopies;\r\n      var j;\r\n      var jLen;\r\n\r\n      while (cont) {\r\n        items = this.elemsData[i].it;\r\n        itemsTransform = items[items.length - 1].transform.mProps.v.props;\r\n        jLen = itemsTransform.length;\r\n        items[items.length - 1].transform.mProps._mdf = true;\r\n        items[items.length - 1].transform.op._mdf = true;\r\n        items[items.length - 1].transform.op.v = this._currentCopies === 1 ? this.so.v : this.so.v + (this.eo.v - this.so.v) * (i / (this._currentCopies - 1));\r\n\r\n        if (iteration !== 0) {\r\n          if (i !== 0 && dir === 1 || i !== this._currentCopies - 1 && dir === -1) {\r\n            this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, false);\r\n          }\r\n\r\n          this.matrix.transform(rProps[0], rProps[1], rProps[2], rProps[3], rProps[4], rProps[5], rProps[6], rProps[7], rProps[8], rProps[9], rProps[10], rProps[11], rProps[12], rProps[13], rProps[14], rProps[15]);\r\n          this.matrix.transform(sProps[0], sProps[1], sProps[2], sProps[3], sProps[4], sProps[5], sProps[6], sProps[7], sProps[8], sProps[9], sProps[10], sProps[11], sProps[12], sProps[13], sProps[14], sProps[15]);\r\n          this.matrix.transform(pProps[0], pProps[1], pProps[2], pProps[3], pProps[4], pProps[5], pProps[6], pProps[7], pProps[8], pProps[9], pProps[10], pProps[11], pProps[12], pProps[13], pProps[14], pProps[15]);\r\n\r\n          for (j = 0; j < jLen; j += 1) {\r\n            itemsTransform[j] = this.matrix.props[j];\r\n          }\r\n\r\n          this.matrix.reset();\r\n        } else {\r\n          this.matrix.reset();\r\n\r\n          for (j = 0; j < jLen; j += 1) {\r\n            itemsTransform[j] = this.matrix.props[j];\r\n          }\r\n        }\r\n\r\n        iteration += 1;\r\n        cont -= 1;\r\n        i += dir;\r\n      }\r\n    } else {\r\n      cont = this._currentCopies;\r\n      i = 0;\r\n      dir = 1;\r\n\r\n      while (cont) {\r\n        items = this.elemsData[i].it;\r\n        itemsTransform = items[items.length - 1].transform.mProps.v.props;\r\n        items[items.length - 1].transform.mProps._mdf = false;\r\n        items[items.length - 1].transform.op._mdf = false;\r\n        cont -= 1;\r\n        i += dir;\r\n      }\r\n    }\r\n\r\n    return hasReloaded;\r\n  };\r\n\r\n  RepeaterModifier.prototype.addShape = function () {};\r\n\r\n  function RoundCornersModifier() {}\r\n\r\n  extendPrototype([ShapeModifier], RoundCornersModifier);\r\n\r\n  RoundCornersModifier.prototype.initModifierProperties = function (elem, data) {\r\n    this.getValue = this.processKeys;\r\n    this.rd = PropertyFactory.getProp(elem, data.r, 0, null, this);\r\n    this._isAnimated = !!this.rd.effectsSequence.length;\r\n  };\r\n\r\n  RoundCornersModifier.prototype.processPath = function (path, round) {\r\n    var clonedPath = shapePool.newElement();\r\n    clonedPath.c = path.c;\r\n    var i;\r\n    var len = path._length;\r\n    var currentV;\r\n    var currentI;\r\n    var currentO;\r\n    var closerV;\r\n    var distance;\r\n    var newPosPerc;\r\n    var index = 0;\r\n    var vX;\r\n    var vY;\r\n    var oX;\r\n    var oY;\r\n    var iX;\r\n    var iY;\r\n\r\n    for (i = 0; i < len; i += 1) {\r\n      currentV = path.v[i];\r\n      currentO = path.o[i];\r\n      currentI = path.i[i];\r\n\r\n      if (currentV[0] === currentO[0] && currentV[1] === currentO[1] && currentV[0] === currentI[0] && currentV[1] === currentI[1]) {\r\n        if ((i === 0 || i === len - 1) && !path.c) {\r\n          clonedPath.setTripleAt(currentV[0], currentV[1], currentO[0], currentO[1], currentI[0], currentI[1], index);\r\n          /* clonedPath.v[index] = currentV;\r\n                  clonedPath.o[index] = currentO;\r\n                  clonedPath.i[index] = currentI; */\r\n\r\n          index += 1;\r\n        } else {\r\n          if (i === 0) {\r\n            closerV = path.v[len - 1];\r\n          } else {\r\n            closerV = path.v[i - 1];\r\n          }\r\n\r\n          distance = Math.sqrt(Math.pow(currentV[0] - closerV[0], 2) + Math.pow(currentV[1] - closerV[1], 2));\r\n          newPosPerc = distance ? Math.min(distance / 2, round) / distance : 0;\r\n          iX = currentV[0] + (closerV[0] - currentV[0]) * newPosPerc;\r\n          vX = iX;\r\n          iY = currentV[1] - (currentV[1] - closerV[1]) * newPosPerc;\r\n          vY = iY;\r\n          oX = vX - (vX - currentV[0]) * roundCorner;\r\n          oY = vY - (vY - currentV[1]) * roundCorner;\r\n          clonedPath.setTripleAt(vX, vY, oX, oY, iX, iY, index);\r\n          index += 1;\r\n\r\n          if (i === len - 1) {\r\n            closerV = path.v[0];\r\n          } else {\r\n            closerV = path.v[i + 1];\r\n          }\r\n\r\n          distance = Math.sqrt(Math.pow(currentV[0] - closerV[0], 2) + Math.pow(currentV[1] - closerV[1], 2));\r\n          newPosPerc = distance ? Math.min(distance / 2, round) / distance : 0;\r\n          oX = currentV[0] + (closerV[0] - currentV[0]) * newPosPerc;\r\n          vX = oX;\r\n          oY = currentV[1] + (closerV[1] - currentV[1]) * newPosPerc;\r\n          vY = oY;\r\n          iX = vX - (vX - currentV[0]) * roundCorner;\r\n          iY = vY - (vY - currentV[1]) * roundCorner;\r\n          clonedPath.setTripleAt(vX, vY, oX, oY, iX, iY, index);\r\n          index += 1;\r\n        }\r\n      } else {\r\n        clonedPath.setTripleAt(path.v[i][0], path.v[i][1], path.o[i][0], path.o[i][1], path.i[i][0], path.i[i][1], index);\r\n        index += 1;\r\n      }\r\n    }\r\n\r\n    return clonedPath;\r\n  };\r\n\r\n  RoundCornersModifier.prototype.processShapes = function (_isFirstFrame) {\r\n    var shapePaths;\r\n    var i;\r\n    var len = this.shapes.length;\r\n    var j;\r\n    var jLen;\r\n    var rd = this.rd.v;\r\n\r\n    if (rd !== 0) {\r\n      var shapeData;\r\n      var localShapeCollection;\r\n\r\n      for (i = 0; i < len; i += 1) {\r\n        shapeData = this.shapes[i];\r\n        localShapeCollection = shapeData.localShapeCollection;\r\n\r\n        if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {\r\n          localShapeCollection.releaseShapes();\r\n          shapeData.shape._mdf = true;\r\n          shapePaths = shapeData.shape.paths.shapes;\r\n          jLen = shapeData.shape.paths._length;\r\n\r\n          for (j = 0; j < jLen; j += 1) {\r\n            localShapeCollection.addShape(this.processPath(shapePaths[j], rd));\r\n          }\r\n        }\r\n\r\n        shapeData.shape.paths = shapeData.localShapeCollection;\r\n      }\r\n    }\r\n\r\n    if (!this.dynamicProperties.length) {\r\n      this._mdf = false;\r\n    }\r\n  };\r\n\r\n  function floatEqual(a, b) {\r\n    return Math.abs(a - b) * 100000 <= Math.min(Math.abs(a), Math.abs(b));\r\n  }\r\n\r\n  function floatZero(f) {\r\n    return Math.abs(f) <= 0.00001;\r\n  }\r\n\r\n  function lerp(p0, p1, amount) {\r\n    return p0 * (1 - amount) + p1 * amount;\r\n  }\r\n\r\n  function lerpPoint(p0, p1, amount) {\r\n    return [lerp(p0[0], p1[0], amount), lerp(p0[1], p1[1], amount)];\r\n  }\r\n\r\n  function quadRoots(a, b, c) {\r\n    // no root\r\n    if (a === 0) return [];\r\n    var s = b * b - 4 * a * c; // Complex roots\r\n\r\n    if (s < 0) return [];\r\n    var singleRoot = -b / (2 * a); // 1 root\r\n\r\n    if (s === 0) return [singleRoot];\r\n    var delta = Math.sqrt(s) / (2 * a); // 2 roots\r\n\r\n    return [singleRoot - delta, singleRoot + delta];\r\n  }\r\n\r\n  function polynomialCoefficients(p0, p1, p2, p3) {\r\n    return [-p0 + 3 * p1 - 3 * p2 + p3, 3 * p0 - 6 * p1 + 3 * p2, -3 * p0 + 3 * p1, p0];\r\n  }\r\n\r\n  function singlePoint(p) {\r\n    return new PolynomialBezier(p, p, p, p, false);\r\n  }\r\n\r\n  function PolynomialBezier(p0, p1, p2, p3, linearize) {\r\n    if (linearize && pointEqual(p0, p1)) {\r\n      p1 = lerpPoint(p0, p3, 1 / 3);\r\n    }\r\n\r\n    if (linearize && pointEqual(p2, p3)) {\r\n      p2 = lerpPoint(p0, p3, 2 / 3);\r\n    }\r\n\r\n    var coeffx = polynomialCoefficients(p0[0], p1[0], p2[0], p3[0]);\r\n    var coeffy = polynomialCoefficients(p0[1], p1[1], p2[1], p3[1]);\r\n    this.a = [coeffx[0], coeffy[0]];\r\n    this.b = [coeffx[1], coeffy[1]];\r\n    this.c = [coeffx[2], coeffy[2]];\r\n    this.d = [coeffx[3], coeffy[3]];\r\n    this.points = [p0, p1, p2, p3];\r\n  }\r\n\r\n  PolynomialBezier.prototype.point = function (t) {\r\n    return [((this.a[0] * t + this.b[0]) * t + this.c[0]) * t + this.d[0], ((this.a[1] * t + this.b[1]) * t + this.c[1]) * t + this.d[1]];\r\n  };\r\n\r\n  PolynomialBezier.prototype.derivative = function (t) {\r\n    return [(3 * t * this.a[0] + 2 * this.b[0]) * t + this.c[0], (3 * t * this.a[1] + 2 * this.b[1]) * t + this.c[1]];\r\n  };\r\n\r\n  PolynomialBezier.prototype.tangentAngle = function (t) {\r\n    var p = this.derivative(t);\r\n    return Math.atan2(p[1], p[0]);\r\n  };\r\n\r\n  PolynomialBezier.prototype.normalAngle = function (t) {\r\n    var p = this.derivative(t);\r\n    return Math.atan2(p[0], p[1]);\r\n  };\r\n\r\n  PolynomialBezier.prototype.inflectionPoints = function () {\r\n    var denom = this.a[1] * this.b[0] - this.a[0] * this.b[1];\r\n    if (floatZero(denom)) return [];\r\n    var tcusp = -0.5 * (this.a[1] * this.c[0] - this.a[0] * this.c[1]) / denom;\r\n    var square = tcusp * tcusp - 1 / 3 * (this.b[1] * this.c[0] - this.b[0] * this.c[1]) / denom;\r\n    if (square < 0) return [];\r\n    var root = Math.sqrt(square);\r\n\r\n    if (floatZero(root)) {\r\n      if (root > 0 && root < 1) return [tcusp];\r\n      return [];\r\n    }\r\n\r\n    return [tcusp - root, tcusp + root].filter(function (r) {\r\n      return r > 0 && r < 1;\r\n    });\r\n  };\r\n\r\n  PolynomialBezier.prototype.split = function (t) {\r\n    if (t <= 0) return [singlePoint(this.points[0]), this];\r\n    if (t >= 1) return [this, singlePoint(this.points[this.points.length - 1])];\r\n    var p10 = lerpPoint(this.points[0], this.points[1], t);\r\n    var p11 = lerpPoint(this.points[1], this.points[2], t);\r\n    var p12 = lerpPoint(this.points[2], this.points[3], t);\r\n    var p20 = lerpPoint(p10, p11, t);\r\n    var p21 = lerpPoint(p11, p12, t);\r\n    var p3 = lerpPoint(p20, p21, t);\r\n    return [new PolynomialBezier(this.points[0], p10, p20, p3, true), new PolynomialBezier(p3, p21, p12, this.points[3], true)];\r\n  };\r\n\r\n  function extrema(bez, comp) {\r\n    var min = bez.points[0][comp];\r\n    var max = bez.points[bez.points.length - 1][comp];\r\n\r\n    if (min > max) {\r\n      var e = max;\r\n      max = min;\r\n      min = e;\r\n    } // Derivative roots to find min/max\r\n\r\n\r\n    var f = quadRoots(3 * bez.a[comp], 2 * bez.b[comp], bez.c[comp]);\r\n\r\n    for (var i = 0; i < f.length; i += 1) {\r\n      if (f[i] > 0 && f[i] < 1) {\r\n        var val = bez.point(f[i])[comp];\r\n        if (val < min) min = val;else if (val > max) max = val;\r\n      }\r\n    }\r\n\r\n    return {\r\n      min: min,\r\n      max: max\r\n    };\r\n  }\r\n\r\n  PolynomialBezier.prototype.bounds = function () {\r\n    return {\r\n      x: extrema(this, 0),\r\n      y: extrema(this, 1)\r\n    };\r\n  };\r\n\r\n  PolynomialBezier.prototype.boundingBox = function () {\r\n    var bounds = this.bounds();\r\n    return {\r\n      left: bounds.x.min,\r\n      right: bounds.x.max,\r\n      top: bounds.y.min,\r\n      bottom: bounds.y.max,\r\n      width: bounds.x.max - bounds.x.min,\r\n      height: bounds.y.max - bounds.y.min,\r\n      cx: (bounds.x.max + bounds.x.min) / 2,\r\n      cy: (bounds.y.max + bounds.y.min) / 2\r\n    };\r\n  };\r\n\r\n  function intersectData(bez, t1, t2) {\r\n    var box = bez.boundingBox();\r\n    return {\r\n      cx: box.cx,\r\n      cy: box.cy,\r\n      width: box.width,\r\n      height: box.height,\r\n      bez: bez,\r\n      t: (t1 + t2) / 2,\r\n      t1: t1,\r\n      t2: t2\r\n    };\r\n  }\r\n\r\n  function splitData(data) {\r\n    var split = data.bez.split(0.5);\r\n    return [intersectData(split[0], data.t1, data.t), intersectData(split[1], data.t, data.t2)];\r\n  }\r\n\r\n  function boxIntersect(b1, b2) {\r\n    return Math.abs(b1.cx - b2.cx) * 2 < b1.width + b2.width && Math.abs(b1.cy - b2.cy) * 2 < b1.height + b2.height;\r\n  }\r\n\r\n  function intersectsImpl(d1, d2, depth, tolerance, intersections, maxRecursion) {\r\n    if (!boxIntersect(d1, d2)) return;\r\n\r\n    if (depth >= maxRecursion || d1.width <= tolerance && d1.height <= tolerance && d2.width <= tolerance && d2.height <= tolerance) {\r\n      intersections.push([d1.t, d2.t]);\r\n      return;\r\n    }\r\n\r\n    var d1s = splitData(d1);\r\n    var d2s = splitData(d2);\r\n    intersectsImpl(d1s[0], d2s[0], depth + 1, tolerance, intersections, maxRecursion);\r\n    intersectsImpl(d1s[0], d2s[1], depth + 1, tolerance, intersections, maxRecursion);\r\n    intersectsImpl(d1s[1], d2s[0], depth + 1, tolerance, intersections, maxRecursion);\r\n    intersectsImpl(d1s[1], d2s[1], depth + 1, tolerance, intersections, maxRecursion);\r\n  }\r\n\r\n  PolynomialBezier.prototype.intersections = function (other, tolerance, maxRecursion) {\r\n    if (tolerance === undefined) tolerance = 2;\r\n    if (maxRecursion === undefined) maxRecursion = 7;\r\n    var intersections = [];\r\n    intersectsImpl(intersectData(this, 0, 1), intersectData(other, 0, 1), 0, tolerance, intersections, maxRecursion);\r\n    return intersections;\r\n  };\r\n\r\n  PolynomialBezier.shapeSegment = function (shapePath, index) {\r\n    var nextIndex = (index + 1) % shapePath.length();\r\n    return new PolynomialBezier(shapePath.v[index], shapePath.o[index], shapePath.i[nextIndex], shapePath.v[nextIndex], true);\r\n  };\r\n\r\n  PolynomialBezier.shapeSegmentInverted = function (shapePath, index) {\r\n    var nextIndex = (index + 1) % shapePath.length();\r\n    return new PolynomialBezier(shapePath.v[nextIndex], shapePath.i[nextIndex], shapePath.o[index], shapePath.v[index], true);\r\n  };\r\n\r\n  function crossProduct(a, b) {\r\n    return [a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0]];\r\n  }\r\n\r\n  function lineIntersection(start1, end1, start2, end2) {\r\n    var v1 = [start1[0], start1[1], 1];\r\n    var v2 = [end1[0], end1[1], 1];\r\n    var v3 = [start2[0], start2[1], 1];\r\n    var v4 = [end2[0], end2[1], 1];\r\n    var r = crossProduct(crossProduct(v1, v2), crossProduct(v3, v4));\r\n    if (floatZero(r[2])) return null;\r\n    return [r[0] / r[2], r[1] / r[2]];\r\n  }\r\n\r\n  function polarOffset(p, angle, length) {\r\n    return [p[0] + Math.cos(angle) * length, p[1] - Math.sin(angle) * length];\r\n  }\r\n\r\n  function pointDistance(p1, p2) {\r\n    return Math.hypot(p1[0] - p2[0], p1[1] - p2[1]);\r\n  }\r\n\r\n  function pointEqual(p1, p2) {\r\n    return floatEqual(p1[0], p2[0]) && floatEqual(p1[1], p2[1]);\r\n  }\r\n\r\n  function ZigZagModifier() {}\r\n\r\n  extendPrototype([ShapeModifier], ZigZagModifier);\r\n\r\n  ZigZagModifier.prototype.initModifierProperties = function (elem, data) {\r\n    this.getValue = this.processKeys;\r\n    this.amplitude = PropertyFactory.getProp(elem, data.s, 0, null, this);\r\n    this.frequency = PropertyFactory.getProp(elem, data.r, 0, null, this);\r\n    this.pointsType = PropertyFactory.getProp(elem, data.pt, 0, null, this);\r\n    this._isAnimated = this.amplitude.effectsSequence.length !== 0 || this.frequency.effectsSequence.length !== 0 || this.pointsType.effectsSequence.length !== 0;\r\n  };\r\n\r\n  function setPoint(outputBezier, point, angle, direction, amplitude, outAmplitude, inAmplitude) {\r\n    var angO = angle - Math.PI / 2;\r\n    var angI = angle + Math.PI / 2;\r\n    var px = point[0] + Math.cos(angle) * direction * amplitude;\r\n    var py = point[1] - Math.sin(angle) * direction * amplitude;\r\n    outputBezier.setTripleAt(px, py, px + Math.cos(angO) * outAmplitude, py - Math.sin(angO) * outAmplitude, px + Math.cos(angI) * inAmplitude, py - Math.sin(angI) * inAmplitude, outputBezier.length());\r\n  }\r\n\r\n  function getPerpendicularVector(pt1, pt2) {\r\n    var vector = [pt2[0] - pt1[0], pt2[1] - pt1[1]];\r\n    var rot = -Math.PI * 0.5;\r\n    var rotatedVector = [Math.cos(rot) * vector[0] - Math.sin(rot) * vector[1], Math.sin(rot) * vector[0] + Math.cos(rot) * vector[1]];\r\n    return rotatedVector;\r\n  }\r\n\r\n  function getProjectingAngle(path, cur) {\r\n    var prevIndex = cur === 0 ? path.length() - 1 : cur - 1;\r\n    var nextIndex = (cur + 1) % path.length();\r\n    var prevPoint = path.v[prevIndex];\r\n    var nextPoint = path.v[nextIndex];\r\n    var pVector = getPerpendicularVector(prevPoint, nextPoint);\r\n    return Math.atan2(0, 1) - Math.atan2(pVector[1], pVector[0]);\r\n  }\r\n\r\n  function zigZagCorner(outputBezier, path, cur, amplitude, frequency, pointType, direction) {\r\n    var angle = getProjectingAngle(path, cur);\r\n    var point = path.v[cur % path._length];\r\n    var prevPoint = path.v[cur === 0 ? path._length - 1 : cur - 1];\r\n    var nextPoint = path.v[(cur + 1) % path._length];\r\n    var prevDist = pointType === 2 ? Math.sqrt(Math.pow(point[0] - prevPoint[0], 2) + Math.pow(point[1] - prevPoint[1], 2)) : 0;\r\n    var nextDist = pointType === 2 ? Math.sqrt(Math.pow(point[0] - nextPoint[0], 2) + Math.pow(point[1] - nextPoint[1], 2)) : 0;\r\n    setPoint(outputBezier, path.v[cur % path._length], angle, direction, amplitude, nextDist / ((frequency + 1) * 2), prevDist / ((frequency + 1) * 2), pointType);\r\n  }\r\n\r\n  function zigZagSegment(outputBezier, segment, amplitude, frequency, pointType, direction) {\r\n    for (var i = 0; i < frequency; i += 1) {\r\n      var t = (i + 1) / (frequency + 1);\r\n      var dist = pointType === 2 ? Math.sqrt(Math.pow(segment.points[3][0] - segment.points[0][0], 2) + Math.pow(segment.points[3][1] - segment.points[0][1], 2)) : 0;\r\n      var angle = segment.normalAngle(t);\r\n      var point = segment.point(t);\r\n      setPoint(outputBezier, point, angle, direction, amplitude, dist / ((frequency + 1) * 2), dist / ((frequency + 1) * 2), pointType);\r\n      direction = -direction;\r\n    }\r\n\r\n    return direction;\r\n  }\r\n\r\n  ZigZagModifier.prototype.processPath = function (path, amplitude, frequency, pointType) {\r\n    var count = path._length;\r\n    var clonedPath = shapePool.newElement();\r\n    clonedPath.c = path.c;\r\n\r\n    if (!path.c) {\r\n      count -= 1;\r\n    }\r\n\r\n    if (count === 0) return clonedPath;\r\n    var direction = -1;\r\n    var segment = PolynomialBezier.shapeSegment(path, 0);\r\n    zigZagCorner(clonedPath, path, 0, amplitude, frequency, pointType, direction);\r\n\r\n    for (var i = 0; i < count; i += 1) {\r\n      direction = zigZagSegment(clonedPath, segment, amplitude, frequency, pointType, -direction);\r\n\r\n      if (i === count - 1 && !path.c) {\r\n        segment = null;\r\n      } else {\r\n        segment = PolynomialBezier.shapeSegment(path, (i + 1) % count);\r\n      }\r\n\r\n      zigZagCorner(clonedPath, path, i + 1, amplitude, frequency, pointType, direction);\r\n    }\r\n\r\n    return clonedPath;\r\n  };\r\n\r\n  ZigZagModifier.prototype.processShapes = function (_isFirstFrame) {\r\n    var shapePaths;\r\n    var i;\r\n    var len = this.shapes.length;\r\n    var j;\r\n    var jLen;\r\n    var amplitude = this.amplitude.v;\r\n    var frequency = Math.max(0, Math.round(this.frequency.v));\r\n    var pointType = this.pointsType.v;\r\n\r\n    if (amplitude !== 0) {\r\n      var shapeData;\r\n      var localShapeCollection;\r\n\r\n      for (i = 0; i < len; i += 1) {\r\n        shapeData = this.shapes[i];\r\n        localShapeCollection = shapeData.localShapeCollection;\r\n\r\n        if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {\r\n          localShapeCollection.releaseShapes();\r\n          shapeData.shape._mdf = true;\r\n          shapePaths = shapeData.shape.paths.shapes;\r\n          jLen = shapeData.shape.paths._length;\r\n\r\n          for (j = 0; j < jLen; j += 1) {\r\n            localShapeCollection.addShape(this.processPath(shapePaths[j], amplitude, frequency, pointType));\r\n          }\r\n        }\r\n\r\n        shapeData.shape.paths = shapeData.localShapeCollection;\r\n      }\r\n    }\r\n\r\n    if (!this.dynamicProperties.length) {\r\n      this._mdf = false;\r\n    }\r\n  };\r\n\r\n  function linearOffset(p1, p2, amount) {\r\n    var angle = Math.atan2(p2[0] - p1[0], p2[1] - p1[1]);\r\n    return [polarOffset(p1, angle, amount), polarOffset(p2, angle, amount)];\r\n  }\r\n\r\n  function offsetSegment(segment, amount) {\r\n    var p0;\r\n    var p1a;\r\n    var p1b;\r\n    var p2b;\r\n    var p2a;\r\n    var p3;\r\n    var e;\r\n    e = linearOffset(segment.points[0], segment.points[1], amount);\r\n    p0 = e[0];\r\n    p1a = e[1];\r\n    e = linearOffset(segment.points[1], segment.points[2], amount);\r\n    p1b = e[0];\r\n    p2b = e[1];\r\n    e = linearOffset(segment.points[2], segment.points[3], amount);\r\n    p2a = e[0];\r\n    p3 = e[1];\r\n    var p1 = lineIntersection(p0, p1a, p1b, p2b);\r\n    if (p1 === null) p1 = p1a;\r\n    var p2 = lineIntersection(p2a, p3, p1b, p2b);\r\n    if (p2 === null) p2 = p2a;\r\n    return new PolynomialBezier(p0, p1, p2, p3);\r\n  }\r\n\r\n  function joinLines(outputBezier, seg1, seg2, lineJoin, miterLimit) {\r\n    var p0 = seg1.points[3];\r\n    var p1 = seg2.points[0]; // Bevel\r\n\r\n    if (lineJoin === 3) return p0; // Connected, they don't need a joint\r\n\r\n    if (pointEqual(p0, p1)) return p0; // Round\r\n\r\n    if (lineJoin === 2) {\r\n      var angleOut = -seg1.tangentAngle(1);\r\n      var angleIn = -seg2.tangentAngle(0) + Math.PI;\r\n      var center = lineIntersection(p0, polarOffset(p0, angleOut + Math.PI / 2, 100), p1, polarOffset(p1, angleOut + Math.PI / 2, 100));\r\n      var radius = center ? pointDistance(center, p0) : pointDistance(p0, p1) / 2;\r\n      var tan = polarOffset(p0, angleOut, 2 * radius * roundCorner);\r\n      outputBezier.setXYAt(tan[0], tan[1], 'o', outputBezier.length() - 1);\r\n      tan = polarOffset(p1, angleIn, 2 * radius * roundCorner);\r\n      outputBezier.setTripleAt(p1[0], p1[1], p1[0], p1[1], tan[0], tan[1], outputBezier.length());\r\n      return p1;\r\n    } // Miter\r\n\r\n\r\n    var t0 = pointEqual(p0, seg1.points[2]) ? seg1.points[0] : seg1.points[2];\r\n    var t1 = pointEqual(p1, seg2.points[1]) ? seg2.points[3] : seg2.points[1];\r\n    var intersection = lineIntersection(t0, p0, p1, t1);\r\n\r\n    if (intersection && pointDistance(intersection, p0) < miterLimit) {\r\n      outputBezier.setTripleAt(intersection[0], intersection[1], intersection[0], intersection[1], intersection[0], intersection[1], outputBezier.length());\r\n      return intersection;\r\n    }\r\n\r\n    return p0;\r\n  }\r\n\r\n  function getIntersection(a, b) {\r\n    var intersect = a.intersections(b);\r\n    if (intersect.length && floatEqual(intersect[0][0], 1)) intersect.shift();\r\n    if (intersect.length) return intersect[0];\r\n    return null;\r\n  }\r\n\r\n  function pruneSegmentIntersection(a, b) {\r\n    var outa = a.slice();\r\n    var outb = b.slice();\r\n    var intersect = getIntersection(a[a.length - 1], b[0]);\r\n\r\n    if (intersect) {\r\n      outa[a.length - 1] = a[a.length - 1].split(intersect[0])[0];\r\n      outb[0] = b[0].split(intersect[1])[1];\r\n    }\r\n\r\n    if (a.length > 1 && b.length > 1) {\r\n      intersect = getIntersection(a[0], b[b.length - 1]);\r\n\r\n      if (intersect) {\r\n        return [[a[0].split(intersect[0])[0]], [b[b.length - 1].split(intersect[1])[1]]];\r\n      }\r\n    }\r\n\r\n    return [outa, outb];\r\n  }\r\n\r\n  function pruneIntersections(segments) {\r\n    var e;\r\n\r\n    for (var i = 1; i < segments.length; i += 1) {\r\n      e = pruneSegmentIntersection(segments[i - 1], segments[i]);\r\n      segments[i - 1] = e[0];\r\n      segments[i] = e[1];\r\n    }\r\n\r\n    if (segments.length > 1) {\r\n      e = pruneSegmentIntersection(segments[segments.length - 1], segments[0]);\r\n      segments[segments.length - 1] = e[0];\r\n      segments[0] = e[1];\r\n    }\r\n\r\n    return segments;\r\n  }\r\n\r\n  function offsetSegmentSplit(segment, amount) {\r\n    /*\r\n      We split each bezier segment into smaller pieces based\r\n      on inflection points, this ensures the control point\r\n      polygon is convex.\r\n        (A cubic bezier can have none, one, or two inflection points)\r\n    */\r\n    var flex = segment.inflectionPoints();\r\n    var left;\r\n    var right;\r\n    var split;\r\n    var mid;\r\n\r\n    if (flex.length === 0) {\r\n      return [offsetSegment(segment, amount)];\r\n    }\r\n\r\n    if (flex.length === 1 || floatEqual(flex[1], 1)) {\r\n      split = segment.split(flex[0]);\r\n      left = split[0];\r\n      right = split[1];\r\n      return [offsetSegment(left, amount), offsetSegment(right, amount)];\r\n    }\r\n\r\n    split = segment.split(flex[0]);\r\n    left = split[0];\r\n    var t = (flex[1] - flex[0]) / (1 - flex[0]);\r\n    split = split[1].split(t);\r\n    mid = split[0];\r\n    right = split[1];\r\n    return [offsetSegment(left, amount), offsetSegment(mid, amount), offsetSegment(right, amount)];\r\n  }\r\n\r\n  function OffsetPathModifier() {}\r\n\r\n  extendPrototype([ShapeModifier], OffsetPathModifier);\r\n\r\n  OffsetPathModifier.prototype.initModifierProperties = function (elem, data) {\r\n    this.getValue = this.processKeys;\r\n    this.amount = PropertyFactory.getProp(elem, data.a, 0, null, this);\r\n    this.miterLimit = PropertyFactory.getProp(elem, data.ml, 0, null, this);\r\n    this.lineJoin = data.lj;\r\n    this._isAnimated = this.amount.effectsSequence.length !== 0;\r\n  };\r\n\r\n  OffsetPathModifier.prototype.processPath = function (inputBezier, amount, lineJoin, miterLimit) {\r\n    var outputBezier = shapePool.newElement();\r\n    outputBezier.c = inputBezier.c;\r\n    var count = inputBezier.length();\r\n\r\n    if (!inputBezier.c) {\r\n      count -= 1;\r\n    }\r\n\r\n    var i;\r\n    var j;\r\n    var segment;\r\n    var multiSegments = [];\r\n\r\n    for (i = 0; i < count; i += 1) {\r\n      segment = PolynomialBezier.shapeSegment(inputBezier, i);\r\n      multiSegments.push(offsetSegmentSplit(segment, amount));\r\n    }\r\n\r\n    if (!inputBezier.c) {\r\n      for (i = count - 1; i >= 0; i -= 1) {\r\n        segment = PolynomialBezier.shapeSegmentInverted(inputBezier, i);\r\n        multiSegments.push(offsetSegmentSplit(segment, amount));\r\n      }\r\n    }\r\n\r\n    multiSegments = pruneIntersections(multiSegments); // Add bezier segments to the output and apply line joints\r\n\r\n    var lastPoint = null;\r\n    var lastSeg = null;\r\n\r\n    for (i = 0; i < multiSegments.length; i += 1) {\r\n      var multiSegment = multiSegments[i];\r\n      if (lastSeg) lastPoint = joinLines(outputBezier, lastSeg, multiSegment[0], lineJoin, miterLimit);\r\n      lastSeg = multiSegment[multiSegment.length - 1];\r\n\r\n      for (j = 0; j < multiSegment.length; j += 1) {\r\n        segment = multiSegment[j];\r\n\r\n        if (lastPoint && pointEqual(segment.points[0], lastPoint)) {\r\n          outputBezier.setXYAt(segment.points[1][0], segment.points[1][1], 'o', outputBezier.length() - 1);\r\n        } else {\r\n          outputBezier.setTripleAt(segment.points[0][0], segment.points[0][1], segment.points[1][0], segment.points[1][1], segment.points[0][0], segment.points[0][1], outputBezier.length());\r\n        }\r\n\r\n        outputBezier.setTripleAt(segment.points[3][0], segment.points[3][1], segment.points[3][0], segment.points[3][1], segment.points[2][0], segment.points[2][1], outputBezier.length());\r\n        lastPoint = segment.points[3];\r\n      }\r\n    }\r\n\r\n    if (multiSegments.length) joinLines(outputBezier, lastSeg, multiSegments[0][0], lineJoin, miterLimit);\r\n    return outputBezier;\r\n  };\r\n\r\n  OffsetPathModifier.prototype.processShapes = function (_isFirstFrame) {\r\n    var shapePaths;\r\n    var i;\r\n    var len = this.shapes.length;\r\n    var j;\r\n    var jLen;\r\n    var amount = this.amount.v;\r\n    var miterLimit = this.miterLimit.v;\r\n    var lineJoin = this.lineJoin;\r\n\r\n    if (amount !== 0) {\r\n      var shapeData;\r\n      var localShapeCollection;\r\n\r\n      for (i = 0; i < len; i += 1) {\r\n        shapeData = this.shapes[i];\r\n        localShapeCollection = shapeData.localShapeCollection;\r\n\r\n        if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {\r\n          localShapeCollection.releaseShapes();\r\n          shapeData.shape._mdf = true;\r\n          shapePaths = shapeData.shape.paths.shapes;\r\n          jLen = shapeData.shape.paths._length;\r\n\r\n          for (j = 0; j < jLen; j += 1) {\r\n            localShapeCollection.addShape(this.processPath(shapePaths[j], amount, lineJoin, miterLimit));\r\n          }\r\n        }\r\n\r\n        shapeData.shape.paths = shapeData.localShapeCollection;\r\n      }\r\n    }\r\n\r\n    if (!this.dynamicProperties.length) {\r\n      this._mdf = false;\r\n    }\r\n  };\r\n\r\n  function getFontProperties(fontData) {\r\n    var styles = fontData.fStyle ? fontData.fStyle.split(' ') : [];\r\n    var fWeight = 'normal';\r\n    var fStyle = 'normal';\r\n    var len = styles.length;\r\n    var styleName;\r\n\r\n    for (var i = 0; i < len; i += 1) {\r\n      styleName = styles[i].toLowerCase();\r\n\r\n      switch (styleName) {\r\n        case 'italic':\r\n          fStyle = 'italic';\r\n          break;\r\n\r\n        case 'bold':\r\n          fWeight = '700';\r\n          break;\r\n\r\n        case 'black':\r\n          fWeight = '900';\r\n          break;\r\n\r\n        case 'medium':\r\n          fWeight = '500';\r\n          break;\r\n\r\n        case 'regular':\r\n        case 'normal':\r\n          fWeight = '400';\r\n          break;\r\n\r\n        case 'light':\r\n        case 'thin':\r\n          fWeight = '200';\r\n          break;\r\n\r\n        default:\r\n          break;\r\n      }\r\n    }\r\n\r\n    return {\r\n      style: fStyle,\r\n      weight: fontData.fWeight || fWeight\r\n    };\r\n  }\r\n\r\n  var FontManager = function () {\r\n    var maxWaitingTime = 5000;\r\n    var emptyChar = {\r\n      w: 0,\r\n      size: 0,\r\n      shapes: [],\r\n      data: {\r\n        shapes: []\r\n      }\r\n    };\r\n    var combinedCharacters = []; // Hindi characters\r\n\r\n    combinedCharacters = combinedCharacters.concat([2304, 2305, 2306, 2307, 2362, 2363, 2364, 2364, 2366, 2367, 2368, 2369, 2370, 2371, 2372, 2373, 2374, 2375, 2376, 2377, 2378, 2379, 2380, 2381, 2382, 2383, 2387, 2388, 2389, 2390, 2391, 2402, 2403]);\r\n    var surrogateModifiers = ['d83cdffb', 'd83cdffc', 'd83cdffd', 'd83cdffe', 'd83cdfff'];\r\n    var zeroWidthJoiner = [65039, 8205];\r\n\r\n    function trimFontOptions(font) {\r\n      var familyArray = font.split(',');\r\n      var i;\r\n      var len = familyArray.length;\r\n      var enabledFamilies = [];\r\n\r\n      for (i = 0; i < len; i += 1) {\r\n        if (familyArray[i] !== 'sans-serif' && familyArray[i] !== 'monospace') {\r\n          enabledFamilies.push(familyArray[i]);\r\n        }\r\n      }\r\n\r\n      return enabledFamilies.join(',');\r\n    }\r\n\r\n    function setUpNode(font, family) {\r\n      var parentNode = createTag('span'); // Node is invisible to screen readers.\r\n\r\n      parentNode.setAttribute('aria-hidden', true);\r\n      parentNode.style.fontFamily = family;\r\n      var node = createTag('span'); // Characters that vary significantly among different fonts\r\n\r\n      node.innerText = 'giItT1WQy@!-/#'; // Visible - so we can measure it - but not on the screen\r\n\r\n      parentNode.style.position = 'absolute';\r\n      parentNode.style.left = '-10000px';\r\n      parentNode.style.top = '-10000px'; // Large font size makes even subtle changes obvious\r\n\r\n      parentNode.style.fontSize = '300px'; // Reset any font properties\r\n\r\n      parentNode.style.fontVariant = 'normal';\r\n      parentNode.style.fontStyle = 'normal';\r\n      parentNode.style.fontWeight = 'normal';\r\n      parentNode.style.letterSpacing = '0';\r\n      parentNode.appendChild(node);\r\n      document.body.appendChild(parentNode); // Remember width with no applied web font\r\n\r\n      var width = node.offsetWidth;\r\n      node.style.fontFamily = trimFontOptions(font) + ', ' + family;\r\n      return {\r\n        node: node,\r\n        w: width,\r\n        parent: parentNode\r\n      };\r\n    }\r\n\r\n    function checkLoadedFonts() {\r\n      var i;\r\n      var len = this.fonts.length;\r\n      var node;\r\n      var w;\r\n      var loadedCount = len;\r\n\r\n      for (i = 0; i < len; i += 1) {\r\n        if (this.fonts[i].loaded) {\r\n          loadedCount -= 1;\r\n        } else if (this.fonts[i].fOrigin === 'n' || this.fonts[i].origin === 0) {\r\n          this.fonts[i].loaded = true;\r\n        } else {\r\n          node = this.fonts[i].monoCase.node;\r\n          w = this.fonts[i].monoCase.w;\r\n\r\n          if (node.offsetWidth !== w) {\r\n            loadedCount -= 1;\r\n            this.fonts[i].loaded = true;\r\n          } else {\r\n            node = this.fonts[i].sansCase.node;\r\n            w = this.fonts[i].sansCase.w;\r\n\r\n            if (node.offsetWidth !== w) {\r\n              loadedCount -= 1;\r\n              this.fonts[i].loaded = true;\r\n            }\r\n          }\r\n\r\n          if (this.fonts[i].loaded) {\r\n            this.fonts[i].sansCase.parent.parentNode.removeChild(this.fonts[i].sansCase.parent);\r\n            this.fonts[i].monoCase.parent.parentNode.removeChild(this.fonts[i].monoCase.parent);\r\n          }\r\n        }\r\n      }\r\n\r\n      if (loadedCount !== 0 && Date.now() - this.initTime < maxWaitingTime) {\r\n        setTimeout(this.checkLoadedFontsBinded, 20);\r\n      } else {\r\n        setTimeout(this.setIsLoadedBinded, 10);\r\n      }\r\n    }\r\n\r\n    function createHelper(fontData, def) {\r\n      var engine = document.body && def ? 'svg' : 'canvas';\r\n      var helper;\r\n      var fontProps = getFontProperties(fontData);\r\n\r\n      if (engine === 'svg') {\r\n        var tHelper = createNS('text');\r\n        tHelper.style.fontSize = '100px'; // tHelper.style.fontFamily = fontData.fFamily;\r\n\r\n        tHelper.setAttribute('font-family', fontData.fFamily);\r\n        tHelper.setAttribute('font-style', fontProps.style);\r\n        tHelper.setAttribute('font-weight', fontProps.weight);\r\n        tHelper.textContent = '1';\r\n\r\n        if (fontData.fClass) {\r\n          tHelper.style.fontFamily = 'inherit';\r\n          tHelper.setAttribute('class', fontData.fClass);\r\n        } else {\r\n          tHelper.style.fontFamily = fontData.fFamily;\r\n        }\r\n\r\n        def.appendChild(tHelper);\r\n        helper = tHelper;\r\n      } else {\r\n        var tCanvasHelper = new OffscreenCanvas(500, 500).getContext('2d');\r\n        tCanvasHelper.font = fontProps.style + ' ' + fontProps.weight + ' 100px ' + fontData.fFamily;\r\n        helper = tCanvasHelper;\r\n      }\r\n\r\n      function measure(text) {\r\n        if (engine === 'svg') {\r\n          helper.textContent = text;\r\n          return helper.getComputedTextLength();\r\n        }\r\n\r\n        return helper.measureText(text).width;\r\n      }\r\n\r\n      return {\r\n        measureText: measure\r\n      };\r\n    }\r\n\r\n    function addFonts(fontData, defs) {\r\n      if (!fontData) {\r\n        this.isLoaded = true;\r\n        return;\r\n      }\r\n\r\n      if (this.chars) {\r\n        this.isLoaded = true;\r\n        this.fonts = fontData.list;\r\n        return;\r\n      }\r\n\r\n      if (!document.body) {\r\n        this.isLoaded = true;\r\n        fontData.list.forEach(function (data) {\r\n          data.helper = createHelper(data);\r\n          data.cache = {};\r\n        });\r\n        this.fonts = fontData.list;\r\n        return;\r\n      }\r\n\r\n      var fontArr = fontData.list;\r\n      var i;\r\n      var len = fontArr.length;\r\n      var _pendingFonts = len;\r\n\r\n      for (i = 0; i < len; i += 1) {\r\n        var shouldLoadFont = true;\r\n        var loadedSelector;\r\n        var j;\r\n        fontArr[i].loaded = false;\r\n        fontArr[i].monoCase = setUpNode(fontArr[i].fFamily, 'monospace');\r\n        fontArr[i].sansCase = setUpNode(fontArr[i].fFamily, 'sans-serif');\r\n\r\n        if (!fontArr[i].fPath) {\r\n          fontArr[i].loaded = true;\r\n          _pendingFonts -= 1;\r\n        } else if (fontArr[i].fOrigin === 'p' || fontArr[i].origin === 3) {\r\n          loadedSelector = document.querySelectorAll('style[f-forigin=\"p\"][f-family=\"' + fontArr[i].fFamily + '\"], style[f-origin=\"3\"][f-family=\"' + fontArr[i].fFamily + '\"]');\r\n\r\n          if (loadedSelector.length > 0) {\r\n            shouldLoadFont = false;\r\n          }\r\n\r\n          if (shouldLoadFont) {\r\n            var s = createTag('style');\r\n            s.setAttribute('f-forigin', fontArr[i].fOrigin);\r\n            s.setAttribute('f-origin', fontArr[i].origin);\r\n            s.setAttribute('f-family', fontArr[i].fFamily);\r\n            s.type = 'text/css';\r\n            s.innerText = '@font-face {font-family: ' + fontArr[i].fFamily + \"; font-style: normal; src: url('\" + fontArr[i].fPath + \"');}\";\r\n            defs.appendChild(s);\r\n          }\r\n        } else if (fontArr[i].fOrigin === 'g' || fontArr[i].origin === 1) {\r\n          loadedSelector = document.querySelectorAll('link[f-forigin=\"g\"], link[f-origin=\"1\"]');\r\n\r\n          for (j = 0; j < loadedSelector.length; j += 1) {\r\n            if (loadedSelector[j].href.indexOf(fontArr[i].fPath) !== -1) {\r\n              // Font is already loaded\r\n              shouldLoadFont = false;\r\n            }\r\n          }\r\n\r\n          if (shouldLoadFont) {\r\n            var l = createTag('link');\r\n            l.setAttribute('f-forigin', fontArr[i].fOrigin);\r\n            l.setAttribute('f-origin', fontArr[i].origin);\r\n            l.type = 'text/css';\r\n            l.rel = 'stylesheet';\r\n            l.href = fontArr[i].fPath;\r\n            document.body.appendChild(l);\r\n          }\r\n        } else if (fontArr[i].fOrigin === 't' || fontArr[i].origin === 2) {\r\n          loadedSelector = document.querySelectorAll('script[f-forigin=\"t\"], script[f-origin=\"2\"]');\r\n\r\n          for (j = 0; j < loadedSelector.length; j += 1) {\r\n            if (fontArr[i].fPath === loadedSelector[j].src) {\r\n              // Font is already loaded\r\n              shouldLoadFont = false;\r\n            }\r\n          }\r\n\r\n          if (shouldLoadFont) {\r\n            var sc = createTag('link');\r\n            sc.setAttribute('f-forigin', fontArr[i].fOrigin);\r\n            sc.setAttribute('f-origin', fontArr[i].origin);\r\n            sc.setAttribute('rel', 'stylesheet');\r\n            sc.setAttribute('href', fontArr[i].fPath);\r\n            defs.appendChild(sc);\r\n          }\r\n        }\r\n\r\n        fontArr[i].helper = createHelper(fontArr[i], defs);\r\n        fontArr[i].cache = {};\r\n        this.fonts.push(fontArr[i]);\r\n      }\r\n\r\n      if (_pendingFonts === 0) {\r\n        this.isLoaded = true;\r\n      } else {\r\n        // On some cases even if the font is loaded, it won't load correctly when measuring text on canvas.\r\n        // Adding this timeout seems to fix it\r\n        setTimeout(this.checkLoadedFonts.bind(this), 100);\r\n      }\r\n    }\r\n\r\n    function addChars(chars) {\r\n      if (!chars) {\r\n        return;\r\n      }\r\n\r\n      if (!this.chars) {\r\n        this.chars = [];\r\n      }\r\n\r\n      var i;\r\n      var len = chars.length;\r\n      var j;\r\n      var jLen = this.chars.length;\r\n      var found;\r\n\r\n      for (i = 0; i < len; i += 1) {\r\n        j = 0;\r\n        found = false;\r\n\r\n        while (j < jLen) {\r\n          if (this.chars[j].style === chars[i].style && this.chars[j].fFamily === chars[i].fFamily && this.chars[j].ch === chars[i].ch) {\r\n            found = true;\r\n          }\r\n\r\n          j += 1;\r\n        }\r\n\r\n        if (!found) {\r\n          this.chars.push(chars[i]);\r\n          jLen += 1;\r\n        }\r\n      }\r\n    }\r\n\r\n    function getCharData(_char, style, font) {\r\n      var i = 0;\r\n      var len = this.chars.length;\r\n\r\n      while (i < len) {\r\n        if (this.chars[i].ch === _char && this.chars[i].style === style && this.chars[i].fFamily === font) {\r\n          return this.chars[i];\r\n        }\r\n\r\n        i += 1;\r\n      }\r\n\r\n      if ((typeof _char === 'string' && _char.charCodeAt(0) !== 13 || !_char) && console && console.warn // eslint-disable-line no-console\r\n      && !this._warned) {\r\n        this._warned = true;\r\n        console.warn('Missing character from exported characters list: ', _char, style, font); // eslint-disable-line no-console\r\n      }\r\n\r\n      return emptyChar;\r\n    }\r\n\r\n    function measureText(_char2, fontName, size) {\r\n      var fontData = this.getFontByName(fontName);\r\n\r\n      var index = _char2.charCodeAt(0);\r\n\r\n      if (!fontData.cache[index + 1]) {\r\n        var tHelper = fontData.helper;\r\n\r\n        if (_char2 === ' ') {\r\n          var doubleSize = tHelper.measureText('|' + _char2 + '|');\r\n          var singleSize = tHelper.measureText('||');\r\n          fontData.cache[index + 1] = (doubleSize - singleSize) / 100;\r\n        } else {\r\n          fontData.cache[index + 1] = tHelper.measureText(_char2) / 100;\r\n        }\r\n      }\r\n\r\n      return fontData.cache[index + 1] * size;\r\n    }\r\n\r\n    function getFontByName(name) {\r\n      var i = 0;\r\n      var len = this.fonts.length;\r\n\r\n      while (i < len) {\r\n        if (this.fonts[i].fName === name) {\r\n          return this.fonts[i];\r\n        }\r\n\r\n        i += 1;\r\n      }\r\n\r\n      return this.fonts[0];\r\n    }\r\n\r\n    function isModifier(firstCharCode, secondCharCode) {\r\n      var sum = firstCharCode.toString(16) + secondCharCode.toString(16);\r\n      return surrogateModifiers.indexOf(sum) !== -1;\r\n    }\r\n\r\n    function isZeroWidthJoiner(firstCharCode, secondCharCode) {\r\n      if (!secondCharCode) {\r\n        return firstCharCode === zeroWidthJoiner[1];\r\n      }\r\n\r\n      return firstCharCode === zeroWidthJoiner[0] && secondCharCode === zeroWidthJoiner[1];\r\n    }\r\n\r\n    function isCombinedCharacter(_char3) {\r\n      return combinedCharacters.indexOf(_char3) !== -1;\r\n    }\r\n\r\n    function setIsLoaded() {\r\n      this.isLoaded = true;\r\n    }\r\n\r\n    var Font = function Font() {\r\n      this.fonts = [];\r\n      this.chars = null;\r\n      this.typekitLoaded = 0;\r\n      this.isLoaded = false;\r\n      this._warned = false;\r\n      this.initTime = Date.now();\r\n      this.setIsLoadedBinded = this.setIsLoaded.bind(this);\r\n      this.checkLoadedFontsBinded = this.checkLoadedFonts.bind(this);\r\n    };\r\n\r\n    Font.isModifier = isModifier;\r\n    Font.isZeroWidthJoiner = isZeroWidthJoiner;\r\n    Font.isCombinedCharacter = isCombinedCharacter;\r\n    var fontPrototype = {\r\n      addChars: addChars,\r\n      addFonts: addFonts,\r\n      getCharData: getCharData,\r\n      getFontByName: getFontByName,\r\n      measureText: measureText,\r\n      checkLoadedFonts: checkLoadedFonts,\r\n      setIsLoaded: setIsLoaded\r\n    };\r\n    Font.prototype = fontPrototype;\r\n    return Font;\r\n  }();\r\n\r\n  function RenderableElement() {}\r\n\r\n  RenderableElement.prototype = {\r\n    initRenderable: function initRenderable() {\r\n      // layer's visibility related to inpoint and outpoint. Rename isVisible to isInRange\r\n      this.isInRange = false; // layer's display state\r\n\r\n      this.hidden = false; // If layer's transparency equals 0, it can be hidden\r\n\r\n      this.isTransparent = false; // list of animated components\r\n\r\n      this.renderableComponents = [];\r\n    },\r\n    addRenderableComponent: function addRenderableComponent(component) {\r\n      if (this.renderableComponents.indexOf(component) === -1) {\r\n        this.renderableComponents.push(component);\r\n      }\r\n    },\r\n    removeRenderableComponent: function removeRenderableComponent(component) {\r\n      if (this.renderableComponents.indexOf(component) !== -1) {\r\n        this.renderableComponents.splice(this.renderableComponents.indexOf(component), 1);\r\n      }\r\n    },\r\n    prepareRenderableFrame: function prepareRenderableFrame(num) {\r\n      this.checkLayerLimits(num);\r\n    },\r\n    checkTransparency: function checkTransparency() {\r\n      if (this.finalTransform.mProp.o.v <= 0) {\r\n        if (!this.isTransparent && this.globalData.renderConfig.hideOnTransparent) {\r\n          this.isTransparent = true;\r\n          this.hide();\r\n        }\r\n      } else if (this.isTransparent) {\r\n        this.isTransparent = false;\r\n        this.show();\r\n      }\r\n    },\r\n\r\n    /**\r\n       * @function\r\n       * Initializes frame related properties.\r\n       *\r\n       * @param {number} num\r\n       * current frame number in Layer's time\r\n       *\r\n       */\r\n    checkLayerLimits: function checkLayerLimits(num) {\r\n      if (this.data.ip - this.data.st <= num && this.data.op - this.data.st > num) {\r\n        if (this.isInRange !== true) {\r\n          this.globalData._mdf = true;\r\n          this._mdf = true;\r\n          this.isInRange = true;\r\n          this.show();\r\n        }\r\n      } else if (this.isInRange !== false) {\r\n        this.globalData._mdf = true;\r\n        this.isInRange = false;\r\n        this.hide();\r\n      }\r\n    },\r\n    renderRenderable: function renderRenderable() {\r\n      var i;\r\n      var len = this.renderableComponents.length;\r\n\r\n      for (i = 0; i < len; i += 1) {\r\n        this.renderableComponents[i].renderFrame(this._isFirstFrame);\r\n      }\r\n      /* this.maskManager.renderFrame(this.finalTransform.mat);\r\n          this.renderableEffectsManager.renderFrame(this._isFirstFrame); */\r\n\r\n    },\r\n    sourceRectAtTime: function sourceRectAtTime() {\r\n      return {\r\n        top: 0,\r\n        left: 0,\r\n        width: 100,\r\n        height: 100\r\n      };\r\n    },\r\n    getLayerSize: function getLayerSize() {\r\n      if (this.data.ty === 5) {\r\n        return {\r\n          w: this.data.textData.width,\r\n          h: this.data.textData.height\r\n        };\r\n      }\r\n\r\n      return {\r\n        w: this.data.width,\r\n        h: this.data.height\r\n      };\r\n    }\r\n  };\r\n\r\n  var getBlendMode = function () {\r\n    var blendModeEnums = {\r\n      0: 'source-over',\r\n      1: 'multiply',\r\n      2: 'screen',\r\n      3: 'overlay',\r\n      4: 'darken',\r\n      5: 'lighten',\r\n      6: 'color-dodge',\r\n      7: 'color-burn',\r\n      8: 'hard-light',\r\n      9: 'soft-light',\r\n      10: 'difference',\r\n      11: 'exclusion',\r\n      12: 'hue',\r\n      13: 'saturation',\r\n      14: 'color',\r\n      15: 'luminosity'\r\n    };\r\n    return function (mode) {\r\n      return blendModeEnums[mode] || '';\r\n    };\r\n  }();\r\n\r\n  function SliderEffect(data, elem, container) {\r\n    this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\r\n  }\r\n\r\n  function AngleEffect(data, elem, container) {\r\n    this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\r\n  }\r\n\r\n  function ColorEffect(data, elem, container) {\r\n    this.p = PropertyFactory.getProp(elem, data.v, 1, 0, container);\r\n  }\r\n\r\n  function PointEffect(data, elem, container) {\r\n    this.p = PropertyFactory.getProp(elem, data.v, 1, 0, container);\r\n  }\r\n\r\n  function LayerIndexEffect(data, elem, container) {\r\n    this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\r\n  }\r\n\r\n  function MaskIndexEffect(data, elem, container) {\r\n    this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\r\n  }\r\n\r\n  function CheckboxEffect(data, elem, container) {\r\n    this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\r\n  }\r\n\r\n  function NoValueEffect() {\r\n    this.p = {};\r\n  }\r\n\r\n  function EffectsManager(data, element) {\r\n    var effects = data.ef || [];\r\n    this.effectElements = [];\r\n    var i;\r\n    var len = effects.length;\r\n    var effectItem;\r\n\r\n    for (i = 0; i < len; i += 1) {\r\n      effectItem = new GroupEffect(effects[i], element);\r\n      this.effectElements.push(effectItem);\r\n    }\r\n  }\r\n\r\n  function GroupEffect(data, element) {\r\n    this.init(data, element);\r\n  }\r\n\r\n  extendPrototype([DynamicPropertyContainer], GroupEffect);\r\n  GroupEffect.prototype.getValue = GroupEffect.prototype.iterateDynamicProperties;\r\n\r\n  GroupEffect.prototype.init = function (data, element) {\r\n    this.data = data;\r\n    this.effectElements = [];\r\n    this.initDynamicPropertyContainer(element);\r\n    var i;\r\n    var len = this.data.ef.length;\r\n    var eff;\r\n    var effects = this.data.ef;\r\n\r\n    for (i = 0; i < len; i += 1) {\r\n      eff = null;\r\n\r\n      switch (effects[i].ty) {\r\n        case 0:\r\n          eff = new SliderEffect(effects[i], element, this);\r\n          break;\r\n\r\n        case 1:\r\n          eff = new AngleEffect(effects[i], element, this);\r\n          break;\r\n\r\n        case 2:\r\n          eff = new ColorEffect(effects[i], element, this);\r\n          break;\r\n\r\n        case 3:\r\n          eff = new PointEffect(effects[i], element, this);\r\n          break;\r\n\r\n        case 4:\r\n        case 7:\r\n          eff = new CheckboxEffect(effects[i], element, this);\r\n          break;\r\n\r\n        case 10:\r\n          eff = new LayerIndexEffect(effects[i], element, this);\r\n          break;\r\n\r\n        case 11:\r\n          eff = new MaskIndexEffect(effects[i], element, this);\r\n          break;\r\n\r\n        case 5:\r\n          eff = new EffectsManager(effects[i], element, this);\r\n          break;\r\n        // case 6:\r\n\r\n        default:\r\n          eff = new NoValueEffect(effects[i], element, this);\r\n          break;\r\n      }\r\n\r\n      if (eff) {\r\n        this.effectElements.push(eff);\r\n      }\r\n    }\r\n  };\r\n\r\n  function BaseElement() {}\r\n\r\n  BaseElement.prototype = {\r\n    checkMasks: function checkMasks() {\r\n      if (!this.data.hasMask) {\r\n        return false;\r\n      }\r\n\r\n      var i = 0;\r\n      var len = this.data.masksProperties.length;\r\n\r\n      while (i < len) {\r\n        if (this.data.masksProperties[i].mode !== 'n' && this.data.masksProperties[i].cl !== false) {\r\n          return true;\r\n        }\r\n\r\n        i += 1;\r\n      }\r\n\r\n      return false;\r\n    },\r\n    initExpressions: function initExpressions() {\r\n      var expressionsInterfaces = getExpressionInterfaces();\r\n\r\n      if (!expressionsInterfaces) {\r\n        return;\r\n      }\r\n\r\n      var LayerExpressionInterface = expressionsInterfaces('layer');\r\n      var EffectsExpressionInterface = expressionsInterfaces('effects');\r\n      var ShapeExpressionInterface = expressionsInterfaces('shape');\r\n      var TextExpressionInterface = expressionsInterfaces('text');\r\n      var CompExpressionInterface = expressionsInterfaces('comp');\r\n      this.layerInterface = LayerExpressionInterface(this);\r\n\r\n      if (this.data.hasMask && this.maskManager) {\r\n        this.layerInterface.registerMaskInterface(this.maskManager);\r\n      }\r\n\r\n      var effectsInterface = EffectsExpressionInterface.createEffectsInterface(this, this.layerInterface);\r\n      this.layerInterface.registerEffectsInterface(effectsInterface);\r\n\r\n      if (this.data.ty === 0 || this.data.xt) {\r\n        this.compInterface = CompExpressionInterface(this);\r\n      } else if (this.data.ty === 4) {\r\n        this.layerInterface.shapeInterface = ShapeExpressionInterface(this.shapesData, this.itemsData, this.layerInterface);\r\n        this.layerInterface.content = this.layerInterface.shapeInterface;\r\n      } else if (this.data.ty === 5) {\r\n        this.layerInterface.textInterface = TextExpressionInterface(this);\r\n        this.layerInterface.text = this.layerInterface.textInterface;\r\n      }\r\n    },\r\n    setBlendMode: function setBlendMode() {\r\n      var blendModeValue = getBlendMode(this.data.bm);\r\n      var elem = this.baseElement || this.layerElement;\r\n      elem.style['mix-blend-mode'] = blendModeValue;\r\n    },\r\n    initBaseData: function initBaseData(data, globalData, comp) {\r\n      this.globalData = globalData;\r\n      this.comp = comp;\r\n      this.data = data;\r\n      this.layerId = createElementID(); // Stretch factor for old animations missing this property.\r\n\r\n      if (!this.data.sr) {\r\n        this.data.sr = 1;\r\n      } // effects manager\r\n\r\n\r\n      this.effectsManager = new EffectsManager(this.data, this, this.dynamicProperties);\r\n    },\r\n    getType: function getType() {\r\n      return this.type;\r\n    },\r\n    sourceRectAtTime: function sourceRectAtTime() {}\r\n  };\r\n\r\n  /**\r\n   * @file\r\n   * Handles element's layer frame update.\r\n   * Checks layer in point and out point\r\n   *\r\n   */\r\n  function FrameElement() {}\r\n\r\n  FrameElement.prototype = {\r\n    /**\r\n       * @function\r\n       * Initializes frame related properties.\r\n       *\r\n       */\r\n    initFrame: function initFrame() {\r\n      // set to true when inpoint is rendered\r\n      this._isFirstFrame = false; // list of animated properties\r\n\r\n      this.dynamicProperties = []; // If layer has been modified in current tick this will be true\r\n\r\n      this._mdf = false;\r\n    },\r\n\r\n    /**\r\n       * @function\r\n       * Calculates all dynamic values\r\n       *\r\n       * @param {number} num\r\n       * current frame number in Layer's time\r\n       * @param {boolean} isVisible\r\n       * if layers is currently in range\r\n       *\r\n       */\r\n    prepareProperties: function prepareProperties(num, isVisible) {\r\n      var i;\r\n      var len = this.dynamicProperties.length;\r\n\r\n      for (i = 0; i < len; i += 1) {\r\n        if (isVisible || this._isParent && this.dynamicProperties[i].propType === 'transform') {\r\n          this.dynamicProperties[i].getValue();\r\n\r\n          if (this.dynamicProperties[i]._mdf) {\r\n            this.globalData._mdf = true;\r\n            this._mdf = true;\r\n          }\r\n        }\r\n      }\r\n    },\r\n    addDynamicProperty: function addDynamicProperty(prop) {\r\n      if (this.dynamicProperties.indexOf(prop) === -1) {\r\n        this.dynamicProperties.push(prop);\r\n      }\r\n    }\r\n  };\r\n\r\n  function FootageElement(data, globalData, comp) {\r\n    this.initFrame();\r\n    this.initRenderable();\r\n    this.assetData = globalData.getAssetData(data.refId);\r\n    this.footageData = globalData.imageLoader.getAsset(this.assetData);\r\n    this.initBaseData(data, globalData, comp);\r\n  }\r\n\r\n  FootageElement.prototype.prepareFrame = function () {};\r\n\r\n  extendPrototype([RenderableElement, BaseElement, FrameElement], FootageElement);\r\n\r\n  FootageElement.prototype.getBaseElement = function () {\r\n    return null;\r\n  };\r\n\r\n  FootageElement.prototype.renderFrame = function () {};\r\n\r\n  FootageElement.prototype.destroy = function () {};\r\n\r\n  FootageElement.prototype.initExpressions = function () {\r\n    var expressionsInterfaces = getExpressionInterfaces();\r\n\r\n    if (!expressionsInterfaces) {\r\n      return;\r\n    }\r\n\r\n    var FootageInterface = expressionsInterfaces('footage');\r\n    this.layerInterface = FootageInterface(this);\r\n  };\r\n\r\n  FootageElement.prototype.getFootageData = function () {\r\n    return this.footageData;\r\n  };\r\n\r\n  function AudioElement(data, globalData, comp) {\r\n    this.initFrame();\r\n    this.initRenderable();\r\n    this.assetData = globalData.getAssetData(data.refId);\r\n    this.initBaseData(data, globalData, comp);\r\n    this._isPlaying = false;\r\n    this._canPlay = false;\r\n    var assetPath = this.globalData.getAssetsPath(this.assetData);\r\n    this.audio = this.globalData.audioController.createAudio(assetPath);\r\n    this._currentTime = 0;\r\n    this.globalData.audioController.addAudio(this);\r\n    this._volumeMultiplier = 1;\r\n    this._volume = 1;\r\n    this._previousVolume = null;\r\n    this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : {\r\n      _placeholder: true\r\n    };\r\n    this.lv = PropertyFactory.getProp(this, data.au && data.au.lv ? data.au.lv : {\r\n      k: [100]\r\n    }, 1, 0.01, this);\r\n  }\r\n\r\n  AudioElement.prototype.prepareFrame = function (num) {\r\n    this.prepareRenderableFrame(num, true);\r\n    this.prepareProperties(num, true);\r\n\r\n    if (!this.tm._placeholder) {\r\n      var timeRemapped = this.tm.v;\r\n      this._currentTime = timeRemapped;\r\n    } else {\r\n      this._currentTime = num / this.data.sr;\r\n    }\r\n\r\n    this._volume = this.lv.v[0];\r\n    var totalVolume = this._volume * this._volumeMultiplier;\r\n\r\n    if (this._previousVolume !== totalVolume) {\r\n      this._previousVolume = totalVolume;\r\n      this.audio.volume(totalVolume);\r\n    }\r\n  };\r\n\r\n  extendPrototype([RenderableElement, BaseElement, FrameElement], AudioElement);\r\n\r\n  AudioElement.prototype.renderFrame = function () {\r\n    if (this.isInRange && this._canPlay) {\r\n      if (!this._isPlaying) {\r\n        this.audio.play();\r\n        this.audio.seek(this._currentTime / this.globalData.frameRate);\r\n        this._isPlaying = true;\r\n      } else if (!this.audio.playing() || Math.abs(this._currentTime / this.globalData.frameRate - this.audio.seek()) > 0.1) {\r\n        this.audio.seek(this._currentTime / this.globalData.frameRate);\r\n      }\r\n    }\r\n  };\r\n\r\n  AudioElement.prototype.show = function () {// this.audio.play()\r\n  };\r\n\r\n  AudioElement.prototype.hide = function () {\r\n    this.audio.pause();\r\n    this._isPlaying = false;\r\n  };\r\n\r\n  AudioElement.prototype.pause = function () {\r\n    this.audio.pause();\r\n    this._isPlaying = false;\r\n    this._canPlay = false;\r\n  };\r\n\r\n  AudioElement.prototype.resume = function () {\r\n    this._canPlay = true;\r\n  };\r\n\r\n  AudioElement.prototype.setRate = function (rateValue) {\r\n    this.audio.rate(rateValue);\r\n  };\r\n\r\n  AudioElement.prototype.volume = function (volumeValue) {\r\n    this._volumeMultiplier = volumeValue;\r\n    this._previousVolume = volumeValue * this._volume;\r\n    this.audio.volume(this._previousVolume);\r\n  };\r\n\r\n  AudioElement.prototype.getBaseElement = function () {\r\n    return null;\r\n  };\r\n\r\n  AudioElement.prototype.destroy = function () {};\r\n\r\n  AudioElement.prototype.sourceRectAtTime = function () {};\r\n\r\n  AudioElement.prototype.initExpressions = function () {};\r\n\r\n  function BaseRenderer() {}\r\n\r\n  BaseRenderer.prototype.checkLayers = function (num) {\r\n    var i;\r\n    var len = this.layers.length;\r\n    var data;\r\n    this.completeLayers = true;\r\n\r\n    for (i = len - 1; i >= 0; i -= 1) {\r\n      if (!this.elements[i]) {\r\n        data = this.layers[i];\r\n\r\n        if (data.ip - data.st <= num - this.layers[i].st && data.op - data.st > num - this.layers[i].st) {\r\n          this.buildItem(i);\r\n        }\r\n      }\r\n\r\n      this.completeLayers = this.elements[i] ? this.completeLayers : false;\r\n    }\r\n\r\n    this.checkPendingElements();\r\n  };\r\n\r\n  BaseRenderer.prototype.createItem = function (layer) {\r\n    switch (layer.ty) {\r\n      case 2:\r\n        return this.createImage(layer);\r\n\r\n      case 0:\r\n        return this.createComp(layer);\r\n\r\n      case 1:\r\n        return this.createSolid(layer);\r\n\r\n      case 3:\r\n        return this.createNull(layer);\r\n\r\n      case 4:\r\n        return this.createShape(layer);\r\n\r\n      case 5:\r\n        return this.createText(layer);\r\n\r\n      case 6:\r\n        return this.createAudio(layer);\r\n\r\n      case 13:\r\n        return this.createCamera(layer);\r\n\r\n      case 15:\r\n        return this.createFootage(layer);\r\n\r\n      default:\r\n        return this.createNull(layer);\r\n    }\r\n  };\r\n\r\n  BaseRenderer.prototype.createCamera = function () {\r\n    throw new Error('You\\'re using a 3d camera. Try the html renderer.');\r\n  };\r\n\r\n  BaseRenderer.prototype.createAudio = function (data) {\r\n    return new AudioElement(data, this.globalData, this);\r\n  };\r\n\r\n  BaseRenderer.prototype.createFootage = function (data) {\r\n    return new FootageElement(data, this.globalData, this);\r\n  };\r\n\r\n  BaseRenderer.prototype.buildAllItems = function () {\r\n    var i;\r\n    var len = this.layers.length;\r\n\r\n    for (i = 0; i < len; i += 1) {\r\n      this.buildItem(i);\r\n    }\r\n\r\n    this.checkPendingElements();\r\n  };\r\n\r\n  BaseRenderer.prototype.includeLayers = function (newLayers) {\r\n    this.completeLayers = false;\r\n    var i;\r\n    var len = newLayers.length;\r\n    var j;\r\n    var jLen = this.layers.length;\r\n\r\n    for (i = 0; i < len; i += 1) {\r\n      j = 0;\r\n\r\n      while (j < jLen) {\r\n        if (this.layers[j].id === newLayers[i].id) {\r\n          this.layers[j] = newLayers[i];\r\n          break;\r\n        }\r\n\r\n        j += 1;\r\n      }\r\n    }\r\n  };\r\n\r\n  BaseRenderer.prototype.setProjectInterface = function (pInterface) {\r\n    this.globalData.projectInterface = pInterface;\r\n  };\r\n\r\n  BaseRenderer.prototype.initItems = function () {\r\n    if (!this.globalData.progressiveLoad) {\r\n      this.buildAllItems();\r\n    }\r\n  };\r\n\r\n  BaseRenderer.prototype.buildElementParenting = function (element, parentName, hierarchy) {\r\n    var elements = this.elements;\r\n    var layers = this.layers;\r\n    var i = 0;\r\n    var len = layers.length;\r\n\r\n    while (i < len) {\r\n      if (layers[i].ind == parentName) {\r\n        // eslint-disable-line eqeqeq\r\n        if (!elements[i] || elements[i] === true) {\r\n          this.buildItem(i);\r\n          this.addPendingElement(element);\r\n        } else {\r\n          hierarchy.push(elements[i]);\r\n          elements[i].setAsParent();\r\n\r\n          if (layers[i].parent !== undefined) {\r\n            this.buildElementParenting(element, layers[i].parent, hierarchy);\r\n          } else {\r\n            element.setHierarchy(hierarchy);\r\n          }\r\n        }\r\n      }\r\n\r\n      i += 1;\r\n    }\r\n  };\r\n\r\n  BaseRenderer.prototype.addPendingElement = function (element) {\r\n    this.pendingElements.push(element);\r\n  };\r\n\r\n  BaseRenderer.prototype.searchExtraCompositions = function (assets) {\r\n    var i;\r\n    var len = assets.length;\r\n\r\n    for (i = 0; i < len; i += 1) {\r\n      if (assets[i].xt) {\r\n        var comp = this.createComp(assets[i]);\r\n        comp.initExpressions();\r\n        this.globalData.projectInterface.registerComposition(comp);\r\n      }\r\n    }\r\n  };\r\n\r\n  BaseRenderer.prototype.getElementByPath = function (path) {\r\n    var pathValue = path.shift();\r\n    var element;\r\n\r\n    if (typeof pathValue === 'number') {\r\n      element = this.elements[pathValue];\r\n    } else {\r\n      var i;\r\n      var len = this.elements.length;\r\n\r\n      for (i = 0; i < len; i += 1) {\r\n        if (this.elements[i].data.nm === pathValue) {\r\n          element = this.elements[i];\r\n          break;\r\n        }\r\n      }\r\n    }\r\n\r\n    if (path.length === 0) {\r\n      return element;\r\n    }\r\n\r\n    return element.getElementByPath(path);\r\n  };\r\n\r\n  BaseRenderer.prototype.setupGlobalData = function (animData, fontsContainer) {\r\n    this.globalData.fontManager = new FontManager();\r\n    this.globalData.fontManager.addChars(animData.chars);\r\n    this.globalData.fontManager.addFonts(animData.fonts, fontsContainer);\r\n    this.globalData.getAssetData = this.animationItem.getAssetData.bind(this.animationItem);\r\n    this.globalData.getAssetsPath = this.animationItem.getAssetsPath.bind(this.animationItem);\r\n    this.globalData.imageLoader = this.animationItem.imagePreloader;\r\n    this.globalData.audioController = this.animationItem.audioController;\r\n    this.globalData.frameId = 0;\r\n    this.globalData.frameRate = animData.fr;\r\n    this.globalData.nm = animData.nm;\r\n    this.globalData.compSize = {\r\n      w: animData.w,\r\n      h: animData.h\r\n    };\r\n  };\r\n\r\n  function TransformElement() {}\r\n\r\n  TransformElement.prototype = {\r\n    initTransform: function initTransform() {\r\n      this.finalTransform = {\r\n        mProp: this.data.ks ? TransformPropertyFactory.getTransformProperty(this, this.data.ks, this) : {\r\n          o: 0\r\n        },\r\n        _matMdf: false,\r\n        _opMdf: false,\r\n        mat: new Matrix()\r\n      };\r\n\r\n      if (this.data.ao) {\r\n        this.finalTransform.mProp.autoOriented = true;\r\n      } // TODO: check TYPE 11: Guided elements\r\n\r\n\r\n      if (this.data.ty !== 11) {// this.createElements();\r\n      }\r\n    },\r\n    renderTransform: function renderTransform() {\r\n      this.finalTransform._opMdf = this.finalTransform.mProp.o._mdf || this._isFirstFrame;\r\n      this.finalTransform._matMdf = this.finalTransform.mProp._mdf || this._isFirstFrame;\r\n\r\n      if (this.hierarchy) {\r\n        var mat;\r\n        var finalMat = this.finalTransform.mat;\r\n        var i = 0;\r\n        var len = this.hierarchy.length; // Checking if any of the transformation matrices in the hierarchy chain has changed.\r\n\r\n        if (!this.finalTransform._matMdf) {\r\n          while (i < len) {\r\n            if (this.hierarchy[i].finalTransform.mProp._mdf) {\r\n              this.finalTransform._matMdf = true;\r\n              break;\r\n            }\r\n\r\n            i += 1;\r\n          }\r\n        }\r\n\r\n        if (this.finalTransform._matMdf) {\r\n          mat = this.finalTransform.mProp.v.props;\r\n          finalMat.cloneFromProps(mat);\r\n\r\n          for (i = 0; i < len; i += 1) {\r\n            mat = this.hierarchy[i].finalTransform.mProp.v.props;\r\n            finalMat.transform(mat[0], mat[1], mat[2], mat[3], mat[4], mat[5], mat[6], mat[7], mat[8], mat[9], mat[10], mat[11], mat[12], mat[13], mat[14], mat[15]);\r\n          }\r\n        }\r\n      }\r\n    },\r\n    globalToLocal: function globalToLocal(pt) {\r\n      var transforms = [];\r\n      transforms.push(this.finalTransform);\r\n      var flag = true;\r\n      var comp = this.comp;\r\n\r\n      while (flag) {\r\n        if (comp.finalTransform) {\r\n          if (comp.data.hasMask) {\r\n            transforms.splice(0, 0, comp.finalTransform);\r\n          }\r\n\r\n          comp = comp.comp;\r\n        } else {\r\n          flag = false;\r\n        }\r\n      }\r\n\r\n      var i;\r\n      var len = transforms.length;\r\n      var ptNew;\r\n\r\n      for (i = 0; i < len; i += 1) {\r\n        ptNew = transforms[i].mat.applyToPointArray(0, 0, 0); // ptNew = transforms[i].mat.applyToPointArray(pt[0],pt[1],pt[2]);\r\n\r\n        pt = [pt[0] - ptNew[0], pt[1] - ptNew[1], 0];\r\n      }\r\n\r\n      return pt;\r\n    },\r\n    mHelper: new Matrix()\r\n  };\r\n\r\n  function MaskElement(data, element, globalData) {\r\n    this.data = data;\r\n    this.element = element;\r\n    this.globalData = globalData;\r\n    this.storedData = [];\r\n    this.masksProperties = this.data.masksProperties || [];\r\n    this.maskElement = null;\r\n    var defs = this.globalData.defs;\r\n    var i;\r\n    var len = this.masksProperties ? this.masksProperties.length : 0;\r\n    this.viewData = createSizedArray(len);\r\n    this.solidPath = '';\r\n    var path;\r\n    var properties = this.masksProperties;\r\n    var count = 0;\r\n    var currentMasks = [];\r\n    var j;\r\n    var jLen;\r\n    var layerId = createElementID();\r\n    var rect;\r\n    var expansor;\r\n    var feMorph;\r\n    var x;\r\n    var maskType = 'clipPath';\r\n    var maskRef = 'clip-path';\r\n\r\n    for (i = 0; i < len; i += 1) {\r\n      if (properties[i].mode !== 'a' && properties[i].mode !== 'n' || properties[i].inv || properties[i].o.k !== 100 || properties[i].o.x) {\r\n        maskType = 'mask';\r\n        maskRef = 'mask';\r\n      }\r\n\r\n      if ((properties[i].mode === 's' || properties[i].mode === 'i') && count === 0) {\r\n        rect = createNS('rect');\r\n        rect.setAttribute('fill', '#ffffff');\r\n        rect.setAttribute('width', this.element.comp.data.w || 0);\r\n        rect.setAttribute('height', this.element.comp.data.h || 0);\r\n        currentMasks.push(rect);\r\n      } else {\r\n        rect = null;\r\n      }\r\n\r\n      path = createNS('path');\r\n\r\n      if (properties[i].mode === 'n') {\r\n        // TODO move this to a factory or to a constructor\r\n        this.viewData[i] = {\r\n          op: PropertyFactory.getProp(this.element, properties[i].o, 0, 0.01, this.element),\r\n          prop: ShapePropertyFactory.getShapeProp(this.element, properties[i], 3),\r\n          elem: path,\r\n          lastPath: ''\r\n        };\r\n        defs.appendChild(path);\r\n      } else {\r\n        count += 1;\r\n        path.setAttribute('fill', properties[i].mode === 's' ? '#000000' : '#ffffff');\r\n        path.setAttribute('clip-rule', 'nonzero');\r\n        var filterID;\r\n\r\n        if (properties[i].x.k !== 0) {\r\n          maskType = 'mask';\r\n          maskRef = 'mask';\r\n          x = PropertyFactory.getProp(this.element, properties[i].x, 0, null, this.element);\r\n          filterID = createElementID();\r\n          expansor = createNS('filter');\r\n          expansor.setAttribute('id', filterID);\r\n          feMorph = createNS('feMorphology');\r\n          feMorph.setAttribute('operator', 'erode');\r\n          feMorph.setAttribute('in', 'SourceGraphic');\r\n          feMorph.setAttribute('radius', '0');\r\n          expansor.appendChild(feMorph);\r\n          defs.appendChild(expansor);\r\n          path.setAttribute('stroke', properties[i].mode === 's' ? '#000000' : '#ffffff');\r\n        } else {\r\n          feMorph = null;\r\n          x = null;\r\n        } // TODO move this to a factory or to a constructor\r\n\r\n\r\n        this.storedData[i] = {\r\n          elem: path,\r\n          x: x,\r\n          expan: feMorph,\r\n          lastPath: '',\r\n          lastOperator: '',\r\n          filterId: filterID,\r\n          lastRadius: 0\r\n        };\r\n\r\n        if (properties[i].mode === 'i') {\r\n          jLen = currentMasks.length;\r\n          var g = createNS('g');\r\n\r\n          for (j = 0; j < jLen; j += 1) {\r\n            g.appendChild(currentMasks[j]);\r\n          }\r\n\r\n          var mask = createNS('mask');\r\n          mask.setAttribute('mask-type', 'alpha');\r\n          mask.setAttribute('id', layerId + '_' + count);\r\n          mask.appendChild(path);\r\n          defs.appendChild(mask);\r\n          g.setAttribute('mask', 'url(' + getLocationHref() + '#' + layerId + '_' + count + ')');\r\n          currentMasks.length = 0;\r\n          currentMasks.push(g);\r\n        } else {\r\n          currentMasks.push(path);\r\n        }\r\n\r\n        if (properties[i].inv && !this.solidPath) {\r\n          this.solidPath = this.createLayerSolidPath();\r\n        } // TODO move this to a factory or to a constructor\r\n\r\n\r\n        this.viewData[i] = {\r\n          elem: path,\r\n          lastPath: '',\r\n          op: PropertyFactory.getProp(this.element, properties[i].o, 0, 0.01, this.element),\r\n          prop: ShapePropertyFactory.getShapeProp(this.element, properties[i], 3),\r\n          invRect: rect\r\n        };\r\n\r\n        if (!this.viewData[i].prop.k) {\r\n          this.drawPath(properties[i], this.viewData[i].prop.v, this.viewData[i]);\r\n        }\r\n      }\r\n    }\r\n\r\n    this.maskElement = createNS(maskType);\r\n    len = currentMasks.length;\r\n\r\n    for (i = 0; i < len; i += 1) {\r\n      this.maskElement.appendChild(currentMasks[i]);\r\n    }\r\n\r\n    if (count > 0) {\r\n      this.maskElement.setAttribute('id', layerId);\r\n      this.element.maskedElement.setAttribute(maskRef, 'url(' + getLocationHref() + '#' + layerId + ')');\r\n      defs.appendChild(this.maskElement);\r\n    }\r\n\r\n    if (this.viewData.length) {\r\n      this.element.addRenderableComponent(this);\r\n    }\r\n  }\r\n\r\n  MaskElement.prototype.getMaskProperty = function (pos) {\r\n    return this.viewData[pos].prop;\r\n  };\r\n\r\n  MaskElement.prototype.renderFrame = function (isFirstFrame) {\r\n    var finalMat = this.element.finalTransform.mat;\r\n    var i;\r\n    var len = this.masksProperties.length;\r\n\r\n    for (i = 0; i < len; i += 1) {\r\n      if (this.viewData[i].prop._mdf || isFirstFrame) {\r\n        this.drawPath(this.masksProperties[i], this.viewData[i].prop.v, this.viewData[i]);\r\n      }\r\n\r\n      if (this.viewData[i].op._mdf || isFirstFrame) {\r\n        this.viewData[i].elem.setAttribute('fill-opacity', this.viewData[i].op.v);\r\n      }\r\n\r\n      if (this.masksProperties[i].mode !== 'n') {\r\n        if (this.viewData[i].invRect && (this.element.finalTransform.mProp._mdf || isFirstFrame)) {\r\n          this.viewData[i].invRect.setAttribute('transform', finalMat.getInverseMatrix().to2dCSS());\r\n        }\r\n\r\n        if (this.storedData[i].x && (this.storedData[i].x._mdf || isFirstFrame)) {\r\n          var feMorph = this.storedData[i].expan;\r\n\r\n          if (this.storedData[i].x.v < 0) {\r\n            if (this.storedData[i].lastOperator !== 'erode') {\r\n              this.storedData[i].lastOperator = 'erode';\r\n              this.storedData[i].elem.setAttribute('filter', 'url(' + getLocationHref() + '#' + this.storedData[i].filterId + ')');\r\n            }\r\n\r\n            feMorph.setAttribute('radius', -this.storedData[i].x.v);\r\n          } else {\r\n            if (this.storedData[i].lastOperator !== 'dilate') {\r\n              this.storedData[i].lastOperator = 'dilate';\r\n              this.storedData[i].elem.setAttribute('filter', null);\r\n            }\r\n\r\n            this.storedData[i].elem.setAttribute('stroke-width', this.storedData[i].x.v * 2);\r\n          }\r\n        }\r\n      }\r\n    }\r\n  };\r\n\r\n  MaskElement.prototype.getMaskelement = function () {\r\n    return this.maskElement;\r\n  };\r\n\r\n  MaskElement.prototype.createLayerSolidPath = function () {\r\n    var path = 'M0,0 ';\r\n    path += ' h' + this.globalData.compSize.w;\r\n    path += ' v' + this.globalData.compSize.h;\r\n    path += ' h-' + this.globalData.compSize.w;\r\n    path += ' v-' + this.globalData.compSize.h + ' ';\r\n    return path;\r\n  };\r\n\r\n  MaskElement.prototype.drawPath = function (pathData, pathNodes, viewData) {\r\n    var pathString = ' M' + pathNodes.v[0][0] + ',' + pathNodes.v[0][1];\r\n    var i;\r\n    var len;\r\n    len = pathNodes._length;\r\n\r\n    for (i = 1; i < len; i += 1) {\r\n      // pathString += \" C\"+pathNodes.o[i-1][0]+','+pathNodes.o[i-1][1] + \" \"+pathNodes.i[i][0]+','+pathNodes.i[i][1] + \" \"+pathNodes.v[i][0]+','+pathNodes.v[i][1];\r\n      pathString += ' C' + pathNodes.o[i - 1][0] + ',' + pathNodes.o[i - 1][1] + ' ' + pathNodes.i[i][0] + ',' + pathNodes.i[i][1] + ' ' + pathNodes.v[i][0] + ',' + pathNodes.v[i][1];\r\n    } // pathString += \" C\"+pathNodes.o[i-1][0]+','+pathNodes.o[i-1][1] + \" \"+pathNodes.i[0][0]+','+pathNodes.i[0][1] + \" \"+pathNodes.v[0][0]+','+pathNodes.v[0][1];\r\n\r\n\r\n    if (pathNodes.c && len > 1) {\r\n      pathString += ' C' + pathNodes.o[i - 1][0] + ',' + pathNodes.o[i - 1][1] + ' ' + pathNodes.i[0][0] + ',' + pathNodes.i[0][1] + ' ' + pathNodes.v[0][0] + ',' + pathNodes.v[0][1];\r\n    } // pathNodes.__renderedString = pathString;\r\n\r\n\r\n    if (viewData.lastPath !== pathString) {\r\n      var pathShapeValue = '';\r\n\r\n      if (viewData.elem) {\r\n        if (pathNodes.c) {\r\n          pathShapeValue = pathData.inv ? this.solidPath + pathString : pathString;\r\n        }\r\n\r\n        viewData.elem.setAttribute('d', pathShapeValue);\r\n      }\r\n\r\n      viewData.lastPath = pathString;\r\n    }\r\n  };\r\n\r\n  MaskElement.prototype.destroy = function () {\r\n    this.element = null;\r\n    this.globalData = null;\r\n    this.maskElement = null;\r\n    this.data = null;\r\n    this.masksProperties = null;\r\n  };\r\n\r\n  var filtersFactory = function () {\r\n    var ob = {};\r\n    ob.createFilter = createFilter;\r\n    ob.createAlphaToLuminanceFilter = createAlphaToLuminanceFilter;\r\n\r\n    function createFilter(filId, skipCoordinates) {\r\n      var fil = createNS('filter');\r\n      fil.setAttribute('id', filId);\r\n\r\n      if (skipCoordinates !== true) {\r\n        fil.setAttribute('filterUnits', 'objectBoundingBox');\r\n        fil.setAttribute('x', '0%');\r\n        fil.setAttribute('y', '0%');\r\n        fil.setAttribute('width', '100%');\r\n        fil.setAttribute('height', '100%');\r\n      }\r\n\r\n      return fil;\r\n    }\r\n\r\n    function createAlphaToLuminanceFilter() {\r\n      var feColorMatrix = createNS('feColorMatrix');\r\n      feColorMatrix.setAttribute('type', 'matrix');\r\n      feColorMatrix.setAttribute('color-interpolation-filters', 'sRGB');\r\n      feColorMatrix.setAttribute('values', '0 0 0 1 0  0 0 0 1 0  0 0 0 1 0  0 0 0 1 1');\r\n      return feColorMatrix;\r\n    }\r\n\r\n    return ob;\r\n  }();\r\n\r\n  var featureSupport = function () {\r\n    var ob = {\r\n      maskType: true\r\n    };\r\n\r\n    if (/MSIE 10/i.test(navigator.userAgent) || /MSIE 9/i.test(navigator.userAgent) || /rv:11.0/i.test(navigator.userAgent) || /Edge\\/\\d./i.test(navigator.userAgent)) {\r\n      ob.maskType = false;\r\n    }\r\n\r\n    return ob;\r\n  }();\r\n\r\n  var registeredEffects = {};\r\n  var idPrefix = 'filter_result_';\r\n\r\n  function SVGEffects(elem) {\r\n    var i;\r\n    var source = 'SourceGraphic';\r\n    var len = elem.data.ef ? elem.data.ef.length : 0;\r\n    var filId = createElementID();\r\n    var fil = filtersFactory.createFilter(filId, true);\r\n    var count = 0;\r\n    this.filters = [];\r\n    var filterManager;\r\n\r\n    for (i = 0; i < len; i += 1) {\r\n      filterManager = null;\r\n      var type = elem.data.ef[i].ty;\r\n\r\n      if (registeredEffects[type]) {\r\n        var Effect = registeredEffects[type].effect;\r\n        filterManager = new Effect(fil, elem.effectsManager.effectElements[i], elem, idPrefix + count, source);\r\n        source = idPrefix + count;\r\n\r\n        if (registeredEffects[type].countsAsEffect) {\r\n          count += 1;\r\n        }\r\n      }\r\n\r\n      if (filterManager) {\r\n        this.filters.push(filterManager);\r\n      }\r\n    }\r\n\r\n    if (count) {\r\n      elem.globalData.defs.appendChild(fil);\r\n      elem.layerElement.setAttribute('filter', 'url(' + getLocationHref() + '#' + filId + ')');\r\n    }\r\n\r\n    if (this.filters.length) {\r\n      elem.addRenderableComponent(this);\r\n    }\r\n  }\r\n\r\n  SVGEffects.prototype.renderFrame = function (_isFirstFrame) {\r\n    var i;\r\n    var len = this.filters.length;\r\n\r\n    for (i = 0; i < len; i += 1) {\r\n      this.filters[i].renderFrame(_isFirstFrame);\r\n    }\r\n  };\r\n\r\n  function registerEffect(id, effect, countsAsEffect) {\r\n    registeredEffects[id] = {\r\n      effect: effect,\r\n      countsAsEffect: countsAsEffect\r\n    };\r\n  }\r\n\r\n  function SVGBaseElement() {}\r\n\r\n  SVGBaseElement.prototype = {\r\n    initRendererElement: function initRendererElement() {\r\n      this.layerElement = createNS('g');\r\n    },\r\n    createContainerElements: function createContainerElements() {\r\n      this.matteElement = createNS('g');\r\n      this.transformedElement = this.layerElement;\r\n      this.maskedElement = this.layerElement;\r\n      this._sizeChanged = false;\r\n      var layerElementParent = null; // If this layer acts as a mask for the following layer\r\n\r\n      if (this.data.td) {\r\n        this.matteMasks = {};\r\n        var symbolElement = createNS('symbol');\r\n        symbolElement.setAttribute('id', this.layerId);\r\n        var gg = createNS('g');\r\n        gg.appendChild(this.layerElement);\r\n        symbolElement.appendChild(gg);\r\n        layerElementParent = gg;\r\n        this.globalData.defs.appendChild(symbolElement);\r\n      } else if (this.data.tt) {\r\n        this.matteElement.appendChild(this.layerElement);\r\n        layerElementParent = this.matteElement;\r\n        this.baseElement = this.matteElement;\r\n      } else {\r\n        this.baseElement = this.layerElement;\r\n      }\r\n\r\n      if (this.data.ln) {\r\n        this.layerElement.setAttribute('id', this.data.ln);\r\n      }\r\n\r\n      if (this.data.cl) {\r\n        this.layerElement.setAttribute('class', this.data.cl);\r\n      } // Clipping compositions to hide content that exceeds boundaries. If collapsed transformations is on, component should not be clipped\r\n\r\n\r\n      if (this.data.ty === 0 && !this.data.hd) {\r\n        var cp = createNS('clipPath');\r\n        var pt = createNS('path');\r\n        pt.setAttribute('d', 'M0,0 L' + this.data.w + ',0 L' + this.data.w + ',' + this.data.h + ' L0,' + this.data.h + 'z');\r\n        var clipId = createElementID();\r\n        cp.setAttribute('id', clipId);\r\n        cp.appendChild(pt);\r\n        this.globalData.defs.appendChild(cp);\r\n\r\n        if (this.checkMasks()) {\r\n          var cpGroup = createNS('g');\r\n          cpGroup.setAttribute('clip-path', 'url(' + getLocationHref() + '#' + clipId + ')');\r\n          cpGroup.appendChild(this.layerElement);\r\n          this.transformedElement = cpGroup;\r\n\r\n          if (layerElementParent) {\r\n            layerElementParent.appendChild(this.transformedElement);\r\n          } else {\r\n            this.baseElement = this.transformedElement;\r\n          }\r\n        } else {\r\n          this.layerElement.setAttribute('clip-path', 'url(' + getLocationHref() + '#' + clipId + ')');\r\n        }\r\n      }\r\n\r\n      if (this.data.bm !== 0) {\r\n        this.setBlendMode();\r\n      }\r\n    },\r\n    renderElement: function renderElement() {\r\n      if (this.finalTransform._matMdf) {\r\n        this.transformedElement.setAttribute('transform', this.finalTransform.mat.to2dCSS());\r\n      }\r\n\r\n      if (this.finalTransform._opMdf) {\r\n        this.transformedElement.setAttribute('opacity', this.finalTransform.mProp.o.v);\r\n      }\r\n    },\r\n    destroyBaseElement: function destroyBaseElement() {\r\n      this.layerElement = null;\r\n      this.matteElement = null;\r\n      this.maskManager.destroy();\r\n    },\r\n    getBaseElement: function getBaseElement() {\r\n      if (this.data.hd) {\r\n        return null;\r\n      }\r\n\r\n      return this.baseElement;\r\n    },\r\n    createRenderableComponents: function createRenderableComponents() {\r\n      this.maskManager = new MaskElement(this.data, this, this.globalData);\r\n      this.renderableEffectsManager = new SVGEffects(this);\r\n    },\r\n    getMatte: function getMatte(matteType) {\r\n      if (!this.matteMasks[matteType]) {\r\n        var id = this.layerId + '_' + matteType;\r\n        var filId;\r\n        var fil;\r\n        var useElement;\r\n        var gg;\r\n\r\n        if (matteType === 1 || matteType === 3) {\r\n          var masker = createNS('mask');\r\n          masker.setAttribute('id', id);\r\n          masker.setAttribute('mask-type', matteType === 3 ? 'luminance' : 'alpha');\r\n          useElement = createNS('use');\r\n          useElement.setAttributeNS('http://www.w3.org/1999/xlink', 'href', '#' + this.layerId);\r\n          masker.appendChild(useElement);\r\n          this.globalData.defs.appendChild(masker);\r\n\r\n          if (!featureSupport.maskType && matteType === 1) {\r\n            masker.setAttribute('mask-type', 'luminance');\r\n            filId = createElementID();\r\n            fil = filtersFactory.createFilter(filId);\r\n            this.globalData.defs.appendChild(fil);\r\n            fil.appendChild(filtersFactory.createAlphaToLuminanceFilter());\r\n            gg = createNS('g');\r\n            gg.appendChild(useElement);\r\n            masker.appendChild(gg);\r\n            gg.setAttribute('filter', 'url(' + getLocationHref() + '#' + filId + ')');\r\n          }\r\n        } else if (matteType === 2) {\r\n          var maskGroup = createNS('mask');\r\n          maskGroup.setAttribute('id', id);\r\n          maskGroup.setAttribute('mask-type', 'alpha');\r\n          var maskGrouper = createNS('g');\r\n          maskGroup.appendChild(maskGrouper);\r\n          filId = createElementID();\r\n          fil = filtersFactory.createFilter(filId); /// /\r\n\r\n          var feCTr = createNS('feComponentTransfer');\r\n          feCTr.setAttribute('in', 'SourceGraphic');\r\n          fil.appendChild(feCTr);\r\n          var feFunc = createNS('feFuncA');\r\n          feFunc.setAttribute('type', 'table');\r\n          feFunc.setAttribute('tableValues', '1.0 0.0');\r\n          feCTr.appendChild(feFunc); /// /\r\n\r\n          this.globalData.defs.appendChild(fil);\r\n          var alphaRect = createNS('rect');\r\n          alphaRect.setAttribute('width', this.comp.data.w);\r\n          alphaRect.setAttribute('height', this.comp.data.h);\r\n          alphaRect.setAttribute('x', '0');\r\n          alphaRect.setAttribute('y', '0');\r\n          alphaRect.setAttribute('fill', '#ffffff');\r\n          alphaRect.setAttribute('opacity', '0');\r\n          maskGrouper.setAttribute('filter', 'url(' + getLocationHref() + '#' + filId + ')');\r\n          maskGrouper.appendChild(alphaRect);\r\n          useElement = createNS('use');\r\n          useElement.setAttributeNS('http://www.w3.org/1999/xlink', 'href', '#' + this.layerId);\r\n          maskGrouper.appendChild(useElement);\r\n\r\n          if (!featureSupport.maskType) {\r\n            maskGroup.setAttribute('mask-type', 'luminance');\r\n            fil.appendChild(filtersFactory.createAlphaToLuminanceFilter());\r\n            gg = createNS('g');\r\n            maskGrouper.appendChild(alphaRect);\r\n            gg.appendChild(this.layerElement);\r\n            maskGrouper.appendChild(gg);\r\n          }\r\n\r\n          this.globalData.defs.appendChild(maskGroup);\r\n        }\r\n\r\n        this.matteMasks[matteType] = id;\r\n      }\r\n\r\n      return this.matteMasks[matteType];\r\n    },\r\n    setMatte: function setMatte(id) {\r\n      if (!this.matteElement) {\r\n        return;\r\n      }\r\n\r\n      this.matteElement.setAttribute('mask', 'url(' + getLocationHref() + '#' + id + ')');\r\n    }\r\n  };\r\n\r\n  /**\r\n   * @file\r\n   * Handles AE's layer parenting property.\r\n   *\r\n   */\r\n  function HierarchyElement() {}\r\n\r\n  HierarchyElement.prototype = {\r\n    /**\r\n       * @function\r\n       * Initializes hierarchy properties\r\n       *\r\n       */\r\n    initHierarchy: function initHierarchy() {\r\n      // element's parent list\r\n      this.hierarchy = []; // if element is parent of another layer _isParent will be true\r\n\r\n      this._isParent = false;\r\n      this.checkParenting();\r\n    },\r\n\r\n    /**\r\n       * @function\r\n       * Sets layer's hierarchy.\r\n       * @param {array} hierarch\r\n       * layer's parent list\r\n       *\r\n       */\r\n    setHierarchy: function setHierarchy(hierarchy) {\r\n      this.hierarchy = hierarchy;\r\n    },\r\n\r\n    /**\r\n       * @function\r\n       * Sets layer as parent.\r\n       *\r\n       */\r\n    setAsParent: function setAsParent() {\r\n      this._isParent = true;\r\n    },\r\n\r\n    /**\r\n       * @function\r\n       * Searches layer's parenting chain\r\n       *\r\n       */\r\n    checkParenting: function checkParenting() {\r\n      if (this.data.parent !== undefined) {\r\n        this.comp.buildElementParenting(this, this.data.parent, []);\r\n      }\r\n    }\r\n  };\r\n\r\n  function RenderableDOMElement() {}\r\n\r\n  (function () {\r\n    var _prototype = {\r\n      initElement: function initElement(data, globalData, comp) {\r\n        this.initFrame();\r\n        this.initBaseData(data, globalData, comp);\r\n        this.initTransform(data, globalData, comp);\r\n        this.initHierarchy();\r\n        this.initRenderable();\r\n        this.initRendererElement();\r\n        this.createContainerElements();\r\n        this.createRenderableComponents();\r\n        this.createContent();\r\n        this.hide();\r\n      },\r\n      hide: function hide() {\r\n        // console.log('HIDE', this);\r\n        if (!this.hidden && (!this.isInRange || this.isTransparent)) {\r\n          var elem = this.baseElement || this.layerElement;\r\n          elem.style.display = 'none';\r\n          this.hidden = true;\r\n        }\r\n      },\r\n      show: function show() {\r\n        // console.log('SHOW', this);\r\n        if (this.isInRange && !this.isTransparent) {\r\n          if (!this.data.hd) {\r\n            var elem = this.baseElement || this.layerElement;\r\n            elem.style.display = 'block';\r\n          }\r\n\r\n          this.hidden = false;\r\n          this._isFirstFrame = true;\r\n        }\r\n      },\r\n      renderFrame: function renderFrame() {\r\n        // If it is exported as hidden (data.hd === true) no need to render\r\n        // If it is not visible no need to render\r\n        if (this.data.hd || this.hidden) {\r\n          return;\r\n        }\r\n\r\n        this.renderTransform();\r\n        this.renderRenderable();\r\n        this.renderElement();\r\n        this.renderInnerContent();\r\n\r\n        if (this._isFirstFrame) {\r\n          this._isFirstFrame = false;\r\n        }\r\n      },\r\n      renderInnerContent: function renderInnerContent() {},\r\n      prepareFrame: function prepareFrame(num) {\r\n        this._mdf = false;\r\n        this.prepareRenderableFrame(num);\r\n        this.prepareProperties(num, this.isInRange);\r\n        this.checkTransparency();\r\n      },\r\n      destroy: function destroy() {\r\n        this.innerElem = null;\r\n        this.destroyBaseElement();\r\n      }\r\n    };\r\n    extendPrototype([RenderableElement, createProxyFunction(_prototype)], RenderableDOMElement);\r\n  })();\r\n\r\n  function IImageElement(data, globalData, comp) {\r\n    this.assetData = globalData.getAssetData(data.refId);\r\n    this.initElement(data, globalData, comp);\r\n    this.sourceRect = {\r\n      top: 0,\r\n      left: 0,\r\n      width: this.assetData.w,\r\n      height: this.assetData.h\r\n    };\r\n  }\r\n\r\n  extendPrototype([BaseElement, TransformElement, SVGBaseElement, HierarchyElement, FrameElement, RenderableDOMElement], IImageElement);\r\n\r\n  IImageElement.prototype.createContent = function () {\r\n    var assetPath = this.globalData.getAssetsPath(this.assetData);\r\n    this.innerElem = createNS('image');\r\n    this.innerElem.setAttribute('width', this.assetData.w + 'px');\r\n    this.innerElem.setAttribute('height', this.assetData.h + 'px');\r\n    this.innerElem.setAttribute('preserveAspectRatio', this.assetData.pr || this.globalData.renderConfig.imagePreserveAspectRatio);\r\n    this.innerElem.setAttributeNS('http://www.w3.org/1999/xlink', 'href', assetPath);\r\n    this.layerElement.appendChild(this.innerElem);\r\n  };\r\n\r\n  IImageElement.prototype.sourceRectAtTime = function () {\r\n    return this.sourceRect;\r\n  };\r\n\r\n  function ProcessedElement(element, position) {\r\n    this.elem = element;\r\n    this.pos = position;\r\n  }\r\n\r\n  function IShapeElement() {}\r\n\r\n  IShapeElement.prototype = {\r\n    addShapeToModifiers: function addShapeToModifiers(data) {\r\n      var i;\r\n      var len = this.shapeModifiers.length;\r\n\r\n      for (i = 0; i < len; i += 1) {\r\n        this.shapeModifiers[i].addShape(data);\r\n      }\r\n    },\r\n    isShapeInAnimatedModifiers: function isShapeInAnimatedModifiers(data) {\r\n      var i = 0;\r\n      var len = this.shapeModifiers.length;\r\n\r\n      while (i < len) {\r\n        if (this.shapeModifiers[i].isAnimatedWithShape(data)) {\r\n          return true;\r\n        }\r\n      }\r\n\r\n      return false;\r\n    },\r\n    renderModifiers: function renderModifiers() {\r\n      if (!this.shapeModifiers.length) {\r\n        return;\r\n      }\r\n\r\n      var i;\r\n      var len = this.shapes.length;\r\n\r\n      for (i = 0; i < len; i += 1) {\r\n        this.shapes[i].sh.reset();\r\n      }\r\n\r\n      len = this.shapeModifiers.length;\r\n      var shouldBreakProcess;\r\n\r\n      for (i = len - 1; i >= 0; i -= 1) {\r\n        shouldBreakProcess = this.shapeModifiers[i].processShapes(this._isFirstFrame); // workaround to fix cases where a repeater resets the shape so the following processes get called twice\r\n        // TODO: find a better solution for this\r\n\r\n        if (shouldBreakProcess) {\r\n          break;\r\n        }\r\n      }\r\n    },\r\n    searchProcessedElement: function searchProcessedElement(elem) {\r\n      var elements = this.processedElements;\r\n      var i = 0;\r\n      var len = elements.length;\r\n\r\n      while (i < len) {\r\n        if (elements[i].elem === elem) {\r\n          return elements[i].pos;\r\n        }\r\n\r\n        i += 1;\r\n      }\r\n\r\n      return 0;\r\n    },\r\n    addProcessedElement: function addProcessedElement(elem, pos) {\r\n      var elements = this.processedElements;\r\n      var i = elements.length;\r\n\r\n      while (i) {\r\n        i -= 1;\r\n\r\n        if (elements[i].elem === elem) {\r\n          elements[i].pos = pos;\r\n          return;\r\n        }\r\n      }\r\n\r\n      elements.push(new ProcessedElement(elem, pos));\r\n    },\r\n    prepareFrame: function prepareFrame(num) {\r\n      this.prepareRenderableFrame(num);\r\n      this.prepareProperties(num, this.isInRange);\r\n    }\r\n  };\r\n\r\n  var lineCapEnum = {\r\n    1: 'butt',\r\n    2: 'round',\r\n    3: 'square'\r\n  };\r\n  var lineJoinEnum = {\r\n    1: 'miter',\r\n    2: 'round',\r\n    3: 'bevel'\r\n  };\r\n\r\n  function SVGShapeData(transformers, level, shape) {\r\n    this.caches = [];\r\n    this.styles = [];\r\n    this.transformers = transformers;\r\n    this.lStr = '';\r\n    this.sh = shape;\r\n    this.lvl = level; // TODO find if there are some cases where _isAnimated can be false.\r\n    // For now, since shapes add up with other shapes. They have to be calculated every time.\r\n    // One way of finding out is checking if all styles associated to this shape depend only of this shape\r\n\r\n    this._isAnimated = !!shape.k; // TODO: commenting this for now since all shapes are animated\r\n\r\n    var i = 0;\r\n    var len = transformers.length;\r\n\r\n    while (i < len) {\r\n      if (transformers[i].mProps.dynamicProperties.length) {\r\n        this._isAnimated = true;\r\n        break;\r\n      }\r\n\r\n      i += 1;\r\n    }\r\n  }\r\n\r\n  SVGShapeData.prototype.setAsAnimated = function () {\r\n    this._isAnimated = true;\r\n  };\r\n\r\n  function SVGStyleData(data, level) {\r\n    this.data = data;\r\n    this.type = data.ty;\r\n    this.d = '';\r\n    this.lvl = level;\r\n    this._mdf = false;\r\n    this.closed = data.hd === true;\r\n    this.pElem = createNS('path');\r\n    this.msElem = null;\r\n  }\r\n\r\n  SVGStyleData.prototype.reset = function () {\r\n    this.d = '';\r\n    this._mdf = false;\r\n  };\r\n\r\n  function DashProperty(elem, data, renderer, container) {\r\n    this.elem = elem;\r\n    this.frameId = -1;\r\n    this.dataProps = createSizedArray(data.length);\r\n    this.renderer = renderer;\r\n    this.k = false;\r\n    this.dashStr = '';\r\n    this.dashArray = createTypedArray('float32', data.length ? data.length - 1 : 0);\r\n    this.dashoffset = createTypedArray('float32', 1);\r\n    this.initDynamicPropertyContainer(container);\r\n    var i;\r\n    var len = data.length || 0;\r\n    var prop;\r\n\r\n    for (i = 0; i < len; i += 1) {\r\n      prop = PropertyFactory.getProp(elem, data[i].v, 0, 0, this);\r\n      this.k = prop.k || this.k;\r\n      this.dataProps[i] = {\r\n        n: data[i].n,\r\n        p: prop\r\n      };\r\n    }\r\n\r\n    if (!this.k) {\r\n      this.getValue(true);\r\n    }\r\n\r\n    this._isAnimated = this.k;\r\n  }\r\n\r\n  DashProperty.prototype.getValue = function (forceRender) {\r\n    if (this.elem.globalData.frameId === this.frameId && !forceRender) {\r\n      return;\r\n    }\r\n\r\n    this.frameId = this.elem.globalData.frameId;\r\n    this.iterateDynamicProperties();\r\n    this._mdf = this._mdf || forceRender;\r\n\r\n    if (this._mdf) {\r\n      var i = 0;\r\n      var len = this.dataProps.length;\r\n\r\n      if (this.renderer === 'svg') {\r\n        this.dashStr = '';\r\n      }\r\n\r\n      for (i = 0; i < len; i += 1) {\r\n        if (this.dataProps[i].n !== 'o') {\r\n          if (this.renderer === 'svg') {\r\n            this.dashStr += ' ' + this.dataProps[i].p.v;\r\n          } else {\r\n            this.dashArray[i] = this.dataProps[i].p.v;\r\n          }\r\n        } else {\r\n          this.dashoffset[0] = this.dataProps[i].p.v;\r\n        }\r\n      }\r\n    }\r\n  };\r\n\r\n  extendPrototype([DynamicPropertyContainer], DashProperty);\r\n\r\n  function SVGStrokeStyleData(elem, data, styleOb) {\r\n    this.initDynamicPropertyContainer(elem);\r\n    this.getValue = this.iterateDynamicProperties;\r\n    this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, this);\r\n    this.w = PropertyFactory.getProp(elem, data.w, 0, null, this);\r\n    this.d = new DashProperty(elem, data.d || {}, 'svg', this);\r\n    this.c = PropertyFactory.getProp(elem, data.c, 1, 255, this);\r\n    this.style = styleOb;\r\n    this._isAnimated = !!this._isAnimated;\r\n  }\r\n\r\n  extendPrototype([DynamicPropertyContainer], SVGStrokeStyleData);\r\n\r\n  function SVGFillStyleData(elem, data, styleOb) {\r\n    this.initDynamicPropertyContainer(elem);\r\n    this.getValue = this.iterateDynamicProperties;\r\n    this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, this);\r\n    this.c = PropertyFactory.getProp(elem, data.c, 1, 255, this);\r\n    this.style = styleOb;\r\n  }\r\n\r\n  extendPrototype([DynamicPropertyContainer], SVGFillStyleData);\r\n\r\n  function SVGNoStyleData(elem, data, styleOb) {\r\n    this.initDynamicPropertyContainer(elem);\r\n    this.getValue = this.iterateDynamicProperties;\r\n    this.style = styleOb;\r\n  }\r\n\r\n  extendPrototype([DynamicPropertyContainer], SVGNoStyleData);\r\n\r\n  function GradientProperty(elem, data, container) {\r\n    this.data = data;\r\n    this.c = createTypedArray('uint8c', data.p * 4);\r\n    var cLength = data.k.k[0].s ? data.k.k[0].s.length - data.p * 4 : data.k.k.length - data.p * 4;\r\n    this.o = createTypedArray('float32', cLength);\r\n    this._cmdf = false;\r\n    this._omdf = false;\r\n    this._collapsable = this.checkCollapsable();\r\n    this._hasOpacity = cLength;\r\n    this.initDynamicPropertyContainer(container);\r\n    this.prop = PropertyFactory.getProp(elem, data.k, 1, null, this);\r\n    this.k = this.prop.k;\r\n    this.getValue(true);\r\n  }\r\n\r\n  GradientProperty.prototype.comparePoints = function (values, points) {\r\n    var i = 0;\r\n    var len = this.o.length / 2;\r\n    var diff;\r\n\r\n    while (i < len) {\r\n      diff = Math.abs(values[i * 4] - values[points * 4 + i * 2]);\r\n\r\n      if (diff > 0.01) {\r\n        return false;\r\n      }\r\n\r\n      i += 1;\r\n    }\r\n\r\n    return true;\r\n  };\r\n\r\n  GradientProperty.prototype.checkCollapsable = function () {\r\n    if (this.o.length / 2 !== this.c.length / 4) {\r\n      return false;\r\n    }\r\n\r\n    if (this.data.k.k[0].s) {\r\n      var i = 0;\r\n      var len = this.data.k.k.length;\r\n\r\n      while (i < len) {\r\n        if (!this.comparePoints(this.data.k.k[i].s, this.data.p)) {\r\n          return false;\r\n        }\r\n\r\n        i += 1;\r\n      }\r\n    } else if (!this.comparePoints(this.data.k.k, this.data.p)) {\r\n      return false;\r\n    }\r\n\r\n    return true;\r\n  };\r\n\r\n  GradientProperty.prototype.getValue = function (forceRender) {\r\n    this.prop.getValue();\r\n    this._mdf = false;\r\n    this._cmdf = false;\r\n    this._omdf = false;\r\n\r\n    if (this.prop._mdf || forceRender) {\r\n      var i;\r\n      var len = this.data.p * 4;\r\n      var mult;\r\n      var val;\r\n\r\n      for (i = 0; i < len; i += 1) {\r\n        mult = i % 4 === 0 ? 100 : 255;\r\n        val = Math.round(this.prop.v[i] * mult);\r\n\r\n        if (this.c[i] !== val) {\r\n          this.c[i] = val;\r\n          this._cmdf = !forceRender;\r\n        }\r\n      }\r\n\r\n      if (this.o.length) {\r\n        len = this.prop.v.length;\r\n\r\n        for (i = this.data.p * 4; i < len; i += 1) {\r\n          mult = i % 2 === 0 ? 100 : 1;\r\n          val = i % 2 === 0 ? Math.round(this.prop.v[i] * 100) : this.prop.v[i];\r\n\r\n          if (this.o[i - this.data.p * 4] !== val) {\r\n            this.o[i - this.data.p * 4] = val;\r\n            this._omdf = !forceRender;\r\n          }\r\n        }\r\n      }\r\n\r\n      this._mdf = !forceRender;\r\n    }\r\n  };\r\n\r\n  extendPrototype([DynamicPropertyContainer], GradientProperty);\r\n\r\n  function SVGGradientFillStyleData(elem, data, styleOb) {\r\n    this.initDynamicPropertyContainer(elem);\r\n    this.getValue = this.iterateDynamicProperties;\r\n    this.initGradientData(elem, data, styleOb);\r\n  }\r\n\r\n  SVGGradientFillStyleData.prototype.initGradientData = function (elem, data, styleOb) {\r\n    this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, this);\r\n    this.s = PropertyFactory.getProp(elem, data.s, 1, null, this);\r\n    this.e = PropertyFactory.getProp(elem, data.e, 1, null, this);\r\n    this.h = PropertyFactory.getProp(elem, data.h || {\r\n      k: 0\r\n    }, 0, 0.01, this);\r\n    this.a = PropertyFactory.getProp(elem, data.a || {\r\n      k: 0\r\n    }, 0, degToRads, this);\r\n    this.g = new GradientProperty(elem, data.g, this);\r\n    this.style = styleOb;\r\n    this.stops = [];\r\n    this.setGradientData(styleOb.pElem, data);\r\n    this.setGradientOpacity(data, styleOb);\r\n    this._isAnimated = !!this._isAnimated;\r\n  };\r\n\r\n  SVGGradientFillStyleData.prototype.setGradientData = function (pathElement, data) {\r\n    var gradientId = createElementID();\r\n    var gfill = createNS(data.t === 1 ? 'linearGradient' : 'radialGradient');\r\n    gfill.setAttribute('id', gradientId);\r\n    gfill.setAttribute('spreadMethod', 'pad');\r\n    gfill.setAttribute('gradientUnits', 'userSpaceOnUse');\r\n    var stops = [];\r\n    var stop;\r\n    var j;\r\n    var jLen;\r\n    jLen = data.g.p * 4;\r\n\r\n    for (j = 0; j < jLen; j += 4) {\r\n      stop = createNS('stop');\r\n      gfill.appendChild(stop);\r\n      stops.push(stop);\r\n    }\r\n\r\n    pathElement.setAttribute(data.ty === 'gf' ? 'fill' : 'stroke', 'url(' + getLocationHref() + '#' + gradientId + ')');\r\n    this.gf = gfill;\r\n    this.cst = stops;\r\n  };\r\n\r\n  SVGGradientFillStyleData.prototype.setGradientOpacity = function (data, styleOb) {\r\n    if (this.g._hasOpacity && !this.g._collapsable) {\r\n      var stop;\r\n      var j;\r\n      var jLen;\r\n      var mask = createNS('mask');\r\n      var maskElement = createNS('path');\r\n      mask.appendChild(maskElement);\r\n      var opacityId = createElementID();\r\n      var maskId = createElementID();\r\n      mask.setAttribute('id', maskId);\r\n      var opFill = createNS(data.t === 1 ? 'linearGradient' : 'radialGradient');\r\n      opFill.setAttribute('id', opacityId);\r\n      opFill.setAttribute('spreadMethod', 'pad');\r\n      opFill.setAttribute('gradientUnits', 'userSpaceOnUse');\r\n      jLen = data.g.k.k[0].s ? data.g.k.k[0].s.length : data.g.k.k.length;\r\n      var stops = this.stops;\r\n\r\n      for (j = data.g.p * 4; j < jLen; j += 2) {\r\n        stop = createNS('stop');\r\n        stop.setAttribute('stop-color', 'rgb(255,255,255)');\r\n        opFill.appendChild(stop);\r\n        stops.push(stop);\r\n      }\r\n\r\n      maskElement.setAttribute(data.ty === 'gf' ? 'fill' : 'stroke', 'url(' + getLocationHref() + '#' + opacityId + ')');\r\n\r\n      if (data.ty === 'gs') {\r\n        maskElement.setAttribute('stroke-linecap', lineCapEnum[data.lc || 2]);\r\n        maskElement.setAttribute('stroke-linejoin', lineJoinEnum[data.lj || 2]);\r\n\r\n        if (data.lj === 1) {\r\n          maskElement.setAttribute('stroke-miterlimit', data.ml);\r\n        }\r\n      }\r\n\r\n      this.of = opFill;\r\n      this.ms = mask;\r\n      this.ost = stops;\r\n      this.maskId = maskId;\r\n      styleOb.msElem = maskElement;\r\n    }\r\n  };\r\n\r\n  extendPrototype([DynamicPropertyContainer], SVGGradientFillStyleData);\r\n\r\n  function SVGGradientStrokeStyleData(elem, data, styleOb) {\r\n    this.initDynamicPropertyContainer(elem);\r\n    this.getValue = this.iterateDynamicProperties;\r\n    this.w = PropertyFactory.getProp(elem, data.w, 0, null, this);\r\n    this.d = new DashProperty(elem, data.d || {}, 'svg', this);\r\n    this.initGradientData(elem, data, styleOb);\r\n    this._isAnimated = !!this._isAnimated;\r\n  }\r\n\r\n  extendPrototype([SVGGradientFillStyleData, DynamicPropertyContainer], SVGGradientStrokeStyleData);\r\n\r\n  function ShapeGroupData() {\r\n    this.it = [];\r\n    this.prevViewData = [];\r\n    this.gr = createNS('g');\r\n  }\r\n\r\n  function SVGTransformData(mProps, op, container) {\r\n    this.transform = {\r\n      mProps: mProps,\r\n      op: op,\r\n      container: container\r\n    };\r\n    this.elements = [];\r\n    this._isAnimated = this.transform.mProps.dynamicProperties.length || this.transform.op.effectsSequence.length;\r\n  }\r\n\r\n  var buildShapeString = function buildShapeString(pathNodes, length, closed, mat) {\r\n    if (length === 0) {\r\n      return '';\r\n    }\r\n\r\n    var _o = pathNodes.o;\r\n    var _i = pathNodes.i;\r\n    var _v = pathNodes.v;\r\n    var i;\r\n    var shapeString = ' M' + mat.applyToPointStringified(_v[0][0], _v[0][1]);\r\n\r\n    for (i = 1; i < length; i += 1) {\r\n      shapeString += ' C' + mat.applyToPointStringified(_o[i - 1][0], _o[i - 1][1]) + ' ' + mat.applyToPointStringified(_i[i][0], _i[i][1]) + ' ' + mat.applyToPointStringified(_v[i][0], _v[i][1]);\r\n    }\r\n\r\n    if (closed && length) {\r\n      shapeString += ' C' + mat.applyToPointStringified(_o[i - 1][0], _o[i - 1][1]) + ' ' + mat.applyToPointStringified(_i[0][0], _i[0][1]) + ' ' + mat.applyToPointStringified(_v[0][0], _v[0][1]);\r\n      shapeString += 'z';\r\n    }\r\n\r\n    return shapeString;\r\n  };\r\n\r\n  var SVGElementsRenderer = function () {\r\n    var _identityMatrix = new Matrix();\r\n\r\n    var _matrixHelper = new Matrix();\r\n\r\n    var ob = {\r\n      createRenderFunction: createRenderFunction\r\n    };\r\n\r\n    function createRenderFunction(data) {\r\n      switch (data.ty) {\r\n        case 'fl':\r\n          return renderFill;\r\n\r\n        case 'gf':\r\n          return renderGradient;\r\n\r\n        case 'gs':\r\n          return renderGradientStroke;\r\n\r\n        case 'st':\r\n          return renderStroke;\r\n\r\n        case 'sh':\r\n        case 'el':\r\n        case 'rc':\r\n        case 'sr':\r\n          return renderPath;\r\n\r\n        case 'tr':\r\n          return renderContentTransform;\r\n\r\n        case 'no':\r\n          return renderNoop;\r\n\r\n        default:\r\n          return null;\r\n      }\r\n    }\r\n\r\n    function renderContentTransform(styleData, itemData, isFirstFrame) {\r\n      if (isFirstFrame || itemData.transform.op._mdf) {\r\n        itemData.transform.container.setAttribute('opacity', itemData.transform.op.v);\r\n      }\r\n\r\n      if (isFirstFrame || itemData.transform.mProps._mdf) {\r\n        itemData.transform.container.setAttribute('transform', itemData.transform.mProps.v.to2dCSS());\r\n      }\r\n    }\r\n\r\n    function renderNoop() {}\r\n\r\n    function renderPath(styleData, itemData, isFirstFrame) {\r\n      var j;\r\n      var jLen;\r\n      var pathStringTransformed;\r\n      var redraw;\r\n      var pathNodes;\r\n      var l;\r\n      var lLen = itemData.styles.length;\r\n      var lvl = itemData.lvl;\r\n      var paths;\r\n      var mat;\r\n      var props;\r\n      var iterations;\r\n      var k;\r\n\r\n      for (l = 0; l < lLen; l += 1) {\r\n        redraw = itemData.sh._mdf || isFirstFrame;\r\n\r\n        if (itemData.styles[l].lvl < lvl) {\r\n          mat = _matrixHelper.reset();\r\n          iterations = lvl - itemData.styles[l].lvl;\r\n          k = itemData.transformers.length - 1;\r\n\r\n          while (!redraw && iterations > 0) {\r\n            redraw = itemData.transformers[k].mProps._mdf || redraw;\r\n            iterations -= 1;\r\n            k -= 1;\r\n          }\r\n\r\n          if (redraw) {\r\n            iterations = lvl - itemData.styles[l].lvl;\r\n            k = itemData.transformers.length - 1;\r\n\r\n            while (iterations > 0) {\r\n              props = itemData.transformers[k].mProps.v.props;\r\n              mat.transform(props[0], props[1], props[2], props[3], props[4], props[5], props[6], props[7], props[8], props[9], props[10], props[11], props[12], props[13], props[14], props[15]);\r\n              iterations -= 1;\r\n              k -= 1;\r\n            }\r\n          }\r\n        } else {\r\n          mat = _identityMatrix;\r\n        }\r\n\r\n        paths = itemData.sh.paths;\r\n        jLen = paths._length;\r\n\r\n        if (redraw) {\r\n          pathStringTransformed = '';\r\n\r\n          for (j = 0; j < jLen; j += 1) {\r\n            pathNodes = paths.shapes[j];\r\n\r\n            if (pathNodes && pathNodes._length) {\r\n              pathStringTransformed += buildShapeString(pathNodes, pathNodes._length, pathNodes.c, mat);\r\n            }\r\n          }\r\n\r\n          itemData.caches[l] = pathStringTransformed;\r\n        } else {\r\n          pathStringTransformed = itemData.caches[l];\r\n        }\r\n\r\n        itemData.styles[l].d += styleData.hd === true ? '' : pathStringTransformed;\r\n        itemData.styles[l]._mdf = redraw || itemData.styles[l]._mdf;\r\n      }\r\n    }\r\n\r\n    function renderFill(styleData, itemData, isFirstFrame) {\r\n      var styleElem = itemData.style;\r\n\r\n      if (itemData.c._mdf || isFirstFrame) {\r\n        styleElem.pElem.setAttribute('fill', 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')');\r\n      }\r\n\r\n      if (itemData.o._mdf || isFirstFrame) {\r\n        styleElem.pElem.setAttribute('fill-opacity', itemData.o.v);\r\n      }\r\n    }\r\n\r\n    function renderGradientStroke(styleData, itemData, isFirstFrame) {\r\n      renderGradient(styleData, itemData, isFirstFrame);\r\n      renderStroke(styleData, itemData, isFirstFrame);\r\n    }\r\n\r\n    function renderGradient(styleData, itemData, isFirstFrame) {\r\n      var gfill = itemData.gf;\r\n      var hasOpacity = itemData.g._hasOpacity;\r\n      var pt1 = itemData.s.v;\r\n      var pt2 = itemData.e.v;\r\n\r\n      if (itemData.o._mdf || isFirstFrame) {\r\n        var attr = styleData.ty === 'gf' ? 'fill-opacity' : 'stroke-opacity';\r\n        itemData.style.pElem.setAttribute(attr, itemData.o.v);\r\n      }\r\n\r\n      if (itemData.s._mdf || isFirstFrame) {\r\n        var attr1 = styleData.t === 1 ? 'x1' : 'cx';\r\n        var attr2 = attr1 === 'x1' ? 'y1' : 'cy';\r\n        gfill.setAttribute(attr1, pt1[0]);\r\n        gfill.setAttribute(attr2, pt1[1]);\r\n\r\n        if (hasOpacity && !itemData.g._collapsable) {\r\n          itemData.of.setAttribute(attr1, pt1[0]);\r\n          itemData.of.setAttribute(attr2, pt1[1]);\r\n        }\r\n      }\r\n\r\n      var stops;\r\n      var i;\r\n      var len;\r\n      var stop;\r\n\r\n      if (itemData.g._cmdf || isFirstFrame) {\r\n        stops = itemData.cst;\r\n        var cValues = itemData.g.c;\r\n        len = stops.length;\r\n\r\n        for (i = 0; i < len; i += 1) {\r\n          stop = stops[i];\r\n          stop.setAttribute('offset', cValues[i * 4] + '%');\r\n          stop.setAttribute('stop-color', 'rgb(' + cValues[i * 4 + 1] + ',' + cValues[i * 4 + 2] + ',' + cValues[i * 4 + 3] + ')');\r\n        }\r\n      }\r\n\r\n      if (hasOpacity && (itemData.g._omdf || isFirstFrame)) {\r\n        var oValues = itemData.g.o;\r\n\r\n        if (itemData.g._collapsable) {\r\n          stops = itemData.cst;\r\n        } else {\r\n          stops = itemData.ost;\r\n        }\r\n\r\n        len = stops.length;\r\n\r\n        for (i = 0; i < len; i += 1) {\r\n          stop = stops[i];\r\n\r\n          if (!itemData.g._collapsable) {\r\n            stop.setAttribute('offset', oValues[i * 2] + '%');\r\n          }\r\n\r\n          stop.setAttribute('stop-opacity', oValues[i * 2 + 1]);\r\n        }\r\n      }\r\n\r\n      if (styleData.t === 1) {\r\n        if (itemData.e._mdf || isFirstFrame) {\r\n          gfill.setAttribute('x2', pt2[0]);\r\n          gfill.setAttribute('y2', pt2[1]);\r\n\r\n          if (hasOpacity && !itemData.g._collapsable) {\r\n            itemData.of.setAttribute('x2', pt2[0]);\r\n            itemData.of.setAttribute('y2', pt2[1]);\r\n          }\r\n        }\r\n      } else {\r\n        var rad;\r\n\r\n        if (itemData.s._mdf || itemData.e._mdf || isFirstFrame) {\r\n          rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2));\r\n          gfill.setAttribute('r', rad);\r\n\r\n          if (hasOpacity && !itemData.g._collapsable) {\r\n            itemData.of.setAttribute('r', rad);\r\n          }\r\n        }\r\n\r\n        if (itemData.e._mdf || itemData.h._mdf || itemData.a._mdf || isFirstFrame) {\r\n          if (!rad) {\r\n            rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2));\r\n          }\r\n\r\n          var ang = Math.atan2(pt2[1] - pt1[1], pt2[0] - pt1[0]);\r\n          var percent = itemData.h.v;\r\n\r\n          if (percent >= 1) {\r\n            percent = 0.99;\r\n          } else if (percent <= -1) {\r\n            percent = -0.99;\r\n          }\r\n\r\n          var dist = rad * percent;\r\n          var x = Math.cos(ang + itemData.a.v) * dist + pt1[0];\r\n          var y = Math.sin(ang + itemData.a.v) * dist + pt1[1];\r\n          gfill.setAttribute('fx', x);\r\n          gfill.setAttribute('fy', y);\r\n\r\n          if (hasOpacity && !itemData.g._collapsable) {\r\n            itemData.of.setAttribute('fx', x);\r\n            itemData.of.setAttribute('fy', y);\r\n          }\r\n        } // gfill.setAttribute('fy','200');\r\n\r\n      }\r\n    }\r\n\r\n    function renderStroke(styleData, itemData, isFirstFrame) {\r\n      var styleElem = itemData.style;\r\n      var d = itemData.d;\r\n\r\n      if (d && (d._mdf || isFirstFrame) && d.dashStr) {\r\n        styleElem.pElem.setAttribute('stroke-dasharray', d.dashStr);\r\n        styleElem.pElem.setAttribute('stroke-dashoffset', d.dashoffset[0]);\r\n      }\r\n\r\n      if (itemData.c && (itemData.c._mdf || isFirstFrame)) {\r\n        styleElem.pElem.setAttribute('stroke', 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')');\r\n      }\r\n\r\n      if (itemData.o._mdf || isFirstFrame) {\r\n        styleElem.pElem.setAttribute('stroke-opacity', itemData.o.v);\r\n      }\r\n\r\n      if (itemData.w._mdf || isFirstFrame) {\r\n        styleElem.pElem.setAttribute('stroke-width', itemData.w.v);\r\n\r\n        if (styleElem.msElem) {\r\n          styleElem.msElem.setAttribute('stroke-width', itemData.w.v);\r\n        }\r\n      }\r\n    }\r\n\r\n    return ob;\r\n  }();\r\n\r\n  function SVGShapeElement(data, globalData, comp) {\r\n    // List of drawable elements\r\n    this.shapes = []; // Full shape data\r\n\r\n    this.shapesData = data.shapes; // List of styles that will be applied to shapes\r\n\r\n    this.stylesList = []; // List of modifiers that will be applied to shapes\r\n\r\n    this.shapeModifiers = []; // List of items in shape tree\r\n\r\n    this.itemsData = []; // List of items in previous shape tree\r\n\r\n    this.processedElements = []; // List of animated components\r\n\r\n    this.animatedContents = [];\r\n    this.initElement(data, globalData, comp); // Moving any property that doesn't get too much access after initialization because of v8 way of handling more than 10 properties.\r\n    // List of elements that have been created\r\n\r\n    this.prevViewData = []; // Moving any property that doesn't get too much access after initialization because of v8 way of handling more than 10 properties.\r\n  }\r\n\r\n  extendPrototype([BaseElement, TransformElement, SVGBaseElement, IShapeElement, HierarchyElement, FrameElement, RenderableDOMElement], SVGShapeElement);\r\n\r\n  SVGShapeElement.prototype.initSecondaryElement = function () {};\r\n\r\n  SVGShapeElement.prototype.identityMatrix = new Matrix();\r\n\r\n  SVGShapeElement.prototype.buildExpressionInterface = function () {};\r\n\r\n  SVGShapeElement.prototype.createContent = function () {\r\n    this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.layerElement, 0, [], true);\r\n    this.filterUniqueShapes();\r\n  };\r\n  /*\r\n  This method searches for multiple shapes that affect a single element and one of them is animated\r\n  */\r\n\r\n\r\n  SVGShapeElement.prototype.filterUniqueShapes = function () {\r\n    var i;\r\n    var len = this.shapes.length;\r\n    var shape;\r\n    var j;\r\n    var jLen = this.stylesList.length;\r\n    var style;\r\n    var tempShapes = [];\r\n    var areAnimated = false;\r\n\r\n    for (j = 0; j < jLen; j += 1) {\r\n      style = this.stylesList[j];\r\n      areAnimated = false;\r\n      tempShapes.length = 0;\r\n\r\n      for (i = 0; i < len; i += 1) {\r\n        shape = this.shapes[i];\r\n\r\n        if (shape.styles.indexOf(style) !== -1) {\r\n          tempShapes.push(shape);\r\n          areAnimated = shape._isAnimated || areAnimated;\r\n        }\r\n      }\r\n\r\n      if (tempShapes.length > 1 && areAnimated) {\r\n        this.setShapesAsAnimated(tempShapes);\r\n      }\r\n    }\r\n  };\r\n\r\n  SVGShapeElement.prototype.setShapesAsAnimated = function (shapes) {\r\n    var i;\r\n    var len = shapes.length;\r\n\r\n    for (i = 0; i < len; i += 1) {\r\n      shapes[i].setAsAnimated();\r\n    }\r\n  };\r\n\r\n  SVGShapeElement.prototype.createStyleElement = function (data, level) {\r\n    // TODO: prevent drawing of hidden styles\r\n    var elementData;\r\n    var styleOb = new SVGStyleData(data, level);\r\n    var pathElement = styleOb.pElem;\r\n\r\n    if (data.ty === 'st') {\r\n      elementData = new SVGStrokeStyleData(this, data, styleOb);\r\n    } else if (data.ty === 'fl') {\r\n      elementData = new SVGFillStyleData(this, data, styleOb);\r\n    } else if (data.ty === 'gf' || data.ty === 'gs') {\r\n      var GradientConstructor = data.ty === 'gf' ? SVGGradientFillStyleData : SVGGradientStrokeStyleData;\r\n      elementData = new GradientConstructor(this, data, styleOb);\r\n      this.globalData.defs.appendChild(elementData.gf);\r\n\r\n      if (elementData.maskId) {\r\n        this.globalData.defs.appendChild(elementData.ms);\r\n        this.globalData.defs.appendChild(elementData.of);\r\n        pathElement.setAttribute('mask', 'url(' + getLocationHref() + '#' + elementData.maskId + ')');\r\n      }\r\n    } else if (data.ty === 'no') {\r\n      elementData = new SVGNoStyleData(this, data, styleOb);\r\n    }\r\n\r\n    if (data.ty === 'st' || data.ty === 'gs') {\r\n      pathElement.setAttribute('stroke-linecap', lineCapEnum[data.lc || 2]);\r\n      pathElement.setAttribute('stroke-linejoin', lineJoinEnum[data.lj || 2]);\r\n      pathElement.setAttribute('fill-opacity', '0');\r\n\r\n      if (data.lj === 1) {\r\n        pathElement.setAttribute('stroke-miterlimit', data.ml);\r\n      }\r\n    }\r\n\r\n    if (data.r === 2) {\r\n      pathElement.setAttribute('fill-rule', 'evenodd');\r\n    }\r\n\r\n    if (data.ln) {\r\n      pathElement.setAttribute('id', data.ln);\r\n    }\r\n\r\n    if (data.cl) {\r\n      pathElement.setAttribute('class', data.cl);\r\n    }\r\n\r\n    if (data.bm) {\r\n      pathElement.style['mix-blend-mode'] = getBlendMode(data.bm);\r\n    }\r\n\r\n    this.stylesList.push(styleOb);\r\n    this.addToAnimatedContents(data, elementData);\r\n    return elementData;\r\n  };\r\n\r\n  SVGShapeElement.prototype.createGroupElement = function (data) {\r\n    var elementData = new ShapeGroupData();\r\n\r\n    if (data.ln) {\r\n      elementData.gr.setAttribute('id', data.ln);\r\n    }\r\n\r\n    if (data.cl) {\r\n      elementData.gr.setAttribute('class', data.cl);\r\n    }\r\n\r\n    if (data.bm) {\r\n      elementData.gr.style['mix-blend-mode'] = getBlendMode(data.bm);\r\n    }\r\n\r\n    return elementData;\r\n  };\r\n\r\n  SVGShapeElement.prototype.createTransformElement = function (data, container) {\r\n    var transformProperty = TransformPropertyFactory.getTransformProperty(this, data, this);\r\n    var elementData = new SVGTransformData(transformProperty, transformProperty.o, container);\r\n    this.addToAnimatedContents(data, elementData);\r\n    return elementData;\r\n  };\r\n\r\n  SVGShapeElement.prototype.createShapeElement = function (data, ownTransformers, level) {\r\n    var ty = 4;\r\n\r\n    if (data.ty === 'rc') {\r\n      ty = 5;\r\n    } else if (data.ty === 'el') {\r\n      ty = 6;\r\n    } else if (data.ty === 'sr') {\r\n      ty = 7;\r\n    }\r\n\r\n    var shapeProperty = ShapePropertyFactory.getShapeProp(this, data, ty, this);\r\n    var elementData = new SVGShapeData(ownTransformers, level, shapeProperty);\r\n    this.shapes.push(elementData);\r\n    this.addShapeToModifiers(elementData);\r\n    this.addToAnimatedContents(data, elementData);\r\n    return elementData;\r\n  };\r\n\r\n  SVGShapeElement.prototype.addToAnimatedContents = function (data, element) {\r\n    var i = 0;\r\n    var len = this.animatedContents.length;\r\n\r\n    while (i < len) {\r\n      if (this.animatedContents[i].element === element) {\r\n        return;\r\n      }\r\n\r\n      i += 1;\r\n    }\r\n\r\n    this.animatedContents.push({\r\n      fn: SVGElementsRenderer.createRenderFunction(data),\r\n      element: element,\r\n      data: data\r\n    });\r\n  };\r\n\r\n  SVGShapeElement.prototype.setElementStyles = function (elementData) {\r\n    var arr = elementData.styles;\r\n    var j;\r\n    var jLen = this.stylesList.length;\r\n\r\n    for (j = 0; j < jLen; j += 1) {\r\n      if (!this.stylesList[j].closed) {\r\n        arr.push(this.stylesList[j]);\r\n      }\r\n    }\r\n  };\r\n\r\n  SVGShapeElement.prototype.reloadShapes = function () {\r\n    this._isFirstFrame = true;\r\n    var i;\r\n    var len = this.itemsData.length;\r\n\r\n    for (i = 0; i < len; i += 1) {\r\n      this.prevViewData[i] = this.itemsData[i];\r\n    }\r\n\r\n    this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.layerElement, 0, [], true);\r\n    this.filterUniqueShapes();\r\n    len = this.dynamicProperties.length;\r\n\r\n    for (i = 0; i < len; i += 1) {\r\n      this.dynamicProperties[i].getValue();\r\n    }\r\n\r\n    this.renderModifiers();\r\n  };\r\n\r\n  SVGShapeElement.prototype.searchShapes = function (arr, itemsData, prevViewData, container, level, transformers, render) {\r\n    var ownTransformers = [].concat(transformers);\r\n    var i;\r\n    var len = arr.length - 1;\r\n    var j;\r\n    var jLen;\r\n    var ownStyles = [];\r\n    var ownModifiers = [];\r\n    var currentTransform;\r\n    var modifier;\r\n    var processedPos;\r\n\r\n    for (i = len; i >= 0; i -= 1) {\r\n      processedPos = this.searchProcessedElement(arr[i]);\r\n\r\n      if (!processedPos) {\r\n        arr[i]._render = render;\r\n      } else {\r\n        itemsData[i] = prevViewData[processedPos - 1];\r\n      }\r\n\r\n      if (arr[i].ty === 'fl' || arr[i].ty === 'st' || arr[i].ty === 'gf' || arr[i].ty === 'gs' || arr[i].ty === 'no') {\r\n        if (!processedPos) {\r\n          itemsData[i] = this.createStyleElement(arr[i], level);\r\n        } else {\r\n          itemsData[i].style.closed = false;\r\n        }\r\n\r\n        if (arr[i]._render) {\r\n          if (itemsData[i].style.pElem.parentNode !== container) {\r\n            container.appendChild(itemsData[i].style.pElem);\r\n          }\r\n        }\r\n\r\n        ownStyles.push(itemsData[i].style);\r\n      } else if (arr[i].ty === 'gr') {\r\n        if (!processedPos) {\r\n          itemsData[i] = this.createGroupElement(arr[i]);\r\n        } else {\r\n          jLen = itemsData[i].it.length;\r\n\r\n          for (j = 0; j < jLen; j += 1) {\r\n            itemsData[i].prevViewData[j] = itemsData[i].it[j];\r\n          }\r\n        }\r\n\r\n        this.searchShapes(arr[i].it, itemsData[i].it, itemsData[i].prevViewData, itemsData[i].gr, level + 1, ownTransformers, render);\r\n\r\n        if (arr[i]._render) {\r\n          if (itemsData[i].gr.parentNode !== container) {\r\n            container.appendChild(itemsData[i].gr);\r\n          }\r\n        }\r\n      } else if (arr[i].ty === 'tr') {\r\n        if (!processedPos) {\r\n          itemsData[i] = this.createTransformElement(arr[i], container);\r\n        }\r\n\r\n        currentTransform = itemsData[i].transform;\r\n        ownTransformers.push(currentTransform);\r\n      } else if (arr[i].ty === 'sh' || arr[i].ty === 'rc' || arr[i].ty === 'el' || arr[i].ty === 'sr') {\r\n        if (!processedPos) {\r\n          itemsData[i] = this.createShapeElement(arr[i], ownTransformers, level);\r\n        }\r\n\r\n        this.setElementStyles(itemsData[i]);\r\n      } else if (arr[i].ty === 'tm' || arr[i].ty === 'rd' || arr[i].ty === 'ms' || arr[i].ty === 'pb' || arr[i].ty === 'zz' || arr[i].ty === 'op') {\r\n        if (!processedPos) {\r\n          modifier = ShapeModifiers.getModifier(arr[i].ty);\r\n          modifier.init(this, arr[i]);\r\n          itemsData[i] = modifier;\r\n          this.shapeModifiers.push(modifier);\r\n        } else {\r\n          modifier = itemsData[i];\r\n          modifier.closed = false;\r\n        }\r\n\r\n        ownModifiers.push(modifier);\r\n      } else if (arr[i].ty === 'rp') {\r\n        if (!processedPos) {\r\n          modifier = ShapeModifiers.getModifier(arr[i].ty);\r\n          itemsData[i] = modifier;\r\n          modifier.init(this, arr, i, itemsData);\r\n          this.shapeModifiers.push(modifier);\r\n          render = false;\r\n        } else {\r\n          modifier = itemsData[i];\r\n          modifier.closed = true;\r\n        }\r\n\r\n        ownModifiers.push(modifier);\r\n      }\r\n\r\n      this.addProcessedElement(arr[i], i + 1);\r\n    }\r\n\r\n    len = ownStyles.length;\r\n\r\n    for (i = 0; i < len; i += 1) {\r\n      ownStyles[i].closed = true;\r\n    }\r\n\r\n    len = ownModifiers.length;\r\n\r\n    for (i = 0; i < len; i += 1) {\r\n      ownModifiers[i].closed = true;\r\n    }\r\n  };\r\n\r\n  SVGShapeElement.prototype.renderInnerContent = function () {\r\n    this.renderModifiers();\r\n    var i;\r\n    var len = this.stylesList.length;\r\n\r\n    for (i = 0; i < len; i += 1) {\r\n      this.stylesList[i].reset();\r\n    }\r\n\r\n    this.renderShape();\r\n\r\n    for (i = 0; i < len; i += 1) {\r\n      if (this.stylesList[i]._mdf || this._isFirstFrame) {\r\n        if (this.stylesList[i].msElem) {\r\n          this.stylesList[i].msElem.setAttribute('d', this.stylesList[i].d); // Adding M0 0 fixes same mask bug on all browsers\r\n\r\n          this.stylesList[i].d = 'M0 0' + this.stylesList[i].d;\r\n        }\r\n\r\n        this.stylesList[i].pElem.setAttribute('d', this.stylesList[i].d || 'M0 0');\r\n      }\r\n    }\r\n  };\r\n\r\n  SVGShapeElement.prototype.renderShape = function () {\r\n    var i;\r\n    var len = this.animatedContents.length;\r\n    var animatedContent;\r\n\r\n    for (i = 0; i < len; i += 1) {\r\n      animatedContent = this.animatedContents[i];\r\n\r\n      if ((this._isFirstFrame || animatedContent.element._isAnimated) && animatedContent.data !== true) {\r\n        animatedContent.fn(animatedContent.data, animatedContent.element, this._isFirstFrame);\r\n      }\r\n    }\r\n  };\r\n\r\n  SVGShapeElement.prototype.destroy = function () {\r\n    this.destroyBaseElement();\r\n    this.shapesData = null;\r\n    this.itemsData = null;\r\n  };\r\n\r\n  function LetterProps(o, sw, sc, fc, m, p) {\r\n    this.o = o;\r\n    this.sw = sw;\r\n    this.sc = sc;\r\n    this.fc = fc;\r\n    this.m = m;\r\n    this.p = p;\r\n    this._mdf = {\r\n      o: true,\r\n      sw: !!sw,\r\n      sc: !!sc,\r\n      fc: !!fc,\r\n      m: true,\r\n      p: true\r\n    };\r\n  }\r\n\r\n  LetterProps.prototype.update = function (o, sw, sc, fc, m, p) {\r\n    this._mdf.o = false;\r\n    this._mdf.sw = false;\r\n    this._mdf.sc = false;\r\n    this._mdf.fc = false;\r\n    this._mdf.m = false;\r\n    this._mdf.p = false;\r\n    var updated = false;\r\n\r\n    if (this.o !== o) {\r\n      this.o = o;\r\n      this._mdf.o = true;\r\n      updated = true;\r\n    }\r\n\r\n    if (this.sw !== sw) {\r\n      this.sw = sw;\r\n      this._mdf.sw = true;\r\n      updated = true;\r\n    }\r\n\r\n    if (this.sc !== sc) {\r\n      this.sc = sc;\r\n      this._mdf.sc = true;\r\n      updated = true;\r\n    }\r\n\r\n    if (this.fc !== fc) {\r\n      this.fc = fc;\r\n      this._mdf.fc = true;\r\n      updated = true;\r\n    }\r\n\r\n    if (this.m !== m) {\r\n      this.m = m;\r\n      this._mdf.m = true;\r\n      updated = true;\r\n    }\r\n\r\n    if (p.length && (this.p[0] !== p[0] || this.p[1] !== p[1] || this.p[4] !== p[4] || this.p[5] !== p[5] || this.p[12] !== p[12] || this.p[13] !== p[13])) {\r\n      this.p = p;\r\n      this._mdf.p = true;\r\n      updated = true;\r\n    }\r\n\r\n    return updated;\r\n  };\r\n\r\n  function TextProperty(elem, data) {\r\n    this._frameId = initialDefaultFrame;\r\n    this.pv = '';\r\n    this.v = '';\r\n    this.kf = false;\r\n    this._isFirstFrame = true;\r\n    this._mdf = false;\r\n    this.data = data;\r\n    this.elem = elem;\r\n    this.comp = this.elem.comp;\r\n    this.keysIndex = 0;\r\n    this.canResize = false;\r\n    this.minimumFontSize = 1;\r\n    this.effectsSequence = [];\r\n    this.currentData = {\r\n      ascent: 0,\r\n      boxWidth: this.defaultBoxWidth,\r\n      f: '',\r\n      fStyle: '',\r\n      fWeight: '',\r\n      fc: '',\r\n      j: '',\r\n      justifyOffset: '',\r\n      l: [],\r\n      lh: 0,\r\n      lineWidths: [],\r\n      ls: '',\r\n      of: '',\r\n      s: '',\r\n      sc: '',\r\n      sw: 0,\r\n      t: 0,\r\n      tr: 0,\r\n      sz: 0,\r\n      ps: null,\r\n      fillColorAnim: false,\r\n      strokeColorAnim: false,\r\n      strokeWidthAnim: false,\r\n      yOffset: 0,\r\n      finalSize: 0,\r\n      finalText: [],\r\n      finalLineHeight: 0,\r\n      __complete: false\r\n    };\r\n    this.copyData(this.currentData, this.data.d.k[0].s);\r\n\r\n    if (!this.searchProperty()) {\r\n      this.completeTextData(this.currentData);\r\n    }\r\n  }\r\n\r\n  TextProperty.prototype.defaultBoxWidth = [0, 0];\r\n\r\n  TextProperty.prototype.copyData = function (obj, data) {\r\n    for (var s in data) {\r\n      if (Object.prototype.hasOwnProperty.call(data, s)) {\r\n        obj[s] = data[s];\r\n      }\r\n    }\r\n\r\n    return obj;\r\n  };\r\n\r\n  TextProperty.prototype.setCurrentData = function (data) {\r\n    if (!data.__complete) {\r\n      this.completeTextData(data);\r\n    }\r\n\r\n    this.currentData = data;\r\n    this.currentData.boxWidth = this.currentData.boxWidth || this.defaultBoxWidth;\r\n    this._mdf = true;\r\n  };\r\n\r\n  TextProperty.prototype.searchProperty = function () {\r\n    return this.searchKeyframes();\r\n  };\r\n\r\n  TextProperty.prototype.searchKeyframes = function () {\r\n    this.kf = this.data.d.k.length > 1;\r\n\r\n    if (this.kf) {\r\n      this.addEffect(this.getKeyframeValue.bind(this));\r\n    }\r\n\r\n    return this.kf;\r\n  };\r\n\r\n  TextProperty.prototype.addEffect = function (effectFunction) {\r\n    this.effectsSequence.push(effectFunction);\r\n    this.elem.addDynamicProperty(this);\r\n  };\r\n\r\n  TextProperty.prototype.getValue = function (_finalValue) {\r\n    if ((this.elem.globalData.frameId === this.frameId || !this.effectsSequence.length) && !_finalValue) {\r\n      return;\r\n    }\r\n\r\n    this.currentData.t = this.data.d.k[this.keysIndex].s.t;\r\n    var currentValue = this.currentData;\r\n    var currentIndex = this.keysIndex;\r\n\r\n    if (this.lock) {\r\n      this.setCurrentData(this.currentData);\r\n      return;\r\n    }\r\n\r\n    this.lock = true;\r\n    this._mdf = false;\r\n    var i;\r\n    var len = this.effectsSequence.length;\r\n    var finalValue = _finalValue || this.data.d.k[this.keysIndex].s;\r\n\r\n    for (i = 0; i < len; i += 1) {\r\n      // Checking if index changed to prevent creating a new object every time the expression updates.\r\n      if (currentIndex !== this.keysIndex) {\r\n        finalValue = this.effectsSequence[i](finalValue, finalValue.t);\r\n      } else {\r\n        finalValue = this.effectsSequence[i](this.currentData, finalValue.t);\r\n      }\r\n    }\r\n\r\n    if (currentValue !== finalValue) {\r\n      this.setCurrentData(finalValue);\r\n    }\r\n\r\n    this.v = this.currentData;\r\n    this.pv = this.v;\r\n    this.lock = false;\r\n    this.frameId = this.elem.globalData.frameId;\r\n  };\r\n\r\n  TextProperty.prototype.getKeyframeValue = function () {\r\n    var textKeys = this.data.d.k;\r\n    var frameNum = this.elem.comp.renderedFrame;\r\n    var i = 0;\r\n    var len = textKeys.length;\r\n\r\n    while (i <= len - 1) {\r\n      if (i === len - 1 || textKeys[i + 1].t > frameNum) {\r\n        break;\r\n      }\r\n\r\n      i += 1;\r\n    }\r\n\r\n    if (this.keysIndex !== i) {\r\n      this.keysIndex = i;\r\n    }\r\n\r\n    return this.data.d.k[this.keysIndex].s;\r\n  };\r\n\r\n  TextProperty.prototype.buildFinalText = function (text) {\r\n    var charactersArray = [];\r\n    var i = 0;\r\n    var len = text.length;\r\n    var charCode;\r\n    var secondCharCode;\r\n    var shouldCombine = false;\r\n\r\n    while (i < len) {\r\n      charCode = text.charCodeAt(i);\r\n\r\n      if (FontManager.isCombinedCharacter(charCode)) {\r\n        charactersArray[charactersArray.length - 1] += text.charAt(i);\r\n      } else if (charCode >= 0xD800 && charCode <= 0xDBFF) {\r\n        secondCharCode = text.charCodeAt(i + 1);\r\n\r\n        if (secondCharCode >= 0xDC00 && secondCharCode <= 0xDFFF) {\r\n          if (shouldCombine || FontManager.isModifier(charCode, secondCharCode)) {\r\n            charactersArray[charactersArray.length - 1] += text.substr(i, 2);\r\n            shouldCombine = false;\r\n          } else {\r\n            charactersArray.push(text.substr(i, 2));\r\n          }\r\n\r\n          i += 1;\r\n        } else {\r\n          charactersArray.push(text.charAt(i));\r\n        }\r\n      } else if (charCode > 0xDBFF) {\r\n        secondCharCode = text.charCodeAt(i + 1);\r\n\r\n        if (FontManager.isZeroWidthJoiner(charCode, secondCharCode)) {\r\n          shouldCombine = true;\r\n          charactersArray[charactersArray.length - 1] += text.substr(i, 2);\r\n          i += 1;\r\n        } else {\r\n          charactersArray.push(text.charAt(i));\r\n        }\r\n      } else if (FontManager.isZeroWidthJoiner(charCode)) {\r\n        charactersArray[charactersArray.length - 1] += text.charAt(i);\r\n        shouldCombine = true;\r\n      } else {\r\n        charactersArray.push(text.charAt(i));\r\n      }\r\n\r\n      i += 1;\r\n    }\r\n\r\n    return charactersArray;\r\n  };\r\n\r\n  TextProperty.prototype.completeTextData = function (documentData) {\r\n    documentData.__complete = true;\r\n    var fontManager = this.elem.globalData.fontManager;\r\n    var data = this.data;\r\n    var letters = [];\r\n    var i;\r\n    var len;\r\n    var newLineFlag;\r\n    var index = 0;\r\n    var val;\r\n    var anchorGrouping = data.m.g;\r\n    var currentSize = 0;\r\n    var currentPos = 0;\r\n    var currentLine = 0;\r\n    var lineWidths = [];\r\n    var lineWidth = 0;\r\n    var maxLineWidth = 0;\r\n    var j;\r\n    var jLen;\r\n    var fontData = fontManager.getFontByName(documentData.f);\r\n    var charData;\r\n    var cLength = 0;\r\n    var fontProps = getFontProperties(fontData);\r\n    documentData.fWeight = fontProps.weight;\r\n    documentData.fStyle = fontProps.style;\r\n    documentData.finalSize = documentData.s;\r\n    documentData.finalText = this.buildFinalText(documentData.t);\r\n    len = documentData.finalText.length;\r\n    documentData.finalLineHeight = documentData.lh;\r\n    var trackingOffset = documentData.tr / 1000 * documentData.finalSize;\r\n    var charCode;\r\n\r\n    if (documentData.sz) {\r\n      var flag = true;\r\n      var boxWidth = documentData.sz[0];\r\n      var boxHeight = documentData.sz[1];\r\n      var currentHeight;\r\n      var finalText;\r\n\r\n      while (flag) {\r\n        finalText = this.buildFinalText(documentData.t);\r\n        currentHeight = 0;\r\n        lineWidth = 0;\r\n        len = finalText.length;\r\n        trackingOffset = documentData.tr / 1000 * documentData.finalSize;\r\n        var lastSpaceIndex = -1;\r\n\r\n        for (i = 0; i < len; i += 1) {\r\n          charCode = finalText[i].charCodeAt(0);\r\n          newLineFlag = false;\r\n\r\n          if (finalText[i] === ' ') {\r\n            lastSpaceIndex = i;\r\n          } else if (charCode === 13 || charCode === 3) {\r\n            lineWidth = 0;\r\n            newLineFlag = true;\r\n            currentHeight += documentData.finalLineHeight || documentData.finalSize * 1.2;\r\n          }\r\n\r\n          if (fontManager.chars) {\r\n            charData = fontManager.getCharData(finalText[i], fontData.fStyle, fontData.fFamily);\r\n            cLength = newLineFlag ? 0 : charData.w * documentData.finalSize / 100;\r\n          } else {\r\n            // tCanvasHelper.font = documentData.s + 'px '+ fontData.fFamily;\r\n            cLength = fontManager.measureText(finalText[i], documentData.f, documentData.finalSize);\r\n          }\r\n\r\n          if (lineWidth + cLength > boxWidth && finalText[i] !== ' ') {\r\n            if (lastSpaceIndex === -1) {\r\n              len += 1;\r\n            } else {\r\n              i = lastSpaceIndex;\r\n            }\r\n\r\n            currentHeight += documentData.finalLineHeight || documentData.finalSize * 1.2;\r\n            finalText.splice(i, lastSpaceIndex === i ? 1 : 0, '\\r'); // finalText = finalText.substr(0,i) + \"\\r\" + finalText.substr(i === lastSpaceIndex ? i + 1 : i);\r\n\r\n            lastSpaceIndex = -1;\r\n            lineWidth = 0;\r\n          } else {\r\n            lineWidth += cLength;\r\n            lineWidth += trackingOffset;\r\n          }\r\n        }\r\n\r\n        currentHeight += fontData.ascent * documentData.finalSize / 100;\r\n\r\n        if (this.canResize && documentData.finalSize > this.minimumFontSize && boxHeight < currentHeight) {\r\n          documentData.finalSize -= 1;\r\n          documentData.finalLineHeight = documentData.finalSize * documentData.lh / documentData.s;\r\n        } else {\r\n          documentData.finalText = finalText;\r\n          len = documentData.finalText.length;\r\n          flag = false;\r\n        }\r\n      }\r\n    }\r\n\r\n    lineWidth = -trackingOffset;\r\n    cLength = 0;\r\n    var uncollapsedSpaces = 0;\r\n    var currentChar;\r\n\r\n    for (i = 0; i < len; i += 1) {\r\n      newLineFlag = false;\r\n      currentChar = documentData.finalText[i];\r\n      charCode = currentChar.charCodeAt(0);\r\n\r\n      if (charCode === 13 || charCode === 3) {\r\n        uncollapsedSpaces = 0;\r\n        lineWidths.push(lineWidth);\r\n        maxLineWidth = lineWidth > maxLineWidth ? lineWidth : maxLineWidth;\r\n        lineWidth = -2 * trackingOffset;\r\n        val = '';\r\n        newLineFlag = true;\r\n        currentLine += 1;\r\n      } else {\r\n        val = currentChar;\r\n      }\r\n\r\n      if (fontManager.chars) {\r\n        charData = fontManager.getCharData(currentChar, fontData.fStyle, fontManager.getFontByName(documentData.f).fFamily);\r\n        cLength = newLineFlag ? 0 : charData.w * documentData.finalSize / 100;\r\n      } else {\r\n        // var charWidth = fontManager.measureText(val, documentData.f, documentData.finalSize);\r\n        // tCanvasHelper.font = documentData.finalSize + 'px '+ fontManager.getFontByName(documentData.f).fFamily;\r\n        cLength = fontManager.measureText(val, documentData.f, documentData.finalSize);\r\n      } //\r\n\r\n\r\n      if (currentChar === ' ') {\r\n        uncollapsedSpaces += cLength + trackingOffset;\r\n      } else {\r\n        lineWidth += cLength + trackingOffset + uncollapsedSpaces;\r\n        uncollapsedSpaces = 0;\r\n      }\r\n\r\n      letters.push({\r\n        l: cLength,\r\n        an: cLength,\r\n        add: currentSize,\r\n        n: newLineFlag,\r\n        anIndexes: [],\r\n        val: val,\r\n        line: currentLine,\r\n        animatorJustifyOffset: 0\r\n      });\r\n\r\n      if (anchorGrouping == 2) {\r\n        // eslint-disable-line eqeqeq\r\n        currentSize += cLength;\r\n\r\n        if (val === '' || val === ' ' || i === len - 1) {\r\n          if (val === '' || val === ' ') {\r\n            currentSize -= cLength;\r\n          }\r\n\r\n          while (currentPos <= i) {\r\n            letters[currentPos].an = currentSize;\r\n            letters[currentPos].ind = index;\r\n            letters[currentPos].extra = cLength;\r\n            currentPos += 1;\r\n          }\r\n\r\n          index += 1;\r\n          currentSize = 0;\r\n        }\r\n      } else if (anchorGrouping == 3) {\r\n        // eslint-disable-line eqeqeq\r\n        currentSize += cLength;\r\n\r\n        if (val === '' || i === len - 1) {\r\n          if (val === '') {\r\n            currentSize -= cLength;\r\n          }\r\n\r\n          while (currentPos <= i) {\r\n            letters[currentPos].an = currentSize;\r\n            letters[currentPos].ind = index;\r\n            letters[currentPos].extra = cLength;\r\n            currentPos += 1;\r\n          }\r\n\r\n          currentSize = 0;\r\n          index += 1;\r\n        }\r\n      } else {\r\n        letters[index].ind = index;\r\n        letters[index].extra = 0;\r\n        index += 1;\r\n      }\r\n    }\r\n\r\n    documentData.l = letters;\r\n    maxLineWidth = lineWidth > maxLineWidth ? lineWidth : maxLineWidth;\r\n    lineWidths.push(lineWidth);\r\n\r\n    if (documentData.sz) {\r\n      documentData.boxWidth = documentData.sz[0];\r\n      documentData.justifyOffset = 0;\r\n    } else {\r\n      documentData.boxWidth = maxLineWidth;\r\n\r\n      switch (documentData.j) {\r\n        case 1:\r\n          documentData.justifyOffset = -documentData.boxWidth;\r\n          break;\r\n\r\n        case 2:\r\n          documentData.justifyOffset = -documentData.boxWidth / 2;\r\n          break;\r\n\r\n        default:\r\n          documentData.justifyOffset = 0;\r\n      }\r\n    }\r\n\r\n    documentData.lineWidths = lineWidths;\r\n    var animators = data.a;\r\n    var animatorData;\r\n    var letterData;\r\n    jLen = animators.length;\r\n    var based;\r\n    var ind;\r\n    var indexes = [];\r\n\r\n    for (j = 0; j < jLen; j += 1) {\r\n      animatorData = animators[j];\r\n\r\n      if (animatorData.a.sc) {\r\n        documentData.strokeColorAnim = true;\r\n      }\r\n\r\n      if (animatorData.a.sw) {\r\n        documentData.strokeWidthAnim = true;\r\n      }\r\n\r\n      if (animatorData.a.fc || animatorData.a.fh || animatorData.a.fs || animatorData.a.fb) {\r\n        documentData.fillColorAnim = true;\r\n      }\r\n\r\n      ind = 0;\r\n      based = animatorData.s.b;\r\n\r\n      for (i = 0; i < len; i += 1) {\r\n        letterData = letters[i];\r\n        letterData.anIndexes[j] = ind;\r\n\r\n        if (based == 1 && letterData.val !== '' || based == 2 && letterData.val !== '' && letterData.val !== ' ' || based == 3 && (letterData.n || letterData.val == ' ' || i == len - 1) || based == 4 && (letterData.n || i == len - 1)) {\r\n          // eslint-disable-line eqeqeq\r\n          if (animatorData.s.rn === 1) {\r\n            indexes.push(ind);\r\n          }\r\n\r\n          ind += 1;\r\n        }\r\n      }\r\n\r\n      data.a[j].s.totalChars = ind;\r\n      var currentInd = -1;\r\n      var newInd;\r\n\r\n      if (animatorData.s.rn === 1) {\r\n        for (i = 0; i < len; i += 1) {\r\n          letterData = letters[i];\r\n\r\n          if (currentInd != letterData.anIndexes[j]) {\r\n            // eslint-disable-line eqeqeq\r\n            currentInd = letterData.anIndexes[j];\r\n            newInd = indexes.splice(Math.floor(Math.random() * indexes.length), 1)[0];\r\n          }\r\n\r\n          letterData.anIndexes[j] = newInd;\r\n        }\r\n      }\r\n    }\r\n\r\n    documentData.yOffset = documentData.finalLineHeight || documentData.finalSize * 1.2;\r\n    documentData.ls = documentData.ls || 0;\r\n    documentData.ascent = fontData.ascent * documentData.finalSize / 100;\r\n  };\r\n\r\n  TextProperty.prototype.updateDocumentData = function (newData, index) {\r\n    index = index === undefined ? this.keysIndex : index;\r\n    var dData = this.copyData({}, this.data.d.k[index].s);\r\n    dData = this.copyData(dData, newData);\r\n    this.data.d.k[index].s = dData;\r\n    this.recalculate(index);\r\n    this.elem.addDynamicProperty(this);\r\n  };\r\n\r\n  TextProperty.prototype.recalculate = function (index) {\r\n    var dData = this.data.d.k[index].s;\r\n    dData.__complete = false;\r\n    this.keysIndex = 0;\r\n    this._isFirstFrame = true;\r\n    this.getValue(dData);\r\n  };\r\n\r\n  TextProperty.prototype.canResizeFont = function (_canResize) {\r\n    this.canResize = _canResize;\r\n    this.recalculate(this.keysIndex);\r\n    this.elem.addDynamicProperty(this);\r\n  };\r\n\r\n  TextProperty.prototype.setMinimumFontSize = function (_fontValue) {\r\n    this.minimumFontSize = Math.floor(_fontValue) || 1;\r\n    this.recalculate(this.keysIndex);\r\n    this.elem.addDynamicProperty(this);\r\n  };\r\n\r\n  var TextSelectorProp = function () {\r\n    var max = Math.max;\r\n    var min = Math.min;\r\n    var floor = Math.floor;\r\n\r\n    function TextSelectorPropFactory(elem, data) {\r\n      this._currentTextLength = -1;\r\n      this.k = false;\r\n      this.data = data;\r\n      this.elem = elem;\r\n      this.comp = elem.comp;\r\n      this.finalS = 0;\r\n      this.finalE = 0;\r\n      this.initDynamicPropertyContainer(elem);\r\n      this.s = PropertyFactory.getProp(elem, data.s || {\r\n        k: 0\r\n      }, 0, 0, this);\r\n\r\n      if ('e' in data) {\r\n        this.e = PropertyFactory.getProp(elem, data.e, 0, 0, this);\r\n      } else {\r\n        this.e = {\r\n          v: 100\r\n        };\r\n      }\r\n\r\n      this.o = PropertyFactory.getProp(elem, data.o || {\r\n        k: 0\r\n      }, 0, 0, this);\r\n      this.xe = PropertyFactory.getProp(elem, data.xe || {\r\n        k: 0\r\n      }, 0, 0, this);\r\n      this.ne = PropertyFactory.getProp(elem, data.ne || {\r\n        k: 0\r\n      }, 0, 0, this);\r\n      this.sm = PropertyFactory.getProp(elem, data.sm || {\r\n        k: 100\r\n      }, 0, 0, this);\r\n      this.a = PropertyFactory.getProp(elem, data.a, 0, 0.01, this);\r\n\r\n      if (!this.dynamicProperties.length) {\r\n        this.getValue();\r\n      }\r\n    }\r\n\r\n    TextSelectorPropFactory.prototype = {\r\n      getMult: function getMult(ind) {\r\n        if (this._currentTextLength !== this.elem.textProperty.currentData.l.length) {\r\n          this.getValue();\r\n        }\r\n\r\n        var x1 = 0;\r\n        var y1 = 0;\r\n        var x2 = 1;\r\n        var y2 = 1;\r\n\r\n        if (this.ne.v > 0) {\r\n          x1 = this.ne.v / 100.0;\r\n        } else {\r\n          y1 = -this.ne.v / 100.0;\r\n        }\r\n\r\n        if (this.xe.v > 0) {\r\n          x2 = 1.0 - this.xe.v / 100.0;\r\n        } else {\r\n          y2 = 1.0 + this.xe.v / 100.0;\r\n        }\r\n\r\n        var easer = BezierFactory.getBezierEasing(x1, y1, x2, y2).get;\r\n        var mult = 0;\r\n        var s = this.finalS;\r\n        var e = this.finalE;\r\n        var type = this.data.sh;\r\n\r\n        if (type === 2) {\r\n          if (e === s) {\r\n            mult = ind >= e ? 1 : 0;\r\n          } else {\r\n            mult = max(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1));\r\n          }\r\n\r\n          mult = easer(mult);\r\n        } else if (type === 3) {\r\n          if (e === s) {\r\n            mult = ind >= e ? 0 : 1;\r\n          } else {\r\n            mult = 1 - max(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1));\r\n          }\r\n\r\n          mult = easer(mult);\r\n        } else if (type === 4) {\r\n          if (e === s) {\r\n            mult = 0;\r\n          } else {\r\n            mult = max(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1));\r\n\r\n            if (mult < 0.5) {\r\n              mult *= 2;\r\n            } else {\r\n              mult = 1 - 2 * (mult - 0.5);\r\n            }\r\n          }\r\n\r\n          mult = easer(mult);\r\n        } else if (type === 5) {\r\n          if (e === s) {\r\n            mult = 0;\r\n          } else {\r\n            var tot = e - s;\r\n            /* ind += 0.5;\r\n                      mult = -4/(tot*tot)*(ind*ind)+(4/tot)*ind; */\r\n\r\n            ind = min(max(0, ind + 0.5 - s), e - s);\r\n            var x = -tot / 2 + ind;\r\n            var a = tot / 2;\r\n            mult = Math.sqrt(1 - x * x / (a * a));\r\n          }\r\n\r\n          mult = easer(mult);\r\n        } else if (type === 6) {\r\n          if (e === s) {\r\n            mult = 0;\r\n          } else {\r\n            ind = min(max(0, ind + 0.5 - s), e - s);\r\n            mult = (1 + Math.cos(Math.PI + Math.PI * 2 * ind / (e - s))) / 2; // eslint-disable-line\r\n          }\r\n\r\n          mult = easer(mult);\r\n        } else {\r\n          if (ind >= floor(s)) {\r\n            if (ind - s < 0) {\r\n              mult = max(0, min(min(e, 1) - (s - ind), 1));\r\n            } else {\r\n              mult = max(0, min(e - ind, 1));\r\n            }\r\n          }\r\n\r\n          mult = easer(mult);\r\n        } // Smoothness implementation.\r\n        // The smoothness represents a reduced range of the original [0; 1] range.\r\n        // if smoothness is 25%, the new range will be [0.375; 0.625]\r\n        // Steps are:\r\n        // - find the lower value of the new range (threshold)\r\n        // - if multiplier is smaller than that value, floor it to 0\r\n        // - if it is larger,\r\n        //     - subtract the threshold\r\n        //     - divide it by the smoothness (this will return the range to [0; 1])\r\n        // Note: If it doesn't work on some scenarios, consider applying it before the easer.\r\n\r\n\r\n        if (this.sm.v !== 100) {\r\n          var smoothness = this.sm.v * 0.01;\r\n\r\n          if (smoothness === 0) {\r\n            smoothness = 0.00000001;\r\n          }\r\n\r\n          var threshold = 0.5 - smoothness * 0.5;\r\n\r\n          if (mult < threshold) {\r\n            mult = 0;\r\n          } else {\r\n            mult = (mult - threshold) / smoothness;\r\n\r\n            if (mult > 1) {\r\n              mult = 1;\r\n            }\r\n          }\r\n        }\r\n\r\n        return mult * this.a.v;\r\n      },\r\n      getValue: function getValue(newCharsFlag) {\r\n        this.iterateDynamicProperties();\r\n        this._mdf = newCharsFlag || this._mdf;\r\n        this._currentTextLength = this.elem.textProperty.currentData.l.length || 0;\r\n\r\n        if (newCharsFlag && this.data.r === 2) {\r\n          this.e.v = this._currentTextLength;\r\n        }\r\n\r\n        var divisor = this.data.r === 2 ? 1 : 100 / this.data.totalChars;\r\n        var o = this.o.v / divisor;\r\n        var s = this.s.v / divisor + o;\r\n        var e = this.e.v / divisor + o;\r\n\r\n        if (s > e) {\r\n          var _s = s;\r\n          s = e;\r\n          e = _s;\r\n        }\r\n\r\n        this.finalS = s;\r\n        this.finalE = e;\r\n      }\r\n    };\r\n    extendPrototype([DynamicPropertyContainer], TextSelectorPropFactory);\r\n\r\n    function getTextSelectorProp(elem, data, arr) {\r\n      return new TextSelectorPropFactory(elem, data, arr);\r\n    }\r\n\r\n    return {\r\n      getTextSelectorProp: getTextSelectorProp\r\n    };\r\n  }();\r\n\r\n  function TextAnimatorDataProperty(elem, animatorProps, container) {\r\n    var defaultData = {\r\n      propType: false\r\n    };\r\n    var getProp = PropertyFactory.getProp;\r\n    var textAnimatorAnimatables = animatorProps.a;\r\n    this.a = {\r\n      r: textAnimatorAnimatables.r ? getProp(elem, textAnimatorAnimatables.r, 0, degToRads, container) : defaultData,\r\n      rx: textAnimatorAnimatables.rx ? getProp(elem, textAnimatorAnimatables.rx, 0, degToRads, container) : defaultData,\r\n      ry: textAnimatorAnimatables.ry ? getProp(elem, textAnimatorAnimatables.ry, 0, degToRads, container) : defaultData,\r\n      sk: textAnimatorAnimatables.sk ? getProp(elem, textAnimatorAnimatables.sk, 0, degToRads, container) : defaultData,\r\n      sa: textAnimatorAnimatables.sa ? getProp(elem, textAnimatorAnimatables.sa, 0, degToRads, container) : defaultData,\r\n      s: textAnimatorAnimatables.s ? getProp(elem, textAnimatorAnimatables.s, 1, 0.01, container) : defaultData,\r\n      a: textAnimatorAnimatables.a ? getProp(elem, textAnimatorAnimatables.a, 1, 0, container) : defaultData,\r\n      o: textAnimatorAnimatables.o ? getProp(elem, textAnimatorAnimatables.o, 0, 0.01, container) : defaultData,\r\n      p: textAnimatorAnimatables.p ? getProp(elem, textAnimatorAnimatables.p, 1, 0, container) : defaultData,\r\n      sw: textAnimatorAnimatables.sw ? getProp(elem, textAnimatorAnimatables.sw, 0, 0, container) : defaultData,\r\n      sc: textAnimatorAnimatables.sc ? getProp(elem, textAnimatorAnimatables.sc, 1, 0, container) : defaultData,\r\n      fc: textAnimatorAnimatables.fc ? getProp(elem, textAnimatorAnimatables.fc, 1, 0, container) : defaultData,\r\n      fh: textAnimatorAnimatables.fh ? getProp(elem, textAnimatorAnimatables.fh, 0, 0, container) : defaultData,\r\n      fs: textAnimatorAnimatables.fs ? getProp(elem, textAnimatorAnimatables.fs, 0, 0.01, container) : defaultData,\r\n      fb: textAnimatorAnimatables.fb ? getProp(elem, textAnimatorAnimatables.fb, 0, 0.01, container) : defaultData,\r\n      t: textAnimatorAnimatables.t ? getProp(elem, textAnimatorAnimatables.t, 0, 0, container) : defaultData\r\n    };\r\n    this.s = TextSelectorProp.getTextSelectorProp(elem, animatorProps.s, container);\r\n    this.s.t = animatorProps.s.t;\r\n  }\r\n\r\n  function TextAnimatorProperty(textData, renderType, elem) {\r\n    this._isFirstFrame = true;\r\n    this._hasMaskedPath = false;\r\n    this._frameId = -1;\r\n    this._textData = textData;\r\n    this._renderType = renderType;\r\n    this._elem = elem;\r\n    this._animatorsData = createSizedArray(this._textData.a.length);\r\n    this._pathData = {};\r\n    this._moreOptions = {\r\n      alignment: {}\r\n    };\r\n    this.renderedLetters = [];\r\n    this.lettersChangedFlag = false;\r\n    this.initDynamicPropertyContainer(elem);\r\n  }\r\n\r\n  TextAnimatorProperty.prototype.searchProperties = function () {\r\n    var i;\r\n    var len = this._textData.a.length;\r\n    var animatorProps;\r\n    var getProp = PropertyFactory.getProp;\r\n\r\n    for (i = 0; i < len; i += 1) {\r\n      animatorProps = this._textData.a[i];\r\n      this._animatorsData[i] = new TextAnimatorDataProperty(this._elem, animatorProps, this);\r\n    }\r\n\r\n    if (this._textData.p && 'm' in this._textData.p) {\r\n      this._pathData = {\r\n        a: getProp(this._elem, this._textData.p.a, 0, 0, this),\r\n        f: getProp(this._elem, this._textData.p.f, 0, 0, this),\r\n        l: getProp(this._elem, this._textData.p.l, 0, 0, this),\r\n        r: getProp(this._elem, this._textData.p.r, 0, 0, this),\r\n        p: getProp(this._elem, this._textData.p.p, 0, 0, this),\r\n        m: this._elem.maskManager.getMaskProperty(this._textData.p.m)\r\n      };\r\n      this._hasMaskedPath = true;\r\n    } else {\r\n      this._hasMaskedPath = false;\r\n    }\r\n\r\n    this._moreOptions.alignment = getProp(this._elem, this._textData.m.a, 1, 0, this);\r\n  };\r\n\r\n  TextAnimatorProperty.prototype.getMeasures = function (documentData, lettersChangedFlag) {\r\n    this.lettersChangedFlag = lettersChangedFlag;\r\n\r\n    if (!this._mdf && !this._isFirstFrame && !lettersChangedFlag && (!this._hasMaskedPath || !this._pathData.m._mdf)) {\r\n      return;\r\n    }\r\n\r\n    this._isFirstFrame = false;\r\n    var alignment = this._moreOptions.alignment.v;\r\n    var animators = this._animatorsData;\r\n    var textData = this._textData;\r\n    var matrixHelper = this.mHelper;\r\n    var renderType = this._renderType;\r\n    var renderedLettersCount = this.renderedLetters.length;\r\n    var xPos;\r\n    var yPos;\r\n    var i;\r\n    var len;\r\n    var letters = documentData.l;\r\n    var pathInfo;\r\n    var currentLength;\r\n    var currentPoint;\r\n    var segmentLength;\r\n    var flag;\r\n    var pointInd;\r\n    var segmentInd;\r\n    var prevPoint;\r\n    var points;\r\n    var segments;\r\n    var partialLength;\r\n    var totalLength;\r\n    var perc;\r\n    var tanAngle;\r\n    var mask;\r\n\r\n    if (this._hasMaskedPath) {\r\n      mask = this._pathData.m;\r\n\r\n      if (!this._pathData.n || this._pathData._mdf) {\r\n        var paths = mask.v;\r\n\r\n        if (this._pathData.r.v) {\r\n          paths = paths.reverse();\r\n        } // TODO: release bezier data cached from previous pathInfo: this._pathData.pi\r\n\r\n\r\n        pathInfo = {\r\n          tLength: 0,\r\n          segments: []\r\n        };\r\n        len = paths._length - 1;\r\n        var bezierData;\r\n        totalLength = 0;\r\n\r\n        for (i = 0; i < len; i += 1) {\r\n          bezierData = bez.buildBezierData(paths.v[i], paths.v[i + 1], [paths.o[i][0] - paths.v[i][0], paths.o[i][1] - paths.v[i][1]], [paths.i[i + 1][0] - paths.v[i + 1][0], paths.i[i + 1][1] - paths.v[i + 1][1]]);\r\n          pathInfo.tLength += bezierData.segmentLength;\r\n          pathInfo.segments.push(bezierData);\r\n          totalLength += bezierData.segmentLength;\r\n        }\r\n\r\n        i = len;\r\n\r\n        if (mask.v.c) {\r\n          bezierData = bez.buildBezierData(paths.v[i], paths.v[0], [paths.o[i][0] - paths.v[i][0], paths.o[i][1] - paths.v[i][1]], [paths.i[0][0] - paths.v[0][0], paths.i[0][1] - paths.v[0][1]]);\r\n          pathInfo.tLength += bezierData.segmentLength;\r\n          pathInfo.segments.push(bezierData);\r\n          totalLength += bezierData.segmentLength;\r\n        }\r\n\r\n        this._pathData.pi = pathInfo;\r\n      }\r\n\r\n      pathInfo = this._pathData.pi;\r\n      currentLength = this._pathData.f.v;\r\n      segmentInd = 0;\r\n      pointInd = 1;\r\n      segmentLength = 0;\r\n      flag = true;\r\n      segments = pathInfo.segments;\r\n\r\n      if (currentLength < 0 && mask.v.c) {\r\n        if (pathInfo.tLength < Math.abs(currentLength)) {\r\n          currentLength = -Math.abs(currentLength) % pathInfo.tLength;\r\n        }\r\n\r\n        segmentInd = segments.length - 1;\r\n        points = segments[segmentInd].points;\r\n        pointInd = points.length - 1;\r\n\r\n        while (currentLength < 0) {\r\n          currentLength += points[pointInd].partialLength;\r\n          pointInd -= 1;\r\n\r\n          if (pointInd < 0) {\r\n            segmentInd -= 1;\r\n            points = segments[segmentInd].points;\r\n            pointInd = points.length - 1;\r\n          }\r\n        }\r\n      }\r\n\r\n      points = segments[segmentInd].points;\r\n      prevPoint = points[pointInd - 1];\r\n      currentPoint = points[pointInd];\r\n      partialLength = currentPoint.partialLength;\r\n    }\r\n\r\n    len = letters.length;\r\n    xPos = 0;\r\n    yPos = 0;\r\n    var yOff = documentData.finalSize * 1.2 * 0.714;\r\n    var firstLine = true;\r\n    var animatorProps;\r\n    var animatorSelector;\r\n    var j;\r\n    var jLen;\r\n    var letterValue;\r\n    jLen = animators.length;\r\n    var mult;\r\n    var ind = -1;\r\n    var offf;\r\n    var xPathPos;\r\n    var yPathPos;\r\n    var initPathPos = currentLength;\r\n    var initSegmentInd = segmentInd;\r\n    var initPointInd = pointInd;\r\n    var currentLine = -1;\r\n    var elemOpacity;\r\n    var sc;\r\n    var sw;\r\n    var fc;\r\n    var k;\r\n    var letterSw;\r\n    var letterSc;\r\n    var letterFc;\r\n    var letterM = '';\r\n    var letterP = this.defaultPropsArray;\r\n    var letterO; //\r\n\r\n    if (documentData.j === 2 || documentData.j === 1) {\r\n      var animatorJustifyOffset = 0;\r\n      var animatorFirstCharOffset = 0;\r\n      var justifyOffsetMult = documentData.j === 2 ? -0.5 : -1;\r\n      var lastIndex = 0;\r\n      var isNewLine = true;\r\n\r\n      for (i = 0; i < len; i += 1) {\r\n        if (letters[i].n) {\r\n          if (animatorJustifyOffset) {\r\n            animatorJustifyOffset += animatorFirstCharOffset;\r\n          }\r\n\r\n          while (lastIndex < i) {\r\n            letters[lastIndex].animatorJustifyOffset = animatorJustifyOffset;\r\n            lastIndex += 1;\r\n          }\r\n\r\n          animatorJustifyOffset = 0;\r\n          isNewLine = true;\r\n        } else {\r\n          for (j = 0; j < jLen; j += 1) {\r\n            animatorProps = animators[j].a;\r\n\r\n            if (animatorProps.t.propType) {\r\n              if (isNewLine && documentData.j === 2) {\r\n                animatorFirstCharOffset += animatorProps.t.v * justifyOffsetMult;\r\n              }\r\n\r\n              animatorSelector = animators[j].s;\r\n              mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\r\n\r\n              if (mult.length) {\r\n                animatorJustifyOffset += animatorProps.t.v * mult[0] * justifyOffsetMult;\r\n              } else {\r\n                animatorJustifyOffset += animatorProps.t.v * mult * justifyOffsetMult;\r\n              }\r\n            }\r\n          }\r\n\r\n          isNewLine = false;\r\n        }\r\n      }\r\n\r\n      if (animatorJustifyOffset) {\r\n        animatorJustifyOffset += animatorFirstCharOffset;\r\n      }\r\n\r\n      while (lastIndex < i) {\r\n        letters[lastIndex].animatorJustifyOffset = animatorJustifyOffset;\r\n        lastIndex += 1;\r\n      }\r\n    } //\r\n\r\n\r\n    for (i = 0; i < len; i += 1) {\r\n      matrixHelper.reset();\r\n      elemOpacity = 1;\r\n\r\n      if (letters[i].n) {\r\n        xPos = 0;\r\n        yPos += documentData.yOffset;\r\n        yPos += firstLine ? 1 : 0;\r\n        currentLength = initPathPos;\r\n        firstLine = false;\r\n\r\n        if (this._hasMaskedPath) {\r\n          segmentInd = initSegmentInd;\r\n          pointInd = initPointInd;\r\n          points = segments[segmentInd].points;\r\n          prevPoint = points[pointInd - 1];\r\n          currentPoint = points[pointInd];\r\n          partialLength = currentPoint.partialLength;\r\n          segmentLength = 0;\r\n        }\r\n\r\n        letterM = '';\r\n        letterFc = '';\r\n        letterSw = '';\r\n        letterO = '';\r\n        letterP = this.defaultPropsArray;\r\n      } else {\r\n        if (this._hasMaskedPath) {\r\n          if (currentLine !== letters[i].line) {\r\n            switch (documentData.j) {\r\n              case 1:\r\n                currentLength += totalLength - documentData.lineWidths[letters[i].line];\r\n                break;\r\n\r\n              case 2:\r\n                currentLength += (totalLength - documentData.lineWidths[letters[i].line]) / 2;\r\n                break;\r\n\r\n              default:\r\n                break;\r\n            }\r\n\r\n            currentLine = letters[i].line;\r\n          }\r\n\r\n          if (ind !== letters[i].ind) {\r\n            if (letters[ind]) {\r\n              currentLength += letters[ind].extra;\r\n            }\r\n\r\n            currentLength += letters[i].an / 2;\r\n            ind = letters[i].ind;\r\n          }\r\n\r\n          currentLength += alignment[0] * letters[i].an * 0.005;\r\n          var animatorOffset = 0;\r\n\r\n          for (j = 0; j < jLen; j += 1) {\r\n            animatorProps = animators[j].a;\r\n\r\n            if (animatorProps.p.propType) {\r\n              animatorSelector = animators[j].s;\r\n              mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\r\n\r\n              if (mult.length) {\r\n                animatorOffset += animatorProps.p.v[0] * mult[0];\r\n              } else {\r\n                animatorOffset += animatorProps.p.v[0] * mult;\r\n              }\r\n            }\r\n\r\n            if (animatorProps.a.propType) {\r\n              animatorSelector = animators[j].s;\r\n              mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\r\n\r\n              if (mult.length) {\r\n                animatorOffset += animatorProps.a.v[0] * mult[0];\r\n              } else {\r\n                animatorOffset += animatorProps.a.v[0] * mult;\r\n              }\r\n            }\r\n          }\r\n\r\n          flag = true; // Force alignment only works with a single line for now\r\n\r\n          if (this._pathData.a.v) {\r\n            currentLength = letters[0].an * 0.5 + (totalLength - this._pathData.f.v - letters[0].an * 0.5 - letters[letters.length - 1].an * 0.5) * ind / (len - 1);\r\n            currentLength += this._pathData.f.v;\r\n          }\r\n\r\n          while (flag) {\r\n            if (segmentLength + partialLength >= currentLength + animatorOffset || !points) {\r\n              perc = (currentLength + animatorOffset - segmentLength) / currentPoint.partialLength;\r\n              xPathPos = prevPoint.point[0] + (currentPoint.point[0] - prevPoint.point[0]) * perc;\r\n              yPathPos = prevPoint.point[1] + (currentPoint.point[1] - prevPoint.point[1]) * perc;\r\n              matrixHelper.translate(-alignment[0] * letters[i].an * 0.005, -(alignment[1] * yOff) * 0.01);\r\n              flag = false;\r\n            } else if (points) {\r\n              segmentLength += currentPoint.partialLength;\r\n              pointInd += 1;\r\n\r\n              if (pointInd >= points.length) {\r\n                pointInd = 0;\r\n                segmentInd += 1;\r\n\r\n                if (!segments[segmentInd]) {\r\n                  if (mask.v.c) {\r\n                    pointInd = 0;\r\n                    segmentInd = 0;\r\n                    points = segments[segmentInd].points;\r\n                  } else {\r\n                    segmentLength -= currentPoint.partialLength;\r\n                    points = null;\r\n                  }\r\n                } else {\r\n                  points = segments[segmentInd].points;\r\n                }\r\n              }\r\n\r\n              if (points) {\r\n                prevPoint = currentPoint;\r\n                currentPoint = points[pointInd];\r\n                partialLength = currentPoint.partialLength;\r\n              }\r\n            }\r\n          }\r\n\r\n          offf = letters[i].an / 2 - letters[i].add;\r\n          matrixHelper.translate(-offf, 0, 0);\r\n        } else {\r\n          offf = letters[i].an / 2 - letters[i].add;\r\n          matrixHelper.translate(-offf, 0, 0); // Grouping alignment\r\n\r\n          matrixHelper.translate(-alignment[0] * letters[i].an * 0.005, -alignment[1] * yOff * 0.01, 0);\r\n        }\r\n\r\n        for (j = 0; j < jLen; j += 1) {\r\n          animatorProps = animators[j].a;\r\n\r\n          if (animatorProps.t.propType) {\r\n            animatorSelector = animators[j].s;\r\n            mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars); // This condition is to prevent applying tracking to first character in each line. Might be better to use a boolean \"isNewLine\"\r\n\r\n            if (xPos !== 0 || documentData.j !== 0) {\r\n              if (this._hasMaskedPath) {\r\n                if (mult.length) {\r\n                  currentLength += animatorProps.t.v * mult[0];\r\n                } else {\r\n                  currentLength += animatorProps.t.v * mult;\r\n                }\r\n              } else if (mult.length) {\r\n                xPos += animatorProps.t.v * mult[0];\r\n              } else {\r\n                xPos += animatorProps.t.v * mult;\r\n              }\r\n            }\r\n          }\r\n        }\r\n\r\n        if (documentData.strokeWidthAnim) {\r\n          sw = documentData.sw || 0;\r\n        }\r\n\r\n        if (documentData.strokeColorAnim) {\r\n          if (documentData.sc) {\r\n            sc = [documentData.sc[0], documentData.sc[1], documentData.sc[2]];\r\n          } else {\r\n            sc = [0, 0, 0];\r\n          }\r\n        }\r\n\r\n        if (documentData.fillColorAnim && documentData.fc) {\r\n          fc = [documentData.fc[0], documentData.fc[1], documentData.fc[2]];\r\n        }\r\n\r\n        for (j = 0; j < jLen; j += 1) {\r\n          animatorProps = animators[j].a;\r\n\r\n          if (animatorProps.a.propType) {\r\n            animatorSelector = animators[j].s;\r\n            mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\r\n\r\n            if (mult.length) {\r\n              matrixHelper.translate(-animatorProps.a.v[0] * mult[0], -animatorProps.a.v[1] * mult[1], animatorProps.a.v[2] * mult[2]);\r\n            } else {\r\n              matrixHelper.translate(-animatorProps.a.v[0] * mult, -animatorProps.a.v[1] * mult, animatorProps.a.v[2] * mult);\r\n            }\r\n          }\r\n        }\r\n\r\n        for (j = 0; j < jLen; j += 1) {\r\n          animatorProps = animators[j].a;\r\n\r\n          if (animatorProps.s.propType) {\r\n            animatorSelector = animators[j].s;\r\n            mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\r\n\r\n            if (mult.length) {\r\n              matrixHelper.scale(1 + (animatorProps.s.v[0] - 1) * mult[0], 1 + (animatorProps.s.v[1] - 1) * mult[1], 1);\r\n            } else {\r\n              matrixHelper.scale(1 + (animatorProps.s.v[0] - 1) * mult, 1 + (animatorProps.s.v[1] - 1) * mult, 1);\r\n            }\r\n          }\r\n        }\r\n\r\n        for (j = 0; j < jLen; j += 1) {\r\n          animatorProps = animators[j].a;\r\n          animatorSelector = animators[j].s;\r\n          mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\r\n\r\n          if (animatorProps.sk.propType) {\r\n            if (mult.length) {\r\n              matrixHelper.skewFromAxis(-animatorProps.sk.v * mult[0], animatorProps.sa.v * mult[1]);\r\n            } else {\r\n              matrixHelper.skewFromAxis(-animatorProps.sk.v * mult, animatorProps.sa.v * mult);\r\n            }\r\n          }\r\n\r\n          if (animatorProps.r.propType) {\r\n            if (mult.length) {\r\n              matrixHelper.rotateZ(-animatorProps.r.v * mult[2]);\r\n            } else {\r\n              matrixHelper.rotateZ(-animatorProps.r.v * mult);\r\n            }\r\n          }\r\n\r\n          if (animatorProps.ry.propType) {\r\n            if (mult.length) {\r\n              matrixHelper.rotateY(animatorProps.ry.v * mult[1]);\r\n            } else {\r\n              matrixHelper.rotateY(animatorProps.ry.v * mult);\r\n            }\r\n          }\r\n\r\n          if (animatorProps.rx.propType) {\r\n            if (mult.length) {\r\n              matrixHelper.rotateX(animatorProps.rx.v * mult[0]);\r\n            } else {\r\n              matrixHelper.rotateX(animatorProps.rx.v * mult);\r\n            }\r\n          }\r\n\r\n          if (animatorProps.o.propType) {\r\n            if (mult.length) {\r\n              elemOpacity += (animatorProps.o.v * mult[0] - elemOpacity) * mult[0];\r\n            } else {\r\n              elemOpacity += (animatorProps.o.v * mult - elemOpacity) * mult;\r\n            }\r\n          }\r\n\r\n          if (documentData.strokeWidthAnim && animatorProps.sw.propType) {\r\n            if (mult.length) {\r\n              sw += animatorProps.sw.v * mult[0];\r\n            } else {\r\n              sw += animatorProps.sw.v * mult;\r\n            }\r\n          }\r\n\r\n          if (documentData.strokeColorAnim && animatorProps.sc.propType) {\r\n            for (k = 0; k < 3; k += 1) {\r\n              if (mult.length) {\r\n                sc[k] += (animatorProps.sc.v[k] - sc[k]) * mult[0];\r\n              } else {\r\n                sc[k] += (animatorProps.sc.v[k] - sc[k]) * mult;\r\n              }\r\n            }\r\n          }\r\n\r\n          if (documentData.fillColorAnim && documentData.fc) {\r\n            if (animatorProps.fc.propType) {\r\n              for (k = 0; k < 3; k += 1) {\r\n                if (mult.length) {\r\n                  fc[k] += (animatorProps.fc.v[k] - fc[k]) * mult[0];\r\n                } else {\r\n                  fc[k] += (animatorProps.fc.v[k] - fc[k]) * mult;\r\n                }\r\n              }\r\n            }\r\n\r\n            if (animatorProps.fh.propType) {\r\n              if (mult.length) {\r\n                fc = addHueToRGB(fc, animatorProps.fh.v * mult[0]);\r\n              } else {\r\n                fc = addHueToRGB(fc, animatorProps.fh.v * mult);\r\n              }\r\n            }\r\n\r\n            if (animatorProps.fs.propType) {\r\n              if (mult.length) {\r\n                fc = addSaturationToRGB(fc, animatorProps.fs.v * mult[0]);\r\n              } else {\r\n                fc = addSaturationToRGB(fc, animatorProps.fs.v * mult);\r\n              }\r\n            }\r\n\r\n            if (animatorProps.fb.propType) {\r\n              if (mult.length) {\r\n                fc = addBrightnessToRGB(fc, animatorProps.fb.v * mult[0]);\r\n              } else {\r\n                fc = addBrightnessToRGB(fc, animatorProps.fb.v * mult);\r\n              }\r\n            }\r\n          }\r\n        }\r\n\r\n        for (j = 0; j < jLen; j += 1) {\r\n          animatorProps = animators[j].a;\r\n\r\n          if (animatorProps.p.propType) {\r\n            animatorSelector = animators[j].s;\r\n            mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\r\n\r\n            if (this._hasMaskedPath) {\r\n              if (mult.length) {\r\n                matrixHelper.translate(0, animatorProps.p.v[1] * mult[0], -animatorProps.p.v[2] * mult[1]);\r\n              } else {\r\n                matrixHelper.translate(0, animatorProps.p.v[1] * mult, -animatorProps.p.v[2] * mult);\r\n              }\r\n            } else if (mult.length) {\r\n              matrixHelper.translate(animatorProps.p.v[0] * mult[0], animatorProps.p.v[1] * mult[1], -animatorProps.p.v[2] * mult[2]);\r\n            } else {\r\n              matrixHelper.translate(animatorProps.p.v[0] * mult, animatorProps.p.v[1] * mult, -animatorProps.p.v[2] * mult);\r\n            }\r\n          }\r\n        }\r\n\r\n        if (documentData.strokeWidthAnim) {\r\n          letterSw = sw < 0 ? 0 : sw;\r\n        }\r\n\r\n        if (documentData.strokeColorAnim) {\r\n          letterSc = 'rgb(' + Math.round(sc[0] * 255) + ',' + Math.round(sc[1] * 255) + ',' + Math.round(sc[2] * 255) + ')';\r\n        }\r\n\r\n        if (documentData.fillColorAnim && documentData.fc) {\r\n          letterFc = 'rgb(' + Math.round(fc[0] * 255) + ',' + Math.round(fc[1] * 255) + ',' + Math.round(fc[2] * 255) + ')';\r\n        }\r\n\r\n        if (this._hasMaskedPath) {\r\n          matrixHelper.translate(0, -documentData.ls);\r\n          matrixHelper.translate(0, alignment[1] * yOff * 0.01 + yPos, 0);\r\n\r\n          if (this._pathData.p.v) {\r\n            tanAngle = (currentPoint.point[1] - prevPoint.point[1]) / (currentPoint.point[0] - prevPoint.point[0]);\r\n            var rot = Math.atan(tanAngle) * 180 / Math.PI;\r\n\r\n            if (currentPoint.point[0] < prevPoint.point[0]) {\r\n              rot += 180;\r\n            }\r\n\r\n            matrixHelper.rotate(-rot * Math.PI / 180);\r\n          }\r\n\r\n          matrixHelper.translate(xPathPos, yPathPos, 0);\r\n          currentLength -= alignment[0] * letters[i].an * 0.005;\r\n\r\n          if (letters[i + 1] && ind !== letters[i + 1].ind) {\r\n            currentLength += letters[i].an / 2;\r\n            currentLength += documentData.tr * 0.001 * documentData.finalSize;\r\n          }\r\n        } else {\r\n          matrixHelper.translate(xPos, yPos, 0);\r\n\r\n          if (documentData.ps) {\r\n            // matrixHelper.translate(documentData.ps[0],documentData.ps[1],0);\r\n            matrixHelper.translate(documentData.ps[0], documentData.ps[1] + documentData.ascent, 0);\r\n          }\r\n\r\n          switch (documentData.j) {\r\n            case 1:\r\n              matrixHelper.translate(letters[i].animatorJustifyOffset + documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[letters[i].line]), 0, 0);\r\n              break;\r\n\r\n            case 2:\r\n              matrixHelper.translate(letters[i].animatorJustifyOffset + documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[letters[i].line]) / 2, 0, 0);\r\n              break;\r\n\r\n            default:\r\n              break;\r\n          }\r\n\r\n          matrixHelper.translate(0, -documentData.ls);\r\n          matrixHelper.translate(offf, 0, 0);\r\n          matrixHelper.translate(alignment[0] * letters[i].an * 0.005, alignment[1] * yOff * 0.01, 0);\r\n          xPos += letters[i].l + documentData.tr * 0.001 * documentData.finalSize;\r\n        }\r\n\r\n        if (renderType === 'html') {\r\n          letterM = matrixHelper.toCSS();\r\n        } else if (renderType === 'svg') {\r\n          letterM = matrixHelper.to2dCSS();\r\n        } else {\r\n          letterP = [matrixHelper.props[0], matrixHelper.props[1], matrixHelper.props[2], matrixHelper.props[3], matrixHelper.props[4], matrixHelper.props[5], matrixHelper.props[6], matrixHelper.props[7], matrixHelper.props[8], matrixHelper.props[9], matrixHelper.props[10], matrixHelper.props[11], matrixHelper.props[12], matrixHelper.props[13], matrixHelper.props[14], matrixHelper.props[15]];\r\n        }\r\n\r\n        letterO = elemOpacity;\r\n      }\r\n\r\n      if (renderedLettersCount <= i) {\r\n        letterValue = new LetterProps(letterO, letterSw, letterSc, letterFc, letterM, letterP);\r\n        this.renderedLetters.push(letterValue);\r\n        renderedLettersCount += 1;\r\n        this.lettersChangedFlag = true;\r\n      } else {\r\n        letterValue = this.renderedLetters[i];\r\n        this.lettersChangedFlag = letterValue.update(letterO, letterSw, letterSc, letterFc, letterM, letterP) || this.lettersChangedFlag;\r\n      }\r\n    }\r\n  };\r\n\r\n  TextAnimatorProperty.prototype.getValue = function () {\r\n    if (this._elem.globalData.frameId === this._frameId) {\r\n      return;\r\n    }\r\n\r\n    this._frameId = this._elem.globalData.frameId;\r\n    this.iterateDynamicProperties();\r\n  };\r\n\r\n  TextAnimatorProperty.prototype.mHelper = new Matrix();\r\n  TextAnimatorProperty.prototype.defaultPropsArray = [];\r\n  extendPrototype([DynamicPropertyContainer], TextAnimatorProperty);\r\n\r\n  function ITextElement() {}\r\n\r\n  ITextElement.prototype.initElement = function (data, globalData, comp) {\r\n    this.lettersChangedFlag = true;\r\n    this.initFrame();\r\n    this.initBaseData(data, globalData, comp);\r\n    this.textProperty = new TextProperty(this, data.t, this.dynamicProperties);\r\n    this.textAnimator = new TextAnimatorProperty(data.t, this.renderType, this);\r\n    this.initTransform(data, globalData, comp);\r\n    this.initHierarchy();\r\n    this.initRenderable();\r\n    this.initRendererElement();\r\n    this.createContainerElements();\r\n    this.createRenderableComponents();\r\n    this.createContent();\r\n    this.hide();\r\n    this.textAnimator.searchProperties(this.dynamicProperties);\r\n  };\r\n\r\n  ITextElement.prototype.prepareFrame = function (num) {\r\n    this._mdf = false;\r\n    this.prepareRenderableFrame(num);\r\n    this.prepareProperties(num, this.isInRange);\r\n\r\n    if (this.textProperty._mdf || this.textProperty._isFirstFrame) {\r\n      this.buildNewText();\r\n      this.textProperty._isFirstFrame = false;\r\n      this.textProperty._mdf = false;\r\n    }\r\n  };\r\n\r\n  ITextElement.prototype.createPathShape = function (matrixHelper, shapes) {\r\n    var j;\r\n    var jLen = shapes.length;\r\n    var pathNodes;\r\n    var shapeStr = '';\r\n\r\n    for (j = 0; j < jLen; j += 1) {\r\n      if (shapes[j].ty === 'sh') {\r\n        pathNodes = shapes[j].ks.k;\r\n        shapeStr += buildShapeString(pathNodes, pathNodes.i.length, true, matrixHelper);\r\n      }\r\n    }\r\n\r\n    return shapeStr;\r\n  };\r\n\r\n  ITextElement.prototype.updateDocumentData = function (newData, index) {\r\n    this.textProperty.updateDocumentData(newData, index);\r\n  };\r\n\r\n  ITextElement.prototype.canResizeFont = function (_canResize) {\r\n    this.textProperty.canResizeFont(_canResize);\r\n  };\r\n\r\n  ITextElement.prototype.setMinimumFontSize = function (_fontSize) {\r\n    this.textProperty.setMinimumFontSize(_fontSize);\r\n  };\r\n\r\n  ITextElement.prototype.applyTextPropertiesToMatrix = function (documentData, matrixHelper, lineNumber, xPos, yPos) {\r\n    if (documentData.ps) {\r\n      matrixHelper.translate(documentData.ps[0], documentData.ps[1] + documentData.ascent, 0);\r\n    }\r\n\r\n    matrixHelper.translate(0, -documentData.ls, 0);\r\n\r\n    switch (documentData.j) {\r\n      case 1:\r\n        matrixHelper.translate(documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[lineNumber]), 0, 0);\r\n        break;\r\n\r\n      case 2:\r\n        matrixHelper.translate(documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[lineNumber]) / 2, 0, 0);\r\n        break;\r\n\r\n      default:\r\n        break;\r\n    }\r\n\r\n    matrixHelper.translate(xPos, yPos, 0);\r\n  };\r\n\r\n  ITextElement.prototype.buildColor = function (colorData) {\r\n    return 'rgb(' + Math.round(colorData[0] * 255) + ',' + Math.round(colorData[1] * 255) + ',' + Math.round(colorData[2] * 255) + ')';\r\n  };\r\n\r\n  ITextElement.prototype.emptyProp = new LetterProps();\r\n\r\n  ITextElement.prototype.destroy = function () {};\r\n\r\n  var emptyShapeData = {\r\n    shapes: []\r\n  };\r\n\r\n  function SVGTextLottieElement(data, globalData, comp) {\r\n    this.textSpans = [];\r\n    this.renderType = 'svg';\r\n    this.initElement(data, globalData, comp);\r\n  }\r\n\r\n  extendPrototype([BaseElement, TransformElement, SVGBaseElement, HierarchyElement, FrameElement, RenderableDOMElement, ITextElement], SVGTextLottieElement);\r\n\r\n  SVGTextLottieElement.prototype.createContent = function () {\r\n    if (this.data.singleShape && !this.globalData.fontManager.chars) {\r\n      this.textContainer = createNS('text');\r\n    }\r\n  };\r\n\r\n  SVGTextLottieElement.prototype.buildTextContents = function (textArray) {\r\n    var i = 0;\r\n    var len = textArray.length;\r\n    var textContents = [];\r\n    var currentTextContent = '';\r\n\r\n    while (i < len) {\r\n      if (textArray[i] === String.fromCharCode(13) || textArray[i] === String.fromCharCode(3)) {\r\n        textContents.push(currentTextContent);\r\n        currentTextContent = '';\r\n      } else {\r\n        currentTextContent += textArray[i];\r\n      }\r\n\r\n      i += 1;\r\n    }\r\n\r\n    textContents.push(currentTextContent);\r\n    return textContents;\r\n  };\r\n\r\n  SVGTextLottieElement.prototype.buildShapeData = function (data, scale) {\r\n    // data should probably be cloned to apply scale separately to each instance of a text on different layers\r\n    // but since text internal content gets only rendered once and then it's never rerendered,\r\n    // it's probably safe not to clone data and reuse always the same instance even if the object is mutated.\r\n    // Avoiding cloning is preferred since cloning each character shape data is expensive\r\n    if (data.shapes && data.shapes.length) {\r\n      var shape = data.shapes[0];\r\n\r\n      if (shape.it) {\r\n        var shapeItem = shape.it[shape.it.length - 1];\r\n\r\n        if (shapeItem.s) {\r\n          shapeItem.s.k[0] = scale;\r\n          shapeItem.s.k[1] = scale;\r\n        }\r\n      }\r\n    }\r\n\r\n    return data;\r\n  };\r\n\r\n  SVGTextLottieElement.prototype.buildNewText = function () {\r\n    this.addDynamicProperty(this);\r\n    var i;\r\n    var len;\r\n    var documentData = this.textProperty.currentData;\r\n    this.renderedLetters = createSizedArray(documentData ? documentData.l.length : 0);\r\n\r\n    if (documentData.fc) {\r\n      this.layerElement.setAttribute('fill', this.buildColor(documentData.fc));\r\n    } else {\r\n      this.layerElement.setAttribute('fill', 'rgba(0,0,0,0)');\r\n    }\r\n\r\n    if (documentData.sc) {\r\n      this.layerElement.setAttribute('stroke', this.buildColor(documentData.sc));\r\n      this.layerElement.setAttribute('stroke-width', documentData.sw);\r\n    }\r\n\r\n    this.layerElement.setAttribute('font-size', documentData.finalSize);\r\n    var fontData = this.globalData.fontManager.getFontByName(documentData.f);\r\n\r\n    if (fontData.fClass) {\r\n      this.layerElement.setAttribute('class', fontData.fClass);\r\n    } else {\r\n      this.layerElement.setAttribute('font-family', fontData.fFamily);\r\n      var fWeight = documentData.fWeight;\r\n      var fStyle = documentData.fStyle;\r\n      this.layerElement.setAttribute('font-style', fStyle);\r\n      this.layerElement.setAttribute('font-weight', fWeight);\r\n    }\r\n\r\n    this.layerElement.setAttribute('aria-label', documentData.t);\r\n    var letters = documentData.l || [];\r\n    var usesGlyphs = !!this.globalData.fontManager.chars;\r\n    len = letters.length;\r\n    var tSpan;\r\n    var matrixHelper = this.mHelper;\r\n    var shapeStr = '';\r\n    var singleShape = this.data.singleShape;\r\n    var xPos = 0;\r\n    var yPos = 0;\r\n    var firstLine = true;\r\n    var trackingOffset = documentData.tr * 0.001 * documentData.finalSize;\r\n\r\n    if (singleShape && !usesGlyphs && !documentData.sz) {\r\n      var tElement = this.textContainer;\r\n      var justify = 'start';\r\n\r\n      switch (documentData.j) {\r\n        case 1:\r\n          justify = 'end';\r\n          break;\r\n\r\n        case 2:\r\n          justify = 'middle';\r\n          break;\r\n\r\n        default:\r\n          justify = 'start';\r\n          break;\r\n      }\r\n\r\n      tElement.setAttribute('text-anchor', justify);\r\n      tElement.setAttribute('letter-spacing', trackingOffset);\r\n      var textContent = this.buildTextContents(documentData.finalText);\r\n      len = textContent.length;\r\n      yPos = documentData.ps ? documentData.ps[1] + documentData.ascent : 0;\r\n\r\n      for (i = 0; i < len; i += 1) {\r\n        tSpan = this.textSpans[i].span || createNS('tspan');\r\n        tSpan.textContent = textContent[i];\r\n        tSpan.setAttribute('x', 0);\r\n        tSpan.setAttribute('y', yPos);\r\n        tSpan.style.display = 'inherit';\r\n        tElement.appendChild(tSpan);\r\n\r\n        if (!this.textSpans[i]) {\r\n          this.textSpans[i] = {\r\n            span: null,\r\n            glyph: null\r\n          };\r\n        }\r\n\r\n        this.textSpans[i].span = tSpan;\r\n        yPos += documentData.finalLineHeight;\r\n      }\r\n\r\n      this.layerElement.appendChild(tElement);\r\n    } else {\r\n      var cachedSpansLength = this.textSpans.length;\r\n      var charData;\r\n\r\n      for (i = 0; i < len; i += 1) {\r\n        if (!this.textSpans[i]) {\r\n          this.textSpans[i] = {\r\n            span: null,\r\n            childSpan: null,\r\n            glyph: null\r\n          };\r\n        }\r\n\r\n        if (!usesGlyphs || !singleShape || i === 0) {\r\n          tSpan = cachedSpansLength > i ? this.textSpans[i].span : createNS(usesGlyphs ? 'g' : 'text');\r\n\r\n          if (cachedSpansLength <= i) {\r\n            tSpan.setAttribute('stroke-linecap', 'butt');\r\n            tSpan.setAttribute('stroke-linejoin', 'round');\r\n            tSpan.setAttribute('stroke-miterlimit', '4');\r\n            this.textSpans[i].span = tSpan;\r\n\r\n            if (usesGlyphs) {\r\n              var childSpan = createNS('g');\r\n              tSpan.appendChild(childSpan);\r\n              this.textSpans[i].childSpan = childSpan;\r\n            }\r\n\r\n            this.textSpans[i].span = tSpan;\r\n            this.layerElement.appendChild(tSpan);\r\n          }\r\n\r\n          tSpan.style.display = 'inherit';\r\n        }\r\n\r\n        matrixHelper.reset();\r\n\r\n        if (singleShape) {\r\n          if (letters[i].n) {\r\n            xPos = -trackingOffset;\r\n            yPos += documentData.yOffset;\r\n            yPos += firstLine ? 1 : 0;\r\n            firstLine = false;\r\n          }\r\n\r\n          this.applyTextPropertiesToMatrix(documentData, matrixHelper, letters[i].line, xPos, yPos);\r\n          xPos += letters[i].l || 0; // xPos += letters[i].val === ' ' ? 0 : trackingOffset;\r\n\r\n          xPos += trackingOffset;\r\n        }\r\n\r\n        if (usesGlyphs) {\r\n          charData = this.globalData.fontManager.getCharData(documentData.finalText[i], fontData.fStyle, this.globalData.fontManager.getFontByName(documentData.f).fFamily);\r\n          var glyphElement; // t === 1 means the character has been replaced with an animated shaped\r\n\r\n          if (charData.t === 1) {\r\n            glyphElement = new SVGCompElement(charData.data, this.globalData, this);\r\n          } else {\r\n            var data = emptyShapeData;\r\n\r\n            if (charData.data && charData.data.shapes) {\r\n              data = this.buildShapeData(charData.data, documentData.finalSize);\r\n            }\r\n\r\n            glyphElement = new SVGShapeElement(data, this.globalData, this);\r\n          }\r\n\r\n          if (this.textSpans[i].glyph) {\r\n            var glyph = this.textSpans[i].glyph;\r\n            this.textSpans[i].childSpan.removeChild(glyph.layerElement);\r\n            glyph.destroy();\r\n          }\r\n\r\n          this.textSpans[i].glyph = glyphElement;\r\n          glyphElement._debug = true;\r\n          glyphElement.prepareFrame(0);\r\n          glyphElement.renderFrame();\r\n          this.textSpans[i].childSpan.appendChild(glyphElement.layerElement); // when using animated shapes, the layer will be scaled instead of replacing the internal scale\r\n          // this might have issues with strokes and might need a different solution\r\n\r\n          if (charData.t === 1) {\r\n            this.textSpans[i].childSpan.setAttribute('transform', 'scale(' + documentData.finalSize / 100 + ',' + documentData.finalSize / 100 + ')');\r\n          }\r\n        } else {\r\n          if (singleShape) {\r\n            tSpan.setAttribute('transform', 'translate(' + matrixHelper.props[12] + ',' + matrixHelper.props[13] + ')');\r\n          }\r\n\r\n          tSpan.textContent = letters[i].val;\r\n          tSpan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\r\n        } //\r\n\r\n      }\r\n\r\n      if (singleShape && tSpan) {\r\n        tSpan.setAttribute('d', shapeStr);\r\n      }\r\n    }\r\n\r\n    while (i < this.textSpans.length) {\r\n      this.textSpans[i].span.style.display = 'none';\r\n      i += 1;\r\n    }\r\n\r\n    this._sizeChanged = true;\r\n  };\r\n\r\n  SVGTextLottieElement.prototype.sourceRectAtTime = function () {\r\n    this.prepareFrame(this.comp.renderedFrame - this.data.st);\r\n    this.renderInnerContent();\r\n\r\n    if (this._sizeChanged) {\r\n      this._sizeChanged = false;\r\n      var textBox = this.layerElement.getBBox();\r\n      this.bbox = {\r\n        top: textBox.y,\r\n        left: textBox.x,\r\n        width: textBox.width,\r\n        height: textBox.height\r\n      };\r\n    }\r\n\r\n    return this.bbox;\r\n  };\r\n\r\n  SVGTextLottieElement.prototype.getValue = function () {\r\n    var i;\r\n    var len = this.textSpans.length;\r\n    var glyphElement;\r\n    this.renderedFrame = this.comp.renderedFrame;\r\n\r\n    for (i = 0; i < len; i += 1) {\r\n      glyphElement = this.textSpans[i].glyph;\r\n\r\n      if (glyphElement) {\r\n        glyphElement.prepareFrame(this.comp.renderedFrame - this.data.st);\r\n\r\n        if (glyphElement._mdf) {\r\n          this._mdf = true;\r\n        }\r\n      }\r\n    }\r\n  };\r\n\r\n  SVGTextLottieElement.prototype.renderInnerContent = function () {\r\n    if (!this.data.singleShape || this._mdf) {\r\n      this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);\r\n\r\n      if (this.lettersChangedFlag || this.textAnimator.lettersChangedFlag) {\r\n        this._sizeChanged = true;\r\n        var i;\r\n        var len;\r\n        var renderedLetters = this.textAnimator.renderedLetters;\r\n        var letters = this.textProperty.currentData.l;\r\n        len = letters.length;\r\n        var renderedLetter;\r\n        var textSpan;\r\n        var glyphElement;\r\n\r\n        for (i = 0; i < len; i += 1) {\r\n          if (!letters[i].n) {\r\n            renderedLetter = renderedLetters[i];\r\n            textSpan = this.textSpans[i].span;\r\n            glyphElement = this.textSpans[i].glyph;\r\n\r\n            if (glyphElement) {\r\n              glyphElement.renderFrame();\r\n            }\r\n\r\n            if (renderedLetter._mdf.m) {\r\n              textSpan.setAttribute('transform', renderedLetter.m);\r\n            }\r\n\r\n            if (renderedLetter._mdf.o) {\r\n              textSpan.setAttribute('opacity', renderedLetter.o);\r\n            }\r\n\r\n            if (renderedLetter._mdf.sw) {\r\n              textSpan.setAttribute('stroke-width', renderedLetter.sw);\r\n            }\r\n\r\n            if (renderedLetter._mdf.sc) {\r\n              textSpan.setAttribute('stroke', renderedLetter.sc);\r\n            }\r\n\r\n            if (renderedLetter._mdf.fc) {\r\n              textSpan.setAttribute('fill', renderedLetter.fc);\r\n            }\r\n          }\r\n        }\r\n      }\r\n    }\r\n  };\r\n\r\n  function ISolidElement(data, globalData, comp) {\r\n    this.initElement(data, globalData, comp);\r\n  }\r\n\r\n  extendPrototype([IImageElement], ISolidElement);\r\n\r\n  ISolidElement.prototype.createContent = function () {\r\n    var rect = createNS('rect'); /// /rect.style.width = this.data.sw;\r\n    /// /rect.style.height = this.data.sh;\r\n    /// /rect.style.fill = this.data.sc;\r\n\r\n    rect.setAttribute('width', this.data.sw);\r\n    rect.setAttribute('height', this.data.sh);\r\n    rect.setAttribute('fill', this.data.sc);\r\n    this.layerElement.appendChild(rect);\r\n  };\r\n\r\n  function NullElement(data, globalData, comp) {\r\n    this.initFrame();\r\n    this.initBaseData(data, globalData, comp);\r\n    this.initFrame();\r\n    this.initTransform(data, globalData, comp);\r\n    this.initHierarchy();\r\n  }\r\n\r\n  NullElement.prototype.prepareFrame = function (num) {\r\n    this.prepareProperties(num, true);\r\n  };\r\n\r\n  NullElement.prototype.renderFrame = function () {};\r\n\r\n  NullElement.prototype.getBaseElement = function () {\r\n    return null;\r\n  };\r\n\r\n  NullElement.prototype.destroy = function () {};\r\n\r\n  NullElement.prototype.sourceRectAtTime = function () {};\r\n\r\n  NullElement.prototype.hide = function () {};\r\n\r\n  extendPrototype([BaseElement, TransformElement, HierarchyElement, FrameElement], NullElement);\r\n\r\n  function SVGRendererBase() {}\r\n\r\n  extendPrototype([BaseRenderer], SVGRendererBase);\r\n\r\n  SVGRendererBase.prototype.createNull = function (data) {\r\n    return new NullElement(data, this.globalData, this);\r\n  };\r\n\r\n  SVGRendererBase.prototype.createShape = function (data) {\r\n    return new SVGShapeElement(data, this.globalData, this);\r\n  };\r\n\r\n  SVGRendererBase.prototype.createText = function (data) {\r\n    return new SVGTextLottieElement(data, this.globalData, this);\r\n  };\r\n\r\n  SVGRendererBase.prototype.createImage = function (data) {\r\n    return new IImageElement(data, this.globalData, this);\r\n  };\r\n\r\n  SVGRendererBase.prototype.createSolid = function (data) {\r\n    return new ISolidElement(data, this.globalData, this);\r\n  };\r\n\r\n  SVGRendererBase.prototype.configAnimation = function (animData) {\r\n    this.svgElement.setAttribute('xmlns', 'http://www.w3.org/2000/svg');\r\n    this.svgElement.setAttribute('xmlns:xlink', 'http://www.w3.org/1999/xlink');\r\n\r\n    if (this.renderConfig.viewBoxSize) {\r\n      this.svgElement.setAttribute('viewBox', this.renderConfig.viewBoxSize);\r\n    } else {\r\n      this.svgElement.setAttribute('viewBox', '0 0 ' + animData.w + ' ' + animData.h);\r\n    }\r\n\r\n    if (!this.renderConfig.viewBoxOnly) {\r\n      this.svgElement.setAttribute('width', animData.w);\r\n      this.svgElement.setAttribute('height', animData.h);\r\n      this.svgElement.style.width = '100%';\r\n      this.svgElement.style.height = '100%';\r\n      this.svgElement.style.transform = 'translate3d(0,0,0)';\r\n      this.svgElement.style.contentVisibility = this.renderConfig.contentVisibility;\r\n    }\r\n\r\n    if (this.renderConfig.width) {\r\n      this.svgElement.setAttribute('width', this.renderConfig.width);\r\n    }\r\n\r\n    if (this.renderConfig.height) {\r\n      this.svgElement.setAttribute('height', this.renderConfig.height);\r\n    }\r\n\r\n    if (this.renderConfig.className) {\r\n      this.svgElement.setAttribute('class', this.renderConfig.className);\r\n    }\r\n\r\n    if (this.renderConfig.id) {\r\n      this.svgElement.setAttribute('id', this.renderConfig.id);\r\n    }\r\n\r\n    if (this.renderConfig.focusable !== undefined) {\r\n      this.svgElement.setAttribute('focusable', this.renderConfig.focusable);\r\n    }\r\n\r\n    this.svgElement.setAttribute('preserveAspectRatio', this.renderConfig.preserveAspectRatio); // this.layerElement.style.transform = 'translate3d(0,0,0)';\r\n    // this.layerElement.style.transformOrigin = this.layerElement.style.mozTransformOrigin = this.layerElement.style.webkitTransformOrigin = this.layerElement.style['-webkit-transform'] = \"0px 0px 0px\";\r\n\r\n    this.animationItem.wrapper.appendChild(this.svgElement); // Mask animation\r\n\r\n    var defs = this.globalData.defs;\r\n    this.setupGlobalData(animData, defs);\r\n    this.globalData.progressiveLoad = this.renderConfig.progressiveLoad;\r\n    this.data = animData;\r\n    var maskElement = createNS('clipPath');\r\n    var rect = createNS('rect');\r\n    rect.setAttribute('width', animData.w);\r\n    rect.setAttribute('height', animData.h);\r\n    rect.setAttribute('x', 0);\r\n    rect.setAttribute('y', 0);\r\n    var maskId = createElementID();\r\n    maskElement.setAttribute('id', maskId);\r\n    maskElement.appendChild(rect);\r\n    this.layerElement.setAttribute('clip-path', 'url(' + getLocationHref() + '#' + maskId + ')');\r\n    defs.appendChild(maskElement);\r\n    this.layers = animData.layers;\r\n    this.elements = createSizedArray(animData.layers.length);\r\n  };\r\n\r\n  SVGRendererBase.prototype.destroy = function () {\r\n    if (this.animationItem.wrapper) {\r\n      this.animationItem.wrapper.innerText = '';\r\n    }\r\n\r\n    this.layerElement = null;\r\n    this.globalData.defs = null;\r\n    var i;\r\n    var len = this.layers ? this.layers.length : 0;\r\n\r\n    for (i = 0; i < len; i += 1) {\r\n      if (this.elements[i]) {\r\n        this.elements[i].destroy();\r\n      }\r\n    }\r\n\r\n    this.elements.length = 0;\r\n    this.destroyed = true;\r\n    this.animationItem = null;\r\n  };\r\n\r\n  SVGRendererBase.prototype.updateContainerSize = function () {};\r\n\r\n  SVGRendererBase.prototype.findIndexByInd = function (ind) {\r\n    var i = 0;\r\n    var len = this.layers.length;\r\n\r\n    for (i = 0; i < len; i += 1) {\r\n      if (this.layers[i].ind === ind) {\r\n        return i;\r\n      }\r\n    }\r\n\r\n    return -1;\r\n  };\r\n\r\n  SVGRendererBase.prototype.buildItem = function (pos) {\r\n    var elements = this.elements;\r\n\r\n    if (elements[pos] || this.layers[pos].ty === 99) {\r\n      return;\r\n    }\r\n\r\n    elements[pos] = true;\r\n    var element = this.createItem(this.layers[pos]);\r\n    elements[pos] = element;\r\n\r\n    if (getExpressionsPlugin()) {\r\n      if (this.layers[pos].ty === 0) {\r\n        this.globalData.projectInterface.registerComposition(element);\r\n      }\r\n\r\n      element.initExpressions();\r\n    }\r\n\r\n    this.appendElementInPos(element, pos);\r\n\r\n    if (this.layers[pos].tt) {\r\n      var elementIndex = 'tp' in this.layers[pos] ? this.findIndexByInd(this.layers[pos].tp) : pos - 1;\r\n\r\n      if (elementIndex === -1) {\r\n        return;\r\n      }\r\n\r\n      if (!this.elements[elementIndex] || this.elements[elementIndex] === true) {\r\n        this.buildItem(elementIndex);\r\n        this.addPendingElement(element);\r\n      } else {\r\n        var matteElement = elements[elementIndex];\r\n        var matteMask = matteElement.getMatte(this.layers[pos].tt);\r\n        element.setMatte(matteMask);\r\n      }\r\n    }\r\n  };\r\n\r\n  SVGRendererBase.prototype.checkPendingElements = function () {\r\n    while (this.pendingElements.length) {\r\n      var element = this.pendingElements.pop();\r\n      element.checkParenting();\r\n\r\n      if (element.data.tt) {\r\n        var i = 0;\r\n        var len = this.elements.length;\r\n\r\n        while (i < len) {\r\n          if (this.elements[i] === element) {\r\n            var elementIndex = 'tp' in element.data ? this.findIndexByInd(element.data.tp) : i - 1;\r\n            var matteElement = this.elements[elementIndex];\r\n            var matteMask = matteElement.getMatte(this.layers[i].tt);\r\n            element.setMatte(matteMask);\r\n            break;\r\n          }\r\n\r\n          i += 1;\r\n        }\r\n      }\r\n    }\r\n  };\r\n\r\n  SVGRendererBase.prototype.renderFrame = function (num) {\r\n    if (this.renderedFrame === num || this.destroyed) {\r\n      return;\r\n    }\r\n\r\n    if (num === null) {\r\n      num = this.renderedFrame;\r\n    } else {\r\n      this.renderedFrame = num;\r\n    } // console.log('-------');\r\n    // console.log('FRAME ',num);\r\n\r\n\r\n    this.globalData.frameNum = num;\r\n    this.globalData.frameId += 1;\r\n    this.globalData.projectInterface.currentFrame = num;\r\n    this.globalData._mdf = false;\r\n    var i;\r\n    var len = this.layers.length;\r\n\r\n    if (!this.completeLayers) {\r\n      this.checkLayers(num);\r\n    }\r\n\r\n    for (i = len - 1; i >= 0; i -= 1) {\r\n      if (this.completeLayers || this.elements[i]) {\r\n        this.elements[i].prepareFrame(num - this.layers[i].st);\r\n      }\r\n    }\r\n\r\n    if (this.globalData._mdf) {\r\n      for (i = 0; i < len; i += 1) {\r\n        if (this.completeLayers || this.elements[i]) {\r\n          this.elements[i].renderFrame();\r\n        }\r\n      }\r\n    }\r\n  };\r\n\r\n  SVGRendererBase.prototype.appendElementInPos = function (element, pos) {\r\n    var newElement = element.getBaseElement();\r\n\r\n    if (!newElement) {\r\n      return;\r\n    }\r\n\r\n    var i = 0;\r\n    var nextElement;\r\n\r\n    while (i < pos) {\r\n      if (this.elements[i] && this.elements[i] !== true && this.elements[i].getBaseElement()) {\r\n        nextElement = this.elements[i].getBaseElement();\r\n      }\r\n\r\n      i += 1;\r\n    }\r\n\r\n    if (nextElement) {\r\n      this.layerElement.insertBefore(newElement, nextElement);\r\n    } else {\r\n      this.layerElement.appendChild(newElement);\r\n    }\r\n  };\r\n\r\n  SVGRendererBase.prototype.hide = function () {\r\n    this.layerElement.style.display = 'none';\r\n  };\r\n\r\n  SVGRendererBase.prototype.show = function () {\r\n    this.layerElement.style.display = 'block';\r\n  };\r\n\r\n  function ICompElement() {}\r\n\r\n  extendPrototype([BaseElement, TransformElement, HierarchyElement, FrameElement, RenderableDOMElement], ICompElement);\r\n\r\n  ICompElement.prototype.initElement = function (data, globalData, comp) {\r\n    this.initFrame();\r\n    this.initBaseData(data, globalData, comp);\r\n    this.initTransform(data, globalData, comp);\r\n    this.initRenderable();\r\n    this.initHierarchy();\r\n    this.initRendererElement();\r\n    this.createContainerElements();\r\n    this.createRenderableComponents();\r\n\r\n    if (this.data.xt || !globalData.progressiveLoad) {\r\n      this.buildAllItems();\r\n    }\r\n\r\n    this.hide();\r\n  };\r\n  /* ICompElement.prototype.hide = function(){\r\n      if(!this.hidden){\r\n          this.hideElement();\r\n          var i,len = this.elements.length;\r\n          for( i = 0; i < len; i+=1 ){\r\n              if(this.elements[i]){\r\n                  this.elements[i].hide();\r\n              }\r\n          }\r\n      }\r\n  }; */\r\n\r\n\r\n  ICompElement.prototype.prepareFrame = function (num) {\r\n    this._mdf = false;\r\n    this.prepareRenderableFrame(num);\r\n    this.prepareProperties(num, this.isInRange);\r\n\r\n    if (!this.isInRange && !this.data.xt) {\r\n      return;\r\n    }\r\n\r\n    if (!this.tm._placeholder) {\r\n      var timeRemapped = this.tm.v;\r\n\r\n      if (timeRemapped === this.data.op) {\r\n        timeRemapped = this.data.op - 1;\r\n      }\r\n\r\n      this.renderedFrame = timeRemapped;\r\n    } else {\r\n      this.renderedFrame = num / this.data.sr;\r\n    }\r\n\r\n    var i;\r\n    var len = this.elements.length;\r\n\r\n    if (!this.completeLayers) {\r\n      this.checkLayers(this.renderedFrame);\r\n    } // This iteration needs to be backwards because of how expressions connect between each other\r\n\r\n\r\n    for (i = len - 1; i >= 0; i -= 1) {\r\n      if (this.completeLayers || this.elements[i]) {\r\n        this.elements[i].prepareFrame(this.renderedFrame - this.layers[i].st);\r\n\r\n        if (this.elements[i]._mdf) {\r\n          this._mdf = true;\r\n        }\r\n      }\r\n    }\r\n  };\r\n\r\n  ICompElement.prototype.renderInnerContent = function () {\r\n    var i;\r\n    var len = this.layers.length;\r\n\r\n    for (i = 0; i < len; i += 1) {\r\n      if (this.completeLayers || this.elements[i]) {\r\n        this.elements[i].renderFrame();\r\n      }\r\n    }\r\n  };\r\n\r\n  ICompElement.prototype.setElements = function (elems) {\r\n    this.elements = elems;\r\n  };\r\n\r\n  ICompElement.prototype.getElements = function () {\r\n    return this.elements;\r\n  };\r\n\r\n  ICompElement.prototype.destroyElements = function () {\r\n    var i;\r\n    var len = this.layers.length;\r\n\r\n    for (i = 0; i < len; i += 1) {\r\n      if (this.elements[i]) {\r\n        this.elements[i].destroy();\r\n      }\r\n    }\r\n  };\r\n\r\n  ICompElement.prototype.destroy = function () {\r\n    this.destroyElements();\r\n    this.destroyBaseElement();\r\n  };\r\n\r\n  function SVGCompElement(data, globalData, comp) {\r\n    this.layers = data.layers;\r\n    this.supports3d = true;\r\n    this.completeLayers = false;\r\n    this.pendingElements = [];\r\n    this.elements = this.layers ? createSizedArray(this.layers.length) : [];\r\n    this.initElement(data, globalData, comp);\r\n    this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : {\r\n      _placeholder: true\r\n    };\r\n  }\r\n\r\n  extendPrototype([SVGRendererBase, ICompElement, SVGBaseElement], SVGCompElement);\r\n\r\n  SVGCompElement.prototype.createComp = function (data) {\r\n    return new SVGCompElement(data, this.globalData, this);\r\n  };\r\n\r\n  function SVGRenderer(animationItem, config) {\r\n    this.animationItem = animationItem;\r\n    this.layers = null;\r\n    this.renderedFrame = -1;\r\n    this.svgElement = createNS('svg');\r\n    var ariaLabel = '';\r\n\r\n    if (config && config.title) {\r\n      var titleElement = createNS('title');\r\n      var titleId = createElementID();\r\n      titleElement.setAttribute('id', titleId);\r\n      titleElement.textContent = config.title;\r\n      this.svgElement.appendChild(titleElement);\r\n      ariaLabel += titleId;\r\n    }\r\n\r\n    if (config && config.description) {\r\n      var descElement = createNS('desc');\r\n      var descId = createElementID();\r\n      descElement.setAttribute('id', descId);\r\n      descElement.textContent = config.description;\r\n      this.svgElement.appendChild(descElement);\r\n      ariaLabel += ' ' + descId;\r\n    }\r\n\r\n    if (ariaLabel) {\r\n      this.svgElement.setAttribute('aria-labelledby', ariaLabel);\r\n    }\r\n\r\n    var defs = createNS('defs');\r\n    this.svgElement.appendChild(defs);\r\n    var maskElement = createNS('g');\r\n    this.svgElement.appendChild(maskElement);\r\n    this.layerElement = maskElement;\r\n    this.renderConfig = {\r\n      preserveAspectRatio: config && config.preserveAspectRatio || 'xMidYMid meet',\r\n      imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || 'xMidYMid slice',\r\n      contentVisibility: config && config.contentVisibility || 'visible',\r\n      progressiveLoad: config && config.progressiveLoad || false,\r\n      hideOnTransparent: !(config && config.hideOnTransparent === false),\r\n      viewBoxOnly: config && config.viewBoxOnly || false,\r\n      viewBoxSize: config && config.viewBoxSize || false,\r\n      className: config && config.className || '',\r\n      id: config && config.id || '',\r\n      focusable: config && config.focusable,\r\n      filterSize: {\r\n        width: config && config.filterSize && config.filterSize.width || '100%',\r\n        height: config && config.filterSize && config.filterSize.height || '100%',\r\n        x: config && config.filterSize && config.filterSize.x || '0%',\r\n        y: config && config.filterSize && config.filterSize.y || '0%'\r\n      },\r\n      width: config && config.width,\r\n      height: config && config.height,\r\n      runExpressions: !config || config.runExpressions === undefined || config.runExpressions\r\n    };\r\n    this.globalData = {\r\n      _mdf: false,\r\n      frameNum: -1,\r\n      defs: defs,\r\n      renderConfig: this.renderConfig\r\n    };\r\n    this.elements = [];\r\n    this.pendingElements = [];\r\n    this.destroyed = false;\r\n    this.rendererType = 'svg';\r\n  }\r\n\r\n  extendPrototype([SVGRendererBase], SVGRenderer);\r\n\r\n  SVGRenderer.prototype.createComp = function (data) {\r\n    return new SVGCompElement(data, this.globalData, this);\r\n  };\r\n\r\n  function CVContextData() {\r\n    this.saved = [];\r\n    this.cArrPos = 0;\r\n    this.cTr = new Matrix();\r\n    this.cO = 1;\r\n    var i;\r\n    var len = 15;\r\n    this.savedOp = createTypedArray('float32', len);\r\n\r\n    for (i = 0; i < len; i += 1) {\r\n      this.saved[i] = createTypedArray('float32', 16);\r\n    }\r\n\r\n    this._length = len;\r\n  }\r\n\r\n  CVContextData.prototype.duplicate = function () {\r\n    var newLength = this._length * 2;\r\n    var currentSavedOp = this.savedOp;\r\n    this.savedOp = createTypedArray('float32', newLength);\r\n    this.savedOp.set(currentSavedOp);\r\n    var i = 0;\r\n\r\n    for (i = this._length; i < newLength; i += 1) {\r\n      this.saved[i] = createTypedArray('float32', 16);\r\n    }\r\n\r\n    this._length = newLength;\r\n  };\r\n\r\n  CVContextData.prototype.reset = function () {\r\n    this.cArrPos = 0;\r\n    this.cTr.reset();\r\n    this.cO = 1;\r\n  };\r\n\r\n  function ShapeTransformManager() {\r\n    this.sequences = {};\r\n    this.sequenceList = [];\r\n    this.transform_key_count = 0;\r\n  }\r\n\r\n  ShapeTransformManager.prototype = {\r\n    addTransformSequence: function addTransformSequence(transforms) {\r\n      var i;\r\n      var len = transforms.length;\r\n      var key = '_';\r\n\r\n      for (i = 0; i < len; i += 1) {\r\n        key += transforms[i].transform.key + '_';\r\n      }\r\n\r\n      var sequence = this.sequences[key];\r\n\r\n      if (!sequence) {\r\n        sequence = {\r\n          transforms: [].concat(transforms),\r\n          finalTransform: new Matrix(),\r\n          _mdf: false\r\n        };\r\n        this.sequences[key] = sequence;\r\n        this.sequenceList.push(sequence);\r\n      }\r\n\r\n      return sequence;\r\n    },\r\n    processSequence: function processSequence(sequence, isFirstFrame) {\r\n      var i = 0;\r\n      var len = sequence.transforms.length;\r\n      var _mdf = isFirstFrame;\r\n\r\n      while (i < len && !isFirstFrame) {\r\n        if (sequence.transforms[i].transform.mProps._mdf) {\r\n          _mdf = true;\r\n          break;\r\n        }\r\n\r\n        i += 1;\r\n      }\r\n\r\n      if (_mdf) {\r\n        var props;\r\n        sequence.finalTransform.reset();\r\n\r\n        for (i = len - 1; i >= 0; i -= 1) {\r\n          props = sequence.transforms[i].transform.mProps.v.props;\r\n          sequence.finalTransform.transform(props[0], props[1], props[2], props[3], props[4], props[5], props[6], props[7], props[8], props[9], props[10], props[11], props[12], props[13], props[14], props[15]);\r\n        }\r\n      }\r\n\r\n      sequence._mdf = _mdf;\r\n    },\r\n    processSequences: function processSequences(isFirstFrame) {\r\n      var i;\r\n      var len = this.sequenceList.length;\r\n\r\n      for (i = 0; i < len; i += 1) {\r\n        this.processSequence(this.sequenceList[i], isFirstFrame);\r\n      }\r\n    },\r\n    getNewKey: function getNewKey() {\r\n      this.transform_key_count += 1;\r\n      return '_' + this.transform_key_count;\r\n    }\r\n  };\r\n\r\n  function CVEffects() {}\r\n\r\n  CVEffects.prototype.renderFrame = function () {};\r\n\r\n  function CVMaskElement(data, element) {\r\n    this.data = data;\r\n    this.element = element;\r\n    this.masksProperties = this.data.masksProperties || [];\r\n    this.viewData = createSizedArray(this.masksProperties.length);\r\n    var i;\r\n    var len = this.masksProperties.length;\r\n    var hasMasks = false;\r\n\r\n    for (i = 0; i < len; i += 1) {\r\n      if (this.masksProperties[i].mode !== 'n') {\r\n        hasMasks = true;\r\n      }\r\n\r\n      this.viewData[i] = ShapePropertyFactory.getShapeProp(this.element, this.masksProperties[i], 3);\r\n    }\r\n\r\n    this.hasMasks = hasMasks;\r\n\r\n    if (hasMasks) {\r\n      this.element.addRenderableComponent(this);\r\n    }\r\n  }\r\n\r\n  CVMaskElement.prototype.renderFrame = function () {\r\n    if (!this.hasMasks) {\r\n      return;\r\n    }\r\n\r\n    var transform = this.element.finalTransform.mat;\r\n    var ctx = this.element.canvasContext;\r\n    var i;\r\n    var len = this.masksProperties.length;\r\n    var pt;\r\n    var pts;\r\n    var data;\r\n    ctx.beginPath();\r\n\r\n    for (i = 0; i < len; i += 1) {\r\n      if (this.masksProperties[i].mode !== 'n') {\r\n        if (this.masksProperties[i].inv) {\r\n          ctx.moveTo(0, 0);\r\n          ctx.lineTo(this.element.globalData.compSize.w, 0);\r\n          ctx.lineTo(this.element.globalData.compSize.w, this.element.globalData.compSize.h);\r\n          ctx.lineTo(0, this.element.globalData.compSize.h);\r\n          ctx.lineTo(0, 0);\r\n        }\r\n\r\n        data = this.viewData[i].v;\r\n        pt = transform.applyToPointArray(data.v[0][0], data.v[0][1], 0);\r\n        ctx.moveTo(pt[0], pt[1]);\r\n        var j;\r\n        var jLen = data._length;\r\n\r\n        for (j = 1; j < jLen; j += 1) {\r\n          pts = transform.applyToTriplePoints(data.o[j - 1], data.i[j], data.v[j]);\r\n          ctx.bezierCurveTo(pts[0], pts[1], pts[2], pts[3], pts[4], pts[5]);\r\n        }\r\n\r\n        pts = transform.applyToTriplePoints(data.o[j - 1], data.i[0], data.v[0]);\r\n        ctx.bezierCurveTo(pts[0], pts[1], pts[2], pts[3], pts[4], pts[5]);\r\n      }\r\n    }\r\n\r\n    this.element.globalData.renderer.save(true);\r\n    ctx.clip();\r\n  };\r\n\r\n  CVMaskElement.prototype.getMaskProperty = MaskElement.prototype.getMaskProperty;\r\n\r\n  CVMaskElement.prototype.destroy = function () {\r\n    this.element = null;\r\n  };\r\n\r\n  function CVBaseElement() {}\r\n\r\n  CVBaseElement.prototype = {\r\n    createElements: function createElements() {},\r\n    initRendererElement: function initRendererElement() {},\r\n    createContainerElements: function createContainerElements() {\r\n      this.canvasContext = this.globalData.canvasContext;\r\n      this.renderableEffectsManager = new CVEffects(this);\r\n    },\r\n    createContent: function createContent() {},\r\n    setBlendMode: function setBlendMode() {\r\n      var globalData = this.globalData;\r\n\r\n      if (globalData.blendMode !== this.data.bm) {\r\n        globalData.blendMode = this.data.bm;\r\n        var blendModeValue = getBlendMode(this.data.bm);\r\n        globalData.canvasContext.globalCompositeOperation = blendModeValue;\r\n      }\r\n    },\r\n    createRenderableComponents: function createRenderableComponents() {\r\n      this.maskManager = new CVMaskElement(this.data, this);\r\n    },\r\n    hideElement: function hideElement() {\r\n      if (!this.hidden && (!this.isInRange || this.isTransparent)) {\r\n        this.hidden = true;\r\n      }\r\n    },\r\n    showElement: function showElement() {\r\n      if (this.isInRange && !this.isTransparent) {\r\n        this.hidden = false;\r\n        this._isFirstFrame = true;\r\n        this.maskManager._isFirstFrame = true;\r\n      }\r\n    },\r\n    renderFrame: function renderFrame() {\r\n      if (this.hidden || this.data.hd) {\r\n        return;\r\n      }\r\n\r\n      this.renderTransform();\r\n      this.renderRenderable();\r\n      this.setBlendMode();\r\n      var forceRealStack = this.data.ty === 0;\r\n      this.globalData.renderer.save(forceRealStack);\r\n      this.globalData.renderer.ctxTransform(this.finalTransform.mat.props);\r\n      this.globalData.renderer.ctxOpacity(this.finalTransform.mProp.o.v);\r\n      this.renderInnerContent();\r\n      this.globalData.renderer.restore(forceRealStack);\r\n\r\n      if (this.maskManager.hasMasks) {\r\n        this.globalData.renderer.restore(true);\r\n      }\r\n\r\n      if (this._isFirstFrame) {\r\n        this._isFirstFrame = false;\r\n      }\r\n    },\r\n    destroy: function destroy() {\r\n      this.canvasContext = null;\r\n      this.data = null;\r\n      this.globalData = null;\r\n      this.maskManager.destroy();\r\n    },\r\n    mHelper: new Matrix()\r\n  };\r\n  CVBaseElement.prototype.hide = CVBaseElement.prototype.hideElement;\r\n  CVBaseElement.prototype.show = CVBaseElement.prototype.showElement;\r\n\r\n  function CVShapeData(element, data, styles, transformsManager) {\r\n    this.styledShapes = [];\r\n    this.tr = [0, 0, 0, 0, 0, 0];\r\n    var ty = 4;\r\n\r\n    if (data.ty === 'rc') {\r\n      ty = 5;\r\n    } else if (data.ty === 'el') {\r\n      ty = 6;\r\n    } else if (data.ty === 'sr') {\r\n      ty = 7;\r\n    }\r\n\r\n    this.sh = ShapePropertyFactory.getShapeProp(element, data, ty, element);\r\n    var i;\r\n    var len = styles.length;\r\n    var styledShape;\r\n\r\n    for (i = 0; i < len; i += 1) {\r\n      if (!styles[i].closed) {\r\n        styledShape = {\r\n          transforms: transformsManager.addTransformSequence(styles[i].transforms),\r\n          trNodes: []\r\n        };\r\n        this.styledShapes.push(styledShape);\r\n        styles[i].elements.push(styledShape);\r\n      }\r\n    }\r\n  }\r\n\r\n  CVShapeData.prototype.setAsAnimated = SVGShapeData.prototype.setAsAnimated;\r\n\r\n  function CVShapeElement(data, globalData, comp) {\r\n    this.shapes = [];\r\n    this.shapesData = data.shapes;\r\n    this.stylesList = [];\r\n    this.itemsData = [];\r\n    this.prevViewData = [];\r\n    this.shapeModifiers = [];\r\n    this.processedElements = [];\r\n    this.transformsManager = new ShapeTransformManager();\r\n    this.initElement(data, globalData, comp);\r\n  }\r\n\r\n  extendPrototype([BaseElement, TransformElement, CVBaseElement, IShapeElement, HierarchyElement, FrameElement, RenderableElement], CVShapeElement);\r\n  CVShapeElement.prototype.initElement = RenderableDOMElement.prototype.initElement;\r\n  CVShapeElement.prototype.transformHelper = {\r\n    opacity: 1,\r\n    _opMdf: false\r\n  };\r\n  CVShapeElement.prototype.dashResetter = [];\r\n\r\n  CVShapeElement.prototype.createContent = function () {\r\n    this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, true, []);\r\n  };\r\n\r\n  CVShapeElement.prototype.createStyleElement = function (data, transforms) {\r\n    var styleElem = {\r\n      data: data,\r\n      type: data.ty,\r\n      preTransforms: this.transformsManager.addTransformSequence(transforms),\r\n      transforms: [],\r\n      elements: [],\r\n      closed: data.hd === true\r\n    };\r\n    var elementData = {};\r\n\r\n    if (data.ty === 'fl' || data.ty === 'st') {\r\n      elementData.c = PropertyFactory.getProp(this, data.c, 1, 255, this);\r\n\r\n      if (!elementData.c.k) {\r\n        styleElem.co = 'rgb(' + bmFloor(elementData.c.v[0]) + ',' + bmFloor(elementData.c.v[1]) + ',' + bmFloor(elementData.c.v[2]) + ')';\r\n      }\r\n    } else if (data.ty === 'gf' || data.ty === 'gs') {\r\n      elementData.s = PropertyFactory.getProp(this, data.s, 1, null, this);\r\n      elementData.e = PropertyFactory.getProp(this, data.e, 1, null, this);\r\n      elementData.h = PropertyFactory.getProp(this, data.h || {\r\n        k: 0\r\n      }, 0, 0.01, this);\r\n      elementData.a = PropertyFactory.getProp(this, data.a || {\r\n        k: 0\r\n      }, 0, degToRads, this);\r\n      elementData.g = new GradientProperty(this, data.g, this);\r\n    }\r\n\r\n    elementData.o = PropertyFactory.getProp(this, data.o, 0, 0.01, this);\r\n\r\n    if (data.ty === 'st' || data.ty === 'gs') {\r\n      styleElem.lc = lineCapEnum[data.lc || 2];\r\n      styleElem.lj = lineJoinEnum[data.lj || 2];\r\n\r\n      if (data.lj == 1) {\r\n        // eslint-disable-line eqeqeq\r\n        styleElem.ml = data.ml;\r\n      }\r\n\r\n      elementData.w = PropertyFactory.getProp(this, data.w, 0, null, this);\r\n\r\n      if (!elementData.w.k) {\r\n        styleElem.wi = elementData.w.v;\r\n      }\r\n\r\n      if (data.d) {\r\n        var d = new DashProperty(this, data.d, 'canvas', this);\r\n        elementData.d = d;\r\n\r\n        if (!elementData.d.k) {\r\n          styleElem.da = elementData.d.dashArray;\r\n          styleElem[\"do\"] = elementData.d.dashoffset[0];\r\n        }\r\n      }\r\n    } else {\r\n      styleElem.r = data.r === 2 ? 'evenodd' : 'nonzero';\r\n    }\r\n\r\n    this.stylesList.push(styleElem);\r\n    elementData.style = styleElem;\r\n    return elementData;\r\n  };\r\n\r\n  CVShapeElement.prototype.createGroupElement = function () {\r\n    var elementData = {\r\n      it: [],\r\n      prevViewData: []\r\n    };\r\n    return elementData;\r\n  };\r\n\r\n  CVShapeElement.prototype.createTransformElement = function (data) {\r\n    var elementData = {\r\n      transform: {\r\n        opacity: 1,\r\n        _opMdf: false,\r\n        key: this.transformsManager.getNewKey(),\r\n        op: PropertyFactory.getProp(this, data.o, 0, 0.01, this),\r\n        mProps: TransformPropertyFactory.getTransformProperty(this, data, this)\r\n      }\r\n    };\r\n    return elementData;\r\n  };\r\n\r\n  CVShapeElement.prototype.createShapeElement = function (data) {\r\n    var elementData = new CVShapeData(this, data, this.stylesList, this.transformsManager);\r\n    this.shapes.push(elementData);\r\n    this.addShapeToModifiers(elementData);\r\n    return elementData;\r\n  };\r\n\r\n  CVShapeElement.prototype.reloadShapes = function () {\r\n    this._isFirstFrame = true;\r\n    var i;\r\n    var len = this.itemsData.length;\r\n\r\n    for (i = 0; i < len; i += 1) {\r\n      this.prevViewData[i] = this.itemsData[i];\r\n    }\r\n\r\n    this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, true, []);\r\n    len = this.dynamicProperties.length;\r\n\r\n    for (i = 0; i < len; i += 1) {\r\n      this.dynamicProperties[i].getValue();\r\n    }\r\n\r\n    this.renderModifiers();\r\n    this.transformsManager.processSequences(this._isFirstFrame);\r\n  };\r\n\r\n  CVShapeElement.prototype.addTransformToStyleList = function (transform) {\r\n    var i;\r\n    var len = this.stylesList.length;\r\n\r\n    for (i = 0; i < len; i += 1) {\r\n      if (!this.stylesList[i].closed) {\r\n        this.stylesList[i].transforms.push(transform);\r\n      }\r\n    }\r\n  };\r\n\r\n  CVShapeElement.prototype.removeTransformFromStyleList = function () {\r\n    var i;\r\n    var len = this.stylesList.length;\r\n\r\n    for (i = 0; i < len; i += 1) {\r\n      if (!this.stylesList[i].closed) {\r\n        this.stylesList[i].transforms.pop();\r\n      }\r\n    }\r\n  };\r\n\r\n  CVShapeElement.prototype.closeStyles = function (styles) {\r\n    var i;\r\n    var len = styles.length;\r\n\r\n    for (i = 0; i < len; i += 1) {\r\n      styles[i].closed = true;\r\n    }\r\n  };\r\n\r\n  CVShapeElement.prototype.searchShapes = function (arr, itemsData, prevViewData, shouldRender, transforms) {\r\n    var i;\r\n    var len = arr.length - 1;\r\n    var j;\r\n    var jLen;\r\n    var ownStyles = [];\r\n    var ownModifiers = [];\r\n    var processedPos;\r\n    var modifier;\r\n    var currentTransform;\r\n    var ownTransforms = [].concat(transforms);\r\n\r\n    for (i = len; i >= 0; i -= 1) {\r\n      processedPos = this.searchProcessedElement(arr[i]);\r\n\r\n      if (!processedPos) {\r\n        arr[i]._shouldRender = shouldRender;\r\n      } else {\r\n        itemsData[i] = prevViewData[processedPos - 1];\r\n      }\r\n\r\n      if (arr[i].ty === 'fl' || arr[i].ty === 'st' || arr[i].ty === 'gf' || arr[i].ty === 'gs') {\r\n        if (!processedPos) {\r\n          itemsData[i] = this.createStyleElement(arr[i], ownTransforms);\r\n        } else {\r\n          itemsData[i].style.closed = false;\r\n        }\r\n\r\n        ownStyles.push(itemsData[i].style);\r\n      } else if (arr[i].ty === 'gr') {\r\n        if (!processedPos) {\r\n          itemsData[i] = this.createGroupElement(arr[i]);\r\n        } else {\r\n          jLen = itemsData[i].it.length;\r\n\r\n          for (j = 0; j < jLen; j += 1) {\r\n            itemsData[i].prevViewData[j] = itemsData[i].it[j];\r\n          }\r\n        }\r\n\r\n        this.searchShapes(arr[i].it, itemsData[i].it, itemsData[i].prevViewData, shouldRender, ownTransforms);\r\n      } else if (arr[i].ty === 'tr') {\r\n        if (!processedPos) {\r\n          currentTransform = this.createTransformElement(arr[i]);\r\n          itemsData[i] = currentTransform;\r\n        }\r\n\r\n        ownTransforms.push(itemsData[i]);\r\n        this.addTransformToStyleList(itemsData[i]);\r\n      } else if (arr[i].ty === 'sh' || arr[i].ty === 'rc' || arr[i].ty === 'el' || arr[i].ty === 'sr') {\r\n        if (!processedPos) {\r\n          itemsData[i] = this.createShapeElement(arr[i]);\r\n        }\r\n      } else if (arr[i].ty === 'tm' || arr[i].ty === 'rd' || arr[i].ty === 'pb' || arr[i].ty === 'zz' || arr[i].ty === 'op') {\r\n        if (!processedPos) {\r\n          modifier = ShapeModifiers.getModifier(arr[i].ty);\r\n          modifier.init(this, arr[i]);\r\n          itemsData[i] = modifier;\r\n          this.shapeModifiers.push(modifier);\r\n        } else {\r\n          modifier = itemsData[i];\r\n          modifier.closed = false;\r\n        }\r\n\r\n        ownModifiers.push(modifier);\r\n      } else if (arr[i].ty === 'rp') {\r\n        if (!processedPos) {\r\n          modifier = ShapeModifiers.getModifier(arr[i].ty);\r\n          itemsData[i] = modifier;\r\n          modifier.init(this, arr, i, itemsData);\r\n          this.shapeModifiers.push(modifier);\r\n          shouldRender = false;\r\n        } else {\r\n          modifier = itemsData[i];\r\n          modifier.closed = true;\r\n        }\r\n\r\n        ownModifiers.push(modifier);\r\n      }\r\n\r\n      this.addProcessedElement(arr[i], i + 1);\r\n    }\r\n\r\n    this.removeTransformFromStyleList();\r\n    this.closeStyles(ownStyles);\r\n    len = ownModifiers.length;\r\n\r\n    for (i = 0; i < len; i += 1) {\r\n      ownModifiers[i].closed = true;\r\n    }\r\n  };\r\n\r\n  CVShapeElement.prototype.renderInnerContent = function () {\r\n    this.transformHelper.opacity = 1;\r\n    this.transformHelper._opMdf = false;\r\n    this.renderModifiers();\r\n    this.transformsManager.processSequences(this._isFirstFrame);\r\n    this.renderShape(this.transformHelper, this.shapesData, this.itemsData, true);\r\n  };\r\n\r\n  CVShapeElement.prototype.renderShapeTransform = function (parentTransform, groupTransform) {\r\n    if (parentTransform._opMdf || groupTransform.op._mdf || this._isFirstFrame) {\r\n      groupTransform.opacity = parentTransform.opacity;\r\n      groupTransform.opacity *= groupTransform.op.v;\r\n      groupTransform._opMdf = true;\r\n    }\r\n  };\r\n\r\n  CVShapeElement.prototype.drawLayer = function () {\r\n    var i;\r\n    var len = this.stylesList.length;\r\n    var j;\r\n    var jLen;\r\n    var k;\r\n    var kLen;\r\n    var elems;\r\n    var nodes;\r\n    var renderer = this.globalData.renderer;\r\n    var ctx = this.globalData.canvasContext;\r\n    var type;\r\n    var currentStyle;\r\n\r\n    for (i = 0; i < len; i += 1) {\r\n      currentStyle = this.stylesList[i];\r\n      type = currentStyle.type; // Skipping style when\r\n      // Stroke width equals 0\r\n      // style should not be rendered (extra unused repeaters)\r\n      // current opacity equals 0\r\n      // global opacity equals 0\r\n\r\n      if (!((type === 'st' || type === 'gs') && currentStyle.wi === 0 || !currentStyle.data._shouldRender || currentStyle.coOp === 0 || this.globalData.currentGlobalAlpha === 0)) {\r\n        renderer.save();\r\n        elems = currentStyle.elements;\r\n\r\n        if (type === 'st' || type === 'gs') {\r\n          ctx.strokeStyle = type === 'st' ? currentStyle.co : currentStyle.grd;\r\n          ctx.lineWidth = currentStyle.wi;\r\n          ctx.lineCap = currentStyle.lc;\r\n          ctx.lineJoin = currentStyle.lj;\r\n          ctx.miterLimit = currentStyle.ml || 0;\r\n        } else {\r\n          ctx.fillStyle = type === 'fl' ? currentStyle.co : currentStyle.grd;\r\n        }\r\n\r\n        renderer.ctxOpacity(currentStyle.coOp);\r\n\r\n        if (type !== 'st' && type !== 'gs') {\r\n          ctx.beginPath();\r\n        }\r\n\r\n        renderer.ctxTransform(currentStyle.preTransforms.finalTransform.props);\r\n        jLen = elems.length;\r\n\r\n        for (j = 0; j < jLen; j += 1) {\r\n          if (type === 'st' || type === 'gs') {\r\n            ctx.beginPath();\r\n\r\n            if (currentStyle.da) {\r\n              ctx.setLineDash(currentStyle.da);\r\n              ctx.lineDashOffset = currentStyle[\"do\"];\r\n            }\r\n          }\r\n\r\n          nodes = elems[j].trNodes;\r\n          kLen = nodes.length;\r\n\r\n          for (k = 0; k < kLen; k += 1) {\r\n            if (nodes[k].t === 'm') {\r\n              ctx.moveTo(nodes[k].p[0], nodes[k].p[1]);\r\n            } else if (nodes[k].t === 'c') {\r\n              ctx.bezierCurveTo(nodes[k].pts[0], nodes[k].pts[1], nodes[k].pts[2], nodes[k].pts[3], nodes[k].pts[4], nodes[k].pts[5]);\r\n            } else {\r\n              ctx.closePath();\r\n            }\r\n          }\r\n\r\n          if (type === 'st' || type === 'gs') {\r\n            ctx.stroke();\r\n\r\n            if (currentStyle.da) {\r\n              ctx.setLineDash(this.dashResetter);\r\n            }\r\n          }\r\n        }\r\n\r\n        if (type !== 'st' && type !== 'gs') {\r\n          ctx.fill(currentStyle.r);\r\n        }\r\n\r\n        renderer.restore();\r\n      }\r\n    }\r\n  };\r\n\r\n  CVShapeElement.prototype.renderShape = function (parentTransform, items, data, isMain) {\r\n    var i;\r\n    var len = items.length - 1;\r\n    var groupTransform;\r\n    groupTransform = parentTransform;\r\n\r\n    for (i = len; i >= 0; i -= 1) {\r\n      if (items[i].ty === 'tr') {\r\n        groupTransform = data[i].transform;\r\n        this.renderShapeTransform(parentTransform, groupTransform);\r\n      } else if (items[i].ty === 'sh' || items[i].ty === 'el' || items[i].ty === 'rc' || items[i].ty === 'sr') {\r\n        this.renderPath(items[i], data[i]);\r\n      } else if (items[i].ty === 'fl') {\r\n        this.renderFill(items[i], data[i], groupTransform);\r\n      } else if (items[i].ty === 'st') {\r\n        this.renderStroke(items[i], data[i], groupTransform);\r\n      } else if (items[i].ty === 'gf' || items[i].ty === 'gs') {\r\n        this.renderGradientFill(items[i], data[i], groupTransform);\r\n      } else if (items[i].ty === 'gr') {\r\n        this.renderShape(groupTransform, items[i].it, data[i].it);\r\n      } else if (items[i].ty === 'tm') {//\r\n      }\r\n    }\r\n\r\n    if (isMain) {\r\n      this.drawLayer();\r\n    }\r\n  };\r\n\r\n  CVShapeElement.prototype.renderStyledShape = function (styledShape, shape) {\r\n    if (this._isFirstFrame || shape._mdf || styledShape.transforms._mdf) {\r\n      var shapeNodes = styledShape.trNodes;\r\n      var paths = shape.paths;\r\n      var i;\r\n      var len;\r\n      var j;\r\n      var jLen = paths._length;\r\n      shapeNodes.length = 0;\r\n      var groupTransformMat = styledShape.transforms.finalTransform;\r\n\r\n      for (j = 0; j < jLen; j += 1) {\r\n        var pathNodes = paths.shapes[j];\r\n\r\n        if (pathNodes && pathNodes.v) {\r\n          len = pathNodes._length;\r\n\r\n          for (i = 1; i < len; i += 1) {\r\n            if (i === 1) {\r\n              shapeNodes.push({\r\n                t: 'm',\r\n                p: groupTransformMat.applyToPointArray(pathNodes.v[0][0], pathNodes.v[0][1], 0)\r\n              });\r\n            }\r\n\r\n            shapeNodes.push({\r\n              t: 'c',\r\n              pts: groupTransformMat.applyToTriplePoints(pathNodes.o[i - 1], pathNodes.i[i], pathNodes.v[i])\r\n            });\r\n          }\r\n\r\n          if (len === 1) {\r\n            shapeNodes.push({\r\n              t: 'm',\r\n              p: groupTransformMat.applyToPointArray(pathNodes.v[0][0], pathNodes.v[0][1], 0)\r\n            });\r\n          }\r\n\r\n          if (pathNodes.c && len) {\r\n            shapeNodes.push({\r\n              t: 'c',\r\n              pts: groupTransformMat.applyToTriplePoints(pathNodes.o[i - 1], pathNodes.i[0], pathNodes.v[0])\r\n            });\r\n            shapeNodes.push({\r\n              t: 'z'\r\n            });\r\n          }\r\n        }\r\n      }\r\n\r\n      styledShape.trNodes = shapeNodes;\r\n    }\r\n  };\r\n\r\n  CVShapeElement.prototype.renderPath = function (pathData, itemData) {\r\n    if (pathData.hd !== true && pathData._shouldRender) {\r\n      var i;\r\n      var len = itemData.styledShapes.length;\r\n\r\n      for (i = 0; i < len; i += 1) {\r\n        this.renderStyledShape(itemData.styledShapes[i], itemData.sh);\r\n      }\r\n    }\r\n  };\r\n\r\n  CVShapeElement.prototype.renderFill = function (styleData, itemData, groupTransform) {\r\n    var styleElem = itemData.style;\r\n\r\n    if (itemData.c._mdf || this._isFirstFrame) {\r\n      styleElem.co = 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')';\r\n    }\r\n\r\n    if (itemData.o._mdf || groupTransform._opMdf || this._isFirstFrame) {\r\n      styleElem.coOp = itemData.o.v * groupTransform.opacity;\r\n    }\r\n  };\r\n\r\n  CVShapeElement.prototype.renderGradientFill = function (styleData, itemData, groupTransform) {\r\n    var styleElem = itemData.style;\r\n    var grd;\r\n\r\n    if (!styleElem.grd || itemData.g._mdf || itemData.s._mdf || itemData.e._mdf || styleData.t !== 1 && (itemData.h._mdf || itemData.a._mdf)) {\r\n      var ctx = this.globalData.canvasContext;\r\n      var pt1 = itemData.s.v;\r\n      var pt2 = itemData.e.v;\r\n\r\n      if (styleData.t === 1) {\r\n        grd = ctx.createLinearGradient(pt1[0], pt1[1], pt2[0], pt2[1]);\r\n      } else {\r\n        var rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2));\r\n        var ang = Math.atan2(pt2[1] - pt1[1], pt2[0] - pt1[0]);\r\n        var percent = itemData.h.v;\r\n\r\n        if (percent >= 1) {\r\n          percent = 0.99;\r\n        } else if (percent <= -1) {\r\n          percent = -0.99;\r\n        }\r\n\r\n        var dist = rad * percent;\r\n        var x = Math.cos(ang + itemData.a.v) * dist + pt1[0];\r\n        var y = Math.sin(ang + itemData.a.v) * dist + pt1[1];\r\n        grd = ctx.createRadialGradient(x, y, 0, pt1[0], pt1[1], rad);\r\n      }\r\n\r\n      var i;\r\n      var len = styleData.g.p;\r\n      var cValues = itemData.g.c;\r\n      var opacity = 1;\r\n\r\n      for (i = 0; i < len; i += 1) {\r\n        if (itemData.g._hasOpacity && itemData.g._collapsable) {\r\n          opacity = itemData.g.o[i * 2 + 1];\r\n        }\r\n\r\n        grd.addColorStop(cValues[i * 4] / 100, 'rgba(' + cValues[i * 4 + 1] + ',' + cValues[i * 4 + 2] + ',' + cValues[i * 4 + 3] + ',' + opacity + ')');\r\n      }\r\n\r\n      styleElem.grd = grd;\r\n    }\r\n\r\n    styleElem.coOp = itemData.o.v * groupTransform.opacity;\r\n  };\r\n\r\n  CVShapeElement.prototype.renderStroke = function (styleData, itemData, groupTransform) {\r\n    var styleElem = itemData.style;\r\n    var d = itemData.d;\r\n\r\n    if (d && (d._mdf || this._isFirstFrame)) {\r\n      styleElem.da = d.dashArray;\r\n      styleElem[\"do\"] = d.dashoffset[0];\r\n    }\r\n\r\n    if (itemData.c._mdf || this._isFirstFrame) {\r\n      styleElem.co = 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')';\r\n    }\r\n\r\n    if (itemData.o._mdf || groupTransform._opMdf || this._isFirstFrame) {\r\n      styleElem.coOp = itemData.o.v * groupTransform.opacity;\r\n    }\r\n\r\n    if (itemData.w._mdf || this._isFirstFrame) {\r\n      styleElem.wi = itemData.w.v;\r\n    }\r\n  };\r\n\r\n  CVShapeElement.prototype.destroy = function () {\r\n    this.shapesData = null;\r\n    this.globalData = null;\r\n    this.canvasContext = null;\r\n    this.stylesList.length = 0;\r\n    this.itemsData.length = 0;\r\n  };\r\n\r\n  function CVTextElement(data, globalData, comp) {\r\n    this.textSpans = [];\r\n    this.yOffset = 0;\r\n    this.fillColorAnim = false;\r\n    this.strokeColorAnim = false;\r\n    this.strokeWidthAnim = false;\r\n    this.stroke = false;\r\n    this.fill = false;\r\n    this.justifyOffset = 0;\r\n    this.currentRender = null;\r\n    this.renderType = 'canvas';\r\n    this.values = {\r\n      fill: 'rgba(0,0,0,0)',\r\n      stroke: 'rgba(0,0,0,0)',\r\n      sWidth: 0,\r\n      fValue: ''\r\n    };\r\n    this.initElement(data, globalData, comp);\r\n  }\r\n\r\n  extendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement, ITextElement], CVTextElement);\r\n  CVTextElement.prototype.tHelper = createTag('canvas').getContext('2d');\r\n\r\n  CVTextElement.prototype.buildNewText = function () {\r\n    var documentData = this.textProperty.currentData;\r\n    this.renderedLetters = createSizedArray(documentData.l ? documentData.l.length : 0);\r\n    var hasFill = false;\r\n\r\n    if (documentData.fc) {\r\n      hasFill = true;\r\n      this.values.fill = this.buildColor(documentData.fc);\r\n    } else {\r\n      this.values.fill = 'rgba(0,0,0,0)';\r\n    }\r\n\r\n    this.fill = hasFill;\r\n    var hasStroke = false;\r\n\r\n    if (documentData.sc) {\r\n      hasStroke = true;\r\n      this.values.stroke = this.buildColor(documentData.sc);\r\n      this.values.sWidth = documentData.sw;\r\n    }\r\n\r\n    var fontData = this.globalData.fontManager.getFontByName(documentData.f);\r\n    var i;\r\n    var len;\r\n    var letters = documentData.l;\r\n    var matrixHelper = this.mHelper;\r\n    this.stroke = hasStroke;\r\n    this.values.fValue = documentData.finalSize + 'px ' + this.globalData.fontManager.getFontByName(documentData.f).fFamily;\r\n    len = documentData.finalText.length; // this.tHelper.font = this.values.fValue;\r\n\r\n    var charData;\r\n    var shapeData;\r\n    var k;\r\n    var kLen;\r\n    var shapes;\r\n    var j;\r\n    var jLen;\r\n    var pathNodes;\r\n    var commands;\r\n    var pathArr;\r\n    var singleShape = this.data.singleShape;\r\n    var trackingOffset = documentData.tr * 0.001 * documentData.finalSize;\r\n    var xPos = 0;\r\n    var yPos = 0;\r\n    var firstLine = true;\r\n    var cnt = 0;\r\n\r\n    for (i = 0; i < len; i += 1) {\r\n      charData = this.globalData.fontManager.getCharData(documentData.finalText[i], fontData.fStyle, this.globalData.fontManager.getFontByName(documentData.f).fFamily);\r\n      shapeData = charData && charData.data || {};\r\n      matrixHelper.reset();\r\n\r\n      if (singleShape && letters[i].n) {\r\n        xPos = -trackingOffset;\r\n        yPos += documentData.yOffset;\r\n        yPos += firstLine ? 1 : 0;\r\n        firstLine = false;\r\n      }\r\n\r\n      shapes = shapeData.shapes ? shapeData.shapes[0].it : [];\r\n      jLen = shapes.length;\r\n      matrixHelper.scale(documentData.finalSize / 100, documentData.finalSize / 100);\r\n\r\n      if (singleShape) {\r\n        this.applyTextPropertiesToMatrix(documentData, matrixHelper, letters[i].line, xPos, yPos);\r\n      }\r\n\r\n      commands = createSizedArray(jLen - 1);\r\n      var commandsCounter = 0;\r\n\r\n      for (j = 0; j < jLen; j += 1) {\r\n        if (shapes[j].ty === 'sh') {\r\n          kLen = shapes[j].ks.k.i.length;\r\n          pathNodes = shapes[j].ks.k;\r\n          pathArr = [];\r\n\r\n          for (k = 1; k < kLen; k += 1) {\r\n            if (k === 1) {\r\n              pathArr.push(matrixHelper.applyToX(pathNodes.v[0][0], pathNodes.v[0][1], 0), matrixHelper.applyToY(pathNodes.v[0][0], pathNodes.v[0][1], 0));\r\n            }\r\n\r\n            pathArr.push(matrixHelper.applyToX(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToY(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToX(pathNodes.i[k][0], pathNodes.i[k][1], 0), matrixHelper.applyToY(pathNodes.i[k][0], pathNodes.i[k][1], 0), matrixHelper.applyToX(pathNodes.v[k][0], pathNodes.v[k][1], 0), matrixHelper.applyToY(pathNodes.v[k][0], pathNodes.v[k][1], 0));\r\n          }\r\n\r\n          pathArr.push(matrixHelper.applyToX(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToY(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToX(pathNodes.i[0][0], pathNodes.i[0][1], 0), matrixHelper.applyToY(pathNodes.i[0][0], pathNodes.i[0][1], 0), matrixHelper.applyToX(pathNodes.v[0][0], pathNodes.v[0][1], 0), matrixHelper.applyToY(pathNodes.v[0][0], pathNodes.v[0][1], 0));\r\n          commands[commandsCounter] = pathArr;\r\n          commandsCounter += 1;\r\n        }\r\n      }\r\n\r\n      if (singleShape) {\r\n        xPos += letters[i].l;\r\n        xPos += trackingOffset;\r\n      }\r\n\r\n      if (this.textSpans[cnt]) {\r\n        this.textSpans[cnt].elem = commands;\r\n      } else {\r\n        this.textSpans[cnt] = {\r\n          elem: commands\r\n        };\r\n      }\r\n\r\n      cnt += 1;\r\n    }\r\n  };\r\n\r\n  CVTextElement.prototype.renderInnerContent = function () {\r\n    var ctx = this.canvasContext;\r\n    ctx.font = this.values.fValue;\r\n    ctx.lineCap = 'butt';\r\n    ctx.lineJoin = 'miter';\r\n    ctx.miterLimit = 4;\r\n\r\n    if (!this.data.singleShape) {\r\n      this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);\r\n    }\r\n\r\n    var i;\r\n    var len;\r\n    var j;\r\n    var jLen;\r\n    var k;\r\n    var kLen;\r\n    var renderedLetters = this.textAnimator.renderedLetters;\r\n    var letters = this.textProperty.currentData.l;\r\n    len = letters.length;\r\n    var renderedLetter;\r\n    var lastFill = null;\r\n    var lastStroke = null;\r\n    var lastStrokeW = null;\r\n    var commands;\r\n    var pathArr;\r\n\r\n    for (i = 0; i < len; i += 1) {\r\n      if (!letters[i].n) {\r\n        renderedLetter = renderedLetters[i];\r\n\r\n        if (renderedLetter) {\r\n          this.globalData.renderer.save();\r\n          this.globalData.renderer.ctxTransform(renderedLetter.p);\r\n          this.globalData.renderer.ctxOpacity(renderedLetter.o);\r\n        }\r\n\r\n        if (this.fill) {\r\n          if (renderedLetter && renderedLetter.fc) {\r\n            if (lastFill !== renderedLetter.fc) {\r\n              lastFill = renderedLetter.fc;\r\n              ctx.fillStyle = renderedLetter.fc;\r\n            }\r\n          } else if (lastFill !== this.values.fill) {\r\n            lastFill = this.values.fill;\r\n            ctx.fillStyle = this.values.fill;\r\n          }\r\n\r\n          commands = this.textSpans[i].elem;\r\n          jLen = commands.length;\r\n          this.globalData.canvasContext.beginPath();\r\n\r\n          for (j = 0; j < jLen; j += 1) {\r\n            pathArr = commands[j];\r\n            kLen = pathArr.length;\r\n            this.globalData.canvasContext.moveTo(pathArr[0], pathArr[1]);\r\n\r\n            for (k = 2; k < kLen; k += 6) {\r\n              this.globalData.canvasContext.bezierCurveTo(pathArr[k], pathArr[k + 1], pathArr[k + 2], pathArr[k + 3], pathArr[k + 4], pathArr[k + 5]);\r\n            }\r\n          }\r\n\r\n          this.globalData.canvasContext.closePath();\r\n          this.globalData.canvasContext.fill(); /// ctx.fillText(this.textSpans[i].val,0,0);\r\n        }\r\n\r\n        if (this.stroke) {\r\n          if (renderedLetter && renderedLetter.sw) {\r\n            if (lastStrokeW !== renderedLetter.sw) {\r\n              lastStrokeW = renderedLetter.sw;\r\n              ctx.lineWidth = renderedLetter.sw;\r\n            }\r\n          } else if (lastStrokeW !== this.values.sWidth) {\r\n            lastStrokeW = this.values.sWidth;\r\n            ctx.lineWidth = this.values.sWidth;\r\n          }\r\n\r\n          if (renderedLetter && renderedLetter.sc) {\r\n            if (lastStroke !== renderedLetter.sc) {\r\n              lastStroke = renderedLetter.sc;\r\n              ctx.strokeStyle = renderedLetter.sc;\r\n            }\r\n          } else if (lastStroke !== this.values.stroke) {\r\n            lastStroke = this.values.stroke;\r\n            ctx.strokeStyle = this.values.stroke;\r\n          }\r\n\r\n          commands = this.textSpans[i].elem;\r\n          jLen = commands.length;\r\n          this.globalData.canvasContext.beginPath();\r\n\r\n          for (j = 0; j < jLen; j += 1) {\r\n            pathArr = commands[j];\r\n            kLen = pathArr.length;\r\n            this.globalData.canvasContext.moveTo(pathArr[0], pathArr[1]);\r\n\r\n            for (k = 2; k < kLen; k += 6) {\r\n              this.globalData.canvasContext.bezierCurveTo(pathArr[k], pathArr[k + 1], pathArr[k + 2], pathArr[k + 3], pathArr[k + 4], pathArr[k + 5]);\r\n            }\r\n          }\r\n\r\n          this.globalData.canvasContext.closePath();\r\n          this.globalData.canvasContext.stroke(); /// ctx.strokeText(letters[i].val,0,0);\r\n        }\r\n\r\n        if (renderedLetter) {\r\n          this.globalData.renderer.restore();\r\n        }\r\n      }\r\n    }\r\n  };\r\n\r\n  function CVImageElement(data, globalData, comp) {\r\n    this.assetData = globalData.getAssetData(data.refId);\r\n    this.img = globalData.imageLoader.getAsset(this.assetData);\r\n    this.initElement(data, globalData, comp);\r\n  }\r\n\r\n  extendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement], CVImageElement);\r\n  CVImageElement.prototype.initElement = SVGShapeElement.prototype.initElement;\r\n  CVImageElement.prototype.prepareFrame = IImageElement.prototype.prepareFrame;\r\n\r\n  CVImageElement.prototype.createContent = function () {\r\n    if (this.img.width && (this.assetData.w !== this.img.width || this.assetData.h !== this.img.height)) {\r\n      var canvas = createTag('canvas');\r\n      canvas.width = this.assetData.w;\r\n      canvas.height = this.assetData.h;\r\n      var ctx = canvas.getContext('2d');\r\n      var imgW = this.img.width;\r\n      var imgH = this.img.height;\r\n      var imgRel = imgW / imgH;\r\n      var canvasRel = this.assetData.w / this.assetData.h;\r\n      var widthCrop;\r\n      var heightCrop;\r\n      var par = this.assetData.pr || this.globalData.renderConfig.imagePreserveAspectRatio;\r\n\r\n      if (imgRel > canvasRel && par === 'xMidYMid slice' || imgRel < canvasRel && par !== 'xMidYMid slice') {\r\n        heightCrop = imgH;\r\n        widthCrop = heightCrop * canvasRel;\r\n      } else {\r\n        widthCrop = imgW;\r\n        heightCrop = widthCrop / canvasRel;\r\n      }\r\n\r\n      ctx.drawImage(this.img, (imgW - widthCrop) / 2, (imgH - heightCrop) / 2, widthCrop, heightCrop, 0, 0, this.assetData.w, this.assetData.h);\r\n      this.img = canvas;\r\n    }\r\n  };\r\n\r\n  CVImageElement.prototype.renderInnerContent = function () {\r\n    this.canvasContext.drawImage(this.img, 0, 0);\r\n  };\r\n\r\n  CVImageElement.prototype.destroy = function () {\r\n    this.img = null;\r\n  };\r\n\r\n  function CVSolidElement(data, globalData, comp) {\r\n    this.initElement(data, globalData, comp);\r\n  }\r\n\r\n  extendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement], CVSolidElement);\r\n  CVSolidElement.prototype.initElement = SVGShapeElement.prototype.initElement;\r\n  CVSolidElement.prototype.prepareFrame = IImageElement.prototype.prepareFrame;\r\n\r\n  CVSolidElement.prototype.renderInnerContent = function () {\r\n    var ctx = this.canvasContext;\r\n    ctx.fillStyle = this.data.sc;\r\n    ctx.fillRect(0, 0, this.data.sw, this.data.sh); //\r\n  };\r\n\r\n  function CanvasRendererBase(animationItem, config) {\r\n    this.animationItem = animationItem;\r\n    this.renderConfig = {\r\n      clearCanvas: config && config.clearCanvas !== undefined ? config.clearCanvas : true,\r\n      context: config && config.context || null,\r\n      progressiveLoad: config && config.progressiveLoad || false,\r\n      preserveAspectRatio: config && config.preserveAspectRatio || 'xMidYMid meet',\r\n      imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || 'xMidYMid slice',\r\n      contentVisibility: config && config.contentVisibility || 'visible',\r\n      className: config && config.className || '',\r\n      id: config && config.id || ''\r\n    };\r\n    this.renderConfig.dpr = config && config.dpr || 1;\r\n\r\n    if (this.animationItem.wrapper) {\r\n      this.renderConfig.dpr = config && config.dpr || window.devicePixelRatio || 1;\r\n    }\r\n\r\n    this.renderedFrame = -1;\r\n    this.globalData = {\r\n      frameNum: -1,\r\n      _mdf: false,\r\n      renderConfig: this.renderConfig,\r\n      currentGlobalAlpha: -1\r\n    };\r\n    this.contextData = new CVContextData();\r\n    this.elements = [];\r\n    this.pendingElements = [];\r\n    this.transformMat = new Matrix();\r\n    this.completeLayers = false;\r\n    this.rendererType = 'canvas';\r\n  }\r\n\r\n  extendPrototype([BaseRenderer], CanvasRendererBase);\r\n\r\n  CanvasRendererBase.prototype.createShape = function (data) {\r\n    return new CVShapeElement(data, this.globalData, this);\r\n  };\r\n\r\n  CanvasRendererBase.prototype.createText = function (data) {\r\n    return new CVTextElement(data, this.globalData, this);\r\n  };\r\n\r\n  CanvasRendererBase.prototype.createImage = function (data) {\r\n    return new CVImageElement(data, this.globalData, this);\r\n  };\r\n\r\n  CanvasRendererBase.prototype.createSolid = function (data) {\r\n    return new CVSolidElement(data, this.globalData, this);\r\n  };\r\n\r\n  CanvasRendererBase.prototype.createNull = SVGRenderer.prototype.createNull;\r\n\r\n  CanvasRendererBase.prototype.ctxTransform = function (props) {\r\n    if (props[0] === 1 && props[1] === 0 && props[4] === 0 && props[5] === 1 && props[12] === 0 && props[13] === 0) {\r\n      return;\r\n    }\r\n\r\n    if (!this.renderConfig.clearCanvas) {\r\n      this.canvasContext.transform(props[0], props[1], props[4], props[5], props[12], props[13]);\r\n      return;\r\n    }\r\n\r\n    this.transformMat.cloneFromProps(props);\r\n    var cProps = this.contextData.cTr.props;\r\n    this.transformMat.transform(cProps[0], cProps[1], cProps[2], cProps[3], cProps[4], cProps[5], cProps[6], cProps[7], cProps[8], cProps[9], cProps[10], cProps[11], cProps[12], cProps[13], cProps[14], cProps[15]); // this.contextData.cTr.transform(props[0],props[1],props[2],props[3],props[4],props[5],props[6],props[7],props[8],props[9],props[10],props[11],props[12],props[13],props[14],props[15]);\r\n\r\n    this.contextData.cTr.cloneFromProps(this.transformMat.props);\r\n    var trProps = this.contextData.cTr.props;\r\n    this.canvasContext.setTransform(trProps[0], trProps[1], trProps[4], trProps[5], trProps[12], trProps[13]);\r\n  };\r\n\r\n  CanvasRendererBase.prototype.ctxOpacity = function (op) {\r\n    /* if(op === 1){\r\n          return;\r\n      } */\r\n    if (!this.renderConfig.clearCanvas) {\r\n      this.canvasContext.globalAlpha *= op < 0 ? 0 : op;\r\n      this.globalData.currentGlobalAlpha = this.contextData.cO;\r\n      return;\r\n    }\r\n\r\n    this.contextData.cO *= op < 0 ? 0 : op;\r\n\r\n    if (this.globalData.currentGlobalAlpha !== this.contextData.cO) {\r\n      this.canvasContext.globalAlpha = this.contextData.cO;\r\n      this.globalData.currentGlobalAlpha = this.contextData.cO;\r\n    }\r\n  };\r\n\r\n  CanvasRendererBase.prototype.reset = function () {\r\n    if (!this.renderConfig.clearCanvas) {\r\n      this.canvasContext.restore();\r\n      return;\r\n    }\r\n\r\n    this.contextData.reset();\r\n  };\r\n\r\n  CanvasRendererBase.prototype.save = function (actionFlag) {\r\n    if (!this.renderConfig.clearCanvas) {\r\n      this.canvasContext.save();\r\n      return;\r\n    }\r\n\r\n    if (actionFlag) {\r\n      this.canvasContext.save();\r\n    }\r\n\r\n    var props = this.contextData.cTr.props;\r\n\r\n    if (this.contextData._length <= this.contextData.cArrPos) {\r\n      this.contextData.duplicate();\r\n    }\r\n\r\n    var i;\r\n    var arr = this.contextData.saved[this.contextData.cArrPos];\r\n\r\n    for (i = 0; i < 16; i += 1) {\r\n      arr[i] = props[i];\r\n    }\r\n\r\n    this.contextData.savedOp[this.contextData.cArrPos] = this.contextData.cO;\r\n    this.contextData.cArrPos += 1;\r\n  };\r\n\r\n  CanvasRendererBase.prototype.restore = function (actionFlag) {\r\n    if (!this.renderConfig.clearCanvas) {\r\n      this.canvasContext.restore();\r\n      return;\r\n    }\r\n\r\n    if (actionFlag) {\r\n      this.canvasContext.restore();\r\n      this.globalData.blendMode = 'source-over';\r\n    }\r\n\r\n    this.contextData.cArrPos -= 1;\r\n    var popped = this.contextData.saved[this.contextData.cArrPos];\r\n    var i;\r\n    var arr = this.contextData.cTr.props;\r\n\r\n    for (i = 0; i < 16; i += 1) {\r\n      arr[i] = popped[i];\r\n    }\r\n\r\n    this.canvasContext.setTransform(popped[0], popped[1], popped[4], popped[5], popped[12], popped[13]);\r\n    popped = this.contextData.savedOp[this.contextData.cArrPos];\r\n    this.contextData.cO = popped;\r\n\r\n    if (this.globalData.currentGlobalAlpha !== popped) {\r\n      this.canvasContext.globalAlpha = popped;\r\n      this.globalData.currentGlobalAlpha = popped;\r\n    }\r\n  };\r\n\r\n  CanvasRendererBase.prototype.configAnimation = function (animData) {\r\n    if (this.animationItem.wrapper) {\r\n      this.animationItem.container = createTag('canvas');\r\n      var containerStyle = this.animationItem.container.style;\r\n      containerStyle.width = '100%';\r\n      containerStyle.height = '100%';\r\n      var origin = '0px 0px 0px';\r\n      containerStyle.transformOrigin = origin;\r\n      containerStyle.mozTransformOrigin = origin;\r\n      containerStyle.webkitTransformOrigin = origin;\r\n      containerStyle['-webkit-transform'] = origin;\r\n      containerStyle.contentVisibility = this.renderConfig.contentVisibility;\r\n      this.animationItem.wrapper.appendChild(this.animationItem.container);\r\n      this.canvasContext = this.animationItem.container.getContext('2d');\r\n\r\n      if (this.renderConfig.className) {\r\n        this.animationItem.container.setAttribute('class', this.renderConfig.className);\r\n      }\r\n\r\n      if (this.renderConfig.id) {\r\n        this.animationItem.container.setAttribute('id', this.renderConfig.id);\r\n      }\r\n    } else {\r\n      this.canvasContext = this.renderConfig.context;\r\n    }\r\n\r\n    this.data = animData;\r\n    this.layers = animData.layers;\r\n    this.transformCanvas = {\r\n      w: animData.w,\r\n      h: animData.h,\r\n      sx: 0,\r\n      sy: 0,\r\n      tx: 0,\r\n      ty: 0\r\n    };\r\n    this.setupGlobalData(animData, document.body);\r\n    this.globalData.canvasContext = this.canvasContext;\r\n    this.globalData.renderer = this;\r\n    this.globalData.isDashed = false;\r\n    this.globalData.progressiveLoad = this.renderConfig.progressiveLoad;\r\n    this.globalData.transformCanvas = this.transformCanvas;\r\n    this.elements = createSizedArray(animData.layers.length);\r\n    this.updateContainerSize();\r\n  };\r\n\r\n  CanvasRendererBase.prototype.updateContainerSize = function (width, height) {\r\n    this.reset();\r\n    var elementWidth;\r\n    var elementHeight;\r\n\r\n    if (width) {\r\n      elementWidth = width;\r\n      elementHeight = height;\r\n      this.canvasContext.canvas.width = elementWidth;\r\n      this.canvasContext.canvas.height = elementHeight;\r\n    } else {\r\n      if (this.animationItem.wrapper && this.animationItem.container) {\r\n        elementWidth = this.animationItem.wrapper.offsetWidth;\r\n        elementHeight = this.animationItem.wrapper.offsetHeight;\r\n      } else {\r\n        elementWidth = this.canvasContext.canvas.width;\r\n        elementHeight = this.canvasContext.canvas.height;\r\n      }\r\n\r\n      this.canvasContext.canvas.width = elementWidth * this.renderConfig.dpr;\r\n      this.canvasContext.canvas.height = elementHeight * this.renderConfig.dpr;\r\n    }\r\n\r\n    var elementRel;\r\n    var animationRel;\r\n\r\n    if (this.renderConfig.preserveAspectRatio.indexOf('meet') !== -1 || this.renderConfig.preserveAspectRatio.indexOf('slice') !== -1) {\r\n      var par = this.renderConfig.preserveAspectRatio.split(' ');\r\n      var fillType = par[1] || 'meet';\r\n      var pos = par[0] || 'xMidYMid';\r\n      var xPos = pos.substr(0, 4);\r\n      var yPos = pos.substr(4);\r\n      elementRel = elementWidth / elementHeight;\r\n      animationRel = this.transformCanvas.w / this.transformCanvas.h;\r\n\r\n      if (animationRel > elementRel && fillType === 'meet' || animationRel < elementRel && fillType === 'slice') {\r\n        this.transformCanvas.sx = elementWidth / (this.transformCanvas.w / this.renderConfig.dpr);\r\n        this.transformCanvas.sy = elementWidth / (this.transformCanvas.w / this.renderConfig.dpr);\r\n      } else {\r\n        this.transformCanvas.sx = elementHeight / (this.transformCanvas.h / this.renderConfig.dpr);\r\n        this.transformCanvas.sy = elementHeight / (this.transformCanvas.h / this.renderConfig.dpr);\r\n      }\r\n\r\n      if (xPos === 'xMid' && (animationRel < elementRel && fillType === 'meet' || animationRel > elementRel && fillType === 'slice')) {\r\n        this.transformCanvas.tx = (elementWidth - this.transformCanvas.w * (elementHeight / this.transformCanvas.h)) / 2 * this.renderConfig.dpr;\r\n      } else if (xPos === 'xMax' && (animationRel < elementRel && fillType === 'meet' || animationRel > elementRel && fillType === 'slice')) {\r\n        this.transformCanvas.tx = (elementWidth - this.transformCanvas.w * (elementHeight / this.transformCanvas.h)) * this.renderConfig.dpr;\r\n      } else {\r\n        this.transformCanvas.tx = 0;\r\n      }\r\n\r\n      if (yPos === 'YMid' && (animationRel > elementRel && fillType === 'meet' || animationRel < elementRel && fillType === 'slice')) {\r\n        this.transformCanvas.ty = (elementHeight - this.transformCanvas.h * (elementWidth / this.transformCanvas.w)) / 2 * this.renderConfig.dpr;\r\n      } else if (yPos === 'YMax' && (animationRel > elementRel && fillType === 'meet' || animationRel < elementRel && fillType === 'slice')) {\r\n        this.transformCanvas.ty = (elementHeight - this.transformCanvas.h * (elementWidth / this.transformCanvas.w)) * this.renderConfig.dpr;\r\n      } else {\r\n        this.transformCanvas.ty = 0;\r\n      }\r\n    } else if (this.renderConfig.preserveAspectRatio === 'none') {\r\n      this.transformCanvas.sx = elementWidth / (this.transformCanvas.w / this.renderConfig.dpr);\r\n      this.transformCanvas.sy = elementHeight / (this.transformCanvas.h / this.renderConfig.dpr);\r\n      this.transformCanvas.tx = 0;\r\n      this.transformCanvas.ty = 0;\r\n    } else {\r\n      this.transformCanvas.sx = this.renderConfig.dpr;\r\n      this.transformCanvas.sy = this.renderConfig.dpr;\r\n      this.transformCanvas.tx = 0;\r\n      this.transformCanvas.ty = 0;\r\n    }\r\n\r\n    this.transformCanvas.props = [this.transformCanvas.sx, 0, 0, 0, 0, this.transformCanvas.sy, 0, 0, 0, 0, 1, 0, this.transformCanvas.tx, this.transformCanvas.ty, 0, 1];\r\n    /* var i, len = this.elements.length;\r\n      for(i=0;i<len;i+=1){\r\n          if(this.elements[i] && this.elements[i].data.ty === 0){\r\n              this.elements[i].resize(this.globalData.transformCanvas);\r\n          }\r\n      } */\r\n\r\n    this.ctxTransform(this.transformCanvas.props);\r\n    this.canvasContext.beginPath();\r\n    this.canvasContext.rect(0, 0, this.transformCanvas.w, this.transformCanvas.h);\r\n    this.canvasContext.closePath();\r\n    this.canvasContext.clip();\r\n    this.renderFrame(this.renderedFrame, true);\r\n  };\r\n\r\n  CanvasRendererBase.prototype.destroy = function () {\r\n    if (this.renderConfig.clearCanvas && this.animationItem.wrapper) {\r\n      this.animationItem.wrapper.innerText = '';\r\n    }\r\n\r\n    var i;\r\n    var len = this.layers ? this.layers.length : 0;\r\n\r\n    for (i = len - 1; i >= 0; i -= 1) {\r\n      if (this.elements[i]) {\r\n        this.elements[i].destroy();\r\n      }\r\n    }\r\n\r\n    this.elements.length = 0;\r\n    this.globalData.canvasContext = null;\r\n    this.animationItem.container = null;\r\n    this.destroyed = true;\r\n  };\r\n\r\n  CanvasRendererBase.prototype.renderFrame = function (num, forceRender) {\r\n    if (this.renderedFrame === num && this.renderConfig.clearCanvas === true && !forceRender || this.destroyed || num === -1) {\r\n      return;\r\n    }\r\n\r\n    this.renderedFrame = num;\r\n    this.globalData.frameNum = num - this.animationItem._isFirstFrame;\r\n    this.globalData.frameId += 1;\r\n    this.globalData._mdf = !this.renderConfig.clearCanvas || forceRender;\r\n    this.globalData.projectInterface.currentFrame = num; // console.log('--------');\r\n    // console.log('NEW: ',num);\r\n\r\n    var i;\r\n    var len = this.layers.length;\r\n\r\n    if (!this.completeLayers) {\r\n      this.checkLayers(num);\r\n    }\r\n\r\n    for (i = 0; i < len; i += 1) {\r\n      if (this.completeLayers || this.elements[i]) {\r\n        this.elements[i].prepareFrame(num - this.layers[i].st);\r\n      }\r\n    }\r\n\r\n    if (this.globalData._mdf) {\r\n      if (this.renderConfig.clearCanvas === true) {\r\n        this.canvasContext.clearRect(0, 0, this.transformCanvas.w, this.transformCanvas.h);\r\n      } else {\r\n        this.save();\r\n      }\r\n\r\n      for (i = len - 1; i >= 0; i -= 1) {\r\n        if (this.completeLayers || this.elements[i]) {\r\n          this.elements[i].renderFrame();\r\n        }\r\n      }\r\n\r\n      if (this.renderConfig.clearCanvas !== true) {\r\n        this.restore();\r\n      }\r\n    }\r\n  };\r\n\r\n  CanvasRendererBase.prototype.buildItem = function (pos) {\r\n    var elements = this.elements;\r\n\r\n    if (elements[pos] || this.layers[pos].ty === 99) {\r\n      return;\r\n    }\r\n\r\n    var element = this.createItem(this.layers[pos], this, this.globalData);\r\n    elements[pos] = element;\r\n    element.initExpressions();\r\n    /* if(this.layers[pos].ty === 0){\r\n          element.resize(this.globalData.transformCanvas);\r\n      } */\r\n  };\r\n\r\n  CanvasRendererBase.prototype.checkPendingElements = function () {\r\n    while (this.pendingElements.length) {\r\n      var element = this.pendingElements.pop();\r\n      element.checkParenting();\r\n    }\r\n  };\r\n\r\n  CanvasRendererBase.prototype.hide = function () {\r\n    this.animationItem.container.style.display = 'none';\r\n  };\r\n\r\n  CanvasRendererBase.prototype.show = function () {\r\n    this.animationItem.container.style.display = 'block';\r\n  };\r\n\r\n  function CVCompElement(data, globalData, comp) {\r\n    this.completeLayers = false;\r\n    this.layers = data.layers;\r\n    this.pendingElements = [];\r\n    this.elements = createSizedArray(this.layers.length);\r\n    this.initElement(data, globalData, comp);\r\n    this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : {\r\n      _placeholder: true\r\n    };\r\n  }\r\n\r\n  extendPrototype([CanvasRendererBase, ICompElement, CVBaseElement], CVCompElement);\r\n\r\n  CVCompElement.prototype.renderInnerContent = function () {\r\n    var ctx = this.canvasContext;\r\n    ctx.beginPath();\r\n    ctx.moveTo(0, 0);\r\n    ctx.lineTo(this.data.w, 0);\r\n    ctx.lineTo(this.data.w, this.data.h);\r\n    ctx.lineTo(0, this.data.h);\r\n    ctx.lineTo(0, 0);\r\n    ctx.clip();\r\n    var i;\r\n    var len = this.layers.length;\r\n\r\n    for (i = len - 1; i >= 0; i -= 1) {\r\n      if (this.completeLayers || this.elements[i]) {\r\n        this.elements[i].renderFrame();\r\n      }\r\n    }\r\n  };\r\n\r\n  CVCompElement.prototype.destroy = function () {\r\n    var i;\r\n    var len = this.layers.length;\r\n\r\n    for (i = len - 1; i >= 0; i -= 1) {\r\n      if (this.elements[i]) {\r\n        this.elements[i].destroy();\r\n      }\r\n    }\r\n\r\n    this.layers = null;\r\n    this.elements = null;\r\n  };\r\n\r\n  CVCompElement.prototype.createComp = function (data) {\r\n    return new CVCompElement(data, this.globalData, this);\r\n  };\r\n\r\n  function CanvasRenderer(animationItem, config) {\r\n    this.animationItem = animationItem;\r\n    this.renderConfig = {\r\n      clearCanvas: config && config.clearCanvas !== undefined ? config.clearCanvas : true,\r\n      context: config && config.context || null,\r\n      progressiveLoad: config && config.progressiveLoad || false,\r\n      preserveAspectRatio: config && config.preserveAspectRatio || 'xMidYMid meet',\r\n      imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || 'xMidYMid slice',\r\n      contentVisibility: config && config.contentVisibility || 'visible',\r\n      className: config && config.className || '',\r\n      id: config && config.id || '',\r\n      runExpressions: !config || config.runExpressions === undefined || config.runExpressions\r\n    };\r\n    this.renderConfig.dpr = config && config.dpr || 1;\r\n\r\n    if (this.animationItem.wrapper) {\r\n      this.renderConfig.dpr = config && config.dpr || window.devicePixelRatio || 1;\r\n    }\r\n\r\n    this.renderedFrame = -1;\r\n    this.globalData = {\r\n      frameNum: -1,\r\n      _mdf: false,\r\n      renderConfig: this.renderConfig,\r\n      currentGlobalAlpha: -1\r\n    };\r\n    this.contextData = new CVContextData();\r\n    this.elements = [];\r\n    this.pendingElements = [];\r\n    this.transformMat = new Matrix();\r\n    this.completeLayers = false;\r\n    this.rendererType = 'canvas';\r\n  }\r\n\r\n  extendPrototype([CanvasRendererBase], CanvasRenderer);\r\n\r\n  CanvasRenderer.prototype.createComp = function (data) {\r\n    return new CVCompElement(data, this.globalData, this);\r\n  };\r\n\r\n  function HBaseElement() {}\r\n\r\n  HBaseElement.prototype = {\r\n    checkBlendMode: function checkBlendMode() {},\r\n    initRendererElement: function initRendererElement() {\r\n      this.baseElement = createTag(this.data.tg || 'div');\r\n\r\n      if (this.data.hasMask) {\r\n        this.svgElement = createNS('svg');\r\n        this.layerElement = createNS('g');\r\n        this.maskedElement = this.layerElement;\r\n        this.svgElement.appendChild(this.layerElement);\r\n        this.baseElement.appendChild(this.svgElement);\r\n      } else {\r\n        this.layerElement = this.baseElement;\r\n      }\r\n\r\n      styleDiv(this.baseElement);\r\n    },\r\n    createContainerElements: function createContainerElements() {\r\n      this.renderableEffectsManager = new CVEffects(this);\r\n      this.transformedElement = this.baseElement;\r\n      this.maskedElement = this.layerElement;\r\n\r\n      if (this.data.ln) {\r\n        this.layerElement.setAttribute('id', this.data.ln);\r\n      }\r\n\r\n      if (this.data.cl) {\r\n        this.layerElement.setAttribute('class', this.data.cl);\r\n      }\r\n\r\n      if (this.data.bm !== 0) {\r\n        this.setBlendMode();\r\n      }\r\n    },\r\n    renderElement: function renderElement() {\r\n      var transformedElementStyle = this.transformedElement ? this.transformedElement.style : {};\r\n\r\n      if (this.finalTransform._matMdf) {\r\n        var matrixValue = this.finalTransform.mat.toCSS();\r\n        transformedElementStyle.transform = matrixValue;\r\n        transformedElementStyle.webkitTransform = matrixValue;\r\n      }\r\n\r\n      if (this.finalTransform._opMdf) {\r\n        transformedElementStyle.opacity = this.finalTransform.mProp.o.v;\r\n      }\r\n    },\r\n    renderFrame: function renderFrame() {\r\n      // If it is exported as hidden (data.hd === true) no need to render\r\n      // If it is not visible no need to render\r\n      if (this.data.hd || this.hidden) {\r\n        return;\r\n      }\r\n\r\n      this.renderTransform();\r\n      this.renderRenderable();\r\n      this.renderElement();\r\n      this.renderInnerContent();\r\n\r\n      if (this._isFirstFrame) {\r\n        this._isFirstFrame = false;\r\n      }\r\n    },\r\n    destroy: function destroy() {\r\n      this.layerElement = null;\r\n      this.transformedElement = null;\r\n\r\n      if (this.matteElement) {\r\n        this.matteElement = null;\r\n      }\r\n\r\n      if (this.maskManager) {\r\n        this.maskManager.destroy();\r\n        this.maskManager = null;\r\n      }\r\n    },\r\n    createRenderableComponents: function createRenderableComponents() {\r\n      this.maskManager = new MaskElement(this.data, this, this.globalData);\r\n    },\r\n    addEffects: function addEffects() {},\r\n    setMatte: function setMatte() {}\r\n  };\r\n  HBaseElement.prototype.getBaseElement = SVGBaseElement.prototype.getBaseElement;\r\n  HBaseElement.prototype.destroyBaseElement = HBaseElement.prototype.destroy;\r\n  HBaseElement.prototype.buildElementParenting = BaseRenderer.prototype.buildElementParenting;\r\n\r\n  function HSolidElement(data, globalData, comp) {\r\n    this.initElement(data, globalData, comp);\r\n  }\r\n\r\n  extendPrototype([BaseElement, TransformElement, HBaseElement, HierarchyElement, FrameElement, RenderableDOMElement], HSolidElement);\r\n\r\n  HSolidElement.prototype.createContent = function () {\r\n    var rect;\r\n\r\n    if (this.data.hasMask) {\r\n      rect = createNS('rect');\r\n      rect.setAttribute('width', this.data.sw);\r\n      rect.setAttribute('height', this.data.sh);\r\n      rect.setAttribute('fill', this.data.sc);\r\n      this.svgElement.setAttribute('width', this.data.sw);\r\n      this.svgElement.setAttribute('height', this.data.sh);\r\n    } else {\r\n      rect = createTag('div');\r\n      rect.style.width = this.data.sw + 'px';\r\n      rect.style.height = this.data.sh + 'px';\r\n      rect.style.backgroundColor = this.data.sc;\r\n    }\r\n\r\n    this.layerElement.appendChild(rect);\r\n  };\r\n\r\n  function HShapeElement(data, globalData, comp) {\r\n    // List of drawable elements\r\n    this.shapes = []; // Full shape data\r\n\r\n    this.shapesData = data.shapes; // List of styles that will be applied to shapes\r\n\r\n    this.stylesList = []; // List of modifiers that will be applied to shapes\r\n\r\n    this.shapeModifiers = []; // List of items in shape tree\r\n\r\n    this.itemsData = []; // List of items in previous shape tree\r\n\r\n    this.processedElements = []; // List of animated components\r\n\r\n    this.animatedContents = [];\r\n    this.shapesContainer = createNS('g');\r\n    this.initElement(data, globalData, comp); // Moving any property that doesn't get too much access after initialization because of v8 way of handling more than 10 properties.\r\n    // List of elements that have been created\r\n\r\n    this.prevViewData = [];\r\n    this.currentBBox = {\r\n      x: 999999,\r\n      y: -999999,\r\n      h: 0,\r\n      w: 0\r\n    };\r\n  }\r\n\r\n  extendPrototype([BaseElement, TransformElement, HSolidElement, SVGShapeElement, HBaseElement, HierarchyElement, FrameElement, RenderableElement], HShapeElement);\r\n  HShapeElement.prototype._renderShapeFrame = HShapeElement.prototype.renderInnerContent;\r\n\r\n  HShapeElement.prototype.createContent = function () {\r\n    var cont;\r\n    this.baseElement.style.fontSize = 0;\r\n\r\n    if (this.data.hasMask) {\r\n      this.layerElement.appendChild(this.shapesContainer);\r\n      cont = this.svgElement;\r\n    } else {\r\n      cont = createNS('svg');\r\n      var size = this.comp.data ? this.comp.data : this.globalData.compSize;\r\n      cont.setAttribute('width', size.w);\r\n      cont.setAttribute('height', size.h);\r\n      cont.appendChild(this.shapesContainer);\r\n      this.layerElement.appendChild(cont);\r\n    }\r\n\r\n    this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.shapesContainer, 0, [], true);\r\n    this.filterUniqueShapes();\r\n    this.shapeCont = cont;\r\n  };\r\n\r\n  HShapeElement.prototype.getTransformedPoint = function (transformers, point) {\r\n    var i;\r\n    var len = transformers.length;\r\n\r\n    for (i = 0; i < len; i += 1) {\r\n      point = transformers[i].mProps.v.applyToPointArray(point[0], point[1], 0);\r\n    }\r\n\r\n    return point;\r\n  };\r\n\r\n  HShapeElement.prototype.calculateShapeBoundingBox = function (item, boundingBox) {\r\n    var shape = item.sh.v;\r\n    var transformers = item.transformers;\r\n    var i;\r\n    var len = shape._length;\r\n    var vPoint;\r\n    var oPoint;\r\n    var nextIPoint;\r\n    var nextVPoint;\r\n\r\n    if (len <= 1) {\r\n      return;\r\n    }\r\n\r\n    for (i = 0; i < len - 1; i += 1) {\r\n      vPoint = this.getTransformedPoint(transformers, shape.v[i]);\r\n      oPoint = this.getTransformedPoint(transformers, shape.o[i]);\r\n      nextIPoint = this.getTransformedPoint(transformers, shape.i[i + 1]);\r\n      nextVPoint = this.getTransformedPoint(transformers, shape.v[i + 1]);\r\n      this.checkBounds(vPoint, oPoint, nextIPoint, nextVPoint, boundingBox);\r\n    }\r\n\r\n    if (shape.c) {\r\n      vPoint = this.getTransformedPoint(transformers, shape.v[i]);\r\n      oPoint = this.getTransformedPoint(transformers, shape.o[i]);\r\n      nextIPoint = this.getTransformedPoint(transformers, shape.i[0]);\r\n      nextVPoint = this.getTransformedPoint(transformers, shape.v[0]);\r\n      this.checkBounds(vPoint, oPoint, nextIPoint, nextVPoint, boundingBox);\r\n    }\r\n  };\r\n\r\n  HShapeElement.prototype.checkBounds = function (vPoint, oPoint, nextIPoint, nextVPoint, boundingBox) {\r\n    this.getBoundsOfCurve(vPoint, oPoint, nextIPoint, nextVPoint);\r\n    var bounds = this.shapeBoundingBox;\r\n    boundingBox.x = bmMin(bounds.left, boundingBox.x);\r\n    boundingBox.xMax = bmMax(bounds.right, boundingBox.xMax);\r\n    boundingBox.y = bmMin(bounds.top, boundingBox.y);\r\n    boundingBox.yMax = bmMax(bounds.bottom, boundingBox.yMax);\r\n  };\r\n\r\n  HShapeElement.prototype.shapeBoundingBox = {\r\n    left: 0,\r\n    right: 0,\r\n    top: 0,\r\n    bottom: 0\r\n  };\r\n  HShapeElement.prototype.tempBoundingBox = {\r\n    x: 0,\r\n    xMax: 0,\r\n    y: 0,\r\n    yMax: 0,\r\n    width: 0,\r\n    height: 0\r\n  };\r\n\r\n  HShapeElement.prototype.getBoundsOfCurve = function (p0, p1, p2, p3) {\r\n    var bounds = [[p0[0], p3[0]], [p0[1], p3[1]]];\r\n\r\n    for (var a, b, c, t, b2ac, t1, t2, i = 0; i < 2; ++i) {\r\n      // eslint-disable-line no-plusplus\r\n      b = 6 * p0[i] - 12 * p1[i] + 6 * p2[i];\r\n      a = -3 * p0[i] + 9 * p1[i] - 9 * p2[i] + 3 * p3[i];\r\n      c = 3 * p1[i] - 3 * p0[i];\r\n      b |= 0; // eslint-disable-line no-bitwise\r\n\r\n      a |= 0; // eslint-disable-line no-bitwise\r\n\r\n      c |= 0; // eslint-disable-line no-bitwise\r\n\r\n      if (a === 0 && b === 0) {//\r\n      } else if (a === 0) {\r\n        t = -c / b;\r\n\r\n        if (t > 0 && t < 1) {\r\n          bounds[i].push(this.calculateF(t, p0, p1, p2, p3, i));\r\n        }\r\n      } else {\r\n        b2ac = b * b - 4 * c * a;\r\n\r\n        if (b2ac >= 0) {\r\n          t1 = (-b + bmSqrt(b2ac)) / (2 * a);\r\n          if (t1 > 0 && t1 < 1) bounds[i].push(this.calculateF(t1, p0, p1, p2, p3, i));\r\n          t2 = (-b - bmSqrt(b2ac)) / (2 * a);\r\n          if (t2 > 0 && t2 < 1) bounds[i].push(this.calculateF(t2, p0, p1, p2, p3, i));\r\n        }\r\n      }\r\n    }\r\n\r\n    this.shapeBoundingBox.left = bmMin.apply(null, bounds[0]);\r\n    this.shapeBoundingBox.top = bmMin.apply(null, bounds[1]);\r\n    this.shapeBoundingBox.right = bmMax.apply(null, bounds[0]);\r\n    this.shapeBoundingBox.bottom = bmMax.apply(null, bounds[1]);\r\n  };\r\n\r\n  HShapeElement.prototype.calculateF = function (t, p0, p1, p2, p3, i) {\r\n    return bmPow(1 - t, 3) * p0[i] + 3 * bmPow(1 - t, 2) * t * p1[i] + 3 * (1 - t) * bmPow(t, 2) * p2[i] + bmPow(t, 3) * p3[i];\r\n  };\r\n\r\n  HShapeElement.prototype.calculateBoundingBox = function (itemsData, boundingBox) {\r\n    var i;\r\n    var len = itemsData.length;\r\n\r\n    for (i = 0; i < len; i += 1) {\r\n      if (itemsData[i] && itemsData[i].sh) {\r\n        this.calculateShapeBoundingBox(itemsData[i], boundingBox);\r\n      } else if (itemsData[i] && itemsData[i].it) {\r\n        this.calculateBoundingBox(itemsData[i].it, boundingBox);\r\n      } else if (itemsData[i] && itemsData[i].style && itemsData[i].w) {\r\n        this.expandStrokeBoundingBox(itemsData[i].w, boundingBox);\r\n      }\r\n    }\r\n  };\r\n\r\n  HShapeElement.prototype.expandStrokeBoundingBox = function (widthProperty, boundingBox) {\r\n    var width = 0;\r\n\r\n    if (widthProperty.keyframes) {\r\n      for (var i = 0; i < widthProperty.keyframes.length; i += 1) {\r\n        var kfw = widthProperty.keyframes[i].s;\r\n\r\n        if (kfw > width) {\r\n          width = kfw;\r\n        }\r\n      }\r\n\r\n      width *= widthProperty.mult;\r\n    } else {\r\n      width = widthProperty.v * widthProperty.mult;\r\n    }\r\n\r\n    boundingBox.x -= width;\r\n    boundingBox.xMax += width;\r\n    boundingBox.y -= width;\r\n    boundingBox.yMax += width;\r\n  };\r\n\r\n  HShapeElement.prototype.currentBoxContains = function (box) {\r\n    return this.currentBBox.x <= box.x && this.currentBBox.y <= box.y && this.currentBBox.width + this.currentBBox.x >= box.x + box.width && this.currentBBox.height + this.currentBBox.y >= box.y + box.height;\r\n  };\r\n\r\n  HShapeElement.prototype.renderInnerContent = function () {\r\n    this._renderShapeFrame();\r\n\r\n    if (!this.hidden && (this._isFirstFrame || this._mdf)) {\r\n      var tempBoundingBox = this.tempBoundingBox;\r\n      var max = 999999;\r\n      tempBoundingBox.x = max;\r\n      tempBoundingBox.xMax = -max;\r\n      tempBoundingBox.y = max;\r\n      tempBoundingBox.yMax = -max;\r\n      this.calculateBoundingBox(this.itemsData, tempBoundingBox);\r\n      tempBoundingBox.width = tempBoundingBox.xMax < tempBoundingBox.x ? 0 : tempBoundingBox.xMax - tempBoundingBox.x;\r\n      tempBoundingBox.height = tempBoundingBox.yMax < tempBoundingBox.y ? 0 : tempBoundingBox.yMax - tempBoundingBox.y; // var tempBoundingBox = this.shapeCont.getBBox();\r\n\r\n      if (this.currentBoxContains(tempBoundingBox)) {\r\n        return;\r\n      }\r\n\r\n      var changed = false;\r\n\r\n      if (this.currentBBox.w !== tempBoundingBox.width) {\r\n        this.currentBBox.w = tempBoundingBox.width;\r\n        this.shapeCont.setAttribute('width', tempBoundingBox.width);\r\n        changed = true;\r\n      }\r\n\r\n      if (this.currentBBox.h !== tempBoundingBox.height) {\r\n        this.currentBBox.h = tempBoundingBox.height;\r\n        this.shapeCont.setAttribute('height', tempBoundingBox.height);\r\n        changed = true;\r\n      }\r\n\r\n      if (changed || this.currentBBox.x !== tempBoundingBox.x || this.currentBBox.y !== tempBoundingBox.y) {\r\n        this.currentBBox.w = tempBoundingBox.width;\r\n        this.currentBBox.h = tempBoundingBox.height;\r\n        this.currentBBox.x = tempBoundingBox.x;\r\n        this.currentBBox.y = tempBoundingBox.y;\r\n        this.shapeCont.setAttribute('viewBox', this.currentBBox.x + ' ' + this.currentBBox.y + ' ' + this.currentBBox.w + ' ' + this.currentBBox.h);\r\n        var shapeStyle = this.shapeCont.style;\r\n        var shapeTransform = 'translate(' + this.currentBBox.x + 'px,' + this.currentBBox.y + 'px)';\r\n        shapeStyle.transform = shapeTransform;\r\n        shapeStyle.webkitTransform = shapeTransform;\r\n      }\r\n    }\r\n  };\r\n\r\n  function HTextElement(data, globalData, comp) {\r\n    this.textSpans = [];\r\n    this.textPaths = [];\r\n    this.currentBBox = {\r\n      x: 999999,\r\n      y: -999999,\r\n      h: 0,\r\n      w: 0\r\n    };\r\n    this.renderType = 'svg';\r\n    this.isMasked = false;\r\n    this.initElement(data, globalData, comp);\r\n  }\r\n\r\n  extendPrototype([BaseElement, TransformElement, HBaseElement, HierarchyElement, FrameElement, RenderableDOMElement, ITextElement], HTextElement);\r\n\r\n  HTextElement.prototype.createContent = function () {\r\n    this.isMasked = this.checkMasks();\r\n\r\n    if (this.isMasked) {\r\n      this.renderType = 'svg';\r\n      this.compW = this.comp.data.w;\r\n      this.compH = this.comp.data.h;\r\n      this.svgElement.setAttribute('width', this.compW);\r\n      this.svgElement.setAttribute('height', this.compH);\r\n      var g = createNS('g');\r\n      this.maskedElement.appendChild(g);\r\n      this.innerElem = g;\r\n    } else {\r\n      this.renderType = 'html';\r\n      this.innerElem = this.layerElement;\r\n    }\r\n\r\n    this.checkParenting();\r\n  };\r\n\r\n  HTextElement.prototype.buildNewText = function () {\r\n    var documentData = this.textProperty.currentData;\r\n    this.renderedLetters = createSizedArray(documentData.l ? documentData.l.length : 0);\r\n    var innerElemStyle = this.innerElem.style;\r\n    var textColor = documentData.fc ? this.buildColor(documentData.fc) : 'rgba(0,0,0,0)';\r\n    innerElemStyle.fill = textColor;\r\n    innerElemStyle.color = textColor;\r\n\r\n    if (documentData.sc) {\r\n      innerElemStyle.stroke = this.buildColor(documentData.sc);\r\n      innerElemStyle.strokeWidth = documentData.sw + 'px';\r\n    }\r\n\r\n    var fontData = this.globalData.fontManager.getFontByName(documentData.f);\r\n\r\n    if (!this.globalData.fontManager.chars) {\r\n      innerElemStyle.fontSize = documentData.finalSize + 'px';\r\n      innerElemStyle.lineHeight = documentData.finalSize + 'px';\r\n\r\n      if (fontData.fClass) {\r\n        this.innerElem.className = fontData.fClass;\r\n      } else {\r\n        innerElemStyle.fontFamily = fontData.fFamily;\r\n        var fWeight = documentData.fWeight;\r\n        var fStyle = documentData.fStyle;\r\n        innerElemStyle.fontStyle = fStyle;\r\n        innerElemStyle.fontWeight = fWeight;\r\n      }\r\n    }\r\n\r\n    var i;\r\n    var len;\r\n    var letters = documentData.l;\r\n    len = letters.length;\r\n    var tSpan;\r\n    var tParent;\r\n    var tCont;\r\n    var matrixHelper = this.mHelper;\r\n    var shapes;\r\n    var shapeStr = '';\r\n    var cnt = 0;\r\n\r\n    for (i = 0; i < len; i += 1) {\r\n      if (this.globalData.fontManager.chars) {\r\n        if (!this.textPaths[cnt]) {\r\n          tSpan = createNS('path');\r\n          tSpan.setAttribute('stroke-linecap', lineCapEnum[1]);\r\n          tSpan.setAttribute('stroke-linejoin', lineJoinEnum[2]);\r\n          tSpan.setAttribute('stroke-miterlimit', '4');\r\n        } else {\r\n          tSpan = this.textPaths[cnt];\r\n        }\r\n\r\n        if (!this.isMasked) {\r\n          if (this.textSpans[cnt]) {\r\n            tParent = this.textSpans[cnt];\r\n            tCont = tParent.children[0];\r\n          } else {\r\n            tParent = createTag('div');\r\n            tParent.style.lineHeight = 0;\r\n            tCont = createNS('svg');\r\n            tCont.appendChild(tSpan);\r\n            styleDiv(tParent);\r\n          }\r\n        }\r\n      } else if (!this.isMasked) {\r\n        if (this.textSpans[cnt]) {\r\n          tParent = this.textSpans[cnt];\r\n          tSpan = this.textPaths[cnt];\r\n        } else {\r\n          tParent = createTag('span');\r\n          styleDiv(tParent);\r\n          tSpan = createTag('span');\r\n          styleDiv(tSpan);\r\n          tParent.appendChild(tSpan);\r\n        }\r\n      } else {\r\n        tSpan = this.textPaths[cnt] ? this.textPaths[cnt] : createNS('text');\r\n      } // tSpan.setAttribute('visibility', 'hidden');\r\n\r\n\r\n      if (this.globalData.fontManager.chars) {\r\n        var charData = this.globalData.fontManager.getCharData(documentData.finalText[i], fontData.fStyle, this.globalData.fontManager.getFontByName(documentData.f).fFamily);\r\n        var shapeData;\r\n\r\n        if (charData) {\r\n          shapeData = charData.data;\r\n        } else {\r\n          shapeData = null;\r\n        }\r\n\r\n        matrixHelper.reset();\r\n\r\n        if (shapeData && shapeData.shapes && shapeData.shapes.length) {\r\n          shapes = shapeData.shapes[0].it;\r\n          matrixHelper.scale(documentData.finalSize / 100, documentData.finalSize / 100);\r\n          shapeStr = this.createPathShape(matrixHelper, shapes);\r\n          tSpan.setAttribute('d', shapeStr);\r\n        }\r\n\r\n        if (!this.isMasked) {\r\n          this.innerElem.appendChild(tParent);\r\n\r\n          if (shapeData && shapeData.shapes) {\r\n            // document.body.appendChild is needed to get exact measure of shape\r\n            document.body.appendChild(tCont);\r\n            var boundingBox = tCont.getBBox();\r\n            tCont.setAttribute('width', boundingBox.width + 2);\r\n            tCont.setAttribute('height', boundingBox.height + 2);\r\n            tCont.setAttribute('viewBox', boundingBox.x - 1 + ' ' + (boundingBox.y - 1) + ' ' + (boundingBox.width + 2) + ' ' + (boundingBox.height + 2));\r\n            var tContStyle = tCont.style;\r\n            var tContTranslation = 'translate(' + (boundingBox.x - 1) + 'px,' + (boundingBox.y - 1) + 'px)';\r\n            tContStyle.transform = tContTranslation;\r\n            tContStyle.webkitTransform = tContTranslation;\r\n            letters[i].yOffset = boundingBox.y - 1;\r\n          } else {\r\n            tCont.setAttribute('width', 1);\r\n            tCont.setAttribute('height', 1);\r\n          }\r\n\r\n          tParent.appendChild(tCont);\r\n        } else {\r\n          this.innerElem.appendChild(tSpan);\r\n        }\r\n      } else {\r\n        tSpan.textContent = letters[i].val;\r\n        tSpan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\r\n\r\n        if (!this.isMasked) {\r\n          this.innerElem.appendChild(tParent); //\r\n\r\n          var tStyle = tSpan.style;\r\n          var tSpanTranslation = 'translate3d(0,' + -documentData.finalSize / 1.2 + 'px,0)';\r\n          tStyle.transform = tSpanTranslation;\r\n          tStyle.webkitTransform = tSpanTranslation;\r\n        } else {\r\n          this.innerElem.appendChild(tSpan);\r\n        }\r\n      } //\r\n\r\n\r\n      if (!this.isMasked) {\r\n        this.textSpans[cnt] = tParent;\r\n      } else {\r\n        this.textSpans[cnt] = tSpan;\r\n      }\r\n\r\n      this.textSpans[cnt].style.display = 'block';\r\n      this.textPaths[cnt] = tSpan;\r\n      cnt += 1;\r\n    }\r\n\r\n    while (cnt < this.textSpans.length) {\r\n      this.textSpans[cnt].style.display = 'none';\r\n      cnt += 1;\r\n    }\r\n  };\r\n\r\n  HTextElement.prototype.renderInnerContent = function () {\r\n    var svgStyle;\r\n\r\n    if (this.data.singleShape) {\r\n      if (!this._isFirstFrame && !this.lettersChangedFlag) {\r\n        return;\r\n      }\r\n\r\n      if (this.isMasked && this.finalTransform._matMdf) {\r\n        // Todo Benchmark if using this is better than getBBox\r\n        this.svgElement.setAttribute('viewBox', -this.finalTransform.mProp.p.v[0] + ' ' + -this.finalTransform.mProp.p.v[1] + ' ' + this.compW + ' ' + this.compH);\r\n        svgStyle = this.svgElement.style;\r\n        var translation = 'translate(' + -this.finalTransform.mProp.p.v[0] + 'px,' + -this.finalTransform.mProp.p.v[1] + 'px)';\r\n        svgStyle.transform = translation;\r\n        svgStyle.webkitTransform = translation;\r\n      }\r\n    }\r\n\r\n    this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);\r\n\r\n    if (!this.lettersChangedFlag && !this.textAnimator.lettersChangedFlag) {\r\n      return;\r\n    }\r\n\r\n    var i;\r\n    var len;\r\n    var count = 0;\r\n    var renderedLetters = this.textAnimator.renderedLetters;\r\n    var letters = this.textProperty.currentData.l;\r\n    len = letters.length;\r\n    var renderedLetter;\r\n    var textSpan;\r\n    var textPath;\r\n\r\n    for (i = 0; i < len; i += 1) {\r\n      if (letters[i].n) {\r\n        count += 1;\r\n      } else {\r\n        textSpan = this.textSpans[i];\r\n        textPath = this.textPaths[i];\r\n        renderedLetter = renderedLetters[count];\r\n        count += 1;\r\n\r\n        if (renderedLetter._mdf.m) {\r\n          if (!this.isMasked) {\r\n            textSpan.style.webkitTransform = renderedLetter.m;\r\n            textSpan.style.transform = renderedLetter.m;\r\n          } else {\r\n            textSpan.setAttribute('transform', renderedLetter.m);\r\n          }\r\n        } /// /textSpan.setAttribute('opacity',renderedLetter.o);\r\n\r\n\r\n        textSpan.style.opacity = renderedLetter.o;\r\n\r\n        if (renderedLetter.sw && renderedLetter._mdf.sw) {\r\n          textPath.setAttribute('stroke-width', renderedLetter.sw);\r\n        }\r\n\r\n        if (renderedLetter.sc && renderedLetter._mdf.sc) {\r\n          textPath.setAttribute('stroke', renderedLetter.sc);\r\n        }\r\n\r\n        if (renderedLetter.fc && renderedLetter._mdf.fc) {\r\n          textPath.setAttribute('fill', renderedLetter.fc);\r\n          textPath.style.color = renderedLetter.fc;\r\n        }\r\n      }\r\n    }\r\n\r\n    if (this.innerElem.getBBox && !this.hidden && (this._isFirstFrame || this._mdf)) {\r\n      var boundingBox = this.innerElem.getBBox();\r\n\r\n      if (this.currentBBox.w !== boundingBox.width) {\r\n        this.currentBBox.w = boundingBox.width;\r\n        this.svgElement.setAttribute('width', boundingBox.width);\r\n      }\r\n\r\n      if (this.currentBBox.h !== boundingBox.height) {\r\n        this.currentBBox.h = boundingBox.height;\r\n        this.svgElement.setAttribute('height', boundingBox.height);\r\n      }\r\n\r\n      var margin = 1;\r\n\r\n      if (this.currentBBox.w !== boundingBox.width + margin * 2 || this.currentBBox.h !== boundingBox.height + margin * 2 || this.currentBBox.x !== boundingBox.x - margin || this.currentBBox.y !== boundingBox.y - margin) {\r\n        this.currentBBox.w = boundingBox.width + margin * 2;\r\n        this.currentBBox.h = boundingBox.height + margin * 2;\r\n        this.currentBBox.x = boundingBox.x - margin;\r\n        this.currentBBox.y = boundingBox.y - margin;\r\n        this.svgElement.setAttribute('viewBox', this.currentBBox.x + ' ' + this.currentBBox.y + ' ' + this.currentBBox.w + ' ' + this.currentBBox.h);\r\n        svgStyle = this.svgElement.style;\r\n        var svgTransform = 'translate(' + this.currentBBox.x + 'px,' + this.currentBBox.y + 'px)';\r\n        svgStyle.transform = svgTransform;\r\n        svgStyle.webkitTransform = svgTransform;\r\n      }\r\n    }\r\n  };\r\n\r\n  function HCameraElement(data, globalData, comp) {\r\n    this.initFrame();\r\n    this.initBaseData(data, globalData, comp);\r\n    this.initHierarchy();\r\n    var getProp = PropertyFactory.getProp;\r\n    this.pe = getProp(this, data.pe, 0, 0, this);\r\n\r\n    if (data.ks.p.s) {\r\n      this.px = getProp(this, data.ks.p.x, 1, 0, this);\r\n      this.py = getProp(this, data.ks.p.y, 1, 0, this);\r\n      this.pz = getProp(this, data.ks.p.z, 1, 0, this);\r\n    } else {\r\n      this.p = getProp(this, data.ks.p, 1, 0, this);\r\n    }\r\n\r\n    if (data.ks.a) {\r\n      this.a = getProp(this, data.ks.a, 1, 0, this);\r\n    }\r\n\r\n    if (data.ks.or.k.length && data.ks.or.k[0].to) {\r\n      var i;\r\n      var len = data.ks.or.k.length;\r\n\r\n      for (i = 0; i < len; i += 1) {\r\n        data.ks.or.k[i].to = null;\r\n        data.ks.or.k[i].ti = null;\r\n      }\r\n    }\r\n\r\n    this.or = getProp(this, data.ks.or, 1, degToRads, this);\r\n    this.or.sh = true;\r\n    this.rx = getProp(this, data.ks.rx, 0, degToRads, this);\r\n    this.ry = getProp(this, data.ks.ry, 0, degToRads, this);\r\n    this.rz = getProp(this, data.ks.rz, 0, degToRads, this);\r\n    this.mat = new Matrix();\r\n    this._prevMat = new Matrix();\r\n    this._isFirstFrame = true; // TODO: find a better way to make the HCamera element to be compatible with the LayerInterface and TransformInterface.\r\n\r\n    this.finalTransform = {\r\n      mProp: this\r\n    };\r\n  }\r\n\r\n  extendPrototype([BaseElement, FrameElement, HierarchyElement], HCameraElement);\r\n\r\n  HCameraElement.prototype.setup = function () {\r\n    var i;\r\n    var len = this.comp.threeDElements.length;\r\n    var comp;\r\n    var perspectiveStyle;\r\n    var containerStyle;\r\n\r\n    for (i = 0; i < len; i += 1) {\r\n      // [perspectiveElem,container]\r\n      comp = this.comp.threeDElements[i];\r\n\r\n      if (comp.type === '3d') {\r\n        perspectiveStyle = comp.perspectiveElem.style;\r\n        containerStyle = comp.container.style;\r\n        var perspective = this.pe.v + 'px';\r\n        var origin = '0px 0px 0px';\r\n        var matrix = 'matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)';\r\n        perspectiveStyle.perspective = perspective;\r\n        perspectiveStyle.webkitPerspective = perspective;\r\n        containerStyle.transformOrigin = origin;\r\n        containerStyle.mozTransformOrigin = origin;\r\n        containerStyle.webkitTransformOrigin = origin;\r\n        perspectiveStyle.transform = matrix;\r\n        perspectiveStyle.webkitTransform = matrix;\r\n      }\r\n    }\r\n  };\r\n\r\n  HCameraElement.prototype.createElements = function () {};\r\n\r\n  HCameraElement.prototype.hide = function () {};\r\n\r\n  HCameraElement.prototype.renderFrame = function () {\r\n    var _mdf = this._isFirstFrame;\r\n    var i;\r\n    var len;\r\n\r\n    if (this.hierarchy) {\r\n      len = this.hierarchy.length;\r\n\r\n      for (i = 0; i < len; i += 1) {\r\n        _mdf = this.hierarchy[i].finalTransform.mProp._mdf || _mdf;\r\n      }\r\n    }\r\n\r\n    if (_mdf || this.pe._mdf || this.p && this.p._mdf || this.px && (this.px._mdf || this.py._mdf || this.pz._mdf) || this.rx._mdf || this.ry._mdf || this.rz._mdf || this.or._mdf || this.a && this.a._mdf) {\r\n      this.mat.reset();\r\n\r\n      if (this.hierarchy) {\r\n        len = this.hierarchy.length - 1;\r\n\r\n        for (i = len; i >= 0; i -= 1) {\r\n          var mTransf = this.hierarchy[i].finalTransform.mProp;\r\n          this.mat.translate(-mTransf.p.v[0], -mTransf.p.v[1], mTransf.p.v[2]);\r\n          this.mat.rotateX(-mTransf.or.v[0]).rotateY(-mTransf.or.v[1]).rotateZ(mTransf.or.v[2]);\r\n          this.mat.rotateX(-mTransf.rx.v).rotateY(-mTransf.ry.v).rotateZ(mTransf.rz.v);\r\n          this.mat.scale(1 / mTransf.s.v[0], 1 / mTransf.s.v[1], 1 / mTransf.s.v[2]);\r\n          this.mat.translate(mTransf.a.v[0], mTransf.a.v[1], mTransf.a.v[2]);\r\n        }\r\n      }\r\n\r\n      if (this.p) {\r\n        this.mat.translate(-this.p.v[0], -this.p.v[1], this.p.v[2]);\r\n      } else {\r\n        this.mat.translate(-this.px.v, -this.py.v, this.pz.v);\r\n      }\r\n\r\n      if (this.a) {\r\n        var diffVector;\r\n\r\n        if (this.p) {\r\n          diffVector = [this.p.v[0] - this.a.v[0], this.p.v[1] - this.a.v[1], this.p.v[2] - this.a.v[2]];\r\n        } else {\r\n          diffVector = [this.px.v - this.a.v[0], this.py.v - this.a.v[1], this.pz.v - this.a.v[2]];\r\n        }\r\n\r\n        var mag = Math.sqrt(Math.pow(diffVector[0], 2) + Math.pow(diffVector[1], 2) + Math.pow(diffVector[2], 2)); // var lookDir = getNormalizedPoint(getDiffVector(this.a.v,this.p.v));\r\n\r\n        var lookDir = [diffVector[0] / mag, diffVector[1] / mag, diffVector[2] / mag];\r\n        var lookLengthOnXZ = Math.sqrt(lookDir[2] * lookDir[2] + lookDir[0] * lookDir[0]);\r\n        var mRotationX = Math.atan2(lookDir[1], lookLengthOnXZ);\r\n        var mRotationY = Math.atan2(lookDir[0], -lookDir[2]);\r\n        this.mat.rotateY(mRotationY).rotateX(-mRotationX);\r\n      }\r\n\r\n      this.mat.rotateX(-this.rx.v).rotateY(-this.ry.v).rotateZ(this.rz.v);\r\n      this.mat.rotateX(-this.or.v[0]).rotateY(-this.or.v[1]).rotateZ(this.or.v[2]);\r\n      this.mat.translate(this.globalData.compSize.w / 2, this.globalData.compSize.h / 2, 0);\r\n      this.mat.translate(0, 0, this.pe.v);\r\n      var hasMatrixChanged = !this._prevMat.equals(this.mat);\r\n\r\n      if ((hasMatrixChanged || this.pe._mdf) && this.comp.threeDElements) {\r\n        len = this.comp.threeDElements.length;\r\n        var comp;\r\n        var perspectiveStyle;\r\n        var containerStyle;\r\n\r\n        for (i = 0; i < len; i += 1) {\r\n          comp = this.comp.threeDElements[i];\r\n\r\n          if (comp.type === '3d') {\r\n            if (hasMatrixChanged) {\r\n              var matValue = this.mat.toCSS();\r\n              containerStyle = comp.container.style;\r\n              containerStyle.transform = matValue;\r\n              containerStyle.webkitTransform = matValue;\r\n            }\r\n\r\n            if (this.pe._mdf) {\r\n              perspectiveStyle = comp.perspectiveElem.style;\r\n              perspectiveStyle.perspective = this.pe.v + 'px';\r\n              perspectiveStyle.webkitPerspective = this.pe.v + 'px';\r\n            }\r\n          }\r\n        }\r\n\r\n        this.mat.clone(this._prevMat);\r\n      }\r\n    }\r\n\r\n    this._isFirstFrame = false;\r\n  };\r\n\r\n  HCameraElement.prototype.prepareFrame = function (num) {\r\n    this.prepareProperties(num, true);\r\n  };\r\n\r\n  HCameraElement.prototype.destroy = function () {};\r\n\r\n  HCameraElement.prototype.getBaseElement = function () {\r\n    return null;\r\n  };\r\n\r\n  function HImageElement(data, globalData, comp) {\r\n    this.assetData = globalData.getAssetData(data.refId);\r\n    this.initElement(data, globalData, comp);\r\n  }\r\n\r\n  extendPrototype([BaseElement, TransformElement, HBaseElement, HSolidElement, HierarchyElement, FrameElement, RenderableElement], HImageElement);\r\n\r\n  HImageElement.prototype.createContent = function () {\r\n    var assetPath = this.globalData.getAssetsPath(this.assetData);\r\n    var img = new Image();\r\n\r\n    if (this.data.hasMask) {\r\n      this.imageElem = createNS('image');\r\n      this.imageElem.setAttribute('width', this.assetData.w + 'px');\r\n      this.imageElem.setAttribute('height', this.assetData.h + 'px');\r\n      this.imageElem.setAttributeNS('http://www.w3.org/1999/xlink', 'href', assetPath);\r\n      this.layerElement.appendChild(this.imageElem);\r\n      this.baseElement.setAttribute('width', this.assetData.w);\r\n      this.baseElement.setAttribute('height', this.assetData.h);\r\n    } else {\r\n      this.layerElement.appendChild(img);\r\n    }\r\n\r\n    img.crossOrigin = 'anonymous';\r\n    img.src = assetPath;\r\n\r\n    if (this.data.ln) {\r\n      this.baseElement.setAttribute('id', this.data.ln);\r\n    }\r\n  };\r\n\r\n  function HybridRendererBase(animationItem, config) {\r\n    this.animationItem = animationItem;\r\n    this.layers = null;\r\n    this.renderedFrame = -1;\r\n    this.renderConfig = {\r\n      className: config && config.className || '',\r\n      imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || 'xMidYMid slice',\r\n      hideOnTransparent: !(config && config.hideOnTransparent === false),\r\n      filterSize: {\r\n        width: config && config.filterSize && config.filterSize.width || '400%',\r\n        height: config && config.filterSize && config.filterSize.height || '400%',\r\n        x: config && config.filterSize && config.filterSize.x || '-100%',\r\n        y: config && config.filterSize && config.filterSize.y || '-100%'\r\n      }\r\n    };\r\n    this.globalData = {\r\n      _mdf: false,\r\n      frameNum: -1,\r\n      renderConfig: this.renderConfig\r\n    };\r\n    this.pendingElements = [];\r\n    this.elements = [];\r\n    this.threeDElements = [];\r\n    this.destroyed = false;\r\n    this.camera = null;\r\n    this.supports3d = true;\r\n    this.rendererType = 'html';\r\n  }\r\n\r\n  extendPrototype([BaseRenderer], HybridRendererBase);\r\n  HybridRendererBase.prototype.buildItem = SVGRenderer.prototype.buildItem;\r\n\r\n  HybridRendererBase.prototype.checkPendingElements = function () {\r\n    while (this.pendingElements.length) {\r\n      var element = this.pendingElements.pop();\r\n      element.checkParenting();\r\n    }\r\n  };\r\n\r\n  HybridRendererBase.prototype.appendElementInPos = function (element, pos) {\r\n    var newDOMElement = element.getBaseElement();\r\n\r\n    if (!newDOMElement) {\r\n      return;\r\n    }\r\n\r\n    var layer = this.layers[pos];\r\n\r\n    if (!layer.ddd || !this.supports3d) {\r\n      if (this.threeDElements) {\r\n        this.addTo3dContainer(newDOMElement, pos);\r\n      } else {\r\n        var i = 0;\r\n        var nextDOMElement;\r\n        var nextLayer;\r\n        var tmpDOMElement;\r\n\r\n        while (i < pos) {\r\n          if (this.elements[i] && this.elements[i] !== true && this.elements[i].getBaseElement) {\r\n            nextLayer = this.elements[i];\r\n            tmpDOMElement = this.layers[i].ddd ? this.getThreeDContainerByPos(i) : nextLayer.getBaseElement();\r\n            nextDOMElement = tmpDOMElement || nextDOMElement;\r\n          }\r\n\r\n          i += 1;\r\n        }\r\n\r\n        if (nextDOMElement) {\r\n          if (!layer.ddd || !this.supports3d) {\r\n            this.layerElement.insertBefore(newDOMElement, nextDOMElement);\r\n          }\r\n        } else if (!layer.ddd || !this.supports3d) {\r\n          this.layerElement.appendChild(newDOMElement);\r\n        }\r\n      }\r\n    } else {\r\n      this.addTo3dContainer(newDOMElement, pos);\r\n    }\r\n  };\r\n\r\n  HybridRendererBase.prototype.createShape = function (data) {\r\n    if (!this.supports3d) {\r\n      return new SVGShapeElement(data, this.globalData, this);\r\n    }\r\n\r\n    return new HShapeElement(data, this.globalData, this);\r\n  };\r\n\r\n  HybridRendererBase.prototype.createText = function (data) {\r\n    if (!this.supports3d) {\r\n      return new SVGTextLottieElement(data, this.globalData, this);\r\n    }\r\n\r\n    return new HTextElement(data, this.globalData, this);\r\n  };\r\n\r\n  HybridRendererBase.prototype.createCamera = function (data) {\r\n    this.camera = new HCameraElement(data, this.globalData, this);\r\n    return this.camera;\r\n  };\r\n\r\n  HybridRendererBase.prototype.createImage = function (data) {\r\n    if (!this.supports3d) {\r\n      return new IImageElement(data, this.globalData, this);\r\n    }\r\n\r\n    return new HImageElement(data, this.globalData, this);\r\n  };\r\n\r\n  HybridRendererBase.prototype.createSolid = function (data) {\r\n    if (!this.supports3d) {\r\n      return new ISolidElement(data, this.globalData, this);\r\n    }\r\n\r\n    return new HSolidElement(data, this.globalData, this);\r\n  };\r\n\r\n  HybridRendererBase.prototype.createNull = SVGRenderer.prototype.createNull;\r\n\r\n  HybridRendererBase.prototype.getThreeDContainerByPos = function (pos) {\r\n    var i = 0;\r\n    var len = this.threeDElements.length;\r\n\r\n    while (i < len) {\r\n      if (this.threeDElements[i].startPos <= pos && this.threeDElements[i].endPos >= pos) {\r\n        return this.threeDElements[i].perspectiveElem;\r\n      }\r\n\r\n      i += 1;\r\n    }\r\n\r\n    return null;\r\n  };\r\n\r\n  HybridRendererBase.prototype.createThreeDContainer = function (pos, type) {\r\n    var perspectiveElem = createTag('div');\r\n    var style;\r\n    var containerStyle;\r\n    styleDiv(perspectiveElem);\r\n    var container = createTag('div');\r\n    styleDiv(container);\r\n\r\n    if (type === '3d') {\r\n      style = perspectiveElem.style;\r\n      style.width = this.globalData.compSize.w + 'px';\r\n      style.height = this.globalData.compSize.h + 'px';\r\n      var center = '50% 50%';\r\n      style.webkitTransformOrigin = center;\r\n      style.mozTransformOrigin = center;\r\n      style.transformOrigin = center;\r\n      containerStyle = container.style;\r\n      var matrix = 'matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)';\r\n      containerStyle.transform = matrix;\r\n      containerStyle.webkitTransform = matrix;\r\n    }\r\n\r\n    perspectiveElem.appendChild(container); // this.resizerElem.appendChild(perspectiveElem);\r\n\r\n    var threeDContainerData = {\r\n      container: container,\r\n      perspectiveElem: perspectiveElem,\r\n      startPos: pos,\r\n      endPos: pos,\r\n      type: type\r\n    };\r\n    this.threeDElements.push(threeDContainerData);\r\n    return threeDContainerData;\r\n  };\r\n\r\n  HybridRendererBase.prototype.build3dContainers = function () {\r\n    var i;\r\n    var len = this.layers.length;\r\n    var lastThreeDContainerData;\r\n    var currentContainer = '';\r\n\r\n    for (i = 0; i < len; i += 1) {\r\n      if (this.layers[i].ddd && this.layers[i].ty !== 3) {\r\n        if (currentContainer !== '3d') {\r\n          currentContainer = '3d';\r\n          lastThreeDContainerData = this.createThreeDContainer(i, '3d');\r\n        }\r\n\r\n        lastThreeDContainerData.endPos = Math.max(lastThreeDContainerData.endPos, i);\r\n      } else {\r\n        if (currentContainer !== '2d') {\r\n          currentContainer = '2d';\r\n          lastThreeDContainerData = this.createThreeDContainer(i, '2d');\r\n        }\r\n\r\n        lastThreeDContainerData.endPos = Math.max(lastThreeDContainerData.endPos, i);\r\n      }\r\n    }\r\n\r\n    len = this.threeDElements.length;\r\n\r\n    for (i = len - 1; i >= 0; i -= 1) {\r\n      this.resizerElem.appendChild(this.threeDElements[i].perspectiveElem);\r\n    }\r\n  };\r\n\r\n  HybridRendererBase.prototype.addTo3dContainer = function (elem, pos) {\r\n    var i = 0;\r\n    var len = this.threeDElements.length;\r\n\r\n    while (i < len) {\r\n      if (pos <= this.threeDElements[i].endPos) {\r\n        var j = this.threeDElements[i].startPos;\r\n        var nextElement;\r\n\r\n        while (j < pos) {\r\n          if (this.elements[j] && this.elements[j].getBaseElement) {\r\n            nextElement = this.elements[j].getBaseElement();\r\n          }\r\n\r\n          j += 1;\r\n        }\r\n\r\n        if (nextElement) {\r\n          this.threeDElements[i].container.insertBefore(elem, nextElement);\r\n        } else {\r\n          this.threeDElements[i].container.appendChild(elem);\r\n        }\r\n\r\n        break;\r\n      }\r\n\r\n      i += 1;\r\n    }\r\n  };\r\n\r\n  HybridRendererBase.prototype.configAnimation = function (animData) {\r\n    var resizerElem = createTag('div');\r\n    var wrapper = this.animationItem.wrapper;\r\n    var style = resizerElem.style;\r\n    style.width = animData.w + 'px';\r\n    style.height = animData.h + 'px';\r\n    this.resizerElem = resizerElem;\r\n    styleDiv(resizerElem);\r\n    style.transformStyle = 'flat';\r\n    style.mozTransformStyle = 'flat';\r\n    style.webkitTransformStyle = 'flat';\r\n\r\n    if (this.renderConfig.className) {\r\n      resizerElem.setAttribute('class', this.renderConfig.className);\r\n    }\r\n\r\n    wrapper.appendChild(resizerElem);\r\n    style.overflow = 'hidden';\r\n    var svg = createNS('svg');\r\n    svg.setAttribute('width', '1');\r\n    svg.setAttribute('height', '1');\r\n    styleDiv(svg);\r\n    this.resizerElem.appendChild(svg);\r\n    var defs = createNS('defs');\r\n    svg.appendChild(defs);\r\n    this.data = animData; // Mask animation\r\n\r\n    this.setupGlobalData(animData, svg);\r\n    this.globalData.defs = defs;\r\n    this.layers = animData.layers;\r\n    this.layerElement = this.resizerElem;\r\n    this.build3dContainers();\r\n    this.updateContainerSize();\r\n  };\r\n\r\n  HybridRendererBase.prototype.destroy = function () {\r\n    if (this.animationItem.wrapper) {\r\n      this.animationItem.wrapper.innerText = '';\r\n    }\r\n\r\n    this.animationItem.container = null;\r\n    this.globalData.defs = null;\r\n    var i;\r\n    var len = this.layers ? this.layers.length : 0;\r\n\r\n    for (i = 0; i < len; i += 1) {\r\n      this.elements[i].destroy();\r\n    }\r\n\r\n    this.elements.length = 0;\r\n    this.destroyed = true;\r\n    this.animationItem = null;\r\n  };\r\n\r\n  HybridRendererBase.prototype.updateContainerSize = function () {\r\n    var elementWidth = this.animationItem.wrapper.offsetWidth;\r\n    var elementHeight = this.animationItem.wrapper.offsetHeight;\r\n    var elementRel = elementWidth / elementHeight;\r\n    var animationRel = this.globalData.compSize.w / this.globalData.compSize.h;\r\n    var sx;\r\n    var sy;\r\n    var tx;\r\n    var ty;\r\n\r\n    if (animationRel > elementRel) {\r\n      sx = elementWidth / this.globalData.compSize.w;\r\n      sy = elementWidth / this.globalData.compSize.w;\r\n      tx = 0;\r\n      ty = (elementHeight - this.globalData.compSize.h * (elementWidth / this.globalData.compSize.w)) / 2;\r\n    } else {\r\n      sx = elementHeight / this.globalData.compSize.h;\r\n      sy = elementHeight / this.globalData.compSize.h;\r\n      tx = (elementWidth - this.globalData.compSize.w * (elementHeight / this.globalData.compSize.h)) / 2;\r\n      ty = 0;\r\n    }\r\n\r\n    var style = this.resizerElem.style;\r\n    style.webkitTransform = 'matrix3d(' + sx + ',0,0,0,0,' + sy + ',0,0,0,0,1,0,' + tx + ',' + ty + ',0,1)';\r\n    style.transform = style.webkitTransform;\r\n  };\r\n\r\n  HybridRendererBase.prototype.renderFrame = SVGRenderer.prototype.renderFrame;\r\n\r\n  HybridRendererBase.prototype.hide = function () {\r\n    this.resizerElem.style.display = 'none';\r\n  };\r\n\r\n  HybridRendererBase.prototype.show = function () {\r\n    this.resizerElem.style.display = 'block';\r\n  };\r\n\r\n  HybridRendererBase.prototype.initItems = function () {\r\n    this.buildAllItems();\r\n\r\n    if (this.camera) {\r\n      this.camera.setup();\r\n    } else {\r\n      var cWidth = this.globalData.compSize.w;\r\n      var cHeight = this.globalData.compSize.h;\r\n      var i;\r\n      var len = this.threeDElements.length;\r\n\r\n      for (i = 0; i < len; i += 1) {\r\n        var style = this.threeDElements[i].perspectiveElem.style;\r\n        style.webkitPerspective = Math.sqrt(Math.pow(cWidth, 2) + Math.pow(cHeight, 2)) + 'px';\r\n        style.perspective = style.webkitPerspective;\r\n      }\r\n    }\r\n  };\r\n\r\n  HybridRendererBase.prototype.searchExtraCompositions = function (assets) {\r\n    var i;\r\n    var len = assets.length;\r\n    var floatingContainer = createTag('div');\r\n\r\n    for (i = 0; i < len; i += 1) {\r\n      if (assets[i].xt) {\r\n        var comp = this.createComp(assets[i], floatingContainer, this.globalData.comp, null);\r\n        comp.initExpressions();\r\n        this.globalData.projectInterface.registerComposition(comp);\r\n      }\r\n    }\r\n  };\r\n\r\n  function HCompElement(data, globalData, comp) {\r\n    this.layers = data.layers;\r\n    this.supports3d = !data.hasMask;\r\n    this.completeLayers = false;\r\n    this.pendingElements = [];\r\n    this.elements = this.layers ? createSizedArray(this.layers.length) : [];\r\n    this.initElement(data, globalData, comp);\r\n    this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : {\r\n      _placeholder: true\r\n    };\r\n  }\r\n\r\n  extendPrototype([HybridRendererBase, ICompElement, HBaseElement], HCompElement);\r\n  HCompElement.prototype._createBaseContainerElements = HCompElement.prototype.createContainerElements;\r\n\r\n  HCompElement.prototype.createContainerElements = function () {\r\n    this._createBaseContainerElements(); // divElement.style.clip = 'rect(0px, '+this.data.w+'px, '+this.data.h+'px, 0px)';\r\n\r\n\r\n    if (this.data.hasMask) {\r\n      this.svgElement.setAttribute('width', this.data.w);\r\n      this.svgElement.setAttribute('height', this.data.h);\r\n      this.transformedElement = this.baseElement;\r\n    } else {\r\n      this.transformedElement = this.layerElement;\r\n    }\r\n  };\r\n\r\n  HCompElement.prototype.addTo3dContainer = function (elem, pos) {\r\n    var j = 0;\r\n    var nextElement;\r\n\r\n    while (j < pos) {\r\n      if (this.elements[j] && this.elements[j].getBaseElement) {\r\n        nextElement = this.elements[j].getBaseElement();\r\n      }\r\n\r\n      j += 1;\r\n    }\r\n\r\n    if (nextElement) {\r\n      this.layerElement.insertBefore(elem, nextElement);\r\n    } else {\r\n      this.layerElement.appendChild(elem);\r\n    }\r\n  };\r\n\r\n  HCompElement.prototype.createComp = function (data) {\r\n    if (!this.supports3d) {\r\n      return new SVGCompElement(data, this.globalData, this);\r\n    }\r\n\r\n    return new HCompElement(data, this.globalData, this);\r\n  };\r\n\r\n  function HybridRenderer(animationItem, config) {\r\n    this.animationItem = animationItem;\r\n    this.layers = null;\r\n    this.renderedFrame = -1;\r\n    this.renderConfig = {\r\n      className: config && config.className || '',\r\n      imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || 'xMidYMid slice',\r\n      hideOnTransparent: !(config && config.hideOnTransparent === false),\r\n      filterSize: {\r\n        width: config && config.filterSize && config.filterSize.width || '400%',\r\n        height: config && config.filterSize && config.filterSize.height || '400%',\r\n        x: config && config.filterSize && config.filterSize.x || '-100%',\r\n        y: config && config.filterSize && config.filterSize.y || '-100%'\r\n      },\r\n      runExpressions: !config || config.runExpressions === undefined || config.runExpressions\r\n    };\r\n    this.globalData = {\r\n      _mdf: false,\r\n      frameNum: -1,\r\n      renderConfig: this.renderConfig\r\n    };\r\n    this.pendingElements = [];\r\n    this.elements = [];\r\n    this.threeDElements = [];\r\n    this.destroyed = false;\r\n    this.camera = null;\r\n    this.supports3d = true;\r\n    this.rendererType = 'html';\r\n  }\r\n\r\n  extendPrototype([HybridRendererBase], HybridRenderer);\r\n\r\n  HybridRenderer.prototype.createComp = function (data) {\r\n    if (!this.supports3d) {\r\n      return new SVGCompElement(data, this.globalData, this);\r\n    }\r\n\r\n    return new HCompElement(data, this.globalData, this);\r\n  };\r\n\r\n  var CompExpressionInterface = function () {\r\n    return function (comp) {\r\n      function _thisLayerFunction(name) {\r\n        var i = 0;\r\n        var len = comp.layers.length;\r\n\r\n        while (i < len) {\r\n          if (comp.layers[i].nm === name || comp.layers[i].ind === name) {\r\n            return comp.elements[i].layerInterface;\r\n          }\r\n\r\n          i += 1;\r\n        }\r\n\r\n        return null; // return {active:false};\r\n      }\r\n\r\n      Object.defineProperty(_thisLayerFunction, '_name', {\r\n        value: comp.data.nm\r\n      });\r\n      _thisLayerFunction.layer = _thisLayerFunction;\r\n      _thisLayerFunction.pixelAspect = 1;\r\n      _thisLayerFunction.height = comp.data.h || comp.globalData.compSize.h;\r\n      _thisLayerFunction.width = comp.data.w || comp.globalData.compSize.w;\r\n      _thisLayerFunction.pixelAspect = 1;\r\n      _thisLayerFunction.frameDuration = 1 / comp.globalData.frameRate;\r\n      _thisLayerFunction.displayStartTime = 0;\r\n      _thisLayerFunction.numLayers = comp.layers.length;\r\n      return _thisLayerFunction;\r\n    };\r\n  }();\r\n\r\n  var Expressions = function () {\r\n    var ob = {};\r\n    ob.initExpressions = initExpressions;\r\n\r\n    function initExpressions(animation) {\r\n      var stackCount = 0;\r\n      var registers = [];\r\n\r\n      function pushExpression() {\r\n        stackCount += 1;\r\n      }\r\n\r\n      function popExpression() {\r\n        stackCount -= 1;\r\n\r\n        if (stackCount === 0) {\r\n          releaseInstances();\r\n        }\r\n      }\r\n\r\n      function registerExpressionProperty(expression) {\r\n        if (registers.indexOf(expression) === -1) {\r\n          registers.push(expression);\r\n        }\r\n      }\r\n\r\n      function releaseInstances() {\r\n        var i;\r\n        var len = registers.length;\r\n\r\n        for (i = 0; i < len; i += 1) {\r\n          registers[i].release();\r\n        }\r\n\r\n        registers.length = 0;\r\n      }\r\n\r\n      animation.renderer.compInterface = CompExpressionInterface(animation.renderer);\r\n      animation.renderer.globalData.projectInterface.registerComposition(animation.renderer);\r\n      animation.renderer.globalData.pushExpression = pushExpression;\r\n      animation.renderer.globalData.popExpression = popExpression;\r\n      animation.renderer.globalData.registerExpressionProperty = registerExpressionProperty;\r\n    }\r\n\r\n    return ob;\r\n  }();\r\n\r\n  var MaskManagerInterface = function () {\r\n    function MaskInterface(mask, data) {\r\n      this._mask = mask;\r\n      this._data = data;\r\n    }\r\n\r\n    Object.defineProperty(MaskInterface.prototype, 'maskPath', {\r\n      get: function get() {\r\n        if (this._mask.prop.k) {\r\n          this._mask.prop.getValue();\r\n        }\r\n\r\n        return this._mask.prop;\r\n      }\r\n    });\r\n    Object.defineProperty(MaskInterface.prototype, 'maskOpacity', {\r\n      get: function get() {\r\n        if (this._mask.op.k) {\r\n          this._mask.op.getValue();\r\n        }\r\n\r\n        return this._mask.op.v * 100;\r\n      }\r\n    });\r\n\r\n    var MaskManager = function MaskManager(maskManager) {\r\n      var _masksInterfaces = createSizedArray(maskManager.viewData.length);\r\n\r\n      var i;\r\n      var len = maskManager.viewData.length;\r\n\r\n      for (i = 0; i < len; i += 1) {\r\n        _masksInterfaces[i] = new MaskInterface(maskManager.viewData[i], maskManager.masksProperties[i]);\r\n      }\r\n\r\n      var maskFunction = function maskFunction(name) {\r\n        i = 0;\r\n\r\n        while (i < len) {\r\n          if (maskManager.masksProperties[i].nm === name) {\r\n            return _masksInterfaces[i];\r\n          }\r\n\r\n          i += 1;\r\n        }\r\n\r\n        return null;\r\n      };\r\n\r\n      return maskFunction;\r\n    };\r\n\r\n    return MaskManager;\r\n  }();\r\n\r\n  var ExpressionPropertyInterface = function () {\r\n    var defaultUnidimensionalValue = {\r\n      pv: 0,\r\n      v: 0,\r\n      mult: 1\r\n    };\r\n    var defaultMultidimensionalValue = {\r\n      pv: [0, 0, 0],\r\n      v: [0, 0, 0],\r\n      mult: 1\r\n    };\r\n\r\n    function completeProperty(expressionValue, property, type) {\r\n      Object.defineProperty(expressionValue, 'velocity', {\r\n        get: function get() {\r\n          return property.getVelocityAtTime(property.comp.currentFrame);\r\n        }\r\n      });\r\n      expressionValue.numKeys = property.keyframes ? property.keyframes.length : 0;\r\n\r\n      expressionValue.key = function (pos) {\r\n        if (!expressionValue.numKeys) {\r\n          return 0;\r\n        }\r\n\r\n        var value = '';\r\n\r\n        if ('s' in property.keyframes[pos - 1]) {\r\n          value = property.keyframes[pos - 1].s;\r\n        } else if ('e' in property.keyframes[pos - 2]) {\r\n          value = property.keyframes[pos - 2].e;\r\n        } else {\r\n          value = property.keyframes[pos - 2].s;\r\n        }\r\n\r\n        var valueProp = type === 'unidimensional' ? new Number(value) : Object.assign({}, value); // eslint-disable-line no-new-wrappers\r\n\r\n        valueProp.time = property.keyframes[pos - 1].t / property.elem.comp.globalData.frameRate;\r\n        valueProp.value = type === 'unidimensional' ? value[0] : value;\r\n        return valueProp;\r\n      };\r\n\r\n      expressionValue.valueAtTime = property.getValueAtTime;\r\n      expressionValue.speedAtTime = property.getSpeedAtTime;\r\n      expressionValue.velocityAtTime = property.getVelocityAtTime;\r\n      expressionValue.propertyGroup = property.propertyGroup;\r\n    }\r\n\r\n    function UnidimensionalPropertyInterface(property) {\r\n      if (!property || !('pv' in property)) {\r\n        property = defaultUnidimensionalValue;\r\n      }\r\n\r\n      var mult = 1 / property.mult;\r\n      var val = property.pv * mult;\r\n      var expressionValue = new Number(val); // eslint-disable-line no-new-wrappers\r\n\r\n      expressionValue.value = val;\r\n      completeProperty(expressionValue, property, 'unidimensional');\r\n      return function () {\r\n        if (property.k) {\r\n          property.getValue();\r\n        }\r\n\r\n        val = property.v * mult;\r\n\r\n        if (expressionValue.value !== val) {\r\n          expressionValue = new Number(val); // eslint-disable-line no-new-wrappers\r\n\r\n          expressionValue.value = val;\r\n          completeProperty(expressionValue, property, 'unidimensional');\r\n        }\r\n\r\n        return expressionValue;\r\n      };\r\n    }\r\n\r\n    function MultidimensionalPropertyInterface(property) {\r\n      if (!property || !('pv' in property)) {\r\n        property = defaultMultidimensionalValue;\r\n      }\r\n\r\n      var mult = 1 / property.mult;\r\n      var len = property.data && property.data.l || property.pv.length;\r\n      var expressionValue = createTypedArray('float32', len);\r\n      var arrValue = createTypedArray('float32', len);\r\n      expressionValue.value = arrValue;\r\n      completeProperty(expressionValue, property, 'multidimensional');\r\n      return function () {\r\n        if (property.k) {\r\n          property.getValue();\r\n        }\r\n\r\n        for (var i = 0; i < len; i += 1) {\r\n          arrValue[i] = property.v[i] * mult;\r\n          expressionValue[i] = arrValue[i];\r\n        }\r\n\r\n        return expressionValue;\r\n      };\r\n    } // TODO: try to avoid using this getter\r\n\r\n\r\n    function defaultGetter() {\r\n      return defaultUnidimensionalValue;\r\n    }\r\n\r\n    return function (property) {\r\n      if (!property) {\r\n        return defaultGetter;\r\n      }\r\n\r\n      if (property.propType === 'unidimensional') {\r\n        return UnidimensionalPropertyInterface(property);\r\n      }\r\n\r\n      return MultidimensionalPropertyInterface(property);\r\n    };\r\n  }();\r\n\r\n  var TransformExpressionInterface = function () {\r\n    return function (transform) {\r\n      function _thisFunction(name) {\r\n        switch (name) {\r\n          case 'scale':\r\n          case 'Scale':\r\n          case 'ADBE Scale':\r\n          case 6:\r\n            return _thisFunction.scale;\r\n\r\n          case 'rotation':\r\n          case 'Rotation':\r\n          case 'ADBE Rotation':\r\n          case 'ADBE Rotate Z':\r\n          case 10:\r\n            return _thisFunction.rotation;\r\n\r\n          case 'ADBE Rotate X':\r\n            return _thisFunction.xRotation;\r\n\r\n          case 'ADBE Rotate Y':\r\n            return _thisFunction.yRotation;\r\n\r\n          case 'position':\r\n          case 'Position':\r\n          case 'ADBE Position':\r\n          case 2:\r\n            return _thisFunction.position;\r\n\r\n          case 'ADBE Position_0':\r\n            return _thisFunction.xPosition;\r\n\r\n          case 'ADBE Position_1':\r\n            return _thisFunction.yPosition;\r\n\r\n          case 'ADBE Position_2':\r\n            return _thisFunction.zPosition;\r\n\r\n          case 'anchorPoint':\r\n          case 'AnchorPoint':\r\n          case 'Anchor Point':\r\n          case 'ADBE AnchorPoint':\r\n          case 1:\r\n            return _thisFunction.anchorPoint;\r\n\r\n          case 'opacity':\r\n          case 'Opacity':\r\n          case 11:\r\n            return _thisFunction.opacity;\r\n\r\n          default:\r\n            return null;\r\n        }\r\n      }\r\n\r\n      Object.defineProperty(_thisFunction, 'rotation', {\r\n        get: ExpressionPropertyInterface(transform.r || transform.rz)\r\n      });\r\n      Object.defineProperty(_thisFunction, 'zRotation', {\r\n        get: ExpressionPropertyInterface(transform.rz || transform.r)\r\n      });\r\n      Object.defineProperty(_thisFunction, 'xRotation', {\r\n        get: ExpressionPropertyInterface(transform.rx)\r\n      });\r\n      Object.defineProperty(_thisFunction, 'yRotation', {\r\n        get: ExpressionPropertyInterface(transform.ry)\r\n      });\r\n      Object.defineProperty(_thisFunction, 'scale', {\r\n        get: ExpressionPropertyInterface(transform.s)\r\n      });\r\n\r\n      var _px;\r\n\r\n      var _py;\r\n\r\n      var _pz;\r\n\r\n      var _transformFactory;\r\n\r\n      if (transform.p) {\r\n        _transformFactory = ExpressionPropertyInterface(transform.p);\r\n      } else {\r\n        _px = ExpressionPropertyInterface(transform.px);\r\n        _py = ExpressionPropertyInterface(transform.py);\r\n\r\n        if (transform.pz) {\r\n          _pz = ExpressionPropertyInterface(transform.pz);\r\n        }\r\n      }\r\n\r\n      Object.defineProperty(_thisFunction, 'position', {\r\n        get: function get() {\r\n          if (transform.p) {\r\n            return _transformFactory();\r\n          }\r\n\r\n          return [_px(), _py(), _pz ? _pz() : 0];\r\n        }\r\n      });\r\n      Object.defineProperty(_thisFunction, 'xPosition', {\r\n        get: ExpressionPropertyInterface(transform.px)\r\n      });\r\n      Object.defineProperty(_thisFunction, 'yPosition', {\r\n        get: ExpressionPropertyInterface(transform.py)\r\n      });\r\n      Object.defineProperty(_thisFunction, 'zPosition', {\r\n        get: ExpressionPropertyInterface(transform.pz)\r\n      });\r\n      Object.defineProperty(_thisFunction, 'anchorPoint', {\r\n        get: ExpressionPropertyInterface(transform.a)\r\n      });\r\n      Object.defineProperty(_thisFunction, 'opacity', {\r\n        get: ExpressionPropertyInterface(transform.o)\r\n      });\r\n      Object.defineProperty(_thisFunction, 'skew', {\r\n        get: ExpressionPropertyInterface(transform.sk)\r\n      });\r\n      Object.defineProperty(_thisFunction, 'skewAxis', {\r\n        get: ExpressionPropertyInterface(transform.sa)\r\n      });\r\n      Object.defineProperty(_thisFunction, 'orientation', {\r\n        get: ExpressionPropertyInterface(transform.or)\r\n      });\r\n      return _thisFunction;\r\n    };\r\n  }();\r\n\r\n  var LayerExpressionInterface = function () {\r\n    function getMatrix(time) {\r\n      var toWorldMat = new Matrix();\r\n\r\n      if (time !== undefined) {\r\n        var propMatrix = this._elem.finalTransform.mProp.getValueAtTime(time);\r\n\r\n        propMatrix.clone(toWorldMat);\r\n      } else {\r\n        var transformMat = this._elem.finalTransform.mProp;\r\n        transformMat.applyToMatrix(toWorldMat);\r\n      }\r\n\r\n      return toWorldMat;\r\n    }\r\n\r\n    function toWorldVec(arr, time) {\r\n      var toWorldMat = this.getMatrix(time);\r\n      toWorldMat.props[12] = 0;\r\n      toWorldMat.props[13] = 0;\r\n      toWorldMat.props[14] = 0;\r\n      return this.applyPoint(toWorldMat, arr);\r\n    }\r\n\r\n    function toWorld(arr, time) {\r\n      var toWorldMat = this.getMatrix(time);\r\n      return this.applyPoint(toWorldMat, arr);\r\n    }\r\n\r\n    function fromWorldVec(arr, time) {\r\n      var toWorldMat = this.getMatrix(time);\r\n      toWorldMat.props[12] = 0;\r\n      toWorldMat.props[13] = 0;\r\n      toWorldMat.props[14] = 0;\r\n      return this.invertPoint(toWorldMat, arr);\r\n    }\r\n\r\n    function fromWorld(arr, time) {\r\n      var toWorldMat = this.getMatrix(time);\r\n      return this.invertPoint(toWorldMat, arr);\r\n    }\r\n\r\n    function applyPoint(matrix, arr) {\r\n      if (this._elem.hierarchy && this._elem.hierarchy.length) {\r\n        var i;\r\n        var len = this._elem.hierarchy.length;\r\n\r\n        for (i = 0; i < len; i += 1) {\r\n          this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(matrix);\r\n        }\r\n      }\r\n\r\n      return matrix.applyToPointArray(arr[0], arr[1], arr[2] || 0);\r\n    }\r\n\r\n    function invertPoint(matrix, arr) {\r\n      if (this._elem.hierarchy && this._elem.hierarchy.length) {\r\n        var i;\r\n        var len = this._elem.hierarchy.length;\r\n\r\n        for (i = 0; i < len; i += 1) {\r\n          this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(matrix);\r\n        }\r\n      }\r\n\r\n      return matrix.inversePoint(arr);\r\n    }\r\n\r\n    function fromComp(arr) {\r\n      var toWorldMat = new Matrix();\r\n      toWorldMat.reset();\r\n\r\n      this._elem.finalTransform.mProp.applyToMatrix(toWorldMat);\r\n\r\n      if (this._elem.hierarchy && this._elem.hierarchy.length) {\r\n        var i;\r\n        var len = this._elem.hierarchy.length;\r\n\r\n        for (i = 0; i < len; i += 1) {\r\n          this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(toWorldMat);\r\n        }\r\n\r\n        return toWorldMat.inversePoint(arr);\r\n      }\r\n\r\n      return toWorldMat.inversePoint(arr);\r\n    }\r\n\r\n    function sampleImage() {\r\n      return [1, 1, 1, 1];\r\n    }\r\n\r\n    return function (elem) {\r\n      var transformInterface;\r\n\r\n      function _registerMaskInterface(maskManager) {\r\n        _thisLayerFunction.mask = new MaskManagerInterface(maskManager, elem);\r\n      }\r\n\r\n      function _registerEffectsInterface(effects) {\r\n        _thisLayerFunction.effect = effects;\r\n      }\r\n\r\n      function _thisLayerFunction(name) {\r\n        switch (name) {\r\n          case 'ADBE Root Vectors Group':\r\n          case 'Contents':\r\n          case 2:\r\n            return _thisLayerFunction.shapeInterface;\r\n\r\n          case 1:\r\n          case 6:\r\n          case 'Transform':\r\n          case 'transform':\r\n          case 'ADBE Transform Group':\r\n            return transformInterface;\r\n\r\n          case 4:\r\n          case 'ADBE Effect Parade':\r\n          case 'effects':\r\n          case 'Effects':\r\n            return _thisLayerFunction.effect;\r\n\r\n          case 'ADBE Text Properties':\r\n            return _thisLayerFunction.textInterface;\r\n\r\n          default:\r\n            return null;\r\n        }\r\n      }\r\n\r\n      _thisLayerFunction.getMatrix = getMatrix;\r\n      _thisLayerFunction.invertPoint = invertPoint;\r\n      _thisLayerFunction.applyPoint = applyPoint;\r\n      _thisLayerFunction.toWorld = toWorld;\r\n      _thisLayerFunction.toWorldVec = toWorldVec;\r\n      _thisLayerFunction.fromWorld = fromWorld;\r\n      _thisLayerFunction.fromWorldVec = fromWorldVec;\r\n      _thisLayerFunction.toComp = toWorld;\r\n      _thisLayerFunction.fromComp = fromComp;\r\n      _thisLayerFunction.sampleImage = sampleImage;\r\n      _thisLayerFunction.sourceRectAtTime = elem.sourceRectAtTime.bind(elem);\r\n      _thisLayerFunction._elem = elem;\r\n      transformInterface = TransformExpressionInterface(elem.finalTransform.mProp);\r\n      var anchorPointDescriptor = getDescriptor(transformInterface, 'anchorPoint');\r\n      Object.defineProperties(_thisLayerFunction, {\r\n        hasParent: {\r\n          get: function get() {\r\n            return elem.hierarchy.length;\r\n          }\r\n        },\r\n        parent: {\r\n          get: function get() {\r\n            return elem.hierarchy[0].layerInterface;\r\n          }\r\n        },\r\n        rotation: getDescriptor(transformInterface, 'rotation'),\r\n        scale: getDescriptor(transformInterface, 'scale'),\r\n        position: getDescriptor(transformInterface, 'position'),\r\n        opacity: getDescriptor(transformInterface, 'opacity'),\r\n        anchorPoint: anchorPointDescriptor,\r\n        anchor_point: anchorPointDescriptor,\r\n        transform: {\r\n          get: function get() {\r\n            return transformInterface;\r\n          }\r\n        },\r\n        active: {\r\n          get: function get() {\r\n            return elem.isInRange;\r\n          }\r\n        }\r\n      });\r\n      _thisLayerFunction.startTime = elem.data.st;\r\n      _thisLayerFunction.index = elem.data.ind;\r\n      _thisLayerFunction.source = elem.data.refId;\r\n      _thisLayerFunction.height = elem.data.ty === 0 ? elem.data.h : 100;\r\n      _thisLayerFunction.width = elem.data.ty === 0 ? elem.data.w : 100;\r\n      _thisLayerFunction.inPoint = elem.data.ip / elem.comp.globalData.frameRate;\r\n      _thisLayerFunction.outPoint = elem.data.op / elem.comp.globalData.frameRate;\r\n      _thisLayerFunction._name = elem.data.nm;\r\n      _thisLayerFunction.registerMaskInterface = _registerMaskInterface;\r\n      _thisLayerFunction.registerEffectsInterface = _registerEffectsInterface;\r\n      return _thisLayerFunction;\r\n    };\r\n  }();\r\n\r\n  var propertyGroupFactory = function () {\r\n    return function (interfaceFunction, parentPropertyGroup) {\r\n      return function (val) {\r\n        val = val === undefined ? 1 : val;\r\n\r\n        if (val <= 0) {\r\n          return interfaceFunction;\r\n        }\r\n\r\n        return parentPropertyGroup(val - 1);\r\n      };\r\n    };\r\n  }();\r\n\r\n  var PropertyInterface = function () {\r\n    return function (propertyName, propertyGroup) {\r\n      var interfaceFunction = {\r\n        _name: propertyName\r\n      };\r\n\r\n      function _propertyGroup(val) {\r\n        val = val === undefined ? 1 : val;\r\n\r\n        if (val <= 0) {\r\n          return interfaceFunction;\r\n        }\r\n\r\n        return propertyGroup(val - 1);\r\n      }\r\n\r\n      return _propertyGroup;\r\n    };\r\n  }();\r\n\r\n  var EffectsExpressionInterface = function () {\r\n    var ob = {\r\n      createEffectsInterface: createEffectsInterface\r\n    };\r\n\r\n    function createEffectsInterface(elem, propertyGroup) {\r\n      if (elem.effectsManager) {\r\n        var effectElements = [];\r\n        var effectsData = elem.data.ef;\r\n        var i;\r\n        var len = elem.effectsManager.effectElements.length;\r\n\r\n        for (i = 0; i < len; i += 1) {\r\n          effectElements.push(createGroupInterface(effectsData[i], elem.effectsManager.effectElements[i], propertyGroup, elem));\r\n        }\r\n\r\n        var effects = elem.data.ef || [];\r\n\r\n        var groupInterface = function groupInterface(name) {\r\n          i = 0;\r\n          len = effects.length;\r\n\r\n          while (i < len) {\r\n            if (name === effects[i].nm || name === effects[i].mn || name === effects[i].ix) {\r\n              return effectElements[i];\r\n            }\r\n\r\n            i += 1;\r\n          }\r\n\r\n          return null;\r\n        };\r\n\r\n        Object.defineProperty(groupInterface, 'numProperties', {\r\n          get: function get() {\r\n            return effects.length;\r\n          }\r\n        });\r\n        return groupInterface;\r\n      }\r\n\r\n      return null;\r\n    }\r\n\r\n    function createGroupInterface(data, elements, propertyGroup, elem) {\r\n      function groupInterface(name) {\r\n        var effects = data.ef;\r\n        var i = 0;\r\n        var len = effects.length;\r\n\r\n        while (i < len) {\r\n          if (name === effects[i].nm || name === effects[i].mn || name === effects[i].ix) {\r\n            if (effects[i].ty === 5) {\r\n              return effectElements[i];\r\n            }\r\n\r\n            return effectElements[i]();\r\n          }\r\n\r\n          i += 1;\r\n        }\r\n\r\n        throw new Error();\r\n      }\r\n\r\n      var _propertyGroup = propertyGroupFactory(groupInterface, propertyGroup);\r\n\r\n      var effectElements = [];\r\n      var i;\r\n      var len = data.ef.length;\r\n\r\n      for (i = 0; i < len; i += 1) {\r\n        if (data.ef[i].ty === 5) {\r\n          effectElements.push(createGroupInterface(data.ef[i], elements.effectElements[i], elements.effectElements[i].propertyGroup, elem));\r\n        } else {\r\n          effectElements.push(createValueInterface(elements.effectElements[i], data.ef[i].ty, elem, _propertyGroup));\r\n        }\r\n      }\r\n\r\n      if (data.mn === 'ADBE Color Control') {\r\n        Object.defineProperty(groupInterface, 'color', {\r\n          get: function get() {\r\n            return effectElements[0]();\r\n          }\r\n        });\r\n      }\r\n\r\n      Object.defineProperties(groupInterface, {\r\n        numProperties: {\r\n          get: function get() {\r\n            return data.np;\r\n          }\r\n        },\r\n        _name: {\r\n          value: data.nm\r\n        },\r\n        propertyGroup: {\r\n          value: _propertyGroup\r\n        }\r\n      });\r\n      groupInterface.enabled = data.en !== 0;\r\n      groupInterface.active = groupInterface.enabled;\r\n      return groupInterface;\r\n    }\r\n\r\n    function createValueInterface(element, type, elem, propertyGroup) {\r\n      var expressionProperty = ExpressionPropertyInterface(element.p);\r\n\r\n      function interfaceFunction() {\r\n        if (type === 10) {\r\n          return elem.comp.compInterface(element.p.v);\r\n        }\r\n\r\n        return expressionProperty();\r\n      }\r\n\r\n      if (element.p.setGroupProperty) {\r\n        element.p.setGroupProperty(PropertyInterface('', propertyGroup));\r\n      }\r\n\r\n      return interfaceFunction;\r\n    }\r\n\r\n    return ob;\r\n  }();\r\n\r\n  var ShapePathInterface = function () {\r\n    return function pathInterfaceFactory(shape, view, propertyGroup) {\r\n      var prop = view.sh;\r\n\r\n      function interfaceFunction(val) {\r\n        if (val === 'Shape' || val === 'shape' || val === 'Path' || val === 'path' || val === 'ADBE Vector Shape' || val === 2) {\r\n          return interfaceFunction.path;\r\n        }\r\n\r\n        return null;\r\n      }\r\n\r\n      var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\r\n\r\n      prop.setGroupProperty(PropertyInterface('Path', _propertyGroup));\r\n      Object.defineProperties(interfaceFunction, {\r\n        path: {\r\n          get: function get() {\r\n            if (prop.k) {\r\n              prop.getValue();\r\n            }\r\n\r\n            return prop;\r\n          }\r\n        },\r\n        shape: {\r\n          get: function get() {\r\n            if (prop.k) {\r\n              prop.getValue();\r\n            }\r\n\r\n            return prop;\r\n          }\r\n        },\r\n        _name: {\r\n          value: shape.nm\r\n        },\r\n        ix: {\r\n          value: shape.ix\r\n        },\r\n        propertyIndex: {\r\n          value: shape.ix\r\n        },\r\n        mn: {\r\n          value: shape.mn\r\n        },\r\n        propertyGroup: {\r\n          value: propertyGroup\r\n        }\r\n      });\r\n      return interfaceFunction;\r\n    };\r\n  }();\r\n\r\n  var ShapeExpressionInterface = function () {\r\n    function iterateElements(shapes, view, propertyGroup) {\r\n      var arr = [];\r\n      var i;\r\n      var len = shapes ? shapes.length : 0;\r\n\r\n      for (i = 0; i < len; i += 1) {\r\n        if (shapes[i].ty === 'gr') {\r\n          arr.push(groupInterfaceFactory(shapes[i], view[i], propertyGroup));\r\n        } else if (shapes[i].ty === 'fl') {\r\n          arr.push(fillInterfaceFactory(shapes[i], view[i], propertyGroup));\r\n        } else if (shapes[i].ty === 'st') {\r\n          arr.push(strokeInterfaceFactory(shapes[i], view[i], propertyGroup));\r\n        } else if (shapes[i].ty === 'tm') {\r\n          arr.push(trimInterfaceFactory(shapes[i], view[i], propertyGroup));\r\n        } else if (shapes[i].ty === 'tr') {// arr.push(transformInterfaceFactory(shapes[i],view[i],propertyGroup));\r\n        } else if (shapes[i].ty === 'el') {\r\n          arr.push(ellipseInterfaceFactory(shapes[i], view[i], propertyGroup));\r\n        } else if (shapes[i].ty === 'sr') {\r\n          arr.push(starInterfaceFactory(shapes[i], view[i], propertyGroup));\r\n        } else if (shapes[i].ty === 'sh') {\r\n          arr.push(ShapePathInterface(shapes[i], view[i], propertyGroup));\r\n        } else if (shapes[i].ty === 'rc') {\r\n          arr.push(rectInterfaceFactory(shapes[i], view[i], propertyGroup));\r\n        } else if (shapes[i].ty === 'rd') {\r\n          arr.push(roundedInterfaceFactory(shapes[i], view[i], propertyGroup));\r\n        } else if (shapes[i].ty === 'rp') {\r\n          arr.push(repeaterInterfaceFactory(shapes[i], view[i], propertyGroup));\r\n        } else if (shapes[i].ty === 'gf') {\r\n          arr.push(gradientFillInterfaceFactory(shapes[i], view[i], propertyGroup));\r\n        } else {\r\n          arr.push(defaultInterfaceFactory(shapes[i], view[i], propertyGroup));\r\n        }\r\n      }\r\n\r\n      return arr;\r\n    }\r\n\r\n    function contentsInterfaceFactory(shape, view, propertyGroup) {\r\n      var interfaces;\r\n\r\n      var interfaceFunction = function _interfaceFunction(value) {\r\n        var i = 0;\r\n        var len = interfaces.length;\r\n\r\n        while (i < len) {\r\n          if (interfaces[i]._name === value || interfaces[i].mn === value || interfaces[i].propertyIndex === value || interfaces[i].ix === value || interfaces[i].ind === value) {\r\n            return interfaces[i];\r\n          }\r\n\r\n          i += 1;\r\n        }\r\n\r\n        if (typeof value === 'number') {\r\n          return interfaces[value - 1];\r\n        }\r\n\r\n        return null;\r\n      };\r\n\r\n      interfaceFunction.propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\r\n      interfaces = iterateElements(shape.it, view.it, interfaceFunction.propertyGroup);\r\n      interfaceFunction.numProperties = interfaces.length;\r\n      var transformInterface = transformInterfaceFactory(shape.it[shape.it.length - 1], view.it[view.it.length - 1], interfaceFunction.propertyGroup);\r\n      interfaceFunction.transform = transformInterface;\r\n      interfaceFunction.propertyIndex = shape.cix;\r\n      interfaceFunction._name = shape.nm;\r\n      return interfaceFunction;\r\n    }\r\n\r\n    function groupInterfaceFactory(shape, view, propertyGroup) {\r\n      var interfaceFunction = function _interfaceFunction(value) {\r\n        switch (value) {\r\n          case 'ADBE Vectors Group':\r\n          case 'Contents':\r\n          case 2:\r\n            return interfaceFunction.content;\r\n          // Not necessary for now. Keeping them here in case a new case appears\r\n          // case 'ADBE Vector Transform Group':\r\n          // case 3:\r\n\r\n          default:\r\n            return interfaceFunction.transform;\r\n        }\r\n      };\r\n\r\n      interfaceFunction.propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\r\n      var content = contentsInterfaceFactory(shape, view, interfaceFunction.propertyGroup);\r\n      var transformInterface = transformInterfaceFactory(shape.it[shape.it.length - 1], view.it[view.it.length - 1], interfaceFunction.propertyGroup);\r\n      interfaceFunction.content = content;\r\n      interfaceFunction.transform = transformInterface;\r\n      Object.defineProperty(interfaceFunction, '_name', {\r\n        get: function get() {\r\n          return shape.nm;\r\n        }\r\n      }); // interfaceFunction.content = interfaceFunction;\r\n\r\n      interfaceFunction.numProperties = shape.np;\r\n      interfaceFunction.propertyIndex = shape.ix;\r\n      interfaceFunction.nm = shape.nm;\r\n      interfaceFunction.mn = shape.mn;\r\n      return interfaceFunction;\r\n    }\r\n\r\n    function fillInterfaceFactory(shape, view, propertyGroup) {\r\n      function interfaceFunction(val) {\r\n        if (val === 'Color' || val === 'color') {\r\n          return interfaceFunction.color;\r\n        }\r\n\r\n        if (val === 'Opacity' || val === 'opacity') {\r\n          return interfaceFunction.opacity;\r\n        }\r\n\r\n        return null;\r\n      }\r\n\r\n      Object.defineProperties(interfaceFunction, {\r\n        color: {\r\n          get: ExpressionPropertyInterface(view.c)\r\n        },\r\n        opacity: {\r\n          get: ExpressionPropertyInterface(view.o)\r\n        },\r\n        _name: {\r\n          value: shape.nm\r\n        },\r\n        mn: {\r\n          value: shape.mn\r\n        }\r\n      });\r\n      view.c.setGroupProperty(PropertyInterface('Color', propertyGroup));\r\n      view.o.setGroupProperty(PropertyInterface('Opacity', propertyGroup));\r\n      return interfaceFunction;\r\n    }\r\n\r\n    function gradientFillInterfaceFactory(shape, view, propertyGroup) {\r\n      function interfaceFunction(val) {\r\n        if (val === 'Start Point' || val === 'start point') {\r\n          return interfaceFunction.startPoint;\r\n        }\r\n\r\n        if (val === 'End Point' || val === 'end point') {\r\n          return interfaceFunction.endPoint;\r\n        }\r\n\r\n        if (val === 'Opacity' || val === 'opacity') {\r\n          return interfaceFunction.opacity;\r\n        }\r\n\r\n        return null;\r\n      }\r\n\r\n      Object.defineProperties(interfaceFunction, {\r\n        startPoint: {\r\n          get: ExpressionPropertyInterface(view.s)\r\n        },\r\n        endPoint: {\r\n          get: ExpressionPropertyInterface(view.e)\r\n        },\r\n        opacity: {\r\n          get: ExpressionPropertyInterface(view.o)\r\n        },\r\n        type: {\r\n          get: function get() {\r\n            return 'a';\r\n          }\r\n        },\r\n        _name: {\r\n          value: shape.nm\r\n        },\r\n        mn: {\r\n          value: shape.mn\r\n        }\r\n      });\r\n      view.s.setGroupProperty(PropertyInterface('Start Point', propertyGroup));\r\n      view.e.setGroupProperty(PropertyInterface('End Point', propertyGroup));\r\n      view.o.setGroupProperty(PropertyInterface('Opacity', propertyGroup));\r\n      return interfaceFunction;\r\n    }\r\n\r\n    function defaultInterfaceFactory() {\r\n      function interfaceFunction() {\r\n        return null;\r\n      }\r\n\r\n      return interfaceFunction;\r\n    }\r\n\r\n    function strokeInterfaceFactory(shape, view, propertyGroup) {\r\n      var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\r\n\r\n      var _dashPropertyGroup = propertyGroupFactory(dashOb, _propertyGroup);\r\n\r\n      function addPropertyToDashOb(i) {\r\n        Object.defineProperty(dashOb, shape.d[i].nm, {\r\n          get: ExpressionPropertyInterface(view.d.dataProps[i].p)\r\n        });\r\n      }\r\n\r\n      var i;\r\n      var len = shape.d ? shape.d.length : 0;\r\n      var dashOb = {};\r\n\r\n      for (i = 0; i < len; i += 1) {\r\n        addPropertyToDashOb(i);\r\n        view.d.dataProps[i].p.setGroupProperty(_dashPropertyGroup);\r\n      }\r\n\r\n      function interfaceFunction(val) {\r\n        if (val === 'Color' || val === 'color') {\r\n          return interfaceFunction.color;\r\n        }\r\n\r\n        if (val === 'Opacity' || val === 'opacity') {\r\n          return interfaceFunction.opacity;\r\n        }\r\n\r\n        if (val === 'Stroke Width' || val === 'stroke width') {\r\n          return interfaceFunction.strokeWidth;\r\n        }\r\n\r\n        return null;\r\n      }\r\n\r\n      Object.defineProperties(interfaceFunction, {\r\n        color: {\r\n          get: ExpressionPropertyInterface(view.c)\r\n        },\r\n        opacity: {\r\n          get: ExpressionPropertyInterface(view.o)\r\n        },\r\n        strokeWidth: {\r\n          get: ExpressionPropertyInterface(view.w)\r\n        },\r\n        dash: {\r\n          get: function get() {\r\n            return dashOb;\r\n          }\r\n        },\r\n        _name: {\r\n          value: shape.nm\r\n        },\r\n        mn: {\r\n          value: shape.mn\r\n        }\r\n      });\r\n      view.c.setGroupProperty(PropertyInterface('Color', _propertyGroup));\r\n      view.o.setGroupProperty(PropertyInterface('Opacity', _propertyGroup));\r\n      view.w.setGroupProperty(PropertyInterface('Stroke Width', _propertyGroup));\r\n      return interfaceFunction;\r\n    }\r\n\r\n    function trimInterfaceFactory(shape, view, propertyGroup) {\r\n      function interfaceFunction(val) {\r\n        if (val === shape.e.ix || val === 'End' || val === 'end') {\r\n          return interfaceFunction.end;\r\n        }\r\n\r\n        if (val === shape.s.ix) {\r\n          return interfaceFunction.start;\r\n        }\r\n\r\n        if (val === shape.o.ix) {\r\n          return interfaceFunction.offset;\r\n        }\r\n\r\n        return null;\r\n      }\r\n\r\n      var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\r\n\r\n      interfaceFunction.propertyIndex = shape.ix;\r\n      view.s.setGroupProperty(PropertyInterface('Start', _propertyGroup));\r\n      view.e.setGroupProperty(PropertyInterface('End', _propertyGroup));\r\n      view.o.setGroupProperty(PropertyInterface('Offset', _propertyGroup));\r\n      interfaceFunction.propertyIndex = shape.ix;\r\n      interfaceFunction.propertyGroup = propertyGroup;\r\n      Object.defineProperties(interfaceFunction, {\r\n        start: {\r\n          get: ExpressionPropertyInterface(view.s)\r\n        },\r\n        end: {\r\n          get: ExpressionPropertyInterface(view.e)\r\n        },\r\n        offset: {\r\n          get: ExpressionPropertyInterface(view.o)\r\n        },\r\n        _name: {\r\n          value: shape.nm\r\n        }\r\n      });\r\n      interfaceFunction.mn = shape.mn;\r\n      return interfaceFunction;\r\n    }\r\n\r\n    function transformInterfaceFactory(shape, view, propertyGroup) {\r\n      function interfaceFunction(value) {\r\n        if (shape.a.ix === value || value === 'Anchor Point') {\r\n          return interfaceFunction.anchorPoint;\r\n        }\r\n\r\n        if (shape.o.ix === value || value === 'Opacity') {\r\n          return interfaceFunction.opacity;\r\n        }\r\n\r\n        if (shape.p.ix === value || value === 'Position') {\r\n          return interfaceFunction.position;\r\n        }\r\n\r\n        if (shape.r.ix === value || value === 'Rotation' || value === 'ADBE Vector Rotation') {\r\n          return interfaceFunction.rotation;\r\n        }\r\n\r\n        if (shape.s.ix === value || value === 'Scale') {\r\n          return interfaceFunction.scale;\r\n        }\r\n\r\n        if (shape.sk && shape.sk.ix === value || value === 'Skew') {\r\n          return interfaceFunction.skew;\r\n        }\r\n\r\n        if (shape.sa && shape.sa.ix === value || value === 'Skew Axis') {\r\n          return interfaceFunction.skewAxis;\r\n        }\r\n\r\n        return null;\r\n      }\r\n\r\n      var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\r\n\r\n      view.transform.mProps.o.setGroupProperty(PropertyInterface('Opacity', _propertyGroup));\r\n      view.transform.mProps.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\r\n      view.transform.mProps.a.setGroupProperty(PropertyInterface('Anchor Point', _propertyGroup));\r\n      view.transform.mProps.s.setGroupProperty(PropertyInterface('Scale', _propertyGroup));\r\n      view.transform.mProps.r.setGroupProperty(PropertyInterface('Rotation', _propertyGroup));\r\n\r\n      if (view.transform.mProps.sk) {\r\n        view.transform.mProps.sk.setGroupProperty(PropertyInterface('Skew', _propertyGroup));\r\n        view.transform.mProps.sa.setGroupProperty(PropertyInterface('Skew Angle', _propertyGroup));\r\n      }\r\n\r\n      view.transform.op.setGroupProperty(PropertyInterface('Opacity', _propertyGroup));\r\n      Object.defineProperties(interfaceFunction, {\r\n        opacity: {\r\n          get: ExpressionPropertyInterface(view.transform.mProps.o)\r\n        },\r\n        position: {\r\n          get: ExpressionPropertyInterface(view.transform.mProps.p)\r\n        },\r\n        anchorPoint: {\r\n          get: ExpressionPropertyInterface(view.transform.mProps.a)\r\n        },\r\n        scale: {\r\n          get: ExpressionPropertyInterface(view.transform.mProps.s)\r\n        },\r\n        rotation: {\r\n          get: ExpressionPropertyInterface(view.transform.mProps.r)\r\n        },\r\n        skew: {\r\n          get: ExpressionPropertyInterface(view.transform.mProps.sk)\r\n        },\r\n        skewAxis: {\r\n          get: ExpressionPropertyInterface(view.transform.mProps.sa)\r\n        },\r\n        _name: {\r\n          value: shape.nm\r\n        }\r\n      });\r\n      interfaceFunction.ty = 'tr';\r\n      interfaceFunction.mn = shape.mn;\r\n      interfaceFunction.propertyGroup = propertyGroup;\r\n      return interfaceFunction;\r\n    }\r\n\r\n    function ellipseInterfaceFactory(shape, view, propertyGroup) {\r\n      function interfaceFunction(value) {\r\n        if (shape.p.ix === value) {\r\n          return interfaceFunction.position;\r\n        }\r\n\r\n        if (shape.s.ix === value) {\r\n          return interfaceFunction.size;\r\n        }\r\n\r\n        return null;\r\n      }\r\n\r\n      var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\r\n\r\n      interfaceFunction.propertyIndex = shape.ix;\r\n      var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh;\r\n      prop.s.setGroupProperty(PropertyInterface('Size', _propertyGroup));\r\n      prop.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\r\n      Object.defineProperties(interfaceFunction, {\r\n        size: {\r\n          get: ExpressionPropertyInterface(prop.s)\r\n        },\r\n        position: {\r\n          get: ExpressionPropertyInterface(prop.p)\r\n        },\r\n        _name: {\r\n          value: shape.nm\r\n        }\r\n      });\r\n      interfaceFunction.mn = shape.mn;\r\n      return interfaceFunction;\r\n    }\r\n\r\n    function starInterfaceFactory(shape, view, propertyGroup) {\r\n      function interfaceFunction(value) {\r\n        if (shape.p.ix === value) {\r\n          return interfaceFunction.position;\r\n        }\r\n\r\n        if (shape.r.ix === value) {\r\n          return interfaceFunction.rotation;\r\n        }\r\n\r\n        if (shape.pt.ix === value) {\r\n          return interfaceFunction.points;\r\n        }\r\n\r\n        if (shape.or.ix === value || value === 'ADBE Vector Star Outer Radius') {\r\n          return interfaceFunction.outerRadius;\r\n        }\r\n\r\n        if (shape.os.ix === value) {\r\n          return interfaceFunction.outerRoundness;\r\n        }\r\n\r\n        if (shape.ir && (shape.ir.ix === value || value === 'ADBE Vector Star Inner Radius')) {\r\n          return interfaceFunction.innerRadius;\r\n        }\r\n\r\n        if (shape.is && shape.is.ix === value) {\r\n          return interfaceFunction.innerRoundness;\r\n        }\r\n\r\n        return null;\r\n      }\r\n\r\n      var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\r\n\r\n      var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh;\r\n      interfaceFunction.propertyIndex = shape.ix;\r\n      prop.or.setGroupProperty(PropertyInterface('Outer Radius', _propertyGroup));\r\n      prop.os.setGroupProperty(PropertyInterface('Outer Roundness', _propertyGroup));\r\n      prop.pt.setGroupProperty(PropertyInterface('Points', _propertyGroup));\r\n      prop.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\r\n      prop.r.setGroupProperty(PropertyInterface('Rotation', _propertyGroup));\r\n\r\n      if (shape.ir) {\r\n        prop.ir.setGroupProperty(PropertyInterface('Inner Radius', _propertyGroup));\r\n        prop.is.setGroupProperty(PropertyInterface('Inner Roundness', _propertyGroup));\r\n      }\r\n\r\n      Object.defineProperties(interfaceFunction, {\r\n        position: {\r\n          get: ExpressionPropertyInterface(prop.p)\r\n        },\r\n        rotation: {\r\n          get: ExpressionPropertyInterface(prop.r)\r\n        },\r\n        points: {\r\n          get: ExpressionPropertyInterface(prop.pt)\r\n        },\r\n        outerRadius: {\r\n          get: ExpressionPropertyInterface(prop.or)\r\n        },\r\n        outerRoundness: {\r\n          get: ExpressionPropertyInterface(prop.os)\r\n        },\r\n        innerRadius: {\r\n          get: ExpressionPropertyInterface(prop.ir)\r\n        },\r\n        innerRoundness: {\r\n          get: ExpressionPropertyInterface(prop.is)\r\n        },\r\n        _name: {\r\n          value: shape.nm\r\n        }\r\n      });\r\n      interfaceFunction.mn = shape.mn;\r\n      return interfaceFunction;\r\n    }\r\n\r\n    function rectInterfaceFactory(shape, view, propertyGroup) {\r\n      function interfaceFunction(value) {\r\n        if (shape.p.ix === value) {\r\n          return interfaceFunction.position;\r\n        }\r\n\r\n        if (shape.r.ix === value) {\r\n          return interfaceFunction.roundness;\r\n        }\r\n\r\n        if (shape.s.ix === value || value === 'Size' || value === 'ADBE Vector Rect Size') {\r\n          return interfaceFunction.size;\r\n        }\r\n\r\n        return null;\r\n      }\r\n\r\n      var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\r\n\r\n      var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh;\r\n      interfaceFunction.propertyIndex = shape.ix;\r\n      prop.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\r\n      prop.s.setGroupProperty(PropertyInterface('Size', _propertyGroup));\r\n      prop.r.setGroupProperty(PropertyInterface('Rotation', _propertyGroup));\r\n      Object.defineProperties(interfaceFunction, {\r\n        position: {\r\n          get: ExpressionPropertyInterface(prop.p)\r\n        },\r\n        roundness: {\r\n          get: ExpressionPropertyInterface(prop.r)\r\n        },\r\n        size: {\r\n          get: ExpressionPropertyInterface(prop.s)\r\n        },\r\n        _name: {\r\n          value: shape.nm\r\n        }\r\n      });\r\n      interfaceFunction.mn = shape.mn;\r\n      return interfaceFunction;\r\n    }\r\n\r\n    function roundedInterfaceFactory(shape, view, propertyGroup) {\r\n      function interfaceFunction(value) {\r\n        if (shape.r.ix === value || value === 'Round Corners 1') {\r\n          return interfaceFunction.radius;\r\n        }\r\n\r\n        return null;\r\n      }\r\n\r\n      var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\r\n\r\n      var prop = view;\r\n      interfaceFunction.propertyIndex = shape.ix;\r\n      prop.rd.setGroupProperty(PropertyInterface('Radius', _propertyGroup));\r\n      Object.defineProperties(interfaceFunction, {\r\n        radius: {\r\n          get: ExpressionPropertyInterface(prop.rd)\r\n        },\r\n        _name: {\r\n          value: shape.nm\r\n        }\r\n      });\r\n      interfaceFunction.mn = shape.mn;\r\n      return interfaceFunction;\r\n    }\r\n\r\n    function repeaterInterfaceFactory(shape, view, propertyGroup) {\r\n      function interfaceFunction(value) {\r\n        if (shape.c.ix === value || value === 'Copies') {\r\n          return interfaceFunction.copies;\r\n        }\r\n\r\n        if (shape.o.ix === value || value === 'Offset') {\r\n          return interfaceFunction.offset;\r\n        }\r\n\r\n        return null;\r\n      }\r\n\r\n      var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\r\n\r\n      var prop = view;\r\n      interfaceFunction.propertyIndex = shape.ix;\r\n      prop.c.setGroupProperty(PropertyInterface('Copies', _propertyGroup));\r\n      prop.o.setGroupProperty(PropertyInterface('Offset', _propertyGroup));\r\n      Object.defineProperties(interfaceFunction, {\r\n        copies: {\r\n          get: ExpressionPropertyInterface(prop.c)\r\n        },\r\n        offset: {\r\n          get: ExpressionPropertyInterface(prop.o)\r\n        },\r\n        _name: {\r\n          value: shape.nm\r\n        }\r\n      });\r\n      interfaceFunction.mn = shape.mn;\r\n      return interfaceFunction;\r\n    }\r\n\r\n    return function (shapes, view, propertyGroup) {\r\n      var interfaces;\r\n\r\n      function _interfaceFunction(value) {\r\n        if (typeof value === 'number') {\r\n          value = value === undefined ? 1 : value;\r\n\r\n          if (value === 0) {\r\n            return propertyGroup;\r\n          }\r\n\r\n          return interfaces[value - 1];\r\n        }\r\n\r\n        var i = 0;\r\n        var len = interfaces.length;\r\n\r\n        while (i < len) {\r\n          if (interfaces[i]._name === value) {\r\n            return interfaces[i];\r\n          }\r\n\r\n          i += 1;\r\n        }\r\n\r\n        return null;\r\n      }\r\n\r\n      function parentGroupWrapper() {\r\n        return propertyGroup;\r\n      }\r\n\r\n      _interfaceFunction.propertyGroup = propertyGroupFactory(_interfaceFunction, parentGroupWrapper);\r\n      interfaces = iterateElements(shapes, view, _interfaceFunction.propertyGroup);\r\n      _interfaceFunction.numProperties = interfaces.length;\r\n      _interfaceFunction._name = 'Contents';\r\n      return _interfaceFunction;\r\n    };\r\n  }();\r\n\r\n  var TextExpressionInterface = function () {\r\n    return function (elem) {\r\n      var _prevValue;\r\n\r\n      var _sourceText;\r\n\r\n      function _thisLayerFunction(name) {\r\n        switch (name) {\r\n          case 'ADBE Text Document':\r\n            return _thisLayerFunction.sourceText;\r\n\r\n          default:\r\n            return null;\r\n        }\r\n      }\r\n\r\n      Object.defineProperty(_thisLayerFunction, 'sourceText', {\r\n        get: function get() {\r\n          elem.textProperty.getValue();\r\n          var stringValue = elem.textProperty.currentData.t;\r\n\r\n          if (stringValue !== _prevValue) {\r\n            elem.textProperty.currentData.t = _prevValue;\r\n            _sourceText = new String(stringValue); // eslint-disable-line no-new-wrappers\r\n            // If stringValue is an empty string, eval returns undefined, so it has to be returned as a String primitive\r\n\r\n            _sourceText.value = stringValue || new String(stringValue); // eslint-disable-line no-new-wrappers\r\n          }\r\n\r\n          return _sourceText;\r\n        }\r\n      });\r\n      return _thisLayerFunction;\r\n    };\r\n  }();\r\n\r\n  function _typeof$2(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$2 = function _typeof(obj) { return typeof obj; }; } else { _typeof$2 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$2(obj); }\r\n\r\n  var FootageInterface = function () {\r\n    var outlineInterfaceFactory = function outlineInterfaceFactory(elem) {\r\n      var currentPropertyName = '';\r\n      var currentProperty = elem.getFootageData();\r\n\r\n      function init() {\r\n        currentPropertyName = '';\r\n        currentProperty = elem.getFootageData();\r\n        return searchProperty;\r\n      }\r\n\r\n      function searchProperty(value) {\r\n        if (currentProperty[value]) {\r\n          currentPropertyName = value;\r\n          currentProperty = currentProperty[value];\r\n\r\n          if (_typeof$2(currentProperty) === 'object') {\r\n            return searchProperty;\r\n          }\r\n\r\n          return currentProperty;\r\n        }\r\n\r\n        var propertyNameIndex = value.indexOf(currentPropertyName);\r\n\r\n        if (propertyNameIndex !== -1) {\r\n          var index = parseInt(value.substr(propertyNameIndex + currentPropertyName.length), 10);\r\n          currentProperty = currentProperty[index];\r\n\r\n          if (_typeof$2(currentProperty) === 'object') {\r\n            return searchProperty;\r\n          }\r\n\r\n          return currentProperty;\r\n        }\r\n\r\n        return '';\r\n      }\r\n\r\n      return init;\r\n    };\r\n\r\n    var dataInterfaceFactory = function dataInterfaceFactory(elem) {\r\n      function interfaceFunction(value) {\r\n        if (value === 'Outline') {\r\n          return interfaceFunction.outlineInterface();\r\n        }\r\n\r\n        return null;\r\n      }\r\n\r\n      interfaceFunction._name = 'Outline';\r\n      interfaceFunction.outlineInterface = outlineInterfaceFactory(elem);\r\n      return interfaceFunction;\r\n    };\r\n\r\n    return function (elem) {\r\n      function _interfaceFunction(value) {\r\n        if (value === 'Data') {\r\n          return _interfaceFunction.dataInterface;\r\n        }\r\n\r\n        return null;\r\n      }\r\n\r\n      _interfaceFunction._name = 'Data';\r\n      _interfaceFunction.dataInterface = dataInterfaceFactory(elem);\r\n      return _interfaceFunction;\r\n    };\r\n  }();\r\n\r\n  var interfaces = {\r\n    layer: LayerExpressionInterface,\r\n    effects: EffectsExpressionInterface,\r\n    comp: CompExpressionInterface,\r\n    shape: ShapeExpressionInterface,\r\n    text: TextExpressionInterface,\r\n    footage: FootageInterface\r\n  };\r\n\r\n  function getInterface(type) {\r\n    return interfaces[type] || null;\r\n  }\r\n\r\n  function _typeof$1(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$1 = function _typeof(obj) { return typeof obj; }; } else { _typeof$1 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$1(obj); }\r\n\r\n  /* eslint-disable */\r\n\r\n  /*\r\n   Copyright 2014 David Bau.\r\n\r\n   Permission is hereby granted, free of charge, to any person obtaining\r\n   a copy of this software and associated documentation files (the\r\n   \"Software\"), to deal in the Software without restriction, including\r\n   without limitation the rights to use, copy, modify, merge, publish,\r\n   distribute, sublicense, and/or sell copies of the Software, and to\r\n   permit persons to whom the Software is furnished to do so, subject to\r\n   the following conditions:\r\n\r\n   The above copyright notice and this permission notice shall be\r\n   included in all copies or substantial portions of the Software.\r\n\r\n   THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\r\n   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r\n   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\r\n   IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\r\n   CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\r\n   TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\r\n   SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r\n\r\n   */\r\n  function seedRandom(pool, math) {\r\n    //\r\n    // The following constants are related to IEEE 754 limits.\r\n    //\r\n    var global = this,\r\n        width = 256,\r\n        // each RC4 output is 0 <= x < 256\r\n    chunks = 6,\r\n        // at least six RC4 outputs for each double\r\n    digits = 52,\r\n        // there are 52 significant digits in a double\r\n    rngname = 'random',\r\n        // rngname: name for Math.random and Math.seedrandom\r\n    startdenom = math.pow(width, chunks),\r\n        significance = math.pow(2, digits),\r\n        overflow = significance * 2,\r\n        mask = width - 1,\r\n        nodecrypto; // node.js crypto module, initialized at the bottom.\r\n    //\r\n    // seedrandom()\r\n    // This is the seedrandom function described above.\r\n    //\r\n\r\n    function seedrandom(seed, options, callback) {\r\n      var key = [];\r\n      options = options === true ? {\r\n        entropy: true\r\n      } : options || {}; // Flatten the seed string or build one from local entropy if needed.\r\n\r\n      var shortseed = mixkey(flatten(options.entropy ? [seed, tostring(pool)] : seed === null ? autoseed() : seed, 3), key); // Use the seed to initialize an ARC4 generator.\r\n\r\n      var arc4 = new ARC4(key); // This function returns a random double in [0, 1) that contains\r\n      // randomness in every bit of the mantissa of the IEEE 754 value.\r\n\r\n      var prng = function prng() {\r\n        var n = arc4.g(chunks),\r\n            // Start with a numerator n < 2 ^ 48\r\n        d = startdenom,\r\n            //   and denominator d = 2 ^ 48.\r\n        x = 0; //   and no 'extra last byte'.\r\n\r\n        while (n < significance) {\r\n          // Fill up all significant digits by\r\n          n = (n + x) * width; //   shifting numerator and\r\n\r\n          d *= width; //   denominator and generating a\r\n\r\n          x = arc4.g(1); //   new least-significant-byte.\r\n        }\r\n\r\n        while (n >= overflow) {\r\n          // To avoid rounding up, before adding\r\n          n /= 2; //   last byte, shift everything\r\n\r\n          d /= 2; //   right using integer math until\r\n\r\n          x >>>= 1; //   we have exactly the desired bits.\r\n        }\r\n\r\n        return (n + x) / d; // Form the number within [0, 1).\r\n      };\r\n\r\n      prng.int32 = function () {\r\n        return arc4.g(4) | 0;\r\n      };\r\n\r\n      prng.quick = function () {\r\n        return arc4.g(4) / 0x100000000;\r\n      };\r\n\r\n      prng[\"double\"] = prng; // Mix the randomness into accumulated entropy.\r\n\r\n      mixkey(tostring(arc4.S), pool); // Calling convention: what to return as a function of prng, seed, is_math.\r\n\r\n      return (options.pass || callback || function (prng, seed, is_math_call, state) {\r\n        if (state) {\r\n          // Load the arc4 state from the given state if it has an S array.\r\n          if (state.S) {\r\n            copy(state, arc4);\r\n          } // Only provide the .state method if requested via options.state.\r\n\r\n\r\n          prng.state = function () {\r\n            return copy(arc4, {});\r\n          };\r\n        } // If called as a method of Math (Math.seedrandom()), mutate\r\n        // Math.random because that is how seedrandom.js has worked since v1.0.\r\n\r\n\r\n        if (is_math_call) {\r\n          math[rngname] = prng;\r\n          return seed;\r\n        } // Otherwise, it is a newer calling convention, so return the\r\n        // prng directly.\r\n        else return prng;\r\n      })(prng, shortseed, 'global' in options ? options.global : this == math, options.state);\r\n    }\r\n\r\n    math['seed' + rngname] = seedrandom; //\r\n    // ARC4\r\n    //\r\n    // An ARC4 implementation.  The constructor takes a key in the form of\r\n    // an array of at most (width) integers that should be 0 <= x < (width).\r\n    //\r\n    // The g(count) method returns a pseudorandom integer that concatenates\r\n    // the next (count) outputs from ARC4.  Its return value is a number x\r\n    // that is in the range 0 <= x < (width ^ count).\r\n    //\r\n\r\n    function ARC4(key) {\r\n      var t,\r\n          keylen = key.length,\r\n          me = this,\r\n          i = 0,\r\n          j = me.i = me.j = 0,\r\n          s = me.S = []; // The empty key [] is treated as [0].\r\n\r\n      if (!keylen) {\r\n        key = [keylen++];\r\n      } // Set up S using the standard key scheduling algorithm.\r\n\r\n\r\n      while (i < width) {\r\n        s[i] = i++;\r\n      }\r\n\r\n      for (i = 0; i < width; i++) {\r\n        s[i] = s[j = mask & j + key[i % keylen] + (t = s[i])];\r\n        s[j] = t;\r\n      } // The \"g\" method returns the next (count) outputs as one number.\r\n\r\n\r\n      me.g = function (count) {\r\n        // Using instance members instead of closure state nearly doubles speed.\r\n        var t,\r\n            r = 0,\r\n            i = me.i,\r\n            j = me.j,\r\n            s = me.S;\r\n\r\n        while (count--) {\r\n          t = s[i = mask & i + 1];\r\n          r = r * width + s[mask & (s[i] = s[j = mask & j + t]) + (s[j] = t)];\r\n        }\r\n\r\n        me.i = i;\r\n        me.j = j;\r\n        return r; // For robust unpredictability, the function call below automatically\r\n        // discards an initial batch of values.  This is called RC4-drop[256].\r\n        // See http://google.com/search?q=rsa+fluhrer+response&btnI\r\n      };\r\n    } //\r\n    // copy()\r\n    // Copies internal state of ARC4 to or from a plain object.\r\n    //\r\n\r\n\r\n    function copy(f, t) {\r\n      t.i = f.i;\r\n      t.j = f.j;\r\n      t.S = f.S.slice();\r\n      return t;\r\n    } //\r\n    // flatten()\r\n    // Converts an object tree to nested arrays of strings.\r\n    //\r\n\r\n\r\n    function flatten(obj, depth) {\r\n      var result = [],\r\n          typ = _typeof$1(obj),\r\n          prop;\r\n\r\n      if (depth && typ == 'object') {\r\n        for (prop in obj) {\r\n          try {\r\n            result.push(flatten(obj[prop], depth - 1));\r\n          } catch (e) {}\r\n        }\r\n      }\r\n\r\n      return result.length ? result : typ == 'string' ? obj : obj + '\\0';\r\n    } //\r\n    // mixkey()\r\n    // Mixes a string seed into a key that is an array of integers, and\r\n    // returns a shortened string seed that is equivalent to the result key.\r\n    //\r\n\r\n\r\n    function mixkey(seed, key) {\r\n      var stringseed = seed + '',\r\n          smear,\r\n          j = 0;\r\n\r\n      while (j < stringseed.length) {\r\n        key[mask & j] = mask & (smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++);\r\n      }\r\n\r\n      return tostring(key);\r\n    } //\r\n    // autoseed()\r\n    // Returns an object for autoseeding, using window.crypto and Node crypto\r\n    // module if available.\r\n    //\r\n\r\n\r\n    function autoseed() {\r\n      try {\r\n        if (nodecrypto) {\r\n          return tostring(nodecrypto.randomBytes(width));\r\n        }\r\n\r\n        var out = new Uint8Array(width);\r\n        (global.crypto || global.msCrypto).getRandomValues(out);\r\n        return tostring(out);\r\n      } catch (e) {\r\n        var browser = global.navigator,\r\n            plugins = browser && browser.plugins;\r\n        return [+new Date(), global, plugins, global.screen, tostring(pool)];\r\n      }\r\n    } //\r\n    // tostring()\r\n    // Converts an array of charcodes to a string\r\n    //\r\n\r\n\r\n    function tostring(a) {\r\n      return String.fromCharCode.apply(0, a);\r\n    } //\r\n    // When seedrandom.js is loaded, we immediately mix a few bits\r\n    // from the built-in RNG into the entropy pool.  Because we do\r\n    // not want to interfere with deterministic PRNG state later,\r\n    // seedrandom will not call math.random on its own again after\r\n    // initialization.\r\n    //\r\n\r\n\r\n    mixkey(math.random(), pool); //\r\n    // Nodejs and AMD support: export the implementation as a module using\r\n    // either convention.\r\n    //\r\n    // End anonymous scope, and pass initial values.\r\n  }\r\n\r\n  ;\r\n\r\n  function initialize$2(BMMath) {\r\n    seedRandom([], BMMath);\r\n  }\r\n\r\n  var propTypes = {\r\n    SHAPE: 'shape'\r\n  };\r\n\r\n  function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\r\n\r\n  var ExpressionManager = function () {\r\n    'use strict';\r\n\r\n    var ob = {};\r\n    var Math = BMMath;\r\n    var window = null;\r\n    var document = null;\r\n    var XMLHttpRequest = null;\r\n    var fetch = null;\r\n    var frames = null;\r\n    initialize$2(BMMath);\r\n\r\n    function $bm_isInstanceOfArray(arr) {\r\n      return arr.constructor === Array || arr.constructor === Float32Array;\r\n    }\r\n\r\n    function isNumerable(tOfV, v) {\r\n      return tOfV === 'number' || tOfV === 'boolean' || tOfV === 'string' || v instanceof Number;\r\n    }\r\n\r\n    function $bm_neg(a) {\r\n      var tOfA = _typeof(a);\r\n\r\n      if (tOfA === 'number' || tOfA === 'boolean' || a instanceof Number) {\r\n        return -a;\r\n      }\r\n\r\n      if ($bm_isInstanceOfArray(a)) {\r\n        var i;\r\n        var lenA = a.length;\r\n        var retArr = [];\r\n\r\n        for (i = 0; i < lenA; i += 1) {\r\n          retArr[i] = -a[i];\r\n        }\r\n\r\n        return retArr;\r\n      }\r\n\r\n      if (a.propType) {\r\n        return a.v;\r\n      }\r\n\r\n      return -a;\r\n    }\r\n\r\n    var easeInBez = BezierFactory.getBezierEasing(0.333, 0, 0.833, 0.833, 'easeIn').get;\r\n    var easeOutBez = BezierFactory.getBezierEasing(0.167, 0.167, 0.667, 1, 'easeOut').get;\r\n    var easeInOutBez = BezierFactory.getBezierEasing(0.33, 0, 0.667, 1, 'easeInOut').get;\r\n\r\n    function sum(a, b) {\r\n      var tOfA = _typeof(a);\r\n\r\n      var tOfB = _typeof(b);\r\n\r\n      if (tOfA === 'string' || tOfB === 'string') {\r\n        return a + b;\r\n      }\r\n\r\n      if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\r\n        return a + b;\r\n      }\r\n\r\n      if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\r\n        a = a.slice(0);\r\n        a[0] += b;\r\n        return a;\r\n      }\r\n\r\n      if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\r\n        b = b.slice(0);\r\n        b[0] = a + b[0];\r\n        return b;\r\n      }\r\n\r\n      if ($bm_isInstanceOfArray(a) && $bm_isInstanceOfArray(b)) {\r\n        var i = 0;\r\n        var lenA = a.length;\r\n        var lenB = b.length;\r\n        var retArr = [];\r\n\r\n        while (i < lenA || i < lenB) {\r\n          if ((typeof a[i] === 'number' || a[i] instanceof Number) && (typeof b[i] === 'number' || b[i] instanceof Number)) {\r\n            retArr[i] = a[i] + b[i];\r\n          } else {\r\n            retArr[i] = b[i] === undefined ? a[i] : a[i] || b[i];\r\n          }\r\n\r\n          i += 1;\r\n        }\r\n\r\n        return retArr;\r\n      }\r\n\r\n      return 0;\r\n    }\r\n\r\n    var add = sum;\r\n\r\n    function sub(a, b) {\r\n      var tOfA = _typeof(a);\r\n\r\n      var tOfB = _typeof(b);\r\n\r\n      if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\r\n        if (tOfA === 'string') {\r\n          a = parseInt(a, 10);\r\n        }\r\n\r\n        if (tOfB === 'string') {\r\n          b = parseInt(b, 10);\r\n        }\r\n\r\n        return a - b;\r\n      }\r\n\r\n      if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\r\n        a = a.slice(0);\r\n        a[0] -= b;\r\n        return a;\r\n      }\r\n\r\n      if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\r\n        b = b.slice(0);\r\n        b[0] = a - b[0];\r\n        return b;\r\n      }\r\n\r\n      if ($bm_isInstanceOfArray(a) && $bm_isInstanceOfArray(b)) {\r\n        var i = 0;\r\n        var lenA = a.length;\r\n        var lenB = b.length;\r\n        var retArr = [];\r\n\r\n        while (i < lenA || i < lenB) {\r\n          if ((typeof a[i] === 'number' || a[i] instanceof Number) && (typeof b[i] === 'number' || b[i] instanceof Number)) {\r\n            retArr[i] = a[i] - b[i];\r\n          } else {\r\n            retArr[i] = b[i] === undefined ? a[i] : a[i] || b[i];\r\n          }\r\n\r\n          i += 1;\r\n        }\r\n\r\n        return retArr;\r\n      }\r\n\r\n      return 0;\r\n    }\r\n\r\n    function mul(a, b) {\r\n      var tOfA = _typeof(a);\r\n\r\n      var tOfB = _typeof(b);\r\n\r\n      var arr;\r\n\r\n      if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\r\n        return a * b;\r\n      }\r\n\r\n      var i;\r\n      var len;\r\n\r\n      if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\r\n        len = a.length;\r\n        arr = createTypedArray('float32', len);\r\n\r\n        for (i = 0; i < len; i += 1) {\r\n          arr[i] = a[i] * b;\r\n        }\r\n\r\n        return arr;\r\n      }\r\n\r\n      if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\r\n        len = b.length;\r\n        arr = createTypedArray('float32', len);\r\n\r\n        for (i = 0; i < len; i += 1) {\r\n          arr[i] = a * b[i];\r\n        }\r\n\r\n        return arr;\r\n      }\r\n\r\n      return 0;\r\n    }\r\n\r\n    function div(a, b) {\r\n      var tOfA = _typeof(a);\r\n\r\n      var tOfB = _typeof(b);\r\n\r\n      var arr;\r\n\r\n      if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\r\n        return a / b;\r\n      }\r\n\r\n      var i;\r\n      var len;\r\n\r\n      if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\r\n        len = a.length;\r\n        arr = createTypedArray('float32', len);\r\n\r\n        for (i = 0; i < len; i += 1) {\r\n          arr[i] = a[i] / b;\r\n        }\r\n\r\n        return arr;\r\n      }\r\n\r\n      if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\r\n        len = b.length;\r\n        arr = createTypedArray('float32', len);\r\n\r\n        for (i = 0; i < len; i += 1) {\r\n          arr[i] = a / b[i];\r\n        }\r\n\r\n        return arr;\r\n      }\r\n\r\n      return 0;\r\n    }\r\n\r\n    function mod(a, b) {\r\n      if (typeof a === 'string') {\r\n        a = parseInt(a, 10);\r\n      }\r\n\r\n      if (typeof b === 'string') {\r\n        b = parseInt(b, 10);\r\n      }\r\n\r\n      return a % b;\r\n    }\r\n\r\n    var $bm_sum = sum;\r\n    var $bm_sub = sub;\r\n    var $bm_mul = mul;\r\n    var $bm_div = div;\r\n    var $bm_mod = mod;\r\n\r\n    function clamp(num, min, max) {\r\n      if (min > max) {\r\n        var mm = max;\r\n        max = min;\r\n        min = mm;\r\n      }\r\n\r\n      return Math.min(Math.max(num, min), max);\r\n    }\r\n\r\n    function radiansToDegrees(val) {\r\n      return val / degToRads;\r\n    }\r\n\r\n    var radians_to_degrees = radiansToDegrees;\r\n\r\n    function degreesToRadians(val) {\r\n      return val * degToRads;\r\n    }\r\n\r\n    var degrees_to_radians = radiansToDegrees;\r\n    var helperLengthArray = [0, 0, 0, 0, 0, 0];\r\n\r\n    function length(arr1, arr2) {\r\n      if (typeof arr1 === 'number' || arr1 instanceof Number) {\r\n        arr2 = arr2 || 0;\r\n        return Math.abs(arr1 - arr2);\r\n      }\r\n\r\n      if (!arr2) {\r\n        arr2 = helperLengthArray;\r\n      }\r\n\r\n      var i;\r\n      var len = Math.min(arr1.length, arr2.length);\r\n      var addedLength = 0;\r\n\r\n      for (i = 0; i < len; i += 1) {\r\n        addedLength += Math.pow(arr2[i] - arr1[i], 2);\r\n      }\r\n\r\n      return Math.sqrt(addedLength);\r\n    }\r\n\r\n    function normalize(vec) {\r\n      return div(vec, length(vec));\r\n    }\r\n\r\n    function rgbToHsl(val) {\r\n      var r = val[0];\r\n      var g = val[1];\r\n      var b = val[2];\r\n      var max = Math.max(r, g, b);\r\n      var min = Math.min(r, g, b);\r\n      var h;\r\n      var s;\r\n      var l = (max + min) / 2;\r\n\r\n      if (max === min) {\r\n        h = 0; // achromatic\r\n\r\n        s = 0; // achromatic\r\n      } else {\r\n        var d = max - min;\r\n        s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\r\n\r\n        switch (max) {\r\n          case r:\r\n            h = (g - b) / d + (g < b ? 6 : 0);\r\n            break;\r\n\r\n          case g:\r\n            h = (b - r) / d + 2;\r\n            break;\r\n\r\n          case b:\r\n            h = (r - g) / d + 4;\r\n            break;\r\n\r\n          default:\r\n            break;\r\n        }\r\n\r\n        h /= 6;\r\n      }\r\n\r\n      return [h, s, l, val[3]];\r\n    }\r\n\r\n    function hue2rgb(p, q, t) {\r\n      if (t < 0) t += 1;\r\n      if (t > 1) t -= 1;\r\n      if (t < 1 / 6) return p + (q - p) * 6 * t;\r\n      if (t < 1 / 2) return q;\r\n      if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\r\n      return p;\r\n    }\r\n\r\n    function hslToRgb(val) {\r\n      var h = val[0];\r\n      var s = val[1];\r\n      var l = val[2];\r\n      var r;\r\n      var g;\r\n      var b;\r\n\r\n      if (s === 0) {\r\n        r = l; // achromatic\r\n\r\n        b = l; // achromatic\r\n\r\n        g = l; // achromatic\r\n      } else {\r\n        var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\r\n        var p = 2 * l - q;\r\n        r = hue2rgb(p, q, h + 1 / 3);\r\n        g = hue2rgb(p, q, h);\r\n        b = hue2rgb(p, q, h - 1 / 3);\r\n      }\r\n\r\n      return [r, g, b, val[3]];\r\n    }\r\n\r\n    function linear(t, tMin, tMax, value1, value2) {\r\n      if (value1 === undefined || value2 === undefined) {\r\n        value1 = tMin;\r\n        value2 = tMax;\r\n        tMin = 0;\r\n        tMax = 1;\r\n      }\r\n\r\n      if (tMax < tMin) {\r\n        var _tMin = tMax;\r\n        tMax = tMin;\r\n        tMin = _tMin;\r\n      }\r\n\r\n      if (t <= tMin) {\r\n        return value1;\r\n      }\r\n\r\n      if (t >= tMax) {\r\n        return value2;\r\n      }\r\n\r\n      var perc = tMax === tMin ? 0 : (t - tMin) / (tMax - tMin);\r\n\r\n      if (!value1.length) {\r\n        return value1 + (value2 - value1) * perc;\r\n      }\r\n\r\n      var i;\r\n      var len = value1.length;\r\n      var arr = createTypedArray('float32', len);\r\n\r\n      for (i = 0; i < len; i += 1) {\r\n        arr[i] = value1[i] + (value2[i] - value1[i]) * perc;\r\n      }\r\n\r\n      return arr;\r\n    }\r\n\r\n    function random(min, max) {\r\n      if (max === undefined) {\r\n        if (min === undefined) {\r\n          min = 0;\r\n          max = 1;\r\n        } else {\r\n          max = min;\r\n          min = undefined;\r\n        }\r\n      }\r\n\r\n      if (max.length) {\r\n        var i;\r\n        var len = max.length;\r\n\r\n        if (!min) {\r\n          min = createTypedArray('float32', len);\r\n        }\r\n\r\n        var arr = createTypedArray('float32', len);\r\n        var rnd = BMMath.random();\r\n\r\n        for (i = 0; i < len; i += 1) {\r\n          arr[i] = min[i] + rnd * (max[i] - min[i]);\r\n        }\r\n\r\n        return arr;\r\n      }\r\n\r\n      if (min === undefined) {\r\n        min = 0;\r\n      }\r\n\r\n      var rndm = BMMath.random();\r\n      return min + rndm * (max - min);\r\n    }\r\n\r\n    function createPath(points, inTangents, outTangents, closed) {\r\n      var i;\r\n      var len = points.length;\r\n      var path = shapePool.newElement();\r\n      path.setPathData(!!closed, len);\r\n      var arrPlaceholder = [0, 0];\r\n      var inVertexPoint;\r\n      var outVertexPoint;\r\n\r\n      for (i = 0; i < len; i += 1) {\r\n        inVertexPoint = inTangents && inTangents[i] ? inTangents[i] : arrPlaceholder;\r\n        outVertexPoint = outTangents && outTangents[i] ? outTangents[i] : arrPlaceholder;\r\n        path.setTripleAt(points[i][0], points[i][1], outVertexPoint[0] + points[i][0], outVertexPoint[1] + points[i][1], inVertexPoint[0] + points[i][0], inVertexPoint[1] + points[i][1], i, true);\r\n      }\r\n\r\n      return path;\r\n    }\r\n\r\n    function initiateExpression(elem, data, property) {\r\n      // Bail out if we don't want expressions\r\n      function noOp(_value) {\r\n        return _value;\r\n      }\r\n\r\n      if (!elem.globalData.renderConfig.runExpressions) {\r\n        return noOp;\r\n      }\r\n\r\n      var val = data.x;\r\n      var needsVelocity = /velocity(?![\\w\\d])/.test(val);\r\n\r\n      var _needsRandom = val.indexOf('random') !== -1;\r\n\r\n      var elemType = elem.data.ty;\r\n      var transform;\r\n      var $bm_transform;\r\n      var content;\r\n      var effect;\r\n      var thisProperty = property;\r\n      thisProperty.valueAtTime = thisProperty.getValueAtTime;\r\n      Object.defineProperty(thisProperty, 'value', {\r\n        get: function get() {\r\n          return thisProperty.v;\r\n        }\r\n      });\r\n      elem.comp.frameDuration = 1 / elem.comp.globalData.frameRate;\r\n      elem.comp.displayStartTime = 0;\r\n      var inPoint = elem.data.ip / elem.comp.globalData.frameRate;\r\n      var outPoint = elem.data.op / elem.comp.globalData.frameRate;\r\n      var width = elem.data.sw ? elem.data.sw : 0;\r\n      var height = elem.data.sh ? elem.data.sh : 0;\r\n      var name = elem.data.nm;\r\n      var loopIn;\r\n      var loop_in;\r\n      var loopOut;\r\n      var loop_out;\r\n      var smooth;\r\n      var toWorld;\r\n      var fromWorld;\r\n      var fromComp;\r\n      var toComp;\r\n      var fromCompToSurface;\r\n      var position;\r\n      var rotation;\r\n      var anchorPoint;\r\n      var scale;\r\n      var thisLayer;\r\n      var thisComp;\r\n      var mask;\r\n      var valueAtTime;\r\n      var velocityAtTime;\r\n      var scoped_bm_rt; // val = val.replace(/(\\\\?\"|')((http)(s)?(:\\/))?\\/.*?(\\\\?\"|')/g, \"\\\"\\\"\"); // deter potential network calls\r\n\r\n      var expression_function = eval('[function _expression_function(){' + val + ';scoped_bm_rt=$bm_rt}]')[0]; // eslint-disable-line no-eval\r\n\r\n      var numKeys = property.kf ? data.k.length : 0;\r\n      var active = !this.data || this.data.hd !== true;\r\n\r\n      var wiggle = function wiggle(freq, amp) {\r\n        var iWiggle;\r\n        var j;\r\n        var lenWiggle = this.pv.length ? this.pv.length : 1;\r\n        var addedAmps = createTypedArray('float32', lenWiggle);\r\n        freq = 5;\r\n        var iterations = Math.floor(time * freq);\r\n        iWiggle = 0;\r\n        j = 0;\r\n\r\n        while (iWiggle < iterations) {\r\n          // var rnd = BMMath.random();\r\n          for (j = 0; j < lenWiggle; j += 1) {\r\n            addedAmps[j] += -amp + amp * 2 * BMMath.random(); // addedAmps[j] += -amp + amp*2*rnd;\r\n          }\r\n\r\n          iWiggle += 1;\r\n        } // var rnd2 = BMMath.random();\r\n\r\n\r\n        var periods = time * freq;\r\n        var perc = periods - Math.floor(periods);\r\n        var arr = createTypedArray('float32', lenWiggle);\r\n\r\n        if (lenWiggle > 1) {\r\n          for (j = 0; j < lenWiggle; j += 1) {\r\n            arr[j] = this.pv[j] + addedAmps[j] + (-amp + amp * 2 * BMMath.random()) * perc; // arr[j] = this.pv[j] + addedAmps[j] + (-amp + amp*2*rnd)*perc;\r\n            // arr[i] = this.pv[i] + addedAmp + amp1*perc + amp2*(1-perc);\r\n          }\r\n\r\n          return arr;\r\n        }\r\n\r\n        return this.pv + addedAmps[0] + (-amp + amp * 2 * BMMath.random()) * perc;\r\n      }.bind(this);\r\n\r\n      if (thisProperty.loopIn) {\r\n        loopIn = thisProperty.loopIn.bind(thisProperty);\r\n        loop_in = loopIn;\r\n      }\r\n\r\n      if (thisProperty.loopOut) {\r\n        loopOut = thisProperty.loopOut.bind(thisProperty);\r\n        loop_out = loopOut;\r\n      }\r\n\r\n      if (thisProperty.smooth) {\r\n        smooth = thisProperty.smooth.bind(thisProperty);\r\n      }\r\n\r\n      function loopInDuration(type, duration) {\r\n        return loopIn(type, duration, true);\r\n      }\r\n\r\n      function loopOutDuration(type, duration) {\r\n        return loopOut(type, duration, true);\r\n      }\r\n\r\n      if (this.getValueAtTime) {\r\n        valueAtTime = this.getValueAtTime.bind(this);\r\n      }\r\n\r\n      if (this.getVelocityAtTime) {\r\n        velocityAtTime = this.getVelocityAtTime.bind(this);\r\n      }\r\n\r\n      var comp = elem.comp.globalData.projectInterface.bind(elem.comp.globalData.projectInterface);\r\n\r\n      function lookAt(elem1, elem2) {\r\n        var fVec = [elem2[0] - elem1[0], elem2[1] - elem1[1], elem2[2] - elem1[2]];\r\n        var pitch = Math.atan2(fVec[0], Math.sqrt(fVec[1] * fVec[1] + fVec[2] * fVec[2])) / degToRads;\r\n        var yaw = -Math.atan2(fVec[1], fVec[2]) / degToRads;\r\n        return [yaw, pitch, 0];\r\n      }\r\n\r\n      function easeOut(t, tMin, tMax, val1, val2) {\r\n        return applyEase(easeOutBez, t, tMin, tMax, val1, val2);\r\n      }\r\n\r\n      function easeIn(t, tMin, tMax, val1, val2) {\r\n        return applyEase(easeInBez, t, tMin, tMax, val1, val2);\r\n      }\r\n\r\n      function ease(t, tMin, tMax, val1, val2) {\r\n        return applyEase(easeInOutBez, t, tMin, tMax, val1, val2);\r\n      }\r\n\r\n      function applyEase(fn, t, tMin, tMax, val1, val2) {\r\n        if (val1 === undefined) {\r\n          val1 = tMin;\r\n          val2 = tMax;\r\n        } else {\r\n          t = (t - tMin) / (tMax - tMin);\r\n        }\r\n\r\n        if (t > 1) {\r\n          t = 1;\r\n        } else if (t < 0) {\r\n          t = 0;\r\n        }\r\n\r\n        var mult = fn(t);\r\n\r\n        if ($bm_isInstanceOfArray(val1)) {\r\n          var iKey;\r\n          var lenKey = val1.length;\r\n          var arr = createTypedArray('float32', lenKey);\r\n\r\n          for (iKey = 0; iKey < lenKey; iKey += 1) {\r\n            arr[iKey] = (val2[iKey] - val1[iKey]) * mult + val1[iKey];\r\n          }\r\n\r\n          return arr;\r\n        }\r\n\r\n        return (val2 - val1) * mult + val1;\r\n      }\r\n\r\n      function nearestKey(time) {\r\n        var iKey;\r\n        var lenKey = data.k.length;\r\n        var index;\r\n        var keyTime;\r\n\r\n        if (!data.k.length || typeof data.k[0] === 'number') {\r\n          index = 0;\r\n          keyTime = 0;\r\n        } else {\r\n          index = -1;\r\n          time *= elem.comp.globalData.frameRate;\r\n\r\n          if (time < data.k[0].t) {\r\n            index = 1;\r\n            keyTime = data.k[0].t;\r\n          } else {\r\n            for (iKey = 0; iKey < lenKey - 1; iKey += 1) {\r\n              if (time === data.k[iKey].t) {\r\n                index = iKey + 1;\r\n                keyTime = data.k[iKey].t;\r\n                break;\r\n              } else if (time > data.k[iKey].t && time < data.k[iKey + 1].t) {\r\n                if (time - data.k[iKey].t > data.k[iKey + 1].t - time) {\r\n                  index = iKey + 2;\r\n                  keyTime = data.k[iKey + 1].t;\r\n                } else {\r\n                  index = iKey + 1;\r\n                  keyTime = data.k[iKey].t;\r\n                }\r\n\r\n                break;\r\n              }\r\n            }\r\n\r\n            if (index === -1) {\r\n              index = iKey + 1;\r\n              keyTime = data.k[iKey].t;\r\n            }\r\n          }\r\n        }\r\n\r\n        var obKey = {};\r\n        obKey.index = index;\r\n        obKey.time = keyTime / elem.comp.globalData.frameRate;\r\n        return obKey;\r\n      }\r\n\r\n      function key(ind) {\r\n        var obKey;\r\n        var iKey;\r\n        var lenKey;\r\n\r\n        if (!data.k.length || typeof data.k[0] === 'number') {\r\n          throw new Error('The property has no keyframe at index ' + ind);\r\n        }\r\n\r\n        ind -= 1;\r\n        obKey = {\r\n          time: data.k[ind].t / elem.comp.globalData.frameRate,\r\n          value: []\r\n        };\r\n        var arr = Object.prototype.hasOwnProperty.call(data.k[ind], 's') ? data.k[ind].s : data.k[ind - 1].e;\r\n        lenKey = arr.length;\r\n\r\n        for (iKey = 0; iKey < lenKey; iKey += 1) {\r\n          obKey[iKey] = arr[iKey];\r\n          obKey.value[iKey] = arr[iKey];\r\n        }\r\n\r\n        return obKey;\r\n      }\r\n\r\n      function framesToTime(fr, fps) {\r\n        if (!fps) {\r\n          fps = elem.comp.globalData.frameRate;\r\n        }\r\n\r\n        return fr / fps;\r\n      }\r\n\r\n      function timeToFrames(t, fps) {\r\n        if (!t && t !== 0) {\r\n          t = time;\r\n        }\r\n\r\n        if (!fps) {\r\n          fps = elem.comp.globalData.frameRate;\r\n        }\r\n\r\n        return t * fps;\r\n      }\r\n\r\n      function seedRandom(seed) {\r\n        BMMath.seedrandom(randSeed + seed);\r\n      }\r\n\r\n      function sourceRectAtTime() {\r\n        return elem.sourceRectAtTime();\r\n      }\r\n\r\n      function substring(init, end) {\r\n        if (typeof value === 'string') {\r\n          if (end === undefined) {\r\n            return value.substring(init);\r\n          }\r\n\r\n          return value.substring(init, end);\r\n        }\r\n\r\n        return '';\r\n      }\r\n\r\n      function substr(init, end) {\r\n        if (typeof value === 'string') {\r\n          if (end === undefined) {\r\n            return value.substr(init);\r\n          }\r\n\r\n          return value.substr(init, end);\r\n        }\r\n\r\n        return '';\r\n      }\r\n\r\n      function posterizeTime(framesPerSecond) {\r\n        time = framesPerSecond === 0 ? 0 : Math.floor(time * framesPerSecond) / framesPerSecond;\r\n        value = valueAtTime(time);\r\n      }\r\n\r\n      var time;\r\n      var velocity;\r\n      var value;\r\n      var text;\r\n      var textIndex;\r\n      var textTotal;\r\n      var selectorValue;\r\n      var index = elem.data.ind;\r\n      var hasParent = !!(elem.hierarchy && elem.hierarchy.length);\r\n      var parent;\r\n      var randSeed = Math.floor(Math.random() * 1000000);\r\n      var globalData = elem.globalData;\r\n\r\n      function executeExpression(_value) {\r\n        // globalData.pushExpression();\r\n        value = _value;\r\n\r\n        if (this.frameExpressionId === elem.globalData.frameId && this.propType !== 'textSelector') {\r\n          return value;\r\n        }\r\n\r\n        if (this.propType === 'textSelector') {\r\n          textIndex = this.textIndex;\r\n          textTotal = this.textTotal;\r\n          selectorValue = this.selectorValue;\r\n        }\r\n\r\n        if (!thisLayer) {\r\n          text = elem.layerInterface.text;\r\n          thisLayer = elem.layerInterface;\r\n          thisComp = elem.comp.compInterface;\r\n          toWorld = thisLayer.toWorld.bind(thisLayer);\r\n          fromWorld = thisLayer.fromWorld.bind(thisLayer);\r\n          fromComp = thisLayer.fromComp.bind(thisLayer);\r\n          toComp = thisLayer.toComp.bind(thisLayer);\r\n          mask = thisLayer.mask ? thisLayer.mask.bind(thisLayer) : null;\r\n          fromCompToSurface = fromComp;\r\n        }\r\n\r\n        if (!transform) {\r\n          transform = elem.layerInterface('ADBE Transform Group');\r\n          $bm_transform = transform;\r\n\r\n          if (transform) {\r\n            anchorPoint = transform.anchorPoint;\r\n            /* position = transform.position;\r\n                      rotation = transform.rotation;\r\n                      scale = transform.scale; */\r\n          }\r\n        }\r\n\r\n        if (elemType === 4 && !content) {\r\n          content = thisLayer('ADBE Root Vectors Group');\r\n        }\r\n\r\n        if (!effect) {\r\n          effect = thisLayer(4);\r\n        }\r\n\r\n        hasParent = !!(elem.hierarchy && elem.hierarchy.length);\r\n\r\n        if (hasParent && !parent) {\r\n          parent = elem.hierarchy[0].layerInterface;\r\n        }\r\n\r\n        time = this.comp.renderedFrame / this.comp.globalData.frameRate;\r\n\r\n        if (_needsRandom) {\r\n          seedRandom(randSeed + time);\r\n        }\r\n\r\n        if (needsVelocity) {\r\n          velocity = velocityAtTime(time);\r\n        }\r\n\r\n        expression_function();\r\n        this.frameExpressionId = elem.globalData.frameId; // TODO: Check if it's possible to return on ShapeInterface the .v value\r\n        // Changed this to a ternary operation because Rollup failed compiling it correctly\r\n\r\n        scoped_bm_rt = scoped_bm_rt.propType === propTypes.SHAPE ? scoped_bm_rt.v : scoped_bm_rt;\r\n        return scoped_bm_rt;\r\n      } // Bundlers will see these as dead code and unless we reference them\r\n\r\n\r\n      executeExpression.__preventDeadCodeRemoval = [$bm_transform, anchorPoint, time, velocity, inPoint, outPoint, width, height, name, loop_in, loop_out, smooth, toComp, fromCompToSurface, toWorld, fromWorld, mask, position, rotation, scale, thisComp, numKeys, active, wiggle, loopInDuration, loopOutDuration, comp, lookAt, easeOut, easeIn, ease, nearestKey, key, text, textIndex, textTotal, selectorValue, framesToTime, timeToFrames, sourceRectAtTime, substring, substr, posterizeTime, index, globalData];\r\n      return executeExpression;\r\n    }\r\n\r\n    ob.initiateExpression = initiateExpression;\r\n    ob.__preventDeadCodeRemoval = [window, document, XMLHttpRequest, fetch, frames, $bm_neg, add, $bm_sum, $bm_sub, $bm_mul, $bm_div, $bm_mod, clamp, radians_to_degrees, degreesToRadians, degrees_to_radians, normalize, rgbToHsl, hslToRgb, linear, random, createPath];\r\n    return ob;\r\n  }();\r\n\r\n  var expressionHelpers = function () {\r\n    function searchExpressions(elem, data, prop) {\r\n      if (data.x) {\r\n        prop.k = true;\r\n        prop.x = true;\r\n        prop.initiateExpression = ExpressionManager.initiateExpression;\r\n        prop.effectsSequence.push(prop.initiateExpression(elem, data, prop).bind(prop));\r\n      }\r\n    }\r\n\r\n    function getValueAtTime(frameNum) {\r\n      frameNum *= this.elem.globalData.frameRate;\r\n      frameNum -= this.offsetTime;\r\n\r\n      if (frameNum !== this._cachingAtTime.lastFrame) {\r\n        this._cachingAtTime.lastIndex = this._cachingAtTime.lastFrame < frameNum ? this._cachingAtTime.lastIndex : 0;\r\n        this._cachingAtTime.value = this.interpolateValue(frameNum, this._cachingAtTime);\r\n        this._cachingAtTime.lastFrame = frameNum;\r\n      }\r\n\r\n      return this._cachingAtTime.value;\r\n    }\r\n\r\n    function getSpeedAtTime(frameNum) {\r\n      var delta = -0.01;\r\n      var v1 = this.getValueAtTime(frameNum);\r\n      var v2 = this.getValueAtTime(frameNum + delta);\r\n      var speed = 0;\r\n\r\n      if (v1.length) {\r\n        var i;\r\n\r\n        for (i = 0; i < v1.length; i += 1) {\r\n          speed += Math.pow(v2[i] - v1[i], 2);\r\n        }\r\n\r\n        speed = Math.sqrt(speed) * 100;\r\n      } else {\r\n        speed = 0;\r\n      }\r\n\r\n      return speed;\r\n    }\r\n\r\n    function getVelocityAtTime(frameNum) {\r\n      if (this.vel !== undefined) {\r\n        return this.vel;\r\n      }\r\n\r\n      var delta = -0.001; // frameNum += this.elem.data.st;\r\n\r\n      var v1 = this.getValueAtTime(frameNum);\r\n      var v2 = this.getValueAtTime(frameNum + delta);\r\n      var velocity;\r\n\r\n      if (v1.length) {\r\n        velocity = createTypedArray('float32', v1.length);\r\n        var i;\r\n\r\n        for (i = 0; i < v1.length; i += 1) {\r\n          // removing frameRate\r\n          // if needed, don't add it here\r\n          // velocity[i] = this.elem.globalData.frameRate*((v2[i] - v1[i])/delta);\r\n          velocity[i] = (v2[i] - v1[i]) / delta;\r\n        }\r\n      } else {\r\n        velocity = (v2 - v1) / delta;\r\n      }\r\n\r\n      return velocity;\r\n    }\r\n\r\n    function getStaticValueAtTime() {\r\n      return this.pv;\r\n    }\r\n\r\n    function setGroupProperty(propertyGroup) {\r\n      this.propertyGroup = propertyGroup;\r\n    }\r\n\r\n    return {\r\n      searchExpressions: searchExpressions,\r\n      getSpeedAtTime: getSpeedAtTime,\r\n      getVelocityAtTime: getVelocityAtTime,\r\n      getValueAtTime: getValueAtTime,\r\n      getStaticValueAtTime: getStaticValueAtTime,\r\n      setGroupProperty: setGroupProperty\r\n    };\r\n  }();\r\n\r\n  function addPropertyDecorator() {\r\n    function loopOut(type, duration, durationFlag) {\r\n      if (!this.k || !this.keyframes) {\r\n        return this.pv;\r\n      }\r\n\r\n      type = type ? type.toLowerCase() : '';\r\n      var currentFrame = this.comp.renderedFrame;\r\n      var keyframes = this.keyframes;\r\n      var lastKeyFrame = keyframes[keyframes.length - 1].t;\r\n\r\n      if (currentFrame <= lastKeyFrame) {\r\n        return this.pv;\r\n      }\r\n\r\n      var cycleDuration;\r\n      var firstKeyFrame;\r\n\r\n      if (!durationFlag) {\r\n        if (!duration || duration > keyframes.length - 1) {\r\n          duration = keyframes.length - 1;\r\n        }\r\n\r\n        firstKeyFrame = keyframes[keyframes.length - 1 - duration].t;\r\n        cycleDuration = lastKeyFrame - firstKeyFrame;\r\n      } else {\r\n        if (!duration) {\r\n          cycleDuration = Math.max(0, lastKeyFrame - this.elem.data.ip);\r\n        } else {\r\n          cycleDuration = Math.abs(lastKeyFrame - this.elem.comp.globalData.frameRate * duration);\r\n        }\r\n\r\n        firstKeyFrame = lastKeyFrame - cycleDuration;\r\n      }\r\n\r\n      var i;\r\n      var len;\r\n      var ret;\r\n\r\n      if (type === 'pingpong') {\r\n        var iterations = Math.floor((currentFrame - firstKeyFrame) / cycleDuration);\r\n\r\n        if (iterations % 2 !== 0) {\r\n          return this.getValueAtTime((cycleDuration - (currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line\r\n        }\r\n      } else if (type === 'offset') {\r\n        var initV = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0);\r\n        var endV = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0);\r\n        var current = this.getValueAtTime(((currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line\r\n\r\n        var repeats = Math.floor((currentFrame - firstKeyFrame) / cycleDuration);\r\n\r\n        if (this.pv.length) {\r\n          ret = new Array(initV.length);\r\n          len = ret.length;\r\n\r\n          for (i = 0; i < len; i += 1) {\r\n            ret[i] = (endV[i] - initV[i]) * repeats + current[i];\r\n          }\r\n\r\n          return ret;\r\n        }\r\n\r\n        return (endV - initV) * repeats + current;\r\n      } else if (type === 'continue') {\r\n        var lastValue = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0);\r\n        var nextLastValue = this.getValueAtTime((lastKeyFrame - 0.001) / this.comp.globalData.frameRate, 0);\r\n\r\n        if (this.pv.length) {\r\n          ret = new Array(lastValue.length);\r\n          len = ret.length;\r\n\r\n          for (i = 0; i < len; i += 1) {\r\n            ret[i] = lastValue[i] + (lastValue[i] - nextLastValue[i]) * ((currentFrame - lastKeyFrame) / this.comp.globalData.frameRate) / 0.0005; // eslint-disable-line\r\n          }\r\n\r\n          return ret;\r\n        }\r\n\r\n        return lastValue + (lastValue - nextLastValue) * ((currentFrame - lastKeyFrame) / 0.001);\r\n      }\r\n\r\n      return this.getValueAtTime(((currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line\r\n    }\r\n\r\n    function loopIn(type, duration, durationFlag) {\r\n      if (!this.k) {\r\n        return this.pv;\r\n      }\r\n\r\n      type = type ? type.toLowerCase() : '';\r\n      var currentFrame = this.comp.renderedFrame;\r\n      var keyframes = this.keyframes;\r\n      var firstKeyFrame = keyframes[0].t;\r\n\r\n      if (currentFrame >= firstKeyFrame) {\r\n        return this.pv;\r\n      }\r\n\r\n      var cycleDuration;\r\n      var lastKeyFrame;\r\n\r\n      if (!durationFlag) {\r\n        if (!duration || duration > keyframes.length - 1) {\r\n          duration = keyframes.length - 1;\r\n        }\r\n\r\n        lastKeyFrame = keyframes[duration].t;\r\n        cycleDuration = lastKeyFrame - firstKeyFrame;\r\n      } else {\r\n        if (!duration) {\r\n          cycleDuration = Math.max(0, this.elem.data.op - firstKeyFrame);\r\n        } else {\r\n          cycleDuration = Math.abs(this.elem.comp.globalData.frameRate * duration);\r\n        }\r\n\r\n        lastKeyFrame = firstKeyFrame + cycleDuration;\r\n      }\r\n\r\n      var i;\r\n      var len;\r\n      var ret;\r\n\r\n      if (type === 'pingpong') {\r\n        var iterations = Math.floor((firstKeyFrame - currentFrame) / cycleDuration);\r\n\r\n        if (iterations % 2 === 0) {\r\n          return this.getValueAtTime(((firstKeyFrame - currentFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line\r\n        }\r\n      } else if (type === 'offset') {\r\n        var initV = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0);\r\n        var endV = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0);\r\n        var current = this.getValueAtTime((cycleDuration - (firstKeyFrame - currentFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0);\r\n        var repeats = Math.floor((firstKeyFrame - currentFrame) / cycleDuration) + 1;\r\n\r\n        if (this.pv.length) {\r\n          ret = new Array(initV.length);\r\n          len = ret.length;\r\n\r\n          for (i = 0; i < len; i += 1) {\r\n            ret[i] = current[i] - (endV[i] - initV[i]) * repeats;\r\n          }\r\n\r\n          return ret;\r\n        }\r\n\r\n        return current - (endV - initV) * repeats;\r\n      } else if (type === 'continue') {\r\n        var firstValue = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0);\r\n        var nextFirstValue = this.getValueAtTime((firstKeyFrame + 0.001) / this.comp.globalData.frameRate, 0);\r\n\r\n        if (this.pv.length) {\r\n          ret = new Array(firstValue.length);\r\n          len = ret.length;\r\n\r\n          for (i = 0; i < len; i += 1) {\r\n            ret[i] = firstValue[i] + (firstValue[i] - nextFirstValue[i]) * (firstKeyFrame - currentFrame) / 0.001;\r\n          }\r\n\r\n          return ret;\r\n        }\r\n\r\n        return firstValue + (firstValue - nextFirstValue) * (firstKeyFrame - currentFrame) / 0.001;\r\n      }\r\n\r\n      return this.getValueAtTime((cycleDuration - ((firstKeyFrame - currentFrame) % cycleDuration + firstKeyFrame)) / this.comp.globalData.frameRate, 0); // eslint-disable-line\r\n    }\r\n\r\n    function smooth(width, samples) {\r\n      if (!this.k) {\r\n        return this.pv;\r\n      }\r\n\r\n      width = (width || 0.4) * 0.5;\r\n      samples = Math.floor(samples || 5);\r\n\r\n      if (samples <= 1) {\r\n        return this.pv;\r\n      }\r\n\r\n      var currentTime = this.comp.renderedFrame / this.comp.globalData.frameRate;\r\n      var initFrame = currentTime - width;\r\n      var endFrame = currentTime + width;\r\n      var sampleFrequency = samples > 1 ? (endFrame - initFrame) / (samples - 1) : 1;\r\n      var i = 0;\r\n      var j = 0;\r\n      var value;\r\n\r\n      if (this.pv.length) {\r\n        value = createTypedArray('float32', this.pv.length);\r\n      } else {\r\n        value = 0;\r\n      }\r\n\r\n      var sampleValue;\r\n\r\n      while (i < samples) {\r\n        sampleValue = this.getValueAtTime(initFrame + i * sampleFrequency);\r\n\r\n        if (this.pv.length) {\r\n          for (j = 0; j < this.pv.length; j += 1) {\r\n            value[j] += sampleValue[j];\r\n          }\r\n        } else {\r\n          value += sampleValue;\r\n        }\r\n\r\n        i += 1;\r\n      }\r\n\r\n      if (this.pv.length) {\r\n        for (j = 0; j < this.pv.length; j += 1) {\r\n          value[j] /= samples;\r\n        }\r\n      } else {\r\n        value /= samples;\r\n      }\r\n\r\n      return value;\r\n    }\r\n\r\n    function getTransformValueAtTime(time) {\r\n      if (!this._transformCachingAtTime) {\r\n        this._transformCachingAtTime = {\r\n          v: new Matrix()\r\n        };\r\n      } /// /\r\n\r\n\r\n      var matrix = this._transformCachingAtTime.v;\r\n      matrix.cloneFromProps(this.pre.props);\r\n\r\n      if (this.appliedTransformations < 1) {\r\n        var anchor = this.a.getValueAtTime(time);\r\n        matrix.translate(-anchor[0] * this.a.mult, -anchor[1] * this.a.mult, anchor[2] * this.a.mult);\r\n      }\r\n\r\n      if (this.appliedTransformations < 2) {\r\n        var scale = this.s.getValueAtTime(time);\r\n        matrix.scale(scale[0] * this.s.mult, scale[1] * this.s.mult, scale[2] * this.s.mult);\r\n      }\r\n\r\n      if (this.sk && this.appliedTransformations < 3) {\r\n        var skew = this.sk.getValueAtTime(time);\r\n        var skewAxis = this.sa.getValueAtTime(time);\r\n        matrix.skewFromAxis(-skew * this.sk.mult, skewAxis * this.sa.mult);\r\n      }\r\n\r\n      if (this.r && this.appliedTransformations < 4) {\r\n        var rotation = this.r.getValueAtTime(time);\r\n        matrix.rotate(-rotation * this.r.mult);\r\n      } else if (!this.r && this.appliedTransformations < 4) {\r\n        var rotationZ = this.rz.getValueAtTime(time);\r\n        var rotationY = this.ry.getValueAtTime(time);\r\n        var rotationX = this.rx.getValueAtTime(time);\r\n        var orientation = this.or.getValueAtTime(time);\r\n        matrix.rotateZ(-rotationZ * this.rz.mult).rotateY(rotationY * this.ry.mult).rotateX(rotationX * this.rx.mult).rotateZ(-orientation[2] * this.or.mult).rotateY(orientation[1] * this.or.mult).rotateX(orientation[0] * this.or.mult);\r\n      }\r\n\r\n      if (this.data.p && this.data.p.s) {\r\n        var positionX = this.px.getValueAtTime(time);\r\n        var positionY = this.py.getValueAtTime(time);\r\n\r\n        if (this.data.p.z) {\r\n          var positionZ = this.pz.getValueAtTime(time);\r\n          matrix.translate(positionX * this.px.mult, positionY * this.py.mult, -positionZ * this.pz.mult);\r\n        } else {\r\n          matrix.translate(positionX * this.px.mult, positionY * this.py.mult, 0);\r\n        }\r\n      } else {\r\n        var position = this.p.getValueAtTime(time);\r\n        matrix.translate(position[0] * this.p.mult, position[1] * this.p.mult, -position[2] * this.p.mult);\r\n      }\r\n\r\n      return matrix; /// /\r\n    }\r\n\r\n    function getTransformStaticValueAtTime() {\r\n      return this.v.clone(new Matrix());\r\n    }\r\n\r\n    var getTransformProperty = TransformPropertyFactory.getTransformProperty;\r\n\r\n    TransformPropertyFactory.getTransformProperty = function (elem, data, container) {\r\n      var prop = getTransformProperty(elem, data, container);\r\n\r\n      if (prop.dynamicProperties.length) {\r\n        prop.getValueAtTime = getTransformValueAtTime.bind(prop);\r\n      } else {\r\n        prop.getValueAtTime = getTransformStaticValueAtTime.bind(prop);\r\n      }\r\n\r\n      prop.setGroupProperty = expressionHelpers.setGroupProperty;\r\n      return prop;\r\n    };\r\n\r\n    var propertyGetProp = PropertyFactory.getProp;\r\n\r\n    PropertyFactory.getProp = function (elem, data, type, mult, container) {\r\n      var prop = propertyGetProp(elem, data, type, mult, container); // prop.getVelocityAtTime = getVelocityAtTime;\r\n      // prop.loopOut = loopOut;\r\n      // prop.loopIn = loopIn;\r\n\r\n      if (prop.kf) {\r\n        prop.getValueAtTime = expressionHelpers.getValueAtTime.bind(prop);\r\n      } else {\r\n        prop.getValueAtTime = expressionHelpers.getStaticValueAtTime.bind(prop);\r\n      }\r\n\r\n      prop.setGroupProperty = expressionHelpers.setGroupProperty;\r\n      prop.loopOut = loopOut;\r\n      prop.loopIn = loopIn;\r\n      prop.smooth = smooth;\r\n      prop.getVelocityAtTime = expressionHelpers.getVelocityAtTime.bind(prop);\r\n      prop.getSpeedAtTime = expressionHelpers.getSpeedAtTime.bind(prop);\r\n      prop.numKeys = data.a === 1 ? data.k.length : 0;\r\n      prop.propertyIndex = data.ix;\r\n      var value = 0;\r\n\r\n      if (type !== 0) {\r\n        value = createTypedArray('float32', data.a === 1 ? data.k[0].s.length : data.k.length);\r\n      }\r\n\r\n      prop._cachingAtTime = {\r\n        lastFrame: initialDefaultFrame,\r\n        lastIndex: 0,\r\n        value: value\r\n      };\r\n      expressionHelpers.searchExpressions(elem, data, prop);\r\n\r\n      if (prop.k) {\r\n        container.addDynamicProperty(prop);\r\n      }\r\n\r\n      return prop;\r\n    };\r\n\r\n    function getShapeValueAtTime(frameNum) {\r\n      // For now this caching object is created only when needed instead of creating it when the shape is initialized.\r\n      if (!this._cachingAtTime) {\r\n        this._cachingAtTime = {\r\n          shapeValue: shapePool.clone(this.pv),\r\n          lastIndex: 0,\r\n          lastTime: initialDefaultFrame\r\n        };\r\n      }\r\n\r\n      frameNum *= this.elem.globalData.frameRate;\r\n      frameNum -= this.offsetTime;\r\n\r\n      if (frameNum !== this._cachingAtTime.lastTime) {\r\n        this._cachingAtTime.lastIndex = this._cachingAtTime.lastTime < frameNum ? this._caching.lastIndex : 0;\r\n        this._cachingAtTime.lastTime = frameNum;\r\n        this.interpolateShape(frameNum, this._cachingAtTime.shapeValue, this._cachingAtTime);\r\n      }\r\n\r\n      return this._cachingAtTime.shapeValue;\r\n    }\r\n\r\n    var ShapePropertyConstructorFunction = ShapePropertyFactory.getConstructorFunction();\r\n    var KeyframedShapePropertyConstructorFunction = ShapePropertyFactory.getKeyframedConstructorFunction();\r\n\r\n    function ShapeExpressions() {}\r\n\r\n    ShapeExpressions.prototype = {\r\n      vertices: function vertices(prop, time) {\r\n        if (this.k) {\r\n          this.getValue();\r\n        }\r\n\r\n        var shapePath = this.v;\r\n\r\n        if (time !== undefined) {\r\n          shapePath = this.getValueAtTime(time, 0);\r\n        }\r\n\r\n        var i;\r\n        var len = shapePath._length;\r\n        var vertices = shapePath[prop];\r\n        var points = shapePath.v;\r\n        var arr = createSizedArray(len);\r\n\r\n        for (i = 0; i < len; i += 1) {\r\n          if (prop === 'i' || prop === 'o') {\r\n            arr[i] = [vertices[i][0] - points[i][0], vertices[i][1] - points[i][1]];\r\n          } else {\r\n            arr[i] = [vertices[i][0], vertices[i][1]];\r\n          }\r\n        }\r\n\r\n        return arr;\r\n      },\r\n      points: function points(time) {\r\n        return this.vertices('v', time);\r\n      },\r\n      inTangents: function inTangents(time) {\r\n        return this.vertices('i', time);\r\n      },\r\n      outTangents: function outTangents(time) {\r\n        return this.vertices('o', time);\r\n      },\r\n      isClosed: function isClosed() {\r\n        return this.v.c;\r\n      },\r\n      pointOnPath: function pointOnPath(perc, time) {\r\n        var shapePath = this.v;\r\n\r\n        if (time !== undefined) {\r\n          shapePath = this.getValueAtTime(time, 0);\r\n        }\r\n\r\n        if (!this._segmentsLength) {\r\n          this._segmentsLength = bez.getSegmentsLength(shapePath);\r\n        }\r\n\r\n        var segmentsLength = this._segmentsLength;\r\n        var lengths = segmentsLength.lengths;\r\n        var lengthPos = segmentsLength.totalLength * perc;\r\n        var i = 0;\r\n        var len = lengths.length;\r\n        var accumulatedLength = 0;\r\n        var pt;\r\n\r\n        while (i < len) {\r\n          if (accumulatedLength + lengths[i].addedLength > lengthPos) {\r\n            var initIndex = i;\r\n            var endIndex = shapePath.c && i === len - 1 ? 0 : i + 1;\r\n            var segmentPerc = (lengthPos - accumulatedLength) / lengths[i].addedLength;\r\n            pt = bez.getPointInSegment(shapePath.v[initIndex], shapePath.v[endIndex], shapePath.o[initIndex], shapePath.i[endIndex], segmentPerc, lengths[i]);\r\n            break;\r\n          } else {\r\n            accumulatedLength += lengths[i].addedLength;\r\n          }\r\n\r\n          i += 1;\r\n        }\r\n\r\n        if (!pt) {\r\n          pt = shapePath.c ? [shapePath.v[0][0], shapePath.v[0][1]] : [shapePath.v[shapePath._length - 1][0], shapePath.v[shapePath._length - 1][1]];\r\n        }\r\n\r\n        return pt;\r\n      },\r\n      vectorOnPath: function vectorOnPath(perc, time, vectorType) {\r\n        // perc doesn't use triple equality because it can be a Number object as well as a primitive.\r\n        if (perc == 1) {\r\n          // eslint-disable-line eqeqeq\r\n          perc = this.v.c;\r\n        } else if (perc == 0) {\r\n          // eslint-disable-line eqeqeq\r\n          perc = 0.999;\r\n        }\r\n\r\n        var pt1 = this.pointOnPath(perc, time);\r\n        var pt2 = this.pointOnPath(perc + 0.001, time);\r\n        var xLength = pt2[0] - pt1[0];\r\n        var yLength = pt2[1] - pt1[1];\r\n        var magnitude = Math.sqrt(Math.pow(xLength, 2) + Math.pow(yLength, 2));\r\n\r\n        if (magnitude === 0) {\r\n          return [0, 0];\r\n        }\r\n\r\n        var unitVector = vectorType === 'tangent' ? [xLength / magnitude, yLength / magnitude] : [-yLength / magnitude, xLength / magnitude];\r\n        return unitVector;\r\n      },\r\n      tangentOnPath: function tangentOnPath(perc, time) {\r\n        return this.vectorOnPath(perc, time, 'tangent');\r\n      },\r\n      normalOnPath: function normalOnPath(perc, time) {\r\n        return this.vectorOnPath(perc, time, 'normal');\r\n      },\r\n      setGroupProperty: expressionHelpers.setGroupProperty,\r\n      getValueAtTime: expressionHelpers.getStaticValueAtTime\r\n    };\r\n    extendPrototype([ShapeExpressions], ShapePropertyConstructorFunction);\r\n    extendPrototype([ShapeExpressions], KeyframedShapePropertyConstructorFunction);\r\n    KeyframedShapePropertyConstructorFunction.prototype.getValueAtTime = getShapeValueAtTime;\r\n    KeyframedShapePropertyConstructorFunction.prototype.initiateExpression = ExpressionManager.initiateExpression;\r\n    var propertyGetShapeProp = ShapePropertyFactory.getShapeProp;\r\n\r\n    ShapePropertyFactory.getShapeProp = function (elem, data, type, arr, trims) {\r\n      var prop = propertyGetShapeProp(elem, data, type, arr, trims);\r\n      prop.propertyIndex = data.ix;\r\n      prop.lock = false;\r\n\r\n      if (type === 3) {\r\n        expressionHelpers.searchExpressions(elem, data.pt, prop);\r\n      } else if (type === 4) {\r\n        expressionHelpers.searchExpressions(elem, data.ks, prop);\r\n      }\r\n\r\n      if (prop.k) {\r\n        elem.addDynamicProperty(prop);\r\n      }\r\n\r\n      return prop;\r\n    };\r\n  }\r\n\r\n  function initialize$1() {\r\n    addPropertyDecorator();\r\n  }\r\n\r\n  function addDecorator() {\r\n    function searchExpressions() {\r\n      if (this.data.d.x) {\r\n        this.calculateExpression = ExpressionManager.initiateExpression.bind(this)(this.elem, this.data.d, this);\r\n        this.addEffect(this.getExpressionValue.bind(this));\r\n        return true;\r\n      }\r\n\r\n      return null;\r\n    }\r\n\r\n    TextProperty.prototype.getExpressionValue = function (currentValue, text) {\r\n      var newValue = this.calculateExpression(text);\r\n\r\n      if (currentValue.t !== newValue) {\r\n        var newData = {};\r\n        this.copyData(newData, currentValue);\r\n        newData.t = newValue.toString();\r\n        newData.__complete = false;\r\n        return newData;\r\n      }\r\n\r\n      return currentValue;\r\n    };\r\n\r\n    TextProperty.prototype.searchProperty = function () {\r\n      var isKeyframed = this.searchKeyframes();\r\n      var hasExpressions = this.searchExpressions();\r\n      this.kf = isKeyframed || hasExpressions;\r\n      return this.kf;\r\n    };\r\n\r\n    TextProperty.prototype.searchExpressions = searchExpressions;\r\n  }\r\n\r\n  function initialize() {\r\n    addDecorator();\r\n  }\r\n\r\n  function SVGComposableEffect() {}\r\n\r\n  SVGComposableEffect.prototype = {\r\n    createMergeNode: function createMergeNode(resultId, ins) {\r\n      var feMerge = createNS('feMerge');\r\n      feMerge.setAttribute('result', resultId);\r\n      var feMergeNode;\r\n      var i;\r\n\r\n      for (i = 0; i < ins.length; i += 1) {\r\n        feMergeNode = createNS('feMergeNode');\r\n        feMergeNode.setAttribute('in', ins[i]);\r\n        feMerge.appendChild(feMergeNode);\r\n        feMerge.appendChild(feMergeNode);\r\n      }\r\n\r\n      return feMerge;\r\n    }\r\n  };\r\n\r\n  function SVGTintFilter(filter, filterManager, elem, id, source) {\r\n    this.filterManager = filterManager;\r\n    var feColorMatrix = createNS('feColorMatrix');\r\n    feColorMatrix.setAttribute('type', 'matrix');\r\n    feColorMatrix.setAttribute('color-interpolation-filters', 'linearRGB');\r\n    feColorMatrix.setAttribute('values', '0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0');\r\n    feColorMatrix.setAttribute('result', id + '_tint_1');\r\n    filter.appendChild(feColorMatrix);\r\n    feColorMatrix = createNS('feColorMatrix');\r\n    feColorMatrix.setAttribute('type', 'matrix');\r\n    feColorMatrix.setAttribute('color-interpolation-filters', 'sRGB');\r\n    feColorMatrix.setAttribute('values', '1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0');\r\n    feColorMatrix.setAttribute('result', id + '_tint_2');\r\n    filter.appendChild(feColorMatrix);\r\n    this.matrixFilter = feColorMatrix;\r\n    var feMerge = this.createMergeNode(id, [source, id + '_tint_1', id + '_tint_2']);\r\n    filter.appendChild(feMerge);\r\n  }\r\n\r\n  extendPrototype([SVGComposableEffect], SVGTintFilter);\r\n\r\n  SVGTintFilter.prototype.renderFrame = function (forceRender) {\r\n    if (forceRender || this.filterManager._mdf) {\r\n      var colorBlack = this.filterManager.effectElements[0].p.v;\r\n      var colorWhite = this.filterManager.effectElements[1].p.v;\r\n      var opacity = this.filterManager.effectElements[2].p.v / 100;\r\n      this.matrixFilter.setAttribute('values', colorWhite[0] - colorBlack[0] + ' 0 0 0 ' + colorBlack[0] + ' ' + (colorWhite[1] - colorBlack[1]) + ' 0 0 0 ' + colorBlack[1] + ' ' + (colorWhite[2] - colorBlack[2]) + ' 0 0 0 ' + colorBlack[2] + ' 0 0 0 ' + opacity + ' 0');\r\n    }\r\n  };\r\n\r\n  function SVGFillFilter(filter, filterManager, elem, id) {\r\n    this.filterManager = filterManager;\r\n    var feColorMatrix = createNS('feColorMatrix');\r\n    feColorMatrix.setAttribute('type', 'matrix');\r\n    feColorMatrix.setAttribute('color-interpolation-filters', 'sRGB');\r\n    feColorMatrix.setAttribute('values', '1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0');\r\n    feColorMatrix.setAttribute('result', id);\r\n    filter.appendChild(feColorMatrix);\r\n    this.matrixFilter = feColorMatrix;\r\n  }\r\n\r\n  SVGFillFilter.prototype.renderFrame = function (forceRender) {\r\n    if (forceRender || this.filterManager._mdf) {\r\n      var color = this.filterManager.effectElements[2].p.v;\r\n      var opacity = this.filterManager.effectElements[6].p.v;\r\n      this.matrixFilter.setAttribute('values', '0 0 0 0 ' + color[0] + ' 0 0 0 0 ' + color[1] + ' 0 0 0 0 ' + color[2] + ' 0 0 0 ' + opacity + ' 0');\r\n    }\r\n  };\r\n\r\n  function SVGStrokeEffect(fil, filterManager, elem) {\r\n    this.initialized = false;\r\n    this.filterManager = filterManager;\r\n    this.elem = elem;\r\n    this.paths = [];\r\n  }\r\n\r\n  SVGStrokeEffect.prototype.initialize = function () {\r\n    var elemChildren = this.elem.layerElement.children || this.elem.layerElement.childNodes;\r\n    var path;\r\n    var groupPath;\r\n    var i;\r\n    var len;\r\n\r\n    if (this.filterManager.effectElements[1].p.v === 1) {\r\n      len = this.elem.maskManager.masksProperties.length;\r\n      i = 0;\r\n    } else {\r\n      i = this.filterManager.effectElements[0].p.v - 1;\r\n      len = i + 1;\r\n    }\r\n\r\n    groupPath = createNS('g');\r\n    groupPath.setAttribute('fill', 'none');\r\n    groupPath.setAttribute('stroke-linecap', 'round');\r\n    groupPath.setAttribute('stroke-dashoffset', 1);\r\n\r\n    for (i; i < len; i += 1) {\r\n      path = createNS('path');\r\n      groupPath.appendChild(path);\r\n      this.paths.push({\r\n        p: path,\r\n        m: i\r\n      });\r\n    }\r\n\r\n    if (this.filterManager.effectElements[10].p.v === 3) {\r\n      var mask = createNS('mask');\r\n      var id = createElementID();\r\n      mask.setAttribute('id', id);\r\n      mask.setAttribute('mask-type', 'alpha');\r\n      mask.appendChild(groupPath);\r\n      this.elem.globalData.defs.appendChild(mask);\r\n      var g = createNS('g');\r\n      g.setAttribute('mask', 'url(' + getLocationHref() + '#' + id + ')');\r\n\r\n      while (elemChildren[0]) {\r\n        g.appendChild(elemChildren[0]);\r\n      }\r\n\r\n      this.elem.layerElement.appendChild(g);\r\n      this.masker = mask;\r\n      groupPath.setAttribute('stroke', '#fff');\r\n    } else if (this.filterManager.effectElements[10].p.v === 1 || this.filterManager.effectElements[10].p.v === 2) {\r\n      if (this.filterManager.effectElements[10].p.v === 2) {\r\n        elemChildren = this.elem.layerElement.children || this.elem.layerElement.childNodes;\r\n\r\n        while (elemChildren.length) {\r\n          this.elem.layerElement.removeChild(elemChildren[0]);\r\n        }\r\n      }\r\n\r\n      this.elem.layerElement.appendChild(groupPath);\r\n      this.elem.layerElement.removeAttribute('mask');\r\n      groupPath.setAttribute('stroke', '#fff');\r\n    }\r\n\r\n    this.initialized = true;\r\n    this.pathMasker = groupPath;\r\n  };\r\n\r\n  SVGStrokeEffect.prototype.renderFrame = function (forceRender) {\r\n    if (!this.initialized) {\r\n      this.initialize();\r\n    }\r\n\r\n    var i;\r\n    var len = this.paths.length;\r\n    var mask;\r\n    var path;\r\n\r\n    for (i = 0; i < len; i += 1) {\r\n      if (this.paths[i].m !== -1) {\r\n        mask = this.elem.maskManager.viewData[this.paths[i].m];\r\n        path = this.paths[i].p;\r\n\r\n        if (forceRender || this.filterManager._mdf || mask.prop._mdf) {\r\n          path.setAttribute('d', mask.lastPath);\r\n        }\r\n\r\n        if (forceRender || this.filterManager.effectElements[9].p._mdf || this.filterManager.effectElements[4].p._mdf || this.filterManager.effectElements[7].p._mdf || this.filterManager.effectElements[8].p._mdf || mask.prop._mdf) {\r\n          var dasharrayValue;\r\n\r\n          if (this.filterManager.effectElements[7].p.v !== 0 || this.filterManager.effectElements[8].p.v !== 100) {\r\n            var s = Math.min(this.filterManager.effectElements[7].p.v, this.filterManager.effectElements[8].p.v) * 0.01;\r\n            var e = Math.max(this.filterManager.effectElements[7].p.v, this.filterManager.effectElements[8].p.v) * 0.01;\r\n            var l = path.getTotalLength();\r\n            dasharrayValue = '0 0 0 ' + l * s + ' ';\r\n            var lineLength = l * (e - s);\r\n            var segment = 1 + this.filterManager.effectElements[4].p.v * 2 * this.filterManager.effectElements[9].p.v * 0.01;\r\n            var units = Math.floor(lineLength / segment);\r\n            var j;\r\n\r\n            for (j = 0; j < units; j += 1) {\r\n              dasharrayValue += '1 ' + this.filterManager.effectElements[4].p.v * 2 * this.filterManager.effectElements[9].p.v * 0.01 + ' ';\r\n            }\r\n\r\n            dasharrayValue += '0 ' + l * 10 + ' 0 0';\r\n          } else {\r\n            dasharrayValue = '1 ' + this.filterManager.effectElements[4].p.v * 2 * this.filterManager.effectElements[9].p.v * 0.01;\r\n          }\r\n\r\n          path.setAttribute('stroke-dasharray', dasharrayValue);\r\n        }\r\n      }\r\n    }\r\n\r\n    if (forceRender || this.filterManager.effectElements[4].p._mdf) {\r\n      this.pathMasker.setAttribute('stroke-width', this.filterManager.effectElements[4].p.v * 2);\r\n    }\r\n\r\n    if (forceRender || this.filterManager.effectElements[6].p._mdf) {\r\n      this.pathMasker.setAttribute('opacity', this.filterManager.effectElements[6].p.v);\r\n    }\r\n\r\n    if (this.filterManager.effectElements[10].p.v === 1 || this.filterManager.effectElements[10].p.v === 2) {\r\n      if (forceRender || this.filterManager.effectElements[3].p._mdf) {\r\n        var color = this.filterManager.effectElements[3].p.v;\r\n        this.pathMasker.setAttribute('stroke', 'rgb(' + bmFloor(color[0] * 255) + ',' + bmFloor(color[1] * 255) + ',' + bmFloor(color[2] * 255) + ')');\r\n      }\r\n    }\r\n  };\r\n\r\n  function SVGTritoneFilter(filter, filterManager, elem, id) {\r\n    this.filterManager = filterManager;\r\n    var feColorMatrix = createNS('feColorMatrix');\r\n    feColorMatrix.setAttribute('type', 'matrix');\r\n    feColorMatrix.setAttribute('color-interpolation-filters', 'linearRGB');\r\n    feColorMatrix.setAttribute('values', '0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0');\r\n    filter.appendChild(feColorMatrix);\r\n    var feComponentTransfer = createNS('feComponentTransfer');\r\n    feComponentTransfer.setAttribute('color-interpolation-filters', 'sRGB');\r\n    feComponentTransfer.setAttribute('result', id);\r\n    this.matrixFilter = feComponentTransfer;\r\n    var feFuncR = createNS('feFuncR');\r\n    feFuncR.setAttribute('type', 'table');\r\n    feComponentTransfer.appendChild(feFuncR);\r\n    this.feFuncR = feFuncR;\r\n    var feFuncG = createNS('feFuncG');\r\n    feFuncG.setAttribute('type', 'table');\r\n    feComponentTransfer.appendChild(feFuncG);\r\n    this.feFuncG = feFuncG;\r\n    var feFuncB = createNS('feFuncB');\r\n    feFuncB.setAttribute('type', 'table');\r\n    feComponentTransfer.appendChild(feFuncB);\r\n    this.feFuncB = feFuncB;\r\n    filter.appendChild(feComponentTransfer);\r\n  }\r\n\r\n  SVGTritoneFilter.prototype.renderFrame = function (forceRender) {\r\n    if (forceRender || this.filterManager._mdf) {\r\n      var color1 = this.filterManager.effectElements[0].p.v;\r\n      var color2 = this.filterManager.effectElements[1].p.v;\r\n      var color3 = this.filterManager.effectElements[2].p.v;\r\n      var tableR = color3[0] + ' ' + color2[0] + ' ' + color1[0];\r\n      var tableG = color3[1] + ' ' + color2[1] + ' ' + color1[1];\r\n      var tableB = color3[2] + ' ' + color2[2] + ' ' + color1[2];\r\n      this.feFuncR.setAttribute('tableValues', tableR);\r\n      this.feFuncG.setAttribute('tableValues', tableG);\r\n      this.feFuncB.setAttribute('tableValues', tableB);\r\n    }\r\n  };\r\n\r\n  function SVGProLevelsFilter(filter, filterManager, elem, id) {\r\n    this.filterManager = filterManager;\r\n    var effectElements = this.filterManager.effectElements;\r\n    var feComponentTransfer = createNS('feComponentTransfer'); // Red\r\n\r\n    if (effectElements[10].p.k || effectElements[10].p.v !== 0 || effectElements[11].p.k || effectElements[11].p.v !== 1 || effectElements[12].p.k || effectElements[12].p.v !== 1 || effectElements[13].p.k || effectElements[13].p.v !== 0 || effectElements[14].p.k || effectElements[14].p.v !== 1) {\r\n      this.feFuncR = this.createFeFunc('feFuncR', feComponentTransfer);\r\n    } // Green\r\n\r\n\r\n    if (effectElements[17].p.k || effectElements[17].p.v !== 0 || effectElements[18].p.k || effectElements[18].p.v !== 1 || effectElements[19].p.k || effectElements[19].p.v !== 1 || effectElements[20].p.k || effectElements[20].p.v !== 0 || effectElements[21].p.k || effectElements[21].p.v !== 1) {\r\n      this.feFuncG = this.createFeFunc('feFuncG', feComponentTransfer);\r\n    } // Blue\r\n\r\n\r\n    if (effectElements[24].p.k || effectElements[24].p.v !== 0 || effectElements[25].p.k || effectElements[25].p.v !== 1 || effectElements[26].p.k || effectElements[26].p.v !== 1 || effectElements[27].p.k || effectElements[27].p.v !== 0 || effectElements[28].p.k || effectElements[28].p.v !== 1) {\r\n      this.feFuncB = this.createFeFunc('feFuncB', feComponentTransfer);\r\n    } // Alpha\r\n\r\n\r\n    if (effectElements[31].p.k || effectElements[31].p.v !== 0 || effectElements[32].p.k || effectElements[32].p.v !== 1 || effectElements[33].p.k || effectElements[33].p.v !== 1 || effectElements[34].p.k || effectElements[34].p.v !== 0 || effectElements[35].p.k || effectElements[35].p.v !== 1) {\r\n      this.feFuncA = this.createFeFunc('feFuncA', feComponentTransfer);\r\n    } // RGB\r\n\r\n\r\n    if (this.feFuncR || this.feFuncG || this.feFuncB || this.feFuncA) {\r\n      feComponentTransfer.setAttribute('color-interpolation-filters', 'sRGB');\r\n      filter.appendChild(feComponentTransfer);\r\n    }\r\n\r\n    if (effectElements[3].p.k || effectElements[3].p.v !== 0 || effectElements[4].p.k || effectElements[4].p.v !== 1 || effectElements[5].p.k || effectElements[5].p.v !== 1 || effectElements[6].p.k || effectElements[6].p.v !== 0 || effectElements[7].p.k || effectElements[7].p.v !== 1) {\r\n      feComponentTransfer = createNS('feComponentTransfer');\r\n      feComponentTransfer.setAttribute('color-interpolation-filters', 'sRGB');\r\n      feComponentTransfer.setAttribute('result', id);\r\n      filter.appendChild(feComponentTransfer);\r\n      this.feFuncRComposed = this.createFeFunc('feFuncR', feComponentTransfer);\r\n      this.feFuncGComposed = this.createFeFunc('feFuncG', feComponentTransfer);\r\n      this.feFuncBComposed = this.createFeFunc('feFuncB', feComponentTransfer);\r\n    }\r\n  }\r\n\r\n  SVGProLevelsFilter.prototype.createFeFunc = function (type, feComponentTransfer) {\r\n    var feFunc = createNS(type);\r\n    feFunc.setAttribute('type', 'table');\r\n    feComponentTransfer.appendChild(feFunc);\r\n    return feFunc;\r\n  };\r\n\r\n  SVGProLevelsFilter.prototype.getTableValue = function (inputBlack, inputWhite, gamma, outputBlack, outputWhite) {\r\n    var cnt = 0;\r\n    var segments = 256;\r\n    var perc;\r\n    var min = Math.min(inputBlack, inputWhite);\r\n    var max = Math.max(inputBlack, inputWhite);\r\n    var table = Array.call(null, {\r\n      length: segments\r\n    });\r\n    var colorValue;\r\n    var pos = 0;\r\n    var outputDelta = outputWhite - outputBlack;\r\n    var inputDelta = inputWhite - inputBlack;\r\n\r\n    while (cnt <= 256) {\r\n      perc = cnt / 256;\r\n\r\n      if (perc <= min) {\r\n        colorValue = inputDelta < 0 ? outputWhite : outputBlack;\r\n      } else if (perc >= max) {\r\n        colorValue = inputDelta < 0 ? outputBlack : outputWhite;\r\n      } else {\r\n        colorValue = outputBlack + outputDelta * Math.pow((perc - inputBlack) / inputDelta, 1 / gamma);\r\n      }\r\n\r\n      table[pos] = colorValue;\r\n      pos += 1;\r\n      cnt += 256 / (segments - 1);\r\n    }\r\n\r\n    return table.join(' ');\r\n  };\r\n\r\n  SVGProLevelsFilter.prototype.renderFrame = function (forceRender) {\r\n    if (forceRender || this.filterManager._mdf) {\r\n      var val;\r\n      var effectElements = this.filterManager.effectElements;\r\n\r\n      if (this.feFuncRComposed && (forceRender || effectElements[3].p._mdf || effectElements[4].p._mdf || effectElements[5].p._mdf || effectElements[6].p._mdf || effectElements[7].p._mdf)) {\r\n        val = this.getTableValue(effectElements[3].p.v, effectElements[4].p.v, effectElements[5].p.v, effectElements[6].p.v, effectElements[7].p.v);\r\n        this.feFuncRComposed.setAttribute('tableValues', val);\r\n        this.feFuncGComposed.setAttribute('tableValues', val);\r\n        this.feFuncBComposed.setAttribute('tableValues', val);\r\n      }\r\n\r\n      if (this.feFuncR && (forceRender || effectElements[10].p._mdf || effectElements[11].p._mdf || effectElements[12].p._mdf || effectElements[13].p._mdf || effectElements[14].p._mdf)) {\r\n        val = this.getTableValue(effectElements[10].p.v, effectElements[11].p.v, effectElements[12].p.v, effectElements[13].p.v, effectElements[14].p.v);\r\n        this.feFuncR.setAttribute('tableValues', val);\r\n      }\r\n\r\n      if (this.feFuncG && (forceRender || effectElements[17].p._mdf || effectElements[18].p._mdf || effectElements[19].p._mdf || effectElements[20].p._mdf || effectElements[21].p._mdf)) {\r\n        val = this.getTableValue(effectElements[17].p.v, effectElements[18].p.v, effectElements[19].p.v, effectElements[20].p.v, effectElements[21].p.v);\r\n        this.feFuncG.setAttribute('tableValues', val);\r\n      }\r\n\r\n      if (this.feFuncB && (forceRender || effectElements[24].p._mdf || effectElements[25].p._mdf || effectElements[26].p._mdf || effectElements[27].p._mdf || effectElements[28].p._mdf)) {\r\n        val = this.getTableValue(effectElements[24].p.v, effectElements[25].p.v, effectElements[26].p.v, effectElements[27].p.v, effectElements[28].p.v);\r\n        this.feFuncB.setAttribute('tableValues', val);\r\n      }\r\n\r\n      if (this.feFuncA && (forceRender || effectElements[31].p._mdf || effectElements[32].p._mdf || effectElements[33].p._mdf || effectElements[34].p._mdf || effectElements[35].p._mdf)) {\r\n        val = this.getTableValue(effectElements[31].p.v, effectElements[32].p.v, effectElements[33].p.v, effectElements[34].p.v, effectElements[35].p.v);\r\n        this.feFuncA.setAttribute('tableValues', val);\r\n      }\r\n    }\r\n  };\r\n\r\n  function SVGDropShadowEffect(filter, filterManager, elem, id, source) {\r\n    var globalFilterSize = filterManager.container.globalData.renderConfig.filterSize;\r\n    var filterSize = filterManager.data.fs || globalFilterSize;\r\n    filter.setAttribute('x', filterSize.x || globalFilterSize.x);\r\n    filter.setAttribute('y', filterSize.y || globalFilterSize.y);\r\n    filter.setAttribute('width', filterSize.width || globalFilterSize.width);\r\n    filter.setAttribute('height', filterSize.height || globalFilterSize.height);\r\n    this.filterManager = filterManager;\r\n    var feGaussianBlur = createNS('feGaussianBlur');\r\n    feGaussianBlur.setAttribute('in', 'SourceAlpha');\r\n    feGaussianBlur.setAttribute('result', id + '_drop_shadow_1');\r\n    feGaussianBlur.setAttribute('stdDeviation', '0');\r\n    this.feGaussianBlur = feGaussianBlur;\r\n    filter.appendChild(feGaussianBlur);\r\n    var feOffset = createNS('feOffset');\r\n    feOffset.setAttribute('dx', '25');\r\n    feOffset.setAttribute('dy', '0');\r\n    feOffset.setAttribute('in', id + '_drop_shadow_1');\r\n    feOffset.setAttribute('result', id + '_drop_shadow_2');\r\n    this.feOffset = feOffset;\r\n    filter.appendChild(feOffset);\r\n    var feFlood = createNS('feFlood');\r\n    feFlood.setAttribute('flood-color', '#00ff00');\r\n    feFlood.setAttribute('flood-opacity', '1');\r\n    feFlood.setAttribute('result', id + '_drop_shadow_3');\r\n    this.feFlood = feFlood;\r\n    filter.appendChild(feFlood);\r\n    var feComposite = createNS('feComposite');\r\n    feComposite.setAttribute('in', id + '_drop_shadow_3');\r\n    feComposite.setAttribute('in2', id + '_drop_shadow_2');\r\n    feComposite.setAttribute('operator', 'in');\r\n    feComposite.setAttribute('result', id + '_drop_shadow_4');\r\n    filter.appendChild(feComposite);\r\n    var feMerge = this.createMergeNode(id, [id + '_drop_shadow_4', source]);\r\n    filter.appendChild(feMerge); //\r\n  }\r\n\r\n  extendPrototype([SVGComposableEffect], SVGDropShadowEffect);\r\n\r\n  SVGDropShadowEffect.prototype.renderFrame = function (forceRender) {\r\n    if (forceRender || this.filterManager._mdf) {\r\n      if (forceRender || this.filterManager.effectElements[4].p._mdf) {\r\n        this.feGaussianBlur.setAttribute('stdDeviation', this.filterManager.effectElements[4].p.v / 4);\r\n      }\r\n\r\n      if (forceRender || this.filterManager.effectElements[0].p._mdf) {\r\n        var col = this.filterManager.effectElements[0].p.v;\r\n        this.feFlood.setAttribute('flood-color', rgbToHex(Math.round(col[0] * 255), Math.round(col[1] * 255), Math.round(col[2] * 255)));\r\n      }\r\n\r\n      if (forceRender || this.filterManager.effectElements[1].p._mdf) {\r\n        this.feFlood.setAttribute('flood-opacity', this.filterManager.effectElements[1].p.v / 255);\r\n      }\r\n\r\n      if (forceRender || this.filterManager.effectElements[2].p._mdf || this.filterManager.effectElements[3].p._mdf) {\r\n        var distance = this.filterManager.effectElements[3].p.v;\r\n        var angle = (this.filterManager.effectElements[2].p.v - 90) * degToRads;\r\n        var x = distance * Math.cos(angle);\r\n        var y = distance * Math.sin(angle);\r\n        this.feOffset.setAttribute('dx', x);\r\n        this.feOffset.setAttribute('dy', y);\r\n      }\r\n    }\r\n  };\r\n\r\n  var _svgMatteSymbols = [];\r\n\r\n  function SVGMatte3Effect(filterElem, filterManager, elem) {\r\n    this.initialized = false;\r\n    this.filterManager = filterManager;\r\n    this.filterElem = filterElem;\r\n    this.elem = elem;\r\n    elem.matteElement = createNS('g');\r\n    elem.matteElement.appendChild(elem.layerElement);\r\n    elem.matteElement.appendChild(elem.transformedElement);\r\n    elem.baseElement = elem.matteElement;\r\n  }\r\n\r\n  SVGMatte3Effect.prototype.findSymbol = function (mask) {\r\n    var i = 0;\r\n    var len = _svgMatteSymbols.length;\r\n\r\n    while (i < len) {\r\n      if (_svgMatteSymbols[i] === mask) {\r\n        return _svgMatteSymbols[i];\r\n      }\r\n\r\n      i += 1;\r\n    }\r\n\r\n    return null;\r\n  };\r\n\r\n  SVGMatte3Effect.prototype.replaceInParent = function (mask, symbolId) {\r\n    var parentNode = mask.layerElement.parentNode;\r\n\r\n    if (!parentNode) {\r\n      return;\r\n    }\r\n\r\n    var children = parentNode.children;\r\n    var i = 0;\r\n    var len = children.length;\r\n\r\n    while (i < len) {\r\n      if (children[i] === mask.layerElement) {\r\n        break;\r\n      }\r\n\r\n      i += 1;\r\n    }\r\n\r\n    var nextChild;\r\n\r\n    if (i <= len - 2) {\r\n      nextChild = children[i + 1];\r\n    }\r\n\r\n    var useElem = createNS('use');\r\n    useElem.setAttribute('href', '#' + symbolId);\r\n\r\n    if (nextChild) {\r\n      parentNode.insertBefore(useElem, nextChild);\r\n    } else {\r\n      parentNode.appendChild(useElem);\r\n    }\r\n  };\r\n\r\n  SVGMatte3Effect.prototype.setElementAsMask = function (elem, mask) {\r\n    if (!this.findSymbol(mask)) {\r\n      var symbolId = createElementID();\r\n      var masker = createNS('mask');\r\n      masker.setAttribute('id', mask.layerId);\r\n      masker.setAttribute('mask-type', 'alpha');\r\n\r\n      _svgMatteSymbols.push(mask);\r\n\r\n      var defs = elem.globalData.defs;\r\n      defs.appendChild(masker);\r\n      var symbol = createNS('symbol');\r\n      symbol.setAttribute('id', symbolId);\r\n      this.replaceInParent(mask, symbolId);\r\n      symbol.appendChild(mask.layerElement);\r\n      defs.appendChild(symbol);\r\n      var useElem = createNS('use');\r\n      useElem.setAttribute('href', '#' + symbolId);\r\n      masker.appendChild(useElem);\r\n      mask.data.hd = false;\r\n      mask.show();\r\n    }\r\n\r\n    elem.setMatte(mask.layerId);\r\n  };\r\n\r\n  SVGMatte3Effect.prototype.initialize = function () {\r\n    var ind = this.filterManager.effectElements[0].p.v;\r\n    var elements = this.elem.comp.elements;\r\n    var i = 0;\r\n    var len = elements.length;\r\n\r\n    while (i < len) {\r\n      if (elements[i] && elements[i].data.ind === ind) {\r\n        this.setElementAsMask(this.elem, elements[i]);\r\n      }\r\n\r\n      i += 1;\r\n    }\r\n\r\n    this.initialized = true;\r\n  };\r\n\r\n  SVGMatte3Effect.prototype.renderFrame = function () {\r\n    if (!this.initialized) {\r\n      this.initialize();\r\n    }\r\n  };\r\n\r\n  function SVGGaussianBlurEffect(filter, filterManager, elem, id) {\r\n    // Outset the filter region by 100% on all sides to accommodate blur expansion.\r\n    filter.setAttribute('x', '-100%');\r\n    filter.setAttribute('y', '-100%');\r\n    filter.setAttribute('width', '300%');\r\n    filter.setAttribute('height', '300%');\r\n    this.filterManager = filterManager;\r\n    var feGaussianBlur = createNS('feGaussianBlur');\r\n    feGaussianBlur.setAttribute('result', id);\r\n    filter.appendChild(feGaussianBlur);\r\n    this.feGaussianBlur = feGaussianBlur;\r\n  }\r\n\r\n  SVGGaussianBlurEffect.prototype.renderFrame = function (forceRender) {\r\n    if (forceRender || this.filterManager._mdf) {\r\n      // Empirical value, matching AE's blur appearance.\r\n      var kBlurrinessToSigma = 0.3;\r\n      var sigma = this.filterManager.effectElements[0].p.v * kBlurrinessToSigma; // Dimensions mapping:\r\n      //\r\n      //   1 -> horizontal & vertical\r\n      //   2 -> horizontal only\r\n      //   3 -> vertical only\r\n      //\r\n\r\n      var dimensions = this.filterManager.effectElements[1].p.v;\r\n      var sigmaX = dimensions == 3 ? 0 : sigma; // eslint-disable-line eqeqeq\r\n\r\n      var sigmaY = dimensions == 2 ? 0 : sigma; // eslint-disable-line eqeqeq\r\n\r\n      this.feGaussianBlur.setAttribute('stdDeviation', sigmaX + ' ' + sigmaY); // Repeat edges mapping:\r\n      //\r\n      //   0 -> off -> duplicate\r\n      //   1 -> on  -> wrap\r\n\r\n      var edgeMode = this.filterManager.effectElements[2].p.v == 1 ? 'wrap' : 'duplicate'; // eslint-disable-line eqeqeq\r\n\r\n      this.feGaussianBlur.setAttribute('edgeMode', edgeMode);\r\n    }\r\n  };\r\n\r\n  registerRenderer('canvas', CanvasRenderer);\r\n  registerRenderer('html', HybridRenderer);\r\n  registerRenderer('svg', SVGRenderer); // Registering shape modifiers\r\n\r\n  ShapeModifiers.registerModifier('tm', TrimModifier);\r\n  ShapeModifiers.registerModifier('pb', PuckerAndBloatModifier);\r\n  ShapeModifiers.registerModifier('rp', RepeaterModifier);\r\n  ShapeModifiers.registerModifier('rd', RoundCornersModifier);\r\n  ShapeModifiers.registerModifier('zz', ZigZagModifier);\r\n  ShapeModifiers.registerModifier('op', OffsetPathModifier); // Registering expression plugin\r\n\r\n  setExpressionsPlugin(Expressions);\r\n  setExpressionInterfaces(getInterface);\r\n  initialize$1();\r\n  initialize(); // Registering svg effects\r\n\r\n  registerEffect(20, SVGTintFilter, true);\r\n  registerEffect(21, SVGFillFilter, true);\r\n  registerEffect(22, SVGStrokeEffect, false);\r\n  registerEffect(23, SVGTritoneFilter, true);\r\n  registerEffect(24, SVGProLevelsFilter, true);\r\n  registerEffect(25, SVGDropShadowEffect, true);\r\n  registerEffect(28, SVGMatte3Effect, false);\r\n  registerEffect(29, SVGGaussianBlurEffect, true);\r\n\r\n  return lottie;\r\n\r\n}));\r\n", "/**\n * Copyright 2021 Design Barn Inc.\n */\n\nimport { css } from \"lit\";\n\nexport default css`\n  * {\n    box-sizing: border-box;\n  }\n\n  :host {\n    --lottie-player-toolbar-height: 35px;\n    --lottie-player-toolbar-background-color: transparent;\n    --lottie-player-toolbar-icon-color: #999;\n    --lottie-player-toolbar-icon-hover-color: #222;\n    --lottie-player-toolbar-icon-active-color: #555;\n    --lottie-player-seeker-track-color: #ccc;\n    --lottie-player-seeker-thumb-color: rgba(0, 107, 120, 0.8);\n    --lottie-player-seeker-display: block;\n\n    display: block;\n    width: 100%;\n    height: 100%;\n  }\n\n  .main {\n    display: flex;\n    flex-direction: column;\n    height: 100%;\n    width: 100%;\n  }\n\n  .animation {\n    width: 100%;\n    height: 100%;\n    display: flex;\n  }\n  .animation.controls {\n    height: calc(100% - 35px);\n  }\n\n  .toolbar {\n    display: flex;\n    align-items: center;\n    justify-items: center;\n    background-color: var(--lottie-player-toolbar-background-color);\n    margin: 0 5px;\n    height: 35px;\n  }\n\n  .toolbar button {\n    cursor: pointer;\n    fill: var(--lottie-player-toolbar-icon-color);\n    display: flex;\n    background: none;\n    border: 0;\n    padding: 0;\n    outline: none;\n    height: 100%;\n  }\n\n  .toolbar button:hover {\n    fill: var(--lottie-player-toolbar-icon-hover-color);\n  }\n\n  .toolbar button.active {\n    fill: var(--lottie-player-toolbar-icon-active-color);\n  }\n\n  .toolbar button.active:hover {\n    fill: var(--lottie-player-toolbar-icon-hover-color);\n  }\n\n  .toolbar button:focus {\n    outline: 1px dotted var(--lottie-player-toolbar-icon-active-color);\n  }\n\n  .toolbar button svg {\n  }\n\n  .toolbar button.disabled svg {\n    display: none;\n  }\n\n  .seeker {\n    -webkit-appearance: none;\n    width: 95%;\n    outline: none;\n    background-color: var(--lottie-player-toolbar-background-color);\n    display: var(--lottie-player-seeker-display);\n  }\n\n  .seeker::-webkit-slider-runnable-track {\n    width: 100%;\n    height: 5px;\n    cursor: pointer;\n    background: var(--lottie-player-seeker-track-color);\n    border-radius: 3px;\n  }\n  .seeker::-webkit-slider-thumb {\n    height: 15px;\n    width: 15px;\n    border-radius: 50%;\n    background: var(--lottie-player-seeker-thumb-color);\n    cursor: pointer;\n    -webkit-appearance: none;\n    margin-top: -5px;\n  }\n  .seeker:focus::-webkit-slider-runnable-track {\n    background: #999;\n  }\n  .seeker::-moz-range-track {\n    width: 100%;\n    height: 5px;\n    cursor: pointer;\n    background: var(--lottie-player-seeker-track-color);\n    border-radius: 3px;\n  }\n  .seeker::-moz-range-thumb {\n    height: 15px;\n    width: 15px;\n    border-radius: 50%;\n    background: var(--lottie-player-seeker-thumb-color);\n    cursor: pointer;\n  }\n  .seeker::-ms-track {\n    width: 100%;\n    height: 5px;\n    cursor: pointer;\n    background: transparent;\n    border-color: transparent;\n    color: transparent;\n  }\n  .seeker::-ms-fill-lower {\n    background: var(--lottie-player-seeker-track-color);\n    border-radius: 3px;\n  }\n  .seeker::-ms-fill-upper {\n    background: var(--lottie-player-seeker-track-color);\n    border-radius: 3px;\n  }\n  .seeker::-ms-thumb {\n    border: 0;\n    height: 15px;\n    width: 15px;\n    border-radius: 50%;\n    background: var(--lottie-player-seeker-thumb-color);\n    cursor: pointer;\n  }\n  .seeker:focus::-ms-fill-lower {\n    background: var(--lottie-player-seeker-track-color);\n  }\n  .seeker:focus::-ms-fill-upper {\n    background: var(--lottie-player-seeker-track-color);\n  }\n\n  .error {\n    display: flex;\n    justify-content: center;\n    height: 100%;\n    align-items: center;\n  }\n`;\n", "export const LOTTIE_PLAYER_VERSION = \"1.7.1\"; \nexport const LOTTIE_WEB_VERSION = \"^5.10.0\";\n", "// eslint-disable-next-line header/header\nimport { LitElement, html } from \"lit\";\nimport { customElement, property, query } from \"lit/decorators.js\";\nimport { TemplateResult } from \"lit/html.js\";\nimport * as lottie from \"lottie-web/build/player/lottie\";\n\nimport styles from \"./lottie-player.styles\";\nimport { LOTTIE_PLAYER_VERSION, LOTTIE_WEB_VERSION } from \"./versions\";\n\n// import ResizeObserver from \"resize-observer-polyfill\";\n\n// Define valid player states\nexport enum PlayerState {\n  Destroyed = \"destroyed\",\n  Error = \"error\",\n  Frozen = \"frozen\",\n  Loading = \"loading\",\n  Paused = \"paused\",\n  Playing = \"playing\",\n  Stopped = \"stopped\",\n}\n\n// Define play modes\nexport enum PlayMode {\n  Bounce = \"bounce\",\n  Normal = \"normal\",\n}\n\n// Define player events\nexport enum PlayerEvents {\n  Complete = \"complete\",\n  Destroyed = \"destroyed\",\n  Error = \"error\",\n  Frame = \"frame\",\n  Freeze = \"freeze\",\n  Load = \"load\",\n  Loop = \"loop\",\n  Pause = \"pause\",\n  Play = \"play\",\n  Ready = \"ready\",\n  Rendered = \"rendered\",\n  Stop = \"stop\",\n}\n\nexport interface Versions {\n  lottiePlayerVersion: string;\n  lottieWebVersion: string;\n}\n\n/**\n * Parse a resource into a JSON object or a URL string\n */\nexport function parseSrc(src: string | object): string | object {\n  if (typeof src === \"object\") {\n    return src;\n  }\n\n  try {\n    return JSON.parse(src);\n  } catch (e) {\n    // Try construct an absolute URL from the src URL\n    const srcUrl: URL = new URL(src, window.location.href);\n\n    return srcUrl.toString();\n  }\n}\n\nfunction isLottie(json: Record<string, any>): boolean {\n  const mandatory: string[] = [\"v\", \"ip\", \"op\", \"layers\", \"fr\", \"w\", \"h\"];\n\n  return mandatory.every((field: string) =>\n    Object.prototype.hasOwnProperty.call(json, field)\n  );\n}\n\nasync function fromURL(url: string): Promise<Record<string, any>> {\n  if (typeof url !== \"string\") {\n    throw new Error(`The url value must be a string`);\n  }\n\n  let json;\n\n  try {\n    // Try construct an absolute URL from the src URL\n    const srcUrl: URL = new URL(url);\n\n    // Fetch the JSON file from the URL\n    const result: any = await fetch(srcUrl.toString());\n\n    json = await result.json();\n  } catch (err) {\n    throw new Error(\n      `An error occurred while trying to load the Lottie file from URL`\n    );\n  }\n\n  return json;\n}\n/**\n * LottiePlayer web component class\n *\n * @export\n * @class LottiePlayer\n * @extends {LitElement}\n */\n@customElement(\"lottie-player\")\nexport class LottiePlayer extends LitElement {\n  /**\n   * Autoplay animation on load.\n   */\n  @property({ type: Boolean })\n  public autoplay: boolean = false;\n\n  /**\n   * Background color.\n   */\n  @property({ type: String, reflect: true })\n  public background?: string = \"transparent\";\n\n  /**\n   * Show controls.\n   */\n  @property({ type: Boolean })\n  public controls: boolean = false;\n\n  /**\n   * Number of times to loop animation.\n   */\n  @property({ type: Number })\n  public count?: number;\n\n  /**\n   * Player state.\n   */\n  @property({ type: String })\n  public currentState: PlayerState = PlayerState.Loading;\n\n  /**\n   * Animation description for screen readers.\n   */\n  @property({ type: String })\n  public description: string = \"Lottie animation\";\n\n  /**\n   * Direction of animation.\n   */\n  @property({ type: Number })\n  public direction: number = 1;\n\n  /**\n   * Disable checking if the Lottie is valid before loading\n   */\n  @property({ type: Boolean })\n  public disableCheck?: boolean = false;\n\n  /**\n   * Disable using shadow dom as the root\n   */\n  @property({ type: Boolean })\n  public disableShadowDOM: boolean = false;\n\n  /**\n   * Whether to play on mouse hover\n   */\n  @property({ type: Boolean })\n  public hover: boolean = false;\n\n  /**\n   * Intermission\n   */\n  @property()\n  public intermission: number = 1;\n\n  /**\n   * Whether to loop animation.\n   */\n  @property({ type: Boolean, reflect: true })\n  public loop: boolean = false;\n\n  /**\n   * Play mode.\n   */\n  @property()\n  public mode: PlayMode = PlayMode.Normal;\n\n  /**\n   * Aspect ratio to pass to lottie-web.\n   */\n  @property({ type: String })\n  public preserveAspectRatio: string = \"xMidYMid meet\";\n\n  /**\n   * Renderer to use.\n   */\n  @property({ type: String })\n  public renderer: \"svg\" = \"svg\";\n\n  /**\n   * Viewbox size for renderer settings\n   */\n  @property({ type: String })\n  public viewBoxSize?: string;\n\n  /**\n   * seeker\n   */\n\n  @property()\n  public seeker: any;\n\n  /**\n   * Animation speed.\n   */\n  @property({ type: Number })\n  public speed: number = 1;\n\n  /**\n   * Bodymovin JSON data or URL to JSON.\n   */\n  @property({ type: String })\n  public src?: string;\n\n  /**\n   * Enable web workers\n   */\n  @property({ type: Boolean })\n  public webworkers?: boolean;\n\n  /**\n   * Animation container.\n   */\n  @query(\".animation\")\n  protected container!: HTMLElement;\n\n  private _io: IntersectionObserver | undefined = undefined;\n\n  // private _ro: ResizeObserver | undefined = undefined;\n  private _lottie?: any;\n\n  private _prevState?: any;\n\n  private _counter: number = 1;\n\n  /**\n   * Configure and initialize lottie-web player instance.\n   */\n  public async load(src: string | object) {\n    const options: any = {\n      container: this.container,\n      loop: false,\n      autoplay: false,\n      renderer: this.renderer,\n      rendererSettings: {\n        preserveAspectRatio: this.preserveAspectRatio,\n        clearCanvas: false,\n        progressiveLoad: true,\n        hideOnTransparent: true,\n        ...(this.viewBoxSize && { viewBoxSize: this.viewBoxSize }),\n      },\n    };\n\n    // Load the resource information\n    try {\n      const srcParsed = parseSrc(src);\n      let jsonData = {};\n      let srcAttrib = typeof srcParsed === \"string\" ? \"path\" : \"animationData\";\n\n      // Clear previous animation, if any\n      if (this._lottie) {\n        this._lottie.destroy();\n      }\n\n      if (this.webworkers) {\n        lottie.useWebWorker(true);\n      }\n\n      // Initialize lottie player and load animation\n      this._lottie = lottie.loadAnimation({\n        ...options,\n\n        [srcAttrib]: srcParsed,\n      });\n\n      // Attach the event listeners before we check the requested json file for errors\n      this._attachEventListeners();\n\n      if (!this.disableCheck) {\n        // Fetch resource if src is a remote URL\n        if (srcAttrib === \"path\") {\n          jsonData = await fromURL(srcParsed as string);\n          srcAttrib = \"animationData\";\n        } else {\n          jsonData = srcParsed;\n        }\n\n        if (!isLottie(jsonData)) {\n          this.currentState = PlayerState.Error;\n          this.dispatchEvent(new CustomEvent(PlayerEvents.Error));\n        }\n      }\n    } catch (err) {\n      this.currentState = PlayerState.Error;\n      this.dispatchEvent(new CustomEvent(PlayerEvents.Error));\n    }\n  }\n\n  /**\n   * Returns the lottie-web instance used in the component.\n   */\n  public getLottie(): any {\n    return this._lottie;\n  }\n\n  /**\n   * Returns the lottie-web version and this player's version\n   */\n  public getVersions(): Versions {\n    return {\n      lottieWebVersion: LOTTIE_WEB_VERSION,\n      lottiePlayerVersion: LOTTIE_PLAYER_VERSION,\n    };\n  }\n\n  /**\n   * Start playing animation.\n   */\n  public play() {\n    if (!this._lottie) {\n      return;\n    }\n\n    this._lottie.play();\n    this.currentState = PlayerState.Playing;\n\n    this.dispatchEvent(new CustomEvent(PlayerEvents.Play));\n  }\n\n  /**\n   * Pause animation play.\n   */\n  public pause(): void {\n    if (!this._lottie) {\n      return;\n    }\n\n    this._lottie.pause();\n    this.currentState = PlayerState.Paused;\n\n    this.dispatchEvent(new CustomEvent(PlayerEvents.Pause));\n  }\n\n  /**\n   * Stops animation play.\n   */\n  public stop(): void {\n    if (!this._lottie) {\n      return;\n    }\n\n    this._counter = 1;\n    this._lottie.stop();\n    this.currentState = PlayerState.Stopped;\n\n    this.dispatchEvent(new CustomEvent(PlayerEvents.Stop));\n  }\n\n  /**\n   * Destroy animation and lottie-player element.\n   */\n  public destroy(): void {\n    if (!this._lottie) {\n      return;\n    }\n\n    this._lottie.destroy();\n    this._lottie = null;\n    this.currentState = PlayerState.Destroyed;\n    this.dispatchEvent(new CustomEvent(PlayerEvents.Destroyed));\n    this.remove();\n  }\n\n  /**\n   * Seek to a given frame.\n   */\n  public seek(value: number | string): void {\n    if (!this._lottie) {\n      return;\n    }\n\n    // Extract frame number from either number or percentage value\n    const matches = /^(\\d+)(%?)$/.exec(value.toString());\n\n    if (!matches) {\n      return;\n    }\n\n    // Calculate and set the frame number\n    const frame =\n      matches[2] === \"%\"\n        ? (this._lottie.totalFrames * Number(matches[1])) / 100\n        : Number(matches[1]);\n\n    // Set seeker to new frame number\n    this.seeker = frame;\n\n    // Send lottie player to the new frame\n    if (this.currentState === PlayerState.Playing) {\n      this._lottie.goToAndPlay(frame, true);\n    } else {\n      this._lottie.goToAndStop(frame, true);\n      this._lottie.pause();\n    }\n  }\n\n  /**\n   * Snapshot the current frame as SVG.\n   *\n   * If 'download' argument is boolean true, then a download is triggered in browser.\n   */\n  public snapshot(download: boolean = true): string | void {\n    if (!this.shadowRoot) return;\n\n    // Get SVG element and serialize markup\n    const svgElement = this.shadowRoot.querySelector(\".animation svg\") as Node;\n    const data = new XMLSerializer().serializeToString(svgElement);\n\n    // Trigger file download\n    if (download) {\n      const element = document.createElement(\"a\");\n\n      element.href = `data:image/svg+xml;charset=utf-8,${encodeURIComponent(\n        data\n      )}`;\n      element.download = `download_${this.seeker}.svg`;\n      document.body.appendChild(element);\n\n      element.click();\n\n      document.body.removeChild(element);\n    }\n\n    return data;\n  }\n\n  /**\n   * Sets animation play speed.\n   *\n   * @param value Playback speed.\n   */\n  public setSpeed(value = 1): void {\n    if (!this._lottie) {\n      return;\n    }\n\n    this._lottie.setSpeed(value);\n  }\n\n  /**\n   * Animation play direction.\n   *\n   * @param value Direction values.\n   */\n  public setDirection(value: number): void {\n    if (!this._lottie) {\n      return;\n    }\n\n    this._lottie.setDirection(value);\n  }\n\n  /**\n   * Sets the looping of the animation.\n   *\n   * @param value Whether to enable looping. Boolean true enables looping.\n   */\n  public setLooping(value: boolean): void {\n    if (this._lottie) {\n      this.loop = value;\n      this._lottie.loop = value;\n    }\n  }\n\n  /**\n   * Toggle playing state.\n   */\n  public togglePlay(): void {\n    return this.currentState === PlayerState.Playing\n      ? this.pause()\n      : this.play();\n  }\n\n  /**\n   * Toggles animation looping.\n   */\n  public toggleLooping(): void {\n    this.setLooping(!this.loop);\n  }\n\n  /**\n   * Resize animation.\n   */\n  public resize() {\n    if (!this._lottie) {\n      return;\n    }\n\n    this._lottie.resize();\n  }\n\n  /**\n   * Returns the styles for the component.\n   */\n  static get styles() {\n    return styles;\n  }\n\n  /**\n   * Cleanup on component destroy.\n   */\n  public disconnectedCallback(): void {\n    // Don't clean up if node is still connected to the context (i.e. this is a move).\n    if (this.isConnected) return;\n\n    // Remove intersection observer for detecting component being out-of-view.\n    if (this._io) {\n      this._io.disconnect();\n      this._io = undefined;\n    }\n\n    // Remove resize observer for detecting resize/reflow events affecting element.\n    // if (this._ro) {\n    //   this._ro.disconnect();\n    //   this._ro = undefined;\n    // }\n\n    // Remove the attached Visibility API's change event listener.\n    document.removeEventListener(\"visibilitychange\", () =>\n      this._onVisibilityChange()\n    );\n\n    // Destroy the animation instance and element\n    this.destroy();\n  }\n\n  public render(): TemplateResult | void {\n    const className: string = this.controls ? \"main controls\" : \"main\";\n    const animationClass: string = this.controls\n      ? \"animation controls\"\n      : \"animation\";\n\n    return html` <div\n      id=\"animation-container\"\n      class=${className}\n      lang=\"en\"\n      aria-label=${this.description}\n      role=\"img\"\n    >\n      <div\n        id=\"animation\"\n        class=${animationClass}\n        style=\"background:${this.background};\"\n      >\n        ${this.currentState === PlayerState.Error\n          ? html`<div class=\"error\">⚠️</div>`\n          : undefined}\n      </div>\n      ${this.controls && !this.disableShadowDOM\n        ? this.renderControls()\n        : undefined}\n    </div>`;\n  }\n\n  protected createRenderRoot(): Element | ShadowRoot {\n    if (this.disableShadowDOM) this.style.display = \"block\";\n\n    return this.disableShadowDOM ? this : super.createRenderRoot();\n  }\n\n  /**\n   * Initialize everything on component first render.\n   */\n  protected firstUpdated(): void {\n    // Add intersection observer for detecting component being out-of-view.\n    if (\"IntersectionObserver\" in window) {\n      this._io = new IntersectionObserver(\n        (entries: IntersectionObserverEntry[]) => {\n          if (entries[0].isIntersecting) {\n            if (this.currentState === PlayerState.Frozen) {\n              this.play();\n            }\n          } else if (this.currentState === PlayerState.Playing) {\n            this.freeze();\n          }\n        }\n      );\n\n      this._io.observe(this.container);\n    }\n\n    // Add listener for Visibility API's change event.\n    if (typeof document.hidden !== \"undefined\") {\n      document.addEventListener(\"visibilitychange\", () =>\n        this._onVisibilityChange()\n      );\n    }\n\n    // Setup lottie player\n    if (this.src) {\n      this.load(this.src);\n    }\n    this.dispatchEvent(new CustomEvent(PlayerEvents.Rendered));\n  }\n\n  protected renderControls(): TemplateResult {\n    const isPlaying: boolean = this.currentState === PlayerState.Playing;\n    const isPaused: boolean = this.currentState === PlayerState.Paused;\n    const isStopped: boolean = this.currentState === PlayerState.Stopped;\n\n    return html`\n      <div\n        id=\"lottie-controls\"\n        aria-label=\"lottie-animation-controls\"\n        class=\"toolbar\"\n      >\n        <button\n          id=\"lottie-play-button\"\n          @click=${this.togglePlay}\n          class=${isPlaying || isPaused ? \"active\" : \"\"}\n          style=\"align-items:center;\"\n          tabindex=\"0\"\n          aria-label=\"play-pause\"\n        >\n          ${isPlaying\n            ? html`<svg\n                width=\"24\"\n                height=\"24\"\n                aria-hidden=\"true\"\n                focusable=\"false\"\n              >\n                <path\n                  d=\"M14.016 5.016H18v13.969h-3.984V5.016zM6 18.984V5.015h3.984v13.969H6z\"\n                />\n              </svg>`\n            : html`<svg\n                width=\"24\"\n                height=\"24\"\n                aria-hidden=\"true\"\n                focusable=\"false\"\n              >\n                <path d=\"M8.016 5.016L18.985 12 8.016 18.984V5.015z\" />\n              </svg>`}\n        </button>\n        <button\n          id=\"lottie-stop-button\"\n          @click=${this.stop}\n          class=${isStopped ? \"active\" : \"\"}\n          style=\"align-items:center;\"\n          tabindex=\"0\"\n          aria-label=\"stop\"\n        >\n          <svg width=\"24\" height=\"24\" aria-hidden=\"true\" focusable=\"false\">\n            <path d=\"M6 6h12v12H6V6z\" />\n          </svg>\n        </button>\n        <input\n          id=\"lottie-seeker-input\"\n          class=\"seeker\"\n          type=\"range\"\n          min=\"0\"\n          step=\"1\"\n          max=\"100\"\n          .value=${this.seeker}\n          @input=${this._handleSeekChange}\n          @mousedown=${() => {\n            this._prevState = this.currentState;\n            this.freeze();\n          }}\n          @mouseup=${() => {\n            this._prevState === PlayerState.Playing && this.play();\n          }}\n          aria-valuemin=\"1\"\n          aria-valuemax=\"100\"\n          role=\"slider\"\n          aria-valuenow=${this.seeker}\n          tabindex=\"0\"\n          aria-label=\"lottie-seek-input\"\n        />\n        <button\n          id=\"lottie-loop-toggle\"\n          @click=${this.toggleLooping}\n          class=${this.loop ? \"active\" : \"\"}\n          style=\"align-items:center;\"\n          tabindex=\"0\"\n          aria-label=\"loop-toggle\"\n        >\n          <svg width=\"24\" height=\"24\" aria-hidden=\"true\" focusable=\"false\">\n            <path\n              d=\"M17.016 17.016v-4.031h1.969v6h-12v3l-3.984-3.984 3.984-3.984v3h10.031zM6.984 6.984v4.031H5.015v-6h12v-3l3.984 3.984-3.984 3.984v-3H6.984z\"\n            />\n          </svg>\n        </button>\n      </div>\n    `;\n  }\n\n  /**\n   * Handle visibility change events.\n   */\n  private _onVisibilityChange(): void {\n    if (document.hidden === true && this.currentState === PlayerState.Playing) {\n      this.freeze();\n    } else if (this.currentState === PlayerState.Frozen) {\n      this.play();\n    }\n  }\n\n  /**\n   * Handles click and drag actions on the progress track.\n   */\n  private _handleSeekChange(e: any): void {\n    if (!this._lottie || isNaN(e.target.value)) {\n      return;\n    }\n\n    const frame: number = (e.target.value / 100) * this._lottie.totalFrames;\n\n    this.seek(frame);\n  }\n\n  private _attachEventListeners(): void {\n    this._lottie.addEventListener(\"enterFrame\", () => {\n      this.seeker =\n        (this._lottie.currentFrame / this._lottie.totalFrames) * 100;\n\n      this.dispatchEvent(\n        new CustomEvent(PlayerEvents.Frame, {\n          detail: {\n            frame: this._lottie.currentFrame,\n            seeker: this.seeker,\n          },\n        })\n      );\n    });\n\n    // Handle animation play complete\n    this._lottie.addEventListener(\"complete\", () => {\n      if (this.currentState !== PlayerState.Playing) {\n        this.dispatchEvent(new CustomEvent(PlayerEvents.Complete));\n\n        return;\n      }\n\n      if (!this.loop || (this.count && this._counter >= this.count)) {\n        this.dispatchEvent(new CustomEvent(PlayerEvents.Complete));\n\n        if (this.mode === PlayMode.Bounce) {\n          if (this._lottie.currentFrame === 0) {\n            return;\n          }\n        } else {\n          return;\n        }\n      }\n\n      if (this.mode === PlayMode.Bounce) {\n        if (this.count) {\n          this._counter += 0.5;\n        }\n\n        setTimeout(() => {\n          this.dispatchEvent(new CustomEvent(PlayerEvents.Loop));\n\n          if (this.currentState === PlayerState.Playing) {\n            this._lottie.setDirection(this._lottie.playDirection * -1);\n            this._lottie.play();\n          }\n        }, this.intermission);\n      } else {\n        if (this.count) {\n          this._counter += 1;\n        }\n\n        window.setTimeout(() => {\n          this.dispatchEvent(new CustomEvent(PlayerEvents.Loop));\n\n          if (this.currentState === PlayerState.Playing) {\n            if (this.direction === -1) {\n              // Prevents flickering\n              this.seek(\"99%\");\n              this.play();\n            } else {\n              this._lottie.stop();\n              this._lottie.play();\n            }\n          }\n        }, this.intermission);\n      }\n    });\n\n    // Handle lottie-web ready event\n    this._lottie.addEventListener(\"DOMLoaded\", () => {\n      // Set initial playback speed and direction\n      this.setSpeed(this.speed);\n      this.setDirection(this.direction);\n\n      // Start playing if autoplay is enabled\n      if (this.autoplay) {\n        if (this.direction === -1) this.seek(\"100%\");\n        this.play();\n      }\n\n      this.dispatchEvent(new CustomEvent(PlayerEvents.Ready));\n    });\n\n    // Handle animation data load complete\n    this._lottie.addEventListener(\"data_ready\", () => {\n      this.dispatchEvent(new CustomEvent(PlayerEvents.Load));\n    });\n\n    // Set error state when animation load fail event triggers\n    this._lottie.addEventListener(\"data_failed\", () => {\n      this.currentState = PlayerState.Error;\n\n      this.dispatchEvent(new CustomEvent(PlayerEvents.Error));\n    });\n\n    // Set handlers to auto play animation on hover if enabled\n    this.container.addEventListener(\"mouseenter\", () => {\n      if (this.hover && this.currentState !== PlayerState.Playing) {\n        this.play();\n      }\n    });\n    this.container.addEventListener(\"mouseleave\", () => {\n      if (this.hover && this.currentState === PlayerState.Playing) {\n        this.stop();\n      }\n    });\n  }\n\n  /**\n   * Freeze animation play.\n   * This internal state pauses animation and is used to differentiate between\n   * user requested pauses and component instigated pauses.\n   */\n  private freeze(): void {\n    if (!this._lottie) {\n      return;\n    }\n\n    this._lottie.pause();\n    this.currentState = PlayerState.Frozen;\n\n    this.dispatchEvent(new CustomEvent(PlayerEvents.Freeze));\n  }\n}\n"],
  "mappings": "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AAG,EAAG,CAAC,CAAC,EAClC,WAAW,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,EAClC,WAAW,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,EAClC,WAAW,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,EAClC,WAAW,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,EAClC,WAAW,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,EAClC,WAAW,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,EAClC,WAAW,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,EAClC,WAAW,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,EAClC,WAAW,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,EAClC,WAAW,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,EAClC,WAAW,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,EAClC,WAAW,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,EAClC,WAAW,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,EAClC,WAAW,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,EAClC,WAAW,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,EAClC,WAAW,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,EAClC,WAAW,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,EAClC,WAAW,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,EAClC,WAAW,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,EAClC,WAAW,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,EAClC,WAAW,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,EAClC,WAAW,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,EAClC,WAAW,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,EAClC,WAAW,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,EAClC,WAAW,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,EAClC,WAAW,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,EAClC,WAAW,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,EAClC,WAAW,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,EAClC,WAAW,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,EAClC,WAAW,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,EAClC,WAAW,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,EAClC,WAAW,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,EAClC,WAAW,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,EAClC,WAAW,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,EAClC,WAAW,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,EAClC,WAAW,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,EAClC,WAAW,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,EAClC,WAAW,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,EAClC,WAAW,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,EAClC,WAAW,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,EAClC,WAAW,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,EAClC,WAAW,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,EAClC,WAAW,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,EAClC,WAAW,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,EAClC,WAAW,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,EAClC,WAAW,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,EAClC,WAAW,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,EAClC,WAAW,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,EAClC,WAAW,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,EAClC,WAAW,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,EAClC,WAAW,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,EAClC,WAAW,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,EAClC,WAAW,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,EAClC,WAAW,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,EAClC,WAAW,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,EAClC,WAAW,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,EAClC,WAAW,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,EAClC,WAAW,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,EAClC,WAAW,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,EAClC,WAAW,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,EAClC,WAAW,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,EAClC,WAAW,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,EAClC,WAAW,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,EAClC,WAAW,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,EAClC,WAAW,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,EAClC,WAAW,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,EAClC,WAAW,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,EAClC,WAAW,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,EAClC,WAAW,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,EAClC,WAAW,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,EAClC,WAAW,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,EAClC,WAAW,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,EAClC,WAAW,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,EAClC,WAAW,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,EAClC,WAAW,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,EAClC,WAAW,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,EAClC,WAAW,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,EAClC,WAAW,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,EAClC,WAAW,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,EAClC,WAAW,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,EAClC,WAAW,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,EAClC,WAAW,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,EAClC,WAAW,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,EAClC,WAAW,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,EAClC,WAAW,KAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,EAClC,WAAW,KAAK,CAAC,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nG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,KAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,KAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,KAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MAAS,MACnG,IAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,MAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,MAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OACnG,OAAS,OAAS,MACtB,CAAC,EAIDA,GAAa,eAAiB,WAAW,KAAK,CAC1C,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAC3G,IAAK,IAAK,KAAM,IAAK,KAAM,IAAK,KAAM,IAAK,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,KAAM,IAAK,KAAM,IAAK,KAAM,IAC5G,IAAK,IAAK,IAAK,KAAM,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACvG,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,IAAK,IAC5G,KAAM,IAAK,IAAK,IAAK,KAAM,IAAK,KAAM,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,KAAM,IAAK,KAAM,IAAK,KAAM,IAC5G,IAAK,IAAK,KAAM,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,IAAK,IAAK,KAAM,IAAK,KAAM,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,IAC7G,KAAM,IAAK,KAAM,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,IAC1G,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,KAAM,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,IACzG,KAAM,IAAK,KAAM,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACvG,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAC5G,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,KAAM,IAAK,KAAM,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,IAAK,KAAM,IAC3G,KAAM,IAAK,KAAM,IAAK,IAAK,IAAK,KAAM,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,IAAK,KAAM,IAAK,KAAM,KAAM,IAAK,IACzG,KAAM,IAAK,KAAM,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,IAAK,KAAM,KAAM,IAAK,IAAK,KAAM,IAAK,KAAM,IAAK,KAAM,KACzG,KAAM,IAAK,IAAK,IAAK,KAAM,IAAK,KAAM,IAAK,KAAM,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,KAAM,IACzG,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,KAAM,IAC1G,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,KAAM,IAAK,KAAM,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KACzG,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,IAAK,KAAM,IAAK,KAAM,IAAK,KAAM,IAAK,IAAK,IAAK,KAAM,IAAK,IAAK,KACzG,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,IAAK,IAC1G,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,KAAM,IAAK,IAAK,KAAM,KAAM,KAC5G,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAC5G,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,KAAM,IAAK,IAAK,IAAK,KACxG,IAAK,KAAM,IAAK,KAAM,KAAM,IAAK,KAAM,IAAK,KAAM,IAAK,KAAM,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,IAC1G,IAAK,KAAM,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,KAAM,IAAK,KAAM,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KACzG,IAAK,KAAM,KAAM,KAAM,IAAK,KAAM,IAAK,KAAM,IAAK,KAAM,IAAK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,GAAI,GAAI,GAAI,GAAI,EAAE,CAAC,EAC3C,WAAW,KAAK,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,CAAC,EAC3C,WAAW,KAAK,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,CAAC,EAC3C,WAAW,KAAK,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,CAAC,EAC3C,WAAW,KAAK,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,CAAC,EAC3C,WAAW,KAAK,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,CAAC,EAC3C,WAAW,KAAK,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,CAAC,EAC3C,WAAW,KAAK,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,CAAC,EAC3C,WAAW,KAAK,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,CAAC,EAC3C,WAAW,KAAK,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,CAAC,EAC3C,WAAW,KAAK,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,CAAC,EAC3C,WAAW,KAAK,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,CAAC,EAC3C,WAAW,KAAK,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,CAAC,EAC3C,WAAW,KAAK,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,CAAC,EAC3C,WAAW,KAAK,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,CAAC,EAC3C,WAAW,KAAK,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,CAAC,EAC3C,WAAW,KAAK,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,CAAC,EAC3C,WAAW,KAAK,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,CAAC,EAC3C,WAAW,KAAK,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,CAAC,EAC3C,WAAW,KAAK,CAAC,EAAG,GAAI,GAAI,GAAI,IAAK,GAAI,EAAE,CAAC,EAC5C,WAAW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",
  "names": ["require_rails_ujs", "__commonJSMin", "exports", "module", "context", "Rails", "nonce", "ref", "expando", "m", "element", "selector", "key", "value", "isEditable", "$", "csrfParam", "csrfToken", "meta", "xhr", "token", "param", "input", "CustomEvent", "fire", "matches", "preventDefault", "event", "params", "evt", "result", "obj", "name", "data", "e", "eventType", "handler", "target", "AcceptHeaders", "CSRFProtection", "createXHR", "cspNonce", "prepareOptions", "processResponse", "options", "response", "done", "type", "parser", "script", "url", "originAnchor", "urlAnchor", "error", "toArray", "additionalParam", "inputs", "option", "form", "el", "allowAction", "stopEverything", "message", "answer", "callback", "disableFormElement", "disableFormElements", "disableLinkElement", "enableFormElement", "enableFormElements", "enableLinkElement", "formElements", "getData", "isContentEditable", "isXhrRedirect", "setData", "replacement", "originalText", "formContent", "href", "link", "method", "ajax", "isCrossDomain", "isRemote", "serializeElement", "slice", "button", "dataType", "withCredentials", "args", "insignificantMetaClick", "metaClick", "nonPrimaryMouseClick", "delegate", "disableElement", "enableElement", "formSubmitButtonClick", "handleConfirm", "handleDisabledElement", "handleMethod", "handleRemote", "loadCSPNonce", "preventInsignificantClick", "refreshCSRFTokens", "originalOptions", "require_activestorage", "__commonJSMin", "exports", "module", "global", "factory", "createCommonjsModule", "fn", "sparkMd5", "undefined", "hex_chr", "md5cycle", "x", "k", "a", "b", "c", "d", "md5blk", "s", "md5blks", "i", "md5blk_array", "md51", "n", "state", "length", "tail", "tmp", "lo", "hi", "md51_array", "rhex", "j", "hex", "clamp", "val", "from", "to", "begin", "end", "num", "target", "targetArray", "sourceArray", "toUtf8", "str", "utf8Str2ArrayBuffer", "returnUInt8Array", "buff", "arr", "arrayBuffer2Utf8Str", "concatenateArrayBuffers", "first", "second", "result", "hexToBinaryString", "bytes", "SparkMD5", "contents", "raw", "ret", "content", "hash", "classCallCheck", "instance", "Constructor", "createClass", "defineProperties", "props", "descriptor", "protoProps", "staticProps", "fileSlice", "FileChecksum", "file", "callback", "_this", "event", "binaryDigest", "base64digest", "start", "getMetaValue", "name", "element", "findElement", "findElements", "root", "selector", "elements", "toArray$1", "dispatchEvent", "type", "eventInit", "disabled", "bubbles", "cancelable", "detail", "value", "BlobRecord", "checksum", "url", "csrfToken", "response", "direct_upload", "key", "_xhr", "responseType", "BlobUpload", "blob", "_blob$directUploadDat", "headers", "status", "id", "DirectUpload", "delegate", "error", "notify", "upload", "object", "methodName", "_len", "messages", "_key", "DirectUploadController", "input", "hiddenInput", "attributes", "progress", "xhr", "_this2", "inputSelector", "DirectUploadsController", "form", "controllers", "startNextController", "controller", "processingAttribute", "submitButtonsByForm", "started", "didClick", "didSubmitForm", "didSubmitRemoteElement", "handleFormSubmissionEvent", "inputs", "disable", "enable", "submitForm", "button", "_button", "autostart", "adapters_default", "init_adapters", "__esmMin", "logger_default", "init_logger", "__esmMin", "init_adapters", "messages", "adapters_default", "now", "secondsSince", "ConnectionMonitor", "connection_monitor_default", "init_connection_monitor", "__esmMin", "init_logger", "time", "connection", "logger_default", "staleThreshold", "reconnectionBackoffRate", "backoff", "jitter", "internal_default", "init_internal", "__esmMin", "message_types", "protocols", "supportedProtocols", "indexOf", "Connection", "connection_default", "init_connection", "__esmMin", "init_adapters", "init_connection_monitor", "init_internal", "init_logger", "internal_default", "consumer", "connection_monitor_default", "data", "logger_default", "socketProtocols", "adapters_default", "allowReconnect", "error", "states", "state", "eventName", "handler", "event", "identifier", "message", "reason", "reconnect", "type", "extend", "Subscription", "init_subscription", "__esmMin", "object", "properties", "key", "value", "consumer", "params", "mixin", "action", "data", "SubscriptionGuarantor", "subscription_guarantor_default", "init_subscription_guarantor", "__esmMin", "init_logger", "subscriptions", "subscription", "logger_default", "s", "Subscriptions", "init_subscriptions", "__esmMin", "init_subscription", "init_subscription_guarantor", "init_logger", "consumer", "subscription_guarantor_default", "channelName", "mixin", "channel", "params", "subscription", "Subscription", "identifier", "s", "callbackName", "args", "subscriptions", "logger_default", "command", "createWebSocketURL", "url", "a", "Consumer", "init_consumer", "__esmMin", "init_connection", "init_subscriptions", "Subscriptions", "connection_default", "data", "subprotocol", "src_exports", "__export", "connection_default", "connection_monitor_default", "Consumer", "internal_default", "Subscription", "subscription_guarantor_default", "Subscriptions", "adapters_default", "createConsumer", "createWebSocketURL", "getConfig", "logger_default", "url", "name", "element", "init_src", "__esmMin", "init_connection", "init_connection_monitor", "init_consumer", "init_internal", "init_subscription", "init_subscriptions", "init_subscription_guarantor", "init_adapters", "init_logger", "require_chartkick", "__commonJSMin", "exports", "module", "global", "factory", "isArray", "variable", "isFunction", "isPlainObject", "extend", "target", "source", "key", "merge", "obj1", "obj2", "DATE_PATTERN", "negativeValues", "series", "i", "j", "data", "toStr", "n", "toFloat", "toDate", "matches", "year", "month", "day", "str", "toArr", "arr", "jsOptionsFunc", "defaultOptions", "hideLegend", "setTitle", "setMin", "setMax", "setStacked", "setXtitle", "setYtitle", "chart", "opts", "chartOptions", "options", "sortByTime", "a", "b", "sortByNumberSeries", "sortByNumber", "isMinute", "d", "isHour", "isDay", "isWeek", "dayOfWeek", "isMonth", "isYear", "isDate", "obj", "isNumber", "byteSuffixes", "formatValue", "pre", "value", "axis", "suffix", "precision", "round", "suffixIdx", "baseValue", "num", "parts", "seriesOption", "option", "allZeros", "baseOptions", "defaultOptions$2", "defaultColors", "hideLegend$2", "legend", "setTitle$2", "title", "setMin$2", "min", "setMax$2", "max", "setBarMin$1", "setBarMax$1", "setStacked$2", "stacked", "setXtitle$2", "setYtitle$2", "addOpacity", "hex", "opacity", "result", "notnull", "x", "setLabelSize", "maxLabelSize", "setFormatOptions$1", "chartType", "formatOptions", "s", "scale", "context", "label", "dataPoint", "dataLabel", "valueLabel", "jsOptions$2", "createDataTable", "datasets", "labels", "colors", "week", "hour", "minute", "i$1", "s$1", "j$1", "rows", "rows2", "sortedLabels", "k", "i$2", "s$2", "d$1", "j$2", "point", "color", "backgroundColor", "j$3", "dataset", "pointChart", "curve", "points", "xmin", "xmax", "minTime", "maxTime", "value$1", "timeDiff", "step", "width", "unitStepSize", "defaultExport$2", "library", "values", "barOptions", "type", "ctx", "defaultOptions$1", "hideLegend$1", "setTitle$1", "setMin$1", "setMax$1", "setStacked$1", "stackedValue", "setXtitle$1", "setYtitle$1", "jsOptions$1", "setFormatOptions", "defaultExport$1", "categories", "newSeries", "d2", "loaded", "callbacks", "position", "setBarMin", "setBarMax", "jsOptions", "resize", "callback", "defaultExport", "this$1$1", "row", "pack", "loadOptions", "config", "cb", "call", "columnType", "formatSeriesData", "keyType", "r", "keyFunc", "detectXType", "noDatetime", "dataEmpty", "detectXTypeWithFunction", "func", "copySeries", "copy", "processSeries", "processSimple", "perfectData", "addDownloadButton", "element", "link", "download", "image", "addEvent", "e", "related", "childOf", "elem", "event", "fn", "fn2", "removeEvent", "p", "c", "pendingRequests", "runningRequests", "maxRequests", "pushRequest", "url", "success", "error", "runNext", "request", "getJSON", "requestComplete", "ajaxCall", "jqXHR", "textStatus", "errorThrown", "message", "$", "xhr", "adapters", "setText", "text", "chartError", "noPrefix", "errorCatcher", "err", "fetchDataSource", "dataSource", "showLoading", "getAdapterType", "addAdapter", "adapterType", "adapter", "loadAdapters", "renderChart", "callAdapter", "fnName", "adapterName", "Chart", "elementId", "Chartkick", "sep", "refresh", "canvas", "tmpCanvas", "tmpCtx", "updateRefresh", "LineChart", "PieChart", "ColumnChart", "BarChart", "AreaChart", "GeoChart", "ScatterChart", "BubbleChart", "Timeline", "chartId", "require_action_cable", "__commonJSMin", "exports", "module", "global", "factory", "adapters", "logger", "_adapters$logger", "_len", "messages", "_key", "_typeof", "obj", "classCallCheck", "instance", "Constructor", "createClass", "defineProperties", "target", "props", "i", "descriptor", "protoProps", "staticProps", "now", "secondsSince", "time", "clamp", "number", "min", "max", "ConnectionMonitor", "connection", "_this", "_constructor$pollInte", "multiplier", "interval", "_this2", "INTERNAL", "message_types", "protocols", "supportedProtocols", "indexOf", "Connection", "consumer", "data", "_ref", "allowReconnect", "error", "states", "state", "eventName", "handler", "event", "_JSON$parse", "identifier", "message", "reason", "reconnect", "type", "extend", "object", "properties", "key", "value", "Subscription", "params", "mixin", "action", "SubscriptionGuarantor", "subscriptions", "subscription", "s", "Subscriptions", "channelName", "channel", "callbackName", "_this3", "args", "_len2", "_key2", "_this4", "command", "Consumer", "url", "createWebSocketURL", "a", "createConsumer", "getConfig", "name", "element", "require_getTimeStamp", "__commonJSMin", "exports", "module", "pad", "number", "getTimeStamp", "date", "hours", "minutes", "seconds", "require_loggers", "__commonJSMin", "exports", "getTimeStamp", "justErrorsLogger", "_len", "args", "_key", "debugLogger", "_len2", "_key2", "_len3", "_key3", "_len4", "_key4", "require_non_secure", "__commonJSMin", "exports", "module", "urlAlphabet", "customAlphabet", "alphabet", "defaultSize", "size", "id", "i", "nanoid", "require_prettierBytes", "__commonJSMin", "exports", "module", "num", "neg", "units", "exponent", "unit", "require_wildcard", "__commonJSMin", "exports", "module", "WildcardMatcher", "text", "separator", "input", "matches", "parts", "ii", "partsCount", "testParts", "key", "test", "matcher", "require_mime_match", "__commonJSMin", "exports", "module", "wildcard", "reMimePartSplit", "target", "pattern", "test", "result", "require_Restricter", "__commonJSMin", "exports", "prettierBytes", "match", "defaultOptions", "RestrictionError", "errors", "message", "Restricter", "getOpts", "i18n", "opts", "file", "files", "maxFileSize", "minFileSize", "maxTotalFileSize", "maxNumberOfFiles", "allowedFileTypes", "f", "type", "allowedFileTypesString", "total", "minNumberOfFiles", "error", "requiredMetaFields", "own", "missingFields", "field", "require_hasProperty", "__commonJSMin", "exports", "module", "has", "object", "key", "require_Translator", "__commonJSMin", "exports", "module", "_classPrivateFieldLooseBase", "receiver", "privateKey", "id", "_classPrivateFieldLooseKey", "name", "has", "insertReplacement", "source", "rx", "replacement", "newParts", "chunk", "raw", "i", "list", "interpolate", "phrase", "options", "dollarRegex", "dollarBillsYall", "interpolated", "arg", "_apply", "Translator", "locales", "_apply2", "n", "key", "string", "plural", "locale", "prevLocale", "require_namespace_emitter", "__commonJSMin", "exports", "module", "emitter", "_fns", "event", "arg1", "arg2", "arg3", "arg4", "arg5", "arg6", "toEmit", "getListeners", "emitAll", "fn", "one", "keep", "fns", "i", "l", "e", "out", "idx", "args", "keys", "key", "require_lodash", "__commonJSMin", "exports", "module", "FUNC_ERROR_TEXT", "NAN", "symbolTag", "reTrim", "reIsBadHex", "reIsBinary", "reIsOctal", "freeParseInt", "freeGlobal", "freeSelf", "root", "objectProto", "objectToString", "nativeMax", "nativeMin", "now", "debounce", "func", "wait", "options", "lastArgs", "lastThis", "maxWait", "result", "timerId", "lastCallTime", "lastInvokeTime", "leading", "maxing", "trailing", "toNumber", "isObject", "invokeFunc", "time", "args", "thisArg", "leadingEdge", "timerExpired", "remainingWait", "timeSinceLastCall", "timeSinceLastInvoke", "shouldInvoke", "trailingEdge", "cancel", "flush", "debounced", "isInvoking", "throttle", "value", "type", "isObjectLike", "isSymbol", "other", "isBinary", "require_lib", "__commonJSMin", "exports", "module", "_classPrivateFieldLooseBase", "receiver", "privateKey", "id", "_classPrivateFieldLooseKey", "name", "packageJson", "_publish", "DefaultStore", "_publish2", "patch", "prevState", "nextState", "listener", "_len", "args", "_key", "defaultStore", "require_getFileNameAndExtension", "__commonJSMin", "exports", "module", "getFileNameAndExtension", "fullFileName", "lastDot", "require_mimeTypes", "__commonJSMin", "exports", "module", "require_getFileType", "__commonJSMin", "exports", "module", "getFileNameAndExtension", "mimeTypes", "getFileType", "file", "_getFileNameAndExtens", "fileExtension", "require_generateFileID", "__commonJSMin", "exports", "module", "encodeCharacter", "character", "encodeFilename", "name", "suffix", "generateFileID", "file", "id", "require_supportsUploadProgress", "__commonJSMin", "exports", "module", "supportsUploadProgress", "userAgent", "m", "edgeVersion", "major", "minor", "require_getFileName", "__commonJSMin", "exports", "module", "getFileName", "fileType", "fileDescriptor", "require_locale", "__commonJSMin", "exports", "module", "require_Uppy", "__commonJSMin", "exports", "module", "_nonSecure", "_loggers", "_Restricter", "_Symbol$for", "_Symbol$for2", "_classPrivateFieldLooseBase", "receiver", "privateKey", "id", "_classPrivateFieldLooseKey", "name", "Translator", "ee", "throttle", "DefaultStore", "getFileType", "getFileNameAndExtension", "generateFileID", "supportsUploadProgress", "getFileName", "packageJson", "locale", "_plugins", "_restricter", "_storeUnsubscribe", "_emitter", "_preProcessors", "_uploaders", "_postProcessors", "_informAndEmit", "_checkRequiredMetaFieldsOnFile", "_checkRequiredMetaFields", "_assertNewUploadAllowed", "_checkAndCreateFileStateObject", "_startIfAutoProceed", "_addListeners", "_updateOnlineStatus", "_createUpload", "_getUpload", "_removeUpload", "_runUpload", "Uppy", "_opts", "_runUpload2", "_removeUpload2", "_getUpload2", "_createUpload2", "_addListeners2", "_startIfAutoProceed2", "_checkAndCreateFileStateObject2", "_assertNewUploadAllowed2", "_checkRequiredMetaFields2", "_checkRequiredMetaFieldsOnFile2", "_informAndEmit2", "defaultOptions", "currentFile", "files", "prevState", "nextState", "patch", "event", "_len", "args", "_key", "callback", "state", "plugin", "fileID", "translator", "newOpts", "defaultProgress", "updatedFiles", "updatedFile", "fn", "data", "updatedMeta", "newMeta", "filesObject", "totalProgress", "error", "inProgressFiles", "_ref", "progress", "newFiles", "file", "startedFiles", "uploadStartedFiles", "pausedFiles", "completeFiles", "erroredFiles", "inProgressNotPausedFiles", "processingFiles", "err", "newFile", "fileDescriptors", "errors", "i", "message", "subError", "fileIDs", "reason", "currentUploads", "updatedUploads", "removedFiles", "fileIsNotRemoved", "uploadFileID", "uploadID", "newFileIDs", "capabilities", "stateUpdate", "removedFileIDs", "isPaused", "filesToRetry", "_temp", "canHavePercentage", "inProgress", "sizedFiles", "unsizedFiles", "progressMax", "currentProgress", "acc", "totalSize", "averageSize", "uploadedSize", "Plugin", "opts", "msg", "pluginId", "existsPluginAlready", "plugins", "foundPlugin", "type", "method", "instance", "list", "index", "item", "updatedState", "_temp2", "info", "duration", "isComplexMessage", "logger", "currentUpload", "_classPrivateFieldLoo", "onBeforeUploadResult", "currentlyUploadingFiles", "curr", "waitingFileIDs", "details", "missingFields", "success", "allowNewUpload", "fileDescriptor", "fileType", "fileName", "fileExtension", "isRemote", "meta", "size", "onBeforeFileAddedResult", "filesArray", "errorHandler", "response", "errorMsg", "newError", "uploadResp", "forceAllowNewUpload", "restoreStep", "steps", "step", "updatedUpload", "successful", "failed", "result", "preact_module_exports", "__export", "x", "k", "G", "J", "g", "b", "E", "t", "l", "D", "H", "assign", "obj", "props", "i", "removeNode", "node", "parentNode", "removeChild", "createElement", "type", "children", "key", "ref", "normalizedProps", "arguments", "length", "slice", "call", "defaultProps", "createVNode", "original", "vnode", "__k", "__", "__b", "__e", "__c", "constructor", "__v", "vnodeId", "__i", "__u", "options", "createRef", "current", "Fragment", "BaseComponent", "context", "this", "getDomSibling", "childIndex", "sibling", "updateParentDomPointers", "child", "base", "enqueueRender", "c", "__d", "rerenderQueue", "push", "process", "__r", "prevDebounce", "debounceRendering", "defer", "renderQueueLength", "component", "newVNode", "oldVNode", "oldDom", "commitQueue", "refQueue", "sort", "depthSort", "shift", "__P", "diff", "__n", "namespaceURI", "commitRoot", "diffChildren", "parentDom", "renderResult", "newParentVNode", "oldParentVNode", "globalContext", "namespace", "excessDomChildren", "isHydrating", "childVNode", "newDom", "firstChildDom", "result", "oldChildren", "EMPTY_ARR", "newChildrenLength", "constructNewChildrenArray", "EMPTY_OBJ", "applyRef", "insert", "nextSibling", "skewedIndex", "matchingIndex", "oldChildrenLength", "remainingOldChildren", "skew", "Array", "String", "isArray", "findMatchingIndex", "unmount", "parentVNode", "contains", "insertBefore", "nodeType", "toChildArray", "out", "some", "y", "setStyle", "style", "value", "setProperty", "IS_NON_DIMENSIONAL", "test", "dom", "name", "oldValue", "useCapture", "o", "cssText", "replace", "CAPTURE_REGEX", "toLowerCase", "_attached", "eventClock", "addEventListener", "eventProxyCapture", "eventProxy", "removeEventListener", "e", "removeAttribute", "setAttribute", "createEventProxy", "eventHandler", "_dispatched", "event", "tmp", "isNew", "oldProps", "oldState", "snapshot", "clearProcessingException", "newProps", "isClassComponent", "provider", "componentContext", "renderHook", "count", "newType", "outer", "prototype", "render", "contextType", "__E", "doRender", "sub", "state", "__h", "_sb", "__s", "getDerivedStateFromProps", "componentWillMount", "componentDidMount", "componentWillReceiveProps", "shouldComponentUpdate", "componentWillUpdate", "componentDidUpdate", "getChildContext", "getSnapshotBeforeUpdate", "then", "MODE_HYDRATE", "indexOf", "diffElementNodes", "diffed", "root", "cb", "newHtml", "oldHtml", "newChildren", "inputValue", "checked", "localName", "document", "createTextNode", "createElementNS", "is", "__m", "data", "childNodes", "attributes", "__html", "innerHTML", "hasRefUnmount", "skipRemove", "r", "componentWillUnmount", "replaceNode", "documentElement", "firstChild", "hydrate", "cloneElement", "createContext", "defaultValue", "contextId", "Consumer", "contextValue", "Provider", "subs", "ctx", "Set", "_props", "forEach", "add", "old", "delete", "isValidElement", "init_preact_module", "__esmMin", "error", "errorInfo", "ctor", "handled", "getDerivedStateFromError", "setState", "componentDidCatch", "undefined", "update", "callback", "s", "forceUpdate", "Promise", "bind", "resolve", "setTimeout", "a", "require_isDOMElement", "__commonJSMin", "exports", "module", "isDOMElement", "obj", "require_findDOMElement", "__commonJSMin", "exports", "module", "isDOMElement", "findDOMElement", "element", "context", "require_getTextDirection", "__commonJSMin", "exports", "module", "getTextDirection", "element", "_element", "require_BasePlugin", "__commonJSMin", "exports", "module", "Translator", "BasePlugin", "uppy", "opts", "plugins", "update", "newOpts", "translator", "require_UIPlugin", "__commonJSMin", "exports", "module", "_preact", "_classPrivateFieldLooseBase", "receiver", "privateKey", "id", "_classPrivateFieldLooseKey", "name", "findDOMElement", "getTextDirection", "BasePlugin", "debounce", "fn", "calling", "latestArgs", "_len", "args", "_key", "_updateUI", "UIPlugin", "_UIPlugin", "target", "plugin", "callerPluginName", "targetElement", "uppyRootElement", "state", "targetPlugin", "Target", "p", "message", "_classPrivateFieldLoo", "_classPrivateFieldLoo2", "_this$el", "require_lib", "__commonJSMin", "exports", "module", "_loggers", "_0", "_1", "Uppy", "UIPlugin", "BasePlugin", "require_toArray", "__commonJSMin", "exports", "module", "require_FOCUSABLE_ELEMENTS", "__commonJSMin", "exports", "module", "require_getActiveOverlayEl", "__commonJSMin", "exports", "module", "getActiveOverlayEl", "dashboardEl", "activeOverlayType", "overlayEl", "require_trapFocus", "__commonJSMin", "exports", "forInline", "trapFocus", "toArray", "FOCUSABLE_ELEMENTS", "getActiveOverlayEl", "focusOnFirstNode", "event", "nodes", "node", "focusOnLastNode", "isFocusInOverlay", "activeOverlayEl", "activeOverlayType", "dashboardEl", "focusableNodes", "focusedItemIndex", "require_getSpeed", "__commonJSMin", "exports", "module", "getSpeed", "fileProgress", "timeElapsed", "require_getBytesRemaining", "__commonJSMin", "exports", "module", "getBytesRemaining", "fileProgress", "require_StatusBarStates", "__commonJSMin", "exports", "module", "require_classnames", "__commonJSMin", "exports", "module", "hasOwn", "classNames", "classes", "i", "arg", "appendClass", "parseValue", "key", "value", "newClass", "require_secondsToTime", "__commonJSMin", "exports", "module", "secondsToTime", "rawSeconds", "hours", "minutes", "seconds", "require_prettyETA", "__commonJSMin", "exports", "module", "secondsToTime", "prettyETA", "seconds", "time", "hoursStr", "minutesStr", "secondsStr", "require_Components", "__commonJSMin", "exports", "CancelBtn", "DoneBtn", "LoadingSpinner", "PauseResumeButton", "ProgressBarComplete", "ProgressBarError", "ProgressBarProcessing", "ProgressBarUploading", "ProgressDetails", "RetryBtn", "UploadBtn", "_preact", "classNames", "throttle", "prettierBytes", "prettyETA", "statusBarStates", "DOT", "renderDot", "props", "newFiles", "isUploadStarted", "recoveredState", "i18n", "uploadState", "isSomeGhost", "startUpload", "uploadBtnClassNames", "uploadBtnText", "uppy", "isAllPaused", "isAllComplete", "resumableUploads", "title", "togglePauseResume", "doneButtonHandler", "progress", "value", "mode", "message", "roundedValue", "numUploads", "complete", "totalUploadedSize", "totalSize", "totalETA", "ifShowFilesUploadedOfTotal", "FileUploadCount", "UploadNewlyAddedFiles", "ThrottledProgressDetails", "supportsUploadProgress", "totalProgress", "showProgressDetails", "showUploadNewlyAddedFiles", "renderProgressDetails", "error", "displayErrorAlert", "errorMessage", "require_calculateProcessingProgress", "__commonJSMin", "exports", "module", "calculateProcessingProgress", "files", "values", "mode", "message", "progress", "preprocess", "postprocess", "value", "total", "progressValue", "require_StatusBar", "__commonJSMin", "exports", "module", "_preact", "_Components", "classNames", "statusBarStates", "calculateProcessingProgress", "STATE_ERROR", "STATE_WAITING", "STATE_PREPROCESSING", "STATE_UPLOADING", "STATE_POSTPROCESSING", "STATE_COMPLETE", "StatusBar", "props", "newFiles", "allowNewUpload", "isUploadInProgress", "isAllPaused", "resumableUploads", "error", "hideUploadButton", "hidePauseResumeButton", "hideCancelButton", "hideRetryButton", "recoveredState", "uploadState", "totalProgress", "files", "supportsUploadProgress", "hideAfterFinish", "isSomeGhost", "doneButtonHandler", "isUploadStarted", "i18n", "startUpload", "uppy", "isAllComplete", "showProgressDetails", "numUploads", "complete", "totalSize", "totalETA", "totalUploadedSize", "getProgressValue", "progress", "getIsIndeterminate", "mode", "getIsHidden", "progressValue", "isHidden", "width", "showUploadBtn", "showCancelBtn", "showPauseResumeBtn", "showRetryBtn", "showDoneBtn", "progressClassNames", "statusBarClassNames", "require_locale", "__commonJSMin", "exports", "module", "require_StatusBar", "__commonJSMin", "exports", "module", "_core", "getSpeed", "getBytesRemaining", "getTextDirection", "statusBarStates", "StatusBarUI", "packageJson", "locale", "getTotalSpeed", "files", "totalSpeed", "file", "getTotalETA", "totalBytesRemaining", "total", "getUploadingState", "error", "isAllComplete", "recoveredState", "state", "fileIDs", "i", "progress", "StatusBar", "uppy", "opts", "defaultOptions", "capabilities", "allowNewUpload", "totalProgress", "newFiles", "startedFiles", "completeFiles", "inProgressNotPausedFiles", "isUploadStarted", "isAllErrored", "isAllPaused", "isUploadInProgress", "isSomeGhost", "newFilesOrRecovered", "totalETA", "resumableUploads", "supportsUploadProgress", "totalSize", "totalUploadedSize", "element", "target", "require_lib", "__commonJSMin", "exports", "module", "require_FadeIn", "__commonJSMin", "exports", "module", "_preact", "TRANSITION_MS", "FadeIn", "callback", "children", "require_TransitionGroup", "__commonJSMin", "exports", "module", "_preact", "assign", "obj", "props", "getKey", "vnode", "fallback", "_vnode$key", "linkRef", "component", "name", "cache", "c", "getChildMapping", "children", "out", "key", "mergeChildMappings", "prev", "next", "getValueForKey", "nextKeysPending", "pendingKeys", "prevKey", "childMapping", "nextKey", "i", "pendingNextKey", "identity", "TransitionGroup", "context", "initialChildMapping", "nextProps", "nextChildMapping", "prevChildMapping", "prevState", "hasPrev", "hasNext", "keysToEnter", "keysToLeave", "idx", "currentChildMapping", "_ref", "_ref2", "childFactory", "transitionLeave", "transitionName", "transitionAppear", "transitionEnter", "transitionLeaveTimeout", "transitionEnterTimeout", "transitionAppearTimeout", "childrenToRender", "child", "ref", "el", "require_Informer", "__commonJSMin", "exports", "module", "_preact", "_core", "FadeIn", "TransitionGroup", "packageJson", "Informer", "uppy", "opts", "state", "info", "defaultOptions", "target", "require_lib", "__commonJSMin", "exports", "module", "require_mini_umd", "__commonJSMin", "exports", "module", "e", "t", "s", "i", "n", "r", "a", "h", "f", "l", "o", "u", "d", "c", "p", "g", "m", "y", "b", "w", "k", "O", "v", "A", "S", "U", "x", "C", "B", "V", "I", "L", "T", "P", "z", "F", "j", "E", "_", "D", "M", "R", "$", "K", "W", "X", "H", "Y", "G", "te", "J", "q", "Q", "ee", "Z", "se", "ie", "ne", "re", "ae", "he", "fe", "le", "oe", "ue", "de", "ce", "pe", "ge", "me", "ye", "be", "we", "ke", "Oe", "ve", "Se", "Ae", "require_dataURItoBlob", "__commonJSMin", "exports", "module", "DATA_URL_PATTERN", "dataURItoBlob", "dataURI", "opts", "toFile", "_ref", "_opts$mimeType", "dataURIData", "mimeType", "data", "binary", "bytes", "i", "require_isObjectURL", "__commonJSMin", "exports", "module", "isObjectURL", "url", "require_isPreviewSupported", "__commonJSMin", "exports", "module", "isPreviewSupported", "fileType", "require_locale", "__commonJSMin", "exports", "module", "require_lib", "__commonJSMin", "exports", "module", "_core", "_miniUmd", "dataURItoBlob", "isObjectURL", "isPreviewSupported", "locale", "packageJson", "canvasToBlob", "canvas", "type", "quality", "err", "resolve", "blob", "rotateImage", "image", "translate", "w", "h", "context", "protect", "ratio", "maxSquare", "maxSize", "maxW", "maxH", "ThumbnailGenerator", "uppy", "opts", "file", "index", "fileIDs", "fileID", "emitPreprocessCompleteForAll", "defaultOptions", "targetWidth", "targetHeight", "originalUrl", "onload", "reject", "event", "orientationPromise", "_ref", "orientation", "dimensions", "rotatedImage", "resizedImage", "img", "width", "height", "rotation", "aspect", "steps", "sW", "sH", "x", "preview", "item", "current", "require_findAllDOMElements", "__commonJSMin", "exports", "module", "isDOMElement", "findAllDOMElements", "element", "elements", "require_getFilesAndDirectoriesFromDirectory", "__commonJSMin", "exports", "module", "getFilesAndDirectoriesFromDirectory", "directoryReader", "oldEntries", "logDropError", "_ref", "onSuccess", "entries", "newEntries", "error", "require_webkitGetAsEntryApi", "__commonJSMin", "exports", "module", "getFilesAndDirectoriesFromDirectory", "getAsFileSystemHandleFromEntry", "entry", "logDropError", "resolve", "reject", "directoryReader", "dirEntries", "file", "createPromiseToAddFileOrParseDirectory", "relativePath", "handle", "getFilesFromDataTransfer", "dataTransfer", "entries", "item", "_await$item$getAsFile", "lastResortFile", "err", "require_fallbackApi", "__commonJSMin", "exports", "module", "toArray", "fallbackApi", "dataTransfer", "files", "require_getDroppedFiles", "__commonJSMin", "exports", "module", "webkitGetAsEntryApi", "fallbackApi", "getDroppedFiles", "dataTransfer", "_temp", "logDropError", "accumulator", "file", "require_memoize_one_cjs", "__commonJSMin", "exports", "module", "safeIsNaN", "value", "isEqual", "first", "second", "areInputsEqual", "newInputs", "lastInputs", "memoizeOne", "resultFn", "lastThis", "lastArgs", "lastResult", "calledOnce", "memoized", "newArgs", "_i", "require_lodash", "__commonJSMin", "exports", "module", "FUNC_ERROR_TEXT", "NAN", "symbolTag", "reTrim", "reIsBadHex", "reIsBinary", "reIsOctal", "freeParseInt", "freeGlobal", "freeSelf", "root", "objectProto", "objectToString", "nativeMax", "nativeMin", "now", "debounce", "func", "wait", "options", "lastArgs", "lastThis", "maxWait", "result", "timerId", "lastCallTime", "lastInvokeTime", "leading", "maxing", "trailing", "toNumber", "isObject", "invokeFunc", "time", "args", "thisArg", "leadingEdge", "timerExpired", "remainingWait", "timeSinceLastCall", "timeSinceLastInvoke", "shouldInvoke", "trailingEdge", "cancel", "flush", "debounced", "isInvoking", "value", "type", "isObjectLike", "isSymbol", "other", "isBinary", "require_createSuperFocus", "__commonJSMin", "exports", "module", "debounce", "FOCUSABLE_ELEMENTS", "getActiveOverlayEl", "createSuperFocus", "lastFocusWasOnSuperFocusableEl", "dashboardEl", "activeOverlayType", "overlayEl", "isFocusInOverlay", "superFocusableEl", "firstEl", "require_isDragDropSupported", "__commonJSMin", "exports", "module", "isDragDropSupported", "div", "require_is_shallow_equal", "__commonJSMin", "exports", "module", "a", "b", "i", "require_getFileTypeIcon", "__commonJSMin", "exports", "module", "_preact", "iconImage", "iconAudio", "iconVideo", "iconPDF", "iconArchive", "iconFile", "iconText", "getIconByMime", "fileType", "defaultChoice", "fileTypeGeneral", "fileTypeSpecific", "require_FilePreview", "__commonJSMin", "exports", "module", "_preact", "getFileTypeIcon", "FilePreview", "props", "file", "color", "icon", "require_MetaErrorMessage", "__commonJSMin", "exports", "module", "_preact", "metaFieldIdToName", "metaFieldId", "metaFields", "f", "renderMissingMetaFieldsError", "props", "file", "toggleFileCard", "i18n", "missingRequiredMetaFields", "metaFieldsString", "missingMetaField", "require_FilePreviewAndLink", "__commonJSMin", "exports", "module", "_preact", "FilePreview", "MetaErrorMessage", "getFileTypeIcon", "FilePreviewAndLink", "props", "require_FileProgress", "__commonJSMin", "exports", "module", "_preact", "onPauseResumeCancelRetry", "props", "progressIndicatorTitle", "ProgressIndicatorButton", "ProgressCircleContainer", "_ref", "children", "ProgressCircle", "_ref2", "progress", "circleLength", "FileProgress", "require_truncateString", "__commonJSMin", "exports", "module", "separator", "truncateString", "string", "maxLength", "charsToShow", "frontChars", "backChars", "require_FileInfo", "__commonJSMin", "exports", "module", "_preact", "prettierBytes", "truncateString", "MetaErrorMessage", "renderFileName", "props", "author", "name", "getMaxNameLength", "renderAuthor", "providerName", "dot", "renderFileSize", "ReSelectButton", "ErrorButton", "_ref", "file", "onClick", "FileInfo", "require_copyToClipboard", "__commonJSMin", "exports", "module", "copyToClipboard", "textToCopy", "fallbackString", "resolve", "textArea", "magicCopyFailed", "err", "require_Buttons", "__commonJSMin", "exports", "module", "_preact", "copyToClipboard", "EditButton", "_ref", "file", "uploadInProgressOrComplete", "metaFields", "canEditFile", "i18n", "onClick", "RemoveButton", "_ref2", "copyLinkToClipboard", "event", "props", "CopyLinkButton", "Buttons", "uppy", "showLinkToFileUploadResult", "showRemoveButton", "toggleFileCard", "openFileEditor", "editAction", "require_FileItem", "__commonJSMin", "exports", "module", "_preact", "classNames", "shallowEqual", "FilePreviewAndLink", "FileProgress", "FileInfo", "Buttons", "FileItem", "file", "nextProps", "isProcessing", "isUploaded", "uploadInProgressOrComplete", "uploadInProgress", "error", "isGhost", "showRemoveButton", "dashboardItemClass", "require_VirtualList", "__commonJSMin", "exports", "module", "_preact", "_extends", "target", "i", "source", "key", "STYLE_INNER", "STYLE_CONTENT", "VirtualList", "props", "height", "_ref", "data", "rowHeight", "renderRow", "overscanCount", "offset", "start", "visibleRowCount", "end", "selection", "styleInner", "styleContent", "require_FileList", "__commonJSMin", "exports", "module", "_preact", "_extends", "target", "i", "source", "key", "classNames", "FileItem", "VirtualList", "chunks", "list", "size", "chunked", "currentChunk", "item", "props", "noFiles", "dashboardFilesClass", "rowHeight", "fileProps", "sortByGhostComesFirst", "file1", "file2", "files", "rows", "renderRow", "row", "fileID", "require_AddFiles", "__commonJSMin", "exports", "module", "_preact", "_Symbol$for", "AddFiles", "event", "isFolder", "refCallback", "text", "onClickFn", "numberOfAcquirers", "browseFiles", "browseFolders", "lowerFMSelectionType", "camelFMSelectionType", "acquirer", "acquirers", "disableLocalFiles", "acquirersWithoutLastTwo", "lastTwoAcquirers", "i18nArray", "uppyBranding", "linkText", "ref", "require_AddFilesPanel", "__commonJSMin", "exports", "module", "_preact", "classNames", "AddFiles", "AddFilesPanel", "props", "require_ignoreEvent", "__commonJSMin", "exports", "module", "ignoreEvent", "ev", "tagName", "require_PickerPanelContent", "__commonJSMin", "exports", "module", "_preact", "classNames", "ignoreEvent", "PickerPanelContent", "_ref", "activePickerPanel", "className", "hideAllPanels", "i18n", "state", "uppy", "require_EditorPanel", "__commonJSMin", "exports", "module", "_preact", "classNames", "EditorPanel", "props", "file", "target", "require_PickerPanelTopBar", "__commonJSMin", "exports", "module", "_preact", "uploadStates", "getUploadingState", "isAllErrored", "isAllComplete", "isAllPaused", "files", "state", "fileIDs", "i", "progress", "UploadStatus", "_ref", "i18n", "inProgressNotPausedFiles", "newFiles", "processingFiles", "PanelTopBar", "props", "hideCancelButton", "maxNumberOfFiles", "toggleAddFilesPanel", "uppy", "allowNewUpload", "require_FileCard", "__commonJSMin", "exports", "module", "_preact", "_nonSecure", "classNames", "getFileTypeIcon", "ignoreEvent", "FilePreview", "FileCard", "props", "newVal", "name", "_ref", "formState", "e", "fileID", "file", "ev", "metaFields", "fieldCSSClasses", "field", "id", "required", "_file", "_metaFields", "storedMetaData", "showEditButton", "event", "require_Slide", "__commonJSMin", "exports", "module", "_preact", "classNames", "transitionName", "duration", "Slide", "props", "nextProps", "cachedChildren", "child", "patch", "className", "require_Dashboard", "__commonJSMin", "exports", "module", "_preact", "_extends", "target", "i", "source", "key", "classNames", "isDragDropSupported", "FileList", "AddFiles", "AddFilesPanel", "PickerPanelContent", "EditorPanel", "PanelTopBar", "FileCard", "Slide", "WIDTH_XL", "WIDTH_LG", "WIDTH_MD", "HEIGHT_MD", "Dashboard", "props", "noFiles", "isSizeMD", "dashboardClassName", "itemsPerRow", "showFileList", "numberOfFilesForRecovery", "numberOfGhosts", "fileID", "renderRestoredText", "require_locale", "__commonJSMin", "exports", "module", "require_Dashboard", "__commonJSMin", "exports", "module", "_preact", "_core", "_nonSecure", "trapFocus", "_classPrivateFieldLooseBase", "receiver", "privateKey", "id", "_classPrivateFieldLooseKey", "name", "StatusBar", "Informer", "ThumbnailGenerator", "findAllDOMElements", "toArray", "getDroppedFiles", "memoizeOne", "FOCUSABLE_ELEMENTS", "createSuperFocus", "DashboardUI", "packageJson", "locale", "memoize", "TAB_KEY", "ESC_KEY", "createPromise", "o", "resolve", "reject", "defaultPickerIcon", "_openFileEditorWhenFilesAdded", "_attachRenderFunctionToTarget", "_isTargetSupported", "_getAcquirers", "_getProgressIndicators", "_getEditors", "Dashboard", "uppy", "_opts", "_this", "plugin", "newTargets", "target", "callerPluginId", "callerPluginName", "callerPluginType", "state", "update", "targets", "activePickerPanel", "file", "editors", "editor", "promise", "handler", "opts", "manualClose", "isHidden", "isClosing", "_history$state", "isDarkModeOn", "capabilities", "event", "isDarkModeOnNow", "show", "fileID", "files", "descriptors", "err", "entries", "uppyDashboardInnerEl", "width", "height", "pluginState", "isModalAndClosed", "disable", "focusableNodes", "node", "currentTabIndex", "_history$state2", "_event$state", "_this$opts$onDragOver", "_this$opts", "canSomePluginHandleRootDrop", "somePluginCanHandleRootDrop", "doesEventHaveFiles", "types", "type", "hasFiles", "_this$opts$onDragLeav", "_this$opts2", "_this$opts$onDrop", "_this$opts3", "executedDropErrorOnce", "logDropError", "error", "_ref", "failed", "firstFile", "showModalTrigger", "trigger", "isFocusInUppy", "isFocusNowhere", "isInformerHidden", "isModal", "meta", "allowNewUpload", "newFiles", "uploadStartedFiles", "completeFiles", "erroredFiles", "inProgressFiles", "inProgressNotPausedFiles", "processingFiles", "isUploadStarted", "isAllComplete", "isAllErrored", "isAllPaused", "acquirers", "progressindicators", "theme", "inline", "closeAfterFinish", "allowMultipleUploads", "allowMultipleUploadBatches", "pluginID", "isDarkModeOnFromTheStart", "informer", "statusBar", "thumbnail", "defaultOptions", "require_lib", "__commonJSMin", "exports", "module", "exports", "anumber", "abytes", "ahash", "aexists", "aoutput", "n", "isBytes", "a", "b", "lengths", "h", "instance", "checkFinished", "out", "min", "assert", "exports", "fromBig", "split", "add", "U32_MASK64", "_32n", "n", "le", "lst", "Ah", "Al", "i", "h", "l", "toBig", "shrSH", "_l", "s", "shrSL", "rotrSH", "rotrSL", "rotrBH", "rotrBL", "rotr32H", "_h", "rotr32L", "rotlSH", "rotlSL", "rotlBH", "rotlBL", "Bh", "Bl", "add3L", "Cl", "add3H", "low", "Ch", "add4L", "Dl", "add4H", "Dh", "add5L", "El", "add5H", "Eh", "u64", "exports", "exports", "isBytes", "byteSwap32", "bytesToHex", "hexToBytes", "asyncLoop", "utf8ToBytes", "toBytes", "concatBytes", "checkOpts", "wrapConstructor", "wrapConstructorWithOpts", "wrapXOFConstructorWithOpts", "randomBytes", "crypto_1", "_assert_js_1", "a", "u8", "arr", "u32", "createView", "rotr", "word", "shift", "rotl", "byteSwap", "n", "i", "hexes", "_", "bytes", "hex", "asciis", "asciiToBase16", "ch", "hl", "al", "array", "ai", "hi", "n1", "n2", "char", "nextTick", "iters", "tick", "cb", "ts", "diff", "str", "data", "arrays", "sum", "res", "pad", "Hash", "defaults", "opts", "hashCons", "hashC", "msg", "tmp", "bytesLength", "exports", "keccakP", "_assert_js_1", "_u64_js_1", "utils_js_1", "SHA3_PI", "SHA3_ROTL", "_SHA3_IOTA", "_0n", "_1n", "_2n", "_7n", "_256n", "_0x71n", "round", "R", "x", "y", "t", "j", "SHA3_IOTA_H", "SHA3_IOTA_L", "rotlH", "h", "l", "s", "rotlL", "rounds", "B", "idx1", "idx0", "B0", "B1", "Th", "Tl", "curH", "curL", "shift", "PI", "Keccak", "_Keccak", "blockLen", "suffix", "outputLen", "enableXOF", "data", "state", "len", "pos", "take", "i", "out", "bufferOut", "bytes", "to", "gen", "genShake", "opts", "require_src", "__commonJSMin", "exports", "module", "sha3", "defaultLength", "bigLength", "createEntropy", "length", "random", "entropy", "bufToBigInt", "buf", "bits", "value", "i", "bi", "hash", "input", "alphabet", "x", "randomLetter", "createFingerprint", "globalObj", "globals", "sourceString", "createCounter", "count", "initialCountMax", "init", "counter", "fingerprint", "firstLetter", "time", "salt", "hashInput", "createId", "isCuid", "id", "minLength", "maxLength", "regex", "require_cuid2", "__commonJSMin", "exports", "module", "createId", "init", "getConstants", "isCuid", "require_RateLimitedQueue", "__commonJSMin", "exports", "_classPrivateFieldLooseBase", "receiver", "privateKey", "id", "_classPrivateFieldLooseKey", "name", "createCancelError", "_activeRequests", "_queuedHandlers", "_paused", "_pauseTimer", "_downLimit", "_upperLimit", "_rateLimitingTimer", "_call", "_queueNext", "_next", "_queue", "_dequeue", "_resume", "_increaseLimit", "RateLimitedQueue", "limit", "_dequeue2", "_queue2", "_next2", "_queueNext2", "_call2", "fn", "queueOptions", "_this", "_len", "args", "_key", "queuedRequest", "outerPromise", "resolve", "reject", "cancelError", "innerPromise", "err", "result", "i", "duration", "done", "cancelActive", "next", "handler", "options", "index", "other", "internalRateLimitedQueue", "require_cropper", "__commonJSMin", "exports", "module", "global", "factory", "_typeof", "obj", "_classCallCheck", "instance", "Constructor", "_defineProperties", "target", "props", "i", "descriptor", "_createClass", "protoProps", "staticProps", "_defineProperty", "key", "value", "ownKeys", "object", "enumerableOnly", "keys", "symbols", "sym", "_objectSpread2", "source", "_toConsumableArray", "arr", "_arrayWithoutHoles", "_iterableToArray", "_unsupportedIterableToArray", "_nonIterableSpread", "_arrayLikeToArray", "iter", "o", "minLen", "n", "len", "arr2", "IS_BROWSER", "WINDOW", "IS_TOUCH_DEVICE", "HAS_POINTER_EVENT", "NAMESPACE", "ACTION_ALL", "ACTION_CROP", "ACTION_MOVE", "ACTION_ZOOM", "ACTION_EAST", "ACTION_WEST", "ACTION_SOUTH", "ACTION_NORTH", "ACTION_NORTH_EAST", "ACTION_NORTH_WEST", "ACTION_SOUTH_EAST", "ACTION_SOUTH_WEST", "CLASS_CROP", "CLASS_DISABLED", "CLASS_HIDDEN", "CLASS_HIDE", "CLASS_INVISIBLE", "CLASS_MODAL", "CLASS_MOVE", "DATA_ACTION", "DATA_PREVIEW", "DRAG_MODE_CROP", "DRAG_MODE_MOVE", "DRAG_MODE_NONE", "EVENT_CROP", "EVENT_CROP_END", "EVENT_CROP_MOVE", "EVENT_CROP_START", "EVENT_DBLCLICK", "EVENT_TOUCH_START", "EVENT_TOUCH_MOVE", "EVENT_TOUCH_END", "EVENT_POINTER_DOWN", "EVENT_POINTER_MOVE", "EVENT_POINTER_UP", "EVENT_READY", "EVENT_RESIZE", "EVENT_WHEEL", "EVENT_ZOOM", "MIME_TYPE_JPEG", "REGEXP_ACTIONS", "REGEXP_DATA_URL", "REGEXP_DATA_URL_JPEG", "REGEXP_TAG_NAME", "DEFAULTS", "TEMPLATE", "isNaN", "isNumber", "isPositiveNumber", "isUndefined", "isObject", "hasOwnProperty", "isPlainObject", "_constructor", "prototype", "isFunction", "slice", "toArray", "forEach", "data", "callback", "assign", "_len", "args", "_key", "arg", "REGEXP_DECIMALS", "normalizeDecimalNumber", "times", "REGEXP_SUFFIX", "setStyle", "element", "styles", "style", "property", "hasClass", "addClass", "elem", "className", "removeClass", "toggleClass", "added", "REGEXP_CAMEL_CASE", "toParamCase", "getData", "name", "setData", "removeData", "REGEXP_SPACES", "onceSupported", "supported", "once", "listener", "options", "removeListener", "type", "handler", "event", "listeners", "addListener", "_handler", "_element$listeners", "_len2", "_key2", "dispatchEvent", "getOffset", "box", "location", "REGEXP_ORIGINS", "isCrossOriginURL", "url", "parts", "addTimestamp", "timestamp", "getTransforms", "_ref", "rotate", "scaleX", "scaleY", "translateX", "translateY", "values", "transform", "getMaxZoomRatio", "pointers", "pointers2", "ratios", "pointer", "pointerId", "pointer2", "x1", "y1", "x2", "y2", "z1", "z2", "ratio", "a", "b", "getPointer", "_ref2", "endOnly", "pageX", "pageY", "end", "getPointersCenter", "count", "_ref3", "startX", "startY", "getAdjustedSizes", "_ref4", "aspectRatio", "height", "width", "isValidWidth", "isValidHeight", "adjustedWidth", "getRotatedSizes", "_ref5", "degree", "arc", "sinArc", "cosArc", "newWidth", "newHeight", "getSourceCanvas", "image", "_ref6", "_ref7", "_ref8", "imageAspectRatio", "imageNaturalWidth", "imageNaturalHeight", "_ref6$rotate", "_ref6$scaleX", "_ref6$scaleY", "naturalWidth", "naturalHeight", "_ref8$fillColor", "fillColor", "_ref8$imageSmoothingE", "imageSmoothingEnabled", "_ref8$imageSmoothingQ", "imageSmoothingQuality", "_ref8$maxWidth", "maxWidth", "_ref8$maxHeight", "maxHeight", "_ref8$minWidth", "minWidth", "_ref8$minHeight", "minHeight", "canvas", "context", "maxSizes", "minSizes", "destMaxSizes", "destMinSizes", "destWidth", "destHeight", "params", "param", "fromCharCode", "getStringFromCharCode", "dataView", "start", "length", "str", "REGEXP_DATA_URL_HEAD", "dataURLToArrayBuffer", "dataURL", "base64", "binary", "arrayBuffer", "uint8", "arrayBufferToDataURL", "mimeType", "chunks", "chunkSize", "resetAndGetOrientation", "orientation", "littleEndian", "app1Start", "ifdStart", "offset", "exifIDCode", "tiffOffset", "endianness", "firstIFDOffset", "_length", "_offset", "parseOrientation", "render", "container", "cropper", "containerData", "imageData", "viewMode", "rotated", "canvasWidth", "canvasHeight", "canvasData", "sizeLimited", "positionLimited", "cropBoxData", "cropped", "minCanvasWidth", "minCanvasHeight", "_getAdjustedSizes", "newCanvasLeft", "newCanvasTop", "changed", "transformed", "_getRotatedSizes", "autoCropArea", "limited", "minCropBoxWidth", "minCropBoxHeight", "maxCropBoxWidth", "maxCropBoxHeight", "preview", "crossOrigin", "alt", "previews", "el", "img", "cropBoxWidth", "cropBoxHeight", "left", "top", "originalWidth", "originalHeight", "events", "handlers", "_this", "delta", "buttons", "button", "action", "touch", "change", "right", "bottom", "minLeft", "minTop", "renderable", "range", "check", "side", "p", "methods", "hasSameSize", "offsetX", "offsetY", "_this$canvasData", "x", "y", "_originalEvent", "pivot", "center", "_scaleX", "_scaleY", "rounded", "widthChanged", "heightChanged", "_this$getData", "initialX", "initialY", "initialWidth", "initialHeight", "_options$imageSmoothi", "sourceWidth", "sourceHeight", "srcX", "srcY", "srcWidth", "srcHeight", "dstX", "dstY", "dstWidth", "dstHeight", "scale", "mode", "dragBox", "face", "croppable", "movable", "AnotherCropper", "Cropper", "tagName", "xhr", "clone", "_parseOrientation", "crossOriginUrl", "_this2", "isIOSWebKit", "done", "sizingImage", "body", "template", "cropBox", "require_Editor", "__commonJSMin", "exports", "module", "_preact", "Cropper", "Editor", "props", "ev", "rotationAngle", "rotationDelta", "pendingRotationDelta", "pendingRotationAngle", "opts", "storeCropperInstance", "i18n", "currentImage", "actions", "imageURL", "ref", "require_locale", "__commonJSMin", "exports", "module", "require_ImageEditor", "__commonJSMin", "exports", "module", "_core", "_preact", "Editor", "packageJson", "locale", "ImageEditor", "uppy", "opts", "saveBlobCallback", "blob", "currentImage", "updatedFile", "cropper", "file", "defaultCropperOptions", "defaultActions", "defaultOptions", "fileTypeSpecific", "target", "require_lib", "__commonJSMin", "exports", "module", "require_zxing_js_umd", "__commonJSMin", "exports", "module", "global", "factory", "isNullOrUndefined", "obj", "extendStatics", "d", "b", "p", "__extends", "__", "fixProto", "target", "prototype", "setPrototypeOf", "fixStack", "fn", "captureStackTrace", "CustomError", "_super", "message", "_newTarget", "_this", "Exception", "ArgumentException", "IllegalArgumentException", "BinaryBitmap", "binarizer", "y", "row", "left", "top", "width", "height", "newSource", "ChecksumException", "Binarizer", "source", "System", "src", "srcPos", "dest", "destPos", "length", "IndexOutOfBoundsException", "ArrayIndexOutOfBoundsException", "index", "Arrays", "a", "val", "i", "len", "fromIndex", "toIndex", "arrayLength", "args", "rows", "cols", "value", "x", "first", "second", "result", "element", "original", "newLength", "newArray", "from", "to", "copy", "ar", "el", "comparator", "m", "n", "k", "cmp", "Integer", "intNumber", "dividend", "divisor", "num", "radix", "BitArray", "size", "bits", "newBits", "bitsOffset", "currentBits", "start", "end", "firstInt", "lastInt", "firstBit", "mask", "max", "bit", "numBits", "numBitsLeft", "other", "otherSize", "bitOffset", "array", "offset", "numBytes", "theByte", "j", "oldBitsLen", "leftOffset", "currentInt", "nextInt", "o", "DecodeHintType", "DecodeHintType$1", "FormatException", "CharacterSetValueIdentifiers", "CharacterSetECI", "valueIdentifier", "valuesParam", "name", "otherEncodingNames", "values", "v", "otherName", "characterSet", "UnsupportedOperationException", "StringEncoding", "bytes", "encoding", "encodingName", "s", "h", "charList", "uintArray", "StringUtils", "code", "e", "hints", "canBeISO88591", "canBeShiftJIS", "canBeUTF8", "utf8BytesLeft", "utf2BytesChars", "utf3BytesChars", "utf4BytesChars", "sjisBytesLeft", "sjisKatakanaChars", "sjisCurKatakanaWordLength", "sjisCurDoubleBytesWordLength", "sjisMaxKatakanaWordLength", "sjisMaxDoubleBytesWordLength", "isoHighOther", "utf8bom", "append", "callback", "exp", "p0", "p1", "p2", "p3", "p4", "base", "ch", "regex", "str", "charCode", "StringBuilder", "c", "BitMatrix", "rowSize", "image", "imageI", "stringRepresentation", "setString", "unsetString", "bitsPos", "rowStartPos", "rowLength", "nRows", "pos", "matrix", "rowArray", "right", "bottom", "topRow", "bottomRow", "x32", "theBits", "hash", "lineSeparator", "NotFoundException", "GlobalHistogramBinarizer", "localLuminances", "localBuckets", "blackPoint", "center", "pixel", "luminanceSize", "buckets", "numBuckets", "maxBucketCount", "firstPeak", "firstPeakSize", "secondPeak", "secondPeakScore", "distanceToBiggest", "score", "temp", "bestValley", "bestValleyScore", "fromFirst", "HybridBinarizer", "luminances", "subWidth", "subHeight", "blackPoints", "newMatrix", "maxYOffset", "maxXOffset", "yoffset", "xoffset", "sum", "z", "blackRow", "average", "min", "threshold", "stride", "yy", "xx", "averageNeighborBlackPoint", "LuminanceSource", "sourceRow", "luminance", "InvertedLuminanceSource", "delegate", "invertedMatrix", "HTMLCanvasElementLuminanceSource", "canvas", "imageData", "imageBuffer", "grayscaleBuffer", "gray", "pixelR", "pixelG", "pixelB", "tempCanvasElement", "angle", "tempContext", "angleRadians", "newWidth", "newHeight", "VideoInputDevice", "deviceId", "label", "groupId", "__awaiter", "thisArg", "_arguments", "P", "generator", "adopt", "resolve", "reject", "fulfilled", "step", "rejected", "BrowserCodeReader", "reader", "timeBetweenScansMillis", "_hints", "millis", "devices", "videoDevices", "device", "kind", "videoDevice", "videoSource", "videoConstraints", "constraints", "stream", "video", "callbackFn", "videoElement", "mediaElementId", "type", "mediaElement", "url", "task", "decodeTask", "img", "imageSource", "imageElement", "retryIfNotFound", "retryIfChecksumOrFormatError", "loop", "ifNotFound", "ifChecksumOrFormat", "isChecksumOrFormatError", "isNotFound", "binaryBitmap", "srcElement", "dimensions", "canvasElementContext", "ctx", "luminanceSource", "hybridBinarizer", "elem", "canvasElement", "t", "Result", "text", "rawBytes", "resultPoints", "format", "timestamp", "metadata", "newPoints", "oldPoints", "allPoints", "BarcodeFormat", "BarcodeFormat$1", "ResultMetadataType", "ResultMetadataType$1", "DecoderResult", "byteSegments", "ecLevel", "structuredAppendSequenceNumber", "structuredAppendParity", "errorsCorrected", "erasures", "AbstractGenericGF", "GenericGFPoly", "field", "coefficients", "coefficientsLength", "firstNonZero", "degree", "coefficient", "smallerCoefficients", "largerCoefficients", "sumDiff", "lengthDiff", "aCoefficients", "aLength", "bCoefficients", "bLength", "product", "aCoeff", "scalar", "quotient", "remainder", "denominatorLeadingTerm", "inverseDenominatorLeadingTerm", "degreeDifference", "scale", "term", "iterationQuotient", "alphaPower", "ArithmeticException", "GenericGF", "primitive", "generatorBase", "expTable", "logTable", "ReedSolomonException", "IllegalStateException", "ReedSolomonDecoder", "received", "twoS", "poly", "syndromeCoefficients", "noError", "evalResult", "syndrome", "sigmaOmega", "sigma", "omega", "errorLocations", "errorMagnitudes", "position", "R", "rLast", "r", "tLast", "rLastLast", "tLastLast", "q", "dltInverse", "degreeDiff", "sigmaTildeAtZero", "inverse", "errorLocator", "numErrors", "errorEvaluator", "xiInverse", "denominator", "termPlus1", "Table", "Decoder", "detectorResult", "rawbits", "correctedBits", "decoderResult", "endIndex", "latchTable", "shiftTable", "charCount", "table", "gf", "codewordSize", "numDataCodewords", "numCodewords", "dataWords", "ex", "stuffedBits", "dataWord", "compact", "layers", "baseMatrixSize", "alignmentMap", "matrixSize", "origCenter", "newOffset", "rowOffset", "low", "high", "columnOffset", "startIndex", "res", "boolArr", "byteArr", "MathUtils", "aX", "aY", "bX", "bY", "xDiff", "yDiff", "count", "Float", "f", "ResultPoint", "otherPoint", "patterns", "zeroOneDistance", "oneTwoDistance", "zeroTwoDistance", "pointA", "pointB", "pointC", "pattern1", "pattern2", "DetectorResult", "points", "AztecDetectorResult", "nbDatablocks", "nbLayers", "WhiteRectangleDetector", "initSize", "halfsize", "up", "down", "sizeExceeded", "aBlackPointFoundOnBorder", "atLeastOneBlackPointFoundOnBorder", "atLeastOneBlackPointFoundOnRight", "atLeastOneBlackPointFoundOnBottom", "atLeastOneBlackPointFoundOnLeft", "atLeastOneBlackPointFoundOnTop", "rightBorderNotWhite", "bottomBorderNotWhite", "leftBorderNotWhite", "topBorderNotWhite", "maxSize", "dist", "xStep", "yStep", "yi", "yj", "zi", "zj", "xi", "xj", "ti", "tj", "CORR", "fixed", "horizontal", "GridSampler", "nudged", "PerspectiveTransform", "a11", "a21", "a31", "a12", "a22", "a32", "a13", "a23", "a33", "x0", "y0", "x1", "y1", "x2", "y2", "x3", "y3", "x0p", "y0p", "x1p", "y1p", "x2p", "y2p", "x3p", "y3p", "qToS", "xValues", "yValues", "dx3", "dy3", "dx1", "dx2", "dy1", "dy2", "DefaultGridSampler", "dimensionX", "dimensionY", "p1ToX", "p1ToY", "p2ToX", "p2ToY", "p3ToX", "p3ToY", "p4ToX", "p4ToY", "p1FromX", "p1FromY", "p2FromX", "p2FromY", "p3FromX", "p3FromY", "p4FromX", "p4FromY", "transform", "iValue", "GridSamplerInstance", "newGridSampler", "Point", "Detector", "isMirror", "pCenter", "bullsEyeCorners", "corners", "sides", "parameterData", "side", "correctedData", "cornerBits", "idx", "arr", "shift", "numECCodewords", "parameterWords", "pina", "pinb", "pinc", "pind", "color", "pouta", "poutb", "poutc", "poutd", "pinax", "pinbx", "pincx", "pindx", "pointD", "cornerPoints", "cx", "cy", "topLeft", "topRight", "bottomRight", "bottomLeft", "sampler", "dimension", "moduleSize", "px", "py", "dx", "dy", "corr", "cInit", "error", "colorModel", "iMax", "errRatio", "init", "oldSide", "newSide", "ratio", "centerx", "centery", "result0", "result2", "result1", "result3", "point", "AztecReader", "exception", "detector", "rpcb", "BrowserAztecCodeReader", "OneDReader", "rotatedImage", "orientation", "tryHarder", "rowStep", "maxLines", "middle", "rowStepsAboveOrBelow", "isAbove", "rowNumber", "attempt", "newHints", "hint", "key", "counters", "numCounters", "isWhite", "counterPosition", "numTransitionsLeft", "last", "pattern", "maxIndividualVariance", "total", "patternLength", "unitBarWidth", "totalVariance", "counter", "scaledPattern", "variance", "Code128Reader", "patternStart", "bestVariance", "bestMatch", "startCode", "convertFNC1", "startPatternInfo", "currentRawCodesIndex", "rawCodes", "codeSet", "done", "isNextShifted", "lastStart", "nextStart", "lastCode", "checksumTotal", "multiplier", "lastCharacterWasPrintable", "upperMode", "shiftUpperMode", "unshift", "previous", "current", "lastPatternSize", "resultLength", "rawCodesSize", "Code39Reader", "usingCheckDigit", "extendedMode", "theCounters", "decodedChar", "whiteSpaceAfterEnd", "resultString", "maxNarrowCounter", "wideCounters", "minCounter", "totalWideCountersWidth", "encoded", "decoded", "next", "ITFReader", "startRange", "endRange", "allowedLengths", "lengthOK", "maxAllowedLength", "payloadStart", "payloadEnd", "counterDigitPair", "counterBlack", "counterWhite", "twoK", "counterDigit", "endStart", "startPattern", "quietCount", "endPattern", "AbstractUPCEANReader", "foundStart", "quietStart", "check", "digit", "whiteFirst", "slice", "UPCEANExtension5Support", "extensionStartRange", "extensionData", "extensionResult", "lgPatternFound", "checkDigit", "raw", "currency", "rawAmount", "unitsString", "hundredths", "hundredthsString", "UPCEANExtension2Support", "checkParity", "UPCEANExtensionSupport", "UPCEANReader", "widths", "reversedWidths", "startGuardRange", "resultPointCallback", "resultPoint", "budello", "quietEnd", "decodeResult", "extensionLength", "allowedExtensions", "valid", "EAN13Reader", "EAN8Reader", "UPCAReader", "upcaResult", "UPCEReader", "numSys", "prefix", "suffix", "upce", "upceChars", "lastChar", "MultiFormatUPCEANReader", "possibleFormats", "readers", "ean13MayBeUPCA", "canReturnUPCA", "resultUPCA", "AbstractRSSReader", "finderPatterns", "errors", "biggestError", "firstTwoSum", "maxCounter", "DataCharacter", "checksumPortion", "that", "FinderPattern", "startEnd", "RSSUtils", "maxWidth", "noNarrow", "narrowMask", "elements", "bar", "elmWidth", "subVal", "lessVal", "mxwElement", "maxDenom", "minDenom", "BitArrayBuilder", "pairs", "charNumber", "binary", "accPos", "firstValue", "currentPair", "leftValue", "rightValue", "BlockParsedResult", "finished", "decodedInformation", "DecodedObject", "newPosition", "DecodedChar", "DecodedInformation", "newString", "remainingValue", "DecodedNumeric", "firstDigit", "secondDigit", "FieldParser", "rawInformation", "firstTwoDigits", "dataLength", "firstThreeDigits", "firstFourDigits", "aiSize", "fieldSize", "ai", "remaining", "parsedAI", "variableFieldSize", "GeneralAppIdDecoder", "information", "buff", "initialPosition", "currentPosition", "info", "parsedFields", "numeric", "digit1", "digit2", "lastDecoded", "isFinished", "iso", "alpha", "fiveBitValue", "sevenBitValue", "eightBitValue", "sixBitValue", "AbstractExpandedDecoder", "AI01decoder", "buf", "currentPos", "initialBufferPosition", "currentBlock", "AI01AndOtherAIs", "initialGtinPosition", "firstGtinDigit", "AnyAIDecoder", "AI01weightDecoder", "weightSize", "originalWeightNumeric", "weightNumeric", "currentDivisor", "AI013x0xDecoder", "AI013103decoder", "weight", "AI01320xDecoder", "AI01392xDecoder", "lastAIdigit", "AI01393xDecoder", "generalInformation", "AI013x0x1xDecoder", "firstAIdigits", "dateCode", "numericDate", "day", "month", "year", "createDecoder", "ExpandedPair", "leftChar", "rightChar", "finderPatter", "mayBeLast", "o1", "o2", "ExpandedRow", "wasReversed", "otherPairs", "pair1", "pair2", "e1", "e2", "RSSExpandedReader", "verbose", "tryStackedDecode", "ps", "reverse", "collectedRows", "currentRow", "collectedRow", "rs", "sequence", "stop", "insertPos", "prevIsSame", "nextIsSame", "erow", "pp", "allFound", "found", "resultingString", "firstPoints", "lastPoints", "firstPair", "checkCharacter", "firstCharacter", "checksum", "currentRightChar", "initialPos", "previousPairs", "isOddPattern", "keepFinding", "forcedOffset", "searchingEvenPair", "tmp", "oddPattern", "firstCounter", "firstElementStart", "numModules", "elementWidth", "expectedElementWidth", "oddCounts", "evenCounts", "oddRoundingErrors", "evenRoundingErrors", "weightRowNumber", "oddSum", "oddChecksumPortion", "evenChecksumPortion", "group", "oddWidest", "evenWidest", "vOdd", "vEven", "tEven", "gSum", "evenSum", "incrementOdd", "decrementOdd", "incrementEven", "decrementEven", "mismatch", "oddParityBad", "evenParityBad", "Pair", "finderPattern", "RSS14Reader", "leftPair", "rightPair", "possiblePairs", "pair", "symbolValue", "buffer", "leftPoints", "rightPoints", "checkValue", "targetCheckValue", "outside", "inside", "outsideChar", "tOdd", "rightFinderPattern", "firstIsBlack", "MultiFormatOneDReader", "useCode39CheckDigit", "BrowserBarcodeReader", "ECBlocks", "ecCodewords", "ecBlocks1", "ecBlocks2", "ECB", "dataCodewords", "Version", "versionNumber", "symbolSizeRows", "symbolSizeColumns", "dataRegionSizeRows", "dataRegionSizeColumns", "ecBlocks", "ecbArray", "ecBlock", "numRows", "numColumns", "version", "BitMatrixParser", "bitMatrix", "resultOffset", "column", "corner1Read", "corner2Read", "corner3Read", "corner4Read", "currentByte", "numDataRegionsRow", "numDataRegionsColumn", "sizeDataRegionRow", "sizeDataRegionColumn", "bitMatrixWithoutAlignment", "dataRegionRow", "dataRegionRowOffset", "dataRegionColumn", "dataRegionColumnOffset", "readRowOffset", "writeRowOffset", "readColumnOffset", "writeColumnOffset", "DataBlock", "codewords", "rawCodewords", "totalBlocks", "ecBlockArray", "numResultBlocks", "numBlockCodewords", "longerBlocksNumDataCodewords", "shorterBlocksNumDataCodewords", "rawCodewordsOffset", "specialVersion", "numLongerBlocks", "jOffset", "iOffset", "BitSource", "byteOffset", "bitsLeft", "toRead", "bitsToNotRead", "Mode", "DecodedBitStreamParser", "resultTrailer", "mode", "upperShift", "oneByte", "cValues", "firstByte", "cValue", "c40char", "textChar", "secondByte", "fullBitValue", "edifactValue", "codewordPosition", "d1", "uee", "randomizedBase256Codeword", "base256CodewordPosition", "pseudoRandomNumber", "tempVariable", "Decoder$1", "parser", "dataBlocks", "totalBytes", "db", "resultBytes", "dataBlocksCount", "dataBlock", "codewordBytes", "codewordsInts", "Detector$1", "dimensionTop", "dimensionRight", "div", "fromX", "fromY", "trAB", "trBC", "trCD", "trDA", "tr", "pointBs", "pointCs", "trBA", "trTop", "trRight", "pointAs", "candidate1", "candidate2", "sumc1", "sumc2", "dimH", "dimV", "centerX", "centerY", "pointDs", "toX", "toY", "steep", "ystep", "xstep", "transitions", "inBlack", "isBlack", "DataMatrixReader", "leftTopBlack", "rightBottomBlack", "matrixWidth", "matrixHeight", "nudge", "BrowserDatamatrixCodeReader", "ErrorCorrectionLevelValues", "ErrorCorrectionLevel", "stringValue", "FormatInformation", "formatInfo", "maskedFormatInfo1", "maskedFormatInfo2", "bestDifference", "bestFormatInfo", "decodeInfo", "targetInfo", "bitsDifference", "ECBlocks$1", "ecCodewordsPerBlock", "ECB$1", "Version$1", "alignmentPatternCenters", "versionBits", "bestVersion", "targetVersion", "DataMaskValues", "DataMask", "isMasked", "BitMatrixParser$1", "formatInfoBits1", "formatInfoBits2", "jMin", "provisionalVersion", "ijMin", "theParsedVersion", "dataMask", "functionPattern", "readingUp", "bitsRead", "col", "DataBlock$1", "shorterBlocksTotalCodewords", "longerBlocksStartAt", "ModeValues", "Mode$1", "characterCountBitsForVersions", "DecodedBitStreamParser$1", "symbolSequence", "parityData", "currentCharacterSetECI", "fc1InEffect", "modeBits", "subset", "countHanzi", "twoBytes", "assembledTwoBytes", "ignored", "readBytes", "nextTwoCharsBits", "threeDigitsBits", "twoDigitsBits", "digitBits", "secondThirdBytes", "QRCodeDecoderMetaData", "mirrored", "Decoder$2", "AlignmentPattern", "posX", "posY", "estimatedModuleSize", "moduleSizeDiff", "newModuleSize", "combinedX", "combinedY", "combinedModuleSize", "AlignmentPatternFinder", "startX", "startY", "maxJ", "middleI", "stateCount", "iGen", "currentState", "confirmed", "maxVariance", "startI", "centerJ", "maxCount", "originalStateCountTotal", "maxI", "stateCountTotal", "centerI", "FinderPattern$1", "combinedCount", "FinderPatternInfo", "patternCenters", "FinderPatternFinder", "pureBarcode", "iSkip", "rowSkip", "patternInfo", "totalModuleSize", "crossCheckStateCount", "startJ", "possibleCenters", "firstConfirmedCenter", "confirmedCount", "totalDeviation", "startSize", "square", "stdDev", "center1", "center2", "dA", "dB", "limit", "possibleCenter", "Detector$2", "modulesBetweenFPCenters", "alignmentPattern", "bottomRightX", "bottomRightY", "correctionToTopLeft", "estAlignmentX", "estAlignmentY", "re", "dimMinusThree", "sourceBottomRightX", "sourceBottomRightY", "tltrCentersDimension", "tlblCentersDimension", "otherPattern", "moduleSizeEst1", "moduleSizeEst2", "otherToX", "otherToY", "state", "xLimit", "realX", "realY", "overallEstModuleSize", "allowanceFactor", "allowance", "alignmentAreaLeftX", "alignmentAreaRightX", "alignmentAreaTopY", "alignmentAreaBottomY", "QRCodeReader", "nudgedTooFarRight", "nudgedTooFarDown", "PDF417Common", "moduleBitCount", "list", "integer", "symbol", "PDF417DetectorResult", "Detector$3", "multiple", "barcodeCoordinates", "foundBarcodeInRow", "vertices", "barcodeCoordinate", "startRow", "startColumn", "tmpResult", "destinationIndexes", "loc", "previousRowLoc", "stopRow", "skippedRowCount", "pixelDrift", "ModulusPoly", "negativeCoefficients", "ModulusBase", "ModulusGF", "modulus", "ErrorCorrection", "evaluation", "knownErrors", "erasure", "errorLocatorDegree", "formalDerivativeCoefficients", "formalDerivative", "numerator", "BoundingBox", "leftUnspecified", "rightUnspecified", "boundingBox", "leftBox", "rightBox", "missingStartRows", "missingEndRows", "isLeft", "newTopLeft", "newBottomLeft", "newTopRight", "newBottomRight", "newMinY", "newTop", "newMaxY", "newBottom", "BarcodeMetadata", "columnCount", "rowCountUpperPart", "rowCountLowerPart", "errorCorrectionLevel", "Formatter", "DetectionResultColumn", "imageRow", "codeword", "nearImageRow", "formatter", "BarcodeValue", "confidence", "maxConfidence", "entry", "DetectionResultRowIndicatorColumn", "barcodeMetadata", "firstRow", "lastRow", "barcodeRow", "maxRowHeight", "currentRowHeight", "codewordsRow", "rowDifference", "checkedRows", "closePreviousCodewordFound", "barcodeColumnCount", "barcodeRowCountUpperPart", "barcodeRowCountLowerPart", "barcodeECLevel", "rowIndicatorValue", "codewordRowNumber", "codewordRow", "DetectionResult", "unadjustedCodewordCount", "previousUnadjustedCount", "detectionResultColumn", "unadjustedCount", "barcodeColumn", "LRIcodewords", "RRIcodewords", "rowIndicatorRowNumber", "invalidRowCounts", "previousColumnCodewords", "nextColumnCodewords", "otherCodewords", "otherCodeword", "rowIndicatorColumn", "Codeword", "endX", "bucket", "PDF417CodewordDecoder", "currentSymbol", "currentBit", "decodedValue", "bitCountSum", "bitCountIndex", "sumPreviousBits", "sampleIndex", "bitCountRatios", "bestMatchError", "ratioTableRow", "diff", "PDF417ResultMetadata", "segmentIndex", "fileId", "optionalData", "lastSegment", "segmentCount", "sender", "addressee", "fileName", "fileSize", "Long", "NullPointerException", "OutputStream", "off", "OutOfMemoryError", "ByteArrayOutputStream", "minCapacity", "newCapacity", "out", "param", "charsetName", "hibyte", "Mode$2", "getBigIntConstructor", "BigInteger", "createBigInt", "getEXP900", "EXP900", "nineHundred", "DecodedBitStreamParser$2", "codeIndex", "resultMetadata", "charsetECI", "segmentIndexArray", "optionalFieldsStart", "optionalFieldsLength", "textCompactionData", "byteCompactionData", "subMode", "priorToShiftMode", "subModeCh", "decodedBytes", "byteCompactedCodewords", "nextCode", "numericCodewords", "PDF417ScanningDecoder", "imageTopLeft", "imageBottomLeft", "imageTopRight", "imageBottomRight", "minCodewordWidth", "maxCodewordWidth", "leftRowIndicatorColumn", "rightRowIndicatorColumn", "detectionResult", "firstPass", "resultBox", "maxBarcodeColumn", "leftToRight", "previousStartColumn", "rowHeights", "rowHeight", "maxValue", "leftBarcodeMetadata", "rightBarcodeMetadata", "startPoint", "increment", "barcodeMatrix", "barcodeMatrix01", "numberOfCodewords", "calculatedNumberOfCodewords", "ambiguousIndexValuesList", "ambiguousIndexesList", "codewordIndex", "ambiguousIndexValues", "erasureArray", "ambiguousIndexes", "ambiguousIndexCount", "tries", "err", "skippedColumns", "previousRowCodeword", "minColumn", "maxColumn", "endColumn", "codewordBitCount", "tmpCount", "imageColumn", "moduleNumber", "previousPixelValue", "codewordStartColumn", "correctedStartColumn", "correctedErrorsCount", "previousValue", "barcodeValue", "PDF417Reader", "results", "pdf417ResultMetadata", "ReaderException", "MultiFormatReader", "formats", "addOneDReader", "BrowserMultiFormatReader", "BrowserPDF417Reader", "BrowserQRCodeReader", "EncodeHintType", "EncodeHintType$1", "ReedSolomonEncoder", "cachedGenerators", "lastGenerator", "nextGenerator", "toEncode", "ecBytes", "dataBytes", "infoCoefficients", "numZeroCoefficients", "MaskUtil", "penalty", "arrayY", "numPenalties", "numDarkCells", "numTotalCells", "maskPattern", "intermediate", "isHorizontal", "iLimit", "jLimit", "numSameBitCells", "prevBit", "ByteMatrix", "aByte", "bytesY", "otherBytesY", "QRCode", "WriterException", "MatrixUtil", "dataBits", "typeInfoBits", "coordinates", "versionInfoBits", "bitIndex", "direction", "msbSetInPoly", "typeInfo", "bchCode", "maskBits", "xStart", "yStart", "patternY", "pdpWidth", "hspWidth", "vspSize", "BlockPair", "errorCorrectionBytes", "Encoder", "content", "hasEncodingHint", "headerBits", "eci", "bitsNeeded", "headerAndDataBits", "numLetters", "numDataBytes", "finalBits", "qrCode", "provisionalBitsNeeded", "hasNumeric", "hasAlphanumeric", "byte1", "minPenalty", "bestMaskPattern", "numInputBits", "versionNum", "numEcBytes", "totalInputBytes", "capacity", "numBitsInLastByte", "numPaddingBytes", "numTotalBytes", "numRSBlocks", "blockID", "numDataBytesInBlock", "numECBytesInBlock", "numRsBlocksInGroup2", "numRsBlocksInGroup1", "numTotalBytesInGroup1", "numTotalBytesInGroup2", "numDataBytesInGroup1", "numDataBytesInGroup2", "numEcBytesInGroup1", "numEcBytesInGroup2", "dataBytesOffset", "maxNumDataBytes", "maxNumEcBytes", "blocks", "numEcBytesInBlock", "block", "singleCharacter", "cn", "num1", "num2", "num3", "code1", "code2", "byte2", "subtracted", "BrowserQRCodeSvgWriter", "contents", "quietZone", "containerElement", "svgElement", "input", "inputWidth", "inputHeight", "qrWidth", "qrHeight", "outputWidth", "outputHeight", "leftPadding", "topPadding", "inputY", "outputY", "inputX", "outputX", "svgRectElement", "w", "rect", "QRCodeWriter", "output", "MultiFormatWriter", "writer", "PlanarYUVLuminanceSource", "yuvData", "dataWidth", "dataHeight", "reverseHorizontal", "area", "inputOffset", "outputOffset", "pixels", "yuv", "grey", "rowStart", "RGBLuminanceSource", "luminancesUint8Array", "g2", "Charset", "StandardCharsets", "AztecCode", "codeWords", "Collections", "item", "collection", "Token", "SimpleToken", "bitCount", "bitArray", "byteCount", "BinaryShiftToken", "binaryShiftStart", "binaryShiftByteCount", "addBinaryShift", "token", "add", "MODE_NAMES", "MODE_UPPER", "MODE_LOWER", "MODE_DIGIT", "MODE_MIXED", "MODE_PUNCT", "EMPTY_TOKEN", "LATCH_TABLE", "static_SHIFT_TABLE", "SHIFT_TABLE", "State", "binaryBytes", "latch", "latchModeBitCount", "thisModeBitCount", "deltaBitCount", "newModeBitCount", "symbols", "static_CHAR_MAP", "CHAR_MAP", "spaceCharCode", "pointCharCode", "commaCharCode", "zUpperCharCode", "aUpperCharCode", "zLowerCharCode", "aLowerCharCode", "nineCharCode", "zeroCharCode", "mixedTable", "punctTable", "HighLevelEncoder", "lineBreakCharCode", "states", "pairCode", "nextChar", "charInCurrentTable", "stateNoBinary", "charInMode", "latchState", "shiftState", "binaryState", "digitState", "newState", "oldState", "Encoder$1", "data", "minECCPercent", "userSpecifiedLayers", "eccBits", "totalSizeBits", "totalBitsInLayer", "wordSize", "usableBitsInLayers", "messageBits", "messageSizeInWords", "modeMessage", "aztec", "totalBits", "totalWords", "messageWords", "startPad", "messageWord", "word", "AztecWriter", "charset", "eccPercent", "require_isObject", "__commonJSMin", "exports", "module", "isObject", "value", "type", "require_freeGlobal", "__commonJSMin", "exports", "module", "freeGlobal", "require_root", "__commonJSMin", "exports", "module", "freeGlobal", "freeSelf", "root", "require_now", "__commonJSMin", "exports", "module", "root", "now", "require_trimmedEndIndex", "__commonJSMin", "exports", "module", "reWhitespace", "trimmedEndIndex", "string", "index", "require_baseTrim", "__commonJSMin", "exports", "module", "trimmedEndIndex", "reTrimStart", "baseTrim", "string", "require_Symbol", "__commonJSMin", "exports", "module", "root", "Symbol", "require_getRawTag", "__commonJSMin", "exports", "module", "Symbol", "objectProto", "hasOwnProperty", "nativeObjectToString", "symToStringTag", "getRawTag", "value", "isOwn", "tag", "unmasked", "result", "require_objectToString", "__commonJSMin", "exports", "module", "objectProto", "nativeObjectToString", "objectToString", "value", "require_baseGetTag", "__commonJSMin", "exports", "module", "Symbol", "getRawTag", "objectToString", "nullTag", "undefinedTag", "symToStringTag", "baseGetTag", "value", "require_isObjectLike", "__commonJSMin", "exports", "module", "isObjectLike", "value", "require_isSymbol", "__commonJSMin", "exports", "module", "baseGetTag", "isObjectLike", "symbolTag", "isSymbol", "value", "require_toNumber", "__commonJSMin", "exports", "module", "baseTrim", "isObject", "isSymbol", "NAN", "reIsBadHex", "reIsBinary", "reIsOctal", "freeParseInt", "toNumber", "value", "other", "isBinary", "require_debounce", "__commonJSMin", "exports", "module", "isObject", "now", "toNumber", "FUNC_ERROR_TEXT", "nativeMax", "nativeMin", "debounce", "func", "wait", "options", "lastArgs", "lastThis", "maxWait", "result", "timerId", "lastCallTime", "lastInvokeTime", "leading", "maxing", "trailing", "invokeFunc", "time", "args", "thisArg", "leadingEdge", "timerExpired", "remainingWait", "timeSinceLastCall", "timeSinceLastInvoke", "timeWaiting", "shouldInvoke", "trailingEdge", "cancel", "flush", "debounced", "isInvoking", "require_inputmask", "__commonJSMin", "exports", "module", "n", "i", "e", "t", "u", "a", "o", "r", "l", "s", "f", "p", "c", "d", "h", "v", "k", "D", "E", "m", "g", "y", "b", "x", "w", "P", "S", "L", "O", "_", "M", "j", "T", "A", "C", "B", "I", "R", "F", "N", "V", "G", "require_trix", "__commonJSMin", "exports", "module", "t", "e", "n", "i", "o", "h", "r", "s", "p", "u", "l", "a", "A", "b", "g", "m", "C", "c", "x", "w", "d", "f", "v", "y", "E", "S", "R", "k", "D", "L", "import_activestorage", "AttachmentUpload", "init_attachment_upload", "__esmMin", "attachment", "element", "xhr", "event", "progress", "error", "attributes", "signedId", "filename", "actiontext_exports", "init_actiontext", "__esmMin", "init_attachment_upload", "event", "attachment", "target", "AttachmentUpload", "require_trustpilot_5", "__commonJSMin", "n", "s", "o", "r", "a", "t", "e", "i", "__require", "l", "d", "c", "h", "u", "import_ujs", "ActiveStorage", "lib_exports", "__export", "afterMain", "afterRead", "afterWrite", "applyStyles_default", "arrow_default", "auto", "basePlacements", "beforeMain", "beforeRead", "beforeWrite", "bottom", "clippingParents", "computeStyles_default", "createPopper", "detectOverflow", "end", "eventListeners_default", "flip_default", "hide_default", "left", "main", "modifierPhases", "offset_default", "placements", "popper", "popperGenerator", "popperOffsets_default", "preventOverflow_default", "read", "reference", "right", "start", "top", "variationPlacements", "viewport", "write", "top", "bottom", "right", "left", "auto", "basePlacements", "start", "end", "clippingParents", "viewport", "popper", "reference", "variationPlacements", "acc", "placement", "placements", "beforeRead", "read", "afterRead", "beforeMain", "main", "afterMain", "beforeWrite", "write", "afterWrite", "modifierPhases", "getNodeName", "element", "getWindow", "node", "ownerDocument", "isElement", "node", "OwnElement", "getWindow", "isHTMLElement", "isShadowRoot", "applyStyles", "_ref", "state", "name", "style", "attributes", "element", "isHTMLElement", "getNodeName", "value", "effect", "_ref2", "initialStyles", "styleProperties", "property", "attribute", "applyStyles_default", "getBasePlacement", "placement", "max", "min", "round", "getUAString", "uaData", "item", "isLayoutViewport", "getUAString", "getBoundingClientRect", "element", "includeScale", "isFixedStrategy", "clientRect", "scaleX", "scaleY", "isHTMLElement", "round", "_ref", "isElement", "getWindow", "visualViewport", "addVisualOffsets", "isLayoutViewport", "x", "y", "width", "height", "getLayoutRect", "element", "clientRect", "getBoundingClientRect", "width", "height", "contains", "parent", "child", "rootNode", "isShadowRoot", "next", "getComputedStyle", "element", "getWindow", "isTableElement", "element", "getNodeName", "getDocumentElement", "element", "isElement", "getParentNode", "element", "getNodeName", "isShadowRoot", "getDocumentElement", "getTrueOffsetParent", "element", "isHTMLElement", "getComputedStyle", "getContainingBlock", "isFirefox", "getUAString", "isIE", "elementCss", "currentNode", "getParentNode", "isShadowRoot", "getNodeName", "css", "getOffsetParent", "window", "getWindow", "offsetParent", "isTableElement", "getMainAxisFromPlacement", "placement", "within", "min", "value", "max", "withinMaxClamp", "v", "getFreshSideObject", "mergePaddingObject", "paddingObject", "getFreshSideObject", "expandToHashMap", "value", "keys", "hashMap", "key", "toPaddingObject", "padding", "state", "mergePaddingObject", "expandToHashMap", "basePlacements", "arrow", "_ref", "_state$modifiersData$", "name", "options", "arrowElement", "popperOffsets", "basePlacement", "getBasePlacement", "axis", "getMainAxisFromPlacement", "isVertical", "left", "right", "len", "paddingObject", "arrowRect", "getLayoutRect", "minProp", "top", "maxProp", "bottom", "endDiff", "startDiff", "arrowOffsetParent", "getOffsetParent", "clientSize", "centerToReference", "min", "max", "center", "offset", "within", "axisProp", "effect", "_ref2", "_options$element", "contains", "arrow_default", "getVariation", "placement", "unsetSides", "roundOffsetsByDPR", "_ref", "win", "x", "y", "dpr", "round", "mapToStyles", "_ref2", "_Object$assign2", "popper", "popperRect", "placement", "variation", "offsets", "position", "gpuAcceleration", "adaptive", "roundOffsets", "isFixed", "_offsets$x", "_offsets$y", "_ref3", "hasX", "hasY", "sideX", "left", "sideY", "top", "offsetParent", "getOffsetParent", "heightProp", "widthProp", "getWindow", "getDocumentElement", "getComputedStyle", "right", "end", "bottom", "offsetY", "offsetX", "commonStyles", "_ref4", "_Object$assign", "computeStyles", "_ref5", "state", "options", "_options$gpuAccelerat", "_options$adaptive", "_options$roundOffsets", "getBasePlacement", "getVariation", "computeStyles_default", "passive", "effect", "_ref", "state", "instance", "options", "_options$scroll", "scroll", "_options$resize", "resize", "window", "getWindow", "scrollParents", "scrollParent", "eventListeners_default", "hash", "getOppositePlacement", "placement", "matched", "hash", "getOppositeVariationPlacement", "placement", "matched", "getWindowScroll", "node", "win", "getWindow", "scrollLeft", "scrollTop", "getWindowScrollBarX", "element", "getBoundingClientRect", "getDocumentElement", "getWindowScroll", "getViewportRect", "element", "strategy", "win", "getWindow", "html", "getDocumentElement", "visualViewport", "width", "height", "x", "y", "layoutViewport", "isLayoutViewport", "getWindowScrollBarX", "getDocumentRect", "element", "_element$ownerDocumen", "html", "getDocumentElement", "winScroll", "getWindowScroll", "body", "width", "max", "height", "x", "getWindowScrollBarX", "y", "getComputedStyle", "isScrollParent", "element", "_getComputedStyle", "getComputedStyle", "overflow", "overflowX", "overflowY", "getScrollParent", "node", "getNodeName", "isHTMLElement", "isScrollParent", "getParentNode", "listScrollParents", "element", "list", "_element$ownerDocumen", "scrollParent", "getScrollParent", "isBody", "win", "getWindow", "target", "isScrollParent", "updatedList", "getParentNode", "rectToClientRect", "rect", "getInnerBoundingClientRect", "element", "strategy", "rect", "getBoundingClientRect", "getClientRectFromMixedType", "clippingParent", "viewport", "rectToClientRect", "getViewportRect", "isElement", "getDocumentRect", "getDocumentElement", "getClippingParents", "clippingParents", "listScrollParents", "getParentNode", "canEscapeClipping", "getComputedStyle", "clipperElement", "isHTMLElement", "getOffsetParent", "contains", "getNodeName", "getClippingRect", "boundary", "rootBoundary", "mainClippingParents", "firstClippingParent", "clippingRect", "accRect", "max", "min", "computeOffsets", "_ref", "reference", "element", "placement", "basePlacement", "getBasePlacement", "variation", "getVariation", "commonX", "commonY", "offsets", "top", "bottom", "right", "left", "mainAxis", "getMainAxisFromPlacement", "len", "start", "end", "detectOverflow", "state", "options", "_options", "_options$placement", "placement", "_options$strategy", "strategy", "_options$boundary", "boundary", "clippingParents", "_options$rootBoundary", "rootBoundary", "viewport", "_options$elementConte", "elementContext", "popper", "_options$altBoundary", "altBoundary", "_options$padding", "padding", "paddingObject", "mergePaddingObject", "expandToHashMap", "basePlacements", "altContext", "reference", "popperRect", "element", "clippingClientRect", "getClippingRect", "isElement", "getDocumentElement", "referenceClientRect", "getBoundingClientRect", "popperOffsets", "computeOffsets", "popperClientRect", "rectToClientRect", "elementClientRect", "overflowOffsets", "offsetData", "offset", "key", "multiply", "right", "bottom", "axis", "top", "computeAutoPlacement", "state", "options", "_options", "placement", "boundary", "rootBoundary", "padding", "flipVariations", "_options$allowedAutoP", "allowedAutoPlacements", "placements", "variation", "getVariation", "variationPlacements", "basePlacements", "allowedPlacements", "overflows", "acc", "detectOverflow", "getBasePlacement", "a", "b", "getExpandedFallbackPlacements", "placement", "getBasePlacement", "auto", "oppositePlacement", "getOppositePlacement", "getOppositeVariationPlacement", "flip", "_ref", "state", "options", "name", "_options$mainAxis", "checkMainAxis", "_options$altAxis", "checkAltAxis", "specifiedFallbackPlacements", "padding", "boundary", "rootBoundary", "altBoundary", "_options$flipVariatio", "flipVariations", "allowedAutoPlacements", "preferredPlacement", "basePlacement", "isBasePlacement", "fallbackPlacements", "placements", "acc", "computeAutoPlacement", "referenceRect", "popperRect", "checksMap", "makeFallbackChecks", "firstFittingPlacement", "i", "_basePlacement", "isStartVariation", "getVariation", "start", "isVertical", "top", "bottom", "len", "overflow", "detectOverflow", "mainVariationSide", "right", "left", "altVariationSide", "checks", "check", "numberOfChecks", "_loop", "_i", "fittingPlacement", "_ret", "flip_default", "getSideOffsets", "overflow", "rect", "preventedOffsets", "isAnySideFullyClipped", "top", "right", "bottom", "left", "side", "hide", "_ref", "state", "name", "referenceRect", "popperRect", "referenceOverflow", "detectOverflow", "popperAltOverflow", "referenceClippingOffsets", "popperEscapeOffsets", "isReferenceHidden", "hasPopperEscaped", "hide_default", "distanceAndSkiddingToXY", "placement", "rects", "offset", "basePlacement", "getBasePlacement", "invertDistance", "left", "top", "_ref", "skidding", "distance", "right", "_ref2", "state", "options", "name", "_options$offset", "data", "placements", "acc", "_data$state$placement", "x", "y", "offset_default", "popperOffsets", "_ref", "state", "name", "computeOffsets", "popperOffsets_default", "getAltAxis", "axis", "preventOverflow", "_ref", "state", "options", "name", "_options$mainAxis", "checkMainAxis", "_options$altAxis", "checkAltAxis", "boundary", "rootBoundary", "altBoundary", "padding", "_options$tether", "tether", "_options$tetherOffset", "tetherOffset", "overflow", "detectOverflow", "basePlacement", "getBasePlacement", "variation", "getVariation", "isBasePlacement", "mainAxis", "getMainAxisFromPlacement", "altAxis", "getAltAxis", "popperOffsets", "referenceRect", "popperRect", "tetherOffsetValue", "normalizedTetherOffsetValue", "offsetModifierState", "data", "_offsetModifierState$", "mainSide", "top", "left", "altSide", "bottom", "right", "len", "offset", "min", "max", "additive", "minLen", "start", "maxLen", "arrowElement", "arrowRect", "getLayoutRect", "arrowPaddingObject", "getFreshSideObject", "arrowPaddingMin", "arrowPaddingMax", "arrowLen", "within", "minOffset", "maxOffset", "arrowOffsetParent", "getOffsetParent", "clientOffset", "offsetModifierValue", "tetherMin", "tetherMax", "preventedOffset", "_offsetModifierState$2", "_mainSide", "_altSide", "_offset", "_len", "_min", "_max", "isOriginSide", "_offsetModifierValue", "_tetherMin", "_tetherMax", "_preventedOffset", "withinMaxClamp", "preventOverflow_default", "getHTMLElementScroll", "element", "getNodeScroll", "node", "getWindow", "isHTMLElement", "getWindowScroll", "getHTMLElementScroll", "isElementScaled", "element", "rect", "scaleX", "round", "scaleY", "getCompositeRect", "elementOrVirtualElement", "offsetParent", "isFixed", "isOffsetParentAnElement", "isHTMLElement", "offsetParentIsScaled", "documentElement", "getDocumentElement", "getBoundingClientRect", "scroll", "offsets", "getNodeName", "isScrollParent", "getNodeScroll", "getWindowScrollBarX", "order", "modifiers", "map", "visited", "result", "modifier", "sort", "requires", "dep", "depModifier", "orderModifiers", "orderedModifiers", "modifierPhases", "acc", "phase", "debounce", "fn", "pending", "resolve", "mergeByName", "modifiers", "merged", "current", "existing", "key", "DEFAULT_OPTIONS", "areValidElements", "_len", "args", "_key", "element", "popperGenerator", "generatorOptions", "_generatorOptions", "_generatorOptions$def", "defaultModifiers", "_generatorOptions$def2", "defaultOptions", "reference", "popper", "options", "state", "effectCleanupFns", "isDestroyed", "instance", "setOptionsAction", "cleanupModifierEffects", "isElement", "listScrollParents", "orderedModifiers", "orderModifiers", "mergeByName", "m", "runModifierEffects", "_state$elements", "getCompositeRect", "getOffsetParent", "getLayoutRect", "modifier", "index", "_state$orderedModifie", "fn", "_state$orderedModifie2", "_options", "name", "debounce", "resolve", "_ref", "_ref$options", "effect", "cleanupFn", "noopFn", "createPopper", "defaultModifiers", "eventListeners_default", "popperOffsets_default", "computeStyles_default", "applyStyles_default", "createPopper", "popperGenerator", "defaultModifiers", "eventListeners_default", "popperOffsets_default", "computeStyles_default", "applyStyles_default", "offset_default", "flip_default", "preventOverflow_default", "arrow_default", "hide_default", "createPopper", "popperGenerator", "elementMap", "Map", "Data", "set", "element", "key", "instance", "has", "instanceMap", "get", "size", "console", "error", "Array", "from", "keys", "remove", "delete", "MAX_UID", "MILLISECONDS_MULTIPLIER", "TRANSITION_END", "parseSelector", "selector", "window", "CSS", "escape", "replace", "match", "id", "toType", "object", "Object", "prototype", "toString", "call", "toLowerCase", "getUID", "prefix", "Math", "floor", "random", "document", "getElementById", "getTransitionDurationFromElement", "transitionDuration", "transitionDelay", "getComputedStyle", "floatTransitionDuration", "Number", "parseFloat", "floatTransitionDelay", "split", "triggerTransitionEnd", "dispatchEvent", "Event", "isElement", "jquery", "nodeType", "getElement", "length", "querySelector", "isVisible", "getClientRects", "elementIsVisible", "getPropertyValue", "closedDetails", "closest", "summary", "parentNode", "isDisabled", "Node", "ELEMENT_NODE", "classList", "contains", "disabled", "hasAttribute", "getAttribute", "findShadowRoot", "documentElement", "attachShadow", "getRootNode", "root", "ShadowRoot", "noop", "reflow", "offsetHeight", "getjQuery", "jQuery", "body", "DOMContentLoadedCallbacks", "onDOMContentLoaded", "callback", "readyState", "addEventListener", "push", "isRTL", "dir", "defineJQueryPlugin", "plugin", "$", "name", "NAME", "JQUERY_NO_CONFLICT", "fn", "jQueryInterface", "Constructor", "noConflict", "execute", "possibleCallback", "args", "defaultValue", "executeAfterTransition", "transitionElement", "waitForTransition", "emulatedDuration", "called", "handler", "target", "removeEventListener", "setTimeout", "getNextActiveElement", "list", "activeElement", "shouldGetNext", "isCycleAllowed", "listLength", "index", "indexOf", "max", "min", "namespaceRegex", "stripNameRegex", "stripUidRegex", "eventRegistry", "uidEvent", "customEvents", "mouseenter", "mouseleave", "nativeEvents", "Set", "makeEventUid", "uid", "getElementEvents", "bootstrapHandler", "event", "hydrateObj", "delegateTarget", "oneOff", "EventHandler", "off", "type", "apply", "bootstrapDelegationHandler", "domElements", "querySelectorAll", "domElement", "findHandler", "events", "callable", "delegationSelector", "values", "find", "normalizeParameters", "originalTypeEvent", "delegationFunction", "isDelegated", "typeEvent", "getTypeEvent", "addHandler", "relatedTarget", "handlers", "previousFunction", "removeHandler", "Boolean", "removeNamespacedHandlers", "namespace", "storeElementEvent", "handlerKey", "entries", "includes", "on", "one", "inNamespace", "isNamespace", "startsWith", "elementEvent", "slice", "keyHandlers", "trigger", "jQueryEvent", "bubbles", "nativeDispatch", "defaultPrevented", "isPropagationStopped", "isImmediatePropagationStopped", "isDefaultPrevented", "evt", "cancelable", "preventDefault", "obj", "meta", "value", "defineProperty", "configurable", "normalizeData", "JSON", "parse", "decodeURIComponent", "normalizeDataKey", "chr", "Manipulator", "setDataAttribute", "setAttribute", "removeDataAttribute", "removeAttribute", "getDataAttributes", "attributes", "bsKeys", "dataset", "filter", "pureKey", "charAt", "getDataAttribute", "Config", "Default", "DefaultType", "Error", "_getConfig", "config", "_mergeConfigObj", "_configAfterMerge", "_typeCheckConfig", "jsonConfig", "constructor", "configTypes", "property", "expectedTypes", "valueType", "RegExp", "test", "TypeError", "toUpperCase", "VERSION", "BaseComponent", "_element", "_config", "DATA_KEY", "dispose", "EVENT_KEY", "propertyName", "getOwnPropertyNames", "_queueCallback", "isAnimated", "getInstance", "getOrCreateInstance", "eventName", "getSelector", "hrefAttribute", "trim", "map", "sel", "join", "SelectorEngine", "concat", "Element", "findOne", "children", "child", "matches", "parents", "ancestor", "prev", "previous", "previousElementSibling", "next", "nextElementSibling", "focusableChildren", "focusables", "el", "getSelectorFromElement", "getElementFromSelector", "getMultipleElementsFromSelector", "enableDismissTrigger", "component", "method", "clickEvent", "tagName", "EVENT_CLOSE", "EVENT_CLOSED", "CLASS_NAME_FADE", "CLASS_NAME_SHOW", "Alert", "close", "_destroyElement", "each", "data", "undefined", "DATA_API_KEY", "CLASS_NAME_ACTIVE", "SELECTOR_DATA_TOGGLE", "EVENT_CLICK_DATA_API", "Button", "toggle", "button", "EVENT_TOUCHSTART", "EVENT_TOUCHMOVE", "EVENT_TOUCHEND", "EVENT_POINTERDOWN", "EVENT_POINTERUP", "POINTER_TYPE_TOUCH", "POINTER_TYPE_PEN", "CLASS_NAME_POINTER_EVENT", "SWIPE_THRESHOLD", "endCallback", "leftCallback", "rightCallback", "Swipe", "isSupported", "_deltaX", "_supportPointerEvents", "PointerEvent", "_initEvents", "_start", "touches", "clientX", "_eventIsPointerPenTouch", "_end", "_handleSwipe", "_move", "absDeltaX", "abs", "direction", "add", "pointerType", "navigator", "maxTouchPoints", "ARROW_LEFT_KEY", "ARROW_RIGHT_KEY", "TOUCHEVENT_COMPAT_WAIT", "ORDER_NEXT", "ORDER_PREV", "DIRECTION_LEFT", "DIRECTION_RIGHT", "EVENT_SLIDE", "EVENT_SLID", "EVENT_KEYDOWN", "EVENT_MOUSEENTER", "EVENT_MOUSELEAVE", "EVENT_DRAG_START", "EVENT_LOAD_DATA_API", "CLASS_NAME_CAROUSEL", "CLASS_NAME_SLIDE", "CLASS_NAME_END", "CLASS_NAME_START", "CLASS_NAME_NEXT", "CLASS_NAME_PREV", "SELECTOR_ACTIVE", "SELECTOR_ITEM", "SELECTOR_ACTIVE_ITEM", "SELECTOR_ITEM_IMG", "SELECTOR_INDICATORS", "SELECTOR_DATA_SLIDE", "SELECTOR_DATA_RIDE", "KEY_TO_DIRECTION", "interval", "keyboard", "pause", "ride", "touch", "wrap", "Carousel", "_interval", "_activeElement", "_isSliding", "touchTimeout", "_swipeHelper", "_indicatorsElement", "_addEventListeners", "cycle", "_slide", "nextWhenVisible", "hidden", "_clearInterval", "_updateInterval", "setInterval", "_maybeEnableCycle", "to", "items", "_getItems", "activeIndex", "_getItemIndex", "_getActive", "order", "defaultInterval", "_keydown", "_addTouchEventListeners", "img", "swipeConfig", "_directionToOrder", "endCallBack", "clearTimeout", "_setActiveIndicatorElement", "activeIndicator", "newActiveIndicator", "elementInterval", "parseInt", "isNext", "nextElement", "nextElementIndex", "triggerEvent", "_orderToDirection", "isCycling", "directionalClassName", "orderClassName", "completeCallBack", "_isAnimated", "clearInterval", "carousel", "slideIndex", "carousels", "EVENT_SHOW", "EVENT_SHOWN", "EVENT_HIDE", "EVENT_HIDDEN", "CLASS_NAME_COLLAPSE", "CLASS_NAME_COLLAPSING", "CLASS_NAME_COLLAPSED", "CLASS_NAME_DEEPER_CHILDREN", "CLASS_NAME_HORIZONTAL", "WIDTH", "HEIGHT", "SELECTOR_ACTIVES", "parent", "Collapse", "_isTransitioning", "_triggerArray", "toggleList", "elem", "filterElement", "foundElement", "_initializeChildren", "_addAriaAndCollapsedClass", "_isShown", "hide", "show", "activeChildren", "_getFirstLevelChildren", "activeInstance", "dimension", "_getDimension", "style", "complete", "scrollSize", "getBoundingClientRect", "selected", "triggerArray", "isOpen", "ESCAPE_KEY", "TAB_KEY", "ARROW_UP_KEY", "ARROW_DOWN_KEY", "RIGHT_MOUSE_BUTTON", "EVENT_KEYDOWN_DATA_API", "EVENT_KEYUP_DATA_API", "CLASS_NAME_DROPUP", "CLASS_NAME_DROPEND", "CLASS_NAME_DROPSTART", "CLASS_NAME_DROPUP_CENTER", "CLASS_NAME_DROPDOWN_CENTER", "SELECTOR_DATA_TOGGLE_SHOWN", "SELECTOR_MENU", "SELECTOR_NAVBAR", "SELECTOR_NAVBAR_NAV", "SELECTOR_VISIBLE_ITEMS", "PLACEMENT_TOP", "PLACEMENT_TOPEND", "PLACEMENT_BOTTOM", "PLACEMENT_BOTTOMEND", "PLACEMENT_RIGHT", "PLACEMENT_LEFT", "PLACEMENT_TOPCENTER", "PLACEMENT_BOTTOMCENTER", "autoClose", "boundary", "display", "offset", "popperConfig", "reference", "Dropdown", "_popper", "_parent", "_menu", "_inNavbar", "_detectNavbar", "showEvent", "_createPopper", "focus", "_completeHide", "destroy", "update", "hideEvent", "Popper", "referenceElement", "_getPopperConfig", "createPopper", "_getPlacement", "parentDropdown", "isEnd", "_getOffset", "popperData", "defaultBsPopperConfig", "placement", "modifiers", "options", "enabled", "_selectMenuItem", "clearMenus", "openToggles", "context", "composedPath", "isMenuTarget", "dataApiKeydownHandler", "isInput", "isEscapeEvent", "isUpOrDownEvent", "getToggleButton", "stopPropagation", "EVENT_MOUSEDOWN", "className", "clickCallback", "rootElement", "Backdrop", "_isAppended", "_append", "_getElement", "_emulateAnimation", "backdrop", "createElement", "append", "EVENT_FOCUSIN", "EVENT_KEYDOWN_TAB", "TAB_NAV_FORWARD", "TAB_NAV_BACKWARD", "autofocus", "trapElement", "FocusTrap", "_isActive", "_lastTabNavDirection", "activate", "_handleFocusin", "_handleKeydown", "deactivate", "elements", "shiftKey", "SELECTOR_FIXED_CONTENT", "SELECTOR_STICKY_CONTENT", "PROPERTY_PADDING", "PROPERTY_MARGIN", "ScrollBarHelper", "getWidth", "documentWidth", "clientWidth", "innerWidth", "width", "_disableOverFlow", "_setElementAttributes", "calculatedValue", "reset", "_resetElementAttributes", "isOverflowing", "_saveInitialAttribute", "overflow", "styleProperty", "scrollbarWidth", "manipulationCallBack", "setProperty", "_applyManipulationCallback", "actualValue", "removeProperty", "callBack", "EVENT_HIDE_PREVENTED", "EVENT_RESIZE", "EVENT_CLICK_DISMISS", "EVENT_MOUSEDOWN_DISMISS", "EVENT_KEYDOWN_DISMISS", "CLASS_NAME_OPEN", "CLASS_NAME_STATIC", "OPEN_SELECTOR", "SELECTOR_DIALOG", "SELECTOR_MODAL_BODY", "Modal", "_dialog", "_backdrop", "_initializeBackDrop", "_focustrap", "_initializeFocusTrap", "_scrollBar", "_adjustDialog", "_showElement", "_hideModal", "handleUpdate", "scrollTop", "modalBody", "transitionComplete", "_triggerBackdropTransition", "event2", "_resetAdjustments", "isModalOverflowing", "scrollHeight", "clientHeight", "initialOverflowY", "overflowY", "isBodyOverflowing", "paddingLeft", "paddingRight", "alreadyOpen", "CLASS_NAME_SHOWING", "CLASS_NAME_HIDING", "CLASS_NAME_BACKDROP", "scroll", "Offcanvas", "blur", "completeCallback", "position", "ARIA_ATTRIBUTE_PATTERN", "DefaultAllowlist", "a", "area", "b", "br", "col", "code", "dd", "div", "dl", "dt", "em", "hr", "h1", "h2", "h3", "h4", "h5", "h6", "i", "li", "ol", "p", "pre", "s", "small", "span", "sub", "sup", "strong", "u", "ul", "uriAttributes", "SAFE_URL_PATTERN", "allowedAttribute", "attribute", "allowedAttributeList", "attributeName", "nodeName", "nodeValue", "attributeRegex", "some", "regex", "sanitizeHtml", "unsafeHtml", "allowList", "sanitizeFunction", "createdDocument", "DOMParser", "parseFromString", "elementName", "attributeList", "allowedAttributes", "innerHTML", "content", "extraClass", "html", "sanitize", "sanitizeFn", "template", "DefaultContentType", "entry", "TemplateFactory", "getContent", "_resolvePossibleFunction", "hasContent", "changeContent", "_checkContent", "toHtml", "templateWrapper", "_maybeSanitize", "text", "_setContent", "arg", "templateElement", "_putElementInTemplate", "textContent", "DISALLOWED_ATTRIBUTES", "CLASS_NAME_MODAL", "SELECTOR_TOOLTIP_INNER", "SELECTOR_MODAL", "EVENT_MODAL_HIDE", "TRIGGER_HOVER", "TRIGGER_FOCUS", "TRIGGER_CLICK", "TRIGGER_MANUAL", "EVENT_INSERTED", "EVENT_CLICK", "EVENT_FOCUSOUT", "AttachmentMap", "AUTO", "TOP", "RIGHT", "BOTTOM", "LEFT", "animation", "container", "customClass", "delay", "fallbackPlacements", "title", "Tooltip", "_isEnabled", "_timeout", "_isHovered", "_activeTrigger", "_templateFactory", "_newContent", "tip", "_setListeners", "_fixTitle", "enable", "disable", "toggleEnabled", "click", "_leave", "_enter", "_hideModalHandler", "_disposePopper", "_isWithContent", "isInTheDom", "ownerDocument", "_getTipElement", "_isWithActiveTrigger", "_getTitle", "_createTipElement", "_getContentForTemplate", "_getTemplateFactory", "tipId", "setContent", "_initializeOnDelegatedTarget", "_getDelegateConfig", "attachment", "phase", "state", "triggers", "eventIn", "eventOut", "_setTimeout", "timeout", "dataAttributes", "dataAttribute", "SELECTOR_TITLE", "SELECTOR_CONTENT", "Popover", "_getContent", "EVENT_ACTIVATE", "CLASS_NAME_DROPDOWN_ITEM", "SELECTOR_DATA_SPY", "SELECTOR_TARGET_LINKS", "SELECTOR_NAV_LIST_GROUP", "SELECTOR_NAV_LINKS", "SELECTOR_NAV_ITEMS", "SELECTOR_LIST_ITEMS", "SELECTOR_LINK_ITEMS", "SELECTOR_DROPDOWN", "SELECTOR_DROPDOWN_TOGGLE", "rootMargin", "smoothScroll", "threshold", "ScrollSpy", "_targetLinks", "_observableSections", "_rootElement", "_activeTarget", "_observer", "_previousScrollData", "visibleEntryTop", "parentScrollTop", "refresh", "_initializeTargetsAndObservables", "_maybeEnableSmoothScroll", "disconnect", "_getNewObserver", "section", "observe", "observableSection", "hash", "height", "offsetTop", "scrollTo", "top", "behavior", "IntersectionObserver", "_observerCallback", "targetElement", "_process", "userScrollsDown", "isIntersecting", "_clearActiveClass", "entryIsLowerThanPrevious", "targetLinks", "anchor", "decodeURI", "_activateParents", "listGroup", "item", "activeNodes", "node", "spy", "HOME_KEY", "END_KEY", "CLASS_DROPDOWN", "SELECTOR_DROPDOWN_MENU", "NOT_SELECTOR_DROPDOWN_TOGGLE", "SELECTOR_TAB_PANEL", "SELECTOR_OUTER", "SELECTOR_INNER", "SELECTOR_INNER_ELEM", "SELECTOR_DATA_TOGGLE_ACTIVE", "Tab", "_setInitialAttributes", "_getChildren", "innerElem", "_elemIsActive", "active", "_getActiveElem", "_deactivate", "_activate", "relatedElem", "_toggleDropDown", "nextActiveElement", "preventScroll", "_setAttributeIfNotExists", "_setInitialAttributesOnChild", "_getInnerElement", "isActive", "outerElem", "_getOuterElement", "_setInitialAttributesOnTargetPanel", "open", "EVENT_MOUSEOVER", "EVENT_MOUSEOUT", "CLASS_NAME_HIDE", "autohide", "Toast", "_hasMouseInteraction", "_hasKeyboardInteraction", "_clearTimeout", "_maybeScheduleHide", "isShown", "_onInteraction", "isInteracting", "turbo_es2017_esm_exports", "__export", "FrameElement", "FrameLoadingStyle", "FrameRenderer", "PageRenderer", "PageSnapshot", "StreamActions", "StreamElement", "StreamSourceElement", "cache", "clearCache", "connectStreamSource", "disconnectStreamSource", "navigator$1", "registerAdapter", "renderStreamMessage", "session", "setConfirmMethod", "setFormMode", "setProgressBarDelay", "start", "visit", "BuiltInHTMLElement", "wrapperForTheName", "prototype", "submitter", "validateSubmitter", "form", "raise", "errorConstructor", "message", "name", "submittersByForm", "findSubmitterFromClickTarget", "target", "element", "candidate", "clickCaptured", "event", "_FrameElement", "value", "frameLoadingStyleFromString", "_a", "_b", "style", "expandURL", "locatable", "getAnchor", "url", "anchorMatch", "getAction", "action", "getExtension", "getLastPathComponent", "isHTML", "isPrefixedBy", "baseURL", "prefix", "getPrefix", "locationIsVisitable", "location", "rootLocation", "getRequestURL", "anchor", "toCacheKey", "urlsAreEqual", "left", "right", "getPathComponents", "addTrailingSlash", "FetchResponse", "response", "activateScriptElement", "createdScriptElement", "cspNonce", "getMetaContent", "copyElementAttributes", "destinationElement", "sourceElement", "createDocumentFragment", "html", "template", "dispatch", "eventName", "cancelable", "detail", "nextAnimationFrame", "resolve", "nextEventLoopTick", "nextMicrotask", "parseHTMLDocument", "unindent", "strings", "values", "lines", "interpolate", "match", "indent", "line", "result", "string", "i", "uuid", "_", "getAttribute", "attributeName", "elements", "hasAttribute", "markAsBusy", "clearBusyState", "waitForLoad", "timeoutInMilliseconds", "onComplete", "getHistoryMethodForAction", "isAction", "getVisitAction", "getMetaElement", "setMetaContent", "content", "findClosestRecursively", "selector", "FetchMethod", "fetchMethodFromString", "method", "FetchRequest", "delegate", "body", "_value", "fetchOptions", "error", "fetchResponse", "mimeType", "requestInterception", "AppearanceObserver", "entries", "lastEntry", "StreamMessage", "fragment", "importStreamElements", "streamElement", "inertScriptElement", "FormSubmissionState", "FormEnctype", "formEnctypeFromString", "encoding", "FormSubmission", "_FormSubmission", "_element", "_submitter", "formElement", "mustRedirect", "buildFormData", "mergeFormDataEntries", "formElementAction", "initialized", "requesting", "confirmationMessage", "stopping", "stopped", "request", "token", "getCookieValue", "_request", "responseSucceededWithoutRedirect", "input", "formData", "cookieName", "cookie", "searchParams", "Snapshot", "inertDisabledOrHidden", "queryPermanentElementsAll", "id", "getPermanentElementById", "snapshot", "permanentElementMap", "currentPermanentElement", "newPermanentElement", "node", "FormSubmitObserver", "eventTarget", "submissionDoesNotDismissDialog", "submissionDoesNotTargetIFrame", "View", "x", "y", "renderer", "isPreview", "shouldRender", "renderInterception", "options", "reason", "FrameView", "LinkInterceptor", "_event", "LinkClickObserver", "link", "doesNotTargetIFrame", "FormLinkClickObserver", "originalEvent", "type", "turboFrame", "turboAction", "turboConfirm", "Bardo", "callback", "bardo", "permanentElement", "placeholder", "createPlaceholderForPermanentElement", "clone", "Renderer", "currentSnapshot", "newSnapshot", "renderElement", "willRender", "reject", "elementIsFocusable", "currentElement", "newElement", "destinationRange", "frameElement", "sourceRange", "block", "readScrollLogicalPosition", "behavior", "readScrollBehavior", "activatedScriptElement", "defaultValue", "ProgressBar", "_ProgressBar", "HeadSnapshot", "elementIsNoscript", "elementWithoutNonce", "outerHTML", "details", "elementType", "elementIsTracked", "matchedType", "tracked", "elementIsMetaElementWithName", "elementIsScript", "elementIsStylesheet", "tagName", "_PageSnapshot", "head", "headSnapshot", "clonedElement", "selectElements", "clonedSelectElements", "index", "source", "option", "clonedPasswordInput", "root", "TimingMetric", "VisitState", "defaultOptions", "SystemStatusCode", "Visit", "restorationIdentifier", "historyChanged", "referrer", "snapshotHTML", "visitCachedSnapshot", "updateHistory", "shouldCacheSnapshot", "acceptsStreamResponse", "actionForHistory", "statusCode", "isSuccessful", "responseHTML", "_response", "redirected", "_error", "scrollPosition", "metric", "BrowserAdapter", "_visit", "_formSubmission", "CacheObserver", "FrameRedirector", "_location", "frame", "meta", "History", "turbo", "state", "additionalData", "restorationData", "Navigator", "formSubmission", "visitOptions", "currentAnchor", "isRestorationToTop", "oldURL", "newURL", "PageStage", "PageObserver", "readyState", "ScrollObserver", "position", "StreamMessageRenderer", "getPermanentElementMapForFragment", "permanentElementsInDocument", "permanentElementInDocument", "elementInStream", "StreamObserver", "fetchResponseFromEvent", "fetchResponseIsStream", "ErrorRenderer", "documentElement", "replaceableElement", "parentNode", "mergedHeadElements", "newStylesheetElements", "loadingElements", "newHeadElements", "elementList", "SnapshotCache", "size", "key", "PageView", "cachedSnapshot", "Preloader", "responseText", "Session", "adapter", "delay", "mode", "extendURLWithDeprecatedProperties", "defaultPrevented", "render", "_snapshot", "_isPreview", "ev", "newBody", "timing", "submitterIsNavigatable", "container", "withinFrame", "deprecatedLocationPropertyDescriptors", "Cache", "targetElement", "confirmMethod", "Turbo", "TurboFrameMissingError", "FrameController", "_fetchResponse", "src", "document", "fetchRequest", "newFrame", "_newElement", "newFrameElement", "pageSnapshot", "wrapped", "getFrameElementById", "activateElement", "sourceURL", "currentURL", "_StreamElement", "c", "existingChildren", "e", "newChildrenIds", "actionFunction", "consumer", "getConsumer", "setConsumer", "createConsumer", "newConsumer", "subscribeTo", "channel", "mixin", "subscriptions", "walk", "obj", "acc", "key", "camel", "m", "x", "TurboCableStreamSourceElement", "connectStreamSource", "subscribeTo", "disconnectStreamSource", "data", "event", "channel", "signed_stream_name", "walk", "encodeMethodIntoRequestBody", "event", "form", "fetchOptions", "submitter", "body", "isBodyInit", "method", "determineFetchMethod", "formMethod", "determineFormMethod", "overrideMethod", "encodeMethodIntoRequestBody", "import_chartkick", "noop", "uid", "id", "isNullOrUndef", "value", "isArray", "type", "isObject", "isNumberFinite", "finiteOrDefault", "defaultValue", "valueOrDefault", "toPercentage", "dimension", "toDimension", "callback", "fn", "args", "thisArg", "each", "loopable", "reverse", "i", "len", "keys", "_elementsEqual", "a0", "a1", "ilen", "v0", "v1", "clone$1", "source", "target", "klen", "k", "isValidKey", "key", "_merger", "options", "tval", "sval", "merge", "sources", "merger", "mergeIf", "_mergerIf", "keyResolvers", "v", "o", "resolveObjectKey", "obj", "key", "_getKeyResolver", "keys", "_splitKey", "k", "parts", "tmp", "part", "_capitalize", "str", "defined", "value", "isFunction", "setsEqual", "a", "b", "item", "_isClickEvent", "PI", "TAU", "PITAU", "INFINITY", "RAD_PER_DEG", "HALF_PI", "QUARTER_PI", "TWO_THIRDS_PI", "log10", "sign", "niceNum", "range", "roundedRange", "almostEquals", "niceRange", "fraction", "_factorize", "result", "sqrt", "i", "isNumber", "n", "x", "y", "epsilon", "almostWhole", "rounded", "_setMinAndMaxByKey", "array", "target", "property", "ilen", "toRadians", "degrees", "toDegrees", "radians", "_decimalPlaces", "isNumberFinite", "e", "p", "getAngleFromPoint", "centrePoint", "anglePoint", "distanceFromXCenter", "distanceFromYCenter", "radialDistanceFromCenter", "angle", "distanceBetweenPoints", "pt1", "pt2", "_angleDiff", "_normalizeAngle", "_angleBetween", "start", "end", "sameAngleIsFullCircle", "angleToStart", "angleToEnd", "startToAngle", "endToAngle", "_limitValue", "min", "max", "_int16Range", "_isBetween", "_lookup", "table", "cmp", "index", "hi", "lo", "mid", "_lookupByKey", "last", "_rlookupByKey", "_filterBetween", "values", "arrayEvents", "listenArrayEvents", "listener", "method", "base", "args", "res", "object", "unlistenArrayEvents", "stub", "listeners", "_arrayUnique", "items", "set", "requestAnimFrame", "callback", "throttled", "fn", "thisArg", "updateFn", "updateArgs", "args", "ticking", "rest", "debounce", "delay", "timeout", "_toLeftRightCenter", "align", "_alignStartEnd", "start", "end", "_textX", "left", "right", "rtl", "_getStartAndCountOfVisiblePoints", "meta", "points", "animationsDisabled", "pointCount", "count", "iScale", "_parsed", "axis", "min", "max", "minDefined", "maxDefined", "_limitValue", "_lookupByKey", "_scaleRangesChanged", "xScale", "yScale", "_scaleRanges", "newRanges", "changed", "atEdge", "t", "elasticIn", "s", "p", "TAU", "elasticOut", "effects", "HALF_PI", "PI", "round", "v", "lim", "l", "h", "p2b", "n2b", "b2n", "n2p", "map$1", "hex", "h1", "b", "h2", "eq", "isShort", "hexParse", "str", "len", "ret", "alpha", "a", "f", "hexString", "HUE_RE", "hsl2rgbn", "n", "k", "hsv2rgbn", "hwb2rgbn", "w", "rgb", "i", "hueValue", "r", "g", "d", "rgb2hsl", "calln", "c", "hsl2rgb", "hwb2rgb", "hsv2rgb", "hue", "hueParse", "m", "p1", "p2", "rotate", "deg", "hslString", "map", "names$1", "unpack", "unpacked", "keys", "tkeys", "j", "ok", "nk", "names", "nameParse", "RGB_RE", "rgbParse", "rgbString", "to", "from", "interpolate", "rgb1", "rgb2", "modHSL", "ratio", "tmp", "clone", "proto", "fromObject", "input", "functionParse", "Color", "_Color", "type", "obj", "color", "weight", "c1", "c2", "w2", "w1", "val", "index_esm", "isPatternOrGradient", "value", "getHoverColor", "overrides", "descriptors", "getScope$1", "node", "key", "set", "root", "scope", "values", "merge", "Defaults", "_descriptors", "context", "ctx", "options", "name", "targetScope", "targetName", "scopeObject", "targetScopeObject", "privateName", "local", "target", "isObject", "valueOrDefault", "defaults", "toFontString", "font", "isNullOrUndef", "_measureText", "data", "gc", "longest", "string", "textWidth", "_longestText", "arrayOfThings", "cache", "ilen", "jlen", "thing", "nestedThing", "isArray", "gcLen", "_alignPixel", "chart", "pixel", "width", "devicePixelRatio", "halfWidth", "clearCanvas", "canvas", "drawPoint", "x", "y", "drawPointLegend", "xOffset", "yOffset", "size", "cornerRadius", "style", "rotation", "radius", "rad", "RAD_PER_DEG", "TWO_THIRDS_PI", "QUARTER_PI", "_isPointInArea", "point", "area", "margin", "clipArea", "unclipArea", "_steppedLineTo", "previous", "flip", "mode", "midpoint", "_bezierCurveTo", "renderText", "text", "opts", "lines", "stroke", "line", "setRenderOpts", "decorateText", "metrics", "top", "bottom", "yDecoration", "addRoundedRectPath", "rect", "LINE_HEIGHT", "FONT_STYLE", "toLineHeight", "matches", "numberOrZero", "_readValueToProps", "props", "objProps", "read", "prop", "toTRBL", "toTRBLCorners", "toPadding", "toFont", "fallback", "resolve", "inputs", "index", "info", "cacheable", "_addGrace", "minmax", "grace", "beginAtZero", "change", "toDimension", "keepZero", "add", "createContext", "parentContext", "_createResolver", "scopes", "prefixes", "rootScopes", "getTarget", "defined", "_resolve", "_cached", "_resolveWithPrefixes", "getKeysFromAllScopes", "storage", "_attachContext", "proxy", "subProxy", "descriptorDefaults", "receiver", "_resolveWithContext", "_scriptable", "_indexable", "_allKeys", "isFunction", "readKey", "prefix", "_capitalize", "needsSubResolver", "_proxy", "_context", "_subProxy", "_resolveScriptable", "_resolveArray", "_stack", "createSubResolver", "isIndexable", "arr", "item", "resolver", "resolveFallback", "getScope", "parent", "resolveObjectKey", "addScopes", "parentScopes", "parentFallback", "allScopes", "addScopesFromKey", "subGetTarget", "resolveKeysFromAllScopes", "_parseObjectDataRadialScale", "parsed", "EPSILON", "getPoint", "getValueAxis", "indexAxis", "splineCurve", "firstPoint", "middlePoint", "afterPoint", "current", "next", "d01", "distanceBetweenPoints", "d12", "s01", "s12", "fa", "fb", "monotoneAdjust", "deltaK", "mK", "pointsLen", "alphaK", "betaK", "tauK", "squaredMagnitude", "pointCurrent", "pointAfter", "almostEquals", "monotoneCompute", "valueAxis", "delta", "pointBefore", "iPixel", "vPixel", "splineCurveMonotone", "slopeDelta", "sign", "capControlPoint", "pt", "capBezierPoints", "inArea", "inAreaPrev", "inAreaNext", "_updateBezierControlPoints", "loop", "controlPoints", "prev", "_isDomSupported", "_getParentNode", "domNode", "parseMaxStyle", "styleValue", "parentProperty", "valueInPixels", "getComputedStyle", "element", "getStyle", "el", "property", "positions", "getPositionedStyle", "styles", "suffix", "result", "pos", "useOffsetPos", "getCanvasPosition", "touches", "source", "offsetX", "offsetY", "box", "getRelativePosition", "evt", "currentDevicePixelRatio", "borderBox", "paddings", "borders", "height", "getContainerSize", "maxWidth", "maxHeight", "container", "containerStyle", "containerBorder", "containerPadding", "INFINITY", "round1", "getMaximumSize", "bbWidth", "bbHeight", "aspectRatio", "margins", "containerSize", "retinaScale", "forceRatio", "forceStyle", "pixelRatio", "deviceHeight", "deviceWidth", "supportsEventListenerOptions", "passiveSupported", "readUsedSize", "_pointInLine", "_steppedInterpolation", "_bezierInterpolation", "cp1", "cp2", "e", "intlCache", "getNumberFormat", "locale", "cacheKey", "formatter", "formatNumber", "num", "getRightToLeftAdapter", "rectX", "itemWidth", "getLeftToRightAdapter", "_itemWidth", "getRtlAdapter", "overrideTextDirection", "direction", "original", "restoreTextDirection", "propertyFn", "_angleBetween", "_angleDiff", "_normalizeAngle", "_isBetween", "normalizeSegment", "getSegment", "segment", "bounds", "startBound", "endBound", "between", "normalize", "_boundSegment", "compare", "inside", "subStart", "prevValue", "startIsBefore", "endIsBefore", "shouldStart", "shouldStop", "_boundSegments", "segments", "sub", "findStartAndEnd", "spanGaps", "solidSegments", "last", "cur", "_computeSegments", "segmentOptions", "splitByStyles", "completeLoop", "doSplitByStyles", "chartContext", "baseStyle", "readStyle", "datasetIndex", "prevStyle", "addStyle", "st", "dir", "styleChanged", "Animator", "chart", "anims", "date", "type", "callbacks", "numSteps", "fn", "requestAnimFrame", "remaining", "items", "i", "draw", "item", "charts", "event", "cb", "acc", "cur", "animator", "transparent", "interpolators", "from", "to", "factor", "c0", "color", "c1", "Animation", "cfg", "target", "prop", "currentValue", "resolve", "effects", "elapsed", "remain", "duration", "loop", "promises", "res", "rej", "resolved", "method", "numbers", "colors", "defaults", "animationOptions", "name", "v", "Animations", "config", "isObject", "animatedProps", "key", "option", "isArray", "values", "newOptions", "options", "resolveTargetOptions", "animations", "awaitAll", "running", "props", "value", "animation", "properties", "keys", "anim", "scaleClip", "scale", "allowedOverflow", "opts", "reverse", "min", "max", "defaultClip", "xScale", "yScale", "x", "y", "toClip", "r", "b", "l", "getSortedDatasetIndices", "filterVisible", "metasets", "ilen", "applyStack", "stack", "dsIndex", "singleMode", "datasetIndex", "otherValue", "isNumberFinite", "sign", "convertObjectDataToArray", "data", "adata", "isStacked", "meta", "stacked", "getStackKey", "indexScale", "valueScale", "getUserBounds", "minDefined", "maxDefined", "getOrCreateStack", "stacks", "stackKey", "indexValue", "subStack", "getLastIndexInStack", "vScale", "positive", "updateStacks", "controller", "parsed", "iScale", "iAxis", "vAxis", "index", "itemStacks", "getFirstScaleId", "axis", "scales", "createDatasetContext", "parent", "createContext", "createDataContext", "element", "clearStacks", "isDirectUpdateMode", "mode", "cloneIfNotShared", "cached", "shared", "createStack", "canStack", "DatasetController", "dataset", "chooseId", "xid", "valueOrDefault", "yid", "rid", "indexAxis", "iid", "vid", "scaleID", "unlistenArrayEvents", "_data", "listenArrayEvents", "resetNewElements", "stackChanged", "oldStacked", "scopeKeys", "scopes", "start", "count", "_stacked", "sorted", "prev", "isNotInOrderComparedToPrev", "labels", "singleScale", "xAxisKey", "yAxisKey", "resolveObjectKey", "range", "parsedValue", "_parsed", "otherScale", "otherMin", "otherMax", "_skip", "ctx", "elements", "area", "active", "drawActiveElementsOnTop", "context", "elementType", "cache", "cacheKey", "sharing", "defined", "prefixes", "names", "transition", "sharedOptions", "firstOpts", "previouslySharedOptions", "includeOptions", "arg1", "arg2", "numMeta", "numData", "end", "move", "arr", "removed", "args", "newCount", "getAllScaleValues", "visibleMetas", "_arrayUnique", "a", "computeMinSampleSize", "curr", "updateMinAndPrev", "computeFitCategoryTraits", "ruler", "stackCount", "thickness", "size", "ratio", "isNullOrUndef", "computeFlexCategoryTraits", "pixels", "next", "percent", "parseFloatBar", "entry", "startValue", "endValue", "barStart", "barEnd", "parseValue", "parseArrayOrPrimitive", "isFloatBar", "custom", "barSign", "actualBase", "borderProps", "top", "bottom", "setBorderSkipped", "edge", "parseEdge", "swap", "startEnd", "orig", "v1", "v2", "setInflateAmount", "inflateAmount", "BarController", "iAxisKey", "vAxisKey", "obj", "bars", "reset", "base", "horizontal", "vpixels", "ipixels", "last", "dataIndex", "skipNull", "val", "barThickness", "baseValue", "minBarLength", "floating", "length", "head", "startPixel", "endPixel", "halfGrid", "maxBarThickness", "center", "stackIndex", "rects", "BubbleController", "points", "point", "iPixel", "vPixel", "radius", "getRatioAndOffset", "rotation", "circumference", "cutout", "ratioX", "ratioY", "offsetX", "offsetY", "TAU", "startAngle", "endAngle", "startX", "startY", "endX", "endY", "calcMax", "angle", "_angleBetween", "calcMin", "maxX", "maxY", "HALF_PI", "minX", "PI", "minY", "DoughnutController", "getter", "toRadians", "chartArea", "arcs", "spacing", "maxSize", "toPercentage", "chartWeight", "maxWidth", "maxHeight", "maxRadius", "outerRadius", "toDimension", "innerRadius", "radiusLength", "animationOpts", "centerX", "centerY", "animateScale", "arc", "metaData", "total", "formatNumber", "ringWeightOffset", "pointStyle", "label", "style", "legendItem", "legend", "tooltipItem", "dataLabel", "LineController", "line", "_dataset", "animationsDisabled", "_getStartAndCountOfVisiblePoints", "_scaleRangesChanged", "spanGaps", "segment", "maxGapLength", "isNumber", "directUpdate", "prevParsed", "nullData", "border", "firstPoint", "lastPoint", "PolarAreaController", "_parseObjectDataRadialScale", "minSize", "datasetStartAngle", "defaultAngle", "PieController", "RadarController", "pointPosition", "Element", "useFinalPosition", "final", "ret", "formatters", "tickValue", "ticks", "locale", "notation", "delta", "maxTick", "calculateDelta", "logDelta", "log10", "numDecimal", "Ticks", "_ctx", "autoSkip", "tickOpts", "ticksLimit", "determineMaxTicks", "majorIndices", "getMajorIndices", "numMajorIndices", "first", "newTicks", "skipMajors", "calculateSpacing", "avgMajorSpacing", "skip", "offset", "tickLength", "maxScale", "maxChart", "evenMajorSpacing", "getEvenSpacing", "factors", "_factorize", "result", "majorStart", "majorEnd", "len", "diff", "reverseAlign", "align", "offsetFromEdge", "sample", "numItems", "increment", "getPixelForGridLine", "offsetGridLines", "validIndex", "epsilon", "lineValue", "garbageCollect", "caches", "each", "gc", "gcLen", "getTickMarkLength", "getTitleHeight", "fallback", "font", "toFont", "padding", "toPadding", "createScaleContext", "createTickContext", "tick", "titleAlign", "position", "_toLeftRightCenter", "titleArgs", "left", "right", "titleX", "titleY", "height", "width", "_alignStartEnd", "positionAxisID", "Scale", "_Scale", "raw", "_userMin", "_userMax", "_suggestedMin", "_suggestedMax", "finiteOrDefault", "metas", "callback", "margins", "beginAtZero", "grace", "sampleSize", "_addGrace", "samplingEnabled", "reversePixels", "numTicks", "minRotation", "maxRotation", "labelRotation", "tickWidth", "maxLabelDiagonal", "labelSizes", "maxLabelWidth", "maxLabelHeight", "_limitValue", "toDegrees", "titleOpts", "gridOpts", "display", "isHorizontal", "titleHeight", "widest", "highest", "tickPadding", "angleRadians", "cos", "sin", "labelHeight", "labelWidth", "isRotated", "labelsBelowTicks", "offsetLeft", "offsetRight", "paddingLeft", "paddingRight", "paddingTop", "paddingBottom", "widths", "heights", "widestLabelSize", "highestLabelSize", "j", "jlen", "tickFont", "fontString", "lineHeight", "nestedLabel", "_measureText", "valueAt", "idx", "pixel", "decimal", "_int16Range", "_alignPixel", "optionTicks", "rot", "w", "h", "grid", "ticksLength", "tl", "borderOpts", "axisWidth", "axisHalfWidth", "alignBorderValue", "borderValue", "alignedLineValue", "tx1", "ty1", "tx2", "ty2", "x1", "y1", "x2", "y2", "limit", "step", "optsAtIndex", "lineWidth", "lineColor", "borderDash", "borderDashOffset", "tickColor", "tickBorderDash", "tickBorderDashOffset", "crossAlign", "mirror", "tickAndPadding", "hTickAndPadding", "textAlign", "lineCount", "textOffset", "textBaseline", "halfCount", "strokeColor", "strokeWidth", "tickTextAlign", "backdrop", "labelPadding", "backgroundColor", "t", "drawLine", "p1", "p2", "lastLineWidth", "clipArea", "renderText", "unclipArea", "title", "tz", "gz", "axisID", "fontSize", "TypedRegistry", "scope", "override", "proto", "parentScope", "isIChartComponent", "id", "registerDefaults", "overrides", "itemDefaults", "merge", "routeDefaults", "routes", "property", "propertyParts", "sourceName", "sourceScope", "parts", "targetName", "targetScope", "Registry", "typedRegistry", "arg", "reg", "itemReg", "registry", "component", "camelMethod", "_capitalize", "ScatterController", "showLine", "controllers", "abstract", "DateAdapter", "chartOptions", "format", "timestamp", "amount", "unit", "weekday", "members", "adapters", "binarySearch", "metaset", "intersect", "_sorted", "lookupMethod", "_rlookupByKey", "_lookupByKey", "el", "evaluateInteractionItems", "handler", "lo", "hi", "getDistanceMetricForAxis", "useX", "useY", "pt1", "pt2", "deltaX", "deltaY", "getIntersectItems", "includeInvisible", "_isPointInArea", "getNearestRadialItems", "evaluationFunc", "getAngleFromPoint", "getNearestCartesianItems", "distanceMetric", "minDistance", "inRange", "distance", "getNearestItems", "getAxisItems", "rangeMethod", "intersectsItem", "Interaction", "e", "getRelativePosition", "STATIC_POSITIONS", "filterByPosition", "array", "filterDynamicPositionByAxis", "sortByWeight", "v0", "wrapBoxes", "boxes", "layoutBoxes", "box", "pos", "stackWeight", "buildStacks", "layouts", "wrap", "_stack", "setLayoutDims", "params", "vBoxMaxWidth", "hBoxMaxHeight", "layout", "fullSize", "buildLayoutBoxes", "centerHorizontal", "centerVertical", "getCombinedMax", "maxPadding", "updateMaxPadding", "boxPadding", "updateDims", "newWidth", "newHeight", "widthChanged", "heightChanged", "handleMaxPadding", "updatePos", "change", "getMargins", "marginForPositions", "positions", "margin", "fitBoxes", "refitBoxes", "refit", "changed", "same", "other", "setBoxDims", "placeBoxes", "userPadding", "weight", "layoutItem", "minPadding", "availableWidth", "availableHeight", "verticalBoxes", "horizontalBoxes", "visibleVerticalBoxCount", "BasePlatform", "canvas", "aspectRatio", "listener", "BasicPlatform", "EXPANDO_KEY", "EVENT_TYPES", "isNullOrEmpty", "initCanvas", "renderHeight", "renderWidth", "displayWidth", "readUsedSize", "displayHeight", "eventListenerOptions", "supportsEventListenerOptions", "addListener", "node", "removeListener", "fromNativeEvent", "nodeListContains", "nodeList", "createAttachObserver", "observer", "entries", "trigger", "createDetachObserver", "drpListeningCharts", "oldDevicePixelRatio", "onWindowResize", "dpr", "resize", "listenDevicePixelRatioChanges", "unlistenDevicePixelRatioChanges", "createResizeObserver", "container", "_getParentNode", "throttled", "releaseObserver", "createProxyAndListen", "proxy", "DomPlatform", "initial", "proxies", "getMaximumSize", "_detectPlatform", "_isDomSupported", "PluginService", "hook", "filter", "descriptors", "descriptor", "plugin", "all", "plugins", "allPlugins", "createDescriptors", "previousDescriptors", "localIds", "local", "getOpts", "pluginOpts", "getIndexAxis", "datasetDefaults", "getAxisFromDefaultScaleID", "getDefaultScaleIDFromAxis", "axisFromPosition", "determineAxis", "scaleOptions", "mergeScaleConfig", "chartDefaults", "configScales", "chartIndexAxis", "firstIDs", "scaleConf", "defaultId", "defaultScaleOptions", "mergeIf", "defaultID", "initOptions", "initData", "initConfig", "keyCache", "keysCached", "cachedKeys", "generate", "addIfFound", "set", "Config", "datasetType", "mainScope", "resetCache", "_scopeCache", "keyLists", "resolver", "subPrefixes", "getResolver", "needContext", "isFunction", "subResolver", "_attachContext", "descriptorDefaults", "resolverCache", "_createResolver", "p", "hasFunction", "isScriptable", "isIndexable", "_descriptors", "scriptable", "indexable", "version", "KNOWN_POSITIONS", "positionIsHorizontal", "compare2Level", "l1", "l2", "onAnimationsComplete", "onAnimationProgress", "getCanvas", "instances", "getChart", "c", "moveNumericKeys", "intKey", "determineLastEvent", "lastEvent", "inChartArea", "isClick", "Chart", "userConfig", "initialCanvas", "existingChart", "uid", "debounce", "maintainAspectRatio", "_aspectRatio", "retinaScale", "clearCanvas", "newSize", "newRatio", "scalesOptions", "axisOptions", "scaleOpts", "updated", "isRadial", "scaleType", "scaleClass", "hasUpdated", "datasets", "newControllers", "ControllerClass", "datasetElementType", "dataElementType", "animsDisabled", "_active", "_lastEvent", "existingEvents", "newEvents", "setsEqual", "_hiddenIndices", "changes", "_dataChanges", "datasetCount", "makeSet", "changeSet", "noArea", "layers", "clip", "useClip", "visible", "listeners", "platform", "_add", "_remove", "detached", "attached", "enabled", "prefix", "activeElements", "lastActive", "_elementsEqual", "replay", "hoverOptions", "deactivated", "activated", "eventFilter", "_isClickEvent", "invalidatePlugins", "enumerable", "clipArc", "pixelMargin", "angleMargin", "toRadiusCorners", "_readValueToProps", "parseBorderRadius$1", "angleDelta", "o", "halfThickness", "innerLimit", "computeOuterLimit", "outerArcLimit", "rThetaToXY", "theta", "pathArc", "circular", "innerR", "spacingOffset", "alpha", "noSpacingInnerRadius", "noSpacingOuterRadius", "avNogSpacingRadius", "adjustedAngle", "beta", "angleOffset", "outerStart", "outerEnd", "innerStart", "innerEnd", "outerStartAdjustedRadius", "outerEndAdjustedRadius", "outerStartAdjustedAngle", "outerEndAdjustedAngle", "innerStartAdjustedRadius", "innerEndAdjustedRadius", "innerStartAdjustedAngle", "innerEndAdjustedAngle", "pCenter", "p4", "p8", "outerStartX", "outerStartY", "outerEndX", "outerEndY", "drawArc", "fullCircles", "drawFullCircleBorders", "inner", "drawBorder", "borderWidth", "borderJoinStyle", "ArcElement", "chartX", "chartY", "rAdjust", "betweenAngles", "withinRadius", "_isBetween", "halfAngle", "halfRadius", "radiusOffset", "setStyle", "lineTo", "previous", "getLineMethod", "_steppedLineTo", "_bezierCurveTo", "pathVars", "paramsStart", "paramsEnd", "segmentStart", "segmentEnd", "outside", "pathSegment", "lineMethod", "fastPathSegment", "avgX", "countX", "prevX", "lastY", "pointIndex", "drawX", "truncX", "_getSegmentMethod", "_getInterpolationMethod", "_steppedInterpolation", "_bezierInterpolation", "_pointInLine", "strokePathWithCache", "path", "strokePathDirect", "segments", "segmentMethod", "usePath2D", "LineElement", "_updateBezierControlPoints", "_computeSegments", "_boundSegments", "_interpolate", "interpolated", "inRange$1", "PointElement", "mouseX", "mouseY", "drawPoint", "getBarBounds", "bar", "half", "skipOrLimit", "parseBorderWidth", "maxW", "maxH", "toTRBL", "parseBorderRadius", "enableBorderRadius", "toTRBLCorners", "maxR", "enableBorder", "boundingRects", "bounds", "skipX", "skipY", "hasRadius", "addNormalRectPath", "rect", "inflateRect", "refRect", "BarElement", "borderColor", "outer", "addRectPath", "addRoundedRectPath", "lttbDecimation", "samples", "decimated", "bucketWidth", "sampledIndex", "endIndex", "maxAreaPoint", "maxArea", "nextA", "avgY", "avgRangeStart", "avgRangeEnd", "avgRangeLength", "rangeOffs", "rangeTo", "pointAx", "pointAy", "minMaxDecimation", "minIndex", "maxIndex", "startIndex", "xMin", "dx", "lastIndex", "intermediateIndex1", "intermediateIndex2", "cleanDecimatedDataset", "cleanDecimatedData", "getStartAndCountOfVisiblePointsSimplified", "pointCount", "plugin_decimation", "xAxis", "threshold", "d", "_segments", "tpoints", "_findSegmentEnd", "_getBounds", "targetSegments", "tgt", "subBounds", "fillSources", "_boundSegment", "fillSource", "_getEdge", "_normalizeAngle", "_pointsFromSegments", "boundary", "linePoints", "_createBoundaryLine", "_loop", "_shouldApplyFill", "source", "_resolveTarget", "sources", "propagate", "fill", "visited", "_decodeFill", "parseFillOption", "decodeTargetIndex", "firstCh", "_getTargetPixel", "_getTargetValue", "fillOption", "_buildStackLine", "sourcePoints", "linesBelow", "getLinesBelow", "addPointsBelow", "below", "sourcePoint", "postponed", "findPoint", "pointValue", "firstValue", "lastValue", "simpleArc", "_getTarget", "getLineByIndex", "computeBoundary", "computeCircularBoundary", "computeLinearBoundary", "_drawfill", "lineOpts", "above", "doFill", "clipVertical", "clipY", "lineLoop", "src", "notShape", "clipBounds", "interpolatedLineTo", "targetLoop", "interpolatedPoint", "_args", "getBoxSize", "labelOpts", "boxHeight", "boxWidth", "itemsEqual", "Legend", "legendItems", "labelFont", "itemHeight", "hitboxes", "lineWidths", "totalHeight", "row", "itemWidth", "columnSizes", "heightLimit", "totalWidth", "currentColWidth", "currentColHeight", "col", "rtl", "rtlHelper", "getRtlAdapter", "hitbox", "defaultColor", "fontColor", "halfFontSize", "cursor", "drawLegendBox", "drawOptions", "drawPointLegend", "yBoxTop", "xBoxLeft", "borderRadius", "fillText", "overrideTextDirection", "textWidth", "realX", "_textX", "restoreTextDirection", "titleFont", "titlePadding", "topPaddingPlusHalfFontSize", "hitBox", "lh", "isListened", "hoveredItem", "sameItem", "plugin_legend", "ci", "usePointStyle", "Title", "textSize", "fontOpts", "createTitle", "plugin_title", "titleBlock", "map", "plugin_subtitle", "positioners", "eventPosition", "nearestElement", "distanceBetweenPoints", "tp", "pushOrConcat", "toPush", "splitNewlines", "str", "createTooltipItem", "getTooltipSize", "tooltip", "body", "footer", "bodyFont", "footerFont", "titleLineCount", "footerLineCount", "bodyLineItemCount", "combinedBodyLength", "bodyItem", "bodyLineHeight", "widthPadding", "maxLineWidth", "determineYAlign", "doesNotFitWithAlign", "xAlign", "caret", "determineXAlign", "yAlign", "chartWidth", "determineAlignment", "alignX", "alignY", "paddingAndSize", "getBackgroundPoint", "alignment", "caretSize", "caretPadding", "cornerRadius", "topLeft", "topRight", "bottomLeft", "bottomRight", "getAlignedX", "getBeforeAfterBodyLines", "createTooltipContext", "tooltipItems", "overrideCallbacks", "Tooltip", "beforeTitle", "afterTitle", "lines", "bodyItems", "scoped", "beforeFooter", "afterFooter", "labelColors", "labelPointStyles", "labelTextColors", "positionAndSize", "backgroundPoint", "tooltipPoint", "caretPosition", "ptX", "ptY", "x3", "y3", "pt", "titleSpacing", "labelPointStyle", "colorX", "rtlColorX", "yOffSet", "colorY", "outerX", "innerX", "bodySpacing", "bodyAlign", "displayColors", "xLinePadding", "fillLineOfText", "bodyAlignForCalculation", "textColor", "tooltipSize", "animX", "animY", "opacity", "hasTooltipContent", "positionChanged", "caretX", "caretY", "plugin_tooltip", "noop", "labelCount", "addIfString", "addedLabels", "findOrAddLabel", "CategoryScale", "added", "generateTicks$1", "generationOptions", "dataRange", "precision", "maxTicks", "maxDigits", "includeBounds", "maxSpaces", "rmin", "rmax", "countDefined", "minSpacing", "niceNum", "niceMin", "niceMax", "numSpaces", "almostWhole", "almostEquals", "decimalPlaces", "_decimalPlaces", "relativeLabelSize", "rad", "LinearScaleBase", "setMin", "setMax", "minSign", "maxSign", "maxTicksLimit", "stepSize", "numericGeneratorOptions", "_setMinAndMaxByKey", "LinearScale", "isMajor", "tickVal", "generateTicks", "endExp", "endSignificand", "exp", "significand", "lastTick", "LogarithmicScale", "m", "getTickBackdropHeight", "measureLabelSize", "_longestText", "determineLimits", "fitWithPointLabels", "limits", "valueCount", "pointLabelOpts", "additionalAngle", "plFont", "hLimits", "vLimits", "updateLimits", "buildPointLabelItems", "extra", "outerDistance", "pointLabelPosition", "yForAngle", "getTextAlignForAngle", "leftForTextAlign", "drawPointLabels", "pointLabels", "backdropColor", "backdropLeft", "backdropTop", "backdropWidth", "backdropHeight", "pathRadiusLine", "drawRadiusLine", "gridLineOpts", "createPointLabelContext", "RadialLinearScale", "leftMovement", "rightMovement", "topMovement", "bottomMovement", "angleMultiplier", "scalingFactor", "scaledDistance", "pointLabel", "distanceFromCenter", "angleLines", "INTERVALS", "UNITS", "sorter", "parse", "input", "adapter", "parser", "round", "isoWeekday", "determineUnitForAutoTicks", "minUnit", "capacity", "interval", "determineUnitForFormatting", "determineMajorUnit", "addTick", "time", "timestamps", "_lookup", "setMajorTicks", "majorUnit", "major", "ticksFromTimestamps", "TimeScale", "_applyBounds", "timeOpts", "_filterBetween", "minor", "hasWeekday", "formats", "minorFormat", "majorFormat", "formatter", "offsets", "ticksOpts", "tickLabelWidth", "cosRotation", "sinRotation", "tickFontSize", "exampleTime", "displayFormats", "exampleLabel", "interpolate", "table", "prevSource", "nextSource", "prevTarget", "nextTarget", "span", "TimeSeriesScale", "registerables", "Chart", "registerables", "auto_default", "_typeof", "o", "toInteger", "dirtyNumber", "number", "requiredArgs", "required", "args", "toDate", "argument", "requiredArgs", "argStr", "_typeof", "addDays", "dirtyDate", "dirtyAmount", "requiredArgs", "date", "toDate", "amount", "toInteger", "addMonths", "dirtyDate", "dirtyAmount", "requiredArgs", "date", "toDate", "amount", "toInteger", "dayOfMonth", "endOfDesiredMonth", "daysInMonth", "addMilliseconds", "dirtyDate", "dirtyAmount", "requiredArgs", "timestamp", "toDate", "amount", "toInteger", "MILLISECONDS_IN_HOUR", "addHours", "dirtyDate", "dirtyAmount", "requiredArgs", "amount", "toInteger", "addMilliseconds", "defaultOptions", "getDefaultOptions", "startOfWeek", "dirtyDate", "options", "_ref", "_ref2", "_ref3", "_options$weekStartsOn", "_options$locale", "_options$locale$optio", "_defaultOptions$local", "_defaultOptions$local2", "requiredArgs", "defaultOptions", "getDefaultOptions", "weekStartsOn", "toInteger", "date", "toDate", "day", "diff", "getTimezoneOffsetInMilliseconds", "date", "utcDate", "startOfDay", "dirtyDate", "requiredArgs", "date", "toDate", "MILLISECONDS_IN_DAY", "differenceInCalendarDays", "dirtyDateLeft", "dirtyDateRight", "requiredArgs", "startOfDayLeft", "startOfDay", "startOfDayRight", "timestampLeft", "getTimezoneOffsetInMilliseconds", "timestampRight", "MILLISECONDS_IN_MINUTE", "addMinutes", "dirtyDate", "dirtyAmount", "requiredArgs", "amount", "toInteger", "addMilliseconds", "addQuarters", "dirtyDate", "dirtyAmount", "requiredArgs", "amount", "toInteger", "months", "addMonths", "addSeconds", "dirtyDate", "dirtyAmount", "requiredArgs", "amount", "toInteger", "addMilliseconds", "addWeeks", "dirtyDate", "dirtyAmount", "requiredArgs", "amount", "toInteger", "days", "addDays", "addYears", "dirtyDate", "dirtyAmount", "requiredArgs", "amount", "toInteger", "addMonths", "compareAsc", "dirtyDateLeft", "dirtyDateRight", "requiredArgs", "dateLeft", "toDate", "dateRight", "diff", "daysInYear", "maxTime", "millisecondsInMinute", "millisecondsInHour", "millisecondsInSecond", "minTime", "secondsInHour", "secondsInDay", "secondsInHour", "secondsInWeek", "secondsInYear", "daysInYear", "secondsInMonth", "secondsInQuarter", "isDate", "value", "requiredArgs", "_typeof", "isValid", "dirtyDate", "requiredArgs", "isDate", "date", "toDate", "differenceInCalendarMonths", "dirtyDateLeft", "dirtyDateRight", "requiredArgs", "dateLeft", "toDate", "dateRight", "yearDiff", "monthDiff", "differenceInCalendarYears", "dirtyDateLeft", "dirtyDateRight", "requiredArgs", "dateLeft", "toDate", "dateRight", "compareLocalAsc", "dateLeft", "dateRight", "diff", "differenceInDays", "dirtyDateLeft", "dirtyDateRight", "requiredArgs", "toDate", "sign", "difference", "differenceInCalendarDays", "isLastDayNotFull", "result", "differenceInMilliseconds", "dateLeft", "dateRight", "requiredArgs", "toDate", "roundingMap", "value", "defaultRoundingMethod", "getRoundingMethod", "method", "differenceInHours", "dateLeft", "dateRight", "options", "requiredArgs", "diff", "differenceInMilliseconds", "millisecondsInHour", "getRoundingMethod", "differenceInMinutes", "dateLeft", "dateRight", "options", "requiredArgs", "diff", "differenceInMilliseconds", "millisecondsInMinute", "getRoundingMethod", "endOfDay", "dirtyDate", "requiredArgs", "date", "toDate", "endOfMonth", "dirtyDate", "requiredArgs", "date", "toDate", "month", "isLastDayOfMonth", "dirtyDate", "requiredArgs", "date", "toDate", "endOfDay", "endOfMonth", "differenceInMonths", "dirtyDateLeft", "dirtyDateRight", "requiredArgs", "dateLeft", "toDate", "dateRight", "sign", "compareAsc", "difference", "differenceInCalendarMonths", "result", "isLastMonthNotFull", "isLastDayOfMonth", "differenceInQuarters", "dateLeft", "dateRight", "options", "requiredArgs", "diff", "differenceInMonths", "getRoundingMethod", "differenceInSeconds", "dateLeft", "dateRight", "options", "requiredArgs", "diff", "differenceInMilliseconds", "getRoundingMethod", "differenceInWeeks", "dateLeft", "dateRight", "options", "requiredArgs", "diff", "differenceInDays", "getRoundingMethod", "differenceInYears", "dirtyDateLeft", "dirtyDateRight", "requiredArgs", "dateLeft", "toDate", "dateRight", "sign", "compareAsc", "difference", "differenceInCalendarYears", "isLastYearNotFull", "result", "startOfMinute", "dirtyDate", "requiredArgs", "date", "toDate", "startOfQuarter", "dirtyDate", "requiredArgs", "date", "toDate", "currentMonth", "month", "startOfMonth", "dirtyDate", "requiredArgs", "date", "toDate", "endOfYear", "dirtyDate", "requiredArgs", "date", "toDate", "year", "startOfYear", "dirtyDate", "requiredArgs", "cleanDate", "toDate", "date", "endOfHour", "dirtyDate", "requiredArgs", "date", "toDate", "endOfWeek", "dirtyDate", "options", "_ref", "_ref2", "_ref3", "_options$weekStartsOn", "_options$locale", "_options$locale$optio", "_defaultOptions$local", "_defaultOptions$local2", "requiredArgs", "defaultOptions", "getDefaultOptions", "weekStartsOn", "toInteger", "date", "toDate", "day", "diff", "endOfMinute", "dirtyDate", "requiredArgs", "date", "toDate", "endOfQuarter", "dirtyDate", "requiredArgs", "date", "toDate", "currentMonth", "month", "endOfSecond", "dirtyDate", "requiredArgs", "date", "toDate", "subMilliseconds", "dirtyDate", "dirtyAmount", "requiredArgs", "amount", "toInteger", "addMilliseconds", "MILLISECONDS_IN_DAY", "getUTCDayOfYear", "dirtyDate", "requiredArgs", "date", "toDate", "timestamp", "startOfYearTimestamp", "difference", "startOfUTCISOWeek", "dirtyDate", "requiredArgs", "weekStartsOn", "date", "toDate", "day", "diff", "getUTCISOWeekYear", "dirtyDate", "requiredArgs", "date", "toDate", "year", "fourthOfJanuaryOfNextYear", "startOfNextYear", "startOfUTCISOWeek", "fourthOfJanuaryOfThisYear", "startOfThisYear", "startOfUTCISOWeekYear", "dirtyDate", "requiredArgs", "year", "getUTCISOWeekYear", "fourthOfJanuary", "date", "startOfUTCISOWeek", "MILLISECONDS_IN_WEEK", "getUTCISOWeek", "dirtyDate", "requiredArgs", "date", "toDate", "diff", "startOfUTCISOWeek", "startOfUTCISOWeekYear", "startOfUTCWeek", "dirtyDate", "options", "_ref", "_ref2", "_ref3", "_options$weekStartsOn", "_options$locale", "_options$locale$optio", "_defaultOptions$local", "_defaultOptions$local2", "requiredArgs", "defaultOptions", "getDefaultOptions", "weekStartsOn", "toInteger", "date", "toDate", "day", "diff", "getUTCWeekYear", "dirtyDate", "options", "_ref", "_ref2", "_ref3", "_options$firstWeekCon", "_options$locale", "_options$locale$optio", "_defaultOptions$local", "_defaultOptions$local2", "requiredArgs", "date", "toDate", "year", "defaultOptions", "getDefaultOptions", "firstWeekContainsDate", "toInteger", "firstWeekOfNextYear", "startOfNextYear", "startOfUTCWeek", "firstWeekOfThisYear", "startOfThisYear", "startOfUTCWeekYear", "dirtyDate", "options", "_ref", "_ref2", "_ref3", "_options$firstWeekCon", "_options$locale", "_options$locale$optio", "_defaultOptions$local", "_defaultOptions$local2", "requiredArgs", "defaultOptions", "getDefaultOptions", "firstWeekContainsDate", "toInteger", "year", "getUTCWeekYear", "firstWeek", "date", "startOfUTCWeek", "MILLISECONDS_IN_WEEK", "getUTCWeek", "dirtyDate", "options", "requiredArgs", "date", "toDate", "diff", "startOfUTCWeek", "startOfUTCWeekYear", "addLeadingZeros", "number", "targetLength", "sign", "output", "formatters", "date", "token", "signedYear", "year", "addLeadingZeros", "month", "dayPeriodEnumValue", "numberOfDigits", "milliseconds", "fractionalSeconds", "lightFormatters_default", "dayPeriodEnum", "formatters", "date", "token", "localize", "era", "signedYear", "year", "lightFormatters_default", "options", "signedWeekYear", "getUTCWeekYear", "weekYear", "twoDigitYear", "addLeadingZeros", "isoWeekYear", "getUTCISOWeekYear", "quarter", "month", "week", "getUTCWeek", "isoWeek", "getUTCISOWeek", "dayOfYear", "getUTCDayOfYear", "dayOfWeek", "localDayOfWeek", "isoDayOfWeek", "hours", "dayPeriodEnumValue", "_localize", "originalDate", "timezoneOffset", "formatTimezoneWithOptionalMinutes", "formatTimezone", "formatTimezoneShort", "timestamp", "offset", "dirtyDelimiter", "sign", "absOffset", "minutes", "delimiter", "formatters_default", "dateLongFormatter", "pattern", "formatLong", "timeLongFormatter", "dateTimeLongFormatter", "matchResult", "datePattern", "timePattern", "dateTimeFormat", "longFormatters", "longFormatters_default", "protectedDayOfYearTokens", "protectedWeekYearTokens", "isProtectedDayOfYearToken", "token", "isProtectedWeekYearToken", "throwProtectedError", "format", "input", "formatDistanceLocale", "formatDistance", "token", "count", "options", "result", "tokenValue", "formatDistance_default", "buildFormatLongFn", "args", "options", "width", "format", "dateFormats", "timeFormats", "dateTimeFormats", "formatLong", "buildFormatLongFn", "formatLong_default", "formatRelativeLocale", "formatRelative", "token", "_date", "_baseDate", "_options", "formatRelative_default", "buildLocalizeFn", "args", "dirtyIndex", "options", "context", "valuesArray", "defaultWidth", "width", "_defaultWidth", "_width", "index", "eraValues", "quarterValues", "monthValues", "dayValues", "dayPeriodValues", "formattingDayPeriodValues", "ordinalNumber", "dirtyNumber", "_options", "number", "rem100", "localize", "buildLocalizeFn", "quarter", "localize_default", "buildMatchFn", "args", "string", "options", "width", "matchPattern", "matchResult", "matchedString", "parsePatterns", "key", "findIndex", "pattern", "findKey", "value", "rest", "object", "predicate", "array", "buildMatchPatternFn", "args", "string", "options", "matchResult", "matchedString", "parseResult", "value", "rest", "matchOrdinalNumberPattern", "parseOrdinalNumberPattern", "matchEraPatterns", "parseEraPatterns", "matchQuarterPatterns", "parseQuarterPatterns", "matchMonthPatterns", "parseMonthPatterns", "matchDayPatterns", "parseDayPatterns", "matchDayPeriodPatterns", "parseDayPeriodPatterns", "match", "buildMatchPatternFn", "value", "buildMatchFn", "index", "match_default", "locale", "formatDistance_default", "formatLong_default", "formatRelative_default", "localize_default", "match_default", "en_US_default", "defaultLocale_default", "en_US_default", "formattingTokensRegExp", "longFormattingTokensRegExp", "escapedStringRegExp", "doubleQuoteRegExp", "unescapedLatinCharacterRegExp", "format", "dirtyDate", "dirtyFormatStr", "options", "_ref", "_options$locale", "_ref2", "_ref3", "_ref4", "_options$firstWeekCon", "_options$locale2", "_options$locale2$opti", "_defaultOptions$local", "_defaultOptions$local2", "_ref5", "_ref6", "_ref7", "_options$weekStartsOn", "_options$locale3", "_options$locale3$opti", "_defaultOptions$local3", "_defaultOptions$local4", "requiredArgs", "formatStr", "defaultOptions", "getDefaultOptions", "locale", "defaultLocale_default", "firstWeekContainsDate", "toInteger", "weekStartsOn", "originalDate", "toDate", "isValid", "timezoneOffset", "getTimezoneOffsetInMilliseconds", "utcDate", "subMilliseconds", "formatterOptions", "result", "substring", "firstCharacter", "longFormatter", "longFormatters_default", "cleanEscapedString", "formatter", "formatters_default", "isProtectedWeekYearToken", "throwProtectedError", "isProtectedDayOfYearToken", "input", "matched", "assign", "target", "object", "property", "_arrayLikeToArray", "r", "a", "e", "_unsupportedIterableToArray", "r", "a", "_arrayLikeToArray", "t", "_createForOfIteratorHelper", "r", "e", "t", "_unsupportedIterableToArray", "_n", "F", "o", "a", "u", "_assertThisInitialized", "_setPrototypeOf", "t", "e", "_inherits", "t", "e", "_setPrototypeOf", "_getPrototypeOf", "t", "_isNativeReflectConstruct", "t", "_possibleConstructorReturn", "t", "e", "_typeof", "_assertThisInitialized", "_createSuper", "t", "r", "_isNativeReflectConstruct", "e", "o", "_getPrototypeOf", "s", "_possibleConstructorReturn", "_classCallCheck", "a", "n", "toPrimitive", "t", "r", "_typeof", "e", "i", "toPropertyKey", "t", "i", "toPrimitive", "_typeof", "_defineProperties", "r", "t", "o", "toPropertyKey", "_createClass", "_defineProperty", "r", "t", "toPropertyKey", "TIMEZONE_UNIT_PRIORITY", "Setter", "_classCallCheck", "_defineProperty", "_createClass", "_utcDate", "_options", "ValueSetter", "_Setter", "_inherits", "_super", "_createSuper", "value", "validateValue", "setValue", "priority", "subPriority", "_this", "utcDate", "options", "flags", "DateToSystemTimezoneSetter", "_Setter2", "_super2", "_this2", "_len", "args", "_key", "_assertThisInitialized", "date", "convertedDate", "Parser", "_classCallCheck", "_defineProperty", "_createClass", "dateString", "token", "match", "options", "result", "ValueSetter", "_utcDate", "_value", "_options", "EraParser", "_Parser", "_inherits", "_super", "_createSuper", "_this", "_classCallCheck", "_len", "args", "_key", "_defineProperty", "_assertThisInitialized", "_createClass", "dateString", "token", "match", "date", "flags", "value", "Parser", "numericPatterns", "timezonePatterns", "mapValue", "parseFnResult", "mapFn", "parseNumericPattern", "pattern", "dateString", "matchResult", "parseTimezonePattern", "sign", "hours", "minutes", "seconds", "millisecondsInHour", "millisecondsInMinute", "millisecondsInSecond", "parseAnyDigitsSigned", "numericPatterns", "parseNDigits", "n", "parseNDigitsSigned", "dayPeriodEnumToHours", "dayPeriod", "normalizeTwoDigitYear", "twoDigitYear", "currentYear", "isCommonEra", "absCurrentYear", "result", "rangeEnd", "rangeEndCentury", "isPreviousCentury", "isLeapYearIndex", "year", "YearParser", "_Parser", "_inherits", "_super", "_createSuper", "_this", "_classCallCheck", "_len", "args", "_key", "_defineProperty", "_assertThisInitialized", "_createClass", "dateString", "token", "match", "valueCallback", "year", "mapValue", "parseNDigits", "_date", "value", "date", "flags", "currentYear", "normalizedTwoDigitYear", "normalizeTwoDigitYear", "Parser", "LocalWeekYearParser", "_Parser", "_inherits", "_super", "_createSuper", "_this", "_classCallCheck", "_len", "args", "_key", "_defineProperty", "_assertThisInitialized", "_createClass", "dateString", "token", "match", "valueCallback", "year", "mapValue", "parseNDigits", "_date", "value", "date", "flags", "options", "currentYear", "getUTCWeekYear", "normalizedTwoDigitYear", "normalizeTwoDigitYear", "startOfUTCWeek", "Parser", "ISOWeekYearParser", "_Parser", "_inherits", "_super", "_createSuper", "_this", "_classCallCheck", "_len", "args", "_key", "_defineProperty", "_assertThisInitialized", "_createClass", "dateString", "token", "parseNDigitsSigned", "_date", "_flags", "value", "firstWeekOfYear", "startOfUTCISOWeek", "Parser", "ExtendedYearParser", "_Parser", "_inherits", "_super", "_createSuper", "_this", "_classCallCheck", "_len", "args", "_key", "_defineProperty", "_assertThisInitialized", "_createClass", "dateString", "token", "parseNDigitsSigned", "date", "_flags", "value", "Parser", "QuarterParser", "_Parser", "_inherits", "_super", "_createSuper", "_this", "_classCallCheck", "_len", "args", "_key", "_defineProperty", "_assertThisInitialized", "_createClass", "dateString", "token", "match", "parseNDigits", "_date", "value", "date", "_flags", "Parser", "StandAloneQuarterParser", "_Parser", "_inherits", "_super", "_createSuper", "_this", "_classCallCheck", "_len", "args", "_key", "_defineProperty", "_assertThisInitialized", "_createClass", "dateString", "token", "match", "parseNDigits", "_date", "value", "date", "_flags", "Parser", "MonthParser", "_Parser", "_inherits", "_super", "_createSuper", "_this", "_classCallCheck", "_len", "args", "_key", "_defineProperty", "_assertThisInitialized", "_createClass", "dateString", "token", "match", "valueCallback", "value", "mapValue", "parseNumericPattern", "numericPatterns", "parseNDigits", "_date", "date", "_flags", "Parser", "StandAloneMonthParser", "_Parser", "_inherits", "_super", "_createSuper", "_this", "_classCallCheck", "_len", "args", "_key", "_defineProperty", "_assertThisInitialized", "_createClass", "dateString", "token", "match", "valueCallback", "value", "mapValue", "parseNumericPattern", "numericPatterns", "parseNDigits", "_date", "date", "_flags", "Parser", "setUTCWeek", "dirtyDate", "dirtyWeek", "options", "requiredArgs", "date", "toDate", "week", "toInteger", "diff", "getUTCWeek", "LocalWeekParser", "_Parser", "_inherits", "_super", "_createSuper", "_this", "_classCallCheck", "_len", "args", "_key", "_defineProperty", "_assertThisInitialized", "_createClass", "dateString", "token", "match", "parseNumericPattern", "numericPatterns", "parseNDigits", "_date", "value", "date", "_flags", "options", "startOfUTCWeek", "setUTCWeek", "Parser", "setUTCISOWeek", "dirtyDate", "dirtyISOWeek", "requiredArgs", "date", "toDate", "isoWeek", "toInteger", "diff", "getUTCISOWeek", "ISOWeekParser", "_Parser", "_inherits", "_super", "_createSuper", "_this", "_classCallCheck", "_len", "args", "_key", "_defineProperty", "_assertThisInitialized", "_createClass", "dateString", "token", "match", "parseNumericPattern", "numericPatterns", "parseNDigits", "_date", "value", "date", "_flags", "startOfUTCISOWeek", "setUTCISOWeek", "Parser", "DAYS_IN_MONTH", "DAYS_IN_MONTH_LEAP_YEAR", "DateParser", "_Parser", "_inherits", "_super", "_createSuper", "_this", "_classCallCheck", "_len", "args", "_key", "_defineProperty", "_assertThisInitialized", "_createClass", "dateString", "token", "match", "parseNumericPattern", "numericPatterns", "parseNDigits", "date", "value", "year", "isLeapYear", "isLeapYearIndex", "month", "_flags", "Parser", "DayOfYearParser", "_Parser", "_inherits", "_super", "_createSuper", "_this", "_classCallCheck", "_len", "args", "_key", "_defineProperty", "_assertThisInitialized", "_createClass", "dateString", "token", "match", "parseNumericPattern", "numericPatterns", "parseNDigits", "date", "value", "year", "isLeapYear", "isLeapYearIndex", "_flags", "Parser", "setUTCDay", "dirtyDate", "dirtyDay", "options", "_ref", "_ref2", "_ref3", "_options$weekStartsOn", "_options$locale", "_options$locale$optio", "_defaultOptions$local", "_defaultOptions$local2", "requiredArgs", "defaultOptions", "getDefaultOptions", "weekStartsOn", "toInteger", "date", "toDate", "day", "currentDay", "remainder", "dayIndex", "diff", "DayParser", "_Parser", "_inherits", "_super", "_createSuper", "_this", "_classCallCheck", "_len", "args", "_key", "_defineProperty", "_assertThisInitialized", "_createClass", "dateString", "token", "match", "_date", "value", "date", "_flags", "options", "setUTCDay", "Parser", "LocalDayParser", "_Parser", "_inherits", "_super", "_createSuper", "_this", "_classCallCheck", "_len", "args", "_key", "_defineProperty", "_assertThisInitialized", "_createClass", "dateString", "token", "match", "options", "valueCallback", "value", "wholeWeekDays", "mapValue", "parseNDigits", "_date", "date", "_flags", "setUTCDay", "Parser", "StandAloneLocalDayParser", "_Parser", "_inherits", "_super", "_createSuper", "_this", "_classCallCheck", "_len", "args", "_key", "_defineProperty", "_assertThisInitialized", "_createClass", "dateString", "token", "match", "options", "valueCallback", "value", "wholeWeekDays", "mapValue", "parseNDigits", "_date", "date", "_flags", "setUTCDay", "Parser", "setUTCISODay", "dirtyDate", "dirtyDay", "requiredArgs", "day", "toInteger", "weekStartsOn", "date", "toDate", "currentDay", "remainder", "dayIndex", "diff", "ISODayParser", "_Parser", "_inherits", "_super", "_createSuper", "_this", "_classCallCheck", "_len", "args", "_key", "_defineProperty", "_assertThisInitialized", "_createClass", "dateString", "token", "match", "valueCallback", "value", "parseNDigits", "mapValue", "_date", "date", "_flags", "setUTCISODay", "Parser", "AMPMParser", "_Parser", "_inherits", "_super", "_createSuper", "_this", "_classCallCheck", "_len", "args", "_key", "_defineProperty", "_assertThisInitialized", "_createClass", "dateString", "token", "match", "date", "_flags", "value", "dayPeriodEnumToHours", "Parser", "AMPMMidnightParser", "_Parser", "_inherits", "_super", "_createSuper", "_this", "_classCallCheck", "_len", "args", "_key", "_defineProperty", "_assertThisInitialized", "_createClass", "dateString", "token", "match", "date", "_flags", "value", "dayPeriodEnumToHours", "Parser", "DayPeriodParser", "_Parser", "_inherits", "_super", "_createSuper", "_this", "_classCallCheck", "_len", "args", "_key", "_defineProperty", "_assertThisInitialized", "_createClass", "dateString", "token", "match", "date", "_flags", "value", "dayPeriodEnumToHours", "Parser", "Hour1to12Parser", "_Parser", "_inherits", "_super", "_createSuper", "_this", "_classCallCheck", "_len", "args", "_key", "_defineProperty", "_assertThisInitialized", "_createClass", "dateString", "token", "match", "parseNumericPattern", "numericPatterns", "parseNDigits", "_date", "value", "date", "_flags", "isPM", "Parser", "Hour0to23Parser", "_Parser", "_inherits", "_super", "_createSuper", "_this", "_classCallCheck", "_len", "args", "_key", "_defineProperty", "_assertThisInitialized", "_createClass", "dateString", "token", "match", "parseNumericPattern", "numericPatterns", "parseNDigits", "_date", "value", "date", "_flags", "Parser", "Hour0To11Parser", "_Parser", "_inherits", "_super", "_createSuper", "_this", "_classCallCheck", "_len", "args", "_key", "_defineProperty", "_assertThisInitialized", "_createClass", "dateString", "token", "match", "parseNumericPattern", "numericPatterns", "parseNDigits", "_date", "value", "date", "_flags", "isPM", "Parser", "Hour1To24Parser", "_Parser", "_inherits", "_super", "_createSuper", "_this", "_classCallCheck", "_len", "args", "_key", "_defineProperty", "_assertThisInitialized", "_createClass", "dateString", "token", "match", "parseNumericPattern", "numericPatterns", "parseNDigits", "_date", "value", "date", "_flags", "hours", "Parser", "MinuteParser", "_Parser", "_inherits", "_super", "_createSuper", "_this", "_classCallCheck", "_len", "args", "_key", "_defineProperty", "_assertThisInitialized", "_createClass", "dateString", "token", "match", "parseNumericPattern", "numericPatterns", "parseNDigits", "_date", "value", "date", "_flags", "Parser", "SecondParser", "_Parser", "_inherits", "_super", "_createSuper", "_this", "_classCallCheck", "_len", "args", "_key", "_defineProperty", "_assertThisInitialized", "_createClass", "dateString", "token", "match", "parseNumericPattern", "numericPatterns", "parseNDigits", "_date", "value", "date", "_flags", "Parser", "FractionOfSecondParser", "_Parser", "_inherits", "_super", "_createSuper", "_this", "_classCallCheck", "_len", "args", "_key", "_defineProperty", "_assertThisInitialized", "_createClass", "dateString", "token", "valueCallback", "value", "mapValue", "parseNDigits", "date", "_flags", "Parser", "ISOTimezoneWithZParser", "_Parser", "_inherits", "_super", "_createSuper", "_this", "_classCallCheck", "_len", "args", "_key", "_defineProperty", "_assertThisInitialized", "_createClass", "dateString", "token", "parseTimezonePattern", "timezonePatterns", "date", "flags", "value", "Parser", "ISOTimezoneParser", "_Parser", "_inherits", "_super", "_createSuper", "_this", "_classCallCheck", "_len", "args", "_key", "_defineProperty", "_assertThisInitialized", "_createClass", "dateString", "token", "parseTimezonePattern", "timezonePatterns", "date", "flags", "value", "Parser", "TimestampSecondsParser", "_Parser", "_inherits", "_super", "_createSuper", "_this", "_classCallCheck", "_len", "args", "_key", "_defineProperty", "_assertThisInitialized", "_createClass", "dateString", "parseAnyDigitsSigned", "_date", "_flags", "value", "Parser", "TimestampMillisecondsParser", "_Parser", "_inherits", "_super", "_createSuper", "_this", "_classCallCheck", "_len", "args", "_key", "_defineProperty", "_assertThisInitialized", "_createClass", "dateString", "parseAnyDigitsSigned", "_date", "_flags", "value", "Parser", "parsers", "EraParser", "YearParser", "LocalWeekYearParser", "ISOWeekYearParser", "ExtendedYearParser", "QuarterParser", "StandAloneQuarterParser", "MonthParser", "StandAloneMonthParser", "LocalWeekParser", "ISOWeekParser", "DateParser", "DayOfYearParser", "DayParser", "LocalDayParser", "StandAloneLocalDayParser", "ISODayParser", "AMPMParser", "AMPMMidnightParser", "DayPeriodParser", "Hour1to12Parser", "Hour0to23Parser", "Hour0To11Parser", "Hour1To24Parser", "MinuteParser", "SecondParser", "FractionOfSecondParser", "ISOTimezoneWithZParser", "ISOTimezoneParser", "TimestampSecondsParser", "TimestampMillisecondsParser", "formattingTokensRegExp", "longFormattingTokensRegExp", "escapedStringRegExp", "doubleQuoteRegExp", "notWhitespaceRegExp", "unescapedLatinCharacterRegExp", "parse", "dirtyDateString", "dirtyFormatString", "dirtyReferenceDate", "options", "_ref", "_options$locale", "_ref2", "_ref3", "_ref4", "_options$firstWeekCon", "_options$locale2", "_options$locale2$opti", "_defaultOptions$local", "_defaultOptions$local2", "_ref5", "_ref6", "_ref7", "_options$weekStartsOn", "_options$locale3", "_options$locale3$opti", "_defaultOptions$local3", "_defaultOptions$local4", "requiredArgs", "dateString", "formatString", "defaultOptions", "getDefaultOptions", "locale", "defaultLocale_default", "firstWeekContainsDate", "toInteger", "weekStartsOn", "toDate", "subFnOptions", "setters", "DateToSystemTimezoneSetter", "tokens", "substring", "firstCharacter", "longFormatters_default", "longFormatter", "usedTokens", "_iterator", "_createForOfIteratorHelper", "_step", "_loop", "token", "isProtectedWeekYearToken", "throwProtectedError", "isProtectedDayOfYearToken", "parser", "parsers", "incompatibleTokens", "incompatibleToken", "usedToken", "parseResult", "cleanEscapedString", "_ret", "_typeof", "err", "uniquePrioritySetters", "setter", "a", "b", "priority", "index", "array", "setterArray", "date", "utcDate", "subMilliseconds", "getTimezoneOffsetInMilliseconds", "flags", "_iterator2", "_step2", "result", "assign", "input", "startOfHour", "dirtyDate", "requiredArgs", "date", "toDate", "startOfSecond", "dirtyDate", "requiredArgs", "date", "toDate", "parseISO", "argument", "options", "_options$additionalDi", "requiredArgs", "additionalDigits", "toInteger", "dateStrings", "splitDateString", "date", "parseYearResult", "parseYear", "parseDate", "timestamp", "time", "offset", "parseTime", "parseTimezone", "dirtyDate", "result", "patterns", "dateRegex", "timeRegex", "timezoneRegex", "dateString", "array", "timeString", "token", "regex", "captures", "year", "century", "isWeekDate", "dayOfYear", "parseDateUnit", "month", "day", "week", "dayOfWeek", "validateWeekDate", "dayOfISOWeekYear", "validateDate", "validateDayOfYearDate", "value", "hours", "parseTimeUnit", "minutes", "seconds", "validateTime", "millisecondsInHour", "millisecondsInMinute", "timezoneString", "sign", "validateTimezone", "isoWeekYear", "fourthOfJanuaryDay", "diff", "daysInMonths", "isLeapYearIndex", "_year", "_hours", "FORMATS", "adapters", "value", "fmt", "type", "toDate", "parse", "parseISO", "isValid", "time", "format", "amount", "unit", "addMilliseconds", "addSeconds", "addMinutes", "addHours", "addDays", "addWeeks", "addMonths", "addQuarters", "addYears", "max", "min", "differenceInMilliseconds", "differenceInSeconds", "differenceInMinutes", "differenceInHours", "differenceInDays", "differenceInWeeks", "differenceInMonths", "differenceInQuarters", "differenceInYears", "weekday", "startOfSecond", "startOfMinute", "startOfHour", "startOfDay", "startOfWeek", "startOfMonth", "startOfQuarter", "startOfYear", "endOfSecond", "endOfMinute", "endOfHour", "endOfDay", "endOfWeek", "endOfMonth", "endOfQuarter", "endOfYear", "Chartkick", "auto_default", "import_actioncable", "consumer_default", "channel_code", "element", "consumer_default", "data", "html", "emptyWrapper", "channel_code", "element", "consumer_default", "data", "html", "emptyWrapper", "element", "consumer_default", "data", "item", "html", "body", "EventListener", "eventTarget", "eventName", "eventOptions", "binding", "event", "extendedEvent", "extendEvent", "left", "right", "leftIndex", "rightIndex", "stopImmediatePropagation", "Dispatcher", "application", "eventListener", "listeners", "map", "clearEventListeners", "error", "message", "detail", "eventListenerMap", "cacheKey", "parts", "key", "defaultActionDescriptorFilters", "value", "element", "descriptorPattern", "parseActionDescriptorString", "descriptorString", "matches", "keyFilter", "parseEventTarget", "parseEventOptions", "eventTargetName", "options", "token", "stringifyEventTarget", "camelize", "_", "char", "namespaceCamelize", "capitalize", "dasherize", "tokenize", "isSomething", "object", "hasProperty", "property", "allModifiers", "Action", "index", "descriptor", "schema", "getDefaultEventNameForElement", "eventFilter", "filters", "standardFilter", "params", "pattern", "name", "match", "typecast", "meta", "ctrl", "alt", "shift", "modifier", "defaultEventNames", "tagName", "Binding", "context", "action", "actionEvent", "method", "actionDescriptorFilters", "controller", "passes", "filter", "target", "currentTarget", "identifier", "ElementObserver", "delegate", "mutations", "callback", "mutation", "attributeName", "nodes", "node", "tree", "processor", "AttributeObserver", "add", "fetch", "del", "prune", "values", "Multimap", "set", "size", "_key", "_values", "SelectorObserver", "element", "selector", "delegate", "details", "ElementObserver", "Multimap", "callback", "matches", "tree", "match", "selectors", "_attributeName", "matchedBefore", "StringMapObserver", "mutations", "attributeName", "mutation", "oldValue", "key", "value", "attribute", "TokenListObserver", "AttributeObserver", "unmatchedTokens", "matchedTokens", "tokens", "token", "previousTokens", "currentTokens", "firstDifferingIndex", "zip", "previousToken", "currentToken", "tokensAreEqual", "tokenString", "parseTokenString", "content", "index", "left", "right", "length", "_", "ValueListObserver", "parseResult", "valuesByToken", "error", "BindingObserver", "context", "action", "binding", "Binding", "Action", "ValueObserver", "receiver", "descriptor", "name", "defaultValue", "writer", "rawValue", "rawOldValue", "changedMethodName", "changedMethod", "valueDescriptorMap", "descriptors", "hasMethodName", "capitalize", "TargetObserver", "_a", "readInheritableStaticArrayValues", "constructor", "propertyName", "ancestors", "getAncestorsForConstructor", "values", "getOwnStaticArrayValues", "readInheritableStaticObjectPairs", "pairs", "getOwnStaticObjectPairs", "definition", "OutletObserver", "outletName", "observer", "_selector", "outlet", "hasOutlet", "hasOutletController", "_element", "selectorObserver", "attributeObserver", "dependencies", "module", "identifiers", "Context", "scope", "functionName", "detail", "identifier", "controller", "message", "namespaceCamelize", "methodName", "args", "bless", "shadow", "getBlessedProperties", "properties", "shadowConstructor", "extend", "shadowProperties", "getShadowProperties", "blessedProperties", "blessing", "prototype", "getOwnKeys", "getShadowedDescriptor", "shadowingDescriptor", "object", "extendWithReflect", "extended", "testReflectExtension", "b", "blessDefinition", "Module", "application", "ClassMap", "tokenize", "DataMap", "dasherize", "Guide", "logger", "warnedKeys", "attributeValueContainsToken", "TargetSet", "targetName", "targetNames", "target", "targets", "targetDescriptor", "revisedAttributeName", "OutletSet", "controllerElement", "outletNames", "outlets", "controllerAttribute", "Scope", "_Scope", "schema", "ScopeObserver", "scopesByIdentifier", "referenceCount", "Router", "contexts", "afterLoad", "defaultSchema", "objectFromEntries", "c", "n", "array", "memo", "k", "v", "Application", "Dispatcher", "defaultActionDescriptorFilters", "domReady", "controllerConstructor", "filter", "head", "rest", "resolve", "ClassPropertiesBlessing", "classDefinition", "propertiesForClassDefinition", "classes", "OutletPropertiesBlessing", "outletDefinition", "propertiesForOutletDefinition", "getOutletController", "getControllerAndEnsureConnectedScope", "outletController", "camelizedName", "outletElement", "TargetPropertiesBlessing", "targetDefinition", "propertiesForTargetDefinition", "ValuePropertiesBlessing", "valueDefinitionPairs", "propertyDescriptorMap", "result", "valueDefinitionPair", "valueDescriptor", "parseValueDefinitionPair", "propertiesForValueDefinitionPair", "read", "write", "typeDefinition", "valueDescriptorForTokenAndTypeDefinition", "parseValueTypeConstant", "constant", "parseValueTypeDefault", "parseValueTypeObject", "payload", "typeObject", "hasType", "isSomething", "hasDefault", "fullObject", "onlyType", "onlyDefault", "typeFromObject", "typeFromDefaultValue", "propertyPath", "parseValueTypeDefinition", "typeFromConstant", "type", "defaultValueForDefinition", "defaultValuesByType", "hasProperty", "constantFromType", "camelize", "readers", "writers", "writeString", "writeJSON", "Controller", "_identifier", "_application", "eventName", "prefix", "bubbles", "cancelable", "event", "product_filter_controller_exports", "__export", "product_filter_controller_default", "debounce", "func", "delay", "debounceTimer", "context", "args", "loading", "loadingText", "size", "product_filter_controller_default", "Controller", "debounce", "loading", "searchTerm", "filtered", "p", "text", "noResultsDiv", "div", "item", "searchIndex", "i", "professional_select_controller_exports", "__export", "professional_select_controller_default", "professional_select_controller_default", "Controller", "bookingContainer", "loading", "baseUrl", "merchantId", "video_controller_exports", "__export", "video_controller_default", "e", "n", "r", "i", "t", "o", "a", "s", "c", "l", "u", "d", "h", "p", "f", "g", "v", "m", "y", "_", "b", "w", "S", "j", "k", "E", "C", "M", "T", "O", "P", "D", "A", "x", "L", "I", "N", "R", "B", "F", "U", "V", "_V", "J", "$", "G", "q", "Y", "z", "W", "H", "Q", "K", "X", "Z", "ee", "te", "ue", "ne", "re", "ie", "oe", "ae", "se", "ce", "le", "de", "he", "pe", "fe", "ge", "ve", "me", "ye", "_e", "be", "we", "Se", "ke", "Ee", "Ce", "Me", "Te", "Oe", "Pe", "Ae", "De", "je", "xe", "Le", "Ie", "Ne", "Be", "Re", "Fe", "Ue", "Je", "Ve", "$e", "Ge", "qe", "Ye", "ze", "We", "He", "Qe", "Ke", "Xe", "Ze", "et", "tt", "rt", "ut", "ot", "it", "at", "dt", "ht", "nt", "st", "ct", "lt", "pt", "ft", "gt", "vt", "mt", "yt", "_t", "wt", "bt", "St", "kt", "Ct", "Et", "_Ct", "Mt", "Tt", "Ot", "Pt", "At", "Dt", "jt", "xt", "Lt", "It", "Nt", "Rt", "Bt", "Ft", "Ut", "Vt", "Jt", "$t", "Gt", "qt", "Yt", "zt", "Wt", "Ht", "_Ht", "Xt", "Qt", "Kt", "Zt", "en", "tn", "rn", "nn", "an", "sn", "on", "cn", "ln", "un", "dn", "hn", "pn", "fn", "gn", "vn", "_vn", "yn", "mn", "_n", "bn", "wn", "Sn", "kn", "En", "_En", "Cn", "Mn", "Tn", "_Tn", "On", "Pn", "An", "Dn", "jn", "xn", "Ln", "Nn", "Bn", "In", "Rn", "Fn", "Un", "Vn", "Jn", "$n", "Gn", "_Gn", "qn", "Yn", "zn", "Wn", "Hn", "Qn", "Kn", "Xn", "_Xn", "Zn", "er", "rr", "tr", "nr", "ir", "or", "_or", "ar", "sr", "cr", "lr", "ur", "_ur", "dr", "_dr", "hr", "_hr", "fr", "pr", "gr", "vr", "mr", "yr", "_r", "br", "wr", "Sr", "kr", "Er", "Cr", "Mr", "xr", "Lr", "Rr", "Br", "ri", "ii", "oi", "ai", "si", "ci", "li", "ui", "di", "hi", "pi", "fi", "gi", "vi", "mi", "yi", "_i", "bi", "Si", "ki", "Ei", "Ci", "Mi", "Ti", "Oi", "Pi", "Ai", "Di", "ji", "xi", "Li", "Ii", "Ni", "Ri", "Bi", "Fi", "Ui", "Vi", "Ji", "$i", "Gi", "qi", "Yi", "zi", "Wi", "Hi", "Qi", "Ki", "Xi", "Zi", "eo", "to", "no", "ro", "io", "oo", "ao", "so", "co", "lo", "uo", "ho", "po", "fo", "go", "vo", "mo", "yo", "_o", "bo", "wo", "So", "ko", "Eo", "Co", "Mo", "Io", "No", "To", "Oo", "Po", "Lo", "e", "t", "Fo", "Ro", "Uo", "Ao", "Do", "xo", "jo", "n", "r", "Bo", "i", "o", "a", "Vo", "Q", "Jo", "$o", "d", "Go", "u", "l", "qo", "c", "H", "s", "Yo", "zo", "Wo", "m", "Ho", "Qo", "Ko", "Xo", "I", "Zo", "ea", "ta", "na", "ra", "ia", "sa", "oa", "aa", "ca", "la", "p", "X", "ua", "pa", "da", "ha", "fa", "ga", "va", "ma", "ya", "_a", "ba", "wa", "Sa", "ka", "Ea", "Ca", "Ma", "Ta", "Oa", "Pa", "Da", "Aa", "ja", "xa", "La", "Ia", "Na", "Ra", "Ba", "Fa", "Ua", "Va", "Ja", "$a", "Ga", "qa", "Ya", "za", "Wa", "Ha", "Qa", "Ka", "Xa", "_s", "ms", "ys", "bs", "ds", "hs", "vs", "ps", "fs", "gs", "Za", "g", "h", "es", "te", "f", "v", "y", "_", "b", "w", "S", "k", "E", "C", "M", "T", "O", "P", "D", "j", "x", "L", "N", "B", "F", "U", "V", "J", "$", "G", "q", "Y", "z", "Z", "ee", "br", "xr", "Es", "ls", "ss", "ns", "Lr", "Cr", "Mr", "is", "ts", "us", "os", "rs", "wr", "ai", "Sr", "ci", "si", "K", "Er", "kr", "di", "ks", "Ss", "ws", "as", "cs", "oi", "ri", "ii", "hi", "fi", "gi", "vi", "mi", "yi", "_i", "pi", "bi", "li", "ui", "Hn", "Kn", "_r", "tn", "W", "Rr", "Br", "video_controller_default", "Controller", "es", "callUrl", "options", "MY_IFRAME", "bookings_controller_exports", "__export", "bookings_controller_default", "bookings_controller_default", "Controller", "timeOfDay", "slotMapping", "ts", "index", "visible", "x", "calendar_controller_exports", "__export", "calendar_controller_default", "calendar_controller_default", "Controller", "initialDatesHeight", "loading", "direction", "form", "csrfTokenMetaTag", "csrfToken", "urlParams", "response", "result", "dt", "dateId", "slotsSelectionDiv", "rect", "scrollTop", "scrollLeft", "position", "timeOfDay", "slotMapping", "ts", "index", "visible", "x", "dateInput", "dates", "codes_controller_exports", "__export", "codes_controller_default", "import_ujs", "codes_controller_default", "Controller", "event", "i", "form", "formData", "Rails", "response", "current_total_text", "full_total_text", "error", "eventOrBool", "fields", "field", "confirmations_controller_exports", "__export", "confirmations_controller_default", "empty_default", "data", "confirmations_controller_default", "Controller", "_event", "clickable", "form", "formData", "csrfTokenMetaTag", "csrfToken", "filtered", "errors", "field", "empty_default", "htmlBtn", "loading", "response", "result", "i", "hiddenInput", "slotsSelector", "emptyState", "dateInput", "products", "x", "timeSlots", "dates", "collection", "cookie_consent_controller_exports", "__export", "cookie_consent_controller_default", "e", "t", "o", "n", "a", "s", "c", "r", "i", "l", "d", "f", "_", "u", "p", "m", "g", "b", "v", "y", "h", "C", "w", "S", "x", "M", "D", "k", "r", "E", "o", "A", "N", "H", "V", "I", "L", "j", "F", "O", "R", "o", "m", "B", "C", "G", "e", "b", "J", "S", "t", "n", "a", "U", "c", "r", "i", "l", "f", "_", "D", "u", "M", "g", "v", "y", "h", "E", "d", "$", "z", "q", "K", "V", "j", "Q", "W", "X", "x", "s", "Y", "Z", "ee", "F", "te", "oe", "p", "N", "A", "k", "ne", "ae", "se", "ce", "re", "ie", "le", "de", "fe", "_e", "ue", "pe", "me", "w", "ge", "L", "H", "T", "I", "be", "P", "ve", "ye", "he", "Ce", "we", "Se", "xe", "Me", "De", "Te", "ke", "Ee", "Ae", "Ne", "He", "Ve", "Ie", "je", "o", "m", "b", "Oe", "n", "m", "ye", "Je", "Me", "x", "K", "z", "V", "o", "E", "i", "$", "ee", "_", "Re", "j", "Be", "ge", "u", "Ge", "e", "We", "t", "a", "b", "s", "c", "Ie", "je", "Ve", "We", "m", "Xe", "o", "n", "a", "c", "e", "r", "i", "l", "d", "f", "_", "w", "u", "p", "g", "v", "y", "C", "S", "x", "M", "t", "h", "s", "D", "N", "b", "we", "he", "Ce", "Ae", "De", "J", "Se", "U", "Je", "ge", "Me", "ye", "Oe", "oe", "ee", "en_default", "cookie_consent_controller_default", "Controller", "Xe", "cookie", "changedCategories", "changedServices", "modalName", "en_default", "date_picker_controller_exports", "__export", "date_picker_controller_default", "lastItemOf", "arr", "pushUnique", "items", "item", "stringToArray", "str", "separator", "isInRange", "testVal", "min", "max", "minOK", "maxOK", "limitToRange", "val", "createTagRepeat", "tagName", "repeat", "attributes", "index", "html", "openTagSrc", "src", "attr", "next", "optimizeTemplateHTML", "stripTime", "timeValue", "today", "dateValue", "args", "newDate", "addDays", "date", "amount", "addWeeks", "addMonths", "monthsToSet", "expectedMonth", "time", "addYears", "dayDiff", "day", "from", "dayOfTheWeekOf", "baseDate", "dayOfWeek", "weekStart", "baseDay", "calcWeekNum", "dayOfTheWeek", "sameDayOfFirstWeek", "getIsoWeek", "thuOfTheWeek", "firstThu", "calcTraditionalWeekNumber", "startOfFirstWeek", "startOfTheWeek", "weekNum", "weekOneOfNextYear", "getWesternTradWeek", "getMidEasternWeek", "startOfYearPeriod", "years", "year", "regularizeDate", "timeSpan", "useLastDate", "reFormatTokens", "reNonDateParts", "knownFormats", "parseFns", "date", "year", "month", "locale", "newDate", "monthIndex", "monthName", "compareNames", "name", "normalizeMonth", "day", "formatFns", "padZero", "num", "length", "parseFormatString", "format", "separators", "parts", "partFormatters", "token", "partParserKeys", "keys", "key", "part", "dateStr", "dateParts", "dtParts", "index", "origDate", "today", "str", "fn", "lastItemOf", "parseDate", "stripTime", "formatDate", "dateObj", "range", "parseHTML", "html", "getParent", "el", "isActiveElement", "hideElement", "el", "showElement", "emptyChildNodes", "replaceChildNodes", "newChildNodes", "parseHTML", "node", "listenerRegistry", "addEventListener", "removeEventListener", "registerListeners", "keyObj", "listeners", "registered", "listener", "unregisterListeners", "getComposedPath", "node", "path", "parent", "findFromPath", "criteria", "currentTarget", "rest", "findElementInEventPath", "ev", "selector", "el", "base_locales_default", "defaultOptions_default", "defaultLang", "defaultFormat", "defaultWeekStart", "defaultOptions_default", "sanitizeDOW", "dow", "day", "pushUnique", "determineGetWeekMethod", "numberingMode", "weekStart", "getIsoWeek", "getWesternTradWeek", "getMidEasternWeek", "updateWeekStart", "newValue", "config", "weekNumbers", "validateDate", "value", "format", "locale", "origValue", "date", "parseDate", "validateViewId", "max", "viewId", "replaceOptions", "options", "from", "to", "convert", "processOptions", "datepicker", "inOpts", "locales", "rangeEnd", "datesDisabled", "language", "maxDate", "maxView", "minDate", "pickLevel", "startView", "val", "lang", "origLocale", "hasToDisplay", "hasToValue", "validFormatString", "reFormatTokens", "newPickLevel", "minDt", "maxDt", "defaultMinDt", "dateValue", "regularizeDate", "dtsDisabled", "timeValue", "disabled", "dates", "dt", "viewDate", "wkStart", "method", "getWeekNumber", "startOfWeek", "maxNumberOfDates", "newMaxView", "newStartView", "prevArrow", "parseHTML", "nextArrow", "orientation", "x", "y", "key", "defaultShortcutKeys", "createShortcutKeyConfig", "options", "keyDefs", "shortcut", "keyDef", "key", "normalizedDef", "getButtons", "buttonList", "classes", "pickerTemplate_default", "optimizeTemplateHTML", "daysTemplate_default", "optimizeTemplateHTML", "createTagRepeat", "weekNumbersTemplate_default", "optimizeTemplateHTML", "createTagRepeat", "View", "picker", "config", "parseHTML", "options", "switchLabel", "prevButtonDisabled", "nextButtonDisabled", "date", "classList", "pushUnique", "el", "timeValue", "result", "extraClasses", "replaceChildNodes", "content", "cellVal", "selected", "range", "outOfScope", "rangeStart", "rangeEnd", "cellIndex", "DaysView", "View", "picker", "options", "onConstruction", "inner", "parseHTML", "daysTemplate_default", "updateDOW", "locale", "weeksElem", "weekNumbersTemplate_default", "showElement", "hideElement", "el", "index", "dow", "viewDate", "viewYear", "viewMonth", "firstOfMonth", "dateValue", "start", "dayOfTheWeekOf", "dates", "rangepicker", "today", "formatDate", "weekStart", "startOfWeek", "dateOfWeekStart", "addWeeks", "current", "addDays", "dateObj", "day", "extraClasses", "range", "computeMonthRange", "range", "thisYear", "startY", "startM", "endY", "endM", "MonthsView", "View", "picker", "options", "onConstruction", "parseHTML", "createTagRepeat", "ix", "minDateObj", "maxDateObj", "dateValue", "viewDate", "dates", "rangepicker", "selected", "timeValue", "date", "year", "month", "pushUnique", "yrOutOfRange", "isMinYear", "isMaxYear", "el", "index", "regularizeDate", "toTitleCase", "word", "str", "ch", "ix", "YearsView", "View", "picker", "config", "options", "onConstruction", "parseHTML", "createTagRepeat", "startOfYearPeriod", "dateValue", "beforeShow", "viewDate", "first", "last", "dates", "rangepicker", "years", "timeValue", "pushUnique", "el", "index", "current", "date", "regularizeDate", "range", "triggerDatepickerEvent", "datepicker", "type", "options", "goToPrevOrNext", "direction", "config", "picker", "currentView", "viewDate", "newViewDate", "addMonths", "addYears", "limitToRange", "switchView", "viewId", "clearSelection", "goToOrSelectToday", "currentDate", "today", "unfocus", "onBlur", "element", "isActiveElement", "goToSelectedMonthOrYear", "datepicker", "selection", "picker", "viewDate", "viewId", "newDate", "addMonths", "addYears", "onClickViewSwitch", "switchView", "onClickPrevButton", "goToPrevOrNext", "onClickNextButton", "onClickView", "ev", "target", "findElementInEventPath", "id", "isMinView", "data", "onMousedownPicker", "orientClasses", "obj", "key", "toPx", "num", "processPickerOptions", "picker", "options", "showElement", "hideElement", "prevButton", "emptyChildNodes", "node", "nextButton", "minDate", "maxDate", "isInRange", "today", "computeResetViewDate", "datepicker", "dates", "config", "rangeSideIndex", "viewDate", "lastItemOf", "regularizeDate", "limitToRange", "setViewDate", "newDate", "id", "year", "first", "last", "viewYear", "getTextDirection", "el", "findScrollParents", "parent", "getParent", "Picker", "inputField", "template", "pickerTemplate_default", "element", "parseHTML", "header", "main", "footer", "title", "viewSwitch", "todayButton", "clearButton", "controls", "elementClass", "registerListeners", "onMousedownPicker", "onClickView", "onClickViewSwitch", "onClickPrevButton", "onClickNextButton", "goToOrSelectToday", "clearSelection", "DaysView", "MonthsView", "YearsView", "view", "inputDirection", "triggerDatepickerEvent", "classList", "style", "calendarWidth", "calendarHeight", "offsetParent", "inputLeft", "inputTop", "inputRight", "inputBottom", "inputWidth", "inputHeight", "orientX", "orientY", "left", "top", "offsetParentRect", "scrollParent", "scrollAreaLeft", "scrollAreaTop", "scrollAreaRight", "scrollAreaBottom", "scrollParentRect", "adjustment", "labelText", "disabled", "viewId", "currentView", "newViewDate", "quickRender", "oldView", "oldViewDate", "renderMethod", "findNextAvailableOne", "date", "addFn", "increase", "testFn", "min", "max", "isInRange", "newDate", "moveByArrowKey", "datepicker", "direction", "vertical", "picker", "currentView", "step", "viewDate", "addDays", "addMonths", "addYears", "onKeydown", "ev", "config", "editMode", "active", "key", "altKey", "shiftKey", "ctrlOrMetaKey", "cancelEvent", "unfocus", "shortcutKeys", "keyInfo", "shortcut", "item", "keyDef", "prop", "action", "goToPrevOrNext", "switchView", "clearSelection", "goToOrSelectToday", "handleArrowKeyPress", "onFocus", "onMousedown", "el", "isActiveElement", "onClickInput", "onPaste", "onClickOutside", "datepicker", "ev", "element", "picker", "isActiveElement", "pickerElem", "findElementInEventPath", "el", "unfocus", "stringifyDates", "dates", "config", "dt", "formatDate", "processInputDates", "datepicker", "inputDates", "clear", "origDates", "rangeSideIndex", "pickLevel", "maxNumberOfDates", "newDates", "date", "parseDate", "regularizeDate", "isInRange", "refreshUI", "mode", "quickRender", "viewDate", "picker", "inputField", "newView", "setDate", "options", "render", "autohide", "revert", "forceRefresh", "triggerDatepickerEvent", "getOutputConverter", "format", "Datepicker", "element", "rangepicker", "today", "processOptions", "defaultOptions_default", "index", "datepickers", "createShortcutKeyConfig", "initialDates", "stringToArray", "inputDateValues", "Picker", "keydownListener", "onKeydown", "registerListeners", "onFocus", "onMousedown", "onClickInput", "onPaste", "onClickOutside", "lang", "base_locales_default", "dateStr", "newOptions", "isActiveElement", "unregisterListeners", "callback", "args", "opts", "lastArg", "lastItemOf", "resetView", "active", "newViewDate", "target", "forceRender", "date_picker_controller_default", "Controller", "elem", "Datepicker", "form_controller_exports", "__export", "form_controller_default", "form_controller_default", "Controller", "event", "form", "inputs", "missingFields", "listItems", "formInputs", "input", "validations", "_validation", "i", "field", "geolocation_controller_exports", "__export", "geolocation_controller_default", "SET_LS_STATE", "key", "value", "geolocation_controller_default", "Controller", "position", "data", "SET_LS_STATE", "hello_controller_exports", "__export", "hello_controller_default", "hello_controller_default", "Controller", "form_controller_exports", "__export", "form_controller_default", "form_controller_default", "Controller", "formContent", "filtered", "allInputFields", "initialFieldColour", "token", "field", "form", "submitButton", "e", "clickable", "errors", "empty_default", "htmlBtn", "loading", "url", "formData", "response", "result", "collection", "scope", "live_time_controller_exports", "__export", "live_time_controller_default", "live_time_controller_default", "Controller", "now", "hours", "minutes", "formattedTime", "displayEl", "availability_controller_exports", "__export", "availability_controller_default", "addModificationObservers", "nodes", "cb", "callback", "observer", "resizeObserver", "el", "i", "debounce", "func", "wait", "timeout", "args", "later", "getAllParentNodes", "node", "traverse", "toWatch", "index", "parent", "getAreaRect", "area", "zoom", "rect", "handleElementPositionAttribute", "computedStyle", "position", "isPositioned", "DOC_ELEMENT", "scrollElement", "element", "directions", "multiplier", "_element", "prev", "scrollTop", "scrollBot", "scrollLeft", "scrollRight", "Area", "DS", "PS", "event", "prevComputedStyle", "prevRect", "prevComputedBorder", "prevParentNodes", "data", "tempStyles", "calcVect", "x1", "y1", "operator", "x2", "y2", "rect2vect", "vect2rect", "vect", "dimension", "num2vect", "n", "handleKeyboardDragPosDifference", "shiftKey", "keyboardDragSpeed", "key", "dragKeys", "scrollDiff", "posDirection", "increase", "getComputedTranslatePositions", "computed", "match", "values", "getTranslatedPositions", "transform", "split", "getTopLeftPosition", "style", "getStylePosition", "useTranslate", "setStylePosition", "prevTransform", "moveElement", "useTransform", "elementPos", "newPos", "limitDirection", "containerRect", "selectionRect", "direction", "scrollAmount", "delta", "Drag", "k", "_key", "publishData", "isDragging", "isDraggingKeyboard", "add", "elements", "currentPointerVal", "cursorDiff", "currentScrollVal", "isCollision", "el1", "el2", "percent", "element1", "widthPoint", "heightPoint", "ensureArray", "input", "DropZone", "id", "droppables", "settings", "action", "selectedEls", "item", "isAnyInside", "itemRect", "value", "DropZones", "dropZones", "zone", "droppable", "zones", "target", "x", "y", "il", "zoneId", "addClasses", "coordinates", "keyboardCoordinates", "Interaction", "isKeyboardClick", "clickedElement", "PointerStore", "KeyStore", "SelectableSet", "SelectedSet", "scroll_directions", "scroll_multiplier", "multiSelectKeys", "getPointerPos", "PubSub", "eventName", "subscribers", "name", "getDocumentScroll", "getCurrentScroll", "canScroll", "scroll", "_canScroll", "currentScrollTop", "ScrollStore", "zoomScroll", "deleted", "createSelectorElement", "customStyles", "selector", "getSelectorPosition", "initialPointerPos", "pointerPos", "selectorPos", "updateElementStylePos", "pos", "Selector", "pPos", "handleSelection", "force", "multiSelectionToggle", "hoverClassName", "handleUnSelection", "PrevSelectedSet", "inSelection", "inPrevSelection", "getSelectionRect", "elementRect", "Selection", "SelectorArea", "selectionThreshold", "elRects", "selectorRect", "select", "unselect", "filteredSelect", "filteredUnselect", "_", "createSelectorAreaElement", "getOverflowEdges", "tolerance", "edges", "method", "docEl", "methodName", "border", "top", "left", "width", "height", "remove", "initialVal", "wrongTypeWarn", "type", "hydrateHelper", "withFallback", "fallback", "isAvailable", "forceFallback", "expectedString", "expectedNumber", "expectedObject", "expectedBoolean", "expectedArray", "isFallback", "v", "hydrateSettings", "SettingsStore", "init", "_settings", "newValue", "update", "deprecatedNamesMap", "endExtraData", "subscriberAliases", "mapping", "sub_name", "sub_pubs", "addSubscribers", "sub_pub", "publish", "cleanedData", "extra", "DragSelect", "items", "fromSelection", "withCallback", "triggerCallback", "dontAddToSelectables", "els", "removeFromSelectables", "addToSelection", "removeFromSelection", "availability_controller_default", "Controller", "DragSelect", "debounce", "e", "targets", "form", "target", "innerDiv", "merchantId", "loading", "i", "csrfTokenMetaTag", "csrfToken", "response", "result", "updatedItem", "icon", "statusEl", "currMappedStatus", "element", "inner", "status", "documents_upload_controller_exports", "__export", "documents_upload_controller_default", "import_core", "import_dashboard", "import_BasePlugin", "import_cuid2", "import_RateLimitedQueue", "DirectUpload", "ActiveStorageUpload", "BasePlugin", "uppy", "opts", "defaultOptions", "fn", "fileIDs", "files", "fileID", "file", "current", "total", "resolve", "reject", "timer", "error", "directHandlers", "ev", "id", "request", "event", "data", "meta", "upload", "blob", "response", "removedFile", "promises", "i", "action", "timeout", "timeoutHandler", "self", "isDone", "onTimedOut", "aliveTimer", "progress", "done", "documents_upload_controller_default", "Controller", "Uppy", "file", "files", "el", "trigger", "form", "directUploadUrl", "fieldName", "e", "ActiveStorageUpload", "Dashboard", "result", "element", "hiddenField", "defaultImageUrl", "preview", "src", "total", "logo_upload_controller_exports", "__export", "logo_upload_controller_default", "import_core", "import_dashboard", "import_image_editor", "logo_upload_controller_default", "Controller", "Uppy", "el", "trigger", "form", "directUploadUrl", "fieldName", "e", "ActiveStorageUpload", "Dashboard", "ImageEditor", "result", "element", "file", "hiddenField", "defaultImageUrl", "preview", "src", "button", "order_quick_view_controller_exports", "__export", "order_quick_view_controller_default", "import_ujs", "order_quick_view_controller_default", "Controller", "orderId", "Offcanvas", "Rails", "response", "wrapper", "err", "newStatus", "form", "data", "orderItemId", "searchParams", "prop", "rewardables_upload_controller_exports", "__export", "rewardables_upload_controller_default", "import_core", "import_dashboard", "import_image_editor", "rewardables_upload_controller_default", "Controller", "Uppy", "file", "files", "el", "trigger", "form", "directUploadUrl", "fieldName", "e", "ActiveStorageUpload", "Dashboard", "result", "element", "hiddenField", "defaultImageUrl", "preview", "src", "total", "subscription_selector_controller_exports", "__export", "subscription_selector_controller_default", "subscription_selector_controller_default", "Controller", "item", "defaultPrice", "event", "selectedName", "newPeriod", "selected", "monthlyPrice", "yearlyPrice", "voucher_deliverables_controller_exports", "__export", "voucher_deliverables_controller_default", "voucher_deliverables_controller_default", "Controller", "currentType", "eventOrString", "typeValue", "fields", "field", "numberpad_controller_exports", "__export", "numberpad_controller_default", "import_ujs", "numberpad_controller_default", "Controller", "event", "value", "currentValue", "form", "Rails", "response", "_response", "loading", "options", "rewardValue", "option", "target", "partial_toggler_controller_exports", "__export", "partial_toggler_controller_default", "partial_toggler_controller_default", "Controller", "partial", "eventOrString", "selectValue", "name", "collection", "element", "partialName", "referrals_controller_exports", "__export", "referrals_controller_default", "referrals_controller_default", "Controller", "event", "smart_orders_controller_exports", "__export", "smart_orders_controller_default", "GET_SS_STATE", "key", "SET_SS_STATE", "value", "REMOVE_SS_STATE", "SS_ORDER_SESSION_KEYS", "partialMatch", "import_ujs", "smart_orders_controller_default", "Controller", "bsOffcanvas", "Offcanvas", "event", "identifier", "inputEl", "productId", "Rails", "response", "_err", "patronId", "payEl", "modal", "Modal", "sessionId", "cartItems", "GET_SS_STATE", "form", "err", "#getnumberCartProductsOfSameType", "userSessionId", "selectedProductId", "total", "product", "#validateProductQuantity", "productPurchaseLimit", "quantity", "quantityOfSameProductsInCart", "totalNumberOfProductOrders", "isPurchaseLimitValid", "doesProductOrderExceedLimit", "validityForm", "limitPerPurchase", "productOptionNames", "numberOfproductsOfSameType", "formData", "selVal", "strippedId", "pon", "regexString", "pair", "i", "items", "empty_default", "SET_SS_STATE", "e", "totalItemCount", "item", "itemCount", "badgePosition", "ct", "pageLoader", "pageLoaderText", "yieldedContent", "redirectUrl", "partialKey", "SS_ORDER_SESSION_KEYS", "REMOVE_SS_STATE", "type", "content", "newFlash", "newContent", "email", "password", "rememberMe", "firstName", "lastName", "acceptTerms", "searchParams", "prop", "payment_confirmation_controller_exports", "__export", "payment_confirmation_controller_default", "import_ujs", "payment_confirmation_controller_default", "Controller", "fulfillmentType", "loading", "form", "sessionId", "cartItems", "GET_SS_STATE", "Rails", "response", "e", "posthog_controller_exports", "__export", "posthog_controller_default", "Compression", "win", "window", "global", "globalThis", "ArrayProto", "Array", "prototype", "nativeForEach", "forEach", "nativeIndexOf", "indexOf", "navigator", "document", "location", "fetch", "XMLHttpRequest", "AbortController", "userAgent", "assignableWindow", "Config", "DEBUG", "LIB_VERSION", "COPY_AUTOCAPTURE_EVENT", "knownUnsafeEditableEvent", "severityLevels", "breaker", "eachArray", "obj", "iterator", "thisArg", "isArray", "nativeForEach", "forEach", "length", "i", "l", "call", "each", "isNullish", "isFormData", "pair", "entries", "key", "hasOwnProperty", "extend", "_len", "arguments", "args", "Array", "_key2", "source", "prop", "extendArray", "_len2", "_key3", "item", "push", "ownProps", "Object", "keys", "resArray", "trySafe", "fn", "_unused2", "safewrap", "f", "_len3", "_key4", "apply", "this", "e", "logger", "critical", "stripEmptyProperties", "p", "ret", "v", "k", "isString", "_copyAndTruncateStrings", "object", "maxStringLength", "value", "customizer", "isNull", "slice", "COPY_IN_PROGRESS_SET", "Set", "internalDeepCircularCopy", "has", "add", "result", "it", "val", "EXCLUDED_FROM_CROSS_SUBDOMAIN_COOKIE", "isCrossDomainCookie", "documentLocation", "hostname", "lastTwoParts", "split", "join", "excluded", "find", "predicate", "addEventListener", "element", "event", "callback", "options", "capture", "passive", "includes", "str", "needle", "indexOf", "trim", "replace", "stripLeadingDollar", "s", "isMatchingRegex", "pattern", "RegExp", "_unused", "test", "nativeIsArray", "ObjProto", "prototype", "toString", "isFunction", "x", "isObject", "isEmptyObject", "isUndefined", "isEmptyString", "isNumber", "isBoolean", "FormData", "isKnownUnsafeEditableEvent", "knownUnsafeEditableEvent", "_createLogger", "prefix", "_log", "level", "window", "Config", "DEBUG", "assignableWindow", "POSTHOG_DEBUG", "console", "consoleLog", "_key", "info", "warn", "error", "_len4", "_len5", "_key5", "uninitializedWarning", "methodName", "concat", "createLogger", "additionalPrefix", "loadScript", "posthog", "url", "config", "disable_external_dependency_loading", "addScript", "document", "scriptTag", "createElement", "type", "crossOrigin", "src", "onload", "onerror", "prepare_external_dependency_script", "_scripts$0$parentNode", "scripts", "querySelectorAll", "parentNode", "insertBefore", "body", "appendChild", "se", "r", "t", "ne", "oe", "ae", "n", "__PosthogExtensions__", "loadExternalDependency", "kind", "scriptUrlToLoad", "version", "token", "fiveMinutesInMillis", "timestampToNearestFiveMinutes", "Math", "floor", "Date", "now", "requestRouter", "endpointFor", "loadSiteApp", "scriptUrl", "PEOPLE_DISTINCT_ID_KEY", "ALIAS_ID_KEY", "EVENT_TIMERS_KEY", "AUTOCAPTURE_DISABLED_SERVER_SIDE", "HEATMAPS_ENABLED_SERVER_SIDE", "EXCEPTION_CAPTURE_ENABLED_SERVER_SIDE", "WEB_VITALS_ENABLED_SERVER_SIDE", "DEAD_CLICKS_ENABLED_SERVER_SIDE", "WEB_VITALS_ALLOWED_METRICS", "SESSION_RECORDING_ENABLED_SERVER_SIDE", "CONSOLE_LOG_RECORDING_ENABLED_SERVER_SIDE", "SESSION_RECORDING_NETWORK_PAYLOAD_CAPTURE", "SESSION_RECORDING_CANVAS_RECORDING", "SESSION_RECORDING_SAMPLE_RATE", "SESSION_RECORDING_MINIMUM_DURATION", "SESSION_RECORDING_SCRIPT_CONFIG", "SESSION_ID", "SESSION_RECORDING_IS_SAMPLED", "SESSION_RECORDING_URL_TRIGGER_ACTIVATED_SESSION", "SESSION_RECORDING_EVENT_TRIGGER_ACTIVATED_SESSION", "ENABLED_FEATURE_FLAGS", "PERSISTENCE_EARLY_ACCESS_FEATURES", "STORED_PERSON_PROPERTIES_KEY", "STORED_GROUP_PROPERTIES_KEY", "SURVEYS", "SURVEYS_ACTIVATED", "FLAG_CALL_REPORTED", "USER_STATE", "CLIENT_SESSION_PROPS", "CAPTURE_RATE_LIMIT", "INITIAL_CAMPAIGN_PARAMS", "INITIAL_REFERRER_INFO", "INITIAL_PERSON_INFO", "ENABLE_PERSON_PROCESSING", "TOOLBAR_ID", "COOKIELESS_SENTINEL_VALUE", "PERSISTENCE_RESERVED_PROPERTIES", "PERSISTENCE_ACTIVE_FEATURE_FLAGS", "PERSISTENCE_OVERRIDE_FEATURE_FLAGS", "PERSISTENCE_FEATURE_FLAG_PAYLOADS", "PERSISTENCE_OVERRIDE_FEATURE_FLAG_PAYLOADS", "filterActiveFeatureFlags", "featureFlags", "activeFeatureFlags", "PostHogFeatureFlags", "constructor", "instance", "_defineProperty", "featureFlagEventHandlers", "decide", "__preview_remote_config", "_decideCalled", "disableFlags", "_reloadDebouncer", "advanced_disable_feature_flags", "advanced_disable_feature_flags_on_first_load", "_callDecideEndpoint", "hasLoadedFlags", "_hasLoadedFlags", "getFlags", "getFlagVariants", "enabledFlags", "get_property", "overriddenFlags", "finalFlags", "overriddenKeys", "_override_warning", "getFlagPayloads", "flagPayloads", "overriddenPayloads", "finalPayloads", "reloadFeatureFlags", "_reloadingDisabled", "setTimeout", "clearDebouncer", "clearTimeout", "ensureFlagsLoaded", "_requestInFlight", "setAnonymousDistinctId", "anon_distinct_id", "$anon_distinct_id", "setReloadingPaused", "isPaused", "advanced_disable_decide", "_additionalReloadRequested", "data", "distinct_id", "get_distinct_id", "groups", "getGroups", "person_properties", "group_properties", "disable_flags", "_send_request", "method", "compression", "disable_compression", "Compression", "Base64", "timeout", "feature_flag_request_timeout_ms", "response", "_response$json2", "_response$json", "errorsLoading", "statusCode", "_onRemoteConfig", "json", "_flagsLoadedFromRemote", "receivedFeatureFlags", "getFeatureFlag", "_this$instance$persis", "_this$instance$config", "_this$instance$config2", "_this$instance$config3", "_this$instance$config4", "flagValue", "flagReportValue", "flagCallReported", "send_event", "persistence", "register", "$feature_flag", "$feature_flag_response", "$feature_flag_payload", "getFeatureFlagPayload", "$feature_flag_bootstrapped_response", "bootstrap", "$feature_flag_bootstrapped_payload", "featureFlagPayloads", "$used_bootstrap_value", "isFeatureEnabled", "addFeatureFlagsHandler", "handler", "removeFeatureFlagsHandler", "filter", "h", "currentFlags", "currentFlagPayloads", "flags", "$enabled_feature_flags", "newFeatureFlags", "newFeatureFlagPayloads", "errorsWhileComputingFlags", "_objectSpread", "_fireFeatureFlagsCallbacks", "override", "suppressWarning", "overrideFeatureFlags", "overrideOptions", "__loaded", "unregister", "_options$suppressWarn", "Boolean", "flagsObj", "payloads", "onFeatureFlags", "flagVariants", "_prepareFeatureFlagsForCallbacks", "updateEarlyAccessFeatureEnrollment", "isEnrolled", "_this$instance$persis2", "feature", "flagKey", "enrollmentPersonProp", "properties", "$feature_enrollment", "$set", "name", "setPersonPropertiesForFlags", "newFlags", "getEarlyAccessFeatures", "force_reload", "existing_early_access_features", "_this$instance$persis3", "earlyAccessFeatures", "flag", "variantKey", "reduce", "res", "existingProperties", "resetPersonPropertiesForFlags", "setGroupPropertiesForFlags", "groupType", "resetGroupPropertiesForFlags", "group_type", "trunc", "ceil", "Number", "isInteger", "isFinite", "DIGITS", "UUID", "bytes", "TypeError", "unixTsMs", "randA", "randBHi", "randBLo", "RangeError", "Uint8Array", "pow", "text", "charAt", "Error", "clone", "equals", "other", "compareTo", "diff", "sign", "V7Generator", "DefaultRandom", "generate", "generateOrAbort", "timestamp", "valueAfterReset", "ts", "resetCounter", "counter", "fromFieldsV7", "random", "nextUint32", "defaultGenerator", "getRandomValues", "buffer", "UUIDV7_DENY_WEAK_RNG", "crypto", "Uint32Array", "Infinity", "cursor", "uuidv7", "uuidv7obj", "Y1970", "firstNonPublicSubDomain", "DOMAIN_MATCH_REGEX", "chooseCookieDomain", "cross_subdomain", "matchedSubDomain", "cookieJar", "list", "len", "min", "R", "candidate", "candidateCookieValue", "cookie", "originalMatch", "matches", "match", "cookieStore", "is_supported", "msg", "get", "nameEQ", "ca", "c", "substring", "decodeURIComponent", "parse", "JSON", "set", "days", "is_secure", "expires", "secure", "cdomain", "location", "date", "setTime", "getTime", "toUTCString", "new_cookie_val", "encodeURIComponent", "stringify", "_unused3", "remove", "_unused4", "_localStorage_supported", "localStore", "supported", "_unused5", "localStorage", "getItem", "err", "_unused6", "setItem", "removeItem", "COOKIE_PERSISTED_PROPERTIES", "localPlusCookieStore", "cookieProperties", "_unused7", "_unused8", "debug", "undefined", "cookiePersistedProperties", "memoryStorage", "memoryStore", "sessionStorageSupported", "sessionStore", "_unused9", "sessionStorage", "_unused10", "localDomains", "convertToURL", "href", "formDataToQuery", "formdata", "use_val", "use_key", "arg_separator", "tph_arr", "File", "getQueryParam", "param", "keyValuePair", "queryParts", "parts", "maskQueryParams", "maskedParams", "mask", "splitHash", "withoutHash", "hash", "splitQuery", "queryString", "urlWithoutQueryAndHash", "paramStrings", "_getHashParam", "MOBILE", "IOS", "ANDROID", "TABLET", "ANDROID_TABLET", "IPAD", "APPLE", "APPLE_WATCH", "SAFARI", "BLACKBERRY", "SAMSUNG", "SAMSUNG_BROWSER", "SAMSUNG_INTERNET", "CHROME", "CHROME_OS", "CHROME_IOS", "INTERNET_EXPLORER", "INTERNET_EXPLORER_MOBILE", "OPERA", "OPERA_MINI", "EDGE", "MICROSOFT_EDGE", "FIREFOX", "FIREFOX_IOS", "NINTENDO", "PLAYSTATION", "XBOX", "ANDROID_MOBILE", "MOBILE_SAFARI", "WINDOWS", "WINDOWS_PHONE", "NOKIA", "OUYA", "GENERIC", "GENERIC_MOBILE", "toLowerCase", "GENERIC_TABLET", "KONQUEROR", "BROWSER_VERSION_REGEX_SUFFIX", "DEFAULT_BROWSER_VERSION_REGEX", "XBOX_REGEX", "PLAYSTATION_REGEX", "NINTENDO_REGEX", "BLACKBERRY_REGEX", "windowsVersionMap", "safariCheck", "ua", "vendor", "userAgent", "detectBrowser", "user_agent", "FACEBOOK", "versionRegexes", "Mozilla", "osMatchers", "_", "exec", "osVersion", "versionParts", "detectDevice", "URL_REGEX_PREFIX", "PERSONAL_DATA_CAMPAIGN_PARAMS", "CAMPAIGN_PARAMS", "MASKED", "Info", "campaignParams", "customTrackedParams", "maskPersonalDataProperties", "customPersonalDataProperties", "paramsToMask", "_campaignParamsFromUrl", "URL", "customParams", "campaign_keywords", "params", "kwkey", "kw", "_searchEngine", "referrer", "search", "_searchInfoFromReferrer", "keyword", "searchInfo", "browser", "browserVersion", "regexes", "regex", "parseFloat", "browserLanguage", "navigator", "language", "userLanguage", "browserLanguagePrefix", "os", "rgex", "resultOrFn", "device", "deviceType", "referringDomain", "_convertToURL", "host", "referrerInfo", "$referrer", "$referring_domain", "initialPersonInfo", "u", "initialPersonPropsFromInfo", "_convertToURL2", "initial_referrer", "initial_current_url", "props", "$initial_referrer", "$initial_referring_domain", "pathname", "timezone", "Intl", "DateTimeFormat", "resolvedOptions", "timeZone", "timezoneOffset", "getTimezoneOffset", "os_name", "os_version", "$os", "$os_version", "$browser", "$device", "$device_type", "$timezone", "$timezone_offset", "$current_url", "$host", "$pathname", "$raw_user_agent", "$browser_version", "$browser_language", "$browser_language_prefix", "$screen_height", "screen", "height", "$screen_width", "width", "$viewport_height", "innerHeight", "$viewport_width", "innerWidth", "$lib", "$lib_version", "LIB_VERSION", "$insert_id", "$time", "people_properties", "CASE_INSENSITIVE_PERSISTENCE_TYPES", "PostHogPersistence", "campaign_params_saved", "storage", "buildStorage", "load", "update_config", "save", "storage_type", "target", "found", "nativeIndexOf", "disabled", "entry", "expire_days", "clear", "register_once", "default_value", "default_expiry", "hasChanges", "update_campaign_params", "custom_campaign_params", "mask_personal_data_properties", "custom_personal_data_properties", "update_search_keyword", "update_referrer_info", "set_initial_person_info", "get_referrer_info", "get_initial_props", "initialReferrerInfo", "initialPersonProps", "safe_merge", "oldConfig", "set_disabled", "set_cross_subdomain", "set_secure", "newStore", "get_cross_subdomain", "set_event_timer", "event_name", "timers", "remove_event_timer", "set_property", "to", "estimateSize", "sizeable", "_JSON$stringify", "ancestors", "pop", "splitBuffer", "sizeLimit", "size", "half", "firstHalf", "secondHalf", "sessionId", "windowId", "flatMap", "EventType", "EventType2", "IncrementalSource", "IncrementalSource2", "isElementInToolbar", "el", "_el$closest", "Element", "id", "closest", "isElementNode", "nodeType", "isTag", "tag", "tagName", "isTextNode", "isDocumentFragment", "splitClassString", "checkForURLMatches", "urlsList", "some", "getClassNames", "className", "baseVal", "getAttribute", "makeSafeText", "shouldCaptureValue", "getSafeText", "elText", "shouldCaptureElement", "isSensitiveElement", "childNodes", "child", "_makeSafeText", "textContent", "getEventTarget", "srcElement", "_e$target", "shadowRoot", "composedPath", "autocaptureCompatibleElements", "getParentElement", "curEl", "shouldCaptureDomEvent", "autocaptureConfig", "captureOnAnyElement", "allowedEventTypes", "url_allowlist", "url_ignorelist", "dom_event_allowlist", "allowlist", "eventType", "parentIsUsefulElement", "targetElementList", "compStyles", "getComputedStyle", "getPropertyValue", "elements", "element_allowlist", "_loop", "elementType", "_ret", "css_selector_allowlist", "_loop2", "selector", "_ret2", "classes", "coreCCPattern", "anchoredCCRegex", "unanchoredCCRegex", "coreSSNPattern", "anchoredSSNRegex", "unanchoredSSNRegex", "anchorRegexes", "getDirectAndNestedSpanText", "getNestedSpanText", "_child$tagName", "spanText", "getElementsChainString", "map", "_element$nth_child", "_element$nth_of_type", "el_string", "tag_name", "attr_class", "single_class", "sort", "attributes", "nth_child", "nth_of_type", "attr_id", "sortedAttributes", "_ref", "_ref2", "a", "b", "localeCompare", "_ref3", "escapeQuotes", "_ref4", "_el$$el_text", "_el$attr__href", "extractAttrClass", "_ref5", "_ref6", "input", "LOGGER_PREFIX", "REDACTED", "defaultNetworkOptions", "initiatorTypes", "maskRequestFn", "recordHeaders", "recordBody", "recordInitialRequests", "recordPerformance", "performanceEntryTypeToObserve", "payloadSizeLimitBytes", "payloadHostDenyList", "HEADER_DENY_LIST", "PAYLOAD_CONTENT_DENY_LIST", "POSTHOG_PATHS_TO_IGNORE", "enforcePayloadSizeLimit", "payload", "headers", "limit", "description", "requestContentLength", "Blob", "parseInt", "scrubPayload", "label", "scrubbed", "_scrubbed", "_scrubbed2", "buildNetworkRequestOptions", "instanceConfig", "remoteNetworkOptions", "_options$payloadSizeL", "canRecordHeaders", "session_recording", "canRecordBody", "canRecordPerformance", "capture_performance", "payloadLimiter", "requestBody", "requestHeaders", "responseBody", "responseHeaders", "enforcedCleaningFn", "d", "ignorePostHogPaths", "apiHostConfig", "replaceValue", "path", "header", "api_host", "hasDeprecatedMaskFunction", "maskNetworkRequestFn", "maskCapturedNetworkRequestFn", "cleanedURL", "_instanceConfig$sessi", "_instanceConfig$sessi2", "_instanceConfig$sessi3", "cleanedRequest", "capturedRequest", "clampToRange", "max", "fallbackValue", "MutationRateLimiter", "rrweb", "_this$options$refillR", "_this$options$bucketS", "mutationBuckets", "refillRate", "bucketSize", "node", "mirror", "getNode", "nodeName", "closestSVG", "getId", "_data$removes$length", "_data$removes", "_data$attributes$leng", "_data$attributes", "_data$texts$length", "_data$texts", "_data$adds$length", "_data$adds", "removes", "texts", "adds", "initialMutationCount", "numberOfChanges", "attr", "_this$mutationBuckets", "_this$options$onBlock", "_this$options", "nodeId", "getNodeOrRelevantParent", "loggedTracker", "onBlockedNode", "mutationCount", "setInterval", "refillBuckets", "u8", "u16", "Uint16Array", "u32", "fleb", "fdeb", "clim", "freb", "eb", "start", "j", "_a", "fl", "revfl", "revfd", "rev", "hMap", "cd", "mb", "co", "le", "rvb", "sv", "r_1", "m", "flt", "fdt", "flm", "fdm", "shft", "slc", "subarray", "wbits", "o", "wbits16", "hTree", "t2", "i0", "i1", "i2", "maxSym", "tr", "mbt", "ln", "dt", "lft", "cst", "i2_1", "i2_2", "i2_3", "lc", "cl", "cli", "cln", "cls", "w", "clen", "cf", "wfblk", "out", "pos", "dat", "wblk", "final", "syms", "lf", "df", "li", "bs", "bl", "dlt", "mlb", "_b", "ddt", "mdb", "_c", "lclt", "nlc", "_d", "lcdt", "ndc", "lcfreq", "_e", "lct", "mlcb", "nlcc", "lm", "ll", "dm", "dl", "flen", "ftlen", "dtlen", "llm", "lcts", "clct", "dst", "deo", "crct", "crc", "cr", "dopt", "opt", "pre", "post", "st", "lvl", "plvl", "lst", "msk_1", "prev", "head", "bs1_1", "bs2_1", "hsh", "lc_1", "wi", "hv", "imod", "pimod", "rem", "ch_1", "dif", "maxn", "maxd", "ml", "nl", "mmd", "md", "ti", "lin", "din", "mem", "log", "wbytes", "gzh", "filename", "mtime", "charCodeAt", "gzhl", "gzipSync", "opts", "strToU8", "latin1", "TextEncoder", "encode", "ar", "ai", "sampleOnProperty", "percent", "abs", "FIVE_MINUTES", "ONE_MINUTE", "ACTIVE_SOURCES", "MouseMove", "MouseInteraction", "Scroll", "ViewportResize", "Input", "TouchMove", "MediaInteraction", "Drag", "newQueuedEvent", "rrwebMethod", "enqueuedAt", "attempt", "gzipToString", "String", "fromCharCode", "isSessionIdleEvent", "Custom", "sessionRecordingUrlTriggerMatches", "triggers", "trigger", "matching", "SessionRecording", "sessionIdleThresholdMilliseconds", "session_idle_threshold_ms", "rrwebRecord", "_assignableWindow$__P", "_assignableWindow$__P2", "record", "started", "_captureStarted", "sessionManager", "fullSnapshotIntervalMillis", "triggerStatus", "full_snapshot_interval_millis", "isSampled", "currentValue", "sessionDuration", "_this$buffer", "_this$buffer2", "mostRecentSnapshot", "sessionStartTimestamp", "checkAndGetSessionAndWindowId", "isRecordingEnabled", "enabled_server_side", "enabled_client_side", "disable_session_recording", "isConsoleLogCaptureEnabled", "enable_recording_console_log", "canvasRecording", "_canvasRecording_clie", "_canvasRecording_clie2", "_canvasRecording_clie3", "canvasRecording_client_side", "captureCanvas", "canvasRecording_server_side", "enabled", "recordCanvas", "fps", "canvasFps", "quality", "canvasQuality", "networkPayloadCapture", "networkPayloadCapture_server_side", "networkPayloadCapture_client_side", "headersEnabled", "bodyEnabled", "clientConfigForPerformanceCapture", "network_timing", "networkTimingEnabled", "capturePerformance", "sampleRate", "rate", "minimumDuration", "duration", "status", "receivedDecide", "_urlBlocked", "_linkedFlag", "_linkedFlagSeen", "urlTriggerStatus", "_this$instance", "_urlTriggers", "eventTriggerStatus", "_this$instance2", "_eventTriggers", "eitherIsActivated", "eitherIsPending", "_flushBuffer", "_tryAddCustomEvent", "visibilityState", "_endpoint", "stopRrweb", "__preview_experimental_cookieless_mode", "clearBuffer", "sessionTimeoutMs", "startIfEnabledOrStop", "startReason", "_startCapture", "_onBeforeUnload", "_onOffline", "_onOnline", "_onVisibilityChange", "_setupSampling", "_addEventTriggerListener", "_removePageViewCaptureHook", "on", "_maskUrl", "_onSessionIdListener", "onSessionId", "changeReason", "_this$instance3", "_this$instance3$persi", "_this$instance4", "_this$instance4$persi", "stopRecording", "_this$_removePageView", "_this$_removeEventTri", "_this$_onSessionIdLis", "_this$_samplingSessio", "removeEventListener", "clearInterval", "_fullSnapshotTimer", "_removeEventTriggerCaptureHook", "_samplingSessionListener", "makeSamplingDecision", "sessionIdChanged", "currentSampleRate", "storedIsSampled", "makeDecision", "shouldSample", "_reportStarted", "onRemoteConfig", "_response$sessionReco", "_response$sessionReco2", "_response$sessionReco4", "_response$sessionReco5", "_response$sessionReco6", "_response$sessionReco3", "_persistRemoteConfig", "sessionRecording", "linkedFlag", "endpoint", "linkedVariant", "variant", "_flags", "variants", "flagIsPresent", "linkedFlagMatches", "urlTriggers", "urlBlocklist", "_urlBlocklist", "eventTriggers", "_this$_persistDecideO", "persistResponse", "_response$sessionReco7", "_response$sessionReco8", "_response$sessionReco9", "_response$sessionReco10", "_response$sessionReco11", "_response$sessionReco12", "_response$sessionReco13", "_response$sessionReco14", "receivedSampleRate", "parsedSampleRate", "receivedMinimumDuration", "minimumDurationMilliseconds", "consoleLogRecordingEnabled", "scriptConfig", "_persistDecideOnSessionListener", "message", "_this$instance$sessio", "onRRwebEmit", "plugin", "trace", "assign", "from", "consent", "isOptedOut", "_assignableWindow$__P3", "_assignableWindow$__P4", "_onScriptLoaded", "scriptName", "_this$instance5", "_this$instance5$persi", "_this$instance5$persi2", "script", "isInteractiveEvent", "_event$data", "_updateWindowAndSessionIds", "isUserInteraction", "isIdle", "_lastActivityTimestamp", "eventTimestamp", "lastActivityTimestamp", "threshold", "bufferLength", "bufferSize", "returningFromIdle", "reason", "windowIdChanged", "_scheduleFullSnapshot", "_tryRRWebMethod", "queuedRRWebEvent", "queuedRRWebEvents", "addCustomEvent", "_tryTakeFullSnapshot", "takeFullSnapshot", "_this$mutationRateLim", "sessionRecordingOptions", "blockClass", "blockSelector", "ignoreClass", "maskTextClass", "maskTextSelector", "maskTextFn", "maskAllInputs", "maskInputOptions", "password", "maskInputFn", "slimDOMOptions", "collectFonts", "inlineStylesheet", "recordCrossOriginIframes", "userSessionRecordingOptions", "sampling", "canvas", "dataURLOptions", "mutationRateLimiter", "__mutationRateLimiterRefillRate", "__mutationRateLimiterBucketSize", "activePlugins", "_gatherRRWebPlugins", "emit", "plugins", "interval", "_assignableWindow$__P5", "_assignableWindow$__P6", "_assignableWindow$__P7", "_assignableWindow$__P8", "recordConsolePlugin", "rrwebPlugins", "getRecordConsolePlugin", "networkPlugin", "getRecordNetworkPlugin", "_forceAllowLocalhostNetworkCapture", "rawEvent", "_this$instance$config5", "_processQueuedEvents", "Meta", "_lastHref", "_pageViewFallBack", "_checkUrlTriggerConditions", "FullSnapshot", "throttledEvent", "throttleMutations", "_event", "updatedPayload", "lastActivity", "eventToSend", "compress_events", "ONE_KB", "cv", "IncrementalSnapshot", "Mutation", "StyleSheetRule", "$snapshot_bytes", "$snapshot_data", "$session_id", "$window_id", "_captureSnapshotBuffered", "capture_pageview", "currentUrl", "itemsToProcess", "_networkRequest", "networkRequest", "flushBufferTimer", "isPositiveSessionDuration", "isBelowMinimumDuration", "snapshotBuffer", "_captureSnapshot", "_this$buffer3", "additionalBytes", "_url", "_noTruncate", "_batchKey", "skip_client_rate_limiting", "wasBlocked", "isNowBlocked", "_pauseRecording", "_resumeRecording", "_activateTrigger", "triggerType", "_this$instance6", "_this$instance6$persi", "overrideLinkedFlag", "overrideSampling", "overrideTrigger", "tagPayload", "register_for_session", "$session_recording_start_reason", "RemoteConfigLoader", "remoteConfig", "_assignableWindow$_PO", "_assignableWindow$_PO2", "_POSTHOG_REMOTE_CONFIG", "_loadRemoteConfigJs", "cb", "_loadRemoteConfigJSON", "hasFeatureFlags", "ToolbarState", "STATE_FROM_WINDOW", "LOCALSTORAGE_KEY", "Toolbar", "setToolbarState", "state", "getToolbarState", "_assignableWindow$ph_", "UNINITIALIZED", "maybeLoadToolbar", "_location", "_history", "history", "toolbarParams", "stateHash", "atob", "replaceState", "userIntent", "loadToolbar", "_callLoadToolbar", "loadFn", "toolbarRunning", "getElementById", "disableToolbarMetrics", "region", "advanced_disable_toolbar_metrics", "apiURL", "instrument", "LOADED", "LOADING", "_loadEditor", "maybeLoadEditor", "RequestQueue", "sendRequest", "enqueue", "req", "queue", "flushTimeout", "setFlushTimeout", "unload", "clearFlushTimeout", "requests", "formatQueue", "requestValues", "values", "sortedRequests", "transport", "enable", "_this", "flushTimeoutMs", "request", "_requests$key$data", "batchKey", "utf8Encode", "string", "end", "stringl", "utftext", "c1", "enc", "SUPPORTS_REQUEST", "XMLHttpRequest", "fetch", "CONTENT_TYPE_PLAIN", "extendURLParams", "baseUrl", "newParams", "newSearch", "jsonStringify", "space", "encodePostData", "GZipJS", "gzipData", "blob", "contentType", "estimatedSize", "b64data", "h1", "h2", "h3", "h4", "bits", "b64", "ac", "tmp_arr", "encodedBody", "jsonBody", "AVAILABLE_TRANSPORTS", "_encodePostData2", "_aborter", "Headers", "headerValue", "headerName", "append", "aborter", "AbortController", "controller", "signal", "abort", "keepalive", "SIXTY_FOUR_KILOBYTES", "fetchOptions", "then", "responseText", "_options$callback2", "catch", "_options$callback3", "finally", "_encodePostData", "open", "setRequestHeader", "withCredentials", "onreadystatechange", "readyState", "_options$callback", "send", "sendBeacon", "beacon", "_encodePostData3", "sendBeaconBody", "xs", "RetryQueue", "areWeOnline", "onLine", "flush", "retriableRequest", "retriesPerformedSoFar", "_objectWithoutProperties", "_excluded", "retry_count", "requestOptions", "msToNextRetry", "rawBackoffTime", "minBackoff", "cappedBackoffTime", "jitter", "retryAt", "logMessage", "isPolling", "poll", "poller", "pollIntervalMs", "notToFlush", "toFlush", "RequestRouterRegion", "SessionIdManager", "sessionIdGenerator", "windowIdGenerator", "_this$config$bootstra", "_windowId", "_sessionId", "_sessionStartTimestamp", "_sessionActivityTimestamp", "_sessionIdGenerator", "_windowIdGenerator", "persistenceName", "desiredTimeout", "_sessionTimeoutMs", "$configured_session_timeout_ms", "resetIdleTimer", "_window_id_storage_key", "_primary_window_exists_storage_key", "_canUseSessionStorage", "lastWindowId", "primaryWindowExists", "sessionID", "uuid", "hex", "_setSessionId", "_listenToReloadWindow", "_sessionIdChangedHandlers", "_setWindowId", "_getWindowId", "sessionActivityTimestamp", "_getSessionId", "sessionIdInfo", "resetSessionId", "readOnly", "_timestamp", "startTimestamp", "sessionPastMaximumLength", "valuesChanged", "noSessionId", "activityTimeout", "newActivityTimestamp", "_enforceIdleTimeout", "ingestionDomain", "RequestRouter", "apiHost", "uiHost", "ui_host", "_regionCache", "US", "EU", "CUSTOM", "suffix", "NAME", "createEventProcessor", "_posthog", "organization", "projectId", "severityAllowList", "_event$exception", "_exceptions$", "_exceptions$2", "_exceptions$3", "_exceptions$4", "tags", "personUrl", "sessionRecordingStarted", "get_session_replay_url", "withTimestamp", "exceptions", "exception", "stacktrace", "frames", "frame", "platform", "$exception_message", "$exception_type", "$exception_personURL", "$exception_level", "$exception_list", "$sentry_event_id", "event_id", "$sentry_exception", "$sentry_exception_message", "$sentry_exception_type", "$sentry_tags", "sendExceptionEvent", "SentryIntegration", "setupOnce", "addGlobalEventProcessor", "setupSegmentIntegration", "done", "segment", "bootstrapUser", "user", "getSegmentAnonymousId", "anonymousId", "get_device_id", "$device_id", "segmentUser", "Promise", "resolve", "enrichEvent", "ctx", "eventName", "_ctx$event$properties", "userId", "reset", "identify", "additionalProperties", "_calculate_event_properties", "isLoaded", "track", "page", "PageViewManager", "_instance", "doPageView", "pageViewId", "_window$location$path", "_previousPageViewProperties", "_currentPageview", "scrollManager", "resetContext", "doPageLeave", "_this$_currentPagevie", "doEvent", "_this$_currentPagevie2", "$pageview_id", "pageviewId", "previousPageView", "$prev_pageview_id", "scrollContext", "getContext", "disable_scroll_properties", "maxScrollHeight", "lastScrollY", "maxScrollY", "maxContentHeight", "lastContentY", "maxContentY", "lastScrollPercentage", "maxScrollPercentage", "lastContentPercentage", "maxContentPercentage", "$prev_pageview_last_scroll", "$prev_pageview_last_scroll_percentage", "$prev_pageview_max_scroll", "$prev_pageview_max_scroll_percentage", "$prev_pageview_last_content", "$prev_pageview_last_content_percentage", "$prev_pageview_max_content", "$prev_pageview_max_content_percentage", "$prev_pageview_pathname", "$prev_pageview_duration", "Ns", "qs", "Bs", "Hs", "Us", "js", "zs", "Ws", "EMPTY_OBJ", "EMPTY_ARR", "IS_NON_DIMENSIONAL", "Ys", "Ks", "Xs", "Qs", "Zs", "en", "tn", "rn", "sn", "nn", "pn", "vn", "g", "Gs", "an", "Vs", "un", "__u", "mn", "cn", "Js", "dn", "_n", "hn", "y", "S", "E", "bn", "gn", "SurveyType", "SurveyQuestionType", "SurveyQuestionBranchingType", "isPreviewMode", "previewPageIndex", "handleCloseSurveyPopup", "isPopup", "onPreviewSubmit", "SimpleEventEmitter", "events", "listener", "ActionMatcher", "step", "checkStepEvent", "checkStepUrl", "checkStepElement", "actionEvents", "actionRegistry", "init", "_addCaptureHook", "matchEventToAction", "eventPayload", "actions", "action", "_this$actionRegistry", "_action$steps", "steps", "_this$actionEvents", "autocapture", "selectorsToWatch", "_action$steps2", "setElementSelectors", "_this$actionRegistry2", "checkAction", "_debugEventEmitter", "_addActionHook", "onAction", "checkStep", "_event$properties", "eventUrl", "matchString", "url_matching", "adjustedRegExpStringPattern", "escapeStringRegexp", "getElementsList", "href_matching", "text_matching", "$el_text", "_event$properties2", "elementSelectors", "$element_selectors", "$elements", "SurveyEventReceiver", "eventToSurveys", "Map", "actionToSurveys", "surveys", "setupEventBasedSurveys", "setupActionBasedSurveys", "actionBasedSurveys", "survey", "_survey$conditions", "_survey$conditions2", "_survey$conditions2$a", "_survey$conditions2$a2", "conditions", "actionMatcher", "actionName", "_survey$conditions3", "_survey$conditions4", "_survey$conditions4$a", "_survey$conditions5", "_survey$conditions5$a", "_survey$conditions5$a2", "_this$actionMatcher", "_survey$conditions6", "_survey$conditions6$a", "_survey$conditions6$a2", "knownSurveys", "_survey$conditions7", "_survey$conditions8", "_survey$conditions8$e", "_survey$conditions8$e2", "matchEventToSurvey", "onEvent", "_survey$conditions9", "_survey$conditions9$e", "_survey$conditions9$e2", "existingActivatedSurveys", "SURVEY_SHOWN_EVENT_NAME", "_eventPayload$propert", "surveyId", "$survey_id", "index", "splice", "_updateActivatedSurveys", "activatedSurveys", "getSurveys", "getEventToSurveys", "_getActionMatcher", "surveyValidationMap", "icontains", "targets", "not_icontains", "every", "not_regex", "exact", "is_not", "getNextSurveyStep", "currentQuestionIndex", "_question$branching", "question", "questions", "nextQuestionIndex", "branching", "End", "SpecificQuestion", "ResponseBased", "SingleChoice", "_question$branching2", "_question$branching2$", "selectedChoiceIndex", "choices", "responseValues", "nextStep", "Rating", "_question$branching3", "_question$branching3$", "ratingBucket", "responseValue", "scale", "defaultMatchType", "matchType", "PostHogSurveys", "_surveyEventReceiver", "_decideServerResponse", "loadIfEnabled", "surveyKeys", "getSurveySeenStorageKeys", "startsWith", "_surveyManager", "disable_surveys", "phExtensions", "generateSurveys", "_phExtensions$generat", "forceReload", "existingSurveys", "_this$_surveyEventRec", "eventOrActionBasedSurveys", "_survey$conditions6$e", "_survey$conditions7$e", "_survey$conditions7$e2", "_survey$conditions9$a", "_survey$conditions10", "_survey$conditions10$", "_survey$conditions10$2", "getActiveMatchingSurveys", "_this$_surveyEventRec2", "conditionMatchedSurveys", "start_date", "end_date", "_survey$conditions11", "urlCheck", "_window$location", "urlMatchType", "selectorCheck", "querySelector", "deviceTypeCheck", "deviceTypes", "deviceTypesMatchType", "targetingMatchedSurveys", "_survey$feature_flag_", "_survey$conditions12", "_survey$conditions13", "_survey$conditions13$", "_survey$conditions14", "_survey$conditions14$", "_survey$conditions15", "_survey$conditions16", "_survey$conditions16$", "_survey$conditions17", "_survey$conditions17$", "linked_flag_key", "targeting_flag_key", "internal_targeting_flag_key", "feature_flag_keys", "linkedFlagCheck", "targetingFlagCheck", "hasEvents", "hasActions", "eventBasedTargetingFlagCheck", "overrideInternalTargetingFlagCheck", "_canActivateRepeatedly", "internalTargetingFlagCheck", "flagsCheck", "checkFlags", "_survey$feature_flag_2", "canActivateRepeatedly", "canRenderSurvey", "renderSurvey", "RateLimiter", "_instance$config$rate", "_instance$config$rate2", "httpResponse", "quota_limited", "serverLimits", "captureEventsPerSecond", "rate_limiting", "events_per_second", "captureEventsBurstLimit", "events_burst_limit", "lastEventRateLimited", "clientRateLimitContext", "isRateLimited", "checkOnly", "bucket", "tokens", "last", "$$client_ingestion_warning_message", "remainingTokens", "isServerRateLimited", "retryAfter", "generateSessionSourceParams", "initialPathName", "SessionPropsManager", "sessionIdManager", "sessionSourceParamGenerator", "stored", "_getStoredProps", "newProps", "_sessionSourceParamGenerator", "_persistence", "_sessionIdManager", "_onSessionIdCallback", "getSessionProps", "_this$_getStoredProps", "$client_session_initial_referring_host", "$client_session_initial_pathname", "$client_session_initial_utm_source", "utm_source", "$client_session_initial_utm_campaign", "utm_campaign", "$client_session_initial_utm_medium", "utm_medium", "$client_session_initial_utm_content", "utm_content", "$client_session_initial_utm_term", "utm_term", "DEFAULT_BLOCKED_UA_STRS", "isBlockedUA", "customBlockedUserAgents", "uaLower", "blockedUA", "blockedUaLower", "isLikelyBot", "uaData", "userAgentData", "brands", "brandObj", "brand", "webdriver", "RageClick", "clicks", "isRageClick", "lastClick", "isDeadClicksEnabledForHeatmaps", "isDeadClicksEnabledForAutocapture", "_instance$instance$pe", "isRemoteEnabled", "clientConfig", "capture_dead_clicks", "DeadClicksAutocapture", "lazyLoadedDeadClicksAutocapture", "_lazyLoadedDeadClicksAutocapture", "isEnabled", "onCapture", "startIfEnabled", "captureDeadClicks", "initDeadClicksAutocapture", "__onCapture", "stop", "isValidMouseEvent", "clientX", "clientY", "Heatmaps", "_enabledServerSide", "flushIntervalMilliseconds", "flushInterval", "capture_heatmaps", "flush_interval_milliseconds", "enable_heatmaps", "_initialized", "_setupListeners", "_flushInterval", "bind", "_this$_flushInterval", "_this$deadClicksCaptu", "deadClicksCapture", "getAndClearBuffer", "optIn", "_onDeadClick", "click", "_onClick", "originalEvent", "_onMouseMove", "_getProperties", "scrollY", "scrollX", "scrollElement", "isFixedOrSticky", "breakOnElement", "position", "target_fixed", "_this$rageclicks", "rageclicks", "_capture", "_mouseMoveTimeout", "$heatmap_data", "ScrollManager", "_this$context$maxScro", "_this$context$maxScro2", "_this$context$maxCont", "_this$context$maxCont2", "context", "scrollHeight", "clientHeight", "contentY", "contentHeight", "_updateScrollData", "startMeasuringScrollPosition", "scroll_root_selector", "documentElement", "selectors", "scrollTop", "pageYOffset", "scrollLeft", "pageXOffset", "limitText", "previousElementSibling", "_el", "previousSibling", "getPropertiesFromElement", "elem", "maskAllAttributes", "maskText", "elementAttributeIgnorelist", "attributeName", "nthChild", "nthOfType", "currentElem", "autocapturePropertiesForElement", "_elementsJson$", "_elementsJson$2", "maskAllElementAttributes", "maskAllText", "elementAttributeIgnoreList", "elementsChainAsString", "externalHref", "elementsJson", "autocaptureAugmentProperties", "explicitNoCapture", "shouldCaptureEl", "augmentProperties", "propertyKey", "propertyValue", "hrefHost", "locationHost", "$event_type", "$ce_version", "$elements_chain", "$external_click_url", "Autocapture", "_elementSelectors", "_config$url_allowlist", "_config$url_ignorelis", "_addDomEventHandlers", "isBrowserSupported", "_captureEvent", "capture_copied_text", "copiedTextHandler", "COPY_AUTOCAPTURE_EVENT", "_elementsChainAsString", "_isDisabledServerSide", "getElementSelectors", "_this$_elementSelecto", "matchedElements", "matchedElement", "_this$_isDisabledServ", "persistedServerDisabled", "memoryDisabled", "disabledServer", "MouseEvent", "rageclick", "isCopyAutocapture", "mask_all_element_attributes", "mask_all_text", "element_attribute_ignorelist", "_window$getSelection", "selectedContent", "getSelection", "clipType", "TracingHeaders", "_restoreXHRPatch", "tracingHeadersPatchFns", "_patchXHR", "_restoreFetchPatch", "_patchFetch", "_loadScript", "_this$_restoreXHRPatc", "_this$_restoreFetchPa", "__add_tracing_headers", "_startCapturing", "ConsentStatus", "ConsentManager", "getDnt", "DENIED", "storedConsent", "PENDING", "opt_out_capturing_by_default", "isOptedIn", "optInOut", "storageKey", "cookie_expiration", "cross_subdomain_cookie", "secure_cookie", "opt_out_capturing_cookie_prefix", "GRANTED", "_storage", "persistenceType", "opt_out_capturing_persistence_type", "otherStorage", "respect_dnt", "doNotTrack", "dntValue", "ExceptionObserver", "hasHandlers", "isCapturing", "wrapOnError", "errorWrappingFunctions", "wrapUnhandledRejection", "unwrapOnError", "captureException", "unwrapUnhandledRejection", "stopCapturing", "remoteEnabled", "_this$remoteEnabled", "_window$onerror", "__POSTHOG_INSTRUMENTED__", "originalOnUnhandledRejectionHandler", "startCapturing", "_this$unwrapOnError", "_this$unwrapUnhandled", "autocaptureExceptionsResponse", "autocaptureExceptions", "errorProperties", "posthogHost", "FIFTEEN_MINUTES_IN_MILLIS", "WebVitalsAutocapture", "metrics", "firstMetricTimestamp", "_delayedFlushTimer", "acc", "metric", "sessionIds", "$currentUrl", "_currentURL", "_maxAllowedValue", "_flushToCapture", "flushToCaptureTimeoutMs", "attribution", "interactionTargetElement", "allowedMetrics", "onLCP", "onCLS", "onFCP", "onINP", "posthogExtensions", "postHogWebVitalsCallbacks", "_addToBuffer", "clientConfigMetricAllowList", "web_vitals_allowed_metrics", "web_vitals_delayed_flush_ms", "configured", "__web_vitals_max_value", "web_vitals", "webVitalsOptIn", "webExperimentUrlValidationMap", "conditionsUrl", "WebExperiments", "getWebExperiments", "webExperiments", "logInfo", "_flagToExperiments", "webExperiment", "feature_flag_key", "_this$_flagToExperime", "selectedVariant", "applyTransforms", "transforms", "testVariant", "matchesTestVariant", "_is_bot", "disable_web_experiments", "previewWebExperiment", "_this$_flagToExperime2", "_this$_flagToExperime3", "getWindowLocation", "experimentID", "showPreviewWebExperiment", "getWebExperimentsAndEvaluateDisplayLogic", "previewing", "existingWebExperiments", "experiments", "previewExperiments", "exp", "matchUrlConditions", "matchUTMConditions", "_testVariant$conditio", "_testVariant$conditio2", "_testVariant$conditio3", "_testVariant$conditio4", "_testVariant$conditio5", "utm", "_testVariant$conditio6", "_testVariant$conditio7", "_testVariant$conditio8", "_testVariant$conditio9", "_testVariant$conditio10", "_testVariant$conditio11", "_testVariant$conditio12", "_testVariant$conditio13", "_testVariant$conditio14", "_testVariant$conditio15", "_testVariant$conditio16", "_testVariant$conditio17", "_testVariant$conditio18", "_testVariant$conditio19", "_testVariant$conditio20", "_testVariant$conditio21", "utmCampaignMatched", "utmSourceMatched", "utmMediumMatched", "utmTermMatched", "experiment", "transform", "_document", "htmlElement", "attribute", "innerText", "innerHTML", "setAttribute", "html", "parentElement", "css", "custom_blocked_useragents", "PostHogExceptions", "ho", "SiteApps", "bufferedInvocations", "apps", "opt_in_site_apps", "eventCollector", "_eventName", "globals", "globalsForEvent", "siteAppLoaders", "siteApps", "stopBuffering", "_event$properties$$se", "_event$properties$$se2", "_event$properties$$el", "_event$properties3", "_event$properties4", "groupIds", "groupProperties", "$set_once", "elements_chain", "person", "setupSiteApp", "loader", "app", "loaded", "errored", "onLoaded", "success", "_this$stopBuffering", "_app$processEvent", "processEvent", "onCapturedEvent", "_app$processEvent2", "_this$siteAppLoaders", "_this$stopBuffering2", "_response$siteApps", "getIdentifyHash", "userPropertiesToSet", "userPropertiesToSetOnce", "instances", "__NOOP", "PRIMARY_INSTANCE_NAME", "ENQUEUE_REQUESTS", "defaultConfig", "persistence_name", "save_campaign_params", "save_referrer", "capture_pageleave", "upgrade", "disable_persistence", "protocol", "ip", "opt_out_persistence_by_default", "opt_out_useragent_filter", "property_denylist", "sanitize_properties", "request_headers", "request_batching", "properties_string_max_length", "on_request_error", "session_idle_timeout_seconds", "person_profiles", "before_send", "_onCapture", "configRenames", "origConfig", "renames", "process_person", "xhr_headers", "cookie_name", "disable_cookie", "store_google", "verbose", "newConfig", "property_blacklist", "DeprecatedWebPerformanceObserver", "_forceAllowLocalhost", "__forceAllowLocalhost", "PostHog", "decideEndpointWasHit", "_this$featureFlags$ha", "_this$featureFlags", "sentryIntegration", "processor", "__request_queue", "analyticsDefaultEndpoint", "_initialPageviewCaptured", "_initialPersonProfilesConfig", "_cachedIdentify", "toolbar", "pageViewManager", "rateLimiter", "people", "setProps", "setPersonProperties", "set_once", "_instances$name", "namedPosthog", "_init", "_this$siteApps", "_config$bootstrap", "_triggered_notifs", "set_config", "on_xhr_error", "sessionPersistence", "initialPersistenceProps", "initialSessionProps", "_requestQueue", "_send_retriable_request", "_retryQueue", "sessionPropsManager", "heatmaps", "webVitalsAutocapture", "exceptionObserver", "deadClicksAutocapture", "thisC", "_sync_opt_out_with_persistence", "distinctID", "_config$bootstrap2", "_config$bootstrap3", "deviceID", "isIdentifiedID", "_hasBootstrappedFeatureFlags", "_config$bootstrap4", "_config$bootstrap7", "activeFlags", "_config$bootstrap5", "_config$bootstrap5$fe", "_config$bootstrap6", "_config$bootstrap6$fe", "_config$bootstrap8", "_config$bootstrap8$fe", "_config$bootstrap9", "_config$bootstrap9$fe", "self", "_handle_unload", "_loaded", "_config$analytics", "_this$siteApps2", "_this$sessionRecordin", "_this$autocapture", "_this$heatmaps", "_this$webVitalsAutoca", "_this$exceptionObserv", "_this$deadClicksAutoc", "supportedCompression", "analytics", "_start_queue_if_opted_in", "_captureInitialPageview", "_this$_requestQueue", "has_opted_out_capturing", "_dom_loaded", "_this$_requestQueue2", "_this$_retryQueue", "_shouldCapturePageleave", "api_transport", "fetch_options", "_options", "_options$transport", "_find$method", "_find", "ver", "transportMethod", "_this$config$on_reque", "_this$config", "checkForLimiting", "_execute_array", "array", "fn_name", "alias_calls", "other_calls", "capturing_calls", "execute", "calls", "caller", "_this$config$bootstra2", "_options$_url", "systemTime", "setOnceProperties", "_calculate_set_once_properties", "finalSet", "beforeSendResult", "_runBeforeSend", "_internalEventEmitter", "send_instantly", "event_properties", "persistenceProps", "pageviewProperties", "infoProperties", "title", "duration_in_ms", "toFixed", "_isIdentified", "denylisted_prop", "hasPersonProcessing", "_hasPersonProcessing", "_requirePersonProcessing", "dataSetOnce", "_this$persistence", "_this$persistence2", "_this$sessionPersiste", "property", "_this$persistence3", "unregister_for_session", "_this$sessionPersiste2", "_register_single", "_this$sessionManager$", "_this$sessionManager", "new_distinct_id", "previous_distinct_id", "$user_id", "device_id", "$had_persisted_distinct_id", "isKnownAnonymous", "group", "groupKey", "groupPropertiesToSet", "existingGroups", "$groups", "$group_type", "$group_key", "$group_set", "resetGroups", "reset_device_id", "_this$persistence4", "_this$sessionPersiste3", "_this$persistence5", "_this$sessionManager2", "$last_posthog_reset", "toISOString", "get_session_id", "_this$sessionManager$2", "_this$sessionManager3", "_options$timestampLoo", "LOOK_BACK", "timestampLookBack", "recordingStartTime", "alias", "original", "_this$persistence6", "_this$sessionRecordin2", "_this$autocapture2", "_this$heatmaps2", "startSessionRecording", "overrideAll", "overrideConfig", "linked_flag", "url_trigger", "event_trigger", "_this$sessionManager4", "_this$sessionRecordin3", "_this$sessionRecordin4", "_this$sessionRecordin5", "_this$sessionRecordin6", "stopSessionRecording", "_this$sessionRecordin7", "syntheticException", "parseErrorAsProperties", "mechanism", "handled", "synthetic", "property_name", "_this$persistence7", "getSessionProperty", "_this$sessionPersiste4", "_this$config$name", "_this$persistence8", "_this$sessionPersiste5", "_this$persistence9", "_this$persistence9$pr", "_this$persistence10", "_this$persistence10$p", "createPersonProfile", "function_name", "_this$persistence11", "_this$sessionPersiste6", "_this$persistence12", "_this$sessionPersiste7", "defaultPersistenceDisabled", "persistenceDisabled", "opt_in_capturing", "_options$captureEvent", "captureEventName", "captureProperties", "opt_out_capturing", "has_opted_in_capturing", "clear_opt_in_out_capturing", "fns", "getPageViewId", "_this$pageViewManager", "klass", "functions", "posthogMain", "dom_loaded_handler", "inst", "add_dom_loaded_handler", "posthog_controller_default", "Controller", "xo", "products_controller_exports", "__export", "products_controller_default", "products_controller_default", "Controller", "event", "push_controller_exports", "__export", "push_controller_default", "import_ujs", "push_controller_default", "Controller", "serviceWorkerRegistration", "existingSubscription", "error", "subscription", "endpoint", "p256dh", "auth", "pushable_type", "form", "Rails", "response", "permission", "base64String", "padding", "base64", "rawData", "outputArray", "i", "questions_validator_controller_exports", "__export", "questions_validator_controller_default", "questions_validator_controller_default", "Controller", "filtered", "initialFieldColour", "field", "form", "submitButton", "e", "clickable", "errors", "empty_default", "htmlBtn", "collection", "scope", "scanner_controller_exports", "__export", "scanner_controller_default", "import_ujs", "Html5QrcodeSupportedFormats", "html5QrcodeSupportedFormatsTextMap", "DecodedTextType", "isValidHtml5QrcodeSupportedFormats", "format", "Html5QrcodeScanType", "Html5QrcodeConstants", "QrcodeResultFormat", "format", "formatName", "html5QrcodeSupportedFormatsTextMap", "Html5QrcodeResultFactory", "decodedText", "qrcodeResult", "Html5QrcodeErrorTypes", "Html5QrcodeErrorFactory", "error", "BaseLoggger", "verbose", "message", "isExperimental", "errors", "isNullOrUndefined", "obj", "clip", "value", "minValue", "maxValue", "Html5QrcodeStrings", "exception", "error", "Html5QrcodeScannerStrings", "decodedText", "LibraryInfoStrings", "VideoConstraintsUtil", "videoConstraints", "logger", "typeofVideoConstraints", "bannedKeys", "bannedkeysSet", "keysInVideoConstraints", "_i", "keysInVideoConstraints_1", "key", "ZXing", "ZXingHtml5QrcodeDecoder", "requestedFormats", "verbose", "logger", "Html5QrcodeSupportedFormats", "ZXing", "formats", "hints", "canvas", "_this", "resolve", "reject", "error", "zxingDecoder", "luminanceSource", "binaryBitmap", "result", "QrcodeResultFormat", "value", "key", "_", "zxingFormat", "zxingFormats", "_i", "requestedFormats_1", "requestedFormat", "BarcodeDetectorDelegate", "requestedFormats", "verbose", "logger", "Html5QrcodeSupportedFormats", "formats", "dummyDetector", "canvas", "barcodes", "_a", "largestBarcode", "QrcodeResultFormat", "maxArea", "_i", "barcodes_1", "barcode", "area", "requestedFormats_1", "requestedFormat", "barcodeDetectorFormat", "result", "value", "key", "_", "Html5QrcodeShim", "requestedFormats", "useBarCodeDetectorIfSupported", "verbose", "logger", "BarcodeDetectorDelegate", "ZXingHtml5QrcodeDecoder", "canvas", "startTime", "_a", "error_1", "executionTime", "sum", "_i", "mean", "AbstractCameraCapability", "name", "track", "value", "constraint", "constraints", "settings", "settingValue", "AbstractRangeCameraCapability", "_super", "__extends", "capabilities", "capability", "ZoomFeatureImpl", "TorchFeatureImpl", "CameraCapabilitiesImpl", "RenderedCameraImpl", "parentElement", "mediaStream", "callbacks", "width", "videoElement", "_this", "onVideoStart", "videoWidth", "videoHeight", "options", "renderedCamera", "aspectRatioConstraint", "_a", "onResumeCallback", "$this", "onVideoResume", "resolve", "_", "tracks", "tracksToClose", "tracksClosed", "videoTrack", "CameraImpl", "videoConstraints", "CameraFactory", "videoConstraints", "CameraImpl", "CameraRetriever", "mst", "errorMessage", "Html5QrcodeStrings", "host", "closeActiveStreams", "stream", "tracks", "_i", "tracks_1", "track", "mediaStream", "_a", "devices", "results", "devices_1", "device", "resolve", "_", "callback", "sourceInfos", "sourceInfos_1", "sourceInfo", "Html5QrcodeScannerState", "StateManagerImpl", "newState", "tempNewState", "disallowedStatesToTransition", "_i", "disallowedStatesToTransition_1", "disallowedState", "StateManagerProxy", "stateManager", "StateManagerFactory", "StateManagerProxy", "StateManagerImpl", "Constants", "_super", "__extends", "Html5QrcodeConstants", "InternalHtml5QrcodeConfig", "config", "logger", "VideoConstraintsUtil", "isNullOrUndefined", "Html5Qrcode", "elementId", "configOrVerbosityFlag", "experimentalFeatureConfig", "configObject", "BaseLoggger", "Html5QrcodeShim", "StateManagerFactory", "cameraIdOrConfig", "configuration", "qrCodeSuccessCallback", "qrCodeErrorCallback", "_this", "qrCodeErrorCallbackInternal", "internalConfig", "videoConstraintsAvailableAndValid", "areVideoConstraintsEnabled", "element", "rootElementWidth", "$this", "toScanningStateChangeTransaction", "Html5QrcodeScannerState", "resolve", "reject", "videoConstraints", "cameraRenderingOptions", "renderingCallbacks", "viewfinderWidth", "viewfinderHeight", "CameraFactory", "factory", "camera", "renderedCamera", "error", "Html5QrcodeStrings", "_", "shouldPauseVideo", "transitionToScanning", "toStoppedStateTransaction", "removeQrRegion", "childElement", "imageFile", "showImage", "html5qrcodeResult", "inputImage", "imageWidth", "imageHeight", "containerWidth", "containerHeight", "visibleCanvas", "context_1", "padding", "hiddenImageWidth", "hiddenImageHeight", "hiddenCanvasWidth", "hiddenCanvasHeight", "hiddenCanvas", "context", "result", "Html5QrcodeResultFactory", "exception", "CameraRetriever", "videoConstaints", "allFormats", "Html5QrcodeSupportedFormats", "supportedFormats", "_i", "_a", "format", "isValidHtml5QrcodeSupportedFormats", "experimentalFeatures", "qrboxSize", "qrDimensions", "validateMinSize", "size", "correctWidthBasedOnRootElementSize", "configWidth", "shouldShadingBeApplied", "defaultQrRegion", "qrRegion", "canvasElement", "contextAttributes", "rootElement", "scannerPausedUiElement", "errorMessage", "Html5QrcodeErrorFactory", "videoElement", "widthRatio", "heightRatio", "sWidthOffset", "sHeightOffset", "sxOffset", "syOffset", "triggerNextScan", "isSuccessfull", "facingModeKey", "deviceIdKey", "allowedFacingModeValues_1", "exactKey", "isValidFacingModeValue", "value", "keys", "key", "facingMode", "type_1", "deviceId", "type_2", "type", "xoffset", "yoffset", "formerImageWidth", "formerImageHeight", "qrMatch", "shader", "width", "height", "customId", "canvasWidth", "canvasHeight", "shadingElement", "rightLeftBorderSize", "topBottomBorderSize", "smallSize", "largeSize", "shaderElem", "top", "bottom", "side", "isLeft", "elem", "fps", "SVG_XML_PREFIX", "ASSET_CAMERA_SCAN", "ASSET_FILE_SCAN", "ASSET_INFO_ICON_16PX", "ASSET_CLOSE_ICON_16PX", "PersistedDataFactory", "PersistedDataManager", "data", "hasPermission", "lastUsedCameraId", "LibraryInfoDiv", "parent", "LibraryInfoStrings", "projectLink", "breakElemFirst", "breakElemSecond", "reportIssueLink", "LibraryInfoIcon", "onTapIn", "onTapOut", "_this", "ASSET_INFO_ICON_16PX", "_", "ASSET_CLOSE_ICON_16PX", "LibraryInfoContainer", "CameraPermissions", "devices", "_a", "_i", "devices_1", "device", "ScanTypeSelector", "supportedScanTypes", "_i", "_a", "scanType", "Html5QrcodeScanType", "Html5QrcodeConstants", "maxExpectedValues", "supportedScanTypes_1", "PublicUiElementIdAndClasses", "BaseUiElementFactory", "elementType", "elementId", "element", "PublicUiElementIdAndClasses", "TorchController", "torchCapability", "buttonController", "onTorchActionFailureCallback", "isTorchOnExpected", "_a", "error_1", "isTorchOn", "Html5QrcodeScannerStrings", "error", "errorMessage", "TorchButton", "BaseUiElementFactory", "PublicUiElementIdAndClasses", "parentElement", "torchButtonOptions", "_this", "$this", "_", "__awaiter", "text", "button", "FileSelectionUi", "parentElement", "showOnRender", "onFileSelected", "fileScanLabel", "BaseUiElementFactory", "PublicUiElementIdAndClasses", "_", "$this", "e", "target", "fileList", "file", "fileName", "dragAndDropMessage", "event", "dataTransfer", "files", "isAnyFileImage", "i", "imageType", "Html5QrcodeScannerStrings", "fileBasedScanRegion", "imageFileName", "MAX_CHARS", "start8Chars", "length_1", "last8Chars", "newText", "initialText", "button", "CameraSelectionUi", "cameras", "BaseUiElementFactory", "PublicUiElementIdAndClasses", "parentElement", "cameraSelectionContainer", "numCameras", "selectCameraString", "Html5QrcodeScannerStrings", "anonymousCameraId", "_i", "_a", "camera", "value", "name_1", "option", "cameraSelectUi", "CameraZoomUi", "BaseUiElementFactory", "PublicUiElementIdAndClasses", "parentElement", "renderOnCreate", "zoomString", "Html5QrcodeScannerStrings", "$this", "minValue", "maxValue", "defaultValue", "step", "onChangeCallback", "cameraZoomUi", "Html5QrcodeScannerStatus", "toHtml5QrcodeCameraScanConfig", "config", "toHtml5QrcodeFullConfig", "verbose", "Html5QrcodeScanner", "elementId", "ScanTypeSelector", "BaseLoggger", "PersistedDataManager", "qrCodeSuccessCallback", "qrCodeErrorCallback", "_this", "decodedText", "result", "Html5QrcodeScannerStrings", "errorMessage", "error", "container", "Html5Qrcode", "shouldPauseVideo", "isNullOrUndefined", "emptyHtmlContainer", "mainContainer", "resolve", "reject", "_", "videoConstaints", "Html5QrcodeConstants", "parent", "qrCodeScanRegion", "scanRegionId", "qrCodeDashboard", "dashboardId", "dashboard", "header", "libraryInfo", "LibraryInfoContainer", "headerMessageContainer", "section", "scpCameraScanRegion", "requestPermissionContainer", "requestPermissionButton", "$this", "createPermissionButtonIfNotExists", "cameras", "BaseUiElementFactory", "CameraPermissions", "hasPermissions", "sectionControlPanel", "showOnRender", "onFileSelected", "file", "html5qrcodeResult", "Html5QrcodeErrorFactory", "FileSelectionUi", "cameraZoomUi", "CameraZoomUi", "renderCameraZoomUiIfSupported", "cameraCapabilities", "zoomCapability", "zoomValue", "defaultZoom", "clip", "cameraSelectUi", "CameraSelectionUi", "cameraActionContainer", "cameraActionStartButton", "PublicUiElementIdAndClasses", "cameraActionStopButton", "torchButton", "createAndShowTorchButtonIfSupported", "TorchButton", "resetCameraActionStartButton", "shouldShow", "cameraId", "TEXT_IF_CAMERA_SCAN_SELECTED", "TEXT_IF_FILE_SCAN_SELECTED", "switchContainer", "switchScanTypeLink", "Html5QrcodeScanType", "permissionButton", "messageDiv", "messageText", "scannerStatus", "shouldDisplay", "ASSET_CAMERA_SCAN", "ASSET_FILE_SCAN", "scanner_controller_default", "Controller", "Html5Qrcode", "err", "devices", "_error", "id", "event", "otherDevice", "d", "qrCodeMessage", "error", "_err", "codeData", "form", "Rails", "response", "service_controller_exports", "__export", "service_controller_default", "service_controller_default", "Controller", "partial", "eventOrString", "selectValue", "name", "collection", "element", "partialName", "service_worker_controller_exports", "__export", "service_worker_controller_default", "service_worker_controller_default", "Controller", "reg", "event", "auto_open_modal_controller_exports", "__export", "auto_open_modal_controller_default", "auto_open_modal_controller_default", "Controller", "Modal", "copy_to_clipboard_controller_exports", "__export", "copy_to_clipboard_controller_default", "copy_to_clipboard_controller_default", "Controller", "event", "image_upload_controller_exports", "__export", "image_upload_controller_default", "import_core", "import_dashboard", "import_image_editor", "image_upload_controller_default", "Controller", "target", "id", "aspectRatio", "uppyEl", "maxNumFiles", "currentImages", "item", "autoSubmit", "uppyInst", "Uppy", "el", "defaultAR", "trigger", "form", "directUploadUrl", "fieldName", "e", "ActiveStorageUpload", "Dashboard", "aspectRatioX", "aspectRatioY", "ratioFractional", "cropperOptions", "ImageEditor", "result", "element", "file", "hiddenField", "defaultImageUrl", "preview", "src", "_el", "container", "i", "button", "string", "live_dropdown_controller_exports", "__export", "live_dropdown_controller_default", "import_ujs", "debounce", "live_dropdown_controller_default", "Controller", "target", "optionText", "optionValue", "fieldName", "currentText", "form", "data", "Rails", "response", "i", "li", "masked_field_controller_exports", "__export", "masked_field_controller_default", "import_inputmask", "masked_field_controller_default", "Controller", "defaultMaskFormat", "element", "maskFormat", "Inputmask", "nested_attributes_controller_exports", "__export", "nested_attributes_controller_default", "nested_attributes_controller_default", "Controller", "time", "newObjectString", "str", "_e", "payment_option_controller_exports", "__export", "payment_option_controller_default", "payment_option_controller_default", "Controller", "labelEl", "identifier", "checkboxContainer", "eventOrEl", "ac", "cardIdentifier", "cardEl", "reward_type_controller_exports", "__export", "reward_type_controller_default", "reward_type_controller_default", "Controller", "eventOrString", "selectValue", "sign_in_controller_exports", "__export", "sign_in_controller_default", "RequestError", "message", "response", "sign_in_controller_default", "Controller", "_e", "loading", "result", "form", "url", "error", "_error", "subscribers_controller_exports", "__export", "subscribers_controller_default", "subscribers_controller_default", "Controller", "response", "errorMsg", "modules", "product_filter_controller_exports", "professional_select_controller_exports", "video_controller_exports", "bookings_controller_exports", "calendar_controller_exports", "codes_controller_exports", "confirmations_controller_exports", "cookie_consent_controller_exports", "date_picker_controller_exports", "form_controller_exports", "geolocation_controller_exports", "hello_controller_exports", "live_time_controller_exports", "availability_controller_exports", "documents_upload_controller_exports", "logo_upload_controller_exports", "order_quick_view_controller_exports", "rewardables_upload_controller_exports", "subscription_selector_controller_exports", "voucher_deliverables_controller_exports", "numberpad_controller_exports", "partial_toggler_controller_exports", "referrals_controller_exports", "smart_orders_controller_exports", "payment_confirmation_controller_exports", "posthog_controller_exports", "products_controller_exports", "push_controller_exports", "questions_validator_controller_exports", "scanner_controller_exports", "service_controller_exports", "service_worker_controller_exports", "auto_open_modal_controller_exports", "copy_to_clipboard_controller_exports", "image_upload_controller_exports", "live_dropdown_controller_exports", "masked_field_controller_exports", "nested_attributes_controller_exports", "payment_option_controller_exports", "reward_type_controller_exports", "sign_in_controller_exports", "subscribers_controller_exports", "controller_default", "modules", "controller_default", "application", "Application", "controller_default", "controller", "vh", "extendStatics", "d", "b", "Object", "setPrototypeOf", "__proto__", "Array", "p", "prototype", "hasOwnProperty", "call", "__extends", "TypeError", "String", "__", "constructor", "create", "__assign", "assign", "t", "s", "i", "n", "arguments", "length", "apply", "this", "__rest", "e", "indexOf", "getOwnPropertySymbols", "propertyIsEnumerable", "__decorate", "decorators", "target", "key", "desc", "c", "r", "getOwnPropertyDescriptor", "Reflect", "decorate", "defineProperty", "__param", "paramIndex", "decorator", "__metadata", "metadataKey", "metadataValue", "metadata", "__awaiter", "thisArg", "_arguments", "P", "generator", "Promise", "resolve", "reject", "fulfilled", "value", "step", "next", "rejected", "result", "done", "then", "__generator", "body", "f", "y", "g", "_", "label", "sent", "trys", "ops", "verb", "Symbol", "iterator", "v", "op", "pop", "push", "__createBinding", "o", "m", "k", "k2", "enumerable", "get", "__exportStar", "__values", "__read", "ar", "error", "__spread", "concat", "__spreadArrays", "il", "a", "j", "jl", "__spreadArray", "to", "from", "pack", "l", "slice", "__await", "__asyncGenerator", "asyncIterator", "q", "resume", "fulfill", "settle", "shift", "__asyncDelegator", "__asyncValues", "__makeTemplateObject", "cooked", "raw", "__setModuleDefault", "__importStar", "mod", "__esModule", "__importDefault", "default", "__classPrivateFieldGet", "receiver", "state", "kind", "has", "__classPrivateFieldSet", "set", "supportsAdoptingStyleSheets", "window", "ShadowRoot", "ShadyCSS", "nativeShadow", "Document", "CSSStyleSheet", "constructionToken", "styleSheetCache", "Map", "CSSResult", "cssText", "safeToken", "_$cssResult$", "Error", "styleSheet", "replaceSync", "toString", "unsafeCSS", "css", "strings", "values", "reduce", "acc", "idx", "adoptStyles", "renderRoot", "styles", "adoptedStyleSheets", "map", "forEach", "style", "document", "createElement", "nonce", "litNonce", "setAttribute", "textContent", "appendChild", "getCompatibleStyle", "sheet", "rule", "cssRules", "trustedTypes", "emptyStringForBooleanAttribute", "emptyScript", "polyfillSupport", "reactiveElementPolyfillSupport", "defaultConverter", "toAttribute", "type", "Boolean", "JSON", "stringify", "fromAttribute", "fromValue", "Number", "parse", "notEqual", "old", "defaultPropertyDeclaration", "attribute", "converter", "reflect", "hasChanged", "ReactiveElement", "HTMLElement", "_initialize", "initializer", "_initializers", "observedAttributes", "finalize", "attributes", "elementProperties", "attr", "__attributeNameForProperty", "__attributeToPropertyMap", "name", "options", "noAccessor", "descriptor", "getPropertyDescriptor", "oldValue", "requestUpdate", "configurable", "finalized", "superCtor", "getPrototypeOf", "props", "properties", "propKeys", "getOwnPropertyNames", "createProperty", "elementStyles", "finalizeStyles", "isArray", "Set", "flat", "Infinity", "reverse", "unshift", "toLowerCase", "__updatePromise", "res", "enableUpdating", "_$changedProperties", "__saveInstanceProperties", "addController", "controller", "__controllers", "isConnected", "hostConnected", "removeController", "splice", "_v", "__instanceProperties", "createRenderRoot", "shadowRoot", "attachShadow", "shadowRootOptions", "connectedCallback", "_requestedUpdate", "disconnectedCallback", "hostDisconnected", "attributeChangedCallback", "_old", "_$attributeToProperty", "__propertyToAttribute", "attrValue", "__reflectingProperty", "removeAttribute", "ctor", "propName", "getPropertyOptions", "shouldRequestUpdate", "__reflectingProperties", "isUpdatePending", "__enqueueUpdate", "async", "scheduleUpdate", "performUpdate", "hasUpdated", "shouldUpdate", "changedProperties", "willUpdate", "hostUpdate", "update", "__markUpdated", "_$didUpdate", "_changedProperties", "hostUpdated", "firstUpdated", "updated", "updateComplete", "getUpdateComplete", "mode", "globalThis", "reactiveElementVersions", "policy", "createPolicy", "createHTML", "marker", "Math", "random", "markerMatch", "nodeMarker", "createMarker", "createComment", "isPrimitive", "isIterable", "textEndRegex", "commentEndRegex", "comment2EndRegex", "tagEndRegex", "singleQuoteAttrEndRegex", "doubleQuoteAttrEndRegex", "rawTextElement", "tag", "_$litType$", "html", "svg", "noChange", "for", "nothing", "templateCache", "WeakMap", "render", "container", "partOwnerNode", "renderBefore", "part", "_$litPart$", "endNode", "ChildPart", "insertBefore", "_$setValue", "walker", "createTreeWalker", "getTemplateHtml", "rawTextEndRegex", "attrNames", "regex", "attrName", "match", "attrNameEndIndex", "lastIndex", "exec", "test", "RegExp", "end", "startsWith", "htmlResult", "Template", "node", "nodeIndex", "attrNameIndex", "partCount", "parts", "el", "currentNode", "content", "svgElement", "firstChild", "remove", "append", "childNodes", "nextNode", "nodeType", "hasAttributes", "attrsToRemove", "getAttributeNames", "endsWith", "realName", "statics", "getAttribute", "split", "index", "PropertyPart", "BooleanAttributePart", "EventPart", "AttributePart", "tagName", "data", "_options", "innerHTML", "resolveDirective", "attributeIndex", "parent", "currentDirective", "__directives", "__directive", "nextDirectiveConstructor", "_$litDirective$", "_$AO", "_$initialize", "_$resolve", "TemplateInstance", "template", "_$template", "_$parent", "parentNode", "_$isConnected", "_clone", "fragment", "creationScope", "importNode", "partIndex", "templatePart", "nextSibling", "ElementPart", "_parts", "_update", "startNode", "_$startNode", "_$endNode", "__isConnected", "_$committedValue", "_$clear", "_commitText", "_commitTemplateResult", "_commitNode", "_commitIterable", "_insert", "ref", "createTextNode", "_$getTemplate", "h", "instance", "itemPart", "itemParts", "item", "start", "_$notifyConnectionChanged", "setConnected", "element", "fill", "directiveParent", "valueIndex", "noCommit", "change", "_commitValue", "newListener", "oldListener", "shouldRemoveListener", "capture", "once", "passive", "shouldAddListener", "removeEventListener", "addEventListener", "handleEvent", "event", "host", "_$LH", "_boundAttributeSuffix", "_marker", "_markerMatch", "_HTML_RESULT", "_getTemplateHtml", "_TemplateInstance", "_isIterable", "_resolveDirective", "_ChildPart", "_AttributePart", "_BooleanAttributePart", "_EventPart", "_PropertyPart", "_ElementPart", "litHtmlPolyfillSupport", "litHtmlVersions", "UpdatingElement", "LitElement", "super", "renderOptions", "__childPart", "_$litElement$", "litElementHydrateSupport", "litElementPolyfillSupport", "_$LE", "litElementVersions", "customElement", "classOrDescriptor", "clazz", "customElements", "define", "elements", "finisher", "standardProperty", "placement", "originalKey", "property", "protoOrDescriptor", "proto", "legacyPrototypeMethod", "standardPrototypeMethod", "decorateProperty", "_ref", "info", "undefined", "eventOptions", "query", "selector", "cache", "querySelector", "queryAll", "_name", "querySelectorAll", "queryAsync", "slotAssignedElements", "HTMLSlotElement", "assignedElements", "slot", "opts", "assignedNodes", "filter", "Node", "ELEMENT_NODE", "queryAssignedElements", "slotSelector", "slotEl", "matches", "queryAssignedNodes", "slotOrOptions", "flatten", "assignedNodesOptions", "factory", "navigator", "svgNS", "locationHref", "_useWebWorker", "initialDefaultFrame", "setWebWorker", "flag", "getWebWorker", "setLocationHref", "getLocationHref", "createTag", "extendPrototype", "sources", "destination", "sourcePrototype", "len", "getDescriptor", "object", "prop", "createProxyFunction", "ProxyFunction", "audioControllerFactory", "AudioController", "audioFactory", "audios", "_volume", "_isMuted", "addAudio", "audio", "pause", "setRate", "rateValue", "createAudio", "assetPath", "Howl", "src", "isPlaying", "play", "seek", "playing", "rate", "setVolume", "setAudioFactory", "_updateVolume", "mute", "unmute", "getVolume", "volume", "createTypedArray", "createRegularArray", "arr", "Uint8ClampedArray", "Float32Array", "Int16Array", "createSizedArray", "_typeof$6", "obj", "subframeEnabled", "expressionsPlugin", "expressionsInterfaces", "idPrefix$1", "isSafari", "userAgent", "_shouldRoundValues", "bmPow", "pow", "bmSqrt", "sqrt", "bmFloor", "floor", "bmMax", "max", "bmMin", "min", "BMMath", "ProjectInterface$1", "propertyNames", "abs", "val", "absArr", "defaultCurveSegments", "degToRads", "PI", "roundCorner", "roundValues", "bmRnd", "round", "styleDiv", "position", "top", "left", "display", "transformOrigin", "webkitTransformOrigin", "backfaceVisibility", "webkitBackfaceVisibility", "transformStyle", "webkitTransformStyle", "mozTransformStyle", "BMEnterFrameEvent", "currentTime", "totalTime", "frameMultiplier", "direction", "BMCompleteEvent", "BMCompleteLoopEvent", "totalLoops", "currentLoop", "BMSegmentStartEvent", "firstFrame", "totalFrames", "BMDestroyEvent", "BMRenderFrameErrorEvent", "nativeError", "BMConfigErrorEvent", "BMAnimationConfigErrorEvent", "createElementID", "_count", "HSVtoRGB", "RGBtoHSV", "addSaturationToRGB", "color", "offset", "hsv", "addBrightnessToRGB", "addHueToRGB", "rgbToHex", "hex", "colorMap", "setSubframeEnabled", "getSubframeEnabled", "setExpressionsPlugin", "getExpressionsPlugin", "setExpressionInterfaces", "getExpressionInterfaces", "setDefaultCurveSegments", "getDefaultCurveSegments", "setIdPrefix", "getIdPrefix", "createNS", "createElementNS", "_typeof$5", "dataManager", "workerFn", "workerInstance", "_counterId", "processes", "workerProxy", "onmessage", "postMessage", "path", "_workerSelf", "setupWorker", "fn", "Worker", "Blob", "blob", "url", "URL", "createObjectURL", "completeLayers", "layers", "comps", "layerData", "jLen", "kLen", "completed", "hasMask", "maskProps", "masksProperties", "pt", "convertPathsToAbsoluteValues", "ty", "findCompLayers", "refId", "completeShapes", "shapes", "completeText", "id", "comp", "__used", "ks", "it", "checkVersion", "minimum", "animVersionString", "animVersion", "minimumVersion", "checkText", "iterateLayers", "textLayer", "documentData", "animationData", "assets", "checkChars", "chars", "charData", "ip", "st", "sr", "sk", "sa", "checkPathProperties", "pathData", "checkColors", "iterateShapes", "checkShapes", "completeClosingShapes", "closed", "cl", "moduleOb", "__complete", "dataFunctionManager", "assetLoader", "formatResponse", "xhr", "contentTypeHeader", "getResponseHeader", "responseType", "response", "responseText", "load", "fullPath", "callback", "errorCallback", "XMLHttpRequest", "err", "onreadystatechange", "readyState", "status", "open", "join", "send", "completeData", "payload", "animation", "process", "onComplete", "onError", "createProcess", "loadAnimation", "processId", "location", "origin", "pathname", "loadData", "completeAnimation", "anim", "ImagePreloader", "proxyImage", "canvas", "width", "height", "ctx", "getContext", "fillStyle", "fillRect", "imageLoaded", "loadedAssets", "totalImages", "loadedFootagesCount", "totalFootages", "imagesLoadedCb", "footageLoaded", "getAssetsPath", "assetData", "assetsPath", "originalPath", "imagePath", "u", "testImageLoaded", "img", "intervalId", "setInterval", "getBBox", "_imageLoaded", "clearInterval", "bind", "createFootageData", "ob", "footageData", "_footageLoaded", "ImagePreloaderFactory", "images", "loadAssets", "cb", "_createImageData", "setAssetsPath", "setPath", "loadedImages", "loadedFootages", "destroy", "getAsset", "createImgData", "crossOrigin", "createImageData", "setAttributeNS", "_elementHelper", "setCacheType", "elementHelper", "BaseEvent", "triggerEvent", "eventName", "args", "_cbs", "callbacks", "markerParser", "parsePayloadLines", "line", "lines", "keys", "keysCount", "trim", "_markers", "markers", "markerData", "time", "tm", "duration", "dr", "cm", "ProjectInterface", "registerComposition", "compositions", "_thisProjectFunction", "nm", "prepareFrame", "xt", "currentFrame", "compInterface", "renderers", "registerRenderer", "getRenderer", "_typeof$4", "AnimationItem", "isLoaded", "currentRawFrame", "frameRate", "frameMult", "playSpeed", "playDirection", "playCount", "isPaused", "autoplay", "loop", "renderer", "animationID", "timeCompleted", "segmentPos", "isSubframeEnabled", "segments", "_idle", "_completedLoop", "projectInterface", "imagePreloader", "audioController", "configAnimation", "onSetupError", "onSegmentComplete", "drawnFrameEvent", "setParams", "params", "wrapper", "animType", "RendererClass", "rendererSettings", "globalData", "defs", "setProjectInterface", "parseInt", "autoloadSegments", "initialSegment", "setupAnimation", "lastIndexOf", "substr", "fileName", "trigger", "setData", "wrapperAttributes", "getNamedItem", "prerender", "includeLayers", "newLayers", "fonts", "fontManager", "addChars", "addFonts", "initExpressions", "loadNextSegment", "segment", "segmentPath", "loadSegments", "imagesLoaded", "checkLoaded", "preloadImages", "animData", "fr", "searchExtraCompositions", "updaFrameModifier", "waitForFontsLoaded", "triggerConfigError", "setTimeout", "rendererType", "initItems", "gotoFrame", "resize", "_width", "_height", "updateContainerSize", "setSubframe", "renderFrame", "triggerRenderFrameError", "togglePause", "stop", "setCurrentRawFrameValue", "getMarkerData", "markerName", "goToAndStop", "isFrame", "numValue", "isNaN", "frameModifier", "goToAndPlay", "playSegments", "advanceTime", "nextValue", "_isComplete", "checkSegments", "adjustSegment", "setSpeed", "setDirection", "setSegment", "init", "pendingFrame", "forceFlag", "resetSegments", "onEnterFrame", "onLoopComplete", "onSegmentStart", "onDestroy", "getPath", "getAssetData", "hide", "show", "getDuration", "updateDocumentData", "getElementByPath", "animationManager", "registeredAnimations", "initTime", "playingAnimationsNum", "_stopped", "_isFrozen", "removeElement", "ev", "animItem", "subtractPlayingCount", "registerAnimation", "elem", "addPlayingCount", "activate", "nowTime", "elapsedTime", "requestAnimationFrame", "first", "searchAnimations", "standalone", "animElements", "getElementsByClassName", "lenAnims", "getElementsByTagName", "innerText", "div", "freeze", "unfreeze", "getRegisteredAnimations", "animations", "BezierFactory", "str", "replace", "beziers", "bezEasing", "BezierEasing", "kSampleStepSize", "float32ArraySupported", "A", "aA1", "aA2", "B", "C", "calcBezier", "aT", "getSlope", "points", "_p", "_mSampleValues", "_precomputed", "x", "mX1", "mY1", "mX2", "mY2", "_precompute", "_getTForX", "_calcSampleValues", "aX", "mSampleValues", "intervalStart", "currentSample", "kSplineTableSize", "guessForT", "initialSlope", "aGuessT", "currentSlope", "aA", "aB", "currentX", "currentT", "pooling", "double", "poolFactory", "initialLength", "_create", "_release", "_length", "_maxLength", "pool", "newElement", "release", "bezierLengthPool", "addedLength", "percents", "lengths", "segmentsLengthPool", "totalLength", "bezFunction", "math", "pointOnLine2D", "x1", "y1", "x2", "y2", "x3", "y3", "det1", "getBezierLength", "pt1", "pt2", "pt3", "pt4", "ptCoord", "perc", "ptDistance", "curveSegments", "point", "lastPoint", "lengthData", "BezierData", "segmentLength", "PointData", "partial", "partialLength", "storedData", "buildBezierData", "bezierName", "bezierData", "getDistancePerc", "initPos", "lengthPos", "lPerc", "dir", "bezierSegmentPoints", "getSegmentsLength", "shapeData", "segmentsLength", "pathV", "pathO", "pathI", "getNewSegment", "startPerc", "endPerc", "t0", "t1", "u0", "u1", "u0u0u0", "t0u0u0_3", "t0t0u0_3", "t0t0t0", "u0u0u1", "t0u0u1_3", "t0t0u1_3", "t0t0t1", "u0u1u1", "t0u1u1_3", "t0t1u1_3", "t0t1t1", "u1u1u1", "t1u1u1_3", "t1t1u1_3", "t1t1t1", "getPointInSegment", "percent", "pointOnLine3D", "z1", "z2", "z3", "diffDist", "dist1", "dist2", "dist3", "bez", "PropertyFactory", "initFrame", "mathAbs", "interpolateValue", "frameNum", "caching", "newValue", "offsetTime", "propType", "pv", "keyData", "nextKeyData", "keyframeMetadata", "fnc", "iterationIndex", "keyframes", "keyframesMetadata", "endValue", "out", "quat", "qx", "qy", "qz", "qw", "heading", "attitude", "bank", "nextKeyTime", "keyTime", "ti", "ind", "__fnct", "getBezierEasing", "segmentPerc", "distanceInLine", "lastFrame", "_lastKeyframeIndex", "_lastAddedLength", "_lastPoint", "outX", "outY", "inX", "inY", "keyValue", "sh", "quatStart", "createQuaternion", "quatEnd", "omega", "cosom", "sinom", "scale0", "scale1", "ax", "ay", "az", "aw", "bx", "by", "bz", "bw", "acos", "sin", "atan2", "asin", "c1", "cos", "c2", "c3", "s1", "s2", "s3", "getValueAtCurrentTime", "renderedFrame", "endTime", "_caching", "renderResult", "setVValue", "multipliedValue", "mult", "_mdf", "processEffectsSequence", "frameId", "effectsSequence", "lock", "_isFirstFrame", "finalValue", "kf", "addEffect", "effectFunction", "addDynamicProperty", "ValueProperty", "vel", "getValue", "MultiDimensionalProperty", "KeyframedValueProperty", "KeyframedMultidimensionalProperty", "arrLen", "getProp", "DynamicPropertyContainer", "dynamicProperties", "_isAnimated", "iterateDynamicProperties", "initDynamicPropertyContainer", "pointPool", "ShapePath", "setPathData", "setLength", "doubleArrayLength", "setXYAt", "pos", "setTripleAt", "vX", "vY", "oX", "oY", "iX", "iY", "newPath", "vertices", "outPoints", "inPoints", "cnt", "shapePool", "shapePath", "clone", "shape", "cloned", "ShapeCollection", "addShape", "releaseShapes", "shapeCollectionPool", "newShapeCollection", "shapeCollection", "ShapePropertyFactory", "interpolateShape", "previousValue", "keyPropS", "keyPropE", "isHold", "vertexValue", "interpolateShapeCurrentTime", "resetShape", "paths", "localShapeCollection", "shape1", "shape2", "ShapeProperty", "reset", "KeyframedShapeProperty", "EllShapeProperty", "cPoint", "EllShapePropertyFactory", "convertEllToPath", "p0", "p1", "s0", "_cw", "StarShapeProperty", "StarShapePropertyFactory", "sy", "ir", "is", "convertToPath", "convertStarToPath", "convertPolygonToPath", "or", "os", "rad", "roundness", "perimSegment", "numPts", "angle", "longFlag", "longRad", "shortRad", "longRound", "shortRound", "longPerimSegment", "shortPerimSegment", "currentAng", "ox", "oy", "RectShapeProperty", "RectShapePropertyFactory", "convertRectToPath", "v0", "v1", "Matrix", "_cos", "_sin", "_tan", "tan", "_rnd", "rotate", "mCos", "mSin", "_t", "rotateX", "rotateY", "rotateZ", "shear", "sx", "skew", "skewFromAxis", "scale", "sz", "setTransform", "translate", "tx", "tz", "transform", "a2", "b2", "d2", "e2", "f2", "g2", "h2", "i2", "j2", "l2", "m2", "n2", "o2", "p2", "_identityCalculated", "a1", "b1", "d1", "e1", "f1", "g1", "h1", "i1", "j1", "k1", "l1", "m1", "n1", "o1", "isIdentity", "_identity", "equals", "matr", "cloneFromProps", "applyToPoint", "z", "applyToX", "applyToY", "applyToZ", "getInverseMatrix", "determinant", "inverseMatrix", "inversePoint", "applyToPointArray", "inversePoints", "pts", "retPts", "applyToTriplePoints", "p4", "p5", "p12", "p13", "applyToPointStringified", "toCSS", "cssValue", "roundMatrixProperty", "to2dCSS", "_typeof$3", "lottie", "setLocation", "href", "setSubframeRendering", "setPrefix", "prefix", "setQuality", "inBrowser", "installPlugin", "plugin", "getFactory", "checkReady", "readyStateCheckInterval", "getQueryVariable", "variable", "vars", "queryString", "pair", "decodeURIComponent", "useWebWorker", "setIDPrefix", "__getFactory", "version", "scripts", "myScript", "exports", "bodymovin", "ShapeModifiers", "modifiers", "registerModifier", "getModifier", "ShapeModifier", "TrimModifier", "PuckerAndBloatModifier", "initModifierProperties", "addShapeToModifier", "setAsAnimated", "processKeys", "sValue", "eValue", "pathsData", "calculateShapeEdges", "shapeLength", "totalModifierLength", "segmentOb", "shapeSegments", "shapeS", "shapeE", "releasePathsData", "processShapes", "shapePaths", "_s", "totalShapeLength", "edges", "newShapesData", "addShapes", "lastShape", "addPaths", "newPaths", "addSegment", "newShape", "addSegmentFromArray", "shapeSegment", "currentLengthData", "segmentCount", "amount", "processPath", "centerPoint", "pathLength", "clonedPath", "TransformPropertyFactory", "defaultVector", "TransformProperty", "pre", "appliedTransformations", "px", "py", "pz", "rx", "ry", "rz", "_isDirty", "applyToMatrix", "mat", "forceRender", "precalculateMatrix", "autoOriented", "v2", "getValueAtTime", "autoOrient", "_addDynamicProperty", "getTransformProperty", "RepeaterModifier", "RoundCornersModifier", "floatEqual", "floatZero", "lerp", "lerpPoint", "quadRoots", "singleRoot", "delta", "polynomialCoefficients", "p3", "singlePoint", "PolynomialBezier", "linearize", "pointEqual", "coeffx", "coeffy", "extrema", "intersectData", "t2", "box", "boundingBox", "cx", "cy", "splitData", "boxIntersect", "intersectsImpl", "depth", "tolerance", "intersections", "maxRecursion", "d1s", "d2s", "crossProduct", "lineIntersection", "start1", "end1", "start2", "end2", "v3", "v4", "polarOffset", "pointDistance", "hypot", "ZigZagModifier", "setPoint", "outputBezier", "amplitude", "outAmplitude", "inAmplitude", "angO", "angI", "getPerpendicularVector", "vector", "rot", "getProjectingAngle", "cur", "prevIndex", "nextIndex", "pVector", "zigZagCorner", "frequency", "pointType", "prevPoint", "nextPoint", "prevDist", "nextDist", "zigZagSegment", "dist", "normalAngle", "linearOffset", "offsetSegment", "p1a", "p1b", "p2b", "p2a", "joinLines", "seg1", "seg2", "lineJoin", "miterLimit", "angleOut", "tangentAngle", "angleIn", "center", "radius", "intersection", "getIntersection", "intersect", "pruneSegmentIntersection", "outa", "outb", "pruneIntersections", "offsetSegmentSplit", "right", "mid", "flex", "inflectionPoints", "OffsetPathModifier", "getFontProperties", "fontData", "fStyle", "fWeight", "weight", "tr", "so", "eo", "pMatrix", "rMatrix", "sMatrix", "tMatrix", "matrix", "applyTransforms", "inv", "scaleX", "scaleY", "elemsData", "_currentCopies", "_elements", "_groups", "resetElements", "_processed", "cloneElements", "newElements", "changeGroupRender", "renderFlag", "_render", "items", "itemsTransform", "cont", "hasReloaded", "copies", "ceil", "group", "ix", "reloadShapes", "elems", "transformData", "offsetModulo", "roundOffset", "pProps", "rProps", "sProps", "iteration", "mProps", "rd", "currentV", "currentI", "currentO", "closerV", "distance", "newPosPerc", "derivative", "denom", "tcusp", "square", "root", "p10", "p11", "p20", "p21", "bounds", "bottom", "other", "shapeSegmentInverted", "pointsType", "count", "ml", "lj", "inputBezier", "multiSegments", "lastSeg", "multiSegment", "FontManager", "emptyChar", "w", "size", "combinedCharacters", "surrogateModifiers", "zeroWidthJoiner", "setUpNode", "font", "family", "fontFamily", "fontSize", "fontVariant", "fontStyle", "fontWeight", "letterSpacing", "offsetWidth", "familyArray", "enabledFamilies", "createHelper", "def", "helper", "engine", "fontProps", "tHelper", "fFamily", "fClass", "tCanvasHelper", "OffscreenCanvas", "measureText", "text", "getComputedTextLength", "Font", "typekitLoaded", "_warned", "Date", "now", "setIsLoadedBinded", "setIsLoaded", "checkLoadedFontsBinded", "checkLoadedFonts", "isModifier", "firstCharCode", "secondCharCode", "sum", "isZeroWidthJoiner", "isCombinedCharacter", "_char3", "fontPrototype", "found", "ch", "list", "fontArr", "_pendingFonts", "loadedSelector", "shouldLoadFont", "loaded", "monoCase", "sansCase", "fPath", "fOrigin", "rel", "sc", "getCharData", "_char", "charCodeAt", "console", "warn", "getFontByName", "fName", "_char2", "fontName", "doubleSize", "singleSize", "loadedCount", "removeChild", "RenderableElement", "initRenderable", "isInRange", "hidden", "isTransparent", "renderableComponents", "addRenderableComponent", "component", "removeRenderableComponent", "prepareRenderableFrame", "num", "checkLayerLimits", "checkTransparency", "finalTransform", "mProp", "renderConfig", "hideOnTransparent", "renderRenderable", "sourceRectAtTime", "getLayerSize", "textData", "getBlendMode", "blendModeEnums", "SliderEffect", "AngleEffect", "ColorEffect", "PointEffect", "LayerIndexEffect", "MaskIndexEffect", "CheckboxEffect", "NoValueEffect", "EffectsManager", "effects", "ef", "effectElements", "effectItem", "GroupEffect", "BaseElement", "FrameElement", "FootageElement", "imageLoader", "initBaseData", "AudioElement", "_isPlaying", "_canPlay", "_currentTime", "_volumeMultiplier", "_previousVolume", "_placeholder", "lv", "au", "BaseRenderer", "TransformElement", "MaskElement", "maskElement", "viewData", "solidPath", "rect", "expansor", "feMorph", "currentMasks", "layerId", "maskType", "maskRef", "getShapeProp", "lastPath", "filterID", "expan", "lastOperator", "filterId", "lastRadius", "mask", "createLayerSolidPath", "invRect", "drawPath", "maskedElement", "eff", "checkMasks", "LayerExpressionInterface", "EffectsExpressionInterface", "ShapeExpressionInterface", "TextExpressionInterface", "CompExpressionInterface", "layerInterface", "maskManager", "registerMaskInterface", "effectsInterface", "createEffectsInterface", "registerEffectsInterface", "shapeInterface", "shapesData", "itemsData", "textInterface", "setBlendMode", "blendModeValue", "bm", "baseElement", "layerElement", "effectsManager", "getType", "prepareProperties", "isVisible", "_isParent", "getBaseElement", "FootageInterface", "getFootageData", "timeRemapped", "totalVolume", "volumeValue", "checkLayers", "buildItem", "checkPendingElements", "createItem", "layer", "createImage", "createComp", "createSolid", "createNull", "createShape", "createText", "createCamera", "createFootage", "buildAllItems", "pInterface", "progressiveLoad", "buildElementParenting", "parentName", "hierarchy", "setAsParent", "setHierarchy", "addPendingElement", "pendingElements", "pathValue", "setupGlobalData", "fontsContainer", "animationItem", "compSize", "initTransform", "_matMdf", "_opMdf", "ao", "renderTransform", "finalMat", "globalToLocal", "transforms", "ptNew", "mHelper", "getMaskProperty", "isFirstFrame", "getMaskelement", "pathNodes", "pathString", "pathShapeValue", "filtersFactory", "filId", "skipCoordinates", "fil", "feColorMatrix", "featureSupport", "registeredEffects", "idPrefix", "SVGEffects", "filterManager", "source", "createFilter", "filters", "effect", "countsAsEffect", "registerEffect", "SVGBaseElement", "HierarchyElement", "RenderableDOMElement", "IImageElement", "initElement", "sourceRect", "ProcessedElement", "IShapeElement", "initRendererElement", "createContainerElements", "matteElement", "transformedElement", "_sizeChanged", "layerElementParent", "td", "matteMasks", "symbolElement", "gg", "tt", "ln", "hd", "cp", "clipId", "cpGroup", "renderElement", "destroyBaseElement", "createRenderableComponents", "renderableEffectsManager", "getMatte", "matteType", "useElement", "masker", "createAlphaToLuminanceFilter", "maskGroup", "maskGrouper", "feCTr", "feFunc", "alphaRect", "setMatte", "initHierarchy", "checkParenting", "createContent", "renderInnerContent", "innerElem", "pr", "imagePreserveAspectRatio", "addShapeToModifiers", "shapeModifiers", "isShapeInAnimatedModifiers", "isAnimatedWithShape", "renderModifiers", "searchProcessedElement", "processedElements", "addProcessedElement", "lineCapEnum", "lineJoinEnum", "SVGShapeData", "transformers", "level", "caches", "lStr", "lvl", "SVGStyleData", "pElem", "msElem", "DashProperty", "dataProps", "dashStr", "dashArray", "dashoffset", "SVGStrokeStyleData", "styleOb", "SVGFillStyleData", "SVGNoStyleData", "GradientProperty", "cLength", "_cmdf", "_omdf", "_collapsable", "checkCollapsable", "_hasOpacity", "SVGGradientFillStyleData", "initGradientData", "SVGGradientStrokeStyleData", "ShapeGroupData", "prevViewData", "gr", "SVGTransformData", "comparePoints", "stops", "setGradientData", "setGradientOpacity", "pathElement", "gradientId", "gfill", "gf", "cst", "opacityId", "maskId", "opFill", "lc", "of", "ms", "ost", "buildShapeString", "_o", "_i", "shapeString", "SVGElementsRenderer", "_identityMatrix", "_matrixHelper", "renderContentTransform", "styleData", "itemData", "renderNoop", "renderPath", "pathStringTransformed", "redraw", "iterations", "lLen", "renderFill", "styleElem", "renderGradientStroke", "renderGradient", "renderStroke", "hasOpacity", "attr1", "attr2", "cValues", "oValues", "ang", "createRenderFunction", "SVGShapeElement", "stylesList", "animatedContents", "LetterProps", "sw", "fc", "TextProperty", "_frameId", "keysIndex", "canResize", "minimumFontSize", "currentData", "ascent", "boxWidth", "defaultBoxWidth", "justifyOffset", "lh", "lineWidths", "ls", "ps", "fillColorAnim", "strokeColorAnim", "strokeWidthAnim", "yOffset", "finalSize", "finalText", "finalLineHeight", "copyData", "searchProperty", "completeTextData", "initSecondaryElement", "identityMatrix", "buildExpressionInterface", "searchShapes", "filterUniqueShapes", "tempShapes", "areAnimated", "setShapesAsAnimated", "createStyleElement", "elementData", "addToAnimatedContents", "createGroupElement", "createTransformElement", "transformProperty", "createShapeElement", "ownTransformers", "setElementStyles", "currentTransform", "modifier", "processedPos", "ownStyles", "ownModifiers", "renderShape", "animatedContent", "setCurrentData", "searchKeyframes", "getKeyframeValue", "_finalValue", "currentValue", "currentIndex", "textKeys", "buildFinalText", "charCode", "charactersArray", "shouldCombine", "charAt", "newLineFlag", "letters", "anchorGrouping", "currentSize", "currentPos", "currentLine", "lineWidth", "maxLineWidth", "trackingOffset", "currentHeight", "boxHeight", "lastSpaceIndex", "currentChar", "uncollapsedSpaces", "an", "add", "anIndexes", "animatorJustifyOffset", "extra", "animatorData", "letterData", "based", "animators", "indexes", "fh", "fs", "fb", "rn", "totalChars", "newInd", "currentInd", "newData", "dData", "recalculate", "canResizeFont", "_canResize", "setMinimumFontSize", "_fontValue", "TextSelectorProp", "TextSelectorPropFactory", "_currentTextLength", "finalS", "finalE", "xe", "ne", "sm", "getMult", "textProperty", "easer", "tot", "smoothness", "threshold", "newCharsFlag", "divisor", "getTextSelectorProp", "TextAnimatorDataProperty", "animatorProps", "defaultData", "textAnimatorAnimatables", "TextAnimatorProperty", "renderType", "_hasMaskedPath", "_textData", "_renderType", "_elem", "_animatorsData", "_pathData", "_moreOptions", "alignment", "renderedLetters", "lettersChangedFlag", "ITextElement", "searchProperties", "getMeasures", "xPos", "yPos", "pathInfo", "currentLength", "currentPoint", "pointInd", "segmentInd", "tanAngle", "matrixHelper", "renderedLettersCount", "tLength", "pi", "letterValue", "yOff", "firstLine", "offf", "xPathPos", "yPathPos", "elemOpacity", "letterSw", "letterSc", "letterFc", "letterO", "initPathPos", "initSegmentInd", "initPointInd", "letterM", "letterP", "defaultPropsArray", "animatorFirstCharOffset", "justifyOffsetMult", "isNewLine", "animatorOffset", "atan", "textAnimator", "buildNewText", "createPathShape", "shapeStr", "_fontSize", "applyTextPropertiesToMatrix", "lineNumber", "buildColor", "colorData", "emptyProp", "emptyShapeData", "SVGTextLottieElement", "textSpans", "ISolidElement", "NullElement", "SVGRendererBase", "ICompElement", "SVGCompElement", "supports3d", "SVGRenderer", "config", "ariaLabel", "title", "titleElement", "titleId", "description", "descElement", "descId", "preserveAspectRatio", "contentVisibility", "viewBoxOnly", "viewBoxSize", "className", "focusable", "filterSize", "runExpressions", "destroyed", "CVContextData", "saved", "cArrPos", "cTr", "cO", "savedOp", "ShapeTransformManager", "sequences", "sequenceList", "transform_key_count", "CVEffects", "CVMaskElement", "hasMasks", "CVBaseElement", "CVShapeData", "transformsManager", "styledShapes", "styledShape", "addTransformSequence", "trNodes", "CVShapeElement", "CVTextElement", "stroke", "currentRender", "sWidth", "fValue", "CVImageElement", "CVSolidElement", "CanvasRendererBase", "clearCanvas", "context", "dpr", "devicePixelRatio", "currentGlobalAlpha", "contextData", "transformMat", "CVCompElement", "CanvasRenderer", "HBaseElement", "HSolidElement", "HShapeElement", "shapesContainer", "currentBBox", "HTextElement", "textPaths", "isMasked", "HCameraElement", "pe", "_prevMat", "HImageElement", "HybridRendererBase", "threeDElements", "camera", "HCompElement", "HybridRenderer", "singleShape", "textContainer", "buildTextContents", "textArray", "textContents", "currentTextContent", "buildShapeData", "shapeItem", "tSpan", "usesGlyphs", "cachedSpansLength", "span", "childSpan", "glyph", "glyphElement", "_debug", "tElement", "justify", "textBox", "bbox", "renderedLetter", "textSpan", "findIndexByInd", "appendElementInPos", "elementIndex", "tp", "matteMask", "nextElement", "setElements", "getElements", "destroyElements", "duplicate", "newLength", "currentSavedOp", "sequence", "processSequence", "processSequences", "getNewKey", "canvasContext", "beginPath", "moveTo", "lineTo", "bezierCurveTo", "save", "clip", "createElements", "blendMode", "globalCompositeOperation", "hideElement", "showElement", "forceRealStack", "ctxTransform", "ctxOpacity", "restore", "transformHelper", "opacity", "dashResetter", "preTransforms", "co", "wi", "da", "addTransformToStyleList", "removeTransformFromStyleList", "closeStyles", "shouldRender", "ownTransforms", "_shouldRender", "renderShapeTransform", "parentTransform", "groupTransform", "drawLayer", "nodes", "currentStyle", "coOp", "strokeStyle", "grd", "lineCap", "setLineDash", "lineDashOffset", "closePath", "isMain", "renderGradientFill", "renderStyledShape", "shapeNodes", "groupTransformMat", "createLinearGradient", "createRadialGradient", "addColorStop", "hasFill", "hasStroke", "commands", "pathArr", "commandsCounter", "lastFill", "lastStroke", "lastStrokeW", "widthCrop", "heightCrop", "imgW", "imgH", "imgRel", "canvasRel", "par", "drawImage", "cProps", "trProps", "globalAlpha", "actionFlag", "popped", "containerStyle", "mozTransformOrigin", "transformCanvas", "isDashed", "elementWidth", "elementHeight", "elementRel", "animationRel", "offsetHeight", "fillType", "clearRect", "checkBlendMode", "tg", "transformedElementStyle", "matrixValue", "webkitTransform", "addEffects", "backgroundColor", "_renderShapeFrame", "shapeCont", "getTransformedPoint", "calculateShapeBoundingBox", "vPoint", "oPoint", "nextIPoint", "nextVPoint", "checkBounds", "getBoundsOfCurve", "shapeBoundingBox", "xMax", "yMax", "tempBoundingBox", "b2ac", "calculateF", "calculateBoundingBox", "expandStrokeBoundingBox", "widthProperty", "kfw", "currentBoxContains", "changed", "shapeStyle", "shapeTransform", "compW", "compH", "innerElemStyle", "textColor", "strokeWidth", "lineHeight", "tParent", "tCont", "children", "tContStyle", "tContTranslation", "tStyle", "tSpanTranslation", "svgStyle", "translation", "textPath", "margin", "svgTransform", "setup", "perspectiveStyle", "perspectiveElem", "perspective", "webkitPerspective", "mTransf", "diffVector", "mag", "lookDir", "lookLengthOnXZ", "mRotationX", "mRotationY", "hasMatrixChanged", "matValue", "Image", "imageElem", "newDOMElement", "ddd", "addTo3dContainer", "nextDOMElement", "nextLayer", "getThreeDContainerByPos", "startPos", "endPos", "createThreeDContainer", "threeDContainerData", "build3dContainers", "lastThreeDContainerData", "currentContainer", "resizerElem", "overflow", "cWidth", "cHeight", "floatingContainer", "_createBaseContainerElements", "_thisLayerFunction", "pixelAspect", "frameDuration", "displayStartTime", "numLayers", "Expressions", "stackCount", "registers", "pushExpression", "popExpression", "releaseInstances", "registerExpressionProperty", "expression", "MaskManagerInterface", "MaskInterface", "_mask", "_data", "_masksInterfaces", "ExpressionPropertyInterface", "defaultUnidimensionalValue", "defaultMultidimensionalValue", "completeProperty", "expressionValue", "getVelocityAtTime", "numKeys", "valueProp", "valueAtTime", "speedAtTime", "getSpeedAtTime", "velocityAtTime", "propertyGroup", "defaultGetter", "arrValue", "TransformExpressionInterface", "_thisFunction", "rotation", "xRotation", "yRotation", "xPosition", "yPosition", "zPosition", "anchorPoint", "_px", "_py", "_pz", "_transformFactory", "getMatrix", "toWorldMat", "toWorldVec", "applyPoint", "toWorld", "fromWorldVec", "invertPoint", "fromWorld", "fromComp", "sampleImage", "transformInterface", "toComp", "anchorPointDescriptor", "defineProperties", "hasParent", "anchor_point", "active", "startTime", "inPoint", "outPoint", "propertyGroupFactory", "interfaceFunction", "parentPropertyGroup", "PropertyInterface", "propertyName", "effectsData", "createGroupInterface", "groupInterface", "mn", "_propertyGroup", "createValueInterface", "numProperties", "np", "enabled", "en", "expressionProperty", "setGroupProperty", "ShapePathInterface", "view", "propertyIndex", "iterateElements", "groupInterfaceFactory", "fillInterfaceFactory", "strokeInterfaceFactory", "trimInterfaceFactory", "ellipseInterfaceFactory", "starInterfaceFactory", "rectInterfaceFactory", "roundedInterfaceFactory", "repeaterInterfaceFactory", "gradientFillInterfaceFactory", "interfaces", "transformInterfaceFactory", "cix", "startPoint", "endPoint", "_dashPropertyGroup", "dashOb", "addPropertyToDashOb", "dash", "skewAxis", "outerRadius", "outerRoundness", "innerRoundness", "innerRadius", "_interfaceFunction", "_prevValue", "_sourceText", "sourceText", "stringValue", "_typeof$2", "dataInterfaceFactory", "outlineInterface", "currentPropertyName", "currentProperty", "propertyNameIndex", "dataInterface", "footage", "getInterface", "_typeof$1", "seedRandom", "global", "startdenom", "significance", "ARC4", "keylen", "me", "S", "copy", "typ", "mixkey", "seed", "smear", "stringseed", "tostring", "fromCharCode", "shortseed", "entropy", "Uint8Array", "crypto", "msCrypto", "getRandomValues", "browser", "plugins", "screen", "autoseed", "arc4", "prng", "int32", "quick", "pass", "is_math_call", "initialize$2", "propTypes", "SHAPE", "_typeof", "ExpressionManager", "fetch", "frames", "$bm_isInstanceOfArray", "isNumerable", "tOfV", "$bm_neg", "tOfA", "lenA", "retArr", "easeInBez", "easeOutBez", "easeInOutBez", "tOfB", "lenB", "sub", "mul", "$bm_sum", "$bm_sub", "$bm_mul", "$bm_div", "$bm_mod", "clamp", "mm", "radiansToDegrees", "radians_to_degrees", "degreesToRadians", "degrees_to_radians", "helperLengthArray", "arr1", "arr2", "normalize", "vec", "rgbToHsl", "hue2rgb", "hslToRgb", "linear", "tMin", "tMax", "value1", "value2", "_tMin", "rnd", "createPath", "inTangents", "outTangents", "inVertexPoint", "outVertexPoint", "arrPlaceholder", "initiateExpression", "noOp", "_value", "needsVelocity", "_needsRandom", "elemType", "$bm_transform", "thisProperty", "loopIn", "loop_in", "loopOut", "loop_out", "smooth", "fromCompToSurface", "thisLayer", "thisComp", "scoped_bm_rt", "expression_function", "eval", "wiggle", "freq", "amp", "iWiggle", "lenWiggle", "addedAmps", "periods", "loopInDuration", "loopOutDuration", "velocity", "textIndex", "textTotal", "selectorValue", "lookAt", "elem1", "elem2", "fVec", "pitch", "easeOut", "val1", "val2", "applyEase", "easeIn", "ease", "iKey", "lenKey", "nearestKey", "obKey", "framesToTime", "fps", "timeToFrames", "seedrandom", "randSeed", "substring", "posterizeTime", "framesPerSecond", "executeExpression", "frameExpressionId", "__preventDeadCodeRemoval", "expressionHelpers", "searchExpressions", "speed", "_cachingAtTime", "getStaticValueAtTime", "addPropertyDecorator", "durationFlag", "cycleDuration", "firstKeyFrame", "ret", "lastKeyFrame", "initV", "endV", "current", "repeats", "lastValue", "nextLastValue", "firstValue", "nextFirstValue", "samples", "sampleValue", "sampleFrequency", "getTransformValueAtTime", "_transformCachingAtTime", "anchor", "rotationZ", "rotationY", "rotationX", "orientation", "positionX", "positionY", "positionZ", "getTransformStaticValueAtTime", "propertyGetProp", "ShapePropertyConstructorFunction", "getConstructorFunction", "KeyframedShapePropertyConstructorFunction", "getKeyframedConstructorFunction", "ShapeExpressions", "isClosed", "pointOnPath", "_segmentsLength", "accumulatedLength", "initIndex", "endIndex", "vectorOnPath", "vectorType", "xLength", "yLength", "magnitude", "tangentOnPath", "normalOnPath", "shapeValue", "lastTime", "propertyGetShapeProp", "trims", "initialize$1", "addDecorator", "getExpressionValue", "calculateExpression", "isKeyframed", "hasExpressions", "initialize", "SVGComposableEffect", "SVGTintFilter", "matrixFilter", "feMerge", "createMergeNode", "SVGFillFilter", "SVGStrokeEffect", "initialized", "SVGTritoneFilter", "feComponentTransfer", "feFuncR", "feFuncG", "feFuncB", "SVGProLevelsFilter", "createFeFunc", "feFuncA", "feFuncRComposed", "feFuncGComposed", "feFuncBComposed", "SVGDropShadowEffect", "globalFilterSize", "feGaussianBlur", "feOffset", "feFlood", "feComposite", "resultId", "ins", "feMergeNode", "colorBlack", "colorWhite", "groupPath", "elemChildren", "pathMasker", "dasharrayValue", "getTotalLength", "lineLength", "units", "color1", "color2", "color3", "tableR", "tableG", "tableB", "getTableValue", "inputBlack", "inputWhite", "gamma", "outputBlack", "outputWhite", "colorValue", "table", "outputDelta", "inputDelta", "col", "_svgMatteSymbols", "SVGMatte3Effect", "filterElem", "SVGGaussianBlurEffect", "findSymbol", "replaceInParent", "symbolId", "nextChild", "useElem", "setElementAsMask", "symbol", "sigma", "dimensions", "sigmaX", "sigmaY", "edgeMode", "module", "LOTTIE_PLAYER_VERSION", "LOTTIE_WEB_VERSION", "_templateObject", "_templateObject2", "_templateObject3", "_templateObject4", "_templateObject5", "PlayerState", "PlayMode", "PlayerEvents", "parseSrc", "isLottie", "json", "every", "field", "fromURL", "srcUrl", "LottiePlayer", "Loading", "Normal", "_this", "srcParsed", "jsonData", "srcAttrib", "_lottie", "webworkers", "_attachEventListeners", "disableCheck", "currentState", "dispatchEvent", "CustomEvent", "getLottie", "getVersions", "lottieWebVersion", "lottiePlayerVersion", "Playing", "Play", "Paused", "Pause", "_counter", "Stopped", "Stop", "Destroyed", "frame", "seeker", "snapshot", "download", "XMLSerializer", "serializeToString", "encodeURIComponent", "click", "setLooping", "togglePlay", "toggleLooping", "_io", "disconnect", "_onVisibilityChange", "controls", "animationClass", "background", "disableShadowDOM", "renderControls", "IntersectionObserver", "entries", "isIntersecting", "Frozen", "observe", "Rendered", "isStopped", "_handleSeekChange", "_prevState", "Frame", "detail", "Complete", "Bounce", "Loop", "intermission", "Ready", "Load", "hover", "Freeze", "Rails", "turbo_es2017_esm_exports", "pageLoader", "yieldedContent", "tooltipTriggerList", "tooltipTriggerEl", "Tooltip"]
}