{"version":3,"file":"adminconsole.js","mappings":"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","sources":["webpack:///./node_modules/.aspect_rules_js/@emotion+sheet@1.4.0/node_modules/@emotion/sheet/dist/emotion-sheet.esm.js","webpack:///./node_modules/.aspect_rules_js/stylis@4.2.0/node_modules/stylis/src/Utility.js","webpack:///./node_modules/.aspect_rules_js/stylis@4.2.0/node_modules/stylis/src/Tokenizer.js","webpack:///./node_modules/.aspect_rules_js/stylis@4.2.0/node_modules/stylis/src/Enum.js","webpack:///./node_modules/.aspect_rules_js/stylis@4.2.0/node_modules/stylis/src/Serializer.js","webpack:///./node_modules/.aspect_rules_js/stylis@4.2.0/node_modules/stylis/src/Parser.js","webpack:///./node_modules/.aspect_rules_js/@emotion+cache@11.11.0/node_modules/@emotion/cache/dist/emotion-cache.browser.esm.js","webpack:///./node_modules/.aspect_rules_js/@emotion+unitless@0.8.1/node_modules/@emotion/unitless/dist/emotion-unitless.esm.js","webpack:///./node_modules/.aspect_rules_js/@emotion+memoize@0.8.1/node_modules/@emotion/memoize/dist/emotion-memoize.esm.js","webpack:///./node_modules/.aspect_rules_js/@emotion+serialize@1.1.3/node_modules/@emotion/serialize/dist/emotion-serialize.browser.esm.js","webpack:///./node_modules/.aspect_rules_js/@emotion+hash@0.9.1/node_modules/@emotion/hash/dist/emotion-hash.esm.js","webpack:///./node_modules/.aspect_rules_js/@emotion+utils@1.2.1/node_modules/@emotion/utils/dist/emotion-utils.browser.esm.js","webpack:///./node_modules/.aspect_rules_js/@emotion+css@11.9.0_at_babel_core_7.26.0/node_modules/@emotion/css/create-instance/dist/emotion-css-create-instance.esm.js","webpack:///./node_modules/.aspect_rules_js/@emotion+css@11.9.0_at_babel_core_7.26.0/node_modules/@emotion/css/dist/emotion-css.esm.js","webpack:///./node_modules/.aspect_rules_js/stylis@4.2.0/node_modules/stylis/src/Middleware.js","webpack:///./node_modules/.aspect_rules_js/@mancusi+react-diff-viewer@github.com+mancusi+react-diff-viewer+277414d17a0216cd4c8546c08fa8db03355ff576_-1232469565/node_modules/@mancusi/react-diff-viewer/lib/compute-lines.js","webpack:///./node_modules/.aspect_rules_js/@mancusi+react-diff-viewer@github.com+mancusi+react-diff-viewer+277414d17a0216cd4c8546c08fa8db03355ff576_-1232469565/node_modules/@mancusi/react-diff-viewer/lib/index.js","webpack:///./node_modules/.aspect_rules_js/@mancusi+react-diff-viewer@github.com+mancusi+react-diff-viewer+277414d17a0216cd4c8546c08fa8db03355ff576_-1232469565/node_modules/@mancusi/react-diff-viewer/lib/styles.js","webpack:///packages/@react-aria/focus/src/focusSafely.ts","webpack:///packages/@react-aria/focus/src/isElementVisible.ts","webpack:///packages/@react-aria/focus/src/FocusScope.tsx","webpack:///packages/@react-aria/focus/src/useFocusRing.ts","webpack:///packages/@react-aria/focus/src/FocusRing.tsx","webpack:///packages/@react-aria/focus/src/useFocusable.tsx","webpack:///packages/@react-aria/focus/src/useHasTabbableChild.ts","webpack:///packages/@react-aria/interactions/src/textSelection.ts","webpack:///packages/@react-aria/interactions/src/context.ts","webpack:///packages/@react-aria/interactions/src/usePress.ts","webpack:///packages/@react-aria/interactions/src/Pressable.tsx","webpack:///packages/@react-aria/interactions/src/PressResponder.tsx","webpack:///packages/@react-aria/interactions/src/utils.ts","webpack:///packages/@react-aria/interactions/src/useFocus.ts","webpack:///packages/@react-aria/interactions/src/useFocusVisible.ts","webpack:///packages/@react-aria/interactions/src/useFocusWithin.ts","webpack:///packages/@react-aria/interactions/src/useHover.ts","webpack:///packages/@react-aria/interactions/src/useInteractOutside.ts","webpack:///packages/@react-aria/interactions/src/createEventHandler.ts","webpack:///packages/@react-aria/interactions/src/useKeyboard.ts","webpack:///packages/@react-aria/interactions/src/useMove.ts","webpack:///packages/@react-aria/interactions/src/useScrollWheel.ts","webpack:///packages/@react-aria/interactions/src/useLongPress.ts","webpack:///../../../../packages/@react-aria/ssr/src/SSRProvider.tsx","webpack:///packages/@react-aria/utils/src/useLayoutEffect.ts","webpack:///packages/@react-aria/utils/src/useEffectEvent.ts","webpack:///packages/@react-aria/utils/src/useValueEffect.ts","webpack:///packages/@react-aria/utils/src/useId.ts","webpack:///packages/@react-aria/utils/src/chain.ts","webpack:///packages/@react-aria/utils/src/domHelpers.ts","webpack:///packages/@react-aria/utils/src/mergeProps.ts","webpack:///packages/@react-aria/utils/src/mergeRefs.ts","webpack:///packages/@react-aria/utils/src/filterDOMProps.ts","webpack:///packages/@react-aria/utils/src/focusWithoutScrolling.ts","webpack:///packages/@react-aria/utils/src/getOffset.ts","webpack:///packages/@react-aria/utils/src/platform.ts","webpack:///packages/@react-aria/utils/src/openLink.tsx","webpack:///packages/@react-aria/utils/src/runAfterTransition.ts","webpack:///packages/@react-aria/utils/src/useDrag1D.ts","webpack:///packages/@react-aria/utils/src/useGlobalListeners.ts","webpack:///packages/@react-aria/utils/src/useLabels.ts","webpack:///packages/@react-aria/utils/src/useObjectRef.ts","webpack:///packages/@react-aria/utils/src/useUpdateEffect.ts","webpack:///packages/@react-aria/utils/src/useResizeObserver.ts","webpack:///packages/@react-aria/utils/src/useSyncRef.ts","webpack:///packages/@react-aria/utils/src/getScrollParent.ts","webpack:///packages/@react-aria/utils/src/useViewportSize.ts","webpack:///packages/@react-aria/utils/src/useDescription.ts","webpack:///packages/@react-aria/utils/src/useEvent.ts","webpack:///packages/@react-aria/utils/src/scrollIntoView.ts","webpack:///packages/@react-aria/utils/src/isVirtualEvent.ts","webpack:///packages/@react-aria/utils/src/useDeepMemo.ts","webpack:///packages/@react-aria/utils/src/useFormReset.ts","webpack:///packages/@react-stately/utils/src/useControlledState.ts","webpack:///packages/@react-stately/utils/src/number.ts","webpack:///../../src/is.ts","webpack:///../../../src/integrations/functiontostring.ts","webpack:///../../src/browser.ts","webpack:///../../src/string.ts","webpack:///../../src/object.ts","webpack:///../../src/logger.ts","webpack:///../../src/misc.ts","webpack:///../../../src/integrations/inboundfilters.ts","webpack:///../../src/syncpromise.ts","webpack:///../../src/session.ts","webpack:///../../src/scope.ts","webpack:///../../src/hub.ts","webpack:///../../src/exports.ts","webpack:///../../src/error.ts","webpack:///../../src/envelope.ts","webpack:///../../../src/transports/base.ts","webpack:///../../src/promisebuffer.ts","webpack:///../../src/ratelimit.ts","webpack:///../../src/stacktrace.ts","webpack:///../../src/supports.ts","webpack:///../../src/instrument.ts","webpack:///../../src/normalize.ts","webpack:///../../src/memo.ts","webpack:///../../../src/eventbuilder.ts","webpack:///../../../src/helpers.ts","webpack:///../../../../src/integrations/globalhandlers.ts","webpack:///../../../../src/integrations/trycatch.ts","webpack:///../../../../src/integrations/breadcrumbs.ts","webpack:///../../src/severity.ts","webpack:///../../../../src/integrations/linkederrors.ts","webpack:///../../../../src/integrations/httpcontext.ts","webpack:///../../../../src/integrations/dedupe.ts","webpack:///../../src/dsn.ts","webpack:///../../src/api.ts","webpack:///../../src/integration.ts","webpack:///../../src/baseclient.ts","webpack:///../../../../src/transports/utils.ts","webpack:///../../src/baggage.ts","webpack:///../../../src/client.ts","webpack:///../../src/clientreport.ts","webpack:///../../../../src/transports/fetch.ts","webpack:///../../../../src/transports/xhr.ts","webpack:///../../../src/stack-parsers.ts","webpack:///../../../src/sdk.ts","webpack:///../../src/sdk.ts","webpack:///../../../src/index.ts","webpack:///../../src/global.ts","webpack:///../../src/node.ts","webpack:///../../src/env.ts","webpack:///../../src/time.ts","webpack:///./node_modules/.aspect_rules_js/classnames@2.3.1/node_modules/classnames/index.js","webpack:///./node_modules/.aspect_rules_js/clsx@2.1.0/node_modules/clsx/dist/clsx.js","webpack:///./node_modules/.aspect_rules_js/css-loader@5.2.7_webpack_5.76.3/node_modules/css-loader/dist/runtime/api.js","webpack:///./node_modules/.aspect_rules_js/css-loader@5.2.7_webpack_5.76.3/node_modules/css-loader/dist/runtime/cssWithMappingToString.js","webpack:///./node_modules/.aspect_rules_js/diff@4.0.2/node_modules/diff/dist/diff.js","webpack:///./node_modules/.aspect_rules_js/focus-trap-react@10.1.4_737173610/node_modules/focus-trap-react/dist/focus-trap-react.js","webpack:///../index.js","webpack:///./node_modules/.aspect_rules_js/jquery@3.6.0/node_modules/jquery/dist/jquery.js","webpack:///./node_modules/.aspect_rules_js/memoize-one@5.2.1/node_modules/memoize-one/dist/memoize-one.esm.js","webpack:///./node_modules/.aspect_rules_js/no-scroll@2.1.1/node_modules/no-scroll/index.js","webpack:///./node_modules/.aspect_rules_js/prop-types@15.8.1/node_modules/prop-types/factoryWithThrowingShims.js","webpack:///./node_modules/.aspect_rules_js/prop-types@15.8.1/node_modules/prop-types/index.js","webpack:///./node_modules/.aspect_rules_js/prop-types@15.8.1/node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack:///./node_modules/.aspect_rules_js/react-aria-modal@5.0.2_737173610/node_modules/react-aria-modal/dist/react-aria-modal.js","webpack:///../src/index.js","webpack:///./tools/js/svg/templates/svg.module.scss.module.css","webpack:///./ui/components/button/button.module.scss.module.css","webpack:///./ui/components/checkbox/checkbox.module.scss.module.css","webpack:///./ui/components/dropdowntrigger/dropdowntrigger.module.scss.module.css","webpack:///./ui/components/input/input.module.scss.module.css","webpack:///./ui/components/menu/menu.module.scss.module.css","webpack:///./ui/components/modal/modal.module.scss.module.css","webpack:///./ui/components/select/standard/standard.module.scss.module.css","webpack:///./ui/components/tooltip/tooltip.module.scss.module.css","webpack:///./ui/utilities/a11y.module.scss.module.css","webpack:///./tools/js/svg/templates/svg.module.scss.module.css?1d65","webpack:///./ui/components/button/button.module.scss.module.css?1362","webpack:///./ui/components/checkbox/checkbox.module.scss.module.css?fde8","webpack:///./ui/components/dropdowntrigger/dropdowntrigger.module.scss.module.css?2e5e","webpack:///./ui/components/input/input.module.scss.module.css?5575","webpack:///./ui/components/menu/menu.module.scss.module.css?b41a","webpack:///./ui/components/modal/modal.module.scss.module.css?969f","webpack:///./ui/components/select/standard/standard.module.scss.module.css?7926","webpack:///./ui/components/tooltip/tooltip.module.scss.module.css?e6ba","webpack:///./ui/utilities/a11y.module.scss.module.css?b410","webpack:///./node_modules/.aspect_rules_js/style-loader@2.0.0_webpack_5.76.3/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js","webpack:///external var \"React\"","webpack:///external var \"ReactDOM\"","webpack:///./node_modules/.aspect_rules_js/@swc+helpers@0.5.3/node_modules/@swc/helpers/cjs/_check_private_redeclaration.cjs","webpack:///./node_modules/.aspect_rules_js/@swc+helpers@0.5.3/node_modules/@swc/helpers/cjs/_class_apply_descriptor_get.cjs","webpack:///./node_modules/.aspect_rules_js/@swc+helpers@0.5.3/node_modules/@swc/helpers/cjs/_class_apply_descriptor_set.cjs","webpack:///./node_modules/.aspect_rules_js/@swc+helpers@0.5.3/node_modules/@swc/helpers/cjs/_class_extract_field_descriptor.cjs","webpack:///./node_modules/.aspect_rules_js/@swc+helpers@0.5.3/node_modules/@swc/helpers/cjs/_class_private_field_get.cjs","webpack:///./node_modules/.aspect_rules_js/@swc+helpers@0.5.3/node_modules/@swc/helpers/cjs/_class_private_field_init.cjs","webpack:///./node_modules/.aspect_rules_js/@swc+helpers@0.5.3/node_modules/@swc/helpers/cjs/_class_private_field_set.cjs","webpack:///webpack/bootstrap","webpack:///webpack/runtime/amd options","webpack:///webpack/runtime/compat get default export","webpack:///webpack/runtime/define property getters","webpack:///webpack/runtime/global","webpack:///webpack/runtime/harmony module decorator","webpack:///webpack/runtime/hasOwnProperty shorthand","webpack:///webpack/runtime/make namespace object","webpack:///webpack/runtime/node module decorator","webpack:///webpack/runtime/nonce","webpack:///../../../../../../../../../../../../../../external/com_google_javascript_closure_library/closure/goog/base.js","webpack:///../../../../../../../../../../../../../../src/com/google/javascript/jscomp/js/es6/util/arrayiterator.js","webpack:///../../../../../../../../../../../../../../src/com/google/javascript/jscomp/js/es6/util/makeiterator.js","webpack:///../../../../../../../../../../../../../../src/com/google/javascript/jscomp/js/es6/util/arrayfromiterable.js","webpack:///../../../../../../../../../../../../../../src/com/google/javascript/jscomp/js/es6/util/arrayfromiterator.js","webpack:///../../../../../../../../../../../../../../src/com/google/javascript/jscomp/js/util/owns.js","webpack:///../../../../../../../../../../../../../../src/com/google/javascript/jscomp/js/util/defineproperty.js","webpack:///../../../../../../../../../../../../../../src/com/google/javascript/jscomp/js/util/global.js","webpack:///../../../../../../../../../../../../../../src/com/google/javascript/jscomp/js/util/polyfill.js","webpack:///../../../../../../../../../../../../../../src/com/google/javascript/jscomp/js/es6/util/assign.js","webpack:///../../../../../../../../../../../../../../src/com/google/javascript/jscomp/js/es6/object/assign.js","webpack:///../../../../../../../../../../../../../../src/com/google/javascript/jscomp/js/es6/util/setprototypeof.js","webpack:///../../../../../../../../../../../../../../src/com/google/javascript/jscomp/js/util/objectcreate.js","webpack:///../../../../../../../../../../../../../../src/com/google/javascript/jscomp/js/es6/util/inherits.js","webpack:///../../../../../../../../../../../../../../src/com/google/javascript/jscomp/js/es6/util/restarguments.js","webpack:///../../../../../../../../../../../../../../src/com/google/javascript/jscomp/js/es6/symbol.js","webpack:///../../../../../../../../../../../../../../src/com/google/javascript/jscomp/js/util/checkstringargs.js","webpack:///../../../../../../../../../../../../../../src/com/google/javascript/jscomp/js/es6/util/iteratorfromarray.js","webpack:///../../../../../../../../../../../../../../src/com/google/javascript/jscomp/js/es6/promise/promise.js","webpack:///../../../../../../../../../../../../../../src/com/google/javascript/jscomp/js/es6/object/is.js","webpack:///../../../../../../../../../../../../../../src/com/google/javascript/jscomp/js/es6/array/includes.js","webpack:///../../../../../../../../../../../../../../src/com/google/javascript/jscomp/js/es6/string/includes.js","webpack:///../../../../../../../../../../../../../../src/com/google/javascript/jscomp/js/es6/weakmap.js","webpack:///../../../../../../../../../../../../../../src/com/google/javascript/jscomp/js/es6/map.js","webpack:///../../../../../../../../../../../../../../src/com/google/javascript/jscomp/js/es6/string/endswith.js","webpack:///../../../../../../../../../../../../../../src/com/google/javascript/jscomp/js/es6/array/find.js","webpack:///../../../../../../../../../../../../../../src/com/google/javascript/jscomp/js/util/findinternal.js","webpack:///../../../../../../../../../../../../../../src/com/google/javascript/jscomp/js/es6/string/startswith.js","webpack:///../../../../../../../../../../../../../../src/com/google/javascript/jscomp/js/es6/array/keys.js","webpack:///../../../../../../../../../../../../../../src/com/google/javascript/jscomp/js/es6/set.js","webpack:///../../../../../../../../../../../../../../src/com/google/javascript/jscomp/js/es6/object/values.js","webpack:///../../../../../../../../../../../../../../src/com/google/javascript/jscomp/js/es6/array/flatmap.js","webpack:///../../../../../../../../../../../../../../src/com/google/javascript/jscomp/js/es6/array/from.js","webpack:///../../../../../../../../../../../../../../src/com/google/javascript/jscomp/js/es6/array/values.js","webpack:///../../../../../../../../../../../../../../src/com/google/javascript/jscomp/js/es6/object/entries.js","webpack:///../../../../../../../../../../../../../../src/com/yext/m4/components/errors/diagnosticdata.js","webpack:///../../../../../../../../../../../../../../src/com/yext/m4/components/errors/errorsservice.js","webpack:///../../../../../../../../../../../../../../js/yext/i18n/languagepluralizers.js","webpack:///../../../../../../../../../../../../../../external/com_google_javascript_closure_library/closure/goog/dom/nodetype.js","webpack:///../../../../../../../../../../../../../../external/com_google_javascript_closure_library/closure/goog/array/array.js","webpack:///../../../../../../../../../../../../../../external/com_google_javascript_closure_library/closure/goog/string/internal.js","webpack:///../../../../../../../../../../../../../../external/com_google_javascript_closure_library/closure/goog/labs/useragent/util.js","webpack:///../../../../../../../../../../../../../../external/com_google_javascript_closure_library/closure/goog/labs/useragent/browser.js","webpack:///../../../../../../../../../../../../../../external/com_google_javascript_closure_library/closure/goog/html/safehtml.js","webpack:///../../../../../../../../../../../../../../js/yext/yexti18n.js","webpack:///../../../../../../../../../../../../../../src/com/yext/m4/components/routes.js","webpack:///../../../../../../../../../../../../../../src/com/yext/m4/components/codeeditor/codeeditor.js","webpack:///../../../../../../../../../../../../../../src/com/yext/m4/confcode/adminconsole/js/adminconsolecontroller.js","webpack:///../../../../../../../../../../../../../../ui/components/pendo/pendo.jsx","webpack:///../../../../../../../../../../../../../../ui/design/hasManaUITheme.js","webpack:///../../../../../../../../../../../../../../ui/lib/classnames.js","webpack:///../../../../../../../../../../../../../../ui/components/button/button.module.scss.js","webpack:///../../../../../../../../../../../../../../ui/components/button/button.jsx","webpack:///../../../../../../../../../../../../../../ui/lib/containers.js","webpack:///../../../../../../../../../../../../../../ui/lib/errors.js","webpack:///../../../../../../../../../../../../../../ui/lib/languagepluralizers.js","webpack:///../../../../../../../../../../../../../../ui/lib/msg.js","webpack:///../../../../../../../../../../../../../../ui/lib/uid.js","webpack:///../../../../../../../../../../../../../../ui/icons/inline/medium-x.svg.jsx","webpack:///../../../../../../../../../../../../../../ui/components/modal/modal.module.scss.js","webpack:///../../../../../../../../../../../../../../tools/js/svg/templates/svg.module.scss.js","webpack:///../../../../../../../../../../../../../../ui/components/modal/modal.jsx","webpack:///../../../../../../../../../../../../../../ui/components/modal/dialog.jsx","webpack:///../../../../../../../../../../../../../../ui/components/checkbox/icons/check.svg.jsx","webpack:///../../../../../../../../../../../../../../ui/components/checkbox/checkbox.module.scss.js","webpack:///../../../../../../../../../../../../../../ui/components/checkbox/checkbox.jsx","webpack:///../../../../../../../../../../../../../../ui/components/radio/radio.jsx","webpack:///../../../../../../../../../../../../../../ui/components/select/model/optionstates.js","webpack:///../../../../../../../../../../../../../../ui/components/select/types/option.js","webpack:///../../../../../../../../../../../../../../ui/components/select/model/option.js","webpack:///../../../../../../../../../../../../../../ui/components/select/model/optionstatetree.js","webpack:///../../../../../../../../../../../../../../external/com_google_javascript_closure_library/closure/goog/events/event.js","webpack:///../../../../../../../../../../../../../../external/com_google_javascript_closure_library/closure/goog/events/browserfeature.js","webpack:///../../../../../../../../../../../../../../external/com_google_javascript_closure_library/closure/goog/labs/useragent/platform.js","webpack:///../../../../../../../../../../../../../../external/com_google_javascript_closure_library/closure/goog/reflect/reflect.js","webpack:///../../../../../../../../../../../../../../external/com_google_javascript_closure_library/closure/goog/useragent/useragent.js","webpack:///../../../../../../../../../../../../../../external/com_google_javascript_closure_library/closure/goog/labs/useragent/engine.js","webpack:///../../../../../../../../../../../../../../external/com_google_javascript_closure_library/closure/goog/dom/dom.js","webpack:///../../../../../../../../../../../../../../external/com_google_javascript_closure_library/closure/goog/events/browserevent.js","webpack:///../../../../../../../../../../../../../../external/com_google_javascript_closure_library/closure/goog/events/eventtype.js","webpack:///../../../../../../../../../../../../../../external/com_google_javascript_closure_library/closure/goog/events/listenable.js","webpack:///../../../../../../../../../../../../../../external/com_google_javascript_closure_library/closure/goog/events/listenablekey.js","webpack:///../../../../../../../../../../../../../../external/com_google_javascript_closure_library/closure/goog/events/listener.js","webpack:///../../../../../../../../../../../../../../external/com_google_javascript_closure_library/closure/goog/events/listenermap.js","webpack:///../../../../../../../../../../../../../../external/com_google_javascript_closure_library/closure/goog/events/events.js","webpack:///../../../../../../../../../../../../../../external/com_google_javascript_closure_library/closure/goog/math/coordinate.js","webpack:///../../../../../../../../../../../../../../external/com_google_javascript_closure_library/closure/goog/math/box.js","webpack:///../../../../../../../../../../../../../../external/com_google_javascript_closure_library/closure/goog/math/size.js","webpack:///../../../../../../../../../../../../../../external/com_google_javascript_closure_library/closure/goog/math/rect.js","webpack:///../../../../../../../../../../../../../../external/com_google_javascript_closure_library/closure/goog/style/style.js","webpack:///../../../../../../../../../../../../../../external/com_google_javascript_closure_library/closure/goog/dom/tagname.js","webpack:///../../../../../../../../../../../../../../external/com_google_javascript_closure_library/closure/goog/useragent/platform.js","webpack:///../../../../../../../../../../../../../../external/com_google_javascript_closure_library/closure/goog/useragent/product.js","webpack:///../../../../../../../../../../../../../../external/com_google_javascript_closure_library/closure/goog/useragent/product_isversion.js","webpack:///../../../../../../../../../../../../../../external/com_google_javascript_closure_library/closure/goog/positioning/positioning.js","webpack:///../../../../../../../../../../../../../../external/com_google_javascript_closure_library/closure/goog/style/bidi.js","webpack:///../../../../../../../../../../../../../../external/com_google_javascript_closure_library/closure/goog/positioning/abstractposition.js","webpack:///../../../../../../../../../../../../../../external/com_google_javascript_closure_library/closure/goog/positioning/anchoredposition.js","webpack:///../../../../../../../../../../../../../../external/com_google_javascript_closure_library/closure/goog/positioning/anchoredviewportposition.js","webpack:///../../../../../../../../../../../../../../ui/components/dropdowntrigger/dropdowntrigger.module.scss.js","webpack:///../../../../../../../../../../../../../../ui/components/dropdowntrigger/dropdowntrigger.jsx","webpack:///../../../../../../../../../../../../../../ui/lib/debounce.js","webpack:///../../../../../../../../../../../../../../ui/components/select/native/nativeselectlist.jsx","webpack:///../../../../../../../../../../../../../../ui/components/select/native/nativeselectoption.jsx","webpack:///../../../../../../../../../../../../../../ui/components/select/native/nativeselectgroup.jsx","webpack:///../../../../../../../../../../../../../../ui/components/select/native/nativeselectplaceholder.jsx","webpack:///../../../../../../../../../../../../../../ui/components/select/filterbar/filterbar.jsx","webpack:///../../../../../../../../../../../../../../ui/components/select/standard/selectoptionlabel.jsx","webpack:///../../../../../../../../../../../../../../ui/components/select/standard/standard.module.scss.js","webpack:///../../../../../../../../../../../../../../ui/components/select/standard/multiselectoption.jsx","webpack:///../../../../../../../../../../../../../../ui/components/keyboardaccessiblelist/keyboardaccessiblelist.jsx","webpack:///../../../../../../../../../../../../../../ui/components/select/menuaim/menuaim.js","webpack:///../../../../../../../../../../../../../../ui/components/select/standard/selectlist.jsx","webpack:///../../../../../../../../../../../../../../ui/components/select/standard/selectoption.jsx","webpack:///../../../../../../../../../../../../../../ui/components/select/standard/filteredselectlist.jsx","webpack:///../../../../../../../../../../../../../../ui/components/select/standard/selectactionlink.jsx","webpack:///../../../../../../../../../../../../../../ui/components/select/standard/selectgroupheading.jsx","webpack:///../../../../../../../../../../../../../../ui/components/select/standard/selectgroup.jsx","webpack:///../../../../../../../../../../../../../../ui/components/select/root/selectdropdowncontent.jsx","webpack:///../../../../../../../../../../../../../../ui/components/select/root/selectroot.jsx","webpack:///../../../../../../../../../../../../../../ui/components/select/types/config.js","webpack:///../../../../../../../../../../../../../../ui/components/select/selectcontroller.jsx","webpack:///../../../../../../../../../../../../../../ui/components/tooltip/tooltip.module.scss.js","webpack:///../../../../../../../../../../../../../../ui/components/tooltip/tooltip.jsx","webpack:///../../../../../../../../../../../../../../ui/components/button/embeddedfieldbutton.jsx","webpack:///../../../../../../../../../../../../../../ui/components/button/embeddfieldbuttonhelper.js","webpack:///../../../../../../../../../../../../../../ui/icons/inline/arrow-down.svg.jsx","webpack:///../../../../../../../../../../../../../../ui/icons/inline/arrow-up.svg.jsx","webpack:///../../../../../../../../../../../../../../ui/icons/inline/search.svg.jsx","webpack:///../../../../../../../../../../../../../../ui/components/input/input.module.scss.js","webpack:///../../../../../../../../../../../../../../ui/components/input/input.jsx","webpack:///../../../../../../../../../../../../../../src/com/yext/m4/confcode/adminconsole/js/businessselectormodal/businessselectormodal.jsx","webpack:///../../../../../../../../../../../../../../external/com_google_javascript_closure_library/closure/goog/soy/data.js","webpack:///../../../../../../../../../../../../../../external/com_google_template_soy_jssrc/soyutils_usegoog.js","webpack:///../../../../../../../../../../../../../../external/com_google_template_soy_jssrc/checks.js","webpack:///../../../../../../../../../../../../../../external/com_google_javascript_closure_library/closure/goog/i18n/bidi.js","webpack:///../../../../../../../../../../../../../../src/com/yext/m4/confcode/adminconsole/js/confirmationmodal/confirmationModal.soy.proc.js","webpack:///../../../../../../../../../../../../../../js/yext/soy.js","webpack:///../../../../../../../../../../../../../../src/com/yext/m4/confcode/adminconsole/js/confirmationmodal/confirmationmodalcontroller.js","webpack:///../../../../../../../../../../../../../../src/com/yext/m4/confcode/adminconsole/js/console/consoleservice.js","webpack:///../../../../../../../../../../../../../../src/com/yext/m4/confcode/adminconsole/js/routes.js","webpack:///../../../../../../../../../../../../../../src/com/yext/m4/confcode/adminconsole/js/repositories/repositories.js","webpack:///../../../../../../../../../../../../../../ui/components/contentskeleton/contentskeleton.jsx","webpack:///../../../../../../../../../../../../../../src/com/yext/m4/confcode/adminconsole/js/showdiffmodal/showdiffmodal.jsx","webpack:///../../../../../../../../../../../../../../js-spruce/yext/spruce/tools/classNames2.js","webpack:///../../../../../../../../../../../../../../src/com/yext/sitesgitstorm/js/src/editor/tree/actions/TreeActionsContainer.jsx","webpack:///../../../../../../../../../../../../../../src/com/yext/sitesgitstorm/js/src/editor/tree/constants.js","webpack:///../../../../../../../../../../../../../../src/com/yext/sitesgitstorm/js/src/editor/tree/nodes/SelectMode.jsx","webpack:///../../../../../../../../../../../../../../src/com/yext/sitesgitstorm/js/src/editor/tree/nodes/NodeConstants.js","webpack:///../../../../../../../../../../../../../../src/com/yext/sitesgitstorm/js/src/editor/tree/nodes/DirectoryTreeNode.jsx","webpack:///../../../../../../../../../../../../../../src/com/yext/sitesgitstorm/js/src/editor/tree/nodes/FileTreeNode.jsx","webpack:///../../../../../../../../../../../../../../src/com/yext/sitesgitstorm/js/src/editor/tree/nodes/TreeNode.jsx","webpack:///../../../../../../../../../../../../../../src/com/yext/sitesgitstorm/js/src/editor/tree/actions/ButtonActions.jsx","webpack:///../../../../../../../../../../../../../../ui/components/menu/action/menuaction.jsx","webpack:///../../../../../../../../../../../../../../ui/utilities/a11y.module.scss.js","webpack:///../../../../../../../../../../../../../../ui/components/menu/menu.module.scss.js","webpack:///../../../../../../../../../../../../../../ui/components/menu/trigger/combotrigger.jsx","webpack:///../../../../../../../../../../../../../../ui/components/menu/types/config.js","webpack:///../../../../../../../../../../../../../../ui/icons/inline/arrow-right.svg.jsx","webpack:///../../../../../../../../../../../../../../ui/components/menu/menucontroller.jsx","webpack:///../../../../../../../../../../../../../../src/com/yext/sitesgitstorm/js/src/editor/tree/actions/MenuActions.jsx","webpack:///../../../../../../../../../../../../../../src/com/yext/sitesgitstorm/js/src/editor/tree/actions/TreeActionsPortal.jsx","webpack:///../../../../../../../../../../../../../../src/com/yext/sitesgitstorm/js/src/editor/tree/FileTree.jsx","webpack:///../../../../../../../../../../../../../../src/com/yext/m4/confcode/adminconsole/js/sidebar/sidebar.jsx","webpack:///../../../../../../../../../../../../../../src/com/yext/m4/confcode/adminconsole/js/console/consolecomponent.jsx","webpack:///../../../../../../../../../../../../../../src/com/yext/m4/confcode/adminconsole/js/diagnosticspanel/diagnosticspanelcomponent.jsx","webpack:///../../../../../../../../../../../../../../src/com/yext/m4/confcode/adminconsole/js/toolspanel/toolspanelcomponent.jsx","webpack:///../../../../../../../../../../../../../../src/com/yext/m4/confcode/adminconsole/js/variables/variablesmodal.jsx","webpack:///../../../../../../../../../../../../../../src/com/yext/m4/confcode/adminconsole/js/missingresources/missingresourcesmodal.jsx","webpack:///../../../../../../../../../../../../../../src/com/yext/m4/confcode/adminconsole/js/constants.js","webpack:///../../../../../../../../../../../../../../src/com/yext/m4/confcode/adminconsole/js/modal/addresourcemodal.jsx","webpack:///../../../../../../../../../../../../../../src/com/yext/m4/confcode/adminconsole/js/modal/deletemodal.jsx","webpack:///../../../../../../../../../../../../../../src/com/yext/m4/confcode/adminconsole/js/modal/helpmodal.jsx","webpack:///../../../../../../../../../../../../../../src/com/yext/m4/confcode/adminconsole/js/modal/settingsmodal.jsx","webpack:///../../../../../../../../../../../../../../src/com/yext/m4/confcode/adminconsole/js/resources/resourceNodeManager.js","webpack:///../../../../../../../../../../../../../../src/com/yext/m4/confcode/adminconsole/js/init.js"],"sourcesContent":["var isDevelopment = false;\n\n/*\n\nBased off glamor's StyleSheet, thanks Sunil ❤️\n\nhigh performance StyleSheet for css-in-js systems\n\n- uses multiple style tags behind the scenes for millions of rules\n- uses `insertRule` for appending in production for *much* faster performance\n\n// usage\n\nimport { StyleSheet } from '@emotion/sheet'\n\nlet styleSheet = new StyleSheet({ key: '', container: document.head })\n\nstyleSheet.insert('#box { border: 1px solid red; }')\n- appends a css rule into the stylesheet\n\nstyleSheet.flush()\n- empties the stylesheet of all its contents\n\n*/\n\nfunction sheetForTag(tag) {\n if (tag.sheet) {\n return tag.sheet;\n } // this weirdness brought to you by firefox\n\n /* istanbul ignore next */\n\n\n for (var i = 0; i < document.styleSheets.length; i++) {\n if (document.styleSheets[i].ownerNode === tag) {\n return document.styleSheets[i];\n }\n } // this function should always return with a value\n // TS can't understand it though so we make it stop complaining here\n\n\n return undefined;\n}\n\nfunction createStyleElement(options) {\n var tag = document.createElement('style');\n tag.setAttribute('data-emotion', options.key);\n\n if (options.nonce !== undefined) {\n tag.setAttribute('nonce', options.nonce);\n }\n\n tag.appendChild(document.createTextNode(''));\n tag.setAttribute('data-s', '');\n return tag;\n}\n\nvar StyleSheet = /*#__PURE__*/function () {\n // Using Node instead of HTMLElement since container may be a ShadowRoot\n function StyleSheet(options) {\n var _this = this;\n\n this._insertTag = function (tag) {\n var before;\n\n if (_this.tags.length === 0) {\n if (_this.insertionPoint) {\n before = _this.insertionPoint.nextSibling;\n } else if (_this.prepend) {\n before = _this.container.firstChild;\n } else {\n before = _this.before;\n }\n } else {\n before = _this.tags[_this.tags.length - 1].nextSibling;\n }\n\n _this.container.insertBefore(tag, before);\n\n _this.tags.push(tag);\n };\n\n this.isSpeedy = options.speedy === undefined ? !isDevelopment : options.speedy;\n this.tags = [];\n this.ctr = 0;\n this.nonce = options.nonce; // key is the value of the data-emotion attribute, it's used to identify different sheets\n\n this.key = options.key;\n this.container = options.container;\n this.prepend = options.prepend;\n this.insertionPoint = options.insertionPoint;\n this.before = null;\n }\n\n var _proto = StyleSheet.prototype;\n\n _proto.hydrate = function hydrate(nodes) {\n nodes.forEach(this._insertTag);\n };\n\n _proto.insert = function insert(rule) {\n // the max length is how many rules we have per style tag, it's 65000 in speedy mode\n // it's 1 in dev because we insert source maps that map a single rule to a location\n // and you can only have one source map per style tag\n if (this.ctr % (this.isSpeedy ? 65000 : 1) === 0) {\n this._insertTag(createStyleElement(this));\n }\n\n var tag = this.tags[this.tags.length - 1];\n\n if (this.isSpeedy) {\n var sheet = sheetForTag(tag);\n\n try {\n // this is the ultrafast version, works across browsers\n // the big drawback is that the css won't be editable in devtools\n sheet.insertRule(rule, sheet.cssRules.length);\n } catch (e) {\n }\n } else {\n tag.appendChild(document.createTextNode(rule));\n }\n\n this.ctr++;\n };\n\n _proto.flush = function flush() {\n this.tags.forEach(function (tag) {\n var _tag$parentNode;\n\n return (_tag$parentNode = tag.parentNode) == null ? void 0 : _tag$parentNode.removeChild(tag);\n });\n this.tags = [];\n this.ctr = 0;\n };\n\n return StyleSheet;\n}();\n\nexport { StyleSheet };\n","/**\n * @param {number}\n * @return {number}\n */\nexport var abs = Math.abs\n\n/**\n * @param {number}\n * @return {string}\n */\nexport var from = String.fromCharCode\n\n/**\n * @param {object}\n * @return {object}\n */\nexport var assign = Object.assign\n\n/**\n * @param {string} value\n * @param {number} length\n * @return {number}\n */\nexport function hash (value, length) {\n\treturn charat(value, 0) ^ 45 ? (((((((length << 2) ^ charat(value, 0)) << 2) ^ charat(value, 1)) << 2) ^ charat(value, 2)) << 2) ^ charat(value, 3) : 0\n}\n\n/**\n * @param {string} value\n * @return {string}\n */\nexport function trim (value) {\n\treturn value.trim()\n}\n\n/**\n * @param {string} value\n * @param {RegExp} pattern\n * @return {string?}\n */\nexport function match (value, pattern) {\n\treturn (value = pattern.exec(value)) ? value[0] : value\n}\n\n/**\n * @param {string} value\n * @param {(string|RegExp)} pattern\n * @param {string} replacement\n * @return {string}\n */\nexport function replace (value, pattern, replacement) {\n\treturn value.replace(pattern, replacement)\n}\n\n/**\n * @param {string} value\n * @param {string} search\n * @return {number}\n */\nexport function indexof (value, search) {\n\treturn value.indexOf(search)\n}\n\n/**\n * @param {string} value\n * @param {number} index\n * @return {number}\n */\nexport function charat (value, index) {\n\treturn value.charCodeAt(index) | 0\n}\n\n/**\n * @param {string} value\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function substr (value, begin, end) {\n\treturn value.slice(begin, end)\n}\n\n/**\n * @param {string} value\n * @return {number}\n */\nexport function strlen (value) {\n\treturn value.length\n}\n\n/**\n * @param {any[]} value\n * @return {number}\n */\nexport function sizeof (value) {\n\treturn value.length\n}\n\n/**\n * @param {any} value\n * @param {any[]} array\n * @return {any}\n */\nexport function append (value, array) {\n\treturn array.push(value), value\n}\n\n/**\n * @param {string[]} array\n * @param {function} callback\n * @return {string}\n */\nexport function combine (array, callback) {\n\treturn array.map(callback).join('')\n}\n","import {from, trim, charat, strlen, substr, append, assign} from './Utility.js'\n\nexport var line = 1\nexport var column = 1\nexport var length = 0\nexport var position = 0\nexport var character = 0\nexport var characters = ''\n\n/**\n * @param {string} value\n * @param {object | null} root\n * @param {object | null} parent\n * @param {string} type\n * @param {string[] | string} props\n * @param {object[] | string} children\n * @param {number} length\n */\nexport function node (value, root, parent, type, props, children, length) {\n\treturn {value: value, root: root, parent: parent, type: type, props: props, children: children, line: line, column: column, length: length, return: ''}\n}\n\n/**\n * @param {object} root\n * @param {object} props\n * @return {object}\n */\nexport function copy (root, props) {\n\treturn assign(node('', null, null, '', null, null, 0), root, {length: -root.length}, props)\n}\n\n/**\n * @return {number}\n */\nexport function char () {\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function prev () {\n\tcharacter = position > 0 ? charat(characters, --position) : 0\n\n\tif (column--, character === 10)\n\t\tcolumn = 1, line--\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function next () {\n\tcharacter = position < length ? charat(characters, position++) : 0\n\n\tif (column++, character === 10)\n\t\tcolumn = 1, line++\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function peek () {\n\treturn charat(characters, position)\n}\n\n/**\n * @return {number}\n */\nexport function caret () {\n\treturn position\n}\n\n/**\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function slice (begin, end) {\n\treturn substr(characters, begin, end)\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function token (type) {\n\tswitch (type) {\n\t\t// \\0 \\t \\n \\r \\s whitespace token\n\t\tcase 0: case 9: case 10: case 13: case 32:\n\t\t\treturn 5\n\t\t// ! + , / > @ ~ isolate token\n\t\tcase 33: case 43: case 44: case 47: case 62: case 64: case 126:\n\t\t// ; { } breakpoint token\n\t\tcase 59: case 123: case 125:\n\t\t\treturn 4\n\t\t// : accompanied token\n\t\tcase 58:\n\t\t\treturn 3\n\t\t// \" ' ( [ opening delimit token\n\t\tcase 34: case 39: case 40: case 91:\n\t\t\treturn 2\n\t\t// ) ] closing delimit token\n\t\tcase 41: case 93:\n\t\t\treturn 1\n\t}\n\n\treturn 0\n}\n\n/**\n * @param {string} value\n * @return {any[]}\n */\nexport function alloc (value) {\n\treturn line = column = 1, length = strlen(characters = value), position = 0, []\n}\n\n/**\n * @param {any} value\n * @return {any}\n */\nexport function dealloc (value) {\n\treturn characters = '', value\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function delimit (type) {\n\treturn trim(slice(position - 1, delimiter(type === 91 ? type + 2 : type === 40 ? type + 1 : type)))\n}\n\n/**\n * @param {string} value\n * @return {string[]}\n */\nexport function tokenize (value) {\n\treturn dealloc(tokenizer(alloc(value)))\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function whitespace (type) {\n\twhile (character = peek())\n\t\tif (character < 33)\n\t\t\tnext()\n\t\telse\n\t\t\tbreak\n\n\treturn token(type) > 2 || token(character) > 3 ? '' : ' '\n}\n\n/**\n * @param {string[]} children\n * @return {string[]}\n */\nexport function tokenizer (children) {\n\twhile (next())\n\t\tswitch (token(character)) {\n\t\t\tcase 0: append(identifier(position - 1), children)\n\t\t\t\tbreak\n\t\t\tcase 2: append(delimit(character), children)\n\t\t\t\tbreak\n\t\t\tdefault: append(from(character), children)\n\t\t}\n\n\treturn children\n}\n\n/**\n * @param {number} index\n * @param {number} count\n * @return {string}\n */\nexport function escaping (index, count) {\n\twhile (--count && next())\n\t\t// not 0-9 A-F a-f\n\t\tif (character < 48 || character > 102 || (character > 57 && character < 65) || (character > 70 && character < 97))\n\t\t\tbreak\n\n\treturn slice(index, caret() + (count < 6 && peek() == 32 && next() == 32))\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function delimiter (type) {\n\twhile (next())\n\t\tswitch (character) {\n\t\t\t// ] ) \" '\n\t\t\tcase type:\n\t\t\t\treturn position\n\t\t\t// \" '\n\t\t\tcase 34: case 39:\n\t\t\t\tif (type !== 34 && type !== 39)\n\t\t\t\t\tdelimiter(character)\n\t\t\t\tbreak\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (type === 41)\n\t\t\t\t\tdelimiter(type)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tnext()\n\t\t\t\tbreak\n\t\t}\n\n\treturn position\n}\n\n/**\n * @param {number} type\n * @param {number} index\n * @return {number}\n */\nexport function commenter (type, index) {\n\twhile (next())\n\t\t// //\n\t\tif (type + character === 47 + 10)\n\t\t\tbreak\n\t\t// /*\n\t\telse if (type + character === 42 + 42 && peek() === 47)\n\t\t\tbreak\n\n\treturn '/*' + slice(index, position - 1) + '*' + from(type === 47 ? type : next())\n}\n\n/**\n * @param {number} index\n * @return {string}\n */\nexport function identifier (index) {\n\twhile (!token(peek()))\n\t\tnext()\n\n\treturn slice(index, position)\n}\n","export var MS = '-ms-'\nexport var MOZ = '-moz-'\nexport var WEBKIT = '-webkit-'\n\nexport var COMMENT = 'comm'\nexport var RULESET = 'rule'\nexport var DECLARATION = 'decl'\n\nexport var PAGE = '@page'\nexport var MEDIA = '@media'\nexport var IMPORT = '@import'\nexport var CHARSET = '@charset'\nexport var VIEWPORT = '@viewport'\nexport var SUPPORTS = '@supports'\nexport var DOCUMENT = '@document'\nexport var NAMESPACE = '@namespace'\nexport var KEYFRAMES = '@keyframes'\nexport var FONT_FACE = '@font-face'\nexport var COUNTER_STYLE = '@counter-style'\nexport var FONT_FEATURE_VALUES = '@font-feature-values'\nexport var LAYER = '@layer'\n","import {IMPORT, LAYER, COMMENT, RULESET, DECLARATION, KEYFRAMES} from './Enum.js'\nimport {strlen, sizeof} from './Utility.js'\n\n/**\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function serialize (children, callback) {\n\tvar output = ''\n\tvar length = sizeof(children)\n\n\tfor (var i = 0; i < length; i++)\n\t\toutput += callback(children[i], i, children, callback) || ''\n\n\treturn output\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function stringify (element, index, children, callback) {\n\tswitch (element.type) {\n\t\tcase LAYER: if (element.children.length) break\n\t\tcase IMPORT: case DECLARATION: return element.return = element.return || element.value\n\t\tcase COMMENT: return ''\n\t\tcase KEYFRAMES: return element.return = element.value + '{' + serialize(element.children, callback) + '}'\n\t\tcase RULESET: element.value = element.props.join(',')\n\t}\n\n\treturn strlen(children = serialize(element.children, callback)) ? element.return = element.value + '{' + children + '}' : ''\n}\n","import {COMMENT, RULESET, DECLARATION} from './Enum.js'\nimport {abs, charat, trim, from, sizeof, strlen, substr, append, replace, indexof} from './Utility.js'\nimport {node, char, prev, next, peek, caret, alloc, dealloc, delimit, whitespace, escaping, identifier, commenter} from './Tokenizer.js'\n\n/**\n * @param {string} value\n * @return {object[]}\n */\nexport function compile (value) {\n\treturn dealloc(parse('', null, null, null, [''], value = alloc(value), 0, [0], value))\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {string[]} rule\n * @param {string[]} rules\n * @param {string[]} rulesets\n * @param {number[]} pseudo\n * @param {number[]} points\n * @param {string[]} declarations\n * @return {object}\n */\nexport function parse (value, root, parent, rule, rules, rulesets, pseudo, points, declarations) {\n\tvar index = 0\n\tvar offset = 0\n\tvar length = pseudo\n\tvar atrule = 0\n\tvar property = 0\n\tvar previous = 0\n\tvar variable = 1\n\tvar scanning = 1\n\tvar ampersand = 1\n\tvar character = 0\n\tvar type = ''\n\tvar props = rules\n\tvar children = rulesets\n\tvar reference = rule\n\tvar characters = type\n\n\twhile (scanning)\n\t\tswitch (previous = character, character = next()) {\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (previous != 108 && charat(characters, length - 1) == 58) {\n\t\t\t\t\tif (indexof(characters += replace(delimit(character), '&', '&\\f'), '&\\f') != -1)\n\t\t\t\t\t\tampersand = -1\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t// \" ' [\n\t\t\tcase 34: case 39: case 91:\n\t\t\t\tcharacters += delimit(character)\n\t\t\t\tbreak\n\t\t\t// \\t \\n \\r \\s\n\t\t\tcase 9: case 10: case 13: case 32:\n\t\t\t\tcharacters += whitespace(previous)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tcharacters += escaping(caret() - 1, 7)\n\t\t\t\tcontinue\n\t\t\t// /\n\t\t\tcase 47:\n\t\t\t\tswitch (peek()) {\n\t\t\t\t\tcase 42: case 47:\n\t\t\t\t\t\tappend(comment(commenter(next(), caret()), root, parent), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tcharacters += '/'\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t// {\n\t\t\tcase 123 * variable:\n\t\t\t\tpoints[index++] = strlen(characters) * ampersand\n\t\t\t// } ; \\0\n\t\t\tcase 125 * variable: case 59: case 0:\n\t\t\t\tswitch (character) {\n\t\t\t\t\t// \\0 }\n\t\t\t\t\tcase 0: case 125: scanning = 0\n\t\t\t\t\t// ;\n\t\t\t\t\tcase 59 + offset: if (ampersand == -1) characters = replace(characters, /\\f/g, '')\n\t\t\t\t\t\tif (property > 0 && (strlen(characters) - length))\n\t\t\t\t\t\t\tappend(property > 32 ? declaration(characters + ';', rule, parent, length - 1) : declaration(replace(characters, ' ', '') + ';', rule, parent, length - 2), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @ ;\n\t\t\t\t\tcase 59: characters += ';'\n\t\t\t\t\t// { rule/at-rule\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tappend(reference = ruleset(characters, root, parent, index, offset, rules, points, type, props = [], children = [], length), rulesets)\n\n\t\t\t\t\t\tif (character === 123)\n\t\t\t\t\t\t\tif (offset === 0)\n\t\t\t\t\t\t\t\tparse(characters, root, reference, reference, props, rulesets, length, points, children)\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\tswitch (atrule === 99 && charat(characters, 3) === 110 ? 100 : atrule) {\n\t\t\t\t\t\t\t\t\t// d l m s\n\t\t\t\t\t\t\t\t\tcase 100: case 108: case 109: case 115:\n\t\t\t\t\t\t\t\t\t\tparse(value, reference, reference, rule && append(ruleset(value, reference, reference, 0, 0, rules, points, type, rules, props = [], length), children), rules, children, length, points, rule ? props : children)\n\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\tparse(characters, reference, reference, reference, [''], children, 0, points, children)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tindex = offset = property = 0, variable = ampersand = 1, type = characters = '', length = pseudo\n\t\t\t\tbreak\n\t\t\t// :\n\t\t\tcase 58:\n\t\t\t\tlength = 1 + strlen(characters), property = previous\n\t\t\tdefault:\n\t\t\t\tif (variable < 1)\n\t\t\t\t\tif (character == 123)\n\t\t\t\t\t\t--variable\n\t\t\t\t\telse if (character == 125 && variable++ == 0 && prev() == 125)\n\t\t\t\t\t\tcontinue\n\n\t\t\t\tswitch (characters += from(character), character * variable) {\n\t\t\t\t\t// &\n\t\t\t\t\tcase 38:\n\t\t\t\t\t\tampersand = offset > 0 ? 1 : (characters += '\\f', -1)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// ,\n\t\t\t\t\tcase 44:\n\t\t\t\t\t\tpoints[index++] = (strlen(characters) - 1) * ampersand, ampersand = 1\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @\n\t\t\t\t\tcase 64:\n\t\t\t\t\t\t// -\n\t\t\t\t\t\tif (peek() === 45)\n\t\t\t\t\t\t\tcharacters += delimit(next())\n\n\t\t\t\t\t\tatrule = peek(), offset = length = strlen(type = characters += identifier(caret())), character++\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// -\n\t\t\t\t\tcase 45:\n\t\t\t\t\t\tif (previous === 45 && strlen(characters) == 2)\n\t\t\t\t\t\t\tvariable = 0\n\t\t\t\t}\n\t\t}\n\n\treturn rulesets\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} index\n * @param {number} offset\n * @param {string[]} rules\n * @param {number[]} points\n * @param {string} type\n * @param {string[]} props\n * @param {string[]} children\n * @param {number} length\n * @return {object}\n */\nexport function ruleset (value, root, parent, index, offset, rules, points, type, props, children, length) {\n\tvar post = offset - 1\n\tvar rule = offset === 0 ? rules : ['']\n\tvar size = sizeof(rule)\n\n\tfor (var i = 0, j = 0, k = 0; i < index; ++i)\n\t\tfor (var x = 0, y = substr(value, post + 1, post = abs(j = points[i])), z = value; x < size; ++x)\n\t\t\tif (z = trim(j > 0 ? rule[x] + ' ' + y : replace(y, /&\\f/g, rule[x])))\n\t\t\t\tprops[k++] = z\n\n\treturn node(value, root, parent, offset === 0 ? RULESET : type, props, children, length)\n}\n\n/**\n * @param {number} value\n * @param {object} root\n * @param {object?} parent\n * @return {object}\n */\nexport function comment (value, root, parent) {\n\treturn node(value, root, parent, COMMENT, from(char()), substr(value, 2, -2), 0)\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} length\n * @return {object}\n */\nexport function declaration (value, root, parent, length) {\n\treturn node(value, root, parent, DECLARATION, substr(value, 0, length), substr(value, length + 1, -1), length)\n}\n","import { StyleSheet } from '@emotion/sheet';\nimport { dealloc, alloc, next, token, from, peek, delimit, slice, position, RULESET, combine, match, serialize, copy, replace, WEBKIT, MOZ, MS, KEYFRAMES, DECLARATION, hash, charat, strlen, indexof, stringify, COMMENT, rulesheet, middleware, compile } from 'stylis';\nimport '@emotion/weak-memoize';\nimport '@emotion/memoize';\n\nvar identifierWithPointTracking = function identifierWithPointTracking(begin, points, index) {\n var previous = 0;\n var character = 0;\n\n while (true) {\n previous = character;\n character = peek(); // &\\f\n\n if (previous === 38 && character === 12) {\n points[index] = 1;\n }\n\n if (token(character)) {\n break;\n }\n\n next();\n }\n\n return slice(begin, position);\n};\n\nvar toRules = function toRules(parsed, points) {\n // pretend we've started with a comma\n var index = -1;\n var character = 44;\n\n do {\n switch (token(character)) {\n case 0:\n // &\\f\n if (character === 38 && peek() === 12) {\n // this is not 100% correct, we don't account for literal sequences here - like for example quoted strings\n // stylis inserts \\f after & to know when & where it should replace this sequence with the context selector\n // and when it should just concatenate the outer and inner selectors\n // it's very unlikely for this sequence to actually appear in a different context, so we just leverage this fact here\n points[index] = 1;\n }\n\n parsed[index] += identifierWithPointTracking(position - 1, points, index);\n break;\n\n case 2:\n parsed[index] += delimit(character);\n break;\n\n case 4:\n // comma\n if (character === 44) {\n // colon\n parsed[++index] = peek() === 58 ? '&\\f' : '';\n points[index] = parsed[index].length;\n break;\n }\n\n // fallthrough\n\n default:\n parsed[index] += from(character);\n }\n } while (character = next());\n\n return parsed;\n};\n\nvar getRules = function getRules(value, points) {\n return dealloc(toRules(alloc(value), points));\n}; // WeakSet would be more appropriate, but only WeakMap is supported in IE11\n\n\nvar fixedElements = /* #__PURE__ */new WeakMap();\nvar compat = function compat(element) {\n if (element.type !== 'rule' || !element.parent || // positive .length indicates that this rule contains pseudo\n // negative .length indicates that this rule has been already prefixed\n element.length < 1) {\n return;\n }\n\n var value = element.value,\n parent = element.parent;\n var isImplicitRule = element.column === parent.column && element.line === parent.line;\n\n while (parent.type !== 'rule') {\n parent = parent.parent;\n if (!parent) return;\n } // short-circuit for the simplest case\n\n\n if (element.props.length === 1 && value.charCodeAt(0) !== 58\n /* colon */\n && !fixedElements.get(parent)) {\n return;\n } // if this is an implicitly inserted rule (the one eagerly inserted at the each new nested level)\n // then the props has already been manipulated beforehand as they that array is shared between it and its \"rule parent\"\n\n\n if (isImplicitRule) {\n return;\n }\n\n fixedElements.set(element, true);\n var points = [];\n var rules = getRules(value, points);\n var parentRules = parent.props;\n\n for (var i = 0, k = 0; i < rules.length; i++) {\n for (var j = 0; j < parentRules.length; j++, k++) {\n element.props[k] = points[i] ? rules[i].replace(/&\\f/g, parentRules[j]) : parentRules[j] + \" \" + rules[i];\n }\n }\n};\nvar removeLabel = function removeLabel(element) {\n if (element.type === 'decl') {\n var value = element.value;\n\n if ( // charcode for l\n value.charCodeAt(0) === 108 && // charcode for b\n value.charCodeAt(2) === 98) {\n // this ignores label\n element[\"return\"] = '';\n element.value = '';\n }\n }\n};\nvar ignoreFlag = 'emotion-disable-server-rendering-unsafe-selector-warning-please-do-not-use-this-the-warning-exists-for-a-reason';\n\nvar isIgnoringComment = function isIgnoringComment(element) {\n return element.type === 'comm' && element.children.indexOf(ignoreFlag) > -1;\n};\n\nvar createUnsafeSelectorsAlarm = function createUnsafeSelectorsAlarm(cache) {\n return function (element, index, children) {\n if (element.type !== 'rule' || cache.compat) return;\n var unsafePseudoClasses = element.value.match(/(:first|:nth|:nth-last)-child/g);\n\n if (unsafePseudoClasses) {\n var isNested = !!element.parent; // in nested rules comments become children of the \"auto-inserted\" rule and that's always the `element.parent`\n //\n // considering this input:\n // .a {\n // .b /* comm */ {}\n // color: hotpink;\n // }\n // we get output corresponding to this:\n // .a {\n // & {\n // /* comm */\n // color: hotpink;\n // }\n // .b {}\n // }\n\n var commentContainer = isNested ? element.parent.children : // global rule at the root level\n children;\n\n for (var i = commentContainer.length - 1; i >= 0; i--) {\n var node = commentContainer[i];\n\n if (node.line < element.line) {\n break;\n } // it is quite weird but comments are *usually* put at `column: element.column - 1`\n // so we seek *from the end* for the node that is earlier than the rule's `element` and check that\n // this will also match inputs like this:\n // .a {\n // /* comm */\n // .b {}\n // }\n //\n // but that is fine\n //\n // it would be the easiest to change the placement of the comment to be the first child of the rule:\n // .a {\n // .b { /* comm */ }\n // }\n // with such inputs we wouldn't have to search for the comment at all\n // TODO: consider changing this comment placement in the next major version\n\n\n if (node.column < element.column) {\n if (isIgnoringComment(node)) {\n return;\n }\n\n break;\n }\n }\n\n unsafePseudoClasses.forEach(function (unsafePseudoClass) {\n console.error(\"The pseudo class \\\"\" + unsafePseudoClass + \"\\\" is potentially unsafe when doing server-side rendering. Try changing it to \\\"\" + unsafePseudoClass.split('-child')[0] + \"-of-type\\\".\");\n });\n }\n };\n};\n\nvar isImportRule = function isImportRule(element) {\n return element.type.charCodeAt(1) === 105 && element.type.charCodeAt(0) === 64;\n};\n\nvar isPrependedWithRegularRules = function isPrependedWithRegularRules(index, children) {\n for (var i = index - 1; i >= 0; i--) {\n if (!isImportRule(children[i])) {\n return true;\n }\n }\n\n return false;\n}; // use this to remove incorrect elements from further processing\n// so they don't get handed to the `sheet` (or anything else)\n// as that could potentially lead to additional logs which in turn could be overhelming to the user\n\n\nvar nullifyElement = function nullifyElement(element) {\n element.type = '';\n element.value = '';\n element[\"return\"] = '';\n element.children = '';\n element.props = '';\n};\n\nvar incorrectImportAlarm = function incorrectImportAlarm(element, index, children) {\n if (!isImportRule(element)) {\n return;\n }\n\n if (element.parent) {\n console.error(\"`@import` rules can't be nested inside other rules. Please move it to the top level and put it before regular rules. Keep in mind that they can only be used within global styles.\");\n nullifyElement(element);\n } else if (isPrependedWithRegularRules(index, children)) {\n console.error(\"`@import` rules can't be after other rules. Please put your `@import` rules before your other rules.\");\n nullifyElement(element);\n }\n};\n\n/* eslint-disable no-fallthrough */\n\nfunction prefix(value, length) {\n switch (hash(value, length)) {\n // color-adjust\n case 5103:\n return WEBKIT + 'print-' + value + value;\n // animation, animation-(delay|direction|duration|fill-mode|iteration-count|name|play-state|timing-function)\n\n case 5737:\n case 4201:\n case 3177:\n case 3433:\n case 1641:\n case 4457:\n case 2921: // text-decoration, filter, clip-path, backface-visibility, column, box-decoration-break\n\n case 5572:\n case 6356:\n case 5844:\n case 3191:\n case 6645:\n case 3005: // mask, mask-image, mask-(mode|clip|size), mask-(repeat|origin), mask-position, mask-composite,\n\n case 6391:\n case 5879:\n case 5623:\n case 6135:\n case 4599:\n case 4855: // background-clip, columns, column-(count|fill|gap|rule|rule-color|rule-style|rule-width|span|width)\n\n case 4215:\n case 6389:\n case 5109:\n case 5365:\n case 5621:\n case 3829:\n return WEBKIT + value + value;\n // appearance, user-select, transform, hyphens, text-size-adjust\n\n case 5349:\n case 4246:\n case 4810:\n case 6968:\n case 2756:\n return WEBKIT + value + MOZ + value + MS + value + value;\n // flex, flex-direction\n\n case 6828:\n case 4268:\n return WEBKIT + value + MS + value + value;\n // order\n\n case 6165:\n return WEBKIT + value + MS + 'flex-' + value + value;\n // align-items\n\n case 5187:\n return WEBKIT + value + replace(value, /(\\w+).+(:[^]+)/, WEBKIT + 'box-$1$2' + MS + 'flex-$1$2') + value;\n // align-self\n\n case 5443:\n return WEBKIT + value + MS + 'flex-item-' + replace(value, /flex-|-self/, '') + value;\n // align-content\n\n case 4675:\n return WEBKIT + value + MS + 'flex-line-pack' + replace(value, /align-content|flex-|-self/, '') + value;\n // flex-shrink\n\n case 5548:\n return WEBKIT + value + MS + replace(value, 'shrink', 'negative') + value;\n // flex-basis\n\n case 5292:\n return WEBKIT + value + MS + replace(value, 'basis', 'preferred-size') + value;\n // flex-grow\n\n case 6060:\n return WEBKIT + 'box-' + replace(value, '-grow', '') + WEBKIT + value + MS + replace(value, 'grow', 'positive') + value;\n // transition\n\n case 4554:\n return WEBKIT + replace(value, /([^-])(transform)/g, '$1' + WEBKIT + '$2') + value;\n // cursor\n\n case 6187:\n return replace(replace(replace(value, /(zoom-|grab)/, WEBKIT + '$1'), /(image-set)/, WEBKIT + '$1'), value, '') + value;\n // background, background-image\n\n case 5495:\n case 3959:\n return replace(value, /(image-set\\([^]*)/, WEBKIT + '$1' + '$`$1');\n // justify-content\n\n case 4968:\n return replace(replace(value, /(.+:)(flex-)?(.*)/, WEBKIT + 'box-pack:$3' + MS + 'flex-pack:$3'), /s.+-b[^;]+/, 'justify') + WEBKIT + value + value;\n // (margin|padding)-inline-(start|end)\n\n case 4095:\n case 3583:\n case 4068:\n case 2532:\n return replace(value, /(.+)-inline(.+)/, WEBKIT + '$1$2') + value;\n // (min|max)?(width|height|inline-size|block-size)\n\n case 8116:\n case 7059:\n case 5753:\n case 5535:\n case 5445:\n case 5701:\n case 4933:\n case 4677:\n case 5533:\n case 5789:\n case 5021:\n case 4765:\n // stretch, max-content, min-content, fill-available\n if (strlen(value) - 1 - length > 6) switch (charat(value, length + 1)) {\n // (m)ax-content, (m)in-content\n case 109:\n // -\n if (charat(value, length + 4) !== 45) break;\n // (f)ill-available, (f)it-content\n\n case 102:\n return replace(value, /(.+:)(.+)-([^]+)/, '$1' + WEBKIT + '$2-$3' + '$1' + MOZ + (charat(value, length + 3) == 108 ? '$3' : '$2-$3')) + value;\n // (s)tretch\n\n case 115:\n return ~indexof(value, 'stretch') ? prefix(replace(value, 'stretch', 'fill-available'), length) + value : value;\n }\n break;\n // position: sticky\n\n case 4949:\n // (s)ticky?\n if (charat(value, length + 1) !== 115) break;\n // display: (flex|inline-flex)\n\n case 6444:\n switch (charat(value, strlen(value) - 3 - (~indexof(value, '!important') && 10))) {\n // stic(k)y\n case 107:\n return replace(value, ':', ':' + WEBKIT) + value;\n // (inline-)?fl(e)x\n\n case 101:\n return replace(value, /(.+:)([^;!]+)(;|!.+)?/, '$1' + WEBKIT + (charat(value, 14) === 45 ? 'inline-' : '') + 'box$3' + '$1' + WEBKIT + '$2$3' + '$1' + MS + '$2box$3') + value;\n }\n\n break;\n // writing-mode\n\n case 5936:\n switch (charat(value, length + 11)) {\n // vertical-l(r)\n case 114:\n return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb') + value;\n // vertical-r(l)\n\n case 108:\n return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb-rl') + value;\n // horizontal(-)tb\n\n case 45:\n return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'lr') + value;\n }\n\n return WEBKIT + value + MS + value + value;\n }\n\n return value;\n}\n\nvar prefixer = function prefixer(element, index, children, callback) {\n if (element.length > -1) if (!element[\"return\"]) switch (element.type) {\n case DECLARATION:\n element[\"return\"] = prefix(element.value, element.length);\n break;\n\n case KEYFRAMES:\n return serialize([copy(element, {\n value: replace(element.value, '@', '@' + WEBKIT)\n })], callback);\n\n case RULESET:\n if (element.length) return combine(element.props, function (value) {\n switch (match(value, /(::plac\\w+|:read-\\w+)/)) {\n // :read-(only|write)\n case ':read-only':\n case ':read-write':\n return serialize([copy(element, {\n props: [replace(value, /:(read-\\w+)/, ':' + MOZ + '$1')]\n })], callback);\n // :placeholder\n\n case '::placeholder':\n return serialize([copy(element, {\n props: [replace(value, /:(plac\\w+)/, ':' + WEBKIT + 'input-$1')]\n }), copy(element, {\n props: [replace(value, /:(plac\\w+)/, ':' + MOZ + '$1')]\n }), copy(element, {\n props: [replace(value, /:(plac\\w+)/, MS + 'input-$1')]\n })], callback);\n }\n\n return '';\n });\n }\n};\n\nvar defaultStylisPlugins = [prefixer];\n\nvar createCache = function createCache(options) {\n var key = options.key;\n\n if (process.env.NODE_ENV !== 'production' && !key) {\n throw new Error(\"You have to configure `key` for your cache. Please make sure it's unique (and not equal to 'css') as it's used for linking styles to your cache.\\n\" + \"If multiple caches share the same key they might \\\"fight\\\" for each other's style elements.\");\n }\n\n if (key === 'css') {\n var ssrStyles = document.querySelectorAll(\"style[data-emotion]:not([data-s])\"); // get SSRed styles out of the way of React's hydration\n // document.head is a safe place to move them to(though note document.head is not necessarily the last place they will be)\n // note this very very intentionally targets all style elements regardless of the key to ensure\n // that creating a cache works inside of render of a React component\n\n Array.prototype.forEach.call(ssrStyles, function (node) {\n // we want to only move elements which have a space in the data-emotion attribute value\n // because that indicates that it is an Emotion 11 server-side rendered style elements\n // while we will already ignore Emotion 11 client-side inserted styles because of the :not([data-s]) part in the selector\n // Emotion 10 client-side inserted styles did not have data-s (but importantly did not have a space in their data-emotion attributes)\n // so checking for the space ensures that loading Emotion 11 after Emotion 10 has inserted some styles\n // will not result in the Emotion 10 styles being destroyed\n var dataEmotionAttribute = node.getAttribute('data-emotion');\n\n if (dataEmotionAttribute.indexOf(' ') === -1) {\n return;\n }\n document.head.appendChild(node);\n node.setAttribute('data-s', '');\n });\n }\n\n var stylisPlugins = options.stylisPlugins || defaultStylisPlugins;\n\n if (process.env.NODE_ENV !== 'production') {\n // $FlowFixMe\n if (/[^a-z-]/.test(key)) {\n throw new Error(\"Emotion key must only contain lower case alphabetical characters and - but \\\"\" + key + \"\\\" was passed\");\n }\n }\n\n var inserted = {};\n var container;\n var nodesToHydrate = [];\n\n {\n container = options.container || document.head;\n Array.prototype.forEach.call( // this means we will ignore elements which don't have a space in them which\n // means that the style elements we're looking at are only Emotion 11 server-rendered style elements\n document.querySelectorAll(\"style[data-emotion^=\\\"\" + key + \" \\\"]\"), function (node) {\n var attrib = node.getAttribute(\"data-emotion\").split(' '); // $FlowFixMe\n\n for (var i = 1; i < attrib.length; i++) {\n inserted[attrib[i]] = true;\n }\n\n nodesToHydrate.push(node);\n });\n }\n\n var _insert;\n\n var omnipresentPlugins = [compat, removeLabel];\n\n if (process.env.NODE_ENV !== 'production') {\n omnipresentPlugins.push(createUnsafeSelectorsAlarm({\n get compat() {\n return cache.compat;\n }\n\n }), incorrectImportAlarm);\n }\n\n {\n var currentSheet;\n var finalizingPlugins = [stringify, process.env.NODE_ENV !== 'production' ? function (element) {\n if (!element.root) {\n if (element[\"return\"]) {\n currentSheet.insert(element[\"return\"]);\n } else if (element.value && element.type !== COMMENT) {\n // insert empty rule in non-production environments\n // so @emotion/jest can grab `key` from the (JS)DOM for caches without any rules inserted yet\n currentSheet.insert(element.value + \"{}\");\n }\n }\n } : rulesheet(function (rule) {\n currentSheet.insert(rule);\n })];\n var serializer = middleware(omnipresentPlugins.concat(stylisPlugins, finalizingPlugins));\n\n var stylis = function stylis(styles) {\n return serialize(compile(styles), serializer);\n };\n\n _insert = function insert(selector, serialized, sheet, shouldCache) {\n currentSheet = sheet;\n\n if (process.env.NODE_ENV !== 'production' && serialized.map !== undefined) {\n currentSheet = {\n insert: function insert(rule) {\n sheet.insert(rule + serialized.map);\n }\n };\n }\n\n stylis(selector ? selector + \"{\" + serialized.styles + \"}\" : serialized.styles);\n\n if (shouldCache) {\n cache.inserted[serialized.name] = true;\n }\n };\n }\n\n var cache = {\n key: key,\n sheet: new StyleSheet({\n key: key,\n container: container,\n nonce: options.nonce,\n speedy: options.speedy,\n prepend: options.prepend,\n insertionPoint: options.insertionPoint\n }),\n nonce: options.nonce,\n inserted: inserted,\n registered: {},\n insert: _insert\n };\n cache.sheet.hydrate(nodesToHydrate);\n return cache;\n};\n\nexport { createCache as default };\n","var unitlessKeys = {\n animationIterationCount: 1,\n aspectRatio: 1,\n borderImageOutset: 1,\n borderImageSlice: 1,\n borderImageWidth: 1,\n boxFlex: 1,\n boxFlexGroup: 1,\n boxOrdinalGroup: 1,\n columnCount: 1,\n columns: 1,\n flex: 1,\n flexGrow: 1,\n flexPositive: 1,\n flexShrink: 1,\n flexNegative: 1,\n flexOrder: 1,\n gridRow: 1,\n gridRowEnd: 1,\n gridRowSpan: 1,\n gridRowStart: 1,\n gridColumn: 1,\n gridColumnEnd: 1,\n gridColumnSpan: 1,\n gridColumnStart: 1,\n msGridRow: 1,\n msGridRowSpan: 1,\n msGridColumn: 1,\n msGridColumnSpan: 1,\n fontWeight: 1,\n lineHeight: 1,\n opacity: 1,\n order: 1,\n orphans: 1,\n tabSize: 1,\n widows: 1,\n zIndex: 1,\n zoom: 1,\n WebkitLineClamp: 1,\n // SVG-related properties\n fillOpacity: 1,\n floodOpacity: 1,\n stopOpacity: 1,\n strokeDasharray: 1,\n strokeDashoffset: 1,\n strokeMiterlimit: 1,\n strokeOpacity: 1,\n strokeWidth: 1\n};\n\nexport { unitlessKeys as default };\n","function memoize(fn) {\n var cache = Object.create(null);\n return function (arg) {\n if (cache[arg] === undefined) cache[arg] = fn(arg);\n return cache[arg];\n };\n}\n\nexport { memoize as default };\n","import hashString from '@emotion/hash';\nimport unitless from '@emotion/unitless';\nimport memoize from '@emotion/memoize';\n\nvar ILLEGAL_ESCAPE_SEQUENCE_ERROR = \"You have illegal escape sequence in your template literal, most likely inside content's property value.\\nBecause you write your CSS inside a JavaScript string you actually have to do double escaping, so for example \\\"content: '\\\\00d7';\\\" should become \\\"content: '\\\\\\\\00d7';\\\".\\nYou can read more about this here:\\nhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals#ES2018_revision_of_illegal_escape_sequences\";\nvar UNDEFINED_AS_OBJECT_KEY_ERROR = \"You have passed in falsy value as style object's key (can happen when in example you pass unexported component as computed key).\";\nvar hyphenateRegex = /[A-Z]|^ms/g;\nvar animationRegex = /_EMO_([^_]+?)_([^]*?)_EMO_/g;\n\nvar isCustomProperty = function isCustomProperty(property) {\n return property.charCodeAt(1) === 45;\n};\n\nvar isProcessableValue = function isProcessableValue(value) {\n return value != null && typeof value !== 'boolean';\n};\n\nvar processStyleName = /* #__PURE__ */memoize(function (styleName) {\n return isCustomProperty(styleName) ? styleName : styleName.replace(hyphenateRegex, '-$&').toLowerCase();\n});\n\nvar processStyleValue = function processStyleValue(key, value) {\n switch (key) {\n case 'animation':\n case 'animationName':\n {\n if (typeof value === 'string') {\n return value.replace(animationRegex, function (match, p1, p2) {\n cursor = {\n name: p1,\n styles: p2,\n next: cursor\n };\n return p1;\n });\n }\n }\n }\n\n if (unitless[key] !== 1 && !isCustomProperty(key) && typeof value === 'number' && value !== 0) {\n return value + 'px';\n }\n\n return value;\n};\n\nif (process.env.NODE_ENV !== 'production') {\n var contentValuePattern = /(var|attr|counters?|url|element|(((repeating-)?(linear|radial))|conic)-gradient)\\(|(no-)?(open|close)-quote/;\n var contentValues = ['normal', 'none', 'initial', 'inherit', 'unset'];\n var oldProcessStyleValue = processStyleValue;\n var msPattern = /^-ms-/;\n var hyphenPattern = /-(.)/g;\n var hyphenatedCache = {};\n\n processStyleValue = function processStyleValue(key, value) {\n if (key === 'content') {\n if (typeof value !== 'string' || contentValues.indexOf(value) === -1 && !contentValuePattern.test(value) && (value.charAt(0) !== value.charAt(value.length - 1) || value.charAt(0) !== '\"' && value.charAt(0) !== \"'\")) {\n throw new Error(\"You seem to be using a value for 'content' without quotes, try replacing it with `content: '\\\"\" + value + \"\\\"'`\");\n }\n }\n\n var processed = oldProcessStyleValue(key, value);\n\n if (processed !== '' && !isCustomProperty(key) && key.indexOf('-') !== -1 && hyphenatedCache[key] === undefined) {\n hyphenatedCache[key] = true;\n console.error(\"Using kebab-case for css properties in objects is not supported. Did you mean \" + key.replace(msPattern, 'ms-').replace(hyphenPattern, function (str, _char) {\n return _char.toUpperCase();\n }) + \"?\");\n }\n\n return processed;\n };\n}\n\nvar noComponentSelectorMessage = 'Component selectors can only be used in conjunction with ' + '@emotion/babel-plugin, the swc Emotion plugin, or another Emotion-aware ' + 'compiler transform.';\n\nfunction handleInterpolation(mergedProps, registered, interpolation) {\n if (interpolation == null) {\n return '';\n }\n\n if (interpolation.__emotion_styles !== undefined) {\n if (process.env.NODE_ENV !== 'production' && interpolation.toString() === 'NO_COMPONENT_SELECTOR') {\n throw new Error(noComponentSelectorMessage);\n }\n\n return interpolation;\n }\n\n switch (typeof interpolation) {\n case 'boolean':\n {\n return '';\n }\n\n case 'object':\n {\n if (interpolation.anim === 1) {\n cursor = {\n name: interpolation.name,\n styles: interpolation.styles,\n next: cursor\n };\n return interpolation.name;\n }\n\n if (interpolation.styles !== undefined) {\n var next = interpolation.next;\n\n if (next !== undefined) {\n // not the most efficient thing ever but this is a pretty rare case\n // and there will be very few iterations of this generally\n while (next !== undefined) {\n cursor = {\n name: next.name,\n styles: next.styles,\n next: cursor\n };\n next = next.next;\n }\n }\n\n var styles = interpolation.styles + \";\";\n\n if (process.env.NODE_ENV !== 'production' && interpolation.map !== undefined) {\n styles += interpolation.map;\n }\n\n return styles;\n }\n\n return createStringFromObject(mergedProps, registered, interpolation);\n }\n\n case 'function':\n {\n if (mergedProps !== undefined) {\n var previousCursor = cursor;\n var result = interpolation(mergedProps);\n cursor = previousCursor;\n return handleInterpolation(mergedProps, registered, result);\n } else if (process.env.NODE_ENV !== 'production') {\n console.error('Functions that are interpolated in css calls will be stringified.\\n' + 'If you want to have a css call based on props, create a function that returns a css call like this\\n' + 'let dynamicStyle = (props) => css`color: ${props.color}`\\n' + 'It can be called directly with props or interpolated in a styled call like this\\n' + \"let SomeComponent = styled('div')`${dynamicStyle}`\");\n }\n\n break;\n }\n\n case 'string':\n if (process.env.NODE_ENV !== 'production') {\n var matched = [];\n var replaced = interpolation.replace(animationRegex, function (match, p1, p2) {\n var fakeVarName = \"animation\" + matched.length;\n matched.push(\"const \" + fakeVarName + \" = keyframes`\" + p2.replace(/^@keyframes animation-\\w+/, '') + \"`\");\n return \"${\" + fakeVarName + \"}\";\n });\n\n if (matched.length) {\n console.error('`keyframes` output got interpolated into plain string, please wrap it with `css`.\\n\\n' + 'Instead of doing this:\\n\\n' + [].concat(matched, [\"`\" + replaced + \"`\"]).join('\\n') + '\\n\\nYou should wrap it with `css` like this:\\n\\n' + (\"css`\" + replaced + \"`\"));\n }\n }\n\n break;\n } // finalize string values (regular strings and functions interpolated into css calls)\n\n\n if (registered == null) {\n return interpolation;\n }\n\n var cached = registered[interpolation];\n return cached !== undefined ? cached : interpolation;\n}\n\nfunction createStringFromObject(mergedProps, registered, obj) {\n var string = '';\n\n if (Array.isArray(obj)) {\n for (var i = 0; i < obj.length; i++) {\n string += handleInterpolation(mergedProps, registered, obj[i]) + \";\";\n }\n } else {\n for (var _key in obj) {\n var value = obj[_key];\n\n if (typeof value !== 'object') {\n if (registered != null && registered[value] !== undefined) {\n string += _key + \"{\" + registered[value] + \"}\";\n } else if (isProcessableValue(value)) {\n string += processStyleName(_key) + \":\" + processStyleValue(_key, value) + \";\";\n }\n } else {\n if (_key === 'NO_COMPONENT_SELECTOR' && process.env.NODE_ENV !== 'production') {\n throw new Error(noComponentSelectorMessage);\n }\n\n if (Array.isArray(value) && typeof value[0] === 'string' && (registered == null || registered[value[0]] === undefined)) {\n for (var _i = 0; _i < value.length; _i++) {\n if (isProcessableValue(value[_i])) {\n string += processStyleName(_key) + \":\" + processStyleValue(_key, value[_i]) + \";\";\n }\n }\n } else {\n var interpolated = handleInterpolation(mergedProps, registered, value);\n\n switch (_key) {\n case 'animation':\n case 'animationName':\n {\n string += processStyleName(_key) + \":\" + interpolated + \";\";\n break;\n }\n\n default:\n {\n if (process.env.NODE_ENV !== 'production' && _key === 'undefined') {\n console.error(UNDEFINED_AS_OBJECT_KEY_ERROR);\n }\n\n string += _key + \"{\" + interpolated + \"}\";\n }\n }\n }\n }\n }\n }\n\n return string;\n}\n\nvar labelPattern = /label:\\s*([^\\s;\\n{]+)\\s*(;|$)/g;\nvar sourceMapPattern;\n\nif (process.env.NODE_ENV !== 'production') {\n sourceMapPattern = /\\/\\*#\\ssourceMappingURL=data:application\\/json;\\S+\\s+\\*\\//g;\n} // this is the cursor for keyframes\n// keyframes are stored on the SerializedStyles object as a linked list\n\n\nvar cursor;\nvar serializeStyles = function serializeStyles(args, registered, mergedProps) {\n if (args.length === 1 && typeof args[0] === 'object' && args[0] !== null && args[0].styles !== undefined) {\n return args[0];\n }\n\n var stringMode = true;\n var styles = '';\n cursor = undefined;\n var strings = args[0];\n\n if (strings == null || strings.raw === undefined) {\n stringMode = false;\n styles += handleInterpolation(mergedProps, registered, strings);\n } else {\n if (process.env.NODE_ENV !== 'production' && strings[0] === undefined) {\n console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n }\n\n styles += strings[0];\n } // we start at 1 since we've already handled the first arg\n\n\n for (var i = 1; i < args.length; i++) {\n styles += handleInterpolation(mergedProps, registered, args[i]);\n\n if (stringMode) {\n if (process.env.NODE_ENV !== 'production' && strings[i] === undefined) {\n console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n }\n\n styles += strings[i];\n }\n }\n\n var sourceMap;\n\n if (process.env.NODE_ENV !== 'production') {\n styles = styles.replace(sourceMapPattern, function (match) {\n sourceMap = match;\n return '';\n });\n } // using a global regex with .exec is stateful so lastIndex has to be reset each time\n\n\n labelPattern.lastIndex = 0;\n var identifierName = '';\n var match; // https://esbench.com/bench/5b809c2cf2949800a0f61fb5\n\n while ((match = labelPattern.exec(styles)) !== null) {\n identifierName += '-' + // $FlowFixMe we know it's not null\n match[1];\n }\n\n var name = hashString(styles) + identifierName;\n\n if (process.env.NODE_ENV !== 'production') {\n // $FlowFixMe SerializedStyles type doesn't have toString property (and we don't want to add it)\n return {\n name: name,\n styles: styles,\n map: sourceMap,\n next: cursor,\n toString: function toString() {\n return \"You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop).\";\n }\n };\n }\n\n return {\n name: name,\n styles: styles,\n next: cursor\n };\n};\n\nexport { serializeStyles };\n","/* eslint-disable */\n// Inspired by https://github.com/garycourt/murmurhash-js\n// Ported from https://github.com/aappleby/smhasher/blob/61a0530f28277f2e850bfc39600ce61d02b518de/src/MurmurHash2.cpp#L37-L86\nfunction murmur2(str) {\n // 'm' and 'r' are mixing constants generated offline.\n // They're not really 'magic', they just happen to work well.\n // const m = 0x5bd1e995;\n // const r = 24;\n // Initialize the hash\n var h = 0; // Mix 4 bytes at a time into the hash\n\n var k,\n i = 0,\n len = str.length;\n\n for (; len >= 4; ++i, len -= 4) {\n k = str.charCodeAt(i) & 0xff | (str.charCodeAt(++i) & 0xff) << 8 | (str.charCodeAt(++i) & 0xff) << 16 | (str.charCodeAt(++i) & 0xff) << 24;\n k =\n /* Math.imul(k, m): */\n (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16);\n k ^=\n /* k >>> r: */\n k >>> 24;\n h =\n /* Math.imul(k, m): */\n (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16) ^\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n } // Handle the last few bytes of the input array\n\n\n switch (len) {\n case 3:\n h ^= (str.charCodeAt(i + 2) & 0xff) << 16;\n\n case 2:\n h ^= (str.charCodeAt(i + 1) & 0xff) << 8;\n\n case 1:\n h ^= str.charCodeAt(i) & 0xff;\n h =\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n } // Do a few final mixes of the hash to ensure the last few\n // bytes are well-incorporated.\n\n\n h ^= h >>> 13;\n h =\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n return ((h ^ h >>> 15) >>> 0).toString(36);\n}\n\nexport { murmur2 as default };\n","var isBrowser = \"object\" !== 'undefined';\nfunction getRegisteredStyles(registered, registeredStyles, classNames) {\n var rawClassName = '';\n classNames.split(' ').forEach(function (className) {\n if (registered[className] !== undefined) {\n registeredStyles.push(registered[className] + \";\");\n } else {\n rawClassName += className + \" \";\n }\n });\n return rawClassName;\n}\nvar registerStyles = function registerStyles(cache, serialized, isStringTag) {\n var className = cache.key + \"-\" + serialized.name;\n\n if ( // we only need to add the styles to the registered cache if the\n // class name could be used further down\n // the tree but if it's a string tag, we know it won't\n // so we don't have to add it to registered cache.\n // this improves memory usage since we can avoid storing the whole style string\n (isStringTag === false || // we need to always store it if we're in compat mode and\n // in node since emotion-server relies on whether a style is in\n // the registered cache to know whether a style is global or not\n // also, note that this check will be dead code eliminated in the browser\n isBrowser === false ) && cache.registered[className] === undefined) {\n cache.registered[className] = serialized.styles;\n }\n};\nvar insertStyles = function insertStyles(cache, serialized, isStringTag) {\n registerStyles(cache, serialized, isStringTag);\n var className = cache.key + \"-\" + serialized.name;\n\n if (cache.inserted[serialized.name] === undefined) {\n var current = serialized;\n\n do {\n cache.insert(serialized === current ? \".\" + className : '', current, cache.sheet, true);\n\n current = current.next;\n } while (current !== undefined);\n }\n};\n\nexport { getRegisteredStyles, insertStyles, registerStyles };\n","import createCache from '@emotion/cache';\nimport { serializeStyles } from '@emotion/serialize';\nimport { getRegisteredStyles, insertStyles } from '@emotion/utils';\n\nfunction insertWithoutScoping(cache, serialized) {\n if (cache.inserted[serialized.name] === undefined) {\n return cache.insert('', serialized, cache.sheet, true);\n }\n}\n\nfunction merge(registered, css, className) {\n var registeredStyles = [];\n var rawClassName = getRegisteredStyles(registered, registeredStyles, className);\n\n if (registeredStyles.length < 2) {\n return className;\n }\n\n return rawClassName + css(registeredStyles);\n}\n\nvar createEmotion = function createEmotion(options) {\n var cache = createCache(options); // $FlowFixMe\n\n cache.sheet.speedy = function (value) {\n if (process.env.NODE_ENV !== 'production' && this.ctr !== 0) {\n throw new Error('speedy must be changed before any rules are inserted');\n }\n\n this.isSpeedy = value;\n };\n\n cache.compat = true;\n\n var css = function css() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var serialized = serializeStyles(args, cache.registered, undefined);\n insertStyles(cache, serialized, false);\n return cache.key + \"-\" + serialized.name;\n };\n\n var keyframes = function keyframes() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n var serialized = serializeStyles(args, cache.registered);\n var animation = \"animation-\" + serialized.name;\n insertWithoutScoping(cache, {\n name: serialized.name,\n styles: \"@keyframes \" + animation + \"{\" + serialized.styles + \"}\"\n });\n return animation;\n };\n\n var injectGlobal = function injectGlobal() {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n\n var serialized = serializeStyles(args, cache.registered);\n insertWithoutScoping(cache, serialized);\n };\n\n var cx = function cx() {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n\n return merge(cache.registered, css, classnames(args));\n };\n\n return {\n css: css,\n cx: cx,\n injectGlobal: injectGlobal,\n keyframes: keyframes,\n hydrate: function hydrate(ids) {\n ids.forEach(function (key) {\n cache.inserted[key] = true;\n });\n },\n flush: function flush() {\n cache.registered = {};\n cache.inserted = {};\n cache.sheet.flush();\n },\n // $FlowFixMe\n sheet: cache.sheet,\n cache: cache,\n getRegisteredStyles: getRegisteredStyles.bind(null, cache.registered),\n merge: merge.bind(null, cache.registered, css)\n };\n};\n\nvar classnames = function classnames(args) {\n var cls = '';\n\n for (var i = 0; i < args.length; i++) {\n var arg = args[i];\n if (arg == null) continue;\n var toAdd = void 0;\n\n switch (typeof arg) {\n case 'boolean':\n break;\n\n case 'object':\n {\n if (Array.isArray(arg)) {\n toAdd = classnames(arg);\n } else {\n toAdd = '';\n\n for (var k in arg) {\n if (arg[k] && k) {\n toAdd && (toAdd += ' ');\n toAdd += k;\n }\n }\n }\n\n break;\n }\n\n default:\n {\n toAdd = arg;\n }\n }\n\n if (toAdd) {\n cls && (cls += ' ');\n cls += toAdd;\n }\n }\n\n return cls;\n};\n\nexport default createEmotion;\n","import '@emotion/cache';\nimport '@emotion/serialize';\nimport '@emotion/utils';\nimport createEmotion from '../create-instance/dist/emotion-css-create-instance.esm.js';\n\nvar _createEmotion = createEmotion({\n key: 'css'\n}),\n flush = _createEmotion.flush,\n hydrate = _createEmotion.hydrate,\n cx = _createEmotion.cx,\n merge = _createEmotion.merge,\n getRegisteredStyles = _createEmotion.getRegisteredStyles,\n injectGlobal = _createEmotion.injectGlobal,\n keyframes = _createEmotion.keyframes,\n css = _createEmotion.css,\n sheet = _createEmotion.sheet,\n cache = _createEmotion.cache;\n\nexport { cache, css, cx, flush, getRegisteredStyles, hydrate, injectGlobal, keyframes, merge, sheet };\n","import {MS, MOZ, WEBKIT, RULESET, KEYFRAMES, DECLARATION} from './Enum.js'\nimport {match, charat, substr, strlen, sizeof, replace, combine} from './Utility.js'\nimport {copy, tokenize} from './Tokenizer.js'\nimport {serialize} from './Serializer.js'\nimport {prefix} from './Prefixer.js'\n\n/**\n * @param {function[]} collection\n * @return {function}\n */\nexport function middleware (collection) {\n\tvar length = sizeof(collection)\n\n\treturn function (element, index, children, callback) {\n\t\tvar output = ''\n\n\t\tfor (var i = 0; i < length; i++)\n\t\t\toutput += collection[i](element, index, children, callback) || ''\n\n\t\treturn output\n\t}\n}\n\n/**\n * @param {function} callback\n * @return {function}\n */\nexport function rulesheet (callback) {\n\treturn function (element) {\n\t\tif (!element.root)\n\t\t\tif (element = element.return)\n\t\t\t\tcallback(element)\n\t}\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n */\nexport function prefixer (element, index, children, callback) {\n\tif (element.length > -1)\n\t\tif (!element.return)\n\t\t\tswitch (element.type) {\n\t\t\t\tcase DECLARATION: element.return = prefix(element.value, element.length, children)\n\t\t\t\t\treturn\n\t\t\t\tcase KEYFRAMES:\n\t\t\t\t\treturn serialize([copy(element, {value: replace(element.value, '@', '@' + WEBKIT)})], callback)\n\t\t\t\tcase RULESET:\n\t\t\t\t\tif (element.length)\n\t\t\t\t\t\treturn combine(element.props, function (value) {\n\t\t\t\t\t\t\tswitch (match(value, /(::plac\\w+|:read-\\w+)/)) {\n\t\t\t\t\t\t\t\t// :read-(only|write)\n\t\t\t\t\t\t\t\tcase ':read-only': case ':read-write':\n\t\t\t\t\t\t\t\t\treturn serialize([copy(element, {props: [replace(value, /:(read-\\w+)/, ':' + MOZ + '$1')]})], callback)\n\t\t\t\t\t\t\t\t// :placeholder\n\t\t\t\t\t\t\t\tcase '::placeholder':\n\t\t\t\t\t\t\t\t\treturn serialize([\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, ':' + WEBKIT + 'input-$1')]}),\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, ':' + MOZ + '$1')]}),\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, MS + 'input-$1')]})\n\t\t\t\t\t\t\t\t\t], callback)\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn ''\n\t\t\t\t\t\t})\n\t\t\t}\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n */\nexport function namespace (element) {\n\tswitch (element.type) {\n\t\tcase RULESET:\n\t\t\telement.props = element.props.map(function (value) {\n\t\t\t\treturn combine(tokenize(value), function (value, index, children) {\n\t\t\t\t\tswitch (charat(value, 0)) {\n\t\t\t\t\t\t// \\f\n\t\t\t\t\t\tcase 12:\n\t\t\t\t\t\t\treturn substr(value, 1, strlen(value))\n\t\t\t\t\t\t// \\0 ( + > ~\n\t\t\t\t\t\tcase 0: case 40: case 43: case 62: case 126:\n\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t// :\n\t\t\t\t\t\tcase 58:\n\t\t\t\t\t\t\tif (children[++index] === 'global')\n\t\t\t\t\t\t\t\tchildren[index] = '', children[++index] = '\\f' + substr(children[index], index = 1, -1)\n\t\t\t\t\t\t// \\s\n\t\t\t\t\t\tcase 32:\n\t\t\t\t\t\t\treturn index === 1 ? '' : value\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tswitch (index) {\n\t\t\t\t\t\t\t\tcase 0: element = value\n\t\t\t\t\t\t\t\t\treturn sizeof(children) > 1 ? '' : value\n\t\t\t\t\t\t\t\tcase index = sizeof(children) - 1: case 2:\n\t\t\t\t\t\t\t\t\treturn index === 2 ? value + element + element : value + element\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t})\n\t}\n}\n","\"use strict\";\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread = (this && this.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));\n return ar;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.computeLineInformation = exports.DiffMethod = exports.DiffType = void 0;\nvar diff = require(\"diff\");\nvar jsDiff = diff;\nvar DiffType;\n(function (DiffType) {\n DiffType[DiffType[\"DEFAULT\"] = 0] = \"DEFAULT\";\n DiffType[DiffType[\"ADDED\"] = 1] = \"ADDED\";\n DiffType[DiffType[\"REMOVED\"] = 2] = \"REMOVED\";\n})(DiffType = exports.DiffType || (exports.DiffType = {}));\n// See https://github.com/kpdecker/jsdiff/tree/v4.0.1#api for more info on the below JsDiff methods\nvar DiffMethod;\n(function (DiffMethod) {\n DiffMethod[\"CHARS\"] = \"diffChars\";\n DiffMethod[\"WORDS\"] = \"diffWords\";\n DiffMethod[\"WORDS_WITH_SPACE\"] = \"diffWordsWithSpace\";\n DiffMethod[\"LINES\"] = \"diffLines\";\n DiffMethod[\"TRIMMED_LINES\"] = \"diffTrimmedLines\";\n DiffMethod[\"SENTENCES\"] = \"diffSentences\";\n DiffMethod[\"CSS\"] = \"diffCss\";\n})(DiffMethod = exports.DiffMethod || (exports.DiffMethod = {}));\n/**\n * Splits diff text by new line and computes final list of diff lines based on\n * conditions.\n *\n * @param value Diff text from the js diff module.\n */\nvar constructLines = function (value) {\n var lines = value.split('\\n');\n var isAllEmpty = lines.every(function (val) { return !val; });\n if (isAllEmpty) {\n // This is to avoid added an extra new line in the UI.\n if (lines.length === 2) {\n return [];\n }\n lines.pop();\n return lines;\n }\n var lastLine = lines[lines.length - 1];\n var firstLine = lines[0];\n // Remove the first and last element if they are new line character. This is\n // to avoid addition of extra new line in the UI.\n if (!lastLine) {\n lines.pop();\n }\n if (!firstLine) {\n lines.shift();\n }\n return lines;\n};\n/**\n * Computes word diff information in the line.\n * [TODO]: Consider adding options argument for JsDiff text block comparison\n *\n * @param oldValue Old word in the line.\n * @param newValue New word in the line.\n * @param compareMethod JsDiff text diff method from https://github.com/kpdecker/jsdiff/tree/v4.0.1#api\n */\nvar computeDiff = function (oldValue, newValue, compareMethod) {\n if (compareMethod === void 0) { compareMethod = DiffMethod.CHARS; }\n var diffArray = jsDiff[compareMethod](oldValue, newValue);\n var computedDiff = {\n left: [],\n right: [],\n };\n diffArray.forEach(function (_a) {\n var added = _a.added, removed = _a.removed, value = _a.value;\n var diffInformation = {};\n if (added) {\n diffInformation.type = DiffType.ADDED;\n diffInformation.value = value;\n computedDiff.right.push(diffInformation);\n }\n if (removed) {\n diffInformation.type = DiffType.REMOVED;\n diffInformation.value = value;\n computedDiff.left.push(diffInformation);\n }\n if (!removed && !added) {\n diffInformation.type = DiffType.DEFAULT;\n diffInformation.value = value;\n computedDiff.right.push(diffInformation);\n computedDiff.left.push(diffInformation);\n }\n return diffInformation;\n });\n return computedDiff;\n};\n/**\n * [TODO]: Think about moving common left and right value assignment to a\n * common place. Better readability?\n *\n * Computes line wise information based in the js diff information passed. Each\n * line contains information about left and right section. Left side denotes\n * deletion and right side denotes addition.\n *\n * @param oldString Old string to compare.\n * @param newString New string to compare with old string.\n * @param disableWordDiff Flag to enable/disable word diff.\n * @param compareMethod JsDiff text diff method from https://github.com/kpdecker/jsdiff/tree/v4.0.1#api\n * @param linesOffset line number to start counting from\n */\nvar computeLineInformation = function (oldString, newString, disableWordDiff, compareMethod, linesOffset) {\n if (disableWordDiff === void 0) { disableWordDiff = false; }\n if (compareMethod === void 0) { compareMethod = DiffMethod.CHARS; }\n if (linesOffset === void 0) { linesOffset = 0; }\n var diffArray = diff.diffLines(oldString.trimRight(), newString.trimRight(), {\n newlineIsToken: true,\n ignoreWhitespace: false,\n ignoreCase: false,\n });\n var rightLineNumber = linesOffset;\n var leftLineNumber = linesOffset;\n var lineInformation = [];\n var counter = 0;\n var diffLines = [];\n var ignoreDiffIndexes = [];\n var getLineInformation = function (value, diffIndex, added, removed, evaluateOnlyFirstLine) {\n var lines = constructLines(value);\n return lines\n .map(function (line, lineIndex) {\n var left = {};\n var right = {};\n if (ignoreDiffIndexes.includes(diffIndex + \"-\" + lineIndex) ||\n (evaluateOnlyFirstLine && lineIndex !== 0)) {\n return undefined;\n }\n if (added || removed) {\n if (!diffLines.includes(counter)) {\n diffLines.push(counter);\n }\n if (removed) {\n leftLineNumber += 1;\n left.lineNumber = leftLineNumber;\n left.type = DiffType.REMOVED;\n left.value = line || ' ';\n // When the current line is of type REMOVED, check the next item in\n // the diff array whether it is of type ADDED. If true, the current\n // diff will be marked as both REMOVED and ADDED. Meaning, the\n // current line is a modification.\n var nextDiff = diffArray[diffIndex + 1];\n if (nextDiff && nextDiff.added) {\n var nextDiffLines = constructLines(nextDiff.value)[lineIndex];\n if (nextDiffLines) {\n var _a = getLineInformation(nextDiff.value, diffIndex, true, false, true)[0].right, rightValue = _a.value, lineNumber = _a.lineNumber, type = _a.type;\n // When identified as modification, push the next diff to ignore\n // list as the next value will be added in this line computation as\n // right and left values.\n ignoreDiffIndexes.push(diffIndex + 1 + \"-\" + lineIndex);\n right.lineNumber = lineNumber;\n right.type = type;\n // Do word level diff and assign the corresponding values to the\n // left and right diff information object.\n if (disableWordDiff) {\n right.value = rightValue;\n }\n else {\n var computedDiff = computeDiff(line, rightValue, compareMethod);\n right.value = computedDiff.right;\n left.value = computedDiff.left;\n }\n }\n }\n }\n else {\n rightLineNumber += 1;\n right.lineNumber = rightLineNumber;\n right.type = DiffType.ADDED;\n right.value = line;\n }\n }\n else {\n leftLineNumber += 1;\n rightLineNumber += 1;\n left.lineNumber = leftLineNumber;\n left.type = DiffType.DEFAULT;\n left.value = line;\n right.lineNumber = rightLineNumber;\n right.type = DiffType.DEFAULT;\n right.value = line;\n }\n counter += 1;\n return { right: right, left: left };\n })\n .filter(Boolean);\n };\n diffArray.forEach(function (_a, index) {\n var added = _a.added, removed = _a.removed, value = _a.value;\n lineInformation = __spread(lineInformation, getLineInformation(value, index, added, removed));\n });\n return {\n lineInformation: lineInformation,\n diffLines: diffLines,\n };\n};\nexports.computeLineInformation = computeLineInformation;\n","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (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})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DiffMethod = exports.LineNumberPrefix = void 0;\nvar React = require(\"react\");\nvar PropTypes = require(\"prop-types\");\nvar classnames_1 = require(\"classnames\");\nvar compute_lines_1 = require(\"./compute-lines\");\nObject.defineProperty(exports, \"DiffMethod\", { enumerable: true, get: function () { return compute_lines_1.DiffMethod; } });\nvar styles_1 = require(\"./styles\");\n// eslint-disable-next-line @typescript-eslint/no-var-requires\nvar m = require('memoize-one');\nvar memoize = m.default || m;\nvar LineNumberPrefix;\n(function (LineNumberPrefix) {\n LineNumberPrefix[\"LEFT\"] = \"L\";\n LineNumberPrefix[\"RIGHT\"] = \"R\";\n})(LineNumberPrefix = exports.LineNumberPrefix || (exports.LineNumberPrefix = {}));\nvar DiffViewer = /** @class */ (function (_super) {\n __extends(DiffViewer, _super);\n function DiffViewer(props) {\n var _this = _super.call(this, props) || this;\n /**\n * Resets code block expand to the initial stage. Will be exposed to the parent component via\n * refs.\n */\n _this.resetCodeBlocks = function () {\n if (_this.state.expandedBlocks.length > 0) {\n _this.setState({\n expandedBlocks: [],\n });\n return true;\n }\n return false;\n };\n /**\n * Pushes the target expanded code block to the state. During the re-render,\n * this value is used to expand/fold unmodified code.\n */\n _this.onBlockExpand = function (id) {\n var prevState = _this.state.expandedBlocks.slice();\n prevState.push(id);\n _this.setState({\n expandedBlocks: prevState,\n });\n };\n /**\n * Computes final styles for the diff viewer. It combines the default styles with the user\n * supplied overrides. The computed styles are cached with performance in mind.\n *\n * @param styles User supplied style overrides.\n */\n _this.computeStyles = memoize(styles_1.default);\n /**\n * Returns a function with clicked line number in the closure. Returns an no-op function when no\n * onLineNumberClick handler is supplied.\n *\n * @param id Line id of a line.\n */\n _this.onLineNumberClickProxy = function (id) {\n if (_this.props.onLineNumberClick) {\n return function (e) { return _this.props.onLineNumberClick(id, e); };\n }\n return function () { };\n };\n /**\n * Maps over the word diff and constructs the required React elements to show word diff.\n *\n * @param diffArray Word diff information derived from line information.\n * @param renderer Optional renderer to format diff words. Useful for syntax highlighting.\n */\n _this.renderWordDiff = function (diffArray, renderer) {\n return diffArray.map(function (wordDiff, i) {\n var _a;\n return (React.createElement(\"span\", { key: i, className: classnames_1.default(_this.styles.wordDiff, (_a = {},\n _a[_this.styles.wordAdded] = wordDiff.type === compute_lines_1.DiffType.ADDED,\n _a[_this.styles.wordRemoved] = wordDiff.type === compute_lines_1.DiffType.REMOVED,\n _a)) }, renderer ? renderer(wordDiff.value) : wordDiff.value));\n });\n };\n /**\n * Maps over the line diff and constructs the required react elements to show line diff. It calls\n * renderWordDiff when encountering word diff. This takes care of both inline and split view line\n * renders.\n *\n * @param lineNumber Line number of the current line.\n * @param type Type of diff of the current line.\n * @param prefix Unique id to prefix with the line numbers.\n * @param value Content of the line. It can be a string or a word diff array.\n * @param additionalLineNumber Additional line number to be shown. Useful for rendering inline\n * diff view. Right line number will be passed as additionalLineNumber.\n * @param additionalPrefix Similar to prefix but for additional line number.\n */\n _this.renderLine = function (lineNumber, type, prefix, value, additionalLineNumber, additionalPrefix) {\n var _a, _b, _c, _d;\n var lineNumberTemplate = prefix + \"-\" + lineNumber;\n var additionalLineNumberTemplate = additionalPrefix + \"-\" + additionalLineNumber;\n var highlightLine = _this.props.highlightLines.includes(lineNumberTemplate) ||\n _this.props.highlightLines.includes(additionalLineNumberTemplate);\n var added = type === compute_lines_1.DiffType.ADDED;\n var removed = type === compute_lines_1.DiffType.REMOVED;\n var content;\n if (Array.isArray(value)) {\n content = _this.renderWordDiff(value, _this.props.renderContent);\n }\n else if (_this.props.renderContent) {\n content = _this.props.renderContent(value);\n }\n else {\n content = value;\n }\n return (React.createElement(React.Fragment, null,\n !_this.props.hideLineNumbers && (React.createElement(\"td\", { onClick: lineNumber && _this.onLineNumberClickProxy(lineNumberTemplate), className: classnames_1.default(_this.styles.gutter, (_a = {},\n _a[_this.styles.emptyGutter] = !lineNumber,\n _a[_this.styles.diffAdded] = added,\n _a[_this.styles.diffRemoved] = removed,\n _a[_this.styles.highlightedGutter] = highlightLine,\n _a)) },\n React.createElement(\"pre\", { className: _this.styles.lineNumber }, lineNumber))),\n !_this.props.splitView && !_this.props.hideLineNumbers && (React.createElement(\"td\", { onClick: additionalLineNumber &&\n _this.onLineNumberClickProxy(additionalLineNumberTemplate), className: classnames_1.default(_this.styles.gutter, (_b = {},\n _b[_this.styles.emptyGutter] = !additionalLineNumber,\n _b[_this.styles.diffAdded] = added,\n _b[_this.styles.diffRemoved] = removed,\n _b[_this.styles.highlightedGutter] = highlightLine,\n _b)) },\n React.createElement(\"pre\", { className: _this.styles.lineNumber }, additionalLineNumber))),\n React.createElement(\"td\", { className: classnames_1.default(_this.styles.marker, (_c = {},\n _c[_this.styles.emptyLine] = !content,\n _c[_this.styles.diffAdded] = added,\n _c[_this.styles.diffRemoved] = removed,\n _c[_this.styles.highlightedLine] = highlightLine,\n _c)) },\n React.createElement(\"pre\", null,\n added && '+',\n removed && '-')),\n React.createElement(\"td\", { className: classnames_1.default(_this.styles.content, (_d = {},\n _d[_this.styles.emptyLine] = !content,\n _d[_this.styles.diffAdded] = added,\n _d[_this.styles.diffRemoved] = removed,\n _d[_this.styles.highlightedLine] = highlightLine,\n _d)) },\n React.createElement(\"pre\", { className: _this.styles.contentText }, content))));\n };\n /**\n * Generates lines for split view.\n *\n * @param obj Line diff information.\n * @param obj.left Life diff information for the left pane of the split view.\n * @param obj.right Life diff information for the right pane of the split view.\n * @param index React key for the lines.\n */\n _this.renderSplitView = function (_a, index) {\n var left = _a.left, right = _a.right;\n return (React.createElement(\"tr\", { key: index, className: _this.styles.line },\n _this.renderLine(left.lineNumber, left.type, LineNumberPrefix.LEFT, left.value),\n _this.renderLine(right.lineNumber, right.type, LineNumberPrefix.RIGHT, right.value)));\n };\n /**\n * Generates lines for inline view.\n *\n * @param obj Line diff information.\n * @param obj.left Life diff information for the added section of the inline view.\n * @param obj.right Life diff information for the removed section of the inline view.\n * @param index React key for the lines.\n */\n _this.renderInlineView = function (_a, index) {\n var left = _a.left, right = _a.right;\n var content;\n if (left.type === compute_lines_1.DiffType.REMOVED && right.type === compute_lines_1.DiffType.ADDED) {\n return (React.createElement(React.Fragment, { key: index },\n React.createElement(\"tr\", { className: _this.styles.line }, _this.renderLine(left.lineNumber, left.type, LineNumberPrefix.LEFT, left.value, null)),\n React.createElement(\"tr\", { className: _this.styles.line }, _this.renderLine(null, right.type, LineNumberPrefix.RIGHT, right.value, right.lineNumber))));\n }\n if (left.type === compute_lines_1.DiffType.REMOVED) {\n content = _this.renderLine(left.lineNumber, left.type, LineNumberPrefix.LEFT, left.value, null);\n }\n if (left.type === compute_lines_1.DiffType.DEFAULT) {\n content = _this.renderLine(left.lineNumber, left.type, LineNumberPrefix.LEFT, left.value, right.lineNumber, LineNumberPrefix.RIGHT);\n }\n if (right.type === compute_lines_1.DiffType.ADDED) {\n content = _this.renderLine(null, right.type, LineNumberPrefix.RIGHT, right.value, right.lineNumber);\n }\n return (React.createElement(\"tr\", { key: index, className: _this.styles.line }, content));\n };\n /**\n * Returns a function with clicked block number in the closure.\n *\n * @param id Cold fold block id.\n */\n _this.onBlockClickProxy = function (id) { return function () {\n return _this.onBlockExpand(id);\n }; };\n /**\n * Generates cold fold block. It also uses the custom message renderer when available to show\n * cold fold messages.\n *\n * @param num Number of skipped lines between two blocks.\n * @param blockNumber Code fold block id.\n * @param leftBlockLineNumber First left line number after the current code fold block.\n * @param rightBlockLineNumber First right line number after the current code fold block.\n */\n _this.renderSkippedLineIndicator = function (num, blockNumber, leftBlockLineNumber, rightBlockLineNumber) {\n var _a;\n var _b = _this.props, hideLineNumbers = _b.hideLineNumbers, splitView = _b.splitView;\n var message = _this.props.codeFoldMessageRenderer ? (_this.props.codeFoldMessageRenderer(num, leftBlockLineNumber, rightBlockLineNumber)) : (React.createElement(\"pre\", { className: _this.styles.codeFoldContent },\n \"Expand \",\n num,\n \" lines ...\"));\n var content = (React.createElement(\"td\", null,\n React.createElement(\"a\", { onClick: _this.onBlockClickProxy(blockNumber), tabIndex: 0 }, message)));\n var isUnifiedViewWithoutLineNumbers = !splitView && !hideLineNumbers;\n return (React.createElement(\"tr\", { key: leftBlockLineNumber + \"-\" + rightBlockLineNumber, className: _this.styles.codeFold },\n !hideLineNumbers && React.createElement(\"td\", { className: _this.styles.codeFoldGutter }),\n React.createElement(\"td\", { className: classnames_1.default((_a = {},\n _a[_this.styles.codeFoldGutter] = isUnifiedViewWithoutLineNumbers,\n _a)) }),\n isUnifiedViewWithoutLineNumbers ? (React.createElement(React.Fragment, null,\n React.createElement(\"td\", null),\n content)) : (React.createElement(React.Fragment, null,\n content,\n React.createElement(\"td\", null))),\n React.createElement(\"td\", null),\n React.createElement(\"td\", null)));\n };\n /**\n * Generates the entire diff view.\n */\n _this.renderDiff = function () {\n var _a = _this.props, oldValue = _a.oldValue, newValue = _a.newValue, splitView = _a.splitView, disableWordDiff = _a.disableWordDiff, compareMethod = _a.compareMethod, linesOffset = _a.linesOffset;\n var _b = compute_lines_1.computeLineInformation(oldValue, newValue, disableWordDiff, compareMethod, linesOffset), lineInformation = _b.lineInformation, diffLines = _b.diffLines;\n var extraLines = _this.props.extraLinesSurroundingDiff < 0\n ? 0\n : _this.props.extraLinesSurroundingDiff;\n var skippedLines = [];\n return lineInformation.map(function (line, i) {\n var diffBlockStart = diffLines[0];\n var currentPosition = diffBlockStart - i;\n if (_this.props.showDiffOnly) {\n if (currentPosition === -extraLines) {\n skippedLines = [];\n diffLines.shift();\n }\n if (line.left.type === compute_lines_1.DiffType.DEFAULT &&\n (currentPosition > extraLines ||\n typeof diffBlockStart === 'undefined') &&\n !_this.state.expandedBlocks.includes(diffBlockStart)) {\n skippedLines.push(i + 1);\n if (i === lineInformation.length - 1 && skippedLines.length > 1) {\n return _this.renderSkippedLineIndicator(skippedLines.length, diffBlockStart, line.left.lineNumber, line.right.lineNumber);\n }\n return null;\n }\n }\n var diffNodes = splitView\n ? _this.renderSplitView(line, i)\n : _this.renderInlineView(line, i);\n if (currentPosition === extraLines && skippedLines.length > 0) {\n var length_1 = skippedLines.length;\n skippedLines = [];\n return (React.createElement(React.Fragment, { key: i },\n _this.renderSkippedLineIndicator(length_1, diffBlockStart, line.left.lineNumber, line.right.lineNumber),\n diffNodes));\n }\n return diffNodes;\n });\n };\n _this.render = function () {\n var _a;\n var _b = _this.props, oldValue = _b.oldValue, newValue = _b.newValue, useDarkTheme = _b.useDarkTheme, leftTitle = _b.leftTitle, rightTitle = _b.rightTitle, splitView = _b.splitView, hideLineNumbers = _b.hideLineNumbers;\n if (typeof oldValue !== 'string' || typeof newValue !== 'string') {\n throw Error('\"oldValue\" and \"newValue\" should be strings');\n }\n _this.styles = _this.computeStyles(_this.props.styles, useDarkTheme, _this.props.emotionInstance);\n var nodes = _this.renderDiff();\n var colSpanOnSplitView = hideLineNumbers ? 2 : 3;\n var colSpanOnInlineView = hideLineNumbers ? 2 : 4;\n var title = (leftTitle || rightTitle) && (React.createElement(\"tr\", null,\n React.createElement(\"td\", { colSpan: splitView ? colSpanOnSplitView : colSpanOnInlineView, className: _this.styles.titleBlock },\n React.createElement(\"pre\", { className: _this.styles.contentText }, leftTitle)),\n splitView && (React.createElement(\"td\", { colSpan: colSpanOnSplitView, className: _this.styles.titleBlock },\n React.createElement(\"pre\", { className: _this.styles.contentText }, rightTitle)))));\n return (React.createElement(\"table\", { className: classnames_1.default(_this.styles.diffContainer, (_a = {},\n _a[_this.styles.splitView] = splitView,\n _a)) },\n React.createElement(\"tbody\", null,\n title,\n nodes)));\n };\n _this.state = {\n expandedBlocks: [],\n };\n return _this;\n }\n DiffViewer.defaultProps = {\n oldValue: '',\n newValue: '',\n splitView: true,\n highlightLines: [],\n disableWordDiff: false,\n compareMethod: compute_lines_1.DiffMethod.CHARS,\n styles: {},\n hideLineNumbers: false,\n extraLinesSurroundingDiff: 3,\n showDiffOnly: true,\n useDarkTheme: false,\n linesOffset: 0,\n };\n DiffViewer.propTypes = {\n oldValue: PropTypes.string.isRequired,\n newValue: PropTypes.string.isRequired,\n splitView: PropTypes.bool,\n disableWordDiff: PropTypes.bool,\n compareMethod: PropTypes.oneOf(Object.values(compute_lines_1.DiffMethod)),\n renderContent: PropTypes.func,\n onLineNumberClick: PropTypes.func,\n extraLinesSurroundingDiff: PropTypes.number,\n styles: PropTypes.object,\n hideLineNumbers: PropTypes.bool,\n showDiffOnly: PropTypes.bool,\n highlightLines: PropTypes.arrayOf(PropTypes.string),\n leftTitle: PropTypes.oneOfType([PropTypes.string, PropTypes.element]),\n rightTitle: PropTypes.oneOfType([PropTypes.string, PropTypes.element]),\n linesOffset: PropTypes.number,\n };\n return DiffViewer;\n}(React.Component));\nexports.default = DiffViewer;\n","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar css_1 = require(\"@emotion/css\");\nvar defaultEmotion = { css: css_1.css, cx: css_1.cx };\nexports.default = (function (styleOverride, useDarkTheme, emotion) {\n var _a, _b, _c, _d, _e, _f, _g;\n if (useDarkTheme === void 0) { useDarkTheme = false; }\n if (emotion === void 0) { emotion = defaultEmotion; }\n var css = emotion.css, cx = emotion.cx;\n var _h = styleOverride.variables, overrideVariables = _h === void 0 ? {} : _h, styles = __rest(styleOverride, [\"variables\"]);\n var themeVariables = {\n light: __assign({\n diffViewerBackground: '#fff',\n diffViewerColor: '#212529',\n addedBackground: '#e6ffed',\n addedColor: '#24292e',\n removedBackground: '#ffeef0',\n removedColor: '#24292e',\n wordAddedBackground: '#acf2bd',\n wordRemovedBackground: '#fdb8c0',\n addedGutterBackground: '#cdffd8',\n removedGutterBackground: '#ffdce0',\n gutterBackground: '#f7f7f7',\n gutterBackgroundDark: '#f3f1f1',\n highlightBackground: '#fffbdd',\n highlightGutterBackground: '#fff5b1',\n codeFoldGutterBackground: '#dbedff',\n codeFoldBackground: '#f1f8ff',\n emptyLineBackground: '#fafbfc',\n gutterColor: '#212529',\n addedGutterColor: '#212529',\n removedGutterColor: '#212529',\n codeFoldContentColor: '#212529',\n diffViewerTitleBackground: '#fafbfc',\n diffViewerTitleColor: '#212529',\n diffViewerTitleBorderColor: '#eee',\n }, (overrideVariables.light || {})),\n dark: __assign({\n diffViewerBackground: '#2e303c',\n diffViewerColor: '#FFF',\n addedBackground: '#044B53',\n addedColor: 'white',\n removedBackground: '#632F34',\n removedColor: 'white',\n wordAddedBackground: '#055d67',\n wordRemovedBackground: '#7d383f',\n addedGutterBackground: '#034148',\n removedGutterBackground: '#632b30',\n gutterBackground: '#2c2f3a',\n gutterBackgroundDark: '#262933',\n highlightBackground: '#2a3967',\n highlightGutterBackground: '#2d4077',\n codeFoldGutterBackground: '#21232b',\n codeFoldBackground: '#262831',\n emptyLineBackground: '#363946',\n gutterColor: '#464c67',\n addedGutterColor: '#8c8c8c',\n removedGutterColor: '#8c8c8c',\n codeFoldContentColor: '#555a7b',\n diffViewerTitleBackground: '#2f323e',\n diffViewerTitleColor: '#555a7b',\n diffViewerTitleBorderColor: '#353846',\n }, (overrideVariables.dark || {})),\n };\n var variables = useDarkTheme ? themeVariables.dark : themeVariables.light;\n var content = css({\n width: '100%',\n label: 'content',\n });\n var splitView = css((_a = {},\n _a[\".\" + content] = {\n width: '50%',\n },\n _a.label = 'split-view',\n _a));\n var diffContainer = css({\n width: '100%',\n background: variables.diffViewerBackground,\n pre: {\n margin: 0,\n whiteSpace: 'pre-wrap',\n lineHeight: '25px',\n },\n label: 'diff-container',\n borderCollapse: 'collapse',\n });\n var codeFoldContent = css({\n color: variables.codeFoldContentColor,\n label: 'code-fold-content',\n });\n var contentText = css({\n color: variables.diffViewerColor,\n label: 'content-text',\n });\n var titleBlock = css((_b = {\n background: variables.diffViewerTitleBackground,\n padding: 10,\n borderBottom: \"1px solid \" + variables.diffViewerTitleBorderColor,\n label: 'title-block',\n ':last-child': {\n borderLeft: \"1px solid \" + variables.diffViewerTitleBorderColor,\n }\n },\n _b[\".\" + contentText] = {\n color: variables.diffViewerTitleColor,\n },\n _b));\n var lineNumber = css({\n color: variables.gutterColor,\n label: 'line-number',\n });\n var diffRemoved = css((_c = {\n background: variables.removedBackground,\n color: variables.removedColor,\n pre: {\n color: variables.removedColor,\n }\n },\n _c[\".\" + lineNumber] = {\n color: variables.removedGutterColor,\n },\n _c.label = 'diff-removed',\n _c));\n var diffAdded = css((_d = {\n background: variables.addedBackground,\n color: variables.addedColor,\n pre: {\n color: variables.addedColor,\n }\n },\n _d[\".\" + lineNumber] = {\n color: variables.addedGutterColor,\n },\n _d.label = 'diff-added',\n _d));\n var wordDiff = css({\n padding: 2,\n display: 'inline-flex',\n borderRadius: 1,\n label: 'word-diff',\n });\n var wordAdded = css({\n background: variables.wordAddedBackground,\n label: 'word-added',\n });\n var wordRemoved = css({\n background: variables.wordRemovedBackground,\n label: 'word-removed',\n });\n var codeFoldGutter = css({\n backgroundColor: variables.codeFoldGutterBackground,\n label: 'code-fold-gutter',\n });\n var codeFold = css({\n backgroundColor: variables.codeFoldBackground,\n height: 40,\n fontSize: 14,\n fontWeight: 700,\n label: 'code-fold',\n a: {\n textDecoration: 'underline !important',\n cursor: 'pointer',\n pre: {\n display: 'inline',\n },\n },\n });\n var emptyLine = css({\n backgroundColor: variables.emptyLineBackground,\n label: 'empty-line',\n });\n var marker = css((_e = {\n width: 25,\n paddingLeft: 10,\n paddingRight: 10,\n userSelect: 'none',\n label: 'marker'\n },\n _e[\"&.\" + diffAdded] = {\n pre: {\n color: variables.addedColor,\n },\n },\n _e[\"&.\" + diffRemoved] = {\n pre: {\n color: variables.removedColor,\n },\n },\n _e));\n var highlightedLine = css((_f = {\n background: variables.highlightBackground,\n label: 'highlighted-line'\n },\n _f[\".\" + wordAdded + \", .\" + wordRemoved] = {\n backgroundColor: 'initial',\n },\n _f));\n var highlightedGutter = css({\n label: 'highlighted-gutter',\n });\n var gutter = css((_g = {\n userSelect: 'none',\n minWidth: 50,\n padding: '0 10px',\n label: 'gutter',\n textAlign: 'right',\n background: variables.gutterBackground,\n '&:hover': {\n cursor: 'pointer',\n background: variables.gutterBackgroundDark,\n pre: {\n opacity: 1,\n },\n },\n pre: {\n opacity: 0.5,\n }\n },\n _g[\"&.\" + diffAdded] = {\n background: variables.addedGutterBackground,\n },\n _g[\"&.\" + diffRemoved] = {\n background: variables.removedGutterBackground,\n },\n _g[\"&.\" + highlightedGutter] = {\n background: variables.highlightGutterBackground,\n '&:hover': {\n background: variables.highlightGutterBackground,\n },\n },\n _g));\n var emptyGutter = css({\n '&:hover': {\n background: variables.gutterBackground,\n cursor: 'initial',\n },\n label: 'empty-gutter',\n });\n var line = css({\n verticalAlign: 'baseline',\n label: 'line',\n });\n var defaultStyles = {\n diffContainer: diffContainer,\n diffRemoved: diffRemoved,\n diffAdded: diffAdded,\n splitView: splitView,\n marker: marker,\n highlightedGutter: highlightedGutter,\n highlightedLine: highlightedLine,\n gutter: gutter,\n line: line,\n wordDiff: wordDiff,\n wordAdded: wordAdded,\n wordRemoved: wordRemoved,\n codeFoldGutter: codeFoldGutter,\n codeFold: codeFold,\n emptyGutter: emptyGutter,\n emptyLine: emptyLine,\n lineNumber: lineNumber,\n contentText: contentText,\n content: content,\n codeFoldContent: codeFoldContent,\n titleBlock: titleBlock,\n };\n var computerOverrideStyles = Object.keys(styles).reduce(function (acc, key) {\n var _a;\n return (__assign(__assign({}, acc), (_a = {},\n _a[key] = css(styles[key]),\n _a)));\n }, {});\n return Object.keys(defaultStyles).reduce(function (acc, key) {\n var _a;\n return (__assign(__assign({}, acc), (_a = {},\n _a[key] = computerOverrideStyles[key]\n ? cx(defaultStyles[key], computerOverrideStyles[key])\n : defaultStyles[key],\n _a)));\n }, {});\n});\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the 'License');\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {FocusableElement} from '@react-types/shared';\nimport {focusWithoutScrolling, getOwnerDocument, runAfterTransition} from '@react-aria/utils';\nimport {getInteractionModality} from '@react-aria/interactions';\n\n/**\n * A utility function that focuses an element while avoiding undesired side effects such\n * as page scrolling and screen reader issues with CSS transitions.\n */\nexport function focusSafely(element: FocusableElement) {\n // If the user is interacting with a virtual cursor, e.g. screen reader, then\n // wait until after any animated transitions that are currently occurring on\n // the page before shifting focus. This avoids issues with VoiceOver on iOS\n // causing the page to scroll when moving focus if the element is transitioning\n // from off the screen.\n const ownerDocument = getOwnerDocument(element);\n if (getInteractionModality() === 'virtual') {\n let lastFocusedElement = ownerDocument.activeElement;\n runAfterTransition(() => {\n // If focus did not move and the element is still in the document, focus it.\n if (ownerDocument.activeElement === lastFocusedElement && element.isConnected) {\n focusWithoutScrolling(element);\n }\n });\n } else {\n focusWithoutScrolling(element);\n }\n}\n","/*\n * Copyright 2021 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {getOwnerWindow} from '@react-aria/utils';\n\nfunction isStyleVisible(element: Element) {\n const windowObject = getOwnerWindow(element);\n if (!(element instanceof windowObject.HTMLElement) && !(element instanceof windowObject.SVGElement)) {\n return false;\n }\n\n let {display, visibility} = element.style;\n\n let isVisible = (\n display !== 'none' &&\n visibility !== 'hidden' &&\n visibility !== 'collapse'\n );\n\n if (isVisible) {\n const {getComputedStyle} = element.ownerDocument.defaultView as unknown as Window;\n let {display: computedDisplay, visibility: computedVisibility} = getComputedStyle(element);\n\n isVisible = (\n computedDisplay !== 'none' &&\n computedVisibility !== 'hidden' &&\n computedVisibility !== 'collapse'\n );\n }\n\n return isVisible;\n}\n\nfunction isAttributeVisible(element: Element, childElement?: Element) {\n return (\n !element.hasAttribute('hidden') &&\n (element.nodeName === 'DETAILS' &&\n childElement &&\n childElement.nodeName !== 'SUMMARY'\n ? element.hasAttribute('open')\n : true)\n );\n}\n\n/**\n * Adapted from https://github.com/testing-library/jest-dom and\n * https://github.com/vuejs/vue-test-utils-next/.\n * Licensed under the MIT License.\n * @param element - Element to evaluate for display or visibility.\n */\nexport function isElementVisible(element: Element, childElement?: Element) {\n return (\n element.nodeName !== '#comment' &&\n isStyleVisible(element) &&\n isAttributeVisible(element, childElement) &&\n (!element.parentElement || isElementVisible(element.parentElement, element))\n );\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {FocusableElement} from '@react-types/shared';\nimport {focusSafely} from './focusSafely';\nimport {getOwnerDocument, useLayoutEffect} from '@react-aria/utils';\nimport {isElementVisible} from './isElementVisible';\nimport React, {ReactNode, RefObject, useContext, useEffect, useMemo, useRef} from 'react';\n\nexport interface FocusScopeProps {\n /** The contents of the focus scope. */\n children: ReactNode,\n\n /**\n * Whether to contain focus inside the scope, so users cannot\n * move focus outside, for example in a modal dialog.\n */\n contain?: boolean,\n\n /**\n * Whether to restore focus back to the element that was focused\n * when the focus scope mounted, after the focus scope unmounts.\n */\n restoreFocus?: boolean,\n\n /** Whether to auto focus the first focusable element in the focus scope on mount. */\n autoFocus?: boolean\n}\n\nexport interface FocusManagerOptions {\n /** The element to start searching from. The currently focused element by default. */\n from?: Element,\n /** Whether to only include tabbable elements, or all focusable elements. */\n tabbable?: boolean,\n /** Whether focus should wrap around when it reaches the end of the scope. */\n wrap?: boolean,\n /** A callback that determines whether the given element is focused. */\n accept?: (node: Element) => boolean\n}\n\nexport interface FocusManager {\n /** Moves focus to the next focusable or tabbable element in the focus scope. */\n focusNext(opts?: FocusManagerOptions): FocusableElement | null,\n /** Moves focus to the previous focusable or tabbable element in the focus scope. */\n focusPrevious(opts?: FocusManagerOptions): FocusableElement | null,\n /** Moves focus to the first focusable or tabbable element in the focus scope. */\n focusFirst(opts?: FocusManagerOptions): FocusableElement | null,\n /** Moves focus to the last focusable or tabbable element in the focus scope. */\n focusLast(opts?: FocusManagerOptions): FocusableElement | null\n}\n\ntype ScopeRef = RefObject | null;\ninterface IFocusContext {\n focusManager: FocusManager,\n parentNode: TreeNode | null\n}\n\nconst FocusContext = React.createContext(null);\n\nlet activeScope: ScopeRef = null;\n\n// This is a hacky DOM-based implementation of a FocusScope until this RFC lands in React:\n// https://github.com/reactjs/rfcs/pull/109\n\n/**\n * A FocusScope manages focus for its descendants. It supports containing focus inside\n * the scope, restoring focus to the previously focused element on unmount, and auto\n * focusing children on mount. It also acts as a container for a programmatic focus\n * management interface that can be used to move focus forward and back in response\n * to user events.\n */\nexport function FocusScope(props: FocusScopeProps) {\n let {children, contain, restoreFocus, autoFocus} = props;\n let startRef = useRef(null);\n let endRef = useRef(null);\n let scopeRef = useRef([]);\n let {parentNode} = useContext(FocusContext) || {};\n\n // Create a tree node here so we can add children to it even before it is added to the tree.\n let node = useMemo(() => new TreeNode({scopeRef}), [scopeRef]);\n\n useLayoutEffect(() => {\n // If a new scope mounts outside the active scope, (e.g. DialogContainer launched from a menu),\n // use the active scope as the parent instead of the parent from context. Layout effects run bottom\n // up, so if the parent is not yet added to the tree, don't do this. Only the outer-most FocusScope\n // that is being added should get the activeScope as its parent.\n let parent = parentNode || focusScopeTree.root;\n if (focusScopeTree.getTreeNode(parent.scopeRef) && activeScope && !isAncestorScope(activeScope, parent.scopeRef)) {\n let activeNode = focusScopeTree.getTreeNode(activeScope);\n if (activeNode) {\n parent = activeNode;\n }\n }\n\n // Add the node to the parent, and to the tree.\n parent.addChild(node);\n focusScopeTree.addNode(node);\n }, [node, parentNode]);\n\n useLayoutEffect(() => {\n let node = focusScopeTree.getTreeNode(scopeRef);\n if (node) {\n node.contain = !!contain;\n }\n }, [contain]);\n\n useLayoutEffect(() => {\n // Find all rendered nodes between the sentinels and add them to the scope.\n let node = startRef.current?.nextSibling!;\n let nodes: Element[] = [];\n while (node && node !== endRef.current) {\n nodes.push(node as Element);\n node = node.nextSibling as Element;\n }\n\n scopeRef.current = nodes;\n }, [children]);\n\n useActiveScopeTracker(scopeRef, restoreFocus, contain);\n useFocusContainment(scopeRef, contain);\n useRestoreFocus(scopeRef, restoreFocus, contain);\n useAutoFocus(scopeRef, autoFocus);\n\n // This needs to be an effect so that activeScope is updated after the FocusScope tree is complete.\n // It cannot be a useLayoutEffect because the parent of this node hasn't been attached in the tree yet.\n useEffect(() => {\n const activeElement = getOwnerDocument(scopeRef.current ? scopeRef.current[0] : undefined).activeElement;\n let scope: TreeNode | null = null;\n\n if (isElementInScope(activeElement, scopeRef.current)) {\n // We need to traverse the focusScope tree and find the bottom most scope that\n // contains the active element and set that as the activeScope.\n for (let node of focusScopeTree.traverse()) {\n if (node.scopeRef && isElementInScope(activeElement, node.scopeRef.current)) {\n scope = node;\n }\n }\n\n if (scope === focusScopeTree.getTreeNode(scopeRef)) {\n activeScope = scope.scopeRef;\n }\n }\n }, [scopeRef]);\n\n // This layout effect cleanup is so that the tree node is removed synchronously with react before the RAF\n // in useRestoreFocus cleanup runs.\n useLayoutEffect(() => {\n return () => {\n // Scope may have been re-parented.\n let parentScope = focusScopeTree.getTreeNode(scopeRef)?.parent?.scopeRef ?? null;\n\n if (\n (scopeRef === activeScope || isAncestorScope(scopeRef, activeScope)) &&\n (!parentScope || focusScopeTree.getTreeNode(parentScope))\n ) {\n activeScope = parentScope;\n }\n focusScopeTree.removeTreeNode(scopeRef);\n };\n }, [scopeRef]);\n\n let focusManager = useMemo(() => createFocusManagerForScope(scopeRef), []);\n let value = useMemo(() => ({\n focusManager,\n parentNode: node\n }), [node, focusManager]);\n\n return (\n \n \n );\n}\n\n/**\n * Returns a FocusManager interface for the parent FocusScope.\n * A FocusManager can be used to programmatically move focus within\n * a FocusScope, e.g. in response to user events like keyboard navigation.\n */\nexport function useFocusManager(): FocusManager | undefined {\n return useContext(FocusContext)?.focusManager;\n}\n\nfunction createFocusManagerForScope(scopeRef: React.RefObject): FocusManager {\n return {\n focusNext(opts: FocusManagerOptions = {}) {\n let scope = scopeRef.current!;\n let {from, tabbable, wrap, accept} = opts;\n let node = from || getOwnerDocument(scope[0]).activeElement!;\n let sentinel = scope[0].previousElementSibling!;\n let scopeRoot = getScopeRoot(scope);\n let walker = getFocusableTreeWalker(scopeRoot, {tabbable, accept}, scope);\n walker.currentNode = isElementInScope(node, scope) ? node : sentinel;\n let nextNode = walker.nextNode() as FocusableElement;\n if (!nextNode && wrap) {\n walker.currentNode = sentinel;\n nextNode = walker.nextNode() as FocusableElement;\n }\n if (nextNode) {\n focusElement(nextNode, true);\n }\n return nextNode;\n },\n focusPrevious(opts: FocusManagerOptions = {}) {\n let scope = scopeRef.current!;\n let {from, tabbable, wrap, accept} = opts;\n let node = from || getOwnerDocument(scope[0]).activeElement!;\n let sentinel = scope[scope.length - 1].nextElementSibling!;\n let scopeRoot = getScopeRoot(scope);\n let walker = getFocusableTreeWalker(scopeRoot, {tabbable, accept}, scope);\n walker.currentNode = isElementInScope(node, scope) ? node : sentinel;\n let previousNode = walker.previousNode() as FocusableElement;\n if (!previousNode && wrap) {\n walker.currentNode = sentinel;\n previousNode = walker.previousNode() as FocusableElement;\n }\n if (previousNode) {\n focusElement(previousNode, true);\n }\n return previousNode;\n },\n focusFirst(opts = {}) {\n let scope = scopeRef.current!;\n let {tabbable, accept} = opts;\n let scopeRoot = getScopeRoot(scope);\n let walker = getFocusableTreeWalker(scopeRoot, {tabbable, accept}, scope);\n walker.currentNode = scope[0].previousElementSibling!;\n let nextNode = walker.nextNode() as FocusableElement;\n if (nextNode) {\n focusElement(nextNode, true);\n }\n return nextNode;\n },\n focusLast(opts = {}) {\n let scope = scopeRef.current!;\n let {tabbable, accept} = opts;\n let scopeRoot = getScopeRoot(scope);\n let walker = getFocusableTreeWalker(scopeRoot, {tabbable, accept}, scope);\n walker.currentNode = scope[scope.length - 1].nextElementSibling!;\n let previousNode = walker.previousNode() as FocusableElement;\n if (previousNode) {\n focusElement(previousNode, true);\n }\n return previousNode;\n }\n };\n}\n\nconst focusableElements = [\n 'input:not([disabled]):not([type=hidden])',\n 'select:not([disabled])',\n 'textarea:not([disabled])',\n 'button:not([disabled])',\n 'a[href]',\n 'area[href]',\n 'summary',\n 'iframe',\n 'object',\n 'embed',\n 'audio[controls]',\n 'video[controls]',\n '[contenteditable]'\n];\n\nconst FOCUSABLE_ELEMENT_SELECTOR = focusableElements.join(':not([hidden]),') + ',[tabindex]:not([disabled]):not([hidden])';\n\nfocusableElements.push('[tabindex]:not([tabindex=\"-1\"]):not([disabled])');\nconst TABBABLE_ELEMENT_SELECTOR = focusableElements.join(':not([hidden]):not([tabindex=\"-1\"]),');\n\nfunction getScopeRoot(scope: Element[]) {\n return scope[0].parentElement!;\n}\n\nfunction shouldContainFocus(scopeRef: ScopeRef) {\n let scope = focusScopeTree.getTreeNode(activeScope);\n while (scope && scope.scopeRef !== scopeRef) {\n if (scope.contain) {\n return false;\n }\n\n scope = scope.parent;\n }\n\n return true;\n}\n\nfunction useFocusContainment(scopeRef: RefObject, contain?: boolean) {\n let focusedNode = useRef();\n\n let raf = useRef>();\n useLayoutEffect(() => {\n let scope = scopeRef.current;\n if (!contain) {\n // if contain was changed, then we should cancel any ongoing waits to pull focus back into containment\n if (raf.current) {\n cancelAnimationFrame(raf.current);\n raf.current = undefined;\n }\n return;\n }\n\n const ownerDocument = getOwnerDocument(scope ? scope[0] : undefined);\n\n // Handle the Tab key to contain focus within the scope\n let onKeyDown = (e) => {\n if (e.key !== 'Tab' || e.altKey || e.ctrlKey || e.metaKey || !shouldContainFocus(scopeRef)) {\n return;\n }\n\n let focusedElement = ownerDocument.activeElement;\n let scope = scopeRef.current;\n if (!scope || !isElementInScope(focusedElement, scope)) {\n return;\n }\n\n let scopeRoot = getScopeRoot(scope);\n let walker = getFocusableTreeWalker(scopeRoot, {tabbable: true}, scope);\n if (!focusedElement) {\n return;\n }\n walker.currentNode = focusedElement;\n let nextElement = (e.shiftKey ? walker.previousNode() : walker.nextNode()) as FocusableElement;\n if (!nextElement) {\n walker.currentNode = e.shiftKey ? scope[scope.length - 1].nextElementSibling! : scope[0].previousElementSibling!;\n nextElement = (e.shiftKey ? walker.previousNode() : walker.nextNode()) as FocusableElement;\n }\n\n e.preventDefault();\n if (nextElement) {\n focusElement(nextElement, true);\n }\n };\n\n let onFocus = (e) => {\n // If focusing an element in a child scope of the currently active scope, the child becomes active.\n // Moving out of the active scope to an ancestor is not allowed.\n if ((!activeScope || isAncestorScope(activeScope, scopeRef)) && isElementInScope(e.target, scopeRef.current)) {\n activeScope = scopeRef;\n focusedNode.current = e.target;\n } else if (shouldContainFocus(scopeRef) && !isElementInChildScope(e.target, scopeRef)) {\n // If a focus event occurs outside the active scope (e.g. user tabs from browser location bar),\n // restore focus to the previously focused node or the first tabbable element in the active scope.\n if (focusedNode.current) {\n focusedNode.current.focus();\n } else if (activeScope && activeScope.current) {\n focusFirstInScope(activeScope.current);\n }\n } else if (shouldContainFocus(scopeRef)) {\n focusedNode.current = e.target;\n }\n };\n\n let onBlur = (e) => {\n // Firefox doesn't shift focus back to the Dialog properly without this\n if (raf.current) {\n cancelAnimationFrame(raf.current);\n }\n raf.current = requestAnimationFrame(() => {\n // Use document.activeElement instead of e.relatedTarget so we can tell if user clicked into iframe\n if (ownerDocument.activeElement && shouldContainFocus(scopeRef) && !isElementInChildScope(ownerDocument.activeElement, scopeRef)) {\n activeScope = scopeRef;\n if (ownerDocument.body.contains(e.target)) {\n focusedNode.current = e.target;\n focusedNode.current?.focus();\n } else if (activeScope.current) {\n focusFirstInScope(activeScope.current);\n }\n }\n });\n };\n\n ownerDocument.addEventListener('keydown', onKeyDown, false);\n ownerDocument.addEventListener('focusin', onFocus, false);\n scope?.forEach(element => element.addEventListener('focusin', onFocus, false));\n scope?.forEach(element => element.addEventListener('focusout', onBlur, false));\n return () => {\n ownerDocument.removeEventListener('keydown', onKeyDown, false);\n ownerDocument.removeEventListener('focusin', onFocus, false);\n scope?.forEach(element => element.removeEventListener('focusin', onFocus, false));\n scope?.forEach(element => element.removeEventListener('focusout', onBlur, false));\n };\n }, [scopeRef, contain]);\n\n // This is a useLayoutEffect so it is guaranteed to run before our async synthetic blur\n // eslint-disable-next-line arrow-body-style\n useLayoutEffect(() => {\n return () => {\n if (raf.current) {\n cancelAnimationFrame(raf.current);\n }\n };\n }, [raf]);\n}\n\nfunction isElementInAnyScope(element: Element) {\n return isElementInChildScope(element);\n}\n\nfunction isElementInScope(element?: Element | null, scope?: Element[] | null) {\n if (!element) {\n return false;\n }\n if (!scope) {\n return false;\n }\n return scope.some(node => node.contains(element));\n}\n\nfunction isElementInChildScope(element: Element, scope: ScopeRef = null) {\n // If the element is within a top layer element (e.g. toasts), always allow moving focus there.\n if (element instanceof Element && element.closest('[data-react-aria-top-layer]')) {\n return true;\n }\n\n // node.contains in isElementInScope covers child scopes that are also DOM children,\n // but does not cover child scopes in portals.\n for (let {scopeRef: s} of focusScopeTree.traverse(focusScopeTree.getTreeNode(scope))) {\n if (s && isElementInScope(element, s.current)) {\n return true;\n }\n }\n\n return false;\n}\n\n/** @private */\nexport function isElementInChildOfActiveScope(element: Element) {\n return isElementInChildScope(element, activeScope);\n}\n\nfunction isAncestorScope(ancestor: ScopeRef, scope: ScopeRef) {\n let parent = focusScopeTree.getTreeNode(scope)?.parent;\n while (parent) {\n if (parent.scopeRef === ancestor) {\n return true;\n }\n parent = parent.parent;\n }\n return false;\n}\n\nfunction focusElement(element: FocusableElement | null, scroll = false) {\n if (element != null && !scroll) {\n try {\n focusSafely(element);\n } catch (err) {\n // ignore\n }\n } else if (element != null) {\n try {\n element.focus();\n } catch (err) {\n // ignore\n }\n }\n}\n\nfunction focusFirstInScope(scope: Element[], tabbable:boolean = true) {\n let sentinel = scope[0].previousElementSibling!;\n let scopeRoot = getScopeRoot(scope);\n let walker = getFocusableTreeWalker(scopeRoot, {tabbable}, scope);\n walker.currentNode = sentinel;\n let nextNode = walker.nextNode();\n\n // If the scope does not contain a tabbable element, use the first focusable element.\n if (tabbable && !nextNode) {\n scopeRoot = getScopeRoot(scope);\n walker = getFocusableTreeWalker(scopeRoot, {tabbable: false}, scope);\n walker.currentNode = sentinel;\n nextNode = walker.nextNode();\n }\n\n focusElement(nextNode as FocusableElement);\n}\n\nfunction useAutoFocus(scopeRef: RefObject, autoFocus?: boolean) {\n const autoFocusRef = React.useRef(autoFocus);\n useEffect(() => {\n if (autoFocusRef.current) {\n activeScope = scopeRef;\n const ownerDocument = getOwnerDocument(scopeRef.current ? scopeRef.current[0] : undefined);\n if (!isElementInScope(ownerDocument.activeElement, activeScope.current) && scopeRef.current) {\n focusFirstInScope(scopeRef.current);\n }\n }\n autoFocusRef.current = false;\n }, [scopeRef]);\n}\n\nfunction useActiveScopeTracker(scopeRef: RefObject, restore?: boolean, contain?: boolean) {\n // tracks the active scope, in case restore and contain are both false.\n // if either are true, this is tracked in useRestoreFocus or useFocusContainment.\n useLayoutEffect(() => {\n if (restore || contain) {\n return;\n }\n\n let scope = scopeRef.current;\n const ownerDocument = getOwnerDocument(scope ? scope[0] : undefined);\n\n let onFocus = (e) => {\n let target = e.target as Element;\n if (isElementInScope(target, scopeRef.current)) {\n activeScope = scopeRef;\n } else if (!isElementInAnyScope(target)) {\n activeScope = null;\n }\n };\n\n ownerDocument.addEventListener('focusin', onFocus, false);\n scope?.forEach(element => element.addEventListener('focusin', onFocus, false));\n return () => {\n ownerDocument.removeEventListener('focusin', onFocus, false);\n scope?.forEach(element => element.removeEventListener('focusin', onFocus, false));\n };\n }, [scopeRef, restore, contain]);\n}\n\nfunction shouldRestoreFocus(scopeRef: ScopeRef) {\n let scope = focusScopeTree.getTreeNode(activeScope);\n while (scope && scope.scopeRef !== scopeRef) {\n if (scope.nodeToRestore) {\n return false;\n }\n\n scope = scope.parent;\n }\n\n return scope?.scopeRef === scopeRef;\n}\n\nfunction useRestoreFocus(scopeRef: RefObject, restoreFocus?: boolean, contain?: boolean) {\n // create a ref during render instead of useLayoutEffect so the active element is saved before a child with autoFocus=true mounts.\n // eslint-disable-next-line no-restricted-globals\n const nodeToRestoreRef = useRef(typeof document !== 'undefined' ? getOwnerDocument(scopeRef.current ? scopeRef.current[0] : undefined).activeElement as FocusableElement : null);\n\n // restoring scopes should all track if they are active regardless of contain, but contain already tracks it plus logic to contain the focus\n // restoring-non-containing scopes should only care if they become active so they can perform the restore\n useLayoutEffect(() => {\n let scope = scopeRef.current;\n const ownerDocument = getOwnerDocument(scope ? scope[0] : undefined);\n if (!restoreFocus || contain) {\n return;\n }\n\n let onFocus = () => {\n // If focusing an element in a child scope of the currently active scope, the child becomes active.\n // Moving out of the active scope to an ancestor is not allowed.\n if ((!activeScope || isAncestorScope(activeScope, scopeRef)) &&\n isElementInScope(ownerDocument.activeElement, scopeRef.current)\n ) {\n activeScope = scopeRef;\n }\n };\n\n ownerDocument.addEventListener('focusin', onFocus, false);\n scope?.forEach(element => element.addEventListener('focusin', onFocus, false));\n return () => {\n ownerDocument.removeEventListener('focusin', onFocus, false);\n scope?.forEach(element => element.removeEventListener('focusin', onFocus, false));\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [scopeRef, contain]);\n\n useLayoutEffect(() => {\n const ownerDocument = getOwnerDocument(scopeRef.current ? scopeRef.current[0] : undefined);\n\n if (!restoreFocus) {\n return;\n }\n\n // Handle the Tab key so that tabbing out of the scope goes to the next element\n // after the node that had focus when the scope mounted. This is important when\n // using portals for overlays, so that focus goes to the expected element when\n // tabbing out of the overlay.\n let onKeyDown = (e: KeyboardEvent) => {\n if (e.key !== 'Tab' || e.altKey || e.ctrlKey || e.metaKey || !shouldContainFocus(scopeRef)) {\n return;\n }\n\n let focusedElement = ownerDocument.activeElement as FocusableElement;\n if (!isElementInScope(focusedElement, scopeRef.current)) {\n return;\n }\n let treeNode = focusScopeTree.getTreeNode(scopeRef);\n if (!treeNode) {\n return;\n }\n let nodeToRestore = treeNode.nodeToRestore;\n\n // Create a DOM tree walker that matches all tabbable elements\n let walker = getFocusableTreeWalker(ownerDocument.body, {tabbable: true});\n\n // Find the next tabbable element after the currently focused element\n walker.currentNode = focusedElement;\n let nextElement = (e.shiftKey ? walker.previousNode() : walker.nextNode()) as FocusableElement;\n\n if (!nodeToRestore || !ownerDocument.body.contains(nodeToRestore) || nodeToRestore === ownerDocument.body) {\n nodeToRestore = undefined;\n treeNode.nodeToRestore = undefined;\n }\n\n // If there is no next element, or it is outside the current scope, move focus to the\n // next element after the node to restore to instead.\n if ((!nextElement || !isElementInScope(nextElement, scopeRef.current)) && nodeToRestore) {\n walker.currentNode = nodeToRestore;\n\n // Skip over elements within the scope, in case the scope immediately follows the node to restore.\n do {\n nextElement = (e.shiftKey ? walker.previousNode() : walker.nextNode()) as FocusableElement;\n } while (isElementInScope(nextElement, scopeRef.current));\n\n e.preventDefault();\n e.stopPropagation();\n if (nextElement) {\n focusElement(nextElement, true);\n } else {\n // If there is no next element and the nodeToRestore isn't within a FocusScope (i.e. we are leaving the top level focus scope)\n // then move focus to the body.\n // Otherwise restore focus to the nodeToRestore (e.g menu within a popover -> tabbing to close the menu should move focus to menu trigger)\n if (!isElementInAnyScope(nodeToRestore)) {\n focusedElement.blur();\n } else {\n focusElement(nodeToRestore, true);\n }\n }\n }\n };\n\n if (!contain) {\n ownerDocument.addEventListener('keydown', onKeyDown, true);\n }\n\n return () => {\n if (!contain) {\n ownerDocument.removeEventListener('keydown', onKeyDown, true);\n }\n };\n }, [scopeRef, restoreFocus, contain]);\n\n // useLayoutEffect instead of useEffect so the active element is saved synchronously instead of asynchronously.\n useLayoutEffect(() => {\n const ownerDocument = getOwnerDocument(scopeRef.current ? scopeRef.current[0] : undefined);\n\n if (!restoreFocus) {\n return;\n }\n\n let treeNode = focusScopeTree.getTreeNode(scopeRef);\n if (!treeNode) {\n return;\n }\n treeNode.nodeToRestore = nodeToRestoreRef.current ?? undefined;\n return () => {\n let treeNode = focusScopeTree.getTreeNode(scopeRef);\n if (!treeNode) {\n return;\n }\n let nodeToRestore = treeNode.nodeToRestore;\n\n // if we already lost focus to the body and this was the active scope, then we should attempt to restore\n if (\n restoreFocus\n && nodeToRestore\n && (\n // eslint-disable-next-line react-hooks/exhaustive-deps\n isElementInScope(ownerDocument.activeElement, scopeRef.current)\n || (ownerDocument.activeElement === ownerDocument.body && shouldRestoreFocus(scopeRef))\n )\n ) {\n // freeze the focusScopeTree so it persists after the raf, otherwise during unmount nodes are removed from it\n let clonedTree = focusScopeTree.clone();\n requestAnimationFrame(() => {\n // Only restore focus if we've lost focus to the body, the alternative is that focus has been purposefully moved elsewhere\n if (ownerDocument.activeElement === ownerDocument.body) {\n // look up the tree starting with our scope to find a nodeToRestore still in the DOM\n let treeNode = clonedTree.getTreeNode(scopeRef);\n while (treeNode) {\n if (treeNode.nodeToRestore && treeNode.nodeToRestore.isConnected) {\n focusElement(treeNode.nodeToRestore);\n return;\n }\n treeNode = treeNode.parent;\n }\n\n // If no nodeToRestore was found, focus the first element in the nearest\n // ancestor scope that is still in the tree.\n treeNode = clonedTree.getTreeNode(scopeRef);\n while (treeNode) {\n if (treeNode.scopeRef && treeNode.scopeRef.current && focusScopeTree.getTreeNode(treeNode.scopeRef)) {\n focusFirstInScope(treeNode.scopeRef.current, true);\n return;\n }\n treeNode = treeNode.parent;\n }\n }\n });\n }\n };\n }, [scopeRef, restoreFocus]);\n}\n\n/**\n * Create a [TreeWalker]{@link https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker}\n * that matches all focusable/tabbable elements.\n */\nexport function getFocusableTreeWalker(root: Element, opts?: FocusManagerOptions, scope?: Element[]) {\n let selector = opts?.tabbable ? TABBABLE_ELEMENT_SELECTOR : FOCUSABLE_ELEMENT_SELECTOR;\n let walker = getOwnerDocument(root).createTreeWalker(\n root,\n NodeFilter.SHOW_ELEMENT,\n {\n acceptNode(node) {\n // Skip nodes inside the starting node.\n if (opts?.from?.contains(node)) {\n return NodeFilter.FILTER_REJECT;\n }\n\n if ((node as Element).matches(selector)\n && isElementVisible(node as Element)\n && (!scope || isElementInScope(node as Element, scope))\n && (!opts?.accept || opts.accept(node as Element))\n ) {\n return NodeFilter.FILTER_ACCEPT;\n }\n\n return NodeFilter.FILTER_SKIP;\n }\n }\n );\n\n if (opts?.from) {\n walker.currentNode = opts.from;\n }\n\n return walker;\n}\n\n/**\n * Creates a FocusManager object that can be used to move focus within an element.\n */\nexport function createFocusManager(ref: RefObject, defaultOptions: FocusManagerOptions = {}): FocusManager {\n return {\n focusNext(opts: FocusManagerOptions = {}) {\n let root = ref.current;\n if (!root) {\n return null;\n }\n let {from, tabbable = defaultOptions.tabbable, wrap = defaultOptions.wrap, accept = defaultOptions.accept} = opts;\n let node = from || getOwnerDocument(root).activeElement;\n let walker = getFocusableTreeWalker(root, {tabbable, accept});\n if (root.contains(node)) {\n walker.currentNode = node!;\n }\n let nextNode = walker.nextNode() as FocusableElement;\n if (!nextNode && wrap) {\n walker.currentNode = root;\n nextNode = walker.nextNode() as FocusableElement;\n }\n if (nextNode) {\n focusElement(nextNode, true);\n }\n return nextNode;\n },\n focusPrevious(opts: FocusManagerOptions = defaultOptions) {\n let root = ref.current;\n if (!root) {\n return null;\n }\n let {from, tabbable = defaultOptions.tabbable, wrap = defaultOptions.wrap, accept = defaultOptions.accept} = opts;\n let node = from || getOwnerDocument(root).activeElement;\n let walker = getFocusableTreeWalker(root, {tabbable, accept});\n if (root.contains(node)) {\n walker.currentNode = node!;\n } else {\n let next = last(walker);\n if (next) {\n focusElement(next, true);\n }\n return next ?? null;\n }\n let previousNode = walker.previousNode() as FocusableElement;\n if (!previousNode && wrap) {\n walker.currentNode = root;\n let lastNode = last(walker);\n if (!lastNode) {\n // couldn't wrap\n return null;\n }\n previousNode = lastNode;\n }\n if (previousNode) {\n focusElement(previousNode, true);\n }\n return previousNode ?? null;\n },\n focusFirst(opts = defaultOptions) {\n let root = ref.current;\n if (!root) {\n return null;\n }\n let {tabbable = defaultOptions.tabbable, accept = defaultOptions.accept} = opts;\n let walker = getFocusableTreeWalker(root, {tabbable, accept});\n let nextNode = walker.nextNode() as FocusableElement;\n if (nextNode) {\n focusElement(nextNode, true);\n }\n return nextNode;\n },\n focusLast(opts = defaultOptions) {\n let root = ref.current;\n if (!root) {\n return null;\n }\n let {tabbable = defaultOptions.tabbable, accept = defaultOptions.accept} = opts;\n let walker = getFocusableTreeWalker(root, {tabbable, accept});\n let next = last(walker);\n if (next) {\n focusElement(next, true);\n }\n return next ?? null;\n }\n };\n}\n\nfunction last(walker: TreeWalker) {\n let next: FocusableElement | undefined = undefined;\n let last: FocusableElement;\n do {\n last = walker.lastChild() as FocusableElement;\n if (last) {\n next = last;\n }\n } while (last);\n return next;\n}\n\n\nclass Tree {\n root: TreeNode;\n private fastMap = new Map();\n\n constructor() {\n this.root = new TreeNode({scopeRef: null});\n this.fastMap.set(null, this.root);\n }\n\n get size() {\n return this.fastMap.size;\n }\n\n getTreeNode(data: ScopeRef) {\n return this.fastMap.get(data);\n }\n\n addTreeNode(scopeRef: ScopeRef, parent: ScopeRef, nodeToRestore?: FocusableElement) {\n let parentNode = this.fastMap.get(parent ?? null);\n if (!parentNode) {\n return;\n }\n let node = new TreeNode({scopeRef});\n parentNode.addChild(node);\n node.parent = parentNode;\n this.fastMap.set(scopeRef, node);\n if (nodeToRestore) {\n node.nodeToRestore = nodeToRestore;\n }\n }\n\n addNode(node: TreeNode) {\n this.fastMap.set(node.scopeRef, node);\n }\n\n removeTreeNode(scopeRef: ScopeRef) {\n // never remove the root\n if (scopeRef === null) {\n return;\n }\n let node = this.fastMap.get(scopeRef);\n if (!node) {\n return;\n }\n let parentNode = node.parent;\n // when we remove a scope, check if any sibling scopes are trying to restore focus to something inside the scope we're removing\n // if we are, then replace the siblings restore with the restore from the scope we're removing\n for (let current of this.traverse()) {\n if (\n current !== node &&\n node.nodeToRestore &&\n current.nodeToRestore &&\n node.scopeRef &&\n node.scopeRef.current &&\n isElementInScope(current.nodeToRestore, node.scopeRef.current)\n ) {\n current.nodeToRestore = node.nodeToRestore;\n }\n }\n let children = node.children;\n if (parentNode) {\n parentNode.removeChild(node);\n if (children.size > 0) {\n children.forEach(child => parentNode && parentNode.addChild(child));\n }\n }\n\n this.fastMap.delete(node.scopeRef);\n }\n\n // Pre Order Depth First\n *traverse(node: TreeNode = this.root): Generator {\n if (node.scopeRef != null) {\n yield node;\n }\n if (node.children.size > 0) {\n for (let child of node.children) {\n yield* this.traverse(child);\n }\n }\n }\n\n clone(): Tree {\n let newTree = new Tree();\n for (let node of this.traverse()) {\n newTree.addTreeNode(node.scopeRef, node.parent?.scopeRef ?? null, node.nodeToRestore);\n }\n return newTree;\n }\n}\n\nclass TreeNode {\n public scopeRef: ScopeRef;\n public nodeToRestore?: FocusableElement;\n public parent?: TreeNode;\n public children: Set = new Set();\n public contain = false;\n\n constructor(props: {scopeRef: ScopeRef}) {\n this.scopeRef = props.scopeRef;\n }\n addChild(node: TreeNode) {\n this.children.add(node);\n node.parent = this;\n }\n removeChild(node: TreeNode) {\n this.children.delete(node);\n node.parent = undefined;\n }\n}\n\nexport let focusScopeTree = new Tree();\n","import {DOMAttributes} from '@react-types/shared';\nimport {isFocusVisible, useFocus, useFocusVisibleListener, useFocusWithin} from '@react-aria/interactions';\nimport {useCallback, useRef, useState} from 'react';\n\nexport interface AriaFocusRingProps {\n /**\n * Whether to show the focus ring when something\n * inside the container element has focus (true), or\n * only if the container itself has focus (false).\n * @default 'false'\n */\n within?: boolean,\n\n /** Whether the element is a text input. */\n isTextInput?: boolean,\n\n /** Whether the element will be auto focused. */\n autoFocus?: boolean\n}\n\nexport interface FocusRingAria {\n /** Whether the element is currently focused. */\n isFocused: boolean,\n\n /** Whether keyboard focus should be visible. */\n isFocusVisible: boolean,\n\n /** Props to apply to the container element with the focus ring. */\n focusProps: DOMAttributes\n}\n\n/**\n * Determines whether a focus ring should be shown to indicate keyboard focus.\n * Focus rings are visible only when the user is interacting with a keyboard,\n * not with a mouse, touch, or other input methods.\n */\nexport function useFocusRing(props: AriaFocusRingProps = {}): FocusRingAria {\n let {\n autoFocus = false,\n isTextInput,\n within\n } = props;\n let state = useRef({\n isFocused: false,\n isFocusVisible: autoFocus || isFocusVisible()\n });\n let [isFocused, setFocused] = useState(false);\n let [isFocusVisibleState, setFocusVisible] = useState(() => state.current.isFocused && state.current.isFocusVisible);\n\n let updateState = useCallback(() => setFocusVisible(state.current.isFocused && state.current.isFocusVisible), []);\n\n let onFocusChange = useCallback(isFocused => {\n state.current.isFocused = isFocused;\n setFocused(isFocused);\n updateState();\n }, [updateState]);\n\n useFocusVisibleListener((isFocusVisible) => {\n state.current.isFocusVisible = isFocusVisible;\n updateState();\n }, [], {isTextInput});\n\n let {focusProps} = useFocus({\n isDisabled: within,\n onFocusChange\n });\n\n let {focusWithinProps} = useFocusWithin({\n isDisabled: !within,\n onFocusWithinChange: onFocusChange\n });\n\n return {\n isFocused,\n isFocusVisible: isFocusVisibleState,\n focusProps: within ? focusWithinProps : focusProps\n };\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport clsx from 'clsx';\nimport {mergeProps} from '@react-aria/utils';\nimport React, {ReactElement} from 'react';\nimport {useFocusRing} from './useFocusRing';\n\nexport interface FocusRingProps {\n /** Child element to apply CSS classes to. */\n children: ReactElement,\n /** CSS class to apply when the element is focused. */\n focusClass?: string,\n /** CSS class to apply when the element has keyboard focus. */\n focusRingClass?: string,\n /**\n * Whether to show the focus ring when something\n * inside the container element has focus (true), or\n * only if the container itself has focus (false).\n * @default false\n */\n within?: boolean,\n /** Whether the element is a text input. */\n isTextInput?: boolean,\n /** Whether the element will be auto focused. */\n autoFocus?: boolean\n}\n\n/**\n * A utility component that applies a CSS class when an element has keyboard focus.\n * Focus rings are visible only when the user is interacting with a keyboard,\n * not with a mouse, touch, or other input methods.\n */\nexport function FocusRing(props: FocusRingProps) {\n let {children, focusClass, focusRingClass} = props;\n let {isFocused, isFocusVisible, focusProps} = useFocusRing(props);\n let child = React.Children.only(children);\n\n return React.cloneElement(child, mergeProps(child.props, {\n ...focusProps,\n className: clsx({\n [focusClass || '']: isFocused,\n [focusRingClass || '']: isFocusVisible\n })\n }));\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {DOMAttributes, FocusableDOMProps, FocusableElement, FocusableProps} from '@react-types/shared';\nimport {focusSafely} from './';\nimport {mergeProps, useObjectRef, useSyncRef} from '@react-aria/utils';\nimport React, {ForwardedRef, MutableRefObject, ReactNode, RefObject, useContext, useEffect, useRef} from 'react';\nimport {useFocus, useKeyboard} from '@react-aria/interactions';\n\nexport interface FocusableOptions extends FocusableProps, FocusableDOMProps {\n /** Whether focus should be disabled. */\n isDisabled?: boolean\n}\n\nexport interface FocusableProviderProps extends DOMAttributes {\n /** The child element to provide DOM props to. */\n children?: ReactNode\n}\n\ninterface FocusableContextValue extends FocusableProviderProps {\n ref?: MutableRefObject\n}\n\nlet FocusableContext = React.createContext(null);\n\nfunction useFocusableContext(ref: RefObject): FocusableContextValue {\n let context = useContext(FocusableContext) || {};\n useSyncRef(context, ref);\n\n // eslint-disable-next-line\n let {ref: _, ...otherProps} = context;\n return otherProps;\n}\n\n/**\n * Provides DOM props to the nearest focusable child.\n */\nfunction FocusableProvider(props: FocusableProviderProps, ref: ForwardedRef) {\n let {children, ...otherProps} = props;\n let objRef = useObjectRef(ref);\n let context = {\n ...otherProps,\n ref: objRef\n };\n\n return (\n \n {children}\n \n );\n}\n\nlet _FocusableProvider = React.forwardRef(FocusableProvider);\nexport {_FocusableProvider as FocusableProvider};\n\nexport interface FocusableAria {\n /** Props for the focusable element. */\n focusableProps: DOMAttributes\n}\n\n/**\n * Used to make an element focusable and capable of auto focus.\n */\nexport function useFocusable(props: FocusableOptions, domRef: RefObject): FocusableAria {\n let {focusProps} = useFocus(props);\n let {keyboardProps} = useKeyboard(props);\n let interactions = mergeProps(focusProps, keyboardProps);\n let domProps = useFocusableContext(domRef);\n let interactionProps = props.isDisabled ? {} : domProps;\n let autoFocusRef = useRef(props.autoFocus);\n\n useEffect(() => {\n if (autoFocusRef.current && domRef.current) {\n focusSafely(domRef.current);\n }\n autoFocusRef.current = false;\n }, [domRef]);\n\n return {\n focusableProps: mergeProps(\n {\n ...interactions,\n tabIndex: props.excludeFromTabOrder && !props.isDisabled ? -1 : undefined\n },\n interactionProps\n )\n };\n}\n","/*\n * Copyright 2022 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {getFocusableTreeWalker} from './FocusScope';\nimport {RefObject, useState} from 'react';\nimport {useLayoutEffect} from '@react-aria/utils';\n\ninterface AriaHasTabbableChildOptions {\n isDisabled?: boolean\n}\n\n// This was created for a special empty case of a component that can have child or\n// be empty, like Collection/Virtualizer/Table/ListView/etc. When these components\n// are empty they can have a message with a tabbable element, which is like them\n// being not empty, when it comes to focus and tab order.\n\n/**\n * Returns whether an element has a tabbable child, and updates as children change.\n * @private\n */\nexport function useHasTabbableChild(ref: RefObject, options?: AriaHasTabbableChildOptions): boolean {\n let isDisabled = options?.isDisabled;\n let [hasTabbableChild, setHasTabbableChild] = useState(false);\n\n useLayoutEffect(() => {\n if (ref?.current && !isDisabled) {\n let update = () => {\n if (ref.current) {\n let walker = getFocusableTreeWalker(ref.current, {tabbable: true});\n setHasTabbableChild(!!walker.nextNode());\n }\n };\n\n update();\n\n // Update when new elements are inserted, or the tabIndex/disabled attribute updates.\n let observer = new MutationObserver(update);\n observer.observe(ref.current, {\n subtree: true,\n childList: true,\n attributes: true,\n attributeFilter: ['tabIndex', 'disabled']\n });\n\n return () => {\n // Disconnect mutation observer when a React update occurs on the top-level component\n // so we update synchronously after re-rendering. Otherwise React will emit act warnings\n // in tests since mutation observers fire asynchronously. The mutation observer is necessary\n // so we also update if a child component re-renders and adds/removes something tabbable.\n observer.disconnect();\n };\n }\n });\n\n return isDisabled ? false : hasTabbableChild;\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {getOwnerDocument, isIOS, runAfterTransition} from '@react-aria/utils';\n\n// Safari on iOS starts selecting text on long press. The only way to avoid this, it seems,\n// is to add user-select: none to the entire page. Adding it to the pressable element prevents\n// that element from being selected, but nearby elements may still receive selection. We add\n// user-select: none on touch start, and remove it again on touch end to prevent this.\n// This must be implemented using global state to avoid race conditions between multiple elements.\n\n// There are three possible states due to the delay before removing user-select: none after\n// pointer up. The 'default' state always transitions to the 'disabled' state, which transitions\n// to 'restoring'. The 'restoring' state can either transition back to 'disabled' or 'default'.\n\n// For non-iOS devices, we apply user-select: none to the pressed element instead to avoid possible\n// performance issues that arise from applying and removing user-select: none to the entire page\n// (see https://github.com/adobe/react-spectrum/issues/1609).\ntype State = 'default' | 'disabled' | 'restoring';\n\n// Note that state only matters here for iOS. Non-iOS gets user-select: none applied to the target element\n// rather than at the document level so we just need to apply/remove user-select: none for each pressed element individually\nlet state: State = 'default';\nlet savedUserSelect = '';\nlet modifiedElementMap = new WeakMap();\n\nexport function disableTextSelection(target?: Element) {\n if (isIOS()) {\n if (state === 'default') {\n // eslint-disable-next-line no-restricted-globals\n const documentObject = getOwnerDocument(target);\n savedUserSelect = documentObject.documentElement.style.webkitUserSelect;\n documentObject.documentElement.style.webkitUserSelect = 'none';\n }\n\n state = 'disabled';\n } else if (target instanceof HTMLElement || target instanceof SVGElement) {\n // If not iOS, store the target's original user-select and change to user-select: none\n // Ignore state since it doesn't apply for non iOS\n modifiedElementMap.set(target, target.style.userSelect);\n target.style.userSelect = 'none';\n }\n}\n\nexport function restoreTextSelection(target?: Element) {\n if (isIOS()) {\n // If the state is already default, there's nothing to do.\n // If it is restoring, then there's no need to queue a second restore.\n if (state !== 'disabled') {\n return;\n }\n\n state = 'restoring';\n\n // There appears to be a delay on iOS where selection still might occur\n // after pointer up, so wait a bit before removing user-select.\n setTimeout(() => {\n // Wait for any CSS transitions to complete so we don't recompute style\n // for the whole page in the middle of the animation and cause jank.\n runAfterTransition(() => {\n // Avoid race conditions\n if (state === 'restoring') {\n // eslint-disable-next-line no-restricted-globals\n const documentObject = getOwnerDocument(target);\n if (documentObject.documentElement.style.webkitUserSelect === 'none') {\n documentObject.documentElement.style.webkitUserSelect = savedUserSelect || '';\n }\n\n savedUserSelect = '';\n state = 'default';\n }\n });\n }, 300);\n } else if (target instanceof HTMLElement || target instanceof SVGElement) {\n // If not iOS, restore the target's original user-select if any\n // Ignore state since it doesn't apply for non iOS\n if (target && modifiedElementMap.has(target)) {\n let targetOldUserSelect = modifiedElementMap.get(target) as string;\n\n if (target.style.userSelect === 'none') {\n target.style.userSelect = targetOldUserSelect;\n }\n\n if (target.getAttribute('style') === '') {\n target.removeAttribute('style');\n }\n modifiedElementMap.delete(target);\n }\n }\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {FocusableElement} from '@react-types/shared';\nimport {PressProps} from './usePress';\nimport React, {MutableRefObject} from 'react';\n\ninterface IPressResponderContext extends PressProps {\n register(): void,\n ref?: MutableRefObject\n}\n\nexport const PressResponderContext = React.createContext({register: () => {}});\nPressResponderContext.displayName = 'PressResponderContext';\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n// Portions of the code in this file are based on code from react.\n// Original licensing for the following can be found in the\n// NOTICE file in the root directory of this source tree.\n// See https://github.com/facebook/react/tree/cc7c1aece46a6b69b41958d731e0fd27c94bfc6c/packages/react-interactions\n\nimport {chain, focusWithoutScrolling, getOwnerDocument, getOwnerWindow, isMac, isVirtualClick, isVirtualPointerEvent, mergeProps, openLink, useEffectEvent, useGlobalListeners, useSyncRef} from '@react-aria/utils';\nimport {disableTextSelection, restoreTextSelection} from './textSelection';\nimport {DOMAttributes, FocusableElement, PressEvent as IPressEvent, PointerType, PressEvents} from '@react-types/shared';\nimport {PressResponderContext} from './context';\nimport {RefObject, useContext, useEffect, useMemo, useRef, useState} from 'react';\n\nexport interface PressProps extends PressEvents {\n /** Whether the target is in a controlled press state (e.g. an overlay it triggers is open). */\n isPressed?: boolean,\n /** Whether the press events should be disabled. */\n isDisabled?: boolean,\n /** Whether the target should not receive focus on press. */\n preventFocusOnPress?: boolean,\n /**\n * Whether press events should be canceled when the pointer leaves the target while pressed.\n * By default, this is `false`, which means if the pointer returns back over the target while\n * still pressed, onPressStart will be fired again. If set to `true`, the press is canceled\n * when the pointer leaves the target and onPressStart will not be fired if the pointer returns.\n */\n shouldCancelOnPointerExit?: boolean,\n /** Whether text selection should be enabled on the pressable element. */\n allowTextSelectionOnPress?: boolean\n}\n\nexport interface PressHookProps extends PressProps {\n /** A ref to the target element. */\n ref?: RefObject\n}\n\ninterface PressState {\n isPressed: boolean,\n ignoreEmulatedMouseEvents: boolean,\n ignoreClickAfterPress: boolean,\n didFirePressStart: boolean,\n isTriggeringEvent: boolean,\n activePointerId: any,\n target: FocusableElement | null,\n isOverTarget: boolean,\n pointerType: PointerType | null,\n userSelect?: string,\n metaKeyEvents?: Map\n}\n\ninterface EventBase {\n currentTarget: EventTarget | null,\n shiftKey: boolean,\n ctrlKey: boolean,\n metaKey: boolean,\n altKey: boolean\n}\n\nexport interface PressResult {\n /** Whether the target is currently pressed. */\n isPressed: boolean,\n /** Props to spread on the target element. */\n pressProps: DOMAttributes\n}\n\nfunction usePressResponderContext(props: PressHookProps): PressHookProps {\n // Consume context from and merge with props.\n let context = useContext(PressResponderContext);\n if (context) {\n let {register, ...contextProps} = context;\n props = mergeProps(contextProps, props) as PressHookProps;\n register();\n }\n useSyncRef(context, props.ref);\n\n return props;\n}\n\nclass PressEvent implements IPressEvent {\n type: IPressEvent['type'];\n pointerType: PointerType;\n target: Element;\n shiftKey: boolean;\n ctrlKey: boolean;\n metaKey: boolean;\n altKey: boolean;\n #shouldStopPropagation = true;\n\n constructor(type: IPressEvent['type'], pointerType: PointerType, originalEvent: EventBase) {\n this.type = type;\n this.pointerType = pointerType;\n this.target = originalEvent.currentTarget as Element;\n this.shiftKey = originalEvent.shiftKey;\n this.metaKey = originalEvent.metaKey;\n this.ctrlKey = originalEvent.ctrlKey;\n this.altKey = originalEvent.altKey;\n }\n\n continuePropagation() {\n this.#shouldStopPropagation = false;\n }\n\n get shouldStopPropagation() {\n return this.#shouldStopPropagation;\n }\n}\n\nconst LINK_CLICKED = Symbol('linkClicked');\n\n/**\n * Handles press interactions across mouse, touch, keyboard, and screen readers.\n * It normalizes behavior across browsers and platforms, and handles many nuances\n * of dealing with pointer and keyboard events.\n */\nexport function usePress(props: PressHookProps): PressResult {\n let {\n onPress,\n onPressChange,\n onPressStart,\n onPressEnd,\n onPressUp,\n isDisabled,\n isPressed: isPressedProp,\n preventFocusOnPress,\n shouldCancelOnPointerExit,\n allowTextSelectionOnPress,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ref: _, // Removing `ref` from `domProps` because TypeScript is dumb\n ...domProps\n } = usePressResponderContext(props);\n\n let [isPressed, setPressed] = useState(false);\n let ref = useRef({\n isPressed: false,\n ignoreEmulatedMouseEvents: false,\n ignoreClickAfterPress: false,\n didFirePressStart: false,\n isTriggeringEvent: false,\n activePointerId: null,\n target: null,\n isOverTarget: false,\n pointerType: null\n });\n\n let {addGlobalListener, removeAllGlobalListeners} = useGlobalListeners();\n\n let triggerPressStart = useEffectEvent((originalEvent: EventBase, pointerType: PointerType) => {\n let state = ref.current;\n if (isDisabled || state.didFirePressStart) {\n return false;\n }\n\n let shouldStopPropagation = true;\n state.isTriggeringEvent = true;\n if (onPressStart) {\n let event = new PressEvent('pressstart', pointerType, originalEvent);\n onPressStart(event);\n shouldStopPropagation = event.shouldStopPropagation;\n }\n\n if (onPressChange) {\n onPressChange(true);\n }\n\n state.isTriggeringEvent = false;\n state.didFirePressStart = true;\n setPressed(true);\n return shouldStopPropagation;\n });\n\n let triggerPressEnd = useEffectEvent((originalEvent: EventBase, pointerType: PointerType, wasPressed = true) => {\n let state = ref.current;\n if (!state.didFirePressStart) {\n return false;\n }\n\n state.ignoreClickAfterPress = true;\n state.didFirePressStart = false;\n state.isTriggeringEvent = true;\n\n let shouldStopPropagation = true;\n if (onPressEnd) {\n let event = new PressEvent('pressend', pointerType, originalEvent);\n onPressEnd(event);\n shouldStopPropagation = event.shouldStopPropagation;\n }\n\n if (onPressChange) {\n onPressChange(false);\n }\n\n setPressed(false);\n\n if (onPress && wasPressed && !isDisabled) {\n let event = new PressEvent('press', pointerType, originalEvent);\n onPress(event);\n shouldStopPropagation &&= event.shouldStopPropagation;\n }\n\n state.isTriggeringEvent = false;\n return shouldStopPropagation;\n });\n\n let triggerPressUp = useEffectEvent((originalEvent: EventBase, pointerType: PointerType) => {\n let state = ref.current;\n if (isDisabled) {\n return false;\n }\n\n if (onPressUp) {\n state.isTriggeringEvent = true;\n let event = new PressEvent('pressup', pointerType, originalEvent);\n onPressUp(event);\n state.isTriggeringEvent = false;\n return event.shouldStopPropagation;\n }\n\n return true;\n });\n\n let cancel = useEffectEvent((e: EventBase) => {\n let state = ref.current;\n if (state.isPressed && state.target) {\n if (state.isOverTarget && state.pointerType != null) {\n triggerPressEnd(createEvent(state.target, e), state.pointerType, false);\n }\n state.isPressed = false;\n state.isOverTarget = false;\n state.activePointerId = null;\n state.pointerType = null;\n removeAllGlobalListeners();\n if (!allowTextSelectionOnPress) {\n restoreTextSelection(state.target);\n }\n }\n });\n\n let cancelOnPointerExit = useEffectEvent((e: EventBase) => {\n if (shouldCancelOnPointerExit) {\n cancel(e);\n }\n });\n\n let pressProps = useMemo(() => {\n let state = ref.current;\n let pressProps: DOMAttributes = {\n onKeyDown(e) {\n if (isValidKeyboardEvent(e.nativeEvent, e.currentTarget) && e.currentTarget.contains(e.target as Element)) {\n if (shouldPreventDefaultKeyboard(e.target as Element, e.key)) {\n e.preventDefault();\n }\n\n // If the event is repeating, it may have started on a different element\n // after which focus moved to the current element. Ignore these events and\n // only handle the first key down event.\n let shouldStopPropagation = true;\n if (!state.isPressed && !e.repeat) {\n state.target = e.currentTarget;\n state.isPressed = true;\n shouldStopPropagation = triggerPressStart(e, 'keyboard');\n\n // Focus may move before the key up event, so register the event on the document\n // instead of the same element where the key down event occurred. Make it capturing so that it will trigger\n // before stopPropagation from useKeyboard on a child element may happen and thus we can still call triggerPress for the parent element.\n let originalTarget = e.currentTarget;\n let pressUp = (e) => {\n if (isValidKeyboardEvent(e, originalTarget) && !e.repeat && originalTarget.contains(e.target as Element) && state.target) {\n triggerPressUp(createEvent(state.target, e), 'keyboard');\n }\n };\n\n addGlobalListener(getOwnerDocument(e.currentTarget), 'keyup', chain(pressUp, onKeyUp), true);\n }\n\n if (shouldStopPropagation) {\n e.stopPropagation();\n }\n\n // Keep track of the keydown events that occur while the Meta (e.g. Command) key is held.\n // macOS has a bug where keyup events are not fired while the Meta key is down.\n // When the Meta key itself is released we will get an event for that, and we'll act as if\n // all of these other keys were released as well.\n // https://bugs.chromium.org/p/chromium/issues/detail?id=1393524\n // https://bugs.webkit.org/show_bug.cgi?id=55291\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1299553\n if (e.metaKey && isMac()) {\n state.metaKeyEvents?.set(e.key, e.nativeEvent);\n }\n } else if (e.key === 'Meta') {\n state.metaKeyEvents = new Map();\n }\n },\n onClick(e) {\n if (e && !e.currentTarget.contains(e.target as Element)) {\n return;\n }\n\n if (e && e.button === 0 && !state.isTriggeringEvent && !(openLink as any).isOpening) {\n let shouldStopPropagation = true;\n if (isDisabled) {\n e.preventDefault();\n }\n\n // If triggered from a screen reader or by using element.click(),\n // trigger as if it were a keyboard click.\n if (!state.ignoreClickAfterPress && !state.ignoreEmulatedMouseEvents && !state.isPressed && (state.pointerType === 'virtual' || isVirtualClick(e.nativeEvent))) {\n // Ensure the element receives focus (VoiceOver on iOS does not do this)\n if (!isDisabled && !preventFocusOnPress) {\n focusWithoutScrolling(e.currentTarget);\n }\n\n let stopPressStart = triggerPressStart(e, 'virtual');\n let stopPressUp = triggerPressUp(e, 'virtual');\n let stopPressEnd = triggerPressEnd(e, 'virtual');\n shouldStopPropagation = stopPressStart && stopPressUp && stopPressEnd;\n }\n\n state.ignoreEmulatedMouseEvents = false;\n state.ignoreClickAfterPress = false;\n if (shouldStopPropagation) {\n e.stopPropagation();\n }\n }\n }\n };\n\n let onKeyUp = (e: KeyboardEvent) => {\n if (state.isPressed && state.target && isValidKeyboardEvent(e, state.target)) {\n if (shouldPreventDefaultKeyboard(e.target as Element, e.key)) {\n e.preventDefault();\n }\n\n let target = e.target as Element;\n triggerPressEnd(createEvent(state.target, e), 'keyboard', state.target.contains(target));\n removeAllGlobalListeners();\n\n // If a link was triggered with a key other than Enter, open the URL ourselves.\n // This means the link has a role override, and the default browser behavior\n // only applies when using the Enter key.\n if (e.key !== 'Enter' && isHTMLAnchorLink(state.target) && state.target.contains(target) && !e[LINK_CLICKED]) {\n // Store a hidden property on the event so we only trigger link click once,\n // even if there are multiple usePress instances attached to the element.\n e[LINK_CLICKED] = true;\n openLink(state.target, e, false);\n }\n\n state.isPressed = false;\n state.metaKeyEvents?.delete(e.key);\n } else if (e.key === 'Meta' && state.metaKeyEvents?.size) {\n // If we recorded keydown events that occurred while the Meta key was pressed,\n // and those haven't received keyup events already, fire keyup events ourselves.\n // See comment above for more info about the macOS bug causing this.\n let events = state.metaKeyEvents;\n state.metaKeyEvents = undefined;\n for (let event of events.values()) {\n state.target?.dispatchEvent(new KeyboardEvent('keyup', event));\n }\n }\n };\n\n if (typeof PointerEvent !== 'undefined') {\n pressProps.onPointerDown = (e) => {\n // Only handle left clicks, and ignore events that bubbled through portals.\n if (e.button !== 0 || !e.currentTarget.contains(e.target as Element)) {\n return;\n }\n\n // iOS safari fires pointer events from VoiceOver with incorrect coordinates/target.\n // Ignore and let the onClick handler take care of it instead.\n // https://bugs.webkit.org/show_bug.cgi?id=222627\n // https://bugs.webkit.org/show_bug.cgi?id=223202\n if (isVirtualPointerEvent(e.nativeEvent)) {\n state.pointerType = 'virtual';\n return;\n }\n\n // Due to browser inconsistencies, especially on mobile browsers, we prevent\n // default on pointer down and handle focusing the pressable element ourselves.\n if (shouldPreventDefault(e.currentTarget as Element)) {\n e.preventDefault();\n }\n\n state.pointerType = e.pointerType;\n\n let shouldStopPropagation = true;\n if (!state.isPressed) {\n state.isPressed = true;\n state.isOverTarget = true;\n state.activePointerId = e.pointerId;\n state.target = e.currentTarget;\n\n if (!isDisabled && !preventFocusOnPress) {\n focusWithoutScrolling(e.currentTarget);\n }\n\n if (!allowTextSelectionOnPress) {\n disableTextSelection(state.target);\n }\n\n shouldStopPropagation = triggerPressStart(e, state.pointerType);\n\n addGlobalListener(getOwnerDocument(e.currentTarget), 'pointermove', onPointerMove, false);\n addGlobalListener(getOwnerDocument(e.currentTarget), 'pointerup', onPointerUp, false);\n addGlobalListener(getOwnerDocument(e.currentTarget), 'pointercancel', onPointerCancel, false);\n }\n\n if (shouldStopPropagation) {\n e.stopPropagation();\n }\n };\n\n pressProps.onMouseDown = (e) => {\n if (!e.currentTarget.contains(e.target as Element)) {\n return;\n }\n\n if (e.button === 0) {\n // Chrome and Firefox on touch Windows devices require mouse down events\n // to be canceled in addition to pointer events, or an extra asynchronous\n // focus event will be fired.\n if (shouldPreventDefault(e.currentTarget as Element)) {\n e.preventDefault();\n }\n\n e.stopPropagation();\n }\n };\n\n pressProps.onPointerUp = (e) => {\n // iOS fires pointerup with zero width and height, so check the pointerType recorded during pointerdown.\n if (!e.currentTarget.contains(e.target as Element) || state.pointerType === 'virtual') {\n return;\n }\n\n // Only handle left clicks\n // Safari on iOS sometimes fires pointerup events, even\n // when the touch isn't over the target, so double check.\n if (e.button === 0 && isOverTarget(e, e.currentTarget)) {\n triggerPressUp(e, state.pointerType || e.pointerType);\n }\n };\n\n // Safari on iOS < 13.2 does not implement pointerenter/pointerleave events correctly.\n // Use pointer move events instead to implement our own hit testing.\n // See https://bugs.webkit.org/show_bug.cgi?id=199803\n let onPointerMove = (e: PointerEvent) => {\n if (e.pointerId !== state.activePointerId) {\n return;\n }\n\n if (state.target && isOverTarget(e, state.target)) {\n if (!state.isOverTarget && state.pointerType != null) {\n state.isOverTarget = true;\n triggerPressStart(createEvent(state.target, e), state.pointerType);\n }\n } else if (state.target && state.isOverTarget && state.pointerType != null) {\n state.isOverTarget = false;\n triggerPressEnd(createEvent(state.target, e), state.pointerType, false);\n cancelOnPointerExit(e);\n }\n };\n\n let onPointerUp = (e: PointerEvent) => {\n if (e.pointerId === state.activePointerId && state.isPressed && e.button === 0 && state.target) {\n if (isOverTarget(e, state.target) && state.pointerType != null) {\n triggerPressEnd(createEvent(state.target, e), state.pointerType);\n } else if (state.isOverTarget && state.pointerType != null) {\n triggerPressEnd(createEvent(state.target, e), state.pointerType, false);\n }\n\n state.isPressed = false;\n state.isOverTarget = false;\n state.activePointerId = null;\n state.pointerType = null;\n removeAllGlobalListeners();\n if (!allowTextSelectionOnPress) {\n restoreTextSelection(state.target);\n }\n }\n };\n\n let onPointerCancel = (e: PointerEvent) => {\n cancel(e);\n };\n\n pressProps.onDragStart = (e) => {\n if (!e.currentTarget.contains(e.target as Element)) {\n return;\n }\n\n // Safari does not call onPointerCancel when a drag starts, whereas Chrome and Firefox do.\n cancel(e);\n };\n } else {\n pressProps.onMouseDown = (e) => {\n // Only handle left clicks\n if (e.button !== 0 || !e.currentTarget.contains(e.target as Element)) {\n return;\n }\n\n // Due to browser inconsistencies, especially on mobile browsers, we prevent\n // default on mouse down and handle focusing the pressable element ourselves.\n if (shouldPreventDefault(e.currentTarget)) {\n e.preventDefault();\n }\n\n if (state.ignoreEmulatedMouseEvents) {\n e.stopPropagation();\n return;\n }\n\n state.isPressed = true;\n state.isOverTarget = true;\n state.target = e.currentTarget;\n state.pointerType = isVirtualClick(e.nativeEvent) ? 'virtual' : 'mouse';\n\n if (!isDisabled && !preventFocusOnPress) {\n focusWithoutScrolling(e.currentTarget);\n }\n\n let shouldStopPropagation = triggerPressStart(e, state.pointerType);\n if (shouldStopPropagation) {\n e.stopPropagation();\n }\n\n addGlobalListener(getOwnerDocument(e.currentTarget), 'mouseup', onMouseUp, false);\n };\n\n pressProps.onMouseEnter = (e) => {\n if (!e.currentTarget.contains(e.target as Element)) {\n return;\n }\n\n let shouldStopPropagation = true;\n if (state.isPressed && !state.ignoreEmulatedMouseEvents && state.pointerType != null) {\n state.isOverTarget = true;\n shouldStopPropagation = triggerPressStart(e, state.pointerType);\n }\n\n if (shouldStopPropagation) {\n e.stopPropagation();\n }\n };\n\n pressProps.onMouseLeave = (e) => {\n if (!e.currentTarget.contains(e.target as Element)) {\n return;\n }\n\n let shouldStopPropagation = true;\n if (state.isPressed && !state.ignoreEmulatedMouseEvents && state.pointerType != null) {\n state.isOverTarget = false;\n shouldStopPropagation = triggerPressEnd(e, state.pointerType, false);\n cancelOnPointerExit(e);\n }\n\n if (shouldStopPropagation) {\n e.stopPropagation();\n }\n };\n\n pressProps.onMouseUp = (e) => {\n if (!e.currentTarget.contains(e.target as Element)) {\n return;\n }\n\n if (!state.ignoreEmulatedMouseEvents && e.button === 0) {\n triggerPressUp(e, state.pointerType || 'mouse');\n }\n };\n\n let onMouseUp = (e: MouseEvent) => {\n // Only handle left clicks\n if (e.button !== 0) {\n return;\n }\n\n state.isPressed = false;\n removeAllGlobalListeners();\n\n if (state.ignoreEmulatedMouseEvents) {\n state.ignoreEmulatedMouseEvents = false;\n return;\n }\n\n if (state.target && isOverTarget(e, state.target) && state.pointerType != null) {\n triggerPressEnd(createEvent(state.target, e), state.pointerType);\n } else if (state.target && state.isOverTarget && state.pointerType != null) {\n triggerPressEnd(createEvent(state.target, e), state.pointerType, false);\n }\n\n state.isOverTarget = false;\n };\n\n pressProps.onTouchStart = (e) => {\n if (!e.currentTarget.contains(e.target as Element)) {\n return;\n }\n\n let touch = getTouchFromEvent(e.nativeEvent);\n if (!touch) {\n return;\n }\n state.activePointerId = touch.identifier;\n state.ignoreEmulatedMouseEvents = true;\n state.isOverTarget = true;\n state.isPressed = true;\n state.target = e.currentTarget;\n state.pointerType = 'touch';\n\n // Due to browser inconsistencies, especially on mobile browsers, we prevent default\n // on the emulated mouse event and handle focusing the pressable element ourselves.\n if (!isDisabled && !preventFocusOnPress) {\n focusWithoutScrolling(e.currentTarget);\n }\n\n if (!allowTextSelectionOnPress) {\n disableTextSelection(state.target);\n }\n\n let shouldStopPropagation = triggerPressStart(e, state.pointerType);\n if (shouldStopPropagation) {\n e.stopPropagation();\n }\n\n addGlobalListener(getOwnerWindow(e.currentTarget), 'scroll', onScroll, true);\n };\n\n pressProps.onTouchMove = (e) => {\n if (!e.currentTarget.contains(e.target as Element)) {\n return;\n }\n\n if (!state.isPressed) {\n e.stopPropagation();\n return;\n }\n\n let touch = getTouchById(e.nativeEvent, state.activePointerId);\n let shouldStopPropagation = true;\n if (touch && isOverTarget(touch, e.currentTarget)) {\n if (!state.isOverTarget && state.pointerType != null) {\n state.isOverTarget = true;\n shouldStopPropagation = triggerPressStart(e, state.pointerType);\n }\n } else if (state.isOverTarget && state.pointerType != null) {\n state.isOverTarget = false;\n shouldStopPropagation = triggerPressEnd(e, state.pointerType, false);\n cancelOnPointerExit(e);\n }\n\n if (shouldStopPropagation) {\n e.stopPropagation();\n }\n };\n\n pressProps.onTouchEnd = (e) => {\n if (!e.currentTarget.contains(e.target as Element)) {\n return;\n }\n\n if (!state.isPressed) {\n e.stopPropagation();\n return;\n }\n\n let touch = getTouchById(e.nativeEvent, state.activePointerId);\n let shouldStopPropagation = true;\n if (touch && isOverTarget(touch, e.currentTarget) && state.pointerType != null) {\n triggerPressUp(e, state.pointerType);\n shouldStopPropagation = triggerPressEnd(e, state.pointerType);\n } else if (state.isOverTarget && state.pointerType != null) {\n shouldStopPropagation = triggerPressEnd(e, state.pointerType, false);\n }\n\n if (shouldStopPropagation) {\n e.stopPropagation();\n }\n\n state.isPressed = false;\n state.activePointerId = null;\n state.isOverTarget = false;\n state.ignoreEmulatedMouseEvents = true;\n if (state.target && !allowTextSelectionOnPress) {\n restoreTextSelection(state.target);\n }\n removeAllGlobalListeners();\n };\n\n pressProps.onTouchCancel = (e) => {\n if (!e.currentTarget.contains(e.target as Element)) {\n return;\n }\n\n e.stopPropagation();\n if (state.isPressed) {\n cancel(e);\n }\n };\n\n let onScroll = (e: Event) => {\n if (state.isPressed && (e.target as Element).contains(state.target)) {\n cancel({\n currentTarget: state.target,\n shiftKey: false,\n ctrlKey: false,\n metaKey: false,\n altKey: false\n });\n }\n };\n\n pressProps.onDragStart = (e) => {\n if (!e.currentTarget.contains(e.target as Element)) {\n return;\n }\n\n cancel(e);\n };\n }\n\n return pressProps;\n }, [\n addGlobalListener,\n isDisabled,\n preventFocusOnPress,\n removeAllGlobalListeners,\n allowTextSelectionOnPress,\n cancel,\n cancelOnPointerExit,\n triggerPressEnd,\n triggerPressStart,\n triggerPressUp\n ]);\n\n // Remove user-select: none in case component unmounts immediately after pressStart\n // eslint-disable-next-line arrow-body-style\n useEffect(() => {\n return () => {\n if (!allowTextSelectionOnPress) {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n restoreTextSelection(ref.current.target ?? undefined);\n }\n };\n }, [allowTextSelectionOnPress]);\n\n return {\n isPressed: isPressedProp || isPressed,\n pressProps: mergeProps(domProps, pressProps)\n };\n}\n\nfunction isHTMLAnchorLink(target: Element): target is HTMLAnchorElement {\n return target.tagName === 'A' && target.hasAttribute('href');\n}\n\nfunction isValidKeyboardEvent(event: KeyboardEvent, currentTarget: Element): boolean {\n const {key, code} = event;\n const element = currentTarget as HTMLElement;\n const role = element.getAttribute('role');\n // Accessibility for keyboards. Space and Enter only.\n // \"Spacebar\" is for IE 11\n return (\n (key === 'Enter' || key === ' ' || key === 'Spacebar' || code === 'Space') &&\n !((element instanceof getOwnerWindow(element).HTMLInputElement && !isValidInputKey(element, key)) ||\n element instanceof getOwnerWindow(element).HTMLTextAreaElement ||\n element.isContentEditable) &&\n // Links should only trigger with Enter key\n !((role === 'link' || (!role && isHTMLAnchorLink(element))) && key !== 'Enter')\n );\n}\n\nfunction getTouchFromEvent(event: TouchEvent): Touch | null {\n const {targetTouches} = event;\n if (targetTouches.length > 0) {\n return targetTouches[0];\n }\n return null;\n}\n\nfunction getTouchById(\n event: TouchEvent,\n pointerId: null | number\n): null | Touch {\n const changedTouches = event.changedTouches;\n for (let i = 0; i < changedTouches.length; i++) {\n const touch = changedTouches[i];\n if (touch.identifier === pointerId) {\n return touch;\n }\n }\n return null;\n}\n\nfunction createEvent(target: FocusableElement, e: EventBase): EventBase {\n return {\n currentTarget: target,\n shiftKey: e.shiftKey,\n ctrlKey: e.ctrlKey,\n metaKey: e.metaKey,\n altKey: e.altKey\n };\n}\n\ninterface Rect {\n top: number,\n right: number,\n bottom: number,\n left: number\n}\n\ninterface EventPoint {\n clientX: number,\n clientY: number,\n width?: number,\n height?: number,\n radiusX?: number,\n radiusY?: number\n}\n\nfunction getPointClientRect(point: EventPoint): Rect {\n let offsetX = 0;\n let offsetY = 0;\n if (point.width !== undefined) {\n offsetX = (point.width / 2);\n } else if (point.radiusX !== undefined) {\n offsetX = point.radiusX;\n }\n if (point.height !== undefined) {\n offsetY = (point.height / 2);\n } else if (point.radiusY !== undefined) {\n offsetY = point.radiusY;\n }\n\n return {\n top: point.clientY - offsetY,\n right: point.clientX + offsetX,\n bottom: point.clientY + offsetY,\n left: point.clientX - offsetX\n };\n}\n\nfunction areRectanglesOverlapping(a: Rect, b: Rect) {\n // check if they cannot overlap on x axis\n if (a.left > b.right || b.left > a.right) {\n return false;\n }\n // check if they cannot overlap on y axis\n if (a.top > b.bottom || b.top > a.bottom) {\n return false;\n }\n return true;\n}\n\nfunction isOverTarget(point: EventPoint, target: Element) {\n let rect = target.getBoundingClientRect();\n let pointRect = getPointClientRect(point);\n return areRectanglesOverlapping(rect, pointRect);\n}\n\nfunction shouldPreventDefault(target: Element) {\n // We cannot prevent default if the target is a draggable element.\n return !(target instanceof HTMLElement) || !target.hasAttribute('draggable');\n}\n\nfunction shouldPreventDefaultKeyboard(target: Element, key: string) {\n if (target instanceof HTMLInputElement) {\n return !isValidInputKey(target, key);\n }\n\n if (target instanceof HTMLButtonElement) {\n return target.type !== 'submit' && target.type !== 'reset';\n }\n\n if (isHTMLAnchorLink(target)) {\n return false;\n }\n\n return true;\n}\n\nconst nonTextInputTypes = new Set([\n 'checkbox',\n 'radio',\n 'range',\n 'color',\n 'file',\n 'image',\n 'button',\n 'submit',\n 'reset'\n]);\n\nfunction isValidInputKey(target: HTMLInputElement, key: string) {\n // Only space should toggle checkboxes and radios, not enter.\n return target.type === 'checkbox' || target.type === 'radio'\n ? key === ' '\n : nonTextInputTypes.has(target.type);\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {DOMAttributes} from '@react-types/shared';\nimport {mergeProps, useObjectRef} from '@react-aria/utils';\nimport {PressProps, usePress} from './usePress';\nimport React, {ForwardedRef, ReactElement} from 'react';\n\ninterface PressableProps extends PressProps {\n children: ReactElement\n}\n\nexport const Pressable = React.forwardRef(({children, ...props}: PressableProps, ref: ForwardedRef) => {\n ref = useObjectRef(ref);\n let {pressProps} = usePress({...props, ref});\n let child = React.Children.only(children);\n return React.cloneElement(\n child,\n // @ts-ignore\n {ref, ...mergeProps(child.props, pressProps)}\n );\n});\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {FocusableElement} from '@react-types/shared';\nimport {mergeProps, useObjectRef, useSyncRef} from '@react-aria/utils';\nimport {PressProps} from './usePress';\nimport {PressResponderContext} from './context';\nimport React, {ForwardedRef, ReactNode, useContext, useEffect, useMemo, useRef} from 'react';\n\ninterface PressResponderProps extends PressProps {\n children: ReactNode\n}\n\nexport const PressResponder = React.forwardRef(({children, ...props}: PressResponderProps, ref: ForwardedRef) => {\n let isRegistered = useRef(false);\n let prevContext = useContext(PressResponderContext);\n ref = useObjectRef(ref || prevContext?.ref);\n let context = mergeProps(prevContext || {}, {\n ...props,\n ref,\n register() {\n isRegistered.current = true;\n if (prevContext) {\n prevContext.register();\n }\n }\n });\n\n useSyncRef(prevContext, ref);\n\n useEffect(() => {\n if (!isRegistered.current) {\n console.warn(\n 'A PressResponder was rendered without a pressable child. ' +\n 'Either call the usePress hook, or wrap your DOM node with component.'\n );\n isRegistered.current = true; // only warn once in strict mode.\n }\n }, []);\n\n return (\n \n {children}\n \n );\n});\n\nexport function ClearPressResponder({children}: {children: ReactNode}) {\n let context = useMemo(() => ({register: () => {}}), []);\n return (\n \n {children}\n \n );\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {FocusEvent as ReactFocusEvent, useCallback, useRef} from 'react';\nimport {useEffectEvent, useLayoutEffect} from '@react-aria/utils';\n\nexport class SyntheticFocusEvent implements ReactFocusEvent {\n nativeEvent: FocusEvent;\n target: EventTarget & Target;\n currentTarget: EventTarget & Target;\n relatedTarget: Element;\n bubbles: boolean;\n cancelable: boolean;\n defaultPrevented: boolean;\n eventPhase: number;\n isTrusted: boolean;\n timeStamp: number;\n type: string;\n\n constructor(type: string, nativeEvent: FocusEvent) {\n this.nativeEvent = nativeEvent;\n this.target = nativeEvent.target as EventTarget & Target;\n this.currentTarget = nativeEvent.currentTarget as EventTarget & Target;\n this.relatedTarget = nativeEvent.relatedTarget as Element;\n this.bubbles = nativeEvent.bubbles;\n this.cancelable = nativeEvent.cancelable;\n this.defaultPrevented = nativeEvent.defaultPrevented;\n this.eventPhase = nativeEvent.eventPhase;\n this.isTrusted = nativeEvent.isTrusted;\n this.timeStamp = nativeEvent.timeStamp;\n this.type = type;\n }\n\n isDefaultPrevented(): boolean {\n return this.nativeEvent.defaultPrevented;\n }\n\n preventDefault(): void {\n this.defaultPrevented = true;\n this.nativeEvent.preventDefault();\n }\n\n stopPropagation(): void {\n this.nativeEvent.stopPropagation();\n this.isPropagationStopped = () => true;\n }\n\n isPropagationStopped(): boolean {\n return false;\n }\n\n persist() {}\n}\n\nexport function useSyntheticBlurEvent(onBlur: (e: ReactFocusEvent) => void) {\n let stateRef = useRef({\n isFocused: false,\n observer: null as MutationObserver | null\n });\n\n // Clean up MutationObserver on unmount. See below.\n // eslint-disable-next-line arrow-body-style\n useLayoutEffect(() => {\n const state = stateRef.current;\n return () => {\n if (state.observer) {\n state.observer.disconnect();\n state.observer = null;\n }\n };\n }, []);\n\n let dispatchBlur = useEffectEvent((e: SyntheticFocusEvent) => {\n onBlur?.(e);\n });\n\n // This function is called during a React onFocus event.\n return useCallback((e: ReactFocusEvent) => {\n // React does not fire onBlur when an element is disabled. https://github.com/facebook/react/issues/9142\n // Most browsers fire a native focusout event in this case, except for Firefox. In that case, we use a\n // MutationObserver to watch for the disabled attribute, and dispatch these events ourselves.\n // For browsers that do, focusout fires before the MutationObserver, so onBlur should not fire twice.\n if (\n e.target instanceof HTMLButtonElement ||\n e.target instanceof HTMLInputElement ||\n e.target instanceof HTMLTextAreaElement ||\n e.target instanceof HTMLSelectElement\n ) {\n stateRef.current.isFocused = true;\n\n let target = e.target;\n let onBlurHandler: EventListenerOrEventListenerObject | null = (e) => {\n stateRef.current.isFocused = false;\n\n if (target.disabled) {\n // For backward compatibility, dispatch a (fake) React synthetic event.\n dispatchBlur(new SyntheticFocusEvent('blur', e as FocusEvent));\n }\n\n // We no longer need the MutationObserver once the target is blurred.\n if (stateRef.current.observer) {\n stateRef.current.observer.disconnect();\n stateRef.current.observer = null;\n }\n };\n\n target.addEventListener('focusout', onBlurHandler, {once: true});\n\n stateRef.current.observer = new MutationObserver(() => {\n if (stateRef.current.isFocused && target.disabled) {\n stateRef.current.observer?.disconnect();\n let relatedTargetEl = target === document.activeElement ? null : document.activeElement;\n target.dispatchEvent(new FocusEvent('blur', {relatedTarget: relatedTargetEl}));\n target.dispatchEvent(new FocusEvent('focusout', {bubbles: true, relatedTarget: relatedTargetEl}));\n }\n });\n\n stateRef.current.observer.observe(target, {attributes: true, attributeFilter: ['disabled']});\n }\n }, [dispatchBlur]);\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n// Portions of the code in this file are based on code from react.\n// Original licensing for the following can be found in the\n// NOTICE file in the root directory of this source tree.\n// See https://github.com/facebook/react/tree/cc7c1aece46a6b69b41958d731e0fd27c94bfc6c/packages/react-interactions\n\nimport {DOMAttributes, FocusableElement, FocusEvents} from '@react-types/shared';\nimport {FocusEvent, useCallback} from 'react';\nimport {useSyntheticBlurEvent} from './utils';\n\nexport interface FocusProps extends FocusEvents {\n /** Whether the focus events should be disabled. */\n isDisabled?: boolean\n}\n\nexport interface FocusResult {\n /** Props to spread onto the target element. */\n focusProps: DOMAttributes\n}\n\n/**\n * Handles focus events for the immediate target.\n * Focus events on child elements will be ignored.\n */\nexport function useFocus(props: FocusProps): FocusResult {\n let {\n isDisabled,\n onFocus: onFocusProp,\n onBlur: onBlurProp,\n onFocusChange\n } = props;\n\n const onBlur: FocusProps['onBlur'] = useCallback((e: FocusEvent) => {\n if (e.target === e.currentTarget) {\n if (onBlurProp) {\n onBlurProp(e);\n }\n\n if (onFocusChange) {\n onFocusChange(false);\n }\n\n return true;\n }\n }, [onBlurProp, onFocusChange]);\n\n\n const onSyntheticFocus = useSyntheticBlurEvent(onBlur);\n\n const onFocus: FocusProps['onFocus'] = useCallback((e: FocusEvent) => {\n // Double check that document.activeElement actually matches e.target in case a previously chained\n // focus handler already moved focus somewhere else.\n if (e.target === e.currentTarget && document.activeElement === e.target) {\n if (onFocusProp) {\n onFocusProp(e);\n }\n\n if (onFocusChange) {\n onFocusChange(true);\n }\n\n onSyntheticFocus(e);\n }\n }, [onFocusChange, onFocusProp, onSyntheticFocus]);\n\n return {\n focusProps: {\n onFocus: (!isDisabled && (onFocusProp || onFocusChange || onBlurProp)) ? onFocus : undefined,\n onBlur: (!isDisabled && (onBlurProp || onFocusChange)) ? onBlur : undefined\n }\n };\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n// Portions of the code in this file are based on code from react.\n// Original licensing for the following can be found in the\n// NOTICE file in the root directory of this source tree.\n// See https://github.com/facebook/react/tree/cc7c1aece46a6b69b41958d731e0fd27c94bfc6c/packages/react-interactions\n\nimport {getOwnerDocument, getOwnerWindow, isMac, isVirtualClick} from '@react-aria/utils';\nimport {useEffect, useState} from 'react';\nimport {useIsSSR} from '@react-aria/ssr';\n\nexport type Modality = 'keyboard' | 'pointer' | 'virtual';\ntype HandlerEvent = PointerEvent | MouseEvent | KeyboardEvent | FocusEvent | null;\ntype Handler = (modality: Modality, e: HandlerEvent) => void;\nexport type FocusVisibleHandler = (isFocusVisible: boolean) => void;\nexport interface FocusVisibleProps {\n /** Whether the element is a text input. */\n isTextInput?: boolean,\n /** Whether the element will be auto focused. */\n autoFocus?: boolean\n}\n\nexport interface FocusVisibleResult {\n /** Whether keyboard focus is visible globally. */\n isFocusVisible: boolean\n}\n\nlet currentModality: null | Modality = null;\nlet changeHandlers = new Set();\ninterface GlobalListenerData {\n focus: () => void\n}\nexport let hasSetupGlobalListeners = new Map(); // We use a map here to support setting event listeners across multiple document objects.\nlet hasEventBeforeFocus = false;\nlet hasBlurredWindowRecently = false;\n\n// Only Tab or Esc keys will make focus visible on text input elements\nconst FOCUS_VISIBLE_INPUT_KEYS = {\n Tab: true,\n Escape: true\n};\n\nfunction triggerChangeHandlers(modality: Modality, e: HandlerEvent) {\n for (let handler of changeHandlers) {\n handler(modality, e);\n }\n}\n\n/**\n * Helper function to determine if a KeyboardEvent is unmodified and could make keyboard focus styles visible.\n */\nfunction isValidKey(e: KeyboardEvent) {\n // Control and Shift keys trigger when navigating back to the tab with keyboard.\n return !(e.metaKey || (!isMac() && e.altKey) || e.ctrlKey || e.key === 'Control' || e.key === 'Shift' || e.key === 'Meta');\n}\n\n\nfunction handleKeyboardEvent(e: KeyboardEvent) {\n hasEventBeforeFocus = true;\n if (isValidKey(e)) {\n currentModality = 'keyboard';\n triggerChangeHandlers('keyboard', e);\n }\n}\n\nfunction handlePointerEvent(e: PointerEvent | MouseEvent) {\n currentModality = 'pointer';\n if (e.type === 'mousedown' || e.type === 'pointerdown') {\n hasEventBeforeFocus = true;\n triggerChangeHandlers('pointer', e);\n }\n}\n\nfunction handleClickEvent(e: MouseEvent) {\n if (isVirtualClick(e)) {\n hasEventBeforeFocus = true;\n currentModality = 'virtual';\n }\n}\n\nfunction handleFocusEvent(e: FocusEvent) {\n // Firefox fires two extra focus events when the user first clicks into an iframe:\n // first on the window, then on the document. We ignore these events so they don't\n // cause keyboard focus rings to appear.\n if (e.target === window || e.target === document) {\n return;\n }\n\n // If a focus event occurs without a preceding keyboard or pointer event, switch to virtual modality.\n // This occurs, for example, when navigating a form with the next/previous buttons on iOS.\n if (!hasEventBeforeFocus && !hasBlurredWindowRecently) {\n currentModality = 'virtual';\n triggerChangeHandlers('virtual', e);\n }\n\n hasEventBeforeFocus = false;\n hasBlurredWindowRecently = false;\n}\n\nfunction handleWindowBlur() {\n // When the window is blurred, reset state. This is necessary when tabbing out of the window,\n // for example, since a subsequent focus event won't be fired.\n hasEventBeforeFocus = false;\n hasBlurredWindowRecently = true;\n}\n\n/**\n * Setup global event listeners to control when keyboard focus style should be visible.\n */\nfunction setupGlobalFocusEvents(element?: HTMLElement | null) {\n if (typeof window === 'undefined' || hasSetupGlobalListeners.get(getOwnerWindow(element))) {\n return;\n }\n\n const windowObject = getOwnerWindow(element);\n const documentObject = getOwnerDocument(element);\n\n // Programmatic focus() calls shouldn't affect the current input modality.\n // However, we need to detect other cases when a focus event occurs without\n // a preceding user event (e.g. screen reader focus). Overriding the focus\n // method on HTMLElement.prototype is a bit hacky, but works.\n let focus = windowObject.HTMLElement.prototype.focus;\n windowObject.HTMLElement.prototype.focus = function () {\n hasEventBeforeFocus = true;\n focus.apply(this, arguments as unknown as [options?: FocusOptions | undefined]);\n };\n\n documentObject.addEventListener('keydown', handleKeyboardEvent, true);\n documentObject.addEventListener('keyup', handleKeyboardEvent, true);\n documentObject.addEventListener('click', handleClickEvent, true);\n\n // Register focus events on the window so they are sure to happen\n // before React's event listeners (registered on the document).\n windowObject.addEventListener('focus', handleFocusEvent, true);\n windowObject.addEventListener('blur', handleWindowBlur, false);\n\n if (typeof PointerEvent !== 'undefined') {\n documentObject.addEventListener('pointerdown', handlePointerEvent, true);\n documentObject.addEventListener('pointermove', handlePointerEvent, true);\n documentObject.addEventListener('pointerup', handlePointerEvent, true);\n } else {\n documentObject.addEventListener('mousedown', handlePointerEvent, true);\n documentObject.addEventListener('mousemove', handlePointerEvent, true);\n documentObject.addEventListener('mouseup', handlePointerEvent, true);\n }\n\n // Add unmount handler\n windowObject.addEventListener('beforeunload', () => {\n tearDownWindowFocusTracking(element);\n }, {once: true});\n\n hasSetupGlobalListeners.set(windowObject, {focus});\n}\n\nconst tearDownWindowFocusTracking = (element, loadListener?: () => void) => {\n const windowObject = getOwnerWindow(element);\n const documentObject = getOwnerDocument(element);\n if (loadListener) {\n documentObject.removeEventListener('DOMContentLoaded', loadListener);\n }\n if (!hasSetupGlobalListeners.has(windowObject)) {\n return;\n }\n windowObject.HTMLElement.prototype.focus = hasSetupGlobalListeners.get(windowObject)!.focus;\n\n documentObject.removeEventListener('keydown', handleKeyboardEvent, true);\n documentObject.removeEventListener('keyup', handleKeyboardEvent, true);\n documentObject.removeEventListener('click', handleClickEvent, true);\n windowObject.removeEventListener('focus', handleFocusEvent, true);\n windowObject.removeEventListener('blur', handleWindowBlur, false);\n\n if (typeof PointerEvent !== 'undefined') {\n documentObject.removeEventListener('pointerdown', handlePointerEvent, true);\n documentObject.removeEventListener('pointermove', handlePointerEvent, true);\n documentObject.removeEventListener('pointerup', handlePointerEvent, true);\n } else {\n documentObject.removeEventListener('mousedown', handlePointerEvent, true);\n documentObject.removeEventListener('mousemove', handlePointerEvent, true);\n documentObject.removeEventListener('mouseup', handlePointerEvent, true);\n }\n\n hasSetupGlobalListeners.delete(windowObject);\n};\n\n/**\n * EXPERIMENTAL\n * Adds a window (i.e. iframe) to the list of windows that are being tracked for focus visible.\n *\n * Sometimes apps render portions of their tree into an iframe. In this case, we cannot accurately track if the focus\n * is visible because we cannot see interactions inside the iframe. If you have this in your application's architecture,\n * then this function will attach event listeners inside the iframe. You should call `addWindowFocusTracking` with an\n * element from inside the window you wish to add. We'll retrieve the relevant elements based on that.\n * Note, you do not need to call this for the default window, as we call it for you.\n *\n * When you are ready to stop listening, but you do not wish to unmount the iframe, you may call the cleanup function\n * returned by `addWindowFocusTracking`. Otherwise, when you unmount the iframe, all listeners and state will be cleaned\n * up automatically for you.\n *\n * @param element @default document.body - The element provided will be used to get the window to add.\n * @returns A function to remove the event listeners and cleanup the state.\n */\nexport function addWindowFocusTracking(element?: HTMLElement | null): () => void {\n const documentObject = getOwnerDocument(element);\n let loadListener;\n if (documentObject.readyState !== 'loading') {\n setupGlobalFocusEvents(element);\n } else {\n loadListener = () => {\n setupGlobalFocusEvents(element);\n };\n documentObject.addEventListener('DOMContentLoaded', loadListener);\n }\n\n return () => tearDownWindowFocusTracking(element, loadListener);\n}\n\n// Server-side rendering does not have the document object defined\n// eslint-disable-next-line no-restricted-globals\nif (typeof document !== 'undefined') {\n addWindowFocusTracking();\n}\n\n/**\n * If true, keyboard focus is visible.\n */\nexport function isFocusVisible(): boolean {\n return currentModality !== 'pointer';\n}\n\nexport function getInteractionModality(): Modality | null {\n return currentModality;\n}\n\nexport function setInteractionModality(modality: Modality) {\n currentModality = modality;\n triggerChangeHandlers(modality, null);\n}\n\n/**\n * Keeps state of the current modality.\n */\nexport function useInteractionModality(): Modality | null {\n setupGlobalFocusEvents();\n\n let [modality, setModality] = useState(currentModality);\n useEffect(() => {\n let handler = () => {\n setModality(currentModality);\n };\n\n changeHandlers.add(handler);\n return () => {\n changeHandlers.delete(handler);\n };\n }, []);\n\n return useIsSSR() ? null : modality;\n}\n\nconst nonTextInputTypes = new Set([\n 'checkbox',\n 'radio',\n 'range',\n 'color',\n 'file',\n 'image',\n 'button',\n 'submit',\n 'reset'\n]);\n\n/**\n * If this is attached to text input component, return if the event is a focus event (Tab/Escape keys pressed) so that\n * focus visible style can be properly set.\n */\nfunction isKeyboardFocusEvent(isTextInput: boolean, modality: Modality, e: HandlerEvent) {\n const IHTMLInputElement = typeof window !== 'undefined' ? getOwnerWindow(e?.target as Element).HTMLInputElement : HTMLInputElement;\n const IHTMLTextAreaElement = typeof window !== 'undefined' ? getOwnerWindow(e?.target as Element).HTMLTextAreaElement : HTMLTextAreaElement;\n const IHTMLElement = typeof window !== 'undefined' ? getOwnerWindow(e?.target as Element).HTMLElement : HTMLElement;\n const IKeyboardEvent = typeof window !== 'undefined' ? getOwnerWindow(e?.target as Element).KeyboardEvent : KeyboardEvent;\n\n isTextInput = isTextInput ||\n (e?.target instanceof IHTMLInputElement && !nonTextInputTypes.has(e?.target?.type)) ||\n e?.target instanceof IHTMLTextAreaElement ||\n (e?.target instanceof IHTMLElement && e?.target.isContentEditable);\n return !(isTextInput && modality === 'keyboard' && e instanceof IKeyboardEvent && !FOCUS_VISIBLE_INPUT_KEYS[e.key]);\n}\n\n/**\n * Manages focus visible state for the page, and subscribes individual components for updates.\n */\nexport function useFocusVisible(props: FocusVisibleProps = {}): FocusVisibleResult {\n let {isTextInput, autoFocus} = props;\n let [isFocusVisibleState, setFocusVisible] = useState(autoFocus || isFocusVisible());\n useFocusVisibleListener((isFocusVisible) => {\n setFocusVisible(isFocusVisible);\n }, [isTextInput], {isTextInput});\n\n return {isFocusVisible: isFocusVisibleState};\n}\n\n/**\n * Listens for trigger change and reports if focus is visible (i.e., modality is not pointer).\n */\nexport function useFocusVisibleListener(fn: FocusVisibleHandler, deps: ReadonlyArray, opts?: {isTextInput?: boolean}): void {\n setupGlobalFocusEvents();\n\n useEffect(() => {\n let handler = (modality: Modality, e: HandlerEvent) => {\n if (!isKeyboardFocusEvent(!!(opts?.isTextInput), modality, e)) {\n return;\n }\n fn(isFocusVisible());\n };\n changeHandlers.add(handler);\n return () => {\n changeHandlers.delete(handler);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, deps);\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n// Portions of the code in this file are based on code from react.\n// Original licensing for the following can be found in the\n// NOTICE file in the root directory of this source tree.\n// See https://github.com/facebook/react/tree/cc7c1aece46a6b69b41958d731e0fd27c94bfc6c/packages/react-interactions\n\nimport {DOMAttributes} from '@react-types/shared';\nimport {FocusEvent, useCallback, useRef} from 'react';\nimport {useSyntheticBlurEvent} from './utils';\n\nexport interface FocusWithinProps {\n /** Whether the focus within events should be disabled. */\n isDisabled?: boolean,\n /** Handler that is called when the target element or a descendant receives focus. */\n onFocusWithin?: (e: FocusEvent) => void,\n /** Handler that is called when the target element and all descendants lose focus. */\n onBlurWithin?: (e: FocusEvent) => void,\n /** Handler that is called when the the focus within state changes. */\n onFocusWithinChange?: (isFocusWithin: boolean) => void\n}\n\nexport interface FocusWithinResult {\n /** Props to spread onto the target element. */\n focusWithinProps: DOMAttributes\n}\n\n/**\n * Handles focus events for the target and its descendants.\n */\nexport function useFocusWithin(props: FocusWithinProps): FocusWithinResult {\n let {\n isDisabled,\n onBlurWithin,\n onFocusWithin,\n onFocusWithinChange\n } = props;\n let state = useRef({\n isFocusWithin: false\n });\n\n let onBlur = useCallback((e: FocusEvent) => {\n // We don't want to trigger onBlurWithin and then immediately onFocusWithin again\n // when moving focus inside the element. Only trigger if the currentTarget doesn't\n // include the relatedTarget (where focus is moving).\n if (state.current.isFocusWithin && !(e.currentTarget as Element).contains(e.relatedTarget as Element)) {\n state.current.isFocusWithin = false;\n\n if (onBlurWithin) {\n onBlurWithin(e);\n }\n\n if (onFocusWithinChange) {\n onFocusWithinChange(false);\n }\n }\n }, [onBlurWithin, onFocusWithinChange, state]);\n\n let onSyntheticFocus = useSyntheticBlurEvent(onBlur);\n let onFocus = useCallback((e: FocusEvent) => {\n // Double check that document.activeElement actually matches e.target in case a previously chained\n // focus handler already moved focus somewhere else.\n if (!state.current.isFocusWithin && document.activeElement === e.target) {\n if (onFocusWithin) {\n onFocusWithin(e);\n }\n\n if (onFocusWithinChange) {\n onFocusWithinChange(true);\n }\n\n state.current.isFocusWithin = true;\n onSyntheticFocus(e);\n }\n }, [onFocusWithin, onFocusWithinChange, onSyntheticFocus]);\n\n if (isDisabled) {\n return {\n focusWithinProps: {\n // These should not have been null, that would conflict in mergeProps\n onFocus: undefined,\n onBlur: undefined\n }\n };\n }\n\n return {\n focusWithinProps: {\n onFocus,\n onBlur\n }\n };\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n// Portions of the code in this file are based on code from react.\n// Original licensing for the following can be found in the\n// NOTICE file in the root directory of this source tree.\n// See https://github.com/facebook/react/tree/cc7c1aece46a6b69b41958d731e0fd27c94bfc6c/packages/react-interactions\n\nimport {DOMAttributes, HoverEvents} from '@react-types/shared';\nimport {useEffect, useMemo, useRef, useState} from 'react';\n\nexport interface HoverProps extends HoverEvents {\n /** Whether the hover events should be disabled. */\n isDisabled?: boolean\n}\n\nexport interface HoverResult {\n /** Props to spread on the target element. */\n hoverProps: DOMAttributes,\n isHovered: boolean\n}\n\n// iOS fires onPointerEnter twice: once with pointerType=\"touch\" and again with pointerType=\"mouse\".\n// We want to ignore these emulated events so they do not trigger hover behavior.\n// See https://bugs.webkit.org/show_bug.cgi?id=214609.\nlet globalIgnoreEmulatedMouseEvents = false;\nlet hoverCount = 0;\n\nfunction setGlobalIgnoreEmulatedMouseEvents() {\n globalIgnoreEmulatedMouseEvents = true;\n\n // Clear globalIgnoreEmulatedMouseEvents after a short timeout. iOS fires onPointerEnter\n // with pointerType=\"mouse\" immediately after onPointerUp and before onFocus. On other\n // devices that don't have this quirk, we don't want to ignore a mouse hover sometime in\n // the distant future because a user previously touched the element.\n setTimeout(() => {\n globalIgnoreEmulatedMouseEvents = false;\n }, 50);\n}\n\nfunction handleGlobalPointerEvent(e) {\n if (e.pointerType === 'touch') {\n setGlobalIgnoreEmulatedMouseEvents();\n }\n}\n\nfunction setupGlobalTouchEvents() {\n if (typeof document === 'undefined') {\n return;\n }\n\n if (typeof PointerEvent !== 'undefined') {\n document.addEventListener('pointerup', handleGlobalPointerEvent);\n } else {\n document.addEventListener('touchend', setGlobalIgnoreEmulatedMouseEvents);\n }\n\n hoverCount++;\n return () => {\n hoverCount--;\n if (hoverCount > 0) {\n return;\n }\n\n if (typeof PointerEvent !== 'undefined') {\n document.removeEventListener('pointerup', handleGlobalPointerEvent);\n } else {\n document.removeEventListener('touchend', setGlobalIgnoreEmulatedMouseEvents);\n }\n };\n}\n\n/**\n * Handles pointer hover interactions for an element. Normalizes behavior\n * across browsers and platforms, and ignores emulated mouse events on touch devices.\n */\nexport function useHover(props: HoverProps): HoverResult {\n let {\n onHoverStart,\n onHoverChange,\n onHoverEnd,\n isDisabled\n } = props;\n\n let [isHovered, setHovered] = useState(false);\n let state = useRef({\n isHovered: false,\n ignoreEmulatedMouseEvents: false,\n pointerType: '',\n target: null\n }).current;\n\n useEffect(setupGlobalTouchEvents, []);\n\n let {hoverProps, triggerHoverEnd} = useMemo(() => {\n let triggerHoverStart = (event, pointerType) => {\n state.pointerType = pointerType;\n if (isDisabled || pointerType === 'touch' || state.isHovered || !event.currentTarget.contains(event.target)) {\n return;\n }\n\n state.isHovered = true;\n let target = event.currentTarget;\n state.target = target;\n\n if (onHoverStart) {\n onHoverStart({\n type: 'hoverstart',\n target,\n pointerType\n });\n }\n\n if (onHoverChange) {\n onHoverChange(true);\n }\n\n setHovered(true);\n };\n\n let triggerHoverEnd = (event, pointerType) => {\n state.pointerType = '';\n state.target = null;\n\n if (pointerType === 'touch' || !state.isHovered) {\n return;\n }\n\n state.isHovered = false;\n let target = event.currentTarget;\n if (onHoverEnd) {\n onHoverEnd({\n type: 'hoverend',\n target,\n pointerType\n });\n }\n\n if (onHoverChange) {\n onHoverChange(false);\n }\n\n setHovered(false);\n };\n\n let hoverProps: DOMAttributes = {};\n\n if (typeof PointerEvent !== 'undefined') {\n hoverProps.onPointerEnter = (e) => {\n if (globalIgnoreEmulatedMouseEvents && e.pointerType === 'mouse') {\n return;\n }\n\n triggerHoverStart(e, e.pointerType);\n };\n\n hoverProps.onPointerLeave = (e) => {\n if (!isDisabled && e.currentTarget.contains(e.target as Element)) {\n triggerHoverEnd(e, e.pointerType);\n }\n };\n } else {\n hoverProps.onTouchStart = () => {\n state.ignoreEmulatedMouseEvents = true;\n };\n\n hoverProps.onMouseEnter = (e) => {\n if (!state.ignoreEmulatedMouseEvents && !globalIgnoreEmulatedMouseEvents) {\n triggerHoverStart(e, 'mouse');\n }\n\n state.ignoreEmulatedMouseEvents = false;\n };\n\n hoverProps.onMouseLeave = (e) => {\n if (!isDisabled && e.currentTarget.contains(e.target as Element)) {\n triggerHoverEnd(e, 'mouse');\n }\n };\n }\n return {hoverProps, triggerHoverEnd};\n }, [onHoverStart, onHoverChange, onHoverEnd, isDisabled, state]);\n\n useEffect(() => {\n // Call the triggerHoverEnd as soon as isDisabled changes to true\n // Safe to call triggerHoverEnd, it will early return if we aren't currently hovering\n if (isDisabled) {\n triggerHoverEnd({currentTarget: state.target}, state.pointerType);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isDisabled]);\n\n return {\n hoverProps,\n isHovered\n };\n}\n\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n// Portions of the code in this file are based on code from react.\n// Original licensing for the following can be found in the\n// NOTICE file in the root directory of this source tree.\n// See https://github.com/facebook/react/tree/cc7c1aece46a6b69b41958d731e0fd27c94bfc6c/packages/react-interactions\n\nimport {getOwnerDocument, useEffectEvent} from '@react-aria/utils';\nimport {RefObject, useEffect, useRef} from 'react';\n\nexport interface InteractOutsideProps {\n ref: RefObject,\n onInteractOutside?: (e: PointerEvent) => void,\n onInteractOutsideStart?: (e: PointerEvent) => void,\n /** Whether the interact outside events should be disabled. */\n isDisabled?: boolean\n}\n\n/**\n * Example, used in components like Dialogs and Popovers so they can close\n * when a user clicks outside them.\n */\nexport function useInteractOutside(props: InteractOutsideProps) {\n let {ref, onInteractOutside, isDisabled, onInteractOutsideStart} = props;\n let stateRef = useRef({\n isPointerDown: false,\n ignoreEmulatedMouseEvents: false\n });\n\n let onPointerDown = useEffectEvent((e) => {\n if (onInteractOutside && isValidEvent(e, ref)) {\n if (onInteractOutsideStart) {\n onInteractOutsideStart(e);\n }\n stateRef.current.isPointerDown = true;\n }\n });\n\n let triggerInteractOutside = useEffectEvent((e: PointerEvent) => {\n if (onInteractOutside) {\n onInteractOutside(e);\n }\n });\n\n useEffect(() => {\n let state = stateRef.current;\n if (isDisabled) {\n return;\n }\n\n const element = ref.current;\n const documentObject = getOwnerDocument(element);\n\n // Use pointer events if available. Otherwise, fall back to mouse and touch events.\n if (typeof PointerEvent !== 'undefined') {\n let onPointerUp = (e) => {\n if (state.isPointerDown && isValidEvent(e, ref)) {\n triggerInteractOutside(e);\n }\n state.isPointerDown = false;\n };\n\n // changing these to capture phase fixed combobox\n documentObject.addEventListener('pointerdown', onPointerDown, true);\n documentObject.addEventListener('pointerup', onPointerUp, true);\n\n return () => {\n documentObject.removeEventListener('pointerdown', onPointerDown, true);\n documentObject.removeEventListener('pointerup', onPointerUp, true);\n };\n } else {\n let onMouseUp = (e) => {\n if (state.ignoreEmulatedMouseEvents) {\n state.ignoreEmulatedMouseEvents = false;\n } else if (state.isPointerDown && isValidEvent(e, ref)) {\n triggerInteractOutside(e);\n }\n state.isPointerDown = false;\n };\n\n let onTouchEnd = (e) => {\n state.ignoreEmulatedMouseEvents = true;\n if (state.isPointerDown && isValidEvent(e, ref)) {\n triggerInteractOutside(e);\n }\n state.isPointerDown = false;\n };\n\n documentObject.addEventListener('mousedown', onPointerDown, true);\n documentObject.addEventListener('mouseup', onMouseUp, true);\n documentObject.addEventListener('touchstart', onPointerDown, true);\n documentObject.addEventListener('touchend', onTouchEnd, true);\n\n return () => {\n documentObject.removeEventListener('mousedown', onPointerDown, true);\n documentObject.removeEventListener('mouseup', onMouseUp, true);\n documentObject.removeEventListener('touchstart', onPointerDown, true);\n documentObject.removeEventListener('touchend', onTouchEnd, true);\n };\n }\n }, [ref, isDisabled, onPointerDown, triggerInteractOutside]);\n}\n\nfunction isValidEvent(event, ref) {\n if (event.button > 0) {\n return false;\n }\n\n if (event.target) {\n // if the event target is no longer in the document, ignore\n const ownerDocument = event.target.ownerDocument;\n if (!ownerDocument || !ownerDocument.documentElement.contains(event.target)) {\n return false;\n }\n\n // If the target is within a top layer element (e.g. toasts), ignore.\n if (event.target.closest('[data-react-aria-top-layer]')) {\n return false;\n }\n }\n\n return ref.current && !ref.current.contains(event.target);\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {BaseEvent} from '@react-types/shared';\nimport {SyntheticEvent} from 'react';\n\n/**\n * This function wraps a React event handler to make stopPropagation the default, and support continuePropagation instead.\n */\nexport function createEventHandler(handler?: (e: BaseEvent) => void): ((e: T) => void) | undefined {\n if (!handler) {\n return undefined;\n }\n\n let shouldStopPropagation = true;\n return (e: T) => {\n let event: BaseEvent = {\n ...e,\n preventDefault() {\n e.preventDefault();\n },\n isDefaultPrevented() {\n return e.isDefaultPrevented();\n },\n stopPropagation() {\n console.error('stopPropagation is now the default behavior for events in React Spectrum. You can use continuePropagation() to revert this behavior.');\n },\n continuePropagation() {\n shouldStopPropagation = false;\n }\n };\n\n handler(event);\n\n if (shouldStopPropagation) {\n e.stopPropagation();\n }\n };\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {createEventHandler} from './createEventHandler';\nimport {DOMAttributes, KeyboardEvents} from '@react-types/shared';\n\nexport interface KeyboardProps extends KeyboardEvents {\n /** Whether the keyboard events should be disabled. */\n isDisabled?: boolean\n}\n\nexport interface KeyboardResult {\n /** Props to spread onto the target element. */\n keyboardProps: DOMAttributes\n}\n\n/**\n * Handles keyboard interactions for a focusable element.\n */\nexport function useKeyboard(props: KeyboardProps): KeyboardResult {\n return {\n keyboardProps: props.isDisabled ? {} : {\n onKeyDown: createEventHandler(props.onKeyDown),\n onKeyUp: createEventHandler(props.onKeyUp)\n }\n };\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {disableTextSelection, restoreTextSelection} from './textSelection';\nimport {DOMAttributes, MoveEvents, PointerType} from '@react-types/shared';\nimport React, {useMemo, useRef} from 'react';\nimport {useEffectEvent, useGlobalListeners} from '@react-aria/utils';\n\nexport interface MoveResult {\n /** Props to spread on the target element. */\n moveProps: DOMAttributes\n}\n\ninterface EventBase {\n shiftKey: boolean,\n ctrlKey: boolean,\n metaKey: boolean,\n altKey: boolean\n}\n\n/**\n * Handles move interactions across mouse, touch, and keyboard, including dragging with\n * the mouse or touch, and using the arrow keys. Normalizes behavior across browsers and\n * platforms, and ignores emulated mouse events on touch devices.\n */\nexport function useMove(props: MoveEvents): MoveResult {\n let {onMoveStart, onMove, onMoveEnd} = props;\n\n let state = useRef<{\n didMove: boolean,\n lastPosition: {pageX: number, pageY: number} | null,\n id: number | null\n }>({didMove: false, lastPosition: null, id: null});\n\n let {addGlobalListener, removeGlobalListener} = useGlobalListeners();\n\n let move = useEffectEvent((originalEvent: EventBase, pointerType: PointerType, deltaX: number, deltaY: number) => {\n if (deltaX === 0 && deltaY === 0) {\n return;\n }\n\n if (!state.current.didMove) {\n state.current.didMove = true;\n onMoveStart?.({\n type: 'movestart',\n pointerType,\n shiftKey: originalEvent.shiftKey,\n metaKey: originalEvent.metaKey,\n ctrlKey: originalEvent.ctrlKey,\n altKey: originalEvent.altKey\n });\n }\n onMove?.({\n type: 'move',\n pointerType,\n deltaX: deltaX,\n deltaY: deltaY,\n shiftKey: originalEvent.shiftKey,\n metaKey: originalEvent.metaKey,\n ctrlKey: originalEvent.ctrlKey,\n altKey: originalEvent.altKey\n });\n });\n\n let end = useEffectEvent((originalEvent: EventBase, pointerType: PointerType) => {\n restoreTextSelection();\n if (state.current.didMove) {\n onMoveEnd?.({\n type: 'moveend',\n pointerType,\n shiftKey: originalEvent.shiftKey,\n metaKey: originalEvent.metaKey,\n ctrlKey: originalEvent.ctrlKey,\n altKey: originalEvent.altKey\n });\n }\n });\n\n let moveProps = useMemo(() => {\n let moveProps: DOMAttributes = {};\n\n let start = () => {\n disableTextSelection();\n state.current.didMove = false;\n };\n\n if (typeof PointerEvent === 'undefined') {\n let onMouseMove = (e: MouseEvent) => {\n if (e.button === 0) {\n move(e, 'mouse', e.pageX - (state.current.lastPosition?.pageX ?? 0), e.pageY - (state.current.lastPosition?.pageY ?? 0));\n state.current.lastPosition = {pageX: e.pageX, pageY: e.pageY};\n }\n };\n let onMouseUp = (e: MouseEvent) => {\n if (e.button === 0) {\n end(e, 'mouse');\n removeGlobalListener(window, 'mousemove', onMouseMove, false);\n removeGlobalListener(window, 'mouseup', onMouseUp, false);\n }\n };\n moveProps.onMouseDown = (e: React.MouseEvent) => {\n if (e.button === 0) {\n start();\n e.stopPropagation();\n e.preventDefault();\n state.current.lastPosition = {pageX: e.pageX, pageY: e.pageY};\n addGlobalListener(window, 'mousemove', onMouseMove, false);\n addGlobalListener(window, 'mouseup', onMouseUp, false);\n }\n };\n\n let onTouchMove = (e: TouchEvent) => {\n let touch = [...e.changedTouches].findIndex(({identifier}) => identifier === state.current.id);\n if (touch >= 0) {\n let {pageX, pageY} = e.changedTouches[touch];\n move(e, 'touch', pageX - (state.current.lastPosition?.pageX ?? 0), pageY - (state.current.lastPosition?.pageY ?? 0));\n state.current.lastPosition = {pageX, pageY};\n }\n };\n let onTouchEnd = (e: TouchEvent) => {\n let touch = [...e.changedTouches].findIndex(({identifier}) => identifier === state.current.id);\n if (touch >= 0) {\n end(e, 'touch');\n state.current.id = null;\n removeGlobalListener(window, 'touchmove', onTouchMove);\n removeGlobalListener(window, 'touchend', onTouchEnd);\n removeGlobalListener(window, 'touchcancel', onTouchEnd);\n }\n };\n moveProps.onTouchStart = (e: React.TouchEvent) => {\n if (e.changedTouches.length === 0 || state.current.id != null) {\n return;\n }\n\n let {pageX, pageY, identifier} = e.changedTouches[0];\n start();\n e.stopPropagation();\n e.preventDefault();\n state.current.lastPosition = {pageX, pageY};\n state.current.id = identifier;\n addGlobalListener(window, 'touchmove', onTouchMove, false);\n addGlobalListener(window, 'touchend', onTouchEnd, false);\n addGlobalListener(window, 'touchcancel', onTouchEnd, false);\n };\n } else {\n let onPointerMove = (e: PointerEvent) => {\n if (e.pointerId === state.current.id) {\n let pointerType = (e.pointerType || 'mouse') as PointerType;\n\n // Problems with PointerEvent#movementX/movementY:\n // 1. it is always 0 on macOS Safari.\n // 2. On Chrome Android, it's scaled by devicePixelRatio, but not on Chrome macOS\n move(e, pointerType, e.pageX - (state.current.lastPosition?.pageX ?? 0), e.pageY - (state.current.lastPosition?.pageY ?? 0));\n state.current.lastPosition = {pageX: e.pageX, pageY: e.pageY};\n }\n };\n\n let onPointerUp = (e: PointerEvent) => {\n if (e.pointerId === state.current.id) {\n let pointerType = (e.pointerType || 'mouse') as PointerType;\n end(e, pointerType);\n state.current.id = null;\n removeGlobalListener(window, 'pointermove', onPointerMove, false);\n removeGlobalListener(window, 'pointerup', onPointerUp, false);\n removeGlobalListener(window, 'pointercancel', onPointerUp, false);\n }\n };\n\n moveProps.onPointerDown = (e: React.PointerEvent) => {\n if (e.button === 0 && state.current.id == null) {\n start();\n e.stopPropagation();\n e.preventDefault();\n state.current.lastPosition = {pageX: e.pageX, pageY: e.pageY};\n state.current.id = e.pointerId;\n addGlobalListener(window, 'pointermove', onPointerMove, false);\n addGlobalListener(window, 'pointerup', onPointerUp, false);\n addGlobalListener(window, 'pointercancel', onPointerUp, false);\n }\n };\n }\n\n let triggerKeyboardMove = (e: EventBase, deltaX: number, deltaY: number) => {\n start();\n move(e, 'keyboard', deltaX, deltaY);\n end(e, 'keyboard');\n };\n\n moveProps.onKeyDown = (e) => {\n switch (e.key) {\n case 'Left':\n case 'ArrowLeft':\n e.preventDefault();\n e.stopPropagation();\n triggerKeyboardMove(e, -1, 0);\n break;\n case 'Right':\n case 'ArrowRight':\n e.preventDefault();\n e.stopPropagation();\n triggerKeyboardMove(e, 1, 0);\n break;\n case 'Up':\n case 'ArrowUp':\n e.preventDefault();\n e.stopPropagation();\n triggerKeyboardMove(e, 0, -1);\n break;\n case 'Down':\n case 'ArrowDown':\n e.preventDefault();\n e.stopPropagation();\n triggerKeyboardMove(e, 0, 1);\n break;\n }\n };\n\n return moveProps;\n }, [state, addGlobalListener, removeGlobalListener, move, end]);\n\n return {moveProps};\n}\n","/*\n * Copyright 2021 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {RefObject, useCallback} from 'react';\nimport {ScrollEvents} from '@react-types/shared';\nimport {useEvent} from '@react-aria/utils';\n\nexport interface ScrollWheelProps extends ScrollEvents {\n /** Whether the scroll listener should be disabled. */\n isDisabled?: boolean\n}\n\n// scroll wheel needs to be added not passively so it's cancelable, small helper hook to remember that\nexport function useScrollWheel(props: ScrollWheelProps, ref: RefObject): void {\n let {onScroll, isDisabled} = props;\n let onScrollHandler = useCallback((e) => {\n // If the ctrlKey is pressed, this is a zoom event, do nothing.\n if (e.ctrlKey) {\n return;\n }\n\n // stop scrolling the page\n e.preventDefault();\n e.stopPropagation();\n\n if (onScroll) {\n onScroll({deltaX: e.deltaX, deltaY: e.deltaY});\n }\n }, [onScroll]);\n\n useEvent(ref, 'wheel', isDisabled ? undefined : onScrollHandler);\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {DOMAttributes, LongPressEvent} from '@react-types/shared';\nimport {mergeProps, useDescription, useGlobalListeners} from '@react-aria/utils';\nimport {usePress} from './usePress';\nimport {useRef} from 'react';\n\nexport interface LongPressProps {\n /** Whether long press events should be disabled. */\n isDisabled?: boolean,\n /** Handler that is called when a long press interaction starts. */\n onLongPressStart?: (e: LongPressEvent) => void,\n /**\n * Handler that is called when a long press interaction ends, either\n * over the target or when the pointer leaves the target.\n */\n onLongPressEnd?: (e: LongPressEvent) => void,\n /**\n * Handler that is called when the threshold time is met while\n * the press is over the target.\n */\n onLongPress?: (e: LongPressEvent) => void,\n /**\n * The amount of time in milliseconds to wait before triggering a long press.\n * @default 500ms\n */\n threshold?: number,\n /**\n * A description for assistive techology users indicating that a long press\n * action is available, e.g. \"Long press to open menu\".\n */\n accessibilityDescription?: string\n}\n\nexport interface LongPressResult {\n /** Props to spread on the target element. */\n longPressProps: DOMAttributes\n}\n\nconst DEFAULT_THRESHOLD = 500;\n\n/**\n * Handles long press interactions across mouse and touch devices. Supports a customizable time threshold,\n * accessibility description, and normalizes behavior across browsers and devices.\n */\nexport function useLongPress(props: LongPressProps): LongPressResult {\n let {\n isDisabled,\n onLongPressStart,\n onLongPressEnd,\n onLongPress,\n threshold = DEFAULT_THRESHOLD,\n accessibilityDescription\n } = props;\n\n const timeRef = useRef | undefined>();\n let {addGlobalListener, removeGlobalListener} = useGlobalListeners();\n\n let {pressProps} = usePress({\n isDisabled,\n onPressStart(e) {\n e.continuePropagation();\n if (e.pointerType === 'mouse' || e.pointerType === 'touch') {\n if (onLongPressStart) {\n onLongPressStart({\n ...e,\n type: 'longpressstart'\n });\n }\n\n timeRef.current = setTimeout(() => {\n // Prevent other usePress handlers from also handling this event.\n e.target.dispatchEvent(new PointerEvent('pointercancel', {bubbles: true}));\n if (onLongPress) {\n onLongPress({\n ...e,\n type: 'longpress'\n });\n }\n timeRef.current = undefined;\n }, threshold);\n\n // Prevent context menu, which may be opened on long press on touch devices\n if (e.pointerType === 'touch') {\n let onContextMenu = e => {\n e.preventDefault();\n };\n\n addGlobalListener(e.target, 'contextmenu', onContextMenu, {once: true});\n addGlobalListener(window, 'pointerup', () => {\n // If no contextmenu event is fired quickly after pointerup, remove the handler\n // so future context menu events outside a long press are not prevented.\n setTimeout(() => {\n removeGlobalListener(e.target, 'contextmenu', onContextMenu);\n }, 30);\n }, {once: true});\n }\n }\n },\n onPressEnd(e) {\n if (timeRef.current) {\n clearTimeout(timeRef.current);\n }\n\n if (onLongPressEnd && (e.pointerType === 'mouse' || e.pointerType === 'touch')) {\n onLongPressEnd({\n ...e,\n type: 'longpressend'\n });\n }\n }\n });\n\n let descriptionProps = useDescription(onLongPress && !isDisabled ? accessibilityDescription : undefined);\n\n return {\n longPressProps: mergeProps(pressProps, descriptionProps)\n };\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n// We must avoid a circular dependency with @react-aria/utils, and this useLayoutEffect is\n// guarded by a check that it only runs on the client side.\n// eslint-disable-next-line rulesdir/useLayoutEffectRule\nimport React, {JSX, ReactNode, useContext, useLayoutEffect, useMemo, useRef, useState} from 'react';\n\n// To support SSR, the auto incrementing id counter is stored in a context. This allows\n// it to be reset on every request to ensure the client and server are consistent.\n// There is also a prefix string that is used to support async loading components\n// Each async boundary must be wrapped in an SSR provider, which appends to the prefix\n// and resets the current id counter. This ensures that async loaded components have\n// consistent ids regardless of the loading order.\ninterface SSRContextValue {\n prefix: string,\n current: number\n}\n\n// Default context value to use in case there is no SSRProvider. This is fine for\n// client-only apps. In order to support multiple copies of React Aria potentially\n// being on the page at once, the prefix is set to a random number. SSRProvider\n// will reset this to zero for consistency between server and client, so in the\n// SSR case multiple copies of React Aria is not supported.\nconst defaultContext: SSRContextValue = {\n prefix: String(Math.round(Math.random() * 10000000000)),\n current: 0\n};\n\nconst SSRContext = React.createContext(defaultContext);\nconst IsSSRContext = React.createContext(false);\n\nexport interface SSRProviderProps {\n /** Your application here. */\n children: ReactNode\n}\n\n// This is only used in React < 18.\nfunction LegacySSRProvider(props: SSRProviderProps): JSX.Element {\n let cur = useContext(SSRContext);\n let counter = useCounter(cur === defaultContext);\n let [isSSR, setIsSSR] = useState(true);\n let value: SSRContextValue = useMemo(() => ({\n // If this is the first SSRProvider, start with an empty string prefix, otherwise\n // append and increment the counter.\n prefix: cur === defaultContext ? '' : `${cur.prefix}-${counter}`,\n current: 0\n }), [cur, counter]);\n\n // If on the client, and the component was initially server rendered,\n // then schedule a layout effect to update the component after hydration.\n if (typeof document !== 'undefined') {\n // This if statement technically breaks the rules of hooks, but is safe\n // because the condition never changes after mounting.\n // eslint-disable-next-line react-hooks/rules-of-hooks\n useLayoutEffect(() => {\n setIsSSR(false);\n }, []);\n }\n\n return (\n \n \n {props.children}\n \n \n );\n}\n\nlet warnedAboutSSRProvider = false;\n\n/**\n * When using SSR with React Aria in React 16 or 17, applications must be wrapped in an SSRProvider.\n * This ensures that auto generated ids are consistent between the client and server.\n */\nexport function SSRProvider(props: SSRProviderProps): JSX.Element {\n if (typeof React['useId'] === 'function') {\n if (process.env.NODE_ENV !== 'test' && !warnedAboutSSRProvider) {\n console.warn('In React 18, SSRProvider is not necessary and is a noop. You can remove it from your app.');\n warnedAboutSSRProvider = true;\n }\n return <>{props.children};\n }\n return ;\n}\n\nlet canUseDOM = Boolean(\n typeof window !== 'undefined' &&\n window.document &&\n window.document.createElement\n);\n\nlet componentIds = new WeakMap();\n\nfunction useCounter(isDisabled = false) {\n let ctx = useContext(SSRContext);\n let ref = useRef(null);\n // eslint-disable-next-line rulesdir/pure-render\n if (ref.current === null && !isDisabled) {\n // In strict mode, React renders components twice, and the ref will be reset to null on the second render.\n // This means our id counter will be incremented twice instead of once. This is a problem because on the\n // server, components are only rendered once and so ids generated on the server won't match the client.\n // In React 18, useId was introduced to solve this, but it is not available in older versions. So to solve this\n // we need to use some React internals to access the underlying Fiber instance, which is stable between renders.\n // This is exposed as ReactCurrentOwner in development, which is all we need since StrictMode only runs in development.\n // To ensure that we only increment the global counter once, we store the starting id for this component in\n // a weak map associated with the Fiber. On the second render, we reset the global counter to this value.\n // Since React runs the second render immediately after the first, this is safe.\n // @ts-ignore\n let currentOwner = React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED?.ReactCurrentOwner?.current;\n if (currentOwner) {\n let prevComponentValue = componentIds.get(currentOwner);\n if (prevComponentValue == null) {\n // On the first render, and first call to useId, store the id and state in our weak map.\n componentIds.set(currentOwner, {\n id: ctx.current,\n state: currentOwner.memoizedState\n });\n } else if (currentOwner.memoizedState !== prevComponentValue.state) {\n // On the second render, the memoizedState gets reset by React.\n // Reset the counter, and remove from the weak map so we don't\n // do this for subsequent useId calls.\n ctx.current = prevComponentValue.id;\n componentIds.delete(currentOwner);\n }\n }\n\n // eslint-disable-next-line rulesdir/pure-render\n ref.current = ++ctx.current;\n }\n\n // eslint-disable-next-line rulesdir/pure-render\n return ref.current;\n}\n\nfunction useLegacySSRSafeId(defaultId?: string): string {\n let ctx = useContext(SSRContext);\n\n // If we are rendering in a non-DOM environment, and there's no SSRProvider,\n // provide a warning to hint to the developer to add one.\n if (ctx === defaultContext && !canUseDOM) {\n console.warn('When server rendering, you must wrap your application in an to ensure consistent ids are generated between the client and server.');\n }\n\n let counter = useCounter(!!defaultId);\n let prefix = ctx === defaultContext && process.env.NODE_ENV === 'test' ? 'react-aria' : `react-aria${ctx.prefix}`;\n return defaultId || `${prefix}-${counter}`;\n}\n\nfunction useModernSSRSafeId(defaultId?: string): string {\n // @ts-ignore\n let id = React.useId();\n let [didSSR] = useState(useIsSSR());\n let prefix = didSSR || process.env.NODE_ENV === 'test' ? 'react-aria' : `react-aria${defaultContext.prefix}`;\n return defaultId || `${prefix}-${id}`;\n}\n\n// Use React.useId in React 18 if available, otherwise fall back to our old implementation.\n/** @private */\nexport const useSSRSafeId = typeof React['useId'] === 'function' ? useModernSSRSafeId : useLegacySSRSafeId;\n\nfunction getSnapshot() {\n return false;\n}\n\nfunction getServerSnapshot() {\n return true;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nfunction subscribe(onStoreChange: () => void): () => void {\n // noop\n return () => {};\n}\n\n/**\n * Returns whether the component is currently being server side rendered or\n * hydrated on the client. Can be used to delay browser-specific rendering\n * until after hydration.\n */\nexport function useIsSSR(): boolean {\n // In React 18, we can use useSyncExternalStore to detect if we're server rendering or hydrating.\n if (typeof React['useSyncExternalStore'] === 'function') {\n return React['useSyncExternalStore'](subscribe, getSnapshot, getServerSnapshot);\n }\n\n // eslint-disable-next-line react-hooks/rules-of-hooks\n return useContext(IsSSRContext);\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport React from 'react';\n\n// During SSR, React emits a warning when calling useLayoutEffect.\n// Since neither useLayoutEffect nor useEffect run on the server,\n// we can suppress this by replace it with a noop on the server.\nexport const useLayoutEffect = typeof document !== 'undefined'\n ? React.useLayoutEffect\n : () => {};\n","/*\n * Copyright 2023 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {useCallback, useRef} from 'react';\nimport {useLayoutEffect} from './useLayoutEffect';\n\nexport function useEffectEvent(fn?: T): T {\n const ref = useRef(null);\n useLayoutEffect(() => {\n ref.current = fn;\n }, [fn]);\n // @ts-ignore\n return useCallback((...args) => {\n const f = ref.current!;\n return f?.(...args);\n }, []);\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {Dispatch, MutableRefObject, useRef, useState} from 'react';\nimport {useEffectEvent, useLayoutEffect} from './';\n\ntype SetValueAction = (prev: S) => Generator;\n\n// This hook works like `useState`, but when setting the value, you pass a generator function\n// that can yield multiple values. Each yielded value updates the state and waits for the next\n// layout effect, then continues the generator. This allows sequential updates to state to be\n// written linearly.\nexport function useValueEffect(defaultValue: S | (() => S)): [S, Dispatch>] {\n let [value, setValue] = useState(defaultValue);\n let effect: MutableRefObject | null> = useRef | null>(null);\n\n // Store the function in a ref so we can always access the current version\n // which has the proper `value` in scope.\n let nextRef = useEffectEvent(() => {\n if (!effect.current) {\n return;\n }\n // Run the generator to the next yield.\n let newValue = effect.current.next();\n\n // If the generator is done, reset the effect.\n if (newValue.done) {\n effect.current = null;\n return;\n }\n\n // If the value is the same as the current value,\n // then continue to the next yield. Otherwise,\n // set the value in state and wait for the next layout effect.\n if (value === newValue.value) {\n nextRef();\n } else {\n setValue(newValue.value);\n }\n });\n\n useLayoutEffect(() => {\n // If there is an effect currently running, continue to the next yield.\n if (effect.current) {\n nextRef();\n }\n });\n\n let queue = useEffectEvent(fn => {\n effect.current = fn(value);\n nextRef();\n });\n\n return [value, queue];\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {useCallback, useEffect, useRef, useState} from 'react';\nimport {useLayoutEffect} from './useLayoutEffect';\nimport {useSSRSafeId} from '@react-aria/ssr';\nimport {useValueEffect} from './';\n\n// copied from SSRProvider.tsx to reduce exports, if needed again, consider sharing\nlet canUseDOM = Boolean(\n typeof window !== 'undefined' &&\n window.document &&\n window.document.createElement\n);\n\nlet idsUpdaterMap: Map void> = new Map();\n\n/**\n * If a default is not provided, generate an id.\n * @param defaultId - Default component id.\n */\nexport function useId(defaultId?: string): string {\n let [value, setValue] = useState(defaultId);\n let nextId = useRef(null);\n\n let res = useSSRSafeId(value);\n\n let updateValue = useCallback((val) => {\n nextId.current = val;\n }, []);\n\n if (canUseDOM) {\n idsUpdaterMap.set(res, updateValue);\n }\n\n useLayoutEffect(() => {\n let r = res;\n return () => {\n idsUpdaterMap.delete(r);\n };\n }, [res]);\n\n // This cannot cause an infinite loop because the ref is updated first.\n // eslint-disable-next-line\n useEffect(() => {\n let newId = nextId.current;\n if (newId) {\n nextId.current = null;\n setValue(newId);\n }\n });\n\n return res;\n}\n\n/**\n * Merges two ids.\n * Different ids will trigger a side-effect and re-render components hooked up with `useId`.\n */\nexport function mergeIds(idA: string, idB: string): string {\n if (idA === idB) {\n return idA;\n }\n\n let setIdA = idsUpdaterMap.get(idA);\n if (setIdA) {\n setIdA(idB);\n return idB;\n }\n\n let setIdB = idsUpdaterMap.get(idB);\n if (setIdB) {\n setIdB(idA);\n return idA;\n }\n\n return idB;\n}\n\n/**\n * Used to generate an id, and after render, check if that id is rendered so we know\n * if we can use it in places such as labelledby.\n * @param depArray - When to recalculate if the id is in the DOM.\n */\nexport function useSlotId(depArray: ReadonlyArray = []): string {\n let id = useId();\n let [resolvedId, setResolvedId] = useValueEffect(id);\n let updateId = useCallback(() => {\n setResolvedId(function *() {\n yield id;\n\n yield document.getElementById(id) ? id : undefined;\n });\n }, [id, setResolvedId]);\n\n useLayoutEffect(updateId, [id, updateId, ...depArray]);\n\n return resolvedId;\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n/**\n * Calls all functions in the order they were chained with the same arguments.\n */\nexport function chain(...callbacks: any[]): (...args: any[]) => void {\n return (...args: any[]) => {\n for (let callback of callbacks) {\n if (typeof callback === 'function') {\n callback(...args);\n }\n }\n };\n}\n","export const getOwnerDocument = (el: Element | null | undefined): Document => {\n return el?.ownerDocument ?? document;\n};\n\nexport const getOwnerWindow = (\n el: (Window & typeof global) | Element | null | undefined\n): Window & typeof global => {\n if (el && 'window' in el && el.window === el) {\n return el;\n }\n\n const doc = getOwnerDocument(el as Element | null | undefined);\n return doc.defaultView || window;\n};\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {chain} from './chain';\nimport clsx from 'clsx';\nimport {mergeIds} from './useId';\n\ninterface Props {\n [key: string]: any\n}\n\ntype PropsArg = Props | null | undefined;\n\n// taken from: https://stackoverflow.com/questions/51603250/typescript-3-parameter-list-intersection-type/51604379#51604379\ntype TupleTypes = { [P in keyof T]: T[P] } extends { [key: number]: infer V } ? NullToObject : never;\ntype NullToObject = T extends (null | undefined) ? {} : T;\n// eslint-disable-next-line no-undef, @typescript-eslint/no-unused-vars\ntype UnionToIntersection = (U extends any ? (k: U) => void : never) extends ((k: infer I) => void) ? I : never;\n\n/**\n * Merges multiple props objects together. Event handlers are chained,\n * classNames are combined, and ids are deduplicated - different ids\n * will trigger a side-effect and re-render components hooked up with `useId`.\n * For all other props, the last prop object overrides all previous ones.\n * @param args - Multiple sets of props to merge together.\n */\nexport function mergeProps(...args: T): UnionToIntersection> {\n // Start with a base clone of the first argument. This is a lot faster than starting\n // with an empty object and adding properties as we go.\n let result: Props = {...args[0]};\n for (let i = 1; i < args.length; i++) {\n let props = args[i];\n for (let key in props) {\n let a = result[key];\n let b = props[key];\n\n // Chain events\n if (\n typeof a === 'function' &&\n typeof b === 'function' &&\n // This is a lot faster than a regex.\n key[0] === 'o' &&\n key[1] === 'n' &&\n key.charCodeAt(2) >= /* 'A' */ 65 &&\n key.charCodeAt(2) <= /* 'Z' */ 90\n ) {\n result[key] = chain(a, b);\n\n // Merge classnames, sometimes classNames are empty string which eval to false, so we just need to do a type check\n } else if (\n (key === 'className' || key === 'UNSAFE_className') &&\n typeof a === 'string' &&\n typeof b === 'string'\n ) {\n result[key] = clsx(a, b);\n } else if (key === 'id' && a && b) {\n result.id = mergeIds(a, b);\n // Override others\n } else {\n result[key] = b !== undefined ? b : a;\n }\n }\n }\n\n return result as UnionToIntersection>;\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {ForwardedRef} from 'react';\n\n/**\n * Merges multiple refs into one. Works with either callback or object refs.\n */\nexport function mergeRefs(...refs: ForwardedRef[]): ForwardedRef {\n if (refs.length === 1) {\n return refs[0];\n }\n\n return (value: T | null) => {\n for (let ref of refs) {\n if (typeof ref === 'function') {\n ref(value);\n } else if (ref != null) {\n ref.current = value;\n }\n }\n };\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {AriaLabelingProps, DOMProps, LinkDOMProps} from '@react-types/shared';\n\nconst DOMPropNames = new Set([\n 'id'\n]);\n\nconst labelablePropNames = new Set([\n 'aria-label',\n 'aria-labelledby',\n 'aria-describedby',\n 'aria-details'\n]);\n\n// See LinkDOMProps in dom.d.ts.\nconst linkPropNames = new Set([\n 'href',\n 'target',\n 'rel',\n 'download',\n 'ping',\n 'referrerPolicy'\n]);\n\ninterface Options {\n /**\n * If labelling associated aria properties should be included in the filter.\n */\n labelable?: boolean,\n /** Whether the element is a link and should include DOM props for elements. */\n isLink?: boolean,\n /**\n * A Set of other property names that should be included in the filter.\n */\n propNames?: Set\n}\n\nconst propRe = /^(data-.*)$/;\n\n/**\n * Filters out all props that aren't valid DOM props or defined via override prop obj.\n * @param props - The component props to be filtered.\n * @param opts - Props to override.\n */\nexport function filterDOMProps(props: DOMProps & AriaLabelingProps & LinkDOMProps, opts: Options = {}): DOMProps & AriaLabelingProps {\n let {labelable, isLink, propNames} = opts;\n let filteredProps = {};\n\n for (const prop in props) {\n if (\n Object.prototype.hasOwnProperty.call(props, prop) && (\n DOMPropNames.has(prop) ||\n (labelable && labelablePropNames.has(prop)) ||\n (isLink && linkPropNames.has(prop)) ||\n propNames?.has(prop) ||\n propRe.test(prop)\n )\n ) {\n filteredProps[prop] = props[prop];\n }\n }\n\n return filteredProps;\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {FocusableElement} from '@react-types/shared';\n\n// This is a polyfill for element.focus({preventScroll: true});\n// Currently necessary for Safari and old Edge:\n// https://caniuse.com/#feat=mdn-api_htmlelement_focus_preventscroll_option\n// See https://bugs.webkit.org/show_bug.cgi?id=178583\n//\n\n// Original licensing for the following methods can be found in the\n// NOTICE file in the root directory of this source tree.\n// See https://github.com/calvellido/focus-options-polyfill\n\ninterface ScrollableElement {\n element: HTMLElement,\n scrollTop: number,\n scrollLeft: number\n}\n\nexport function focusWithoutScrolling(element: FocusableElement) {\n if (supportsPreventScroll()) {\n element.focus({preventScroll: true});\n } else {\n let scrollableElements = getScrollableElements(element);\n element.focus();\n restoreScrollPosition(scrollableElements);\n }\n}\n\nlet supportsPreventScrollCached: boolean | null = null;\nfunction supportsPreventScroll() {\n if (supportsPreventScrollCached == null) {\n supportsPreventScrollCached = false;\n try {\n let focusElem = document.createElement('div');\n focusElem.focus({\n get preventScroll() {\n supportsPreventScrollCached = true;\n return true;\n }\n });\n } catch (e) {\n // Ignore\n }\n }\n\n return supportsPreventScrollCached;\n}\n\nfunction getScrollableElements(element: FocusableElement): ScrollableElement[] {\n let parent = element.parentNode;\n let scrollableElements: ScrollableElement[] = [];\n let rootScrollingElement = document.scrollingElement || document.documentElement;\n\n while (parent instanceof HTMLElement && parent !== rootScrollingElement) {\n if (\n parent.offsetHeight < parent.scrollHeight ||\n parent.offsetWidth < parent.scrollWidth\n ) {\n scrollableElements.push({\n element: parent,\n scrollTop: parent.scrollTop,\n scrollLeft: parent.scrollLeft\n });\n }\n parent = parent.parentNode;\n }\n\n if (rootScrollingElement instanceof HTMLElement) {\n scrollableElements.push({\n element: rootScrollingElement,\n scrollTop: rootScrollingElement.scrollTop,\n scrollLeft: rootScrollingElement.scrollLeft\n });\n }\n\n return scrollableElements;\n}\n\nfunction restoreScrollPosition(scrollableElements: ScrollableElement[]) {\n for (let {element, scrollTop, scrollLeft} of scrollableElements) {\n element.scrollTop = scrollTop;\n element.scrollLeft = scrollLeft;\n }\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nexport function getOffset(element, reverse, orientation = 'horizontal') {\n let rect = element.getBoundingClientRect();\n if (reverse) {\n return orientation === 'horizontal' ? rect.right : rect.bottom;\n }\n return orientation === 'horizontal' ? rect.left : rect.top;\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nfunction testUserAgent(re: RegExp) {\n if (typeof window === 'undefined' || window.navigator == null) {\n return false;\n }\n return (\n window.navigator['userAgentData']?.brands.some((brand: {brand: string, version: string}) => re.test(brand.brand))\n ) ||\n re.test(window.navigator.userAgent);\n}\n\nfunction testPlatform(re: RegExp) {\n return typeof window !== 'undefined' && window.navigator != null\n ? re.test(window.navigator['userAgentData']?.platform || window.navigator.platform)\n : false;\n}\n\nexport function isMac() {\n return testPlatform(/^Mac/i);\n}\n\nexport function isIPhone() {\n return testPlatform(/^iPhone/i);\n}\n\nexport function isIPad() {\n return testPlatform(/^iPad/i) ||\n // iPadOS 13 lies and says it's a Mac, but we can distinguish by detecting touch support.\n (isMac() && navigator.maxTouchPoints > 1);\n}\n\nexport function isIOS() {\n return isIPhone() || isIPad();\n}\n\nexport function isAppleDevice() {\n return isMac() || isIOS();\n}\n\nexport function isWebKit() {\n return testUserAgent(/AppleWebKit/i) && !isChrome();\n}\n\nexport function isChrome() {\n return testUserAgent(/Chrome/i);\n}\n\nexport function isAndroid() {\n return testUserAgent(/Android/i);\n}\n\nexport function isFirefox() {\n return testUserAgent(/Firefox/i);\n}\n","/*\n * Copyright 2023 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {focusWithoutScrolling, isMac, isWebKit} from './index';\nimport {isFirefox, isIPad} from './platform';\nimport {LinkDOMProps} from '@react-types/shared';\nimport React, {createContext, ReactNode, useContext, useMemo} from 'react';\n\ninterface Router {\n isNative: boolean,\n open: (target: Element, modifiers: Modifiers) => void\n}\n\nconst RouterContext = createContext({\n isNative: true,\n open: openSyntheticLink\n});\n\ninterface RouterProviderProps {\n navigate: (path: string) => void,\n children: ReactNode\n}\n\n/**\n * A RouterProvider accepts a `navigate` function from a framework or client side router,\n * and provides it to all nested React Aria links to enable client side navigation.\n */\nexport function RouterProvider(props: RouterProviderProps) {\n let {children, navigate} = props;\n\n let ctx = useMemo(() => ({\n isNative: false,\n open: (target: Element, modifiers: Modifiers) => {\n getSyntheticLink(target, link => {\n if (shouldClientNavigate(link, modifiers)) {\n navigate(link.pathname + link.search + link.hash);\n } else {\n openLink(link, modifiers);\n }\n });\n }\n }), [navigate]);\n\n return (\n \n {children}\n \n );\n}\n\nexport function useRouter(): Router {\n return useContext(RouterContext);\n}\n\ninterface Modifiers {\n metaKey?: boolean,\n ctrlKey?: boolean,\n altKey?: boolean,\n shiftKey?: boolean\n}\n\nexport function shouldClientNavigate(link: HTMLAnchorElement, modifiers: Modifiers) {\n // Use getAttribute here instead of link.target. Firefox will default link.target to \"_parent\" when inside an iframe.\n let target = link.getAttribute('target');\n return (\n (!target || target === '_self') &&\n link.origin === location.origin &&\n !link.hasAttribute('download') &&\n !modifiers.metaKey && // open in new tab (mac)\n !modifiers.ctrlKey && // open in new tab (windows)\n !modifiers.altKey && // download\n !modifiers.shiftKey\n );\n}\n\nexport function openLink(target: HTMLAnchorElement, modifiers: Modifiers, setOpening = true) {\n let {metaKey, ctrlKey, altKey, shiftKey} = modifiers;\n\n // Firefox does not recognize keyboard events as a user action by default, and the popup blocker\n // will prevent links with target=\"_blank\" from opening. However, it does allow the event if the\n // Command/Control key is held, which opens the link in a background tab. This seems like the best we can do.\n // See https://bugzilla.mozilla.org/show_bug.cgi?id=257870 and https://bugzilla.mozilla.org/show_bug.cgi?id=746640.\n if (isFirefox() && window.event?.type?.startsWith('key') && target.target === '_blank') {\n if (isMac()) {\n metaKey = true;\n } else {\n ctrlKey = true;\n }\n }\n\n // WebKit does not support firing click events with modifier keys, but does support keyboard events.\n // https://github.com/WebKit/WebKit/blob/c03d0ac6e6db178f90923a0a63080b5ca210d25f/Source/WebCore/html/HTMLAnchorElement.cpp#L184\n let event = isWebKit() && isMac() && !isIPad() && process.env.NODE_ENV !== 'test'\n // @ts-ignore - keyIdentifier is a non-standard property, but it's what webkit expects\n ? new KeyboardEvent('keydown', {keyIdentifier: 'Enter', metaKey, ctrlKey, altKey, shiftKey})\n : new MouseEvent('click', {metaKey, ctrlKey, altKey, shiftKey, bubbles: true, cancelable: true});\n (openLink as any).isOpening = setOpening;\n focusWithoutScrolling(target);\n target.dispatchEvent(event);\n (openLink as any).isOpening = false;\n}\n// https://github.com/parcel-bundler/parcel/issues/8724\n(openLink as any).isOpening = false;\n\nfunction getSyntheticLink(target: Element, open: (link: HTMLAnchorElement) => void) {\n if (target instanceof HTMLAnchorElement) {\n open(target);\n } else if (target.hasAttribute('data-href')) {\n let link = document.createElement('a');\n link.href = target.getAttribute('data-href')!;\n if (target.hasAttribute('data-target')) {\n link.target = target.getAttribute('data-target')!;\n }\n if (target.hasAttribute('data-rel')) {\n link.rel = target.getAttribute('data-rel')!;\n }\n if (target.hasAttribute('data-download')) {\n link.download = target.getAttribute('data-download')!;\n }\n if (target.hasAttribute('data-ping')) {\n link.ping = target.getAttribute('data-ping')!;\n }\n if (target.hasAttribute('data-referrer-policy')) {\n link.referrerPolicy = target.getAttribute('data-referrer-policy')!;\n }\n target.appendChild(link);\n open(link);\n target.removeChild(link);\n }\n}\n\nfunction openSyntheticLink(target: Element, modifiers: Modifiers) {\n getSyntheticLink(target, link => openLink(link, modifiers));\n}\n\nexport function getSyntheticLinkProps(props: LinkDOMProps) {\n return {\n 'data-href': props.href,\n 'data-target': props.target,\n 'data-rel': props.rel,\n 'data-download': props.download,\n 'data-ping': props.ping,\n 'data-referrer-policy': props.referrerPolicy\n };\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n// We store a global list of elements that are currently transitioning,\n// mapped to a set of CSS properties that are transitioning for that element.\n// This is necessary rather than a simple count of transitions because of browser\n// bugs, e.g. Chrome sometimes fires both transitionend and transitioncancel rather\n// than one or the other. So we need to track what's actually transitioning so that\n// we can ignore these duplicate events.\nlet transitionsByElement = new Map>();\n\n// A list of callbacks to call once there are no transitioning elements.\nlet transitionCallbacks = new Set<() => void>();\n\nfunction setupGlobalEvents() {\n if (typeof window === 'undefined') {\n return;\n }\n\n function isTransitionEvent(event: Event): event is TransitionEvent {\n return 'propertyName' in event;\n }\n\n let onTransitionStart = (e: Event) => {\n if (!isTransitionEvent(e) || !e.target) {\n return;\n }\n // Add the transitioning property to the list for this element.\n let transitions = transitionsByElement.get(e.target);\n if (!transitions) {\n transitions = new Set();\n transitionsByElement.set(e.target, transitions);\n\n // The transitioncancel event must be registered on the element itself, rather than as a global\n // event. This enables us to handle when the node is deleted from the document while it is transitioning.\n // In that case, the cancel event would have nowhere to bubble to so we need to handle it directly.\n e.target.addEventListener('transitioncancel', onTransitionEnd, {\n once: true\n });\n }\n\n transitions.add(e.propertyName);\n };\n\n let onTransitionEnd = (e: Event) => {\n if (!isTransitionEvent(e) || !e.target) {\n return;\n }\n // Remove property from list of transitioning properties.\n let properties = transitionsByElement.get(e.target);\n if (!properties) {\n return;\n }\n\n properties.delete(e.propertyName);\n\n // If empty, remove transitioncancel event, and remove the element from the list of transitioning elements.\n if (properties.size === 0) {\n e.target.removeEventListener('transitioncancel', onTransitionEnd);\n transitionsByElement.delete(e.target);\n }\n\n // If no transitioning elements, call all of the queued callbacks.\n if (transitionsByElement.size === 0) {\n for (let cb of transitionCallbacks) {\n cb();\n }\n\n transitionCallbacks.clear();\n }\n };\n\n document.body.addEventListener('transitionrun', onTransitionStart);\n document.body.addEventListener('transitionend', onTransitionEnd);\n}\n\nif (typeof document !== 'undefined') {\n if (document.readyState !== 'loading') {\n setupGlobalEvents();\n } else {\n document.addEventListener('DOMContentLoaded', setupGlobalEvents);\n }\n}\n\nexport function runAfterTransition(fn: () => void) {\n // Wait one frame to see if an animation starts, e.g. a transition on mount.\n requestAnimationFrame(() => {\n // If no transitions are running, call the function immediately.\n // Otherwise, add it to a list of callbacks to run at the end of the animation.\n if (transitionsByElement.size === 0) {\n fn();\n } else {\n transitionCallbacks.add(fn);\n }\n });\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n /* eslint-disable rulesdir/pure-render */\n\nimport {getOffset} from './getOffset';\nimport {Orientation} from '@react-types/shared';\nimport React, {HTMLAttributes, MutableRefObject, useRef} from 'react';\n\ninterface UseDrag1DProps {\n containerRef: MutableRefObject,\n reverse?: boolean,\n orientation?: Orientation,\n onHover?: (hovered: boolean) => void,\n onDrag?: (dragging: boolean) => void,\n onPositionChange?: (position: number) => void,\n onIncrement?: () => void,\n onDecrement?: () => void,\n onIncrementToMax?: () => void,\n onDecrementToMin?: () => void,\n onCollapseToggle?: () => void\n}\n\n// Keep track of elements that we are currently handling dragging for via useDrag1D.\n// If there's an ancestor and a descendant both using useDrag1D(), and the user starts\n// dragging the descendant, we don't want useDrag1D events to fire for the ancestor.\nconst draggingElements: HTMLElement[] = [];\n\n// created for splitview, this should be reusable for things like sliders/dials\n// It also handles keyboard events on the target allowing for increment/decrement by a given stepsize as well as minifying/maximizing and toggling between minified and previous size\n// It can also take a 'reverse' param to say if we should measure from the right/bottom instead of the top/left\n// It can also handle either a vertical or horizontal movement, but not both at the same time\n\nexport function useDrag1D(props: UseDrag1DProps): HTMLAttributes {\n console.warn('useDrag1D is deprecated, please use `useMove` instead https://react-spectrum.adobe.com/react-aria/useMove.html');\n let {containerRef, reverse, orientation, onHover, onDrag, onPositionChange, onIncrement, onDecrement, onIncrementToMax, onDecrementToMin, onCollapseToggle} = props;\n let getPosition = (e) => orientation === 'horizontal' ? e.clientX : e.clientY;\n let getNextOffset = (e: MouseEvent) => {\n let containerOffset = getOffset(containerRef.current, reverse, orientation);\n let mouseOffset = getPosition(e);\n let nextOffset = reverse ? containerOffset - mouseOffset : mouseOffset - containerOffset;\n return nextOffset;\n };\n let dragging = useRef(false);\n let prevPosition = useRef(0);\n\n // Keep track of the current handlers in a ref so that the events can access them.\n let handlers = useRef({onPositionChange, onDrag});\n handlers.current.onDrag = onDrag;\n handlers.current.onPositionChange = onPositionChange;\n\n let onMouseDragged = (e: MouseEvent) => {\n e.preventDefault();\n let nextOffset = getNextOffset(e);\n if (!dragging.current) {\n dragging.current = true;\n if (handlers.current.onDrag) {\n handlers.current.onDrag(true);\n }\n if (handlers.current.onPositionChange) {\n handlers.current.onPositionChange(nextOffset);\n }\n }\n if (prevPosition.current === nextOffset) {\n return;\n }\n prevPosition.current = nextOffset;\n if (onPositionChange) {\n onPositionChange(nextOffset);\n }\n };\n\n let onMouseUp = (e: MouseEvent) => {\n const target = e.target as HTMLElement;\n dragging.current = false;\n let nextOffset = getNextOffset(e);\n if (handlers.current.onDrag) {\n handlers.current.onDrag(false);\n }\n if (handlers.current.onPositionChange) {\n handlers.current.onPositionChange(nextOffset);\n }\n\n draggingElements.splice(draggingElements.indexOf(target), 1);\n window.removeEventListener('mouseup', onMouseUp, false);\n window.removeEventListener('mousemove', onMouseDragged, false);\n };\n\n let onMouseDown = (e: React.MouseEvent) => {\n const target = e.currentTarget;\n // If we're already handling dragging on a descendant with useDrag1D, then\n // we don't want to handle the drag motion on this target as well.\n if (draggingElements.some(elt => target.contains(elt))) {\n return;\n }\n draggingElements.push(target);\n window.addEventListener('mousemove', onMouseDragged, false);\n window.addEventListener('mouseup', onMouseUp, false);\n };\n\n let onMouseEnter = () => {\n if (onHover) {\n onHover(true);\n }\n };\n\n let onMouseOut = () => {\n if (onHover) {\n onHover(false);\n }\n };\n\n let onKeyDown = (e) => {\n switch (e.key) {\n case 'Left':\n case 'ArrowLeft':\n if (orientation === 'horizontal') {\n e.preventDefault();\n if (onDecrement && !reverse) {\n onDecrement();\n } else if (onIncrement && reverse) {\n onIncrement();\n }\n }\n break;\n case 'Up':\n case 'ArrowUp':\n if (orientation === 'vertical') {\n e.preventDefault();\n if (onDecrement && !reverse) {\n onDecrement();\n } else if (onIncrement && reverse) {\n onIncrement();\n }\n }\n break;\n case 'Right':\n case 'ArrowRight':\n if (orientation === 'horizontal') {\n e.preventDefault();\n if (onIncrement && !reverse) {\n onIncrement();\n } else if (onDecrement && reverse) {\n onDecrement();\n }\n }\n break;\n case 'Down':\n case 'ArrowDown':\n if (orientation === 'vertical') {\n e.preventDefault();\n if (onIncrement && !reverse) {\n onIncrement();\n } else if (onDecrement && reverse) {\n onDecrement();\n }\n }\n break;\n case 'Home':\n e.preventDefault();\n if (onDecrementToMin) {\n onDecrementToMin();\n }\n break;\n case 'End':\n e.preventDefault();\n if (onIncrementToMax) {\n onIncrementToMax();\n }\n break;\n case 'Enter':\n e.preventDefault();\n if (onCollapseToggle) {\n onCollapseToggle();\n }\n break;\n }\n };\n\n return {onMouseDown, onMouseEnter, onMouseOut, onKeyDown};\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {useCallback, useEffect, useRef} from 'react';\n\ninterface GlobalListeners {\n addGlobalListener(el: EventTarget, type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void,\n addGlobalListener(el: EventTarget, type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void,\n removeGlobalListener(el: EventTarget, type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void,\n removeGlobalListener(el: EventTarget, type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void,\n removeAllGlobalListeners(): void\n}\n\nexport function useGlobalListeners(): GlobalListeners {\n let globalListeners = useRef(new Map());\n let addGlobalListener = useCallback((eventTarget, type, listener, options) => {\n // Make sure we remove the listener after it is called with the `once` option.\n let fn = options?.once ? (...args) => {\n globalListeners.current.delete(listener);\n listener(...args);\n } : listener;\n globalListeners.current.set(listener, {type, eventTarget, fn, options});\n eventTarget.addEventListener(type, listener, options);\n }, []);\n let removeGlobalListener = useCallback((eventTarget, type, listener, options) => {\n let fn = globalListeners.current.get(listener)?.fn || listener;\n eventTarget.removeEventListener(type, fn, options);\n globalListeners.current.delete(listener);\n }, []);\n let removeAllGlobalListeners = useCallback(() => {\n globalListeners.current.forEach((value, key) => {\n removeGlobalListener(value.eventTarget, value.type, key, value.options);\n });\n }, [removeGlobalListener]);\n\n // eslint-disable-next-line arrow-body-style\n useEffect(() => {\n return removeAllGlobalListeners;\n }, [removeAllGlobalListeners]);\n\n return {addGlobalListener, removeGlobalListener, removeAllGlobalListeners};\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {AriaLabelingProps, DOMProps} from '@react-types/shared';\nimport {useId} from './useId';\n\n/**\n * Merges aria-label and aria-labelledby into aria-labelledby when both exist.\n * @param props - Aria label props.\n * @param defaultLabel - Default value for aria-label when not present.\n */\nexport function useLabels(props: DOMProps & AriaLabelingProps, defaultLabel?: string): DOMProps & AriaLabelingProps {\n let {\n id,\n 'aria-label': label,\n 'aria-labelledby': labelledBy\n } = props;\n\n // If there is both an aria-label and aria-labelledby,\n // combine them by pointing to the element itself.\n id = useId(id);\n if (labelledBy && label) {\n let ids = new Set([id, ...labelledBy.trim().split(/\\s+/)]);\n labelledBy = [...ids].join(' ');\n } else if (labelledBy) {\n labelledBy = labelledBy.trim().split(/\\s+/).join(' ');\n }\n\n // If no labels are provided, use the default\n if (!label && !labelledBy && defaultLabel) {\n label = defaultLabel;\n }\n\n return {\n id,\n 'aria-label': label,\n 'aria-labelledby': labelledBy\n };\n}\n","/*\n * Copyright 2021 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {MutableRefObject, useMemo, useRef} from 'react';\n\n/**\n * Offers an object ref for a given callback ref or an object ref. Especially\n * helfpul when passing forwarded refs (created using `React.forwardRef`) to\n * React Aria hooks.\n *\n * @param forwardedRef The original ref intended to be used.\n * @returns An object ref that updates the given ref.\n * @see https://reactjs.org/docs/forwarding-refs.html\n */\nexport function useObjectRef(forwardedRef?: ((instance: T | null) => void) | MutableRefObject | null): MutableRefObject {\n const objRef: MutableRefObject = useRef(null);\n return useMemo(() => ({\n get current() {\n return objRef.current;\n },\n set current(value) {\n objRef.current = value;\n if (typeof forwardedRef === 'function') {\n forwardedRef(value);\n } else if (forwardedRef) {\n forwardedRef.current = value;\n }\n }\n }), [forwardedRef]);\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {EffectCallback, useEffect, useRef} from 'react';\n\n// Like useEffect, but only called for updates after the initial render.\nexport function useUpdateEffect(effect: EffectCallback, dependencies: any[]) {\n const isInitialMount = useRef(true);\n const lastDeps = useRef(null);\n\n useEffect(() => {\n isInitialMount.current = true;\n return () => {\n isInitialMount.current = false;\n };\n }, []);\n\n useEffect(() => {\n if (isInitialMount.current) {\n isInitialMount.current = false;\n } else if (!lastDeps.current || dependencies.some((dep, i) => !Object.is(dep, lastDeps[i]))) {\n effect();\n }\n lastDeps.current = dependencies;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, dependencies);\n}\n","import {RefObject, useEffect} from 'react';\n\nfunction hasResizeObserver() {\n return typeof window.ResizeObserver !== 'undefined';\n}\n\ntype useResizeObserverOptionsType = {\n ref: RefObject | undefined,\n onResize: () => void\n}\n\nexport function useResizeObserver(options: useResizeObserverOptionsType) {\n const {ref, onResize} = options;\n\n useEffect(() => {\n let element = ref?.current;\n if (!element) {\n return;\n }\n\n if (!hasResizeObserver()) {\n window.addEventListener('resize', onResize, false);\n return () => {\n window.removeEventListener('resize', onResize, false);\n };\n } else {\n\n const resizeObserverInstance = new window.ResizeObserver((entries) => {\n if (!entries.length) {\n return;\n }\n\n onResize();\n });\n resizeObserverInstance.observe(element);\n\n return () => {\n if (element) {\n resizeObserverInstance.unobserve(element);\n }\n };\n }\n\n }, [onResize, ref]);\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {MutableRefObject, RefObject} from 'react';\nimport {useLayoutEffect} from './';\n\ninterface ContextValue {\n ref?: MutableRefObject\n}\n\n// Syncs ref from context with ref passed to hook\nexport function useSyncRef(context?: ContextValue | null, ref?: RefObject) {\n useLayoutEffect(() => {\n if (context && context.ref && ref) {\n context.ref.current = ref.current;\n return () => {\n if (context.ref) {\n context.ref.current = null;\n }\n };\n }\n });\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nexport function getScrollParent(node: Element, checkForOverflow?: boolean): Element {\n let scrollableNode: Element | null = node;\n if (isScrollable(scrollableNode, checkForOverflow)) {\n scrollableNode = scrollableNode.parentElement;\n }\n\n while (scrollableNode && !isScrollable(scrollableNode, checkForOverflow)) {\n scrollableNode = scrollableNode.parentElement;\n }\n\n return scrollableNode || document.scrollingElement || document.documentElement;\n}\n\nexport function isScrollable(node: Element, checkForOverflow?: boolean): boolean {\n let style = window.getComputedStyle(node);\n let isScrollable = /(auto|scroll)/.test(style.overflow + style.overflowX + style.overflowY);\n\n if (isScrollable && checkForOverflow) {\n isScrollable = node.scrollHeight !== node.clientHeight || node.scrollWidth !== node.clientWidth;\n }\n\n return isScrollable;\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {useEffect, useState} from 'react';\nimport {useIsSSR} from '@react-aria/ssr';\n\ninterface ViewportSize {\n width: number,\n height: number\n}\n\n// @ts-ignore\nlet visualViewport = typeof document !== 'undefined' && window.visualViewport;\n\nexport function useViewportSize(): ViewportSize {\n let isSSR = useIsSSR();\n let [size, setSize] = useState(() => isSSR ? {width: 0, height: 0} : getViewportSize());\n\n useEffect(() => {\n // Use visualViewport api to track available height even on iOS virtual keyboard opening\n let onResize = () => {\n setSize(size => {\n let newSize = getViewportSize();\n if (newSize.width === size.width && newSize.height === size.height) {\n return size;\n }\n return newSize;\n });\n };\n\n if (!visualViewport) {\n window.addEventListener('resize', onResize);\n } else {\n visualViewport.addEventListener('resize', onResize);\n }\n\n return () => {\n if (!visualViewport) {\n window.removeEventListener('resize', onResize);\n } else {\n visualViewport.removeEventListener('resize', onResize);\n }\n };\n }, []);\n\n return size;\n}\n\nfunction getViewportSize(): ViewportSize {\n return {\n width: (visualViewport && visualViewport?.width) || window.innerWidth,\n height: (visualViewport && visualViewport?.height) || window.innerHeight\n };\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {AriaLabelingProps} from '@react-types/shared';\nimport {useLayoutEffect} from './useLayoutEffect';\nimport {useState} from 'react';\n\nlet descriptionId = 0;\nconst descriptionNodes = new Map();\n\nexport function useDescription(description?: string): AriaLabelingProps {\n let [id, setId] = useState();\n\n useLayoutEffect(() => {\n if (!description) {\n return;\n }\n\n let desc = descriptionNodes.get(description);\n if (!desc) {\n let id = `react-aria-description-${descriptionId++}`;\n setId(id);\n\n let node = document.createElement('div');\n node.id = id;\n node.style.display = 'none';\n node.textContent = description;\n document.body.appendChild(node);\n desc = {refCount: 0, element: node};\n descriptionNodes.set(description, desc);\n } else {\n setId(desc.element.id);\n }\n\n desc.refCount++;\n return () => {\n if (desc && --desc.refCount === 0) {\n desc.element.remove();\n descriptionNodes.delete(description);\n }\n };\n }, [description]);\n\n return {\n 'aria-describedby': description ? id : undefined\n };\n}\n","/*\n * Copyright 2021 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {RefObject, useEffect} from 'react';\nimport {useEffectEvent} from './useEffectEvent';\n\nexport function useEvent(\n ref: RefObject,\n event: K,\n handler?: (this: Document, ev: GlobalEventHandlersEventMap[K]) => any,\n options?: boolean | AddEventListenerOptions\n) {\n let handleEvent = useEffectEvent(handler);\n let isDisabled = handler == null;\n\n useEffect(() => {\n if (isDisabled || !ref.current) {\n return;\n }\n\n let element = ref.current;\n element.addEventListener(event, handleEvent as EventListener, options);\n return () => {\n element.removeEventListener(event, handleEvent as EventListener, options);\n };\n }, [ref, event, options, isDisabled, handleEvent]);\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {getScrollParent} from './';\n\ninterface ScrollIntoViewportOpts {\n /** The optional containing element of the target to be centered in the viewport. */\n containingElement?: Element\n}\n\n/**\n * Scrolls `scrollView` so that `element` is visible.\n * Similar to `element.scrollIntoView({block: 'nearest'})` (not supported in Edge),\n * but doesn't affect parents above `scrollView`.\n */\nexport function scrollIntoView(scrollView: HTMLElement, element: HTMLElement) {\n let offsetX = relativeOffset(scrollView, element, 'left');\n let offsetY = relativeOffset(scrollView, element, 'top');\n let width = element.offsetWidth;\n let height = element.offsetHeight;\n let x = scrollView.scrollLeft;\n let y = scrollView.scrollTop;\n\n // Account for top/left border offsetting the scroll top/Left\n let {borderTopWidth, borderLeftWidth} = getComputedStyle(scrollView);\n let borderAdjustedX = scrollView.scrollLeft + parseInt(borderLeftWidth, 10);\n let borderAdjustedY = scrollView.scrollTop + parseInt(borderTopWidth, 10);\n // Ignore end/bottom border via clientHeight/Width instead of offsetHeight/Width\n let maxX = borderAdjustedX + scrollView.clientWidth;\n let maxY = borderAdjustedY + scrollView.clientHeight;\n\n if (offsetX <= x) {\n x = offsetX - parseInt(borderLeftWidth, 10);\n } else if (offsetX + width > maxX) {\n x += offsetX + width - maxX;\n }\n if (offsetY <= borderAdjustedY) {\n y = offsetY - parseInt(borderTopWidth, 10);\n } else if (offsetY + height > maxY) {\n y += offsetY + height - maxY;\n }\n scrollView.scrollLeft = x;\n scrollView.scrollTop = y;\n}\n\n/**\n * Computes the offset left or top from child to ancestor by accumulating\n * offsetLeft or offsetTop through intervening offsetParents.\n */\nfunction relativeOffset(ancestor: HTMLElement, child: HTMLElement, axis: 'left'|'top') {\n const prop = axis === 'left' ? 'offsetLeft' : 'offsetTop';\n let sum = 0;\n while (child.offsetParent) {\n sum += child[prop];\n if (child.offsetParent === ancestor) {\n // Stop once we have found the ancestor we are interested in.\n break;\n } else if (child.offsetParent.contains(ancestor)) {\n // If the ancestor is not `position:relative`, then we stop at\n // _its_ offset parent, and we subtract off _its_ offset, so that\n // we end up with the proper offset from child to ancestor.\n sum -= ancestor[prop];\n break;\n }\n child = child.offsetParent as HTMLElement;\n }\n return sum;\n}\n\n/**\n * Scrolls the `targetElement` so it is visible in the viewport. Accepts an optional `opts.containingElement`\n * that will be centered in the viewport prior to scrolling the targetElement into view. If scrolling is prevented on\n * the body (e.g. targetElement is in a popover), this will only scroll the scroll parents of the targetElement up to but not including the body itself.\n */\nexport function scrollIntoViewport(targetElement: Element, opts?: ScrollIntoViewportOpts) {\n if (document.contains(targetElement)) {\n let root = document.scrollingElement || document.documentElement;\n let isScrollPrevented = window.getComputedStyle(root).overflow === 'hidden';\n // If scrolling is not currently prevented then we aren’t in a overlay nor is a overlay open, just use element.scrollIntoView to bring the element into view\n if (!isScrollPrevented) {\n let {left: originalLeft, top: originalTop} = targetElement.getBoundingClientRect();\n\n // use scrollIntoView({block: 'nearest'}) instead of .focus to check if the element is fully in view or not since .focus()\n // won't cause a scroll if the element is already focused and doesn't behave consistently when an element is partially out of view horizontally vs vertically\n targetElement?.scrollIntoView?.({block: 'nearest'});\n let {left: newLeft, top: newTop} = targetElement.getBoundingClientRect();\n // Account for sub pixel differences from rounding\n if ((Math.abs(originalLeft - newLeft) > 1) || (Math.abs(originalTop - newTop) > 1)) {\n opts?.containingElement?.scrollIntoView?.({block: 'center', inline: 'center'});\n targetElement.scrollIntoView?.({block: 'nearest'});\n }\n } else {\n let scrollParent = getScrollParent(targetElement);\n // If scrolling is prevented, we don't want to scroll the body since it might move the overlay partially offscreen and the user can't scroll it back into view.\n while (targetElement && scrollParent && targetElement !== root && scrollParent !== root) {\n scrollIntoView(scrollParent as HTMLElement, targetElement as HTMLElement);\n targetElement = scrollParent;\n scrollParent = getScrollParent(targetElement);\n }\n }\n }\n}\n","/*\n * Copyright 2022 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {isAndroid} from './platform';\n\n// Original licensing for the following method can be found in the\n// NOTICE file in the root directory of this source tree.\n// See https://github.com/facebook/react/blob/3c713d513195a53788b3f8bb4b70279d68b15bcc/packages/react-interactions/events/src/dom/shared/index.js#L74-L87\n\n// Keyboards, Assistive Technologies, and element.click() all produce a \"virtual\"\n// click event. This is a method of inferring such clicks. Every browser except\n// IE 11 only sets a zero value of \"detail\" for click events that are \"virtual\".\n// However, IE 11 uses a zero value for all click events. For IE 11 we rely on\n// the quirk that it produces click events that are of type PointerEvent, and\n// where only the \"virtual\" click lacks a pointerType field.\n\nexport function isVirtualClick(event: MouseEvent | PointerEvent): boolean {\n // JAWS/NVDA with Firefox.\n if ((event as any).mozInputSource === 0 && event.isTrusted) {\n return true;\n }\n\n // Android TalkBack's detail value varies depending on the event listener providing the event so we have specific logic here instead\n // If pointerType is defined, event is from a click listener. For events from mousedown listener, detail === 0 is a sufficient check\n // to detect TalkBack virtual clicks.\n if (isAndroid() && (event as PointerEvent).pointerType) {\n return event.type === 'click' && event.buttons === 1;\n }\n\n return event.detail === 0 && !(event as PointerEvent).pointerType;\n}\n\nexport function isVirtualPointerEvent(event: PointerEvent) {\n // If the pointer size is zero, then we assume it's from a screen reader.\n // Android TalkBack double tap will sometimes return a event with width and height of 1\n // and pointerType === 'mouse' so we need to check for a specific combination of event attributes.\n // Cannot use \"event.pressure === 0\" as the sole check due to Safari pointer events always returning pressure === 0\n // instead of .5, see https://bugs.webkit.org/show_bug.cgi?id=206216. event.pointerType === 'mouse' is to distingush\n // Talkback double tap from Windows Firefox touch screen press\n return (\n (!isAndroid() && event.width === 0 && event.height === 0) ||\n (event.width === 1 &&\n event.height === 1 &&\n event.pressure === 0 &&\n event.detail === 0 &&\n event.pointerType === 'mouse'\n )\n );\n}\n","/*\n * Copyright 2023 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n/* eslint-disable rulesdir/pure-render */\n\nimport {useRef} from 'react';\n\nexport function useDeepMemo(value: T, isEqual: (a: T, b: T) => boolean): T {\n // Using a ref during render is ok here because it's only an optimization – both values are equivalent.\n // If a render is thrown away, it'll still work the same no matter if the next render is the same or not.\n let lastValue = useRef(null);\n if (value && lastValue.current && isEqual(value, lastValue.current)) {\n value = lastValue.current;\n }\n\n lastValue.current = value;\n return value;\n}\n","/*\n * Copyright 2023 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\nimport {RefObject, useEffect, useRef} from 'react';\nimport {useEffectEvent} from './useEffectEvent';\n\nexport function useFormReset(\n ref: RefObject,\n initialValue: T,\n onReset: (value: T) => void\n) {\n let resetValue = useRef(initialValue);\n let handleReset = useEffectEvent(() => {\n if (onReset) {\n onReset(resetValue.current);\n }\n });\n\n useEffect(() => {\n let form = ref?.current?.form;\n form?.addEventListener('reset', handleReset);\n return () => {\n form?.removeEventListener('reset', handleReset);\n };\n }, [ref, handleReset]);\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {useCallback, useEffect, useRef, useState} from 'react';\n\nexport function useControlledState(value: Exclude, defaultValue: Exclude | undefined, onChange?: (v: C, ...args: any[]) => void): [T, (value: T) => void];\nexport function useControlledState(value: Exclude | undefined, defaultValue: Exclude, onChange?: (v: C, ...args: any[]) => void): [T, (value: T) => void];\nexport function useControlledState(value: T, defaultValue: T, onChange?: (v: C, ...args: any[]) => void): [T, (value: T) => void] {\n let [stateValue, setStateValue] = useState(value || defaultValue);\n\n let isControlledRef = useRef(value !== undefined);\n let isControlled = value !== undefined;\n useEffect(() => {\n let wasControlled = isControlledRef.current;\n if (wasControlled !== isControlled) {\n console.warn(`WARN: A component changed from ${wasControlled ? 'controlled' : 'uncontrolled'} to ${isControlled ? 'controlled' : 'uncontrolled'}.`);\n }\n isControlledRef.current = isControlled;\n }, [isControlled]);\n\n let currentValue = isControlled ? value : stateValue;\n let setValue = useCallback((value, ...args) => {\n let onChangeCaller = (value, ...onChangeArgs) => {\n if (onChange) {\n if (!Object.is(currentValue, value)) {\n onChange(value, ...onChangeArgs);\n }\n }\n if (!isControlled) {\n // If uncontrolled, mutate the currentValue local variable so that\n // calling setState multiple times with the same value only emits onChange once.\n // We do not use a ref for this because we specifically _do_ want the value to\n // reset every render, and assigning to a ref in render breaks aborted suspended renders.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n currentValue = value;\n }\n };\n\n if (typeof value === 'function') {\n console.warn('We can not support a function callback. See Github Issues for details https://github.com/adobe/react-spectrum/issues/2320');\n // this supports functional updates https://reactjs.org/docs/hooks-reference.html#functional-updates\n // when someone using useControlledState calls setControlledState(myFunc)\n // this will call our useState setState with a function as well which invokes myFunc and calls onChange with the value from myFunc\n // if we're in an uncontrolled state, then we also return the value of myFunc which to setState looks as though it was just called with myFunc from the beginning\n // otherwise we just return the controlled value, which won't cause a rerender because React knows to bail out when the value is the same\n let updateFunction = (oldValue, ...functionArgs) => {\n let interceptedValue = value(isControlled ? currentValue : oldValue, ...functionArgs);\n onChangeCaller(interceptedValue, ...args);\n if (!isControlled) {\n return interceptedValue;\n }\n return oldValue;\n };\n setStateValue(updateFunction);\n } else {\n if (!isControlled) {\n setStateValue(value);\n }\n onChangeCaller(value, ...args);\n }\n }, [isControlled, currentValue, onChange]);\n\n return [currentValue, setValue];\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n/**\n * Takes a value and forces it to the closest min/max if it's outside. Also forces it to the closest valid step.\n */\nexport function clamp(value: number, min: number = -Infinity, max: number = Infinity): number {\n let newValue = Math.min(Math.max(value, min), max);\n return newValue;\n}\n\nexport function snapValueToStep(value: number, min: number | undefined, max: number | undefined, step: number): number {\n min = Number(min);\n max = Number(max);\n let remainder = ((value - (isNaN(min) ? 0 : min)) % step);\n let snappedValue = Math.abs(remainder) * 2 >= step\n ? value + Math.sign(remainder) * (step - Math.abs(remainder))\n : value - remainder;\n\n if (!isNaN(min)) {\n if (snappedValue < min) {\n snappedValue = min;\n } else if (!isNaN(max) && snappedValue > max) {\n snappedValue = min + Math.floor((max - min) / step) * step;\n }\n } else if (!isNaN(max) && snappedValue > max) {\n snappedValue = Math.floor(max / step) * step;\n }\n\n // correct floating point behavior by rounding to step precision\n let string = step.toString();\n let index = string.indexOf('.');\n let precision = index >= 0 ? string.length - index : 0;\n\n if (precision > 0) {\n let pow = Math.pow(10, precision);\n snappedValue = Math.round(snappedValue * pow) / pow;\n }\n\n return snappedValue;\n}\n\n/* Takes a value and rounds off to the number of digits. */\nexport function toFixedNumber(value: number, digits: number, base: number = 10): number {\n const pow = Math.pow(base, digits);\n\n return Math.round(value * pow) / pow;\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\n\nimport { PolymorphicEvent, Primitive } from '@sentry/types';\n\n// eslint-disable-next-line @typescript-eslint/unbound-method\nconst objectToString = Object.prototype.toString;\n\n/**\n * Checks whether given value's type is one of a few Error or Error-like\n * {@link isError}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isError(wat: unknown): wat is Error {\n switch (objectToString.call(wat)) {\n case '[object Error]':\n case '[object Exception]':\n case '[object DOMException]':\n return true;\n default:\n return isInstanceOf(wat, Error);\n }\n}\n\nfunction isBuiltin(wat: unknown, ty: string): boolean {\n return objectToString.call(wat) === `[object ${ty}]`;\n}\n\n/**\n * Checks whether given value's type is ErrorEvent\n * {@link isErrorEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isErrorEvent(wat: unknown): boolean {\n return isBuiltin(wat, 'ErrorEvent');\n}\n\n/**\n * Checks whether given value's type is DOMError\n * {@link isDOMError}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isDOMError(wat: unknown): boolean {\n return isBuiltin(wat, 'DOMError');\n}\n\n/**\n * Checks whether given value's type is DOMException\n * {@link isDOMException}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isDOMException(wat: unknown): boolean {\n return isBuiltin(wat, 'DOMException');\n}\n\n/**\n * Checks whether given value's type is a string\n * {@link isString}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isString(wat: unknown): wat is string {\n return isBuiltin(wat, 'String');\n}\n\n/**\n * Checks whether given value is a primitive (undefined, null, number, boolean, string, bigint, symbol)\n * {@link isPrimitive}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isPrimitive(wat: unknown): wat is Primitive {\n return wat === null || (typeof wat !== 'object' && typeof wat !== 'function');\n}\n\n/**\n * Checks whether given value's type is an object literal\n * {@link isPlainObject}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isPlainObject(wat: unknown): wat is Record {\n return isBuiltin(wat, 'Object');\n}\n\n/**\n * Checks whether given value's type is an Event instance\n * {@link isEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isEvent(wat: unknown): wat is PolymorphicEvent {\n return typeof Event !== 'undefined' && isInstanceOf(wat, Event);\n}\n\n/**\n * Checks whether given value's type is an Element instance\n * {@link isElement}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isElement(wat: unknown): boolean {\n return typeof Element !== 'undefined' && isInstanceOf(wat, Element);\n}\n\n/**\n * Checks whether given value's type is an regexp\n * {@link isRegExp}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isRegExp(wat: unknown): wat is RegExp {\n return isBuiltin(wat, 'RegExp');\n}\n\n/**\n * Checks whether given value has a then function.\n * @param wat A value to be checked.\n */\nexport function isThenable(wat: any): wat is PromiseLike {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return Boolean(wat && wat.then && typeof wat.then === 'function');\n}\n\n/**\n * Checks whether given value's type is a SyntheticEvent\n * {@link isSyntheticEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isSyntheticEvent(wat: unknown): boolean {\n return isPlainObject(wat) && 'nativeEvent' in wat && 'preventDefault' in wat && 'stopPropagation' in wat;\n}\n\n/**\n * Checks whether given value is NaN\n * {@link isNaN}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isNaN(wat: unknown): boolean {\n return typeof wat === 'number' && wat !== wat;\n}\n\n/**\n * Checks whether given value's type is an instance of provided constructor.\n * {@link isInstanceOf}.\n *\n * @param wat A value to be checked.\n * @param base A constructor to be used in a check.\n * @returns A boolean representing the result.\n */\nexport function isInstanceOf(wat: any, base: any): boolean {\n try {\n return wat instanceof base;\n } catch (_e) {\n return false;\n }\n}\n","import { Integration, WrappedFunction } from '@sentry/types';\nimport { getOriginalFunction } from '@sentry/utils';\n\nlet originalFunctionToString: () => void;\n\n/** Patch toString calls to return proper name for wrapped functions */\nexport class FunctionToString implements Integration {\n /**\n * @inheritDoc\n */\n public static id: string = 'FunctionToString';\n\n /**\n * @inheritDoc\n */\n public name: string = FunctionToString.id;\n\n /**\n * @inheritDoc\n */\n public setupOnce(): void {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n originalFunctionToString = Function.prototype.toString;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Function.prototype.toString = function (this: WrappedFunction, ...args: any[]): string {\n const context = getOriginalFunction(this) || this;\n return originalFunctionToString.apply(context, args);\n };\n }\n}\n","import { getGlobalObject } from './global';\nimport { isString } from './is';\n\n/**\n * Given a child DOM element, returns a query-selector statement describing that\n * and its ancestors\n * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz]\n * @returns generated DOM path\n */\nexport function htmlTreeAsString(elem: unknown, keyAttrs?: string[]): string {\n type SimpleNode = {\n parentNode: SimpleNode;\n } | null;\n\n // try/catch both:\n // - accessing event.target (see getsentry/raven-js#838, #768)\n // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly\n // - can throw an exception in some circumstances.\n try {\n let currentElem = elem as SimpleNode;\n const MAX_TRAVERSE_HEIGHT = 5;\n const MAX_OUTPUT_LEN = 80;\n const out = [];\n let height = 0;\n let len = 0;\n const separator = ' > ';\n const sepLength = separator.length;\n let nextStr;\n\n // eslint-disable-next-line no-plusplus\n while (currentElem && height++ < MAX_TRAVERSE_HEIGHT) {\n nextStr = _htmlElementAsString(currentElem, keyAttrs);\n // bail out if\n // - nextStr is the 'html' element\n // - the length of the string that would be created exceeds MAX_OUTPUT_LEN\n // (ignore this limit if we are on the first iteration)\n if (nextStr === 'html' || (height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN)) {\n break;\n }\n\n out.push(nextStr);\n\n len += nextStr.length;\n currentElem = currentElem.parentNode;\n }\n\n return out.reverse().join(separator);\n } catch (_oO) {\n return '';\n }\n}\n\n/**\n * Returns a simple, query-selector representation of a DOM element\n * e.g. [HTMLElement] => input#foo.btn[name=baz]\n * @returns generated DOM path\n */\nfunction _htmlElementAsString(el: unknown, keyAttrs?: string[]): string {\n const elem = el as {\n tagName?: string;\n id?: string;\n className?: string;\n getAttribute(key: string): string;\n };\n\n const out = [];\n let className;\n let classes;\n let key;\n let attr;\n let i;\n\n if (!elem || !elem.tagName) {\n return '';\n }\n\n out.push(elem.tagName.toLowerCase());\n\n // Pairs of attribute keys defined in `serializeAttribute` and their values on element.\n const keyAttrPairs =\n keyAttrs && keyAttrs.length\n ? keyAttrs.filter(keyAttr => elem.getAttribute(keyAttr)).map(keyAttr => [keyAttr, elem.getAttribute(keyAttr)])\n : null;\n\n if (keyAttrPairs && keyAttrPairs.length) {\n keyAttrPairs.forEach(keyAttrPair => {\n out.push(`[${keyAttrPair[0]}=\"${keyAttrPair[1]}\"]`);\n });\n } else {\n if (elem.id) {\n out.push(`#${elem.id}`);\n }\n\n // eslint-disable-next-line prefer-const\n className = elem.className;\n if (className && isString(className)) {\n classes = className.split(/\\s+/);\n for (i = 0; i < classes.length; i++) {\n out.push(`.${classes[i]}`);\n }\n }\n }\n const allowedAttrs = ['type', 'name', 'title', 'alt'];\n for (i = 0; i < allowedAttrs.length; i++) {\n key = allowedAttrs[i];\n attr = elem.getAttribute(key);\n if (attr) {\n out.push(`[${key}=\"${attr}\"]`);\n }\n }\n return out.join('');\n}\n\n/**\n * A safe form of location.href\n */\nexport function getLocationHref(): string {\n const global = getGlobalObject();\n try {\n return global.document.location.href;\n } catch (oO) {\n return '';\n }\n}\n","import { isRegExp, isString } from './is';\n\n/**\n * Truncates given string to the maximum characters count\n *\n * @param str An object that contains serializable values\n * @param max Maximum number of characters in truncated string (0 = unlimited)\n * @returns string Encoded\n */\nexport function truncate(str: string, max: number = 0): string {\n if (typeof str !== 'string' || max === 0) {\n return str;\n }\n return str.length <= max ? str : `${str.substr(0, max)}...`;\n}\n\n/**\n * This is basically just `trim_line` from\n * https://github.com/getsentry/sentry/blob/master/src/sentry/lang/javascript/processor.py#L67\n *\n * @param str An object that contains serializable values\n * @param max Maximum number of characters in truncated string\n * @returns string Encoded\n */\nexport function snipLine(line: string, colno: number): string {\n let newLine = line;\n const lineLength = newLine.length;\n if (lineLength <= 150) {\n return newLine;\n }\n if (colno > lineLength) {\n // eslint-disable-next-line no-param-reassign\n colno = lineLength;\n }\n\n let start = Math.max(colno - 60, 0);\n if (start < 5) {\n start = 0;\n }\n\n let end = Math.min(start + 140, lineLength);\n if (end > lineLength - 5) {\n end = lineLength;\n }\n if (end === lineLength) {\n start = Math.max(end - 140, 0);\n }\n\n newLine = newLine.slice(start, end);\n if (start > 0) {\n newLine = `'{snip} ${newLine}`;\n }\n if (end < lineLength) {\n newLine += ' {snip}';\n }\n\n return newLine;\n}\n\n/**\n * Join values in array\n * @param input array of values to be joined together\n * @param delimiter string to be placed in-between values\n * @returns Joined values\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function safeJoin(input: any[], delimiter?: string): string {\n if (!Array.isArray(input)) {\n return '';\n }\n\n const output = [];\n // eslint-disable-next-line @typescript-eslint/prefer-for-of\n for (let i = 0; i < input.length; i++) {\n const value = input[i];\n try {\n output.push(String(value));\n } catch (e) {\n output.push('[value cannot be serialized]');\n }\n }\n\n return output.join(delimiter);\n}\n\n/**\n * Checks if the value matches a regex or includes the string\n * @param value The string value to be checked against\n * @param pattern Either a regex or a string that must be contained in value\n */\nexport function isMatchingPattern(value: string, pattern: RegExp | string): boolean {\n if (!isString(value)) {\n return false;\n }\n\n if (isRegExp(pattern)) {\n return pattern.test(value);\n }\n if (typeof pattern === 'string') {\n return value.indexOf(pattern) !== -1;\n }\n return false;\n}\n\n/**\n * Given a string, escape characters which have meaning in the regex grammar, such that the result is safe to feed to\n * `new RegExp()`.\n *\n * Based on https://github.com/sindresorhus/escape-string-regexp. Vendored to a) reduce the size by skipping the runtime\n * type-checking, and b) ensure it gets down-compiled for old versions of Node (the published package only supports Node\n * 12+).\n *\n * @param regexString The string to escape\n * @returns An version of the string with all special regex characters escaped\n */\nexport function escapeStringForRegex(regexString: string): string {\n // escape the hyphen separately so we can also replace it with a unicode literal hyphen, to avoid the problems\n // discussed in https://github.com/sindresorhus/escape-string-regexp/issues/20.\n return regexString.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&').replace(/-/g, '\\\\x2d');\n}\n","/* eslint-disable max-lines */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { WrappedFunction } from '@sentry/types';\n\nimport { htmlTreeAsString } from './browser';\nimport { isElement, isError, isEvent, isInstanceOf, isPlainObject, isPrimitive } from './is';\nimport { truncate } from './string';\n\n/**\n * Replace a method in an object with a wrapped version of itself.\n *\n * @param source An object that contains a method to be wrapped.\n * @param name The name of the method to be wrapped.\n * @param replacementFactory A higher-order function that takes the original version of the given method and returns a\n * wrapped version. Note: The function returned by `replacementFactory` needs to be a non-arrow function, in order to\n * preserve the correct value of `this`, and the original method must be called using `origMethod.call(this, )` or `origMethod.apply(this, [])` (rather than being called directly), again to preserve `this`.\n * @returns void\n */\nexport function fill(source: { [key: string]: any }, name: string, replacementFactory: (...args: any[]) => any): void {\n if (!(name in source)) {\n return;\n }\n\n const original = source[name] as () => any;\n const wrapped = replacementFactory(original) as WrappedFunction;\n\n // Make sure it's a function first, as we need to attach an empty prototype for `defineProperties` to work\n // otherwise it'll throw \"TypeError: Object.defineProperties called on non-object\"\n if (typeof wrapped === 'function') {\n try {\n markFunctionWrapped(wrapped, original);\n } catch (_Oo) {\n // This can throw if multiple fill happens on a global object like XMLHttpRequest\n // Fixes https://github.com/getsentry/sentry-javascript/issues/2043\n }\n }\n\n source[name] = wrapped;\n}\n\n/**\n * Defines a non-enumerable property on the given object.\n *\n * @param obj The object on which to set the property\n * @param name The name of the property to be set\n * @param value The value to which to set the property\n */\nexport function addNonEnumerableProperty(obj: { [key: string]: unknown }, name: string, value: unknown): void {\n Object.defineProperty(obj, name, {\n // enumerable: false, // the default, so we can save on bundle size by not explicitly setting it\n value: value,\n writable: true,\n configurable: true,\n });\n}\n\n/**\n * Remembers the original function on the wrapped function and\n * patches up the prototype.\n *\n * @param wrapped the wrapper function\n * @param original the original function that gets wrapped\n */\nexport function markFunctionWrapped(wrapped: WrappedFunction, original: WrappedFunction): void {\n const proto = original.prototype || {};\n wrapped.prototype = original.prototype = proto;\n addNonEnumerableProperty(wrapped, '__sentry_original__', original);\n}\n\n/**\n * This extracts the original function if available. See\n * `markFunctionWrapped` for more information.\n *\n * @param func the function to unwrap\n * @returns the unwrapped version of the function if available.\n */\nexport function getOriginalFunction(func: WrappedFunction): WrappedFunction | undefined {\n return func.__sentry_original__;\n}\n\n/**\n * Encodes given object into url-friendly format\n *\n * @param object An object that contains serializable values\n * @returns string Encoded\n */\nexport function urlEncode(object: { [key: string]: any }): string {\n return Object.keys(object)\n .map(key => `${encodeURIComponent(key)}=${encodeURIComponent(object[key])}`)\n .join('&');\n}\n\n/**\n * Transforms any `Error` or `Event` into a plain object with all of their enumerable properties, and some of their\n * non-enumerable properties attached.\n *\n * @param value Initial source that we have to transform in order for it to be usable by the serializer\n * @returns An Event or Error turned into an object - or the value argurment itself, when value is neither an Event nor\n * an Error.\n */\nexport function convertToPlainObject(\n value: V,\n):\n | {\n [ownProps: string]: unknown;\n type: string;\n target: string;\n currentTarget: string;\n detail?: unknown;\n }\n | {\n [ownProps: string]: unknown;\n message: string;\n name: string;\n stack?: string;\n }\n | V {\n if (isError(value)) {\n return {\n message: value.message,\n name: value.name,\n stack: value.stack,\n ...getOwnProperties(value),\n };\n } else if (isEvent(value)) {\n const newObj: {\n [ownProps: string]: unknown;\n type: string;\n target: string;\n currentTarget: string;\n detail?: unknown;\n } = {\n type: value.type,\n target: serializeEventTarget(value.target),\n currentTarget: serializeEventTarget(value.currentTarget),\n ...getOwnProperties(value),\n };\n\n if (typeof CustomEvent !== 'undefined' && isInstanceOf(value, CustomEvent)) {\n newObj.detail = value.detail;\n }\n\n return newObj;\n } else {\n return value;\n }\n}\n\n/** Creates a string representation of the target of an `Event` object */\nfunction serializeEventTarget(target: unknown): string {\n try {\n return isElement(target) ? htmlTreeAsString(target) : Object.prototype.toString.call(target);\n } catch (_oO) {\n return '';\n }\n}\n\n/** Filters out all but an object's own properties */\nfunction getOwnProperties(obj: unknown): { [key: string]: unknown } {\n if (typeof obj === 'object' && obj !== null) {\n const extractedProps: { [key: string]: unknown } = {};\n for (const property in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, property)) {\n extractedProps[property] = (obj as Record)[property];\n }\n }\n return extractedProps;\n } else {\n return {};\n }\n}\n\n/**\n * Given any captured exception, extract its keys and create a sorted\n * and truncated list that will be used inside the event message.\n * eg. `Non-error exception captured with keys: foo, bar, baz`\n */\nexport function extractExceptionKeysForMessage(exception: Record, maxLength: number = 40): string {\n const keys = Object.keys(convertToPlainObject(exception));\n keys.sort();\n\n if (!keys.length) {\n return '[object has no keys]';\n }\n\n if (keys[0].length >= maxLength) {\n return truncate(keys[0], maxLength);\n }\n\n for (let includedKeys = keys.length; includedKeys > 0; includedKeys--) {\n const serialized = keys.slice(0, includedKeys).join(', ');\n if (serialized.length > maxLength) {\n continue;\n }\n if (includedKeys === keys.length) {\n return serialized;\n }\n return truncate(serialized, maxLength);\n }\n\n return '';\n}\n\n/**\n * Given any object, return a new object having removed all fields whose value was `undefined`.\n * Works recursively on objects and arrays.\n *\n * Attention: This function keeps circular references in the returned object.\n */\nexport function dropUndefinedKeys(inputValue: T): T {\n // This map keeps track of what already visited nodes map to.\n // Our Set - based memoBuilder doesn't work here because we want to the output object to have the same circular\n // references as the input object.\n const memoizationMap = new Map();\n\n // This function just proxies `_dropUndefinedKeys` to keep the `memoBuilder` out of this function's API\n return _dropUndefinedKeys(inputValue, memoizationMap);\n}\n\nfunction _dropUndefinedKeys(inputValue: T, memoizationMap: Map): T {\n if (isPlainObject(inputValue)) {\n // If this node has already been visited due to a circular reference, return the object it was mapped to in the new object\n const memoVal = memoizationMap.get(inputValue);\n if (memoVal !== undefined) {\n return memoVal as T;\n }\n\n const returnValue: { [key: string]: any } = {};\n // Store the mapping of this value in case we visit it again, in case of circular data\n memoizationMap.set(inputValue, returnValue);\n\n for (const key of Object.keys(inputValue)) {\n if (typeof inputValue[key] !== 'undefined') {\n returnValue[key] = _dropUndefinedKeys(inputValue[key], memoizationMap);\n }\n }\n\n return returnValue as T;\n }\n\n if (Array.isArray(inputValue)) {\n // If this node has already been visited due to a circular reference, return the array it was mapped to in the new object\n const memoVal = memoizationMap.get(inputValue);\n if (memoVal !== undefined) {\n return memoVal as T;\n }\n\n const returnValue: unknown[] = [];\n // Store the mapping of this value in case we visit it again, in case of circular data\n memoizationMap.set(inputValue, returnValue);\n\n inputValue.forEach((item: unknown) => {\n returnValue.push(_dropUndefinedKeys(item, memoizationMap));\n });\n\n return returnValue as unknown as T;\n }\n\n return inputValue;\n}\n\n/**\n * Ensure that something is an object.\n *\n * Turns `undefined` and `null` into `String`s and all other primitives into instances of their respective wrapper\n * classes (String, Boolean, Number, etc.). Acts as the identity function on non-primitives.\n *\n * @param wat The subject of the objectification\n * @returns A version of `wat` which can safely be used with `Object` class methods\n */\nexport function objectify(wat: unknown): typeof Object {\n let objectified;\n switch (true) {\n case wat === undefined || wat === null:\n objectified = new String(wat);\n break;\n\n // Though symbols and bigints do have wrapper classes (`Symbol` and `BigInt`, respectively), for whatever reason\n // those classes don't have constructors which can be used with the `new` keyword. We therefore need to cast each as\n // an object in order to wrap it.\n case typeof wat === 'symbol' || typeof wat === 'bigint':\n objectified = Object(wat);\n break;\n\n // this will catch the remaining primitives: `String`, `Number`, and `Boolean`\n case isPrimitive(wat):\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n objectified = new (wat as any).constructor(wat);\n break;\n\n // by process of elimination, at this point we know that `wat` must already be an object\n default:\n objectified = wat;\n break;\n }\n return objectified;\n}\n","import { WrappedFunction } from '@sentry/types';\n\nimport { getGlobalObject, getGlobalSingleton } from './global';\n\n// TODO: Implement different loggers for different environments\nconst global = getGlobalObject();\n\n/** Prefix for logging strings */\nconst PREFIX = 'Sentry Logger ';\n\nexport const CONSOLE_LEVELS = ['debug', 'info', 'warn', 'error', 'log', 'assert', 'trace'] as const;\n\ntype LoggerMethod = (...args: unknown[]) => void;\ntype LoggerConsoleMethods = Record;\n\n/** JSDoc */\ninterface Logger extends LoggerConsoleMethods {\n disable(): void;\n enable(): void;\n}\n\n/**\n * Temporarily disable sentry console instrumentations.\n *\n * @param callback The function to run against the original `console` messages\n * @returns The results of the callback\n */\nexport function consoleSandbox(callback: () => T): T {\n const global = getGlobalObject();\n\n if (!('console' in global)) {\n return callback();\n }\n\n const originalConsole = global.console as Console & Record;\n const wrappedLevels: Partial = {};\n\n // Restore all wrapped console methods\n CONSOLE_LEVELS.forEach(level => {\n // TODO(v7): Remove this check as it's only needed for Node 6\n const originalWrappedFunc =\n originalConsole[level] && (originalConsole[level] as WrappedFunction).__sentry_original__;\n if (level in global.console && originalWrappedFunc) {\n wrappedLevels[level] = originalConsole[level] as LoggerConsoleMethods[typeof level];\n originalConsole[level] = originalWrappedFunc as Console[typeof level];\n }\n });\n\n try {\n return callback();\n } finally {\n // Revert restoration to wrapped state\n Object.keys(wrappedLevels).forEach(level => {\n originalConsole[level] = wrappedLevels[level as typeof CONSOLE_LEVELS[number]];\n });\n }\n}\n\nfunction makeLogger(): Logger {\n let enabled = false;\n const logger: Partial = {\n enable: () => {\n enabled = true;\n },\n disable: () => {\n enabled = false;\n },\n };\n\n if (__DEBUG_BUILD__) {\n CONSOLE_LEVELS.forEach(name => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n logger[name] = (...args: any[]) => {\n if (enabled) {\n consoleSandbox(() => {\n global.console[name](`${PREFIX}[${name}]:`, ...args);\n });\n }\n };\n });\n } else {\n CONSOLE_LEVELS.forEach(name => {\n logger[name] = () => undefined;\n });\n }\n\n return logger as Logger;\n}\n\n// Ensure we only have a single logger instance, even if multiple versions of @sentry/utils are being used\nlet logger: Logger;\nif (__DEBUG_BUILD__) {\n logger = getGlobalSingleton('logger', makeLogger);\n} else {\n logger = makeLogger();\n}\n\nexport { logger };\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Event, Exception, Mechanism, StackFrame } from '@sentry/types';\n\nimport { getGlobalObject } from './global';\nimport { addNonEnumerableProperty } from './object';\nimport { snipLine } from './string';\n\n/**\n * Extended Window interface that allows for Crypto API usage in IE browsers\n */\ninterface MsCryptoWindow extends Window {\n msCrypto?: Crypto;\n}\n\n/**\n * UUID4 generator\n *\n * @returns string Generated UUID4.\n */\nexport function uuid4(): string {\n const global = getGlobalObject() as MsCryptoWindow;\n const crypto = global.crypto || global.msCrypto;\n\n if (!(crypto === void 0) && crypto.getRandomValues) {\n // Use window.crypto API if available\n const arr = new Uint16Array(8);\n crypto.getRandomValues(arr);\n\n // set 4 in byte 7\n // eslint-disable-next-line no-bitwise\n arr[3] = (arr[3] & 0xfff) | 0x4000;\n // set 2 most significant bits of byte 9 to '10'\n // eslint-disable-next-line no-bitwise\n arr[4] = (arr[4] & 0x3fff) | 0x8000;\n\n const pad = (num: number): string => {\n let v = num.toString(16);\n while (v.length < 4) {\n v = `0${v}`;\n }\n return v;\n };\n\n return (\n pad(arr[0]) + pad(arr[1]) + pad(arr[2]) + pad(arr[3]) + pad(arr[4]) + pad(arr[5]) + pad(arr[6]) + pad(arr[7])\n );\n }\n // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523\n return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, c => {\n // eslint-disable-next-line no-bitwise\n const r = (Math.random() * 16) | 0;\n // eslint-disable-next-line no-bitwise\n const v = c === 'x' ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n}\n\n/**\n * Parses string form of URL into an object\n * // borrowed from https://tools.ietf.org/html/rfc3986#appendix-B\n * // intentionally using regex and not href parsing trick because React Native and other\n * // environments where DOM might not be available\n * @returns parsed URL object\n */\nexport function parseUrl(url: string): {\n host?: string;\n path?: string;\n protocol?: string;\n relative?: string;\n} {\n if (!url) {\n return {};\n }\n\n const match = url.match(/^(([^:/?#]+):)?(\\/\\/([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?$/);\n\n if (!match) {\n return {};\n }\n\n // coerce to undefined values to empty string so we don't get 'undefined'\n const query = match[6] || '';\n const fragment = match[8] || '';\n return {\n host: match[4],\n path: match[5],\n protocol: match[2],\n relative: match[5] + query + fragment, // everything minus origin\n };\n}\n\nfunction getFirstException(event: Event): Exception | undefined {\n return event.exception && event.exception.values ? event.exception.values[0] : undefined;\n}\n\n/**\n * Extracts either message or type+value from an event that can be used for user-facing logs\n * @returns event's description\n */\nexport function getEventDescription(event: Event): string {\n const { message, event_id: eventId } = event;\n if (message) {\n return message;\n }\n\n const firstException = getFirstException(event);\n if (firstException) {\n if (firstException.type && firstException.value) {\n return `${firstException.type}: ${firstException.value}`;\n }\n return firstException.type || firstException.value || eventId || '';\n }\n return eventId || '';\n}\n\n/**\n * Adds exception values, type and value to an synthetic Exception.\n * @param event The event to modify.\n * @param value Value of the exception.\n * @param type Type of the exception.\n * @hidden\n */\nexport function addExceptionTypeValue(event: Event, value?: string, type?: string): void {\n const exception = (event.exception = event.exception || {});\n const values = (exception.values = exception.values || []);\n const firstException = (values[0] = values[0] || {});\n if (!firstException.value) {\n firstException.value = value || '';\n }\n if (!firstException.type) {\n firstException.type = type || 'Error';\n }\n}\n\n/**\n * Adds exception mechanism data to a given event. Uses defaults if the second parameter is not passed.\n *\n * @param event The event to modify.\n * @param newMechanism Mechanism data to add to the event.\n * @hidden\n */\nexport function addExceptionMechanism(event: Event, newMechanism?: Partial): void {\n const firstException = getFirstException(event);\n if (!firstException) {\n return;\n }\n\n const defaultMechanism = { type: 'generic', handled: true };\n const currentMechanism = firstException.mechanism;\n firstException.mechanism = { ...defaultMechanism, ...currentMechanism, ...newMechanism };\n\n if (newMechanism && 'data' in newMechanism) {\n const mergedData = { ...(currentMechanism && currentMechanism.data), ...newMechanism.data };\n firstException.mechanism.data = mergedData;\n }\n}\n\n// https://semver.org/#is-there-a-suggested-regular-expression-regex-to-check-a-semver-string\nconst SEMVER_REGEXP =\n /^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$/;\n\n/**\n * Represents Semantic Versioning object\n */\ninterface SemVer {\n major?: number;\n minor?: number;\n patch?: number;\n prerelease?: string;\n buildmetadata?: string;\n}\n\n/**\n * Parses input into a SemVer interface\n * @param input string representation of a semver version\n */\nexport function parseSemver(input: string): SemVer {\n const match = input.match(SEMVER_REGEXP) || [];\n const major = parseInt(match[1], 10);\n const minor = parseInt(match[2], 10);\n const patch = parseInt(match[3], 10);\n return {\n buildmetadata: match[5],\n major: isNaN(major) ? undefined : major,\n minor: isNaN(minor) ? undefined : minor,\n patch: isNaN(patch) ? undefined : patch,\n prerelease: match[4],\n };\n}\n\n/**\n * This function adds context (pre/post/line) lines to the provided frame\n *\n * @param lines string[] containing all lines\n * @param frame StackFrame that will be mutated\n * @param linesOfContext number of context lines we want to add pre/post\n */\nexport function addContextToFrame(lines: string[], frame: StackFrame, linesOfContext: number = 5): void {\n const lineno = frame.lineno || 0;\n const maxLines = lines.length;\n const sourceLine = Math.max(Math.min(maxLines, lineno - 1), 0);\n\n frame.pre_context = lines\n .slice(Math.max(0, sourceLine - linesOfContext), sourceLine)\n .map((line: string) => snipLine(line, 0));\n\n frame.context_line = snipLine(lines[Math.min(maxLines - 1, sourceLine)], frame.colno || 0);\n\n frame.post_context = lines\n .slice(Math.min(sourceLine + 1, maxLines), sourceLine + 1 + linesOfContext)\n .map((line: string) => snipLine(line, 0));\n}\n\n/**\n * Strip the query string and fragment off of a given URL or path (if present)\n *\n * @param urlPath Full URL or path, including possible query string and/or fragment\n * @returns URL or path without query string or fragment\n */\nexport function stripUrlQueryAndFragment(urlPath: string): string {\n // eslint-disable-next-line no-useless-escape\n return urlPath.split(/[\\?#]/, 1)[0];\n}\n\n/**\n * Checks whether or not we've already captured the given exception (note: not an identical exception - the very object\n * in question), and marks it captured if not.\n *\n * This is useful because it's possible for an error to get captured by more than one mechanism. After we intercept and\n * record an error, we rethrow it (assuming we've intercepted it before it's reached the top-level global handlers), so\n * that we don't interfere with whatever effects the error might have had were the SDK not there. At that point, because\n * the error has been rethrown, it's possible for it to bubble up to some other code we've instrumented. If it's not\n * caught after that, it will bubble all the way up to the global handlers (which of course we also instrument). This\n * function helps us ensure that even if we encounter the same error more than once, we only record it the first time we\n * see it.\n *\n * Note: It will ignore primitives (always return `false` and not mark them as seen), as properties can't be set on\n * them. {@link: Object.objectify} can be used on exceptions to convert any that are primitives into their equivalent\n * object wrapper forms so that this check will always work. However, because we need to flag the exact object which\n * will get rethrown, and because that rethrowing happens outside of the event processing pipeline, the objectification\n * must be done before the exception captured.\n *\n * @param A thrown exception to check or flag as having been seen\n * @returns `true` if the exception has already been captured, `false` if not (with the side effect of marking it seen)\n */\nexport function checkOrSetAlreadyCaught(exception: unknown): boolean {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (exception && (exception as any).__sentry_captured__) {\n return true;\n }\n\n try {\n // set it this way rather than by assignment so that it's not ennumerable and therefore isn't recorded by the\n // `ExtraErrorData` integration\n addNonEnumerableProperty(exception as { [key: string]: unknown }, '__sentry_captured__', true);\n } catch (err) {\n // `exception` is a primitive, so we can't mark it seen\n }\n\n return false;\n}\n","import { Event, EventProcessor, Hub, Integration, StackFrame } from '@sentry/types';\nimport { getEventDescription, isMatchingPattern, logger } from '@sentry/utils';\n\n// \"Script error.\" is hard coded into browsers for errors that it can't read.\n// this is the result of a script being pulled in from an external domain and CORS.\nconst DEFAULT_IGNORE_ERRORS = [/^Script error\\.?$/, /^Javascript error: Script error\\.? on line 0$/];\n\n/** Options for the InboundFilters integration */\nexport interface InboundFiltersOptions {\n allowUrls: Array;\n denyUrls: Array;\n ignoreErrors: Array;\n ignoreInternal: boolean;\n}\n\n/** Inbound filters configurable by the user */\nexport class InboundFilters implements Integration {\n /**\n * @inheritDoc\n */\n public static id: string = 'InboundFilters';\n\n /**\n * @inheritDoc\n */\n public name: string = InboundFilters.id;\n\n public constructor(private readonly _options: Partial = {}) {}\n\n /**\n * @inheritDoc\n */\n public setupOnce(addGlobalEventProcessor: (processor: EventProcessor) => void, getCurrentHub: () => Hub): void {\n const eventProcess: EventProcessor = (event: Event) => {\n const hub = getCurrentHub();\n if (hub) {\n const self = hub.getIntegration(InboundFilters);\n if (self) {\n const client = hub.getClient();\n const clientOptions = client ? client.getOptions() : {};\n const options = _mergeOptions(self._options, clientOptions);\n return _shouldDropEvent(event, options) ? null : event;\n }\n }\n return event;\n };\n\n eventProcess.id = this.name;\n addGlobalEventProcessor(eventProcess);\n }\n}\n\n/** JSDoc */\nexport function _mergeOptions(\n internalOptions: Partial = {},\n clientOptions: Partial = {},\n): Partial {\n return {\n allowUrls: [...(internalOptions.allowUrls || []), ...(clientOptions.allowUrls || [])],\n denyUrls: [...(internalOptions.denyUrls || []), ...(clientOptions.denyUrls || [])],\n ignoreErrors: [\n ...(internalOptions.ignoreErrors || []),\n ...(clientOptions.ignoreErrors || []),\n ...DEFAULT_IGNORE_ERRORS,\n ],\n ignoreInternal: internalOptions.ignoreInternal !== undefined ? internalOptions.ignoreInternal : true,\n };\n}\n\n/** JSDoc */\nexport function _shouldDropEvent(event: Event, options: Partial): boolean {\n if (options.ignoreInternal && _isSentryError(event)) {\n __DEBUG_BUILD__ &&\n logger.warn(`Event dropped due to being internal Sentry Error.\\nEvent: ${getEventDescription(event)}`);\n return true;\n }\n if (_isIgnoredError(event, options.ignoreErrors)) {\n __DEBUG_BUILD__ &&\n logger.warn(\n `Event dropped due to being matched by \\`ignoreErrors\\` option.\\nEvent: ${getEventDescription(event)}`,\n );\n return true;\n }\n if (_isDeniedUrl(event, options.denyUrls)) {\n __DEBUG_BUILD__ &&\n logger.warn(\n `Event dropped due to being matched by \\`denyUrls\\` option.\\nEvent: ${getEventDescription(\n event,\n )}.\\nUrl: ${_getEventFilterUrl(event)}`,\n );\n return true;\n }\n if (!_isAllowedUrl(event, options.allowUrls)) {\n __DEBUG_BUILD__ &&\n logger.warn(\n `Event dropped due to not being matched by \\`allowUrls\\` option.\\nEvent: ${getEventDescription(\n event,\n )}.\\nUrl: ${_getEventFilterUrl(event)}`,\n );\n return true;\n }\n return false;\n}\n\nfunction _isIgnoredError(event: Event, ignoreErrors?: Array): boolean {\n if (!ignoreErrors || !ignoreErrors.length) {\n return false;\n }\n\n return _getPossibleEventMessages(event).some(message =>\n ignoreErrors.some(pattern => isMatchingPattern(message, pattern)),\n );\n}\n\nfunction _isDeniedUrl(event: Event, denyUrls?: Array): boolean {\n // TODO: Use Glob instead?\n if (!denyUrls || !denyUrls.length) {\n return false;\n }\n const url = _getEventFilterUrl(event);\n return !url ? false : denyUrls.some(pattern => isMatchingPattern(url, pattern));\n}\n\nfunction _isAllowedUrl(event: Event, allowUrls?: Array): boolean {\n // TODO: Use Glob instead?\n if (!allowUrls || !allowUrls.length) {\n return true;\n }\n const url = _getEventFilterUrl(event);\n return !url ? true : allowUrls.some(pattern => isMatchingPattern(url, pattern));\n}\n\nfunction _getPossibleEventMessages(event: Event): string[] {\n if (event.message) {\n return [event.message];\n }\n if (event.exception) {\n try {\n const { type = '', value = '' } = (event.exception.values && event.exception.values[0]) || {};\n return [`${value}`, `${type}: ${value}`];\n } catch (oO) {\n __DEBUG_BUILD__ && logger.error(`Cannot extract message for event ${getEventDescription(event)}`);\n return [];\n }\n }\n return [];\n}\n\nfunction _isSentryError(event: Event): boolean {\n try {\n // @ts-ignore can't be a sentry error if undefined\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return event.exception.values[0].type === 'SentryError';\n } catch (e) {\n // ignore\n }\n return false;\n}\n\nfunction _getLastValidUrl(frames: StackFrame[] = []): string | null {\n for (let i = frames.length - 1; i >= 0; i--) {\n const frame = frames[i];\n\n if (frame && frame.filename !== '' && frame.filename !== '[native code]') {\n return frame.filename || null;\n }\n }\n\n return null;\n}\n\nfunction _getEventFilterUrl(event: Event): string | null {\n try {\n let frames;\n try {\n // @ts-ignore we only care about frames if the whole thing here is defined\n frames = event.exception.values[0].stacktrace.frames;\n } catch (e) {\n // ignore\n }\n return frames ? _getLastValidUrl(frames) : null;\n } catch (oO) {\n __DEBUG_BUILD__ && logger.error(`Cannot extract url for event ${getEventDescription(event)}`);\n return null;\n }\n}\n","/* eslint-disable @typescript-eslint/explicit-function-return-type */\n/* eslint-disable @typescript-eslint/typedef */\n/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { isThenable } from './is';\n\n/** SyncPromise internal states */\nconst enum States {\n /** Pending */\n PENDING = 0,\n /** Resolved / OK */\n RESOLVED = 1,\n /** Rejected / Error */\n REJECTED = 2,\n}\n\n// Overloads so we can call resolvedSyncPromise without arguments and generic argument\nexport function resolvedSyncPromise(): PromiseLike;\nexport function resolvedSyncPromise(value: T | PromiseLike): PromiseLike;\n\n/**\n * Creates a resolved sync promise.\n *\n * @param value the value to resolve the promise with\n * @returns the resolved sync promise\n */\nexport function resolvedSyncPromise(value?: T | PromiseLike): PromiseLike {\n return new SyncPromise(resolve => {\n resolve(value);\n });\n}\n\n/**\n * Creates a rejected sync promise.\n *\n * @param value the value to reject the promise with\n * @returns the rejected sync promise\n */\nexport function rejectedSyncPromise(reason?: any): PromiseLike {\n return new SyncPromise((_, reject) => {\n reject(reason);\n });\n}\n\n/**\n * Thenable class that behaves like a Promise and follows it's interface\n * but is not async internally\n */\nclass SyncPromise implements PromiseLike {\n private _state: States = States.PENDING;\n private _handlers: Array<[boolean, (value: T) => void, (reason: any) => any]> = [];\n private _value: any;\n\n public constructor(\n executor: (resolve: (value?: T | PromiseLike | null) => void, reject: (reason?: any) => void) => void,\n ) {\n try {\n executor(this._resolve, this._reject);\n } catch (e) {\n this._reject(e);\n }\n }\n\n /** JSDoc */\n public then(\n onfulfilled?: ((value: T) => TResult1 | PromiseLike) | null,\n onrejected?: ((reason: any) => TResult2 | PromiseLike) | null,\n ): PromiseLike {\n return new SyncPromise((resolve, reject) => {\n this._handlers.push([\n false,\n result => {\n if (!onfulfilled) {\n // TODO: ¯\\_(ツ)_/¯\n // TODO: FIXME\n resolve(result as any);\n } else {\n try {\n resolve(onfulfilled(result));\n } catch (e) {\n reject(e);\n }\n }\n },\n reason => {\n if (!onrejected) {\n reject(reason);\n } else {\n try {\n resolve(onrejected(reason));\n } catch (e) {\n reject(e);\n }\n }\n },\n ]);\n this._executeHandlers();\n });\n }\n\n /** JSDoc */\n public catch(\n onrejected?: ((reason: any) => TResult | PromiseLike) | null,\n ): PromiseLike {\n return this.then(val => val, onrejected);\n }\n\n /** JSDoc */\n public finally(onfinally?: (() => void) | null): PromiseLike {\n return new SyncPromise((resolve, reject) => {\n let val: TResult | any;\n let isRejected: boolean;\n\n return this.then(\n value => {\n isRejected = false;\n val = value;\n if (onfinally) {\n onfinally();\n }\n },\n reason => {\n isRejected = true;\n val = reason;\n if (onfinally) {\n onfinally();\n }\n },\n ).then(() => {\n if (isRejected) {\n reject(val);\n return;\n }\n\n resolve(val as unknown as any);\n });\n });\n }\n\n /** JSDoc */\n private readonly _resolve = (value?: T | PromiseLike | null) => {\n this._setResult(States.RESOLVED, value);\n };\n\n /** JSDoc */\n private readonly _reject = (reason?: any) => {\n this._setResult(States.REJECTED, reason);\n };\n\n /** JSDoc */\n private readonly _setResult = (state: States, value?: T | PromiseLike | any) => {\n if (this._state !== States.PENDING) {\n return;\n }\n\n if (isThenable(value)) {\n void (value as PromiseLike).then(this._resolve, this._reject);\n return;\n }\n\n this._state = state;\n this._value = value;\n\n this._executeHandlers();\n };\n\n /** JSDoc */\n private readonly _executeHandlers = () => {\n if (this._state === States.PENDING) {\n return;\n }\n\n const cachedHandlers = this._handlers.slice();\n this._handlers = [];\n\n cachedHandlers.forEach(handler => {\n if (handler[0]) {\n return;\n }\n\n if (this._state === States.RESOLVED) {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n handler[1](this._value as unknown as any);\n }\n\n if (this._state === States.REJECTED) {\n handler[2](this._value);\n }\n\n handler[0] = true;\n });\n };\n}\n\nexport { SyncPromise };\n","import { SerializedSession, Session, SessionContext, SessionStatus } from '@sentry/types';\nimport { dropUndefinedKeys, timestampInSeconds, uuid4 } from '@sentry/utils';\n\n/**\n * Creates a new `Session` object by setting certain default parameters. If optional @param context\n * is passed, the passed properties are applied to the session object.\n *\n * @param context (optional) additional properties to be applied to the returned session object\n *\n * @returns a new `Session` object\n */\nexport function makeSession(context?: Omit): Session {\n // Both timestamp and started are in seconds since the UNIX epoch.\n const startingTime = timestampInSeconds();\n\n const session: Session = {\n sid: uuid4(),\n init: true,\n timestamp: startingTime,\n started: startingTime,\n duration: 0,\n status: 'ok',\n errors: 0,\n ignoreDuration: false,\n toJSON: () => sessionToJSON(session),\n };\n\n if (context) {\n updateSession(session, context);\n }\n\n return session;\n}\n\n/**\n * Updates a session object with the properties passed in the context.\n *\n * Note that this function mutates the passed object and returns void.\n * (Had to do this instead of returning a new and updated session because closing and sending a session\n * makes an update to the session after it was passed to the sending logic.\n * @see BaseClient.captureSession )\n *\n * @param session the `Session` to update\n * @param context the `SessionContext` holding the properties that should be updated in @param session\n */\n// eslint-disable-next-line complexity\nexport function updateSession(session: Session, context: SessionContext = {}): void {\n if (context.user) {\n if (!session.ipAddress && context.user.ip_address) {\n session.ipAddress = context.user.ip_address;\n }\n\n if (!session.did && !context.did) {\n session.did = context.user.id || context.user.email || context.user.username;\n }\n }\n\n session.timestamp = context.timestamp || timestampInSeconds();\n\n if (context.ignoreDuration) {\n session.ignoreDuration = context.ignoreDuration;\n }\n if (context.sid) {\n // Good enough uuid validation. — Kamil\n session.sid = context.sid.length === 32 ? context.sid : uuid4();\n }\n if (context.init !== undefined) {\n session.init = context.init;\n }\n if (!session.did && context.did) {\n session.did = `${context.did}`;\n }\n if (typeof context.started === 'number') {\n session.started = context.started;\n }\n if (session.ignoreDuration) {\n session.duration = undefined;\n } else if (typeof context.duration === 'number') {\n session.duration = context.duration;\n } else {\n const duration = session.timestamp - session.started;\n session.duration = duration >= 0 ? duration : 0;\n }\n if (context.release) {\n session.release = context.release;\n }\n if (context.environment) {\n session.environment = context.environment;\n }\n if (!session.ipAddress && context.ipAddress) {\n session.ipAddress = context.ipAddress;\n }\n if (!session.userAgent && context.userAgent) {\n session.userAgent = context.userAgent;\n }\n if (typeof context.errors === 'number') {\n session.errors = context.errors;\n }\n if (context.status) {\n session.status = context.status;\n }\n}\n\n/**\n * Closes a session by setting its status and updating the session object with it.\n * Internally calls `updateSession` to update the passed session object.\n *\n * Note that this function mutates the passed session (@see updateSession for explanation).\n *\n * @param session the `Session` object to be closed\n * @param status the `SessionStatus` with which the session was closed. If you don't pass a status,\n * this function will keep the previously set status, unless it was `'ok'` in which case\n * it is changed to `'exited'`.\n */\nexport function closeSession(session: Session, status?: Exclude): void {\n let context = {};\n if (status) {\n context = { status };\n } else if (session.status === 'ok') {\n context = { status: 'exited' };\n }\n\n updateSession(session, context);\n}\n\n/**\n * Serializes a passed session object to a JSON object with a slightly different structure.\n * This is necessary because the Sentry backend requires a slightly different schema of a session\n * than the one the JS SDKs use internally.\n *\n * @param session the session to be converted\n *\n * @returns a JSON object of the passed session\n */\nfunction sessionToJSON(session: Session): SerializedSession {\n return dropUndefinedKeys({\n sid: `${session.sid}`,\n init: session.init,\n // Make sure that sec is converted to ms for date constructor\n started: new Date(session.started * 1000).toISOString(),\n timestamp: new Date(session.timestamp * 1000).toISOString(),\n status: session.status,\n errors: session.errors,\n did: typeof session.did === 'number' || typeof session.did === 'string' ? `${session.did}` : undefined,\n duration: session.duration,\n attrs: {\n release: session.release,\n environment: session.environment,\n ip_address: session.ipAddress,\n user_agent: session.userAgent,\n },\n });\n}\n","/* eslint-disable max-lines */\nimport {\n Attachment,\n Breadcrumb,\n CaptureContext,\n Context,\n Contexts,\n Event,\n EventHint,\n EventProcessor,\n Extra,\n Extras,\n Primitive,\n RequestSession,\n Scope as ScopeInterface,\n ScopeContext,\n Session,\n Severity,\n SeverityLevel,\n Span,\n Transaction,\n User,\n} from '@sentry/types';\nimport {\n dateTimestampInSeconds,\n getGlobalSingleton,\n isPlainObject,\n isThenable,\n logger,\n SyncPromise,\n} from '@sentry/utils';\n\nimport { updateSession } from './session';\n\n/**\n * Absolute maximum number of breadcrumbs added to an event.\n * The `maxBreadcrumbs` option cannot be higher than this value.\n */\nconst MAX_BREADCRUMBS = 100;\n\n/**\n * Holds additional event information. {@link Scope.applyToEvent} will be\n * called by the client before an event will be sent.\n */\nexport class Scope implements ScopeInterface {\n /** Flag if notifying is happening. */\n protected _notifyingListeners: boolean;\n\n /** Callback for client to receive scope changes. */\n protected _scopeListeners: Array<(scope: Scope) => void>;\n\n /** Callback list that will be called after {@link applyToEvent}. */\n protected _eventProcessors: EventProcessor[];\n\n /** Array of breadcrumbs. */\n protected _breadcrumbs: Breadcrumb[];\n\n /** User */\n protected _user: User;\n\n /** Tags */\n protected _tags: { [key: string]: Primitive };\n\n /** Extra */\n protected _extra: Extras;\n\n /** Contexts */\n protected _contexts: Contexts;\n\n /** Attachments */\n protected _attachments: Attachment[];\n\n /**\n * A place to stash data which is needed at some point in the SDK's event processing pipeline but which shouldn't get\n * sent to Sentry\n */\n protected _sdkProcessingMetadata: { [key: string]: unknown };\n\n /** Fingerprint */\n protected _fingerprint?: string[];\n\n /** Severity */\n // eslint-disable-next-line deprecation/deprecation\n protected _level?: Severity | SeverityLevel;\n\n /** Transaction Name */\n protected _transactionName?: string;\n\n /** Span */\n protected _span?: Span;\n\n /** Session */\n protected _session?: Session;\n\n /** Request Mode Session Status */\n protected _requestSession?: RequestSession;\n\n public constructor() {\n this._notifyingListeners = false;\n this._scopeListeners = [];\n this._eventProcessors = [];\n this._breadcrumbs = [];\n this._attachments = [];\n this._user = {};\n this._tags = {};\n this._extra = {};\n this._contexts = {};\n this._sdkProcessingMetadata = {};\n }\n\n /**\n * Inherit values from the parent scope.\n * @param scope to clone.\n */\n public static clone(scope?: Scope): Scope {\n const newScope = new Scope();\n if (scope) {\n newScope._breadcrumbs = [...scope._breadcrumbs];\n newScope._tags = { ...scope._tags };\n newScope._extra = { ...scope._extra };\n newScope._contexts = { ...scope._contexts };\n newScope._user = scope._user;\n newScope._level = scope._level;\n newScope._span = scope._span;\n newScope._session = scope._session;\n newScope._transactionName = scope._transactionName;\n newScope._fingerprint = scope._fingerprint;\n newScope._eventProcessors = [...scope._eventProcessors];\n newScope._requestSession = scope._requestSession;\n newScope._attachments = [...scope._attachments];\n }\n return newScope;\n }\n\n /**\n * Add internal on change listener. Used for sub SDKs that need to store the scope.\n * @hidden\n */\n public addScopeListener(callback: (scope: Scope) => void): void {\n this._scopeListeners.push(callback);\n }\n\n /**\n * @inheritDoc\n */\n public addEventProcessor(callback: EventProcessor): this {\n this._eventProcessors.push(callback);\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setUser(user: User | null): this {\n this._user = user || {};\n if (this._session) {\n updateSession(this._session, { user });\n }\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public getUser(): User | undefined {\n return this._user;\n }\n\n /**\n * @inheritDoc\n */\n public getRequestSession(): RequestSession | undefined {\n return this._requestSession;\n }\n\n /**\n * @inheritDoc\n */\n public setRequestSession(requestSession?: RequestSession): this {\n this._requestSession = requestSession;\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setTags(tags: { [key: string]: Primitive }): this {\n this._tags = {\n ...this._tags,\n ...tags,\n };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setTag(key: string, value: Primitive): this {\n this._tags = { ...this._tags, [key]: value };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setExtras(extras: Extras): this {\n this._extra = {\n ...this._extra,\n ...extras,\n };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setExtra(key: string, extra: Extra): this {\n this._extra = { ...this._extra, [key]: extra };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setFingerprint(fingerprint: string[]): this {\n this._fingerprint = fingerprint;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setLevel(\n // eslint-disable-next-line deprecation/deprecation\n level: Severity | SeverityLevel,\n ): this {\n this._level = level;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setTransactionName(name?: string): this {\n this._transactionName = name;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setContext(key: string, context: Context | null): this {\n if (context === null) {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this._contexts[key];\n } else {\n this._contexts = { ...this._contexts, [key]: context };\n }\n\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setSpan(span?: Span): this {\n this._span = span;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public getSpan(): Span | undefined {\n return this._span;\n }\n\n /**\n * @inheritDoc\n */\n public getTransaction(): Transaction | undefined {\n // Often, this span (if it exists at all) will be a transaction, but it's not guaranteed to be. Regardless, it will\n // have a pointer to the currently-active transaction.\n const span = this.getSpan();\n return span && span.transaction;\n }\n\n /**\n * @inheritDoc\n */\n public setSession(session?: Session): this {\n if (!session) {\n delete this._session;\n } else {\n this._session = session;\n }\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public getSession(): Session | undefined {\n return this._session;\n }\n\n /**\n * @inheritDoc\n */\n public update(captureContext?: CaptureContext): this {\n if (!captureContext) {\n return this;\n }\n\n if (typeof captureContext === 'function') {\n const updatedScope = (captureContext as (scope: T) => T)(this);\n return updatedScope instanceof Scope ? updatedScope : this;\n }\n\n if (captureContext instanceof Scope) {\n this._tags = { ...this._tags, ...captureContext._tags };\n this._extra = { ...this._extra, ...captureContext._extra };\n this._contexts = { ...this._contexts, ...captureContext._contexts };\n if (captureContext._user && Object.keys(captureContext._user).length) {\n this._user = captureContext._user;\n }\n if (captureContext._level) {\n this._level = captureContext._level;\n }\n if (captureContext._fingerprint) {\n this._fingerprint = captureContext._fingerprint;\n }\n if (captureContext._requestSession) {\n this._requestSession = captureContext._requestSession;\n }\n } else if (isPlainObject(captureContext)) {\n // eslint-disable-next-line no-param-reassign\n captureContext = captureContext as ScopeContext;\n this._tags = { ...this._tags, ...captureContext.tags };\n this._extra = { ...this._extra, ...captureContext.extra };\n this._contexts = { ...this._contexts, ...captureContext.contexts };\n if (captureContext.user) {\n this._user = captureContext.user;\n }\n if (captureContext.level) {\n this._level = captureContext.level;\n }\n if (captureContext.fingerprint) {\n this._fingerprint = captureContext.fingerprint;\n }\n if (captureContext.requestSession) {\n this._requestSession = captureContext.requestSession;\n }\n }\n\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public clear(): this {\n this._breadcrumbs = [];\n this._tags = {};\n this._extra = {};\n this._user = {};\n this._contexts = {};\n this._level = undefined;\n this._transactionName = undefined;\n this._fingerprint = undefined;\n this._requestSession = undefined;\n this._span = undefined;\n this._session = undefined;\n this._notifyScopeListeners();\n this._attachments = [];\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public addBreadcrumb(breadcrumb: Breadcrumb, maxBreadcrumbs?: number): this {\n const maxCrumbs = typeof maxBreadcrumbs === 'number' ? Math.min(maxBreadcrumbs, MAX_BREADCRUMBS) : MAX_BREADCRUMBS;\n\n // No data has been changed, so don't notify scope listeners\n if (maxCrumbs <= 0) {\n return this;\n }\n\n const mergedBreadcrumb = {\n timestamp: dateTimestampInSeconds(),\n ...breadcrumb,\n };\n this._breadcrumbs = [...this._breadcrumbs, mergedBreadcrumb].slice(-maxCrumbs);\n this._notifyScopeListeners();\n\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public clearBreadcrumbs(): this {\n this._breadcrumbs = [];\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public addAttachment(attachment: Attachment): this {\n this._attachments.push(attachment);\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public getAttachments(): Attachment[] {\n return this._attachments;\n }\n\n /**\n * @inheritDoc\n */\n public clearAttachments(): this {\n this._attachments = [];\n return this;\n }\n\n /**\n * Applies the current context and fingerprint to the event.\n * Note that breadcrumbs will be added by the client.\n * Also if the event has already breadcrumbs on it, we do not merge them.\n * @param event Event\n * @param hint May contain additional information about the original exception.\n * @hidden\n */\n public applyToEvent(event: Event, hint: EventHint = {}): PromiseLike {\n if (this._extra && Object.keys(this._extra).length) {\n event.extra = { ...this._extra, ...event.extra };\n }\n if (this._tags && Object.keys(this._tags).length) {\n event.tags = { ...this._tags, ...event.tags };\n }\n if (this._user && Object.keys(this._user).length) {\n event.user = { ...this._user, ...event.user };\n }\n if (this._contexts && Object.keys(this._contexts).length) {\n event.contexts = { ...this._contexts, ...event.contexts };\n }\n if (this._level) {\n event.level = this._level;\n }\n if (this._transactionName) {\n event.transaction = this._transactionName;\n }\n\n // We want to set the trace context for normal events only if there isn't already\n // a trace context on the event. There is a product feature in place where we link\n // errors with transaction and it relies on that.\n if (this._span) {\n event.contexts = { trace: this._span.getTraceContext(), ...event.contexts };\n const transactionName = this._span.transaction && this._span.transaction.name;\n if (transactionName) {\n event.tags = { transaction: transactionName, ...event.tags };\n }\n }\n\n this._applyFingerprint(event);\n\n event.breadcrumbs = [...(event.breadcrumbs || []), ...this._breadcrumbs];\n event.breadcrumbs = event.breadcrumbs.length > 0 ? event.breadcrumbs : undefined;\n\n event.sdkProcessingMetadata = { ...event.sdkProcessingMetadata, ...this._sdkProcessingMetadata };\n\n return this._notifyEventProcessors([...getGlobalEventProcessors(), ...this._eventProcessors], event, hint);\n }\n\n /**\n * Add data which will be accessible during event processing but won't get sent to Sentry\n */\n public setSDKProcessingMetadata(newData: { [key: string]: unknown }): this {\n this._sdkProcessingMetadata = { ...this._sdkProcessingMetadata, ...newData };\n\n return this;\n }\n\n /**\n * This will be called after {@link applyToEvent} is finished.\n */\n protected _notifyEventProcessors(\n processors: EventProcessor[],\n event: Event | null,\n hint: EventHint,\n index: number = 0,\n ): PromiseLike {\n return new SyncPromise((resolve, reject) => {\n const processor = processors[index];\n if (event === null || typeof processor !== 'function') {\n resolve(event);\n } else {\n const result = processor({ ...event }, hint) as Event | null;\n\n __DEBUG_BUILD__ &&\n processor.id &&\n result === null &&\n logger.log(`Event processor \"${processor.id}\" dropped event`);\n\n if (isThenable(result)) {\n void result\n .then(final => this._notifyEventProcessors(processors, final, hint, index + 1).then(resolve))\n .then(null, reject);\n } else {\n void this._notifyEventProcessors(processors, result, hint, index + 1)\n .then(resolve)\n .then(null, reject);\n }\n }\n });\n }\n\n /**\n * This will be called on every set call.\n */\n protected _notifyScopeListeners(): void {\n // We need this check for this._notifyingListeners to be able to work on scope during updates\n // If this check is not here we'll produce endless recursion when something is done with the scope\n // during the callback.\n if (!this._notifyingListeners) {\n this._notifyingListeners = true;\n this._scopeListeners.forEach(callback => {\n callback(this);\n });\n this._notifyingListeners = false;\n }\n }\n\n /**\n * Applies fingerprint from the scope to the event if there's one,\n * uses message if there's one instead or get rid of empty fingerprint\n */\n private _applyFingerprint(event: Event): void {\n // Make sure it's an array first and we actually have something in place\n event.fingerprint = event.fingerprint\n ? Array.isArray(event.fingerprint)\n ? event.fingerprint\n : [event.fingerprint]\n : [];\n\n // If we have something on the scope, then merge it with event\n if (this._fingerprint) {\n event.fingerprint = event.fingerprint.concat(this._fingerprint);\n }\n\n // If we have no data at all, remove empty array default\n if (event.fingerprint && !event.fingerprint.length) {\n delete event.fingerprint;\n }\n }\n}\n\n/**\n * Returns the global event processors.\n */\nfunction getGlobalEventProcessors(): EventProcessor[] {\n return getGlobalSingleton('globalEventProcessors', () => []);\n}\n\n/**\n * Add a EventProcessor to be kept globally.\n * @param callback EventProcessor to add\n */\nexport function addGlobalEventProcessor(callback: EventProcessor): void {\n getGlobalEventProcessors().push(callback);\n}\n","/* eslint-disable max-lines */\nimport {\n Breadcrumb,\n BreadcrumbHint,\n Client,\n CustomSamplingContext,\n Event,\n EventHint,\n Extra,\n Extras,\n Hub as HubInterface,\n Integration,\n IntegrationClass,\n Primitive,\n Session,\n SessionContext,\n Severity,\n SeverityLevel,\n Transaction,\n TransactionContext,\n User,\n} from '@sentry/types';\nimport {\n consoleSandbox,\n dateTimestampInSeconds,\n getGlobalObject,\n getGlobalSingleton,\n isNodeEnv,\n logger,\n uuid4,\n} from '@sentry/utils';\n\nimport { Scope } from './scope';\nimport { closeSession, makeSession, updateSession } from './session';\n\n/**\n * API compatibility version of this hub.\n *\n * WARNING: This number should only be increased when the global interface\n * changes and new methods are introduced.\n *\n * @hidden\n */\nexport const API_VERSION = 4;\n\n/**\n * Default maximum number of breadcrumbs added to an event. Can be overwritten\n * with {@link Options.maxBreadcrumbs}.\n */\nconst DEFAULT_BREADCRUMBS = 100;\n\n/**\n * A layer in the process stack.\n * @hidden\n */\nexport interface Layer {\n client?: Client;\n scope?: Scope;\n}\n\n/**\n * An object that contains a hub and maintains a scope stack.\n * @hidden\n */\nexport interface Carrier {\n __SENTRY__?: {\n hub?: Hub;\n /**\n * Extra Hub properties injected by various SDKs\n */\n integrations?: Integration[];\n extensions?: {\n /** Hack to prevent bundlers from breaking our usage of the domain package in the cross-platform Hub package */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n domain?: { [key: string]: any };\n } & {\n /** Extension methods for the hub, which are bound to the current Hub instance */\n // eslint-disable-next-line @typescript-eslint/ban-types\n [key: string]: Function;\n };\n };\n}\n\n/**\n * @inheritDoc\n */\nexport class Hub implements HubInterface {\n /** Is a {@link Layer}[] containing the client and scope */\n private readonly _stack: Layer[] = [{}];\n\n /** Contains the last event id of a captured event. */\n private _lastEventId?: string;\n\n /**\n * Creates a new instance of the hub, will push one {@link Layer} into the\n * internal stack on creation.\n *\n * @param client bound to the hub.\n * @param scope bound to the hub.\n * @param version number, higher number means higher priority.\n */\n public constructor(client?: Client, scope: Scope = new Scope(), private readonly _version: number = API_VERSION) {\n this.getStackTop().scope = scope;\n if (client) {\n this.bindClient(client);\n }\n }\n\n /**\n * @inheritDoc\n */\n public isOlderThan(version: number): boolean {\n return this._version < version;\n }\n\n /**\n * @inheritDoc\n */\n public bindClient(client?: Client): void {\n const top = this.getStackTop();\n top.client = client;\n if (client && client.setupIntegrations) {\n client.setupIntegrations();\n }\n }\n\n /**\n * @inheritDoc\n */\n public pushScope(): Scope {\n // We want to clone the content of prev scope\n const scope = Scope.clone(this.getScope());\n this.getStack().push({\n client: this.getClient(),\n scope,\n });\n return scope;\n }\n\n /**\n * @inheritDoc\n */\n public popScope(): boolean {\n if (this.getStack().length <= 1) return false;\n return !!this.getStack().pop();\n }\n\n /**\n * @inheritDoc\n */\n public withScope(callback: (scope: Scope) => void): void {\n const scope = this.pushScope();\n try {\n callback(scope);\n } finally {\n this.popScope();\n }\n }\n\n /**\n * @inheritDoc\n */\n public getClient(): C | undefined {\n return this.getStackTop().client as C;\n }\n\n /** Returns the scope of the top stack. */\n public getScope(): Scope | undefined {\n return this.getStackTop().scope;\n }\n\n /** Returns the scope stack for domains or the process. */\n public getStack(): Layer[] {\n return this._stack;\n }\n\n /** Returns the topmost scope layer in the order domain > local > process. */\n public getStackTop(): Layer {\n return this._stack[this._stack.length - 1];\n }\n\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n public captureException(exception: any, hint?: EventHint): string {\n const eventId = (this._lastEventId = hint && hint.event_id ? hint.event_id : uuid4());\n const syntheticException = new Error('Sentry syntheticException');\n this._withClient((client, scope) => {\n client.captureException(\n exception,\n {\n originalException: exception,\n syntheticException,\n ...hint,\n event_id: eventId,\n },\n scope,\n );\n });\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n public captureMessage(\n message: string,\n // eslint-disable-next-line deprecation/deprecation\n level?: Severity | SeverityLevel,\n hint?: EventHint,\n ): string {\n const eventId = (this._lastEventId = hint && hint.event_id ? hint.event_id : uuid4());\n const syntheticException = new Error(message);\n this._withClient((client, scope) => {\n client.captureMessage(\n message,\n level,\n {\n originalException: message,\n syntheticException,\n ...hint,\n event_id: eventId,\n },\n scope,\n );\n });\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n public captureEvent(event: Event, hint?: EventHint): string {\n const eventId = hint && hint.event_id ? hint.event_id : uuid4();\n if (event.type !== 'transaction') {\n this._lastEventId = eventId;\n }\n\n this._withClient((client, scope) => {\n client.captureEvent(event, { ...hint, event_id: eventId }, scope);\n });\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n public lastEventId(): string | undefined {\n return this._lastEventId;\n }\n\n /**\n * @inheritDoc\n */\n public addBreadcrumb(breadcrumb: Breadcrumb, hint?: BreadcrumbHint): void {\n const { scope, client } = this.getStackTop();\n\n if (!scope || !client) return;\n\n // eslint-disable-next-line @typescript-eslint/unbound-method\n const { beforeBreadcrumb = null, maxBreadcrumbs = DEFAULT_BREADCRUMBS } =\n (client.getOptions && client.getOptions()) || {};\n\n if (maxBreadcrumbs <= 0) return;\n\n const timestamp = dateTimestampInSeconds();\n const mergedBreadcrumb = { timestamp, ...breadcrumb };\n const finalBreadcrumb = beforeBreadcrumb\n ? (consoleSandbox(() => beforeBreadcrumb(mergedBreadcrumb, hint)) as Breadcrumb | null)\n : mergedBreadcrumb;\n\n if (finalBreadcrumb === null) return;\n\n scope.addBreadcrumb(finalBreadcrumb, maxBreadcrumbs);\n }\n\n /**\n * @inheritDoc\n */\n public setUser(user: User | null): void {\n const scope = this.getScope();\n if (scope) scope.setUser(user);\n }\n\n /**\n * @inheritDoc\n */\n public setTags(tags: { [key: string]: Primitive }): void {\n const scope = this.getScope();\n if (scope) scope.setTags(tags);\n }\n\n /**\n * @inheritDoc\n */\n public setExtras(extras: Extras): void {\n const scope = this.getScope();\n if (scope) scope.setExtras(extras);\n }\n\n /**\n * @inheritDoc\n */\n public setTag(key: string, value: Primitive): void {\n const scope = this.getScope();\n if (scope) scope.setTag(key, value);\n }\n\n /**\n * @inheritDoc\n */\n public setExtra(key: string, extra: Extra): void {\n const scope = this.getScope();\n if (scope) scope.setExtra(key, extra);\n }\n\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public setContext(name: string, context: { [key: string]: any } | null): void {\n const scope = this.getScope();\n if (scope) scope.setContext(name, context);\n }\n\n /**\n * @inheritDoc\n */\n public configureScope(callback: (scope: Scope) => void): void {\n const { scope, client } = this.getStackTop();\n if (scope && client) {\n callback(scope);\n }\n }\n\n /**\n * @inheritDoc\n */\n public run(callback: (hub: Hub) => void): void {\n const oldHub = makeMain(this);\n try {\n callback(this);\n } finally {\n makeMain(oldHub);\n }\n }\n\n /**\n * @inheritDoc\n */\n public getIntegration(integration: IntegrationClass): T | null {\n const client = this.getClient();\n if (!client) return null;\n try {\n return client.getIntegration(integration);\n } catch (_oO) {\n __DEBUG_BUILD__ && logger.warn(`Cannot retrieve integration ${integration.id} from the current Hub`);\n return null;\n }\n }\n\n /**\n * @inheritDoc\n */\n public startTransaction(context: TransactionContext, customSamplingContext?: CustomSamplingContext): Transaction {\n return this._callExtensionMethod('startTransaction', context, customSamplingContext);\n }\n\n /**\n * @inheritDoc\n */\n public traceHeaders(): { [key: string]: string } {\n return this._callExtensionMethod<{ [key: string]: string }>('traceHeaders');\n }\n\n /**\n * @inheritDoc\n */\n public captureSession(endSession: boolean = false): void {\n // both send the update and pull the session from the scope\n if (endSession) {\n return this.endSession();\n }\n\n // only send the update\n this._sendSessionUpdate();\n }\n\n /**\n * @inheritDoc\n */\n public endSession(): void {\n const layer = this.getStackTop();\n const scope = layer && layer.scope;\n const session = scope && scope.getSession();\n if (session) {\n closeSession(session);\n }\n this._sendSessionUpdate();\n\n // the session is over; take it off of the scope\n if (scope) {\n scope.setSession();\n }\n }\n\n /**\n * @inheritDoc\n */\n public startSession(context?: SessionContext): Session {\n const { scope, client } = this.getStackTop();\n const { release, environment } = (client && client.getOptions()) || {};\n\n // Will fetch userAgent if called from browser sdk\n const global = getGlobalObject<{ navigator?: { userAgent?: string } }>();\n const { userAgent } = global.navigator || {};\n\n const session = makeSession({\n release,\n environment,\n ...(scope && { user: scope.getUser() }),\n ...(userAgent && { userAgent }),\n ...context,\n });\n\n if (scope) {\n // End existing session if there's one\n const currentSession = scope.getSession && scope.getSession();\n if (currentSession && currentSession.status === 'ok') {\n updateSession(currentSession, { status: 'exited' });\n }\n this.endSession();\n\n // Afterwards we set the new session on the scope\n scope.setSession(session);\n }\n\n return session;\n }\n\n /**\n * Returns if default PII should be sent to Sentry and propagated in ourgoing requests\n * when Tracing is used.\n */\n public shouldSendDefaultPii(): boolean {\n const client = this.getClient();\n const options = client && client.getOptions();\n return Boolean(options && options.sendDefaultPii);\n }\n\n /**\n * Sends the current Session on the scope\n */\n private _sendSessionUpdate(): void {\n const { scope, client } = this.getStackTop();\n if (!scope) return;\n\n const session = scope.getSession();\n if (session) {\n if (client && client.captureSession) {\n client.captureSession(session);\n }\n }\n }\n\n /**\n * Internal helper function to call a method on the top client if it exists.\n *\n * @param method The method to call on the client.\n * @param args Arguments to pass to the client function.\n */\n private _withClient(callback: (client: Client, scope: Scope | undefined) => void): void {\n const { scope, client } = this.getStackTop();\n if (client) {\n callback(client, scope);\n }\n }\n\n /**\n * Calls global extension method and binding current instance to the function call\n */\n // @ts-ignore Function lacks ending return statement and return type does not include 'undefined'. ts(2366)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private _callExtensionMethod(method: string, ...args: any[]): T {\n const carrier = getMainCarrier();\n const sentry = carrier.__SENTRY__;\n if (sentry && sentry.extensions && typeof sentry.extensions[method] === 'function') {\n return sentry.extensions[method].apply(this, args);\n }\n __DEBUG_BUILD__ && logger.warn(`Extension method ${method} couldn't be found, doing nothing.`);\n }\n}\n\n/**\n * Returns the global shim registry.\n *\n * FIXME: This function is problematic, because despite always returning a valid Carrier,\n * it has an optional `__SENTRY__` property, which then in turn requires us to always perform an unnecessary check\n * at the call-site. We always access the carrier through this function, so we can guarantee that `__SENTRY__` is there.\n **/\nexport function getMainCarrier(): Carrier {\n const carrier = getGlobalObject();\n carrier.__SENTRY__ = carrier.__SENTRY__ || {\n extensions: {},\n hub: undefined,\n };\n return carrier;\n}\n\n/**\n * Replaces the current main hub with the passed one on the global object\n *\n * @returns The old replaced hub\n */\nexport function makeMain(hub: Hub): Hub {\n const registry = getMainCarrier();\n const oldHub = getHubFromCarrier(registry);\n setHubOnCarrier(registry, hub);\n return oldHub;\n}\n\n/**\n * Returns the default hub instance.\n *\n * If a hub is already registered in the global carrier but this module\n * contains a more recent version, it replaces the registered version.\n * Otherwise, the currently registered hub will be returned.\n */\nexport function getCurrentHub(): Hub {\n // Get main carrier (global for every environment)\n const registry = getMainCarrier();\n\n // If there's no hub, or its an old API, assign a new one\n if (!hasHubOnCarrier(registry) || getHubFromCarrier(registry).isOlderThan(API_VERSION)) {\n setHubOnCarrier(registry, new Hub());\n }\n\n // Prefer domains over global if they are there (applicable only to Node environment)\n if (isNodeEnv()) {\n return getHubFromActiveDomain(registry);\n }\n // Return hub that lives on a global object\n return getHubFromCarrier(registry);\n}\n\n/**\n * Try to read the hub from an active domain, and fallback to the registry if one doesn't exist\n * @returns discovered hub\n */\nfunction getHubFromActiveDomain(registry: Carrier): Hub {\n try {\n const sentry = getMainCarrier().__SENTRY__;\n const activeDomain = sentry && sentry.extensions && sentry.extensions.domain && sentry.extensions.domain.active;\n\n // If there's no active domain, just return global hub\n if (!activeDomain) {\n return getHubFromCarrier(registry);\n }\n\n // If there's no hub on current domain, or it's an old API, assign a new one\n if (!hasHubOnCarrier(activeDomain) || getHubFromCarrier(activeDomain).isOlderThan(API_VERSION)) {\n const registryHubTopStack = getHubFromCarrier(registry).getStackTop();\n setHubOnCarrier(activeDomain, new Hub(registryHubTopStack.client, Scope.clone(registryHubTopStack.scope)));\n }\n\n // Return hub that lives on a domain\n return getHubFromCarrier(activeDomain);\n } catch (_Oo) {\n // Return hub that lives on a global object\n return getHubFromCarrier(registry);\n }\n}\n\n/**\n * This will tell whether a carrier has a hub on it or not\n * @param carrier object\n */\nfunction hasHubOnCarrier(carrier: Carrier): boolean {\n return !!(carrier && carrier.__SENTRY__ && carrier.__SENTRY__.hub);\n}\n\n/**\n * This will create a new {@link Hub} and add to the passed object on\n * __SENTRY__.hub.\n * @param carrier object\n * @hidden\n */\nexport function getHubFromCarrier(carrier: Carrier): Hub {\n return getGlobalSingleton('hub', () => new Hub(), carrier);\n}\n\n/**\n * This will set passed {@link Hub} on the passed object's __SENTRY__.hub attribute\n * @param carrier object\n * @param hub Hub\n * @returns A boolean indicating success or failure\n */\nexport function setHubOnCarrier(carrier: Carrier, hub: Hub): boolean {\n if (!carrier) return false;\n const __SENTRY__ = (carrier.__SENTRY__ = carrier.__SENTRY__ || {});\n __SENTRY__.hub = hub;\n return true;\n}\n","import {\n Breadcrumb,\n CaptureContext,\n CustomSamplingContext,\n Event,\n EventHint,\n Extra,\n Extras,\n Primitive,\n Severity,\n SeverityLevel,\n TransactionContext,\n User,\n} from '@sentry/types';\n\nimport { getCurrentHub, Hub } from './hub';\nimport { Scope } from './scope';\n\n// Note: All functions in this file are typed with a return value of `ReturnType`,\n// where HUB_FUNCTION is some method on the Hub class.\n//\n// This is done to make sure the top level SDK methods stay in sync with the hub methods.\n// Although every method here has an explicit return type, some of them (that map to void returns) do not\n// contain `return` keywords. This is done to save on bundle size, as `return` is not minifiable.\n\n/**\n * Captures an exception event and sends it to Sentry.\n *\n * @param exception An exception-like object.\n * @param captureContext Additional scope data to apply to exception event.\n * @returns The generated eventId.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\nexport function captureException(exception: any, captureContext?: CaptureContext): ReturnType {\n return getCurrentHub().captureException(exception, { captureContext });\n}\n\n/**\n * Captures a message event and sends it to Sentry.\n *\n * @param message The message to send to Sentry.\n * @param Severity Define the level of the message.\n * @returns The generated eventId.\n */\nexport function captureMessage(\n message: string,\n // eslint-disable-next-line deprecation/deprecation\n captureContext?: CaptureContext | Severity | SeverityLevel,\n): ReturnType {\n // This is necessary to provide explicit scopes upgrade, without changing the original\n // arity of the `captureMessage(message, level)` method.\n const level = typeof captureContext === 'string' ? captureContext : undefined;\n const context = typeof captureContext !== 'string' ? { captureContext } : undefined;\n return getCurrentHub().captureMessage(message, level, context);\n}\n\n/**\n * Captures a manually created event and sends it to Sentry.\n *\n * @param event The event to send to Sentry.\n * @returns The generated eventId.\n */\nexport function captureEvent(event: Event, hint?: EventHint): ReturnType {\n return getCurrentHub().captureEvent(event, hint);\n}\n\n/**\n * Callback to set context information onto the scope.\n * @param callback Callback function that receives Scope.\n */\nexport function configureScope(callback: (scope: Scope) => void): ReturnType {\n getCurrentHub().configureScope(callback);\n}\n\n/**\n * Records a new breadcrumb which will be attached to future events.\n *\n * Breadcrumbs will be added to subsequent events to provide more context on\n * user's actions prior to an error or crash.\n *\n * @param breadcrumb The breadcrumb to record.\n */\nexport function addBreadcrumb(breadcrumb: Breadcrumb): ReturnType {\n getCurrentHub().addBreadcrumb(breadcrumb);\n}\n\n/**\n * Sets context data with the given name.\n * @param name of the context\n * @param context Any kind of data. This data will be normalized.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function setContext(name: string, context: { [key: string]: any } | null): ReturnType {\n getCurrentHub().setContext(name, context);\n}\n\n/**\n * Set an object that will be merged sent as extra data with the event.\n * @param extras Extras object to merge into current context.\n */\nexport function setExtras(extras: Extras): ReturnType {\n getCurrentHub().setExtras(extras);\n}\n\n/**\n * Set key:value that will be sent as extra data with the event.\n * @param key String of extra\n * @param extra Any kind of data. This data will be normalized.\n */\nexport function setExtra(key: string, extra: Extra): ReturnType {\n getCurrentHub().setExtra(key, extra);\n}\n\n/**\n * Set an object that will be merged sent as tags data with the event.\n * @param tags Tags context object to merge into current context.\n */\nexport function setTags(tags: { [key: string]: Primitive }): ReturnType {\n getCurrentHub().setTags(tags);\n}\n\n/**\n * Set key:value that will be sent as tags data with the event.\n *\n * Can also be used to unset a tag, by passing `undefined`.\n *\n * @param key String key of tag\n * @param value Value of tag\n */\nexport function setTag(key: string, value: Primitive): ReturnType {\n getCurrentHub().setTag(key, value);\n}\n\n/**\n * Updates user context information for future events.\n *\n * @param user User context object to be set in the current context. Pass `null` to unset the user.\n */\nexport function setUser(user: User | null): ReturnType {\n getCurrentHub().setUser(user);\n}\n\n/**\n * Creates a new scope with and executes the given operation within.\n * The scope is automatically removed once the operation\n * finishes or throws.\n *\n * This is essentially a convenience function for:\n *\n * pushScope();\n * callback();\n * popScope();\n *\n * @param callback that will be enclosed into push/popScope.\n */\nexport function withScope(callback: (scope: Scope) => void): ReturnType {\n getCurrentHub().withScope(callback);\n}\n\n/**\n * Starts a new `Transaction` and returns it. This is the entry point to manual tracing instrumentation.\n *\n * A tree structure can be built by adding child spans to the transaction, and child spans to other spans. To start a\n * new child span within the transaction or any span, call the respective `.startChild()` method.\n *\n * Every child span must be finished before the transaction is finished, otherwise the unfinished spans are discarded.\n *\n * The transaction must be finished with a call to its `.finish()` method, at which point the transaction with all its\n * finished child spans will be sent to Sentry.\n *\n * NOTE: This function should only be used for *manual* instrumentation. Auto-instrumentation should call\n * `startTransaction` directly on the hub.\n *\n * @param context Properties of the new `Transaction`.\n * @param customSamplingContext Information given to the transaction sampling function (along with context-dependent\n * default values). See {@link Options.tracesSampler}.\n *\n * @returns The transaction which was just started\n */\nexport function startTransaction(\n context: TransactionContext,\n customSamplingContext?: CustomSamplingContext,\n): ReturnType {\n return getCurrentHub().startTransaction(\n {\n metadata: { source: 'custom' },\n ...context,\n },\n customSamplingContext,\n );\n}\n","/** An error emitted by Sentry SDKs and related utilities. */\nexport class SentryError extends Error {\n /** Display name of this error instance. */\n public name: string;\n\n public constructor(public message: string) {\n super(message);\n\n this.name = new.target.prototype.constructor.name;\n Object.setPrototypeOf(this, new.target.prototype);\n }\n}\n","import {\n Attachment,\n AttachmentItem,\n DataCategory,\n Envelope,\n EnvelopeItem,\n EnvelopeItemType,\n TextEncoderInternal,\n} from '@sentry/types';\n\nimport { dropUndefinedKeys } from './object';\n\n/**\n * Creates an envelope.\n * Make sure to always explicitly provide the generic to this function\n * so that the envelope types resolve correctly.\n */\nexport function createEnvelope(headers: E[0], items: E[1] = []): E {\n return [headers, items] as E;\n}\n\n/**\n * Add an item to an envelope.\n * Make sure to always explicitly provide the generic to this function\n * so that the envelope types resolve correctly.\n */\nexport function addItemToEnvelope(envelope: E, newItem: E[1][number]): E {\n const [headers, items] = envelope;\n return [headers, [...items, newItem]] as E;\n}\n\n/**\n * Convenience function to loop through the items and item types of an envelope.\n * (This function was mostly created because working with envelope types is painful at the moment)\n */\nexport function forEachEnvelopeItem(\n envelope: Envelope,\n callback: (envelopeItem: E[1][number], envelopeItemType: E[1][number][0]['type']) => void,\n): void {\n const envelopeItems = envelope[1];\n envelopeItems.forEach((envelopeItem: EnvelopeItem) => {\n const envelopeItemType = envelopeItem[0].type;\n callback(envelopeItem, envelopeItemType);\n });\n}\n\nfunction encodeUTF8(input: string, textEncoder?: TextEncoderInternal): Uint8Array {\n const utf8 = textEncoder || new TextEncoder();\n return utf8.encode(input);\n}\n\n/**\n * Serializes an envelope.\n */\nexport function serializeEnvelope(envelope: Envelope, textEncoder?: TextEncoderInternal): string | Uint8Array {\n const [envHeaders, items] = envelope;\n\n // Initially we construct our envelope as a string and only convert to binary chunks if we encounter binary data\n let parts: string | Uint8Array[] = JSON.stringify(envHeaders);\n\n function append(next: string | Uint8Array): void {\n if (typeof parts === 'string') {\n parts = typeof next === 'string' ? parts + next : [encodeUTF8(parts, textEncoder), next];\n } else {\n parts.push(typeof next === 'string' ? encodeUTF8(next, textEncoder) : next);\n }\n }\n\n for (const item of items) {\n const [itemHeaders, payload] = item as typeof items[number];\n append(`\\n${JSON.stringify(itemHeaders)}\\n`);\n append(typeof payload === 'string' || payload instanceof Uint8Array ? payload : JSON.stringify(payload));\n }\n\n return typeof parts === 'string' ? parts : concatBuffers(parts);\n}\n\nfunction concatBuffers(buffers: Uint8Array[]): Uint8Array {\n const totalLength = buffers.reduce((acc, buf) => acc + buf.length, 0);\n\n const merged = new Uint8Array(totalLength);\n let offset = 0;\n for (const buffer of buffers) {\n merged.set(buffer, offset);\n offset += buffer.length;\n }\n\n return merged;\n}\n\n/**\n * Creates attachment envelope items\n */\nexport function createAttachmentEnvelopeItem(\n attachment: Attachment,\n textEncoder?: TextEncoderInternal,\n): AttachmentItem {\n const buffer = typeof attachment.data === 'string' ? encodeUTF8(attachment.data, textEncoder) : attachment.data;\n\n return [\n dropUndefinedKeys({\n type: 'attachment',\n length: buffer.length,\n filename: attachment.filename,\n content_type: attachment.contentType,\n attachment_type: attachment.attachmentType,\n }),\n buffer,\n ];\n}\n\nconst ITEM_TYPE_TO_DATA_CATEGORY_MAP: Record = {\n session: 'session',\n sessions: 'session',\n attachment: 'attachment',\n transaction: 'transaction',\n event: 'error',\n client_report: 'internal',\n user_report: 'default',\n};\n\n/**\n * Maps the type of an envelope item to a data category.\n */\nexport function envelopeItemTypeToDataCategory(type: EnvelopeItemType): DataCategory {\n return ITEM_TYPE_TO_DATA_CATEGORY_MAP[type];\n}\n","import {\n Envelope,\n EnvelopeItem,\n EventDropReason,\n InternalBaseTransportOptions,\n Transport,\n TransportRequestExecutor,\n} from '@sentry/types';\nimport {\n createEnvelope,\n envelopeItemTypeToDataCategory,\n forEachEnvelopeItem,\n isRateLimited,\n logger,\n makePromiseBuffer,\n PromiseBuffer,\n RateLimits,\n resolvedSyncPromise,\n SentryError,\n serializeEnvelope,\n updateRateLimits,\n} from '@sentry/utils';\n\nexport const DEFAULT_TRANSPORT_BUFFER_SIZE = 30;\n\n/**\n * Creates an instance of a Sentry `Transport`\n *\n * @param options\n * @param makeRequest\n */\nexport function createTransport(\n options: InternalBaseTransportOptions,\n makeRequest: TransportRequestExecutor,\n buffer: PromiseBuffer = makePromiseBuffer(options.bufferSize || DEFAULT_TRANSPORT_BUFFER_SIZE),\n): Transport {\n let rateLimits: RateLimits = {};\n\n const flush = (timeout?: number): PromiseLike => buffer.drain(timeout);\n\n function send(envelope: Envelope): PromiseLike {\n const filteredEnvelopeItems: EnvelopeItem[] = [];\n\n // Drop rate limited items from envelope\n forEachEnvelopeItem(envelope, (item, type) => {\n const envelopeItemDataCategory = envelopeItemTypeToDataCategory(type);\n if (isRateLimited(rateLimits, envelopeItemDataCategory)) {\n options.recordDroppedEvent('ratelimit_backoff', envelopeItemDataCategory);\n } else {\n filteredEnvelopeItems.push(item);\n }\n });\n\n // Skip sending if envelope is empty after filtering out rate limited events\n if (filteredEnvelopeItems.length === 0) {\n return resolvedSyncPromise();\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const filteredEnvelope: Envelope = createEnvelope(envelope[0], filteredEnvelopeItems as any);\n\n // Creates client report for each item in an envelope\n const recordEnvelopeLoss = (reason: EventDropReason): void => {\n forEachEnvelopeItem(filteredEnvelope, (_, type) => {\n options.recordDroppedEvent(reason, envelopeItemTypeToDataCategory(type));\n });\n };\n\n const requestTask = (): PromiseLike =>\n makeRequest({ body: serializeEnvelope(filteredEnvelope, options.textEncoder) }).then(\n response => {\n // We don't want to throw on NOK responses, but we want to at least log them\n if (response.statusCode !== undefined && (response.statusCode < 200 || response.statusCode >= 300)) {\n __DEBUG_BUILD__ && logger.warn(`Sentry responded with status code ${response.statusCode} to sent event.`);\n }\n\n rateLimits = updateRateLimits(rateLimits, response);\n },\n error => {\n __DEBUG_BUILD__ && logger.error('Failed while sending event:', error);\n recordEnvelopeLoss('network_error');\n },\n );\n\n return buffer.add(requestTask).then(\n result => result,\n error => {\n if (error instanceof SentryError) {\n __DEBUG_BUILD__ && logger.error('Skipped sending event due to full buffer');\n recordEnvelopeLoss('queue_overflow');\n return resolvedSyncPromise();\n } else {\n throw error;\n }\n },\n );\n }\n\n return {\n send,\n flush,\n };\n}\n","import { SentryError } from './error';\nimport { rejectedSyncPromise, resolvedSyncPromise, SyncPromise } from './syncpromise';\n\nexport interface PromiseBuffer {\n // exposes the internal array so tests can assert on the state of it.\n // XXX: this really should not be public api.\n $: Array>;\n add(taskProducer: () => PromiseLike): PromiseLike;\n drain(timeout?: number): PromiseLike;\n}\n\n/**\n * Creates an new PromiseBuffer object with the specified limit\n * @param limit max number of promises that can be stored in the buffer\n */\nexport function makePromiseBuffer(limit?: number): PromiseBuffer {\n const buffer: Array> = [];\n\n function isReady(): boolean {\n return limit === undefined || buffer.length < limit;\n }\n\n /**\n * Remove a promise from the queue.\n *\n * @param task Can be any PromiseLike\n * @returns Removed promise.\n */\n function remove(task: PromiseLike): PromiseLike {\n return buffer.splice(buffer.indexOf(task), 1)[0];\n }\n\n /**\n * Add a promise (representing an in-flight action) to the queue, and set it to remove itself on fulfillment.\n *\n * @param taskProducer A function producing any PromiseLike; In previous versions this used to be `task:\n * PromiseLike`, but under that model, Promises were instantly created on the call-site and their executor\n * functions therefore ran immediately. Thus, even if the buffer was full, the action still happened. By\n * requiring the promise to be wrapped in a function, we can defer promise creation until after the buffer\n * limit check.\n * @returns The original promise.\n */\n function add(taskProducer: () => PromiseLike): PromiseLike {\n if (!isReady()) {\n return rejectedSyncPromise(new SentryError('Not adding Promise due to buffer limit reached.'));\n }\n\n // start the task and add its promise to the queue\n const task = taskProducer();\n if (buffer.indexOf(task) === -1) {\n buffer.push(task);\n }\n void task\n .then(() => remove(task))\n // Use `then(null, rejectionHandler)` rather than `catch(rejectionHandler)` so that we can use `PromiseLike`\n // rather than `Promise`. `PromiseLike` doesn't have a `.catch` method, making its polyfill smaller. (ES5 didn't\n // have promises, so TS has to polyfill when down-compiling.)\n .then(null, () =>\n remove(task).then(null, () => {\n // We have to add another catch here because `remove()` starts a new promise chain.\n }),\n );\n return task;\n }\n\n /**\n * Wait for all promises in the queue to resolve or for timeout to expire, whichever comes first.\n *\n * @param timeout The time, in ms, after which to resolve to `false` if the queue is still non-empty. Passing `0` (or\n * not passing anything) will make the promise wait as long as it takes for the queue to drain before resolving to\n * `true`.\n * @returns A promise which will resolve to `true` if the queue is already empty or drains before the timeout, and\n * `false` otherwise\n */\n function drain(timeout?: number): PromiseLike {\n return new SyncPromise((resolve, reject) => {\n let counter = buffer.length;\n\n if (!counter) {\n return resolve(true);\n }\n\n // wait for `timeout` ms and then resolve to `false` (if not cancelled first)\n const capturedSetTimeout = setTimeout(() => {\n if (timeout && timeout > 0) {\n resolve(false);\n }\n }, timeout);\n\n // if all promises resolve in time, cancel the timer and resolve to `true`\n buffer.forEach(item => {\n void resolvedSyncPromise(item).then(() => {\n // eslint-disable-next-line no-plusplus\n if (!--counter) {\n clearTimeout(capturedSetTimeout);\n resolve(true);\n }\n }, reject);\n });\n });\n }\n\n return {\n $: buffer,\n add,\n drain,\n };\n}\n","import { TransportMakeRequestResponse } from '@sentry/types';\n\n// Intentionally keeping the key broad, as we don't know for sure what rate limit headers get returned from backend\nexport type RateLimits = Record;\n\nexport const DEFAULT_RETRY_AFTER = 60 * 1000; // 60 seconds\n\n/**\n * Extracts Retry-After value from the request header or returns default value\n * @param header string representation of 'Retry-After' header\n * @param now current unix timestamp\n *\n */\nexport function parseRetryAfterHeader(header: string, now: number = Date.now()): number {\n const headerDelay = parseInt(`${header}`, 10);\n if (!isNaN(headerDelay)) {\n return headerDelay * 1000;\n }\n\n const headerDate = Date.parse(`${header}`);\n if (!isNaN(headerDate)) {\n return headerDate - now;\n }\n\n return DEFAULT_RETRY_AFTER;\n}\n\n/**\n * Gets the time that given category is disabled until for rate limiting\n */\nexport function disabledUntil(limits: RateLimits, category: string): number {\n return limits[category] || limits.all || 0;\n}\n\n/**\n * Checks if a category is rate limited\n */\nexport function isRateLimited(limits: RateLimits, category: string, now: number = Date.now()): boolean {\n return disabledUntil(limits, category) > now;\n}\n\n/**\n * Update ratelimits from incoming headers.\n * Returns true if headers contains a non-empty rate limiting header.\n */\nexport function updateRateLimits(\n limits: RateLimits,\n { statusCode, headers }: TransportMakeRequestResponse,\n now: number = Date.now(),\n): RateLimits {\n const updatedRateLimits: RateLimits = {\n ...limits,\n };\n\n // \"The name is case-insensitive.\"\n // https://developer.mozilla.org/en-US/docs/Web/API/Headers/get\n const rateLimitHeader = headers && headers['x-sentry-rate-limits'];\n const retryAfterHeader = headers && headers['retry-after'];\n\n if (rateLimitHeader) {\n /**\n * rate limit headers are of the form\n *
,
,..\n * where each
is of the form\n * : : : \n * where\n * is a delay in seconds\n * is the event type(s) (error, transaction, etc) being rate limited and is of the form\n * ;;...\n * is what's being limited (org, project, or key) - ignored by SDK\n * is an arbitrary string like \"org_quota\" - ignored by SDK\n */\n for (const limit of rateLimitHeader.trim().split(',')) {\n const [retryAfter, categories] = limit.split(':', 2);\n const headerDelay = parseInt(retryAfter, 10);\n const delay = (!isNaN(headerDelay) ? headerDelay : 60) * 1000; // 60sec default\n if (!categories) {\n updatedRateLimits.all = now + delay;\n } else {\n for (const category of categories.split(';')) {\n updatedRateLimits[category] = now + delay;\n }\n }\n }\n } else if (retryAfterHeader) {\n updatedRateLimits.all = now + parseRetryAfterHeader(retryAfterHeader, now);\n } else if (statusCode === 429) {\n updatedRateLimits.all = now + 60 * 1000;\n }\n\n return updatedRateLimits;\n}\n","import { StackFrame, StackLineParser, StackLineParserFn, StackParser } from '@sentry/types';\n\nconst STACKTRACE_LIMIT = 50;\n\n/**\n * Creates a stack parser with the supplied line parsers\n *\n * StackFrames are returned in the correct order for Sentry Exception\n * frames and with Sentry SDK internal frames removed from the top and bottom\n *\n */\nexport function createStackParser(...parsers: StackLineParser[]): StackParser {\n const sortedParsers = parsers.sort((a, b) => a[0] - b[0]).map(p => p[1]);\n\n return (stack: string, skipFirst: number = 0): StackFrame[] => {\n const frames: StackFrame[] = [];\n\n for (const line of stack.split('\\n').slice(skipFirst)) {\n for (const parser of sortedParsers) {\n const frame = parser(line);\n\n if (frame) {\n frames.push(frame);\n break;\n }\n }\n }\n\n return stripSentryFramesAndReverse(frames);\n };\n}\n\n/**\n * Gets a stack parser implementation from Options.stackParser\n * @see Options\n *\n * If options contains an array of line parsers, it is converted into a parser\n */\nexport function stackParserFromStackParserOptions(stackParser: StackParser | StackLineParser[]): StackParser {\n if (Array.isArray(stackParser)) {\n return createStackParser(...stackParser);\n }\n return stackParser;\n}\n\n/**\n * @hidden\n */\nexport function stripSentryFramesAndReverse(stack: StackFrame[]): StackFrame[] {\n if (!stack.length) {\n return [];\n }\n\n let localStack = stack;\n\n const firstFrameFunction = localStack[0].function || '';\n const lastFrameFunction = localStack[localStack.length - 1].function || '';\n\n // If stack starts with one of our API calls, remove it (starts, meaning it's the top of the stack - aka last call)\n if (firstFrameFunction.indexOf('captureMessage') !== -1 || firstFrameFunction.indexOf('captureException') !== -1) {\n localStack = localStack.slice(1);\n }\n\n // If stack ends with one of our internal API calls, remove it (ends, meaning it's the bottom of the stack - aka top-most call)\n if (lastFrameFunction.indexOf('sentryWrapped') !== -1) {\n localStack = localStack.slice(0, -1);\n }\n\n // The frame where the crash happened, should be the last entry in the array\n return localStack\n .slice(0, STACKTRACE_LIMIT)\n .map(frame => ({\n ...frame,\n filename: frame.filename || localStack[0].filename,\n function: frame.function || '?',\n }))\n .reverse();\n}\n\nconst defaultFunctionName = '';\n\n/**\n * Safely extract function name from itself\n */\nexport function getFunctionName(fn: unknown): string {\n try {\n if (!fn || typeof fn !== 'function') {\n return defaultFunctionName;\n }\n return fn.name || defaultFunctionName;\n } catch (e) {\n // Just accessing custom props in some Selenium environments\n // can cause a \"Permission denied\" exception (see raven-js#495).\n return defaultFunctionName;\n }\n}\n\ntype GetModuleFn = (filename: string | undefined) => string | undefined;\n\n// eslint-disable-next-line complexity\nfunction node(getModule?: GetModuleFn): StackLineParserFn {\n const FILENAME_MATCH = /^\\s*[-]{4,}$/;\n const FULL_MATCH = /at (?:async )?(?:(.+?)\\s+\\()?(?:(.+?):(\\d+)(?::(\\d+))?|([^)]+))\\)?/;\n\n // eslint-disable-next-line complexity\n return (line: string) => {\n if (line.match(FILENAME_MATCH)) {\n return {\n filename: line,\n };\n }\n\n const lineMatch = line.match(FULL_MATCH);\n if (!lineMatch) {\n return undefined;\n }\n\n let object: string | undefined;\n let method: string | undefined;\n let functionName: string | undefined;\n let typeName: string | undefined;\n let methodName: string | undefined;\n\n if (lineMatch[1]) {\n functionName = lineMatch[1];\n\n let methodStart = functionName.lastIndexOf('.');\n if (functionName[methodStart - 1] === '.') {\n // eslint-disable-next-line no-plusplus\n methodStart--;\n }\n\n if (methodStart > 0) {\n object = functionName.substr(0, methodStart);\n method = functionName.substr(methodStart + 1);\n const objectEnd = object.indexOf('.Module');\n if (objectEnd > 0) {\n functionName = functionName.substr(objectEnd + 1);\n object = object.substr(0, objectEnd);\n }\n }\n typeName = undefined;\n }\n\n if (method) {\n typeName = object;\n methodName = method;\n }\n\n if (method === '') {\n methodName = undefined;\n functionName = undefined;\n }\n\n if (functionName === undefined) {\n methodName = methodName || '';\n functionName = typeName ? `${typeName}.${methodName}` : methodName;\n }\n\n const filename = lineMatch[2]?.startsWith('file://') ? lineMatch[2].substr(7) : lineMatch[2];\n const isNative = lineMatch[5] === 'native';\n const isInternal =\n isNative || (filename && !filename.startsWith('/') && !filename.startsWith('.') && filename.indexOf(':\\\\') !== 1);\n\n // in_app is all that's not an internal Node function or a module within node_modules\n // note that isNative appears to return true even for node core libraries\n // see https://github.com/getsentry/raven-node/issues/176\n const in_app = !isInternal && filename !== undefined && !filename.includes('node_modules/');\n\n return {\n filename,\n module: getModule?.(filename),\n function: functionName,\n lineno: parseInt(lineMatch[3], 10) || undefined,\n colno: parseInt(lineMatch[4], 10) || undefined,\n in_app,\n };\n };\n}\n\n/**\n * Node.js stack line parser\n *\n * This is in @sentry/utils so it can be used from the Electron SDK in the browser for when `nodeIntegration == true`.\n * This allows it to be used without referencing or importing any node specific code which causes bundlers to complain\n */\nexport function nodeStackLineParser(getModule?: GetModuleFn): StackLineParser {\n return [90, node(getModule)];\n}\n","import { getGlobalObject } from './global';\nimport { logger } from './logger';\n\n/**\n * Tells whether current environment supports ErrorEvent objects\n * {@link supportsErrorEvent}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsErrorEvent(): boolean {\n try {\n new ErrorEvent('');\n return true;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Tells whether current environment supports DOMError objects\n * {@link supportsDOMError}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsDOMError(): boolean {\n try {\n // Chrome: VM89:1 Uncaught TypeError: Failed to construct 'DOMError':\n // 1 argument required, but only 0 present.\n // @ts-ignore It really needs 1 argument, not 0.\n new DOMError('');\n return true;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Tells whether current environment supports DOMException objects\n * {@link supportsDOMException}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsDOMException(): boolean {\n try {\n new DOMException('');\n return true;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Tells whether current environment supports Fetch API\n * {@link supportsFetch}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsFetch(): boolean {\n if (!('fetch' in getGlobalObject())) {\n return false;\n }\n\n try {\n new Headers();\n new Request('');\n new Response();\n return true;\n } catch (e) {\n return false;\n }\n}\n/**\n * isNativeFetch checks if the given function is a native implementation of fetch()\n */\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function isNativeFetch(func: Function): boolean {\n return func && /^function fetch\\(\\)\\s+\\{\\s+\\[native code\\]\\s+\\}$/.test(func.toString());\n}\n\n/**\n * Tells whether current environment supports Fetch API natively\n * {@link supportsNativeFetch}.\n *\n * @returns true if `window.fetch` is natively implemented, false otherwise\n */\nexport function supportsNativeFetch(): boolean {\n if (!supportsFetch()) {\n return false;\n }\n\n const global = getGlobalObject();\n\n // Fast path to avoid DOM I/O\n // eslint-disable-next-line @typescript-eslint/unbound-method\n if (isNativeFetch(global.fetch)) {\n return true;\n }\n\n // window.fetch is implemented, but is polyfilled or already wrapped (e.g: by a chrome extension)\n // so create a \"pure\" iframe to see if that has native fetch\n let result = false;\n const doc = global.document;\n // eslint-disable-next-line deprecation/deprecation\n if (doc && typeof (doc.createElement as unknown) === 'function') {\n try {\n const sandbox = doc.createElement('iframe');\n sandbox.hidden = true;\n doc.head.appendChild(sandbox);\n if (sandbox.contentWindow && sandbox.contentWindow.fetch) {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n result = isNativeFetch(sandbox.contentWindow.fetch);\n }\n doc.head.removeChild(sandbox);\n } catch (err) {\n __DEBUG_BUILD__ &&\n logger.warn('Could not create sandbox iframe for pure fetch check, bailing to window.fetch: ', err);\n }\n }\n\n return result;\n}\n\n/**\n * Tells whether current environment supports ReportingObserver API\n * {@link supportsReportingObserver}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsReportingObserver(): boolean {\n return 'ReportingObserver' in getGlobalObject();\n}\n\n/**\n * Tells whether current environment supports Referrer Policy API\n * {@link supportsReferrerPolicy}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsReferrerPolicy(): boolean {\n // Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default'\n // (see https://caniuse.com/#feat=referrer-policy),\n // it doesn't. And it throws an exception instead of ignoring this parameter...\n // REF: https://github.com/getsentry/raven-js/issues/1233\n\n if (!supportsFetch()) {\n return false;\n }\n\n try {\n new Request('_', {\n referrerPolicy: 'origin' as ReferrerPolicy,\n });\n return true;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Tells whether current environment supports History API\n * {@link supportsHistory}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsHistory(): boolean {\n // NOTE: in Chrome App environment, touching history.pushState, *even inside\n // a try/catch block*, will cause Chrome to output an error to console.error\n // borrowed from: https://github.com/angular/angular.js/pull/13945/files\n const global = getGlobalObject();\n /* eslint-disable @typescript-eslint/no-unsafe-member-access */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const chrome = (global as any).chrome;\n const isChromePackagedApp = chrome && chrome.app && chrome.app.runtime;\n /* eslint-enable @typescript-eslint/no-unsafe-member-access */\n const hasHistoryApi = 'history' in global && !!global.history.pushState && !!global.history.replaceState;\n\n return !isChromePackagedApp && hasHistoryApi;\n}\n","/* eslint-disable max-lines */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/ban-types */\nimport { WrappedFunction } from '@sentry/types';\n\nimport { getGlobalObject } from './global';\nimport { isInstanceOf, isString } from './is';\nimport { CONSOLE_LEVELS, logger } from './logger';\nimport { fill } from './object';\nimport { getFunctionName } from './stacktrace';\nimport { supportsHistory, supportsNativeFetch } from './supports';\n\nconst global = getGlobalObject();\n\nexport type InstrumentHandlerType =\n | 'console'\n | 'dom'\n | 'fetch'\n | 'history'\n | 'sentry'\n | 'xhr'\n | 'error'\n | 'unhandledrejection';\nexport type InstrumentHandlerCallback = (data: any) => void;\n\n/**\n * Instrument native APIs to call handlers that can be used to create breadcrumbs, APM spans etc.\n * - Console API\n * - Fetch API\n * - XHR API\n * - History API\n * - DOM API (click/typing)\n * - Error API\n * - UnhandledRejection API\n */\n\nconst handlers: { [key in InstrumentHandlerType]?: InstrumentHandlerCallback[] } = {};\nconst instrumented: { [key in InstrumentHandlerType]?: boolean } = {};\n\n/** Instruments given API */\nfunction instrument(type: InstrumentHandlerType): void {\n if (instrumented[type]) {\n return;\n }\n\n instrumented[type] = true;\n\n switch (type) {\n case 'console':\n instrumentConsole();\n break;\n case 'dom':\n instrumentDOM();\n break;\n case 'xhr':\n instrumentXHR();\n break;\n case 'fetch':\n instrumentFetch();\n break;\n case 'history':\n instrumentHistory();\n break;\n case 'error':\n instrumentError();\n break;\n case 'unhandledrejection':\n instrumentUnhandledRejection();\n break;\n default:\n __DEBUG_BUILD__ && logger.warn('unknown instrumentation type:', type);\n return;\n }\n}\n\n/**\n * Add handler that will be called when given type of instrumentation triggers.\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nexport function addInstrumentationHandler(type: InstrumentHandlerType, callback: InstrumentHandlerCallback): void {\n handlers[type] = handlers[type] || [];\n (handlers[type] as InstrumentHandlerCallback[]).push(callback);\n instrument(type);\n}\n\n/** JSDoc */\nfunction triggerHandlers(type: InstrumentHandlerType, data: any): void {\n if (!type || !handlers[type]) {\n return;\n }\n\n for (const handler of handlers[type] || []) {\n try {\n handler(data);\n } catch (e) {\n __DEBUG_BUILD__ &&\n logger.error(\n `Error while triggering instrumentation handler.\\nType: ${type}\\nName: ${getFunctionName(handler)}\\nError:`,\n e,\n );\n }\n }\n}\n\n/** JSDoc */\nfunction instrumentConsole(): void {\n if (!('console' in global)) {\n return;\n }\n\n CONSOLE_LEVELS.forEach(function (level: string): void {\n if (!(level in global.console)) {\n return;\n }\n\n fill(global.console, level, function (originalConsoleMethod: () => any): Function {\n return function (...args: any[]): void {\n triggerHandlers('console', { args, level });\n\n // this fails for some browsers. :(\n if (originalConsoleMethod) {\n originalConsoleMethod.apply(global.console, args);\n }\n };\n });\n });\n}\n\n/** JSDoc */\nfunction instrumentFetch(): void {\n if (!supportsNativeFetch()) {\n return;\n }\n\n fill(global, 'fetch', function (originalFetch: () => void): () => void {\n return function (...args: any[]): void {\n const handlerData = {\n args,\n fetchData: {\n method: getFetchMethod(args),\n url: getFetchUrl(args),\n },\n startTimestamp: Date.now(),\n };\n\n triggerHandlers('fetch', {\n ...handlerData,\n });\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return originalFetch.apply(global, args).then(\n (response: Response) => {\n triggerHandlers('fetch', {\n ...handlerData,\n endTimestamp: Date.now(),\n response,\n });\n return response;\n },\n (error: Error) => {\n triggerHandlers('fetch', {\n ...handlerData,\n endTimestamp: Date.now(),\n error,\n });\n // NOTE: If you are a Sentry user, and you are seeing this stack frame,\n // it means the sentry.javascript SDK caught an error invoking your application code.\n // This is expected behavior and NOT indicative of a bug with sentry.javascript.\n throw error;\n },\n );\n };\n });\n}\n\ntype XHRSendInput = null | Blob | BufferSource | FormData | URLSearchParams | string;\n\n/** JSDoc */\ninterface SentryWrappedXMLHttpRequest extends XMLHttpRequest {\n [key: string]: any;\n __sentry_xhr__?: {\n method?: string;\n url?: string;\n status_code?: number;\n body?: XHRSendInput;\n };\n}\n\n/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/** Extract `method` from fetch call arguments */\nfunction getFetchMethod(fetchArgs: any[] = []): string {\n if ('Request' in global && isInstanceOf(fetchArgs[0], Request) && fetchArgs[0].method) {\n return String(fetchArgs[0].method).toUpperCase();\n }\n if (fetchArgs[1] && fetchArgs[1].method) {\n return String(fetchArgs[1].method).toUpperCase();\n }\n return 'GET';\n}\n\n/** Extract `url` from fetch call arguments */\nfunction getFetchUrl(fetchArgs: any[] = []): string {\n if (typeof fetchArgs[0] === 'string') {\n return fetchArgs[0];\n }\n if ('Request' in global && isInstanceOf(fetchArgs[0], Request)) {\n return fetchArgs[0].url;\n }\n return String(fetchArgs[0]);\n}\n/* eslint-enable @typescript-eslint/no-unsafe-member-access */\n\n/** JSDoc */\nfunction instrumentXHR(): void {\n if (!('XMLHttpRequest' in global)) {\n return;\n }\n\n const xhrproto = XMLHttpRequest.prototype;\n\n fill(xhrproto, 'open', function (originalOpen: () => void): () => void {\n return function (this: SentryWrappedXMLHttpRequest, ...args: any[]): void {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const xhr = this;\n const url = args[1];\n const xhrInfo: SentryWrappedXMLHttpRequest['__sentry_xhr__'] = (xhr.__sentry_xhr__ = {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n method: isString(args[0]) ? args[0].toUpperCase() : args[0],\n url: args[1],\n });\n\n // if Sentry key appears in URL, don't capture it as a request\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (isString(url) && xhrInfo.method === 'POST' && url.match(/sentry_key/)) {\n xhr.__sentry_own_request__ = true;\n }\n\n const onreadystatechangeHandler = function (): void {\n if (xhr.readyState === 4) {\n try {\n // touching statusCode in some platforms throws\n // an exception\n xhrInfo.status_code = xhr.status;\n } catch (e) {\n /* do nothing */\n }\n\n triggerHandlers('xhr', {\n args,\n endTimestamp: Date.now(),\n startTimestamp: Date.now(),\n xhr,\n });\n }\n };\n\n if ('onreadystatechange' in xhr && typeof xhr.onreadystatechange === 'function') {\n fill(xhr, 'onreadystatechange', function (original: WrappedFunction): Function {\n return function (...readyStateArgs: any[]): void {\n onreadystatechangeHandler();\n return original.apply(xhr, readyStateArgs);\n };\n });\n } else {\n xhr.addEventListener('readystatechange', onreadystatechangeHandler);\n }\n\n return originalOpen.apply(xhr, args);\n };\n });\n\n fill(xhrproto, 'send', function (originalSend: () => void): () => void {\n return function (this: SentryWrappedXMLHttpRequest, ...args: any[]): void {\n if (this.__sentry_xhr__ && args[0] !== undefined) {\n this.__sentry_xhr__.body = args[0];\n }\n\n triggerHandlers('xhr', {\n args,\n startTimestamp: Date.now(),\n xhr: this,\n });\n\n return originalSend.apply(this, args);\n };\n });\n}\n\nlet lastHref: string;\n\n/** JSDoc */\nfunction instrumentHistory(): void {\n if (!supportsHistory()) {\n return;\n }\n\n const oldOnPopState = global.onpopstate;\n global.onpopstate = function (this: WindowEventHandlers, ...args: any[]): any {\n const to = global.location.href;\n // keep track of the current URL state, as we always receive only the updated state\n const from = lastHref;\n lastHref = to;\n triggerHandlers('history', {\n from,\n to,\n });\n if (oldOnPopState) {\n // Apparently this can throw in Firefox when incorrectly implemented plugin is installed.\n // https://github.com/getsentry/sentry-javascript/issues/3344\n // https://github.com/bugsnag/bugsnag-js/issues/469\n try {\n return oldOnPopState.apply(this, args);\n } catch (_oO) {\n // no-empty\n }\n }\n };\n\n /** @hidden */\n function historyReplacementFunction(originalHistoryFunction: () => void): () => void {\n return function (this: History, ...args: any[]): void {\n const url = args.length > 2 ? args[2] : undefined;\n if (url) {\n // coerce to string (this is what pushState does)\n const from = lastHref;\n const to = String(url);\n // keep track of the current URL state, as we always receive only the updated state\n lastHref = to;\n triggerHandlers('history', {\n from,\n to,\n });\n }\n return originalHistoryFunction.apply(this, args);\n };\n }\n\n fill(global.history, 'pushState', historyReplacementFunction);\n fill(global.history, 'replaceState', historyReplacementFunction);\n}\n\nconst debounceDuration = 1000;\nlet debounceTimerID: number | undefined;\nlet lastCapturedEvent: Event | undefined;\n\n/**\n * Decide whether the current event should finish the debounce of previously captured one.\n * @param previous previously captured event\n * @param current event to be captured\n */\nfunction shouldShortcircuitPreviousDebounce(previous: Event | undefined, current: Event): boolean {\n // If there was no previous event, it should always be swapped for the new one.\n if (!previous) {\n return true;\n }\n\n // If both events have different type, then user definitely performed two separate actions. e.g. click + keypress.\n if (previous.type !== current.type) {\n return true;\n }\n\n try {\n // If both events have the same type, it's still possible that actions were performed on different targets.\n // e.g. 2 clicks on different buttons.\n if (previous.target !== current.target) {\n return true;\n }\n } catch (e) {\n // just accessing `target` property can throw an exception in some rare circumstances\n // see: https://github.com/getsentry/sentry-javascript/issues/838\n }\n\n // If both events have the same type _and_ same `target` (an element which triggered an event, _not necessarily_\n // to which an event listener was attached), we treat them as the same action, as we want to capture\n // only one breadcrumb. e.g. multiple clicks on the same button, or typing inside a user input box.\n return false;\n}\n\n/**\n * Decide whether an event should be captured.\n * @param event event to be captured\n */\nfunction shouldSkipDOMEvent(event: Event): boolean {\n // We are only interested in filtering `keypress` events for now.\n if (event.type !== 'keypress') {\n return false;\n }\n\n try {\n const target = event.target as HTMLElement;\n\n if (!target || !target.tagName) {\n return true;\n }\n\n // Only consider keypress events on actual input elements. This will disregard keypresses targeting body\n // e.g.tabbing through elements, hotkeys, etc.\n if (target.tagName === 'INPUT' || target.tagName === 'TEXTAREA' || target.isContentEditable) {\n return false;\n }\n } catch (e) {\n // just accessing `target` property can throw an exception in some rare circumstances\n // see: https://github.com/getsentry/sentry-javascript/issues/838\n }\n\n return true;\n}\n\n/**\n * Wraps addEventListener to capture UI breadcrumbs\n * @param handler function that will be triggered\n * @param globalListener indicates whether event was captured by the global event listener\n * @returns wrapped breadcrumb events handler\n * @hidden\n */\nfunction makeDOMEventHandler(handler: Function, globalListener: boolean = false): (event: Event) => void {\n return (event: Event): void => {\n // It's possible this handler might trigger multiple times for the same\n // event (e.g. event propagation through node ancestors).\n // Ignore if we've already captured that event.\n if (!event || lastCapturedEvent === event) {\n return;\n }\n\n // We always want to skip _some_ events.\n if (shouldSkipDOMEvent(event)) {\n return;\n }\n\n const name = event.type === 'keypress' ? 'input' : event.type;\n\n // If there is no debounce timer, it means that we can safely capture the new event and store it for future comparisons.\n if (debounceTimerID === undefined) {\n handler({\n event: event,\n name,\n global: globalListener,\n });\n lastCapturedEvent = event;\n }\n // If there is a debounce awaiting, see if the new event is different enough to treat it as a unique one.\n // If that's the case, emit the previous event and store locally the newly-captured DOM event.\n else if (shouldShortcircuitPreviousDebounce(lastCapturedEvent, event)) {\n handler({\n event: event,\n name,\n global: globalListener,\n });\n lastCapturedEvent = event;\n }\n\n // Start a new debounce timer that will prevent us from capturing multiple events that should be grouped together.\n clearTimeout(debounceTimerID);\n debounceTimerID = global.setTimeout(() => {\n debounceTimerID = undefined;\n }, debounceDuration);\n };\n}\n\ntype AddEventListener = (\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions,\n) => void;\ntype RemoveEventListener = (\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions,\n) => void;\n\ntype InstrumentedElement = Element & {\n __sentry_instrumentation_handlers__?: {\n [key in 'click' | 'keypress']?: {\n handler?: Function;\n /** The number of custom listeners attached to this element */\n refCount: number;\n };\n };\n};\n\n/** JSDoc */\nfunction instrumentDOM(): void {\n if (!('document' in global)) {\n return;\n }\n\n // Make it so that any click or keypress that is unhandled / bubbled up all the way to the document triggers our dom\n // handlers. (Normally we have only one, which captures a breadcrumb for each click or keypress.) Do this before\n // we instrument `addEventListener` so that we don't end up attaching this handler twice.\n const triggerDOMHandler = triggerHandlers.bind(null, 'dom');\n const globalDOMEventHandler = makeDOMEventHandler(triggerDOMHandler, true);\n global.document.addEventListener('click', globalDOMEventHandler, false);\n global.document.addEventListener('keypress', globalDOMEventHandler, false);\n\n // After hooking into click and keypress events bubbled up to `document`, we also hook into user-handled\n // clicks & keypresses, by adding an event listener of our own to any element to which they add a listener. That\n // way, whenever one of their handlers is triggered, ours will be, too. (This is needed because their handler\n // could potentially prevent the event from bubbling up to our global listeners. This way, our handler are still\n // guaranteed to fire at least once.)\n ['EventTarget', 'Node'].forEach((target: string) => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n const proto = (global as any)[target] && (global as any)[target].prototype;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, no-prototype-builtins\n if (!proto || !proto.hasOwnProperty || !proto.hasOwnProperty('addEventListener')) {\n return;\n }\n\n fill(proto, 'addEventListener', function (originalAddEventListener: AddEventListener): AddEventListener {\n return function (\n this: Element,\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions,\n ): AddEventListener {\n if (type === 'click' || type == 'keypress') {\n try {\n const el = this as InstrumentedElement;\n const handlers = (el.__sentry_instrumentation_handlers__ = el.__sentry_instrumentation_handlers__ || {});\n const handlerForType = (handlers[type] = handlers[type] || { refCount: 0 });\n\n if (!handlerForType.handler) {\n const handler = makeDOMEventHandler(triggerDOMHandler);\n handlerForType.handler = handler;\n originalAddEventListener.call(this, type, handler, options);\n }\n\n handlerForType.refCount += 1;\n } catch (e) {\n // Accessing dom properties is always fragile.\n // Also allows us to skip `addEventListenrs` calls with no proper `this` context.\n }\n }\n\n return originalAddEventListener.call(this, type, listener, options);\n };\n });\n\n fill(\n proto,\n 'removeEventListener',\n function (originalRemoveEventListener: RemoveEventListener): RemoveEventListener {\n return function (\n this: Element,\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions,\n ): () => void {\n if (type === 'click' || type == 'keypress') {\n try {\n const el = this as InstrumentedElement;\n const handlers = el.__sentry_instrumentation_handlers__ || {};\n const handlerForType = handlers[type];\n\n if (handlerForType) {\n handlerForType.refCount -= 1;\n // If there are no longer any custom handlers of the current type on this element, we can remove ours, too.\n if (handlerForType.refCount <= 0) {\n originalRemoveEventListener.call(this, type, handlerForType.handler, options);\n handlerForType.handler = undefined;\n delete handlers[type]; // eslint-disable-line @typescript-eslint/no-dynamic-delete\n }\n\n // If there are no longer any custom handlers of any type on this element, cleanup everything.\n if (Object.keys(handlers).length === 0) {\n delete el.__sentry_instrumentation_handlers__;\n }\n }\n } catch (e) {\n // Accessing dom properties is always fragile.\n // Also allows us to skip `addEventListenrs` calls with no proper `this` context.\n }\n }\n\n return originalRemoveEventListener.call(this, type, listener, options);\n };\n },\n );\n });\n}\n\nlet _oldOnErrorHandler: OnErrorEventHandler = null;\n/** JSDoc */\nfunction instrumentError(): void {\n _oldOnErrorHandler = global.onerror;\n\n global.onerror = function (msg: any, url: any, line: any, column: any, error: any): boolean {\n triggerHandlers('error', {\n column,\n error,\n line,\n msg,\n url,\n });\n\n if (_oldOnErrorHandler) {\n // eslint-disable-next-line prefer-rest-params\n return _oldOnErrorHandler.apply(this, arguments);\n }\n\n return false;\n };\n}\n\nlet _oldOnUnhandledRejectionHandler: ((e: any) => void) | null = null;\n/** JSDoc */\nfunction instrumentUnhandledRejection(): void {\n _oldOnUnhandledRejectionHandler = global.onunhandledrejection;\n\n global.onunhandledrejection = function (e: any): boolean {\n triggerHandlers('unhandledrejection', e);\n\n if (_oldOnUnhandledRejectionHandler) {\n // eslint-disable-next-line prefer-rest-params\n return _oldOnUnhandledRejectionHandler.apply(this, arguments);\n }\n\n return true;\n };\n}\n","import { Primitive } from '@sentry/types';\n\nimport { isNaN, isSyntheticEvent } from './is';\nimport { memoBuilder, MemoFunc } from './memo';\nimport { convertToPlainObject } from './object';\nimport { getFunctionName } from './stacktrace';\n\ntype Prototype = { constructor: (...args: unknown[]) => unknown };\n// This is a hack to placate TS, relying on the fact that technically, arrays are objects with integer keys. Normally we\n// think of those keys as actual numbers, but `arr['0']` turns out to work just as well as `arr[0]`, and doing it this\n// way lets us use a single type in the places where behave as if we are only dealing with objects, even if some of them\n// might be arrays.\ntype ObjOrArray = { [key: string]: T };\n\n/**\n * Recursively normalizes the given object.\n *\n * - Creates a copy to prevent original input mutation\n * - Skips non-enumerable properties\n * - When stringifying, calls `toJSON` if implemented\n * - Removes circular references\n * - Translates non-serializable values (`undefined`/`NaN`/functions) to serializable format\n * - Translates known global objects/classes to a string representations\n * - Takes care of `Error` object serialization\n * - Optionally limits depth of final output\n * - Optionally limits number of properties/elements included in any single object/array\n *\n * @param input The object to be normalized.\n * @param depth The max depth to which to normalize the object. (Anything deeper stringified whole.)\n * @param maxProperties The max number of elements or properties to be included in any single array or\n * object in the normallized output..\n * @returns A normalized version of the object, or `\"**non-serializable**\"` if any errors are thrown during normalization.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function normalize(input: unknown, depth: number = +Infinity, maxProperties: number = +Infinity): any {\n try {\n // since we're at the outermost level, we don't provide a key\n return visit('', input, depth, maxProperties);\n } catch (err) {\n return { ERROR: `**non-serializable** (${err})` };\n }\n}\n\n/** JSDoc */\nexport function normalizeToSize(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n object: { [key: string]: any },\n // Default Node.js REPL depth\n depth: number = 3,\n // 100kB, as 200kB is max payload size, so half sounds reasonable\n maxSize: number = 100 * 1024,\n): T {\n const normalized = normalize(object, depth);\n\n if (jsonSize(normalized) > maxSize) {\n return normalizeToSize(object, depth - 1, maxSize);\n }\n\n return normalized as T;\n}\n\n/**\n * Visits a node to perform normalization on it\n *\n * @param key The key corresponding to the given node\n * @param value The node to be visited\n * @param depth Optional number indicating the maximum recursion depth\n * @param maxProperties Optional maximum number of properties/elements included in any single object/array\n * @param memo Optional Memo class handling decycling\n */\nfunction visit(\n key: string,\n value: unknown,\n depth: number = +Infinity,\n maxProperties: number = +Infinity,\n memo: MemoFunc = memoBuilder(),\n): Primitive | ObjOrArray {\n const [memoize, unmemoize] = memo;\n\n // Get the simple cases out of the way first\n if (value === null || (['number', 'boolean', 'string'].includes(typeof value) && !isNaN(value))) {\n return value as Primitive;\n }\n\n const stringified = stringifyValue(key, value);\n\n // Anything we could potentially dig into more (objects or arrays) will have come back as `\"[object XXXX]\"`.\n // Everything else will have already been serialized, so if we don't see that pattern, we're done.\n if (!stringified.startsWith('[object ')) {\n return stringified;\n }\n\n // From here on, we can assert that `value` is either an object or an array.\n\n // Do not normalize objects that we know have already been normalized. As a general rule, the\n // \"__sentry_skip_normalization__\" property should only be used sparingly and only should only be set on objects that\n // have already been normalized.\n if ((value as ObjOrArray)['__sentry_skip_normalization__']) {\n return value as ObjOrArray;\n }\n\n // We're also done if we've reached the max depth\n if (depth === 0) {\n // At this point we know `serialized` is a string of the form `\"[object XXXX]\"`. Clean it up so it's just `\"[XXXX]\"`.\n return stringified.replace('object ', '');\n }\n\n // If we've already visited this branch, bail out, as it's circular reference. If not, note that we're seeing it now.\n if (memoize(value)) {\n return '[Circular ~]';\n }\n\n // If the value has a `toJSON` method, we call it to extract more information\n const valueWithToJSON = value as unknown & { toJSON?: () => unknown };\n if (valueWithToJSON && typeof valueWithToJSON.toJSON === 'function') {\n try {\n const jsonValue = valueWithToJSON.toJSON();\n // We need to normalize the return value of `.toJSON()` in case it has circular references\n return visit('', jsonValue, depth - 1, maxProperties, memo);\n } catch (err) {\n // pass (The built-in `toJSON` failed, but we can still try to do it ourselves)\n }\n }\n\n // At this point we know we either have an object or an array, we haven't seen it before, and we're going to recurse\n // because we haven't yet reached the max depth. Create an accumulator to hold the results of visiting each\n // property/entry, and keep track of the number of items we add to it.\n const normalized = (Array.isArray(value) ? [] : {}) as ObjOrArray;\n let numAdded = 0;\n\n // Before we begin, convert`Error` and`Event` instances into plain objects, since some of each of their relevant\n // properties are non-enumerable and otherwise would get missed.\n const visitable = convertToPlainObject(value as ObjOrArray);\n\n for (const visitKey in visitable) {\n // Avoid iterating over fields in the prototype if they've somehow been exposed to enumeration.\n if (!Object.prototype.hasOwnProperty.call(visitable, visitKey)) {\n continue;\n }\n\n if (numAdded >= maxProperties) {\n normalized[visitKey] = '[MaxProperties ~]';\n break;\n }\n\n // Recursively visit all the child nodes\n const visitValue = visitable[visitKey];\n normalized[visitKey] = visit(visitKey, visitValue, depth - 1, maxProperties, memo);\n\n numAdded += 1;\n }\n\n // Once we've visited all the branches, remove the parent from memo storage\n unmemoize(value);\n\n // Return accumulated values\n return normalized;\n}\n\n// TODO remove this in v7 (this means the method will no longer be exported, under any name)\nexport { visit as walk };\n\n/**\n * Stringify the given value. Handles various known special values and types.\n *\n * Not meant to be used on simple primitives which already have a string representation, as it will, for example, turn\n * the number 1231 into \"[Object Number]\", nor on `null`, as it will throw.\n *\n * @param value The value to stringify\n * @returns A stringified representation of the given value\n */\nfunction stringifyValue(\n key: unknown,\n // this type is a tiny bit of a cheat, since this function does handle NaN (which is technically a number), but for\n // our internal use, it'll do\n value: Exclude,\n): string {\n try {\n if (key === 'domain' && value && typeof value === 'object' && (value as { _events: unknown })._events) {\n return '[Domain]';\n }\n\n if (key === 'domainEmitter') {\n return '[DomainEmitter]';\n }\n\n // It's safe to use `global`, `window`, and `document` here in this manner, as we are asserting using `typeof` first\n // which won't throw if they are not present.\n\n if (typeof global !== 'undefined' && value === global) {\n return '[Global]';\n }\n\n // eslint-disable-next-line no-restricted-globals\n if (typeof window !== 'undefined' && value === window) {\n return '[Window]';\n }\n\n // eslint-disable-next-line no-restricted-globals\n if (typeof document !== 'undefined' && value === document) {\n return '[Document]';\n }\n\n // React's SyntheticEvent thingy\n if (isSyntheticEvent(value)) {\n return '[SyntheticEvent]';\n }\n\n if (typeof value === 'number' && value !== value) {\n return '[NaN]';\n }\n\n // this catches `undefined` (but not `null`, which is a primitive and can be serialized on its own)\n if (value === void 0) {\n return '[undefined]';\n }\n\n if (typeof value === 'function') {\n return `[Function: ${getFunctionName(value)}]`;\n }\n\n if (typeof value === 'symbol') {\n return `[${String(value)}]`;\n }\n\n // stringified BigInts are indistinguishable from regular numbers, so we need to label them to avoid confusion\n if (typeof value === 'bigint') {\n return `[BigInt: ${String(value)}]`;\n }\n\n // Now that we've knocked out all the special cases and the primitives, all we have left are objects. Simply casting\n // them to strings means that instances of classes which haven't defined their `toStringTag` will just come out as\n // `\"[object Object]\"`. If we instead look at the constructor's name (which is the same as the name of the class),\n // we can make sure that only plain objects come out that way.\n return `[object ${(Object.getPrototypeOf(value) as Prototype).constructor.name}]`;\n } catch (err) {\n return `**non-serializable** (${err})`;\n }\n}\n\n/** Calculates bytes size of input string */\nfunction utf8Length(value: string): number {\n // eslint-disable-next-line no-bitwise\n return ~-encodeURI(value).split(/%..|./).length;\n}\n\n/** Calculates bytes size of input object */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction jsonSize(value: any): number {\n return utf8Length(JSON.stringify(value));\n}\n","/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nexport type MemoFunc = [\n // memoize\n (obj: any) => boolean,\n // unmemoize\n (obj: any) => void,\n];\n\n/**\n * Helper to decycle json objects\n */\nexport function memoBuilder(): MemoFunc {\n const hasWeakSet = typeof WeakSet === 'function';\n const inner: any = hasWeakSet ? new WeakSet() : [];\n function memoize(obj: any): boolean {\n if (hasWeakSet) {\n if (inner.has(obj)) {\n return true;\n }\n inner.add(obj);\n return false;\n }\n // eslint-disable-next-line @typescript-eslint/prefer-for-of\n for (let i = 0; i < inner.length; i++) {\n const value = inner[i];\n if (value === obj) {\n return true;\n }\n }\n inner.push(obj);\n return false;\n }\n\n function unmemoize(obj: any): void {\n if (hasWeakSet) {\n inner.delete(obj);\n } else {\n for (let i = 0; i < inner.length; i++) {\n if (inner[i] === obj) {\n inner.splice(i, 1);\n break;\n }\n }\n }\n }\n return [memoize, unmemoize];\n}\n","import { Event, EventHint, Exception, Severity, SeverityLevel, StackFrame, StackParser } from '@sentry/types';\nimport {\n addExceptionMechanism,\n addExceptionTypeValue,\n extractExceptionKeysForMessage,\n isDOMError,\n isDOMException,\n isError,\n isErrorEvent,\n isEvent,\n isPlainObject,\n normalizeToSize,\n resolvedSyncPromise,\n} from '@sentry/utils';\n\n/**\n * This function creates an exception from a JavaScript Error\n */\nexport function exceptionFromError(stackParser: StackParser, ex: Error): Exception {\n // Get the frames first since Opera can lose the stack if we touch anything else first\n const frames = parseStackFrames(stackParser, ex);\n\n const exception: Exception = {\n type: ex && ex.name,\n value: extractMessage(ex),\n };\n\n if (frames.length) {\n exception.stacktrace = { frames };\n }\n\n if (exception.type === undefined && exception.value === '') {\n exception.value = 'Unrecoverable error caught';\n }\n\n return exception;\n}\n\n/**\n * @hidden\n */\nexport function eventFromPlainObject(\n stackParser: StackParser,\n exception: Record,\n syntheticException?: Error,\n isUnhandledRejection?: boolean,\n): Event {\n const event: Event = {\n exception: {\n values: [\n {\n type: isEvent(exception) ? exception.constructor.name : isUnhandledRejection ? 'UnhandledRejection' : 'Error',\n value: `Non-Error ${\n isUnhandledRejection ? 'promise rejection' : 'exception'\n } captured with keys: ${extractExceptionKeysForMessage(exception)}`,\n },\n ],\n },\n extra: {\n __serialized__: normalizeToSize(exception),\n },\n };\n\n if (syntheticException) {\n const frames = parseStackFrames(stackParser, syntheticException);\n if (frames.length) {\n // event.exception.values[0] has been set above\n (event.exception as { values: Exception[] }).values[0].stacktrace = { frames };\n }\n }\n\n return event;\n}\n\n/**\n * @hidden\n */\nexport function eventFromError(stackParser: StackParser, ex: Error): Event {\n return {\n exception: {\n values: [exceptionFromError(stackParser, ex)],\n },\n };\n}\n\n/** Parses stack frames from an error */\nexport function parseStackFrames(\n stackParser: StackParser,\n ex: Error & { framesToPop?: number; stacktrace?: string },\n): StackFrame[] {\n // Access and store the stacktrace property before doing ANYTHING\n // else to it because Opera is not very good at providing it\n // reliably in other circumstances.\n const stacktrace = ex.stacktrace || ex.stack || '';\n\n const popSize = getPopSize(ex);\n\n try {\n return stackParser(stacktrace, popSize);\n } catch (e) {\n // no-empty\n }\n\n return [];\n}\n\n// Based on our own mapping pattern - https://github.com/getsentry/sentry/blob/9f08305e09866c8bd6d0c24f5b0aabdd7dd6c59c/src/sentry/lang/javascript/errormapping.py#L83-L108\nconst reactMinifiedRegexp = /Minified React error #\\d+;/i;\n\nfunction getPopSize(ex: Error & { framesToPop?: number }): number {\n if (ex) {\n if (typeof ex.framesToPop === 'number') {\n return ex.framesToPop;\n }\n\n if (reactMinifiedRegexp.test(ex.message)) {\n return 1;\n }\n }\n\n return 0;\n}\n\n/**\n * There are cases where stacktrace.message is an Event object\n * https://github.com/getsentry/sentry-javascript/issues/1949\n * In this specific case we try to extract stacktrace.message.error.message\n */\nfunction extractMessage(ex: Error & { message: { error?: Error } }): string {\n const message = ex && ex.message;\n if (!message) {\n return 'No error message';\n }\n if (message.error && typeof message.error.message === 'string') {\n return message.error.message;\n }\n return message;\n}\n\n/**\n * Creates an {@link Event} from all inputs to `captureException` and non-primitive inputs to `captureMessage`.\n * @hidden\n */\nexport function eventFromException(\n stackParser: StackParser,\n exception: unknown,\n hint?: EventHint,\n attachStacktrace?: boolean,\n): PromiseLike {\n const syntheticException = (hint && hint.syntheticException) || undefined;\n const event = eventFromUnknownInput(stackParser, exception, syntheticException, attachStacktrace);\n addExceptionMechanism(event); // defaults to { type: 'generic', handled: true }\n event.level = 'error';\n if (hint && hint.event_id) {\n event.event_id = hint.event_id;\n }\n return resolvedSyncPromise(event);\n}\n\n/**\n * Builds and Event from a Message\n * @hidden\n */\nexport function eventFromMessage(\n stackParser: StackParser,\n message: string,\n // eslint-disable-next-line deprecation/deprecation\n level: Severity | SeverityLevel = 'info',\n hint?: EventHint,\n attachStacktrace?: boolean,\n): PromiseLike {\n const syntheticException = (hint && hint.syntheticException) || undefined;\n const event = eventFromString(stackParser, message, syntheticException, attachStacktrace);\n event.level = level;\n if (hint && hint.event_id) {\n event.event_id = hint.event_id;\n }\n return resolvedSyncPromise(event);\n}\n\n/**\n * @hidden\n */\nexport function eventFromUnknownInput(\n stackParser: StackParser,\n exception: unknown,\n syntheticException?: Error,\n attachStacktrace?: boolean,\n isUnhandledRejection?: boolean,\n): Event {\n let event: Event;\n\n if (isErrorEvent(exception as ErrorEvent) && (exception as ErrorEvent).error) {\n // If it is an ErrorEvent with `error` property, extract it to get actual Error\n const errorEvent = exception as ErrorEvent;\n return eventFromError(stackParser, errorEvent.error as Error);\n }\n\n // If it is a `DOMError` (which is a legacy API, but still supported in some browsers) then we just extract the name\n // and message, as it doesn't provide anything else. According to the spec, all `DOMExceptions` should also be\n // `Error`s, but that's not the case in IE11, so in that case we treat it the same as we do a `DOMError`.\n //\n // https://developer.mozilla.org/en-US/docs/Web/API/DOMError\n // https://developer.mozilla.org/en-US/docs/Web/API/DOMException\n // https://webidl.spec.whatwg.org/#es-DOMException-specialness\n if (isDOMError(exception as DOMError) || isDOMException(exception as DOMException)) {\n const domException = exception as DOMException;\n\n if ('stack' in (exception as Error)) {\n event = eventFromError(stackParser, exception as Error);\n } else {\n const name = domException.name || (isDOMError(domException) ? 'DOMError' : 'DOMException');\n const message = domException.message ? `${name}: ${domException.message}` : name;\n event = eventFromString(stackParser, message, syntheticException, attachStacktrace);\n addExceptionTypeValue(event, message);\n }\n if ('code' in domException) {\n event.tags = { ...event.tags, 'DOMException.code': `${domException.code}` };\n }\n\n return event;\n }\n if (isError(exception)) {\n // we have a real Error object, do nothing\n return eventFromError(stackParser, exception);\n }\n if (isPlainObject(exception) || isEvent(exception)) {\n // If it's a plain object or an instance of `Event` (the built-in JS kind, not this SDK's `Event` type), serialize\n // it manually. This will allow us to group events based on top-level keys which is much better than creating a new\n // group on any key/value change.\n const objectException = exception as Record;\n event = eventFromPlainObject(stackParser, objectException, syntheticException, isUnhandledRejection);\n addExceptionMechanism(event, {\n synthetic: true,\n });\n return event;\n }\n\n // If none of previous checks were valid, then it means that it's not:\n // - an instance of DOMError\n // - an instance of DOMException\n // - an instance of Event\n // - an instance of Error\n // - a valid ErrorEvent (one with an error property)\n // - a plain Object\n //\n // So bail out and capture it as a simple message:\n event = eventFromString(stackParser, exception as string, syntheticException, attachStacktrace);\n addExceptionTypeValue(event, `${exception}`, undefined);\n addExceptionMechanism(event, {\n synthetic: true,\n });\n\n return event;\n}\n\n/**\n * @hidden\n */\nexport function eventFromString(\n stackParser: StackParser,\n input: string,\n syntheticException?: Error,\n attachStacktrace?: boolean,\n): Event {\n const event: Event = {\n message: input,\n };\n\n if (attachStacktrace && syntheticException) {\n const frames = parseStackFrames(stackParser, syntheticException);\n if (frames.length) {\n event.exception = {\n values: [{ value: input, stacktrace: { frames } }],\n };\n }\n }\n\n return event;\n}\n","import { captureException, withScope } from '@sentry/core';\nimport { DsnLike, Event as SentryEvent, Mechanism, Scope, WrappedFunction } from '@sentry/types';\nimport {\n addExceptionMechanism,\n addExceptionTypeValue,\n addNonEnumerableProperty,\n getOriginalFunction,\n markFunctionWrapped,\n} from '@sentry/utils';\n\nlet ignoreOnError: number = 0;\n\n/**\n * @hidden\n */\nexport function shouldIgnoreOnError(): boolean {\n return ignoreOnError > 0;\n}\n\n/**\n * @hidden\n */\nexport function ignoreNextOnError(): void {\n // onerror should trigger before setTimeout\n ignoreOnError += 1;\n setTimeout(() => {\n ignoreOnError -= 1;\n });\n}\n\n/**\n * Instruments the given function and sends an event to Sentry every time the\n * function throws an exception.\n *\n * @param fn A function to wrap. It is generally safe to pass an unbound function, because the returned wrapper always\n * has a correct `this` context.\n * @returns The wrapped function.\n * @hidden\n */\nexport function wrap(\n fn: WrappedFunction,\n options: {\n mechanism?: Mechanism;\n } = {},\n before?: WrappedFunction,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n): any {\n // for future readers what this does is wrap a function and then create\n // a bi-directional wrapping between them.\n //\n // example: wrapped = wrap(original);\n // original.__sentry_wrapped__ -> wrapped\n // wrapped.__sentry_original__ -> original\n\n if (typeof fn !== 'function') {\n return fn;\n }\n\n try {\n // if we're dealing with a function that was previously wrapped, return\n // the original wrapper.\n const wrapper = fn.__sentry_wrapped__;\n if (wrapper) {\n return wrapper;\n }\n\n // We don't wanna wrap it twice\n if (getOriginalFunction(fn)) {\n return fn;\n }\n } catch (e) {\n // Just accessing custom props in some Selenium environments\n // can cause a \"Permission denied\" exception (see raven-js#495).\n // Bail on wrapping and return the function as-is (defers to window.onerror).\n return fn;\n }\n\n /* eslint-disable prefer-rest-params */\n // It is important that `sentryWrapped` is not an arrow function to preserve the context of `this`\n const sentryWrapped: WrappedFunction = function (this: unknown): void {\n const args = Array.prototype.slice.call(arguments);\n\n try {\n if (before && typeof before === 'function') {\n before.apply(this, arguments);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access\n const wrappedArguments = args.map((arg: any) => wrap(arg, options));\n\n // Attempt to invoke user-land function\n // NOTE: If you are a Sentry user, and you are seeing this stack frame, it\n // means the sentry.javascript SDK caught an error invoking your application code. This\n // is expected behavior and NOT indicative of a bug with sentry.javascript.\n return fn.apply(this, wrappedArguments);\n } catch (ex) {\n ignoreNextOnError();\n\n withScope((scope: Scope) => {\n scope.addEventProcessor((event: SentryEvent) => {\n if (options.mechanism) {\n addExceptionTypeValue(event, undefined, undefined);\n addExceptionMechanism(event, options.mechanism);\n }\n\n event.extra = {\n ...event.extra,\n arguments: args,\n };\n\n return event;\n });\n\n captureException(ex);\n });\n\n throw ex;\n }\n };\n /* eslint-enable prefer-rest-params */\n\n // Accessing some objects may throw\n // ref: https://github.com/getsentry/sentry-javascript/issues/1168\n try {\n for (const property in fn) {\n if (Object.prototype.hasOwnProperty.call(fn, property)) {\n sentryWrapped[property] = fn[property];\n }\n }\n } catch (_oO) {} // eslint-disable-line no-empty\n\n // Signal that this function has been wrapped/filled already\n // for both debugging and to prevent it to being wrapped/filled twice\n markFunctionWrapped(sentryWrapped, fn);\n\n addNonEnumerableProperty(fn, '__sentry_wrapped__', sentryWrapped);\n\n // Restore original function name (not all browsers allow that)\n try {\n const descriptor = Object.getOwnPropertyDescriptor(sentryWrapped, 'name') as PropertyDescriptor;\n if (descriptor.configurable) {\n Object.defineProperty(sentryWrapped, 'name', {\n get(): string {\n return fn.name;\n },\n });\n }\n // eslint-disable-next-line no-empty\n } catch (_oO) {}\n\n return sentryWrapped;\n}\n\n/**\n * All properties the report dialog supports\n */\nexport interface ReportDialogOptions {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [key: string]: any;\n eventId?: string;\n dsn?: DsnLike;\n user?: {\n email?: string;\n name?: string;\n };\n lang?: string;\n title?: string;\n subtitle?: string;\n subtitle2?: string;\n labelName?: string;\n labelEmail?: string;\n labelComments?: string;\n labelClose?: string;\n labelSubmit?: string;\n errorGeneric?: string;\n errorFormEntry?: string;\n successMessage?: string;\n /** Callback after reportDialog showed up */\n onLoad?(): void;\n}\n","/* eslint-disable @typescript-eslint/no-unsafe-member-access */\nimport { getCurrentHub } from '@sentry/core';\nimport { Event, EventHint, Hub, Integration, Primitive, StackParser } from '@sentry/types';\nimport {\n addExceptionMechanism,\n addInstrumentationHandler,\n getLocationHref,\n isErrorEvent,\n isPrimitive,\n isString,\n logger,\n} from '@sentry/utils';\n\nimport { BrowserClient } from '../client';\nimport { eventFromUnknownInput } from '../eventbuilder';\nimport { shouldIgnoreOnError } from '../helpers';\n\ntype GlobalHandlersIntegrationsOptionKeys = 'onerror' | 'onunhandledrejection';\n\n/** JSDoc */\ntype GlobalHandlersIntegrations = Record;\n\n/** Global handlers */\nexport class GlobalHandlers implements Integration {\n /**\n * @inheritDoc\n */\n public static id: string = 'GlobalHandlers';\n\n /**\n * @inheritDoc\n */\n public name: string = GlobalHandlers.id;\n\n /** JSDoc */\n private readonly _options: GlobalHandlersIntegrations;\n\n /**\n * Stores references functions to installing handlers. Will set to undefined\n * after they have been run so that they are not used twice.\n */\n private _installFunc: Record void) | undefined> = {\n onerror: _installGlobalOnErrorHandler,\n onunhandledrejection: _installGlobalOnUnhandledRejectionHandler,\n };\n\n /** JSDoc */\n public constructor(options?: GlobalHandlersIntegrations) {\n this._options = {\n onerror: true,\n onunhandledrejection: true,\n ...options,\n };\n }\n /**\n * @inheritDoc\n */\n public setupOnce(): void {\n Error.stackTraceLimit = 50;\n const options = this._options;\n\n // We can disable guard-for-in as we construct the options object above + do checks against\n // `this._installFunc` for the property.\n // eslint-disable-next-line guard-for-in\n for (const key in options) {\n const installFunc = this._installFunc[key as GlobalHandlersIntegrationsOptionKeys];\n if (installFunc && options[key as GlobalHandlersIntegrationsOptionKeys]) {\n globalHandlerLog(key);\n installFunc();\n this._installFunc[key as GlobalHandlersIntegrationsOptionKeys] = undefined;\n }\n }\n }\n}\n\n/** JSDoc */\nfunction _installGlobalOnErrorHandler(): void {\n addInstrumentationHandler(\n 'error',\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (data: { msg: any; url: any; line: any; column: any; error: any }) => {\n const [hub, stackParser, attachStacktrace] = getHubAndOptions();\n if (!hub.getIntegration(GlobalHandlers)) {\n return;\n }\n const { msg, url, line, column, error } = data;\n if (shouldIgnoreOnError() || (error && error.__sentry_own_request__)) {\n return;\n }\n\n const event =\n error === undefined && isString(msg)\n ? _eventFromIncompleteOnError(msg, url, line, column)\n : _enhanceEventWithInitialFrame(\n eventFromUnknownInput(stackParser, error || msg, undefined, attachStacktrace, false),\n url,\n line,\n column,\n );\n\n event.level = 'error';\n\n addMechanismAndCapture(hub, error, event, 'onerror');\n },\n );\n}\n\n/** JSDoc */\nfunction _installGlobalOnUnhandledRejectionHandler(): void {\n addInstrumentationHandler(\n 'unhandledrejection',\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (e: any) => {\n const [hub, stackParser, attachStacktrace] = getHubAndOptions();\n if (!hub.getIntegration(GlobalHandlers)) {\n return;\n }\n let error = e;\n\n // dig the object of the rejection out of known event types\n try {\n // PromiseRejectionEvents store the object of the rejection under 'reason'\n // see https://developer.mozilla.org/en-US/docs/Web/API/PromiseRejectionEvent\n if ('reason' in e) {\n error = e.reason;\n }\n // something, somewhere, (likely a browser extension) effectively casts PromiseRejectionEvents\n // to CustomEvents, moving the `promise` and `reason` attributes of the PRE into\n // the CustomEvent's `detail` attribute, since they're not part of CustomEvent's spec\n // see https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent and\n // https://github.com/getsentry/sentry-javascript/issues/2380\n else if ('detail' in e && 'reason' in e.detail) {\n error = e.detail.reason;\n }\n } catch (_oO) {\n // no-empty\n }\n\n if (shouldIgnoreOnError() || (error && error.__sentry_own_request__)) {\n return true;\n }\n\n const event = isPrimitive(error)\n ? _eventFromRejectionWithPrimitive(error)\n : eventFromUnknownInput(stackParser, error, undefined, attachStacktrace, true);\n\n event.level = 'error';\n\n addMechanismAndCapture(hub, error, event, 'onunhandledrejection');\n return;\n },\n );\n}\n\n/**\n * Create an event from a promise rejection where the `reason` is a primitive.\n *\n * @param reason: The `reason` property of the promise rejection\n * @returns An Event object with an appropriate `exception` value\n */\nfunction _eventFromRejectionWithPrimitive(reason: Primitive): Event {\n return {\n exception: {\n values: [\n {\n type: 'UnhandledRejection',\n // String() is needed because the Primitive type includes symbols (which can't be automatically stringified)\n value: `Non-Error promise rejection captured with value: ${String(reason)}`,\n },\n ],\n },\n };\n}\n\n/**\n * This function creates a stack from an old, error-less onerror handler.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _eventFromIncompleteOnError(msg: any, url: any, line: any, column: any): Event {\n const ERROR_TYPES_RE =\n /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/i;\n\n // If 'message' is ErrorEvent, get real message from inside\n let message = isErrorEvent(msg) ? msg.message : msg;\n let name = 'Error';\n\n const groups = message.match(ERROR_TYPES_RE);\n if (groups) {\n name = groups[1];\n message = groups[2];\n }\n\n const event = {\n exception: {\n values: [\n {\n type: name,\n value: message,\n },\n ],\n },\n };\n\n return _enhanceEventWithInitialFrame(event, url, line, column);\n}\n\n/** JSDoc */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _enhanceEventWithInitialFrame(event: Event, url: any, line: any, column: any): Event {\n // event.exception\n const e = (event.exception = event.exception || {});\n // event.exception.values\n const ev = (e.values = e.values || []);\n // event.exception.values[0]\n const ev0 = (ev[0] = ev[0] || {});\n // event.exception.values[0].stacktrace\n const ev0s = (ev0.stacktrace = ev0.stacktrace || {});\n // event.exception.values[0].stacktrace.frames\n const ev0sf = (ev0s.frames = ev0s.frames || []);\n\n const colno = isNaN(parseInt(column, 10)) ? undefined : column;\n const lineno = isNaN(parseInt(line, 10)) ? undefined : line;\n const filename = isString(url) && url.length > 0 ? url : getLocationHref();\n\n // event.exception.values[0].stacktrace.frames\n if (ev0sf.length === 0) {\n ev0sf.push({\n colno,\n filename,\n function: '?',\n in_app: true,\n lineno,\n });\n }\n\n return event;\n}\n\nfunction globalHandlerLog(type: string): void {\n __DEBUG_BUILD__ && logger.log(`Global Handler attached: ${type}`);\n}\n\nfunction addMechanismAndCapture(hub: Hub, error: EventHint['originalException'], event: Event, type: string): void {\n addExceptionMechanism(event, {\n handled: false,\n type,\n });\n hub.captureEvent(event, {\n originalException: error,\n });\n}\n\nfunction getHubAndOptions(): [Hub, StackParser, boolean | undefined] {\n const hub = getCurrentHub();\n const client = hub.getClient();\n const options = (client && client.getOptions()) || {\n stackParser: () => [],\n attachStacktrace: false,\n };\n return [hub, options.stackParser, options.attachStacktrace];\n}\n","import { Integration, WrappedFunction } from '@sentry/types';\nimport { fill, getFunctionName, getGlobalObject, getOriginalFunction } from '@sentry/utils';\n\nimport { wrap } from '../helpers';\n\nconst DEFAULT_EVENT_TARGET = [\n 'EventTarget',\n 'Window',\n 'Node',\n 'ApplicationCache',\n 'AudioTrackList',\n 'ChannelMergerNode',\n 'CryptoOperation',\n 'EventSource',\n 'FileReader',\n 'HTMLUnknownElement',\n 'IDBDatabase',\n 'IDBRequest',\n 'IDBTransaction',\n 'KeyOperation',\n 'MediaController',\n 'MessagePort',\n 'ModalWindow',\n 'Notification',\n 'SVGElementInstance',\n 'Screen',\n 'TextTrack',\n 'TextTrackCue',\n 'TextTrackList',\n 'WebSocket',\n 'WebSocketWorker',\n 'Worker',\n 'XMLHttpRequest',\n 'XMLHttpRequestEventTarget',\n 'XMLHttpRequestUpload',\n];\n\ntype XMLHttpRequestProp = 'onload' | 'onerror' | 'onprogress' | 'onreadystatechange';\n\n/** JSDoc */\ninterface TryCatchOptions {\n setTimeout: boolean;\n setInterval: boolean;\n requestAnimationFrame: boolean;\n XMLHttpRequest: boolean;\n eventTarget: boolean | string[];\n}\n\n/** Wrap timer functions and event targets to catch errors and provide better meta data */\nexport class TryCatch implements Integration {\n /**\n * @inheritDoc\n */\n public static id: string = 'TryCatch';\n\n /**\n * @inheritDoc\n */\n public name: string = TryCatch.id;\n\n /** JSDoc */\n private readonly _options: TryCatchOptions;\n\n /**\n * @inheritDoc\n */\n public constructor(options?: Partial) {\n this._options = {\n XMLHttpRequest: true,\n eventTarget: true,\n requestAnimationFrame: true,\n setInterval: true,\n setTimeout: true,\n ...options,\n };\n }\n\n /**\n * Wrap timer functions and event targets to catch errors\n * and provide better metadata.\n */\n public setupOnce(): void {\n const global = getGlobalObject();\n\n if (this._options.setTimeout) {\n fill(global, 'setTimeout', _wrapTimeFunction);\n }\n\n if (this._options.setInterval) {\n fill(global, 'setInterval', _wrapTimeFunction);\n }\n\n if (this._options.requestAnimationFrame) {\n fill(global, 'requestAnimationFrame', _wrapRAF);\n }\n\n if (this._options.XMLHttpRequest && 'XMLHttpRequest' in global) {\n fill(XMLHttpRequest.prototype, 'send', _wrapXHR);\n }\n\n const eventTargetOption = this._options.eventTarget;\n if (eventTargetOption) {\n const eventTarget = Array.isArray(eventTargetOption) ? eventTargetOption : DEFAULT_EVENT_TARGET;\n eventTarget.forEach(_wrapEventTarget);\n }\n }\n}\n\n/** JSDoc */\nfunction _wrapTimeFunction(original: () => void): () => number {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return function (this: any, ...args: any[]): number {\n const originalCallback = args[0];\n args[0] = wrap(originalCallback, {\n mechanism: {\n data: { function: getFunctionName(original) },\n handled: true,\n type: 'instrument',\n },\n });\n return original.apply(this, args);\n };\n}\n\n/** JSDoc */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _wrapRAF(original: any): (callback: () => void) => any {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return function (this: any, callback: () => void): () => void {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return original.apply(this, [\n wrap(callback, {\n mechanism: {\n data: {\n function: 'requestAnimationFrame',\n handler: getFunctionName(original),\n },\n handled: true,\n type: 'instrument',\n },\n }),\n ]);\n };\n}\n\n/** JSDoc */\nfunction _wrapXHR(originalSend: () => void): () => void {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return function (this: XMLHttpRequest, ...args: any[]): void {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const xhr = this;\n const xmlHttpRequestProps: XMLHttpRequestProp[] = ['onload', 'onerror', 'onprogress', 'onreadystatechange'];\n\n xmlHttpRequestProps.forEach(prop => {\n if (prop in xhr && typeof xhr[prop] === 'function') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n fill(xhr, prop, function (original: WrappedFunction): () => any {\n const wrapOptions = {\n mechanism: {\n data: {\n function: prop,\n handler: getFunctionName(original),\n },\n handled: true,\n type: 'instrument',\n },\n };\n\n // If Instrument integration has been called before TryCatch, get the name of original function\n const originalFunction = getOriginalFunction(original);\n if (originalFunction) {\n wrapOptions.mechanism.data.handler = getFunctionName(originalFunction);\n }\n\n // Otherwise wrap directly\n return wrap(original, wrapOptions);\n });\n }\n });\n\n return originalSend.apply(this, args);\n };\n}\n\n/** JSDoc */\nfunction _wrapEventTarget(target: string): void {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const global = getGlobalObject() as { [key: string]: any };\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n const proto = global[target] && global[target].prototype;\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, no-prototype-builtins\n if (!proto || !proto.hasOwnProperty || !proto.hasOwnProperty('addEventListener')) {\n return;\n }\n\n fill(proto, 'addEventListener', function (original: () => void): (\n eventName: string,\n fn: EventListenerObject,\n options?: boolean | AddEventListenerOptions,\n ) => void {\n return function (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this: any,\n eventName: string,\n fn: EventListenerObject,\n options?: boolean | AddEventListenerOptions,\n ): (eventName: string, fn: EventListenerObject, capture?: boolean, secure?: boolean) => void {\n try {\n if (typeof fn.handleEvent === 'function') {\n // ESlint disable explanation:\n // First, it is generally safe to call `wrap` with an unbound function. Furthermore, using `.bind()` would\n // introduce a bug here, because bind returns a new function that doesn't have our\n // flags(like __sentry_original__) attached. `wrap` checks for those flags to avoid unnecessary wrapping.\n // Without those flags, every call to addEventListener wraps the function again, causing a memory leak.\n // eslint-disable-next-line @typescript-eslint/unbound-method\n fn.handleEvent = wrap(fn.handleEvent, {\n mechanism: {\n data: {\n function: 'handleEvent',\n handler: getFunctionName(fn),\n target,\n },\n handled: true,\n type: 'instrument',\n },\n });\n }\n } catch (err) {\n // can sometimes get 'Permission denied to access property \"handle Event'\n }\n\n return original.apply(this, [\n eventName,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n wrap(fn as any as WrappedFunction, {\n mechanism: {\n data: {\n function: 'addEventListener',\n handler: getFunctionName(fn),\n target,\n },\n handled: true,\n type: 'instrument',\n },\n }),\n options,\n ]);\n };\n });\n\n fill(\n proto,\n 'removeEventListener',\n function (\n originalRemoveEventListener: () => void,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ): (this: any, eventName: string, fn: EventListenerObject, options?: boolean | EventListenerOptions) => () => void {\n return function (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this: any,\n eventName: string,\n fn: EventListenerObject,\n options?: boolean | EventListenerOptions,\n ): () => void {\n /**\n * There are 2 possible scenarios here:\n *\n * 1. Someone passes a callback, which was attached prior to Sentry initialization, or by using unmodified\n * method, eg. `document.addEventListener.call(el, name, handler). In this case, we treat this function\n * as a pass-through, and call original `removeEventListener` with it.\n *\n * 2. Someone passes a callback, which was attached after Sentry was initialized, which means that it was using\n * our wrapped version of `addEventListener`, which internally calls `wrap` helper.\n * This helper \"wraps\" whole callback inside a try/catch statement, and attached appropriate metadata to it,\n * in order for us to make a distinction between wrapped/non-wrapped functions possible.\n * If a function was wrapped, it has additional property of `__sentry_wrapped__`, holding the handler.\n *\n * When someone adds a handler prior to initialization, and then do it again, but after,\n * then we have to detach both of them. Otherwise, if we'd detach only wrapped one, it'd be impossible\n * to get rid of the initial handler and it'd stick there forever.\n */\n const wrappedEventHandler = fn as unknown as WrappedFunction;\n try {\n const originalEventHandler = wrappedEventHandler && wrappedEventHandler.__sentry_wrapped__;\n if (originalEventHandler) {\n originalRemoveEventListener.call(this, eventName, originalEventHandler, options);\n }\n } catch (e) {\n // ignore, accessing __sentry_wrapped__ will throw in some Selenium environments\n }\n return originalRemoveEventListener.call(this, eventName, wrappedEventHandler, options);\n };\n },\n );\n}\n","/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/* eslint-disable max-lines */\nimport { getCurrentHub } from '@sentry/core';\nimport { Integration } from '@sentry/types';\nimport {\n addInstrumentationHandler,\n getGlobalObject,\n htmlTreeAsString,\n parseUrl,\n safeJoin,\n severityLevelFromString,\n} from '@sentry/utils';\n\n/** JSDoc */\ninterface BreadcrumbsOptions {\n console: boolean;\n dom: boolean | { serializeAttribute: string | string[] };\n fetch: boolean;\n history: boolean;\n sentry: boolean;\n xhr: boolean;\n}\n\nexport const BREADCRUMB_INTEGRATION_ID = 'Breadcrumbs';\n\n/**\n * Default Breadcrumbs instrumentations\n * TODO: Deprecated - with v6, this will be renamed to `Instrument`\n */\nexport class Breadcrumbs implements Integration {\n /**\n * @inheritDoc\n */\n public static id: string = BREADCRUMB_INTEGRATION_ID;\n\n /**\n * @inheritDoc\n */\n public name: string = Breadcrumbs.id;\n\n /**\n * Options of the breadcrumbs integration.\n */\n // This field is public, because we use it in the browser client to check if the `sentry` option is enabled.\n public readonly options: Readonly;\n\n /**\n * @inheritDoc\n */\n public constructor(options?: Partial) {\n this.options = {\n console: true,\n dom: true,\n fetch: true,\n history: true,\n sentry: true,\n xhr: true,\n ...options,\n };\n }\n\n /**\n * Instrument browser built-ins w/ breadcrumb capturing\n * - Console API\n * - DOM API (click/typing)\n * - XMLHttpRequest API\n * - Fetch API\n * - History API\n */\n public setupOnce(): void {\n if (this.options.console) {\n addInstrumentationHandler('console', _consoleBreadcrumb);\n }\n if (this.options.dom) {\n addInstrumentationHandler('dom', _domBreadcrumb(this.options.dom));\n }\n if (this.options.xhr) {\n addInstrumentationHandler('xhr', _xhrBreadcrumb);\n }\n if (this.options.fetch) {\n addInstrumentationHandler('fetch', _fetchBreadcrumb);\n }\n if (this.options.history) {\n addInstrumentationHandler('history', _historyBreadcrumb);\n }\n }\n}\n\n/**\n * A HOC that creaes a function that creates breadcrumbs from DOM API calls.\n * This is a HOC so that we get access to dom options in the closure.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _domBreadcrumb(dom: BreadcrumbsOptions['dom']): (handlerData: { [key: string]: any }) => void {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n function _innerDomBreadcrumb(handlerData: { [key: string]: any }): void {\n let target;\n let keyAttrs = typeof dom === 'object' ? dom.serializeAttribute : undefined;\n\n if (typeof keyAttrs === 'string') {\n keyAttrs = [keyAttrs];\n }\n\n // Accessing event.target can throw (see getsentry/raven-js#838, #768)\n try {\n target = handlerData.event.target\n ? htmlTreeAsString(handlerData.event.target as Node, keyAttrs)\n : htmlTreeAsString(handlerData.event as unknown as Node, keyAttrs);\n } catch (e) {\n target = '';\n }\n\n if (target.length === 0) {\n return;\n }\n\n getCurrentHub().addBreadcrumb(\n {\n category: `ui.${handlerData.name}`,\n message: target,\n },\n {\n event: handlerData.event,\n name: handlerData.name,\n global: handlerData.global,\n },\n );\n }\n\n return _innerDomBreadcrumb;\n}\n\n/**\n * Creates breadcrumbs from console API calls\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _consoleBreadcrumb(handlerData: { [key: string]: any }): void {\n const breadcrumb = {\n category: 'console',\n data: {\n arguments: handlerData.args,\n logger: 'console',\n },\n level: severityLevelFromString(handlerData.level),\n message: safeJoin(handlerData.args, ' '),\n };\n\n if (handlerData.level === 'assert') {\n if (handlerData.args[0] === false) {\n breadcrumb.message = `Assertion failed: ${safeJoin(handlerData.args.slice(1), ' ') || 'console.assert'}`;\n breadcrumb.data.arguments = handlerData.args.slice(1);\n } else {\n // Don't capture a breadcrumb for passed assertions\n return;\n }\n }\n\n getCurrentHub().addBreadcrumb(breadcrumb, {\n input: handlerData.args,\n level: handlerData.level,\n });\n}\n\n/**\n * Creates breadcrumbs from XHR API calls\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _xhrBreadcrumb(handlerData: { [key: string]: any }): void {\n if (handlerData.endTimestamp) {\n // We only capture complete, non-sentry requests\n if (handlerData.xhr.__sentry_own_request__) {\n return;\n }\n\n const { method, url, status_code, body } = handlerData.xhr.__sentry_xhr__ || {};\n\n getCurrentHub().addBreadcrumb(\n {\n category: 'xhr',\n data: {\n method,\n url,\n status_code,\n },\n type: 'http',\n },\n {\n xhr: handlerData.xhr,\n input: body,\n },\n );\n\n return;\n }\n}\n\n/**\n * Creates breadcrumbs from fetch API calls\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _fetchBreadcrumb(handlerData: { [key: string]: any }): void {\n // We only capture complete fetch requests\n if (!handlerData.endTimestamp) {\n return;\n }\n\n if (handlerData.fetchData.url.match(/sentry_key/) && handlerData.fetchData.method === 'POST') {\n // We will not create breadcrumbs for fetch requests that contain `sentry_key` (internal sentry requests)\n return;\n }\n\n if (handlerData.error) {\n getCurrentHub().addBreadcrumb(\n {\n category: 'fetch',\n data: handlerData.fetchData,\n level: 'error',\n type: 'http',\n },\n {\n data: handlerData.error,\n input: handlerData.args,\n },\n );\n } else {\n getCurrentHub().addBreadcrumb(\n {\n category: 'fetch',\n data: {\n ...handlerData.fetchData,\n status_code: handlerData.response.status,\n },\n type: 'http',\n },\n {\n input: handlerData.args,\n response: handlerData.response,\n },\n );\n }\n}\n\n/**\n * Creates breadcrumbs from history API calls\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _historyBreadcrumb(handlerData: { [key: string]: any }): void {\n const global = getGlobalObject();\n let from = handlerData.from;\n let to = handlerData.to;\n const parsedLoc = parseUrl(global.location.href);\n let parsedFrom = parseUrl(from);\n const parsedTo = parseUrl(to);\n\n // Initial pushState doesn't provide `from` information\n if (!parsedFrom.path) {\n parsedFrom = parsedLoc;\n }\n\n // Use only the path component of the URL if the URL matches the current\n // document (almost all the time when using pushState)\n if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) {\n to = parsedTo.relative;\n }\n if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) {\n from = parsedFrom.relative;\n }\n\n getCurrentHub().addBreadcrumb({\n category: 'navigation',\n data: {\n from,\n to,\n },\n });\n}\n","/* eslint-disable deprecation/deprecation */\nimport { Severity, SeverityLevel } from '@sentry/types';\n\n// Note: Ideally the `SeverityLevel` type would be derived from `validSeverityLevels`, but that would mean either\n//\n// a) moving `validSeverityLevels` to `@sentry/types`,\n// b) moving the`SeverityLevel` type here, or\n// c) importing `validSeverityLevels` from here into `@sentry/types`.\n//\n// Option A would make `@sentry/types` a runtime dependency of `@sentry/utils` (not good), and options B and C would\n// create a circular dependency between `@sentry/types` and `@sentry/utils` (also not good). So a TODO accompanying the\n// type, reminding anyone who changes it to change this list also, will have to do.\n\nexport const validSeverityLevels = ['fatal', 'error', 'warning', 'log', 'info', 'debug'];\n\n/**\n * Converts a string-based level into a member of the deprecated {@link Severity} enum.\n *\n * @deprecated `severityFromString` is deprecated. Please use `severityLevelFromString` instead.\n *\n * @param level String representation of Severity\n * @returns Severity\n */\nexport function severityFromString(level: Severity | SeverityLevel | string): Severity {\n return severityLevelFromString(level) as Severity;\n}\n\n/**\n * Converts a string-based level into a `SeverityLevel`, normalizing it along the way.\n *\n * @param level String representation of desired `SeverityLevel`.\n * @returns The `SeverityLevel` corresponding to the given string, or 'log' if the string isn't a valid level.\n */\nexport function severityLevelFromString(level: SeverityLevel | string): SeverityLevel {\n return (level === 'warn' ? 'warning' : validSeverityLevels.includes(level) ? level : 'log') as SeverityLevel;\n}\n","import { addGlobalEventProcessor, getCurrentHub } from '@sentry/core';\nimport { Event, EventHint, Exception, ExtendedError, Integration, StackParser } from '@sentry/types';\nimport { isInstanceOf } from '@sentry/utils';\n\nimport { BrowserClient } from '../client';\nimport { exceptionFromError } from '../eventbuilder';\n\nconst DEFAULT_KEY = 'cause';\nconst DEFAULT_LIMIT = 5;\n\ninterface LinkedErrorsOptions {\n key: string;\n limit: number;\n}\n\n/** Adds SDK info to an event. */\nexport class LinkedErrors implements Integration {\n /**\n * @inheritDoc\n */\n public static id: string = 'LinkedErrors';\n\n /**\n * @inheritDoc\n */\n public readonly name: string = LinkedErrors.id;\n\n /**\n * @inheritDoc\n */\n private readonly _key: LinkedErrorsOptions['key'];\n\n /**\n * @inheritDoc\n */\n private readonly _limit: LinkedErrorsOptions['limit'];\n\n /**\n * @inheritDoc\n */\n public constructor(options: Partial = {}) {\n this._key = options.key || DEFAULT_KEY;\n this._limit = options.limit || DEFAULT_LIMIT;\n }\n\n /**\n * @inheritDoc\n */\n public setupOnce(): void {\n const client = getCurrentHub().getClient();\n if (!client) {\n return;\n }\n addGlobalEventProcessor((event: Event, hint?: EventHint) => {\n const self = getCurrentHub().getIntegration(LinkedErrors);\n return self ? _handler(client.getOptions().stackParser, self._key, self._limit, event, hint) : event;\n });\n }\n}\n\n/**\n * @inheritDoc\n */\nexport function _handler(\n parser: StackParser,\n key: string,\n limit: number,\n event: Event,\n hint?: EventHint,\n): Event | null {\n if (!event.exception || !event.exception.values || !hint || !isInstanceOf(hint.originalException, Error)) {\n return event;\n }\n const linkedErrors = _walkErrorTree(parser, limit, hint.originalException as ExtendedError, key);\n event.exception.values = [...linkedErrors, ...event.exception.values];\n return event;\n}\n\n/**\n * JSDOC\n */\nexport function _walkErrorTree(\n parser: StackParser,\n limit: number,\n error: ExtendedError,\n key: string,\n stack: Exception[] = [],\n): Exception[] {\n if (!isInstanceOf(error[key], Error) || stack.length + 1 >= limit) {\n return stack;\n }\n const exception = exceptionFromError(parser, error[key]);\n return _walkErrorTree(parser, limit, error[key], key, [exception, ...stack]);\n}\n","import { addGlobalEventProcessor, getCurrentHub } from '@sentry/core';\nimport { Event, Integration } from '@sentry/types';\nimport { getGlobalObject } from '@sentry/utils';\n\nconst global = getGlobalObject();\n\n/** HttpContext integration collects information about HTTP request headers */\nexport class HttpContext implements Integration {\n /**\n * @inheritDoc\n */\n public static id: string = 'HttpContext';\n\n /**\n * @inheritDoc\n */\n public name: string = HttpContext.id;\n\n /**\n * @inheritDoc\n */\n public setupOnce(): void {\n addGlobalEventProcessor((event: Event) => {\n if (getCurrentHub().getIntegration(HttpContext)) {\n // if none of the information we want exists, don't bother\n if (!global.navigator && !global.location && !global.document) {\n return event;\n }\n\n // grab as much info as exists and add it to the event\n const url = (event.request && event.request.url) || (global.location && global.location.href);\n const { referrer } = global.document || {};\n const { userAgent } = global.navigator || {};\n\n const headers = {\n ...(event.request && event.request.headers),\n ...(referrer && { Referer: referrer }),\n ...(userAgent && { 'User-Agent': userAgent }),\n };\n const request = { ...(url && { url }), headers };\n\n return { ...event, request };\n }\n return event;\n });\n }\n}\n","import { Event, EventProcessor, Exception, Hub, Integration, StackFrame } from '@sentry/types';\nimport { logger } from '@sentry/utils';\n\n/** Deduplication filter */\nexport class Dedupe implements Integration {\n /**\n * @inheritDoc\n */\n public static id: string = 'Dedupe';\n\n /**\n * @inheritDoc\n */\n public name: string = Dedupe.id;\n\n /**\n * @inheritDoc\n */\n private _previousEvent?: Event;\n\n /**\n * @inheritDoc\n */\n public setupOnce(addGlobalEventProcessor: (callback: EventProcessor) => void, getCurrentHub: () => Hub): void {\n const eventProcessor: EventProcessor = currentEvent => {\n const self = getCurrentHub().getIntegration(Dedupe);\n if (self) {\n // Juuust in case something goes wrong\n try {\n if (_shouldDropEvent(currentEvent, self._previousEvent)) {\n __DEBUG_BUILD__ && logger.warn('Event dropped due to being a duplicate of previously captured event.');\n return null;\n }\n } catch (_oO) {\n return (self._previousEvent = currentEvent);\n }\n\n return (self._previousEvent = currentEvent);\n }\n return currentEvent;\n };\n\n eventProcessor.id = this.name;\n addGlobalEventProcessor(eventProcessor);\n }\n}\n\n/** JSDoc */\nfunction _shouldDropEvent(currentEvent: Event, previousEvent?: Event): boolean {\n if (!previousEvent) {\n return false;\n }\n\n if (_isSameMessageEvent(currentEvent, previousEvent)) {\n return true;\n }\n\n if (_isSameExceptionEvent(currentEvent, previousEvent)) {\n return true;\n }\n\n return false;\n}\n\n/** JSDoc */\nfunction _isSameMessageEvent(currentEvent: Event, previousEvent: Event): boolean {\n const currentMessage = currentEvent.message;\n const previousMessage = previousEvent.message;\n\n // If neither event has a message property, they were both exceptions, so bail out\n if (!currentMessage && !previousMessage) {\n return false;\n }\n\n // If only one event has a stacktrace, but not the other one, they are not the same\n if ((currentMessage && !previousMessage) || (!currentMessage && previousMessage)) {\n return false;\n }\n\n if (currentMessage !== previousMessage) {\n return false;\n }\n\n if (!_isSameFingerprint(currentEvent, previousEvent)) {\n return false;\n }\n\n if (!_isSameStacktrace(currentEvent, previousEvent)) {\n return false;\n }\n\n return true;\n}\n\n/** JSDoc */\nfunction _isSameExceptionEvent(currentEvent: Event, previousEvent: Event): boolean {\n const previousException = _getExceptionFromEvent(previousEvent);\n const currentException = _getExceptionFromEvent(currentEvent);\n\n if (!previousException || !currentException) {\n return false;\n }\n\n if (previousException.type !== currentException.type || previousException.value !== currentException.value) {\n return false;\n }\n\n if (!_isSameFingerprint(currentEvent, previousEvent)) {\n return false;\n }\n\n if (!_isSameStacktrace(currentEvent, previousEvent)) {\n return false;\n }\n\n return true;\n}\n\n/** JSDoc */\nfunction _isSameStacktrace(currentEvent: Event, previousEvent: Event): boolean {\n let currentFrames = _getFramesFromEvent(currentEvent);\n let previousFrames = _getFramesFromEvent(previousEvent);\n\n // If neither event has a stacktrace, they are assumed to be the same\n if (!currentFrames && !previousFrames) {\n return true;\n }\n\n // If only one event has a stacktrace, but not the other one, they are not the same\n if ((currentFrames && !previousFrames) || (!currentFrames && previousFrames)) {\n return false;\n }\n\n currentFrames = currentFrames as StackFrame[];\n previousFrames = previousFrames as StackFrame[];\n\n // If number of frames differ, they are not the same\n if (previousFrames.length !== currentFrames.length) {\n return false;\n }\n\n // Otherwise, compare the two\n for (let i = 0; i < previousFrames.length; i++) {\n const frameA = previousFrames[i];\n const frameB = currentFrames[i];\n\n if (\n frameA.filename !== frameB.filename ||\n frameA.lineno !== frameB.lineno ||\n frameA.colno !== frameB.colno ||\n frameA.function !== frameB.function\n ) {\n return false;\n }\n }\n\n return true;\n}\n\n/** JSDoc */\nfunction _isSameFingerprint(currentEvent: Event, previousEvent: Event): boolean {\n let currentFingerprint = currentEvent.fingerprint;\n let previousFingerprint = previousEvent.fingerprint;\n\n // If neither event has a fingerprint, they are assumed to be the same\n if (!currentFingerprint && !previousFingerprint) {\n return true;\n }\n\n // If only one event has a fingerprint, but not the other one, they are not the same\n if ((currentFingerprint && !previousFingerprint) || (!currentFingerprint && previousFingerprint)) {\n return false;\n }\n\n currentFingerprint = currentFingerprint as string[];\n previousFingerprint = previousFingerprint as string[];\n\n // Otherwise, compare the two\n try {\n return !!(currentFingerprint.join('') === previousFingerprint.join(''));\n } catch (_oO) {\n return false;\n }\n}\n\n/** JSDoc */\nfunction _getExceptionFromEvent(event: Event): Exception | undefined {\n return event.exception && event.exception.values && event.exception.values[0];\n}\n\n/** JSDoc */\nfunction _getFramesFromEvent(event: Event): StackFrame[] | undefined {\n const exception = event.exception;\n\n if (exception) {\n try {\n // @ts-ignore Object could be undefined\n return exception.values[0].stacktrace.frames;\n } catch (_oO) {\n return undefined;\n }\n }\n return undefined;\n}\n","import { DsnComponents, DsnLike, DsnProtocol } from '@sentry/types';\n\nimport { SentryError } from './error';\n\n/** Regular expression used to parse a Dsn. */\nconst DSN_REGEX = /^(?:(\\w+):)\\/\\/(?:(\\w+)(?::(\\w+))?@)([\\w.-]+)(?::(\\d+))?\\/(.+)/;\n\nfunction isValidProtocol(protocol?: string): protocol is DsnProtocol {\n return protocol === 'http' || protocol === 'https';\n}\n\n/**\n * Renders the string representation of this Dsn.\n *\n * By default, this will render the public representation without the password\n * component. To get the deprecated private representation, set `withPassword`\n * to true.\n *\n * @param withPassword When set to true, the password will be included.\n */\nexport function dsnToString(dsn: DsnComponents, withPassword: boolean = false): string {\n const { host, path, pass, port, projectId, protocol, publicKey } = dsn;\n return (\n `${protocol}://${publicKey}${withPassword && pass ? `:${pass}` : ''}` +\n `@${host}${port ? `:${port}` : ''}/${path ? `${path}/` : path}${projectId}`\n );\n}\n\n/**\n * Parses a Dsn from a given string.\n *\n * @param str A Dsn as string\n * @returns Dsn as DsnComponents\n */\nexport function dsnFromString(str: string): DsnComponents {\n const match = DSN_REGEX.exec(str);\n\n if (!match) {\n throw new SentryError(`Invalid Sentry Dsn: ${str}`);\n }\n\n const [protocol, publicKey, pass = '', host, port = '', lastPath] = match.slice(1);\n let path = '';\n let projectId = lastPath;\n\n const split = projectId.split('/');\n if (split.length > 1) {\n path = split.slice(0, -1).join('/');\n projectId = split.pop() as string;\n }\n\n if (projectId) {\n const projectMatch = projectId.match(/^\\d+/);\n if (projectMatch) {\n projectId = projectMatch[0];\n }\n }\n\n return dsnFromComponents({ host, pass, path, projectId, port, protocol: protocol as DsnProtocol, publicKey });\n}\n\nfunction dsnFromComponents(components: DsnComponents): DsnComponents {\n return {\n protocol: components.protocol,\n publicKey: components.publicKey || '',\n pass: components.pass || '',\n host: components.host,\n port: components.port || '',\n path: components.path || '',\n projectId: components.projectId,\n };\n}\n\nfunction validateDsn(dsn: DsnComponents): boolean | void {\n if (!__DEBUG_BUILD__) {\n return;\n }\n\n const { port, projectId, protocol } = dsn;\n\n const requiredComponents: ReadonlyArray = ['protocol', 'publicKey', 'host', 'projectId'];\n requiredComponents.forEach(component => {\n if (!dsn[component]) {\n throw new SentryError(`Invalid Sentry Dsn: ${component} missing`);\n }\n });\n\n if (!projectId.match(/^\\d+$/)) {\n throw new SentryError(`Invalid Sentry Dsn: Invalid projectId ${projectId}`);\n }\n\n if (!isValidProtocol(protocol)) {\n throw new SentryError(`Invalid Sentry Dsn: Invalid protocol ${protocol}`);\n }\n\n if (port && isNaN(parseInt(port, 10))) {\n throw new SentryError(`Invalid Sentry Dsn: Invalid port ${port}`);\n }\n\n return true;\n}\n\n/** The Sentry Dsn, identifying a Sentry instance and project. */\nexport function makeDsn(from: DsnLike): DsnComponents {\n const components = typeof from === 'string' ? dsnFromString(from) : dsnFromComponents(from);\n validateDsn(components);\n return components;\n}\n","import { DsnComponents, DsnLike } from '@sentry/types';\nimport { dsnToString, makeDsn, urlEncode } from '@sentry/utils';\n\nconst SENTRY_API_VERSION = '7';\n\n/** Returns the prefix to construct Sentry ingestion API endpoints. */\nfunction getBaseApiEndpoint(dsn: DsnComponents): string {\n const protocol = dsn.protocol ? `${dsn.protocol}:` : '';\n const port = dsn.port ? `:${dsn.port}` : '';\n return `${protocol}//${dsn.host}${port}${dsn.path ? `/${dsn.path}` : ''}/api/`;\n}\n\n/** Returns the ingest API endpoint for target. */\nfunction _getIngestEndpoint(dsn: DsnComponents): string {\n return `${getBaseApiEndpoint(dsn)}${dsn.projectId}/envelope/`;\n}\n\n/** Returns a URL-encoded string with auth config suitable for a query string. */\nfunction _encodedAuth(dsn: DsnComponents): string {\n return urlEncode({\n // We send only the minimum set of required information. See\n // https://github.com/getsentry/sentry-javascript/issues/2572.\n sentry_key: dsn.publicKey,\n sentry_version: SENTRY_API_VERSION,\n });\n}\n\n/**\n * Returns the envelope endpoint URL with auth in the query string.\n *\n * Sending auth as part of the query string and not as custom HTTP headers avoids CORS preflight requests.\n */\nexport function getEnvelopeEndpointWithUrlEncodedAuth(dsn: DsnComponents, tunnel?: string): string {\n return tunnel ? tunnel : `${_getIngestEndpoint(dsn)}?${_encodedAuth(dsn)}`;\n}\n\n/** Returns the url to the report dialog endpoint. */\nexport function getReportDialogEndpoint(\n dsnLike: DsnLike,\n dialogOptions: {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [key: string]: any;\n user?: { name?: string; email?: string };\n },\n): string {\n const dsn = makeDsn(dsnLike);\n const endpoint = `${getBaseApiEndpoint(dsn)}embed/error-page/`;\n\n let encodedOptions = `dsn=${dsnToString(dsn)}`;\n for (const key in dialogOptions) {\n if (key === 'dsn') {\n continue;\n }\n\n if (key === 'user') {\n const user = dialogOptions.user;\n if (!user) {\n continue;\n }\n if (user.name) {\n encodedOptions += `&name=${encodeURIComponent(user.name)}`;\n }\n if (user.email) {\n encodedOptions += `&email=${encodeURIComponent(user.email)}`;\n }\n } else {\n encodedOptions += `&${encodeURIComponent(key)}=${encodeURIComponent(dialogOptions[key] as string)}`;\n }\n }\n\n return `${endpoint}?${encodedOptions}`;\n}\n","import { addGlobalEventProcessor, getCurrentHub } from '@sentry/hub';\nimport { Integration, Options } from '@sentry/types';\nimport { logger } from '@sentry/utils';\n\nexport const installedIntegrations: string[] = [];\n\n/** Map of integrations assigned to a client */\nexport type IntegrationIndex = {\n [key: string]: Integration;\n};\n\n/**\n * @private\n */\nfunction filterDuplicates(integrations: Integration[]): Integration[] {\n return integrations.reduce((acc, integrations) => {\n if (acc.every(accIntegration => integrations.name !== accIntegration.name)) {\n acc.push(integrations);\n }\n return acc;\n }, [] as Integration[]);\n}\n\n/** Gets integration to install */\nexport function getIntegrationsToSetup(options: Options): Integration[] {\n const defaultIntegrations = (options.defaultIntegrations && [...options.defaultIntegrations]) || [];\n const userIntegrations = options.integrations;\n\n let integrations: Integration[] = [...filterDuplicates(defaultIntegrations)];\n\n if (Array.isArray(userIntegrations)) {\n // Filter out integrations that are also included in user options\n integrations = [\n ...integrations.filter(integrations =>\n userIntegrations.every(userIntegration => userIntegration.name !== integrations.name),\n ),\n // And filter out duplicated user options integrations\n ...filterDuplicates(userIntegrations),\n ];\n } else if (typeof userIntegrations === 'function') {\n integrations = userIntegrations(integrations);\n integrations = Array.isArray(integrations) ? integrations : [integrations];\n }\n\n // Make sure that if present, `Debug` integration will always run last\n const integrationsNames = integrations.map(i => i.name);\n const alwaysLastToRun = 'Debug';\n if (integrationsNames.indexOf(alwaysLastToRun) !== -1) {\n integrations.push(...integrations.splice(integrationsNames.indexOf(alwaysLastToRun), 1));\n }\n\n return integrations;\n}\n\n/**\n * Given a list of integration instances this installs them all. When `withDefaults` is set to `true` then all default\n * integrations are added unless they were already provided before.\n * @param integrations array of integration instances\n * @param withDefault should enable default integrations\n */\nexport function setupIntegrations(integrations: Integration[]): IntegrationIndex {\n const integrationIndex: IntegrationIndex = {};\n\n integrations.forEach(integration => {\n integrationIndex[integration.name] = integration;\n\n if (installedIntegrations.indexOf(integration.name) === -1) {\n integration.setupOnce(addGlobalEventProcessor, getCurrentHub);\n installedIntegrations.push(integration.name);\n __DEBUG_BUILD__ && logger.log(`Integration installed: ${integration.name}`);\n }\n });\n\n return integrationIndex;\n}\n","/* eslint-disable max-lines */\nimport { Scope, updateSession } from '@sentry/hub';\nimport {\n Client,\n ClientOptions,\n DataCategory,\n DsnComponents,\n Envelope,\n Event,\n EventDropReason,\n EventHint,\n Integration,\n IntegrationClass,\n Outcome,\n Session,\n SessionAggregates,\n Severity,\n SeverityLevel,\n Transport,\n} from '@sentry/types';\nimport {\n addItemToEnvelope,\n checkOrSetAlreadyCaught,\n createAttachmentEnvelopeItem,\n dateTimestampInSeconds,\n isPlainObject,\n isPrimitive,\n isThenable,\n logger,\n makeDsn,\n normalize,\n rejectedSyncPromise,\n resolvedSyncPromise,\n SentryError,\n SyncPromise,\n truncate,\n uuid4,\n} from '@sentry/utils';\n\nimport { getEnvelopeEndpointWithUrlEncodedAuth } from './api';\nimport { createEventEnvelope, createSessionEnvelope } from './envelope';\nimport { IntegrationIndex, setupIntegrations } from './integration';\n\nconst ALREADY_SEEN_ERROR = \"Not capturing exception because it's already been captured.\";\n\n/**\n * Base implementation for all JavaScript SDK clients.\n *\n * Call the constructor with the corresponding options\n * specific to the client subclass. To access these options later, use\n * {@link Client.getOptions}.\n *\n * If a Dsn is specified in the options, it will be parsed and stored. Use\n * {@link Client.getDsn} to retrieve the Dsn at any moment. In case the Dsn is\n * invalid, the constructor will throw a {@link SentryException}. Note that\n * without a valid Dsn, the SDK will not send any events to Sentry.\n *\n * Before sending an event, it is passed through\n * {@link BaseClient._prepareEvent} to add SDK information and scope data\n * (breadcrumbs and context). To add more custom information, override this\n * method and extend the resulting prepared event.\n *\n * To issue automatically created events (e.g. via instrumentation), use\n * {@link Client.captureEvent}. It will prepare the event and pass it through\n * the callback lifecycle. To issue auto-breadcrumbs, use\n * {@link Client.addBreadcrumb}.\n *\n * @example\n * class NodeClient extends BaseClient {\n * public constructor(options: NodeOptions) {\n * super(options);\n * }\n *\n * // ...\n * }\n */\nexport abstract class BaseClient implements Client {\n /** Options passed to the SDK. */\n protected readonly _options: O;\n\n /** The client Dsn, if specified in options. Without this Dsn, the SDK will be disabled. */\n protected readonly _dsn?: DsnComponents;\n\n protected readonly _transport?: Transport;\n\n /** Array of set up integrations. */\n protected _integrations: IntegrationIndex = {};\n\n /** Indicates whether this client's integrations have been set up. */\n protected _integrationsInitialized: boolean = false;\n\n /** Number of calls being processed */\n protected _numProcessing: number = 0;\n\n /** Holds flushable */\n private _outcomes: { [key: string]: number } = {};\n\n /**\n * Initializes this client instance.\n *\n * @param options Options for the client.\n */\n protected constructor(options: O) {\n this._options = options;\n if (options.dsn) {\n this._dsn = makeDsn(options.dsn);\n const url = getEnvelopeEndpointWithUrlEncodedAuth(this._dsn, options.tunnel);\n this._transport = options.transport({\n recordDroppedEvent: this.recordDroppedEvent.bind(this),\n ...options.transportOptions,\n url,\n });\n } else {\n __DEBUG_BUILD__ && logger.warn('No DSN provided, client will not do anything.');\n }\n }\n\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n public captureException(exception: any, hint?: EventHint, scope?: Scope): string | undefined {\n // ensure we haven't captured this very object before\n if (checkOrSetAlreadyCaught(exception)) {\n __DEBUG_BUILD__ && logger.log(ALREADY_SEEN_ERROR);\n return;\n }\n\n let eventId: string | undefined = hint && hint.event_id;\n\n this._process(\n this.eventFromException(exception, hint)\n .then(event => this._captureEvent(event, hint, scope))\n .then(result => {\n eventId = result;\n }),\n );\n\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n public captureMessage(\n message: string,\n // eslint-disable-next-line deprecation/deprecation\n level?: Severity | SeverityLevel,\n hint?: EventHint,\n scope?: Scope,\n ): string | undefined {\n let eventId: string | undefined = hint && hint.event_id;\n\n const promisedEvent = isPrimitive(message)\n ? this.eventFromMessage(String(message), level, hint)\n : this.eventFromException(message, hint);\n\n this._process(\n promisedEvent\n .then(event => this._captureEvent(event, hint, scope))\n .then(result => {\n eventId = result;\n }),\n );\n\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n public captureEvent(event: Event, hint?: EventHint, scope?: Scope): string | undefined {\n // ensure we haven't captured this very object before\n if (hint && hint.originalException && checkOrSetAlreadyCaught(hint.originalException)) {\n __DEBUG_BUILD__ && logger.log(ALREADY_SEEN_ERROR);\n return;\n }\n\n let eventId: string | undefined = hint && hint.event_id;\n\n this._process(\n this._captureEvent(event, hint, scope).then(result => {\n eventId = result;\n }),\n );\n\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n public captureSession(session: Session): void {\n if (!this._isEnabled()) {\n __DEBUG_BUILD__ && logger.warn('SDK not enabled, will not capture session.');\n return;\n }\n\n if (!(typeof session.release === 'string')) {\n __DEBUG_BUILD__ && logger.warn('Discarded session because of missing or non-string release');\n } else {\n this.sendSession(session);\n // After sending, we set init false to indicate it's not the first occurrence\n updateSession(session, { init: false });\n }\n }\n\n /**\n * @inheritDoc\n */\n public getDsn(): DsnComponents | undefined {\n return this._dsn;\n }\n\n /**\n * @inheritDoc\n */\n public getOptions(): O {\n return this._options;\n }\n\n /**\n * @inheritDoc\n */\n public getTransport(): Transport | undefined {\n return this._transport;\n }\n\n /**\n * @inheritDoc\n */\n public flush(timeout?: number): PromiseLike {\n const transport = this._transport;\n if (transport) {\n return this._isClientDoneProcessing(timeout).then(clientFinished => {\n return transport.flush(timeout).then(transportFlushed => clientFinished && transportFlushed);\n });\n } else {\n return resolvedSyncPromise(true);\n }\n }\n\n /**\n * @inheritDoc\n */\n public close(timeout?: number): PromiseLike {\n return this.flush(timeout).then(result => {\n this.getOptions().enabled = false;\n return result;\n });\n }\n\n /**\n * Sets up the integrations\n */\n public setupIntegrations(): void {\n if (this._isEnabled() && !this._integrationsInitialized) {\n this._integrations = setupIntegrations(this._options.integrations);\n this._integrationsInitialized = true;\n }\n }\n\n /**\n * Gets an installed integration by its `id`.\n *\n * @returns The installed integration or `undefined` if no integration with that `id` was installed.\n */\n public getIntegrationById(integrationId: string): Integration | undefined {\n return this._integrations[integrationId];\n }\n\n /**\n * @inheritDoc\n */\n public getIntegration(integration: IntegrationClass): T | null {\n try {\n return (this._integrations[integration.id] as T) || null;\n } catch (_oO) {\n __DEBUG_BUILD__ && logger.warn(`Cannot retrieve integration ${integration.id} from the current Client`);\n return null;\n }\n }\n\n /**\n * @inheritDoc\n */\n public sendEvent(event: Event, hint: EventHint = {}): void {\n if (this._dsn) {\n let env = createEventEnvelope(event, this._dsn, this._options._metadata, this._options.tunnel);\n\n for (const attachment of hint.attachments || []) {\n env = addItemToEnvelope(\n env,\n createAttachmentEnvelopeItem(\n attachment,\n this._options.transportOptions && this._options.transportOptions.textEncoder,\n ),\n );\n }\n\n this._sendEnvelope(env);\n }\n }\n\n /**\n * @inheritDoc\n */\n public sendSession(session: Session | SessionAggregates): void {\n if (this._dsn) {\n const env = createSessionEnvelope(session, this._dsn, this._options._metadata, this._options.tunnel);\n this._sendEnvelope(env);\n }\n }\n\n /**\n * @inheritDoc\n */\n public recordDroppedEvent(reason: EventDropReason, category: DataCategory): void {\n if (this._options.sendClientReports) {\n // We want to track each category (error, transaction, session) separately\n // but still keep the distinction between different type of outcomes.\n // We could use nested maps, but it's much easier to read and type this way.\n // A correct type for map-based implementation if we want to go that route\n // would be `Partial>>>`\n // With typescript 4.1 we could even use template literal types\n const key = `${reason}:${category}`;\n __DEBUG_BUILD__ && logger.log(`Adding outcome: \"${key}\"`);\n\n // The following works because undefined + 1 === NaN and NaN is falsy\n this._outcomes[key] = this._outcomes[key] + 1 || 1;\n }\n }\n\n /** Updates existing session based on the provided event */\n protected _updateSessionFromEvent(session: Session, event: Event): void {\n let crashed = false;\n let errored = false;\n const exceptions = event.exception && event.exception.values;\n\n if (exceptions) {\n errored = true;\n\n for (const ex of exceptions) {\n const mechanism = ex.mechanism;\n if (mechanism && mechanism.handled === false) {\n crashed = true;\n break;\n }\n }\n }\n\n // A session is updated and that session update is sent in only one of the two following scenarios:\n // 1. Session with non terminal status and 0 errors + an error occurred -> Will set error count to 1 and send update\n // 2. Session with non terminal status and 1 error + a crash occurred -> Will set status crashed and send update\n const sessionNonTerminal = session.status === 'ok';\n const shouldUpdateAndSend = (sessionNonTerminal && session.errors === 0) || (sessionNonTerminal && crashed);\n\n if (shouldUpdateAndSend) {\n updateSession(session, {\n ...(crashed && { status: 'crashed' }),\n errors: session.errors || Number(errored || crashed),\n });\n this.captureSession(session);\n }\n }\n\n /**\n * Determine if the client is finished processing. Returns a promise because it will wait `timeout` ms before saying\n * \"no\" (resolving to `false`) in order to give the client a chance to potentially finish first.\n *\n * @param timeout The time, in ms, after which to resolve to `false` if the client is still busy. Passing `0` (or not\n * passing anything) will make the promise wait as long as it takes for processing to finish before resolving to\n * `true`.\n * @returns A promise which will resolve to `true` if processing is already done or finishes before the timeout, and\n * `false` otherwise\n */\n protected _isClientDoneProcessing(timeout?: number): PromiseLike {\n return new SyncPromise(resolve => {\n let ticked: number = 0;\n const tick: number = 1;\n\n const interval = setInterval(() => {\n if (this._numProcessing == 0) {\n clearInterval(interval);\n resolve(true);\n } else {\n ticked += tick;\n if (timeout && ticked >= timeout) {\n clearInterval(interval);\n resolve(false);\n }\n }\n }, tick);\n });\n }\n\n /** Determines whether this SDK is enabled and a valid Dsn is present. */\n protected _isEnabled(): boolean {\n return this.getOptions().enabled !== false && this._dsn !== undefined;\n }\n\n /**\n * Adds common information to events.\n *\n * The information includes release and environment from `options`,\n * breadcrumbs and context (extra, tags and user) from the scope.\n *\n * Information that is already present in the event is never overwritten. For\n * nested objects, such as the context, keys are merged.\n *\n * @param event The original event.\n * @param hint May contain additional information about the original exception.\n * @param scope A scope containing event metadata.\n * @returns A new event with more information.\n */\n protected _prepareEvent(event: Event, hint: EventHint, scope?: Scope): PromiseLike {\n const { normalizeDepth = 3, normalizeMaxBreadth = 1_000 } = this.getOptions();\n const prepared: Event = {\n ...event,\n event_id: event.event_id || hint.event_id || uuid4(),\n timestamp: event.timestamp || dateTimestampInSeconds(),\n };\n\n this._applyClientOptions(prepared);\n this._applyIntegrationsMetadata(prepared);\n\n // If we have scope given to us, use it as the base for further modifications.\n // This allows us to prevent unnecessary copying of data if `captureContext` is not provided.\n let finalScope = scope;\n if (hint.captureContext) {\n finalScope = Scope.clone(finalScope).update(hint.captureContext);\n }\n\n // We prepare the result here with a resolved Event.\n let result = resolvedSyncPromise(prepared);\n\n // This should be the last thing called, since we want that\n // {@link Hub.addEventProcessor} gets the finished prepared event.\n if (finalScope) {\n // Collect attachments from the hint and scope\n const attachments = [...(hint.attachments || []), ...finalScope.getAttachments()];\n\n if (attachments.length) {\n hint.attachments = attachments;\n }\n\n // In case we have a hub we reassign it.\n result = finalScope.applyToEvent(prepared, hint);\n }\n\n return result.then(evt => {\n if (typeof normalizeDepth === 'number' && normalizeDepth > 0) {\n return this._normalizeEvent(evt, normalizeDepth, normalizeMaxBreadth);\n }\n return evt;\n });\n }\n\n /**\n * Applies `normalize` function on necessary `Event` attributes to make them safe for serialization.\n * Normalized keys:\n * - `breadcrumbs.data`\n * - `user`\n * - `contexts`\n * - `extra`\n * @param event Event\n * @returns Normalized event\n */\n protected _normalizeEvent(event: Event | null, depth: number, maxBreadth: number): Event | null {\n if (!event) {\n return null;\n }\n\n const normalized: Event = {\n ...event,\n ...(event.breadcrumbs && {\n breadcrumbs: event.breadcrumbs.map(b => ({\n ...b,\n ...(b.data && {\n data: normalize(b.data, depth, maxBreadth),\n }),\n })),\n }),\n ...(event.user && {\n user: normalize(event.user, depth, maxBreadth),\n }),\n ...(event.contexts && {\n contexts: normalize(event.contexts, depth, maxBreadth),\n }),\n ...(event.extra && {\n extra: normalize(event.extra, depth, maxBreadth),\n }),\n };\n\n // event.contexts.trace stores information about a Transaction. Similarly,\n // event.spans[] stores information about child Spans. Given that a\n // Transaction is conceptually a Span, normalization should apply to both\n // Transactions and Spans consistently.\n // For now the decision is to skip normalization of Transactions and Spans,\n // so this block overwrites the normalized event to add back the original\n // Transaction information prior to normalization.\n if (event.contexts && event.contexts.trace && normalized.contexts) {\n normalized.contexts.trace = event.contexts.trace;\n\n // event.contexts.trace.data may contain circular/dangerous data so we need to normalize it\n if (event.contexts.trace.data) {\n normalized.contexts.trace.data = normalize(event.contexts.trace.data, depth, maxBreadth);\n }\n }\n\n // event.spans[].data may contain circular/dangerous data so we need to normalize it\n if (event.spans) {\n normalized.spans = event.spans.map(span => {\n // We cannot use the spread operator here because `toJSON` on `span` is non-enumerable\n if (span.data) {\n span.data = normalize(span.data, depth, maxBreadth);\n }\n return span;\n });\n }\n\n return normalized;\n }\n\n /**\n * Enhances event using the client configuration.\n * It takes care of all \"static\" values like environment, release and `dist`,\n * as well as truncating overly long values.\n * @param event event instance to be enhanced\n */\n protected _applyClientOptions(event: Event): void {\n const options = this.getOptions();\n const { environment, release, dist, maxValueLength = 250 } = options;\n\n if (!('environment' in event)) {\n event.environment = 'environment' in options ? environment : 'production';\n }\n\n if (event.release === undefined && release !== undefined) {\n event.release = release;\n }\n\n if (event.dist === undefined && dist !== undefined) {\n event.dist = dist;\n }\n\n if (event.message) {\n event.message = truncate(event.message, maxValueLength);\n }\n\n const exception = event.exception && event.exception.values && event.exception.values[0];\n if (exception && exception.value) {\n exception.value = truncate(exception.value, maxValueLength);\n }\n\n const request = event.request;\n if (request && request.url) {\n request.url = truncate(request.url, maxValueLength);\n }\n }\n\n /**\n * This function adds all used integrations to the SDK info in the event.\n * @param event The event that will be filled with all integrations.\n */\n protected _applyIntegrationsMetadata(event: Event): void {\n const integrationsArray = Object.keys(this._integrations);\n if (integrationsArray.length > 0) {\n event.sdk = event.sdk || {};\n event.sdk.integrations = [...(event.sdk.integrations || []), ...integrationsArray];\n }\n }\n\n /**\n * Processes the event and logs an error in case of rejection\n * @param event\n * @param hint\n * @param scope\n */\n protected _captureEvent(event: Event, hint: EventHint = {}, scope?: Scope): PromiseLike {\n return this._processEvent(event, hint, scope).then(\n finalEvent => {\n return finalEvent.event_id;\n },\n reason => {\n __DEBUG_BUILD__ && logger.warn(reason);\n return undefined;\n },\n );\n }\n\n /**\n * Processes an event (either error or message) and sends it to Sentry.\n *\n * This also adds breadcrumbs and context information to the event. However,\n * platform specific meta data (such as the User's IP address) must be added\n * by the SDK implementor.\n *\n *\n * @param event The event to send to Sentry.\n * @param hint May contain additional information about the original exception.\n * @param scope A scope containing event metadata.\n * @returns A SyncPromise that resolves with the event or rejects in case event was/will not be send.\n */\n protected _processEvent(event: Event, hint: EventHint, scope?: Scope): PromiseLike {\n const { beforeSend, sampleRate } = this.getOptions();\n\n if (!this._isEnabled()) {\n return rejectedSyncPromise(new SentryError('SDK not enabled, will not capture event.'));\n }\n\n const isTransaction = event.type === 'transaction';\n // 1.0 === 100% events are sent\n // 0.0 === 0% events are sent\n // Sampling for transaction happens somewhere else\n if (!isTransaction && typeof sampleRate === 'number' && Math.random() > sampleRate) {\n this.recordDroppedEvent('sample_rate', 'error');\n return rejectedSyncPromise(\n new SentryError(\n `Discarding event because it's not included in the random sample (sampling rate = ${sampleRate})`,\n ),\n );\n }\n\n return this._prepareEvent(event, hint, scope)\n .then(prepared => {\n if (prepared === null) {\n this.recordDroppedEvent('event_processor', event.type || 'error');\n throw new SentryError('An event processor returned null, will not send event.');\n }\n\n const isInternalException = hint.data && (hint.data as { __sentry__: boolean }).__sentry__ === true;\n if (isInternalException || isTransaction || !beforeSend) {\n return prepared;\n }\n\n const beforeSendResult = beforeSend(prepared, hint);\n return _ensureBeforeSendRv(beforeSendResult);\n })\n .then(processedEvent => {\n if (processedEvent === null) {\n this.recordDroppedEvent('before_send', event.type || 'error');\n throw new SentryError('`beforeSend` returned `null`, will not send event.');\n }\n\n const session = scope && scope.getSession();\n if (!isTransaction && session) {\n this._updateSessionFromEvent(session, processedEvent);\n }\n\n this.sendEvent(processedEvent, hint);\n return processedEvent;\n })\n .then(null, reason => {\n if (reason instanceof SentryError) {\n throw reason;\n }\n\n this.captureException(reason, {\n data: {\n __sentry__: true,\n },\n originalException: reason as Error,\n });\n throw new SentryError(\n `Event processing pipeline threw an error, original event will not be sent. Details have been sent as a new event.\\nReason: ${reason}`,\n );\n });\n }\n\n /**\n * Occupies the client with processing and event\n */\n protected _process(promise: PromiseLike): void {\n this._numProcessing += 1;\n void promise.then(\n value => {\n this._numProcessing -= 1;\n return value;\n },\n reason => {\n this._numProcessing -= 1;\n return reason;\n },\n );\n }\n\n /**\n * @inheritdoc\n */\n protected _sendEnvelope(envelope: Envelope): void {\n if (this._transport && this._dsn) {\n this._transport.send(envelope).then(null, reason => {\n __DEBUG_BUILD__ && logger.error('Error while sending event:', reason);\n });\n } else {\n __DEBUG_BUILD__ && logger.error('Transport disabled');\n }\n }\n\n /**\n * Clears outcomes on this client and returns them.\n */\n protected _clearOutcomes(): Outcome[] {\n const outcomes = this._outcomes;\n this._outcomes = {};\n return Object.keys(outcomes).map(key => {\n const [reason, category] = key.split(':') as [EventDropReason, DataCategory];\n return {\n reason,\n category,\n quantity: outcomes[key],\n };\n });\n }\n\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n public abstract eventFromException(_exception: any, _hint?: EventHint): PromiseLike;\n\n /**\n * @inheritDoc\n */\n public abstract eventFromMessage(\n _message: string,\n // eslint-disable-next-line deprecation/deprecation\n _level?: Severity | SeverityLevel,\n _hint?: EventHint,\n ): PromiseLike;\n}\n\n/**\n * Verifies that return value of configured `beforeSend` is of expected type.\n */\nfunction _ensureBeforeSendRv(rv: PromiseLike | Event | null): PromiseLike | Event | null {\n const nullErr = '`beforeSend` method has to return `null` or a valid event.';\n if (isThenable(rv)) {\n return rv.then(\n event => {\n if (!(isPlainObject(event) || event === null)) {\n throw new SentryError(nullErr);\n }\n return event;\n },\n e => {\n throw new SentryError(`beforeSend rejected with ${e}`);\n },\n );\n } else if (!(isPlainObject(rv) || rv === null)) {\n throw new SentryError(nullErr);\n }\n return rv;\n}\n","import { getGlobalObject, isNativeFetch, logger, supportsFetch } from '@sentry/utils';\n\nconst global = getGlobalObject();\nlet cachedFetchImpl: FetchImpl;\n\nexport type FetchImpl = typeof fetch;\n\n/**\n * A special usecase for incorrectly wrapped Fetch APIs in conjunction with ad-blockers.\n * Whenever someone wraps the Fetch API and returns the wrong promise chain,\n * this chain becomes orphaned and there is no possible way to capture it's rejections\n * other than allowing it bubble up to this very handler. eg.\n *\n * const f = window.fetch;\n * window.fetch = function () {\n * const p = f.apply(this, arguments);\n *\n * p.then(function() {\n * console.log('hi.');\n * });\n *\n * return p;\n * }\n *\n * `p.then(function () { ... })` is producing a completely separate promise chain,\n * however, what's returned is `p` - the result of original `fetch` call.\n *\n * This mean, that whenever we use the Fetch API to send our own requests, _and_\n * some ad-blocker blocks it, this orphaned chain will _always_ reject,\n * effectively causing another event to be captured.\n * This makes a whole process become an infinite loop, which we need to somehow\n * deal with, and break it in one way or another.\n *\n * To deal with this issue, we are making sure that we _always_ use the real\n * browser Fetch API, instead of relying on what `window.fetch` exposes.\n * The only downside to this would be missing our own requests as breadcrumbs,\n * but because we are already not doing this, it should be just fine.\n *\n * Possible failed fetch error messages per-browser:\n *\n * Chrome: Failed to fetch\n * Edge: Failed to Fetch\n * Firefox: NetworkError when attempting to fetch resource\n * Safari: resource blocked by content blocker\n */\nexport function getNativeFetchImplementation(): FetchImpl {\n if (cachedFetchImpl) {\n return cachedFetchImpl;\n }\n\n /* eslint-disable @typescript-eslint/unbound-method */\n\n // Fast path to avoid DOM I/O\n if (isNativeFetch(global.fetch)) {\n return (cachedFetchImpl = global.fetch.bind(global));\n }\n\n const document = global.document;\n let fetchImpl = global.fetch;\n // eslint-disable-next-line deprecation/deprecation\n if (document && typeof document.createElement === 'function') {\n try {\n const sandbox = document.createElement('iframe');\n sandbox.hidden = true;\n document.head.appendChild(sandbox);\n const contentWindow = sandbox.contentWindow;\n if (contentWindow && contentWindow.fetch) {\n fetchImpl = contentWindow.fetch;\n }\n document.head.removeChild(sandbox);\n } catch (e) {\n __DEBUG_BUILD__ &&\n logger.warn('Could not create sandbox iframe for pure fetch check, bailing to window.fetch: ', e);\n }\n }\n\n return (cachedFetchImpl = fetchImpl.bind(global));\n /* eslint-enable @typescript-eslint/unbound-method */\n}\n\n/**\n * Sends sdk client report using sendBeacon or fetch as a fallback if available\n *\n * @param url report endpoint\n * @param body report payload\n */\nexport function sendReport(url: string, body: string | Uint8Array): void {\n const isRealNavigator = Object.prototype.toString.call(global && global.navigator) === '[object Navigator]';\n const hasSendBeacon = isRealNavigator && typeof global.navigator.sendBeacon === 'function';\n\n if (hasSendBeacon) {\n // Prevent illegal invocations - https://xgwang.me/posts/you-may-not-know-beacon/#it-may-throw-error%2C-be-sure-to-catch\n const sendBeacon = global.navigator.sendBeacon.bind(global.navigator);\n sendBeacon(url, body);\n } else if (supportsFetch()) {\n const fetch = getNativeFetchImplementation();\n fetch(url, {\n body,\n method: 'POST',\n credentials: 'omit',\n keepalive: true,\n }).then(null, error => {\n __DEBUG_BUILD__ && logger.error(error);\n });\n }\n}\n","import { Baggage, BaggageObj, HttpHeaderValue, TraceparentData } from '@sentry/types';\n\nimport { isString } from './is';\nimport { logger } from './logger';\n\nexport const BAGGAGE_HEADER_NAME = 'baggage';\n\nexport const SENTRY_BAGGAGE_KEY_PREFIX = 'sentry-';\n\nexport const SENTRY_BAGGAGE_KEY_PREFIX_REGEX = /^sentry-/;\n\n/**\n * Max length of a serialized baggage string\n *\n * https://www.w3.org/TR/baggage/#limits\n */\nexport const MAX_BAGGAGE_STRING_LENGTH = 8192;\n\n/** Create an instance of Baggage */\nexport function createBaggage(initItems: BaggageObj, baggageString: string = '', mutable: boolean = true): Baggage {\n return [{ ...initItems }, baggageString, mutable];\n}\n\n/** Get a value from baggage */\nexport function getBaggageValue(baggage: Baggage, key: keyof BaggageObj): BaggageObj[keyof BaggageObj] {\n return baggage[0][key];\n}\n\n/** Add a value to baggage */\nexport function setBaggageValue(baggage: Baggage, key: keyof BaggageObj, value: BaggageObj[keyof BaggageObj]): void {\n if (isBaggageMutable(baggage)) {\n baggage[0][key] = value;\n }\n}\n\n/** Check if the Sentry part of the passed baggage (i.e. the first element in the tuple) is empty */\nexport function isSentryBaggageEmpty(baggage: Baggage): boolean {\n return Object.keys(baggage[0]).length === 0;\n}\n\n/** Returns Sentry specific baggage values */\nexport function getSentryBaggageItems(baggage: Baggage): BaggageObj {\n return baggage[0];\n}\n\n/**\n * Returns 3rd party baggage string of @param baggage\n * @param baggage\n */\nexport function getThirdPartyBaggage(baggage: Baggage): string {\n return baggage[1];\n}\n\n/**\n * Checks if baggage is mutable\n * @param baggage\n * @returns true if baggage is mutable, else false\n */\nexport function isBaggageMutable(baggage: Baggage): boolean {\n return baggage[2];\n}\n\n/**\n * Sets the passed baggage immutable\n * @param baggage\n */\nexport function setBaggageImmutable(baggage: Baggage): void {\n baggage[2] = false;\n}\n\n/** Serialize a baggage object */\nexport function serializeBaggage(baggage: Baggage): string {\n return Object.keys(baggage[0]).reduce((prev, key: keyof BaggageObj) => {\n const val = baggage[0][key] as string;\n const baggageEntry = `${SENTRY_BAGGAGE_KEY_PREFIX}${encodeURIComponent(key)}=${encodeURIComponent(val)}`;\n const newVal = prev === '' ? baggageEntry : `${prev},${baggageEntry}`;\n if (newVal.length > MAX_BAGGAGE_STRING_LENGTH) {\n __DEBUG_BUILD__ &&\n logger.warn(`Not adding key: ${key} with val: ${val} to baggage due to exceeding baggage size limits.`);\n return prev;\n } else {\n return newVal;\n }\n }, baggage[1]);\n}\n\n/**\n * Parse a baggage header from a string or a string array and return a Baggage object\n *\n * If @param includeThirdPartyEntries is set to true, third party baggage entries are added to the Baggage object\n * (This is necessary for merging potentially pre-existing baggage headers in outgoing requests with\n * our `sentry-` values)\n */\nexport function parseBaggageHeader(\n inputBaggageValue: HttpHeaderValue,\n includeThirdPartyEntries: boolean = false,\n): Baggage {\n // Adding this check here because we got reports of this function failing due to the input value\n // not being a string. This debug log might help us determine what's going on here.\n if ((!Array.isArray(inputBaggageValue) && !isString(inputBaggageValue)) || typeof inputBaggageValue === 'number') {\n __DEBUG_BUILD__ &&\n logger.warn(\n '[parseBaggageHeader] Received input value of incompatible type: ',\n typeof inputBaggageValue,\n inputBaggageValue,\n );\n\n // Gonna early-return an empty baggage object so that we don't fail later on\n return createBaggage({}, '');\n }\n\n const baggageEntries = (isString(inputBaggageValue) ? inputBaggageValue : inputBaggageValue.join(','))\n .split(',')\n .map(entry => entry.trim())\n .filter(entry => entry !== '' && (includeThirdPartyEntries || SENTRY_BAGGAGE_KEY_PREFIX_REGEX.test(entry)));\n\n return baggageEntries.reduce(\n ([baggageObj, baggageString], curr) => {\n const [key, val] = curr.split('=');\n if (SENTRY_BAGGAGE_KEY_PREFIX_REGEX.test(key)) {\n const baggageKey = decodeURIComponent(key.split('-')[1]);\n return [\n {\n ...baggageObj,\n [baggageKey]: decodeURIComponent(val),\n },\n baggageString,\n true,\n ];\n } else {\n return [baggageObj, baggageString === '' ? curr : `${baggageString},${curr}`, true];\n }\n },\n [{}, '', true],\n );\n}\n\n/**\n * Merges the baggage header we saved from the incoming request (or meta tag) with\n * a possibly created or modified baggage header by a third party that's been added\n * to the outgoing request header.\n *\n * In case @param headerBaggageString exists, we can safely add the the 3rd party part of @param headerBaggage\n * with our @param incomingBaggage. This is possible because if we modified anything beforehand,\n * it would only affect parts of the sentry baggage (@see Baggage interface).\n *\n * @param incomingBaggage the baggage header of the incoming request that might contain sentry entries\n * @param thirdPartyBaggageHeader possibly existing baggage header string or string[] added from a third\n * party to the request headers\n *\n * @return a merged and serialized baggage string to be propagated with the outgoing request\n */\nexport function mergeAndSerializeBaggage(incomingBaggage?: Baggage, thirdPartyBaggageHeader?: HttpHeaderValue): string {\n if (!incomingBaggage && !thirdPartyBaggageHeader) {\n return '';\n }\n\n const headerBaggage = (thirdPartyBaggageHeader && parseBaggageHeader(thirdPartyBaggageHeader, true)) || undefined;\n const thirdPartyHeaderBaggage = headerBaggage && getThirdPartyBaggage(headerBaggage);\n\n const finalBaggage = createBaggage((incomingBaggage && incomingBaggage[0]) || {}, thirdPartyHeaderBaggage || '');\n return serializeBaggage(finalBaggage);\n}\n\n/**\n * Helper function that takes a raw baggage string (if available) and the processed sentry-trace header\n * data (if available), parses the baggage string and creates a Baggage object\n * If there is no baggage string, it will create an empty Baggage object.\n * In a second step, this functions determines if the created Baggage object should be set immutable\n * to prevent mutation of the Sentry data.\n *\n * Extracted this logic to a function because it's duplicated in a lot of places.\n *\n * @param rawBaggageValue\n * @param sentryTraceHeader\n */\nexport function parseBaggageSetMutability(\n rawBaggageValue: HttpHeaderValue | false | undefined,\n sentryTraceHeader: TraceparentData | string | false | undefined | null,\n): Baggage {\n const baggage = parseBaggageHeader(rawBaggageValue || '');\n\n // Because we are always creating a Baggage object by calling `parseBaggageHeader` above\n // (either a filled one or an empty one, even if we didn't get a `baggage` header),\n // we only need to check if we have a sentry-trace header or not. As soon as we have it,\n // we set baggage immutable. In case we don't get a sentry-trace header, we can assume that\n // this SDK is the head of the trace and thus we still permit mutation at this time.\n // There is one exception though, which is that we get a baggage-header with `sentry-`\n // items but NO sentry-trace header. In this case we also set the baggage immutable for now\n // but if smoething like this would ever happen, we should revisit this and determine\n // what this would actually mean for the trace (i.e. is this SDK the head?, what happened\n // before that we don't have a sentry-trace header?, etc)\n (sentryTraceHeader || !isSentryBaggageEmpty(baggage)) && setBaggageImmutable(baggage);\n\n return baggage;\n}\n","import { BaseClient, getCurrentHub, getEnvelopeEndpointWithUrlEncodedAuth, Scope, SDK_VERSION } from '@sentry/core';\nimport { ClientOptions, Event, EventHint, Options, Severity, SeverityLevel } from '@sentry/types';\nimport {\n createClientReportEnvelope,\n dsnToString,\n getEventDescription,\n getGlobalObject,\n logger,\n serializeEnvelope,\n} from '@sentry/utils';\n\nimport { eventFromException, eventFromMessage } from './eventbuilder';\nimport { Breadcrumbs } from './integrations';\nimport { BREADCRUMB_INTEGRATION_ID } from './integrations/breadcrumbs';\nimport { BrowserTransportOptions } from './transports/types';\nimport { sendReport } from './transports/utils';\n\nconst globalObject = getGlobalObject();\n\nexport interface BaseBrowserOptions {\n /**\n * A pattern for error URLs which should exclusively be sent to Sentry.\n * This is the opposite of {@link Options.denyUrls}.\n * By default, all errors will be sent.\n */\n allowUrls?: Array;\n\n /**\n * A pattern for error URLs which should not be sent to Sentry.\n * To allow certain errors instead, use {@link Options.allowUrls}.\n * By default, all errors will be sent.\n */\n denyUrls?: Array;\n}\n\n/**\n * Configuration options for the Sentry Browser SDK.\n * @see @sentry/types Options for more information.\n */\nexport interface BrowserOptions extends Options, BaseBrowserOptions {}\n\n/**\n * Configuration options for the Sentry Browser SDK Client class\n * @see BrowserClient for more information.\n */\nexport interface BrowserClientOptions extends ClientOptions, BaseBrowserOptions {}\n\n/**\n * The Sentry Browser SDK Client.\n *\n * @see BrowserOptions for documentation on configuration options.\n * @see SentryClient for usage documentation.\n */\nexport class BrowserClient extends BaseClient {\n /**\n * Creates a new Browser SDK instance.\n *\n * @param options Configuration options for this SDK.\n */\n public constructor(options: BrowserClientOptions) {\n options._metadata = options._metadata || {};\n options._metadata.sdk = options._metadata.sdk || {\n name: 'sentry.javascript.browser',\n packages: [\n {\n name: 'npm:@sentry/browser',\n version: SDK_VERSION,\n },\n ],\n version: SDK_VERSION,\n };\n\n super(options);\n\n if (options.sendClientReports && globalObject.document) {\n globalObject.document.addEventListener('visibilitychange', () => {\n if (globalObject.document.visibilityState === 'hidden') {\n this._flushOutcomes();\n }\n });\n }\n }\n\n /**\n * @inheritDoc\n */\n public eventFromException(exception: unknown, hint?: EventHint): PromiseLike {\n return eventFromException(this._options.stackParser, exception, hint, this._options.attachStacktrace);\n }\n\n /**\n * @inheritDoc\n */\n public eventFromMessage(\n message: string,\n // eslint-disable-next-line deprecation/deprecation\n level: Severity | SeverityLevel = 'info',\n hint?: EventHint,\n ): PromiseLike {\n return eventFromMessage(this._options.stackParser, message, level, hint, this._options.attachStacktrace);\n }\n\n /**\n * @inheritDoc\n */\n public sendEvent(event: Event, hint?: EventHint): void {\n // We only want to add the sentry event breadcrumb when the user has the breadcrumb integration installed and\n // activated its `sentry` option.\n // We also do not want to use the `Breadcrumbs` class here directly, because we do not want it to be included in\n // bundles, if it is not used by the SDK.\n // This all sadly is a bit ugly, but we currently don't have a \"pre-send\" hook on the integrations so we do it this\n // way for now.\n const breadcrumbIntegration = this.getIntegrationById(BREADCRUMB_INTEGRATION_ID) as Breadcrumbs | null;\n if (\n breadcrumbIntegration &&\n // We check for definedness of `options`, even though it is not strictly necessary, because that access to\n // `.sentry` below does not throw, in case users provided their own integration with id \"Breadcrumbs\" that does\n // not have an`options` field\n breadcrumbIntegration.options &&\n breadcrumbIntegration.options.sentry\n ) {\n getCurrentHub().addBreadcrumb(\n {\n category: `sentry.${event.type === 'transaction' ? 'transaction' : 'event'}`,\n event_id: event.event_id,\n level: event.level,\n message: getEventDescription(event),\n },\n {\n event,\n },\n );\n }\n\n super.sendEvent(event, hint);\n }\n\n /**\n * @inheritDoc\n */\n protected _prepareEvent(event: Event, hint: EventHint, scope?: Scope): PromiseLike {\n event.platform = event.platform || 'javascript';\n return super._prepareEvent(event, hint, scope);\n }\n\n /**\n * Sends client reports as an envelope.\n */\n private _flushOutcomes(): void {\n const outcomes = this._clearOutcomes();\n\n if (outcomes.length === 0) {\n __DEBUG_BUILD__ && logger.log('No outcomes to send');\n return;\n }\n\n if (!this._dsn) {\n __DEBUG_BUILD__ && logger.log('No dsn provided, will not send outcomes');\n return;\n }\n\n __DEBUG_BUILD__ && logger.log('Sending outcomes:', outcomes);\n\n const url = getEnvelopeEndpointWithUrlEncodedAuth(this._dsn, this._options.tunnel);\n const envelope = createClientReportEnvelope(outcomes, this._options.tunnel && dsnToString(this._dsn));\n\n try {\n sendReport(url, serializeEnvelope(envelope));\n } catch (e) {\n __DEBUG_BUILD__ && logger.error(e);\n }\n }\n}\n","import { ClientReport, ClientReportEnvelope, ClientReportItem } from '@sentry/types';\n\nimport { createEnvelope } from './envelope';\nimport { dateTimestampInSeconds } from './time';\n\n/**\n * Creates client report envelope\n * @param discarded_events An array of discard events\n * @param dsn A DSN that can be set on the header. Optional.\n */\nexport function createClientReportEnvelope(\n discarded_events: ClientReport['discarded_events'],\n dsn?: string,\n timestamp?: number,\n): ClientReportEnvelope {\n const clientReportItem: ClientReportItem = [\n { type: 'client_report' },\n {\n timestamp: timestamp || dateTimestampInSeconds(),\n discarded_events,\n },\n ];\n return createEnvelope(dsn ? { dsn } : {}, [clientReportItem]);\n}\n","import { createTransport } from '@sentry/core';\nimport { Transport, TransportMakeRequestResponse, TransportRequest } from '@sentry/types';\n\nimport { BrowserTransportOptions } from './types';\nimport { FetchImpl, getNativeFetchImplementation } from './utils';\n\n/**\n * Creates a Transport that uses the Fetch API to send events to Sentry.\n */\nexport function makeFetchTransport(\n options: BrowserTransportOptions,\n nativeFetch: FetchImpl = getNativeFetchImplementation(),\n): Transport {\n function makeRequest(request: TransportRequest): PromiseLike {\n const requestOptions: RequestInit = {\n body: request.body,\n method: 'POST',\n referrerPolicy: 'origin',\n headers: options.headers,\n ...options.fetchOptions,\n };\n\n return nativeFetch(options.url, requestOptions).then(response => ({\n statusCode: response.status,\n headers: {\n 'x-sentry-rate-limits': response.headers.get('X-Sentry-Rate-Limits'),\n 'retry-after': response.headers.get('Retry-After'),\n },\n }));\n }\n\n return createTransport(options, makeRequest);\n}\n","import { createTransport } from '@sentry/core';\nimport { Transport, TransportMakeRequestResponse, TransportRequest } from '@sentry/types';\nimport { SyncPromise } from '@sentry/utils';\n\nimport { BrowserTransportOptions } from './types';\n\n/**\n * The DONE ready state for XmlHttpRequest\n *\n * Defining it here as a constant b/c XMLHttpRequest.DONE is not always defined\n * (e.g. during testing, it is `undefined`)\n *\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/readyState}\n */\nconst XHR_READYSTATE_DONE = 4;\n\n/**\n * Creates a Transport that uses the XMLHttpRequest API to send events to Sentry.\n */\nexport function makeXHRTransport(options: BrowserTransportOptions): Transport {\n function makeRequest(request: TransportRequest): PromiseLike {\n return new SyncPromise((resolve, reject) => {\n const xhr = new XMLHttpRequest();\n\n xhr.onerror = reject;\n\n xhr.onreadystatechange = (): void => {\n if (xhr.readyState === XHR_READYSTATE_DONE) {\n resolve({\n statusCode: xhr.status,\n headers: {\n 'x-sentry-rate-limits': xhr.getResponseHeader('X-Sentry-Rate-Limits'),\n 'retry-after': xhr.getResponseHeader('Retry-After'),\n },\n });\n }\n };\n\n xhr.open('POST', options.url);\n\n for (const header in options.headers) {\n if (Object.prototype.hasOwnProperty.call(options.headers, header)) {\n xhr.setRequestHeader(header, options.headers[header]);\n }\n }\n\n xhr.send(request.body);\n });\n }\n\n return createTransport(options, makeRequest);\n}\n","import { StackFrame, StackLineParser, StackLineParserFn } from '@sentry/types';\nimport { createStackParser } from '@sentry/utils';\n\n// global reference to slice\nconst UNKNOWN_FUNCTION = '?';\n\nconst OPERA10_PRIORITY = 10;\nconst OPERA11_PRIORITY = 20;\nconst CHROME_PRIORITY = 30;\nconst WINJS_PRIORITY = 40;\nconst GECKO_PRIORITY = 50;\n\nfunction createFrame(filename: string, func: string, lineno?: number, colno?: number): StackFrame {\n const frame: StackFrame = {\n filename,\n function: func,\n // All browser frames are considered in_app\n in_app: true,\n };\n\n if (lineno !== undefined) {\n frame.lineno = lineno;\n }\n\n if (colno !== undefined) {\n frame.colno = colno;\n }\n\n return frame;\n}\n\n// Chromium based browsers: Chrome, Brave, new Opera, new Edge\nconst chromeRegex =\n /^\\s*at (?:(.*?) ?\\((?:address at )?)?((?:file|https?|blob|chrome-extension|address|native|eval|webpack||[-a-z]+:|.*bundle|\\/).*?)(?::(\\d+))?(?::(\\d+))?\\)?\\s*$/i;\nconst chromeEvalRegex = /\\((\\S*)(?::(\\d+))(?::(\\d+))\\)/;\n\nconst chrome: StackLineParserFn = line => {\n const parts = chromeRegex.exec(line);\n\n if (parts) {\n const isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line\n\n if (isEval) {\n const subMatch = chromeEvalRegex.exec(parts[2]);\n\n if (subMatch) {\n // throw out eval line/column and use top-most line/column number\n parts[2] = subMatch[1]; // url\n parts[3] = subMatch[2]; // line\n parts[4] = subMatch[3]; // column\n }\n }\n\n // Kamil: One more hack won't hurt us right? Understanding and adding more rules on top of these regexps right now\n // would be way too time consuming. (TODO: Rewrite whole RegExp to be more readable)\n const [func, filename] = extractSafariExtensionDetails(parts[1] || UNKNOWN_FUNCTION, parts[2]);\n\n return createFrame(filename, func, parts[3] ? +parts[3] : undefined, parts[4] ? +parts[4] : undefined);\n }\n\n return;\n};\n\nexport const chromeStackLineParser: StackLineParser = [CHROME_PRIORITY, chrome];\n\n// gecko regex: `(?:bundle|\\d+\\.js)`: `bundle` is for react native, `\\d+\\.js` also but specifically for ram bundles because it\n// generates filenames without a prefix like `file://` the filenames in the stacktrace are just 42.js\n// We need this specific case for now because we want no other regex to match.\nconst geckoREgex =\n /^\\s*(.*?)(?:\\((.*?)\\))?(?:^|@)?((?:file|https?|blob|chrome|webpack|resource|moz-extension|capacitor).*?:\\/.*?|\\[native code\\]|[^@]*(?:bundle|\\d+\\.js)|\\/[\\w\\-. /=]+)(?::(\\d+))?(?::(\\d+))?\\s*$/i;\nconst geckoEvalRegex = /(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i;\n\nconst gecko: StackLineParserFn = line => {\n const parts = geckoREgex.exec(line);\n\n if (parts) {\n const isEval = parts[3] && parts[3].indexOf(' > eval') > -1;\n if (isEval) {\n const subMatch = geckoEvalRegex.exec(parts[3]);\n\n if (subMatch) {\n // throw out eval line/column and use top-most line number\n parts[1] = parts[1] || 'eval';\n parts[3] = subMatch[1];\n parts[4] = subMatch[2];\n parts[5] = ''; // no column when eval\n }\n }\n\n let filename = parts[3];\n let func = parts[1] || UNKNOWN_FUNCTION;\n [func, filename] = extractSafariExtensionDetails(func, filename);\n\n return createFrame(filename, func, parts[4] ? +parts[4] : undefined, parts[5] ? +parts[5] : undefined);\n }\n\n return;\n};\n\nexport const geckoStackLineParser: StackLineParser = [GECKO_PRIORITY, gecko];\n\nconst winjsRegex =\n /^\\s*at (?:((?:\\[object object\\])?.+) )?\\(?((?:file|ms-appx|https?|webpack|blob):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i;\n\nconst winjs: StackLineParserFn = line => {\n const parts = winjsRegex.exec(line);\n\n return parts\n ? createFrame(parts[2], parts[1] || UNKNOWN_FUNCTION, +parts[3], parts[4] ? +parts[4] : undefined)\n : undefined;\n};\n\nexport const winjsStackLineParser: StackLineParser = [WINJS_PRIORITY, winjs];\n\nconst opera10Regex = / line (\\d+).*script (?:in )?(\\S+)(?:: in function (\\S+))?$/i;\n\nconst opera10: StackLineParserFn = line => {\n const parts = opera10Regex.exec(line);\n return parts ? createFrame(parts[2], parts[3] || UNKNOWN_FUNCTION, +parts[1]) : undefined;\n};\n\nexport const opera10StackLineParser: StackLineParser = [OPERA10_PRIORITY, opera10];\n\nconst opera11Regex =\n / line (\\d+), column (\\d+)\\s*(?:in (?:]+)>|([^)]+))\\(.*\\))? in (.*):\\s*$/i;\n\nconst opera11: StackLineParserFn = line => {\n const parts = opera11Regex.exec(line);\n return parts ? createFrame(parts[5], parts[3] || parts[4] || UNKNOWN_FUNCTION, +parts[1], +parts[2]) : undefined;\n};\n\nexport const opera11StackLineParser: StackLineParser = [OPERA11_PRIORITY, opera11];\n\nexport const defaultStackLineParsers = [chromeStackLineParser, geckoStackLineParser, winjsStackLineParser];\n\nexport const defaultStackParser = createStackParser(...defaultStackLineParsers);\n\n/**\n * Safari web extensions, starting version unknown, can produce \"frames-only\" stacktraces.\n * What it means, is that instead of format like:\n *\n * Error: wat\n * at function@url:row:col\n * at function@url:row:col\n * at function@url:row:col\n *\n * it produces something like:\n *\n * function@url:row:col\n * function@url:row:col\n * function@url:row:col\n *\n * Because of that, it won't be captured by `chrome` RegExp and will fall into `Gecko` branch.\n * This function is extracted so that we can use it in both places without duplicating the logic.\n * Unfortunately \"just\" changing RegExp is too complicated now and making it pass all tests\n * and fix this case seems like an impossible, or at least way too time-consuming task.\n */\nconst extractSafariExtensionDetails = (func: string, filename: string): [string, string] => {\n const isSafariExtension = func.indexOf('safari-extension') !== -1;\n const isSafariWebExtension = func.indexOf('safari-web-extension') !== -1;\n\n return isSafariExtension || isSafariWebExtension\n ? [\n func.indexOf('@') !== -1 ? func.split('@')[0] : UNKNOWN_FUNCTION,\n isSafariExtension ? `safari-extension:${filename}` : `safari-web-extension:${filename}`,\n ]\n : [func, filename];\n};\n","import {\n getCurrentHub,\n getIntegrationsToSetup,\n getReportDialogEndpoint,\n Hub,\n initAndBind,\n Integrations as CoreIntegrations,\n} from '@sentry/core';\nimport {\n addInstrumentationHandler,\n getGlobalObject,\n logger,\n resolvedSyncPromise,\n stackParserFromStackParserOptions,\n supportsFetch,\n} from '@sentry/utils';\n\nimport { BrowserClient, BrowserClientOptions, BrowserOptions } from './client';\nimport { ReportDialogOptions, wrap as internalWrap } from './helpers';\nimport { Breadcrumbs, Dedupe, GlobalHandlers, HttpContext, LinkedErrors, TryCatch } from './integrations';\nimport { defaultStackParser } from './stack-parsers';\nimport { makeFetchTransport, makeXHRTransport } from './transports';\n\nexport const defaultIntegrations = [\n new CoreIntegrations.InboundFilters(),\n new CoreIntegrations.FunctionToString(),\n new TryCatch(),\n new Breadcrumbs(),\n new GlobalHandlers(),\n new LinkedErrors(),\n new Dedupe(),\n new HttpContext(),\n];\n\n/**\n * The Sentry Browser SDK Client.\n *\n * To use this SDK, call the {@link init} function as early as possible when\n * loading the web page. To set context information or send manual events, use\n * the provided methods.\n *\n * @example\n *\n * ```\n *\n * import { init } from '@sentry/browser';\n *\n * init({\n * dsn: '__DSN__',\n * // ...\n * });\n * ```\n *\n * @example\n * ```\n *\n * import { configureScope } from '@sentry/browser';\n * configureScope((scope: Scope) => {\n * scope.setExtra({ battery: 0.7 });\n * scope.setTag({ user_mode: 'admin' });\n * scope.setUser({ id: '4711' });\n * });\n * ```\n *\n * @example\n * ```\n *\n * import { addBreadcrumb } from '@sentry/browser';\n * addBreadcrumb({\n * message: 'My Breadcrumb',\n * // ...\n * });\n * ```\n *\n * @example\n *\n * ```\n *\n * import * as Sentry from '@sentry/browser';\n * Sentry.captureMessage('Hello, world!');\n * Sentry.captureException(new Error('Good bye'));\n * Sentry.captureEvent({\n * message: 'Manual',\n * stacktrace: [\n * // ...\n * ],\n * });\n * ```\n *\n * @see {@link BrowserOptions} for documentation on configuration options.\n */\nexport function init(options: BrowserOptions = {}): void {\n if (options.defaultIntegrations === undefined) {\n options.defaultIntegrations = defaultIntegrations;\n }\n if (options.release === undefined) {\n const window = getGlobalObject();\n // This supports the variable that sentry-webpack-plugin injects\n if (window.SENTRY_RELEASE && window.SENTRY_RELEASE.id) {\n options.release = window.SENTRY_RELEASE.id;\n }\n }\n if (options.autoSessionTracking === undefined) {\n options.autoSessionTracking = true;\n }\n if (options.sendClientReports === undefined) {\n options.sendClientReports = true;\n }\n\n const clientOptions: BrowserClientOptions = {\n ...options,\n stackParser: stackParserFromStackParserOptions(options.stackParser || defaultStackParser),\n integrations: getIntegrationsToSetup(options),\n transport: options.transport || (supportsFetch() ? makeFetchTransport : makeXHRTransport),\n };\n\n initAndBind(BrowserClient, clientOptions);\n\n if (options.autoSessionTracking) {\n startSessionTracking();\n }\n}\n\n/**\n * Present the user with a report dialog.\n *\n * @param options Everything is optional, we try to fetch all info need from the global scope.\n */\nexport function showReportDialog(options: ReportDialogOptions = {}, hub: Hub = getCurrentHub()): void {\n // doesn't work without a document (React Native)\n const global = getGlobalObject();\n if (!global.document) {\n __DEBUG_BUILD__ && logger.error('Global document not defined in showReportDialog call');\n return;\n }\n\n const { client, scope } = hub.getStackTop();\n const dsn = options.dsn || (client && client.getDsn());\n if (!dsn) {\n __DEBUG_BUILD__ && logger.error('DSN not configured for showReportDialog call');\n return;\n }\n\n if (scope) {\n options.user = {\n ...scope.getUser(),\n ...options.user,\n };\n }\n\n if (!options.eventId) {\n options.eventId = hub.lastEventId();\n }\n\n const script = global.document.createElement('script');\n script.async = true;\n script.src = getReportDialogEndpoint(dsn, options);\n\n if (options.onLoad) {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n script.onload = options.onLoad;\n }\n\n const injectionPoint = global.document.head || global.document.body;\n if (injectionPoint) {\n injectionPoint.appendChild(script);\n } else {\n __DEBUG_BUILD__ && logger.error('Not injecting report dialog. No injection point found in HTML');\n }\n}\n\n/**\n * This is the getter for lastEventId.\n *\n * @returns The last event id of a captured event.\n */\nexport function lastEventId(): string | undefined {\n return getCurrentHub().lastEventId();\n}\n\n/**\n * This function is here to be API compatible with the loader.\n * @hidden\n */\nexport function forceLoad(): void {\n // Noop\n}\n\n/**\n * This function is here to be API compatible with the loader.\n * @hidden\n */\nexport function onLoad(callback: () => void): void {\n callback();\n}\n\n/**\n * Call `flush()` on the current client, if there is one. See {@link Client.flush}.\n *\n * @param timeout Maximum time in ms the client should wait to flush its event queue. Omitting this parameter will cause\n * the client to wait until all events are sent before resolving the promise.\n * @returns A promise which resolves to `true` if the queue successfully drains before the timeout, or `false` if it\n * doesn't (or if there's no client defined).\n */\nexport function flush(timeout?: number): PromiseLike {\n const client = getCurrentHub().getClient();\n if (client) {\n return client.flush(timeout);\n }\n __DEBUG_BUILD__ && logger.warn('Cannot flush events. No client defined.');\n return resolvedSyncPromise(false);\n}\n\n/**\n * Call `close()` on the current client, if there is one. See {@link Client.close}.\n *\n * @param timeout Maximum time in ms the client should wait to flush its event queue before shutting down. Omitting this\n * parameter will cause the client to wait until all events are sent before disabling itself.\n * @returns A promise which resolves to `true` if the queue successfully drains before the timeout, or `false` if it\n * doesn't (or if there's no client defined).\n */\nexport function close(timeout?: number): PromiseLike {\n const client = getCurrentHub().getClient();\n if (client) {\n return client.close(timeout);\n }\n __DEBUG_BUILD__ && logger.warn('Cannot flush events and disable SDK. No client defined.');\n return resolvedSyncPromise(false);\n}\n\n/**\n * Wrap code within a try/catch block so the SDK is able to capture errors.\n *\n * @param fn A function to wrap.\n *\n * @returns The result of wrapped function call.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function wrap(fn: (...args: any) => any): any {\n return internalWrap(fn)();\n}\n\nfunction startSessionOnHub(hub: Hub): void {\n hub.startSession({ ignoreDuration: true });\n hub.captureSession();\n}\n\n/**\n * Enable automatic Session Tracking for the initial page load.\n */\nfunction startSessionTracking(): void {\n const window = getGlobalObject();\n const document = window.document;\n\n if (typeof document === 'undefined') {\n __DEBUG_BUILD__ &&\n logger.warn('Session tracking in non-browser environment with @sentry/browser is not supported.');\n return;\n }\n\n const hub = getCurrentHub();\n\n // The only way for this to be false is for there to be a version mismatch between @sentry/browser (>= 6.0.0) and\n // @sentry/hub (< 5.27.0). In the simple case, there won't ever be such a mismatch, because the two packages are\n // pinned at the same version in package.json, but there are edge cases where it's possible. See\n // https://github.com/getsentry/sentry-javascript/issues/3207 and\n // https://github.com/getsentry/sentry-javascript/issues/3234 and\n // https://github.com/getsentry/sentry-javascript/issues/3278.\n if (!hub.captureSession) {\n return;\n }\n\n // The session duration for browser sessions does not track a meaningful\n // concept that can be used as a metric.\n // Automatically captured sessions are akin to page views, and thus we\n // discard their duration.\n startSessionOnHub(hub);\n\n // We want to create a session for every navigation as well\n addInstrumentationHandler('history', ({ from, to }) => {\n // Don't create an additional session for the initial route or if the location did not change\n if (!(from === undefined || from === to)) {\n startSessionOnHub(getCurrentHub());\n }\n });\n}\n","import { getCurrentHub } from '@sentry/hub';\nimport { Client, ClientOptions } from '@sentry/types';\nimport { logger } from '@sentry/utils';\n\n/** A class object that can instantiate Client objects. */\nexport type ClientClass = new (options: O) => F;\n\n/**\n * Internal function to create a new SDK client instance. The client is\n * installed and then bound to the current scope.\n *\n * @param clientClass The client class to instantiate.\n * @param options Options to pass to the client.\n */\nexport function initAndBind(\n clientClass: ClientClass,\n options: O,\n): void {\n if (options.debug === true) {\n if (__DEBUG_BUILD__) {\n logger.enable();\n } else {\n // use `console.warn` rather than `logger.warn` since by non-debug bundles have all `logger.x` statements stripped\n // eslint-disable-next-line no-console\n console.warn('[Sentry] Cannot initialize SDK with `debug` option using a non-debug bundle.');\n }\n }\n const hub = getCurrentHub();\n const scope = hub.getScope();\n if (scope) {\n scope.update(options.initialScope);\n }\n\n const client = new clientClass(options);\n hub.bindClient(client);\n}\n","export * from './exports';\n\nimport { Integrations as CoreIntegrations } from '@sentry/core';\nimport { getGlobalObject } from '@sentry/utils';\n\nimport * as BrowserIntegrations from './integrations';\n\nlet windowIntegrations = {};\n\n// This block is needed to add compatibility with the integrations packages when used with a CDN\nconst _window = getGlobalObject();\nif (_window.Sentry && _window.Sentry.Integrations) {\n windowIntegrations = _window.Sentry.Integrations;\n}\n\nconst INTEGRATIONS = {\n ...windowIntegrations,\n ...CoreIntegrations,\n ...BrowserIntegrations,\n};\n\nexport { INTEGRATIONS as Integrations };\n","/**\n * NOTE: In order to avoid circular dependencies, if you add a function to this module and it needs to print something,\n * you must either a) use `console.log` rather than the logger, or b) put your function elsewhere.\n */\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport { Integration } from '@sentry/types';\n\nimport { isNodeEnv } from './node';\n\n/** Internal */\ninterface SentryGlobal {\n Sentry?: {\n Integrations?: Integration[];\n };\n SENTRY_ENVIRONMENT?: string;\n SENTRY_DSN?: string;\n SENTRY_RELEASE?: {\n id?: string;\n };\n __SENTRY__: {\n globalEventProcessors: any;\n hub: any;\n logger: any;\n };\n}\n\nconst fallbackGlobalObject = {};\n\n/**\n * Safely get global scope object\n *\n * @returns Global scope object\n */\nexport function getGlobalObject(): T & SentryGlobal {\n return (\n isNodeEnv()\n ? global\n : typeof window !== 'undefined' // eslint-disable-line no-restricted-globals\n ? window // eslint-disable-line no-restricted-globals\n : typeof self !== 'undefined'\n ? self\n : fallbackGlobalObject\n ) as T & SentryGlobal;\n}\n\n/**\n * Returns a global singleton contained in the global `__SENTRY__` object.\n *\n * If the singleton doesn't already exist in `__SENTRY__`, it will be created using the given factory\n * function and added to the `__SENTRY__` object.\n *\n * @param name name of the global singleton on __SENTRY__\n * @param creator creator Factory function to create the singleton if it doesn't already exist on `__SENTRY__`\n * @param obj (Optional) The global object on which to look for `__SENTRY__`, if not `getGlobalObject`'s return value\n * @returns the singleton\n */\nexport function getGlobalSingleton(name: keyof SentryGlobal['__SENTRY__'], creator: () => T, obj?: unknown): T {\n const global = (obj || getGlobalObject()) as SentryGlobal;\n const __SENTRY__ = (global.__SENTRY__ = global.__SENTRY__ || {});\n const singleton = __SENTRY__[name] || (__SENTRY__[name] = creator());\n return singleton;\n}\n","/**\n * NOTE: In order to avoid circular dependencies, if you add a function to this module and it needs to print something,\n * you must either a) use `console.log` rather than the logger, or b) put your function elsewhere.\n */\n\nimport { isBrowserBundle } from './env';\n\n/**\n * Checks whether we're in the Node.js or Browser environment\n *\n * @returns Answer to given question\n */\nexport function isNodeEnv(): boolean {\n // explicitly check for browser bundles as those can be optimized statically\n // by terser/rollup.\n return (\n !isBrowserBundle() &&\n Object.prototype.toString.call(typeof process !== 'undefined' ? process : 0) === '[object process]'\n );\n}\n\n/**\n * Requires a module which is protected against bundler minification.\n *\n * @param request The module path to resolve\n */\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/no-explicit-any\nexport function dynamicRequire(mod: any, request: string): any {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return mod.require(request);\n}\n\n/**\n * Helper for dynamically loading module that should work with linked dependencies.\n * The problem is that we _should_ be using `require(require.resolve(moduleName, { paths: [cwd()] }))`\n * However it's _not possible_ to do that with Webpack, as it has to know all the dependencies during\n * build time. `require.resolve` is also not available in any other way, so we cannot create,\n * a fake helper like we do with `dynamicRequire`.\n *\n * We always prefer to use local package, thus the value is not returned early from each `try/catch` block.\n * That is to mimic the behavior of `require.resolve` exactly.\n *\n * @param moduleName module name to require\n * @returns possibly required module\n */\nexport function loadModule(moduleName: string): T | undefined {\n let mod: T | undefined;\n\n try {\n mod = dynamicRequire(module, moduleName);\n } catch (e) {\n // no-empty\n }\n\n try {\n const { cwd } = dynamicRequire(module, 'process');\n mod = dynamicRequire(module, `${cwd()}/node_modules/${moduleName}`) as T;\n } catch (e) {\n // no-empty\n }\n\n return mod;\n}\n","/*\n * This module exists for optimizations in the build process through rollup and terser. We define some global\n * constants, which can be overridden during build. By guarding certain pieces of code with functions that return these\n * constants, we can control whether or not they appear in the final bundle. (Any code guarded by a false condition will\n * never run, and will hence be dropped during treeshaking.) The two primary uses for this are stripping out calls to\n * `logger` and preventing node-related code from appearing in browser bundles.\n *\n * Attention:\n * This file should not be used to define constants/flags that are intended to be used for tree-shaking conducted by\n * users. These fags should live in their respective packages, as we identified user tooling (specifically webpack)\n * having issues tree-shaking these constants across package boundaries.\n * An example for this is the __SENTRY_DEBUG__ constant. It is declared in each package individually because we want\n * users to be able to shake away expressions that it guards.\n */\n\ndeclare const __SENTRY_BROWSER_BUNDLE__: boolean | undefined;\n\n/**\n * Figures out if we're building a browser bundle.\n *\n * @returns true if this is a browser bundle build.\n */\nexport function isBrowserBundle(): boolean {\n return typeof __SENTRY_BROWSER_BUNDLE__ !== 'undefined' && !!__SENTRY_BROWSER_BUNDLE__;\n}\n","import { getGlobalObject } from './global';\nimport { dynamicRequire, isNodeEnv } from './node';\n\n/**\n * An object that can return the current timestamp in seconds since the UNIX epoch.\n */\ninterface TimestampSource {\n nowSeconds(): number;\n}\n\n/**\n * A TimestampSource implementation for environments that do not support the Performance Web API natively.\n *\n * Note that this TimestampSource does not use a monotonic clock. A call to `nowSeconds` may return a timestamp earlier\n * than a previously returned value. We do not try to emulate a monotonic behavior in order to facilitate debugging. It\n * is more obvious to explain \"why does my span have negative duration\" than \"why my spans have zero duration\".\n */\nconst dateTimestampSource: TimestampSource = {\n nowSeconds: () => Date.now() / 1000,\n};\n\n/**\n * A partial definition of the [Performance Web API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Performance}\n * for accessing a high-resolution monotonic clock.\n */\ninterface Performance {\n /**\n * The millisecond timestamp at which measurement began, measured in Unix time.\n */\n timeOrigin: number;\n /**\n * Returns the current millisecond timestamp, where 0 represents the start of measurement.\n */\n now(): number;\n}\n\n/**\n * Returns a wrapper around the native Performance API browser implementation, or undefined for browsers that do not\n * support the API.\n *\n * Wrapping the native API works around differences in behavior from different browsers.\n */\nfunction getBrowserPerformance(): Performance | undefined {\n const { performance } = getGlobalObject();\n if (!performance || !performance.now) {\n return undefined;\n }\n\n // Replace performance.timeOrigin with our own timeOrigin based on Date.now().\n //\n // This is a partial workaround for browsers reporting performance.timeOrigin such that performance.timeOrigin +\n // performance.now() gives a date arbitrarily in the past.\n //\n // Additionally, computing timeOrigin in this way fills the gap for browsers where performance.timeOrigin is\n // undefined.\n //\n // The assumption that performance.timeOrigin + performance.now() ~= Date.now() is flawed, but we depend on it to\n // interact with data coming out of performance entries.\n //\n // Note that despite recommendations against it in the spec, browsers implement the Performance API with a clock that\n // might stop when the computer is asleep (and perhaps under other circumstances). Such behavior causes\n // performance.timeOrigin + performance.now() to have an arbitrary skew over Date.now(). In laptop computers, we have\n // observed skews that can be as long as days, weeks or months.\n //\n // See https://github.com/getsentry/sentry-javascript/issues/2590.\n //\n // BUG: despite our best intentions, this workaround has its limitations. It mostly addresses timings of pageload\n // transactions, but ignores the skew built up over time that can aversely affect timestamps of navigation\n // transactions of long-lived web pages.\n const timeOrigin = Date.now() - performance.now();\n\n return {\n now: () => performance.now(),\n timeOrigin,\n };\n}\n\n/**\n * Returns the native Performance API implementation from Node.js. Returns undefined in old Node.js versions that don't\n * implement the API.\n */\nfunction getNodePerformance(): Performance | undefined {\n try {\n const perfHooks = dynamicRequire(module, 'perf_hooks') as { performance: Performance };\n return perfHooks.performance;\n } catch (_) {\n return undefined;\n }\n}\n\n/**\n * The Performance API implementation for the current platform, if available.\n */\nconst platformPerformance: Performance | undefined = isNodeEnv() ? getNodePerformance() : getBrowserPerformance();\n\nconst timestampSource: TimestampSource =\n platformPerformance === undefined\n ? dateTimestampSource\n : {\n nowSeconds: () => (platformPerformance.timeOrigin + platformPerformance.now()) / 1000,\n };\n\n/**\n * Returns a timestamp in seconds since the UNIX epoch using the Date API.\n */\nexport const dateTimestampInSeconds: () => number = dateTimestampSource.nowSeconds.bind(dateTimestampSource);\n\n/**\n * Returns a timestamp in seconds since the UNIX epoch using either the Performance or Date APIs, depending on the\n * availability of the Performance API.\n *\n * See `usingPerformanceAPI` to test whether the Performance API is used.\n *\n * BUG: Note that because of how browsers implement the Performance API, the clock might stop when the computer is\n * asleep. This creates a skew between `dateTimestampInSeconds` and `timestampInSeconds`. The\n * skew can grow to arbitrary amounts like days, weeks or months.\n * See https://github.com/getsentry/sentry-javascript/issues/2590.\n */\nexport const timestampInSeconds: () => number = timestampSource.nowSeconds.bind(timestampSource);\n\n// Re-exported with an old name for backwards-compatibility.\nexport const timestampWithMs = timestampInSeconds;\n\n/**\n * A boolean that is true when timestampInSeconds uses the Performance API to produce monotonic timestamps.\n */\nexport const usingPerformanceAPI = platformPerformance !== undefined;\n\n/**\n * Internal helper to store what is the source of browserPerformanceTimeOrigin below. For debugging only.\n */\nexport let _browserPerformanceTimeOriginMode: string;\n\n/**\n * The number of milliseconds since the UNIX epoch. This value is only usable in a browser, and only when the\n * performance API is available.\n */\nexport const browserPerformanceTimeOrigin = ((): number | undefined => {\n // Unfortunately browsers may report an inaccurate time origin data, through either performance.timeOrigin or\n // performance.timing.navigationStart, which results in poor results in performance data. We only treat time origin\n // data as reliable if they are within a reasonable threshold of the current time.\n\n const { performance } = getGlobalObject();\n if (!performance || !performance.now) {\n _browserPerformanceTimeOriginMode = 'none';\n return undefined;\n }\n\n const threshold = 3600 * 1000;\n const performanceNow = performance.now();\n const dateNow = Date.now();\n\n // if timeOrigin isn't available set delta to threshold so it isn't used\n const timeOriginDelta = performance.timeOrigin\n ? Math.abs(performance.timeOrigin + performanceNow - dateNow)\n : threshold;\n const timeOriginIsReliable = timeOriginDelta < threshold;\n\n // While performance.timing.navigationStart is deprecated in favor of performance.timeOrigin, performance.timeOrigin\n // is not as widely supported. Namely, performance.timeOrigin is undefined in Safari as of writing.\n // Also as of writing, performance.timing is not available in Web Workers in mainstream browsers, so it is not always\n // a valid fallback. In the absence of an initial time provided by the browser, fallback to the current time from the\n // Date API.\n // eslint-disable-next-line deprecation/deprecation\n const navigationStart = performance.timing && performance.timing.navigationStart;\n const hasNavigationStart = typeof navigationStart === 'number';\n // if navigationStart isn't available set delta to threshold so it isn't used\n const navigationStartDelta = hasNavigationStart ? Math.abs(navigationStart + performanceNow - dateNow) : threshold;\n const navigationStartIsReliable = navigationStartDelta < threshold;\n\n if (timeOriginIsReliable || navigationStartIsReliable) {\n // Use the more reliable time origin\n if (timeOriginDelta <= navigationStartDelta) {\n _browserPerformanceTimeOriginMode = 'timeOrigin';\n return performance.timeOrigin;\n } else {\n _browserPerformanceTimeOriginMode = 'navigationStart';\n return navigationStart;\n }\n }\n\n // Either both timeOrigin and navigationStart are skewed or neither is available, fallback to Date.\n _browserPerformanceTimeOriginMode = 'dateNow';\n return dateNow;\n})();\n","/*!\n Copyright (c) 2018 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames() {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tif (arg.length) {\n\t\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\t\tif (inner) {\n\t\t\t\t\t\tclasses.push(inner);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tif (arg.toString === Object.prototype.toString) {\n\t\t\t\t\tfor (var key in arg) {\n\t\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tclasses.push(arg.toString());\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","function r(e){var o,t,f=\"\";if(\"string\"==typeof e||\"number\"==typeof e)f+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var n=e.length;for(o=0;o arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr && (typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]); if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nmodule.exports = function cssWithMappingToString(item) {\n var _item = _slicedToArray(item, 4),\n content = _item[1],\n cssMapping = _item[3];\n\n if (!cssMapping) {\n return content;\n }\n\n if (typeof btoa === \"function\") {\n // eslint-disable-next-line no-undef\n var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(cssMapping))));\n var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n var sourceMapping = \"/*# \".concat(data, \" */\");\n var sourceURLs = cssMapping.sources.map(function (source) {\n return \"/*# sourceURL=\".concat(cssMapping.sourceRoot || \"\").concat(source, \" */\");\n });\n return [content].concat(sourceURLs).concat([sourceMapping]).join(\"\\n\");\n }\n\n return [content].join(\"\\n\");\n};","/*!\n\n diff v4.0.1\n\nSoftware License Agreement (BSD License)\n\nCopyright (c) 2009-2015, Kevin Decker \n\nAll rights reserved.\n\nRedistribution and use of this software in source and binary forms, with or without modification,\nare permitted provided that the following conditions are met:\n\n* Redistributions of source code must retain the above\n copyright notice, this list of conditions and the\n following disclaimer.\n\n* Redistributions in binary form must reproduce the above\n copyright notice, this list of conditions and the\n following disclaimer in the documentation and/or other\n materials provided with the distribution.\n\n* Neither the name of Kevin Decker nor the names of its\n contributors may be used to endorse or promote products\n derived from this software without specific prior\n written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR\nIMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\nFITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR\nCONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\nDAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER\nIN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT\nOF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n@license\n*/\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n typeof define === 'function' && define.amd ? define(['exports'], factory) :\n (global = global || self, factory(global.Diff = {}));\n}(this, function (exports) { 'use strict';\n\n function Diff() {}\n Diff.prototype = {\n diff: function diff(oldString, newString) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var callback = options.callback;\n\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n\n this.options = options;\n var self = this;\n\n function done(value) {\n if (callback) {\n setTimeout(function () {\n callback(undefined, value);\n }, 0);\n return true;\n } else {\n return value;\n }\n } // Allow subclasses to massage the input prior to running\n\n\n oldString = this.castInput(oldString);\n newString = this.castInput(newString);\n oldString = this.removeEmpty(this.tokenize(oldString));\n newString = this.removeEmpty(this.tokenize(newString));\n var newLen = newString.length,\n oldLen = oldString.length;\n var editLength = 1;\n var maxEditLength = newLen + oldLen;\n var bestPath = [{\n newPos: -1,\n components: []\n }]; // Seed editLength = 0, i.e. the content starts with the same values\n\n var oldPos = this.extractCommon(bestPath[0], newString, oldString, 0);\n\n if (bestPath[0].newPos + 1 >= newLen && oldPos + 1 >= oldLen) {\n // Identity per the equality and tokenizer\n return done([{\n value: this.join(newString),\n count: newString.length\n }]);\n } // Main worker method. checks all permutations of a given edit length for acceptance.\n\n\n function execEditLength() {\n for (var diagonalPath = -1 * editLength; diagonalPath <= editLength; diagonalPath += 2) {\n var basePath = void 0;\n\n var addPath = bestPath[diagonalPath - 1],\n removePath = bestPath[diagonalPath + 1],\n _oldPos = (removePath ? removePath.newPos : 0) - diagonalPath;\n\n if (addPath) {\n // No one else is going to attempt to use this value, clear it\n bestPath[diagonalPath - 1] = undefined;\n }\n\n var canAdd = addPath && addPath.newPos + 1 < newLen,\n canRemove = removePath && 0 <= _oldPos && _oldPos < oldLen;\n\n if (!canAdd && !canRemove) {\n // If this path is a terminal then prune\n bestPath[diagonalPath] = undefined;\n continue;\n } // Select the diagonal that we want to branch from. We select the prior\n // path whose position in the new string is the farthest from the origin\n // and does not pass the bounds of the diff graph\n\n\n if (!canAdd || canRemove && addPath.newPos < removePath.newPos) {\n basePath = clonePath(removePath);\n self.pushComponent(basePath.components, undefined, true);\n } else {\n basePath = addPath; // No need to clone, we've pulled it from the list\n\n basePath.newPos++;\n self.pushComponent(basePath.components, true, undefined);\n }\n\n _oldPos = self.extractCommon(basePath, newString, oldString, diagonalPath); // If we have hit the end of both strings, then we are done\n\n if (basePath.newPos + 1 >= newLen && _oldPos + 1 >= oldLen) {\n return done(buildValues(self, basePath.components, newString, oldString, self.useLongestToken));\n } else {\n // Otherwise track this path as a potential candidate and continue.\n bestPath[diagonalPath] = basePath;\n }\n }\n\n editLength++;\n } // Performs the length of edit iteration. Is a bit fugly as this has to support the\n // sync and async mode which is never fun. Loops over execEditLength until a value\n // is produced.\n\n\n if (callback) {\n (function exec() {\n setTimeout(function () {\n // This should not happen, but we want to be safe.\n\n /* istanbul ignore next */\n if (editLength > maxEditLength) {\n return callback();\n }\n\n if (!execEditLength()) {\n exec();\n }\n }, 0);\n })();\n } else {\n while (editLength <= maxEditLength) {\n var ret = execEditLength();\n\n if (ret) {\n return ret;\n }\n }\n }\n },\n pushComponent: function pushComponent(components, added, removed) {\n var last = components[components.length - 1];\n\n if (last && last.added === added && last.removed === removed) {\n // We need to clone here as the component clone operation is just\n // as shallow array clone\n components[components.length - 1] = {\n count: last.count + 1,\n added: added,\n removed: removed\n };\n } else {\n components.push({\n count: 1,\n added: added,\n removed: removed\n });\n }\n },\n extractCommon: function extractCommon(basePath, newString, oldString, diagonalPath) {\n var newLen = newString.length,\n oldLen = oldString.length,\n newPos = basePath.newPos,\n oldPos = newPos - diagonalPath,\n commonCount = 0;\n\n while (newPos + 1 < newLen && oldPos + 1 < oldLen && this.equals(newString[newPos + 1], oldString[oldPos + 1])) {\n newPos++;\n oldPos++;\n commonCount++;\n }\n\n if (commonCount) {\n basePath.components.push({\n count: commonCount\n });\n }\n\n basePath.newPos = newPos;\n return oldPos;\n },\n equals: function equals(left, right) {\n if (this.options.comparator) {\n return this.options.comparator(left, right);\n } else {\n return left === right || this.options.ignoreCase && left.toLowerCase() === right.toLowerCase();\n }\n },\n removeEmpty: function removeEmpty(array) {\n var ret = [];\n\n for (var i = 0; i < array.length; i++) {\n if (array[i]) {\n ret.push(array[i]);\n }\n }\n\n return ret;\n },\n castInput: function castInput(value) {\n return value;\n },\n tokenize: function tokenize(value) {\n return value.split('');\n },\n join: function join(chars) {\n return chars.join('');\n }\n };\n\n function buildValues(diff, components, newString, oldString, useLongestToken) {\n var componentPos = 0,\n componentLen = components.length,\n newPos = 0,\n oldPos = 0;\n\n for (; componentPos < componentLen; componentPos++) {\n var component = components[componentPos];\n\n if (!component.removed) {\n if (!component.added && useLongestToken) {\n var value = newString.slice(newPos, newPos + component.count);\n value = value.map(function (value, i) {\n var oldValue = oldString[oldPos + i];\n return oldValue.length > value.length ? oldValue : value;\n });\n component.value = diff.join(value);\n } else {\n component.value = diff.join(newString.slice(newPos, newPos + component.count));\n }\n\n newPos += component.count; // Common case\n\n if (!component.added) {\n oldPos += component.count;\n }\n } else {\n component.value = diff.join(oldString.slice(oldPos, oldPos + component.count));\n oldPos += component.count; // Reverse add and remove so removes are output first to match common convention\n // The diffing algorithm is tied to add then remove output and this is the simplest\n // route to get the desired output with minimal overhead.\n\n if (componentPos && components[componentPos - 1].added) {\n var tmp = components[componentPos - 1];\n components[componentPos - 1] = components[componentPos];\n components[componentPos] = tmp;\n }\n }\n } // Special case handle for when one terminal is ignored (i.e. whitespace).\n // For this case we merge the terminal into the prior string and drop the change.\n // This is only available for string mode.\n\n\n var lastComponent = components[componentLen - 1];\n\n if (componentLen > 1 && typeof lastComponent.value === 'string' && (lastComponent.added || lastComponent.removed) && diff.equals('', lastComponent.value)) {\n components[componentLen - 2].value += lastComponent.value;\n components.pop();\n }\n\n return components;\n }\n\n function clonePath(path) {\n return {\n newPos: path.newPos,\n components: path.components.slice(0)\n };\n }\n\n var characterDiff = new Diff();\n function diffChars(oldStr, newStr, options) {\n return characterDiff.diff(oldStr, newStr, options);\n }\n\n function generateOptions(options, defaults) {\n if (typeof options === 'function') {\n defaults.callback = options;\n } else if (options) {\n for (var name in options) {\n /* istanbul ignore else */\n if (options.hasOwnProperty(name)) {\n defaults[name] = options[name];\n }\n }\n }\n\n return defaults;\n }\n\n //\n // Ranges and exceptions:\n // Latin-1 Supplement, 0080–00FF\n // - U+00D7 × Multiplication sign\n // - U+00F7 ÷ Division sign\n // Latin Extended-A, 0100–017F\n // Latin Extended-B, 0180–024F\n // IPA Extensions, 0250–02AF\n // Spacing Modifier Letters, 02B0–02FF\n // - U+02C7 ˇ ˇ Caron\n // - U+02D8 ˘ ˘ Breve\n // - U+02D9 ˙ ˙ Dot Above\n // - U+02DA ˚ ˚ Ring Above\n // - U+02DB ˛ ˛ Ogonek\n // - U+02DC ˜ ˜ Small Tilde\n // - U+02DD ˝ ˝ Double Acute Accent\n // Latin Extended Additional, 1E00–1EFF\n\n var extendedWordChars = /^[A-Za-z\\xC0-\\u02C6\\u02C8-\\u02D7\\u02DE-\\u02FF\\u1E00-\\u1EFF]+$/;\n var reWhitespace = /\\S/;\n var wordDiff = new Diff();\n\n wordDiff.equals = function (left, right) {\n if (this.options.ignoreCase) {\n left = left.toLowerCase();\n right = right.toLowerCase();\n }\n\n return left === right || this.options.ignoreWhitespace && !reWhitespace.test(left) && !reWhitespace.test(right);\n };\n\n wordDiff.tokenize = function (value) {\n var tokens = value.split(/(\\s+|[()[\\]{}'\"]|\\b)/); // Join the boundary splits that we do not consider to be boundaries. This is primarily the extended Latin character set.\n\n for (var i = 0; i < tokens.length - 1; i++) {\n // If we have an empty string in the next field and we have only word chars before and after, merge\n if (!tokens[i + 1] && tokens[i + 2] && extendedWordChars.test(tokens[i]) && extendedWordChars.test(tokens[i + 2])) {\n tokens[i] += tokens[i + 2];\n tokens.splice(i + 1, 2);\n i--;\n }\n }\n\n return tokens;\n };\n\n function diffWords(oldStr, newStr, options) {\n options = generateOptions(options, {\n ignoreWhitespace: true\n });\n return wordDiff.diff(oldStr, newStr, options);\n }\n function diffWordsWithSpace(oldStr, newStr, options) {\n return wordDiff.diff(oldStr, newStr, options);\n }\n\n var lineDiff = new Diff();\n\n lineDiff.tokenize = function (value) {\n var retLines = [],\n linesAndNewlines = value.split(/(\\n|\\r\\n)/); // Ignore the final empty token that occurs if the string ends with a new line\n\n if (!linesAndNewlines[linesAndNewlines.length - 1]) {\n linesAndNewlines.pop();\n } // Merge the content and line separators into single tokens\n\n\n for (var i = 0; i < linesAndNewlines.length; i++) {\n var line = linesAndNewlines[i];\n\n if (i % 2 && !this.options.newlineIsToken) {\n retLines[retLines.length - 1] += line;\n } else {\n if (this.options.ignoreWhitespace) {\n line = line.trim();\n }\n\n retLines.push(line);\n }\n }\n\n return retLines;\n };\n\n function diffLines(oldStr, newStr, callback) {\n return lineDiff.diff(oldStr, newStr, callback);\n }\n function diffTrimmedLines(oldStr, newStr, callback) {\n var options = generateOptions(callback, {\n ignoreWhitespace: true\n });\n return lineDiff.diff(oldStr, newStr, options);\n }\n\n var sentenceDiff = new Diff();\n\n sentenceDiff.tokenize = function (value) {\n return value.split(/(\\S.+?[.!?])(?=\\s+|$)/);\n };\n\n function diffSentences(oldStr, newStr, callback) {\n return sentenceDiff.diff(oldStr, newStr, callback);\n }\n\n var cssDiff = new Diff();\n\n cssDiff.tokenize = function (value) {\n return value.split(/([{}:;,]|\\s+)/);\n };\n\n function diffCss(oldStr, newStr, callback) {\n return cssDiff.diff(oldStr, newStr, callback);\n }\n\n function _typeof(obj) {\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 _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();\n }\n\n function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n return arr2;\n }\n }\n\n function _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n }\n\n function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n }\n\n var objectPrototypeToString = Object.prototype.toString;\n var jsonDiff = new Diff(); // Discriminate between two lines of pretty-printed, serialized JSON where one of them has a\n // dangling comma and the other doesn't. Turns out including the dangling comma yields the nicest output:\n\n jsonDiff.useLongestToken = true;\n jsonDiff.tokenize = lineDiff.tokenize;\n\n jsonDiff.castInput = function (value) {\n var _this$options = this.options,\n undefinedReplacement = _this$options.undefinedReplacement,\n _this$options$stringi = _this$options.stringifyReplacer,\n stringifyReplacer = _this$options$stringi === void 0 ? function (k, v) {\n return typeof v === 'undefined' ? undefinedReplacement : v;\n } : _this$options$stringi;\n return typeof value === 'string' ? value : JSON.stringify(canonicalize(value, null, null, stringifyReplacer), stringifyReplacer, ' ');\n };\n\n jsonDiff.equals = function (left, right) {\n return Diff.prototype.equals.call(jsonDiff, left.replace(/,([\\r\\n])/g, '$1'), right.replace(/,([\\r\\n])/g, '$1'));\n };\n\n function diffJson(oldObj, newObj, options) {\n return jsonDiff.diff(oldObj, newObj, options);\n } // This function handles the presence of circular references by bailing out when encountering an\n // object that is already on the \"stack\" of items being processed. Accepts an optional replacer\n\n function canonicalize(obj, stack, replacementStack, replacer, key) {\n stack = stack || [];\n replacementStack = replacementStack || [];\n\n if (replacer) {\n obj = replacer(key, obj);\n }\n\n var i;\n\n for (i = 0; i < stack.length; i += 1) {\n if (stack[i] === obj) {\n return replacementStack[i];\n }\n }\n\n var canonicalizedObj;\n\n if ('[object Array]' === objectPrototypeToString.call(obj)) {\n stack.push(obj);\n canonicalizedObj = new Array(obj.length);\n replacementStack.push(canonicalizedObj);\n\n for (i = 0; i < obj.length; i += 1) {\n canonicalizedObj[i] = canonicalize(obj[i], stack, replacementStack, replacer, key);\n }\n\n stack.pop();\n replacementStack.pop();\n return canonicalizedObj;\n }\n\n if (obj && obj.toJSON) {\n obj = obj.toJSON();\n }\n\n if (_typeof(obj) === 'object' && obj !== null) {\n stack.push(obj);\n canonicalizedObj = {};\n replacementStack.push(canonicalizedObj);\n\n var sortedKeys = [],\n _key;\n\n for (_key in obj) {\n /* istanbul ignore else */\n if (obj.hasOwnProperty(_key)) {\n sortedKeys.push(_key);\n }\n }\n\n sortedKeys.sort();\n\n for (i = 0; i < sortedKeys.length; i += 1) {\n _key = sortedKeys[i];\n canonicalizedObj[_key] = canonicalize(obj[_key], stack, replacementStack, replacer, _key);\n }\n\n stack.pop();\n replacementStack.pop();\n } else {\n canonicalizedObj = obj;\n }\n\n return canonicalizedObj;\n }\n\n var arrayDiff = new Diff();\n\n arrayDiff.tokenize = function (value) {\n return value.slice();\n };\n\n arrayDiff.join = arrayDiff.removeEmpty = function (value) {\n return value;\n };\n\n function diffArrays(oldArr, newArr, callback) {\n return arrayDiff.diff(oldArr, newArr, callback);\n }\n\n function parsePatch(uniDiff) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var diffstr = uniDiff.split(/\\r\\n|[\\n\\v\\f\\r\\x85]/),\n delimiters = uniDiff.match(/\\r\\n|[\\n\\v\\f\\r\\x85]/g) || [],\n list = [],\n i = 0;\n\n function parseIndex() {\n var index = {};\n list.push(index); // Parse diff metadata\n\n while (i < diffstr.length) {\n var line = diffstr[i]; // File header found, end parsing diff metadata\n\n if (/^(\\-\\-\\-|\\+\\+\\+|@@)\\s/.test(line)) {\n break;\n } // Diff index\n\n\n var header = /^(?:Index:|diff(?: -r \\w+)+)\\s+(.+?)\\s*$/.exec(line);\n\n if (header) {\n index.index = header[1];\n }\n\n i++;\n } // Parse file headers if they are defined. Unified diff requires them, but\n // there's no technical issues to have an isolated hunk without file header\n\n\n parseFileHeader(index);\n parseFileHeader(index); // Parse hunks\n\n index.hunks = [];\n\n while (i < diffstr.length) {\n var _line = diffstr[i];\n\n if (/^(Index:|diff|\\-\\-\\-|\\+\\+\\+)\\s/.test(_line)) {\n break;\n } else if (/^@@/.test(_line)) {\n index.hunks.push(parseHunk());\n } else if (_line && options.strict) {\n // Ignore unexpected content unless in strict mode\n throw new Error('Unknown line ' + (i + 1) + ' ' + JSON.stringify(_line));\n } else {\n i++;\n }\n }\n } // Parses the --- and +++ headers, if none are found, no lines\n // are consumed.\n\n\n function parseFileHeader(index) {\n var fileHeader = /^(---|\\+\\+\\+)\\s+(.*)$/.exec(diffstr[i]);\n\n if (fileHeader) {\n var keyPrefix = fileHeader[1] === '---' ? 'old' : 'new';\n var data = fileHeader[2].split('\\t', 2);\n var fileName = data[0].replace(/\\\\\\\\/g, '\\\\');\n\n if (/^\".*\"$/.test(fileName)) {\n fileName = fileName.substr(1, fileName.length - 2);\n }\n\n index[keyPrefix + 'FileName'] = fileName;\n index[keyPrefix + 'Header'] = (data[1] || '').trim();\n i++;\n }\n } // Parses a hunk\n // This assumes that we are at the start of a hunk.\n\n\n function parseHunk() {\n var chunkHeaderIndex = i,\n chunkHeaderLine = diffstr[i++],\n chunkHeader = chunkHeaderLine.split(/@@ -(\\d+)(?:,(\\d+))? \\+(\\d+)(?:,(\\d+))? @@/);\n var hunk = {\n oldStart: +chunkHeader[1],\n oldLines: +chunkHeader[2] || 1,\n newStart: +chunkHeader[3],\n newLines: +chunkHeader[4] || 1,\n lines: [],\n linedelimiters: []\n };\n var addCount = 0,\n removeCount = 0;\n\n for (; i < diffstr.length; i++) {\n // Lines starting with '---' could be mistaken for the \"remove line\" operation\n // But they could be the header for the next file. Therefore prune such cases out.\n if (diffstr[i].indexOf('--- ') === 0 && i + 2 < diffstr.length && diffstr[i + 1].indexOf('+++ ') === 0 && diffstr[i + 2].indexOf('@@') === 0) {\n break;\n }\n\n var operation = diffstr[i].length == 0 && i != diffstr.length - 1 ? ' ' : diffstr[i][0];\n\n if (operation === '+' || operation === '-' || operation === ' ' || operation === '\\\\') {\n hunk.lines.push(diffstr[i]);\n hunk.linedelimiters.push(delimiters[i] || '\\n');\n\n if (operation === '+') {\n addCount++;\n } else if (operation === '-') {\n removeCount++;\n } else if (operation === ' ') {\n addCount++;\n removeCount++;\n }\n } else {\n break;\n }\n } // Handle the empty block count case\n\n\n if (!addCount && hunk.newLines === 1) {\n hunk.newLines = 0;\n }\n\n if (!removeCount && hunk.oldLines === 1) {\n hunk.oldLines = 0;\n } // Perform optional sanity checking\n\n\n if (options.strict) {\n if (addCount !== hunk.newLines) {\n throw new Error('Added line count did not match for hunk at line ' + (chunkHeaderIndex + 1));\n }\n\n if (removeCount !== hunk.oldLines) {\n throw new Error('Removed line count did not match for hunk at line ' + (chunkHeaderIndex + 1));\n }\n }\n\n return hunk;\n }\n\n while (i < diffstr.length) {\n parseIndex();\n }\n\n return list;\n }\n\n // Iterator that traverses in the range of [min, max], stepping\n // by distance from a given start position. I.e. for [0, 4], with\n // start of 2, this will iterate 2, 3, 1, 4, 0.\n function distanceIterator (start, minLine, maxLine) {\n var wantForward = true,\n backwardExhausted = false,\n forwardExhausted = false,\n localOffset = 1;\n return function iterator() {\n if (wantForward && !forwardExhausted) {\n if (backwardExhausted) {\n localOffset++;\n } else {\n wantForward = false;\n } // Check if trying to fit beyond text length, and if not, check it fits\n // after offset location (or desired location on first iteration)\n\n\n if (start + localOffset <= maxLine) {\n return localOffset;\n }\n\n forwardExhausted = true;\n }\n\n if (!backwardExhausted) {\n if (!forwardExhausted) {\n wantForward = true;\n } // Check if trying to fit before text beginning, and if not, check it fits\n // before offset location\n\n\n if (minLine <= start - localOffset) {\n return -localOffset++;\n }\n\n backwardExhausted = true;\n return iterator();\n } // We tried to fit hunk before text beginning and beyond text length, then\n // hunk can't fit on the text. Return undefined\n\n };\n }\n\n function applyPatch(source, uniDiff) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n if (typeof uniDiff === 'string') {\n uniDiff = parsePatch(uniDiff);\n }\n\n if (Array.isArray(uniDiff)) {\n if (uniDiff.length > 1) {\n throw new Error('applyPatch only works with a single input.');\n }\n\n uniDiff = uniDiff[0];\n } // Apply the diff to the input\n\n\n var lines = source.split(/\\r\\n|[\\n\\v\\f\\r\\x85]/),\n delimiters = source.match(/\\r\\n|[\\n\\v\\f\\r\\x85]/g) || [],\n hunks = uniDiff.hunks,\n compareLine = options.compareLine || function (lineNumber, line, operation, patchContent) {\n return line === patchContent;\n },\n errorCount = 0,\n fuzzFactor = options.fuzzFactor || 0,\n minLine = 0,\n offset = 0,\n removeEOFNL,\n addEOFNL;\n /**\n * Checks if the hunk exactly fits on the provided location\n */\n\n\n function hunkFits(hunk, toPos) {\n for (var j = 0; j < hunk.lines.length; j++) {\n var line = hunk.lines[j],\n operation = line.length > 0 ? line[0] : ' ',\n content = line.length > 0 ? line.substr(1) : line;\n\n if (operation === ' ' || operation === '-') {\n // Context sanity check\n if (!compareLine(toPos + 1, lines[toPos], operation, content)) {\n errorCount++;\n\n if (errorCount > fuzzFactor) {\n return false;\n }\n }\n\n toPos++;\n }\n }\n\n return true;\n } // Search best fit offsets for each hunk based on the previous ones\n\n\n for (var i = 0; i < hunks.length; i++) {\n var hunk = hunks[i],\n maxLine = lines.length - hunk.oldLines,\n localOffset = 0,\n toPos = offset + hunk.oldStart - 1;\n var iterator = distanceIterator(toPos, minLine, maxLine);\n\n for (; localOffset !== undefined; localOffset = iterator()) {\n if (hunkFits(hunk, toPos + localOffset)) {\n hunk.offset = offset += localOffset;\n break;\n }\n }\n\n if (localOffset === undefined) {\n return false;\n } // Set lower text limit to end of the current hunk, so next ones don't try\n // to fit over already patched text\n\n\n minLine = hunk.offset + hunk.oldStart + hunk.oldLines;\n } // Apply patch hunks\n\n\n var diffOffset = 0;\n\n for (var _i = 0; _i < hunks.length; _i++) {\n var _hunk = hunks[_i],\n _toPos = _hunk.oldStart + _hunk.offset + diffOffset - 1;\n\n diffOffset += _hunk.newLines - _hunk.oldLines;\n\n if (_toPos < 0) {\n // Creating a new file\n _toPos = 0;\n }\n\n for (var j = 0; j < _hunk.lines.length; j++) {\n var line = _hunk.lines[j],\n operation = line.length > 0 ? line[0] : ' ',\n content = line.length > 0 ? line.substr(1) : line,\n delimiter = _hunk.linedelimiters[j];\n\n if (operation === ' ') {\n _toPos++;\n } else if (operation === '-') {\n lines.splice(_toPos, 1);\n delimiters.splice(_toPos, 1);\n /* istanbul ignore else */\n } else if (operation === '+') {\n lines.splice(_toPos, 0, content);\n delimiters.splice(_toPos, 0, delimiter);\n _toPos++;\n } else if (operation === '\\\\') {\n var previousOperation = _hunk.lines[j - 1] ? _hunk.lines[j - 1][0] : null;\n\n if (previousOperation === '+') {\n removeEOFNL = true;\n } else if (previousOperation === '-') {\n addEOFNL = true;\n }\n }\n }\n } // Handle EOFNL insertion/removal\n\n\n if (removeEOFNL) {\n while (!lines[lines.length - 1]) {\n lines.pop();\n delimiters.pop();\n }\n } else if (addEOFNL) {\n lines.push('');\n delimiters.push('\\n');\n }\n\n for (var _k = 0; _k < lines.length - 1; _k++) {\n lines[_k] = lines[_k] + delimiters[_k];\n }\n\n return lines.join('');\n } // Wrapper that supports multiple file patches via callbacks.\n\n function applyPatches(uniDiff, options) {\n if (typeof uniDiff === 'string') {\n uniDiff = parsePatch(uniDiff);\n }\n\n var currentIndex = 0;\n\n function processIndex() {\n var index = uniDiff[currentIndex++];\n\n if (!index) {\n return options.complete();\n }\n\n options.loadFile(index, function (err, data) {\n if (err) {\n return options.complete(err);\n }\n\n var updatedContent = applyPatch(data, index, options);\n options.patched(index, updatedContent, function (err) {\n if (err) {\n return options.complete(err);\n }\n\n processIndex();\n });\n });\n }\n\n processIndex();\n }\n\n function structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options) {\n if (!options) {\n options = {};\n }\n\n if (typeof options.context === 'undefined') {\n options.context = 4;\n }\n\n var diff = diffLines(oldStr, newStr, options);\n diff.push({\n value: '',\n lines: []\n }); // Append an empty value to make cleanup easier\n\n function contextLines(lines) {\n return lines.map(function (entry) {\n return ' ' + entry;\n });\n }\n\n var hunks = [];\n var oldRangeStart = 0,\n newRangeStart = 0,\n curRange = [],\n oldLine = 1,\n newLine = 1;\n\n var _loop = function _loop(i) {\n var current = diff[i],\n lines = current.lines || current.value.replace(/\\n$/, '').split('\\n');\n current.lines = lines;\n\n if (current.added || current.removed) {\n var _curRange;\n\n // If we have previous context, start with that\n if (!oldRangeStart) {\n var prev = diff[i - 1];\n oldRangeStart = oldLine;\n newRangeStart = newLine;\n\n if (prev) {\n curRange = options.context > 0 ? contextLines(prev.lines.slice(-options.context)) : [];\n oldRangeStart -= curRange.length;\n newRangeStart -= curRange.length;\n }\n } // Output our changes\n\n\n (_curRange = curRange).push.apply(_curRange, _toConsumableArray(lines.map(function (entry) {\n return (current.added ? '+' : '-') + entry;\n }))); // Track the updated file position\n\n\n if (current.added) {\n newLine += lines.length;\n } else {\n oldLine += lines.length;\n }\n } else {\n // Identical context lines. Track line changes\n if (oldRangeStart) {\n // Close out any changes that have been output (or join overlapping)\n if (lines.length <= options.context * 2 && i < diff.length - 2) {\n var _curRange2;\n\n // Overlapping\n (_curRange2 = curRange).push.apply(_curRange2, _toConsumableArray(contextLines(lines)));\n } else {\n var _curRange3;\n\n // end the range and output\n var contextSize = Math.min(lines.length, options.context);\n\n (_curRange3 = curRange).push.apply(_curRange3, _toConsumableArray(contextLines(lines.slice(0, contextSize))));\n\n var hunk = {\n oldStart: oldRangeStart,\n oldLines: oldLine - oldRangeStart + contextSize,\n newStart: newRangeStart,\n newLines: newLine - newRangeStart + contextSize,\n lines: curRange\n };\n\n if (i >= diff.length - 2 && lines.length <= options.context) {\n // EOF is inside this hunk\n var oldEOFNewline = /\\n$/.test(oldStr);\n var newEOFNewline = /\\n$/.test(newStr);\n var noNlBeforeAdds = lines.length == 0 && curRange.length > hunk.oldLines;\n\n if (!oldEOFNewline && noNlBeforeAdds) {\n // special case: old has no eol and no trailing context; no-nl can end up before adds\n curRange.splice(hunk.oldLines, 0, '\\\\ No newline at end of file');\n }\n\n if (!oldEOFNewline && !noNlBeforeAdds || !newEOFNewline) {\n curRange.push('\\\\ No newline at end of file');\n }\n }\n\n hunks.push(hunk);\n oldRangeStart = 0;\n newRangeStart = 0;\n curRange = [];\n }\n }\n\n oldLine += lines.length;\n newLine += lines.length;\n }\n };\n\n for (var i = 0; i < diff.length; i++) {\n _loop(i);\n }\n\n return {\n oldFileName: oldFileName,\n newFileName: newFileName,\n oldHeader: oldHeader,\n newHeader: newHeader,\n hunks: hunks\n };\n }\n function createTwoFilesPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options) {\n var diff = structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options);\n var ret = [];\n\n if (oldFileName == newFileName) {\n ret.push('Index: ' + oldFileName);\n }\n\n ret.push('===================================================================');\n ret.push('--- ' + diff.oldFileName + (typeof diff.oldHeader === 'undefined' ? '' : '\\t' + diff.oldHeader));\n ret.push('+++ ' + diff.newFileName + (typeof diff.newHeader === 'undefined' ? '' : '\\t' + diff.newHeader));\n\n for (var i = 0; i < diff.hunks.length; i++) {\n var hunk = diff.hunks[i];\n ret.push('@@ -' + hunk.oldStart + ',' + hunk.oldLines + ' +' + hunk.newStart + ',' + hunk.newLines + ' @@');\n ret.push.apply(ret, hunk.lines);\n }\n\n return ret.join('\\n') + '\\n';\n }\n function createPatch(fileName, oldStr, newStr, oldHeader, newHeader, options) {\n return createTwoFilesPatch(fileName, fileName, oldStr, newStr, oldHeader, newHeader, options);\n }\n\n function arrayEqual(a, b) {\n if (a.length !== b.length) {\n return false;\n }\n\n return arrayStartsWith(a, b);\n }\n function arrayStartsWith(array, start) {\n if (start.length > array.length) {\n return false;\n }\n\n for (var i = 0; i < start.length; i++) {\n if (start[i] !== array[i]) {\n return false;\n }\n }\n\n return true;\n }\n\n function calcLineCount(hunk) {\n var _calcOldNewLineCount = calcOldNewLineCount(hunk.lines),\n oldLines = _calcOldNewLineCount.oldLines,\n newLines = _calcOldNewLineCount.newLines;\n\n if (oldLines !== undefined) {\n hunk.oldLines = oldLines;\n } else {\n delete hunk.oldLines;\n }\n\n if (newLines !== undefined) {\n hunk.newLines = newLines;\n } else {\n delete hunk.newLines;\n }\n }\n function merge(mine, theirs, base) {\n mine = loadPatch(mine, base);\n theirs = loadPatch(theirs, base);\n var ret = {}; // For index we just let it pass through as it doesn't have any necessary meaning.\n // Leaving sanity checks on this to the API consumer that may know more about the\n // meaning in their own context.\n\n if (mine.index || theirs.index) {\n ret.index = mine.index || theirs.index;\n }\n\n if (mine.newFileName || theirs.newFileName) {\n if (!fileNameChanged(mine)) {\n // No header or no change in ours, use theirs (and ours if theirs does not exist)\n ret.oldFileName = theirs.oldFileName || mine.oldFileName;\n ret.newFileName = theirs.newFileName || mine.newFileName;\n ret.oldHeader = theirs.oldHeader || mine.oldHeader;\n ret.newHeader = theirs.newHeader || mine.newHeader;\n } else if (!fileNameChanged(theirs)) {\n // No header or no change in theirs, use ours\n ret.oldFileName = mine.oldFileName;\n ret.newFileName = mine.newFileName;\n ret.oldHeader = mine.oldHeader;\n ret.newHeader = mine.newHeader;\n } else {\n // Both changed... figure it out\n ret.oldFileName = selectField(ret, mine.oldFileName, theirs.oldFileName);\n ret.newFileName = selectField(ret, mine.newFileName, theirs.newFileName);\n ret.oldHeader = selectField(ret, mine.oldHeader, theirs.oldHeader);\n ret.newHeader = selectField(ret, mine.newHeader, theirs.newHeader);\n }\n }\n\n ret.hunks = [];\n var mineIndex = 0,\n theirsIndex = 0,\n mineOffset = 0,\n theirsOffset = 0;\n\n while (mineIndex < mine.hunks.length || theirsIndex < theirs.hunks.length) {\n var mineCurrent = mine.hunks[mineIndex] || {\n oldStart: Infinity\n },\n theirsCurrent = theirs.hunks[theirsIndex] || {\n oldStart: Infinity\n };\n\n if (hunkBefore(mineCurrent, theirsCurrent)) {\n // This patch does not overlap with any of the others, yay.\n ret.hunks.push(cloneHunk(mineCurrent, mineOffset));\n mineIndex++;\n theirsOffset += mineCurrent.newLines - mineCurrent.oldLines;\n } else if (hunkBefore(theirsCurrent, mineCurrent)) {\n // This patch does not overlap with any of the others, yay.\n ret.hunks.push(cloneHunk(theirsCurrent, theirsOffset));\n theirsIndex++;\n mineOffset += theirsCurrent.newLines - theirsCurrent.oldLines;\n } else {\n // Overlap, merge as best we can\n var mergedHunk = {\n oldStart: Math.min(mineCurrent.oldStart, theirsCurrent.oldStart),\n oldLines: 0,\n newStart: Math.min(mineCurrent.newStart + mineOffset, theirsCurrent.oldStart + theirsOffset),\n newLines: 0,\n lines: []\n };\n mergeLines(mergedHunk, mineCurrent.oldStart, mineCurrent.lines, theirsCurrent.oldStart, theirsCurrent.lines);\n theirsIndex++;\n mineIndex++;\n ret.hunks.push(mergedHunk);\n }\n }\n\n return ret;\n }\n\n function loadPatch(param, base) {\n if (typeof param === 'string') {\n if (/^@@/m.test(param) || /^Index:/m.test(param)) {\n return parsePatch(param)[0];\n }\n\n if (!base) {\n throw new Error('Must provide a base reference or pass in a patch');\n }\n\n return structuredPatch(undefined, undefined, base, param);\n }\n\n return param;\n }\n\n function fileNameChanged(patch) {\n return patch.newFileName && patch.newFileName !== patch.oldFileName;\n }\n\n function selectField(index, mine, theirs) {\n if (mine === theirs) {\n return mine;\n } else {\n index.conflict = true;\n return {\n mine: mine,\n theirs: theirs\n };\n }\n }\n\n function hunkBefore(test, check) {\n return test.oldStart < check.oldStart && test.oldStart + test.oldLines < check.oldStart;\n }\n\n function cloneHunk(hunk, offset) {\n return {\n oldStart: hunk.oldStart,\n oldLines: hunk.oldLines,\n newStart: hunk.newStart + offset,\n newLines: hunk.newLines,\n lines: hunk.lines\n };\n }\n\n function mergeLines(hunk, mineOffset, mineLines, theirOffset, theirLines) {\n // This will generally result in a conflicted hunk, but there are cases where the context\n // is the only overlap where we can successfully merge the content here.\n var mine = {\n offset: mineOffset,\n lines: mineLines,\n index: 0\n },\n their = {\n offset: theirOffset,\n lines: theirLines,\n index: 0\n }; // Handle any leading content\n\n insertLeading(hunk, mine, their);\n insertLeading(hunk, their, mine); // Now in the overlap content. Scan through and select the best changes from each.\n\n while (mine.index < mine.lines.length && their.index < their.lines.length) {\n var mineCurrent = mine.lines[mine.index],\n theirCurrent = their.lines[their.index];\n\n if ((mineCurrent[0] === '-' || mineCurrent[0] === '+') && (theirCurrent[0] === '-' || theirCurrent[0] === '+')) {\n // Both modified ...\n mutualChange(hunk, mine, their);\n } else if (mineCurrent[0] === '+' && theirCurrent[0] === ' ') {\n var _hunk$lines;\n\n // Mine inserted\n (_hunk$lines = hunk.lines).push.apply(_hunk$lines, _toConsumableArray(collectChange(mine)));\n } else if (theirCurrent[0] === '+' && mineCurrent[0] === ' ') {\n var _hunk$lines2;\n\n // Theirs inserted\n (_hunk$lines2 = hunk.lines).push.apply(_hunk$lines2, _toConsumableArray(collectChange(their)));\n } else if (mineCurrent[0] === '-' && theirCurrent[0] === ' ') {\n // Mine removed or edited\n removal(hunk, mine, their);\n } else if (theirCurrent[0] === '-' && mineCurrent[0] === ' ') {\n // Their removed or edited\n removal(hunk, their, mine, true);\n } else if (mineCurrent === theirCurrent) {\n // Context identity\n hunk.lines.push(mineCurrent);\n mine.index++;\n their.index++;\n } else {\n // Context mismatch\n conflict(hunk, collectChange(mine), collectChange(their));\n }\n } // Now push anything that may be remaining\n\n\n insertTrailing(hunk, mine);\n insertTrailing(hunk, their);\n calcLineCount(hunk);\n }\n\n function mutualChange(hunk, mine, their) {\n var myChanges = collectChange(mine),\n theirChanges = collectChange(their);\n\n if (allRemoves(myChanges) && allRemoves(theirChanges)) {\n // Special case for remove changes that are supersets of one another\n if (arrayStartsWith(myChanges, theirChanges) && skipRemoveSuperset(their, myChanges, myChanges.length - theirChanges.length)) {\n var _hunk$lines3;\n\n (_hunk$lines3 = hunk.lines).push.apply(_hunk$lines3, _toConsumableArray(myChanges));\n\n return;\n } else if (arrayStartsWith(theirChanges, myChanges) && skipRemoveSuperset(mine, theirChanges, theirChanges.length - myChanges.length)) {\n var _hunk$lines4;\n\n (_hunk$lines4 = hunk.lines).push.apply(_hunk$lines4, _toConsumableArray(theirChanges));\n\n return;\n }\n } else if (arrayEqual(myChanges, theirChanges)) {\n var _hunk$lines5;\n\n (_hunk$lines5 = hunk.lines).push.apply(_hunk$lines5, _toConsumableArray(myChanges));\n\n return;\n }\n\n conflict(hunk, myChanges, theirChanges);\n }\n\n function removal(hunk, mine, their, swap) {\n var myChanges = collectChange(mine),\n theirChanges = collectContext(their, myChanges);\n\n if (theirChanges.merged) {\n var _hunk$lines6;\n\n (_hunk$lines6 = hunk.lines).push.apply(_hunk$lines6, _toConsumableArray(theirChanges.merged));\n } else {\n conflict(hunk, swap ? theirChanges : myChanges, swap ? myChanges : theirChanges);\n }\n }\n\n function conflict(hunk, mine, their) {\n hunk.conflict = true;\n hunk.lines.push({\n conflict: true,\n mine: mine,\n theirs: their\n });\n }\n\n function insertLeading(hunk, insert, their) {\n while (insert.offset < their.offset && insert.index < insert.lines.length) {\n var line = insert.lines[insert.index++];\n hunk.lines.push(line);\n insert.offset++;\n }\n }\n\n function insertTrailing(hunk, insert) {\n while (insert.index < insert.lines.length) {\n var line = insert.lines[insert.index++];\n hunk.lines.push(line);\n }\n }\n\n function collectChange(state) {\n var ret = [],\n operation = state.lines[state.index][0];\n\n while (state.index < state.lines.length) {\n var line = state.lines[state.index]; // Group additions that are immediately after subtractions and treat them as one \"atomic\" modify change.\n\n if (operation === '-' && line[0] === '+') {\n operation = '+';\n }\n\n if (operation === line[0]) {\n ret.push(line);\n state.index++;\n } else {\n break;\n }\n }\n\n return ret;\n }\n\n function collectContext(state, matchChanges) {\n var changes = [],\n merged = [],\n matchIndex = 0,\n contextChanges = false,\n conflicted = false;\n\n while (matchIndex < matchChanges.length && state.index < state.lines.length) {\n var change = state.lines[state.index],\n match = matchChanges[matchIndex]; // Once we've hit our add, then we are done\n\n if (match[0] === '+') {\n break;\n }\n\n contextChanges = contextChanges || change[0] !== ' ';\n merged.push(match);\n matchIndex++; // Consume any additions in the other block as a conflict to attempt\n // to pull in the remaining context after this\n\n if (change[0] === '+') {\n conflicted = true;\n\n while (change[0] === '+') {\n changes.push(change);\n change = state.lines[++state.index];\n }\n }\n\n if (match.substr(1) === change.substr(1)) {\n changes.push(change);\n state.index++;\n } else {\n conflicted = true;\n }\n }\n\n if ((matchChanges[matchIndex] || '')[0] === '+' && contextChanges) {\n conflicted = true;\n }\n\n if (conflicted) {\n return changes;\n }\n\n while (matchIndex < matchChanges.length) {\n merged.push(matchChanges[matchIndex++]);\n }\n\n return {\n merged: merged,\n changes: changes\n };\n }\n\n function allRemoves(changes) {\n return changes.reduce(function (prev, change) {\n return prev && change[0] === '-';\n }, true);\n }\n\n function skipRemoveSuperset(state, removeChanges, delta) {\n for (var i = 0; i < delta; i++) {\n var changeContent = removeChanges[removeChanges.length - delta + i].substr(1);\n\n if (state.lines[state.index + i] !== ' ' + changeContent) {\n return false;\n }\n }\n\n state.index += delta;\n return true;\n }\n\n function calcOldNewLineCount(lines) {\n var oldLines = 0;\n var newLines = 0;\n lines.forEach(function (line) {\n if (typeof line !== 'string') {\n var myCount = calcOldNewLineCount(line.mine);\n var theirCount = calcOldNewLineCount(line.theirs);\n\n if (oldLines !== undefined) {\n if (myCount.oldLines === theirCount.oldLines) {\n oldLines += myCount.oldLines;\n } else {\n oldLines = undefined;\n }\n }\n\n if (newLines !== undefined) {\n if (myCount.newLines === theirCount.newLines) {\n newLines += myCount.newLines;\n } else {\n newLines = undefined;\n }\n }\n } else {\n if (newLines !== undefined && (line[0] === '+' || line[0] === ' ')) {\n newLines++;\n }\n\n if (oldLines !== undefined && (line[0] === '-' || line[0] === ' ')) {\n oldLines++;\n }\n }\n });\n return {\n oldLines: oldLines,\n newLines: newLines\n };\n }\n\n // See: http://code.google.com/p/google-diff-match-patch/wiki/API\n function convertChangesToDMP(changes) {\n var ret = [],\n change,\n operation;\n\n for (var i = 0; i < changes.length; i++) {\n change = changes[i];\n\n if (change.added) {\n operation = 1;\n } else if (change.removed) {\n operation = -1;\n } else {\n operation = 0;\n }\n\n ret.push([operation, change.value]);\n }\n\n return ret;\n }\n\n function convertChangesToXML(changes) {\n var ret = [];\n\n for (var i = 0; i < changes.length; i++) {\n var change = changes[i];\n\n if (change.added) {\n ret.push('');\n } else if (change.removed) {\n ret.push('');\n }\n\n ret.push(escapeHTML(change.value));\n\n if (change.added) {\n ret.push('');\n } else if (change.removed) {\n ret.push('');\n }\n }\n\n return ret.join('');\n }\n\n function escapeHTML(s) {\n var n = s;\n n = n.replace(/&/g, '&');\n n = n.replace(//g, '>');\n n = n.replace(/\"/g, '"');\n return n;\n }\n\n /* See LICENSE file for terms of use */\n\n exports.Diff = Diff;\n exports.diffChars = diffChars;\n exports.diffWords = diffWords;\n exports.diffWordsWithSpace = diffWordsWithSpace;\n exports.diffLines = diffLines;\n exports.diffTrimmedLines = diffTrimmedLines;\n exports.diffSentences = diffSentences;\n exports.diffCss = diffCss;\n exports.diffJson = diffJson;\n exports.diffArrays = diffArrays;\n exports.structuredPatch = structuredPatch;\n exports.createTwoFilesPatch = createTwoFilesPatch;\n exports.createPatch = createPatch;\n exports.applyPatch = applyPatch;\n exports.applyPatches = applyPatches;\n exports.parsePatch = parsePatch;\n exports.merge = merge;\n exports.convertChangesToDMP = convertChangesToDMP;\n exports.convertChangesToXML = convertChangesToXML;\n exports.canonicalize = canonicalize;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n}));\n","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar React = require('react');\nvar PropTypes = require('prop-types');\nvar _require = require('focus-trap'),\n createFocusTrap = _require.createFocusTrap;\nvar _require2 = require('tabbable'),\n isFocusable = _require2.isFocusable;\nvar FocusTrap = /*#__PURE__*/function (_React$Component) {\n _inherits(FocusTrap, _React$Component);\n var _super = _createSuper(FocusTrap);\n function FocusTrap(props) {\n var _this;\n _classCallCheck(this, FocusTrap);\n _this = _super.call(this, props);\n /**\n * Gets the node for the given option, which is expected to be an option that\n * can be either a DOM node, a string that is a selector to get a node, `false`\n * (if a node is explicitly NOT given), or a function that returns any of these\n * values.\n * @param {string} optionName\n * @returns {undefined | false | HTMLElement | SVGElement} Returns\n * `undefined` if the option is not specified; `false` if the option\n * resolved to `false` (node explicitly not given); otherwise, the resolved\n * DOM node.\n * @throws {Error} If the option is set, not `false`, and is not, or does not\n * resolve to a node.\n */\n _defineProperty(_assertThisInitialized(_this), \"getNodeForOption\", function (optionName) {\n var _this$internalOptions;\n // use internal options first, falling back to original options\n var optionValue = (_this$internalOptions = this.internalOptions[optionName]) !== null && _this$internalOptions !== void 0 ? _this$internalOptions : this.originalOptions[optionName];\n if (typeof optionValue === 'function') {\n for (var _len = arguments.length, params = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n params[_key - 1] = arguments[_key];\n }\n optionValue = optionValue.apply(void 0, params);\n }\n if (optionValue === true) {\n optionValue = undefined; // use default value\n }\n\n if (!optionValue) {\n if (optionValue === undefined || optionValue === false) {\n return optionValue;\n }\n // else, empty string (invalid), null (invalid), 0 (invalid)\n\n throw new Error(\"`\".concat(optionName, \"` was specified but was not a node, or did not return a node\"));\n }\n var node = optionValue; // could be HTMLElement, SVGElement, or non-empty string at this point\n\n if (typeof optionValue === 'string') {\n var _this$getDocument;\n node = (_this$getDocument = this.getDocument()) === null || _this$getDocument === void 0 ? void 0 : _this$getDocument.querySelector(optionValue); // resolve to node, or null if fails\n if (!node) {\n throw new Error(\"`\".concat(optionName, \"` as selector refers to no known node\"));\n }\n }\n return node;\n });\n _this.handleDeactivate = _this.handleDeactivate.bind(_assertThisInitialized(_this));\n _this.handlePostDeactivate = _this.handlePostDeactivate.bind(_assertThisInitialized(_this));\n _this.handleClickOutsideDeactivates = _this.handleClickOutsideDeactivates.bind(_assertThisInitialized(_this));\n\n // focus-trap options used internally when creating the trap\n _this.internalOptions = {\n // We need to hijack the returnFocusOnDeactivate option,\n // because React can move focus into the element before we arrived at\n // this lifecycle hook (e.g. with autoFocus inputs). So the component\n // captures the previouslyFocusedElement in componentWillMount,\n // then (optionally) returns focus to it in componentWillUnmount.\n returnFocusOnDeactivate: false,\n // the rest of these are also related to deactivation of the trap, and we\n // need to use them and control them as well\n checkCanReturnFocus: null,\n onDeactivate: _this.handleDeactivate,\n onPostDeactivate: _this.handlePostDeactivate,\n // we need to special-case this setting as well so that we can know if we should\n // NOT return focus if the trap gets auto-deactivated as the result of an\n // outside click (otherwise, we'll always think we should return focus because\n // of how we manage that flag internally here)\n clickOutsideDeactivates: _this.handleClickOutsideDeactivates\n };\n\n // original options provided by the consumer\n _this.originalOptions = {\n // because of the above `internalOptions`, we maintain our own flag for\n // this option, and default it to `true` because that's focus-trap's default\n returnFocusOnDeactivate: true,\n // because of the above `internalOptions`, we keep these separate since\n // they're part of the deactivation process which we configure (internally) to\n // be shared between focus-trap and focus-trap-react\n onDeactivate: null,\n onPostDeactivate: null,\n checkCanReturnFocus: null,\n // the user's setting, defaulted to false since focus-trap defaults this to false\n clickOutsideDeactivates: false\n };\n var focusTrapOptions = props.focusTrapOptions;\n for (var optionName in focusTrapOptions) {\n if (!Object.prototype.hasOwnProperty.call(focusTrapOptions, optionName)) {\n continue;\n }\n if (optionName === 'returnFocusOnDeactivate' || optionName === 'onDeactivate' || optionName === 'onPostDeactivate' || optionName === 'checkCanReturnFocus' || optionName === 'clickOutsideDeactivates') {\n _this.originalOptions[optionName] = focusTrapOptions[optionName];\n continue; // exclude from internalOptions\n }\n\n _this.internalOptions[optionName] = focusTrapOptions[optionName];\n }\n\n // if set, `{ target: Node, allowDeactivation: boolean }` where `target` is the outside\n // node that was clicked, and `allowDeactivation` is the result of the consumer's\n // option (stored in `this.originalOptions.clickOutsideDeactivates`, which may be a\n // function) whether to allow or deny auto-deactivation on click on this outside node\n _this.outsideClick = null;\n\n // elements from which to create the focus trap on mount; if a child is used\n // instead of the `containerElements` prop, we'll get the child's related\n // element when the trap renders and then is declared 'mounted'\n _this.focusTrapElements = props.containerElements || [];\n\n // now we remember what the currently focused element is, not relying on focus-trap\n _this.updatePreviousElement();\n return _this;\n }\n\n /**\n * Gets the configured document.\n * @returns {Document|undefined} Configured document, falling back to the main\n * document, if it exists. During SSR, `undefined` is returned since the\n * document doesn't exist.\n */\n _createClass(FocusTrap, [{\n key: \"getDocument\",\n value: function getDocument() {\n // SSR: careful to check if `document` exists before accessing it as a variable\n return this.props.focusTrapOptions.document || (typeof document !== 'undefined' ? document : undefined);\n }\n }, {\n key: \"getReturnFocusNode\",\n value: function getReturnFocusNode() {\n var node = this.getNodeForOption('setReturnFocus', this.previouslyFocusedElement);\n return node ? node : node === false ? false : this.previouslyFocusedElement;\n }\n\n /** Update the previously focused element with the currently focused element. */\n }, {\n key: \"updatePreviousElement\",\n value: function updatePreviousElement() {\n var currentDocument = this.getDocument();\n if (currentDocument) {\n this.previouslyFocusedElement = currentDocument.activeElement;\n }\n }\n }, {\n key: \"deactivateTrap\",\n value: function deactivateTrap() {\n // NOTE: it's possible the focus trap has already been deactivated without our knowing it,\n // especially if the user set the `clickOutsideDeactivates: true` option on the trap,\n // and the mouse was clicked on some element outside the trap; at that point, focus-trap\n // will initiate its auto-deactivation process, which will call our own\n // handleDeactivate(), which will call into this method\n if (!this.focusTrap || !this.focusTrap.active) {\n return;\n }\n this.focusTrap.deactivate({\n // NOTE: we never let the trap return the focus since we do that ourselves\n returnFocus: false,\n // we'll call this in our own post deactivate handler so make sure the trap doesn't\n // do it prematurely\n checkCanReturnFocus: null,\n // let it call the user's original deactivate handler, if any, instead of\n // our own which calls back into this function\n onDeactivate: this.originalOptions.onDeactivate\n // NOTE: for post deactivate, don't specify anything so that it calls the\n // onPostDeactivate handler specified on `this.internalOptions`\n // which will always be our own `handlePostDeactivate()` handler, which\n // will finish things off by calling the user's provided onPostDeactivate\n // handler, if any, at the right time\n // onPostDeactivate: NOTHING\n });\n }\n }, {\n key: \"handleClickOutsideDeactivates\",\n value: function handleClickOutsideDeactivates(event) {\n // use consumer's option (or call their handler) as the permission or denial\n var allowDeactivation = typeof this.originalOptions.clickOutsideDeactivates === 'function' ? this.originalOptions.clickOutsideDeactivates.call(null, event) // call out of context\n : this.originalOptions.clickOutsideDeactivates; // boolean\n\n if (allowDeactivation) {\n // capture the outside target that was clicked so we can use it in the deactivation\n // process since the consumer allowed it to cause auto-deactivation\n this.outsideClick = {\n target: event.target,\n allowDeactivation: allowDeactivation\n };\n }\n return allowDeactivation;\n }\n }, {\n key: \"handleDeactivate\",\n value: function handleDeactivate() {\n if (this.originalOptions.onDeactivate) {\n this.originalOptions.onDeactivate.call(null); // call user's handler out of context\n }\n\n this.deactivateTrap();\n }\n }, {\n key: \"handlePostDeactivate\",\n value: function handlePostDeactivate() {\n var _this2 = this;\n var finishDeactivation = function finishDeactivation() {\n var returnFocusNode = _this2.getReturnFocusNode();\n var canReturnFocus = !!(\n // did the consumer allow it?\n\n _this2.originalOptions.returnFocusOnDeactivate && // can we actually focus the node?\n returnFocusNode !== null && returnFocusNode !== void 0 && returnFocusNode.focus && (\n // was there an outside click that allowed deactivation?\n !_this2.outsideClick ||\n // did the consumer allow deactivation when the outside node was clicked?\n _this2.outsideClick.allowDeactivation &&\n // is the outside node NOT focusable (implying that it did NOT receive focus\n // as a result of the click-through) -- in which case do NOT restore focus\n // to `returnFocusNode` because focus should remain on the outside node\n !isFocusable(_this2.outsideClick.target, _this2.internalOptions.tabbableOptions))\n\n // if no, the restore focus to `returnFocusNode` at this point\n );\n\n var _this2$internalOption = _this2.internalOptions.preventScroll,\n preventScroll = _this2$internalOption === void 0 ? false : _this2$internalOption;\n if (canReturnFocus) {\n // return focus to the element that had focus when the trap was activated\n returnFocusNode.focus({\n preventScroll: preventScroll\n });\n }\n if (_this2.originalOptions.onPostDeactivate) {\n _this2.originalOptions.onPostDeactivate.call(null); // don't call it in context of \"this\"\n }\n\n _this2.outsideClick = null; // reset: no longer needed\n };\n\n if (this.originalOptions.checkCanReturnFocus) {\n this.originalOptions.checkCanReturnFocus.call(null, this.getReturnFocusNode()) // call out of context\n .then(finishDeactivation, finishDeactivation);\n } else {\n finishDeactivation();\n }\n }\n }, {\n key: \"setupFocusTrap\",\n value: function setupFocusTrap() {\n if (this.focusTrap) {\n // trap already exists: it's possible we're in StrictMode and we're being remounted,\n // in which case, we will have deactivated the trap when we got unmounted (remember,\n // StrictMode, in development, purposely unmounts and remounts components after\n // mounting them the first time to make sure they have reusable state,\n // @see https://reactjs.org/docs/strict-mode.html#ensuring-reusable-state) so now\n // we need to restore the state of the trap according to our component state\n // NOTE: Strict mode __violates__ assumptions about the `componentWillUnmount()` API\n // which clearly states -- even for React 18 -- that, \"Once a component instance is\n // unmounted, __it will never be mounted again.__\" (emphasis ours). So when we get\n // unmounted, we assume we're gone forever and we deactivate the trap. But then\n // we get remounted and we're supposed to restore state. But if you had paused,\n // we've now deactivated (we don't know we're amount to get remounted again)\n // which means we need to reactivate and then pause. Otherwise, do nothing.\n if (this.props.active && !this.focusTrap.active) {\n this.focusTrap.activate();\n if (this.props.paused) {\n this.focusTrap.pause();\n }\n }\n } else {\n var nodesExist = this.focusTrapElements.some(Boolean);\n if (nodesExist) {\n // eslint-disable-next-line react/prop-types -- _createFocusTrap is an internal prop\n this.focusTrap = this.props._createFocusTrap(this.focusTrapElements, this.internalOptions);\n if (this.props.active) {\n this.focusTrap.activate();\n }\n if (this.props.paused) {\n this.focusTrap.pause();\n }\n }\n }\n }\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n if (this.props.active) {\n this.setupFocusTrap();\n }\n // else, wait for later activation in case the `focusTrapOptions` will be updated\n // again before the trap is activated (e.g. if waiting to know what the document\n // object will be, so the Trap must be rendered, but the consumer is waiting to\n // activate until they have obtained the document from a ref)\n // @see https://github.com/focus-trap/focus-trap-react/issues/539\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n if (this.focusTrap) {\n if (prevProps.containerElements !== this.props.containerElements) {\n this.focusTrap.updateContainerElements(this.props.containerElements);\n }\n var hasActivated = !prevProps.active && this.props.active;\n var hasDeactivated = prevProps.active && !this.props.active;\n var hasPaused = !prevProps.paused && this.props.paused;\n var hasUnpaused = prevProps.paused && !this.props.paused;\n if (hasActivated) {\n this.updatePreviousElement();\n this.focusTrap.activate();\n }\n if (hasDeactivated) {\n this.deactivateTrap();\n return; // un/pause does nothing on an inactive trap\n }\n\n if (hasPaused) {\n this.focusTrap.pause();\n }\n if (hasUnpaused) {\n this.focusTrap.unpause();\n }\n } else {\n // NOTE: if we're in `componentDidUpdate` and we don't have a trap yet,\n // it either means it shouldn't be active, or it should be but none of\n // of given `containerElements` were present in the DOM the last time\n // we tried to create the trap\n\n if (prevProps.containerElements !== this.props.containerElements) {\n this.focusTrapElements = this.props.containerElements;\n }\n\n // don't create the trap unless it should be active in case the consumer\n // is still updating `focusTrapOptions`\n // @see https://github.com/focus-trap/focus-trap-react/issues/539\n if (this.props.active) {\n this.updatePreviousElement();\n this.setupFocusTrap();\n }\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.deactivateTrap();\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this3 = this;\n var child = this.props.children ? React.Children.only(this.props.children) : undefined;\n if (child) {\n if (child.type && child.type === React.Fragment) {\n throw new Error('A focus-trap cannot use a Fragment as its child container. Try replacing it with a
element.');\n }\n var callbackRef = function callbackRef(element) {\n var containerElements = _this3.props.containerElements;\n if (child) {\n if (typeof child.ref === 'function') {\n child.ref(element);\n } else if (child.ref) {\n child.ref.current = element;\n }\n }\n _this3.focusTrapElements = containerElements ? containerElements : [element];\n };\n var childWithRef = React.cloneElement(child, {\n ref: callbackRef\n });\n return childWithRef;\n }\n return null;\n }\n }]);\n return FocusTrap;\n}(React.Component); // support server-side rendering where `Element` will not be defined\nvar ElementType = typeof Element === 'undefined' ? Function : Element;\nFocusTrap.propTypes = {\n active: PropTypes.bool,\n paused: PropTypes.bool,\n focusTrapOptions: PropTypes.shape({\n document: PropTypes.object,\n onActivate: PropTypes.func,\n onPostActivate: PropTypes.func,\n checkCanFocusTrap: PropTypes.func,\n onPause: PropTypes.func,\n onPostPause: PropTypes.func,\n onUnpause: PropTypes.func,\n onPostUnpause: PropTypes.func,\n onDeactivate: PropTypes.func,\n onPostDeactivate: PropTypes.func,\n checkCanReturnFocus: PropTypes.func,\n initialFocus: PropTypes.oneOfType([PropTypes.instanceOf(ElementType), PropTypes.string, PropTypes.bool, PropTypes.func]),\n fallbackFocus: PropTypes.oneOfType([PropTypes.instanceOf(ElementType), PropTypes.string,\n // NOTE: does not support `false` as value (or return value from function)\n PropTypes.func]),\n escapeDeactivates: PropTypes.oneOfType([PropTypes.bool, PropTypes.func]),\n clickOutsideDeactivates: PropTypes.oneOfType([PropTypes.bool, PropTypes.func]),\n returnFocusOnDeactivate: PropTypes.bool,\n setReturnFocus: PropTypes.oneOfType([PropTypes.instanceOf(ElementType), PropTypes.string, PropTypes.bool, PropTypes.func]),\n allowOutsideClick: PropTypes.oneOfType([PropTypes.bool, PropTypes.func]),\n preventScroll: PropTypes.bool,\n tabbableOptions: PropTypes.shape({\n displayCheck: PropTypes.oneOf(['full', 'legacy-full', 'non-zero-area', 'none']),\n getShadowRoot: PropTypes.oneOfType([PropTypes.bool, PropTypes.func])\n }),\n trapStack: PropTypes.array,\n isKeyForward: PropTypes.func,\n isKeyBackward: PropTypes.func\n }),\n containerElements: PropTypes.arrayOf(PropTypes.instanceOf(ElementType)),\n // DOM element ONLY\n children: PropTypes.oneOfType([PropTypes.element,\n // React element\n PropTypes.instanceOf(ElementType) // DOM element\n ])\n\n // NOTE: _createFocusTrap is internal, for testing purposes only, so we don't\n // specify it here. It's expected to be set to the function returned from\n // require('focus-trap'), or one with a compatible interface.\n};\n\nFocusTrap.defaultProps = {\n active: true,\n paused: false,\n focusTrapOptions: {},\n _createFocusTrap: createFocusTrap\n};\nmodule.exports = FocusTrap;","import { tabbable, focusable, isFocusable, isTabbable } from 'tabbable';\n\nconst activeFocusTraps = {\n activateTrap(trapStack, trap) {\n if (trapStack.length > 0) {\n const activeTrap = trapStack[trapStack.length - 1];\n if (activeTrap !== trap) {\n activeTrap.pause();\n }\n }\n\n const trapIndex = trapStack.indexOf(trap);\n if (trapIndex === -1) {\n trapStack.push(trap);\n } else {\n // move this existing trap to the front of the queue\n trapStack.splice(trapIndex, 1);\n trapStack.push(trap);\n }\n },\n\n deactivateTrap(trapStack, trap) {\n const trapIndex = trapStack.indexOf(trap);\n if (trapIndex !== -1) {\n trapStack.splice(trapIndex, 1);\n }\n\n if (trapStack.length > 0) {\n trapStack[trapStack.length - 1].unpause();\n }\n },\n};\n\nconst isSelectableInput = function (node) {\n return (\n node.tagName &&\n node.tagName.toLowerCase() === 'input' &&\n typeof node.select === 'function'\n );\n};\n\nconst isEscapeEvent = function (e) {\n return e.key === 'Escape' || e.key === 'Esc' || e.keyCode === 27;\n};\n\nconst isTabEvent = function (e) {\n return e.key === 'Tab' || e.keyCode === 9;\n};\n\n// checks for TAB by default\nconst isKeyForward = function (e) {\n return isTabEvent(e) && !e.shiftKey;\n};\n\n// checks for SHIFT+TAB by default\nconst isKeyBackward = function (e) {\n return isTabEvent(e) && e.shiftKey;\n};\n\nconst delay = function (fn) {\n return setTimeout(fn, 0);\n};\n\n// Array.find/findIndex() are not supported on IE; this replicates enough\n// of Array.findIndex() for our needs\nconst findIndex = function (arr, fn) {\n let idx = -1;\n\n arr.every(function (value, i) {\n if (fn(value)) {\n idx = i;\n return false; // break\n }\n\n return true; // next\n });\n\n return idx;\n};\n\n/**\n * Get an option's value when it could be a plain value, or a handler that provides\n * the value.\n * @param {*} value Option's value to check.\n * @param {...*} [params] Any parameters to pass to the handler, if `value` is a function.\n * @returns {*} The `value`, or the handler's returned value.\n */\nconst valueOrHandler = function (value, ...params) {\n return typeof value === 'function' ? value(...params) : value;\n};\n\nconst getActualTarget = function (event) {\n // NOTE: If the trap is _inside_ a shadow DOM, event.target will always be the\n // shadow host. However, event.target.composedPath() will be an array of\n // nodes \"clicked\" from inner-most (the actual element inside the shadow) to\n // outer-most (the host HTML document). If we have access to composedPath(),\n // then use its first element; otherwise, fall back to event.target (and\n // this only works for an _open_ shadow DOM; otherwise,\n // composedPath()[0] === event.target always).\n return event.target.shadowRoot && typeof event.composedPath === 'function'\n ? event.composedPath()[0]\n : event.target;\n};\n\n// NOTE: this must be _outside_ `createFocusTrap()` to make sure all traps in this\n// current instance use the same stack if `userOptions.trapStack` isn't specified\nconst internalTrapStack = [];\n\nconst createFocusTrap = function (elements, userOptions) {\n // SSR: a live trap shouldn't be created in this type of environment so this\n // should be safe code to execute if the `document` option isn't specified\n const doc = userOptions?.document || document;\n\n const trapStack = userOptions?.trapStack || internalTrapStack;\n\n const config = {\n returnFocusOnDeactivate: true,\n escapeDeactivates: true,\n delayInitialFocus: true,\n isKeyForward,\n isKeyBackward,\n ...userOptions,\n };\n\n const state = {\n // containers given to createFocusTrap()\n // @type {Array}\n containers: [],\n\n // list of objects identifying tabbable nodes in `containers` in the trap\n // NOTE: it's possible that a group has no tabbable nodes if nodes get removed while the trap\n // is active, but the trap should never get to a state where there isn't at least one group\n // with at least one tabbable node in it (that would lead to an error condition that would\n // result in an error being thrown)\n // @type {Array<{\n // container: HTMLElement,\n // tabbableNodes: Array, // empty if none\n // focusableNodes: Array, // empty if none\n // firstTabbableNode: HTMLElement|null,\n // lastTabbableNode: HTMLElement|null,\n // nextTabbableNode: (node: HTMLElement, forward: boolean) => HTMLElement|undefined\n // }>}\n containerGroups: [], // same order/length as `containers` list\n\n // references to objects in `containerGroups`, but only those that actually have\n // tabbable nodes in them\n // NOTE: same order as `containers` and `containerGroups`, but __not necessarily__\n // the same length\n tabbableGroups: [],\n\n nodeFocusedBeforeActivation: null,\n mostRecentlyFocusedNode: null,\n active: false,\n paused: false,\n\n // timer ID for when delayInitialFocus is true and initial focus in this trap\n // has been delayed during activation\n delayInitialFocusTimer: undefined,\n };\n\n let trap; // eslint-disable-line prefer-const -- some private functions reference it, and its methods reference private functions, so we must declare here and define later\n\n /**\n * Gets a configuration option value.\n * @param {Object|undefined} configOverrideOptions If true, and option is defined in this set,\n * value will be taken from this object. Otherwise, value will be taken from base configuration.\n * @param {string} optionName Name of the option whose value is sought.\n * @param {string|undefined} [configOptionName] Name of option to use __instead of__ `optionName`\n * IIF `configOverrideOptions` is not defined. Otherwise, `optionName` is used.\n */\n const getOption = (configOverrideOptions, optionName, configOptionName) => {\n return configOverrideOptions &&\n configOverrideOptions[optionName] !== undefined\n ? configOverrideOptions[optionName]\n : config[configOptionName || optionName];\n };\n\n /**\n * Finds the index of the container that contains the element.\n * @param {HTMLElement} element\n * @param {Event} [event]\n * @returns {number} Index of the container in either `state.containers` or\n * `state.containerGroups` (the order/length of these lists are the same); -1\n * if the element isn't found.\n */\n const findContainerIndex = function (element, event) {\n const composedPath =\n typeof event?.composedPath === 'function'\n ? event.composedPath()\n : undefined;\n // NOTE: search `containerGroups` because it's possible a group contains no tabbable\n // nodes, but still contains focusable nodes (e.g. if they all have `tabindex=-1`)\n // and we still need to find the element in there\n return state.containerGroups.findIndex(\n ({ container, tabbableNodes }) =>\n container.contains(element) ||\n // fall back to explicit tabbable search which will take into consideration any\n // web components if the `tabbableOptions.getShadowRoot` option was used for\n // the trap, enabling shadow DOM support in tabbable (`Node.contains()` doesn't\n // look inside web components even if open)\n composedPath?.includes(container) ||\n tabbableNodes.find((node) => node === element)\n );\n };\n\n /**\n * Gets the node for the given option, which is expected to be an option that\n * can be either a DOM node, a string that is a selector to get a node, `false`\n * (if a node is explicitly NOT given), or a function that returns any of these\n * values.\n * @param {string} optionName\n * @returns {undefined | false | HTMLElement | SVGElement} Returns\n * `undefined` if the option is not specified; `false` if the option\n * resolved to `false` (node explicitly not given); otherwise, the resolved\n * DOM node.\n * @throws {Error} If the option is set, not `false`, and is not, or does not\n * resolve to a node.\n */\n const getNodeForOption = function (optionName, ...params) {\n let optionValue = config[optionName];\n\n if (typeof optionValue === 'function') {\n optionValue = optionValue(...params);\n }\n\n if (optionValue === true) {\n optionValue = undefined; // use default value\n }\n\n if (!optionValue) {\n if (optionValue === undefined || optionValue === false) {\n return optionValue;\n }\n // else, empty string (invalid), null (invalid), 0 (invalid)\n\n throw new Error(\n `\\`${optionName}\\` was specified but was not a node, or did not return a node`\n );\n }\n\n let node = optionValue; // could be HTMLElement, SVGElement, or non-empty string at this point\n\n if (typeof optionValue === 'string') {\n node = doc.querySelector(optionValue); // resolve to node, or null if fails\n if (!node) {\n throw new Error(\n `\\`${optionName}\\` as selector refers to no known node`\n );\n }\n }\n\n return node;\n };\n\n const getInitialFocusNode = function () {\n let node = getNodeForOption('initialFocus');\n\n // false explicitly indicates we want no initialFocus at all\n if (node === false) {\n return false;\n }\n\n if (node === undefined || !isFocusable(node, config.tabbableOptions)) {\n // option not specified nor focusable: use fallback options\n if (findContainerIndex(doc.activeElement) >= 0) {\n node = doc.activeElement;\n } else {\n const firstTabbableGroup = state.tabbableGroups[0];\n const firstTabbableNode =\n firstTabbableGroup && firstTabbableGroup.firstTabbableNode;\n\n // NOTE: `fallbackFocus` option function cannot return `false` (not supported)\n node = firstTabbableNode || getNodeForOption('fallbackFocus');\n }\n }\n\n if (!node) {\n throw new Error(\n 'Your focus-trap needs to have at least one focusable element'\n );\n }\n\n return node;\n };\n\n const updateTabbableNodes = function () {\n state.containerGroups = state.containers.map((container) => {\n const tabbableNodes = tabbable(container, config.tabbableOptions);\n\n // NOTE: if we have tabbable nodes, we must have focusable nodes; focusable nodes\n // are a superset of tabbable nodes\n const focusableNodes = focusable(container, config.tabbableOptions);\n\n return {\n container,\n tabbableNodes,\n focusableNodes,\n firstTabbableNode: tabbableNodes.length > 0 ? tabbableNodes[0] : null,\n lastTabbableNode:\n tabbableNodes.length > 0\n ? tabbableNodes[tabbableNodes.length - 1]\n : null,\n\n /**\n * Finds the __tabbable__ node that follows the given node in the specified direction,\n * in this container, if any.\n * @param {HTMLElement} node\n * @param {boolean} [forward] True if going in forward tab order; false if going\n * in reverse.\n * @returns {HTMLElement|undefined} The next tabbable node, if any.\n */\n nextTabbableNode(node, forward = true) {\n // NOTE: If tabindex is positive (in order to manipulate the tab order separate\n // from the DOM order), this __will not work__ because the list of focusableNodes,\n // while it contains tabbable nodes, does not sort its nodes in any order other\n // than DOM order, because it can't: Where would you place focusable (but not\n // tabbable) nodes in that order? They have no order, because they aren't tabbale...\n // Support for positive tabindex is already broken and hard to manage (possibly\n // not supportable, TBD), so this isn't going to make things worse than they\n // already are, and at least makes things better for the majority of cases where\n // tabindex is either 0/unset or negative.\n // FYI, positive tabindex issue: https://github.com/focus-trap/focus-trap/issues/375\n const nodeIdx = focusableNodes.findIndex((n) => n === node);\n if (nodeIdx < 0) {\n return undefined;\n }\n\n if (forward) {\n return focusableNodes\n .slice(nodeIdx + 1)\n .find((n) => isTabbable(n, config.tabbableOptions));\n }\n\n return focusableNodes\n .slice(0, nodeIdx)\n .reverse()\n .find((n) => isTabbable(n, config.tabbableOptions));\n },\n };\n });\n\n state.tabbableGroups = state.containerGroups.filter(\n (group) => group.tabbableNodes.length > 0\n );\n\n // throw if no groups have tabbable nodes and we don't have a fallback focus node either\n if (\n state.tabbableGroups.length <= 0 &&\n !getNodeForOption('fallbackFocus') // returning false not supported for this option\n ) {\n throw new Error(\n 'Your focus-trap must have at least one container with at least one tabbable node in it at all times'\n );\n }\n };\n\n const tryFocus = function (node) {\n if (node === false) {\n return;\n }\n\n if (node === doc.activeElement) {\n return;\n }\n\n if (!node || !node.focus) {\n tryFocus(getInitialFocusNode());\n return;\n }\n\n node.focus({ preventScroll: !!config.preventScroll });\n state.mostRecentlyFocusedNode = node;\n\n if (isSelectableInput(node)) {\n node.select();\n }\n };\n\n const getReturnFocusNode = function (previousActiveElement) {\n const node = getNodeForOption('setReturnFocus', previousActiveElement);\n return node ? node : node === false ? false : previousActiveElement;\n };\n\n // This needs to be done on mousedown and touchstart instead of click\n // so that it precedes the focus event.\n const checkPointerDown = function (e) {\n const target = getActualTarget(e);\n\n if (findContainerIndex(target, e) >= 0) {\n // allow the click since it ocurred inside the trap\n return;\n }\n\n if (valueOrHandler(config.clickOutsideDeactivates, e)) {\n // immediately deactivate the trap\n trap.deactivate({\n // NOTE: by setting `returnFocus: false`, deactivate() will do nothing,\n // which will result in the outside click setting focus to the node\n // that was clicked (and if not focusable, to \"nothing\"); by setting\n // `returnFocus: true`, we'll attempt to re-focus the node originally-focused\n // on activation (or the configured `setReturnFocus` node), whether the\n // outside click was on a focusable node or not\n returnFocus: config.returnFocusOnDeactivate,\n });\n return;\n }\n\n // This is needed for mobile devices.\n // (If we'll only let `click` events through,\n // then on mobile they will be blocked anyways if `touchstart` is blocked.)\n if (valueOrHandler(config.allowOutsideClick, e)) {\n // allow the click outside the trap to take place\n return;\n }\n\n // otherwise, prevent the click\n e.preventDefault();\n };\n\n // In case focus escapes the trap for some strange reason, pull it back in.\n const checkFocusIn = function (e) {\n const target = getActualTarget(e);\n const targetContained = findContainerIndex(target, e) >= 0;\n\n // In Firefox when you Tab out of an iframe the Document is briefly focused.\n if (targetContained || target instanceof Document) {\n if (targetContained) {\n state.mostRecentlyFocusedNode = target;\n }\n } else {\n // escaped! pull it back in to where it just left\n e.stopImmediatePropagation();\n tryFocus(state.mostRecentlyFocusedNode || getInitialFocusNode());\n }\n };\n\n // Hijack key nav events on the first and last focusable nodes of the trap,\n // in order to prevent focus from escaping. If it escapes for even a\n // moment it can end up scrolling the page and causing confusion so we\n // kind of need to capture the action at the keydown phase.\n const checkKeyNav = function (event, isBackward = false) {\n const target = getActualTarget(event);\n updateTabbableNodes();\n\n let destinationNode = null;\n\n if (state.tabbableGroups.length > 0) {\n // make sure the target is actually contained in a group\n // NOTE: the target may also be the container itself if it's focusable\n // with tabIndex='-1' and was given initial focus\n const containerIndex = findContainerIndex(target, event);\n const containerGroup =\n containerIndex >= 0 ? state.containerGroups[containerIndex] : undefined;\n\n if (containerIndex < 0) {\n // target not found in any group: quite possible focus has escaped the trap,\n // so bring it back into...\n if (isBackward) {\n // ...the last node in the last group\n destinationNode =\n state.tabbableGroups[state.tabbableGroups.length - 1]\n .lastTabbableNode;\n } else {\n // ...the first node in the first group\n destinationNode = state.tabbableGroups[0].firstTabbableNode;\n }\n } else if (isBackward) {\n // REVERSE\n\n // is the target the first tabbable node in a group?\n let startOfGroupIndex = findIndex(\n state.tabbableGroups,\n ({ firstTabbableNode }) => target === firstTabbableNode\n );\n\n if (\n startOfGroupIndex < 0 &&\n (containerGroup.container === target ||\n (isFocusable(target, config.tabbableOptions) &&\n !isTabbable(target, config.tabbableOptions) &&\n !containerGroup.nextTabbableNode(target, false)))\n ) {\n // an exception case where the target is either the container itself, or\n // a non-tabbable node that was given focus (i.e. tabindex is negative\n // and user clicked on it or node was programmatically given focus)\n // and is not followed by any other tabbable node, in which\n // case, we should handle shift+tab as if focus were on the container's\n // first tabbable node, and go to the last tabbable node of the LAST group\n startOfGroupIndex = containerIndex;\n }\n\n if (startOfGroupIndex >= 0) {\n // YES: then shift+tab should go to the last tabbable node in the\n // previous group (and wrap around to the last tabbable node of\n // the LAST group if it's the first tabbable node of the FIRST group)\n const destinationGroupIndex =\n startOfGroupIndex === 0\n ? state.tabbableGroups.length - 1\n : startOfGroupIndex - 1;\n\n const destinationGroup = state.tabbableGroups[destinationGroupIndex];\n destinationNode = destinationGroup.lastTabbableNode;\n } else if (!isTabEvent(event)) {\n // user must have customized the nav keys so we have to move focus manually _within_\n // the active group: do this based on the order determined by tabbable()\n destinationNode = containerGroup.nextTabbableNode(target, false);\n }\n } else {\n // FORWARD\n\n // is the target the last tabbable node in a group?\n let lastOfGroupIndex = findIndex(\n state.tabbableGroups,\n ({ lastTabbableNode }) => target === lastTabbableNode\n );\n\n if (\n lastOfGroupIndex < 0 &&\n (containerGroup.container === target ||\n (isFocusable(target, config.tabbableOptions) &&\n !isTabbable(target, config.tabbableOptions) &&\n !containerGroup.nextTabbableNode(target)))\n ) {\n // an exception case where the target is the container itself, or\n // a non-tabbable node that was given focus (i.e. tabindex is negative\n // and user clicked on it or node was programmatically given focus)\n // and is not followed by any other tabbable node, in which\n // case, we should handle tab as if focus were on the container's\n // last tabbable node, and go to the first tabbable node of the FIRST group\n lastOfGroupIndex = containerIndex;\n }\n\n if (lastOfGroupIndex >= 0) {\n // YES: then tab should go to the first tabbable node in the next\n // group (and wrap around to the first tabbable node of the FIRST\n // group if it's the last tabbable node of the LAST group)\n const destinationGroupIndex =\n lastOfGroupIndex === state.tabbableGroups.length - 1\n ? 0\n : lastOfGroupIndex + 1;\n\n const destinationGroup = state.tabbableGroups[destinationGroupIndex];\n destinationNode = destinationGroup.firstTabbableNode;\n } else if (!isTabEvent(event)) {\n // user must have customized the nav keys so we have to move focus manually _within_\n // the active group: do this based on the order determined by tabbable()\n destinationNode = containerGroup.nextTabbableNode(target);\n }\n }\n } else {\n // no groups available\n // NOTE: the fallbackFocus option does not support returning false to opt-out\n destinationNode = getNodeForOption('fallbackFocus');\n }\n\n if (destinationNode) {\n if (isTabEvent(event)) {\n // since tab natively moves focus, we wouldn't have a destination node unless we\n // were on the edge of a container and had to move to the next/previous edge, in\n // which case we want to prevent default to keep the browser from moving focus\n // to where it normally would\n event.preventDefault();\n }\n tryFocus(destinationNode);\n }\n // else, let the browser take care of [shift+]tab and move the focus\n };\n\n const checkKey = function (event) {\n if (\n isEscapeEvent(event) &&\n valueOrHandler(config.escapeDeactivates, event) !== false\n ) {\n event.preventDefault();\n trap.deactivate();\n return;\n }\n\n if (config.isKeyForward(event) || config.isKeyBackward(event)) {\n checkKeyNav(event, config.isKeyBackward(event));\n }\n };\n\n const checkClick = function (e) {\n const target = getActualTarget(e);\n\n if (findContainerIndex(target, e) >= 0) {\n return;\n }\n\n if (valueOrHandler(config.clickOutsideDeactivates, e)) {\n return;\n }\n\n if (valueOrHandler(config.allowOutsideClick, e)) {\n return;\n }\n\n e.preventDefault();\n e.stopImmediatePropagation();\n };\n\n //\n // EVENT LISTENERS\n //\n\n const addListeners = function () {\n if (!state.active) {\n return;\n }\n\n // There can be only one listening focus trap at a time\n activeFocusTraps.activateTrap(trapStack, trap);\n\n // Delay ensures that the focused element doesn't capture the event\n // that caused the focus trap activation.\n state.delayInitialFocusTimer = config.delayInitialFocus\n ? delay(function () {\n tryFocus(getInitialFocusNode());\n })\n : tryFocus(getInitialFocusNode());\n\n doc.addEventListener('focusin', checkFocusIn, true);\n doc.addEventListener('mousedown', checkPointerDown, {\n capture: true,\n passive: false,\n });\n doc.addEventListener('touchstart', checkPointerDown, {\n capture: true,\n passive: false,\n });\n doc.addEventListener('click', checkClick, {\n capture: true,\n passive: false,\n });\n doc.addEventListener('keydown', checkKey, {\n capture: true,\n passive: false,\n });\n\n return trap;\n };\n\n const removeListeners = function () {\n if (!state.active) {\n return;\n }\n\n doc.removeEventListener('focusin', checkFocusIn, true);\n doc.removeEventListener('mousedown', checkPointerDown, true);\n doc.removeEventListener('touchstart', checkPointerDown, true);\n doc.removeEventListener('click', checkClick, true);\n doc.removeEventListener('keydown', checkKey, true);\n\n return trap;\n };\n\n //\n // MUTATION OBSERVER\n //\n\n const checkDomRemoval = function (mutations) {\n const isFocusedNodeRemoved = mutations.some(function (mutation) {\n const removedNodes = Array.from(mutation.removedNodes);\n return removedNodes.some(function (node) {\n return node === state.mostRecentlyFocusedNode;\n });\n });\n\n // If the currently focused is removed then browsers will move focus to the\n // element. If this happens, try to move focus back into the trap.\n if (isFocusedNodeRemoved) {\n tryFocus(getInitialFocusNode());\n }\n };\n\n // Use MutationObserver - if supported - to detect if focused node is removed\n // from the DOM.\n const mutationObserver =\n typeof window !== 'undefined' && 'MutationObserver' in window\n ? new MutationObserver(checkDomRemoval)\n : undefined;\n\n const updateObservedNodes = function () {\n if (!mutationObserver) {\n return;\n }\n\n mutationObserver.disconnect();\n if (state.active && !state.paused) {\n state.containers.map(function (container) {\n mutationObserver.observe(container, {\n subtree: true,\n childList: true,\n });\n });\n }\n };\n\n //\n // TRAP DEFINITION\n //\n\n trap = {\n get active() {\n return state.active;\n },\n\n get paused() {\n return state.paused;\n },\n\n activate(activateOptions) {\n if (state.active) {\n return this;\n }\n\n const onActivate = getOption(activateOptions, 'onActivate');\n const onPostActivate = getOption(activateOptions, 'onPostActivate');\n const checkCanFocusTrap = getOption(activateOptions, 'checkCanFocusTrap');\n\n if (!checkCanFocusTrap) {\n updateTabbableNodes();\n }\n\n state.active = true;\n state.paused = false;\n state.nodeFocusedBeforeActivation = doc.activeElement;\n\n onActivate?.();\n\n const finishActivation = () => {\n if (checkCanFocusTrap) {\n updateTabbableNodes();\n }\n addListeners();\n updateObservedNodes();\n onPostActivate?.();\n };\n\n if (checkCanFocusTrap) {\n checkCanFocusTrap(state.containers.concat()).then(\n finishActivation,\n finishActivation\n );\n return this;\n }\n\n finishActivation();\n return this;\n },\n\n deactivate(deactivateOptions) {\n if (!state.active) {\n return this;\n }\n\n const options = {\n onDeactivate: config.onDeactivate,\n onPostDeactivate: config.onPostDeactivate,\n checkCanReturnFocus: config.checkCanReturnFocus,\n ...deactivateOptions,\n };\n\n clearTimeout(state.delayInitialFocusTimer); // noop if undefined\n state.delayInitialFocusTimer = undefined;\n\n removeListeners();\n state.active = false;\n state.paused = false;\n updateObservedNodes();\n\n activeFocusTraps.deactivateTrap(trapStack, trap);\n\n const onDeactivate = getOption(options, 'onDeactivate');\n const onPostDeactivate = getOption(options, 'onPostDeactivate');\n const checkCanReturnFocus = getOption(options, 'checkCanReturnFocus');\n const returnFocus = getOption(\n options,\n 'returnFocus',\n 'returnFocusOnDeactivate'\n );\n\n onDeactivate?.();\n\n const finishDeactivation = () => {\n delay(() => {\n if (returnFocus) {\n tryFocus(getReturnFocusNode(state.nodeFocusedBeforeActivation));\n }\n onPostDeactivate?.();\n });\n };\n\n if (returnFocus && checkCanReturnFocus) {\n checkCanReturnFocus(\n getReturnFocusNode(state.nodeFocusedBeforeActivation)\n ).then(finishDeactivation, finishDeactivation);\n return this;\n }\n\n finishDeactivation();\n return this;\n },\n\n pause(pauseOptions) {\n if (state.paused || !state.active) {\n return this;\n }\n\n const onPause = getOption(pauseOptions, 'onPause');\n const onPostPause = getOption(pauseOptions, 'onPostPause');\n\n state.paused = true;\n onPause?.();\n\n removeListeners();\n updateObservedNodes();\n\n onPostPause?.();\n return this;\n },\n\n unpause(unpauseOptions) {\n if (!state.paused || !state.active) {\n return this;\n }\n\n const onUnpause = getOption(unpauseOptions, 'onUnpause');\n const onPostUnpause = getOption(unpauseOptions, 'onPostUnpause');\n\n state.paused = false;\n onUnpause?.();\n\n updateTabbableNodes();\n addListeners();\n updateObservedNodes();\n\n onPostUnpause?.();\n return this;\n },\n\n updateContainerElements(containerElements) {\n const elementsAsArray = [].concat(containerElements).filter(Boolean);\n\n state.containers = elementsAsArray.map((element) =>\n typeof element === 'string' ? doc.querySelector(element) : element\n );\n\n if (state.active) {\n updateTabbableNodes();\n }\n\n updateObservedNodes();\n\n return this;\n },\n };\n\n // initialize container elements\n trap.updateContainerElements(elements);\n\n return trap;\n};\n\nexport { createFocusTrap };\n","/*!\n * jQuery JavaScript Library v3.6.0\n * https://jquery.com/\n *\n * Includes Sizzle.js\n * https://sizzlejs.com/\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2021-03-02T17:08Z\n */\n( function( global, factory ) {\n\n\t\"use strict\";\n\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\n\t\t// For CommonJS and CommonJS-like environments where a proper `window`\n\t\t// is present, execute the factory and get jQuery.\n\t\t// For environments that do not have a `window` with a `document`\n\t\t// (such as Node.js), expose a factory as module.exports.\n\t\t// This accentuates the need for the creation of a real `window`.\n\t\t// e.g. var jQuery = require(\"jquery\")(window);\n\t\t// See ticket #14549 for more info.\n\t\tmodule.exports = global.document ?\n\t\t\tfactory( global, true ) :\n\t\t\tfunction( w ) {\n\t\t\t\tif ( !w.document ) {\n\t\t\t\t\tthrow new Error( \"jQuery requires a window with a document\" );\n\t\t\t\t}\n\t\t\t\treturn factory( w );\n\t\t\t};\n\t} else {\n\t\tfactory( global );\n\t}\n\n// Pass this if window is not defined yet\n} )( typeof window !== \"undefined\" ? window : this, function( window, noGlobal ) {\n\n// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1\n// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode\n// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common\n// enough that all such attempts are guarded in a try block.\n\"use strict\";\n\nvar arr = [];\n\nvar getProto = Object.getPrototypeOf;\n\nvar slice = arr.slice;\n\nvar flat = arr.flat ? function( array ) {\n\treturn arr.flat.call( array );\n} : function( array ) {\n\treturn arr.concat.apply( [], array );\n};\n\n\nvar push = arr.push;\n\nvar indexOf = arr.indexOf;\n\nvar class2type = {};\n\nvar toString = class2type.toString;\n\nvar hasOwn = class2type.hasOwnProperty;\n\nvar fnToString = hasOwn.toString;\n\nvar ObjectFunctionString = fnToString.call( Object );\n\nvar support = {};\n\nvar isFunction = function isFunction( obj ) {\n\n\t\t// Support: Chrome <=57, Firefox <=52\n\t\t// In some browsers, typeof returns \"function\" for HTML elements\n\t\t// (i.e., `typeof document.createElement( \"object\" ) === \"function\"`).\n\t\t// We don't want to classify *any* DOM node as a function.\n\t\t// Support: QtWeb <=3.8.5, WebKit <=534.34, wkhtmltopdf tool <=0.12.5\n\t\t// Plus for old WebKit, typeof returns \"function\" for HTML collections\n\t\t// (e.g., `typeof document.getElementsByTagName(\"div\") === \"function\"`). (gh-4756)\n\t\treturn typeof obj === \"function\" && typeof obj.nodeType !== \"number\" &&\n\t\t\ttypeof obj.item !== \"function\";\n\t};\n\n\nvar isWindow = function isWindow( obj ) {\n\t\treturn obj != null && obj === obj.window;\n\t};\n\n\nvar document = window.document;\n\n\n\n\tvar preservedScriptAttributes = {\n\t\ttype: true,\n\t\tsrc: true,\n\t\tnonce: true,\n\t\tnoModule: true\n\t};\n\n\tfunction DOMEval( code, node, doc ) {\n\t\tdoc = doc || document;\n\n\t\tvar i, val,\n\t\t\tscript = doc.createElement( \"script\" );\n\n\t\tscript.text = code;\n\t\tif ( node ) {\n\t\t\tfor ( i in preservedScriptAttributes ) {\n\n\t\t\t\t// Support: Firefox 64+, Edge 18+\n\t\t\t\t// Some browsers don't support the \"nonce\" property on scripts.\n\t\t\t\t// On the other hand, just using `getAttribute` is not enough as\n\t\t\t\t// the `nonce` attribute is reset to an empty string whenever it\n\t\t\t\t// becomes browsing-context connected.\n\t\t\t\t// See https://github.com/whatwg/html/issues/2369\n\t\t\t\t// See https://html.spec.whatwg.org/#nonce-attributes\n\t\t\t\t// The `node.getAttribute` check was added for the sake of\n\t\t\t\t// `jQuery.globalEval` so that it can fake a nonce-containing node\n\t\t\t\t// via an object.\n\t\t\t\tval = node[ i ] || node.getAttribute && node.getAttribute( i );\n\t\t\t\tif ( val ) {\n\t\t\t\t\tscript.setAttribute( i, val );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tdoc.head.appendChild( script ).parentNode.removeChild( script );\n\t}\n\n\nfunction toType( obj ) {\n\tif ( obj == null ) {\n\t\treturn obj + \"\";\n\t}\n\n\t// Support: Android <=2.3 only (functionish RegExp)\n\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\n\t\tclass2type[ toString.call( obj ) ] || \"object\" :\n\t\ttypeof obj;\n}\n/* global Symbol */\n// Defining this global in .eslintrc.json would create a danger of using the global\n// unguarded in another place, it seems safer to define global only for this module\n\n\n\nvar\n\tversion = \"3.6.0\",\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\n\t\treturn new jQuery.fn.init( selector, context );\n\t};\n\njQuery.fn = jQuery.prototype = {\n\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\ttoArray: function() {\n\t\treturn slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\n\t\t// Return all the elements in a clean array\n\t\tif ( num == null ) {\n\t\t\treturn slice.call( this );\n\t\t}\n\n\t\t// Return just the one element from the set\n\t\treturn num < 0 ? this[ num + this.length ] : this[ num ];\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\teach: function( callback ) {\n\t\treturn jQuery.each( this, callback );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map( this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t} ) );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\teven: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn ( i + 1 ) % 2;\n\t\t} ) );\n\t},\n\n\todd: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn i % 2;\n\t\t} ) );\n\t},\n\n\teq: function( i ) {\n\t\tvar len = this.length,\n\t\t\tj = +i + ( i < 0 ? len : 0 );\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor();\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: arr.sort,\n\tsplice: arr.splice\n};\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[ 0 ] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\n\t\t// Skip the boolean and the target\n\t\ttarget = arguments[ i ] || {};\n\t\ti++;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !isFunction( target ) ) {\n\t\ttarget = {};\n\t}\n\n\t// Extend jQuery itself if only one argument is passed\n\tif ( i === length ) {\n\t\ttarget = this;\n\t\ti--;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\n\t\t// Only deal with non-null/undefined values\n\t\tif ( ( options = arguments[ i ] ) != null ) {\n\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent Object.prototype pollution\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( name === \"__proto__\" || target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject( copy ) ||\n\t\t\t\t\t( copyIsArray = Array.isArray( copy ) ) ) ) {\n\t\t\t\t\tsrc = target[ name ];\n\n\t\t\t\t\t// Ensure proper type for the source value\n\t\t\t\t\tif ( copyIsArray && !Array.isArray( src ) ) {\n\t\t\t\t\t\tclone = [];\n\t\t\t\t\t} else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) {\n\t\t\t\t\t\tclone = {};\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src;\n\t\t\t\t\t}\n\t\t\t\t\tcopyIsArray = false;\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend( {\n\n\t// Unique for each copy of jQuery on the page\n\texpando: \"jQuery\" + ( version + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// Assume jQuery is ready without the ready module\n\tisReady: true,\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\tnoop: function() {},\n\n\tisPlainObject: function( obj ) {\n\t\tvar proto, Ctor;\n\n\t\t// Detect obvious negatives\n\t\t// Use toString instead of jQuery.type to catch host objects\n\t\tif ( !obj || toString.call( obj ) !== \"[object Object]\" ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tproto = getProto( obj );\n\n\t\t// Objects with no prototype (e.g., `Object.create( null )`) are plain\n\t\tif ( !proto ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Objects with prototype are plain iff they were constructed by a global Object function\n\t\tCtor = hasOwn.call( proto, \"constructor\" ) && proto.constructor;\n\t\treturn typeof Ctor === \"function\" && fnToString.call( Ctor ) === ObjectFunctionString;\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tvar name;\n\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\t// Evaluates a script in a provided context; falls back to the global one\n\t// if not specified.\n\tglobalEval: function( code, options, doc ) {\n\t\tDOMEval( code, { nonce: options && options.nonce }, doc );\n\t},\n\n\teach: function( obj, callback ) {\n\t\tvar length, i = 0;\n\n\t\tif ( isArrayLike( obj ) ) {\n\t\t\tlength = obj.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor ( i in obj ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\tif ( isArrayLike( Object( arr ) ) ) {\n\t\t\t\tjQuery.merge( ret,\n\t\t\t\t\ttypeof arr === \"string\" ?\n\t\t\t\t\t\t[ arr ] : arr\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tpush.call( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\treturn arr == null ? -1 : indexOf.call( arr, elem, i );\n\t},\n\n\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t// push.apply(_, arraylike) throws on ancient WebKit\n\tmerge: function( first, second ) {\n\t\tvar len = +second.length,\n\t\t\tj = 0,\n\t\t\ti = first.length;\n\n\t\tfor ( ; j < len; j++ ) {\n\t\t\tfirst[ i++ ] = second[ j ];\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, invert ) {\n\t\tvar callbackInverse,\n\t\t\tmatches = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tcallbackExpect = !invert;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tcallbackInverse = !callback( elems[ i ], i );\n\t\t\tif ( callbackInverse !== callbackExpect ) {\n\t\t\t\tmatches.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn matches;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar length, value,\n\t\t\ti = 0,\n\t\t\tret = [];\n\n\t\t// Go through the array, translating each of the items to their new values\n\t\tif ( isArrayLike( elems ) ) {\n\t\t\tlength = elems.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( i in elems ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn flat( ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// jQuery.support is not used in Core but other projects attach their\n\t// properties to it so it needs to exist.\n\tsupport: support\n} );\n\nif ( typeof Symbol === \"function\" ) {\n\tjQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];\n}\n\n// Populate the class2type map\njQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\n\tfunction( _i, name ) {\n\t\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n\t} );\n\nfunction isArrayLike( obj ) {\n\n\t// Support: real iOS 8.2 only (not reproducible in simulator)\n\t// `in` check used to prevent JIT error (gh-2145)\n\t// hasOwn isn't used here due to false negatives\n\t// regarding Nodelist length in IE\n\tvar length = !!obj && \"length\" in obj && obj.length,\n\t\ttype = toType( obj );\n\n\tif ( isFunction( obj ) || isWindow( obj ) ) {\n\t\treturn false;\n\t}\n\n\treturn type === \"array\" || length === 0 ||\n\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj;\n}\nvar Sizzle =\n/*!\n * Sizzle CSS Selector Engine v2.3.6\n * https://sizzlejs.com/\n *\n * Copyright JS Foundation and other contributors\n * Released under the MIT license\n * https://js.foundation/\n *\n * Date: 2021-02-16\n */\n( function( window ) {\nvar i,\n\tsupport,\n\tExpr,\n\tgetText,\n\tisXML,\n\ttokenize,\n\tcompile,\n\tselect,\n\toutermostContext,\n\tsortInput,\n\thasDuplicate,\n\n\t// Local document vars\n\tsetDocument,\n\tdocument,\n\tdocElem,\n\tdocumentIsHTML,\n\trbuggyQSA,\n\trbuggyMatches,\n\tmatches,\n\tcontains,\n\n\t// Instance-specific data\n\texpando = \"sizzle\" + 1 * new Date(),\n\tpreferredDoc = window.document,\n\tdirruns = 0,\n\tdone = 0,\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\tnonnativeSelectorCache = createCache(),\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn 0;\n\t},\n\n\t// Instance methods\n\thasOwn = ( {} ).hasOwnProperty,\n\tarr = [],\n\tpop = arr.pop,\n\tpushNative = arr.push,\n\tpush = arr.push,\n\tslice = arr.slice,\n\n\t// Use a stripped-down indexOf as it's faster than native\n\t// https://jsperf.com/thor-indexof-vs-for/5\n\tindexOf = function( list, elem ) {\n\t\tvar i = 0,\n\t\t\tlen = list.length;\n\t\tfor ( ; i < len; i++ ) {\n\t\t\tif ( list[ i ] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t},\n\n\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|\" +\n\t\t\"ismap|loop|multiple|open|readonly|required|scoped\",\n\n\t// Regular expressions\n\n\t// http://www.w3.org/TR/css3-selectors/#whitespace\n\twhitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\n\n\t// https://www.w3.org/TR/css-syntax-3/#ident-token-diagram\n\tidentifier = \"(?:\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace +\n\t\t\"?|\\\\\\\\[^\\\\r\\\\n\\\\f]|[\\\\w-]|[^\\0-\\\\x7f])+\",\n\n\t// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\n\n\t\t// Operator (capture 2)\n\t\t\"*([*^$|!~]?=)\" + whitespace +\n\n\t\t// \"Attribute values must be CSS identifiers [capture 5]\n\t\t// or strings [capture 3 or capture 4]\"\n\t\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" +\n\t\twhitespace + \"*\\\\]\",\n\n\tpseudos = \":(\" + identifier + \")(?:\\\\((\" +\n\n\t\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n\t\t// 1. quoted (capture 3; capture 4 or capture 5)\n\t\t\"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\n\n\t\t// 2. simple (capture 6)\n\t\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n\n\t\t// 3. anything else (capture 2)\n\t\t\".*\" +\n\t\t\")\\\\)|)\",\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trwhitespace = new RegExp( whitespace + \"+\", \"g\" ),\n\trtrim = new RegExp( \"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" +\n\t\twhitespace + \"+$\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trcombinators = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace +\n\t\t\"*\" ),\n\trdescend = new RegExp( whitespace + \"|>\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\t\"ID\": new RegExp( \"^#(\" + identifier + \")\" ),\n\t\t\"CLASS\": new RegExp( \"^\\\\.(\" + identifier + \")\" ),\n\t\t\"TAG\": new RegExp( \"^(\" + identifier + \"|[*])\" ),\n\t\t\"ATTR\": new RegExp( \"^\" + attributes ),\n\t\t\"PSEUDO\": new RegExp( \"^\" + pseudos ),\n\t\t\"CHILD\": new RegExp( \"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" +\n\t\t\twhitespace + \"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" +\n\t\t\twhitespace + \"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\t\"bool\": new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\n\n\t\t// For use in libraries implementing .is()\n\t\t// We use this for POS matching in `select`\n\t\t\"needsContext\": new RegExp( \"^\" + whitespace +\n\t\t\t\"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" + whitespace +\n\t\t\t\"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t},\n\n\trhtml = /HTML$/i,\n\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\n\n\trnative = /^[^{]+\\{\\s*\\[native \\w/,\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n\n\trsibling = /[+~]/,\n\n\t// CSS escapes\n\t// http://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( \"\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace + \"?|\\\\\\\\([^\\\\r\\\\n\\\\f])\", \"g\" ),\n\tfunescape = function( escape, nonHex ) {\n\t\tvar high = \"0x\" + escape.slice( 1 ) - 0x10000;\n\n\t\treturn nonHex ?\n\n\t\t\t// Strip the backslash prefix from a non-hex escape sequence\n\t\t\tnonHex :\n\n\t\t\t// Replace a hexadecimal escape sequence with the encoded Unicode code point\n\t\t\t// Support: IE <=11+\n\t\t\t// For values outside the Basic Multilingual Plane (BMP), manually construct a\n\t\t\t// surrogate pair\n\t\t\thigh < 0 ?\n\t\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t},\n\n\t// CSS string/identifier serialization\n\t// https://drafts.csswg.org/cssom/#common-serializing-idioms\n\trcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\0-\\x1f\\x7f-\\uFFFF\\w-]/g,\n\tfcssescape = function( ch, asCodePoint ) {\n\t\tif ( asCodePoint ) {\n\n\t\t\t// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n\t\t\tif ( ch === \"\\0\" ) {\n\t\t\t\treturn \"\\uFFFD\";\n\t\t\t}\n\n\t\t\t// Control characters and (dependent upon position) numbers get escaped as code points\n\t\t\treturn ch.slice( 0, -1 ) + \"\\\\\" +\n\t\t\t\tch.charCodeAt( ch.length - 1 ).toString( 16 ) + \" \";\n\t\t}\n\n\t\t// Other potentially-special ASCII characters get backslash-escaped\n\t\treturn \"\\\\\" + ch;\n\t},\n\n\t// Used for iframes\n\t// See setDocument()\n\t// Removing the function wrapper causes a \"Permission Denied\"\n\t// error in IE\n\tunloadHandler = function() {\n\t\tsetDocument();\n\t},\n\n\tinDisabledFieldset = addCombinator(\n\t\tfunction( elem ) {\n\t\t\treturn elem.disabled === true && elem.nodeName.toLowerCase() === \"fieldset\";\n\t\t},\n\t\t{ dir: \"parentNode\", next: \"legend\" }\n\t);\n\n// Optimize for push.apply( _, NodeList )\ntry {\n\tpush.apply(\n\t\t( arr = slice.call( preferredDoc.childNodes ) ),\n\t\tpreferredDoc.childNodes\n\t);\n\n\t// Support: Android<4.0\n\t// Detect silently failing push.apply\n\t// eslint-disable-next-line no-unused-expressions\n\tarr[ preferredDoc.childNodes.length ].nodeType;\n} catch ( e ) {\n\tpush = { apply: arr.length ?\n\n\t\t// Leverage slice if possible\n\t\tfunction( target, els ) {\n\t\t\tpushNative.apply( target, slice.call( els ) );\n\t\t} :\n\n\t\t// Support: IE<9\n\t\t// Otherwise append directly\n\t\tfunction( target, els ) {\n\t\t\tvar j = target.length,\n\t\t\t\ti = 0;\n\n\t\t\t// Can't trust NodeList.length\n\t\t\twhile ( ( target[ j++ ] = els[ i++ ] ) ) {}\n\t\t\ttarget.length = j - 1;\n\t\t}\n\t};\n}\n\nfunction Sizzle( selector, context, results, seed ) {\n\tvar m, i, elem, nid, match, groups, newSelector,\n\t\tnewContext = context && context.ownerDocument,\n\n\t\t// nodeType defaults to 9, since context defaults to document\n\t\tnodeType = context ? context.nodeType : 9;\n\n\tresults = results || [];\n\n\t// Return early from calls with invalid selector or context\n\tif ( typeof selector !== \"string\" || !selector ||\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\n\n\t\treturn results;\n\t}\n\n\t// Try to shortcut find operations (as opposed to filters) in HTML documents\n\tif ( !seed ) {\n\t\tsetDocument( context );\n\t\tcontext = context || document;\n\n\t\tif ( documentIsHTML ) {\n\n\t\t\t// If the selector is sufficiently simple, try using a \"get*By*\" DOM method\n\t\t\t// (excepting DocumentFragment context, where the methods don't exist)\n\t\t\tif ( nodeType !== 11 && ( match = rquickExpr.exec( selector ) ) ) {\n\n\t\t\t\t// ID selector\n\t\t\t\tif ( ( m = match[ 1 ] ) ) {\n\n\t\t\t\t\t// Document context\n\t\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\t\tif ( ( elem = context.getElementById( m ) ) ) {\n\n\t\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t// Element context\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\tif ( newContext && ( elem = newContext.getElementById( m ) ) &&\n\t\t\t\t\t\t\tcontains( context, elem ) &&\n\t\t\t\t\t\t\telem.id === m ) {\n\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t// Type selector\n\t\t\t\t} else if ( match[ 2 ] ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\n\t\t\t\t\treturn results;\n\n\t\t\t\t// Class selector\n\t\t\t\t} else if ( ( m = match[ 3 ] ) && support.getElementsByClassName &&\n\t\t\t\t\tcontext.getElementsByClassName ) {\n\n\t\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\n\t\t\t\t\treturn results;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Take advantage of querySelectorAll\n\t\t\tif ( support.qsa &&\n\t\t\t\t!nonnativeSelectorCache[ selector + \" \" ] &&\n\t\t\t\t( !rbuggyQSA || !rbuggyQSA.test( selector ) ) &&\n\n\t\t\t\t// Support: IE 8 only\n\t\t\t\t// Exclude object elements\n\t\t\t\t( nodeType !== 1 || context.nodeName.toLowerCase() !== \"object\" ) ) {\n\n\t\t\t\tnewSelector = selector;\n\t\t\t\tnewContext = context;\n\n\t\t\t\t// qSA considers elements outside a scoping root when evaluating child or\n\t\t\t\t// descendant combinators, which is not what we want.\n\t\t\t\t// In such cases, we work around the behavior by prefixing every selector in the\n\t\t\t\t// list with an ID selector referencing the scope context.\n\t\t\t\t// The technique has to be used as well when a leading combinator is used\n\t\t\t\t// as such selectors are not recognized by querySelectorAll.\n\t\t\t\t// Thanks to Andrew Dupont for this technique.\n\t\t\t\tif ( nodeType === 1 &&\n\t\t\t\t\t( rdescend.test( selector ) || rcombinators.test( selector ) ) ) {\n\n\t\t\t\t\t// Expand context for sibling selectors\n\t\t\t\t\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext;\n\n\t\t\t\t\t// We can use :scope instead of the ID hack if the browser\n\t\t\t\t\t// supports it & if we're not changing the context.\n\t\t\t\t\tif ( newContext !== context || !support.scope ) {\n\n\t\t\t\t\t\t// Capture the context ID, setting it first if necessary\n\t\t\t\t\t\tif ( ( nid = context.getAttribute( \"id\" ) ) ) {\n\t\t\t\t\t\t\tnid = nid.replace( rcssescape, fcssescape );\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcontext.setAttribute( \"id\", ( nid = expando ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prefix every selector in the list\n\t\t\t\t\tgroups = tokenize( selector );\n\t\t\t\t\ti = groups.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tgroups[ i ] = ( nid ? \"#\" + nid : \":scope\" ) + \" \" +\n\t\t\t\t\t\t\ttoSelector( groups[ i ] );\n\t\t\t\t\t}\n\t\t\t\t\tnewSelector = groups.join( \",\" );\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t);\n\t\t\t\t\treturn results;\n\t\t\t\t} catch ( qsaError ) {\n\t\t\t\t\tnonnativeSelectorCache( selector, true );\n\t\t\t\t} finally {\n\t\t\t\t\tif ( nid === expando ) {\n\t\t\t\t\t\tcontext.removeAttribute( \"id\" );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrim, \"$1\" ), context, results, seed );\n}\n\n/**\n * Create key-value caches of limited size\n * @returns {function(string, object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\nfunction createCache() {\n\tvar keys = [];\n\n\tfunction cache( key, value ) {\n\n\t\t// Use (key + \" \") to avoid collision with native prototype properties (see Issue #157)\n\t\tif ( keys.push( key + \" \" ) > Expr.cacheLength ) {\n\n\t\t\t// Only keep the most recent entries\n\t\t\tdelete cache[ keys.shift() ];\n\t\t}\n\t\treturn ( cache[ key + \" \" ] = value );\n\t}\n\treturn cache;\n}\n\n/**\n * Mark a function for special use by Sizzle\n * @param {Function} fn The function to mark\n */\nfunction markFunction( fn ) {\n\tfn[ expando ] = true;\n\treturn fn;\n}\n\n/**\n * Support testing using an element\n * @param {Function} fn Passed the created element and returns a boolean result\n */\nfunction assert( fn ) {\n\tvar el = document.createElement( \"fieldset\" );\n\n\ttry {\n\t\treturn !!fn( el );\n\t} catch ( e ) {\n\t\treturn false;\n\t} finally {\n\n\t\t// Remove from its parent by default\n\t\tif ( el.parentNode ) {\n\t\t\tel.parentNode.removeChild( el );\n\t\t}\n\n\t\t// release memory in IE\n\t\tel = null;\n\t}\n}\n\n/**\n * Adds the same handler for all of the specified attrs\n * @param {String} attrs Pipe-separated list of attributes\n * @param {Function} handler The method that will be applied\n */\nfunction addHandle( attrs, handler ) {\n\tvar arr = attrs.split( \"|\" ),\n\t\ti = arr.length;\n\n\twhile ( i-- ) {\n\t\tExpr.attrHandle[ arr[ i ] ] = handler;\n\t}\n}\n\n/**\n * Checks document order of two siblings\n * @param {Element} a\n * @param {Element} b\n * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b\n */\nfunction siblingCheck( a, b ) {\n\tvar cur = b && a,\n\t\tdiff = cur && a.nodeType === 1 && b.nodeType === 1 &&\n\t\t\ta.sourceIndex - b.sourceIndex;\n\n\t// Use IE sourceIndex if available on both nodes\n\tif ( diff ) {\n\t\treturn diff;\n\t}\n\n\t// Check if b follows a\n\tif ( cur ) {\n\t\twhile ( ( cur = cur.nextSibling ) ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn a ? 1 : -1;\n}\n\n/**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn name === \"input\" && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn ( name === \"input\" || name === \"button\" ) && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for :enabled/:disabled\n * @param {Boolean} disabled true for :disabled; false for :enabled\n */\nfunction createDisabledPseudo( disabled ) {\n\n\t// Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable\n\treturn function( elem ) {\n\n\t\t// Only certain elements can match :enabled or :disabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled\n\t\tif ( \"form\" in elem ) {\n\n\t\t\t// Check for inherited disabledness on relevant non-disabled elements:\n\t\t\t// * listed form-associated elements in a disabled fieldset\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#category-listed\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled\n\t\t\t// * option elements in a disabled optgroup\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled\n\t\t\t// All such elements have a \"form\" property.\n\t\t\tif ( elem.parentNode && elem.disabled === false ) {\n\n\t\t\t\t// Option elements defer to a parent optgroup if present\n\t\t\t\tif ( \"label\" in elem ) {\n\t\t\t\t\tif ( \"label\" in elem.parentNode ) {\n\t\t\t\t\t\treturn elem.parentNode.disabled === disabled;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn elem.disabled === disabled;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Support: IE 6 - 11\n\t\t\t\t// Use the isDisabled shortcut property to check for disabled fieldset ancestors\n\t\t\t\treturn elem.isDisabled === disabled ||\n\n\t\t\t\t\t// Where there is no isDisabled, check manually\n\t\t\t\t\t/* jshint -W018 */\n\t\t\t\t\telem.isDisabled !== !disabled &&\n\t\t\t\t\tinDisabledFieldset( elem ) === disabled;\n\t\t\t}\n\n\t\t\treturn elem.disabled === disabled;\n\n\t\t// Try to winnow out elements that can't be disabled before trusting the disabled property.\n\t\t// Some victims get caught in our net (label, legend, menu, track), but it shouldn't\n\t\t// even exist on them, let alone have a boolean value.\n\t\t} else if ( \"label\" in elem ) {\n\t\t\treturn elem.disabled === disabled;\n\t\t}\n\n\t\t// Remaining elements are neither :enabled nor :disabled\n\t\treturn false;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction( function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction( function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ ( j = matchIndexes[ i ] ) ] ) {\n\t\t\t\t\tseed[ j ] = !( matches[ j ] = seed[ j ] );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t} );\n}\n\n/**\n * Checks a node for validity as a Sizzle context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\nfunction testContext( context ) {\n\treturn context && typeof context.getElementsByTagName !== \"undefined\" && context;\n}\n\n// Expose support vars for convenience\nsupport = Sizzle.support = {};\n\n/**\n * Detects XML nodes\n * @param {Element|Object} elem An element or a document\n * @returns {Boolean} True iff elem is a non-HTML XML node\n */\nisXML = Sizzle.isXML = function( elem ) {\n\tvar namespace = elem && elem.namespaceURI,\n\t\tdocElem = elem && ( elem.ownerDocument || elem ).documentElement;\n\n\t// Support: IE <=8\n\t// Assume HTML when documentElement doesn't yet exist, such as inside loading iframes\n\t// https://bugs.jquery.com/ticket/4833\n\treturn !rhtml.test( namespace || docElem && docElem.nodeName || \"HTML\" );\n};\n\n/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [doc] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\nsetDocument = Sizzle.setDocument = function( node ) {\n\tvar hasCompare, subWindow,\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\n\n\t// Return early if doc is invalid or already selected\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( doc == document || doc.nodeType !== 9 || !doc.documentElement ) {\n\t\treturn document;\n\t}\n\n\t// Update global variables\n\tdocument = doc;\n\tdocElem = document.documentElement;\n\tdocumentIsHTML = !isXML( document );\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t// Accessing iframe documents after unload throws \"permission denied\" errors (jQuery #13936)\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( preferredDoc != document &&\n\t\t( subWindow = document.defaultView ) && subWindow.top !== subWindow ) {\n\n\t\t// Support: IE 11, Edge\n\t\tif ( subWindow.addEventListener ) {\n\t\t\tsubWindow.addEventListener( \"unload\", unloadHandler, false );\n\n\t\t// Support: IE 9 - 10 only\n\t\t} else if ( subWindow.attachEvent ) {\n\t\t\tsubWindow.attachEvent( \"onunload\", unloadHandler );\n\t\t}\n\t}\n\n\t// Support: IE 8 - 11+, Edge 12 - 18+, Chrome <=16 - 25 only, Firefox <=3.6 - 31 only,\n\t// Safari 4 - 5 only, Opera <=11.6 - 12.x only\n\t// IE/Edge & older browsers don't support the :scope pseudo-class.\n\t// Support: Safari 6.0 only\n\t// Safari 6.0 supports :scope but it's an alias of :root there.\n\tsupport.scope = assert( function( el ) {\n\t\tdocElem.appendChild( el ).appendChild( document.createElement( \"div\" ) );\n\t\treturn typeof el.querySelectorAll !== \"undefined\" &&\n\t\t\t!el.querySelectorAll( \":scope fieldset div\" ).length;\n\t} );\n\n\t/* Attributes\n\t---------------------------------------------------------------------- */\n\n\t// Support: IE<8\n\t// Verify that getAttribute really returns attributes and not properties\n\t// (excepting IE8 booleans)\n\tsupport.attributes = assert( function( el ) {\n\t\tel.className = \"i\";\n\t\treturn !el.getAttribute( \"className\" );\n\t} );\n\n\t/* getElement(s)By*\n\t---------------------------------------------------------------------- */\n\n\t// Check if getElementsByTagName(\"*\") returns only elements\n\tsupport.getElementsByTagName = assert( function( el ) {\n\t\tel.appendChild( document.createComment( \"\" ) );\n\t\treturn !el.getElementsByTagName( \"*\" ).length;\n\t} );\n\n\t// Support: IE<9\n\tsupport.getElementsByClassName = rnative.test( document.getElementsByClassName );\n\n\t// Support: IE<10\n\t// Check if getElementById returns elements by name\n\t// The broken getElementById methods don't pick up programmatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById = assert( function( el ) {\n\t\tdocElem.appendChild( el ).id = expando;\n\t\treturn !document.getElementsByName || !document.getElementsByName( expando ).length;\n\t} );\n\n\t// ID filter and find\n\tif ( support.getById ) {\n\t\tExpr.filter[ \"ID\" ] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.getAttribute( \"id\" ) === attrId;\n\t\t\t};\n\t\t};\n\t\tExpr.find[ \"ID\" ] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar elem = context.getElementById( id );\n\t\t\t\treturn elem ? [ elem ] : [];\n\t\t\t}\n\t\t};\n\t} else {\n\t\tExpr.filter[ \"ID\" ] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" &&\n\t\t\t\t\telem.getAttributeNode( \"id\" );\n\t\t\t\treturn node && node.value === attrId;\n\t\t\t};\n\t\t};\n\n\t\t// Support: IE 6 - 7 only\n\t\t// getElementById is not reliable as a find shortcut\n\t\tExpr.find[ \"ID\" ] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar node, i, elems,\n\t\t\t\t\telem = context.getElementById( id );\n\n\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t// Verify the id attribute\n\t\t\t\t\tnode = elem.getAttributeNode( \"id\" );\n\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t}\n\n\t\t\t\t\t// Fall back on getElementsByName\n\t\t\t\t\telems = context.getElementsByName( id );\n\t\t\t\t\ti = 0;\n\t\t\t\t\twhile ( ( elem = elems[ i++ ] ) ) {\n\t\t\t\t\t\tnode = elem.getAttributeNode( \"id\" );\n\t\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn [];\n\t\t\t}\n\t\t};\n\t}\n\n\t// Tag\n\tExpr.find[ \"TAG\" ] = support.getElementsByTagName ?\n\t\tfunction( tag, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\treturn context.getElementsByTagName( tag );\n\n\t\t\t// DocumentFragment nodes don't have gEBTN\n\t\t\t} else if ( support.qsa ) {\n\t\t\t\treturn context.querySelectorAll( tag );\n\t\t\t}\n\t\t} :\n\n\t\tfunction( tag, context ) {\n\t\t\tvar elem,\n\t\t\t\ttmp = [],\n\t\t\t\ti = 0,\n\n\t\t\t\t// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too\n\t\t\t\tresults = context.getElementsByTagName( tag );\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( tag === \"*\" ) {\n\t\t\t\twhile ( ( elem = results[ i++ ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn tmp;\n\t\t\t}\n\t\t\treturn results;\n\t\t};\n\n\t// Class\n\tExpr.find[ \"CLASS\" ] = support.getElementsByClassName && function( className, context ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML ) {\n\t\t\treturn context.getElementsByClassName( className );\n\t\t}\n\t};\n\n\t/* QSA/matchesSelector\n\t---------------------------------------------------------------------- */\n\n\t// QSA and matchesSelector support\n\n\t// matchesSelector(:active) reports false when true (IE9/Opera 11.5)\n\trbuggyMatches = [];\n\n\t// qSa(:focus) reports false when true (Chrome 21)\n\t// We allow this because of a bug in IE8/9 that throws an error\n\t// whenever `document.activeElement` is accessed on an iframe\n\t// So, we allow :focus to pass through QSA all the time to avoid the IE error\n\t// See https://bugs.jquery.com/ticket/13378\n\trbuggyQSA = [];\n\n\tif ( ( support.qsa = rnative.test( document.querySelectorAll ) ) ) {\n\n\t\t// Build QSA regex\n\t\t// Regex strategy adopted from Diego Perini\n\t\tassert( function( el ) {\n\n\t\t\tvar input;\n\n\t\t\t// Select is set to empty string on purpose\n\t\t\t// This is to test IE's treatment of not explicitly\n\t\t\t// setting a boolean content attribute,\n\t\t\t// since its presence should be enough\n\t\t\t// https://bugs.jquery.com/ticket/12359\n\t\t\tdocElem.appendChild( el ).innerHTML = \"\" +\n\t\t\t\t\"\";\n\n\t\t\t// Support: IE8, Opera 11-12.16\n\t\t\t// Nothing should be selected when empty strings follow ^= or $= or *=\n\t\t\t// The test attribute must be unknown in Opera but \"safe\" for WinRT\n\t\t\t// https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section\n\t\t\tif ( el.querySelectorAll( \"[msallowcapture^='']\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"[*^$]=\" + whitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Support: IE8\n\t\t\t// Boolean attributes and \"value\" are not treated correctly\n\t\t\tif ( !el.querySelectorAll( \"[selected]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t\t}\n\n\t\t\t// Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+\n\t\t\tif ( !el.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"~=\" );\n\t\t\t}\n\n\t\t\t// Support: IE 11+, Edge 15 - 18+\n\t\t\t// IE 11/Edge don't find elements on a `[name='']` query in some cases.\n\t\t\t// Adding a temporary attribute to the document before the selection works\n\t\t\t// around the issue.\n\t\t\t// Interestingly, IE 10 & older don't seem to have the issue.\n\t\t\tinput = document.createElement( \"input\" );\n\t\t\tinput.setAttribute( \"name\", \"\" );\n\t\t\tel.appendChild( input );\n\t\t\tif ( !el.querySelectorAll( \"[name='']\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*name\" + whitespace + \"*=\" +\n\t\t\t\t\twhitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Webkit/Opera - :checked should return selected option elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( !el.querySelectorAll( \":checked\" ).length ) {\n\t\t\t\trbuggyQSA.push( \":checked\" );\n\t\t\t}\n\n\t\t\t// Support: Safari 8+, iOS 8+\n\t\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\n\t\t\t// In-page `selector#id sibling-combinator selector` fails\n\t\t\tif ( !el.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\t\trbuggyQSA.push( \".#.+[+~]\" );\n\t\t\t}\n\n\t\t\t// Support: Firefox <=3.6 - 5 only\n\t\t\t// Old Firefox doesn't throw on a badly-escaped identifier.\n\t\t\tel.querySelectorAll( \"\\\\\\f\" );\n\t\t\trbuggyQSA.push( \"[\\\\r\\\\n\\\\f]\" );\n\t\t} );\n\n\t\tassert( function( el ) {\n\t\t\tel.innerHTML = \"\" +\n\t\t\t\t\"\";\n\n\t\t\t// Support: Windows 8 Native Apps\n\t\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\t\tvar input = document.createElement( \"input\" );\n\t\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\t\tel.appendChild( input ).setAttribute( \"name\", \"D\" );\n\n\t\t\t// Support: IE8\n\t\t\t// Enforce case-sensitivity of name attribute\n\t\t\tif ( el.querySelectorAll( \"[name=d]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"name\" + whitespace + \"*[*^$|!~]?=\" );\n\t\t\t}\n\n\t\t\t// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( el.querySelectorAll( \":enabled\" ).length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Support: IE9-11+\n\t\t\t// IE's :disabled selector does not pick up the children of disabled fieldsets\n\t\t\tdocElem.appendChild( el ).disabled = true;\n\t\t\tif ( el.querySelectorAll( \":disabled\" ).length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Support: Opera 10 - 11 only\n\t\t\t// Opera 10-11 does not throw on post-comma invalid pseudos\n\t\t\tel.querySelectorAll( \"*,:x\" );\n\t\t\trbuggyQSA.push( \",.*:\" );\n\t\t} );\n\t}\n\n\tif ( ( support.matchesSelector = rnative.test( ( matches = docElem.matches ||\n\t\tdocElem.webkitMatchesSelector ||\n\t\tdocElem.mozMatchesSelector ||\n\t\tdocElem.oMatchesSelector ||\n\t\tdocElem.msMatchesSelector ) ) ) ) {\n\n\t\tassert( function( el ) {\n\n\t\t\t// Check to see if it's possible to do matchesSelector\n\t\t\t// on a disconnected node (IE 9)\n\t\t\tsupport.disconnectedMatch = matches.call( el, \"*\" );\n\n\t\t\t// This should fail with an exception\n\t\t\t// Gecko does not error, returns false instead\n\t\t\tmatches.call( el, \"[s!='']:x\" );\n\t\t\trbuggyMatches.push( \"!=\", pseudos );\n\t\t} );\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( \"|\" ) );\n\trbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join( \"|\" ) );\n\n\t/* Contains\n\t---------------------------------------------------------------------- */\n\thasCompare = rnative.test( docElem.compareDocumentPosition );\n\n\t// Element contains another\n\t// Purposefully self-exclusive\n\t// As in, an element does not contain itself\n\tcontains = hasCompare || rnative.test( docElem.contains ) ?\n\t\tfunction( a, b ) {\n\t\t\tvar adown = a.nodeType === 9 ? a.documentElement : a,\n\t\t\t\tbup = b && b.parentNode;\n\t\t\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\t\t\t\tadown.contains ?\n\t\t\t\t\tadown.contains( bup ) :\n\t\t\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t\t\t) );\n\t\t} :\n\t\tfunction( a, b ) {\n\t\t\tif ( b ) {\n\t\t\t\twhile ( ( b = b.parentNode ) ) {\n\t\t\t\t\tif ( b === a ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Document order sorting\n\tsortOrder = hasCompare ?\n\tfunction( a, b ) {\n\n\t\t// Flag for duplicate removal\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Sort on method existence if only one input has compareDocumentPosition\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\t\tif ( compare ) {\n\t\t\treturn compare;\n\t\t}\n\n\t\t// Calculate position if both inputs belong to the same document\n\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t// two documents; shallow comparisons work.\n\t\t// eslint-disable-next-line eqeqeq\n\t\tcompare = ( a.ownerDocument || a ) == ( b.ownerDocument || b ) ?\n\t\t\ta.compareDocumentPosition( b ) :\n\n\t\t\t// Otherwise we know they are disconnected\n\t\t\t1;\n\n\t\t// Disconnected nodes\n\t\tif ( compare & 1 ||\n\t\t\t( !support.sortDetached && b.compareDocumentPosition( a ) === compare ) ) {\n\n\t\t\t// Choose the first element that is related to our preferred document\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( a == document || a.ownerDocument == preferredDoc &&\n\t\t\t\tcontains( preferredDoc, a ) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( b == document || b.ownerDocument == preferredDoc &&\n\t\t\t\tcontains( preferredDoc, b ) ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\t// Maintain original order\n\t\t\treturn sortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\t\t}\n\n\t\treturn compare & 4 ? -1 : 1;\n\t} :\n\tfunction( a, b ) {\n\n\t\t// Exit early if the nodes are identical\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tap = [ a ],\n\t\t\tbp = [ b ];\n\n\t\t// Parentless nodes are either documents or disconnected\n\t\tif ( !aup || !bup ) {\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t/* eslint-disable eqeqeq */\n\t\t\treturn a == document ? -1 :\n\t\t\t\tb == document ? 1 :\n\t\t\t\t/* eslint-enable eqeqeq */\n\t\t\t\taup ? -1 :\n\t\t\t\tbup ? 1 :\n\t\t\t\tsortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\n\t\t// If the nodes are siblings, we can do a quick check\n\t\t} else if ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\t\t}\n\n\t\t// Otherwise we need full lists of their ancestors for comparison\n\t\tcur = a;\n\t\twhile ( ( cur = cur.parentNode ) ) {\n\t\t\tap.unshift( cur );\n\t\t}\n\t\tcur = b;\n\t\twhile ( ( cur = cur.parentNode ) ) {\n\t\t\tbp.unshift( cur );\n\t\t}\n\n\t\t// Walk down the tree looking for a discrepancy\n\t\twhile ( ap[ i ] === bp[ i ] ) {\n\t\t\ti++;\n\t\t}\n\n\t\treturn i ?\n\n\t\t\t// Do a sibling check if the nodes have a common ancestor\n\t\t\tsiblingCheck( ap[ i ], bp[ i ] ) :\n\n\t\t\t// Otherwise nodes in our document sort first\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t/* eslint-disable eqeqeq */\n\t\t\tap[ i ] == preferredDoc ? -1 :\n\t\t\tbp[ i ] == preferredDoc ? 1 :\n\t\t\t/* eslint-enable eqeqeq */\n\t\t\t0;\n\t};\n\n\treturn document;\n};\n\nSizzle.matches = function( expr, elements ) {\n\treturn Sizzle( expr, null, null, elements );\n};\n\nSizzle.matchesSelector = function( elem, expr ) {\n\tsetDocument( elem );\n\n\tif ( support.matchesSelector && documentIsHTML &&\n\t\t!nonnativeSelectorCache[ expr + \" \" ] &&\n\t\t( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&\n\t\t( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {\n\n\t\ttry {\n\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\tif ( ret || support.disconnectedMatch ||\n\n\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t// fragment in IE 9\n\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t} catch ( e ) {\n\t\t\tnonnativeSelectorCache( expr, true );\n\t\t}\n\t}\n\n\treturn Sizzle( expr, document, null, [ elem ] ).length > 0;\n};\n\nSizzle.contains = function( context, elem ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( context.ownerDocument || context ) != document ) {\n\t\tsetDocument( context );\n\t}\n\treturn contains( context, elem );\n};\n\nSizzle.attr = function( elem, name ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( elem.ownerDocument || elem ) != document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\n\t\t// Don't get fooled by Object.prototype properties (jQuery #13807)\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\treturn val !== undefined ?\n\t\tval :\n\t\tsupport.attributes || !documentIsHTML ?\n\t\t\telem.getAttribute( name ) :\n\t\t\t( val = elem.getAttributeNode( name ) ) && val.specified ?\n\t\t\t\tval.value :\n\t\t\t\tnull;\n};\n\nSizzle.escape = function( sel ) {\n\treturn ( sel + \"\" ).replace( rcssescape, fcssescape );\n};\n\nSizzle.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\nSizzle.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\t// Unless we *know* we can detect duplicates, assume their presence\n\thasDuplicate = !support.detectDuplicates;\n\tsortInput = !support.sortStable && results.slice( 0 );\n\tresults.sort( sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\twhile ( ( elem = results[ i++ ] ) ) {\n\t\t\tif ( elem === results[ i ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tresults.splice( duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\t// Clear input after sorting to release objects\n\t// See https://github.com/jquery/sizzle/pull/225\n\tsortInput = null;\n\n\treturn results;\n};\n\n/**\n * Utility function for retrieving the text value of an array of DOM nodes\n * @param {Array|Element} elem\n */\ngetText = Sizzle.getText = function( elem ) {\n\tvar node,\n\t\tret = \"\",\n\t\ti = 0,\n\t\tnodeType = elem.nodeType;\n\n\tif ( !nodeType ) {\n\n\t\t// If no nodeType, this is expected to be an array\n\t\twhile ( ( node = elem[ i++ ] ) ) {\n\n\t\t\t// Do not traverse comment nodes\n\t\t\tret += getText( node );\n\t\t}\n\t} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\n\n\t\t// Use textContent for elements\n\t\t// innerText usage removed for consistency of new lines (jQuery #11153)\n\t\tif ( typeof elem.textContent === \"string\" ) {\n\t\t\treturn elem.textContent;\n\t\t} else {\n\n\t\t\t// Traverse its children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tret += getText( elem );\n\t\t\t}\n\t\t}\n\t} else if ( nodeType === 3 || nodeType === 4 ) {\n\t\treturn elem.nodeValue;\n\t}\n\n\t// Do not include comment or processing instruction nodes\n\n\treturn ret;\n};\n\nExpr = Sizzle.selectors = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\tattrHandle: {},\n\n\tfind: {},\n\n\trelative: {\n\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\" \": { dir: \"parentNode\" },\n\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\"~\": { dir: \"previousSibling\" }\n\t},\n\n\tpreFilter: {\n\t\t\"ATTR\": function( match ) {\n\t\t\tmatch[ 1 ] = match[ 1 ].replace( runescape, funescape );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[ 3 ] = ( match[ 3 ] || match[ 4 ] ||\n\t\t\t\tmatch[ 5 ] || \"\" ).replace( runescape, funescape );\n\n\t\t\tif ( match[ 2 ] === \"~=\" ) {\n\t\t\t\tmatch[ 3 ] = \" \" + match[ 3 ] + \" \";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\t\"CHILD\": function( match ) {\n\n\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 what (child|of-type)\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t5 sign of xn-component\n\t\t\t\t6 x of xn-component\n\t\t\t\t7 sign of y-component\n\t\t\t\t8 y of y-component\n\t\t\t*/\n\t\t\tmatch[ 1 ] = match[ 1 ].toLowerCase();\n\n\t\t\tif ( match[ 1 ].slice( 0, 3 ) === \"nth\" ) {\n\n\t\t\t\t// nth-* requires argument\n\t\t\t\tif ( !match[ 3 ] ) {\n\t\t\t\t\tSizzle.error( match[ 0 ] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[ 4 ] = +( match[ 4 ] ?\n\t\t\t\t\tmatch[ 5 ] + ( match[ 6 ] || 1 ) :\n\t\t\t\t\t2 * ( match[ 3 ] === \"even\" || match[ 3 ] === \"odd\" ) );\n\t\t\t\tmatch[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === \"odd\" );\n\n\t\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[ 3 ] ) {\n\t\t\t\tSizzle.error( match[ 0 ] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\t\"PSEUDO\": function( match ) {\n\t\t\tvar excess,\n\t\t\t\tunquoted = !match[ 6 ] && match[ 2 ];\n\n\t\t\tif ( matchExpr[ \"CHILD\" ].test( match[ 0 ] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Accept quoted arguments as-is\n\t\t\tif ( match[ 3 ] ) {\n\t\t\t\tmatch[ 2 ] = match[ 4 ] || match[ 5 ] || \"\";\n\n\t\t\t// Strip excess characters from unquoted arguments\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\n\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t( excess = tokenize( unquoted, true ) ) &&\n\n\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t( excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length ) ) {\n\n\t\t\t\t// excess is a negative index\n\t\t\t\tmatch[ 0 ] = match[ 0 ].slice( 0, excess );\n\t\t\t\tmatch[ 2 ] = unquoted.slice( 0, excess );\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\n\t\t\"TAG\": function( nodeNameSelector ) {\n\t\t\tvar nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn nodeNameSelector === \"*\" ?\n\t\t\t\tfunction() {\n\t\t\t\t\treturn true;\n\t\t\t\t} :\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\n\t\t\t\t};\n\t\t},\n\n\t\t\"CLASS\": function( className ) {\n\t\t\tvar pattern = classCache[ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t( pattern = new RegExp( \"(^|\" + whitespace +\n\t\t\t\t\t\")\" + className + \"(\" + whitespace + \"|$)\" ) ) && classCache(\n\t\t\t\t\t\tclassName, function( elem ) {\n\t\t\t\t\t\t\treturn pattern.test(\n\t\t\t\t\t\t\t\ttypeof elem.className === \"string\" && elem.className ||\n\t\t\t\t\t\t\t\ttypeof elem.getAttribute !== \"undefined\" &&\n\t\t\t\t\t\t\t\t\telem.getAttribute( \"class\" ) ||\n\t\t\t\t\t\t\t\t\"\"\n\t\t\t\t\t\t\t);\n\t\t\t\t} );\n\t\t},\n\n\t\t\"ATTR\": function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = Sizzle.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += \"\";\n\n\t\t\t\t/* eslint-disable max-len */\n\n\t\t\t\treturn operator === \"=\" ? result === check :\n\t\t\t\t\toperator === \"!=\" ? result !== check :\n\t\t\t\t\toperator === \"^=\" ? check && result.indexOf( check ) === 0 :\n\t\t\t\t\toperator === \"*=\" ? check && result.indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"$=\" ? check && result.slice( -check.length ) === check :\n\t\t\t\t\toperator === \"~=\" ? ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" ).indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"|=\" ? result === check || result.slice( 0, check.length + 1 ) === check + \"-\" :\n\t\t\t\t\tfalse;\n\t\t\t\t/* eslint-enable max-len */\n\n\t\t\t};\n\t\t},\n\n\t\t\"CHILD\": function( type, what, _argument, first, last ) {\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\n\t\t\t\tofType = what === \"of-type\";\n\n\t\t\treturn first === 1 && last === 0 ?\n\n\t\t\t\t// Shortcut for :nth-*(n)\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn !!elem.parentNode;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tvar cache, uniqueCache, outerCache, node, nodeIndex, start,\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n\t\t\t\t\t\tparent = elem.parentNode,\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\n\t\t\t\t\t\tuseCache = !xml && !ofType,\n\t\t\t\t\t\tdiff = false;\n\n\t\t\t\t\tif ( parent ) {\n\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\n\t\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\t\twhile ( dir ) {\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\twhile ( ( node = node[ dir ] ) ) {\n\t\t\t\t\t\t\t\t\tif ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) {\n\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven't yet done so)\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\n\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\n\t\t\t\t\t\tif ( forward && useCache ) {\n\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\n\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\tnode = parent;\n\t\t\t\t\t\t\touterCache = node[ expando ] || ( node[ expando ] = {} );\n\n\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\tdiff = nodeIndex && cache[ 2 ];\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n\n\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\n\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, nodeIndex, diff ];\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t\tif ( useCache ) {\n\n\t\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\touterCache = node[ expando ] || ( node[ expando ] = {} );\n\n\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\t\tdiff = nodeIndex;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// xml :nth-child(...)\n\t\t\t\t\t\t\t// or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t\tif ( diff === false ) {\n\n\t\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\n\t\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t\tif ( ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) &&\n\t\t\t\t\t\t\t\t\t\t++diff ) {\n\n\t\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\n\t\t\t\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t\touterCache = node[ expando ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t( node[ expando ] = {} );\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\n\t\t\t\t\t\tdiff -= last;\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t},\n\n\t\t\"PSEUDO\": function( pseudo, argument ) {\n\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// http://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tSizzle.error( \"unsupported pseudo: \" + pseudo );\n\n\t\t\t// The user may use createPseudo to indicate that\n\t\t\t// arguments are needed to create the filter function\n\t\t\t// just as Sizzle does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction( function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf( seed, matched[ i ] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[ i ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t} ) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\n\t\t// Potentially complex pseudos\n\t\t\"not\": markFunction( function( selector ) {\n\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrim, \"$1\" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction( function( seed, matches, _context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\t\t\t\t\tseed[ i ] = !( matches[ i ] = elem );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} ) :\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tinput[ 0 ] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\n\t\t\t\t\t// Don't keep the element (issue #299)\n\t\t\t\t\tinput[ 0 ] = null;\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t} ),\n\n\t\t\"has\": markFunction( function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn Sizzle( selector, elem ).length > 0;\n\t\t\t};\n\t\t} ),\n\n\t\t\"contains\": markFunction( function( text ) {\n\t\t\ttext = text.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || getText( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t} ),\n\n\t\t// \"Whether an element is represented by a :lang() selector\n\t\t// is based solely on the element's language value\n\t\t// being equal to the identifier C,\n\t\t// or beginning with the identifier C immediately followed by \"-\".\n\t\t// The matching of C against the element's language value is performed case-insensitively.\n\t\t// The identifier C does not have to be a valid language name.\"\n\t\t// http://www.w3.org/TR/selectors/#lang-pseudo\n\t\t\"lang\": markFunction( function( lang ) {\n\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test( lang || \"\" ) ) {\n\t\t\t\tSizzle.error( \"unsupported lang: \" + lang );\n\t\t\t}\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn function( elem ) {\n\t\t\t\tvar elemLang;\n\t\t\t\tdo {\n\t\t\t\t\tif ( ( elemLang = documentIsHTML ?\n\t\t\t\t\t\telem.lang :\n\t\t\t\t\t\telem.getAttribute( \"xml:lang\" ) || elem.getAttribute( \"lang\" ) ) ) {\n\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\n\t\t\t\t\t}\n\t\t\t\t} while ( ( elem = elem.parentNode ) && elem.nodeType === 1 );\n\t\t\t\treturn false;\n\t\t\t};\n\t\t} ),\n\n\t\t// Miscellaneous\n\t\t\"target\": function( elem ) {\n\t\t\tvar hash = window.location && window.location.hash;\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\n\t\t},\n\n\t\t\"root\": function( elem ) {\n\t\t\treturn elem === docElem;\n\t\t},\n\n\t\t\"focus\": function( elem ) {\n\t\t\treturn elem === document.activeElement &&\n\t\t\t\t( !document.hasFocus || document.hasFocus() ) &&\n\t\t\t\t!!( elem.type || elem.href || ~elem.tabIndex );\n\t\t},\n\n\t\t// Boolean properties\n\t\t\"enabled\": createDisabledPseudo( false ),\n\t\t\"disabled\": createDisabledPseudo( true ),\n\n\t\t\"checked\": function( elem ) {\n\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\tvar nodeName = elem.nodeName.toLowerCase();\n\t\t\treturn ( nodeName === \"input\" && !!elem.checked ) ||\n\t\t\t\t( nodeName === \"option\" && !!elem.selected );\n\t\t},\n\n\t\t\"selected\": function( elem ) {\n\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\t// eslint-disable-next-line no-unused-expressions\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t// Contents\n\t\t\"empty\": function( elem ) {\n\n\t\t\t// http://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n\t\t\t// but not by others (comment: 8; processing instruction: 7; etc.)\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tif ( elem.nodeType < 6 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t\"parent\": function( elem ) {\n\t\t\treturn !Expr.pseudos[ \"empty\" ]( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\t\"header\": function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\t\"input\": function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\t\"button\": function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn name === \"input\" && elem.type === \"button\" || name === \"button\";\n\t\t},\n\n\t\t\"text\": function( elem ) {\n\t\t\tvar attr;\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" &&\n\t\t\t\telem.type === \"text\" &&\n\n\t\t\t\t// Support: IE<8\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear with elem.type === \"text\"\n\t\t\t\t( ( attr = elem.getAttribute( \"type\" ) ) == null ||\n\t\t\t\t\tattr.toLowerCase() === \"text\" );\n\t\t},\n\n\t\t// Position-in-collection\n\t\t\"first\": createPositionalPseudo( function() {\n\t\t\treturn [ 0 ];\n\t\t} ),\n\n\t\t\"last\": createPositionalPseudo( function( _matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t} ),\n\n\t\t\"eq\": createPositionalPseudo( function( _matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t} ),\n\n\t\t\"even\": createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\t\"odd\": createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 1;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\t\"lt\": createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ?\n\t\t\t\targument + length :\n\t\t\t\targument > length ?\n\t\t\t\t\tlength :\n\t\t\t\t\targument;\n\t\t\tfor ( ; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\t\"gt\": createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} )\n\t}\n};\n\nExpr.pseudos[ \"nth\" ] = Expr.pseudos[ \"eq\" ];\n\n// Add button/input type pseudos\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tExpr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\n}\n\n// Easy API for creating new setFilters\nfunction setFilters() {}\nsetFilters.prototype = Expr.filters = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\ntokenize = Sizzle.tokenize = function( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ selector + \" \" ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || ( match = rcomma.exec( soFar ) ) ) {\n\t\t\tif ( match ) {\n\n\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[ 0 ].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( ( tokens = [] ) );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( ( match = rcombinators.exec( soFar ) ) ) {\n\t\t\tmatched = match.shift();\n\t\t\ttokens.push( {\n\t\t\t\tvalue: matched,\n\n\t\t\t\t// Cast descendant combinators to space\n\t\t\t\ttype: match[ 0 ].replace( rtrim, \" \" )\n\t\t\t} );\n\t\t\tsoFar = soFar.slice( matched.length );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( ( match = matchExpr[ type ].exec( soFar ) ) && ( !preFilters[ type ] ||\n\t\t\t\t( match = preFilters[ type ]( match ) ) ) ) {\n\t\t\t\tmatched = match.shift();\n\t\t\t\ttokens.push( {\n\t\t\t\t\tvalue: matched,\n\t\t\t\t\ttype: type,\n\t\t\t\t\tmatches: match\n\t\t\t\t} );\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we're just parsing\n\t// Otherwise, throw an error or return tokens\n\treturn parseOnly ?\n\t\tsoFar.length :\n\t\tsoFar ?\n\t\t\tSizzle.error( selector ) :\n\n\t\t\t// Cache the tokens\n\t\t\ttokenCache( selector, groups ).slice( 0 );\n};\n\nfunction toSelector( tokens ) {\n\tvar i = 0,\n\t\tlen = tokens.length,\n\t\tselector = \"\";\n\tfor ( ; i < len; i++ ) {\n\t\tselector += tokens[ i ].value;\n\t}\n\treturn selector;\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tskip = combinator.next,\n\t\tkey = skip || dir,\n\t\tcheckNonElements = base && key === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar oldCache, uniqueCache, outerCache,\n\t\t\t\tnewCache = [ dirruns, doneName ];\n\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\n\t\t\tif ( xml ) {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\touterCache = elem[ expando ] || ( elem[ expando ] = {} );\n\n\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\tuniqueCache = outerCache[ elem.uniqueID ] ||\n\t\t\t\t\t\t\t( outerCache[ elem.uniqueID ] = {} );\n\n\t\t\t\t\t\tif ( skip && skip === elem.nodeName.toLowerCase() ) {\n\t\t\t\t\t\t\telem = elem[ dir ] || elem;\n\t\t\t\t\t\t} else if ( ( oldCache = uniqueCache[ key ] ) &&\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\n\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\n\t\t\t\t\t\t\treturn ( newCache[ 2 ] = oldCache[ 2 ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\tuniqueCache[ key ] = newCache;\n\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\n\t\t\t\t\t\t\tif ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[ i ]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[ 0 ];\n}\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tSizzle( selector, contexts[ i ], results );\n\t}\n\treturn results;\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction( function( seed, results, context, xml ) {\n\t\tvar temp, i, elem,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed || multipleContexts(\n\t\t\t\tselector || \"*\",\n\t\t\t\tcontext.nodeType ? [ context ] : context,\n\t\t\t\t[]\n\t\t\t),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems,\n\n\t\t\tmatcherOut = matcher ?\n\n\t\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,\n\t\t\t\tpostFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t\t[] :\n\n\t\t\t\t\t// ...otherwise use results directly\n\t\t\t\t\tresults :\n\t\t\t\tmatcherIn;\n\n\t\t// Find primary matches\n\t\tif ( matcher ) {\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( ( elem = temp[ i ] ) ) {\n\t\t\t\t\tmatcherOut[ postMap[ i ] ] = !( matcherIn[ postMap[ i ] ] = elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) ) {\n\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( ( matcherIn[ i ] = elem ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, ( matcherOut = [] ), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) &&\n\t\t\t\t\t\t( temp = postFinder ? indexOf( seed, elem ) : preMap[ i ] ) > -1 ) {\n\n\t\t\t\t\t\tseed[ temp ] = !( results[ temp ] = elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t} );\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[ 0 ].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[ \" \" ],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\t\t\tvar ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (\n\t\t\t\t( checkContext = context ).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\n\t\t\t// Avoid hanging onto element (issue #299)\n\t\t\tcheckContext = null;\n\t\t\treturn ret;\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( matcher = Expr.relative[ tokens[ i ].type ] ) ) {\n\t\t\tmatchers = [ addCombinator( elementMatcher( matchers ), matcher ) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[ i ].type ].apply( null, tokens[ i ].matches );\n\n\t\t\t// Return special upon seeing a positional matcher\n\t\t\tif ( matcher[ expando ] ) {\n\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[ j ].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && toSelector(\n\n\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\ttokens\n\t\t\t\t\t\t.slice( 0, i - 1 )\n\t\t\t\t\t\t.concat( { value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" } )\n\t\t\t\t\t).replace( rtrim, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( ( tokens = tokens.slice( j ) ) ),\n\t\t\t\t\tj < len && toSelector( tokens )\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\tvar bySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, outermost ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\tsetMatched = [],\n\t\t\t\tcontextBackup = outermostContext,\n\n\t\t\t\t// We must always have either seed elements or outermost context\n\t\t\t\telems = seed || byElement && Expr.find[ \"TAG\" ]( \"*\", outermost ),\n\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\n\t\t\t\tdirrunsUnique = ( dirruns += contextBackup == null ? 1 : Math.random() || 0.1 ),\n\t\t\t\tlen = elems.length;\n\n\t\t\tif ( outermost ) {\n\n\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\toutermostContext = context == document || context || outermost;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Support: IE<9, Safari\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: ) matching elements by id\n\t\t\tfor ( ; i !== len && ( elem = elems[ i ] ) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\n\t\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\t\tif ( !context && elem.ownerDocument != document ) {\n\t\t\t\t\t\tsetDocument( elem );\n\t\t\t\t\t\txml = !documentIsHTML;\n\t\t\t\t\t}\n\t\t\t\t\twhile ( ( matcher = elementMatchers[ j++ ] ) ) {\n\t\t\t\t\t\tif ( matcher( elem, context || document, xml ) ) {\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( ( elem = !matcher && elem ) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// `i` is now the count of elements visited above, and adding it to `matchedCount`\n\t\t\t// makes the latter nonnegative.\n\t\t\tmatchedCount += i;\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\t// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\n\t\t\t// equals `i`), unless we didn't visit _any_ elements in the above loop because we have\n\t\t\t// no element matchers and no seed.\n\t\t\t// Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\n\t\t\t// case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\n\t\t\t// numerically zero.\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( ( matcher = setMatchers[ j++ ] ) ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !( unmatched[ i ] || setMatched[ i ] ) ) {\n\t\t\t\t\t\t\t\tsetMatched[ i ] = pop.call( results );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tSizzle.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\ncompile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ selector + \" \" ];\n\n\tif ( !cached ) {\n\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !match ) {\n\t\t\tmatch = tokenize( selector );\n\t\t}\n\t\ti = match.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( match[ i ] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache(\n\t\t\tselector,\n\t\t\tmatcherFromGroupMatchers( elementMatchers, setMatchers )\n\t\t);\n\n\t\t// Save selector and tokenization\n\t\tcached.selector = selector;\n\t}\n\treturn cached;\n};\n\n/**\n * A low-level selection function that works with Sizzle's compiled\n * selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n * selector function built with Sizzle.compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nselect = Sizzle.select = function( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tcompiled = typeof selector === \"function\" && selector,\n\t\tmatch = !seed && tokenize( ( selector = compiled.selector || selector ) );\n\n\tresults = results || [];\n\n\t// Try to minimize operations if there is only one selector in the list and no seed\n\t// (the latter of which guarantees us context)\n\tif ( match.length === 1 ) {\n\n\t\t// Reduce context if the leading compound selector is an ID\n\t\ttokens = match[ 0 ] = match[ 0 ].slice( 0 );\n\t\tif ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === \"ID\" &&\n\t\t\tcontext.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) {\n\n\t\t\tcontext = ( Expr.find[ \"ID\" ]( token.matches[ 0 ]\n\t\t\t\t.replace( runescape, funescape ), context ) || [] )[ 0 ];\n\t\t\tif ( !context ) {\n\t\t\t\treturn results;\n\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\n\t\t\t} else if ( compiled ) {\n\t\t\t\tcontext = context.parentNode;\n\t\t\t}\n\n\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t}\n\n\t\t// Fetch a seed set for right-to-left matching\n\t\ti = matchExpr[ \"needsContext\" ].test( selector ) ? 0 : tokens.length;\n\t\twhile ( i-- ) {\n\t\t\ttoken = tokens[ i ];\n\n\t\t\t// Abort if we hit a combinator\n\t\t\tif ( Expr.relative[ ( type = token.type ) ] ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( ( find = Expr.find[ type ] ) ) {\n\n\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\tif ( ( seed = find(\n\t\t\t\t\ttoken.matches[ 0 ].replace( runescape, funescape ),\n\t\t\t\t\trsibling.test( tokens[ 0 ].type ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext\n\t\t\t\t) ) ) {\n\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function if one is not provided\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\t( compiled || compile( selector, match ) )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\t!context || rsibling.test( selector ) && testContext( context.parentNode ) || context\n\t);\n\treturn results;\n};\n\n// One-time assignments\n\n// Sort stability\nsupport.sortStable = expando.split( \"\" ).sort( sortOrder ).join( \"\" ) === expando;\n\n// Support: Chrome 14-35+\n// Always assume duplicates if they aren't passed to the comparison function\nsupport.detectDuplicates = !!hasDuplicate;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)\n// Detached nodes confoundingly follow *each other*\nsupport.sortDetached = assert( function( el ) {\n\n\t// Should return 1, but returns 4 (following)\n\treturn el.compareDocumentPosition( document.createElement( \"fieldset\" ) ) & 1;\n} );\n\n// Support: IE<8\n// Prevent attribute/property \"interpolation\"\n// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\nif ( !assert( function( el ) {\n\tel.innerHTML = \"\";\n\treturn el.firstChild.getAttribute( \"href\" ) === \"#\";\n} ) ) {\n\taddHandle( \"type|href|height|width\", function( elem, name, isXML ) {\n\t\tif ( !isXML ) {\n\t\t\treturn elem.getAttribute( name, name.toLowerCase() === \"type\" ? 1 : 2 );\n\t\t}\n\t} );\n}\n\n// Support: IE<9\n// Use defaultValue in place of getAttribute(\"value\")\nif ( !support.attributes || !assert( function( el ) {\n\tel.innerHTML = \"\";\n\tel.firstChild.setAttribute( \"value\", \"\" );\n\treturn el.firstChild.getAttribute( \"value\" ) === \"\";\n} ) ) {\n\taddHandle( \"value\", function( elem, _name, isXML ) {\n\t\tif ( !isXML && elem.nodeName.toLowerCase() === \"input\" ) {\n\t\t\treturn elem.defaultValue;\n\t\t}\n\t} );\n}\n\n// Support: IE<9\n// Use getAttributeNode to fetch booleans when getAttribute lies\nif ( !assert( function( el ) {\n\treturn el.getAttribute( \"disabled\" ) == null;\n} ) ) {\n\taddHandle( booleans, function( elem, name, isXML ) {\n\t\tvar val;\n\t\tif ( !isXML ) {\n\t\t\treturn elem[ name ] === true ? name.toLowerCase() :\n\t\t\t\t( val = elem.getAttributeNode( name ) ) && val.specified ?\n\t\t\t\t\tval.value :\n\t\t\t\t\tnull;\n\t\t}\n\t} );\n}\n\nreturn Sizzle;\n\n} )( window );\n\n\n\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\n\n// Deprecated\njQuery.expr[ \":\" ] = jQuery.expr.pseudos;\njQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\njQuery.escapeSelector = Sizzle.escape;\n\n\n\n\nvar dir = function( elem, dir, until ) {\n\tvar matched = [],\n\t\ttruncate = until !== undefined;\n\n\twhile ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\tif ( truncate && jQuery( elem ).is( until ) ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tmatched.push( elem );\n\t\t}\n\t}\n\treturn matched;\n};\n\n\nvar siblings = function( n, elem ) {\n\tvar matched = [];\n\n\tfor ( ; n; n = n.nextSibling ) {\n\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\tmatched.push( n );\n\t\t}\n\t}\n\n\treturn matched;\n};\n\n\nvar rneedsContext = jQuery.expr.match.needsContext;\n\n\n\nfunction nodeName( elem, name ) {\n\n\treturn elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\n}\nvar rsingleTag = ( /^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i );\n\n\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t} );\n\t}\n\n\t// Single element\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t} );\n\t}\n\n\t// Arraylike of elements (jQuery, arguments, Array)\n\tif ( typeof qualifier !== \"string\" ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( indexOf.call( qualifier, elem ) > -1 ) !== not;\n\t\t} );\n\t}\n\n\t// Filtered directly for both simple and complex selectors\n\treturn jQuery.filter( qualifier, elements, not );\n}\n\njQuery.filter = function( expr, elems, not ) {\n\tvar elem = elems[ 0 ];\n\n\tif ( not ) {\n\t\texpr = \":not(\" + expr + \")\";\n\t}\n\n\tif ( elems.length === 1 && elem.nodeType === 1 ) {\n\t\treturn jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];\n\t}\n\n\treturn jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\treturn elem.nodeType === 1;\n\t} ) );\n};\n\njQuery.fn.extend( {\n\tfind: function( selector ) {\n\t\tvar i, ret,\n\t\t\tlen = this.length,\n\t\t\tself = this;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn this.pushStack( jQuery( selector ).filter( function() {\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} ) );\n\t\t}\n\n\t\tret = this.pushStack( [] );\n\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\treturn len > 1 ? jQuery.uniqueSort( ret ) : ret;\n\t},\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], false ) );\n\t},\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], true ) );\n\t},\n\tis: function( selector ) {\n\t\treturn !!winnow(\n\t\t\tthis,\n\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tselector || [],\n\t\t\tfalse\n\t\t).length;\n\t}\n} );\n\n\n// Initialize a jQuery object\n\n\n// A central reference to the root jQuery(document)\nvar rootjQuery,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over to avoid XSS via location.hash (#9521)\n\t// Strict HTML recognition (#11290: must start with <)\n\t// Shortcut simple #id case for speed\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/,\n\n\tinit = jQuery.fn.init = function( selector, context, root ) {\n\t\tvar match, elem;\n\n\t\t// HANDLE: $(\"\"), $(null), $(undefined), $(false)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Method init() accepts an alternate rootjQuery\n\t\t// so migrate can support jQuery.sub (gh-2101)\n\t\troot = root || rootjQuery;\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector[ 0 ] === \"<\" &&\n\t\t\t\tselector[ selector.length - 1 ] === \">\" &&\n\t\t\t\tselector.length >= 3 ) {\n\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\tif ( match && ( match[ 1 ] || !context ) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[ 1 ] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[ 0 ] : context;\n\n\t\t\t\t\t// Option to run scripts is true for back-compat\n\t\t\t\t\t// Intentionally let the error be thrown if parseHTML is not present\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\n\t\t\t\t\t\tmatch[ 1 ],\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t) );\n\n\t\t\t\t\t// HANDLE: $(html, props)\n\t\t\t\t\tif ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tfor ( match in context ) {\n\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( isFunction( this[ match ] ) ) {\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\n\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn this;\n\n\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[ 2 ] );\n\n\t\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t\t// Inject the element directly into the jQuery object\n\t\t\t\t\t\tthis[ 0 ] = elem;\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || root ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(DOMElement)\n\t\t} else if ( selector.nodeType ) {\n\t\t\tthis[ 0 ] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( isFunction( selector ) ) {\n\t\t\treturn root.ready !== undefined ?\n\t\t\t\troot.ready( selector ) :\n\n\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\tselector( jQuery );\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t};\n\n// Give the init function the jQuery prototype for later instantiation\ninit.prototype = jQuery.fn;\n\n// Initialize central reference\nrootjQuery = jQuery( document );\n\n\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\n\n\t// Methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend( {\n\thas: function( target ) {\n\t\tvar targets = jQuery( target, this ),\n\t\t\tl = targets.length;\n\n\t\treturn this.filter( function() {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[ i ] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tmatched = [],\n\t\t\ttargets = typeof selectors !== \"string\" && jQuery( selectors );\n\n\t\t// Positional selectors never match, since there's no _selection_ context\n\t\tif ( !rneedsContext.test( selectors ) ) {\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tfor ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {\n\n\t\t\t\t\t// Always skip document fragments\n\t\t\t\t\tif ( cur.nodeType < 11 && ( targets ?\n\t\t\t\t\t\ttargets.index( cur ) > -1 :\n\n\t\t\t\t\t\t// Don't pass non-elements to Sizzle\n\t\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\t\tjQuery.find.matchesSelector( cur, selectors ) ) ) {\n\n\t\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within the set\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;\n\t\t}\n\n\t\t// Index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn indexOf.call( jQuery( elem ), this[ 0 ] );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn indexOf.call( this,\n\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[ 0 ] : elem\n\t\t);\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.uniqueSort(\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\n\t\t\t)\n\t\t);\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter( selector )\n\t\t);\n\t}\n} );\n\nfunction sibling( cur, dir ) {\n\twhile ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}\n\treturn cur;\n}\n\njQuery.each( {\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn siblings( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn siblings( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\tif ( elem.contentDocument != null &&\n\n\t\t\t// Support: IE 11+\n\t\t\t// elements with no `data` attribute has an object\n\t\t\t// `contentDocument` with a `null` prototype.\n\t\t\tgetProto( elem.contentDocument ) ) {\n\n\t\t\treturn elem.contentDocument;\n\t\t}\n\n\t\t// Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only\n\t\t// Treat the template element as a regular one in browsers that\n\t\t// don't support it.\n\t\tif ( nodeName( elem, \"template\" ) ) {\n\t\t\telem = elem.content || elem;\n\t\t}\n\n\t\treturn jQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar matched = jQuery.map( this, fn, until );\n\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tmatched = jQuery.filter( selector, matched );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tjQuery.uniqueSort( matched );\n\t\t\t}\n\n\t\t\t// Reverse order for parents* and prev-derivatives\n\t\t\tif ( rparentsprev.test( name ) ) {\n\t\t\t\tmatched.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched );\n\t};\n} );\nvar rnothtmlwhite = ( /[^\\x20\\t\\r\\n\\f]+/g );\n\n\n\n// Convert String-formatted options into Object-formatted ones\nfunction createOptions( options ) {\n\tvar object = {};\n\tjQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t} );\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\tcreateOptions( options ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Flag to know if list is currently firing\n\t\tfiring,\n\n\t\t// Last fire value for non-forgettable lists\n\t\tmemory,\n\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\n\t\t// Flag to prevent firing\n\t\tlocked,\n\n\t\t// Actual callback list\n\t\tlist = [],\n\n\t\t// Queue of execution data for repeatable lists\n\t\tqueue = [],\n\n\t\t// Index of currently firing callback (modified by add/remove as needed)\n\t\tfiringIndex = -1,\n\n\t\t// Fire callbacks\n\t\tfire = function() {\n\n\t\t\t// Enforce single-firing\n\t\t\tlocked = locked || options.once;\n\n\t\t\t// Execute callbacks for all pending executions,\n\t\t\t// respecting firingIndex overrides and runtime changes\n\t\t\tfired = firing = true;\n\t\t\tfor ( ; queue.length; firingIndex = -1 ) {\n\t\t\t\tmemory = queue.shift();\n\t\t\t\twhile ( ++firingIndex < list.length ) {\n\n\t\t\t\t\t// Run callback and check for early termination\n\t\t\t\t\tif ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&\n\t\t\t\t\t\toptions.stopOnFalse ) {\n\n\t\t\t\t\t\t// Jump to end and forget the data so .add doesn't re-fire\n\t\t\t\t\t\tfiringIndex = list.length;\n\t\t\t\t\t\tmemory = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Forget the data if we're done with it\n\t\t\tif ( !options.memory ) {\n\t\t\t\tmemory = false;\n\t\t\t}\n\n\t\t\tfiring = false;\n\n\t\t\t// Clean up if we're done firing for good\n\t\t\tif ( locked ) {\n\n\t\t\t\t// Keep an empty list if we have data for future add calls\n\t\t\t\tif ( memory ) {\n\t\t\t\t\tlist = [];\n\n\t\t\t\t// Otherwise, this object is spent\n\t\t\t\t} else {\n\t\t\t\t\tlist = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Actual Callbacks object\n\t\tself = {\n\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\n\t\t\t\t\t// If we have memory from a past run, we should fire after adding\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfiringIndex = list.length - 1;\n\t\t\t\t\t\tqueue.push( memory );\n\t\t\t\t\t}\n\n\t\t\t\t\t( function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tif ( isFunction( arg ) ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && toType( arg ) !== \"string\" ) {\n\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t} )( arguments );\n\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\tvar index;\n\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\tlist.splice( index, 1 );\n\n\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Check if a given callback is in the list.\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\n\t\t\thas: function( fn ) {\n\t\t\t\treturn fn ?\n\t\t\t\t\tjQuery.inArray( fn, list ) > -1 :\n\t\t\t\t\tlist.length > 0;\n\t\t\t},\n\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Disable .fire and .add\n\t\t\t// Abort any current/pending executions\n\t\t\t// Clear all callbacks and values\n\t\t\tdisable: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tlist = memory = \"\";\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\n\t\t\t// Disable .fire\n\t\t\t// Also disable .add unless we have memory (since it would have no effect)\n\t\t\t// Abort any pending executions\n\t\t\tlock: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tif ( !memory && !firing ) {\n\t\t\t\t\tlist = memory = \"\";\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tlocked: function() {\n\t\t\t\treturn !!locked;\n\t\t\t},\n\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\tif ( !locked ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\tqueue.push( args );\n\t\t\t\t\tif ( !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\n\n\nfunction Identity( v ) {\n\treturn v;\n}\nfunction Thrower( ex ) {\n\tthrow ex;\n}\n\nfunction adoptValue( value, resolve, reject, noValue ) {\n\tvar method;\n\n\ttry {\n\n\t\t// Check for promise aspect first to privilege synchronous behavior\n\t\tif ( value && isFunction( ( method = value.promise ) ) ) {\n\t\t\tmethod.call( value ).done( resolve ).fail( reject );\n\n\t\t// Other thenables\n\t\t} else if ( value && isFunction( ( method = value.then ) ) ) {\n\t\t\tmethod.call( value, resolve, reject );\n\n\t\t// Other non-thenables\n\t\t} else {\n\n\t\t\t// Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:\n\t\t\t// * false: [ value ].slice( 0 ) => resolve( value )\n\t\t\t// * true: [ value ].slice( 1 ) => resolve()\n\t\t\tresolve.apply( undefined, [ value ].slice( noValue ) );\n\t\t}\n\n\t// For Promises/A+, convert exceptions into rejections\n\t// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in\n\t// Deferred#then to conditionally suppress rejection.\n\t} catch ( value ) {\n\n\t\t// Support: Android 4.0 only\n\t\t// Strict mode functions invoked without .call/.apply get global-object context\n\t\treject.apply( undefined, [ value ] );\n\t}\n}\n\njQuery.extend( {\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\n\t\t\t\t// action, add listener, callbacks,\n\t\t\t\t// ... .then handlers, argument index, [final state]\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks( \"memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"memory\" ), 2 ],\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 0, \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 1, \"rejected\" ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\t\"catch\": function( fn ) {\n\t\t\t\t\treturn promise.then( null, fn );\n\t\t\t\t},\n\n\t\t\t\t// Keep pipe for back-compat\n\t\t\t\tpipe: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( _i, tuple ) {\n\n\t\t\t\t\t\t\t// Map tuples (progress, done, fail) to arguments (done, fail, progress)\n\t\t\t\t\t\t\tvar fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];\n\n\t\t\t\t\t\t\t// deferred.progress(function() { bind to newDefer or newDefer.notify })\n\t\t\t\t\t\t\t// deferred.done(function() { bind to newDefer or newDefer.resolve })\n\t\t\t\t\t\t\t// deferred.fail(function() { bind to newDefer or newDefer.reject })\n\t\t\t\t\t\t\tdeferred[ tuple[ 1 ] ]( function() {\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify )\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ](\n\t\t\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t\t\tfn ? [ returned ] : arguments\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\t\t\t\tthen: function( onFulfilled, onRejected, onProgress ) {\n\t\t\t\t\tvar maxDepth = 0;\n\t\t\t\t\tfunction resolve( depth, deferred, handler, special ) {\n\t\t\t\t\t\treturn function() {\n\t\t\t\t\t\t\tvar that = this,\n\t\t\t\t\t\t\t\targs = arguments,\n\t\t\t\t\t\t\t\tmightThrow = function() {\n\t\t\t\t\t\t\t\t\tvar returned, then;\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.3\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-59\n\t\t\t\t\t\t\t\t\t// Ignore double-resolution attempts\n\t\t\t\t\t\t\t\t\tif ( depth < maxDepth ) {\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\treturned = handler.apply( that, args );\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.1\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-48\n\t\t\t\t\t\t\t\t\tif ( returned === deferred.promise() ) {\n\t\t\t\t\t\t\t\t\t\tthrow new TypeError( \"Thenable self-resolution\" );\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ sections 2.3.3.1, 3.5\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-54\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-75\n\t\t\t\t\t\t\t\t\t// Retrieve `then` only once\n\t\t\t\t\t\t\t\t\tthen = returned &&\n\n\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.4\n\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-64\n\t\t\t\t\t\t\t\t\t\t// Only check objects and functions for thenability\n\t\t\t\t\t\t\t\t\t\t( typeof returned === \"object\" ||\n\t\t\t\t\t\t\t\t\t\t\ttypeof returned === \"function\" ) &&\n\t\t\t\t\t\t\t\t\t\treturned.then;\n\n\t\t\t\t\t\t\t\t\t// Handle a returned thenable\n\t\t\t\t\t\t\t\t\tif ( isFunction( then ) ) {\n\n\t\t\t\t\t\t\t\t\t\t// Special processors (notify) just wait for resolution\n\t\t\t\t\t\t\t\t\t\tif ( special ) {\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special )\n\t\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\t// Normal processors (resolve) also hook into progress\n\t\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t\t// ...and disregard older resolution values\n\t\t\t\t\t\t\t\t\t\t\tmaxDepth++;\n\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity,\n\t\t\t\t\t\t\t\t\t\t\t\t\tdeferred.notifyWith )\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Handle all other returned values\n\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\tif ( handler !== Identity ) {\n\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\targs = [ returned ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t// Process the value(s)\n\t\t\t\t\t\t\t\t\t\t// Default process is resolve\n\t\t\t\t\t\t\t\t\t\t( special || deferred.resolveWith )( that, args );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\t\t// Only normal processors (resolve) catch and reject exceptions\n\t\t\t\t\t\t\t\tprocess = special ?\n\t\t\t\t\t\t\t\t\tmightThrow :\n\t\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tmightThrow();\n\t\t\t\t\t\t\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t\t\t\t\t\t\tif ( jQuery.Deferred.exceptionHook ) {\n\t\t\t\t\t\t\t\t\t\t\t\tjQuery.Deferred.exceptionHook( e,\n\t\t\t\t\t\t\t\t\t\t\t\t\tprocess.stackTrace );\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.4.1\n\t\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-61\n\t\t\t\t\t\t\t\t\t\t\t// Ignore post-resolution exceptions\n\t\t\t\t\t\t\t\t\t\t\tif ( depth + 1 >= maxDepth ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\t\t\tif ( handler !== Thrower ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\t\t\targs = [ e ];\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\tdeferred.rejectWith( that, args );\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.1\n\t\t\t\t\t\t\t// https://promisesaplus.com/#point-57\n\t\t\t\t\t\t\t// Re-resolve promises immediately to dodge false rejection from\n\t\t\t\t\t\t\t// subsequent errors\n\t\t\t\t\t\t\tif ( depth ) {\n\t\t\t\t\t\t\t\tprocess();\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// Call an optional hook to record the stack, in case of exception\n\t\t\t\t\t\t\t\t// since it's otherwise lost when execution goes async\n\t\t\t\t\t\t\t\tif ( jQuery.Deferred.getStackHook ) {\n\t\t\t\t\t\t\t\t\tprocess.stackTrace = jQuery.Deferred.getStackHook();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\twindow.setTimeout( process );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\n\t\t\t\t\t\t// progress_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 0 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onProgress ) ?\n\t\t\t\t\t\t\t\t\tonProgress :\n\t\t\t\t\t\t\t\t\tIdentity,\n\t\t\t\t\t\t\t\tnewDefer.notifyWith\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// fulfilled_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 1 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onFulfilled ) ?\n\t\t\t\t\t\t\t\t\tonFulfilled :\n\t\t\t\t\t\t\t\t\tIdentity\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// rejected_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 2 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onRejected ) ?\n\t\t\t\t\t\t\t\t\tonRejected :\n\t\t\t\t\t\t\t\t\tThrower\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 5 ];\n\n\t\t\t// promise.progress = list.add\n\t\t\t// promise.done = list.add\n\t\t\t// promise.fail = list.add\n\t\t\tpromise[ tuple[ 1 ] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add(\n\t\t\t\t\tfunction() {\n\n\t\t\t\t\t\t// state = \"resolved\" (i.e., fulfilled)\n\t\t\t\t\t\t// state = \"rejected\"\n\t\t\t\t\t\tstate = stateString;\n\t\t\t\t\t},\n\n\t\t\t\t\t// rejected_callbacks.disable\n\t\t\t\t\t// fulfilled_callbacks.disable\n\t\t\t\t\ttuples[ 3 - i ][ 2 ].disable,\n\n\t\t\t\t\t// rejected_handlers.disable\n\t\t\t\t\t// fulfilled_handlers.disable\n\t\t\t\t\ttuples[ 3 - i ][ 3 ].disable,\n\n\t\t\t\t\t// progress_callbacks.lock\n\t\t\t\t\ttuples[ 0 ][ 2 ].lock,\n\n\t\t\t\t\t// progress_handlers.lock\n\t\t\t\t\ttuples[ 0 ][ 3 ].lock\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// progress_handlers.fire\n\t\t\t// fulfilled_handlers.fire\n\t\t\t// rejected_handlers.fire\n\t\t\tlist.add( tuple[ 3 ].fire );\n\n\t\t\t// deferred.notify = function() { deferred.notifyWith(...) }\n\t\t\t// deferred.resolve = function() { deferred.resolveWith(...) }\n\t\t\t// deferred.reject = function() { deferred.rejectWith(...) }\n\t\t\tdeferred[ tuple[ 0 ] ] = function() {\n\t\t\t\tdeferred[ tuple[ 0 ] + \"With\" ]( this === deferred ? undefined : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\n\n\t\t\t// deferred.notifyWith = list.fireWith\n\t\t\t// deferred.resolveWith = list.fireWith\n\t\t\t// deferred.rejectWith = list.fireWith\n\t\t\tdeferred[ tuple[ 0 ] + \"With\" ] = list.fireWith;\n\t\t} );\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( singleValue ) {\n\t\tvar\n\n\t\t\t// count of uncompleted subordinates\n\t\t\tremaining = arguments.length,\n\n\t\t\t// count of unprocessed arguments\n\t\t\ti = remaining,\n\n\t\t\t// subordinate fulfillment data\n\t\t\tresolveContexts = Array( i ),\n\t\t\tresolveValues = slice.call( arguments ),\n\n\t\t\t// the primary Deferred\n\t\t\tprimary = jQuery.Deferred(),\n\n\t\t\t// subordinate callback factory\n\t\t\tupdateFunc = function( i ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tresolveContexts[ i ] = this;\n\t\t\t\t\tresolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( !( --remaining ) ) {\n\t\t\t\t\t\tprimary.resolveWith( resolveContexts, resolveValues );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\n\t\t// Single- and empty arguments are adopted like Promise.resolve\n\t\tif ( remaining <= 1 ) {\n\t\t\tadoptValue( singleValue, primary.done( updateFunc( i ) ).resolve, primary.reject,\n\t\t\t\t!remaining );\n\n\t\t\t// Use .then() to unwrap secondary thenables (cf. gh-3000)\n\t\t\tif ( primary.state() === \"pending\" ||\n\t\t\t\tisFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {\n\n\t\t\t\treturn primary.then();\n\t\t\t}\n\t\t}\n\n\t\t// Multiple arguments are aggregated like Promise.all array elements\n\t\twhile ( i-- ) {\n\t\t\tadoptValue( resolveValues[ i ], updateFunc( i ), primary.reject );\n\t\t}\n\n\t\treturn primary.promise();\n\t}\n} );\n\n\n// These usually indicate a programmer mistake during development,\n// warn about them ASAP rather than swallowing them by default.\nvar rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;\n\njQuery.Deferred.exceptionHook = function( error, stack ) {\n\n\t// Support: IE 8 - 9 only\n\t// Console exists when dev tools are open, which can happen at any time\n\tif ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {\n\t\twindow.console.warn( \"jQuery.Deferred exception: \" + error.message, error.stack, stack );\n\t}\n};\n\n\n\n\njQuery.readyException = function( error ) {\n\twindow.setTimeout( function() {\n\t\tthrow error;\n\t} );\n};\n\n\n\n\n// The deferred used on DOM ready\nvar readyList = jQuery.Deferred();\n\njQuery.fn.ready = function( fn ) {\n\n\treadyList\n\t\t.then( fn )\n\n\t\t// Wrap jQuery.readyException in a function so that the lookup\n\t\t// happens at the time of error handling instead of callback\n\t\t// registration.\n\t\t.catch( function( error ) {\n\t\t\tjQuery.readyException( error );\n\t\t} );\n\n\treturn this;\n};\n\njQuery.extend( {\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See #6781\n\treadyWait: 1,\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document, [ jQuery ] );\n\t}\n} );\n\njQuery.ready.then = readyList.then;\n\n// The ready event handler and self cleanup method\nfunction completed() {\n\tdocument.removeEventListener( \"DOMContentLoaded\", completed );\n\twindow.removeEventListener( \"load\", completed );\n\tjQuery.ready();\n}\n\n// Catch cases where $(document).ready() is called\n// after the browser event has already occurred.\n// Support: IE <=9 - 10 only\n// Older IE sometimes signals \"interactive\" too soon\nif ( document.readyState === \"complete\" ||\n\t( document.readyState !== \"loading\" && !document.documentElement.doScroll ) ) {\n\n\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\twindow.setTimeout( jQuery.ready );\n\n} else {\n\n\t// Use the handy event callback\n\tdocument.addEventListener( \"DOMContentLoaded\", completed );\n\n\t// A fallback to window.onload, that will always work\n\twindow.addEventListener( \"load\", completed );\n}\n\n\n\n\n// Multifunctional method to get and set values of a collection\n// The value/s can optionally be executed if it's a function\nvar access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\tvar i = 0,\n\t\tlen = elems.length,\n\t\tbulk = key == null;\n\n\t// Sets many values\n\tif ( toType( key ) === \"object\" ) {\n\t\tchainable = true;\n\t\tfor ( i in key ) {\n\t\t\taccess( elems, fn, i, key[ i ], true, emptyGet, raw );\n\t\t}\n\n\t// Sets one value\n\t} else if ( value !== undefined ) {\n\t\tchainable = true;\n\n\t\tif ( !isFunction( value ) ) {\n\t\t\traw = true;\n\t\t}\n\n\t\tif ( bulk ) {\n\n\t\t\t// Bulk operations run against the entire set\n\t\t\tif ( raw ) {\n\t\t\t\tfn.call( elems, value );\n\t\t\t\tfn = null;\n\n\t\t\t// ...except when executing function values\n\t\t\t} else {\n\t\t\t\tbulk = fn;\n\t\t\t\tfn = function( elem, _key, value ) {\n\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\tfn(\n\t\t\t\t\telems[ i ], key, raw ?\n\t\t\t\t\t\tvalue :\n\t\t\t\t\t\tvalue.call( elems[ i ], i, fn( elems[ i ], key ) )\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( chainable ) {\n\t\treturn elems;\n\t}\n\n\t// Gets\n\tif ( bulk ) {\n\t\treturn fn.call( elems );\n\t}\n\n\treturn len ? fn( elems[ 0 ], key ) : emptyGet;\n};\n\n\n// Matches dashed string for camelizing\nvar rmsPrefix = /^-ms-/,\n\trdashAlpha = /-([a-z])/g;\n\n// Used by camelCase as callback to replace()\nfunction fcamelCase( _all, letter ) {\n\treturn letter.toUpperCase();\n}\n\n// Convert dashed to camelCase; used by the css and data modules\n// Support: IE <=9 - 11, Edge 12 - 15\n// Microsoft forgot to hump their vendor prefix (#9572)\nfunction camelCase( string ) {\n\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n}\nvar acceptData = function( owner ) {\n\n\t// Accepts only:\n\t// - Node\n\t// - Node.ELEMENT_NODE\n\t// - Node.DOCUMENT_NODE\n\t// - Object\n\t// - Any\n\treturn owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );\n};\n\n\n\n\nfunction Data() {\n\tthis.expando = jQuery.expando + Data.uid++;\n}\n\nData.uid = 1;\n\nData.prototype = {\n\n\tcache: function( owner ) {\n\n\t\t// Check if the owner object already has a cache\n\t\tvar value = owner[ this.expando ];\n\n\t\t// If not, create one\n\t\tif ( !value ) {\n\t\t\tvalue = {};\n\n\t\t\t// We can accept data for non-element nodes in modern browsers,\n\t\t\t// but we should not, see #8335.\n\t\t\t// Always return an empty object.\n\t\t\tif ( acceptData( owner ) ) {\n\n\t\t\t\t// If it is a node unlikely to be stringify-ed or looped over\n\t\t\t\t// use plain assignment\n\t\t\t\tif ( owner.nodeType ) {\n\t\t\t\t\towner[ this.expando ] = value;\n\n\t\t\t\t// Otherwise secure it in a non-enumerable property\n\t\t\t\t// configurable must be true to allow the property to be\n\t\t\t\t// deleted when data is removed\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty( owner, this.expando, {\n\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\tconfigurable: true\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn value;\n\t},\n\tset: function( owner, data, value ) {\n\t\tvar prop,\n\t\t\tcache = this.cache( owner );\n\n\t\t// Handle: [ owner, key, value ] args\n\t\t// Always use camelCase key (gh-2257)\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tcache[ camelCase( data ) ] = value;\n\n\t\t// Handle: [ owner, { properties } ] args\n\t\t} else {\n\n\t\t\t// Copy the properties one-by-one to the cache object\n\t\t\tfor ( prop in data ) {\n\t\t\t\tcache[ camelCase( prop ) ] = data[ prop ];\n\t\t\t}\n\t\t}\n\t\treturn cache;\n\t},\n\tget: function( owner, key ) {\n\t\treturn key === undefined ?\n\t\t\tthis.cache( owner ) :\n\n\t\t\t// Always use camelCase key (gh-2257)\n\t\t\towner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ];\n\t},\n\taccess: function( owner, key, value ) {\n\n\t\t// In cases where either:\n\t\t//\n\t\t// 1. No key was specified\n\t\t// 2. A string key was specified, but no value provided\n\t\t//\n\t\t// Take the \"read\" path and allow the get method to determine\n\t\t// which value to return, respectively either:\n\t\t//\n\t\t// 1. The entire cache object\n\t\t// 2. The data stored at the key\n\t\t//\n\t\tif ( key === undefined ||\n\t\t\t\t( ( key && typeof key === \"string\" ) && value === undefined ) ) {\n\n\t\t\treturn this.get( owner, key );\n\t\t}\n\n\t\t// When the key is not a string, or both a key and value\n\t\t// are specified, set or extend (existing objects) with either:\n\t\t//\n\t\t// 1. An object of properties\n\t\t// 2. A key and value\n\t\t//\n\t\tthis.set( owner, key, value );\n\n\t\t// Since the \"set\" path can have two possible entry points\n\t\t// return the expected data based on which path was taken[*]\n\t\treturn value !== undefined ? value : key;\n\t},\n\tremove: function( owner, key ) {\n\t\tvar i,\n\t\t\tcache = owner[ this.expando ];\n\n\t\tif ( cache === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key !== undefined ) {\n\n\t\t\t// Support array or space separated string of keys\n\t\t\tif ( Array.isArray( key ) ) {\n\n\t\t\t\t// If key is an array of keys...\n\t\t\t\t// We always set camelCase keys, so remove that.\n\t\t\t\tkey = key.map( camelCase );\n\t\t\t} else {\n\t\t\t\tkey = camelCase( key );\n\n\t\t\t\t// If a key with the spaces exists, use it.\n\t\t\t\t// Otherwise, create an array by matching non-whitespace\n\t\t\t\tkey = key in cache ?\n\t\t\t\t\t[ key ] :\n\t\t\t\t\t( key.match( rnothtmlwhite ) || [] );\n\t\t\t}\n\n\t\t\ti = key.length;\n\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete cache[ key[ i ] ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if there's no more data\n\t\tif ( key === undefined || jQuery.isEmptyObject( cache ) ) {\n\n\t\t\t// Support: Chrome <=35 - 45\n\t\t\t// Webkit & Blink performance suffers when deleting properties\n\t\t\t// from DOM nodes, so set to undefined instead\n\t\t\t// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)\n\t\t\tif ( owner.nodeType ) {\n\t\t\t\towner[ this.expando ] = undefined;\n\t\t\t} else {\n\t\t\t\tdelete owner[ this.expando ];\n\t\t\t}\n\t\t}\n\t},\n\thasData: function( owner ) {\n\t\tvar cache = owner[ this.expando ];\n\t\treturn cache !== undefined && !jQuery.isEmptyObject( cache );\n\t}\n};\nvar dataPriv = new Data();\n\nvar dataUser = new Data();\n\n\n\n//\tImplementation Summary\n//\n//\t1. Enforce API surface and semantic compatibility with 1.9.x branch\n//\t2. Improve the module's maintainability by reducing the storage\n//\t\tpaths to a single mechanism.\n//\t3. Use the same single mechanism to support \"private\" and \"user\" data.\n//\t4. _Never_ expose \"private\" data to user code (TODO: Drop _data, _removeData)\n//\t5. Avoid exposing implementation details on user objects (eg. expando properties)\n//\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\n\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n\trmultiDash = /[A-Z]/g;\n\nfunction getData( data ) {\n\tif ( data === \"true\" ) {\n\t\treturn true;\n\t}\n\n\tif ( data === \"false\" ) {\n\t\treturn false;\n\t}\n\n\tif ( data === \"null\" ) {\n\t\treturn null;\n\t}\n\n\t// Only convert to a number if it doesn't change the string\n\tif ( data === +data + \"\" ) {\n\t\treturn +data;\n\t}\n\n\tif ( rbrace.test( data ) ) {\n\t\treturn JSON.parse( data );\n\t}\n\n\treturn data;\n}\n\nfunction dataAttr( elem, key, data ) {\n\tvar name;\n\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tname = \"data-\" + key.replace( rmultiDash, \"-$&\" ).toLowerCase();\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = getData( data );\n\t\t\t} catch ( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tdataUser.set( elem, key, data );\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\treturn data;\n}\n\njQuery.extend( {\n\thasData: function( elem ) {\n\t\treturn dataUser.hasData( elem ) || dataPriv.hasData( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn dataUser.access( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\tdataUser.remove( elem, name );\n\t},\n\n\t// TODO: Now that all calls to _data and _removeData have been replaced\n\t// with direct calls to dataPriv methods, these can be deprecated.\n\t_data: function( elem, name, data ) {\n\t\treturn dataPriv.access( elem, name, data );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\tdataPriv.remove( elem, name );\n\t}\n} );\n\njQuery.fn.extend( {\n\tdata: function( key, value ) {\n\t\tvar i, name, data,\n\t\t\telem = this[ 0 ],\n\t\t\tattrs = elem && elem.attributes;\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = dataUser.get( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !dataPriv.get( elem, \"hasDataAttrs\" ) ) {\n\t\t\t\t\ti = attrs.length;\n\t\t\t\t\twhile ( i-- ) {\n\n\t\t\t\t\t\t// Support: IE 11 only\n\t\t\t\t\t\t// The attrs elements can be null (#14894)\n\t\t\t\t\t\tif ( attrs[ i ] ) {\n\t\t\t\t\t\t\tname = attrs[ i ].name;\n\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\t\tname = camelCase( name.slice( 5 ) );\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdataPriv.set( elem, \"hasDataAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tdataUser.set( this, key );\n\t\t\t} );\n\t\t}\n\n\t\treturn access( this, function( value ) {\n\t\t\tvar data;\n\n\t\t\t// The calling jQuery object (element matches) is not empty\n\t\t\t// (and therefore has an element appears at this[ 0 ]) and the\n\t\t\t// `value` parameter was not undefined. An empty jQuery object\n\t\t\t// will result in `undefined` for elem = this[ 0 ] which will\n\t\t\t// throw an exception if an attempt to read a data cache is made.\n\t\t\tif ( elem && value === undefined ) {\n\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// The key will always be camelCased in Data\n\t\t\t\tdata = dataUser.get( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// Attempt to \"discover\" the data in\n\t\t\t\t// HTML5 custom data-* attrs\n\t\t\t\tdata = dataAttr( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// We tried really hard, but the data doesn't exist.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Set the data...\n\t\t\tthis.each( function() {\n\n\t\t\t\t// We always store the camelCased key\n\t\t\t\tdataUser.set( this, key, value );\n\t\t\t} );\n\t\t}, null, value, arguments.length > 1, null, true );\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each( function() {\n\t\t\tdataUser.remove( this, key );\n\t\t} );\n\t}\n} );\n\n\njQuery.extend( {\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tqueue = dataPriv.get( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || Array.isArray( data ) ) {\n\t\t\t\t\tqueue = dataPriv.access( elem, type, jQuery.makeArray( data ) );\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn queue || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tstartLength = queue.length,\n\t\t\tfn = queue.shift(),\n\t\t\thooks = jQuery._queueHooks( elem, type ),\n\t\t\tnext = function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t\tstartLength--;\n\t\t}\n\n\t\tif ( fn ) {\n\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\t// Clear up the last queue stop function\n\t\t\tdelete hooks.stop;\n\t\t\tfn.call( elem, next, hooks );\n\t\t}\n\n\t\tif ( !startLength && hooks ) {\n\t\t\thooks.empty.fire();\n\t\t}\n\t},\n\n\t// Not public - generate a queueHooks object, or return the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn dataPriv.get( elem, key ) || dataPriv.access( elem, key, {\n\t\t\tempty: jQuery.Callbacks( \"once memory\" ).add( function() {\n\t\t\t\tdataPriv.remove( elem, [ type + \"queue\", key ] );\n\t\t\t} )\n\t\t} );\n\t}\n} );\n\njQuery.fn.extend( {\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[ 0 ], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each( function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\t// Ensure a hooks for this queue\n\t\t\t\tjQuery._queueHooks( this, type );\n\n\t\t\t\tif ( type === \"fx\" && queue[ 0 ] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t} );\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t} );\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, obj ) {\n\t\tvar tmp,\n\t\t\tcount = 1,\n\t\t\tdefer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = this.length,\n\t\t\tresolve = function() {\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobj = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\n\t\twhile ( i-- ) {\n\t\t\ttmp = dataPriv.get( elements[ i ], type + \"queueHooks\" );\n\t\t\tif ( tmp && tmp.empty ) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.empty.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( obj );\n\t}\n} );\nvar pnum = ( /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/ ).source;\n\nvar rcssNum = new RegExp( \"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\" );\n\n\nvar cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\n\nvar documentElement = document.documentElement;\n\n\n\n\tvar isAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem );\n\t\t},\n\t\tcomposed = { composed: true };\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only\n\t// Check attachment across shadow DOM boundaries when possible (gh-3504)\n\t// Support: iOS 10.0-10.2 only\n\t// Early iOS 10 versions support `attachShadow` but not `getRootNode`,\n\t// leading to errors. We need to check for `getRootNode`.\n\tif ( documentElement.getRootNode ) {\n\t\tisAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem ) ||\n\t\t\t\telem.getRootNode( composed ) === elem.ownerDocument;\n\t\t};\n\t}\nvar isHiddenWithinTree = function( elem, el ) {\n\n\t\t// isHiddenWithinTree might be called from jQuery#filter function;\n\t\t// in that case, element will be second argument\n\t\telem = el || elem;\n\n\t\t// Inline style trumps all\n\t\treturn elem.style.display === \"none\" ||\n\t\t\telem.style.display === \"\" &&\n\n\t\t\t// Otherwise, check computed style\n\t\t\t// Support: Firefox <=43 - 45\n\t\t\t// Disconnected elements can have computed display: none, so first confirm that elem is\n\t\t\t// in the document.\n\t\t\tisAttached( elem ) &&\n\n\t\t\tjQuery.css( elem, \"display\" ) === \"none\";\n\t};\n\n\n\nfunction adjustCSS( elem, prop, valueParts, tween ) {\n\tvar adjusted, scale,\n\t\tmaxIterations = 20,\n\t\tcurrentValue = tween ?\n\t\t\tfunction() {\n\t\t\t\treturn tween.cur();\n\t\t\t} :\n\t\t\tfunction() {\n\t\t\t\treturn jQuery.css( elem, prop, \"\" );\n\t\t\t},\n\t\tinitial = currentValue(),\n\t\tunit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" ),\n\n\t\t// Starting value computation is required for potential unit mismatches\n\t\tinitialInUnit = elem.nodeType &&\n\t\t\t( jQuery.cssNumber[ prop ] || unit !== \"px\" && +initial ) &&\n\t\t\trcssNum.exec( jQuery.css( elem, prop ) );\n\n\tif ( initialInUnit && initialInUnit[ 3 ] !== unit ) {\n\n\t\t// Support: Firefox <=54\n\t\t// Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)\n\t\tinitial = initial / 2;\n\n\t\t// Trust units reported by jQuery.css\n\t\tunit = unit || initialInUnit[ 3 ];\n\n\t\t// Iteratively approximate from a nonzero starting point\n\t\tinitialInUnit = +initial || 1;\n\n\t\twhile ( maxIterations-- ) {\n\n\t\t\t// Evaluate and update our best guess (doubling guesses that zero out).\n\t\t\t// Finish if the scale equals or crosses 1 (making the old*new product non-positive).\n\t\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\t\t\tif ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) {\n\t\t\t\tmaxIterations = 0;\n\t\t\t}\n\t\t\tinitialInUnit = initialInUnit / scale;\n\n\t\t}\n\n\t\tinitialInUnit = initialInUnit * 2;\n\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\n\t\t// Make sure we update the tween properties later on\n\t\tvalueParts = valueParts || [];\n\t}\n\n\tif ( valueParts ) {\n\t\tinitialInUnit = +initialInUnit || +initial || 0;\n\n\t\t// Apply relative offset (+=/-=) if specified\n\t\tadjusted = valueParts[ 1 ] ?\n\t\t\tinitialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :\n\t\t\t+valueParts[ 2 ];\n\t\tif ( tween ) {\n\t\t\ttween.unit = unit;\n\t\t\ttween.start = initialInUnit;\n\t\t\ttween.end = adjusted;\n\t\t}\n\t}\n\treturn adjusted;\n}\n\n\nvar defaultDisplayMap = {};\n\nfunction getDefaultDisplay( elem ) {\n\tvar temp,\n\t\tdoc = elem.ownerDocument,\n\t\tnodeName = elem.nodeName,\n\t\tdisplay = defaultDisplayMap[ nodeName ];\n\n\tif ( display ) {\n\t\treturn display;\n\t}\n\n\ttemp = doc.body.appendChild( doc.createElement( nodeName ) );\n\tdisplay = jQuery.css( temp, \"display\" );\n\n\ttemp.parentNode.removeChild( temp );\n\n\tif ( display === \"none\" ) {\n\t\tdisplay = \"block\";\n\t}\n\tdefaultDisplayMap[ nodeName ] = display;\n\n\treturn display;\n}\n\nfunction showHide( elements, show ) {\n\tvar display, elem,\n\t\tvalues = [],\n\t\tindex = 0,\n\t\tlength = elements.length;\n\n\t// Determine new display value for elements that need to change\n\tfor ( ; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tdisplay = elem.style.display;\n\t\tif ( show ) {\n\n\t\t\t// Since we force visibility upon cascade-hidden elements, an immediate (and slow)\n\t\t\t// check is required in this first loop unless we have a nonempty display value (either\n\t\t\t// inline or about-to-be-restored)\n\t\t\tif ( display === \"none\" ) {\n\t\t\t\tvalues[ index ] = dataPriv.get( elem, \"display\" ) || null;\n\t\t\t\tif ( !values[ index ] ) {\n\t\t\t\t\telem.style.display = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( elem.style.display === \"\" && isHiddenWithinTree( elem ) ) {\n\t\t\t\tvalues[ index ] = getDefaultDisplay( elem );\n\t\t\t}\n\t\t} else {\n\t\t\tif ( display !== \"none\" ) {\n\t\t\t\tvalues[ index ] = \"none\";\n\n\t\t\t\t// Remember what we're overwriting\n\t\t\t\tdataPriv.set( elem, \"display\", display );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Set the display of the elements in a second loop to avoid constant reflow\n\tfor ( index = 0; index < length; index++ ) {\n\t\tif ( values[ index ] != null ) {\n\t\t\telements[ index ].style.display = values[ index ];\n\t\t}\n\t}\n\n\treturn elements;\n}\n\njQuery.fn.extend( {\n\tshow: function() {\n\t\treturn showHide( this, true );\n\t},\n\thide: function() {\n\t\treturn showHide( this );\n\t},\n\ttoggle: function( state ) {\n\t\tif ( typeof state === \"boolean\" ) {\n\t\t\treturn state ? this.show() : this.hide();\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tif ( isHiddenWithinTree( this ) ) {\n\t\t\t\tjQuery( this ).show();\n\t\t\t} else {\n\t\t\t\tjQuery( this ).hide();\n\t\t\t}\n\t\t} );\n\t}\n} );\nvar rcheckableType = ( /^(?:checkbox|radio)$/i );\n\nvar rtagName = ( /<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)/i );\n\nvar rscriptType = ( /^$|^module$|\\/(?:java|ecma)script/i );\n\n\n\n( function() {\n\tvar fragment = document.createDocumentFragment(),\n\t\tdiv = fragment.appendChild( document.createElement( \"div\" ) ),\n\t\tinput = document.createElement( \"input\" );\n\n\t// Support: Android 4.0 - 4.3 only\n\t// Check state lost if the name is set (#11217)\n\t// Support: Windows Web Apps (WWA)\n\t// `name` and `type` must use .setAttribute for WWA (#14901)\n\tinput.setAttribute( \"type\", \"radio\" );\n\tinput.setAttribute( \"checked\", \"checked\" );\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\n\t// Support: Android <=4.1 only\n\t// Older WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Support: IE <=11 only\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\n\tdiv.innerHTML = \"\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n\n\t// Support: IE <=9 only\n\t// IE <=9 replaces \";\n\tsupport.option = !!div.lastChild;\n} )();\n\n\n// We have to close these tags to support XHTML (#13200)\nvar wrapMap = {\n\n\t// XHTML parsers do not magically insert elements in the\n\t// same way that tag soup parsers do. So we cannot shorten\n\t// this by omitting or other required elements.\n\tthead: [ 1, \"\", \"
\" ],\n\tcol: [ 2, \"\", \"
\" ],\n\ttr: [ 2, \"\", \"
\" ],\n\ttd: [ 3, \"\", \"
\" ],\n\n\t_default: [ 0, \"\", \"\" ]\n};\n\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n// Support: IE <=9 only\nif ( !support.option ) {\n\twrapMap.optgroup = wrapMap.option = [ 1, \"\" ];\n}\n\n\nfunction getAll( context, tag ) {\n\n\t// Support: IE <=9 - 11 only\n\t// Use typeof to avoid zero-argument method invocation on host objects (#15151)\n\tvar ret;\n\n\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\tret = context.getElementsByTagName( tag || \"*\" );\n\n\t} else if ( typeof context.querySelectorAll !== \"undefined\" ) {\n\t\tret = context.querySelectorAll( tag || \"*\" );\n\n\t} else {\n\t\tret = [];\n\t}\n\n\tif ( tag === undefined || tag && nodeName( context, tag ) ) {\n\t\treturn jQuery.merge( [ context ], ret );\n\t}\n\n\treturn ret;\n}\n\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar i = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\tdataPriv.set(\n\t\t\telems[ i ],\n\t\t\t\"globalEval\",\n\t\t\t!refElements || dataPriv.get( refElements[ i ], \"globalEval\" )\n\t\t);\n\t}\n}\n\n\nvar rhtml = /<|&#?\\w+;/;\n\nfunction buildFragment( elems, context, scripts, selection, ignored ) {\n\tvar elem, tmp, tag, wrap, attached, j,\n\t\tfragment = context.createDocumentFragment(),\n\t\tnodes = [],\n\t\ti = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\telem = elems[ i ];\n\n\t\tif ( elem || elem === 0 ) {\n\n\t\t\t// Add nodes directly\n\t\t\tif ( toType( elem ) === \"object\" ) {\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\n\n\t\t\t// Convert non-html into a text node\n\t\t\t} else if ( !rhtml.test( elem ) ) {\n\t\t\t\tnodes.push( context.createTextNode( elem ) );\n\n\t\t\t// Convert html into DOM nodes\n\t\t\t} else {\n\t\t\t\ttmp = tmp || fragment.appendChild( context.createElement( \"div\" ) );\n\n\t\t\t\t// Deserialize a standard representation\n\t\t\t\ttag = ( rtagName.exec( elem ) || [ \"\", \"\" ] )[ 1 ].toLowerCase();\n\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\t\t\t\ttmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];\n\n\t\t\t\t// Descend through wrappers to the right content\n\t\t\t\tj = wrap[ 0 ];\n\t\t\t\twhile ( j-- ) {\n\t\t\t\t\ttmp = tmp.lastChild;\n\t\t\t\t}\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t// Remember the top-level container\n\t\t\t\ttmp = fragment.firstChild;\n\n\t\t\t\t// Ensure the created nodes are orphaned (#12392)\n\t\t\t\ttmp.textContent = \"\";\n\t\t\t}\n\t\t}\n\t}\n\n\t// Remove wrapper from fragment\n\tfragment.textContent = \"\";\n\n\ti = 0;\n\twhile ( ( elem = nodes[ i++ ] ) ) {\n\n\t\t// Skip elements already in the context collection (trac-4087)\n\t\tif ( selection && jQuery.inArray( elem, selection ) > -1 ) {\n\t\t\tif ( ignored ) {\n\t\t\t\tignored.push( elem );\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tattached = isAttached( elem );\n\n\t\t// Append to fragment\n\t\ttmp = getAll( fragment.appendChild( elem ), \"script\" );\n\n\t\t// Preserve script evaluation history\n\t\tif ( attached ) {\n\t\t\tsetGlobalEval( tmp );\n\t\t}\n\n\t\t// Capture executables\n\t\tif ( scripts ) {\n\t\t\tj = 0;\n\t\t\twhile ( ( elem = tmp[ j++ ] ) ) {\n\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\tscripts.push( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn fragment;\n}\n\n\nvar rtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\n// Support: IE <=9 - 11+\n// focus() and blur() are asynchronous, except when they are no-op.\n// So expect focus to be synchronous when the element is already active,\n// and blur to be synchronous when the element is not already active.\n// (focus and blur are always synchronous in other supported browsers,\n// this just defines when we can count on it).\nfunction expectSync( elem, type ) {\n\treturn ( elem === safeActiveElement() ) === ( type === \"focus\" );\n}\n\n// Support: IE <=9 only\n// Accessing document.activeElement can throw unexpectedly\n// https://bugs.jquery.com/ticket/13393\nfunction safeActiveElement() {\n\ttry {\n\t\treturn document.activeElement;\n\t} catch ( err ) { }\n}\n\nfunction on( elem, types, selector, data, fn, one ) {\n\tvar origFn, type;\n\n\t// Types can be a map of types/handlers\n\tif ( typeof types === \"object\" ) {\n\n\t\t// ( types-Object, selector, data )\n\t\tif ( typeof selector !== \"string\" ) {\n\n\t\t\t// ( types-Object, data )\n\t\t\tdata = data || selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tfor ( type in types ) {\n\t\t\ton( elem, type, selector, data, types[ type ], one );\n\t\t}\n\t\treturn elem;\n\t}\n\n\tif ( data == null && fn == null ) {\n\n\t\t// ( types, fn )\n\t\tfn = selector;\n\t\tdata = selector = undefined;\n\t} else if ( fn == null ) {\n\t\tif ( typeof selector === \"string\" ) {\n\n\t\t\t// ( types, selector, fn )\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t} else {\n\n\t\t\t// ( types, data, fn )\n\t\t\tfn = data;\n\t\t\tdata = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t}\n\tif ( fn === false ) {\n\t\tfn = returnFalse;\n\t} else if ( !fn ) {\n\t\treturn elem;\n\t}\n\n\tif ( one === 1 ) {\n\t\torigFn = fn;\n\t\tfn = function( event ) {\n\n\t\t\t// Can use an empty set, since event contains the info\n\t\t\tjQuery().off( event );\n\t\t\treturn origFn.apply( this, arguments );\n\t\t};\n\n\t\t// Use same guid so caller can remove using origFn\n\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t}\n\treturn elem.each( function() {\n\t\tjQuery.event.add( this, types, fn, data, selector );\n\t} );\n}\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tglobal: {},\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar handleObjIn, eventHandle, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.get( elem );\n\n\t\t// Only attach events to objects that accept data\n\t\tif ( !acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Ensure that invalid selectors throw exceptions at attach time\n\t\t// Evaluate against documentElement in case elem is a non-element node (e.g., document)\n\t\tif ( selector ) {\n\t\t\tjQuery.find.matchesSelector( documentElement, selector );\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tif ( !( events = elemData.events ) ) {\n\t\t\tevents = elemData.events = Object.create( null );\n\t\t}\n\t\tif ( !( eventHandle = elemData.handle ) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\n\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ?\n\t\t\t\t\tjQuery.event.dispatch.apply( elem, arguments ) : undefined;\n\t\t\t};\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend( {\n\t\t\t\ttype: type,\n\t\t\t\torigType: origType,\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join( \".\" )\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\tif ( !( handlers = events[ type ] ) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener if the special events handler returns false\n\t\t\t\tif ( !special.setup ||\n\t\t\t\t\tspecial.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar j, origCount, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.hasData( elem ) && dataPriv.get( elem );\n\n\t\tif ( !elemData || !( events = elemData.events ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\t\t\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[ 2 ] &&\n\t\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector ||\n\t\t\t\t\t\tselector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( origCount && !handlers.length ) {\n\t\t\t\tif ( !special.teardown ||\n\t\t\t\t\tspecial.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove data and the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdataPriv.remove( elem, \"handle events\" );\n\t\t}\n\t},\n\n\tdispatch: function( nativeEvent ) {\n\n\t\tvar i, j, ret, matched, handleObj, handlerQueue,\n\t\t\targs = new Array( arguments.length ),\n\n\t\t\t// Make a writable jQuery.Event from the native event object\n\t\t\tevent = jQuery.event.fix( nativeEvent ),\n\n\t\t\thandlers = (\n\t\t\t\tdataPriv.get( this, \"events\" ) || Object.create( null )\n\t\t\t)[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[ 0 ] = event;\n\n\t\tfor ( i = 1; i < arguments.length; i++ ) {\n\t\t\targs[ i ] = arguments[ i ];\n\t\t}\n\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( ( handleObj = matched.handlers[ j++ ] ) &&\n\t\t\t\t!event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// If the event is namespaced, then each handler is only invoked if it is\n\t\t\t\t// specially universal or its namespaces are a superset of the event's.\n\t\t\t\tif ( !event.rnamespace || handleObj.namespace === false ||\n\t\t\t\t\tevent.rnamespace.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\n\n\t\t\t\t\tret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||\n\t\t\t\t\t\thandleObj.handler ).apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tif ( ( event.result = ret ) === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\thandlers: function( event, handlers ) {\n\t\tvar i, handleObj, sel, matchedHandlers, matchedSelectors,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Find delegate handlers\n\t\tif ( delegateCount &&\n\n\t\t\t// Support: IE <=9\n\t\t\t// Black-hole SVG instance trees (trac-13180)\n\t\t\tcur.nodeType &&\n\n\t\t\t// Support: Firefox <=42\n\t\t\t// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)\n\t\t\t// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click\n\t\t\t// Support: IE 11 only\n\t\t\t// ...but not arrow key \"clicks\" of radio inputs, which can have `button` -1 (gh-2343)\n\t\t\t!( event.type === \"click\" && event.button >= 1 ) ) {\n\n\t\t\tfor ( ; cur !== this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't check non-elements (#13208)\n\t\t\t\t// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)\n\t\t\t\tif ( cur.nodeType === 1 && !( event.type === \"click\" && cur.disabled === true ) ) {\n\t\t\t\t\tmatchedHandlers = [];\n\t\t\t\t\tmatchedSelectors = {};\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (#13203)\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatchedSelectors[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) > -1 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] ) {\n\t\t\t\t\t\t\tmatchedHandlers.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matchedHandlers.length ) {\n\t\t\t\t\t\thandlerQueue.push( { elem: cur, handlers: matchedHandlers } );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tcur = this;\n\t\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\taddProp: function( name, hook ) {\n\t\tObject.defineProperty( jQuery.Event.prototype, name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\n\t\t\tget: isFunction( hook ) ?\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\treturn hook( this.originalEvent );\n\t\t\t\t\t}\n\t\t\t\t} :\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\treturn this.originalEvent[ name ];\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\tset: function( value ) {\n\t\t\t\tObject.defineProperty( this, name, {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tvalue: value\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t},\n\n\tfix: function( originalEvent ) {\n\t\treturn originalEvent[ jQuery.expando ] ?\n\t\t\toriginalEvent :\n\t\t\tnew jQuery.Event( originalEvent );\n\t},\n\n\tspecial: {\n\t\tload: {\n\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tclick: {\n\n\t\t\t// Utilize native event to ensure correct state for checkable inputs\n\t\t\tsetup: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Claim the first handler\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\t// dataPriv.set( el, \"click\", ... )\n\t\t\t\t\tleverageNative( el, \"click\", returnTrue );\n\t\t\t\t}\n\n\t\t\t\t// Return false to allow normal processing in the caller\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\ttrigger: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Force setup before triggering a click\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\tleverageNative( el, \"click\" );\n\t\t\t\t}\n\n\t\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\t\treturn true;\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, suppress native .click() on links\n\t\t\t// Also prevent it if we're currently inside a leveraged native-event stack\n\t\t\t_default: function( event ) {\n\t\t\t\tvar target = event.target;\n\t\t\t\treturn rcheckableType.test( target.type ) &&\n\t\t\t\t\ttarget.click && nodeName( target, \"input\" ) &&\n\t\t\t\t\tdataPriv.get( target, \"click\" ) ||\n\t\t\t\t\tnodeName( target, \"a\" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\n\t\t\t\t// Support: Firefox 20+\n\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Ensure the presence of an event listener that handles manually-triggered\n// synthetic events by interrupting progress until reinvoked in response to\n// *native* events that it fires directly, ensuring that state changes have\n// already occurred before other listeners are invoked.\nfunction leverageNative( el, type, expectSync ) {\n\n\t// Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add\n\tif ( !expectSync ) {\n\t\tif ( dataPriv.get( el, type ) === undefined ) {\n\t\t\tjQuery.event.add( el, type, returnTrue );\n\t\t}\n\t\treturn;\n\t}\n\n\t// Register the controller as a special universal handler for all event namespaces\n\tdataPriv.set( el, type, false );\n\tjQuery.event.add( el, type, {\n\t\tnamespace: false,\n\t\thandler: function( event ) {\n\t\t\tvar notAsync, result,\n\t\t\t\tsaved = dataPriv.get( this, type );\n\n\t\t\tif ( ( event.isTrigger & 1 ) && this[ type ] ) {\n\n\t\t\t\t// Interrupt processing of the outer synthetic .trigger()ed event\n\t\t\t\t// Saved data should be false in such cases, but might be a leftover capture object\n\t\t\t\t// from an async native handler (gh-4350)\n\t\t\t\tif ( !saved.length ) {\n\n\t\t\t\t\t// Store arguments for use when handling the inner native event\n\t\t\t\t\t// There will always be at least one argument (an event object), so this array\n\t\t\t\t\t// will not be confused with a leftover capture object.\n\t\t\t\t\tsaved = slice.call( arguments );\n\t\t\t\t\tdataPriv.set( this, type, saved );\n\n\t\t\t\t\t// Trigger the native event and capture its result\n\t\t\t\t\t// Support: IE <=9 - 11+\n\t\t\t\t\t// focus() and blur() are asynchronous\n\t\t\t\t\tnotAsync = expectSync( this, type );\n\t\t\t\t\tthis[ type ]();\n\t\t\t\t\tresult = dataPriv.get( this, type );\n\t\t\t\t\tif ( saved !== result || notAsync ) {\n\t\t\t\t\t\tdataPriv.set( this, type, false );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult = {};\n\t\t\t\t\t}\n\t\t\t\t\tif ( saved !== result ) {\n\n\t\t\t\t\t\t// Cancel the outer synthetic event\n\t\t\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t\t\tevent.preventDefault();\n\n\t\t\t\t\t\t// Support: Chrome 86+\n\t\t\t\t\t\t// In Chrome, if an element having a focusout handler is blurred by\n\t\t\t\t\t\t// clicking outside of it, it invokes the handler synchronously. If\n\t\t\t\t\t\t// that handler calls `.remove()` on the element, the data is cleared,\n\t\t\t\t\t\t// leaving `result` undefined. We need to guard against this.\n\t\t\t\t\t\treturn result && result.value;\n\t\t\t\t\t}\n\n\t\t\t\t// If this is an inner synthetic event for an event with a bubbling surrogate\n\t\t\t\t// (focus or blur), assume that the surrogate already propagated from triggering the\n\t\t\t\t// native event and prevent that from happening again here.\n\t\t\t\t// This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the\n\t\t\t\t// bubbling surrogate propagates *after* the non-bubbling base), but that seems\n\t\t\t\t// less bad than duplication.\n\t\t\t\t} else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) {\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t}\n\n\t\t\t// If this is a native event triggered above, everything is now in order\n\t\t\t// Fire an inner synthetic event with the original arguments\n\t\t\t} else if ( saved.length ) {\n\n\t\t\t\t// ...and capture the result\n\t\t\t\tdataPriv.set( this, type, {\n\t\t\t\t\tvalue: jQuery.event.trigger(\n\n\t\t\t\t\t\t// Support: IE <=9 - 11+\n\t\t\t\t\t\t// Extend with the prototype to reset the above stopImmediatePropagation()\n\t\t\t\t\t\tjQuery.extend( saved[ 0 ], jQuery.Event.prototype ),\n\t\t\t\t\t\tsaved.slice( 1 ),\n\t\t\t\t\t\tthis\n\t\t\t\t\t)\n\t\t\t\t} );\n\n\t\t\t\t// Abort handling of the native event\n\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t}\n\t\t}\n\t} );\n}\n\njQuery.removeEvent = function( elem, type, handle ) {\n\n\t// This \"if\" is needed for plain objects\n\tif ( elem.removeEventListener ) {\n\t\telem.removeEventListener( type, handle );\n\t}\n};\n\njQuery.Event = function( src, props ) {\n\n\t// Allow instantiation without the 'new' keyword\n\tif ( !( this instanceof jQuery.Event ) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = src.defaultPrevented ||\n\t\t\t\tsrc.defaultPrevented === undefined &&\n\n\t\t\t\t// Support: Android <=2.3 only\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\n\n\t\t// Create target properties\n\t\t// Support: Safari <=6 - 7 only\n\t\t// Target should not be a text node (#504, #13143)\n\t\tthis.target = ( src.target && src.target.nodeType === 3 ) ?\n\t\t\tsrc.target.parentNode :\n\t\t\tsrc.target;\n\n\t\tthis.currentTarget = src.currentTarget;\n\t\tthis.relatedTarget = src.relatedTarget;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || Date.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tconstructor: jQuery.Event,\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\tisSimulated: false,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.preventDefault();\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Includes all common event props including KeyEvent and MouseEvent specific props\njQuery.each( {\n\taltKey: true,\n\tbubbles: true,\n\tcancelable: true,\n\tchangedTouches: true,\n\tctrlKey: true,\n\tdetail: true,\n\teventPhase: true,\n\tmetaKey: true,\n\tpageX: true,\n\tpageY: true,\n\tshiftKey: true,\n\tview: true,\n\t\"char\": true,\n\tcode: true,\n\tcharCode: true,\n\tkey: true,\n\tkeyCode: true,\n\tbutton: true,\n\tbuttons: true,\n\tclientX: true,\n\tclientY: true,\n\toffsetX: true,\n\toffsetY: true,\n\tpointerId: true,\n\tpointerType: true,\n\tscreenX: true,\n\tscreenY: true,\n\ttargetTouches: true,\n\ttoElement: true,\n\ttouches: true,\n\twhich: true\n}, jQuery.event.addProp );\n\njQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( type, delegateType ) {\n\tjQuery.event.special[ type ] = {\n\n\t\t// Utilize native event if possible so blur/focus sequence is correct\n\t\tsetup: function() {\n\n\t\t\t// Claim the first handler\n\t\t\t// dataPriv.set( this, \"focus\", ... )\n\t\t\t// dataPriv.set( this, \"blur\", ... )\n\t\t\tleverageNative( this, type, expectSync );\n\n\t\t\t// Return false to allow normal processing in the caller\n\t\t\treturn false;\n\t\t},\n\t\ttrigger: function() {\n\n\t\t\t// Force setup before trigger\n\t\t\tleverageNative( this, type );\n\n\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\treturn true;\n\t\t},\n\n\t\t// Suppress native focus or blur as it's already being fired\n\t\t// in leverageNative.\n\t\t_default: function() {\n\t\t\treturn true;\n\t\t},\n\n\t\tdelegateType: delegateType\n\t};\n} );\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\n// so that event delegation works in jQuery.\n// Do the same for pointerenter/pointerleave and pointerover/pointerout\n//\n// Support: Safari 7 only\n// Safari sends mouseenter too often; see:\n// https://bugs.chromium.org/p/chromium/issues/detail?id=470258\n// for the description of the bug (it existed in older Chrome versions as well).\njQuery.each( {\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\",\n\tpointerenter: \"pointerover\",\n\tpointerleave: \"pointerout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj;\n\n\t\t\t// For mouseenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n} );\n\njQuery.fn.extend( {\n\n\ton: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn );\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\n\t\t\t// ( event ) dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ?\n\t\t\t\t\thandleObj.origType + \".\" + handleObj.namespace :\n\t\t\t\t\thandleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t} );\n\t}\n} );\n\n\nvar\n\n\t// Support: IE <=10 - 11, Edge 12 - 13 only\n\t// In IE/Edge using regex groups here causes severe slowdowns.\n\t// See https://connect.microsoft.com/IE/feedback/details/1736512/\n\trnoInnerhtml = /\\s*$/g;\n\n// Prefer a tbody over its parent table for containing new rows\nfunction manipulationTarget( elem, content ) {\n\tif ( nodeName( elem, \"table\" ) &&\n\t\tnodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ) {\n\n\t\treturn jQuery( elem ).children( \"tbody\" )[ 0 ] || elem;\n\t}\n\n\treturn elem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = ( elem.getAttribute( \"type\" ) !== null ) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tif ( ( elem.type || \"\" ).slice( 0, 5 ) === \"true/\" ) {\n\t\telem.type = elem.type.slice( 5 );\n\t} else {\n\t\telem.removeAttribute( \"type\" );\n\t}\n\n\treturn elem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\tvar i, l, type, pdataOld, udataOld, udataCur, events;\n\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// 1. Copy private data: events, handlers, etc.\n\tif ( dataPriv.hasData( src ) ) {\n\t\tpdataOld = dataPriv.get( src );\n\t\tevents = pdataOld.events;\n\n\t\tif ( events ) {\n\t\t\tdataPriv.remove( dest, \"handle events\" );\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// 2. Copy user data\n\tif ( dataUser.hasData( src ) ) {\n\t\tudataOld = dataUser.access( src );\n\t\tudataCur = jQuery.extend( {}, udataOld );\n\n\t\tdataUser.set( dest, udataCur );\n\t}\n}\n\n// Fix IE bugs, see support tests\nfunction fixInput( src, dest ) {\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// Fails to persist the checked state of a cloned checkbox or radio button.\n\tif ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\tdest.checked = src.checked;\n\n\t// Fails to return the selected option to the default selected state when cloning options\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\nfunction domManip( collection, args, callback, ignored ) {\n\n\t// Flatten any nested arrays\n\targs = flat( args );\n\n\tvar fragment, first, scripts, hasScripts, node, doc,\n\t\ti = 0,\n\t\tl = collection.length,\n\t\tiNoClone = l - 1,\n\t\tvalue = args[ 0 ],\n\t\tvalueIsFunction = isFunction( value );\n\n\t// We can't cloneNode fragments that contain checked, in WebKit\n\tif ( valueIsFunction ||\n\t\t\t( l > 1 && typeof value === \"string\" &&\n\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\n\t\treturn collection.each( function( index ) {\n\t\t\tvar self = collection.eq( index );\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\targs[ 0 ] = value.call( this, index, self.html() );\n\t\t\t}\n\t\t\tdomManip( self, args, callback, ignored );\n\t\t} );\n\t}\n\n\tif ( l ) {\n\t\tfragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );\n\t\tfirst = fragment.firstChild;\n\n\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\tfragment = first;\n\t\t}\n\n\t\t// Require either new content or an interest in ignored elements to invoke the callback\n\t\tif ( first || ignored ) {\n\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\thasScripts = scripts.length;\n\n\t\t\t// Use the original fragment for the last item\n\t\t\t// instead of the first because it can end up\n\t\t\t// being emptied incorrectly in certain situations (#8070).\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tnode = fragment;\n\n\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\tif ( hasScripts ) {\n\n\t\t\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcallback.call( collection[ i ], node, i );\n\t\t\t}\n\n\t\t\tif ( hasScripts ) {\n\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t// Reenable scripts\n\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t!dataPriv.access( node, \"globalEval\" ) &&\n\t\t\t\t\t\tjQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\tif ( node.src && ( node.type || \"\" ).toLowerCase() !== \"module\" ) {\n\n\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\n\t\t\t\t\t\t\tif ( jQuery._evalUrl && !node.noModule ) {\n\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src, {\n\t\t\t\t\t\t\t\t\tnonce: node.nonce || node.getAttribute( \"nonce\" )\n\t\t\t\t\t\t\t\t}, doc );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tDOMEval( node.textContent.replace( rcleanScript, \"\" ), node, doc );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn collection;\n}\n\nfunction remove( elem, selector, keepData ) {\n\tvar node,\n\t\tnodes = selector ? jQuery.filter( selector, elem ) : elem,\n\t\ti = 0;\n\n\tfor ( ; ( node = nodes[ i ] ) != null; i++ ) {\n\t\tif ( !keepData && node.nodeType === 1 ) {\n\t\t\tjQuery.cleanData( getAll( node ) );\n\t\t}\n\n\t\tif ( node.parentNode ) {\n\t\t\tif ( keepData && isAttached( node ) ) {\n\t\t\t\tsetGlobalEval( getAll( node, \"script\" ) );\n\t\t\t}\n\t\t\tnode.parentNode.removeChild( node );\n\t\t}\n\t}\n\n\treturn elem;\n}\n\njQuery.extend( {\n\thtmlPrefilter: function( html ) {\n\t\treturn html;\n\t},\n\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar i, l, srcElements, destElements,\n\t\t\tclone = elem.cloneNode( true ),\n\t\t\tinPage = isAttached( elem );\n\n\t\t// Fix IE cloning issues\n\t\tif ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&\n\t\t\t\t!jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\tfixInput( srcElements[ i ], destElements[ i ] );\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = srcElements || getAll( elem );\n\t\t\t\tdestElements = destElements || getAll( clone );\n\n\t\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[ i ], destElements[ i ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcloneCopyEvent( elem, clone );\n\t\t\t}\n\t\t}\n\n\t\t// Preserve script evaluation history\n\t\tdestElements = getAll( clone, \"script\" );\n\t\tif ( destElements.length > 0 ) {\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, elem, type,\n\t\t\tspecial = jQuery.event.special,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {\n\t\t\tif ( acceptData( elem ) ) {\n\t\t\t\tif ( ( data = elem[ dataPriv.expando ] ) ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataPriv.expando ] = undefined;\n\t\t\t\t}\n\t\t\t\tif ( elem[ dataUser.expando ] ) {\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataUser.expando ] = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n} );\n\njQuery.fn.extend( {\n\tdetach: function( selector ) {\n\t\treturn remove( this, selector, true );\n\t},\n\n\tremove: function( selector ) {\n\t\treturn remove( this, selector );\n\t},\n\n\ttext: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().each( function() {\n\t\t\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\t\t\tthis.textContent = value;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.appendChild( elem );\n\t\t\t}\n\t\t} );\n\t},\n\n\tprepend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\n\t\t\t}\n\t\t} );\n\t},\n\n\tbefore: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t}\n\t\t} );\n\t},\n\n\tafter: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t}\n\t\t} );\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = this[ i ] ) != null; i++ ) {\n\t\t\tif ( elem.nodeType === 1 ) {\n\n\t\t\t\t// Prevent memory leaks\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\n\t\t\t\t// Remove any remaining nodes\n\t\t\t\telem.textContent = \"\";\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function() {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t} );\n\t},\n\n\thtml: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\tvar elem = this[ 0 ] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined && elem.nodeType === 1 ) {\n\t\t\t\treturn elem.innerHTML;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [ \"\", \"\" ] )[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\tvalue = jQuery.htmlPrefilter( value );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\t\telem = this[ i ] || {};\n\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch ( e ) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function() {\n\t\tvar ignored = [];\n\n\t\t// Make the changes, replacing each non-ignored context element with the new content\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tvar parent = this.parentNode;\n\n\t\t\tif ( jQuery.inArray( this, ignored ) < 0 ) {\n\t\t\t\tjQuery.cleanData( getAll( this ) );\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.replaceChild( elem, this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Force callback invocation\n\t\t}, ignored );\n\t}\n} );\n\njQuery.each( {\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1,\n\t\t\ti = 0;\n\n\t\tfor ( ; i <= last; i++ ) {\n\t\t\telems = i === last ? this : this.clone( true );\n\t\t\tjQuery( insert[ i ] )[ original ]( elems );\n\n\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t// .get() because push.apply(_, arraylike) throws on ancient WebKit\n\t\t\tpush.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n} );\nvar rnumnonpx = new RegExp( \"^(\" + pnum + \")(?!px)[a-z%]+$\", \"i\" );\n\nvar getStyles = function( elem ) {\n\n\t\t// Support: IE <=11 only, Firefox <=30 (#15098, #14150)\n\t\t// IE throws on elements created in popups\n\t\t// FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n\t\tvar view = elem.ownerDocument.defaultView;\n\n\t\tif ( !view || !view.opener ) {\n\t\t\tview = window;\n\t\t}\n\n\t\treturn view.getComputedStyle( elem );\n\t};\n\nvar swap = function( elem, options, callback ) {\n\tvar ret, name,\n\t\told = {};\n\n\t// Remember the old values, and insert the new ones\n\tfor ( name in options ) {\n\t\told[ name ] = elem.style[ name ];\n\t\telem.style[ name ] = options[ name ];\n\t}\n\n\tret = callback.call( elem );\n\n\t// Revert the old values\n\tfor ( name in options ) {\n\t\telem.style[ name ] = old[ name ];\n\t}\n\n\treturn ret;\n};\n\n\nvar rboxStyle = new RegExp( cssExpand.join( \"|\" ), \"i\" );\n\n\n\n( function() {\n\n\t// Executing both pixelPosition & boxSizingReliable tests require only one layout\n\t// so they're executed at the same time to save the second computation.\n\tfunction computeStyleTests() {\n\n\t\t// This is a singleton, we need to execute it only once\n\t\tif ( !div ) {\n\t\t\treturn;\n\t\t}\n\n\t\tcontainer.style.cssText = \"position:absolute;left:-11111px;width:60px;\" +\n\t\t\t\"margin-top:1px;padding:0;border:0\";\n\t\tdiv.style.cssText =\n\t\t\t\"position:relative;display:block;box-sizing:border-box;overflow:scroll;\" +\n\t\t\t\"margin:auto;border:1px;padding:1px;\" +\n\t\t\t\"width:60%;top:1%\";\n\t\tdocumentElement.appendChild( container ).appendChild( div );\n\n\t\tvar divStyle = window.getComputedStyle( div );\n\t\tpixelPositionVal = divStyle.top !== \"1%\";\n\n\t\t// Support: Android 4.0 - 4.3 only, Firefox <=3 - 44\n\t\treliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12;\n\n\t\t// Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3\n\t\t// Some styles come back with percentage values, even though they shouldn't\n\t\tdiv.style.right = \"60%\";\n\t\tpixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36;\n\n\t\t// Support: IE 9 - 11 only\n\t\t// Detect misreporting of content dimensions for box-sizing:border-box elements\n\t\tboxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36;\n\n\t\t// Support: IE 9 only\n\t\t// Detect overflow:scroll screwiness (gh-3699)\n\t\t// Support: Chrome <=64\n\t\t// Don't get tricked when zoom affects offsetWidth (gh-4029)\n\t\tdiv.style.position = \"absolute\";\n\t\tscrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12;\n\n\t\tdocumentElement.removeChild( container );\n\n\t\t// Nullify the div so it wouldn't be stored in the memory and\n\t\t// it will also be a sign that checks already performed\n\t\tdiv = null;\n\t}\n\n\tfunction roundPixelMeasures( measure ) {\n\t\treturn Math.round( parseFloat( measure ) );\n\t}\n\n\tvar pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal,\n\t\treliableTrDimensionsVal, reliableMarginLeftVal,\n\t\tcontainer = document.createElement( \"div\" ),\n\t\tdiv = document.createElement( \"div\" );\n\n\t// Finish early in limited (non-browser) environments\n\tif ( !div.style ) {\n\t\treturn;\n\t}\n\n\t// Support: IE <=9 - 11 only\n\t// Style of cloned element affects source element cloned (#8908)\n\tdiv.style.backgroundClip = \"content-box\";\n\tdiv.cloneNode( true ).style.backgroundClip = \"\";\n\tsupport.clearCloneStyle = div.style.backgroundClip === \"content-box\";\n\n\tjQuery.extend( support, {\n\t\tboxSizingReliable: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn boxSizingReliableVal;\n\t\t},\n\t\tpixelBoxStyles: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelBoxStylesVal;\n\t\t},\n\t\tpixelPosition: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelPositionVal;\n\t\t},\n\t\treliableMarginLeft: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn reliableMarginLeftVal;\n\t\t},\n\t\tscrollboxSize: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn scrollboxSizeVal;\n\t\t},\n\n\t\t// Support: IE 9 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Behavior in IE 9 is more subtle than in newer versions & it passes\n\t\t// some versions of this test; make sure not to make it pass there!\n\t\t//\n\t\t// Support: Firefox 70+\n\t\t// Only Firefox includes border widths\n\t\t// in computed dimensions. (gh-4529)\n\t\treliableTrDimensions: function() {\n\t\t\tvar table, tr, trChild, trStyle;\n\t\t\tif ( reliableTrDimensionsVal == null ) {\n\t\t\t\ttable = document.createElement( \"table\" );\n\t\t\t\ttr = document.createElement( \"tr\" );\n\t\t\t\ttrChild = document.createElement( \"div\" );\n\n\t\t\t\ttable.style.cssText = \"position:absolute;left:-11111px;border-collapse:separate\";\n\t\t\t\ttr.style.cssText = \"border:1px solid\";\n\n\t\t\t\t// Support: Chrome 86+\n\t\t\t\t// Height set through cssText does not get applied.\n\t\t\t\t// Computed height then comes back as 0.\n\t\t\t\ttr.style.height = \"1px\";\n\t\t\t\ttrChild.style.height = \"9px\";\n\n\t\t\t\t// Support: Android 8 Chrome 86+\n\t\t\t\t// In our bodyBackground.html iframe,\n\t\t\t\t// display for all div elements is set to \"inline\",\n\t\t\t\t// which causes a problem only in Android 8 Chrome 86.\n\t\t\t\t// Ensuring the div is display: block\n\t\t\t\t// gets around this issue.\n\t\t\t\ttrChild.style.display = \"block\";\n\n\t\t\t\tdocumentElement\n\t\t\t\t\t.appendChild( table )\n\t\t\t\t\t.appendChild( tr )\n\t\t\t\t\t.appendChild( trChild );\n\n\t\t\t\ttrStyle = window.getComputedStyle( tr );\n\t\t\t\treliableTrDimensionsVal = ( parseInt( trStyle.height, 10 ) +\n\t\t\t\t\tparseInt( trStyle.borderTopWidth, 10 ) +\n\t\t\t\t\tparseInt( trStyle.borderBottomWidth, 10 ) ) === tr.offsetHeight;\n\n\t\t\t\tdocumentElement.removeChild( table );\n\t\t\t}\n\t\t\treturn reliableTrDimensionsVal;\n\t\t}\n\t} );\n} )();\n\n\nfunction curCSS( elem, name, computed ) {\n\tvar width, minWidth, maxWidth, ret,\n\n\t\t// Support: Firefox 51+\n\t\t// Retrieving style before computed somehow\n\t\t// fixes an issue with getting wrong values\n\t\t// on detached elements\n\t\tstyle = elem.style;\n\n\tcomputed = computed || getStyles( elem );\n\n\t// getPropertyValue is needed for:\n\t// .css('filter') (IE 9 only, #12537)\n\t// .css('--customProperty) (#3144)\n\tif ( computed ) {\n\t\tret = computed.getPropertyValue( name ) || computed[ name ];\n\n\t\tif ( ret === \"\" && !isAttached( elem ) ) {\n\t\t\tret = jQuery.style( elem, name );\n\t\t}\n\n\t\t// A tribute to the \"awesome hack by Dean Edwards\"\n\t\t// Android Browser returns percentage for some values,\n\t\t// but width seems to be reliably pixels.\n\t\t// This is against the CSSOM draft spec:\n\t\t// https://drafts.csswg.org/cssom/#resolved-values\n\t\tif ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) {\n\n\t\t\t// Remember the original values\n\t\t\twidth = style.width;\n\t\t\tminWidth = style.minWidth;\n\t\t\tmaxWidth = style.maxWidth;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tstyle.minWidth = style.maxWidth = style.width = ret;\n\t\t\tret = computed.width;\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.width = width;\n\t\t\tstyle.minWidth = minWidth;\n\t\t\tstyle.maxWidth = maxWidth;\n\t\t}\n\t}\n\n\treturn ret !== undefined ?\n\n\t\t// Support: IE <=9 - 11 only\n\t\t// IE returns zIndex value as an integer.\n\t\tret + \"\" :\n\t\tret;\n}\n\n\nfunction addGetHookIf( conditionFn, hookFn ) {\n\n\t// Define the hook, we'll check on the first run if it's really needed.\n\treturn {\n\t\tget: function() {\n\t\t\tif ( conditionFn() ) {\n\n\t\t\t\t// Hook not needed (or it's not possible to use it due\n\t\t\t\t// to missing dependency), remove it.\n\t\t\t\tdelete this.get;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Hook needed; redefine it so that the support test is not executed again.\n\t\t\treturn ( this.get = hookFn ).apply( this, arguments );\n\t\t}\n\t};\n}\n\n\nvar cssPrefixes = [ \"Webkit\", \"Moz\", \"ms\" ],\n\temptyStyle = document.createElement( \"div\" ).style,\n\tvendorProps = {};\n\n// Return a vendor-prefixed property or undefined\nfunction vendorPropName( name ) {\n\n\t// Check for vendor prefixed names\n\tvar capName = name[ 0 ].toUpperCase() + name.slice( 1 ),\n\t\ti = cssPrefixes.length;\n\n\twhile ( i-- ) {\n\t\tname = cssPrefixes[ i ] + capName;\n\t\tif ( name in emptyStyle ) {\n\t\t\treturn name;\n\t\t}\n\t}\n}\n\n// Return a potentially-mapped jQuery.cssProps or vendor prefixed property\nfunction finalPropName( name ) {\n\tvar final = jQuery.cssProps[ name ] || vendorProps[ name ];\n\n\tif ( final ) {\n\t\treturn final;\n\t}\n\tif ( name in emptyStyle ) {\n\t\treturn name;\n\t}\n\treturn vendorProps[ name ] = vendorPropName( name ) || name;\n}\n\n\nvar\n\n\t// Swappable if display is none or starts with table\n\t// except \"table\", \"table-cell\", or \"table-caption\"\n\t// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n\trdisplayswap = /^(none|table(?!-c[ea]).+)/,\n\trcustomProp = /^--/,\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssNormalTransform = {\n\t\tletterSpacing: \"0\",\n\t\tfontWeight: \"400\"\n\t};\n\nfunction setPositiveNumber( _elem, value, subtract ) {\n\n\t// Any relative (+/-) values have already been\n\t// normalized at this point\n\tvar matches = rcssNum.exec( value );\n\treturn matches ?\n\n\t\t// Guard against undefined \"subtract\", e.g., when used as in cssHooks\n\t\tMath.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || \"px\" ) :\n\t\tvalue;\n}\n\nfunction boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) {\n\tvar i = dimension === \"width\" ? 1 : 0,\n\t\textra = 0,\n\t\tdelta = 0;\n\n\t// Adjustment may not be necessary\n\tif ( box === ( isBorderBox ? \"border\" : \"content\" ) ) {\n\t\treturn 0;\n\t}\n\n\tfor ( ; i < 4; i += 2 ) {\n\n\t\t// Both box models exclude margin\n\t\tif ( box === \"margin\" ) {\n\t\t\tdelta += jQuery.css( elem, box + cssExpand[ i ], true, styles );\n\t\t}\n\n\t\t// If we get here with a content-box, we're seeking \"padding\" or \"border\" or \"margin\"\n\t\tif ( !isBorderBox ) {\n\n\t\t\t// Add padding\n\t\t\tdelta += jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\n\t\t\t// For \"border\" or \"margin\", add border\n\t\t\tif ( box !== \"padding\" ) {\n\t\t\t\tdelta += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\n\t\t\t// But still keep track of it otherwise\n\t\t\t} else {\n\t\t\t\textra += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\n\t\t// If we get here with a border-box (content + padding + border), we're seeking \"content\" or\n\t\t// \"padding\" or \"margin\"\n\t\t} else {\n\n\t\t\t// For \"content\", subtract padding\n\t\t\tif ( box === \"content\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\t\t\t}\n\n\t\t\t// For \"content\" or \"padding\", subtract border\n\t\t\tif ( box !== \"margin\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Account for positive content-box scroll gutter when requested by providing computedVal\n\tif ( !isBorderBox && computedVal >= 0 ) {\n\n\t\t// offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border\n\t\t// Assuming integer scroll gutter, subtract the rest and round down\n\t\tdelta += Math.max( 0, Math.ceil(\n\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\tcomputedVal -\n\t\t\tdelta -\n\t\t\textra -\n\t\t\t0.5\n\n\t\t// If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter\n\t\t// Use an explicit zero to avoid NaN (gh-3964)\n\t\t) ) || 0;\n\t}\n\n\treturn delta;\n}\n\nfunction getWidthOrHeight( elem, dimension, extra ) {\n\n\t// Start with computed style\n\tvar styles = getStyles( elem ),\n\n\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322).\n\t\t// Fake content-box until we know it's needed to know the true value.\n\t\tboxSizingNeeded = !support.boxSizingReliable() || extra,\n\t\tisBorderBox = boxSizingNeeded &&\n\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\tvalueIsBorderBox = isBorderBox,\n\n\t\tval = curCSS( elem, dimension, styles ),\n\t\toffsetProp = \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 );\n\n\t// Support: Firefox <=54\n\t// Return a confounding non-pixel value or feign ignorance, as appropriate.\n\tif ( rnumnonpx.test( val ) ) {\n\t\tif ( !extra ) {\n\t\t\treturn val;\n\t\t}\n\t\tval = \"auto\";\n\t}\n\n\n\t// Support: IE 9 - 11 only\n\t// Use offsetWidth/offsetHeight for when box sizing is unreliable.\n\t// In those cases, the computed value can be trusted to be border-box.\n\tif ( ( !support.boxSizingReliable() && isBorderBox ||\n\n\t\t// Support: IE 10 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Interestingly, in some cases IE 9 doesn't suffer from this issue.\n\t\t!support.reliableTrDimensions() && nodeName( elem, \"tr\" ) ||\n\n\t\t// Fall back to offsetWidth/offsetHeight when value is \"auto\"\n\t\t// This happens for inline elements with no explicit setting (gh-3571)\n\t\tval === \"auto\" ||\n\n\t\t// Support: Android <=4.1 - 4.3 only\n\t\t// Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)\n\t\t!parseFloat( val ) && jQuery.css( elem, \"display\", false, styles ) === \"inline\" ) &&\n\n\t\t// Make sure the element is visible & connected\n\t\telem.getClientRects().length ) {\n\n\t\tisBorderBox = jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\";\n\n\t\t// Where available, offsetWidth/offsetHeight approximate border box dimensions.\n\t\t// Where not available (e.g., SVG), assume unreliable box-sizing and interpret the\n\t\t// retrieved value as a content box dimension.\n\t\tvalueIsBorderBox = offsetProp in elem;\n\t\tif ( valueIsBorderBox ) {\n\t\t\tval = elem[ offsetProp ];\n\t\t}\n\t}\n\n\t// Normalize \"\" and auto\n\tval = parseFloat( val ) || 0;\n\n\t// Adjust for the element's box model\n\treturn ( val +\n\t\tboxModelAdjustment(\n\t\t\telem,\n\t\t\tdimension,\n\t\t\textra || ( isBorderBox ? \"border\" : \"content\" ),\n\t\t\tvalueIsBorderBox,\n\t\t\tstyles,\n\n\t\t\t// Provide the current computed size to request scroll gutter calculation (gh-3589)\n\t\t\tval\n\t\t)\n\t) + \"px\";\n}\n\njQuery.extend( {\n\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Don't automatically add \"px\" to these possibly-unitless properties\n\tcssNumber: {\n\t\t\"animationIterationCount\": true,\n\t\t\"columnCount\": true,\n\t\t\"fillOpacity\": true,\n\t\t\"flexGrow\": true,\n\t\t\"flexShrink\": true,\n\t\t\"fontWeight\": true,\n\t\t\"gridArea\": true,\n\t\t\"gridColumn\": true,\n\t\t\"gridColumnEnd\": true,\n\t\t\"gridColumnStart\": true,\n\t\t\"gridRow\": true,\n\t\t\"gridRowEnd\": true,\n\t\t\"gridRowStart\": true,\n\t\t\"lineHeight\": true,\n\t\t\"opacity\": true,\n\t\t\"order\": true,\n\t\t\"orphans\": true,\n\t\t\"widows\": true,\n\t\t\"zIndex\": true,\n\t\t\"zoom\": true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, type, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name ),\n\t\t\tstyle = elem.style;\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to query the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Gets hook for the prefixed version, then unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\ttype = typeof value;\n\n\t\t\t// Convert \"+=\" or \"-=\" to relative numbers (#7345)\n\t\t\tif ( type === \"string\" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {\n\t\t\t\tvalue = adjustCSS( elem, name, ret );\n\n\t\t\t\t// Fixes bug #9237\n\t\t\t\ttype = \"number\";\n\t\t\t}\n\n\t\t\t// Make sure that null and NaN values aren't set (#7116)\n\t\t\tif ( value == null || value !== value ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add the unit (except for certain CSS properties)\n\t\t\t// The isCustomProp check can be removed in jQuery 4.0 when we only auto-append\n\t\t\t// \"px\" to a few hardcoded values.\n\t\t\tif ( type === \"number\" && !isCustomProp ) {\n\t\t\t\tvalue += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? \"\" : \"px\" );\n\t\t\t}\n\n\t\t\t// background-* props affect original clone's values\n\t\t\tif ( !support.clearCloneStyle && value === \"\" && name.indexOf( \"background\" ) === 0 ) {\n\t\t\t\tstyle[ name ] = \"inherit\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !( \"set\" in hooks ) ||\n\t\t\t\t( value = hooks.set( elem, value, extra ) ) !== undefined ) {\n\n\t\t\t\tif ( isCustomProp ) {\n\t\t\t\t\tstyle.setProperty( name, value );\n\t\t\t\t} else {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks &&\n\t\t\t\t( ret = hooks.get( elem, false, extra ) ) !== undefined ) {\n\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra, styles ) {\n\t\tvar val, num, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name );\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to modify the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Try prefixed name followed by the unprefixed name\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks ) {\n\t\t\tval = hooks.get( elem, true, extra );\n\t\t}\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\tif ( val === undefined ) {\n\t\t\tval = curCSS( elem, name, styles );\n\t\t}\n\n\t\t// Convert \"normal\" to computed value\n\t\tif ( val === \"normal\" && name in cssNormalTransform ) {\n\t\t\tval = cssNormalTransform[ name ];\n\t\t}\n\n\t\t// Make numeric if forced or a qualifier was provided and val looks numeric\n\t\tif ( extra === \"\" || extra ) {\n\t\t\tnum = parseFloat( val );\n\t\t\treturn extra === true || isFinite( num ) ? num || 0 : val;\n\t\t}\n\n\t\treturn val;\n\t}\n} );\n\njQuery.each( [ \"height\", \"width\" ], function( _i, dimension ) {\n\tjQuery.cssHooks[ dimension ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tif ( computed ) {\n\n\t\t\t\t// Certain elements can have dimension info if we invisibly show them\n\t\t\t\t// but it must have a current display style that would benefit\n\t\t\t\treturn rdisplayswap.test( jQuery.css( elem, \"display\" ) ) &&\n\n\t\t\t\t\t// Support: Safari 8+\n\t\t\t\t\t// Table columns in Safari have non-zero offsetWidth & zero\n\t\t\t\t\t// getBoundingClientRect().width unless display is changed.\n\t\t\t\t\t// Support: IE <=11 only\n\t\t\t\t\t// Running getBoundingClientRect on a disconnected node\n\t\t\t\t\t// in IE throws an error.\n\t\t\t\t\t( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?\n\t\t\t\t\tswap( elem, cssShow, function() {\n\t\t\t\t\t\treturn getWidthOrHeight( elem, dimension, extra );\n\t\t\t\t\t} ) :\n\t\t\t\t\tgetWidthOrHeight( elem, dimension, extra );\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value, extra ) {\n\t\t\tvar matches,\n\t\t\t\tstyles = getStyles( elem ),\n\n\t\t\t\t// Only read styles.position if the test has a chance to fail\n\t\t\t\t// to avoid forcing a reflow.\n\t\t\t\tscrollboxSizeBuggy = !support.scrollboxSize() &&\n\t\t\t\t\tstyles.position === \"absolute\",\n\n\t\t\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991)\n\t\t\t\tboxSizingNeeded = scrollboxSizeBuggy || extra,\n\t\t\t\tisBorderBox = boxSizingNeeded &&\n\t\t\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\t\t\tsubtract = extra ?\n\t\t\t\t\tboxModelAdjustment(\n\t\t\t\t\t\telem,\n\t\t\t\t\t\tdimension,\n\t\t\t\t\t\textra,\n\t\t\t\t\t\tisBorderBox,\n\t\t\t\t\t\tstyles\n\t\t\t\t\t) :\n\t\t\t\t\t0;\n\n\t\t\t// Account for unreliable border-box dimensions by comparing offset* to computed and\n\t\t\t// faking a content-box to get border and padding (gh-3699)\n\t\t\tif ( isBorderBox && scrollboxSizeBuggy ) {\n\t\t\t\tsubtract -= Math.ceil(\n\t\t\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\t\t\tparseFloat( styles[ dimension ] ) -\n\t\t\t\t\tboxModelAdjustment( elem, dimension, \"border\", false, styles ) -\n\t\t\t\t\t0.5\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Convert to pixels if value adjustment is needed\n\t\t\tif ( subtract && ( matches = rcssNum.exec( value ) ) &&\n\t\t\t\t( matches[ 3 ] || \"px\" ) !== \"px\" ) {\n\n\t\t\t\telem.style[ dimension ] = value;\n\t\t\t\tvalue = jQuery.css( elem, dimension );\n\t\t\t}\n\n\t\t\treturn setPositiveNumber( elem, value, subtract );\n\t\t}\n\t};\n} );\n\njQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,\n\tfunction( elem, computed ) {\n\t\tif ( computed ) {\n\t\t\treturn ( parseFloat( curCSS( elem, \"marginLeft\" ) ) ||\n\t\t\t\telem.getBoundingClientRect().left -\n\t\t\t\t\tswap( elem, { marginLeft: 0 }, function() {\n\t\t\t\t\t\treturn elem.getBoundingClientRect().left;\n\t\t\t\t\t} )\n\t\t\t) + \"px\";\n\t\t}\n\t}\n);\n\n// These hooks are used by animate to expand properties\njQuery.each( {\n\tmargin: \"\",\n\tpadding: \"\",\n\tborder: \"Width\"\n}, function( prefix, suffix ) {\n\tjQuery.cssHooks[ prefix + suffix ] = {\n\t\texpand: function( value ) {\n\t\t\tvar i = 0,\n\t\t\t\texpanded = {},\n\n\t\t\t\t// Assumes a single number if not a string\n\t\t\t\tparts = typeof value === \"string\" ? value.split( \" \" ) : [ value ];\n\n\t\t\tfor ( ; i < 4; i++ ) {\n\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n\t\t\t}\n\n\t\t\treturn expanded;\n\t\t}\n\t};\n\n\tif ( prefix !== \"margin\" ) {\n\t\tjQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;\n\t}\n} );\n\njQuery.fn.extend( {\n\tcss: function( name, value ) {\n\t\treturn access( this, function( elem, name, value ) {\n\t\t\tvar styles, len,\n\t\t\t\tmap = {},\n\t\t\t\ti = 0;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\t\t\t\tstyles = getStyles( elem );\n\t\t\t\tlen = name.length;\n\n\t\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t\tmap[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );\n\t\t\t\t}\n\n\t\t\t\treturn map;\n\t\t\t}\n\n\t\t\treturn value !== undefined ?\n\t\t\t\tjQuery.style( elem, name, value ) :\n\t\t\t\tjQuery.css( elem, name );\n\t\t}, name, value, arguments.length > 1 );\n\t}\n} );\n\n\nfunction Tween( elem, options, prop, end, easing ) {\n\treturn new Tween.prototype.init( elem, options, prop, end, easing );\n}\njQuery.Tween = Tween;\n\nTween.prototype = {\n\tconstructor: Tween,\n\tinit: function( elem, options, prop, end, easing, unit ) {\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\t\tthis.easing = easing || jQuery.easing._default;\n\t\tthis.options = options;\n\t\tthis.start = this.now = this.cur();\n\t\tthis.end = end;\n\t\tthis.unit = unit || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" );\n\t},\n\tcur: function() {\n\t\tvar hooks = Tween.propHooks[ this.prop ];\n\n\t\treturn hooks && hooks.get ?\n\t\t\thooks.get( this ) :\n\t\t\tTween.propHooks._default.get( this );\n\t},\n\trun: function( percent ) {\n\t\tvar eased,\n\t\t\thooks = Tween.propHooks[ this.prop ];\n\n\t\tif ( this.options.duration ) {\n\t\t\tthis.pos = eased = jQuery.easing[ this.easing ](\n\t\t\t\tpercent, this.options.duration * percent, 0, 1, this.options.duration\n\t\t\t);\n\t\t} else {\n\t\t\tthis.pos = eased = percent;\n\t\t}\n\t\tthis.now = ( this.end - this.start ) * eased + this.start;\n\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\tif ( hooks && hooks.set ) {\n\t\t\thooks.set( this );\n\t\t} else {\n\t\t\tTween.propHooks._default.set( this );\n\t\t}\n\t\treturn this;\n\t}\n};\n\nTween.prototype.init.prototype = Tween.prototype;\n\nTween.propHooks = {\n\t_default: {\n\t\tget: function( tween ) {\n\t\t\tvar result;\n\n\t\t\t// Use a property on the element directly when it is not a DOM element,\n\t\t\t// or when there is no matching style property that exists.\n\t\t\tif ( tween.elem.nodeType !== 1 ||\n\t\t\t\ttween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {\n\t\t\t\treturn tween.elem[ tween.prop ];\n\t\t\t}\n\n\t\t\t// Passing an empty string as a 3rd parameter to .css will automatically\n\t\t\t// attempt a parseFloat and fallback to a string if the parse fails.\n\t\t\t// Simple values such as \"10px\" are parsed to Float;\n\t\t\t// complex values such as \"rotate(1rad)\" are returned as-is.\n\t\t\tresult = jQuery.css( tween.elem, tween.prop, \"\" );\n\n\t\t\t// Empty strings, null, undefined and \"auto\" are converted to 0.\n\t\t\treturn !result || result === \"auto\" ? 0 : result;\n\t\t},\n\t\tset: function( tween ) {\n\n\t\t\t// Use step hook for back compat.\n\t\t\t// Use cssHook if its there.\n\t\t\t// Use .style if available and use plain properties where available.\n\t\t\tif ( jQuery.fx.step[ tween.prop ] ) {\n\t\t\t\tjQuery.fx.step[ tween.prop ]( tween );\n\t\t\t} else if ( tween.elem.nodeType === 1 && (\n\t\t\t\tjQuery.cssHooks[ tween.prop ] ||\n\t\t\t\t\ttween.elem.style[ finalPropName( tween.prop ) ] != null ) ) {\n\t\t\t\tjQuery.style( tween.elem, tween.prop, tween.now + tween.unit );\n\t\t\t} else {\n\t\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Support: IE <=9 only\n// Panic based approach to setting things on disconnected nodes\nTween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n\tset: function( tween ) {\n\t\tif ( tween.elem.nodeType && tween.elem.parentNode ) {\n\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t}\n\t}\n};\n\njQuery.easing = {\n\tlinear: function( p ) {\n\t\treturn p;\n\t},\n\tswing: function( p ) {\n\t\treturn 0.5 - Math.cos( p * Math.PI ) / 2;\n\t},\n\t_default: \"swing\"\n};\n\njQuery.fx = Tween.prototype.init;\n\n// Back compat <1.8 extension point\njQuery.fx.step = {};\n\n\n\n\nvar\n\tfxNow, inProgress,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trrun = /queueHooks$/;\n\nfunction schedule() {\n\tif ( inProgress ) {\n\t\tif ( document.hidden === false && window.requestAnimationFrame ) {\n\t\t\twindow.requestAnimationFrame( schedule );\n\t\t} else {\n\t\t\twindow.setTimeout( schedule, jQuery.fx.interval );\n\t\t}\n\n\t\tjQuery.fx.tick();\n\t}\n}\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\twindow.setTimeout( function() {\n\t\tfxNow = undefined;\n\t} );\n\treturn ( fxNow = Date.now() );\n}\n\n// Generate parameters to create a standard animation\nfunction genFx( type, includeWidth ) {\n\tvar which,\n\t\ti = 0,\n\t\tattrs = { height: type };\n\n\t// If we include width, step value is 1 to do all cssExpand values,\n\t// otherwise step value is 2 to skip over Left and Right\n\tincludeWidth = includeWidth ? 1 : 0;\n\tfor ( ; i < 4; i += 2 - includeWidth ) {\n\t\twhich = cssExpand[ i ];\n\t\tattrs[ \"margin\" + which ] = attrs[ \"padding\" + which ] = type;\n\t}\n\n\tif ( includeWidth ) {\n\t\tattrs.opacity = attrs.width = type;\n\t}\n\n\treturn attrs;\n}\n\nfunction createTween( value, prop, animation ) {\n\tvar tween,\n\t\tcollection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ \"*\" ] ),\n\t\tindex = 0,\n\t\tlength = collection.length;\n\tfor ( ; index < length; index++ ) {\n\t\tif ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {\n\n\t\t\t// We're done with this property\n\t\t\treturn tween;\n\t\t}\n\t}\n}\n\nfunction defaultPrefilter( elem, props, opts ) {\n\tvar prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,\n\t\tisBox = \"width\" in props || \"height\" in props,\n\t\tanim = this,\n\t\torig = {},\n\t\tstyle = elem.style,\n\t\thidden = elem.nodeType && isHiddenWithinTree( elem ),\n\t\tdataShow = dataPriv.get( elem, \"fxshow\" );\n\n\t// Queue-skipping animations hijack the fx hooks\n\tif ( !opts.queue ) {\n\t\thooks = jQuery._queueHooks( elem, \"fx\" );\n\t\tif ( hooks.unqueued == null ) {\n\t\t\thooks.unqueued = 0;\n\t\t\toldfire = hooks.empty.fire;\n\t\t\thooks.empty.fire = function() {\n\t\t\t\tif ( !hooks.unqueued ) {\n\t\t\t\t\toldfire();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\thooks.unqueued++;\n\n\t\tanim.always( function() {\n\n\t\t\t// Ensure the complete handler is called before this completes\n\t\t\tanim.always( function() {\n\t\t\t\thooks.unqueued--;\n\t\t\t\tif ( !jQuery.queue( elem, \"fx\" ).length ) {\n\t\t\t\t\thooks.empty.fire();\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t}\n\n\t// Detect show/hide animations\n\tfor ( prop in props ) {\n\t\tvalue = props[ prop ];\n\t\tif ( rfxtypes.test( value ) ) {\n\t\t\tdelete props[ prop ];\n\t\t\ttoggle = toggle || value === \"toggle\";\n\t\t\tif ( value === ( hidden ? \"hide\" : \"show\" ) ) {\n\n\t\t\t\t// Pretend to be hidden if this is a \"show\" and\n\t\t\t\t// there is still data from a stopped show/hide\n\t\t\t\tif ( value === \"show\" && dataShow && dataShow[ prop ] !== undefined ) {\n\t\t\t\t\thidden = true;\n\n\t\t\t\t// Ignore all other no-op show/hide data\n\t\t\t\t} else {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\torig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );\n\t\t}\n\t}\n\n\t// Bail out if this is a no-op like .hide().hide()\n\tpropTween = !jQuery.isEmptyObject( props );\n\tif ( !propTween && jQuery.isEmptyObject( orig ) ) {\n\t\treturn;\n\t}\n\n\t// Restrict \"overflow\" and \"display\" styles during box animations\n\tif ( isBox && elem.nodeType === 1 ) {\n\n\t\t// Support: IE <=9 - 11, Edge 12 - 15\n\t\t// Record all 3 overflow attributes because IE does not infer the shorthand\n\t\t// from identically-valued overflowX and overflowY and Edge just mirrors\n\t\t// the overflowX value there.\n\t\topts.overflow = [ style.overflow, style.overflowX, style.overflowY ];\n\n\t\t// Identify a display type, preferring old show/hide data over the CSS cascade\n\t\trestoreDisplay = dataShow && dataShow.display;\n\t\tif ( restoreDisplay == null ) {\n\t\t\trestoreDisplay = dataPriv.get( elem, \"display\" );\n\t\t}\n\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\tif ( display === \"none\" ) {\n\t\t\tif ( restoreDisplay ) {\n\t\t\t\tdisplay = restoreDisplay;\n\t\t\t} else {\n\n\t\t\t\t// Get nonempty value(s) by temporarily forcing visibility\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t\trestoreDisplay = elem.style.display || restoreDisplay;\n\t\t\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\t\t\tshowHide( [ elem ] );\n\t\t\t}\n\t\t}\n\n\t\t// Animate inline elements as inline-block\n\t\tif ( display === \"inline\" || display === \"inline-block\" && restoreDisplay != null ) {\n\t\t\tif ( jQuery.css( elem, \"float\" ) === \"none\" ) {\n\n\t\t\t\t// Restore the original display value at the end of pure show/hide animations\n\t\t\t\tif ( !propTween ) {\n\t\t\t\t\tanim.done( function() {\n\t\t\t\t\t\tstyle.display = restoreDisplay;\n\t\t\t\t\t} );\n\t\t\t\t\tif ( restoreDisplay == null ) {\n\t\t\t\t\t\tdisplay = style.display;\n\t\t\t\t\t\trestoreDisplay = display === \"none\" ? \"\" : display;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tstyle.display = \"inline-block\";\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( opts.overflow ) {\n\t\tstyle.overflow = \"hidden\";\n\t\tanim.always( function() {\n\t\t\tstyle.overflow = opts.overflow[ 0 ];\n\t\t\tstyle.overflowX = opts.overflow[ 1 ];\n\t\t\tstyle.overflowY = opts.overflow[ 2 ];\n\t\t} );\n\t}\n\n\t// Implement show/hide animations\n\tpropTween = false;\n\tfor ( prop in orig ) {\n\n\t\t// General show/hide setup for this element animation\n\t\tif ( !propTween ) {\n\t\t\tif ( dataShow ) {\n\t\t\t\tif ( \"hidden\" in dataShow ) {\n\t\t\t\t\thidden = dataShow.hidden;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdataShow = dataPriv.access( elem, \"fxshow\", { display: restoreDisplay } );\n\t\t\t}\n\n\t\t\t// Store hidden/visible for toggle so `.stop().toggle()` \"reverses\"\n\t\t\tif ( toggle ) {\n\t\t\t\tdataShow.hidden = !hidden;\n\t\t\t}\n\n\t\t\t// Show elements before animating them\n\t\t\tif ( hidden ) {\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t}\n\n\t\t\t/* eslint-disable no-loop-func */\n\n\t\t\tanim.done( function() {\n\n\t\t\t\t/* eslint-enable no-loop-func */\n\n\t\t\t\t// The final step of a \"hide\" animation is actually hiding the element\n\t\t\t\tif ( !hidden ) {\n\t\t\t\t\tshowHide( [ elem ] );\n\t\t\t\t}\n\t\t\t\tdataPriv.remove( elem, \"fxshow\" );\n\t\t\t\tfor ( prop in orig ) {\n\t\t\t\t\tjQuery.style( elem, prop, orig[ prop ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\t// Per-property setup\n\t\tpropTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );\n\t\tif ( !( prop in dataShow ) ) {\n\t\t\tdataShow[ prop ] = propTween.start;\n\t\t\tif ( hidden ) {\n\t\t\t\tpropTween.end = propTween.start;\n\t\t\t\tpropTween.start = 0;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction propFilter( props, specialEasing ) {\n\tvar index, name, easing, value, hooks;\n\n\t// camelCase, specialEasing and expand cssHook pass\n\tfor ( index in props ) {\n\t\tname = camelCase( index );\n\t\teasing = specialEasing[ name ];\n\t\tvalue = props[ index ];\n\t\tif ( Array.isArray( value ) ) {\n\t\t\teasing = value[ 1 ];\n\t\t\tvalue = props[ index ] = value[ 0 ];\n\t\t}\n\n\t\tif ( index !== name ) {\n\t\t\tprops[ name ] = value;\n\t\t\tdelete props[ index ];\n\t\t}\n\n\t\thooks = jQuery.cssHooks[ name ];\n\t\tif ( hooks && \"expand\" in hooks ) {\n\t\t\tvalue = hooks.expand( value );\n\t\t\tdelete props[ name ];\n\n\t\t\t// Not quite $.extend, this won't overwrite existing keys.\n\t\t\t// Reusing 'index' because we have the correct \"name\"\n\t\t\tfor ( index in value ) {\n\t\t\t\tif ( !( index in props ) ) {\n\t\t\t\t\tprops[ index ] = value[ index ];\n\t\t\t\t\tspecialEasing[ index ] = easing;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tspecialEasing[ name ] = easing;\n\t\t}\n\t}\n}\n\nfunction Animation( elem, properties, options ) {\n\tvar result,\n\t\tstopped,\n\t\tindex = 0,\n\t\tlength = Animation.prefilters.length,\n\t\tdeferred = jQuery.Deferred().always( function() {\n\n\t\t\t// Don't match elem in the :animated selector\n\t\t\tdelete tick.elem;\n\t\t} ),\n\t\ttick = function() {\n\t\t\tif ( stopped ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar currentTime = fxNow || createFxNow(),\n\t\t\t\tremaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),\n\n\t\t\t\t// Support: Android 2.3 only\n\t\t\t\t// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)\n\t\t\t\ttemp = remaining / animation.duration || 0,\n\t\t\t\tpercent = 1 - temp,\n\t\t\t\tindex = 0,\n\t\t\t\tlength = animation.tweens.length;\n\n\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\tanimation.tweens[ index ].run( percent );\n\t\t\t}\n\n\t\t\tdeferred.notifyWith( elem, [ animation, percent, remaining ] );\n\n\t\t\t// If there's more to do, yield\n\t\t\tif ( percent < 1 && length ) {\n\t\t\t\treturn remaining;\n\t\t\t}\n\n\t\t\t// If this was an empty animation, synthesize a final progress notification\n\t\t\tif ( !length ) {\n\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t}\n\n\t\t\t// Resolve the animation and report its conclusion\n\t\t\tdeferred.resolveWith( elem, [ animation ] );\n\t\t\treturn false;\n\t\t},\n\t\tanimation = deferred.promise( {\n\t\t\telem: elem,\n\t\t\tprops: jQuery.extend( {}, properties ),\n\t\t\topts: jQuery.extend( true, {\n\t\t\t\tspecialEasing: {},\n\t\t\t\teasing: jQuery.easing._default\n\t\t\t}, options ),\n\t\t\toriginalProperties: properties,\n\t\t\toriginalOptions: options,\n\t\t\tstartTime: fxNow || createFxNow(),\n\t\t\tduration: options.duration,\n\t\t\ttweens: [],\n\t\t\tcreateTween: function( prop, end ) {\n\t\t\t\tvar tween = jQuery.Tween( elem, animation.opts, prop, end,\n\t\t\t\t\tanimation.opts.specialEasing[ prop ] || animation.opts.easing );\n\t\t\t\tanimation.tweens.push( tween );\n\t\t\t\treturn tween;\n\t\t\t},\n\t\t\tstop: function( gotoEnd ) {\n\t\t\t\tvar index = 0,\n\n\t\t\t\t\t// If we are going to the end, we want to run all the tweens\n\t\t\t\t\t// otherwise we skip this part\n\t\t\t\t\tlength = gotoEnd ? animation.tweens.length : 0;\n\t\t\t\tif ( stopped ) {\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\tstopped = true;\n\t\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\t\tanimation.tweens[ index ].run( 1 );\n\t\t\t\t}\n\n\t\t\t\t// Resolve when we played the last frame; otherwise, reject\n\t\t\t\tif ( gotoEnd ) {\n\t\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t\t\tdeferred.resolveWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t} else {\n\t\t\t\t\tdeferred.rejectWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\t\t} ),\n\t\tprops = animation.props;\n\n\tpropFilter( props, animation.opts.specialEasing );\n\n\tfor ( ; index < length; index++ ) {\n\t\tresult = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );\n\t\tif ( result ) {\n\t\t\tif ( isFunction( result.stop ) ) {\n\t\t\t\tjQuery._queueHooks( animation.elem, animation.opts.queue ).stop =\n\t\t\t\t\tresult.stop.bind( result );\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tjQuery.map( props, createTween, animation );\n\n\tif ( isFunction( animation.opts.start ) ) {\n\t\tanimation.opts.start.call( elem, animation );\n\t}\n\n\t// Attach callbacks from options\n\tanimation\n\t\t.progress( animation.opts.progress )\n\t\t.done( animation.opts.done, animation.opts.complete )\n\t\t.fail( animation.opts.fail )\n\t\t.always( animation.opts.always );\n\n\tjQuery.fx.timer(\n\t\tjQuery.extend( tick, {\n\t\t\telem: elem,\n\t\t\tanim: animation,\n\t\t\tqueue: animation.opts.queue\n\t\t} )\n\t);\n\n\treturn animation;\n}\n\njQuery.Animation = jQuery.extend( Animation, {\n\n\ttweeners: {\n\t\t\"*\": [ function( prop, value ) {\n\t\t\tvar tween = this.createTween( prop, value );\n\t\t\tadjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );\n\t\t\treturn tween;\n\t\t} ]\n\t},\n\n\ttweener: function( props, callback ) {\n\t\tif ( isFunction( props ) ) {\n\t\t\tcallback = props;\n\t\t\tprops = [ \"*\" ];\n\t\t} else {\n\t\t\tprops = props.match( rnothtmlwhite );\n\t\t}\n\n\t\tvar prop,\n\t\t\tindex = 0,\n\t\t\tlength = props.length;\n\n\t\tfor ( ; index < length; index++ ) {\n\t\t\tprop = props[ index ];\n\t\t\tAnimation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];\n\t\t\tAnimation.tweeners[ prop ].unshift( callback );\n\t\t}\n\t},\n\n\tprefilters: [ defaultPrefilter ],\n\n\tprefilter: function( callback, prepend ) {\n\t\tif ( prepend ) {\n\t\t\tAnimation.prefilters.unshift( callback );\n\t\t} else {\n\t\t\tAnimation.prefilters.push( callback );\n\t\t}\n\t}\n} );\n\njQuery.speed = function( speed, easing, fn ) {\n\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend( {}, speed ) : {\n\t\tcomplete: fn || !fn && easing ||\n\t\t\tisFunction( speed ) && speed,\n\t\tduration: speed,\n\t\teasing: fn && easing || easing && !isFunction( easing ) && easing\n\t};\n\n\t// Go to the end state if fx are off\n\tif ( jQuery.fx.off ) {\n\t\topt.duration = 0;\n\n\t} else {\n\t\tif ( typeof opt.duration !== \"number\" ) {\n\t\t\tif ( opt.duration in jQuery.fx.speeds ) {\n\t\t\t\topt.duration = jQuery.fx.speeds[ opt.duration ];\n\n\t\t\t} else {\n\t\t\t\topt.duration = jQuery.fx.speeds._default;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Normalize opt.queue - true/undefined/null -> \"fx\"\n\tif ( opt.queue == null || opt.queue === true ) {\n\t\topt.queue = \"fx\";\n\t}\n\n\t// Queueing\n\topt.old = opt.complete;\n\n\topt.complete = function() {\n\t\tif ( isFunction( opt.old ) ) {\n\t\t\topt.old.call( this );\n\t\t}\n\n\t\tif ( opt.queue ) {\n\t\t\tjQuery.dequeue( this, opt.queue );\n\t\t}\n\t};\n\n\treturn opt;\n};\n\njQuery.fn.extend( {\n\tfadeTo: function( speed, to, easing, callback ) {\n\n\t\t// Show any hidden elements after setting opacity to 0\n\t\treturn this.filter( isHiddenWithinTree ).css( \"opacity\", 0 ).show()\n\n\t\t\t// Animate to the value specified\n\t\t\t.end().animate( { opacity: to }, speed, easing, callback );\n\t},\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar empty = jQuery.isEmptyObject( prop ),\n\t\t\toptall = jQuery.speed( speed, easing, callback ),\n\t\t\tdoAnimation = function() {\n\n\t\t\t\t// Operate on a copy of prop so per-property easing won't be lost\n\t\t\t\tvar anim = Animation( this, jQuery.extend( {}, prop ), optall );\n\n\t\t\t\t// Empty animations, or finishing resolves immediately\n\t\t\t\tif ( empty || dataPriv.get( this, \"finish\" ) ) {\n\t\t\t\t\tanim.stop( true );\n\t\t\t\t}\n\t\t\t};\n\n\t\tdoAnimation.finish = doAnimation;\n\n\t\treturn empty || optall.queue === false ?\n\t\t\tthis.each( doAnimation ) :\n\t\t\tthis.queue( optall.queue, doAnimation );\n\t},\n\tstop: function( type, clearQueue, gotoEnd ) {\n\t\tvar stopQueue = function( hooks ) {\n\t\t\tvar stop = hooks.stop;\n\t\t\tdelete hooks.stop;\n\t\t\tstop( gotoEnd );\n\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tgotoEnd = clearQueue;\n\t\t\tclearQueue = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\tif ( clearQueue ) {\n\t\t\tthis.queue( type || \"fx\", [] );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar dequeue = true,\n\t\t\t\tindex = type != null && type + \"queueHooks\",\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tdata = dataPriv.get( this );\n\n\t\t\tif ( index ) {\n\t\t\t\tif ( data[ index ] && data[ index ].stop ) {\n\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( index in data ) {\n\t\t\t\t\tif ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {\n\t\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this &&\n\t\t\t\t\t( type == null || timers[ index ].queue === type ) ) {\n\n\t\t\t\t\ttimers[ index ].anim.stop( gotoEnd );\n\t\t\t\t\tdequeue = false;\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Start the next in the queue if the last step wasn't forced.\n\t\t\t// Timers currently will call their complete callbacks, which\n\t\t\t// will dequeue but only if they were gotoEnd.\n\t\t\tif ( dequeue || !gotoEnd ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t} );\n\t},\n\tfinish: function( type ) {\n\t\tif ( type !== false ) {\n\t\t\ttype = type || \"fx\";\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tvar index,\n\t\t\t\tdata = dataPriv.get( this ),\n\t\t\t\tqueue = data[ type + \"queue\" ],\n\t\t\t\thooks = data[ type + \"queueHooks\" ],\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tlength = queue ? queue.length : 0;\n\n\t\t\t// Enable finishing flag on private data\n\t\t\tdata.finish = true;\n\n\t\t\t// Empty the queue first\n\t\t\tjQuery.queue( this, type, [] );\n\n\t\t\tif ( hooks && hooks.stop ) {\n\t\t\t\thooks.stop.call( this, true );\n\t\t\t}\n\n\t\t\t// Look for any active animations, and finish them\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && timers[ index ].queue === type ) {\n\t\t\t\t\ttimers[ index ].anim.stop( true );\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Look for any animations in the old queue and finish them\n\t\t\tfor ( index = 0; index < length; index++ ) {\n\t\t\t\tif ( queue[ index ] && queue[ index ].finish ) {\n\t\t\t\t\tqueue[ index ].finish.call( this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Turn off finishing flag\n\t\t\tdelete data.finish;\n\t\t} );\n\t}\n} );\n\njQuery.each( [ \"toggle\", \"show\", \"hide\" ], function( _i, name ) {\n\tvar cssFn = jQuery.fn[ name ];\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn speed == null || typeof speed === \"boolean\" ?\n\t\t\tcssFn.apply( this, arguments ) :\n\t\t\tthis.animate( genFx( name, true ), speed, easing, callback );\n\t};\n} );\n\n// Generate shortcuts for custom animations\njQuery.each( {\n\tslideDown: genFx( \"show\" ),\n\tslideUp: genFx( \"hide\" ),\n\tslideToggle: genFx( \"toggle\" ),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n} );\n\njQuery.timers = [];\njQuery.fx.tick = function() {\n\tvar timer,\n\t\ti = 0,\n\t\ttimers = jQuery.timers;\n\n\tfxNow = Date.now();\n\n\tfor ( ; i < timers.length; i++ ) {\n\t\ttimer = timers[ i ];\n\n\t\t// Run the timer and safely remove it when done (allowing for external removal)\n\t\tif ( !timer() && timers[ i ] === timer ) {\n\t\t\ttimers.splice( i--, 1 );\n\t\t}\n\t}\n\n\tif ( !timers.length ) {\n\t\tjQuery.fx.stop();\n\t}\n\tfxNow = undefined;\n};\n\njQuery.fx.timer = function( timer ) {\n\tjQuery.timers.push( timer );\n\tjQuery.fx.start();\n};\n\njQuery.fx.interval = 13;\njQuery.fx.start = function() {\n\tif ( inProgress ) {\n\t\treturn;\n\t}\n\n\tinProgress = true;\n\tschedule();\n};\n\njQuery.fx.stop = function() {\n\tinProgress = null;\n};\n\njQuery.fx.speeds = {\n\tslow: 600,\n\tfast: 200,\n\n\t// Default speed\n\t_default: 400\n};\n\n\n// Based off of the plugin by Clint Helfers, with permission.\n// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/\njQuery.fn.delay = function( time, type ) {\n\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n\ttype = type || \"fx\";\n\n\treturn this.queue( type, function( next, hooks ) {\n\t\tvar timeout = window.setTimeout( next, time );\n\t\thooks.stop = function() {\n\t\t\twindow.clearTimeout( timeout );\n\t\t};\n\t} );\n};\n\n\n( function() {\n\tvar input = document.createElement( \"input\" ),\n\t\tselect = document.createElement( \"select\" ),\n\t\topt = select.appendChild( document.createElement( \"option\" ) );\n\n\tinput.type = \"checkbox\";\n\n\t// Support: Android <=4.3 only\n\t// Default value for a checkbox should be \"on\"\n\tsupport.checkOn = input.value !== \"\";\n\n\t// Support: IE <=11 only\n\t// Must access selectedIndex to make default options select\n\tsupport.optSelected = opt.selected;\n\n\t// Support: IE <=11 only\n\t// An input loses its value after becoming a radio\n\tinput = document.createElement( \"input\" );\n\tinput.value = \"t\";\n\tinput.type = \"radio\";\n\tsupport.radioValue = input.value === \"t\";\n} )();\n\n\nvar boolHook,\n\tattrHandle = jQuery.expr.attrHandle;\n\njQuery.fn.extend( {\n\tattr: function( name, value ) {\n\t\treturn access( this, jQuery.attr, name, value, arguments.length > 1 );\n\t},\n\n\tremoveAttr: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.removeAttr( this, name );\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tattr: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set attributes on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Fallback to prop when attributes are not supported\n\t\tif ( typeof elem.getAttribute === \"undefined\" ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\t// Attribute hooks are determined by the lowercase version\n\t\t// Grab necessary hook if one is defined\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\t\t\thooks = jQuery.attrHooks[ name.toLowerCase() ] ||\n\t\t\t\t( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( value === null ) {\n\t\t\t\tjQuery.removeAttr( elem, name );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\telem.setAttribute( name, value + \"\" );\n\t\t\treturn value;\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\tret = jQuery.find.attr( elem, name );\n\n\t\t// Non-existent attributes return null, we normalize to undefined\n\t\treturn ret == null ? undefined : ret;\n\t},\n\n\tattrHooks: {\n\t\ttype: {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( !support.radioValue && value === \"radio\" &&\n\t\t\t\t\tnodeName( elem, \"input\" ) ) {\n\t\t\t\t\tvar val = elem.value;\n\t\t\t\t\telem.setAttribute( \"type\", value );\n\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\telem.value = val;\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tremoveAttr: function( elem, value ) {\n\t\tvar name,\n\t\t\ti = 0,\n\n\t\t\t// Attribute names can contain non-HTML whitespace characters\n\t\t\t// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n\t\t\tattrNames = value && value.match( rnothtmlwhite );\n\n\t\tif ( attrNames && elem.nodeType === 1 ) {\n\t\t\twhile ( ( name = attrNames[ i++ ] ) ) {\n\t\t\t\telem.removeAttribute( name );\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Hooks for boolean attributes\nboolHook = {\n\tset: function( elem, value, name ) {\n\t\tif ( value === false ) {\n\n\t\t\t// Remove boolean attributes when set to false\n\t\t\tjQuery.removeAttr( elem, name );\n\t\t} else {\n\t\t\telem.setAttribute( name, name );\n\t\t}\n\t\treturn name;\n\t}\n};\n\njQuery.each( jQuery.expr.match.bool.source.match( /\\w+/g ), function( _i, name ) {\n\tvar getter = attrHandle[ name ] || jQuery.find.attr;\n\n\tattrHandle[ name ] = function( elem, name, isXML ) {\n\t\tvar ret, handle,\n\t\t\tlowercaseName = name.toLowerCase();\n\n\t\tif ( !isXML ) {\n\n\t\t\t// Avoid an infinite loop by temporarily removing this function from the getter\n\t\t\thandle = attrHandle[ lowercaseName ];\n\t\t\tattrHandle[ lowercaseName ] = ret;\n\t\t\tret = getter( elem, name, isXML ) != null ?\n\t\t\t\tlowercaseName :\n\t\t\t\tnull;\n\t\t\tattrHandle[ lowercaseName ] = handle;\n\t\t}\n\t\treturn ret;\n\t};\n} );\n\n\n\n\nvar rfocusable = /^(?:input|select|textarea|button)$/i,\n\trclickable = /^(?:a|area)$/i;\n\njQuery.fn.extend( {\n\tprop: function( name, value ) {\n\t\treturn access( this, jQuery.prop, name, value, arguments.length > 1 );\n\t},\n\n\tremoveProp: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tdelete this[ jQuery.propFix[ name ] || name ];\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tprop: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set properties on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// Fix name and attach hooks\n\t\t\tname = jQuery.propFix[ name ] || name;\n\t\t\thooks = jQuery.propHooks[ name ];\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\treturn ( elem[ name ] = value );\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\treturn elem[ name ];\n\t},\n\n\tpropHooks: {\n\t\ttabIndex: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\t// Support: IE <=9 - 11 only\n\t\t\t\t// elem.tabIndex doesn't always return the\n\t\t\t\t// correct value when it hasn't been explicitly set\n\t\t\t\t// https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n\t\t\t\t// Use proper attribute retrieval(#12072)\n\t\t\t\tvar tabindex = jQuery.find.attr( elem, \"tabindex\" );\n\n\t\t\t\tif ( tabindex ) {\n\t\t\t\t\treturn parseInt( tabindex, 10 );\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\trfocusable.test( elem.nodeName ) ||\n\t\t\t\t\trclickable.test( elem.nodeName ) &&\n\t\t\t\t\telem.href\n\t\t\t\t) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t},\n\n\tpropFix: {\n\t\t\"for\": \"htmlFor\",\n\t\t\"class\": \"className\"\n\t}\n} );\n\n// Support: IE <=11 only\n// Accessing the selectedIndex property\n// forces the browser to respect setting selected\n// on the option\n// The getter ensures a default option is selected\n// when in an optgroup\n// eslint rule \"no-unused-expressions\" is disabled for this code\n// since it considers such accessions noop\nif ( !support.optSelected ) {\n\tjQuery.propHooks.selected = {\n\t\tget: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent && parent.parentNode ) {\n\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\tset: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent ) {\n\t\t\t\tparent.selectedIndex;\n\n\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\njQuery.each( [\n\t\"tabIndex\",\n\t\"readOnly\",\n\t\"maxLength\",\n\t\"cellSpacing\",\n\t\"cellPadding\",\n\t\"rowSpan\",\n\t\"colSpan\",\n\t\"useMap\",\n\t\"frameBorder\",\n\t\"contentEditable\"\n], function() {\n\tjQuery.propFix[ this.toLowerCase() ] = this;\n} );\n\n\n\n\n\t// Strip and collapse whitespace according to HTML spec\n\t// https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace\n\tfunction stripAndCollapse( value ) {\n\t\tvar tokens = value.match( rnothtmlwhite ) || [];\n\t\treturn tokens.join( \" \" );\n\t}\n\n\nfunction getClass( elem ) {\n\treturn elem.getAttribute && elem.getAttribute( \"class\" ) || \"\";\n}\n\nfunction classesToArray( value ) {\n\tif ( Array.isArray( value ) ) {\n\t\treturn value;\n\t}\n\tif ( typeof value === \"string\" ) {\n\t\treturn value.match( rnothtmlwhite ) || [];\n\t}\n\treturn [];\n}\n\njQuery.fn.extend( {\n\taddClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).addClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tclasses = classesToArray( value );\n\n\t\tif ( classes.length ) {\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\t\t\t\t\t\tif ( cur.indexOf( \" \" + clazz + \" \" ) < 0 ) {\n\t\t\t\t\t\t\tcur += clazz + \" \";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tif ( !arguments.length ) {\n\t\t\treturn this.attr( \"class\", \"\" );\n\t\t}\n\n\t\tclasses = classesToArray( value );\n\n\t\tif ( classes.length ) {\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\n\t\t\t\t// This expression is here for better compressibility (see addClass)\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\n\t\t\t\t\t\t// Remove *all* instances\n\t\t\t\t\t\twhile ( cur.indexOf( \" \" + clazz + \" \" ) > -1 ) {\n\t\t\t\t\t\t\tcur = cur.replace( \" \" + clazz + \" \", \" \" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar type = typeof value,\n\t\t\tisValidValue = type === \"string\" || Array.isArray( value );\n\n\t\tif ( typeof stateVal === \"boolean\" && isValidValue ) {\n\t\t\treturn stateVal ? this.addClass( value ) : this.removeClass( value );\n\t\t}\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).toggleClass(\n\t\t\t\t\tvalue.call( this, i, getClass( this ), stateVal ),\n\t\t\t\t\tstateVal\n\t\t\t\t);\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar className, i, self, classNames;\n\n\t\t\tif ( isValidValue ) {\n\n\t\t\t\t// Toggle individual class names\n\t\t\t\ti = 0;\n\t\t\t\tself = jQuery( this );\n\t\t\t\tclassNames = classesToArray( value );\n\n\t\t\t\twhile ( ( className = classNames[ i++ ] ) ) {\n\n\t\t\t\t\t// Check each className given, space separated list\n\t\t\t\t\tif ( self.hasClass( className ) ) {\n\t\t\t\t\t\tself.removeClass( className );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.addClass( className );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Toggle whole class name\n\t\t\t} else if ( value === undefined || type === \"boolean\" ) {\n\t\t\t\tclassName = getClass( this );\n\t\t\t\tif ( className ) {\n\n\t\t\t\t\t// Store className if set\n\t\t\t\t\tdataPriv.set( this, \"__className__\", className );\n\t\t\t\t}\n\n\t\t\t\t// If the element has a class name or if we're passed `false`,\n\t\t\t\t// then remove the whole classname (if there was one, the above saved it).\n\t\t\t\t// Otherwise bring back whatever was previously saved (if anything),\n\t\t\t\t// falling back to the empty string if nothing was stored.\n\t\t\t\tif ( this.setAttribute ) {\n\t\t\t\t\tthis.setAttribute( \"class\",\n\t\t\t\t\t\tclassName || value === false ?\n\t\t\t\t\t\t\t\"\" :\n\t\t\t\t\t\t\tdataPriv.get( this, \"__className__\" ) || \"\"\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className, elem,\n\t\t\ti = 0;\n\n\t\tclassName = \" \" + selector + \" \";\n\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\tif ( elem.nodeType === 1 &&\n\t\t\t\t( \" \" + stripAndCollapse( getClass( elem ) ) + \" \" ).indexOf( className ) > -1 ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n} );\n\n\n\n\nvar rreturn = /\\r/g;\n\njQuery.fn.extend( {\n\tval: function( value ) {\n\t\tvar hooks, ret, valueIsFunction,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !arguments.length ) {\n\t\t\tif ( elem ) {\n\t\t\t\thooks = jQuery.valHooks[ elem.type ] ||\n\t\t\t\t\tjQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\tif ( hooks &&\n\t\t\t\t\t\"get\" in hooks &&\n\t\t\t\t\t( ret = hooks.get( elem, \"value\" ) ) !== undefined\n\t\t\t\t) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\tret = elem.value;\n\n\t\t\t\t// Handle most common string cases\n\t\t\t\tif ( typeof ret === \"string\" ) {\n\t\t\t\t\treturn ret.replace( rreturn, \"\" );\n\t\t\t\t}\n\n\t\t\t\t// Handle cases where value is null/undef or number\n\t\t\t\treturn ret == null ? \"\" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tvalueIsFunction = isFunction( value );\n\n\t\treturn this.each( function( i ) {\n\t\t\tvar val;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\tval = value.call( this, i, jQuery( this ).val() );\n\t\t\t} else {\n\t\t\t\tval = value;\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\n\t\t\t} else if ( Array.isArray( val ) ) {\n\t\t\t\tval = jQuery.map( val, function( value ) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n\n\t\t\t// If set returns undefined, fall back to normal setting\n\t\t\tif ( !hooks || !( \"set\" in hooks ) || hooks.set( this, val, \"value\" ) === undefined ) {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tvalHooks: {\n\t\toption: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\tvar val = jQuery.find.attr( elem, \"value\" );\n\t\t\t\treturn val != null ?\n\t\t\t\t\tval :\n\n\t\t\t\t\t// Support: IE <=10 - 11 only\n\t\t\t\t\t// option.text throws exceptions (#14686, #14858)\n\t\t\t\t\t// Strip and collapse whitespace\n\t\t\t\t\t// https://html.spec.whatwg.org/#strip-and-collapse-whitespace\n\t\t\t\t\tstripAndCollapse( jQuery.text( elem ) );\n\t\t\t}\n\t\t},\n\t\tselect: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar value, option, i,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tindex = elem.selectedIndex,\n\t\t\t\t\tone = elem.type === \"select-one\",\n\t\t\t\t\tvalues = one ? null : [],\n\t\t\t\t\tmax = one ? index + 1 : options.length;\n\n\t\t\t\tif ( index < 0 ) {\n\t\t\t\t\ti = max;\n\n\t\t\t\t} else {\n\t\t\t\t\ti = one ? index : 0;\n\t\t\t\t}\n\n\t\t\t\t// Loop through all the selected options\n\t\t\t\tfor ( ; i < max; i++ ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t// IE8-9 doesn't update selected after form reset (#2551)\n\t\t\t\t\tif ( ( option.selected || i === index ) &&\n\n\t\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\t\t!option.disabled &&\n\t\t\t\t\t\t\t( !option.parentNode.disabled ||\n\t\t\t\t\t\t\t\t!nodeName( option.parentNode, \"optgroup\" ) ) ) {\n\n\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\tvalue = jQuery( option ).val();\n\n\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t},\n\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar optionSet, option,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tvalues = jQuery.makeArray( value ),\n\t\t\t\t\ti = options.length;\n\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t/* eslint-disable no-cond-assign */\n\n\t\t\t\t\tif ( option.selected =\n\t\t\t\t\t\tjQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1\n\t\t\t\t\t) {\n\t\t\t\t\t\toptionSet = true;\n\t\t\t\t\t}\n\n\t\t\t\t\t/* eslint-enable no-cond-assign */\n\t\t\t\t}\n\n\t\t\t\t// Force browsers to behave consistently when non-matching value is set\n\t\t\t\tif ( !optionSet ) {\n\t\t\t\t\telem.selectedIndex = -1;\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Radios and checkboxes getter/setter\njQuery.each( [ \"radio\", \"checkbox\" ], function() {\n\tjQuery.valHooks[ this ] = {\n\t\tset: function( elem, value ) {\n\t\t\tif ( Array.isArray( value ) ) {\n\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );\n\t\t\t}\n\t\t}\n\t};\n\tif ( !support.checkOn ) {\n\t\tjQuery.valHooks[ this ].get = function( elem ) {\n\t\t\treturn elem.getAttribute( \"value\" ) === null ? \"on\" : elem.value;\n\t\t};\n\t}\n} );\n\n\n\n\n// Return jQuery for attributes-only inclusion\n\n\nsupport.focusin = \"onfocusin\" in window;\n\n\nvar rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\tstopPropagationCallback = function( e ) {\n\t\te.stopPropagation();\n\t};\n\njQuery.extend( jQuery.event, {\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\n\t\tvar i, cur, tmp, bubbleType, ontype, handle, special, lastElement,\n\t\t\teventPath = [ elem || document ],\n\t\t\ttype = hasOwn.call( event, \"type\" ) ? event.type : event,\n\t\t\tnamespaces = hasOwn.call( event, \"namespace\" ) ? event.namespace.split( \".\" ) : [];\n\n\t\tcur = lastElement = tmp = elem = elem || document;\n\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf( \".\" ) > -1 ) {\n\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split( \".\" );\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\t\tontype = type.indexOf( \":\" ) < 0 && \"on\" + type;\n\n\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\n\t\tevent = event[ jQuery.expando ] ?\n\t\t\tevent :\n\t\t\tnew jQuery.Event( type, typeof event === \"object\" && event );\n\n\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\n\t\tevent.namespace = namespaces.join( \".\" );\n\t\tevent.rnamespace = event.namespace ?\n\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" ) :\n\t\t\tnull;\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data == null ?\n\t\t\t[ event ] :\n\t\t\tjQuery.makeArray( data, [ event ] );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (#9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)\n\t\tif ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push( cur );\n\t\t\t\ttmp = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( tmp === ( elem.ownerDocument || document ) ) {\n\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\ti = 0;\n\t\twhile ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tlastElement = cur;\n\t\t\tevent.type = i > 1 ?\n\t\t\t\tbubbleType :\n\t\t\t\tspecial.bindType || type;\n\n\t\t\t// jQuery handler\n\t\t\thandle = ( dataPriv.get( cur, \"events\" ) || Object.create( null ) )[ event.type ] &&\n\t\t\t\tdataPriv.get( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\n\t\t\t// Native handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && handle.apply && acceptData( cur ) ) {\n\t\t\t\tevent.result = handle.apply( cur, data );\n\t\t\t\tif ( event.result === false ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( ( !special._default ||\n\t\t\t\tspecial._default.apply( eventPath.pop(), data ) === false ) &&\n\t\t\t\tacceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name as the event.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (#6170)\n\t\t\t\tif ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\ttmp = elem[ ontype ];\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.addEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\telem[ type ]();\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.removeEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = tmp;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\t// Piggyback on a donor event to simulate a different one\n\t// Used only for `focus(in | out)` events\n\tsimulate: function( type, elem, event ) {\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{\n\t\t\t\ttype: type,\n\t\t\t\tisSimulated: true\n\t\t\t}\n\t\t);\n\n\t\tjQuery.event.trigger( e, null, elem );\n\t}\n\n} );\n\njQuery.fn.extend( {\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t} );\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tvar elem = this[ 0 ];\n\t\tif ( elem ) {\n\t\t\treturn jQuery.event.trigger( type, data, elem, true );\n\t\t}\n\t}\n} );\n\n\n// Support: Firefox <=44\n// Firefox doesn't have focus(in | out) events\n// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n//\n// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1\n// focus(in | out) events fire after focus & blur events,\n// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\n// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857\nif ( !support.focusin ) {\n\tjQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\n\t\t// Attach a single capturing handler on the document while someone wants focusin/focusout\n\t\tvar handler = function( event ) {\n\t\t\tjQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );\n\t\t};\n\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\n\t\t\t\t// Handle: regular nodes (via `this.ownerDocument`), window\n\t\t\t\t// (via `this.document`) & document (via `this`).\n\t\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix );\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.addEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t\tdataPriv.access( doc, fix, ( attaches || 0 ) + 1 );\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix ) - 1;\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.removeEventListener( orig, handler, true );\n\t\t\t\t\tdataPriv.remove( doc, fix );\n\n\t\t\t\t} else {\n\t\t\t\t\tdataPriv.access( doc, fix, attaches );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t} );\n}\nvar location = window.location;\n\nvar nonce = { guid: Date.now() };\n\nvar rquery = ( /\\?/ );\n\n\n\n// Cross-browser xml parsing\njQuery.parseXML = function( data ) {\n\tvar xml, parserErrorElem;\n\tif ( !data || typeof data !== \"string\" ) {\n\t\treturn null;\n\t}\n\n\t// Support: IE 9 - 11 only\n\t// IE throws on parseFromString with invalid input.\n\ttry {\n\t\txml = ( new window.DOMParser() ).parseFromString( data, \"text/xml\" );\n\t} catch ( e ) {}\n\n\tparserErrorElem = xml && xml.getElementsByTagName( \"parsererror\" )[ 0 ];\n\tif ( !xml || parserErrorElem ) {\n\t\tjQuery.error( \"Invalid XML: \" + (\n\t\t\tparserErrorElem ?\n\t\t\t\tjQuery.map( parserErrorElem.childNodes, function( el ) {\n\t\t\t\t\treturn el.textContent;\n\t\t\t\t} ).join( \"\\n\" ) :\n\t\t\t\tdata\n\t\t) );\n\t}\n\treturn xml;\n};\n\n\nvar\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n\trsubmittable = /^(?:input|select|textarea|keygen)/i;\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tvar name;\n\n\tif ( Array.isArray( obj ) ) {\n\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\n\t\t\t\t// Item is non-scalar (array or object), encode its numeric index.\n\t\t\t\tbuildParams(\n\t\t\t\t\tprefix + \"[\" + ( typeof v === \"object\" && v != null ? i : \"\" ) + \"]\",\n\t\t\t\t\tv,\n\t\t\t\t\ttraditional,\n\t\t\t\t\tadd\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t} else if ( !traditional && toType( obj ) === \"object\" ) {\n\n\t\t// Serialize object item.\n\t\tfor ( name in obj ) {\n\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t}\n\n\t} else {\n\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// Serialize an array of form elements or a set of\n// key/values into a query string\njQuery.param = function( a, traditional ) {\n\tvar prefix,\n\t\ts = [],\n\t\tadd = function( key, valueOrFunction ) {\n\n\t\t\t// If value is a function, invoke it and use its return value\n\t\t\tvar value = isFunction( valueOrFunction ) ?\n\t\t\t\tvalueOrFunction() :\n\t\t\t\tvalueOrFunction;\n\n\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" +\n\t\t\t\tencodeURIComponent( value == null ? \"\" : value );\n\t\t};\n\n\tif ( a == null ) {\n\t\treturn \"\";\n\t}\n\n\t// If an array was passed in, assume that it is an array of form elements.\n\tif ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\n\t\t// Serialize the form elements\n\t\tjQuery.each( a, function() {\n\t\t\tadd( this.name, this.value );\n\t\t} );\n\n\t} else {\n\n\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t// did it), otherwise encode params recursively.\n\t\tfor ( prefix in a ) {\n\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t}\n\t}\n\n\t// Return the resulting serialization\n\treturn s.join( \"&\" );\n};\n\njQuery.fn.extend( {\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\tserializeArray: function() {\n\t\treturn this.map( function() {\n\n\t\t\t// Can add propHook for \"elements\" to filter or add form elements\n\t\t\tvar elements = jQuery.prop( this, \"elements\" );\n\t\t\treturn elements ? jQuery.makeArray( elements ) : this;\n\t\t} ).filter( function() {\n\t\t\tvar type = this.type;\n\n\t\t\t// Use .is( \":disabled\" ) so that fieldset[disabled] works\n\t\t\treturn this.name && !jQuery( this ).is( \":disabled\" ) &&\n\t\t\t\trsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&\n\t\t\t\t( this.checked || !rcheckableType.test( type ) );\n\t\t} ).map( function( _i, elem ) {\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\tif ( val == null ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif ( Array.isArray( val ) ) {\n\t\t\t\treturn jQuery.map( val, function( val ) {\n\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t} ).get();\n\t}\n} );\n\n\nvar\n\tr20 = /%20/g,\n\trhash = /#.*$/,\n\trantiCache = /([?&])_=[^&]*/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)$/mg,\n\n\t// #7653, #8125, #8152: local protocol detection\n\trlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t * - BEFORE asking for a transport\n\t * - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression\n\tallTypes = \"*/\".concat( \"*\" ),\n\n\t// Anchor tag for parsing the document origin\n\toriginAnchor = document.createElement( \"a\" );\n\noriginAnchor.href = location.href;\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tvar dataType,\n\t\t\ti = 0,\n\t\t\tdataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];\n\n\t\tif ( isFunction( func ) ) {\n\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\twhile ( ( dataType = dataTypes[ i++ ] ) ) {\n\n\t\t\t\t// Prepend if requested\n\t\t\t\tif ( dataType[ 0 ] === \"+\" ) {\n\t\t\t\t\tdataType = dataType.slice( 1 ) || \"*\";\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );\n\n\t\t\t\t// Otherwise append\n\t\t\t\t} else {\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).push( func );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\n// Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {\n\n\tvar inspected = {},\n\t\tseekingTransport = ( structure === transports );\n\n\tfunction inspect( dataType ) {\n\t\tvar selected;\n\t\tinspected[ dataType ] = true;\n\t\tjQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {\n\t\t\tvar dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );\n\t\t\tif ( typeof dataTypeOrTransport === \"string\" &&\n\t\t\t\t!seekingTransport && !inspected[ dataTypeOrTransport ] ) {\n\n\t\t\t\toptions.dataTypes.unshift( dataTypeOrTransport );\n\t\t\t\tinspect( dataTypeOrTransport );\n\t\t\t\treturn false;\n\t\t\t} else if ( seekingTransport ) {\n\t\t\t\treturn !( selected = dataTypeOrTransport );\n\t\t\t}\n\t\t} );\n\t\treturn selected;\n\t}\n\n\treturn inspect( options.dataTypes[ 0 ] ) || !inspected[ \"*\" ] && inspect( \"*\" );\n}\n\n// A special extend for ajax options\n// that takes \"flat\" options (not to be deep extended)\n// Fixes #9887\nfunction ajaxExtend( target, src ) {\n\tvar key, deep,\n\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n\n\tfor ( key in src ) {\n\t\tif ( src[ key ] !== undefined ) {\n\t\t\t( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];\n\t\t}\n\t}\n\tif ( deep ) {\n\t\tjQuery.extend( true, target, deep );\n\t}\n\n\treturn target;\n}\n\n/* Handles responses to an ajax request:\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar ct, type, finalDataType, firstDataType,\n\t\tcontents = s.contents,\n\t\tdataTypes = s.dataTypes;\n\n\t// Remove auto dataType and get content-type in the process\n\twhile ( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"Content-Type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[ 0 ] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n/* Chain conversions given the request and the original response\n * Also sets the responseXXX fields on the jqXHR instance\n */\nfunction ajaxConvert( s, response, jqXHR, isSuccess ) {\n\tvar conv2, current, conv, tmp, prev,\n\t\tconverters = {},\n\n\t\t// Work with a copy of dataTypes in case we need to modify it for conversion\n\t\tdataTypes = s.dataTypes.slice();\n\n\t// Create converters map with lowercased keys\n\tif ( dataTypes[ 1 ] ) {\n\t\tfor ( conv in s.converters ) {\n\t\t\tconverters[ conv.toLowerCase() ] = s.converters[ conv ];\n\t\t}\n\t}\n\n\tcurrent = dataTypes.shift();\n\n\t// Convert to each sequential dataType\n\twhile ( current ) {\n\n\t\tif ( s.responseFields[ current ] ) {\n\t\t\tjqXHR[ s.responseFields[ current ] ] = response;\n\t\t}\n\n\t\t// Apply the dataFilter if provided\n\t\tif ( !prev && isSuccess && s.dataFilter ) {\n\t\t\tresponse = s.dataFilter( response, s.dataType );\n\t\t}\n\n\t\tprev = current;\n\t\tcurrent = dataTypes.shift();\n\n\t\tif ( current ) {\n\n\t\t\t// There's only work to do if current dataType is non-auto\n\t\t\tif ( current === \"*\" ) {\n\n\t\t\t\tcurrent = prev;\n\n\t\t\t// Convert response if prev dataType is non-auto and differs from current\n\t\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t\t// Seek a direct converter\n\t\t\t\tconv = converters[ prev + \" \" + current ] || converters[ \"* \" + current ];\n\n\t\t\t\t// If none found, seek a pair\n\t\t\t\tif ( !conv ) {\n\t\t\t\t\tfor ( conv2 in converters ) {\n\n\t\t\t\t\t\t// If conv2 outputs current\n\t\t\t\t\t\ttmp = conv2.split( \" \" );\n\t\t\t\t\t\tif ( tmp[ 1 ] === current ) {\n\n\t\t\t\t\t\t\t// If prev can be converted to accepted input\n\t\t\t\t\t\t\tconv = converters[ prev + \" \" + tmp[ 0 ] ] ||\n\t\t\t\t\t\t\t\tconverters[ \"* \" + tmp[ 0 ] ];\n\t\t\t\t\t\t\tif ( conv ) {\n\n\t\t\t\t\t\t\t\t// Condense equivalence converters\n\t\t\t\t\t\t\t\tif ( conv === true ) {\n\t\t\t\t\t\t\t\t\tconv = converters[ conv2 ];\n\n\t\t\t\t\t\t\t\t// Otherwise, insert the intermediate dataType\n\t\t\t\t\t\t\t\t} else if ( converters[ conv2 ] !== true ) {\n\t\t\t\t\t\t\t\t\tcurrent = tmp[ 0 ];\n\t\t\t\t\t\t\t\t\tdataTypes.unshift( tmp[ 1 ] );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Apply converter (if not an equivalence)\n\t\t\t\tif ( conv !== true ) {\n\n\t\t\t\t\t// Unless errors are allowed to bubble, catch and return them\n\t\t\t\t\tif ( conv && s.throws ) {\n\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tstate: \"parsererror\",\n\t\t\t\t\t\t\t\terror: conv ? e : \"No conversion from \" + prev + \" to \" + current\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { state: \"success\", data: response };\n}\n\njQuery.extend( {\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {},\n\n\tajaxSettings: {\n\t\turl: location.href,\n\t\ttype: \"GET\",\n\t\tisLocal: rlocalProtocol.test( location.protocol ),\n\t\tglobal: true,\n\t\tprocessData: true,\n\t\tasync: true,\n\t\tcontentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\tthrows: false,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\t*/\n\n\t\taccepts: {\n\t\t\t\"*\": allTypes,\n\t\t\ttext: \"text/plain\",\n\t\t\thtml: \"text/html\",\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\tjson: \"application/json, text/javascript\"\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /\\bxml\\b/,\n\t\t\thtml: /\\bhtml/,\n\t\t\tjson: /\\bjson\\b/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\",\n\t\t\tjson: \"responseJSON\"\n\t\t},\n\n\t\t// Data converters\n\t\t// Keys separate source (or catchall \"*\") and destination types with a single space\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": JSON.parse,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t},\n\n\t\t// For options that shouldn't be deep extended:\n\t\t// you can add your own custom options here if\n\t\t// and when you create one that shouldn't be\n\t\t// deep extended (see ajaxExtend)\n\t\tflatOptions: {\n\t\t\turl: true,\n\t\t\tcontext: true\n\t\t}\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function( target, settings ) {\n\t\treturn settings ?\n\n\t\t\t// Building a settings object\n\t\t\tajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :\n\n\t\t\t// Extending ajaxSettings\n\t\t\tajaxExtend( jQuery.ajaxSettings, target );\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar transport,\n\n\t\t\t// URL without anti-cache param\n\t\t\tcacheURL,\n\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\n\t\t\t// Url cleanup var\n\t\t\turlAnchor,\n\n\t\t\t// Request state (becomes false upon send and true upon completion)\n\t\t\tcompleted,\n\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\n\t\t\t// Loop variable\n\t\t\ti,\n\n\t\t\t// uncached part of the url\n\t\t\tuncached,\n\n\t\t\t// Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\n\t\t\t// Context for global events is callbackContext if it is a DOM node or jQuery collection\n\t\t\tglobalEventContext = s.context &&\n\t\t\t\t( callbackContext.nodeType || callbackContext.jquery ) ?\n\t\t\t\tjQuery( callbackContext ) :\n\t\t\t\tjQuery.event,\n\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery.Callbacks( \"once memory\" ),\n\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\trequestHeadersNames = {},\n\n\t\t\t// Default abort message\n\t\t\tstrAbort = \"canceled\",\n\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( completed ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile ( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[ 1 ].toLowerCase() + \" \" ] =\n\t\t\t\t\t\t\t\t\t( responseHeaders[ match[ 1 ].toLowerCase() + \" \" ] || [] )\n\t\t\t\t\t\t\t\t\t\t.concat( match[ 2 ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() + \" \" ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match == null ? null : match.join( \", \" );\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn completed ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\tname = requestHeadersNames[ name.toLowerCase() ] =\n\t\t\t\t\t\t\trequestHeadersNames[ name.toLowerCase() ] || name;\n\t\t\t\t\t\trequestHeaders[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Status-dependent callbacks\n\t\t\t\tstatusCode: function( map ) {\n\t\t\t\t\tvar code;\n\t\t\t\t\tif ( map ) {\n\t\t\t\t\t\tif ( completed ) {\n\n\t\t\t\t\t\t\t// Execute the appropriate callbacks\n\t\t\t\t\t\t\tjqXHR.always( map[ jqXHR.status ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Lazy-add the new callbacks in a way that preserves old ones\n\t\t\t\t\t\t\tfor ( code in map ) {\n\t\t\t\t\t\t\t\tstatusCode[ code ] = [ statusCode[ code ], map[ code ] ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tvar finalText = statusText || strAbort;\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( finalText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, finalText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\n\t\t// Add protocol if not provided (prefilters might expect it)\n\t\t// Handle falsy url in the settings object (#10093: consistency with old signature)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url || location.href ) + \"\" )\n\t\t\t.replace( rprotocol, location.protocol + \"//\" );\n\n\t\t// Alias method option to type as per ticket #12004\n\t\ts.type = options.method || options.type || s.method || s.type;\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = ( s.dataType || \"*\" ).toLowerCase().match( rnothtmlwhite ) || [ \"\" ];\n\n\t\t// A cross-domain request is in order when the origin doesn't match the current origin.\n\t\tif ( s.crossDomain == null ) {\n\t\t\turlAnchor = document.createElement( \"a\" );\n\n\t\t\t// Support: IE <=8 - 11, Edge 12 - 15\n\t\t\t// IE throws exception on accessing the href property if url is malformed,\n\t\t\t// e.g. http://example.com:80x/\n\t\t\ttry {\n\t\t\t\turlAnchor.href = s.url;\n\n\t\t\t\t// Support: IE <=8 - 11 only\n\t\t\t\t// Anchor's host property isn't correctly set when s.url is relative\n\t\t\t\turlAnchor.href = urlAnchor.href;\n\t\t\t\ts.crossDomain = originAnchor.protocol + \"//\" + originAnchor.host !==\n\t\t\t\t\turlAnchor.protocol + \"//\" + urlAnchor.host;\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// If there is an error parsing the URL, assume it is crossDomain,\n\t\t\t\t// it can be rejected by the transport if it is invalid\n\t\t\t\ts.crossDomain = true;\n\t\t\t}\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefilter, stop there\n\t\tif ( completed ) {\n\t\t\treturn jqXHR;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\t// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)\n\t\tfireGlobals = jQuery.event && s.global;\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Save the URL in case we're toying with the If-Modified-Since\n\t\t// and/or If-None-Match header later on\n\t\t// Remove hash to simplify url manipulation\n\t\tcacheURL = s.url.replace( rhash, \"\" );\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// Remember the hash so we can put it back\n\t\t\tuncached = s.url.slice( cacheURL.length );\n\n\t\t\t// If data is available and should be processed, append data to url\n\t\t\tif ( s.data && ( s.processData || typeof s.data === \"string\" ) ) {\n\t\t\t\tcacheURL += ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + s.data;\n\n\t\t\t\t// #9682: remove data so that it's not used in an eventual retry\n\t\t\t\tdelete s.data;\n\t\t\t}\n\n\t\t\t// Add or update anti-cache param if needed\n\t\t\tif ( s.cache === false ) {\n\t\t\t\tcacheURL = cacheURL.replace( rantiCache, \"$1\" );\n\t\t\t\tuncached = ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + \"_=\" + ( nonce.guid++ ) +\n\t\t\t\t\tuncached;\n\t\t\t}\n\n\t\t\t// Put hash and anti-cache on the URL that will be requested (gh-1732)\n\t\t\ts.url = cacheURL + uncached;\n\n\t\t// Change '%20' to '+' if this is encoded form body content (gh-2658)\n\t\t} else if ( s.data && s.processData &&\n\t\t\t( s.contentType || \"\" ).indexOf( \"application/x-www-form-urlencoded\" ) === 0 ) {\n\t\t\ts.data = s.data.replace( r20, \"+\" );\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tif ( jQuery.lastModified[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-Modified-Since\", jQuery.lastModified[ cacheURL ] );\n\t\t\t}\n\t\t\tif ( jQuery.etag[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-None-Match\", jQuery.etag[ cacheURL ] );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\tjqXHR.setRequestHeader( \"Content-Type\", s.contentType );\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\tjqXHR.setRequestHeader(\n\t\t\t\"Accept\",\n\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?\n\t\t\t\ts.accepts[ s.dataTypes[ 0 ] ] +\n\t\t\t\t\t( s.dataTypes[ 0 ] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\" ) :\n\t\t\t\ts.accepts[ \"*\" ]\n\t\t);\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend &&\n\t\t\t( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {\n\n\t\t\t// Abort if not done already and return\n\t\t\treturn jqXHR.abort();\n\t\t}\n\n\t\t// Aborting is no longer a cancellation\n\t\tstrAbort = \"abort\";\n\n\t\t// Install callbacks on deferreds\n\t\tcompleteDeferred.add( s.complete );\n\t\tjqXHR.done( s.success );\n\t\tjqXHR.fail( s.error );\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\n\t\t\t// If request was aborted inside ajaxSend, stop there\n\t\t\tif ( completed ) {\n\t\t\t\treturn jqXHR;\n\t\t\t}\n\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = window.setTimeout( function() {\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tcompleted = false;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// Rethrow post-completion exceptions\n\t\t\t\tif ( completed ) {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\n\t\t\t\t// Propagate others as results\n\t\t\t\tdone( -1, e );\n\t\t\t}\n\t\t}\n\n\t\t// Callback for when everything is done\n\t\tfunction done( status, nativeStatusText, responses, headers ) {\n\t\t\tvar isSuccess, success, error, response, modified,\n\t\t\t\tstatusText = nativeStatusText;\n\n\t\t\t// Ignore repeat invocations\n\t\t\tif ( completed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcompleted = true;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\twindow.clearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\n\n\t\t\t// Determine if successful\n\t\t\tisSuccess = status >= 200 && status < 300 || status === 304;\n\n\t\t\t// Get response data\n\t\t\tif ( responses ) {\n\t\t\t\tresponse = ajaxHandleResponses( s, jqXHR, responses );\n\t\t\t}\n\n\t\t\t// Use a noop converter for missing script but not if jsonp\n\t\t\tif ( !isSuccess &&\n\t\t\t\tjQuery.inArray( \"script\", s.dataTypes ) > -1 &&\n\t\t\t\tjQuery.inArray( \"json\", s.dataTypes ) < 0 ) {\n\t\t\t\ts.converters[ \"text script\" ] = function() {};\n\t\t\t}\n\n\t\t\t// Convert no matter what (that way responseXXX fields are always set)\n\t\t\tresponse = ajaxConvert( s, response, jqXHR, isSuccess );\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( isSuccess ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"Last-Modified\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.lastModified[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"etag\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.etag[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// if no content\n\t\t\t\tif ( status === 204 || s.type === \"HEAD\" ) {\n\t\t\t\t\tstatusText = \"nocontent\";\n\n\t\t\t\t// if not modified\n\t\t\t\t} else if ( status === 304 ) {\n\t\t\t\t\tstatusText = \"notmodified\";\n\n\t\t\t\t// If we have data, let's convert it\n\t\t\t\t} else {\n\t\t\t\t\tstatusText = response.state;\n\t\t\t\t\tsuccess = response.data;\n\t\t\t\t\terror = response.error;\n\t\t\t\t\tisSuccess = !error;\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Extract error from statusText and normalize for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif ( status || !statusText ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = ( nativeStatusText || statusText ) + \"\";\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( isSuccess ? \"ajaxSuccess\" : \"ajaxError\",\n\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s ] );\n\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t}\n} );\n\njQuery.each( [ \"get\", \"post\" ], function( _i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\n\t\t// Shift arguments if data argument was omitted\n\t\tif ( isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\t// The url can be an options object (which then must have .url)\n\t\treturn jQuery.ajax( jQuery.extend( {\n\t\t\turl: url,\n\t\t\ttype: method,\n\t\t\tdataType: type,\n\t\t\tdata: data,\n\t\t\tsuccess: callback\n\t\t}, jQuery.isPlainObject( url ) && url ) );\n\t};\n} );\n\njQuery.ajaxPrefilter( function( s ) {\n\tvar i;\n\tfor ( i in s.headers ) {\n\t\tif ( i.toLowerCase() === \"content-type\" ) {\n\t\t\ts.contentType = s.headers[ i ] || \"\";\n\t\t}\n\t}\n} );\n\n\njQuery._evalUrl = function( url, options, doc ) {\n\treturn jQuery.ajax( {\n\t\turl: url,\n\n\t\t// Make this explicit, since user can override this through ajaxSetup (#11264)\n\t\ttype: \"GET\",\n\t\tdataType: \"script\",\n\t\tcache: true,\n\t\tasync: false,\n\t\tglobal: false,\n\n\t\t// Only evaluate the response if it is successful (gh-4126)\n\t\t// dataFilter is not invoked for failure responses, so using it instead\n\t\t// of the default converter is kludgy but it works.\n\t\tconverters: {\n\t\t\t\"text script\": function() {}\n\t\t},\n\t\tdataFilter: function( response ) {\n\t\t\tjQuery.globalEval( response, options, doc );\n\t\t}\n\t} );\n};\n\n\njQuery.fn.extend( {\n\twrapAll: function( html ) {\n\t\tvar wrap;\n\n\t\tif ( this[ 0 ] ) {\n\t\t\tif ( isFunction( html ) ) {\n\t\t\t\thtml = html.call( this[ 0 ] );\n\t\t\t}\n\n\t\t\t// The elements to wrap the target around\n\t\t\twrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );\n\n\t\t\tif ( this[ 0 ].parentNode ) {\n\t\t\t\twrap.insertBefore( this[ 0 ] );\n\t\t\t}\n\n\t\t\twrap.map( function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstElementChild ) {\n\t\t\t\t\telem = elem.firstElementChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t} ).append( this );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( isFunction( html ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).wrapInner( html.call( this, i ) );\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t} );\n\t},\n\n\twrap: function( html ) {\n\t\tvar htmlIsFunction = isFunction( html );\n\n\t\treturn this.each( function( i ) {\n\t\t\tjQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html );\n\t\t} );\n\t},\n\n\tunwrap: function( selector ) {\n\t\tthis.parent( selector ).not( \"body\" ).each( function() {\n\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t} );\n\t\treturn this;\n\t}\n} );\n\n\njQuery.expr.pseudos.hidden = function( elem ) {\n\treturn !jQuery.expr.pseudos.visible( elem );\n};\njQuery.expr.pseudos.visible = function( elem ) {\n\treturn !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );\n};\n\n\n\n\njQuery.ajaxSettings.xhr = function() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch ( e ) {}\n};\n\nvar xhrSuccessStatus = {\n\n\t\t// File protocol always yields status code 0, assume 200\n\t\t0: 200,\n\n\t\t// Support: IE <=9 only\n\t\t// #1450: sometimes IE returns 1223 when it should be 204\n\t\t1223: 204\n\t},\n\txhrSupported = jQuery.ajaxSettings.xhr();\n\nsupport.cors = !!xhrSupported && ( \"withCredentials\" in xhrSupported );\nsupport.ajax = xhrSupported = !!xhrSupported;\n\njQuery.ajaxTransport( function( options ) {\n\tvar callback, errorCallback;\n\n\t// Cross domain only allowed if supported through XMLHttpRequest\n\tif ( support.cors || xhrSupported && !options.crossDomain ) {\n\t\treturn {\n\t\t\tsend: function( headers, complete ) {\n\t\t\t\tvar i,\n\t\t\t\t\txhr = options.xhr();\n\n\t\t\t\txhr.open(\n\t\t\t\t\toptions.type,\n\t\t\t\t\toptions.url,\n\t\t\t\t\toptions.async,\n\t\t\t\t\toptions.username,\n\t\t\t\t\toptions.password\n\t\t\t\t);\n\n\t\t\t\t// Apply custom fields if provided\n\t\t\t\tif ( options.xhrFields ) {\n\t\t\t\t\tfor ( i in options.xhrFields ) {\n\t\t\t\t\t\txhr[ i ] = options.xhrFields[ i ];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Override mime type if needed\n\t\t\t\tif ( options.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\txhr.overrideMimeType( options.mimeType );\n\t\t\t\t}\n\n\t\t\t\t// X-Requested-With header\n\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t\t// For same-domain requests, won't change header if already provided.\n\t\t\t\tif ( !options.crossDomain && !headers[ \"X-Requested-With\" ] ) {\n\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t}\n\n\t\t\t\t// Set headers\n\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t}\n\n\t\t\t\t// Callback\n\t\t\t\tcallback = function( type ) {\n\t\t\t\t\treturn function() {\n\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\tcallback = errorCallback = xhr.onload =\n\t\t\t\t\t\t\t\txhr.onerror = xhr.onabort = xhr.ontimeout =\n\t\t\t\t\t\t\t\t\txhr.onreadystatechange = null;\n\n\t\t\t\t\t\t\tif ( type === \"abort\" ) {\n\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t} else if ( type === \"error\" ) {\n\n\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t// On a manual native abort, IE9 throws\n\t\t\t\t\t\t\t\t// errors on any property access that is not readyState\n\t\t\t\t\t\t\t\tif ( typeof xhr.status !== \"number\" ) {\n\t\t\t\t\t\t\t\t\tcomplete( 0, \"error\" );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcomplete(\n\n\t\t\t\t\t\t\t\t\t\t// File: protocol always yields status 0; see #8605, #14207\n\t\t\t\t\t\t\t\t\t\txhr.status,\n\t\t\t\t\t\t\t\t\t\txhr.statusText\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcomplete(\n\t\t\t\t\t\t\t\t\txhrSuccessStatus[ xhr.status ] || xhr.status,\n\t\t\t\t\t\t\t\t\txhr.statusText,\n\n\t\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t\t// IE9 has no XHR2 but throws on binary (trac-11426)\n\t\t\t\t\t\t\t\t\t// For XHR2 non-text, let the caller handle it (gh-2498)\n\t\t\t\t\t\t\t\t\t( xhr.responseType || \"text\" ) !== \"text\" ||\n\t\t\t\t\t\t\t\t\ttypeof xhr.responseText !== \"string\" ?\n\t\t\t\t\t\t\t\t\t\t{ binary: xhr.response } :\n\t\t\t\t\t\t\t\t\t\t{ text: xhr.responseText },\n\t\t\t\t\t\t\t\t\txhr.getAllResponseHeaders()\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t};\n\n\t\t\t\t// Listen to events\n\t\t\t\txhr.onload = callback();\n\t\t\t\terrorCallback = xhr.onerror = xhr.ontimeout = callback( \"error\" );\n\n\t\t\t\t// Support: IE 9 only\n\t\t\t\t// Use onreadystatechange to replace onabort\n\t\t\t\t// to handle uncaught aborts\n\t\t\t\tif ( xhr.onabort !== undefined ) {\n\t\t\t\t\txhr.onabort = errorCallback;\n\t\t\t\t} else {\n\t\t\t\t\txhr.onreadystatechange = function() {\n\n\t\t\t\t\t\t// Check readyState before timeout as it changes\n\t\t\t\t\t\tif ( xhr.readyState === 4 ) {\n\n\t\t\t\t\t\t\t// Allow onerror to be called first,\n\t\t\t\t\t\t\t// but that will not handle a native abort\n\t\t\t\t\t\t\t// Also, save errorCallback to a variable\n\t\t\t\t\t\t\t// as xhr.onerror cannot be accessed\n\t\t\t\t\t\t\twindow.setTimeout( function() {\n\t\t\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\t\t\terrorCallback();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Create the abort callback\n\t\t\t\tcallback = callback( \"abort\" );\n\n\t\t\t\ttry {\n\n\t\t\t\t\t// Do send the request (this may raise an exception)\n\t\t\t\t\txhr.send( options.hasContent && options.data || null );\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// #14683: Only rethrow if this hasn't been notified as an error yet\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\n// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)\njQuery.ajaxPrefilter( function( s ) {\n\tif ( s.crossDomain ) {\n\t\ts.contents.script = false;\n\t}\n} );\n\n// Install script dataType\njQuery.ajaxSetup( {\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, \" +\n\t\t\t\"application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /\\b(?:java|ecma)script\\b/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n} );\n\n// Handle cache's special case and crossDomain\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t}\n} );\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function( s ) {\n\n\t// This transport only deals with cross domain or forced-by-attrs requests\n\tif ( s.crossDomain || s.scriptAttrs ) {\n\t\tvar script, callback;\n\t\treturn {\n\t\t\tsend: function( _, complete ) {\n\t\t\t\tscript = jQuery( \"