{"version":3,"sources":["webpack://__ember_auto_import__/node_modules/@lottiefiles/lottie-player/dist/lottie-player.esm.js","webpack://__ember_auto_import__/src/integrations/functiontostring.ts","webpack://__ember_auto_import__/src/integrations/inboundfilters.ts","webpack://__ember_auto_import__/src/version.ts","webpack://__ember_auto_import__/src/exports.ts","webpack://__ember_auto_import__/src/transports/base.ts","webpack://__ember_auto_import__/src/eventbuilder.ts","webpack://__ember_auto_import__/src/helpers.ts","webpack://__ember_auto_import__/src/integrations/globalhandlers.ts","webpack://__ember_auto_import__/src/integrations/trycatch.ts","webpack://__ember_auto_import__/src/integrations/breadcrumbs.ts","webpack://__ember_auto_import__/src/integrations/linkederrors.ts","webpack://__ember_auto_import__/src/integrations/httpcontext.ts","webpack://__ember_auto_import__/src/integrations/dedupe.ts","webpack://__ember_auto_import__/src/api.ts","webpack://__ember_auto_import__/src/envelope.ts","webpack://__ember_auto_import__/src/integration.ts","webpack://__ember_auto_import__/src/baseclient.ts","webpack://__ember_auto_import__/src/client.ts","webpack://__ember_auto_import__/src/transports/utils.ts","webpack://__ember_auto_import__/src/transports/fetch.ts","webpack://__ember_auto_import__/src/transports/xhr.ts","webpack://__ember_auto_import__/src/stack-parsers.ts","webpack://__ember_auto_import__/src/sdk.ts","webpack://__ember_auto_import__/src/index.ts","webpack://__ember_auto_import__/src/hub.ts","webpack://__ember_auto_import__/src/scope.ts","webpack://__ember_auto_import__/src/session.ts","webpack://__ember_auto_import__/src/baggage.ts","webpack://__ember_auto_import__/src/browser.ts","webpack://__ember_auto_import__/src/buildPolyfills/_optionalChain.ts","webpack://__ember_auto_import__/src/clientreport.ts","webpack://__ember_auto_import__/src/dsn.ts","webpack://__ember_auto_import__/src/env.ts","webpack://__ember_auto_import__/src/error.ts","webpack://__ember_auto_import__/src/path.ts","webpack://__ember_auto_import__/src/instrument.ts","webpack://__ember_auto_import__/src/is.ts","webpack://__ember_auto_import__/src/logger.ts","webpack://__ember_auto_import__/src/memo.ts","webpack://__ember_auto_import__/src/misc.ts","webpack://__ember_auto_import__/src/node.ts","webpack://__ember_auto_import__/src/normalize.ts","webpack://__ember_auto_import__/src/object.ts","webpack://__ember_auto_import__/src/promisebuffer.ts","webpack://__ember_auto_import__/src/ratelimit.ts","webpack://__ember_auto_import__/src/requestdata.ts","webpack://__ember_auto_import__/src/severity.ts","webpack://__ember_auto_import__/src/stacktrace.ts","webpack://__ember_auto_import__/src/string.ts","webpack://__ember_auto_import__/src/supports.ts","webpack://__ember_auto_import__/src/syncpromise.ts","webpack://__ember_auto_import__/src/time.ts","webpack://__ember_auto_import__/src/tracing.ts","webpack://__ember_auto_import__/src/url.ts","webpack://__ember_auto_import__/src/worldwide.ts","webpack://__ember_auto_import__/js/src/util.js","webpack://__ember_auto_import__/js/src/alert.js","webpack://__ember_auto_import__/js/src/button.js","webpack://__ember_auto_import__/js/src/carousel.js","webpack://__ember_auto_import__/js/src/collapse.js","webpack://__ember_auto_import__/js/src/dropdown.js","webpack://__ember_auto_import__/js/src/modal.js","webpack://__ember_auto_import__/js/src/tools/sanitizer.js","webpack://__ember_auto_import__/js/src/tooltip.js","webpack://__ember_auto_import__/js/src/popover.js","webpack://__ember_auto_import__/js/src/scrollspy.js","webpack://__ember_auto_import__/js/src/tab.js","webpack://__ember_auto_import__/js/src/toast.js","webpack://__ember_auto_import__/node_modules/chart.js/dist/Chart.js","webpack://__ember_auto_import__/src/utils.js","webpack://__ember_auto_import__/src/tags.js","webpack://__ember_auto_import__/src/attrs.js","webpack://__ember_auto_import__/src/regexp.js","webpack://__ember_auto_import__/src/purify.js","webpack://__ember_auto_import__/src/index.js","webpack://__ember_auto_import__/index.js","webpack://__ember_auto_import__/node_modules/jquery/dist/jquery.js","webpack://__ember_auto_import__/node_modules/moment/locale/af.js","webpack://__ember_auto_import__/node_modules/moment/locale/ar-dz.js","webpack://__ember_auto_import__/node_modules/moment/locale/ar-kw.js","webpack://__ember_auto_import__/node_modules/moment/locale/ar-ly.js","webpack://__ember_auto_import__/node_modules/moment/locale/ar-ma.js","webpack://__ember_auto_import__/node_modules/moment/locale/ar-sa.js","webpack://__ember_auto_import__/node_modules/moment/locale/ar-tn.js","webpack://__ember_auto_import__/node_modules/moment/locale/ar.js","webpack://__ember_auto_import__/node_modules/moment/locale/az.js","webpack://__ember_auto_import__/node_modules/moment/locale/be.js","webpack://__ember_auto_import__/node_modules/moment/locale/bg.js","webpack://__ember_auto_import__/node_modules/moment/locale/bm.js","webpack://__ember_auto_import__/node_modules/moment/locale/bn-bd.js","webpack://__ember_auto_import__/node_modules/moment/locale/bn.js","webpack://__ember_auto_import__/node_modules/moment/locale/bo.js","webpack://__ember_auto_import__/node_modules/moment/locale/br.js","webpack://__ember_auto_import__/node_modules/moment/locale/bs.js","webpack://__ember_auto_import__/node_modules/moment/locale/ca.js","webpack://__ember_auto_import__/node_modules/moment/locale/cs.js","webpack://__ember_auto_import__/node_modules/moment/locale/cv.js","webpack://__ember_auto_import__/node_modules/moment/locale/cy.js","webpack://__ember_auto_import__/node_modules/moment/locale/da.js","webpack://__ember_auto_import__/node_modules/moment/locale/de-at.js","webpack://__ember_auto_import__/node_modules/moment/locale/de-ch.js","webpack://__ember_auto_import__/node_modules/moment/locale/de.js","webpack://__ember_auto_import__/node_modules/moment/locale/dv.js","webpack://__ember_auto_import__/node_modules/moment/locale/el.js","webpack://__ember_auto_import__/node_modules/moment/locale/en-au.js","webpack://__ember_auto_import__/node_modules/moment/locale/en-ca.js","webpack://__ember_auto_import__/node_modules/moment/locale/en-gb.js","webpack://__ember_auto_import__/node_modules/moment/locale/en-ie.js","webpack://__ember_auto_import__/node_modules/moment/locale/en-il.js","webpack://__ember_auto_import__/node_modules/moment/locale/en-in.js","webpack://__ember_auto_import__/node_modules/moment/locale/en-nz.js","webpack://__ember_auto_import__/node_modules/moment/locale/en-sg.js","webpack://__ember_auto_import__/node_modules/moment/locale/eo.js","webpack://__ember_auto_import__/node_modules/moment/locale/es-do.js","webpack://__ember_auto_import__/node_modules/moment/locale/es-mx.js","webpack://__ember_auto_import__/node_modules/moment/locale/es-us.js","webpack://__ember_auto_import__/node_modules/moment/locale/es.js","webpack://__ember_auto_import__/node_modules/moment/locale/et.js","webpack://__ember_auto_import__/node_modules/moment/locale/eu.js","webpack://__ember_auto_import__/node_modules/moment/locale/fa.js","webpack://__ember_auto_import__/node_modules/moment/locale/fi.js","webpack://__ember_auto_import__/node_modules/moment/locale/fil.js","webpack://__ember_auto_import__/node_modules/moment/locale/fo.js","webpack://__ember_auto_import__/node_modules/moment/locale/fr-ca.js","webpack://__ember_auto_import__/node_modules/moment/locale/fr-ch.js","webpack://__ember_auto_import__/node_modules/moment/locale/fr.js","webpack://__ember_auto_import__/node_modules/moment/locale/fy.js","webpack://__ember_auto_import__/node_modules/moment/locale/ga.js","webpack://__ember_auto_import__/node_modules/moment/locale/gd.js","webpack://__ember_auto_import__/node_modules/moment/locale/gl.js","webpack://__ember_auto_import__/node_modules/moment/locale/gom-deva.js","webpack://__ember_auto_import__/node_modules/moment/locale/gom-latn.js","webpack://__ember_auto_import__/node_modules/moment/locale/gu.js","webpack://__ember_auto_import__/node_modules/moment/locale/he.js","webpack://__ember_auto_import__/node_modules/moment/locale/hi.js","webpack://__ember_auto_import__/node_modules/moment/locale/hr.js","webpack://__ember_auto_import__/node_modules/moment/locale/hu.js","webpack://__ember_auto_import__/node_modules/moment/locale/hy-am.js","webpack://__ember_auto_import__/node_modules/moment/locale/id.js","webpack://__ember_auto_import__/node_modules/moment/locale/is.js","webpack://__ember_auto_import__/node_modules/moment/locale/it-ch.js","webpack://__ember_auto_import__/node_modules/moment/locale/it.js","webpack://__ember_auto_import__/node_modules/moment/locale/ja.js","webpack://__ember_auto_import__/node_modules/moment/locale/jv.js","webpack://__ember_auto_import__/node_modules/moment/locale/ka.js","webpack://__ember_auto_import__/node_modules/moment/locale/kk.js","webpack://__ember_auto_import__/node_modules/moment/locale/km.js","webpack://__ember_auto_import__/node_modules/moment/locale/kn.js","webpack://__ember_auto_import__/node_modules/moment/locale/ko.js","webpack://__ember_auto_import__/node_modules/moment/locale/ku.js","webpack://__ember_auto_import__/node_modules/moment/locale/ky.js","webpack://__ember_auto_import__/node_modules/moment/locale/lb.js","webpack://__ember_auto_import__/node_modules/moment/locale/lo.js","webpack://__ember_auto_import__/node_modules/moment/locale/lt.js","webpack://__ember_auto_import__/node_modules/moment/locale/lv.js","webpack://__ember_auto_import__/node_modules/moment/locale/me.js","webpack://__ember_auto_import__/node_modules/moment/locale/mi.js","webpack://__ember_auto_import__/node_modules/moment/locale/mk.js","webpack://__ember_auto_import__/node_modules/moment/locale/ml.js","webpack://__ember_auto_import__/node_modules/moment/locale/mn.js","webpack://__ember_auto_import__/node_modules/moment/locale/mr.js","webpack://__ember_auto_import__/node_modules/moment/locale/ms-my.js","webpack://__ember_auto_import__/node_modules/moment/locale/ms.js","webpack://__ember_auto_import__/node_modules/moment/locale/mt.js","webpack://__ember_auto_import__/node_modules/moment/locale/my.js","webpack://__ember_auto_import__/node_modules/moment/locale/nb.js","webpack://__ember_auto_import__/node_modules/moment/locale/ne.js","webpack://__ember_auto_import__/node_modules/moment/locale/nl-be.js","webpack://__ember_auto_import__/node_modules/moment/locale/nl.js","webpack://__ember_auto_import__/node_modules/moment/locale/nn.js","webpack://__ember_auto_import__/node_modules/moment/locale/oc-lnc.js","webpack://__ember_auto_import__/node_modules/moment/locale/pa-in.js","webpack://__ember_auto_import__/node_modules/moment/locale/pl.js","webpack://__ember_auto_import__/node_modules/moment/locale/pt-br.js","webpack://__ember_auto_import__/node_modules/moment/locale/pt.js","webpack://__ember_auto_import__/node_modules/moment/locale/ro.js","webpack://__ember_auto_import__/node_modules/moment/locale/ru.js","webpack://__ember_auto_import__/node_modules/moment/locale/sd.js","webpack://__ember_auto_import__/node_modules/moment/locale/se.js","webpack://__ember_auto_import__/node_modules/moment/locale/si.js","webpack://__ember_auto_import__/node_modules/moment/locale/sk.js","webpack://__ember_auto_import__/node_modules/moment/locale/sl.js","webpack://__ember_auto_import__/node_modules/moment/locale/sq.js","webpack://__ember_auto_import__/node_modules/moment/locale/sr-cyrl.js","webpack://__ember_auto_import__/node_modules/moment/locale/sr.js","webpack://__ember_auto_import__/node_modules/moment/locale/ss.js","webpack://__ember_auto_import__/node_modules/moment/locale/sv.js","webpack://__ember_auto_import__/node_modules/moment/locale/sw.js","webpack://__ember_auto_import__/node_modules/moment/locale/ta.js","webpack://__ember_auto_import__/node_modules/moment/locale/te.js","webpack://__ember_auto_import__/node_modules/moment/locale/tet.js","webpack://__ember_auto_import__/node_modules/moment/locale/tg.js","webpack://__ember_auto_import__/node_modules/moment/locale/th.js","webpack://__ember_auto_import__/node_modules/moment/locale/tk.js","webpack://__ember_auto_import__/node_modules/moment/locale/tl-ph.js","webpack://__ember_auto_import__/node_modules/moment/locale/tlh.js","webpack://__ember_auto_import__/node_modules/moment/locale/tr.js","webpack://__ember_auto_import__/node_modules/moment/locale/tzl.js","webpack://__ember_auto_import__/node_modules/moment/locale/tzm-latn.js","webpack://__ember_auto_import__/node_modules/moment/locale/tzm.js","webpack://__ember_auto_import__/node_modules/moment/locale/ug-cn.js","webpack://__ember_auto_import__/node_modules/moment/locale/uk.js","webpack://__ember_auto_import__/node_modules/moment/locale/ur.js","webpack://__ember_auto_import__/node_modules/moment/locale/uz-latn.js","webpack://__ember_auto_import__/node_modules/moment/locale/uz.js","webpack://__ember_auto_import__/node_modules/moment/locale/vi.js","webpack://__ember_auto_import__/node_modules/moment/locale/x-pseudo.js","webpack://__ember_auto_import__/node_modules/moment/locale/yo.js","webpack://__ember_auto_import__/node_modules/moment/locale/zh-cn.js","webpack://__ember_auto_import__/node_modules/moment/locale/zh-hk.js","webpack://__ember_auto_import__/node_modules/moment/locale/zh-mo.js","webpack://__ember_auto_import__/node_modules/moment/locale/zh-tw.js","webpack://__ember_auto_import__/node_modules/moment/moment.js","webpack://__ember_auto_import__/src/utils/isBrowser.js","webpack://__ember_auto_import__/src/utils/debounce.js","webpack://__ember_auto_import__/src/utils/isFunction.js","webpack://__ember_auto_import__/src/utils/getStyleComputedProperty.js","webpack://__ember_auto_import__/src/utils/getParentNode.js","webpack://__ember_auto_import__/src/utils/getScrollParent.js","webpack://__ember_auto_import__/src/utils/getReferenceNode.js","webpack://__ember_auto_import__/src/utils/isIE.js","webpack://__ember_auto_import__/src/utils/getOffsetParent.js","webpack://__ember_auto_import__/src/utils/getRoot.js","webpack://__ember_auto_import__/src/utils/findCommonOffsetParent.js","webpack://__ember_auto_import__/src/utils/isOffsetContainer.js","webpack://__ember_auto_import__/src/utils/getScroll.js","webpack://__ember_auto_import__/src/utils/includeScroll.js","webpack://__ember_auto_import__/src/utils/getBordersSize.js","webpack://__ember_auto_import__/src/utils/getWindowSizes.js","webpack://__ember_auto_import__/src/utils/getClientRect.js","webpack://__ember_auto_import__/src/utils/getBoundingClientRect.js","webpack://__ember_auto_import__/src/utils/getOffsetRectRelativeToArbitraryNode.js","webpack://__ember_auto_import__/src/utils/getViewportOffsetRectRelativeToArtbitraryNode.js","webpack://__ember_auto_import__/src/utils/isFixed.js","webpack://__ember_auto_import__/src/utils/getFixedPositionOffsetParent.js","webpack://__ember_auto_import__/src/utils/getBoundaries.js","webpack://__ember_auto_import__/src/utils/computeAutoPlacement.js","webpack://__ember_auto_import__/src/utils/getReferenceOffsets.js","webpack://__ember_auto_import__/src/utils/getOuterSizes.js","webpack://__ember_auto_import__/src/utils/getOppositePlacement.js","webpack://__ember_auto_import__/src/utils/getPopperOffsets.js","webpack://__ember_auto_import__/src/utils/find.js","webpack://__ember_auto_import__/src/utils/runModifiers.js","webpack://__ember_auto_import__/src/utils/findIndex.js","webpack://__ember_auto_import__/src/methods/update.js","webpack://__ember_auto_import__/src/utils/isModifierEnabled.js","webpack://__ember_auto_import__/src/utils/getSupportedPropertyName.js","webpack://__ember_auto_import__/src/methods/destroy.js","webpack://__ember_auto_import__/src/utils/getWindow.js","webpack://__ember_auto_import__/src/utils/setupEventListeners.js","webpack://__ember_auto_import__/src/methods/enableEventListeners.js","webpack://__ember_auto_import__/src/methods/disableEventListeners.js","webpack://__ember_auto_import__/src/utils/removeEventListeners.js","webpack://__ember_auto_import__/src/utils/isNumeric.js","webpack://__ember_auto_import__/src/utils/setStyles.js","webpack://__ember_auto_import__/src/modifiers/computeStyle.js","webpack://__ember_auto_import__/src/utils/isModifierRequired.js","webpack://__ember_auto_import__/src/methods/placements.js","webpack://__ember_auto_import__/src/utils/clockwise.js","webpack://__ember_auto_import__/src/modifiers/index.js","webpack://__ember_auto_import__/src/methods/defaults.js","webpack://__ember_auto_import__/src/modifiers/shift.js","webpack://__ember_auto_import__/src/modifiers/offset.js","webpack://__ember_auto_import__/src/modifiers/preventOverflow.js","webpack://__ember_auto_import__/src/modifiers/keepTogether.js","webpack://__ember_auto_import__/src/modifiers/arrow.js","webpack://__ember_auto_import__/src/modifiers/flip.js","webpack://__ember_auto_import__/src/utils/getOppositeVariation.js","webpack://__ember_auto_import__/src/modifiers/inner.js","webpack://__ember_auto_import__/src/modifiers/hide.js","webpack://__ember_auto_import__/src/utils/getRoundedOffsets.js","webpack://__ember_auto_import__/src/modifiers/applyStyle.js","webpack://__ember_auto_import__/src/utils/setAttributes.js","webpack://__ember_auto_import__/lib/rsvp/events.js","webpack://__ember_auto_import__/lib/rsvp/config.js","webpack://__ember_auto_import__/lib/rsvp/instrument.js","webpack://__ember_auto_import__/lib/rsvp/promise/resolve.js","webpack://__ember_auto_import__/lib/rsvp/-internal.js","webpack://__ember_auto_import__/lib/rsvp/then.js","webpack://__ember_auto_import__/lib/rsvp/enumerator.js","webpack://__ember_auto_import__/lib/rsvp/promise.js","webpack://__ember_auto_import__/lib/rsvp/node.js","webpack://__ember_auto_import__/lib/rsvp/all.js","webpack://__ember_auto_import__/lib/rsvp/promise/all.js","webpack://__ember_auto_import__/lib/rsvp/promise/race.js","webpack://__ember_auto_import__/lib/rsvp/promise/reject.js","webpack://__ember_auto_import__/lib/rsvp/all-settled.js","webpack://__ember_auto_import__/lib/rsvp/race.js","webpack://__ember_auto_import__/lib/rsvp/promise-hash.js","webpack://__ember_auto_import__/lib/rsvp/hash.js","webpack://__ember_auto_import__/lib/rsvp/hash-settled.js","webpack://__ember_auto_import__/lib/rsvp/rethrow.js","webpack://__ember_auto_import__/lib/rsvp/defer.js","webpack://__ember_auto_import__/lib/rsvp/map.js","webpack://__ember_auto_import__/lib/rsvp/resolve.js","webpack://__ember_auto_import__/lib/rsvp/reject.js","webpack://__ember_auto_import__/lib/rsvp/filter.js","webpack://__ember_auto_import__/lib/rsvp/asap.js","webpack://__ember_auto_import__/lib/rsvp.js","webpack://__ember_auto_import__/src/options.js","webpack://__ember_auto_import__/src/showdown.js","webpack://__ember_auto_import__/src/helpers.js","webpack://__ember_auto_import__/src/converter.js","webpack://__ember_auto_import__/src/subParsers/anchors.js","webpack://__ember_auto_import__/src/subParsers/autoLinks.js","webpack://__ember_auto_import__/src/subParsers/blockGamut.js","webpack://__ember_auto_import__/src/subParsers/blockQuotes.js","webpack://__ember_auto_import__/src/subParsers/codeBlocks.js","webpack://__ember_auto_import__/src/subParsers/codeSpans.js","webpack://__ember_auto_import__/src/subParsers/completeHTMLDocument.js","webpack://__ember_auto_import__/src/subParsers/detab.js","webpack://__ember_auto_import__/src/subParsers/ellipsis.js","webpack://__ember_auto_import__/src/subParsers/emoji.js","webpack://__ember_auto_import__/src/subParsers/encodeAmpsAndAngles.js","webpack://__ember_auto_import__/src/subParsers/encodeBackslashEscapes.js","webpack://__ember_auto_import__/src/subParsers/encodeCode.js","webpack://__ember_auto_import__/src/subParsers/escapeSpecialCharsWithinTagAttributes.js","webpack://__ember_auto_import__/src/subParsers/githubCodeBlocks.js","webpack://__ember_auto_import__/src/subParsers/hashBlock.js","webpack://__ember_auto_import__/src/subParsers/hashCodeTags.js","webpack://__ember_auto_import__/src/subParsers/hashElement.js","webpack://__ember_auto_import__/src/subParsers/hashHTMLBlocks.js","webpack://__ember_auto_import__/src/subParsers/hashHTMLSpans.js","webpack://__ember_auto_import__/src/subParsers/hashPreCodeTags.js","webpack://__ember_auto_import__/src/subParsers/headers.js","webpack://__ember_auto_import__/src/subParsers/horizontalRule.js","webpack://__ember_auto_import__/src/subParsers/images.js","webpack://__ember_auto_import__/src/subParsers/italicsAndBold.js","webpack://__ember_auto_import__/src/subParsers/lists.js","webpack://__ember_auto_import__/src/subParsers/metadata.js","webpack://__ember_auto_import__/src/subParsers/outdent.js","webpack://__ember_auto_import__/src/subParsers/paragraphs.js","webpack://__ember_auto_import__/src/subParsers/runExtension.js","webpack://__ember_auto_import__/src/subParsers/spanGamut.js","webpack://__ember_auto_import__/src/subParsers/strikethrough.js","webpack://__ember_auto_import__/src/subParsers/stripLinkDefinitions.js","webpack://__ember_auto_import__/src/subParsers/tables.js","webpack://__ember_auto_import__/src/subParsers/underline.js","webpack://__ember_auto_import__/src/subParsers/unescapeSpecialChars.js","webpack://__ember_auto_import__/src/subParsers/makeMarkdown/blockquote.js","webpack://__ember_auto_import__/src/subParsers/makeMarkdown/codeBlock.js","webpack://__ember_auto_import__/src/subParsers/makeMarkdown/codeSpan.js","webpack://__ember_auto_import__/src/subParsers/makeMarkdown/emphasis.js","webpack://__ember_auto_import__/src/subParsers/makeMarkdown/header.js","webpack://__ember_auto_import__/src/subParsers/makeMarkdown/hr.js","webpack://__ember_auto_import__/src/subParsers/makeMarkdown/image.js","webpack://__ember_auto_import__/src/subParsers/makeMarkdown/links.js","webpack://__ember_auto_import__/src/subParsers/makeMarkdown/list.js","webpack://__ember_auto_import__/src/subParsers/makeMarkdown/listItem.js","webpack://__ember_auto_import__/src/subParsers/makeMarkdown/node.js","webpack://__ember_auto_import__/src/subParsers/makeMarkdown/paragraph.js","webpack://__ember_auto_import__/src/subParsers/makeMarkdown/pre.js","webpack://__ember_auto_import__/src/subParsers/makeMarkdown/strikethrough.js","webpack://__ember_auto_import__/src/subParsers/makeMarkdown/strong.js","webpack://__ember_auto_import__/src/subParsers/makeMarkdown/table.js","webpack://__ember_auto_import__/src/subParsers/makeMarkdown/tableCell.js","webpack://__ember_auto_import__/src/subParsers/makeMarkdown/txt.js","webpack://__ember_auto_import__/src/loader.js","webpack://__ember_auto_import__/popper/src/utils/isFunction.js"],"names":["_asyncIterator","t","e","r","i","a","Symbol","asyncIterator","iterator","call","AsyncFromSyncIterator","TypeError","Object","Promise","reject","done","resolve","value","then","this","s","n","next","prototype","apply","arguments","return","throw","REACT_ELEMENT_TYPE","_jsx","for","defaultProps","length","children","Array","o","h","$$typeof","type","key","ref","props","_owner","ownKeys","keys","getOwnPropertySymbols","filter","getOwnPropertyDescriptor","enumerable","push","_objectSpread2","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_typeof","_typeof2","constructor","_wrapRegExp","RegExp","WeakMap","set","get","_setPrototypeOf","reduce","create","_inherits","exec","groups","replace","slice","_AwaitValue","wrapped","_AsyncGenerator","arg","_invoke","_wrapAsyncGenerator","_awaitAsyncGenerator","_asyncGeneratorDelegate","asyncGeneratorStep","_asyncToGenerator","_classCallCheck","_defineProperties","configurable","writable","_createClass","_defineEnumerableProperties","_defaults","getOwnPropertyNames","_extends","assign","hasOwnProperty","_objectSpread","_inheritsLoose","_getPrototypeOf","setPrototypeOf","getPrototypeOf","__proto__","_isNativeReflectConstruct","Reflect","construct","sham","Proxy","Boolean","valueOf","_construct","Function","bind","_isNativeFunction","toString","indexOf","_wrapNativeSuper","Map","has","_instanceof","hasInstance","_interopRequireDefault","__esModule","default","_getRequireWildcardCache","_interopRequireWildcard","_newArrowCheck","_objectDestructuringEmpty","_objectWithoutPropertiesLoose","_objectWithoutProperties","propertyIsEnumerable","_assertThisInitialized","ReferenceError","_possibleConstructorReturn","_createSuper","_superPropBase","_get","_set","Error","_taggedTemplateLiteral","freeze","raw","_taggedTemplateLiteralLoose","_readOnlyError","_writeOnlyError","_classNameTDZError","_temporalUndefined","_tdz","_temporalRef","_slicedToArray","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","_slicedToArrayLoose","_iterableToArrayLimitLoose","_toArray","_iterableToArray","_toConsumableArray","_arrayWithoutHoles","_nonIterableSpread","isArray","_arrayLikeToArray","_maybeArrayLike","from","_step","name","test","_createForOfIteratorHelper","f","_createForOfIteratorHelperLoose","_skipFirstGeneratorNext","_toPrimitive","toPrimitive","String","Number","_toPropertyKey","_initializerWarningHelper","_initializerDefineProperty","initializer","_applyDecoratedDescriptor","reverse","id","_classPrivateFieldLooseKey","_classPrivateFieldLooseBase","_classPrivateFieldGet","_classApplyDescriptorGet","_classExtractFieldDescriptor","_classPrivateFieldSet","_classApplyDescriptorSet","_classPrivateFieldDestructureSet","_classApplyDescriptorDestructureSet","_classStaticPrivateFieldSpecGet","_classCheckPrivateStaticAccess","_classCheckPrivateStaticFieldDescriptor","_classStaticPrivateFieldSpecSet","_classStaticPrivateMethodGet","_classStaticPrivateMethodSet","__destrObj","_classStaticPrivateFieldDestructureSet","_decorate","_getDecoratorsApi","initializeInstanceElements","elements","decorateClass","_coalesceClassElements","d","map","_createElementDescriptor","initializeClassElements","F","runClassFinishers","finishers","elementsDefinitionOrder","kind","placement","defineClassElement","descriptor","static","own","addElementPlacement","_hasDecorators","decorateElement","element","extras","decorateConstructor","decorators","splice","fromElementDescriptor","toElementFinisherExtras","finisher","l","p","fromClassDescriptor","toClassDescriptor","toStringTag","toElementDescriptors","toElementDescriptor","disallowProperty","_optionalCallableProperty","_coalesceGetterSetter","find","_isDataDescriptor","_classPrivateMethodGet","_checkPrivateRedeclaration","_classPrivateFieldInitSpec","_classPrivateMethodInitSpec","add","_classPrivateMethodSet","_extendStatics","__extends","_assign","__rest","__decorate","decorate","__param","__metadata","metadata","__awaiter","__generator","label","sent","trys","ops","pop","__createBinding","__exportStar","__values","__read","error","__spread","concat","__spreadArrays","__spreadArray","__await","v","__asyncGenerator","shift","__asyncDelegator","__asyncValues","__makeTemplateObject","__setModuleDefault","__importStar","__importDefault","__classPrivateFieldGet","__classPrivateFieldSet","t$3","window","ShadowRoot","ShadyCSS","nativeShadow","Document","CSSStyleSheet","e$8","n$5","s$3","_classCallCheck2","_$cssResult$","cssText","_createClass2","replaceSync","o$5","r$3","i$3","adoptedStyleSheets","styleSheet","document","createElement","litNonce","setAttribute","textContent","appendChild","S$1","_createForOfIteratorHelper2","cssRules","s$2","e$7","trustedTypes","r$2","emptyScript","h$2","reactiveElementPolyfillSupport","o$4","toAttribute","JSON","stringify","fromAttribute","parse","n$4","l$3","attribute","converter","reflect","hasChanged","t$2","a$1","_$Et","isUpdatePending","hasUpdated","_$Ei","_$Ep","enableUpdating","_$AL","_$Em","requestUpdate","_$Eg","renderRoot","isConnected","hostConnected","elementProperties","shadowRoot","attachShadow","shadowRootOptions","elementStyles","createRenderRoot","hostDisconnected","_$AK","_$Eh","removeAttribute","_$Eu","getPropertyOptions","_$E_","_$EC","regeneratorRuntime","mark","wrap","prev","t0","catch","scheduleUpdate","t1","abrupt","stop","performUpdate","shouldUpdate","willUpdate","hostUpdate","update","_$EU","_$AE","hostUpdated","firstUpdated","updated","getUpdateComplete","_$ES","finalize","state","noAccessor","getPropertyDescriptor","finalized","properties","_toConsumableArray2","createProperty","finalizeStyles","styles","Set","flat","unshift","toLowerCase","_wrapNativeSuper2","HTMLElement","mode","ReactiveElement","globalThis","reactiveElementVersions","i$2","s$1","createPolicy","createHTML","e$6","Math","random","o$3","n$3","l$2","h$1","createComment","r$1","u","c","_","m","g","_$litType$","strings","values","$","y","b","w","T","x","renderBefore","_$litPart$","N","insertBefore","_$AI","A","createTreeWalker","C","lastIndex","startsWith","P","E","parts","_slicedToArray2","el","currentNode","content","firstChild","remove","append","childNodes","nextNode","nodeType","hasAttributes","getAttributeNames","endsWith","getAttribute","split","index","ctor","M","H","I","S","L","tagName","data","innerHTML","_$Cl","_$Cu","_$litDirective$","_$AO","_$AT","_$AS","V","_$AN","_$AD","_$AM","parentNode","_$AU","creationScope","importNode","nextSibling","_$AH","_$AA","_$AB","options","_$Cg","_$AR","createTextNode","_$AC","_$AP","fill","k","capture","once","passive","removeEventListener","addEventListener","host","handleEvent","R","D","j","O","B","W","Z","z","litHtmlPolyfillSupport","l$1","o$2","litHtmlVersions","renderOptions","_assertThisInitialized2","_$Dt","_get2","_getPrototypeOf2","render","setConnected","_$litElement$","litElementHydrateSupport","LitElement","n$2","litElementPolyfillSupport","litElementVersions","n$1","customElements","define","i$1","originalKey","e$5","t$1","e$4","o$1","e$3","querySelector","e$2","querySelectorAll","e$1","updateComplete","HTMLSlotElement","assignedElements","assignedNodes","Node","ELEMENT_NODE","slot","selector","matches","flatten","commonjsGlobal","global","self","getDefaultExportFromCjs","getDefaultExportFromNamespaceIfPresent","getDefaultExportFromNamespaceIfNotNamed","getAugmentedNamespace","commonjsRequire","lottie$1","exports","module","root","factory","navigator","svgNS","locationHref","initialDefaultFrame","_useWebWorker","subframeEnabled","idPrefix","expressionsPlugin","isSafari","userAgent","cachedColors","bmRnd","bmPow","pow","bmSqrt","sqrt","bmFloor","floor","bmMax","max","bmMin","min","BMMath","ProjectInterface","abs","createSizedArray","defaultCurveSegments","degToRads","PI","roundCorner","roundValues","round","styleDiv","style","position","top","left","display","transformOrigin","webkitTransformOrigin","backfaceVisibility","webkitBackfaceVisibility","transformStyle","webkitTransformStyle","mozTransformStyle","BMEnterFrameEvent","currentTime","totalTime","direction","BMCompleteEvent","BMCompleteLoopEvent","currentLoop","totalLoops","BMSegmentStartEvent","firstFrame","totalFrames","BMDestroyEvent","target","BMRenderFrameErrorEvent","nativeError","BMConfigErrorEvent","BMAnimationConfigErrorEvent","createElementID","_count","HSVtoRGB","RGBtoHSV","addSaturationToRGB","addBrightnessToRGB","addHueToRGB","rgbToHex","BaseEvent","triggerEvent","_cbs","createTypedArray","Uint8ClampedArray","Float32Array","Int16Array","createNS","createElementNS","createTag","DynamicPropertyContainer","addDynamicProperty","dynamicProperties","container","_isAnimated","iterateDynamicProperties","_mdf","getValue","initDynamicPropertyContainer","getBlendMode","blendModeEnums","0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","lineCapEnum","lineJoinEnum","Matrix","cos","sin","tan","_t","shear","_identityCalculated","_identity","getInverseMatrix","applyToPointArray","isIdentity","reset","rotate","rotateX","rotateY","rotateZ","skew","skewFromAxis","scale","setTransform","translate","transform","applyToPoint","applyToX","applyToY","applyToZ","applyToTriplePoints","applyToPointStringified","toCSS","to2dCSS","clone","cloneFromProps","equals","inversePoints","inversePoint","charCodeAt","fromCharCode","seedrandom","entropy","Uint8Array","crypto","msCrypto","getRandomValues","plugins","Date","screen","int32","quick","double","pass","BezierFactory","getBezierEasing","_p","_mSampleValues","_precomputed","_precompute","_getTForX","_calcSampleValues","extendPrototype","getDescriptor","createProxyFunction","bezFunction","bezierLengthPool","newElement","percents","lengths","addedLength","segmentLength","points","partialLength","point","getSegmentsLength","segmentsLengthPool","_length","totalLength","getNewSegment","getPointInSegment","buildBezierData","pointOnLine2D","pointOnLine3D","requestAnimationFrame","cancelAnimationFrame","getTime","setTimeout","clearTimeout","bez","dataManager","onmessage","postMessage","_workerSelf","Worker","Blob","URL","createObjectURL","completed","tt","td","hasMask","masksProperties","pt","ty","layers","refId","shapes","__used","ks","it","assets","chars","__converted","closed","cl","singleShape","completeData","__complete","checkColors","checkChars","checkPathProperties","checkShapes","completeLayers","assetLoader","getResponseHeader","responseType","response","responseText","load","XMLHttpRequest","onreadystatechange","readyState","status","open","send","path","fullPath","payload","animation","onComplete","onError","loadAnimation","location","origin","pathname","loadData","completeAnimation","getFontProperties","fStyle","weight","fWeight","FontManager","size","fontFamily","innerText","fontSize","fontVariant","fontStyle","fontWeight","letterSpacing","body","offsetWidth","join","node","parent","fFamily","fClass","getContext","font","fonts","typekitLoaded","isLoaded","_warned","initTime","now","setIsLoadedBinded","setIsLoaded","checkLoadedFontsBinded","checkLoadedFonts","isModifier","isZeroWidthJoiner","isCombinedCharacter","addChars","ch","addFonts","list","loaded","monoCase","sansCase","fPath","fOrigin","href","rel","src","helper","cache","getCharData","console","warn","getFontByName","fName","measureText","getComputedTextLength","removeChild","PropertyFactory","offsetTime","propType","pv","keyframes","keyframesMetadata","to","bezierData","ti","__fnct","lastFrame","_lastKeyframeIndex","_lastAddedLength","_lastPoint","sh","acos","atan2","asin","keyframeMetadata","comp","renderedFrame","_caching","interpolateValue","mult","elem","globalData","frameId","effectsSequence","lock","setVValue","_isFirstFrame","kf","vel","addEffect","st","getProp","TransformPropertyFactory","pre","appliedTransformations","px","py","pz","rx","ry","rz","or","sk","sa","_isDirty","applyToMatrix","precalculateMatrix","autoOriented","frameRate","getValueAtTime","autoOrient","_addDynamicProperty","getTransformProperty","ShapePath","_maxLength","setPathData","setLength","pointPool","doubleArrayLength","setXYAt","setTripleAt","ShapePropertyFactory","interpolateShape","paths","localShapeCollection","shapePool","releaseShapes","addShape","shapeCollectionPool","newShapeCollection","convertEllToPath","sy","ir","is","convertToPath","convertStarToPath","convertPolygonToPath","os","convertRectToPath","getShapeProp","getConstructorFunction","getKeyframedConstructorFunction","ShapeModifiers","ob","modifiers","registerModifier","getModifier","ShapeModifier","TrimModifier","RoundCornersModifier","PuckerAndBloatModifier","RepeaterModifier","ShapeCollection","DashProperty","dataProps","renderer","dashStr","dashArray","dashoffset","GradientProperty","_cmdf","_omdf","_collapsable","checkCollapsable","_hasOpacity","prop","initModifierProperties","addShapeToModifier","shape","setAsAnimated","init","processKeys","sValue","eValue","pathsData","calculateShapeEdges","releasePathsData","release","processShapes","totalShapeLength","addShapes","addPaths","addSegment","addSegmentFromArray","rd","processPath","amount","tr","so","eo","pMatrix","rMatrix","sMatrix","tMatrix","matrix","applyTransforms","arr","pos","elemsData","_currentCopies","_elements","_groups","resetElements","_processed","cloneElements","changeGroupRender","_render","ceil","ix","nm","reloadShapes","op","mProps","comparePoints","buildShapeString","audioControllerFactory","audios","audioFactory","_volume","_isMuted","addAudio","pause","resume","setRate","createAudio","Howl","isPlaying","play","seek","playing","rate","setVolume","setAudioFactory","_updateVolume","mute","unmute","getVolume","volume","ImagePreloader","width","height","fillStyle","fillRect","loadedAssets","totalImages","loadedFootagesCount","totalFootages","imagesLoadedCb","setInterval","getBBox","_imageLoaded","clearInterval","assetData","assetsPath","img","_footageLoaded","testImageLoaded","createFootageData","images","loadAssets","_createImageData","setAssetsPath","setPath","loadedImages","loadedFootages","destroy","getAsset","createImgData","crossOrigin","createImageData","setAttributeNS","_elementHelper","imageLoaded","footageLoaded","setCacheType","featureSupport","maskType","filtersFactory","createFilter","createAlphaToLuminanceFilter","TextAnimatorProperty","_hasMaskedPath","_frameId","_textData","_renderType","_elem","_animatorsData","_pathData","_moreOptions","alignment","renderedLetters","lettersChangedFlag","TextAnimatorDataProperty","sw","sc","fc","fh","fs","fb","TextSelectorProp","getTextSelectorProp","LetterProps","TextProperty","keysIndex","canResize","minimumFontSize","currentData","ascent","boxWidth","defaultBoxWidth","justifyOffset","lh","lineWidths","ls","of","sz","ps","fillColorAnim","strokeColorAnim","strokeWidthAnim","yOffset","finalSize","finalText","finalLineHeight","copyData","searchProperty","completeTextData","searchProperties","maskManager","getMaskProperty","getMeasures","mHelper","tLength","segments","pi","G","q","U","Y","X","K","J","Q","et","defaultPropsArray","rt","at","nt","animatorJustifyOffset","getMult","anIndexes","totalChars","line","ind","extra","an","ot","ht","atan","setCurrentData","searchKeyframes","getKeyframeValue","buildFinalText","charAt","substr","fontManager","val","rn","updateDocumentData","recalculate","canResizeFont","setMinimumFontSize","_currentTextLength","finalS","finalE","xe","ne","sm","textProperty","poolFactory","pooling","markerParser","trim","time","tm","duration","dr","cm","BaseRenderer","SVGRenderer","animationItem","svgElement","title","description","layerElement","renderConfig","preserveAspectRatio","imagePreserveAspectRatio","contentVisibility","progressiveLoad","hideOnTransparent","viewBoxOnly","viewBoxSize","className","focusable","filterSize","frameNum","defs","pendingElements","destroyed","rendererType","CanvasRenderer","clearCanvas","context","dpr","wrapper","devicePixelRatio","currentGlobalAlpha","contextData","CVContextData","transformMat","HybridRenderer","threeDElements","camera","supports3d","MaskElement","storedData","maskElement","viewData","solidPath","inv","lastPath","expan","lastOperator","filterId","lastRadius","createLayerSolidPath","invRect","drawPath","maskedElement","addRenderableComponent","HierarchyElement","FrameElement","TransformElement","RenderableElement","RenderableDOMElement","ProcessedElement","SVGStyleData","lvl","hd","pElem","msElem","SVGShapeData","caches","transformers","lStr","SVGTransformData","SVGStrokeStyleData","SVGFillStyleData","SVGGradientFillStyleData","initGradientData","SVGGradientStrokeStyleData","ShapeGroupData","prevViewData","gr","checkLayers","ip","buildItem","checkPendingElements","createItem","createImage","createComp","createSolid","createNull","createShape","createText","createCamera","createFootage","AudioElement","FootageElement","buildAllItems","includeLayers","setProjectInterface","projectInterface","initItems","buildElementParenting","setAsParent","setHierarchy","addPendingElement","searchExtraCompositions","xt","initExpressions","registerComposition","setupGlobalData","getAssetData","getAssetsPath","imageLoader","imagePreloader","audioController","fr","compSize","NullElement","SVGShapeElement","SVGTextLottieElement","IImageElement","SVGCompElement","ISolidElement","configAnimation","updateContainerSize","appendElementInPos","setMatte","layerId","checkParenting","renderFrame","currentFrame","prepareFrame","getBaseElement","hide","show","CVShapeElement","CVTextElement","CVImageElement","CVCompElement","CVSolidElement","ctxTransform","cTr","canvasContext","ctxOpacity","globalAlpha","cO","restore","save","cArrPos","duplicate","saved","savedOp","blendMode","mozTransformOrigin","transformCanvas","sx","tx","isDashed","offsetHeight","canvas","beginPath","rect","closePath","clip","clearRect","ddd","addTo3dContainer","getThreeDContainerByPos","HShapeElement","HTextElement","HCameraElement","HImageElement","HCompElement","HSolidElement","startPos","endPos","perspectiveElem","createThreeDContainer","webkitTransform","build3dContainers","resizerElem","overflow","setup","webkitPerspective","perspective","finalTransform","mat","mProp","getMaskelement","initHierarchy","hierarchy","_isParent","initFrame","prepareProperties","initTransform","_matMdf","_opMdf","ao","renderTransform","globalToLocal","initRenderable","isInRange","hidden","isTransparent","renderableComponents","removeRenderableComponent","prepareRenderableFrame","checkLayerLimits","checkTransparency","renderRenderable","sourceRectAtTime","getLayerSize","textData","initElement","initBaseData","initRendererElement","createContainerElements","createRenderableComponents","createContent","baseElement","renderElement","renderInnerContent","innerElem","destroyBaseElement","stops","setGradientData","setGradientOpacity","gf","cst","lc","lj","ml","ms","ost","maskId","SVGElementsRenderer","createRenderFunction","ShapeTransformManager","sequences","sequenceList","transform_key_count","CVShapeData","styledShapes","transforms","addTransformSequence","trNodes","BaseElement","SVGBaseElement","IShapeElement","ITextElement","ICompElement","sourceRect","_isPlaying","_canPlay","audio","_currentTime","_placeholder","footageData","textSpans","renderType","shapesData","stylesList","shapeModifiers","itemsData","processedElements","animatedContents","SVGTintFilter","filterManager","matrixFilter","effectElements","SVGFillFilter","SVGGaussianBlurEffect","feGaussianBlur","SVGStrokeEffect","initialized","SVGTritoneFilter","feFuncR","feFuncG","feFuncB","SVGProLevelsFilter","createFeFunc","feFuncA","feFuncRComposed","feFuncGComposed","feFuncBComposed","SVGDropShadowEffect","feOffset","feFlood","feMergeNode","feMerge","originalNodeAdded","processSequence","processSequences","getNewKey","checkMasks","layerInterface","LayerExpressionInterface","registerMaskInterface","EffectsExpressionInterface","createEffectsInterface","registerEffectsInterface","compInterface","CompExpressionInterface","shapeInterface","ShapeExpressionInterface","textInterface","TextExpressionInterface","text","setBlendMode","bm","sr","effectsManager","EffectsManager","getType","matteElement","transformedElement","_sizeChanged","ln","renderableEffectsManager","SVGEffects","addShapeToModifiers","isShapeInAnimatedModifiers","isAnimatedWithShape","renderModifiers","searchProcessedElement","addProcessedElement","textAnimator","buildNewText","createPathShape","applyTextPropertiesToMatrix","buildColor","emptyProp","setElements","getElements","destroyElements","pr","FootageInterface","getFootageData","textContainer","buildTextContents","bbox","initSecondaryElement","identityMatrix","buildExpressionInterface","searchShapes","filterUniqueShapes","setShapesAsAnimated","createStyleElement","addToAnimatedContents","createGroupElement","createTransformElement","createShapeElement","fn","setElementStyles","renderShape","initialize","masker","pathMasker","getTotalLength","getTableValue","_svgMatteSymbols","SVGMatte3Effect","filterElem","ef","filters","CVBaseElement","CVMaskElement","hasMasks","transformsManager","stroke","currentRender","sWidth","fValue","CVEffects","HBaseElement","shapesContainer","currentBBox","textPaths","isMasked","pe","_prevMat","HEffects","findSymbol","replaceInParent","setElementAsMask","createElements","globalCompositeOperation","hideElement","showElement","drawImage","moveTo","lineTo","bezierCurveTo","transformHelper","opacity","dashResetter","preTransforms","co","wi","da","do","addTransformToStyleList","removeTransformFromStyleList","closeStyles","_shouldRender","renderShapeTransform","drawLayer","coOp","strokeStyle","grd","lineWidth","lineCap","lineJoin","miterLimit","setLineDash","lineDashOffset","pts","renderPath","renderFill","renderStroke","renderGradientFill","renderStyledShape","createLinearGradient","createRadialGradient","addColorStop","tHelper","checkBlendMode","tg","addEffects","backgroundColor","_createBaseContainerElements","_renderShapeFrame","shapeCont","getTransformedPoint","calculateShapeBoundingBox","checkBounds","getBoundsOfCurve","shapeBoundingBox","xMax","right","yMax","bottom","tempBoundingBox","calculateF","calculateBoundingBox","currentBoxContains","compW","compH","color","strokeWidth","lineHeight","Image","imageElem","animationManager","isPaused","AnimationItem","setData","advanceTime","registerAnimation","setParams","setSpeed","setDirection","togglePause","searchAnimations","getElementsByClassName","getElementsByTagName","resize","goToAndStop","unfreeze","getRegisteredAnimations","currentRawFrame","frameMult","playSpeed","playDirection","playCount","animationData","autoplay","loop","animationID","timeCompleted","segmentPos","isSubframeEnabled","_idle","_completedLoop","markers","onSetupError","onSegmentComplete","animType","rendererSettings","parseInt","autoloadSegments","initialSegment","setupAnimation","lastIndexOf","fileName","trigger","attributes","getNamedItem","prerender","loadNextSegment","loadSegments","imagesLoaded","checkLoaded","preloadImages","updaFrameModifier","waitForFontsLoaded","triggerConfigError","gotoFrame","setSubframe","triggerRenderFrameError","setCurrentRawFrameValue","getMarkerData","isNaN","frameModifier","goToAndPlay","playSegments","checkSegments","adjustSegment","setSegment","resetSegments","onEnterFrame","onLoopComplete","onSegmentStart","onDestroy","getPath","getDuration","Expressions","pushExpression","popExpression","registerExpressionProperty","ExpressionManager","fetch","frames","$bm_isInstanceOfArray","isNumerable","$bm_neg","easeInBez","easeOutBez","easeInOutBez","sum","sub","mul","div","mod","$bm_sum","$bm_sub","$bm_mul","$bm_div","$bm_mod","clamp","radiansToDegrees","radians_to_degrees","degreesToRadians","degrees_to_radians","helperLengthArray","normalize","rgbToHsl","hue2rgb","hslToRgb","linear","createPath","initiateExpression","property","needsVelocity","_needsRandom","elemType","$bm_transform","effect","thisProperty","valueAtTime","frameDuration","displayStartTime","inPoint","outPoint","loopIn","loop_in","loopOut","loop_out","smooth","toWorld","fromWorld","fromComp","toComp","fromCompToSurface","rotation","anchorPoint","thisLayer","thisComp","mask","velocityAtTime","scoped_bm_rt","expression_function","eval","numKeys","active","wiggle","loopInDuration","loopOutDuration","getVelocityAtTime","velocity","textIndex","textTotal","selectorValue","lookAt","easeOut","applyEase","easeIn","ease","nearestKey","framesToTime","timeToFrames","seedRandom","randSeed","substring","posterizeTime","hasParent","executeExpression","frameExpressionId","expressionHelpers","searchExpressions","getSpeedAtTime","_cachingAtTime","getStaticValueAtTime","setGroupProperty","propertyGroup","_transformCachingAtTime","propertyIndex","vertices","inTangents","outTangents","isClosed","pointOnPath","_segmentsLength","vectorOnPath","tangentOnPath","normalOnPath","shapeValue","lastTime","getExpressionValue","calculateExpression","ShapePathInterface","propertyGroupFactory","PropertyInterface","_name","mn","numProperties","cix","np","ExpressionPropertyInterface","startPoint","endPoint","dash","end","start","offset","skewAxis","outerRadius","outerRoundness","innerRoundness","innerRadius","roundness","radius","copies","sourceText","getMatrix","applyPoint","invertPoint","toWorldVec","fromWorldVec","sampleImage","TransformExpressionInterface","anchor_point","startTime","source","MaskManagerInterface","dataInterfaceFactory","outlineInterface","dataInterface","layer","pixelAspect","numLayers","xRotation","yRotation","xPosition","yPosition","zPosition","compositions","enabled","en","_mask","_data","speedAtTime","TextExpressionSelectorPropFactory","lastValue","propertyGetTextProp","SliderEffect","AngleEffect","ColorEffect","PointEffect","LayerIndexEffect","MaskIndexEffect","CheckboxEffect","NoValueEffect","GroupEffect","lottie","setLocationHref","standalone","setSubframeRendering","setIDPrefix","setQuality","inBrowser","installPlugin","getFactory","checkReady","readyStateCheckInterval","getQueryVariable","queryString","decodeURIComponent","useWebWorker","__getFactory","version","scripts","myScript","bodymovin","_templateObject$1","_templateObject","_templateObject2","_templateObject3","_templateObject4","_templateObject5","PlayerState","PlayMode","PlayerEvents","parseSrc","isLottie","every","fromURL","_fromURL","json","Destroyed","Frozen","Loading","Paused","Playing","Stopped","Bounce","Normal","Complete","Frame","Freeze","Load","Loop","Pause","Play","Ready","Rendered","Stop","LottiePlayer","_inherits2","_createSuper2","background","controls","currentState","hover","intermission","speed","_io","_counter","_lottie","webworkers","_defineProperty2","_attachEventListeners","dispatchEvent","CustomEvent","seeker","XMLSerializer","serializeToString","encodeURIComponent","download","click","setLooping","disconnect","_onVisibilityChange","renderControls","IntersectionObserver","isIntersecting","observe","togglePlay","_handleSeekChange","_prevState","toggleLooping","detail","frame","count","FunctionToString","__init","originalFunctionToString","HK","InboundFilters","_options","getIntegration","getClient","getOptions","ignoreInternal","event","exception","__SENTRY_DEBUG__","logger","message","kg","jH","some","ignoreErrors","getEventDescription","zC","denyUrls","_getEventFilterUrl","allowUrls","internalOptions","clientOptions","DEFAULT_IGNORE_ERRORS","eventProcess","addGlobalEventProcessor","filename","Gd","captureException","captureContext","captureMessage","captureEvent","getCurrentHub","customSamplingContext","startTransaction","makeRequest","makePromiseBuffer","drain","forEachEnvelopeItem","mL","filteredEnvelopeItems","WD","Jd","statusCode","rateLimits","recordEnvelopeLoss","flush","ex","stackParser","stacktrace","stack","framesToPop","extractMessage","te","syntheticException","re","event_id","attachStacktrace","isUnhandledRejection","VW","TX","fm","addExceptionTypeValue","VZ","PO","normalizeDepth","extractExceptionKeysForMessage","__serialized__","addExceptionMechanism","synthetic","input","ie","ae","oe","se","le","ue","ignoreOnError","ce","__sentry_wrapped__","before","ignoreNextOnError","withScope","scope","mechanism","sentryWrapped","markFunctionWrapped","addNonEnumerableProperty","de","he","fe","me","GlobalHandlers","__init2","onerror","onunhandledrejection","_installFunc","globalHandlerLog","log","installFunc","_installGlobalOnErrorHandler","addInstrumentationHandler","we","ye","msg","url","column","__sentry_own_request__","match","ve","_eventFromIncompleteOnError","_enhanceEventWithInitialFrame","eventFromUnknownInput","addMechanismAndCapture","_installGlobalOnUnhandledRejectionHandler","_eventFromRejectionWithPrimitive","HD","l4","ev0sf","colno","function","in_app","lineno","hub","handled","originalException","getHubAndOptions","Le","TryCatch","ke","Se","eventTarget","m9","_wrapTimeFunction","original","args","_wrapRAF","handler","_wrapXHR","originalSend","xmlHttpRequestProps","wrapOptions","_wrapEventTarget","eventName","proto","originalRemoveEventListener","Ne","Breadcrumbs","Ie","dom","history","sentry","xhr","Oe","serializeAttribute","keyAttrs","htmlTreeAsString","category","_consoleBreadcrumb","handlerData","level","breadcrumb","_xhrBreadcrumb","endTimestamp","__sentry_xhr__","method","status_code","_fetchBreadcrumb","fetchData","_historyBreadcrumb","Ce","parsedFrom","protocol","LinkedErrors","Ue","_key","_limit","limit","parser","hint","V9","Xe","Ge","qe","Qe","Ze","HttpContext","request","referrer","headers","Dedupe","currentEvent","_previousEvent","eventProcessor","_isSameStacktrace","lt","frameA","_isSameFingerprint","fingerprint","_getExceptionFromEvent","_getFramesFromEvent","getBaseApiEndpoint","dsn","port","_getIngestEndpoint","projectId","_encodedAuth","_j","ct","dt","sentry_key","sentry_version","sdkInfo","mt","tunnel","_metadata","sdk","ft","yt","dsnLike","dialogOptions","ut","vK","RA","user","encodedOptions","email","gt","vt","bt","wt","Mt","getSdkMetadataForEnvelopeHeader","St","kt","enhanceEventWithSdkInfo","sdkProcessingMetadata","dynamicSamplingContext","sent_at","trace","Tt","Lt","Dt","Et","defaultIntegrations","integrations","integration","isDefaultInstance","integrationsByName","findIndex","finalIntegrations","Pt","Yt","Ot","Ct","At","jt","It","Ft","Nt","BaseClient","__init3","__init4","_dsn","_transport","transport","recordDroppedEvent","_integrations","_integrationsInitialized","_numProcessing","_outcomes","YO","_process","eventFromException","_captureEvent","eventId","eventFromMessage","promisedEvent","_isEnabled","sendSession","updateSession","_isClientDoneProcessing","integrationIndex","installedIntegrations","env","createAttachmentEnvelopeItem","attachment","transportOptions","textEncoder","_sendEnvelope","session","sendClientReports","errored","exceptions","crashed","errors","captureSession","cW","ticked","normalizeMaxBreadth","timestamp","_applyClientOptions","_applyIntegrationsMetadata","finalScope","attachments","getAttachments","result","_normalizeEvent","breadcrumbs","contexts","normalized","spans","span","environment","dist","maxValueLength","_processEvent","logLevel","beforeSend","sampleRate","$2","_prepareEvent","__sentry__","rv","J8","getSession","_updateSessionFromEvent","transaction_info","transaction","processedEvent","transactionInfo","changes","propagations","sendEvent","reason","quantity","Jt","BrowserClient","packages","WINDOW","visibilityState","_flushOutcomes","getIntegrationById","breadcrumbIntegration","Vt","qt","_clearOutcomes","zt","sendBeacon","Wt","Qt","Xt","Du","sandbox","contentWindow","fetchImpl","Zt","tn","nn","getNativeFetchImplementation","referrerPolicy","keepalive","x-sentry-rate-limits","retry-after","createFrame","func","un","cn","dn","kn","hn","pn","extractSafariExtensionDetails","yn","_n","gn","vn","bn","wn","Mn","Me","pE","isSafariExtension","Sn","clientClass","debug","getScope","Dn","Te","Re","Ke","En","SENTRY_RELEASE","autoSessionTracking","Ln","initAndBind","startSessionTracking","Pn","getStackTop","client","getDsn","script","onLoad","head","injectionPoint","Yn","lastEventId","An","Cn","callback","On","jn","close","In","startSessionOnHub","Bn","Sentry","Integrations","windowIntegrations","Wn","Rn","CoreIntegrations","BrowserIntegrations","Hub","_version","bindClient","_stack","setupIntegrations","getStack","pushScope","popScope","_lastEventId","DM","_withClient","beforeBreadcrumb","maxBreadcrumbs","yW","consoleSandbox","mergedBreadcrumb","setUser","setTags","setExtras","setTag","setExtra","setContext","makeMain","_callExtensionMethod","endSession","_sendSessionUpdate","closeSession","n2","Hv","sendDefaultPii","__SENTRY__","extensions","GLOBAL_OBJ","setHubOnCarrier","isOlderThan","KV","registry","domain","hasHubOnCarrier","carrier","8357","Scope","_notifyingListeners","_scopeListeners","_eventProcessors","_breadcrumbs","_attachments","_user","_tags","_extra","_contexts","_sdkProcessingMetadata","_session","_notifyScopeListeners","_requestSession","tags","_fingerprint","_level","_transactionName","_span","getSpan","requestSession","_applyFingerprint","_notifyEventProcessors","processors","processor","newScope","getGlobalEventProcessors","ph","sid","started","ignoreDuration","toJSON","Jr","did","attrs","ip_address","user_agent","ipAddress","baggageHeader","baggageObject","acc","currBaggageObject","entries","object","objectKey","objectValue","baggageHeaderToObject","7809","Rt","qT","nextStr","out","len","currentElem","_htmlElementAsString","keyAttrPairs","classes","attr","4694","lastAccessLHS","2977","discarded_events","84","U4","publicKey","dsnFromComponents","components","requiredComponents","validateDsn","4326","__SENTRY_BROWSER_BUNDLE__","4269","BO","V$","gv","zQ","envelope","envelopeItems","TextEncoder","encode","items","stringifiedPayload","buffers","merged","dropUndefinedKeys","content_type","attachment_type","buffer","sessions","client_report","user_report","5913","SentryError","normalizeArray","up","splitPath","resolvedPath","resolvedAbsolute","samePartsLength","outputParts","normalizedPath","dir","5670","handlers","instrumented","CONSOLE_LEVELS","triggerHandlers","originalConsoleMethod","listener","__sentry_instrumentation_handlers__","refCount","handlerForType","originalAddEventListener","xhrInfo","startTimestamp","onreadystatechangeHandler","t$","Bf","onpopstate","lastHref","_oldOnErrorHandler","_oldOnUnhandledRejectionHandler","instrument","getFunctionName","getFetchMethod","Request","toUpperCase","getFetchUrl","shouldShortcircuitPreviousDebounce","previous","shouldSkipDOMEvent","isContentEditable","makeDOMEventHandler","lastCapturedEvent","debounceTimerID","8146","Cy","Kj","i2","kK","isBuiltin","wat","Event","Element","190","Cf","RU","originalConsole","wrappedLevels","makeLogger","enable","disable","WeakSet","inner","6438","Db","EG","J4","go","lE","randomUUID","getFirstException","firstException","buildmetadata","major","minor","patch","prerelease","sourceLine","JM","__sentry_captured__","8029","$y","l$","require","cwd","hmd","3206","Fv","Qy","ERROR","visit","memoBuilder","includes","__sentry_skip_normalization__","Sh","numAdded","unmemoize","stringifyValue","_events","$P","jsonSize","encodeURI","7927","$Q","hl","mz","xp","zf","__sentry_original__","getOwnProperties","currentTarget","newObj","serializeEventTarget","obj","extractedProps","$G","_dropUndefinedKeys","memoizationMap","returnValue","inputValue","objectified","5473","timeout","all","limits","rateLimitHeader","categories","updatedRateLimits","7493","S6","XQ","dB","oA","req","deps","baseUrl","customRoute","route","originalUrl","include","hostname","socket","encrypted","requestData","DEFAULT_INCLUDES","_optionalChain","extractRequestData","extractedRequestData","extractedUser","remoteAddress","extractQueryParams","search","undefined","7879","Ep","Sq","UV","sort","sortedParsers","localStack","getModule","functionName","methodStart","typeName","methodName","isNative","9399","GE","nK","newLine","output","2651","Ak","S$","fL","hv","zO","zb","ErrorEvent","DOMError","DOMException","Headers","Response","doc","chrome","app","runtime","pushState","replaceState","6612","PENDING","RESOLVED","REJECTED","States","SyncPromise","executor","__init5","__init6","_reject","_state","_handlers","onfulfilled","onrejected","_executeHandlers","isRejected","onfinally","_resolve","_setResult","_value","cachedHandlers","nowSeconds","performance","timeOrigin","platformPerformance","dateTimestampSource","threshold","timing","navigationStart","_browserPerformanceTimeOriginMode","7976","parentSampled","traceId","parentSpanId","relative","$A","7956","isGlobalObj","Rf","8737","TRANSITION_END","Util","getUID","prefix","getElementById","getSelectorFromElement","hrefAttr","getTransitionDurationFromElement","transitionDuration","css","transitionDelay","floatTransitionDuration","parseFloat","floatTransitionDelay","reflow","triggerTransitionEnd","supportsTransitionEnd","isElement","typeCheckConfig","componentName","config","configTypes","expectedTypes","valueType","findShadowRoot","documentElement","getRootNode","jQueryDetection","jquery","emulateTransitionEnd","called","one","_this","special","bindType","delegateType","handle","handleObj","DATA_KEY","JQUERY_NO_CONFLICT","Alert","_element","rootElement","_getRootElement","_triggerCloseEvent","isDefaultPrevented","_removeElement","dispose","removeData","closest","closeEvent","removeClass","hasClass","_destroyElement","detach","_jQueryInterface","each","$element","_handleDismiss","alertInstance","preventDefault","on","Constructor","noConflict","CLASS_NAME_ACTIVE","SELECTOR_DATA_TOGGLE_CARROT","SELECTOR_INPUT","SELECTOR_BUTTON","Button","shouldAvoidTriggerChange","toggle","triggerChangeEvent","addAriaPressed","checked","classList","contains","activeElement","focus","hasAttribute","toggleClass","avoidTriggerChange","button","initialButton","inputBtn","buttons","NAME","DIRECTION_NEXT","DIRECTION_PREV","EVENT_SLID","SELECTOR_ACTIVE_ITEM","Default","interval","keyboard","slide","touch","DefaultType","PointerType","TOUCH","PEN","Carousel","_items","_interval","_activeElement","_isPaused","_isSliding","touchTimeout","touchStartX","touchDeltaX","_config","_getConfig","_indicatorsElement","_touchSupported","maxTouchPoints","_pointerEvent","PointerEvent","MSPointerEvent","_addEventListeners","_slide","nextWhenVisible","cycle","_updateInterval","activeIndex","_getItemIndex","off","_handleSwipe","absDeltax","_this2","_keydown","_addTouchEventListeners","_this3","originalEvent","pointerType","clientX","touches","which","_getItemByDirection","isNextDirection","isPrevDirection","lastItemIndex","itemIndex","_triggerSlideEvent","relatedTarget","eventDirectionName","targetIndex","fromIndex","slideEvent","_setActiveIndicatorElement","indicators","nextIndicator","addClass","elementInterval","defaultInterval","directionalClassName","orderClassName","activeElementIndex","nextElement","nextElementIndex","isCycling","slidEvent","_this4","action","ride","_dataApiClickHandler","slideIndex","carousels","$carousel","CLASS_NAME_SHOW","CLASS_NAME_COLLAPSE","CLASS_NAME_COLLAPSING","CLASS_NAME_COLLAPSED","DIMENSION_WIDTH","SELECTOR_DATA_TOGGLE","Collapse","_isTransitioning","_triggerArray","toggleList","filterElement","foundElem","_selector","_parent","_getParent","_addAriaAndCollapsedClass","actives","activesData","not","startEvent","dimension","_getDimension","setTransitioning","scrollSize","getBoundingClientRect","triggerArrayLength","isTransitioning","_getTargetFromElement","triggerArray","isOpen","$trigger","selectors","$target","REGEXP_KEYDOWN","ARROW_UP_KEYCODE","CLASS_NAME_DISABLED","CLASS_NAME_MENURIGHT","EVENT_HIDE","EVENT_HIDDEN","EVENT_CLICK_DATA_API","EVENT_KEYDOWN_DATA_API","SELECTOR_MENU","flip","boundary","reference","popperConfig","Dropdown","_popper","_menu","_getMenuElement","_inNavbar","_detectNavbar","disabled","isActive","_clearMenus","usePopper","showEvent","_getParentFromElement","Popper","referenceElement","_getPopperConfig","noop","hideEvent","stopPropagation","_getPlacement","$parentDropdown","_getOffset","offsets","preventOverflow","boundariesElement","applyStyle","toggles","clickEvent","dropdownMenu","_dataApiKeydownHandler","item","CLASS_NAME_OPEN","CLASS_NAME_FADE","CLASS_NAME_STATIC","EVENT_SHOW","EVENT_FOCUSIN","EVENT_RESIZE","EVENT_CLICK_DISMISS","EVENT_KEYDOWN_DISMISS","EVENT_MOUSEDOWN_DISMISS","SELECTOR_FIXED_CONTENT","backdrop","Modal","_dialog","_backdrop","_isShown","_isBodyOverflowing","_ignoreBackdropClick","_scrollbarWidth","_checkScrollbar","_setScrollbar","_adjustDialog","_setEscapeEvent","_setResizeEvent","_showBackdrop","_showElement","transition","_hideModal","htmlElement","handleUpdate","_triggerBackdropTransition","hideEventPrevented","isModalOverflowing","scrollHeight","clientHeight","overflowY","modalTransitionDuration","modalBody","scrollTop","_enforceFocus","shownEvent","transitionComplete","_this5","_this6","_this7","_this8","_resetAdjustments","_resetScrollbar","_removeBackdrop","animate","appendTo","_this9","backdropTransitionDuration","callbackRemove","paddingLeft","paddingRight","innerWidth","_getScrollbarWidth","fixedContent","stickyContent","actualPadding","calculatedPadding","_this10","actualMargin","marginRight","calculatedMargin","padding","margin","scrollDiv","scrollbarWidth","clientWidth","_this11","uriAttrs","SAFE_URL_PATTERN","DATA_URL_PATTERN","sanitizeHtml","unsafeHtml","whiteList","sanitizeFn","createdDocument","DOMParser","parseFromString","whitelistKeys","elName","nodeName","attributeList","whitelistedAttributes","allowedAttributeList","attrName","nodeValue","regExp","attrRegex","BSCLS_PREFIX_REGEX","DISALLOWED_ATTRIBUTES","HOVER_STATE_SHOW","TRIGGER_HOVER","AttachmentMap","AUTO","TOP","RIGHT","BOTTOM","LEFT","template","delay","html","fallbackPlacement","customClass","sanitize","*","area","br","col","code","em","hr","h1","h2","h3","h4","h5","h6","li","ol","small","sup","strong","ul","HIDE","HIDDEN","SHOW","SHOWN","INSERTED","CLICK","FOCUSIN","FOCUSOUT","MOUSEENTER","MOUSELEAVE","Tooltip","_timeout","_hoverState","_activeTrigger","tip","_setListeners","toggleEnabled","dataKey","_getDelegateConfig","_isWithActiveTrigger","_enter","_leave","getTipElement","EVENT_KEY","_hideModalHandler","isWithContent","isInTheDom","ownerDocument","tipId","setContent","_getAttachment","addAttachmentClass","_getContainer","complete","_fixTransition","prevHoverState","_cleanTipClass","getTitle","CLASS_PREFIX","setElementContent","empty","behavior","arrow","onCreate","originalPlacement","_handlePopperPlacementChange","onUpdate","eventIn","eventOut","_fixTitle","titleType","dataAttributes","dataAttr","$tip","tabClass","popperData","instance","popper","initConfigAnimation","Popover","_getContent","METHOD_POSITION","SELECTOR_NAV_LIST_GROUP","ScrollSpy","_scrollElement","_offsets","_targets","_activeTarget","_scrollHeight","refresh","autoMethod","offsetMethod","offsetBase","_getScrollTop","_getScrollHeight","targetSelector","targetBCR","pageYOffset","_getOffsetHeight","innerHeight","maxScroll","_activate","_clear","queries","$link","parents","SELECTOR_NAV_LINKS","scrollSpys","$spy","SELECTOR_ACTIVE","SELECTOR_ACTIVE_UL","Tab","listElement","itemSelector","makeArray","hiddenEvent","_transitionComplete","dropdownChild","dropdownElement","dropdownToggleList","$this","CLASS_NAME_SHOWING","autohide","Toast","_clearTimeout","_close","Scrollspy","9438","moment","colorName","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","conversions","reverseKeywords","convert","rgb","channels","labels","hsl","hsv","hwb","cmyk","xyz","lab","lch","hex","keyword","ansi16","ansi256","hcg","apple","model","delta","rdif","gdif","bdif","diff","diffc","reversed","currentClosestKeyword","currentClosestDistance","Infinity","distance","t2","t3","smin","lmin","hi","sl","vmin","wh","bl","ratio","y2","x2","z2","ansi","rem","string","colorString","char","integer","hue","chroma","mg","pure","link","wrapConversion","toModel","graph","cur","conversion","fromModel","routes","models","queue","current","adjacents","adjacent","wrappedFn","colorConvert","colorName$1","getRgba","getHsla","getRgb","rgba","getHsl","hsla","getHwb","getAlpha","vals","hexString","hexDouble","rgbString","alpha","rgbaString","percentString","percentaString","hslString","hslaString","hwbString","reverseNames","hexAlpha","num","str","Color","valid","setValues","lightness","whiteness","isValid","setSpace","rgbArray","hslArray","hsvArray","hwbArray","cmykArray","rgbaArray","hslaArray","setChannel","saturation","saturationv","blackness","rgbNumber","luminosity","lum","chan","contrast","color2","lum1","lum2","contrastRatio","dark","light","negate","lighten","darken","saturate","desaturate","whiten","blacken","greyscale","clearer","opaquer","degrees","mix","mixinColor","color1","w1","w2","spaces","maxes","getValues","space","capped","chans","sname","svalues","chartjsColor","isValidKey","helpers","uid","isNullOrUndef","isObject","isFinite","valueOrDefault","defaultValue","valueAtIndexOrDefault","thisArg","loopable","arrayEquals","a0","a1","ilen","v0","v1","klen","_merger","tval","sval","merge","_mergerIf","mergeIf","sources","merger","extend","dst","inherits","ChartElement","Surrogate","__super__","_deprecated","helpers_core","callCallback","array","getValueOrDefault","getValueAtIndexOrDefault","effects","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","easeInSine","easeOutSine","easeInOutSine","easeInExpo","easeOutExpo","easeInOutExpo","easeInCirc","easeOutCirc","easeInOutCirc","easeInElastic","easeOutElastic","easeInOutElastic","easeInBack","easeOutBack","easeInOutBack","easeInBounce","easeOutBounce","easeInOutBounce","helpers_easing","easingEffects","RAD_PER_DEG","DOUBLE_PI","HALF_PI","QUARTER_PI","TWO_THIRDS_PI","exports$1","clear","chart","ctx","roundedRect","arc","drawPoint","xOffset","cornerRadius","rad","SQRT1_2","_isPointInArea","epsilon","clipArea","unclipArea","stepped","steppedLine","midpoint","tension","controlPointPreviousX","controlPointNextX","controlPointPreviousY","controlPointNextY","helpers_canvas","drawRoundedRectangle","defaults","defaultColor","defaultFontColor","defaultFontFamily","defaultFontSize","defaultFontStyle","defaultLineHeight","showLines","core_defaults","helpers_options","toLineHeight","toPadding","_parseFont","globalDefaults","family","inputs","info","cacheable","exports$2","_factorize","log10","exponent","LOG10E","powerOf10","helpers_math","helpers$1","easing","math","rtl","getRtlAdapter","rectX","setWidth","textAlign","align","xPlus","leftForLtr","itemWidth","_itemWidth","overrideTextDirection","getPropertyValue","getPropertyPriority","setProperty","prevTextDirection","restoreTextDirection","configuration","_type","pivot","_view","_model","_start","view","actual","c0","c1","tooltipPosition","hasValue","isNumber","core_element","exports$3","currentStep","numSteps","onAnimationProgress","onAnimationComplete","core_animation","onProgress","core_animations","animations","addAnimation","lazy","animating","cancelAnimation","requestAnimFrame","startDigest","advance","nextStep","arrayEvents","unlistenArrayEvents","stub","_chartjs","listeners","DatasetController","datasetIndex","datasetElementType","dataElementType","_datasetElementOptions","_dataElementOptions","linkScales","addElements","getMeta","updateIndex","meta","scales","dataset","getDataset","scalesOpts","xAxisID","xAxes","yAxisID","yAxes","datasets","getDatasetMeta","getScaleForId","scaleID","_getValueScaleId","_getIndexScaleId","_getValueScale","_getIndexScale","_update","createMetaDataset","_chart","_datasetIndex","createMetaData","_index","metaData","addElementAndReset","updateElement","buildOrUpdateElements","isExtensible","base","res","resyncElements","_configure","_cachedDataOpts","easingValue","draw","getStyle","_resolveDatasetElementOptions","_resolveDataElementOptions","borderColor","readKey","datasetOpts","custom","elementOptions","cached","dataIndex","removeHoverStyle","$previousStyle","setHoverStyle","getHoverColor","borderWidth","hoverBackgroundColor","hoverBorderColor","hoverBorderWidth","_removeDatasetHoverStyle","_setDatasetHoverStyle","hoverOptions","numMeta","numData","insertElements","onDataPush","onDataPop","onDataShift","onDataSplice","onDataUnshift","core_datasetController","TAU","clipArc","startAngle","endAngle","pixelMargin","angleMargin","borderAlign","element_arc","inLabelRange","mouseX","vm","hoverRadius","inRange","chartX","chartY","pointRelativePosition","getAngleFromPoint","angle","betweenAngles","withinRadius","getCenterPoint","halfAngle","halfRadius","getArea","centreAngle","rangeFromCentre","fullCircles","circumference","valueOrDefault$1","borderCapStyle","borderDash","borderDashOffset","borderJoinStyle","capBezierPoints","element_line","currentVM","spanGaps","_children","globalOptionLineElements","lastDrawnIndex","_loop","previousItem","skip","valueOrDefault$2","defaultColor$1","xRange","hitRadius","pointStyle","element_point","mouseY","inXRange","inYRange","chartArea","defaultColor$2","isVertical","getBarBounds","x1","y1","half","swap","orig","v2","skipX","skipY","bounds","rectangle","borderSkipped","element_rectangle","rects","border","maxW","maxH","edge","horizontal","outer","Arc","Line","Point","Rectangle","deprecated","valueOrDefault$3","gridLines","offsetGridLines","bar","categoryPercentage","barPercentage","controller_bar","scaleOpts","barThickness","minBarLength","maxBarThickness","_ruler","getRuler","_xScale","_yScale","datasetLabel","_updateElementGeometry","vscale","getBasePixel","isHorizontal","ruler","vpixels","calculateBarValuePixels","ipixels","calculateBarIndexPixels","center","_getStacks","last","metasets","_getMatchingVisibleMetas","stacked","stacks","getStackCount","getStackIndex","pixels","getPixelForValue","_startPixel","_endPixel","stackCount","imeta","ivalue","stackLength","_parseValue","range","curr","percent","chunk","thickness","getTicks","getPixelForTick","stackIndex","indexOpts","valueOpts","valueOrDefault$4","resolve$1","tooltips","callbacks","dataPoint","xLabel","yLabel","controller_bubble","xScale","yScale","dsIndex","getPixelForDecimal","NaN","valueOrDefault$5","PI$1","DOUBLE_PI$1","HALF_PI$1","animateRotate","animateScale","legendCallback","listItem","outerHTML","legend","generateLabels","controller","onClick","legendItem","cutoutPercentage","tooltipItem","dataLabel","controller_doughnut","getRingIndex","ringIndex","isDatasetVisible","maxWidth","maxHeight","opts","ratioX","ratioY","offsetX","offsetY","arcs","cutout","chartWeight","_getRingWeight","startX","startY","endX","endY","contains0","contains90","contains270","minX","minY","maxX","maxY","getMaxBorderWidth","radiusLength","_getVisibleDatasetWeightTotal","total","calculateTotal","_getRingWeightOffset","animationOpts","centerX","centerY","calculateCircumference","hoverWidth","ringWeightOffset","dataSetIndex","axis","horizontalBar","controller_horizontalBar","valueOrDefault$6","resolve$2","isPointInArea","scaleClip","halfBorderWidth","tickOpts","ticks","defaultClip","toClip","controller_line","showLine","_showLine","lineTension","_scale","updateBezierControlPoints","lineModel","calculatePointY","lineOptions","ds","dsMeta","stackedRightValue","rightValue","sumPos","sumNeg","getRightValue","_getSortedVisibleDatasetMetas","controlPoints","capControlPoint","cubicInterpolationMode","splineCurveMonotone","splineCurve","nextItem","resolve$3","angleLines","circular","pointLabels","beginAtZero","controller_polarArea","starts","_starts","angles","_angles","_updateRadius","countVisibleElements","_computeAngle","minSize","getVisibleDatasetCount","xCenter","yCenter","datasetStartAngle","getDistanceFromCenterForValue","resetRadius","doughnut","controller_pie","valueOrDefault$7","controller_radar","pointPosition","getPointPositionForValue","scatter","controllers","bubble","polarArea","pie","radar","getRelativePosition","native","parseVisibleItems","jlen","getIntersectItems","getNearestItems","intersect","distanceMetric","minDistance","POSITIVE_INFINITY","nearestItems","getDistanceMetricForAxis","useX","useY","pt1","pt2","deltaX","deltaY","indexMode","core_interaction","modes","single","x-axis","nearest","intersectsItem","filterByPosition","where","sortByWeight","getCombinedMax","maxPadding","updateDims","params","layout","newWidth","newHeight","box","getPadding","boxPadding","outerWidth","outerHeight","sizes","getMargins","fitBoxes","boxes","refit","changed","refitBoxes","fullWidth","placeBoxes","userPadding","core_layouts","addBox","_layers","removeBox","layoutItem","configure","layoutOptions","availableWidth","availableHeight","layoutBoxes","leftAndTop","rightAndBottom","vertical","verticalBoxes","horizontalBoxes","vBoxMaxWidth","hBoxMaxHeight","layouts","updatePos","change","stylesheet","CSS_SIZE_MONITOR","CSS_PREFIX","CSS_RENDER_MONITOR","ANIMATION_START_EVENTS","EVENT_TYPES","touchstart","touchmove","touchend","pointerenter","pointerdown","pointermove","pointerup","pointerleave","pointerout","readUsedSize","eventListenerOptions","supports","addListener","removeListener","createEvent","nativeEvent","createDiv","cls","platform_dom$2","disableCSSInjection","_enabled","_ensureLoaded","rootNode","expando","$chartjs","containsStyles","acquireContext","renderHeight","renderWidth","initial","displayWidth","aspectRatio","displayHeight","releaseContext","proxies","ticking","resizer","maxSize","expand","shrink","_reset","scrollLeft","onScroll","maintainAspectRatio","proxy","renderProxy","animationName","offsetParent","addEvent","removeEvent","implementation","platform","core_plugins","_plugins","_cacheId","register","plugin","unregister","idx","getAll","notify","hook","descriptors","$plugins","_invalidate","core_scaleService","constructors","registerScaleType","scaleConstructor","scaleDefaults","getScaleConstructor","getScaleDefaults","updateScaleDefaults","additions","addScalesToLayout","valueOrDefault$8","getRtlHelper","titleFontStyle","titleSpacing","titleMarginBottom","titleFontColor","titleAlign","bodySpacing","bodyFontColor","bodyAlign","footerFontStyle","footerSpacing","footerMarginTop","footerFontColor","footerAlign","yPadding","xPadding","caretPadding","caretSize","multiKeyBackground","displayColors","beforeTitle","tooltipItems","labelCount","afterTitle","beforeBody","beforeLabel","labelColor","labelTextColor","afterLabel","afterBody","beforeFooter","footer","afterFooter","positioners","average","eventPosition","nearestElement","distanceBetweenPoints","tp","pushOrConcat","toPush","splitNewlines","getBaseModel","tooltipOpts","xAlign","yAlign","textDirection","_bodyFontFamily","bodyFontFamily","_bodyFontStyle","bodyFontStyle","_bodyAlign","bodyFontSize","_titleFontFamily","titleFontFamily","_titleFontStyle","titleFontSize","_titleAlign","_footerFontFamily","footerFontFamily","_footerFontStyle","footerFontSize","_footerAlign","legendColorBackground","getAlignedX","getBeforeAfterBodyLines","exports$4","_lastActive","lines","getBeforeBody","getBody","bodyItems","bodyItem","after","getAfterBody","getFooter","indexScale","valueScale","existingModel","_active","backgroundPoint","tooltipSize","caretX","caretY","labelColors","labelTextColors","_eventPosition","getLabelForIndex","itemSort","dataPoints","paddingAndSize","radiusAndPadding","tooltip","combinedBodyLength","titleLineCount","footerLineCount","widthPadding","maxLineWidth","fontString","lf","rf","olf","orf","yf","midX","midY","drawCaret","tooltipPoint","caretPosition","getCaretPosition","x3","y3","ptX","ptY","tmp","drawTitle","rtlHelper","textBaseline","fillText","drawBody","textColor","drawColorBoxes","xLinePadding","colorX","fillLineOfText","bodyAlignForCalculation","rtlColorX","strokeRect","drawFooter","drawBackground","quadraticCurveTo","hasTooltipContent","getElementsAtEventForMode","positioners_1","core_tooltip","valueOrDefault$9","mergeScaleConfig","slen","mergeConfig","updateConfig","newOptions","ensureScalesHaveIDs","buildOrUpdateScales","nextAvailableScaleId","axesOpts","hasId","positionIsHorizontal","compare2Level","l1","l2","events","onHover","animationDuration","responsive","responsiveAnimationDuration","Chart","_bufferedRender","instances","retinaScale","bindEvents","initToolTip","silent","getMaximumWidth","getMaximumHeight","newSize","onResize","scalesOptions","scaleOptions","xAxisOptions","yAxisOptions","dtype","dposition","isDefault","scaleType","scaleClass","mergeTicksOptions","buildOrUpdateControllers","newControllers","destroyDatasetMeta","order","ControllerClass","updateLayout","updateDatasets","lastActive","_bufferedRequest","_idx","updateDataset","animationOptions","animationObject","easingFunction","stepDecimal","drawDatasets","_drawTooltip","_getSortedDatasetMetas","filterVisible","drawDataset","getElementAtEvent","getElementsAtEvent","getElementsAtXAxis","getDatasetAtEvent","_meta","generateLegend","unbindEvents","toBase64Image","toDataURL","_chartInstance","_listeners","eventHandler","updateHoverStyle","bufferedRequest","core_controller","abstract","DateAdapter","Controller","types","configMerge","scaleMerge","formats","format","startOf","endOf","_create","override","members","core_adapters","_date","core_ticks","formatters","tickValue","logDelta","tickString","logTick","numExponential","toExponential","numDecimal","toFixed","logarithmic","remain","valueOrDefault$a","getPixelForGridLine","validIndex","lineValue","getTickMarkLength","drawTicks","tickMarkLength","getScaleLabelHeight","parseFontOptions","nestedOpts","fontColor","parseTickFontOptions","nonSkipped","ticksToFilter","filtered","spacing","majorStart","majorEnd","tick","drawBorder","drawOnChartArea","zeroLineWidth","zeroLineColor","zeroLineBorderDash","zeroLineBorderDashOffset","scaleLabel","labelString","minRotation","maxRotation","mirror","autoSkip","autoSkipPadding","labelOffset","Scale","zeroLineIndex","paddingTop","paddingBottom","_ticks","_getLabels","xLabels","yLabels","beforeUpdate","margins","samplingEnabled","sampleSize","_labelSizes","_maxLabelLines","longestLabelWidth","longestTextCache","_gridLineItems","_labelItems","beforeSetDimensions","setDimensions","afterSetDimensions","beforeDataLimits","determineDataLimits","afterDataLimits","beforeBuildTicks","buildTicks","afterBuildTicks","_convertTicksToLabels","numItems","increment","beforeCalculateTickRotation","calculateTickRotation","afterCalculateTickRotation","beforeFit","fit","afterFit","_ticksToDraw","_autoSkip","afterUpdate","startPixel","endPixel","reversePixels","_reversePixels","beforeTickToLabelConversion","convertTicksToLabels","userCallback","afterTickToLabelConversion","labelSizes","maxLabelWidth","maxLabelHeight","tickWidth","maxLabelDiagonal","numTicks","labelRotation","_isVisible","_getLabelSizes","widest","highest","toDegrees","scaleLabelOpts","gridLineOpts","isBottom","tickFonts","firstLabelSize","first","lastLabelSize","widestLabelSize","highestLabelSize","lineSpace","tickPadding","isRotated","angleRadians","toRadians","cosRotation","sinRotation","labelHeight","offsetLeft","offsetRight","labelWidth","handleMargins","isFullWidth","rawValue","tickFont","nestedLabel","widths","heights","gc","valueAt","gcLen","_getScaleLabel","getValueForPixel","decimal","getDecimalForPixel","pixel","getBaseValue","avgMajorSpacing","axisLength","ticksLimit","maxTicksLimit","_tickSize","majorIndices","numMajorIndices","factors","factor","evenMajorSpacing","optionTicks","rot","_computeGridLineItems","borderValue","alignedLineValue","tx1","ty1","tx2","ty2","lineColor","ticksLength","tl","axisWidth","axisHalfWidth","alignPixel","_alignPixel","alignBorderValue","_computeLabelItems","lineCount","textOffset","isMirrored","_drawGrid","firstLineWidth","lastLineWidth","_drawLabels","_drawTitle","scaleLabelX","scaleLabelY","scaleLabelFontColor","scaleLabelFont","scaleLabelPadding","halfLineHeight","isLeft","tz","gz","_draw","core_scale","isNullOrUndef$1","scale_category","ticksOpts","minIndex","maxIndex","_startValue","_valueRange","valueCategory","isNullOrUndef$2","scale_linearbase","handleTickRangeOptions","minSign","sign","maxSign","setMin","suggestedMin","setMax","suggestedMax","getTickLimit","maxTicks","stepSize","_computeTickLimit","handleDirectionalChanges","numericGeneratorOptions","precision","fixedStepSize","generationOptions","dataRange","niceMin","niceMax","numSpaces","unit","maxNumSpaces","rmin","rmax","niceNum","_decimalPlaces","almostWhole","almostEquals","ticksAsNumbers","_endValue","defaultConfig$1","stackData","neg","relativePoints","updateMinMax","scale_linear","hasStacks","NEGATIVE_INFINITY","stackValues","_defaults$1","valueOrDefault$b","defaultConfig$2","nonNegativeOrDefault","scale_logarithmic","IDMatches","minNotZero","valuesPerStack","valuesForType","minVal","maxVal","exp","significand","tickVal","endExp","endSignificand","lastTick","tickValues","_getFirstTickValue","_valueOffset","_defaults$2","valueOrDefault$c","valueAtIndexOrDefault$1","resolve$4","defaultConfig$3","showLabelBackdrop","backdropColor","backdropPaddingY","backdropPaddingX","getTickBackdropHeight","determineLimits","getTextAlignForAngle","adjustPointPositionForLabelHeight","textSize","numberOrZero","param","scale_radialLinear","drawingArea","plFont","furthestLimits","furthestAngles","_pointLabelSizes","valueCount","getPointPosition","longestText","getIndexAngle","hLimits","vLimits","setReductions","setCenterPoint","largestPossibleRadius","radiusReductionLeft","radiusReductionRight","radiusReductionTop","radiusReductionBottom","leftMovement","rightMovement","topMovement","bottomMovement","maxRight","maxLeft","maxTop","maxBottom","scalingFactor","distanceFromCenter","thisAngle","getBasePosition","angleLineOpts","pointLabelOpts","tickBackdropHeight","outerDistance","pointLabelPosition","pointLabelFontColor","tickFontColor","_defaults$3","deprecated$1","resolve$5","valueOrDefault$d","MIN_INTEGER","MIN_SAFE_INTEGER","MAX_INTEGER","MAX_SAFE_INTEGER","INTERVALS","millisecond","common","steps","second","minute","hour","day","week","month","quarter","year","UNITS","sorter","getMin","getMax","interpolate$1","table","skey","tkey","mid","i0","i1","lo","toTimestamp","adapter","_adapter","determineUnitForAutoTicks","minUnit","capacity","ticksFromTimestamps","majorUnit","scale_time","adapters","date","displayFormats","labelsAdded","timestamps","dataLabels","hash","_table","_timestamps","timeOpts","getLabelCapacity","distribution","unitStepSize","weekday","isoWeekday","_unit","_majorUnit","tooltipFormat","datetime","tickFormatFunction","minorFormat","majorFormat","nestedTickOpts","formatter","getPixelForOffset","_getLabelSize","tickLabelWidth","tickFontSize","getLabelWidth","exampleTime","exampleLabel","displayFormat","radialLinear","FORMATS","_id","filler","propagate","mappers","decodeFill","computeBoundary","cx","cy","scaleBottom","scaleTop","scaleZero","resolveTarget","visited","visible","createMapper","isDrawable","drawArea","curve0","curve1","len0","len1","doFill","mapper","p0","p1","d0","d1","loopOffset","plugin_filler","afterDatasetsUpdate","$filler","beforeDatasetsDraw","getRtlHelper$1","noop$1","valueOrDefault$e","getBoxWidth","labelOpts","usePointStyle","ci","onLeave","lineDash","Legend","legendHitBoxes","_hoveredItem","doughnutMode","beforeBuildLabels","buildLabels","afterBuildLabels","legendItems","labelFont","hitboxes","totalHeight","vPadding","columnWidths","columnHeights","totalWidth","currentColWidth","currentColHeight","lineDefault","legendHeight","legendWidth","cursor","alignmentOffset","blockSize","itemHeight","textWidth","realX","SQRT2","halfFontSize","xLeft","yMiddle","_getLegendItemAt","hitBox","hoveredItem","createNewLegendAndAttach","legendOpts","plugin_legend","beforeInit","afterEvent","noop$2","Title","titleX","titleY","fontOpts","createNewTitleBlockAndAttach","titleOpts","titleBlock","parseMaxStyle","styleValue","parentProperty","valueInPixels","isConstrainedValue","getConstraintDimension","domNode","maxStyle","percentageProperty","defaultView","_getParentNode","constrainedNode","getComputedStyle","constrainedContainer","hasCNode","hasCContainer","infinity","collection","filterCallback","findNextWhere","arrayToSearch","startIndex","currentItem","findPreviousWhere","rounded","radians","centrePoint","anglePoint","distanceFromXCenter","distanceFromYCenter","radialDistanceFromCenter","aliasPixel","pixelWidth","currentDevicePixelRatio","halfWidth","firstPoint","middlePoint","afterPoint","d01","d12","s01","s12","fa","EPSILON","pointBefore","pointCurrent","pointAfter","alphaK","betaK","tauK","squaredMagnitude","pointsWithTangents","deltaK","mK","pointsLen","slopeDeltaX","fraction","webkitRequestAnimationFrame","mozRequestAnimationFrame","oRequestAnimationFrame","msRequestAnimationFrame","evt","srcElement","boundingRect","clientY","getConstraintWidth","getConstraintHeight","_calculatePadding","parentDimension","cw","currentStyle","forceRatio","pixelRatio","pixelSize","arrayOfThings","garbageCollect","thing","nestedThing","longest","numberOfLabelLines","numberOfLines","CanvasGradient","colorValue","CanvasPattern","_adapters","Animation","animationService","Interaction","scaleService","Ticks","pluginService","PluginBase","canvasHelpers","layoutService","LinearScaleBase","klass","cfg","2691","isFrozen","seal","fun","thisValue","Func","arrayForEach","unapply","arrayPop","arrayPush","stringToLowerCase","stringToString","stringMatch","stringReplace","stringIndexOf","stringTrim","regExpTest","typeErrorCreate","addToSet","transformCaseFunc","lcElement","newObject","lookupGetter","desc","fallbackValue","svg","svgFilters","svgDisallowed","mathMl","mathMlDisallowed","xml","MUSTACHE_EXPR","ERB_EXPR","TMPLIT_EXPR","DATA_ATTR","ARIA_ATTR","IS_ALLOWED_URI","IS_SCRIPT_OR_DATA","ATTR_WHITESPACE","DOCTYPE_NAME","getGlobal","_createTrustedTypesPolicy","suffix","ATTR_NAME","currentScript","policyName","createScriptURL","scriptUrl","createDOMPurify","DOMPurify","VERSION","removed","isSupported","originalDocument","DocumentFragment","HTMLTemplateElement","NodeFilter","NamedNodeMap","MozNamedAttrMap","HTMLFormElement","ElementPrototype","cloneNode","getNextSibling","getChildNodes","getParentNode","trustedTypesPolicy","emptyHTML","createNodeIterator","createDocumentFragment","documentMode","hooks","createHTMLDocument","PARSER_MEDIA_TYPE","EXPRESSIONS","ALLOWED_TAGS","DEFAULT_ALLOWED_TAGS","TAGS","ALLOWED_ATTR","DEFAULT_ALLOWED_ATTR","ATTRS","CUSTOM_ELEMENT_HANDLING","tagNameCheck","attributeNameCheck","allowCustomizedBuiltInElements","FORBID_TAGS","FORBID_ATTR","ALLOW_ARIA_ATTR","ALLOW_DATA_ATTR","ALLOW_UNKNOWN_PROTOCOLS","SAFE_FOR_TEMPLATES","WHOLE_DOCUMENT","SET_CONFIG","FORCE_BODY","RETURN_DOM","RETURN_DOM_FRAGMENT","RETURN_TRUSTED_TYPE","SANITIZE_DOM","SANITIZE_NAMED_PROPS","SANITIZE_NAMED_PROPS_PREFIX","KEEP_CONTENT","IN_PLACE","USE_PROFILES","FORBID_CONTENTS","DEFAULT_FORBID_CONTENTS","DATA_URI_TAGS","DEFAULT_DATA_URI_TAGS","URI_SAFE_ATTRIBUTES","DEFAULT_URI_SAFE_ATTRIBUTES","MATHML_NAMESPACE","SVG_NAMESPACE","HTML_NAMESPACE","NAMESPACE","IS_EMPTY_INPUT","ALLOWED_NAMESPACES","DEFAULT_ALLOWED_NAMESPACES","SUPPORTED_PARSER_MEDIA_TYPES","DEFAULT_PARSER_MEDIA_TYPE","CONFIG","formElement","isRegexOrFunction","testValue","_parseConfig","ADD_URI_SAFE_ATTR","ADD_DATA_URI_TAGS","ALLOWED_URI_REGEXP","ADD_TAGS","ADD_ATTR","tbody","MATHML_TEXT_INTEGRATION_POINTS","HTML_INTEGRATION_POINTS","COMMON_SVG_AND_HTML_ELEMENTS","ALL_SVG_TAGS","ALL_MATHML_TAGS","_checkValidNamespace","namespaceURI","parentTagName","_forceRemove","_removeAttribute","getAttributeNode","_initDocument","dirty","leadingWhitespace","dirtyPayload","createDocument","_createIterator","SHOW_ELEMENT","SHOW_COMMENT","SHOW_TEXT","_isClobbered","elm","hasChildNodes","_isNode","_executeHook","entryPoint","_sanitizeElements","allowedTags","firstElementChild","_basicCustomElementTest","_isValidAttribute","lcTag","lcName","_sanitizeAttributes","hookEvent","attrValue","keepAttr","allowedAttributes","forceKeepAttr","getAttributeType","_sanitizeShadowDOM","fragment","shadowNode","shadowIterator","importedNode","oldNode","returnNode","toStaticHTML","nodeIterator","shadowroot","serializedHTML","doctype","setConfig","clearConfig","isValidAttribute","tag","addHook","hookFunction","removeHook","removeHooks","removeAllHooks","9564","createFocusTrap","candidateSelectors","candidateSelector","NoElement","msMatchesSelector","webkitMatchesSelector","getCandidates","includeContainer","candidates","getCandidatesIteratively","elementsToCheck","assigned","nestedCandidates","getShadowRoot","validShadowRoot","shadowRootFilter","getTabindex","isScope","tabIndex","sortOrderedTabbables","documentOrder","isInput","isZeroArea","isNodeMatchingSelectorFocusable","_ref","displayCheck","visibility","nodeUnderDetails","parentElement","nodeRootHost","nodeIsAttached","originalNode","assignedSlot","getClientRects","child","isNodeMatchingSelectorTabbable","radioSet","radioScope","form","queryRadios","CSS","escape","err","nodes","isValidShadowRootTabbable","shadowHostNode","tabbable","sortByOrder","regularTabbables","orderedTabbables","candidateTabindex","sortable","isTabbable","focusableCandidateSelector","isFocusable","trapQueue","activeFocusTraps","activateTrap","trap","activeTrap","trapIndex","deactivateTrap","unpause","valueOrHandler","getActualTarget","composedPath","userOptions","returnFocusOnDeactivate","escapeDeactivates","delayInitialFocus","containers","containerGroups","tabbableGroups","nodeFocusedBeforeActivation","mostRecentlyFocusedNode","paused","delayInitialFocusTimer","getOption","configOverrideOptions","optionName","configOptionName","findContainerIndex","tabbableNodes","getNodeForOption","optionValue","getInitialFocusNode","firstTabbableGroup","firstTabbableNode","updateTabbableNodes","tabbableOptions","focusableNodes","lastTabbableNode","nextTabbableNode","forward","nodeIdx","group","tryFocus","preventScroll","select","getReturnFocusNode","previousActiveElement","checkPointerDown","clickOutsideDeactivates","deactivate","returnFocus","allowOutsideClick","checkFocusIn","targetContained","stopImmediatePropagation","checkKey","keyCode","destinationNode","containerIndex","containerGroup","shiftKey","startOfGroupIndex","destinationGroupIndex","lastOfGroupIndex","checkClick","addListeners","removeListeners","activate","activateOptions","onActivate","onPostActivate","checkCanFocusTrap","finishActivation","deactivateOptions","onDeactivate","onPostDeactivate","checkCanReturnFocus","finishDeactivation","updateContainerElements","containerElements","elementsAsArray","noGlobal","getProto","class2type","hasOwn","fnToString","ObjectFunctionString","support","isFunction","isWindow","preservedScriptAttributes","nonce","noModule","DOMEval","toType","jQuery","isArrayLike","toArray","pushStack","elems","ret","prevObject","eq","even","grep","odd","copy","copyIsArray","deep","isPlainObject","isReady","Ctor","isEmptyObject","globalEval","results","inArray","invert","callbackExpect","guid","_i","Sizzle","Expr","getText","isXML","tokenize","compile","outermostContext","sortInput","hasDuplicate","setDocument","docElem","documentIsHTML","rbuggyQSA","rbuggyMatches","preferredDoc","dirruns","classCache","createCache","tokenCache","compilerCache","nonnativeSelectorCache","sortOrder","pushNative","booleans","whitespace","identifier","pseudos","rwhitespace","rtrim","rcomma","rcombinators","rdescend","rpseudo","ridentifier","matchExpr","ID","CLASS","TAG","ATTR","PSEUDO","CHILD","bool","needsContext","rhtml","rinputs","rheader","rnative","rquickExpr","rsibling","runescape","funescape","nonHex","high","rcssescape","fcssescape","asCodePoint","unloadHandler","inDisabledFieldset","addCombinator","els","seed","nid","newSelector","newContext","qsa","testContext","toSelector","qsaError","cacheLength","markFunction","assert","addHandle","attrHandle","siblingCheck","sourceIndex","createInputPseudo","createButtonPseudo","createDisabledPseudo","isDisabled","createPositionalPseudo","argument","matchIndexes","namespace","hasCompare","subWindow","attachEvent","getById","getElementsByName","attrId","matchesSelector","mozMatchesSelector","oMatchesSelector","disconnectedMatch","compareDocumentPosition","adown","bup","compare","sortDetached","aup","ap","bp","expr","specified","sel","uniqueSort","duplicates","detectDuplicates","sortStable","createPseudo",">"," ","+","~","preFilter","excess","unquoted","nodeNameSelector","pattern","operator","check","what","_argument","simple","ofType","_context","uniqueCache","outerCache","nodeIndex","useCache","lastChild","uniqueID","pseudo","setFilters","matched","matcher","unmatched","lang","elemLang","hasFocus","selected","selectedIndex","header","_matchIndexes","nth","radio","checkbox","file","password","image","submit","tokens","combinator","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","condense","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","temp","preMap","postMap","preexisting","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","parseOnly","soFar","preFilters","setMatchers","elementMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","token","compiled","unique","isXMLDoc","escapeSelector","until","truncate","siblings","rneedsContext","rsingleTag","winnow","qualifier","rootjQuery","parseHTML","ready","rparentsprev","guaranteedUnique","contents","sibling","targets","prevAll","addBack","parentsUntil","nextAll","nextUntil","prevUntil","contentDocument","rnothtmlwhite","Identity","Thrower","adoptValue","noValue","promise","fail","Callbacks","flag","firing","memory","fired","locked","firingIndex","fire","stopOnFalse","fireWith","Deferred","tuples","always","deferred","pipe","fns","newDefer","tuple","returned","progress","onFulfilled","onRejected","maxDepth","depth","that","mightThrow","notifyWith","resolveWith","process","exceptionHook","stackTrace","rejectWith","getStackHook","stateString","when","singleValue","remaining","resolveContexts","resolveValues","primary","updateFunc","rerrorNames","readyException","readyList","readyWait","wait","doScroll","access","chainable","emptyGet","bulk","rmsPrefix","rdashAlpha","fcamelCase","_all","letter","camelCase","acceptData","owner","Data","hasData","dataPriv","dataUser","rbrace","rmultiDash","_removeData","dequeue","startLength","_queueHooks","setter","clearQueue","defer","pnum","rcssNum","cssExpand","isAttached","composed","isHiddenWithinTree","adjustCSS","valueParts","tween","adjusted","maxIterations","currentValue","cssNumber","initialInUnit","defaultDisplayMap","getDefaultDisplay","showHide","rcheckableType","rtagName","rscriptType","checkClone","noCloneChecked","option","wrapMap","thead","_default","setGlobalEval","refElements","tfoot","colgroup","caption","th","optgroup","buildFragment","selection","ignored","attached","htmlPrefilter","rtypenamespace","returnTrue","returnFalse","expectSync","origFn","leverageNative","notAsync","isTrigger","handleObjIn","eventHandle","namespaces","origType","elemData","triggered","dispatch","delegateCount","mappedTypes","origCount","teardown","handlerQueue","fix","delegateTarget","preDispatch","isPropagationStopped","isImmediatePropagationStopped","rnamespace","postDispatch","matchedHandlers","matchedSelectors","addProp","noBubble","beforeunload","defaultPrevented","timeStamp","isSimulated","altKey","bubbles","cancelable","changedTouches","ctrlKey","eventPhase","metaKey","pageX","pageY","charCode","pointerId","screenX","screenY","targetTouches","toElement","blur","mouseenter","mouseleave","related","rnoInnerhtml","rchecked","rcleanScript","manipulationTarget","disableScript","restoreScript","cloneCopyEvent","dest","udataOld","udataCur","fixInput","domManip","hasScripts","iNoClone","valueIsFunction","_evalUrl","keepData","cleanData","dataAndEvents","deepDataAndEvents","srcElements","destElements","inPage","prepend","replaceWith","replaceChild","prependTo","insertAfter","replaceAll","insert","rnumnonpx","rcustomProp","getStyles","opener","old","rboxStyle","rtrimCSS","curCSS","computed","minWidth","isCustomProp","pixelBoxStyles","addGetHookIf","conditionFn","hookFn","computeStyleTests","divStyle","pixelPositionVal","reliableMarginLeftVal","roundPixelMeasures","marginLeft","pixelBoxStylesVal","boxSizingReliableVal","scrollboxSizeVal","measure","reliableTrDimensionsVal","backgroundClip","clearCloneStyle","boxSizingReliable","pixelPosition","reliableMarginLeft","scrollboxSize","reliableTrDimensions","trChild","trStyle","borderTopWidth","borderBottomWidth","cssPrefixes","emptyStyle","vendorProps","finalPropName","cssProps","capName","rdisplayswap","cssShow","cssNormalTransform","setPositiveNumber","subtract","boxModelAdjustment","isBorderBox","computedVal","getWidthOrHeight","valueIsBorderBox","offsetProp","Tween","cssHooks","animationIterationCount","columnCount","fillOpacity","flexGrow","flexShrink","gridArea","gridColumn","gridColumnEnd","gridColumnStart","gridRow","gridRowEnd","gridRowStart","orphans","widows","zIndex","zoom","origName","scrollboxSizeBuggy","expanded","propHooks","run","eased","step","fx","swing","fxNow","inProgress","rfxtypes","rrun","schedule","createFxNow","genFx","includeWidth","createTween","tweeners","stopped","prefilters","tweens","specialEasing","originalProperties","originalOptions","gotoEnd","timer","anim","tweener","oldfire","propTween","restoreDisplay","isBox","dataShow","unqueued","overflowX","prefilter","opt","speeds","fadeTo","optall","doAnimation","finish","stopQueue","timers","cssFn","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","slow","fast","checkOn","optSelected","radioValue","boolHook","removeAttr","nType","attrHooks","attrNames","getter","lowercaseName","rfocusable","rclickable","stripAndCollapse","getClass","classesToArray","removeProp","propFix","tabindex","class","classNames","curValue","finalValue","stateVal","isValidValue","rreturn","valHooks","optionSet","focusin","rfocusMorph","stopPropagationCallback","onlyHandlers","bubbleType","ontype","lastElement","eventPath","parentWindow","simulate","triggerHandler","attaches","rquery","parseXML","parserErrorElem","rbracket","rCRLF","rsubmitterTypes","rsubmittable","buildParams","traditional","valueOrFunction","serialize","serializeArray","r20","rhash","rantiCache","rheaders","rnoContent","rprotocol","transports","allTypes","originAnchor","addToPrefiltersOrTransports","structure","dataTypeExpression","dataType","dataTypes","inspectPrefiltersOrTransports","jqXHR","inspected","seekingTransport","inspect","prefilterOrFactory","dataTypeOrTransport","ajaxExtend","flatOptions","ajaxSettings","lastModified","etag","isLocal","processData","async","contentType","accepts","responseFields","converters","* text","text html","text json","text xml","ajaxSetup","settings","ajaxPrefilter","ajaxTransport","ajax","cacheURL","responseHeadersString","responseHeaders","timeoutTimer","urlAnchor","fireGlobals","uncached","callbackContext","globalEventContext","completeDeferred","requestHeaders","requestHeadersNames","strAbort","getAllResponseHeaders","setRequestHeader","overrideMimeType","mimeType","abort","statusText","crossDomain","hasContent","ifModified","success","nativeStatusText","responses","isSuccess","modified","finalDataType","firstDataType","conv2","conv","dataFilter","throws","getJSON","getScript","text script","wrapAll","wrapInner","htmlIsFunction","unwrap","xhrSuccessStatus","1223","xhrSupported","cors","errorCallback","username","xhrFields","onload","onabort","ontimeout","binary","scriptAttrs","charset","scriptCharset","oldCallbacks","rjsonp","jsonp","jsonpCallback","originalSettings","callbackName","overwritten","responseContainer","jsonProp","keepScripts","parsed","animated","setOffset","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","curElem","using","win","pageXOffset","parentOffset","scrollTo","Height","Width","","defaultExtra","funcName","unbind","delegate","undelegate","fnOver","fnOut","holdReady","hold","parseJSON","isNumeric","_jQuery","_$","defineLocale","months","monthsShort","weekdays","weekdaysShort","weekdaysMin","meridiemParse","isPM","meridiem","hours","minutes","isLower","longDateFormat","LT","LTS","LL","LLL","LLLL","calendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","relativeTime","future","past","ss","mm","hh","dd","MM","yy","dayOfMonthOrdinalParse","ordinal","number","dow","doy","5296","pluralForm","plurals","pluralize","withoutSuffix","isFuture","weekdaysParseExact","postformat","2855","7896","symbolMap","preparse","2309","3097","numberMap","١","٢","٣","٤","٥","٦","٧","٨","٩","٠","7728","9673","336","suffixes","70","80","20","50","100","30","60","90","1140","relativeTimeWithPlural","forms","isFormat","period","4950","ww","lastDigit","last2Digits","6947","4062","১","২","৩","৪","৫","৬","৭","৮","৯","০","meridiemHour","1515","8753","༡","༢","༣","༤","༥","༦","༧","༨","༩","༠","monthsShortRegex","monthsParseExact","3423","relativeTimeWithMutation","mutationTable","monthsParse","monthsRegex","minWeekdaysParse","weekdaysParse","fullWeekdaysParse","shortWeekdaysParse","monthsStrictRegex","monthsShortStrictRegex","longMonthsParse","shortMonthsParse","lastNumber","4516","7672","ll","lll","llll","1139","plural","4713","5820","4131","3422","processRelativeTime","6246","6647","8049","5006","monthsNominativeEl","monthsGenitiveEl","momentToFormat","_monthsGenitiveEl","_monthsNominativeEl","calendarEl","mom","_calendarEl","8006","9706","7157","6906","5089","5304","2483","8469","1754","8387","monthsShortDot","2657","invalidDate","9099","1488","5318","4175","9383","۱","۲","۳","۴","۵","۶","۷","۸","۹","۰","1382","numbersPast","numbersFuture","8959","7535","5886","1967","219","6993","monthsShortWithDots","monthsShortWithoutDots","8891","9554","1865","9485","8869","4998","૧","૨","૩","૪","૫","૬","૭","૮","૯","૦","1248","1500","१","२","३","४","५","६","७","८","९","०","4873","4864","weekEndings","6060","5942","9921","9378","6781","2719","eras","since","narrow","abbr","eraYearOrdinalRegex","eraYearOrdinalParse","6269","$0","$1","1952","40","3540","១","២","៣","៤","៥","៦","៧","៨","៩","០","7479","೧","೨","೩","೪","೫","೬","೭","೮","೯","೦","9481","isUpper","9697","640","4242","eifelerRegelAppliesToNumber","5889","2138","units","translateSingular","9541","relativeTimeWithSingular","3972","translator","words","correctGrammaticalCase","wordKey","8626","4352","6485","6238","1296","relativeTimeMr","5081","7048","7814","4059","၁","၂","၃","၄","၅","၆","၇","၈","၉","၀","6824","4997","4341","421","8112","3356","9583","੧","੨","੩","੪","੫","੬","੭","੮","੯","੦","6800","monthsNominative","monthsSubjective","9912","37","8235","separator","8561","2414","days","947","7081","5315","9345","1899","6466","4277","9250","5272","214","6121","௧","௨","௩","௪","௫","௬","௭","௮","௯","௦","4182","4116","3250","3111","2527","8104","1751","numbersNouns","numberNoun","hundred","ten","word","7554","6061","8447","9236","7693","hm","5636","processHoursFunction","nominative","accusative","genitive","807","8105","8429","9489","860","6520","9599","6433","381","5759","8279","hookCallback","hasOwnProp","isObjectEmpty","isUndefined","isDate","createUTC","locale","strict","createLocalOrUTC","utc","getParsingFlags","_pf","unusedTokens","unusedInput","charsLeftOver","nullInput","invalidEra","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","era","rfc2822","weekdayMismatch","_isValid","flags","parsedParts","isNowValid","_d","invalidWeekday","_strict","bigHour","createInvalid","momentProperties","updateInProgress","copyConfig","_isAMomentObject","_f","_l","_tzm","_isUTC","_offset","_locale","Moment","updateOffset","isMoment","suppressDeprecationWarnings","deprecate","firstTime","deprecationHandler","deprecations","deprecateSimple","mergeConfigs","parentConfig","childConfig","Locale","zeroFill","targetLength","forceSign","absNumber","zerosToFill","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","addFormatToken","padded","localeData","formatMoment","expandFormat","replaceLongDateFormatTokens","aliases","addUnitAlias","shorthand","lowerCase","normalizeUnits","normalizeObjectUnits","inputObject","normalizedProp","normalizedInput","priorities","addUnitPriority","priority","isLeapYear","absFloor","toInt","argumentForCoercion","coercedNumber","makeGetSet","keepTime","set$1","daysInMonth","regexes","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchOffset","matchShortOffset","matchWord","addRegexToken","regex","strictRegex","isStrict","getParseRegexForToken","regexEscape","p2","p3","p4","addParseToken","addWeekParseToken","_w","addTimeToArrayFromToken","_a","modMonth","defaultLocaleMonths","defaultLocaleMonthsShort","MONTHS_IN_FORMAT","defaultMonthsShortRegex","defaultMonthsRegex","handleStrictParse","monthName","ii","llc","toLocaleLowerCase","_monthsParse","_longMonthsParse","_shortMonthsParse","setMonth","dayOfMonth","getSetMonth","computeMonthsParse","cmpLenRev","shortPieces","longPieces","mixedPieces","_monthsRegex","_monthsShortRegex","_monthsStrictRegex","_monthsShortStrictRegex","daysInYear","parseTwoDigitYear","getSetYear","createDate","getFullYear","setFullYear","createUTCDate","UTC","getUTCFullYear","setUTCFullYear","firstWeekOffset","fwd","getUTCDay","dayOfYearFromWeeks","resYear","resDayOfYear","dayOfYear","weekOfYear","resWeek","weekOffset","weeksInYear","weekOffsetNext","shiftWeekdays","ws","weekdaysMinRegex","weekdaysShortRegex","weekdaysRegex","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","defaultWeekdaysRegex","defaultWeekdaysShortRegex","defaultWeekdaysMinRegex","handleStrictParse$1","weekdayName","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","computeWeekdaysParse","minp","shortp","longp","minPieces","_weekdaysRegex","_weekdaysShortRegex","_weekdaysMinRegex","_weekdaysStrictRegex","_weekdaysShortStrictRegex","_weekdaysMinStrictRegex","hFormat","lowercase","matchMeridiem","_meridiemParse","seconds","kInput","_isPm","_meridiem","pos1","pos2","globalLocale","getSetHour","baseConfig","locales","localeFamilies","commonPrefix","arr1","arr2","minl","normalizeLocale","loadLocale","oldLocale","_abbr","aliasedRequire","getSetGlobalLocale","getLocale","parentLocale","names","checkOverflow","_overflowDayOfYear","_overflowWeeks","_overflowWeekday","extendedIsoRegex","basicIsoRegex","tzRegex","isoDates","isoTimes","aspNetJsonRegex","obsOffsets","UT","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","configFromISO","allowTime","dateFormat","timeFormat","tzFormat","configFromStringAndFormat","untruncateYear","yearStr","configFromRFC2822","parsedArray","monthStr","dayStr","hourStr","minuteStr","secondStr","weekdayStr","parsedInput","getDay","obsOffset","militaryOffset","numOffset","setUTCMinutes","getUTCMinutes","configFromArray","currentDate","expectedWeekday","yearToUse","nowValue","_useUTC","getUTCMonth","getUTCDate","getMonth","getDate","weekYear","weekdayOverflow","curWeek","GG","createLocal","_week","gg","_dayOfYear","_nextDay","ISO_8601","RFC_2822","skipped","stringLength","totalParsedInputLength","isPm","erasConvertYear","prepareConfig","tempConfig","bestMoment","scoreToBeat","currentScore","validFormatFound","bestFormatIsValid","score","createFromInputFallback","dayOrDate","isUTC","prototypeMin","other","prototypeMax","pickBy","moments","ordering","Duration","years","quarters","weeks","isoWeek","milliseconds","unitHasDecimal","_milliseconds","_days","_months","_bubble","isDuration","absRound","utcOffset","offsetFromString","chunkOffset","cloneWithOffset","setTime","local","getDateOffset","getTimezoneOffset","isUtc","aspNetRegex","isoRegex","createDuration","diffRes","parseIso","isBefore","positiveMomentsDifference","inp","isAfter","createAdder","addSubtract","isAdding","invalid","isString","isMomentInput","arrayTest","dataTypeTest","objectTest","propertyTest","isCalendarSpec","monthDiff","wholeMonthDiff","anchor","newLocaleData","defaultFormat","defaultFormatUtc","MS_PER_MINUTE","MS_PER_HOUR","MS_PER_400_YEARS","mod$1","dividend","divisor","localStartOfDate","utcStartOfDate","matchEraAbbr","erasAbbrRegex","computeErasParse","abbrPieces","namePieces","narrowPieces","_erasRegex","_erasNameRegex","_erasAbbrRegex","_erasNarrowRegex","addWeekYearFormatToken","getSetWeekYearHelper","weeksTarget","setWeekAll","dayOfYearData","erasNameRegex","erasNarrowRegex","erasParse","_eraYearOrdinalRegex","isoWeekYear","_dayOfMonthOrdinalParse","_ordinalParse","_dayOfMonthOrdinalParseLenient","getSetDayOfMonth","getSetMinute","getSetMillisecond","getSetSecond","parseMs","preParsePostFormat","sod","calendarFormat","asFloat","zoneDelta","startOfDate","inputString","humanize","fromNow","toNow","invalidAt","localInput","isBetween","inclusivity","localFrom","localTo","isSame","inputMs","isSameOrAfter","isSameOrBefore","parsingFlags","prioritized","unitsObj","toObject","toDate","toISOString","keepOffset","zone","unix","creationData","eraName","eraNarrow","eraAbbr","eraYear","isoWeeks","weekInfo","weeksInWeekYear","isoWeeksInYear","isoWeeksInISOWeekYear","keepLocalTime","keepMinutes","localAdjust","_changeInProgress","parseZone","tZone","hasAlignedHourOffset","isDST","isUtcOffset","zoneAbbr","zoneName","dates","isDSTShifted","_isDSTShifted","array1","array2","dontConvert","lengthDiff","diffs","proto$1","get$1","field","listMonthsImpl","listWeekdaysImpl","localeSorted","_calendar","_longDateFormat","formatUpper","tok","_invalidDate","_ordinal","_relativeTime","pastFuture","_eras","_monthsShort","_monthsParseExact","firstDayOfYear","firstDayOfWeek","_weekdays","_weekdaysMin","_weekdaysShort","_weekdaysParseExact","_fullWeekdaysParse","langData","mathAbs","addSubtract$1","absCeil","daysToMonths","monthsToDays","makeAs","alias","as","asMilliseconds","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asQuarters","asYears","makeGetter","thresholds","substituteTimeAgo","abs$1","toISOString$1","totalSign","ymSign","daysSign","hmsSign","proto$2","monthsFromDays","argWithSuffix","argThresholds","withSuffix","posNegDuration","toIsoString","updateLocale","tmpLocale","relativeTimeRounding","roundingFunction","relativeTimeThreshold","myMoment","HTML5_FMT","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","DATE","TIME","TIME_SECONDS","TIME_MS","WEEK","MONTH","379","timeoutDuration","longerTimeoutBrowsers","isBrowser","scheduled","functionToCheck","getStyleComputedProperty","getScrollParent","getReferenceNode","referenceNode","isIE11","MSInputMethodContext","isIE10","isIE","getOffsetParent","noOffsetParent","nextElementSibling","getRoot","findCommonOffsetParent","element1","element2","DOCUMENT_POSITION_FOLLOWING","createRange","setStart","setEnd","commonAncestorContainer","element1root","getScroll","side","upperSide","scrollingElement","includeScroll","modifier","getBordersSize","sideA","sideB","getSize","computedStyle","getWindowSizes","getClientRect","horizScrollbar","vertScrollbar","getOffsetRectRelativeToArbitraryNode","fixedPosition","runIsIE","isHTML","childrenRect","parentRect","scrollParent","borderLeftWidth","marginTop","getViewportOffsetRectRelativeToArtbitraryNode","excludeScroll","relativeOffset","isFixed","getFixedPositionOffsetParent","getBoundaries","boundaries","boundariesNode","isPaddingNumber","computeAutoPlacement","refRect","sortedAreas","filteredAreas","computedPlacement","variation","getReferenceOffsets","commonOffsetParent","getOuterSizes","marginBottom","getOppositePlacement","getPopperOffsets","referenceOffsets","popperRect","popperOffsets","isHoriz","mainSide","secondarySide","measurement","secondaryMeasurement","runModifiers","ends","isDestroyed","arrowStyles","flipped","positionFixed","isCreated","isModifierEnabled","modifierName","getSupportedPropertyName","prefixes","upperProp","toCheck","willChange","disableEventListeners","removeOnDestroy","getWindow","setupEventListeners","updateBound","scrollElement","attachToScrollParents","scrollParents","isBody","eventsEnabled","enableEventListeners","setStyles","isFirefox","isModifierRequired","requestingName","requestedName","requesting","isRequired","requested","ee","validPlacements","placements","clockwise","counter","basePlacement","shiftvariation","shiftOffsets","useHeight","fragments","frag","divider","splitRegex","mergeWithPrevious","index2","transformProp","popperStyles","escapeWithReference","secondary","keepTogether","opSide","arrowElement","sideCapitalized","altSide","arrowElementSize","popperMarginSide","popperBorderSide","sideValue","_data$offsets$arrow","placementOpposite","flipOrder","refOffsets","overlapsRef","overflowsLeft","overflowsRight","overflowsTop","overflowsBottom","overflowsBoundaries","flippedVariationByRef","flipVariations","flippedVariationByContent","flipVariationsByContent","flippedVariation","getOppositeVariation","subtractLength","bound","legacyGpuAccelerationOption","gpuAcceleration","offsetParentRect","shouldRound","noRound","referenceWidth","popperWidth","isVariation","horizontalToInteger","verticalToInteger","prefixedProperty","invertTop","invertLeft","x-placement","modifierOptions","debounce","Defaults","Utils","PopperUtils","callbacksFor","_promiseCallbacks","mixin","allCallbacks","EventTarget","_guidKey","_result","childId","_label","entry","childGuid","TRY_CATCH_ERROR","getThen","tryCatchCallback","tryCatcher","tryCatch","handleMaybeThenable","maybeThenable","originalThen","originalResolve","thenable","fulfill","_onError","subscribe","sealed","publishRejection","publish","_subscribers","onFulfillment","onRejection","subscribers","settled","invokeCallback","hasCallback","Enumerator","abortOnReject","_instanceConstructor","_abortOnReject","_isUsingOwnPromise","OwnPromise","_isUsingOwnResolve","ownResolve","_init","_remaining","_enumerate","_eachEntry","_checkFullfillment","_settleMaybeThenable","firstPass","ownThen","_settledAt","_willSettleAt","_setResultAt","setSettledResult","guidKey","resolver","resolved","finally","makeObject","argumentNames","arrayResult","wrapThenable","onFulFillment","denodeify","nodeFunc","promiseInput","needsPromiseInput","handlePromiseInput","handleValueInput","cast","Resolve","race","AllSettled","_Enumerator","subClass","superClass","allSettled","PromiseHash","HashSettled","_PromiseHash","hashSettled","rethrow","MapEnumerator","mapFn","_mapFn","promises","EMPTY_OBJECT","FilterEnumerator","_MapEnumerator","filterFn","vertxNext","asap","scheduleFlush","browserWindow","browserGlobal","BrowserMutationObserver","MutationObserver","WebKitMutationObserver","isNode","isWorker","importScripts","MessageChannel","useSetTimeout","channel","iterations","observer","nextTick","versions","setImmediate","characterData","port1","port2","vertx","runOnLoop","runOnContext","cb","__PROMISE_INSTRUMENTATION__","De","619","getDefaultOpts","defaultOptions","omitExtraWLInCodeBlocks","describe","noHeaderId","prefixHeaderId","rawPrefixHeaderId","ghCompatibleHeaderId","rawHeaderId","headerLevelStart","parseImgDimensions","simplifiedAutoLink","excludeTrailingPunctuationFromURLs","literalMidWordUnderscores","literalMidWordAsterisks","strikethrough","tables","tablesHeaderId","ghCodeBlocks","tasklists","smoothLivePreview","smartIndentationFix","disableForced4SpacesIndentedSublists","simpleLineBreaks","requireSpaceBeforeHeadingText","ghMentions","ghMentionsLink","encodeEmails","openLinksInNewWindow","backslashEscapesHTMLTags","emoji","underline","ellipsis","completeHTMLDocument","splitAdjacentBlockquotes","showdown","parsers","globalOptions","setFlavor","flavor","github","ghost","vanilla","allOn","validate","extension","errMsg","baseMsg","ext","escapeCharactersCallback","wholeMatch","m1","setOption","resetOptions","preset","getFlavor","getFlavorOptions","getDefaultOptions","subParser","stdExtName","validExtension","getAllExtensions","removeExtension","resetExtensions","validateExtension","escapeCharacters","charsToEscape","afterBackslash","regexString","unescapeHTMLEntities","txt","rgxFindMatchPos","matchRecursiveRegExp","matchPos","replaceRecursiveRegExp","replacement","repStr","finalStr","lng","bits","regexIndexOf","splitAtIndex","encodeEmailAddress","mail","padEnd","padString","repeat","alert","asteriskDashAndColon","emojis","+1","-1","1234","1st_place_medal","2nd_place_medal","3rd_place_medal","8ball","ab","abc","abcd","accept","aerial_tramway","airplane","alarm_clock","alembic","alien","ambulance","amphora","angel","anger","angry","anguished","ant","aquarius","aries","arrow_backward","arrow_double_down","arrow_double_up","arrow_down","arrow_down_small","arrow_forward","arrow_heading_down","arrow_heading_up","arrow_left","arrow_lower_left","arrow_lower_right","arrow_right","arrow_right_hook","arrow_up","arrow_up_down","arrow_up_small","arrow_upper_left","arrow_upper_right","arrows_clockwise","arrows_counterclockwise","art","articulated_lorry","artificial_satellite","astonished","athletic_shoe","atm","atom_symbol","avocado","baby","baby_bottle","baby_chick","baby_symbol","back","bacon","badminton","baggage_claim","baguette_bread","balance_scale","balloon","ballot_box","ballot_box_with_check","bamboo","banana","bangbang","bank","bar_chart","barber","baseball","basketball","basketball_man","basketball_woman","bat","bath","bathtub","battery","beach_umbrella","bear","bed","bee","beer","beers","beetle","beginner","bell","bellhop_bell","bento","biking_man","bike","biking_woman","bikini","biohazard","bird","birthday","black_circle","black_flag","black_heart","black_joker","black_large_square","black_medium_small_square","black_medium_square","black_nib","black_small_square","black_square_button","blonde_man","blonde_woman","blossom","blowfish","blue_book","blue_car","blue_heart","blush","boar","boat","bomb","book","bookmark","bookmark_tabs","books","boom","boot","bouquet","bowing_man","bow_and_arrow","bowing_woman","bowling","boxing_glove","boy","bread","bride_with_veil","bridge_at_night","briefcase","broken_heart","bug","building_construction","bulb","bullettrain_front","bullettrain_side","burrito","bus","business_suit_levitating","busstop","bust_in_silhouette","busts_in_silhouette","butterfly","cactus","cake","call_me_hand","calling","camel","camera_flash","camping","cancer","candle","candy","canoe","capital_abcd","capricorn","car","card_file_box","card_index","card_index_dividers","carousel_horse","carrot","cat","cat2","cd","chains","champagne","chart_with_downwards_trend","chart_with_upwards_trend","checkered_flag","cheese","cherries","cherry_blossom","chestnut","chicken","children_crossing","chipmunk","chocolate_bar","christmas_tree","church","cinema","circus_tent","city_sunrise","city_sunset","cityscape","clap","clapper","classical_building","clinking_glasses","clipboard","clock1","clock10","clock1030","clock11","clock1130","clock12","clock1230","clock130","clock2","clock230","clock3","clock330","clock4","clock430","clock5","clock530","clock6","clock630","clock7","clock730","clock8","clock830","clock9","clock930","closed_book","closed_lock_with_key","closed_umbrella","cloud","cloud_with_lightning","cloud_with_lightning_and_rain","cloud_with_rain","cloud_with_snow","clown_face","clubs","cocktail","coffee","coffin","cold_sweat","comet","computer","computer_mouse","confetti_ball","confounded","confused","congratulations","construction","construction_worker_man","construction_worker_woman","control_knobs","convenience_store","cookie","cool","policeman","copyright","corn","couch_and_lamp","couple","couple_with_heart_woman_man","couple_with_heart_man_man","couple_with_heart_woman_woman","couplekiss_man_man","couplekiss_man_woman","couplekiss_woman_woman","cow","cow2","cowboy_hat_face","crab","crayon","credit_card","crescent_moon","cricket","crocodile","croissant","crossed_fingers","crossed_flags","crossed_swords","crown","cry","crying_cat_face","crystal_ball","cucumber","cupid","curly_loop","currency_exchange","curry","custard","customs","cyclone","dagger","dancer","dancing_women","dancing_men","dango","dark_sunglasses","dart","deciduous_tree","deer","department_store","derelict_house","desert","desert_island","desktop_computer","male_detective","diamond_shape_with_a_dot_inside","diamonds","disappointed","disappointed_relieved","dizzy","dizzy_face","do_not_litter","dog","dog2","dollar","dolls","dolphin","door","dove","dragon","dragon_face","dress","dromedary_camel","drooling_face","droplet","drum","duck","dvd","e-mail","eagle","ear","ear_of_rice","earth_africa","earth_americas","earth_asia","egg","eggplant","eight_pointed_black_star","eight_spoked_asterisk","electric_plug","elephant","envelope_with_arrow","euro","european_castle","european_post_office","evergreen_tree","exclamation","expressionless","eye","eye_speech_bubble","eyeglasses","eyes","face_with_head_bandage","face_with_thermometer","fist_oncoming","fallen_leaf","family_man_woman_boy","family_man_boy","family_man_boy_boy","family_man_girl","family_man_girl_boy","family_man_girl_girl","family_man_man_boy","family_man_man_boy_boy","family_man_man_girl","family_man_man_girl_boy","family_man_man_girl_girl","family_man_woman_boy_boy","family_man_woman_girl","family_man_woman_girl_boy","family_man_woman_girl_girl","family_woman_boy","family_woman_boy_boy","family_woman_girl","family_woman_girl_boy","family_woman_girl_girl","family_woman_woman_boy","family_woman_woman_boy_boy","family_woman_woman_girl","family_woman_woman_girl_boy","family_woman_woman_girl_girl","fast_forward","fax","fearful","feet","female_detective","ferris_wheel","ferry","field_hockey","file_cabinet","file_folder","film_projector","film_strip","fire_engine","fireworks","first_quarter_moon","first_quarter_moon_with_face","fish","fish_cake","fishing_pole_and_fish","fist_raised","fist_left","fist_right","flashlight","fleur_de_lis","flight_arrival","flight_departure","floppy_disk","flower_playing_cards","flushed","fog","foggy","football","footprints","fork_and_knife","fountain","fountain_pen","four_leaf_clover","fox_face","framed_picture","free","fried_egg","fried_shrimp","fries","frog","frowning","frowning_face","frowning_man","frowning_woman","middle_finger","fuelpump","full_moon","full_moon_with_face","funeral_urn","game_die","gear","gem","gemini","gift","gift_heart","girl","globe_with_meridians","goal_net","goat","golf","golfing_man","golfing_woman","gorilla","grapes","green_apple","green_book","green_heart","green_salad","grey_exclamation","grey_question","grimacing","grin","grinning","guardsman","guardswoman","guitar","gun","haircut_woman","haircut_man","hamburger","hammer","hammer_and_pick","hammer_and_wrench","hamster","hand","handbag","handshake","hankey","hatched_chick","hatching_chick","headphones","hear_no_evil","heart","heart_decoration","heart_eyes","heart_eyes_cat","heartbeat","heartpulse","hearts","heavy_check_mark","heavy_division_sign","heavy_dollar_sign","heavy_heart_exclamation","heavy_minus_sign","heavy_multiplication_x","heavy_plus_sign","helicopter","herb","hibiscus","high_brightness","high_heel","hocho","hole","honey_pot","horse","horse_racing","hospital","hot_pepper","hotdog","hotel","hotsprings","hourglass","hourglass_flowing_sand","house","house_with_garden","houses","hugs","hushed","ice_cream","ice_hockey","ice_skate","icecream","ideograph_advantage","imp","inbox_tray","incoming_envelope","tipping_hand_woman","information_source","innocent","interrobang","iphone","izakaya_lantern","jack_o_lantern","japan","japanese_castle","japanese_goblin","japanese_ogre","jeans","joy","joy_cat","joystick","kaaba","keycap_ten","kick_scooter","kimono","kiss","kissing","kissing_cat","kissing_closed_eyes","kissing_heart","kissing_smiling_eyes","kiwi_fruit","koala","koko","large_blue_circle","large_blue_diamond","large_orange_diamond","last_quarter_moon","last_quarter_moon_with_face","latin_cross","laughing","leaves","ledger","left_luggage","left_right_arrow","leftwards_arrow_with_hook","lemon","leo","leopard","level_slider","libra","light_rail","lion","lips","lipstick","lizard","lock_with_ink_pen","lollipop","loud_sound","loudspeaker","love_hotel","love_letter","low_brightness","lying_face","mag","mag_right","mahjong","mailbox","mailbox_closed","mailbox_with_mail","mailbox_with_no_mail","man","man_artist","man_astronaut","man_cartwheeling","man_cook","man_dancing","man_facepalming","man_factory_worker","man_farmer","man_firefighter","man_health_worker","man_in_tuxedo","man_judge","man_juggling","man_mechanic","man_office_worker","man_pilot","man_playing_handball","man_playing_water_polo","man_scientist","man_shrugging","man_singer","man_student","man_teacher","man_technologist","man_with_gua_pi_mao","man_with_turban","tangerine","mans_shoe","mantelpiece_clock","maple_leaf","martial_arts_uniform","massage_woman","massage_man","meat_on_bone","medal_military","medal_sports","mega","melon","memo","men_wrestling","menorah","mens","metal","metro","microphone","microscope","milk_glass","milky_way","minibus","minidisc","mobile_phone_off","money_mouth_face","money_with_wings","moneybag","monkey","monkey_face","monorail","moon","mortar_board","mosque","motor_boat","motor_scooter","motorcycle","motorway","mount_fuji","mountain","mountain_biking_man","mountain_biking_woman","mountain_cableway","mountain_railway","mountain_snow","mouse","mouse2","movie_camera","moyai","mrs_claus","muscle","mushroom","musical_keyboard","musical_note","musical_score","nail_care","name_badge","national_park","nauseated_face","necktie","negative_squared_cross_mark","nerd_face","neutral_face","new","new_moon","new_moon_with_face","newspaper","newspaper_roll","next_track_button","ng","no_good_man","no_good_woman","night_with_stars","no_bell","no_bicycles","no_entry","no_entry_sign","no_mobile_phones","no_mouth","no_pedestrians","no_smoking","non-potable_water","nose","notebook","notebook_with_decorative_cover","notes","nut_and_bolt","o2","ocean","octopus","oden","office","oil_drum","ok","ok_hand","ok_man","ok_woman","old_key","older_man","older_woman","om","oncoming_automobile","oncoming_bus","oncoming_police_car","oncoming_taxi","open_file_folder","open_hands","open_mouth","open_umbrella","ophiuchus","orange_book","orthodox_cross","outbox_tray","owl","ox","package","page_facing_up","page_with_curl","pager","paintbrush","palm_tree","pancakes","panda_face","paperclip","paperclips","parasol_on_ground","parking","part_alternation_mark","partly_sunny","passenger_ship","passport_control","pause_button","peace_symbol","peach","peanuts","pear","pen","pencil2","penguin","pensive","performing_arts","persevere","person_fencing","pouting_woman","phone","pick","pig","pig2","pig_nose","pill","pineapple","ping_pong","pisces","pizza","place_of_worship","plate_with_cutlery","play_or_pause_button","point_down","point_left","point_right","point_up","point_up_2","police_car","policewoman","poodle","popcorn","post_office","postal_horn","postbox","potable_water","potato","pouch","poultry_leg","pound","rage","pouting_cat","pouting_man","pray","prayer_beads","pregnant_woman","previous_track_button","prince","princess","printer","purple_heart","purse","pushpin","put_litter_in_its_place","question","rabbit","rabbit2","racehorse","racing_car","radio_button","radioactive","railway_car","railway_track","rainbow","rainbow_flag","raised_back_of_hand","raised_hand_with_fingers_splayed","raised_hands","raising_hand_woman","raising_hand_man","ram","ramen","rat","record_button","recycle","red_circle","registered","relaxed","relieved","reminder_ribbon","repeat_one","rescue_worker_helmet","restroom","revolving_hearts","rewind","rhinoceros","ribbon","rice","rice_ball","rice_cracker","rice_scene","right_anger_bubble","ring","robot","rocket","rofl","roll_eyes","roller_coaster","rooster","rose","rosette","rotating_light","round_pushpin","rowing_man","rowing_woman","rugby_football","running_man","running_shirt_with_sash","running_woman","sagittarius","sake","sandal","santa","satellite","saxophone","school","school_satchel","scissors","scorpion","scorpius","scream","scream_cat","scroll","seat","secret","see_no_evil","seedling","selfie","shallow_pan_of_food","shamrock","shark","shaved_ice","sheep","shell","shield","shinto_shrine","ship","shirt","shopping","shopping_cart","shower","shrimp","signal_strength","six_pointed_star","ski","skier","skull","skull_and_crossbones","sleeping","sleeping_bed","sleepy","slightly_frowning_face","slightly_smiling_face","slot_machine","small_airplane","small_blue_diamond","small_orange_diamond","small_red_triangle","small_red_triangle_down","smile","smile_cat","smiley","smiley_cat","smiling_imp","smirk","smirk_cat","smoking","snail","snake","sneezing_face","snowboarder","snowflake","snowman","snowman_with_snow","sob","soccer","soon","sos","sound","space_invader","spades","spaghetti","sparkle","sparkler","sparkles","sparkling_heart","speak_no_evil","speaker","speaking_head","speech_balloon","speedboat","spider","spider_web","spiral_calendar","spiral_notepad","spoon","squid","stadium","star","star2","star_and_crescent","star_of_david","stars","station","statue_of_liberty","steam_locomotive","stew","stop_button","stop_sign","stopwatch","straight_ruler","strawberry","stuck_out_tongue","stuck_out_tongue_closed_eyes","stuck_out_tongue_winking_eye","studio_microphone","stuffed_flatbread","sun_behind_large_cloud","sun_behind_rain_cloud","sun_behind_small_cloud","sun_with_face","sunflower","sunglasses","sunny","sunrise","sunrise_over_mountains","surfing_man","surfing_woman","sushi","suspension_railway","sweat","sweat_drops","sweat_smile","sweet_potato","swimming_man","swimming_woman","symbols","synagogue","syringe","taco","tada","tanabata_tree","taurus","taxi","tea","telephone_receiver","telescope","tennis","tent","thermometer","thinking","thought_balloon","ticket","tickets","tiger","tiger2","timer_clock","tipping_hand_man","tired_face","toilet","tokyo_tower","tongue","tophat","tornado","trackball","tractor","traffic_light","train","train2","tram","triangular_flag_on_post","triangular_ruler","trident","triumph","trolleybus","trophy","tropical_drink","tropical_fish","truck","trumpet","tulip","tumbler_glass","turkey","turtle","tv","twisted_rightwards_arrows","two_hearts","two_men_holding_hands","two_women_holding_hands","u5272","u5408","u55b6","u6307","u6708","u6709","u6e80","u7121","u7533","u7981","u7a7a","umbrella","unamused","underage","unicorn","unlock","upside_down_face","vertical_traffic_light","vhs","vibration_mode","video_camera","video_game","violin","virgo","volcano","volleyball","vs","vulcan_salute","walking_man","walking_woman","waning_crescent_moon","waning_gibbous_moon","warning","wastebasket","watch","water_buffalo","watermelon","wave","wavy_dash","waxing_crescent_moon","wc","weary","wedding","weight_lifting_man","weight_lifting_woman","whale","whale2","wheel_of_dharma","wheelchair","white_check_mark","white_circle","white_flag","white_flower","white_large_square","white_medium_small_square","white_medium_square","white_small_square","white_square_button","wilted_flower","wind_chime","wind_face","wine_glass","wink","wolf","woman","woman_artist","woman_astronaut","woman_cartwheeling","woman_cook","woman_facepalming","woman_factory_worker","woman_farmer","woman_firefighter","woman_health_worker","woman_judge","woman_juggling","woman_mechanic","woman_office_worker","woman_pilot","woman_playing_handball","woman_playing_water_polo","woman_scientist","woman_shrugging","woman_singer","woman_student","woman_teacher","woman_technologist","woman_with_turban","womans_clothes","womans_hat","women_wrestling","womens","world_map","worried","wrench","writing_hand","yellow_heart","yen","yin_yang","yum","zap","zipper_mouth_face","zzz","octocat","Converter","converterOptions","langExtensions","outputModifiers","setConvFlavor","_parseExtension","validExt","listen","gOpt","_dispatch","evtName","globals","ei","nText","makeHtml","gHtmlBlocks","gHtmlMdBlocks","gHtmlSpans","gUrls","gTitles","gDimensions","gListLevel","hashLinkCounts","rsp","rgx","makeMarkdown","makeMd","HTMLParser","preList","pres","presPH","childElementCount","language","clean","mdDoc","addExtension","useExtension","extensionName","getMetadata","getMetadataFormat","_setMetadataPair","_setMetadataFormat","_setMetadataRaw","writeAnchorTag","linkText","linkId","m5","m6","wm","mentions","lnk","simpleURLRegex","simpleURLRegex2","delimUrlRegex","simpleMailRegex","delimMailRegex","replaceLink","leadingMagicChars","m2","m3","trailingPunctuation","trailingMagicChars","lnkTxt","lmc","tmc","replaceMail","bq","codeblock","nextChar","doctypeParsed","leadingText","emojiCode","delim","blockText","blockTags","repFunc","inside","opTagPos","rgx1","patLeft","patRight","subTexts","newSubText1","hashHTMLSpan","repText","setextRegexH1","setextRegexH2","spanGamut","hID","headerId","hashBlock","matchFound","hLevel","atxStyle","customizedHeaderId","hText","writeImageTag","altText","gDims","parseInside","lead","processListItems","listStr","trimTrailing","isParagraphed","m4","taskbtn","bulletStyle","otp","wm2","styleStartNumber","listType","parseConsecutiveLists","olRgx","ulRgx","counterRxg","parseCL","parseMetadataContents","wholematch","grafs","grafsOut","grafsOutIt","codeFlag","replaceFunc","blankLines","parseCells","cell","parseTable","rawTable","tableLines","sLine","rawHeaders","rawStyles","rawCells","cells","tableHeaderId","row","tb","tblLgn","charCodeToReplace","childrenLength","innerTxt","headerLevel","headerMark","listItems","listItemsLenght","listNum","listItemTxt","childrenLenght","spansOnly","tableArray","headings","rows","headContent","allign","cols","cellContent","cellSpacesCount","strLen","7957","DEFAULT_OPTIONS","arrowSelector","innerSelector","_isOpen","_popperOptions","_setEventListeners","allowHtml","tooltipGenerator","tooltipNode","titleNode","_addTitleContent","_isOpening","_tooltipNode","popperInstance","_findContainer","_append","popperOptions","_hide","directEvents","oppositeEvents","usedByTooltip","_scheduleShow","_scheduleHide","closeOnClickOutside","computedDelay","_showTimeout","_show","_setTooltipNodeEvent","_clearTitleContent","lastTitle","_dispose","updateTitleContent","_updateTitleContent","relatedreference","relatedreference2","evt2"],"mappings":"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,CACtB,IAAMi/E,EAAOz4J,EAAyBw5E,EAAQn/C;AAC9C,GAAIo+H,EAAM,CACJA,GAAAA,EAAKz3J,IACP,OAAOy2J,EAAQgB,EAAKz3J;AAGtB,GAA0B,mBAAfy3J,EAAKv6J,MACd,OAAOu5J,EAAQgB,EAAKv6J,OAIxBs7E,EAASt2E,EAAes2E,GAQ1B,OALSk/E,SAAc9tJ,GAErB,OADAqoB,QAAQC,KAAK,qBAAsBtoB,GAC5B,MC7HJ,IAAM01F,EAAO76F,EAAO,CACzB,IACA,OACA,UACA,UACA,OACA,UACA,QACA,QACA,IACA,MACA,MACA,MACA,QACA,aACA,OACA,KACA,SACA,SACA,UACA,SACA,OACA,OACA,MACA,WACA,UACA,OACA,WACA,KACA,YACA,MACA,UACA,MACA,SACA,MACA,MACA,KACA,KACA,UACA,KACA,WACA,aACA,SACA,OACA,SACA,OACA,KACA,KACA,KACA,KACA,KACA,KACA,OACA,SACA,SACA,KACA,OACA,IACA,MACA,QACA,MACA,MACA,QACA,SACA,KACA,OACA,MACA,OACA,UACA,OACA,WACA,QACA,MACA,OACA,KACA,WACA,SACA,SACA,IACA,UACA,MACA,WACA,IACA,KACA,KACA,OACA,IACA,OACA,UACA,SACA,SACA,QACA,SACA,SACA,OACA,SACA,SACA,QACA,MACA,UACA,MACA,QACA,QACA,KACA,WACA,WACA,QACA,KACA,QACA,OACA,KACA,QACA,KACA,IACA,KACA,MACA,QACA,QAIWkzJ,EAAMlzJ,EAAO,CACxB,MACA,IACA,WACA,cACA,eACA,eACA,gBACA,mBACA,SACA,WACA,OACA,OACA,UACA,SACA,OACA,IACA,QACA,WACA,QACA,QACA,OACA,iBACA,SACA,OACA,WACA,QACA,OACA,UACA,UACA,WACA,iBACA,OACA,OACA,QACA,SACA,SACA,OACA,WACA,QACA,OACA,QACA,OACA,UAGWmzJ,EAAanzJ,EAAO,CAC/B,UACA,gBACA,sBACA,cACA,mBACA,oBACA,oBACA,iBACA,UACA,UACA,UACA,UACA,UACA,iBACA,UACA,UACA,cACA,eACA,WACA,eACA,qBACA,cACA,SACA,iBAOWozJ,EAAgBpzJ,EAAO,CAClC,UACA,gBACA,SACA,UACA,eACA,YACA,mBACA,iBACA,gBACA,gBACA,gBACA,QACA,YACA,OACA,eACA,YACA,UACA,gBACA,SACA,MACA,aACA,UACA,QAGWqzJ,EAASrzJ,EAAO,CAC3B,OACA,WACA,SACA,UACA,QACA,SACA,KACA,aACA,gBACA,KACA,KACA,QACA,UACA,WACA,QACA,OACA,KACA,SACA,QACA,SACA,OACA,OACA,UACA,SACA,MACA,QACA,MACA,SACA,eAKWszJ,EAAmBtzJ,EAAO,CACrC,UACA,cACA,aACA,WACA,YACA,UACA,UACA,SACA,SACA,QACA,YACA,aACA,iBACA,cACA,SAGW01C,EAAO11C,EAAO,CAAC,UCpRf66F,EAAO76F,EAAO,CACzB,SACA,SACA,QACA,MACA,iBACA,eACA,uBACA,WACA,aACA,UACA,SACA,UACA,cACA,cACA,UACA,OACA,QACA,QACA,QACA,OACA,UACA,WACA,eACA,SACA,cACA,WACA,WACA,UACA,MACA,WACA,0BACA,wBACA,WACA,YACA,UACA,eACA,OACA,MACA,UACA,SACA,SACA,OACA,OACA,WACA,KACA,YACA,YACA,QACA,OACA,QACA,OACA,OACA,UACA,OACA,MACA,MACA,YACA,QACA,SACA,MACA,YACA,WACA,QACA,OACA,QACA,UACA,aACA,SACA,OACA,UACA,UACA,cACA,cACA,SACA,UACA,UACA,aACA,WACA,MACA,WACA,MACA,WACA,OACA,OACA,UACA,aACA,QACA,WACA,QACA,OACA,QACA,OACA,UACA,QACA,MACA,SACA,OACA,QACA,UACA,WACA,QACA,YACA,OACA,SACA,SACA,QACA,QACA,QACA,SAGWkzJ,EAAMlzJ,EAAO,CACxB,gBACA,aACA,WACA,qBACA,SACA,gBACA,gBACA,UACA,gBACA,iBACA,QACA,OACA,KACA,QACA,OACA,gBACA,YACA,YACA,QACA,sBACA,8BACA,gBACA,kBACA,KACA,KACA,IACA,KACA,KACA,kBACA,YACA,UACA,UACA,MACA,WACA,YACA,MACA,OACA,eACA,YACA,SACA,cACA,cACA,gBACA,cACA,YACA,mBACA,eACA,aACA,eACA,cACA,KACA,KACA,KACA,KACA,aACA,WACA,gBACA,oBACA,SACA,OACA,KACA,kBACA,KACA,MACA,IACA,KACA,KACA,KACA,KACA,UACA,YACA,aACA,WACA,OACA,eACA,iBACA,eACA,mBACA,iBACA,QACA,aACA,aACA,eACA,eACA,cACA,cACA,mBACA,YACA,MACA,OACA,QACA,SACA,OACA,MACA,OACA,aACA,SACA,WACA,UACA,QACA,SACA,cACA,SACA,WACA,cACA,OACA,aACA,sBACA,mBACA,eACA,SACA,gBACA,sBACA,iBACA,IACA,KACA,KACA,SACA,OACA,OACA,cACA,YACA,UACA,SACA,SACA,QACA,OACA,kBACA,mBACA,mBACA,eACA,cACA,eACA,cACA,aACA,eACA,mBACA,oBACA,iBACA,kBACA,oBACA,iBACA,SACA,eACA,QACA,eACA,iBACA,WACA,UACA,UACA,YACA,mBACA,cACA,kBACA,iBACA,aACA,OACA,KACA,KACA,UACA,SACA,UACA,aACA,UACA,aACA,gBACA,gBACA,QACA,eACA,OACA,eACA,mBACA,mBACA,IACA,KACA,KACA,QACA,IACA,KACA,KACA,IACA,eAGWqzJ,EAASrzJ,EAAO,CAC3B,SACA,cACA,QACA,WACA,QACA,eACA,cACA,aACA,aACA,QACA,MACA,UACA,eACA,WACA,QACA,QACA,SACA,OACA,KACA,UACA,SACA,gBACA,SACA,SACA,iBACA,YACA,WACA,cACA,UACA,UACA,gBACA,WACA,WACA,OACA,WACA,WACA,aACA,UACA,SACA,SACA,cACA,gBACA,uBACA,YACA,YACA,aACA,WACA,iBACA,iBACA,YACA,UACA,QACA,UAGWuzJ,EAAMvzJ,EAAO,CACxB,aACA,SACA,cACA,YACA,gBCrWWwzJ,EAAgB7B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","file":"chunk.145.ce33001a4cedaf9747bd.js","sourcesContent":["function _asyncIterator(t){var e,r,i,a=2;for(\"undefined\"!=typeof Symbol&&(r=Symbol.asyncIterator,i=Symbol.iterator);a--;){if(r&&null!=(e=t[r]))return e.call(t);if(i&&null!=(e=t[i]))return new AsyncFromSyncIterator(e.call(t));r=\"@@asyncIterator\",i=\"@@iterator\"}throw new TypeError(\"Object is not async iterable\")}function AsyncFromSyncIterator(t){function e(t){if(Object(t)!==t)return Promise.reject(new TypeError(t+\" is not an object.\"));var e=t.done;return Promise.resolve(t.value).then((function(t){return{value:t,done:e}}))}return AsyncFromSyncIterator=function(t){this.s=t,this.n=t.next},AsyncFromSyncIterator.prototype={s:null,n:null,next:function(){return e(this.n.apply(this.s,arguments))},return:function(t){var r=this.s.return;return void 0===r?Promise.resolve({value:t,done:!0}):e(r.apply(this.s,arguments))},throw:function(t){var r=this.s.return;return void 0===r?Promise.reject(t):e(r.apply(this.s,arguments))}},new AsyncFromSyncIterator(t)}var REACT_ELEMENT_TYPE;function _jsx(t,e,r,i){REACT_ELEMENT_TYPE||(REACT_ELEMENT_TYPE=\"function\"==typeof Symbol&&Symbol.for&&Symbol.for(\"react.element\")||60103);var a=t&&t.defaultProps,s=arguments.length-3;if(e||0===s||(e={children:void 0}),1===s)e.children=i;else if(s>1){for(var n=new Array(s),o=0;o<s;o++)n[o]=arguments[o+3];e.children=n}if(e&&a)for(var h in a)void 0===e[h]&&(e[h]=a[h]);else e||(e=a||{});return{$$typeof:REACT_ELEMENT_TYPE,type:t,key:void 0===r?null:\"\"+r,ref:null,props:e,_owner:null}}function ownKeys(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);e&&(i=i.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,i)}return r}function _objectSpread2(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?ownKeys(Object(r),!0).forEach((function(e){_defineProperty(t,e,r[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):ownKeys(Object(r)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}))}return t}function _typeof(t){return _typeof=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t},_typeof(t)}function _wrapRegExp(){_wrapRegExp=function(t,e){return new r(t,void 0,e)};var t=RegExp.prototype,e=new WeakMap;function r(t,i,a){var s=new RegExp(t,i);return e.set(s,a||e.get(t)),_setPrototypeOf(s,r.prototype)}function i(t,r){var i=e.get(r);return Object.keys(i).reduce((function(e,r){return e[r]=t[i[r]],e}),Object.create(null))}return _inherits(r,RegExp),r.prototype.exec=function(e){var r=t.exec.call(this,e);return r&&(r.groups=i(r,this)),r},r.prototype[Symbol.replace]=function(r,a){if(\"string\"==typeof a){var s=e.get(this);return t[Symbol.replace].call(this,r,a.replace(/\\$<([^>]+)>/g,(function(t,e){return\"$\"+s[e]})))}if(\"function\"==typeof a){var n=this;return t[Symbol.replace].call(this,r,(function(){var t=arguments;return\"object\"!=typeof t[t.length-1]&&(t=[].slice.call(t)).push(i(t,n)),a.apply(this,t)}))}return t[Symbol.replace].call(this,r,a)},_wrapRegExp.apply(this,arguments)}function _AwaitValue(t){this.wrapped=t}function _AsyncGenerator(t){var e,r;function i(e,r){try{var s=t[e](r),n=s.value,o=n instanceof _AwaitValue;Promise.resolve(o?n.wrapped:n).then((function(t){o?i(\"return\"===e?\"return\":\"next\",t):a(s.done?\"return\":\"normal\",t)}),(function(t){i(\"throw\",t)}))}catch(t){a(\"throw\",t)}}function a(t,a){switch(t){case\"return\":e.resolve({value:a,done:!0});break;case\"throw\":e.reject(a);break;default:e.resolve({value:a,done:!1})}(e=e.next)?i(e.key,e.arg):r=null}this._invoke=function(t,a){return new Promise((function(s,n){var o={key:t,arg:a,resolve:s,reject:n,next:null};r?r=r.next=o:(e=r=o,i(t,a))}))},\"function\"!=typeof t.return&&(this.return=void 0)}function _wrapAsyncGenerator(t){return function(){return new _AsyncGenerator(t.apply(this,arguments))}}function _awaitAsyncGenerator(t){return new _AwaitValue(t)}function _asyncGeneratorDelegate(t,e){var r={},i=!1;function a(r,a){return i=!0,a=new Promise((function(e){e(t[r](a))})),{done:!1,value:e(a)}}return r[\"undefined\"!=typeof Symbol&&Symbol.iterator||\"@@iterator\"]=function(){return this},r.next=function(t){return i?(i=!1,t):a(\"next\",t)},\"function\"==typeof t.throw&&(r.throw=function(t){if(i)throw i=!1,t;return a(\"throw\",t)}),\"function\"==typeof t.return&&(r.return=function(t){return i?(i=!1,t):a(\"return\",t)}),r}function asyncGeneratorStep(t,e,r,i,a,s,n){try{var o=t[s](n),h=o.value}catch(t){return void r(t)}o.done?e(h):Promise.resolve(h).then(i,a)}function _asyncToGenerator(t){return function(){var e=this,r=arguments;return new Promise((function(i,a){var s=t.apply(e,r);function n(t){asyncGeneratorStep(s,i,a,n,o,\"next\",t)}function o(t){asyncGeneratorStep(s,i,a,n,o,\"throw\",t)}n(void 0)}))}}function _classCallCheck(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function _defineProperties(t,e){for(var r=0;r<e.length;r++){var i=e[r];i.enumerable=i.enumerable||!1,i.configurable=!0,\"value\"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function _createClass(t,e,r){return e&&_defineProperties(t.prototype,e),r&&_defineProperties(t,r),Object.defineProperty(t,\"prototype\",{writable:!1}),t}function _defineEnumerableProperties(t,e){for(var r in e){(s=e[r]).configurable=s.enumerable=!0,\"value\"in s&&(s.writable=!0),Object.defineProperty(t,r,s)}if(Object.getOwnPropertySymbols)for(var i=Object.getOwnPropertySymbols(e),a=0;a<i.length;a++){var s,n=i[a];(s=e[n]).configurable=s.enumerable=!0,\"value\"in s&&(s.writable=!0),Object.defineProperty(t,n,s)}return t}function _defaults(t,e){for(var r=Object.getOwnPropertyNames(e),i=0;i<r.length;i++){var a=r[i],s=Object.getOwnPropertyDescriptor(e,a);s&&s.configurable&&void 0===t[a]&&Object.defineProperty(t,a,s)}return t}function _defineProperty(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function _extends(){return _extends=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var r=arguments[e];for(var i in r)Object.prototype.hasOwnProperty.call(r,i)&&(t[i]=r[i])}return t},_extends.apply(this,arguments)}function _objectSpread(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?Object(arguments[e]):{},i=Object.keys(r);\"function\"==typeof Object.getOwnPropertySymbols&&i.push.apply(i,Object.getOwnPropertySymbols(r).filter((function(t){return Object.getOwnPropertyDescriptor(r,t).enumerable}))),i.forEach((function(e){_defineProperty(t,e,r[e])}))}return t}function _inherits(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function\");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,\"prototype\",{writable:!1}),e&&_setPrototypeOf(t,e)}function _inheritsLoose(t,e){t.prototype=Object.create(e.prototype),t.prototype.constructor=t,_setPrototypeOf(t,e)}function _getPrototypeOf(t){return _getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},_getPrototypeOf(t)}function _setPrototypeOf(t,e){return _setPrototypeOf=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t},_setPrototypeOf(t,e)}function _isNativeReflectConstruct(){if(\"undefined\"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if(\"function\"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}function _construct(t,e,r){return _construct=_isNativeReflectConstruct()?Reflect.construct:function(t,e,r){var i=[null];i.push.apply(i,e);var a=new(Function.bind.apply(t,i));return r&&_setPrototypeOf(a,r.prototype),a},_construct.apply(null,arguments)}function _isNativeFunction(t){return-1!==Function.toString.call(t).indexOf(\"[native code]\")}function _wrapNativeSuper(t){var e=\"function\"==typeof Map?new Map:void 0;return _wrapNativeSuper=function(t){if(null===t||!_isNativeFunction(t))return t;if(\"function\"!=typeof t)throw new TypeError(\"Super expression must either be null or a function\");if(void 0!==e){if(e.has(t))return e.get(t);e.set(t,r)}function r(){return _construct(t,arguments,_getPrototypeOf(this).constructor)}return r.prototype=Object.create(t.prototype,{constructor:{value:r,enumerable:!1,writable:!0,configurable:!0}}),_setPrototypeOf(r,t)},_wrapNativeSuper(t)}function _instanceof(t,e){return null!=e&&\"undefined\"!=typeof Symbol&&e[Symbol.hasInstance]?!!e[Symbol.hasInstance](t):t instanceof e}function _interopRequireDefault(t){return t&&t.__esModule?t:{default:t}}function _getRequireWildcardCache(t){if(\"function\"!=typeof WeakMap)return null;var e=new WeakMap,r=new WeakMap;return(_getRequireWildcardCache=function(t){return t?r:e})(t)}function _interopRequireWildcard(t,e){if(!e&&t&&t.__esModule)return t;if(null===t||\"object\"!=typeof t&&\"function\"!=typeof t)return{default:t};var r=_getRequireWildcardCache(e);if(r&&r.has(t))return r.get(t);var i={},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var s in t)if(\"default\"!==s&&Object.prototype.hasOwnProperty.call(t,s)){var n=a?Object.getOwnPropertyDescriptor(t,s):null;n&&(n.get||n.set)?Object.defineProperty(i,s,n):i[s]=t[s]}return i.default=t,r&&r.set(t,i),i}function _newArrowCheck(t,e){if(t!==e)throw new TypeError(\"Cannot instantiate an arrow function\")}function _objectDestructuringEmpty(t){if(null==t)throw new TypeError(\"Cannot destructure undefined\")}function _objectWithoutPropertiesLoose(t,e){if(null==t)return{};var r,i,a={},s=Object.keys(t);for(i=0;i<s.length;i++)r=s[i],e.indexOf(r)>=0||(a[r]=t[r]);return a}function _objectWithoutProperties(t,e){if(null==t)return{};var r,i,a=_objectWithoutPropertiesLoose(t,e);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(t);for(i=0;i<s.length;i++)r=s[i],e.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(t,r)&&(a[r]=t[r])}return a}function _assertThisInitialized(t){if(void 0===t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return t}function _possibleConstructorReturn(t,e){if(e&&(\"object\"==typeof e||\"function\"==typeof e))return e;if(void 0!==e)throw new TypeError(\"Derived constructors may only return object or undefined\");return _assertThisInitialized(t)}function _createSuper(t){var e=_isNativeReflectConstruct();return function(){var r,i=_getPrototypeOf(t);if(e){var a=_getPrototypeOf(this).constructor;r=Reflect.construct(i,arguments,a)}else r=i.apply(this,arguments);return _possibleConstructorReturn(this,r)}}function _superPropBase(t,e){for(;!Object.prototype.hasOwnProperty.call(t,e)&&null!==(t=_getPrototypeOf(t)););return t}function _get(){return _get=\"undefined\"!=typeof Reflect&&Reflect.get?Reflect.get:function(t,e,r){var i=_superPropBase(t,e);if(i){var a=Object.getOwnPropertyDescriptor(i,e);return a.get?a.get.call(arguments.length<3?t:r):a.value}},_get.apply(this,arguments)}function set(t,e,r,i){return set=\"undefined\"!=typeof Reflect&&Reflect.set?Reflect.set:function(t,e,r,i){var a,s=_superPropBase(t,e);if(s){if((a=Object.getOwnPropertyDescriptor(s,e)).set)return a.set.call(i,r),!0;if(!a.writable)return!1}if(a=Object.getOwnPropertyDescriptor(i,e)){if(!a.writable)return!1;a.value=r,Object.defineProperty(i,e,a)}else _defineProperty(i,e,r);return!0},set(t,e,r,i)}function _set(t,e,r,i,a){if(!set(t,e,r,i||t)&&a)throw new Error(\"failed to set property\");return r}function _taggedTemplateLiteral(t,e){return e||(e=t.slice(0)),Object.freeze(Object.defineProperties(t,{raw:{value:Object.freeze(e)}}))}function _taggedTemplateLiteralLoose(t,e){return e||(e=t.slice(0)),t.raw=e,t}function _readOnlyError(t){throw new TypeError('\"'+t+'\" is read-only')}function _writeOnlyError(t){throw new TypeError('\"'+t+'\" is write-only')}function _classNameTDZError(t){throw new Error('Class \"'+t+'\" cannot be referenced in computed property keys.')}function _temporalUndefined(){}function _tdz(t){throw new ReferenceError(t+\" is not defined - temporal dead zone\")}function _temporalRef(t,e){return t===_temporalUndefined?_tdz(e):t}function _slicedToArray(t,e){return _arrayWithHoles(t)||_iterableToArrayLimit(t,e)||_unsupportedIterableToArray(t,e)||_nonIterableRest()}function _slicedToArrayLoose(t,e){return _arrayWithHoles(t)||_iterableToArrayLimitLoose(t,e)||_unsupportedIterableToArray(t,e)||_nonIterableRest()}function _toArray(t){return _arrayWithHoles(t)||_iterableToArray(t)||_unsupportedIterableToArray(t)||_nonIterableRest()}function _toConsumableArray(t){return _arrayWithoutHoles(t)||_iterableToArray(t)||_unsupportedIterableToArray(t)||_nonIterableSpread()}function _arrayWithoutHoles(t){if(Array.isArray(t))return _arrayLikeToArray(t)}function _arrayWithHoles(t){if(Array.isArray(t))return t}function _maybeArrayLike(t,e,r){if(e&&!Array.isArray(e)&&\"number\"==typeof e.length){var i=e.length;return _arrayLikeToArray(e,void 0!==r&&r<i?r:i)}return t(e,r)}function _iterableToArray(t){if(\"undefined\"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t[\"@@iterator\"])return Array.from(t)}function _iterableToArrayLimit(t,e){var r=null==t?null:\"undefined\"!=typeof Symbol&&t[Symbol.iterator]||t[\"@@iterator\"];if(null!=r){var i,a,s=[],n=!0,o=!1;try{for(r=r.call(t);!(n=(i=r.next()).done)&&(s.push(i.value),!e||s.length!==e);n=!0);}catch(t){o=!0,a=t}finally{try{n||null==r.return||r.return()}finally{if(o)throw a}}return s}}function _iterableToArrayLimitLoose(t,e){var r=t&&(\"undefined\"!=typeof Symbol&&t[Symbol.iterator]||t[\"@@iterator\"]);if(null!=r){var i=[];for(r=r.call(t),_step;!(_step=r.next()).done&&(i.push(_step.value),!e||i.length!==e););return i}}function _unsupportedIterableToArray(t,e){if(t){if(\"string\"==typeof t)return _arrayLikeToArray(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);return\"Object\"===r&&t.constructor&&(r=t.constructor.name),\"Map\"===r||\"Set\"===r?Array.from(t):\"Arguments\"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?_arrayLikeToArray(t,e):void 0}}function _arrayLikeToArray(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,i=new Array(e);r<e;r++)i[r]=t[r];return i}function _nonIterableSpread(){throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}function _nonIterableRest(){throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}function _createForOfIteratorHelper(t,e){var r=\"undefined\"!=typeof Symbol&&t[Symbol.iterator]||t[\"@@iterator\"];if(!r){if(Array.isArray(t)||(r=_unsupportedIterableToArray(t))||e&&t&&\"number\"==typeof t.length){r&&(t=r);var i=0,a=function(){};return{s:a,n:function(){return i>=t.length?{done:!0}:{done:!1,value:t[i++]}},e:function(t){throw t},f:a}}throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}var s,n=!0,o=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return n=t.done,t},e:function(t){o=!0,s=t},f:function(){try{n||null==r.return||r.return()}finally{if(o)throw s}}}}function _createForOfIteratorHelperLoose(t,e){var r=\"undefined\"!=typeof Symbol&&t[Symbol.iterator]||t[\"@@iterator\"];if(r)return(r=r.call(t)).next.bind(r);if(Array.isArray(t)||(r=_unsupportedIterableToArray(t))||e&&t&&\"number\"==typeof t.length){r&&(t=r);var i=0;return function(){return i>=t.length?{done:!0}:{done:!1,value:t[i++]}}}throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}function _skipFirstGeneratorNext(t){return function(){var e=t.apply(this,arguments);return e.next(),e}}function _toPrimitive(t,e){if(\"object\"!=typeof t||null===t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var i=r.call(t,e||\"default\");if(\"object\"!=typeof i)return i;throw new TypeError(\"@@toPrimitive must return a primitive value.\")}return(\"string\"===e?String:Number)(t)}function _toPropertyKey(t){var e=_toPrimitive(t,\"string\");return\"symbol\"==typeof e?e:String(e)}function _initializerWarningHelper(t,e){throw new Error(\"Decorating class property failed. Please ensure that proposal-class-properties is enabled and runs after the decorators transform.\")}function _initializerDefineProperty(t,e,r,i){r&&Object.defineProperty(t,e,{enumerable:r.enumerable,configurable:r.configurable,writable:r.writable,value:r.initializer?r.initializer.call(i):void 0})}function _applyDecoratedDescriptor(t,e,r,i,a){var s={};return Object.keys(i).forEach((function(t){s[t]=i[t]})),s.enumerable=!!s.enumerable,s.configurable=!!s.configurable,(\"value\"in s||s.initializer)&&(s.writable=!0),s=r.slice().reverse().reduce((function(r,i){return i(t,e,r)||r}),s),a&&void 0!==s.initializer&&(s.value=s.initializer?s.initializer.call(a):void 0,s.initializer=void 0),void 0===s.initializer&&(Object.defineProperty(t,e,s),s=null),s}_AsyncGenerator.prototype[\"function\"==typeof Symbol&&Symbol.asyncIterator||\"@@asyncIterator\"]=function(){return this},_AsyncGenerator.prototype.next=function(t){return this._invoke(\"next\",t)},_AsyncGenerator.prototype.throw=function(t){return this._invoke(\"throw\",t)},_AsyncGenerator.prototype.return=function(t){return this._invoke(\"return\",t)};var id=0;function _classPrivateFieldLooseKey(t){return\"__private_\"+id+++\"_\"+t}function _classPrivateFieldLooseBase(t,e){if(!Object.prototype.hasOwnProperty.call(t,e))throw new TypeError(\"attempted to use private field on non-instance\");return t}function _classPrivateFieldGet(t,e){return _classApplyDescriptorGet(t,_classExtractFieldDescriptor(t,e,\"get\"))}function _classPrivateFieldSet(t,e,r){return _classApplyDescriptorSet(t,_classExtractFieldDescriptor(t,e,\"set\"),r),r}function _classPrivateFieldDestructureSet(t,e){return _classApplyDescriptorDestructureSet(t,_classExtractFieldDescriptor(t,e,\"set\"))}function _classExtractFieldDescriptor(t,e,r){if(!e.has(t))throw new TypeError(\"attempted to \"+r+\" private field on non-instance\");return e.get(t)}function _classStaticPrivateFieldSpecGet(t,e,r){return _classCheckPrivateStaticAccess(t,e),_classCheckPrivateStaticFieldDescriptor(r,\"get\"),_classApplyDescriptorGet(t,r)}function _classStaticPrivateFieldSpecSet(t,e,r,i){return _classCheckPrivateStaticAccess(t,e),_classCheckPrivateStaticFieldDescriptor(r,\"set\"),_classApplyDescriptorSet(t,r,i),i}function _classStaticPrivateMethodGet(t,e,r){return _classCheckPrivateStaticAccess(t,e),r}function _classStaticPrivateMethodSet(){throw new TypeError(\"attempted to set read only static private field\")}function _classApplyDescriptorGet(t,e){return e.get?e.get.call(t):e.value}function _classApplyDescriptorSet(t,e,r){if(e.set)e.set.call(t,r);else{if(!e.writable)throw new TypeError(\"attempted to set read only private field\");e.value=r}}function _classApplyDescriptorDestructureSet(t,e){if(e.set)return\"__destrObj\"in e||(e.__destrObj={set value(r){e.set.call(t,r)}}),e.__destrObj;if(!e.writable)throw new TypeError(\"attempted to set read only private field\");return e}function _classStaticPrivateFieldDestructureSet(t,e,r){return _classCheckPrivateStaticAccess(t,e),_classCheckPrivateStaticFieldDescriptor(r,\"set\"),_classApplyDescriptorDestructureSet(t,r)}function _classCheckPrivateStaticAccess(t,e){if(t!==e)throw new TypeError(\"Private static access of wrong provenance\")}function _classCheckPrivateStaticFieldDescriptor(t,e){if(void 0===t)throw new TypeError(\"attempted to \"+e+\" private static field before its declaration\")}function _decorate(t,e,r,i){var a=_getDecoratorsApi();if(i)for(var s=0;s<i.length;s++)a=i[s](a);var n=e((function(t){a.initializeInstanceElements(t,o.elements)}),r),o=a.decorateClass(_coalesceClassElements(n.d.map(_createElementDescriptor)),t);return a.initializeClassElements(n.F,o.elements),a.runClassFinishers(n.F,o.finishers)}function _getDecoratorsApi(){_getDecoratorsApi=function(){return t};var t={elementsDefinitionOrder:[[\"method\"],[\"field\"]],initializeInstanceElements:function(t,e){[\"method\",\"field\"].forEach((function(r){e.forEach((function(e){e.kind===r&&\"own\"===e.placement&&this.defineClassElement(t,e)}),this)}),this)},initializeClassElements:function(t,e){var r=t.prototype;[\"method\",\"field\"].forEach((function(i){e.forEach((function(e){var a=e.placement;if(e.kind===i&&(\"static\"===a||\"prototype\"===a)){var s=\"static\"===a?t:r;this.defineClassElement(s,e)}}),this)}),this)},defineClassElement:function(t,e){var r=e.descriptor;if(\"field\"===e.kind){var i=e.initializer;r={enumerable:r.enumerable,writable:r.writable,configurable:r.configurable,value:void 0===i?void 0:i.call(t)}}Object.defineProperty(t,e.key,r)},decorateClass:function(t,e){var r=[],i=[],a={static:[],prototype:[],own:[]};if(t.forEach((function(t){this.addElementPlacement(t,a)}),this),t.forEach((function(t){if(!_hasDecorators(t))return r.push(t);var e=this.decorateElement(t,a);r.push(e.element),r.push.apply(r,e.extras),i.push.apply(i,e.finishers)}),this),!e)return{elements:r,finishers:i};var s=this.decorateConstructor(r,e);return i.push.apply(i,s.finishers),s.finishers=i,s},addElementPlacement:function(t,e,r){var i=e[t.placement];if(!r&&-1!==i.indexOf(t.key))throw new TypeError(\"Duplicated element (\"+t.key+\")\");i.push(t.key)},decorateElement:function(t,e){for(var r=[],i=[],a=t.decorators,s=a.length-1;s>=0;s--){var n=e[t.placement];n.splice(n.indexOf(t.key),1);var o=this.fromElementDescriptor(t),h=this.toElementFinisherExtras((0,a[s])(o)||o);t=h.element,this.addElementPlacement(t,e),h.finisher&&i.push(h.finisher);var l=h.extras;if(l){for(var p=0;p<l.length;p++)this.addElementPlacement(l[p],e);r.push.apply(r,l)}}return{element:t,finishers:i,extras:r}},decorateConstructor:function(t,e){for(var r=[],i=e.length-1;i>=0;i--){var a=this.fromClassDescriptor(t),s=this.toClassDescriptor((0,e[i])(a)||a);if(void 0!==s.finisher&&r.push(s.finisher),void 0!==s.elements){t=s.elements;for(var n=0;n<t.length-1;n++)for(var o=n+1;o<t.length;o++)if(t[n].key===t[o].key&&t[n].placement===t[o].placement)throw new TypeError(\"Duplicated element (\"+t[n].key+\")\")}}return{elements:t,finishers:r}},fromElementDescriptor:function(t){var e={kind:t.kind,key:t.key,placement:t.placement,descriptor:t.descriptor};return Object.defineProperty(e,Symbol.toStringTag,{value:\"Descriptor\",configurable:!0}),\"field\"===t.kind&&(e.initializer=t.initializer),e},toElementDescriptors:function(t){if(void 0!==t)return _toArray(t).map((function(t){var e=this.toElementDescriptor(t);return this.disallowProperty(t,\"finisher\",\"An element descriptor\"),this.disallowProperty(t,\"extras\",\"An element descriptor\"),e}),this)},toElementDescriptor:function(t){var e=String(t.kind);if(\"method\"!==e&&\"field\"!==e)throw new TypeError('An element descriptor\\'s .kind property must be either \"method\" or \"field\", but a decorator created an element descriptor with .kind \"'+e+'\"');var r=_toPropertyKey(t.key),i=String(t.placement);if(\"static\"!==i&&\"prototype\"!==i&&\"own\"!==i)throw new TypeError('An element descriptor\\'s .placement property must be one of \"static\", \"prototype\" or \"own\", but a decorator created an element descriptor with .placement \"'+i+'\"');var a=t.descriptor;this.disallowProperty(t,\"elements\",\"An element descriptor\");var s={kind:e,key:r,placement:i,descriptor:Object.assign({},a)};return\"field\"!==e?this.disallowProperty(t,\"initializer\",\"A method descriptor\"):(this.disallowProperty(a,\"get\",\"The property descriptor of a field descriptor\"),this.disallowProperty(a,\"set\",\"The property descriptor of a field descriptor\"),this.disallowProperty(a,\"value\",\"The property descriptor of a field descriptor\"),s.initializer=t.initializer),s},toElementFinisherExtras:function(t){return{element:this.toElementDescriptor(t),finisher:_optionalCallableProperty(t,\"finisher\"),extras:this.toElementDescriptors(t.extras)}},fromClassDescriptor:function(t){var e={kind:\"class\",elements:t.map(this.fromElementDescriptor,this)};return Object.defineProperty(e,Symbol.toStringTag,{value:\"Descriptor\",configurable:!0}),e},toClassDescriptor:function(t){var e=String(t.kind);if(\"class\"!==e)throw new TypeError('A class descriptor\\'s .kind property must be \"class\", but a decorator created a class descriptor with .kind \"'+e+'\"');this.disallowProperty(t,\"key\",\"A class descriptor\"),this.disallowProperty(t,\"placement\",\"A class descriptor\"),this.disallowProperty(t,\"descriptor\",\"A class descriptor\"),this.disallowProperty(t,\"initializer\",\"A class descriptor\"),this.disallowProperty(t,\"extras\",\"A class descriptor\");var r=_optionalCallableProperty(t,\"finisher\");return{elements:this.toElementDescriptors(t.elements),finisher:r}},runClassFinishers:function(t,e){for(var r=0;r<e.length;r++){var i=(0,e[r])(t);if(void 0!==i){if(\"function\"!=typeof i)throw new TypeError(\"Finishers must return a constructor.\");t=i}}return t},disallowProperty:function(t,e,r){if(void 0!==t[e])throw new TypeError(r+\" can't have a .\"+e+\" property.\")}};return t}function _createElementDescriptor(t){var e,r=_toPropertyKey(t.key);\"method\"===t.kind?e={value:t.value,writable:!0,configurable:!0,enumerable:!1}:\"get\"===t.kind?e={get:t.value,configurable:!0,enumerable:!1}:\"set\"===t.kind?e={set:t.value,configurable:!0,enumerable:!1}:\"field\"===t.kind&&(e={configurable:!0,writable:!0,enumerable:!0});var i={kind:\"field\"===t.kind?\"field\":\"method\",key:r,placement:t.static?\"static\":\"field\"===t.kind?\"own\":\"prototype\",descriptor:e};return t.decorators&&(i.decorators=t.decorators),\"field\"===t.kind&&(i.initializer=t.value),i}function _coalesceGetterSetter(t,e){void 0!==t.descriptor.get?e.descriptor.get=t.descriptor.get:e.descriptor.set=t.descriptor.set}function _coalesceClassElements(t){for(var e=[],r=function(t){return\"method\"===t.kind&&t.key===s.key&&t.placement===s.placement},i=0;i<t.length;i++){var a,s=t[i];if(\"method\"===s.kind&&(a=e.find(r)))if(_isDataDescriptor(s.descriptor)||_isDataDescriptor(a.descriptor)){if(_hasDecorators(s)||_hasDecorators(a))throw new ReferenceError(\"Duplicated methods (\"+s.key+\") can't be decorated.\");a.descriptor=s.descriptor}else{if(_hasDecorators(s)){if(_hasDecorators(a))throw new ReferenceError(\"Decorators can't be placed on different accessors with for the same property (\"+s.key+\").\");a.decorators=s.decorators}_coalesceGetterSetter(s,a)}else e.push(s)}return e}function _hasDecorators(t){return t.decorators&&t.decorators.length}function _isDataDescriptor(t){return void 0!==t&&!(void 0===t.value&&void 0===t.writable)}function _optionalCallableProperty(t,e){var r=t[e];if(void 0!==r&&\"function\"!=typeof r)throw new TypeError(\"Expected '\"+e+\"' to be a function\");return r}function _classPrivateMethodGet(t,e,r){if(!e.has(t))throw new TypeError(\"attempted to get private field on non-instance\");return r}function _checkPrivateRedeclaration(t,e){if(e.has(t))throw new TypeError(\"Cannot initialize the same private elements twice on an object\")}function _classPrivateFieldInitSpec(t,e,r){_checkPrivateRedeclaration(t,e),e.set(t,r)}function _classPrivateMethodInitSpec(t,e){_checkPrivateRedeclaration(t,e),e.add(t)}function _classPrivateMethodSet(){throw new TypeError(\"attempted to reassign private method\")}\n/*! *****************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */var _extendStatics=function(t,e){return _extendStatics=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])},_extendStatics(t,e)};function __extends(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Class extends value \"+String(e)+\" is not a constructor or null\");function r(){this.constructor=t}_extendStatics(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)}var _assign=function(){return _assign=Object.assign||function(t){for(var e,r=1,i=arguments.length;r<i;r++)for(var a in e=arguments[r])Object.prototype.hasOwnProperty.call(e,a)&&(t[a]=e[a]);return t},_assign.apply(this,arguments)};function __rest(t,e){var r={};for(var i in t)Object.prototype.hasOwnProperty.call(t,i)&&e.indexOf(i)<0&&(r[i]=t[i]);if(null!=t&&\"function\"==typeof Object.getOwnPropertySymbols){var a=0;for(i=Object.getOwnPropertySymbols(t);a<i.length;a++)e.indexOf(i[a])<0&&Object.prototype.propertyIsEnumerable.call(t,i[a])&&(r[i[a]]=t[i[a]])}return r}function __decorate(t,e,r,i){var a,s=arguments.length,n=s<3?e:null===i?i=Object.getOwnPropertyDescriptor(e,r):i;if(\"object\"==typeof Reflect&&\"function\"==typeof Reflect.decorate)n=Reflect.decorate(t,e,r,i);else for(var o=t.length-1;o>=0;o--)(a=t[o])&&(n=(s<3?a(n):s>3?a(e,r,n):a(e,r))||n);return s>3&&n&&Object.defineProperty(e,r,n),n}function __param(t,e){return function(r,i){e(r,i,t)}}function __metadata(t,e){if(\"object\"==typeof Reflect&&\"function\"==typeof Reflect.metadata)return Reflect.metadata(t,e)}function __awaiter(t,e,r,i){return new(r||(r=Promise))((function(a,s){function n(t){try{h(i.next(t))}catch(t){s(t)}}function o(t){try{h(i.throw(t))}catch(t){s(t)}}function h(t){var e;t.done?a(t.value):(e=t.value,e instanceof r?e:new r((function(t){t(e)}))).then(n,o)}h((i=i.apply(t,e||[])).next())}))}function __generator(t,e){var r,i,a,s,n={label:0,sent:function(){if(1&a[0])throw a[1];return a[1]},trys:[],ops:[]};return s={next:o(0),throw:o(1),return:o(2)},\"function\"==typeof Symbol&&(s[Symbol.iterator]=function(){return this}),s;function o(s){return function(o){return function(s){if(r)throw new TypeError(\"Generator is already executing.\");for(;n;)try{if(r=1,i&&(a=2&s[0]?i.return:s[0]?i.throw||((a=i.return)&&a.call(i),0):i.next)&&!(a=a.call(i,s[1])).done)return a;switch(i=0,a&&(s=[2&s[0],a.value]),s[0]){case 0:case 1:a=s;break;case 4:return n.label++,{value:s[1],done:!1};case 5:n.label++,i=s[1],s=[0];continue;case 7:s=n.ops.pop(),n.trys.pop();continue;default:if(!(a=n.trys,(a=a.length>0&&a[a.length-1])||6!==s[0]&&2!==s[0])){n=0;continue}if(3===s[0]&&(!a||s[1]>a[0]&&s[1]<a[3])){n.label=s[1];break}if(6===s[0]&&n.label<a[1]){n.label=a[1],a=s;break}if(a&&n.label<a[2]){n.label=a[2],n.ops.push(s);break}a[2]&&n.ops.pop(),n.trys.pop();continue}s=e.call(t,n)}catch(t){s=[6,t],i=0}finally{r=a=0}if(5&s[0])throw s[1];return{value:s[0]?s[1]:void 0,done:!0}}([s,o])}}}var __createBinding=Object.create?function(t,e,r,i){void 0===i&&(i=r),Object.defineProperty(t,i,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,i){void 0===i&&(i=r),t[i]=e[r]};function __exportStar(t,e){for(var r in t)\"default\"===r||Object.prototype.hasOwnProperty.call(e,r)||__createBinding(e,t,r)}function __values(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,r=e&&t[e],i=0;if(r)return r.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&i>=t.length&&(t=void 0),{value:t&&t[i++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")}function __read(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var i,a,s=r.call(t),n=[];try{for(;(void 0===e||e-- >0)&&!(i=s.next()).done;)n.push(i.value)}catch(t){a={error:t}}finally{try{i&&!i.done&&(r=s.return)&&r.call(s)}finally{if(a)throw a.error}}return n}function __spread(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(__read(arguments[e]));return t}function __spreadArrays(){for(var t=0,e=0,r=arguments.length;e<r;e++)t+=arguments[e].length;var i=Array(t),a=0;for(e=0;e<r;e++)for(var s=arguments[e],n=0,o=s.length;n<o;n++,a++)i[a]=s[n];return i}function __spreadArray(t,e,r){if(r||2===arguments.length)for(var i,a=0,s=e.length;a<s;a++)!i&&a in e||(i||(i=Array.prototype.slice.call(e,0,a)),i[a]=e[a]);return t.concat(i||Array.prototype.slice.call(e))}function __await(t){return this instanceof __await?(this.v=t,this):new __await(t)}function __asyncGenerator(t,e,r){if(!Symbol.asyncIterator)throw new TypeError(\"Symbol.asyncIterator is not defined.\");var i,a=r.apply(t,e||[]),s=[];return i={},n(\"next\"),n(\"throw\"),n(\"return\"),i[Symbol.asyncIterator]=function(){return this},i;function n(t){a[t]&&(i[t]=function(e){return new Promise((function(r,i){s.push([t,e,r,i])>1||o(t,e)}))})}function o(t,e){try{!function(t){t.value instanceof __await?Promise.resolve(t.value.v).then(h,l):p(s[0][2],t)}(a[t](e))}catch(t){p(s[0][3],t)}}function h(t){o(\"next\",t)}function l(t){o(\"throw\",t)}function p(t,e){t(e),s.shift(),s.length&&o(s[0][0],s[0][1])}}function __asyncDelegator(t){var e,r;return e={},i(\"next\"),i(\"throw\",(function(t){throw t})),i(\"return\"),e[Symbol.iterator]=function(){return this},e;function i(i,a){e[i]=t[i]?function(e){return(r=!r)?{value:__await(t[i](e)),done:\"return\"===i}:a?a(e):e}:a}}function __asyncValues(t){if(!Symbol.asyncIterator)throw new TypeError(\"Symbol.asyncIterator is not defined.\");var e,r=t[Symbol.asyncIterator];return r?r.call(t):(t=\"function\"==typeof __values?__values(t):t[Symbol.iterator](),e={},i(\"next\"),i(\"throw\"),i(\"return\"),e[Symbol.asyncIterator]=function(){return this},e);function i(r){e[r]=t[r]&&function(e){return new Promise((function(i,a){(function(t,e,r,i){Promise.resolve(i).then((function(e){t({value:e,done:r})}),e)})(i,a,(e=t[r](e)).done,e.value)}))}}}function __makeTemplateObject(t,e){return Object.defineProperty?Object.defineProperty(t,\"raw\",{value:e}):t.raw=e,t}var __setModuleDefault=Object.create?function(t,e){Object.defineProperty(t,\"default\",{enumerable:!0,value:e})}:function(t,e){t.default=e};function __importStar(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var r in t)\"default\"!==r&&Object.prototype.hasOwnProperty.call(t,r)&&__createBinding(e,t,r);return __setModuleDefault(e,t),e}function __importDefault(t){return t&&t.__esModule?t:{default:t}}function __classPrivateFieldGet(t,e,r,i){if(\"a\"===r&&!i)throw new TypeError(\"Private accessor was defined without a getter\");if(\"function\"==typeof e?t!==e||!i:!e.has(t))throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");return\"m\"===r?i:\"a\"===r?i.call(t):i?i.value:e.get(t)}function __classPrivateFieldSet(t,e,r,i,a){if(\"m\"===i)throw new TypeError(\"Private method is not writable\");if(\"a\"===i&&!a)throw new TypeError(\"Private accessor was defined without a setter\");if(\"function\"==typeof e?t!==e||!a:!e.has(t))throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");return\"a\"===i?a.call(t,r):a?a.value=r:e.set(t,r),r\n/**\n * @license\n * Copyright 2019 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */}var t$3=window.ShadowRoot&&(void 0===window.ShadyCSS||window.ShadyCSS.nativeShadow)&&\"adoptedStyleSheets\"in Document.prototype&&\"replace\"in CSSStyleSheet.prototype,e$8=Symbol(),n$5=new Map;class s$3{constructor(t,e){if(this._$cssResult$=!0,e!==e$8)throw Error(\"CSSResult is not constructable. Use `unsafeCSS` or `css` instead.\");this.cssText=t}get styleSheet(){var t=n$5.get(this.cssText);return t$3&&void 0===t&&(n$5.set(this.cssText,t=new CSSStyleSheet),t.replaceSync(this.cssText)),t}toString(){return this.cssText}}var o$5=t=>new s$3(\"string\"==typeof t?t:t+\"\",e$8),r$3=function(t){for(var e=arguments.length,r=new Array(e>1?e-1:0),i=1;i<e;i++)r[i-1]=arguments[i];var a=1===t.length?t[0]:r.reduce(((e,r,i)=>e+(t=>{if(!0===t._$cssResult$)return t.cssText;if(\"number\"==typeof t)return t;throw Error(\"Value passed to 'css' function must be a 'css' function result: \"+t+\". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.\")})(r)+t[i+1]),t[0]);return new s$3(a,e$8)},i$3=(t,e)=>{t$3?t.adoptedStyleSheets=e.map((t=>t instanceof CSSStyleSheet?t:t.styleSheet)):e.forEach((e=>{var r=document.createElement(\"style\"),i=window.litNonce;void 0!==i&&r.setAttribute(\"nonce\",i),r.textContent=e.cssText,t.appendChild(r)}))},S$1=t$3?t=>t:t=>t instanceof CSSStyleSheet?(t=>{var e=\"\";for(var r of t.cssRules)e+=r.cssText;return o$5(e)})(t):t\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */,s$2,e$7=window.trustedTypes,r$2=e$7?e$7.emptyScript:\"\",h$2=window.reactiveElementPolyfillSupport,o$4={toAttribute(t,e){switch(e){case Boolean:t=t?r$2:null;break;case Object:case Array:t=null==t?t:JSON.stringify(t)}return t},fromAttribute(t,e){var r=t;switch(e){case Boolean:r=null!==t;break;case Number:r=null===t?null:Number(t);break;case Object:case Array:try{r=JSON.parse(t)}catch(t){r=null}}return r}},n$4=(t,e)=>e!==t&&(e==e||t==t),l$3={attribute:!0,type:String,converter:o$4,reflect:!1,hasChanged:n$4},t$2;class a$1 extends HTMLElement{constructor(){super(),this._$Et=new Map,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Ei=null,this.o()}static addInitializer(t){var e;null!==(e=this.l)&&void 0!==e||(this.l=[]),this.l.push(t)}static get observedAttributes(){this.finalize();var t=[];return this.elementProperties.forEach(((e,r)=>{var i=this._$Eh(r,e);void 0!==i&&(this._$Eu.set(i,r),t.push(i))})),t}static createProperty(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:l$3;if(e.state&&(e.attribute=!1),this.finalize(),this.elementProperties.set(t,e),!e.noAccessor&&!this.prototype.hasOwnProperty(t)){var r=\"symbol\"==typeof t?Symbol():\"__\"+t,i=this.getPropertyDescriptor(t,r,e);void 0!==i&&Object.defineProperty(this.prototype,t,i)}}static getPropertyDescriptor(t,e,r){return{get(){return this[e]},set(i){var a=this[t];this[e]=i,this.requestUpdate(t,a,r)},configurable:!0,enumerable:!0}}static getPropertyOptions(t){return this.elementProperties.get(t)||l$3}static finalize(){if(this.hasOwnProperty(\"finalized\"))return!1;this.finalized=!0;var t=Object.getPrototypeOf(this);if(t.finalize(),this.elementProperties=new Map(t.elementProperties),this._$Eu=new Map,this.hasOwnProperty(\"properties\")){var e=this.properties,r=[...Object.getOwnPropertyNames(e),...Object.getOwnPropertySymbols(e)];for(var i of r)this.createProperty(i,e[i])}return this.elementStyles=this.finalizeStyles(this.styles),!0}static finalizeStyles(t){var e=[];if(Array.isArray(t)){var r=new Set(t.flat(1/0).reverse());for(var i of r)e.unshift(S$1(i))}else void 0!==t&&e.push(S$1(t));return e}static _$Eh(t,e){var r=e.attribute;return!1===r?void 0:\"string\"==typeof r?r:\"string\"==typeof t?t.toLowerCase():void 0}o(){var t;this._$Ep=new Promise((t=>this.enableUpdating=t)),this._$AL=new Map,this._$Em(),this.requestUpdate(),null===(t=this.constructor.l)||void 0===t||t.forEach((t=>t(this)))}addController(t){var e,r;(null!==(e=this._$Eg)&&void 0!==e?e:this._$Eg=[]).push(t),void 0!==this.renderRoot&&this.isConnected&&(null===(r=t.hostConnected)||void 0===r||r.call(t))}removeController(t){var e;null===(e=this._$Eg)||void 0===e||e.splice(this._$Eg.indexOf(t)>>>0,1)}_$Em(){this.constructor.elementProperties.forEach(((t,e)=>{this.hasOwnProperty(e)&&(this._$Et.set(e,this[e]),delete this[e])}))}createRenderRoot(){var t,e=null!==(t=this.shadowRoot)&&void 0!==t?t:this.attachShadow(this.constructor.shadowRootOptions);return i$3(e,this.constructor.elementStyles),e}connectedCallback(){var t;void 0===this.renderRoot&&(this.renderRoot=this.createRenderRoot()),this.enableUpdating(!0),null===(t=this._$Eg)||void 0===t||t.forEach((t=>{var e;return null===(e=t.hostConnected)||void 0===e?void 0:e.call(t)}))}enableUpdating(t){}disconnectedCallback(){var t;null===(t=this._$Eg)||void 0===t||t.forEach((t=>{var e;return null===(e=t.hostDisconnected)||void 0===e?void 0:e.call(t)}))}attributeChangedCallback(t,e,r){this._$AK(t,r)}_$ES(t,e){var r,i,a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:l$3,s=this.constructor._$Eh(t,a);if(void 0!==s&&!0===a.reflect){var n=(null!==(i=null===(r=a.converter)||void 0===r?void 0:r.toAttribute)&&void 0!==i?i:o$4.toAttribute)(e,a.type);this._$Ei=t,null==n?this.removeAttribute(s):this.setAttribute(s,n),this._$Ei=null}}_$AK(t,e){var r,i,a,s=this.constructor,n=s._$Eu.get(t);if(void 0!==n&&this._$Ei!==n){var o=s.getPropertyOptions(n),h=o.converter,l=null!==(a=null!==(i=null===(r=h)||void 0===r?void 0:r.fromAttribute)&&void 0!==i?i:\"function\"==typeof h?h:null)&&void 0!==a?a:o$4.fromAttribute;this._$Ei=n,this[n]=l(e,o.type),this._$Ei=null}}requestUpdate(t,e,r){var i=!0;void 0!==t&&(((r=r||this.constructor.getPropertyOptions(t)).hasChanged||n$4)(this[t],e)?(this._$AL.has(t)||this._$AL.set(t,e),!0===r.reflect&&this._$Ei!==t&&(void 0===this._$E_&&(this._$E_=new Map),this._$E_.set(t,r))):i=!1),!this.isUpdatePending&&i&&(this._$Ep=this._$EC())}_$EC(){var t=this;return _asyncToGenerator((function*(){t.isUpdatePending=!0;try{yield t._$Ep}catch(e){Promise.reject(e)}var e=t.scheduleUpdate();return null!=e&&(yield e),!t.isUpdatePending}))()}scheduleUpdate(){return this.performUpdate()}performUpdate(){var t;if(this.isUpdatePending){this.hasUpdated,this._$Et&&(this._$Et.forEach(((t,e)=>this[e]=t)),this._$Et=void 0);var e=!1,r=this._$AL;try{(e=this.shouldUpdate(r))?(this.willUpdate(r),null===(t=this._$Eg)||void 0===t||t.forEach((t=>{var e;return null===(e=t.hostUpdate)||void 0===e?void 0:e.call(t)})),this.update(r)):this._$EU()}catch(t){throw e=!1,this._$EU(),t}e&&this._$AE(r)}}willUpdate(t){}_$AE(t){var e;null===(e=this._$Eg)||void 0===e||e.forEach((t=>{var e;return null===(e=t.hostUpdated)||void 0===e?void 0:e.call(t)})),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(t)),this.updated(t)}_$EU(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$Ep}shouldUpdate(t){return!0}update(t){void 0!==this._$E_&&(this._$E_.forEach(((t,e)=>this._$ES(e,this[e],t))),this._$E_=void 0),this._$EU()}updated(t){}firstUpdated(t){}}a$1.finalized=!0,a$1.elementProperties=new Map,a$1.elementStyles=[],a$1.shadowRootOptions={mode:\"open\"},null==h$2||h$2({ReactiveElement:a$1}),(null!==(s$2=globalThis.reactiveElementVersions)&&void 0!==s$2?s$2:globalThis.reactiveElementVersions=[]).push(\"1.2.1\");var i$2=globalThis.trustedTypes,s$1=i$2?i$2.createPolicy(\"lit-html\",{createHTML:t=>t}):void 0,e$6=\"lit$\".concat((Math.random()+\"\").slice(9),\"$\"),o$3=\"?\"+e$6,n$3=\"<\".concat(o$3,\">\"),l$2=document,h$1=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:\"\";return l$2.createComment(t)},r$1=t=>null===t||\"object\"!=typeof t&&\"function\"!=typeof t,d=Array.isArray,u=t=>{var e;return d(t)||\"function\"==typeof(null===(e=t)||void 0===e?void 0:e[Symbol.iterator])},c=/<(?:(!--|\\/[^a-zA-Z])|(\\/?[a-zA-Z][^>\\s]*)|(\\/?$))/g,v=/-->/g,a=/>/g,f=/>|[ \t\\n\f\\r](?:([^\\s\"'>=/]+)([ \t\\n\f\\r]*=[ \t\\n\f\\r]*(?:[^ \t\\n\f\\r\"'`<>=]|(\"|')|))|$)/g,_=/'/g,m=/\"/g,g=/^(?:script|style|textarea)$/i,p=t=>function(e){for(var r=arguments.length,i=new Array(r>1?r-1:0),a=1;a<r;a++)i[a-1]=arguments[a];return{_$litType$:t,strings:e,values:i}},$=p(1),y=p(2),b=Symbol.for(\"lit-noChange\"),w=Symbol.for(\"lit-nothing\"),T=new WeakMap,x=(t,e,r)=>{var i,a,s=null!==(i=null==r?void 0:r.renderBefore)&&void 0!==i?i:e,n=s._$litPart$;if(void 0===n){var o=null!==(a=null==r?void 0:r.renderBefore)&&void 0!==a?a:null;s._$litPart$=n=new N(e.insertBefore(h$1(),o),o,void 0,null!=r?r:{})}return n._$AI(t),n},A=l$2.createTreeWalker(l$2,129,null,!1),C=(t,e)=>{for(var r,i=t.length-1,s=[],n=2===e?\"<svg>\":\"\",o=c,h=0;h<i;h++){for(var l=t[h],p=void 0,d=void 0,u=-1,y=0;y<l.length&&(o.lastIndex=y,null!==(d=o.exec(l)));)y=o.lastIndex,o===c?\"!--\"===d[1]?o=v:void 0!==d[1]?o=a:void 0!==d[2]?(g.test(d[2])&&(r=RegExp(\"</\"+d[2],\"g\")),o=f):void 0!==d[3]&&(o=f):o===f?\">\"===d[0]?(o=null!=r?r:c,u=-1):void 0===d[1]?u=-2:(u=o.lastIndex-d[2].length,p=d[1],o=void 0===d[3]?f:'\"'===d[3]?m:_):o===m||o===_?o=f:o===v||o===a?o=c:(o=f,r=void 0);var b=o===f&&t[h+1].startsWith(\"/>\")?\" \":\"\";n+=o===c?l+n$3:u>=0?(s.push(p),l.slice(0,u)+\"$lit$\"+l.slice(u)+e$6+b):l+e$6+(-2===u?(s.push(void 0),h):b)}var P=n+(t[i]||\"<?>\")+(2===e?\"</svg>\":\"\");if(!Array.isArray(t)||!t.hasOwnProperty(\"raw\"))throw Error(\"invalid template strings array\");return[void 0!==s$1?s$1.createHTML(P):P,s]};class E{constructor(t,e){var r,{strings:i,_$litType$:a}=t;this.parts=[];var s=0,n=0,o=i.length-1,h=this.parts,[l,p]=C(i,a);if(this.el=E.createElement(l,e),A.currentNode=this.el.content,2===a){var c=this.el.content,f=c.firstChild;f.remove(),c.append(...f.childNodes)}for(;null!==(r=A.nextNode())&&h.length<o;){if(1===r.nodeType){if(r.hasAttributes()){var d=[];for(var m of r.getAttributeNames())if(m.endsWith(\"$lit$\")||m.startsWith(e$6)){var u=p[n++];if(d.push(m),void 0!==u){var y=r.getAttribute(u.toLowerCase()+\"$lit$\").split(e$6),v=/([.?@])?(.*)/.exec(u);h.push({type:1,index:s,name:v[2],strings:y,ctor:\".\"===v[1]?M:\"?\"===v[1]?H:\"@\"===v[1]?I:S})}else h.push({type:6,index:s})}for(var b of d)r.removeAttribute(b)}if(g.test(r.tagName)){var _=r.textContent.split(e$6),P=_.length-1;if(P>0){r.textContent=i$2?i$2.emptyScript:\"\";for(var x=0;x<P;x++)r.append(_[x],h$1()),A.nextNode(),h.push({type:2,index:++s});r.append(_[P],h$1())}}}else if(8===r.nodeType)if(r.data===o$3)h.push({type:2,index:s});else for(var w=-1;-1!==(w=r.data.indexOf(e$6,w+1));)h.push({type:7,index:s}),w+=e$6.length-1;s++}}static createElement(t,e){var r=l$2.createElement(\"template\");return r.innerHTML=t,r}}function P(t,e){var r,i,a,s,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:t,o=arguments.length>3?arguments[3]:void 0;if(e===b)return e;var h=void 0!==o?null===(r=n._$Cl)||void 0===r?void 0:r[o]:n._$Cu,l=r$1(e)?void 0:e._$litDirective$;return(null==h?void 0:h.constructor)!==l&&(null===(i=null==h?void 0:h._$AO)||void 0===i||i.call(h,!1),void 0===l?h=void 0:(h=new l(t))._$AT(t,n,o),void 0!==o?(null!==(a=(s=n)._$Cl)&&void 0!==a?a:s._$Cl=[])[o]=h:n._$Cu=h),void 0!==h&&(e=P(t,h._$AS(t,e.values),h,o)),e}class V{constructor(t,e){this.v=[],this._$AN=void 0,this._$AD=t,this._$AM=e}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}p(t){var e,{el:{content:r},parts:i}=this._$AD,a=(null!==(e=null==t?void 0:t.creationScope)&&void 0!==e?e:l$2).importNode(r,!0);A.currentNode=a;for(var s=A.nextNode(),n=0,o=0,h=i[0];void 0!==h;){if(n===h.index){var l=void 0;2===h.type?l=new N(s,s.nextSibling,this,t):1===h.type?l=new h.ctor(s,h.name,h.strings,this,t):6===h.type&&(l=new L(s,this,t)),this.v.push(l),h=i[++o]}n!==(null==h?void 0:h.index)&&(s=A.nextNode(),n++)}return a}m(t){var e=0;for(var r of this.v)void 0!==r&&(void 0!==r.strings?(r._$AI(t,r,e),e+=r.strings.length-2):r._$AI(t[e])),e++}}class N{constructor(t,e,r,i){var a;this.type=2,this._$AH=w,this._$AN=void 0,this._$AA=t,this._$AB=e,this._$AM=r,this.options=i,this._$Cg=null===(a=null==i?void 0:i.isConnected)||void 0===a||a}get _$AU(){var t,e;return null!==(e=null===(t=this._$AM)||void 0===t?void 0:t._$AU)&&void 0!==e?e:this._$Cg}get parentNode(){var t=this._$AA.parentNode,e=this._$AM;return void 0!==e&&11===t.nodeType&&(t=e.parentNode),t}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(t){t=P(this,t,arguments.length>1&&void 0!==arguments[1]?arguments[1]:this),r$1(t)?t===w||null==t||\"\"===t?(this._$AH!==w&&this._$AR(),this._$AH=w):t!==this._$AH&&t!==b&&this.$(t):void 0!==t._$litType$?this.T(t):void 0!==t.nodeType?this.S(t):u(t)?this.A(t):this.$(t)}M(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this._$AB;return this._$AA.parentNode.insertBefore(t,e)}S(t){this._$AH!==t&&(this._$AR(),this._$AH=this.M(t))}$(t){this._$AH!==w&&r$1(this._$AH)?this._$AA.nextSibling.data=t:this.S(l$2.createTextNode(t)),this._$AH=t}T(t){var e,{values:r,_$litType$:i}=t,a=\"number\"==typeof i?this._$AC(t):(void 0===i.el&&(i.el=E.createElement(i.h,this.options)),i);if((null===(e=this._$AH)||void 0===e?void 0:e._$AD)===a)this._$AH.m(r);else{var s=new V(a,this),n=s.p(this.options);s.m(r),this.S(n),this._$AH=s}}_$AC(t){var e=T.get(t.strings);return void 0===e&&T.set(t.strings,e=new E(t)),e}A(t){d(this._$AH)||(this._$AH=[],this._$AR());var e,r=this._$AH,i=0;for(var a of t)i===r.length?r.push(e=new N(this.M(h$1()),this.M(h$1()),this,this.options)):e=r[i],e._$AI(a),i++;i<r.length&&(this._$AR(e&&e._$AB.nextSibling,i),r.length=i)}_$AR(){var t,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this._$AA.nextSibling,r=arguments.length>1?arguments[1]:void 0;for(null===(t=this._$AP)||void 0===t||t.call(this,!1,!0,r);e&&e!==this._$AB;){var i=e.nextSibling;e.remove(),e=i}}setConnected(t){var e;void 0===this._$AM&&(this._$Cg=t,null===(e=this._$AP)||void 0===e||e.call(this,t))}}class S{constructor(t,e,r,i,a){this.type=1,this._$AH=w,this._$AN=void 0,this.element=t,this.name=e,this._$AM=i,this.options=a,r.length>2||\"\"!==r[0]||\"\"!==r[1]?(this._$AH=Array(r.length-1).fill(new String),this.strings=r):this._$AH=w}get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}_$AI(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this,r=arguments.length>2?arguments[2]:void 0,i=arguments.length>3?arguments[3]:void 0,a=this.strings,s=!1;if(void 0===a)t=P(this,t,e,0),(s=!r$1(t)||t!==this._$AH&&t!==b)&&(this._$AH=t);else{var n,o,h=t;for(t=a[0],n=0;n<a.length-1;n++)(o=P(this,h[r+n],e,n))===b&&(o=this._$AH[n]),s||(s=!r$1(o)||o!==this._$AH[n]),o===w?t=w:t!==w&&(t+=(null!=o?o:\"\")+a[n+1]),this._$AH[n]=o}s&&!i&&this.k(t)}k(t){t===w?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,null!=t?t:\"\")}}class M extends S{constructor(){super(...arguments),this.type=3}k(t){this.element[this.name]=t===w?void 0:t}}var k=i$2?i$2.emptyScript:\"\";class H extends S{constructor(){super(...arguments),this.type=4}k(t){t&&t!==w?this.element.setAttribute(this.name,k):this.element.removeAttribute(this.name)}}class I extends S{constructor(t,e,r,i,a){super(t,e,r,i,a),this.type=5}_$AI(t){var e;if((t=null!==(e=P(this,t,arguments.length>1&&void 0!==arguments[1]?arguments[1]:this,0))&&void 0!==e?e:w)!==b){var r=this._$AH,i=t===w&&r!==w||t.capture!==r.capture||t.once!==r.once||t.passive!==r.passive,a=t!==w&&(r===w||i);i&&this.element.removeEventListener(this.name,this,r),a&&this.element.addEventListener(this.name,this,t),this._$AH=t}}handleEvent(t){var e,r;\"function\"==typeof this._$AH?this._$AH.call(null!==(r=null===(e=this.options)||void 0===e?void 0:e.host)&&void 0!==r?r:this.element,t):this._$AH.handleEvent(t)}}class L{constructor(t,e,r){this.element=t,this.type=6,this._$AN=void 0,this._$AM=e,this.options=r}get _$AU(){return this._$AM._$AU}_$AI(t){P(this,t)}}var R={P:\"$lit$\",V:e$6,L:o$3,I:1,N:C,R:V,D:u,j:P,H:N,O:S,F:H,B:I,W:M,Z:L},z=window.litHtmlPolyfillSupport,l$1,o$2;null==z||z(E,N),(null!==(t$2=globalThis.litHtmlVersions)&&void 0!==t$2?t$2:globalThis.litHtmlVersions=[]).push(\"2.1.2\");var r=a$1;class s extends a$1{constructor(){super(...arguments),this.renderOptions={host:this},this._$Dt=void 0}createRenderRoot(){var t,e,r=super.createRenderRoot();return null!==(t=(e=this.renderOptions).renderBefore)&&void 0!==t||(e.renderBefore=r.firstChild),r}update(t){var e=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(t),this._$Dt=x(e,this.renderRoot,this.renderOptions)}connectedCallback(){var t;super.connectedCallback(),null===(t=this._$Dt)||void 0===t||t.setConnected(!0)}disconnectedCallback(){var t;super.disconnectedCallback(),null===(t=this._$Dt)||void 0===t||t.setConnected(!1)}render(){return b}}s.finalized=!0,s._$litElement$=!0,null===(l$1=globalThis.litElementHydrateSupport)||void 0===l$1||l$1.call(globalThis,{LitElement:s});var n$2=globalThis.litElementPolyfillSupport;null==n$2||n$2({LitElement:s});var h={_$AK:(t,e,r)=>{t._$AK(e,r)},_$AL:t=>t._$AL};(null!==(o$2=globalThis.litElementVersions)&&void 0!==o$2?o$2:globalThis.litElementVersions=[]).push(\"3.1.2\");\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nvar n$1=t=>e=>\"function\"==typeof e?((t,e)=>(window.customElements.define(t,e),e))(t,e):((t,e)=>{var{kind:r,elements:i}=e;return{kind:r,elements:i,finisher(e){window.customElements.define(t,e)}}})(t,e)\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */,i$1=(t,e)=>\"method\"===e.kind&&e.descriptor&&!(\"value\"in e.descriptor)?_objectSpread2(_objectSpread2({},e),{},{finisher(r){r.createProperty(e.key,t)}}):{kind:\"field\",key:Symbol(),placement:\"own\",descriptor:{},originalKey:e.key,initializer(){\"function\"==typeof e.initializer&&(this[e.key]=e.initializer.call(this))},finisher(r){r.createProperty(e.key,t)}};function e$5(t){return(e,r)=>void 0!==r?((t,e,r)=>{e.constructor.createProperty(r,t)})(t,e,r):i$1(t,e)}\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */function t$1(t){return e$5(_objectSpread2(_objectSpread2({},t),{},{state:!0}))}\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */var e$4=(t,e,r)=>{Object.defineProperty(e,r,t)},t=(t,e)=>({kind:\"method\",placement:\"prototype\",key:e.key,descriptor:t}),o$1=t=>{var{finisher:e,descriptor:r}=t;return(t,i)=>{var a;if(void 0===i){var s=null!==(a=t.originalKey)&&void 0!==a?a:t.key,n=null!=r?{kind:\"method\",placement:\"prototype\",key:s,descriptor:r(t.key)}:_objectSpread2(_objectSpread2({},t),{},{key:s});return null!=e&&(n.finisher=function(t){e(t,s)}),n}var o=t.constructor;void 0!==r&&Object.defineProperty(t,i,r(i)),null==e||e(o,i)}},n;\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */function e$3(t){return o$1({finisher:(e,r)=>{Object.assign(e.prototype[r],t)}})}\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */function i(t,e){return o$1({descriptor:r=>{var i={get(){var e,r;return null!==(r=null===(e=this.renderRoot)||void 0===e?void 0:e.querySelector(t))&&void 0!==r?r:null},enumerable:!0,configurable:!0};if(e){var a=\"symbol\"==typeof r?Symbol():\"__\"+r;i.get=function(){var e,r;return void 0===this[a]&&(this[a]=null!==(r=null===(e=this.renderRoot)||void 0===e?void 0:e.querySelector(t))&&void 0!==r?r:null),this[a]}}return i}})}\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */function e$2(t){return o$1({descriptor:e=>({get(){var e,r;return null!==(r=null===(e=this.renderRoot)||void 0===e?void 0:e.querySelectorAll(t))&&void 0!==r?r:[]},enumerable:!0,configurable:!0})})}\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */function e$1(t){return o$1({descriptor:e=>({get(){var e=this;return _asyncToGenerator((function*(){var r;return yield e.updateComplete,null===(r=e.renderRoot)||void 0===r?void 0:r.querySelector(t)}))()},enumerable:!0,configurable:!0})})}\n/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */var e=null!=(null===(n=window.HTMLSlotElement)||void 0===n?void 0:n.prototype.assignedElements)?(t,e)=>t.assignedElements(e):(t,e)=>t.assignedNodes(e).filter((t=>t.nodeType===Node.ELEMENT_NODE));function l(t){var{slot:r,selector:i}=null!=t?t:{};return o$1({descriptor:a=>({get(){var a,s=\"slot\"+(r?\"[name=\".concat(r,\"]\"):\":not([name])\"),n=null===(a=this.renderRoot)||void 0===a?void 0:a.querySelector(s),o=null!=n?e(n,t):[];return i?o.filter((t=>t.matches(i))):o},enumerable:!0,configurable:!0})})}\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */function o(t,e,r){var i,a=t;return\"object\"==typeof t?(a=t.slot,i=t):i={flatten:e},r?l({slot:a,flatten:e,selector:r}):o$1({descriptor:t=>({get(){var t,e,r=\"slot\"+(a?\"[name=\".concat(a,\"]\"):\":not([name])\"),s=null===(t=this.renderRoot)||void 0===t?void 0:t.querySelector(r);return null!==(e=null==s?void 0:s.assignedNodes(i))&&void 0!==e?e:[]},enumerable:!0,configurable:!0})})}var commonjsGlobal=\"undefined\"!=typeof globalThis?globalThis:\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:{};function getDefaultExportFromCjs(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,\"default\")?t.default:t}function getDefaultExportFromNamespaceIfPresent(t){return t&&Object.prototype.hasOwnProperty.call(t,\"default\")?t.default:t}function getDefaultExportFromNamespaceIfNotNamed(t){return t&&Object.prototype.hasOwnProperty.call(t,\"default\")&&1===Object.keys(t).length?t.default:t}function getAugmentedNamespace(t){if(t.__esModule)return t;var e=Object.defineProperty({},\"__esModule\",{value:!0});return Object.keys(t).forEach((function(r){var i=Object.getOwnPropertyDescriptor(t,r);Object.defineProperty(e,r,i.get?i:{enumerable:!0,get:function(){return t[r]}})})),e}function commonjsRequire(t){throw new Error('Could not dynamically require \"'+t+'\". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.')}var lottie$1={exports:{}};(function(module){var root,factory;\"undefined\"!=typeof navigator&&(root=window||{},factory=function(window){var svgNS=\"http://www.w3.org/2000/svg\",locationHref=\"\",initialDefaultFrame=-999999,_useWebWorker=!1,subframeEnabled=!0,idPrefix=\"\",expressionsPlugin,isSafari=/^((?!chrome|android).)*safari/i.test(navigator.userAgent),cachedColors={},bmRnd,bmPow=Math.pow,bmSqrt=Math.sqrt,bmFloor=Math.floor,bmMax=Math.max,bmMin=Math.min,BMMath={};function ProjectInterface(){return{}}!function(){var t,e=[\"abs\",\"acos\",\"acosh\",\"asin\",\"asinh\",\"atan\",\"atanh\",\"atan2\",\"ceil\",\"cbrt\",\"expm1\",\"clz32\",\"cos\",\"cosh\",\"exp\",\"floor\",\"fround\",\"hypot\",\"imul\",\"log\",\"log1p\",\"log2\",\"log10\",\"max\",\"min\",\"pow\",\"random\",\"round\",\"sign\",\"sin\",\"sinh\",\"sqrt\",\"tan\",\"tanh\",\"trunc\",\"E\",\"LN10\",\"LN2\",\"LOG10E\",\"LOG2E\",\"PI\",\"SQRT1_2\",\"SQRT2\"],r=e.length;for(t=0;t<r;t+=1)BMMath[e[t]]=Math[e[t]]}(),BMMath.random=Math.random,BMMath.abs=function(t){if(\"object\"==typeof t&&t.length){var e,r=createSizedArray(t.length),i=t.length;for(e=0;e<i;e+=1)r[e]=Math.abs(t[e]);return r}return Math.abs(t)};var defaultCurveSegments=150,degToRads=Math.PI/180,roundCorner=.5519;function roundValues(t){bmRnd=t?Math.round:function(t){return t}}function styleDiv(t){t.style.position=\"absolute\",t.style.top=0,t.style.left=0,t.style.display=\"block\",t.style.transformOrigin=\"0 0\",t.style.webkitTransformOrigin=\"0 0\",t.style.backfaceVisibility=\"visible\",t.style.webkitBackfaceVisibility=\"visible\",t.style.transformStyle=\"preserve-3d\",t.style.webkitTransformStyle=\"preserve-3d\",t.style.mozTransformStyle=\"preserve-3d\"}function BMEnterFrameEvent(t,e,r,i){this.type=t,this.currentTime=e,this.totalTime=r,this.direction=i<0?-1:1}function BMCompleteEvent(t,e){this.type=t,this.direction=e<0?-1:1}function BMCompleteLoopEvent(t,e,r,i){this.type=t,this.currentLoop=r,this.totalLoops=e,this.direction=i<0?-1:1}function BMSegmentStartEvent(t,e,r){this.type=t,this.firstFrame=e,this.totalFrames=r}function BMDestroyEvent(t,e){this.type=t,this.target=e}function BMRenderFrameErrorEvent(t,e){this.type=\"renderFrameError\",this.nativeError=t,this.currentTime=e}function BMConfigErrorEvent(t){this.type=\"configError\",this.nativeError=t}function BMAnimationConfigErrorEvent(t,e){this.type=t,this.nativeError=e}roundValues(!1);var createElementID=(_count=0,function(){return idPrefix+\"__lottie_element_\"+(_count+=1)}),_count;function HSVtoRGB(t,e,r){var i,a,s,n,o,h,l,p;switch(h=r*(1-e),l=r*(1-(o=6*t-(n=Math.floor(6*t)))*e),p=r*(1-(1-o)*e),n%6){case 0:i=r,a=p,s=h;break;case 1:i=l,a=r,s=h;break;case 2:i=h,a=r,s=p;break;case 3:i=h,a=l,s=r;break;case 4:i=p,a=h,s=r;break;case 5:i=r,a=h,s=l}return[i,a,s]}function RGBtoHSV(t,e,r){var i,a=Math.max(t,e,r),s=Math.min(t,e,r),n=a-s,o=0===a?0:n/a,h=a/255;switch(a){case s:i=0;break;case t:i=e-r+n*(e<r?6:0),i/=6*n;break;case e:i=r-t+2*n,i/=6*n;break;case r:i=t-e+4*n,i/=6*n}return[i,o,h]}function addSaturationToRGB(t,e){var r=RGBtoHSV(255*t[0],255*t[1],255*t[2]);return r[1]+=e,r[1]>1?r[1]=1:r[1]<=0&&(r[1]=0),HSVtoRGB(r[0],r[1],r[2])}function addBrightnessToRGB(t,e){var r=RGBtoHSV(255*t[0],255*t[1],255*t[2]);return r[2]+=e,r[2]>1?r[2]=1:r[2]<0&&(r[2]=0),HSVtoRGB(r[0],r[1],r[2])}function addHueToRGB(t,e){var r=RGBtoHSV(255*t[0],255*t[1],255*t[2]);return r[0]+=e/360,r[0]>1?r[0]-=1:r[0]<0&&(r[0]+=1),HSVtoRGB(r[0],r[1],r[2])}var rgbToHex=function(){var t,e,r=[];for(t=0;t<256;t+=1)e=t.toString(16),r[t]=1===e.length?\"0\"+e:e;return function(t,e,i){return t<0&&(t=0),e<0&&(e=0),i<0&&(i=0),\"#\"+r[t]+r[e]+r[i]}}();function BaseEvent(){}BaseEvent.prototype={triggerEvent:function(t,e){if(this._cbs[t])for(var r=this._cbs[t],i=0;i<r.length;i+=1)r[i](e)},addEventListener:function(t,e){return this._cbs[t]||(this._cbs[t]=[]),this._cbs[t].push(e),function(){this.removeEventListener(t,e)}.bind(this)},removeEventListener:function(t,e){if(e){if(this._cbs[t]){for(var r=0,i=this._cbs[t].length;r<i;)this._cbs[t][r]===e&&(this._cbs[t].splice(r,1),r-=1,i-=1),r+=1;this._cbs[t].length||(this._cbs[t]=null)}}else this._cbs[t]=null}};var createTypedArray=function(){function t(t,e){var r,i=0,a=[];switch(t){case\"int16\":case\"uint8c\":r=1;break;default:r=1.1}for(i=0;i<e;i+=1)a.push(r);return a}return\"function\"==typeof Uint8ClampedArray&&\"function\"==typeof Float32Array?function(e,r){return\"float32\"===e?new Float32Array(r):\"int16\"===e?new Int16Array(r):\"uint8c\"===e?new Uint8ClampedArray(r):t(e,r)}:t}();function createSizedArray(t){return Array.apply(null,{length:t})}function createNS(t){return document.createElementNS(svgNS,t)}function createTag(t){return document.createElement(t)}function DynamicPropertyContainer(){}DynamicPropertyContainer.prototype={addDynamicProperty:function(t){-1===this.dynamicProperties.indexOf(t)&&(this.dynamicProperties.push(t),this.container.addDynamicProperty(this),this._isAnimated=!0)},iterateDynamicProperties:function(){var t;this._mdf=!1;var e=this.dynamicProperties.length;for(t=0;t<e;t+=1)this.dynamicProperties[t].getValue(),this.dynamicProperties[t]._mdf&&(this._mdf=!0)},initDynamicPropertyContainer:function(t){this.container=t,this.dynamicProperties=[],this._mdf=!1,this._isAnimated=!1}};var getBlendMode=(blendModeEnums={0:\"source-over\",1:\"multiply\",2:\"screen\",3:\"overlay\",4:\"darken\",5:\"lighten\",6:\"color-dodge\",7:\"color-burn\",8:\"hard-light\",9:\"soft-light\",10:\"difference\",11:\"exclusion\",12:\"hue\",13:\"saturation\",14:\"color\",15:\"luminosity\"},function(t){return blendModeEnums[t]||\"\"}),blendModeEnums,lineCapEnum={1:\"butt\",2:\"round\",3:\"square\"},lineJoinEnum={1:\"miter\",2:\"round\",3:\"bevel\"},Matrix=function(){var t=Math.cos,e=Math.sin,r=Math.tan,i=Math.round;function a(){return this.props[0]=1,this.props[1]=0,this.props[2]=0,this.props[3]=0,this.props[4]=0,this.props[5]=1,this.props[6]=0,this.props[7]=0,this.props[8]=0,this.props[9]=0,this.props[10]=1,this.props[11]=0,this.props[12]=0,this.props[13]=0,this.props[14]=0,this.props[15]=1,this}function s(r){if(0===r)return this;var i=t(r),a=e(r);return this._t(i,-a,0,0,a,i,0,0,0,0,1,0,0,0,0,1)}function n(r){if(0===r)return this;var i=t(r),a=e(r);return this._t(1,0,0,0,0,i,-a,0,0,a,i,0,0,0,0,1)}function o(r){if(0===r)return this;var i=t(r),a=e(r);return this._t(i,0,a,0,0,1,0,0,-a,0,i,0,0,0,0,1)}function h(r){if(0===r)return this;var i=t(r),a=e(r);return this._t(i,-a,0,0,a,i,0,0,0,0,1,0,0,0,0,1)}function l(t,e){return this._t(1,e,t,1,0,0)}function p(t,e){return this.shear(r(t),r(e))}function c(i,a){var s=t(a),n=e(a);return this._t(s,n,0,0,-n,s,0,0,0,0,1,0,0,0,0,1)._t(1,0,0,0,r(i),1,0,0,0,0,1,0,0,0,0,1)._t(s,-n,0,0,n,s,0,0,0,0,1,0,0,0,0,1)}function f(t,e,r){return r||0===r||(r=1),1===t&&1===e&&1===r?this:this._t(t,0,0,0,0,e,0,0,0,0,r,0,0,0,0,1)}function d(t,e,r,i,a,s,n,o,h,l,p,c,f,d,m,u){return this.props[0]=t,this.props[1]=e,this.props[2]=r,this.props[3]=i,this.props[4]=a,this.props[5]=s,this.props[6]=n,this.props[7]=o,this.props[8]=h,this.props[9]=l,this.props[10]=p,this.props[11]=c,this.props[12]=f,this.props[13]=d,this.props[14]=m,this.props[15]=u,this}function m(t,e,r){return r=r||0,0!==t||0!==e||0!==r?this._t(1,0,0,0,0,1,0,0,0,0,1,0,t,e,r,1):this}function u(t,e,r,i,a,s,n,o,h,l,p,c,f,d,m,u){var y=this.props;if(1===t&&0===e&&0===r&&0===i&&0===a&&1===s&&0===n&&0===o&&0===h&&0===l&&1===p&&0===c)return y[12]=y[12]*t+y[15]*f,y[13]=y[13]*s+y[15]*d,y[14]=y[14]*p+y[15]*m,y[15]*=u,this._identityCalculated=!1,this;var g=y[0],v=y[1],b=y[2],_=y[3],P=y[4],E=y[5],S=y[6],x=y[7],A=y[8],w=y[9],C=y[10],k=y[11],T=y[12],D=y[13],M=y[14],F=y[15];return y[0]=g*t+v*a+b*h+_*f,y[1]=g*e+v*s+b*l+_*d,y[2]=g*r+v*n+b*p+_*m,y[3]=g*i+v*o+b*c+_*u,y[4]=P*t+E*a+S*h+x*f,y[5]=P*e+E*s+S*l+x*d,y[6]=P*r+E*n+S*p+x*m,y[7]=P*i+E*o+S*c+x*u,y[8]=A*t+w*a+C*h+k*f,y[9]=A*e+w*s+C*l+k*d,y[10]=A*r+w*n+C*p+k*m,y[11]=A*i+w*o+C*c+k*u,y[12]=T*t+D*a+M*h+F*f,y[13]=T*e+D*s+M*l+F*d,y[14]=T*r+D*n+M*p+F*m,y[15]=T*i+D*o+M*c+F*u,this._identityCalculated=!1,this}function y(){return this._identityCalculated||(this._identity=!(1!==this.props[0]||0!==this.props[1]||0!==this.props[2]||0!==this.props[3]||0!==this.props[4]||1!==this.props[5]||0!==this.props[6]||0!==this.props[7]||0!==this.props[8]||0!==this.props[9]||1!==this.props[10]||0!==this.props[11]||0!==this.props[12]||0!==this.props[13]||0!==this.props[14]||1!==this.props[15]),this._identityCalculated=!0),this._identity}function g(t){for(var e=0;e<16;){if(t.props[e]!==this.props[e])return!1;e+=1}return!0}function v(t){var e;for(e=0;e<16;e+=1)t.props[e]=this.props[e];return t}function b(t){var e;for(e=0;e<16;e+=1)this.props[e]=t[e]}function _(t,e,r){return{x:t*this.props[0]+e*this.props[4]+r*this.props[8]+this.props[12],y:t*this.props[1]+e*this.props[5]+r*this.props[9]+this.props[13],z:t*this.props[2]+e*this.props[6]+r*this.props[10]+this.props[14]}}function P(t,e,r){return t*this.props[0]+e*this.props[4]+r*this.props[8]+this.props[12]}function E(t,e,r){return t*this.props[1]+e*this.props[5]+r*this.props[9]+this.props[13]}function S(t,e,r){return t*this.props[2]+e*this.props[6]+r*this.props[10]+this.props[14]}function x(){var t=this.props[0]*this.props[5]-this.props[1]*this.props[4],e=this.props[5]/t,r=-this.props[1]/t,i=-this.props[4]/t,a=this.props[0]/t,s=(this.props[4]*this.props[13]-this.props[5]*this.props[12])/t,n=-(this.props[0]*this.props[13]-this.props[1]*this.props[12])/t,o=new Matrix;return o.props[0]=e,o.props[1]=r,o.props[4]=i,o.props[5]=a,o.props[12]=s,o.props[13]=n,o}function A(t){return this.getInverseMatrix().applyToPointArray(t[0],t[1],t[2]||0)}function w(t){var e,r=t.length,i=[];for(e=0;e<r;e+=1)i[e]=A(t[e]);return i}function C(t,e,r){var i=createTypedArray(\"float32\",6);if(this.isIdentity())i[0]=t[0],i[1]=t[1],i[2]=e[0],i[3]=e[1],i[4]=r[0],i[5]=r[1];else{var a=this.props[0],s=this.props[1],n=this.props[4],o=this.props[5],h=this.props[12],l=this.props[13];i[0]=t[0]*a+t[1]*n+h,i[1]=t[0]*s+t[1]*o+l,i[2]=e[0]*a+e[1]*n+h,i[3]=e[0]*s+e[1]*o+l,i[4]=r[0]*a+r[1]*n+h,i[5]=r[0]*s+r[1]*o+l}return i}function k(t,e,r){return this.isIdentity()?[t,e,r]:[t*this.props[0]+e*this.props[4]+r*this.props[8]+this.props[12],t*this.props[1]+e*this.props[5]+r*this.props[9]+this.props[13],t*this.props[2]+e*this.props[6]+r*this.props[10]+this.props[14]]}function T(t,e){if(this.isIdentity())return t+\",\"+e;var r=this.props;return Math.round(100*(t*r[0]+e*r[4]+r[12]))/100+\",\"+Math.round(100*(t*r[1]+e*r[5]+r[13]))/100}function D(){for(var t=0,e=this.props,r=\"matrix3d(\";t<16;)r+=i(1e4*e[t])/1e4,r+=15===t?\")\":\",\",t+=1;return r}function M(t){return t<1e-6&&t>0||t>-1e-6&&t<0?i(1e4*t)/1e4:t}function F(){var t=this.props;return\"matrix(\"+M(t[0])+\",\"+M(t[1])+\",\"+M(t[4])+\",\"+M(t[5])+\",\"+M(t[12])+\",\"+M(t[13])+\")\"}return function(){this.reset=a,this.rotate=s,this.rotateX=n,this.rotateY=o,this.rotateZ=h,this.skew=p,this.skewFromAxis=c,this.shear=l,this.scale=f,this.setTransform=d,this.translate=m,this.transform=u,this.applyToPoint=_,this.applyToX=P,this.applyToY=E,this.applyToZ=S,this.applyToPointArray=k,this.applyToTriplePoints=C,this.applyToPointStringified=T,this.toCSS=D,this.to2dCSS=F,this.clone=v,this.cloneFromProps=b,this.equals=g,this.inversePoints=w,this.inversePoint=A,this.getInverseMatrix=x,this._t=this.transform,this.isIdentity=y,this._identity=!0,this._identityCalculated=!1,this.props=createTypedArray(\"float32\",16),this.reset()}}();!function(t,e){var r=this,i=256,a=e.pow(i,6),s=e.pow(2,52),n=2*s,o=255;function h(t){var e,r=t.length,a=this,s=0,n=a.i=a.j=0,h=a.S=[];for(r||(t=[r++]);s<i;)h[s]=s++;for(s=0;s<i;s++)h[s]=h[n=o&n+t[s%r]+(e=h[s])],h[n]=e;a.g=function(t){for(var e,r=0,s=a.i,n=a.j,h=a.S;t--;)e=h[s=o&s+1],r=r*i+h[o&(h[s]=h[n=o&n+e])+(h[n]=e)];return a.i=s,a.j=n,r}}function l(t,e){return e.i=t.i,e.j=t.j,e.S=t.S.slice(),e}function p(t,e){var r,i=[],a=typeof t;if(e&&\"object\"==a)for(r in t)try{i.push(p(t[r],e-1))}catch(t){}return i.length?i:\"string\"==a?t:t+\"\\0\"}function c(t,e){for(var r,i=t+\"\",a=0;a<i.length;)e[o&a]=o&(r^=19*e[o&a])+i.charCodeAt(a++);return f(e)}function f(t){return String.fromCharCode.apply(0,t)}e.seedrandom=function(o,d,m){var u=[],y=c(p((d=!0===d?{entropy:!0}:d||{}).entropy?[o,f(t)]:null===o?function(){try{var e=new Uint8Array(i);return(r.crypto||r.msCrypto).getRandomValues(e),f(e)}catch(e){var a=r.navigator,s=a&&a.plugins;return[+new Date,r,s,r.screen,f(t)]}}():o,3),u),g=new h(u),v=function(){for(var t=g.g(6),e=a,r=0;t<s;)t=(t+r)*i,e*=i,r=g.g(1);for(;t>=n;)t/=2,e/=2,r>>>=1;return(t+r)/e};return v.int32=function(){return 0|g.g(4)},v.quick=function(){return g.g(4)/4294967296},v.double=v,c(f(g.S),t),(d.pass||m||function(t,r,i,a){return a&&(a.S&&l(a,g),t.state=function(){return l(g,{})}),i?(e.random=t,r):t})(v,y,\"global\"in d?d.global:this==e,d.state)},c(e.random(),t)}([],BMMath);var BezierFactory=function(){var t={getBezierEasing:function(t,r,i,a,s){var n=s||(\"bez_\"+t+\"_\"+r+\"_\"+i+\"_\"+a).replace(/\\./g,\"p\");if(e[n])return e[n];var o=new l([t,r,i,a]);return e[n]=o,o}},e={},r=.1,i=\"function\"==typeof Float32Array;function a(t,e){return 1-3*e+3*t}function s(t,e){return 3*e-6*t}function n(t){return 3*t}function o(t,e,r){return((a(e,r)*t+s(e,r))*t+n(e))*t}function h(t,e,r){return 3*a(e,r)*t*t+2*s(e,r)*t+n(e)}function l(t){this._p=t,this._mSampleValues=i?new Float32Array(11):new Array(11),this._precomputed=!1,this.get=this.get.bind(this)}return l.prototype={get:function(t){var e=this._p[0],r=this._p[1],i=this._p[2],a=this._p[3];return this._precomputed||this._precompute(),e===r&&i===a?t:0===t?0:1===t?1:o(this._getTForX(t),r,a)},_precompute:function(){var t=this._p[0],e=this._p[1],r=this._p[2],i=this._p[3];this._precomputed=!0,t===e&&r===i||this._calcSampleValues()},_calcSampleValues:function(){for(var t=this._p[0],e=this._p[2],i=0;i<11;++i)this._mSampleValues[i]=o(i*r,t,e)},_getTForX:function(t){for(var e=this._p[0],i=this._p[2],a=this._mSampleValues,s=0,n=1;10!==n&&a[n]<=t;++n)s+=r;var l=s+(t-a[--n])/(a[n+1]-a[n])*r,p=h(l,e,i);return p>=.001?function(t,e,r,i){for(var a=0;a<4;++a){var s=h(e,r,i);if(0===s)return e;e-=(o(e,r,i)-t)/s}return e}(t,l,e,i):0===p?l:function(t,e,r,i,a){var s,n,h=0;do{(s=o(n=e+(r-e)/2,i,a)-t)>0?r=n:e=n}while(Math.abs(s)>1e-7&&++h<10);return n}(t,s,s+r,e,i)}},t}();function extendPrototype(t,e){var r,i,a=t.length;for(r=0;r<a;r+=1)for(var s in i=t[r].prototype)Object.prototype.hasOwnProperty.call(i,s)&&(e.prototype[s]=i[s])}function getDescriptor(t,e){return Object.getOwnPropertyDescriptor(t,e)}function createProxyFunction(t){function e(){}return e.prototype=t,e}function bezFunction(){var t=Math;function e(t,e,r,i,a,s){var n=t*i+e*a+r*s-a*i-s*t-r*e;return n>-.001&&n<.001}var r=function(t,e,r,i){var a,s,n,o,h,l,p=defaultCurveSegments,c=0,f=[],d=[],m=bezierLengthPool.newElement();for(n=r.length,a=0;a<p;a+=1){for(h=a/(p-1),l=0,s=0;s<n;s+=1)o=bmPow(1-h,3)*t[s]+3*bmPow(1-h,2)*h*r[s]+3*(1-h)*bmPow(h,2)*i[s]+bmPow(h,3)*e[s],f[s]=o,null!==d[s]&&(l+=bmPow(f[s]-d[s],2)),d[s]=f[s];l&&(c+=l=bmSqrt(l)),m.percents[a]=h,m.lengths[a]=c}return m.addedLength=c,m};function i(t){this.segmentLength=0,this.points=new Array(t)}function a(t,e){this.partialLength=t,this.point=e}var s,n=(s={},function(t,r,n,o){var h=(t[0]+\"_\"+t[1]+\"_\"+r[0]+\"_\"+r[1]+\"_\"+n[0]+\"_\"+n[1]+\"_\"+o[0]+\"_\"+o[1]).replace(/\\./g,\"p\");if(!s[h]){var l,p,c,f,d,m,u,y=defaultCurveSegments,g=0,v=null;2===t.length&&(t[0]!==r[0]||t[1]!==r[1])&&e(t[0],t[1],r[0],r[1],t[0]+n[0],t[1]+n[1])&&e(t[0],t[1],r[0],r[1],r[0]+o[0],r[1]+o[1])&&(y=2);var b=new i(y);for(c=n.length,l=0;l<y;l+=1){for(u=createSizedArray(c),d=l/(y-1),m=0,p=0;p<c;p+=1)f=bmPow(1-d,3)*t[p]+3*bmPow(1-d,2)*d*(t[p]+n[p])+3*(1-d)*bmPow(d,2)*(r[p]+o[p])+bmPow(d,3)*r[p],u[p]=f,null!==v&&(m+=bmPow(u[p]-v[p],2));g+=m=bmSqrt(m),b.points[l]=new a(m,u),v=u}b.segmentLength=g,s[h]=b}return s[h]});function o(t,e){var r=e.percents,i=e.lengths,a=r.length,s=bmFloor((a-1)*t),n=t*e.addedLength,o=0;if(s===a-1||0===s||n===i[s])return r[s];for(var h=i[s]>n?-1:1,l=!0;l;)if(i[s]<=n&&i[s+1]>n?(o=(n-i[s])/(i[s+1]-i[s]),l=!1):s+=h,s<0||s>=a-1){if(s===a-1)return r[s];l=!1}return r[s]+(r[s+1]-r[s])*o}var h=createTypedArray(\"float32\",8);return{getSegmentsLength:function(t){var e,i=segmentsLengthPool.newElement(),a=t.c,s=t.v,n=t.o,o=t.i,h=t._length,l=i.lengths,p=0;for(e=0;e<h-1;e+=1)l[e]=r(s[e],s[e+1],n[e],o[e+1]),p+=l[e].addedLength;return a&&h&&(l[e]=r(s[e],s[0],n[e],o[0]),p+=l[e].addedLength),i.totalLength=p,i},getNewSegment:function(e,r,i,a,s,n,l){s<0?s=0:s>1&&(s=1);var p,c=o(s,l),f=o(n=n>1?1:n,l),d=e.length,m=1-c,u=1-f,y=m*m*m,g=c*m*m*3,v=c*c*m*3,b=c*c*c,_=m*m*u,P=c*m*u+m*c*u+m*m*f,E=c*c*u+m*c*f+c*m*f,S=c*c*f,x=m*u*u,A=c*u*u+m*f*u+m*u*f,w=c*f*u+m*f*f+c*u*f,C=c*f*f,k=u*u*u,T=f*u*u+u*f*u+u*u*f,D=f*f*u+u*f*f+f*u*f,M=f*f*f;for(p=0;p<d;p+=1)h[4*p]=t.round(1e3*(y*e[p]+g*i[p]+v*a[p]+b*r[p]))/1e3,h[4*p+1]=t.round(1e3*(_*e[p]+P*i[p]+E*a[p]+S*r[p]))/1e3,h[4*p+2]=t.round(1e3*(x*e[p]+A*i[p]+w*a[p]+C*r[p]))/1e3,h[4*p+3]=t.round(1e3*(k*e[p]+T*i[p]+D*a[p]+M*r[p]))/1e3;return h},getPointInSegment:function(e,r,i,a,s,n){var h=o(s,n),l=1-h;return[t.round(1e3*(l*l*l*e[0]+(h*l*l+l*h*l+l*l*h)*i[0]+(h*h*l+l*h*h+h*l*h)*a[0]+h*h*h*r[0]))/1e3,t.round(1e3*(l*l*l*e[1]+(h*l*l+l*h*l+l*l*h)*i[1]+(h*h*l+l*h*h+h*l*h)*a[1]+h*h*h*r[1]))/1e3]},buildBezierData:n,pointOnLine2D:e,pointOnLine3D:function(r,i,a,s,n,o,h,l,p){if(0===a&&0===o&&0===p)return e(r,i,s,n,h,l);var c,f=t.sqrt(t.pow(s-r,2)+t.pow(n-i,2)+t.pow(o-a,2)),d=t.sqrt(t.pow(h-r,2)+t.pow(l-i,2)+t.pow(p-a,2)),m=t.sqrt(t.pow(h-s,2)+t.pow(l-n,2)+t.pow(p-o,2));return(c=f>d?f>m?f-d-m:m-d-f:m>d?m-d-f:d-f-m)>-1e-4&&c<1e-4}}}!function(){for(var t=0,e=[\"ms\",\"moz\",\"webkit\",\"o\"],r=0;r<e.length&&!window.requestAnimationFrame;++r)window.requestAnimationFrame=window[e[r]+\"RequestAnimationFrame\"],window.cancelAnimationFrame=window[e[r]+\"CancelAnimationFrame\"]||window[e[r]+\"CancelRequestAnimationFrame\"];window.requestAnimationFrame||(window.requestAnimationFrame=function(e){var r=(new Date).getTime(),i=Math.max(0,16-(r-t)),a=setTimeout((function(){e(r+i)}),i);return t=r+i,a}),window.cancelAnimationFrame||(window.cancelAnimationFrame=function(t){clearTimeout(t)})}();var bez=bezFunction(),dataManager=function(){var t,e,r=1,i=[],a={onmessage:function(){},postMessage:function(e){t({data:e})}},_workerSelf={postMessage:function(t){a.onmessage({data:t})}};function s(){e||(e=function(e){if(window.Worker&&window.Blob&&_useWebWorker){var r=new Blob([\"var _workerSelf = self; self.onmessage = \",e.toString()],{type:\"text/javascript\"}),i=URL.createObjectURL(r);return new Worker(i)}return t=e,a}((function(t){if(_workerSelf.dataManager||(_workerSelf.dataManager=function(){function t(a,s){var n,o,h,l,p,f,d=a.length;for(o=0;o<d;o+=1)if(\"ks\"in(n=a[o])&&!n.completed){if(n.completed=!0,n.tt&&(a[o-1].td=n.tt),n.hasMask){var m=n.masksProperties;for(l=m.length,h=0;h<l;h+=1)if(m[h].pt.k.i)i(m[h].pt.k);else for(f=m[h].pt.k.length,p=0;p<f;p+=1)m[h].pt.k[p].s&&i(m[h].pt.k[p].s[0]),m[h].pt.k[p].e&&i(m[h].pt.k[p].e[0])}0===n.ty?(n.layers=e(n.refId,s),t(n.layers,s)):4===n.ty?r(n.shapes):5===n.ty&&c(n)}}function e(t,e){for(var r=0,i=e.length;r<i;){if(e[r].id===t)return e[r].layers.__used?JSON.parse(JSON.stringify(e[r].layers)):(e[r].layers.__used=!0,e[r].layers);r+=1}return null}function r(t){var e,a,s;for(e=t.length-1;e>=0;e-=1)if(\"sh\"===t[e].ty)if(t[e].ks.k.i)i(t[e].ks.k);else for(s=t[e].ks.k.length,a=0;a<s;a+=1)t[e].ks.k[a].s&&i(t[e].ks.k[a].s[0]),t[e].ks.k[a].e&&i(t[e].ks.k[a].e[0]);else\"gr\"===t[e].ty&&r(t[e].it)}function i(t){var e,r=t.i.length;for(e=0;e<r;e+=1)t.i[e][0]+=t.v[e][0],t.i[e][1]+=t.v[e][1],t.o[e][0]+=t.v[e][0],t.o[e][1]+=t.v[e][1]}function a(t,e){var r=e?e.split(\".\"):[100,100,100];return t[0]>r[0]||!(r[0]>t[0])&&(t[1]>r[1]||!(r[1]>t[1])&&(t[2]>r[2]||!(r[2]>t[2])&&null))}var s,n=function(){var t=[4,4,14];function e(t){var e,r,i,a=t.length;for(e=0;e<a;e+=1)5===t[e].ty&&(i=void 0,i=(r=t[e]).t.d,r.t.d={k:[{s:i,t:0}]})}return function(r){if(a(t,r.v)&&(e(r.layers),r.assets)){var i,s=r.assets.length;for(i=0;i<s;i+=1)r.assets[i].layers&&e(r.assets[i].layers)}}}(),o=(s=[4,7,99],function(t){if(t.chars&&!a(s,t.v)){var e,r,n,o,h,l=t.chars.length;for(e=0;e<l;e+=1)if(t.chars[e].data&&t.chars[e].data.shapes)for(n=(h=t.chars[e].data.shapes[0].it).length,r=0;r<n;r+=1)(o=h[r].ks.k).__converted||(i(h[r].ks.k),o.__converted=!0)}}),h=function(){var t=[5,7,15];function e(t){var e,r,i=t.length;for(e=0;e<i;e+=1)5===t[e].ty&&(r=void 0,\"number\"==typeof(r=t[e].t.p).a&&(r.a={a:0,k:r.a}),\"number\"==typeof r.p&&(r.p={a:0,k:r.p}),\"number\"==typeof r.r&&(r.r={a:0,k:r.r}))}return function(r){if(a(t,r.v)&&(e(r.layers),r.assets)){var i,s=r.assets.length;for(i=0;i<s;i+=1)r.assets[i].layers&&e(r.assets[i].layers)}}}(),l=function(){var t=[4,1,9];function e(t){var r,i,a,s=t.length;for(r=0;r<s;r+=1)if(\"gr\"===t[r].ty)e(t[r].it);else if(\"fl\"===t[r].ty||\"st\"===t[r].ty)if(t[r].c.k&&t[r].c.k[0].i)for(a=t[r].c.k.length,i=0;i<a;i+=1)t[r].c.k[i].s&&(t[r].c.k[i].s[0]/=255,t[r].c.k[i].s[1]/=255,t[r].c.k[i].s[2]/=255,t[r].c.k[i].s[3]/=255),t[r].c.k[i].e&&(t[r].c.k[i].e[0]/=255,t[r].c.k[i].e[1]/=255,t[r].c.k[i].e[2]/=255,t[r].c.k[i].e[3]/=255);else t[r].c.k[0]/=255,t[r].c.k[1]/=255,t[r].c.k[2]/=255,t[r].c.k[3]/=255}function r(t){var r,i=t.length;for(r=0;r<i;r+=1)4===t[r].ty&&e(t[r].shapes)}return function(e){if(a(t,e.v)&&(r(e.layers),e.assets)){var i,s=e.assets.length;for(i=0;i<s;i+=1)e.assets[i].layers&&r(e.assets[i].layers)}}}(),p=function(){var t=[4,4,18];function e(t){var r,i,a;for(r=t.length-1;r>=0;r-=1)if(\"sh\"===t[r].ty)if(t[r].ks.k.i)t[r].ks.k.c=t[r].closed;else for(a=t[r].ks.k.length,i=0;i<a;i+=1)t[r].ks.k[i].s&&(t[r].ks.k[i].s[0].c=t[r].closed),t[r].ks.k[i].e&&(t[r].ks.k[i].e[0].c=t[r].closed);else\"gr\"===t[r].ty&&e(t[r].it)}function r(t){var r,i,a,s,n,o,h=t.length;for(i=0;i<h;i+=1){if((r=t[i]).hasMask){var l=r.masksProperties;for(s=l.length,a=0;a<s;a+=1)if(l[a].pt.k.i)l[a].pt.k.c=l[a].cl;else for(o=l[a].pt.k.length,n=0;n<o;n+=1)l[a].pt.k[n].s&&(l[a].pt.k[n].s[0].c=l[a].cl),l[a].pt.k[n].e&&(l[a].pt.k[n].e[0].c=l[a].cl)}4===r.ty&&e(r.shapes)}}return function(e){if(a(t,e.v)&&(r(e.layers),e.assets)){var i,s=e.assets.length;for(i=0;i<s;i+=1)e.assets[i].layers&&r(e.assets[i].layers)}}}();function c(t){0!==t.t.a.length||\"m\"in t.t.p||(t.singleShape=!0)}var f={completeData:function(e){e.__complete||(l(e),n(e),o(e),h(e),p(e),t(e.layers,e.assets),e.__complete=!0)}};return f.checkColors=l,f.checkChars=o,f.checkPathProperties=h,f.checkShapes=p,f.completeLayers=t,f}()),_workerSelf.assetLoader||(_workerSelf.assetLoader=function(){function t(t){var e=t.getResponseHeader(\"content-type\");return e&&\"json\"===t.responseType&&-1!==e.indexOf(\"json\")||t.response&&\"object\"==typeof t.response?t.response:t.response&&\"string\"==typeof t.response?JSON.parse(t.response):t.responseText?JSON.parse(t.responseText):null}return{load:function(e,r,i,a){var s,n=new XMLHttpRequest;try{n.responseType=\"json\"}catch(t){}n.onreadystatechange=function(){if(4===n.readyState)if(200===n.status)s=t(n),i(s);else try{s=t(n),i(s)}catch(t){a&&a(t)}};try{n.open(\"GET\",e,!0)}catch(t){n.open(\"GET\",r+\"/\"+e,!0)}n.send()}}}()),\"loadAnimation\"===t.data.type)_workerSelf.assetLoader.load(t.data.path,t.data.fullPath,(function(e){_workerSelf.dataManager.completeData(e),_workerSelf.postMessage({id:t.data.id,payload:e,status:\"success\"})}),(function(){_workerSelf.postMessage({id:t.data.id,status:\"error\"})}));else if(\"complete\"===t.data.type){var e=t.data.animation;_workerSelf.dataManager.completeData(e),_workerSelf.postMessage({id:t.data.id,payload:e,status:\"success\"})}else\"loadData\"===t.data.type&&_workerSelf.assetLoader.load(t.data.path,t.data.fullPath,(function(e){_workerSelf.postMessage({id:t.data.id,payload:e,status:\"success\"})}),(function(){_workerSelf.postMessage({id:t.data.id,status:\"error\"})}))})),e.onmessage=function(t){var e=t.data,r=e.id,a=i[r];i[r]=null,\"success\"===e.status?a.onComplete(e.payload):a.onError&&a.onError()})}function n(t,e){var a=\"processId_\"+(r+=1);return i[a]={onComplete:t,onError:e},a}return{loadAnimation:function(t,r,i){s();var a=n(r,i);e.postMessage({type:\"loadAnimation\",path:t,fullPath:window.location.origin+window.location.pathname,id:a})},loadData:function(t,r,i){s();var a=n(r,i);e.postMessage({type:\"loadData\",path:t,fullPath:window.location.origin+window.location.pathname,id:a})},completeAnimation:function(t,r,i){s();var a=n(r,i);e.postMessage({type:\"complete\",animation:t,id:a})}}}();function getFontProperties(t){for(var e=t.fStyle?t.fStyle.split(\" \"):[],r=\"normal\",i=\"normal\",a=e.length,s=0;s<a;s+=1)switch(e[s].toLowerCase()){case\"italic\":i=\"italic\";break;case\"bold\":r=\"700\";break;case\"black\":r=\"900\";break;case\"medium\":r=\"500\";break;case\"regular\":case\"normal\":r=\"400\";break;case\"light\":case\"thin\":r=\"200\"}return{style:i,weight:t.fWeight||r}}var FontManager=function(){var t={w:0,size:0,shapes:[]},e=[];e=e.concat([2304,2305,2306,2307,2362,2363,2364,2364,2366,2367,2368,2369,2370,2371,2372,2373,2374,2375,2376,2377,2378,2379,2380,2381,2382,2383,2387,2388,2389,2390,2391,2402,2403]);var r=[\"d83cdffb\",\"d83cdffc\",\"d83cdffd\",\"d83cdffe\",\"d83cdfff\"],i=[65039,8205];function a(t,e){var r=createTag(\"span\");r.setAttribute(\"aria-hidden\",!0),r.style.fontFamily=e;var i=createTag(\"span\");i.innerText=\"giItT1WQy@!-/#\",r.style.position=\"absolute\",r.style.left=\"-10000px\",r.style.top=\"-10000px\",r.style.fontSize=\"300px\",r.style.fontVariant=\"normal\",r.style.fontStyle=\"normal\",r.style.fontWeight=\"normal\",r.style.letterSpacing=\"0\",r.appendChild(i),document.body.appendChild(r);var a=i.offsetWidth;return i.style.fontFamily=function(t){var e,r=t.split(\",\"),i=r.length,a=[];for(e=0;e<i;e+=1)\"sans-serif\"!==r[e]&&\"monospace\"!==r[e]&&a.push(r[e]);return a.join(\",\")}(t)+\", \"+e,{node:i,w:a,parent:r}}function s(t,e){var r=createNS(\"text\");r.style.fontSize=\"100px\";var i=getFontProperties(e);return r.setAttribute(\"font-family\",e.fFamily),r.setAttribute(\"font-style\",i.style),r.setAttribute(\"font-weight\",i.weight),r.textContent=\"1\",e.fClass?(r.style.fontFamily=\"inherit\",r.setAttribute(\"class\",e.fClass)):r.style.fontFamily=e.fFamily,t.appendChild(r),createTag(\"canvas\").getContext(\"2d\").font=e.fWeight+\" \"+e.fStyle+\" 100px \"+e.fFamily,r}var n=function(){this.fonts=[],this.chars=null,this.typekitLoaded=0,this.isLoaded=!1,this._warned=!1,this.initTime=Date.now(),this.setIsLoadedBinded=this.setIsLoaded.bind(this),this.checkLoadedFontsBinded=this.checkLoadedFonts.bind(this)};n.isModifier=function(t,e){var i=t.toString(16)+e.toString(16);return-1!==r.indexOf(i)},n.isZeroWidthJoiner=function(t,e){return e?t===i[0]&&e===i[1]:t===i[1]},n.isCombinedCharacter=function(t){return-1!==e.indexOf(t)};var o={addChars:function(t){if(t){var e;this.chars||(this.chars=[]);var r,i,a=t.length,s=this.chars.length;for(e=0;e<a;e+=1){for(r=0,i=!1;r<s;)this.chars[r].style===t[e].style&&this.chars[r].fFamily===t[e].fFamily&&this.chars[r].ch===t[e].ch&&(i=!0),r+=1;i||(this.chars.push(t[e]),s+=1)}}},addFonts:function(t,e){if(t){if(this.chars)return this.isLoaded=!0,void(this.fonts=t.list);var r,i=t.list,n=i.length,o=n;for(r=0;r<n;r+=1){var h,l,p=!0;if(i[r].loaded=!1,i[r].monoCase=a(i[r].fFamily,\"monospace\"),i[r].sansCase=a(i[r].fFamily,\"sans-serif\"),i[r].fPath){if(\"p\"===i[r].fOrigin||3===i[r].origin){if((h=document.querySelectorAll('style[f-forigin=\"p\"][f-family=\"'+i[r].fFamily+'\"], style[f-origin=\"3\"][f-family=\"'+i[r].fFamily+'\"]')).length>0&&(p=!1),p){var c=createTag(\"style\");c.setAttribute(\"f-forigin\",i[r].fOrigin),c.setAttribute(\"f-origin\",i[r].origin),c.setAttribute(\"f-family\",i[r].fFamily),c.type=\"text/css\",c.innerText=\"@font-face {font-family: \"+i[r].fFamily+\"; font-style: normal; src: url('\"+i[r].fPath+\"');}\",e.appendChild(c)}}else if(\"g\"===i[r].fOrigin||1===i[r].origin){for(h=document.querySelectorAll('link[f-forigin=\"g\"], link[f-origin=\"1\"]'),l=0;l<h.length;l+=1)-1!==h[l].href.indexOf(i[r].fPath)&&(p=!1);if(p){var f=createTag(\"link\");f.setAttribute(\"f-forigin\",i[r].fOrigin),f.setAttribute(\"f-origin\",i[r].origin),f.type=\"text/css\",f.rel=\"stylesheet\",f.href=i[r].fPath,document.body.appendChild(f)}}else if(\"t\"===i[r].fOrigin||2===i[r].origin){for(h=document.querySelectorAll('script[f-forigin=\"t\"], script[f-origin=\"2\"]'),l=0;l<h.length;l+=1)i[r].fPath===h[l].src&&(p=!1);if(p){var d=createTag(\"link\");d.setAttribute(\"f-forigin\",i[r].fOrigin),d.setAttribute(\"f-origin\",i[r].origin),d.setAttribute(\"rel\",\"stylesheet\"),d.setAttribute(\"href\",i[r].fPath),e.appendChild(d)}}}else i[r].loaded=!0,o-=1;i[r].helper=s(e,i[r]),i[r].cache={},this.fonts.push(i[r])}0===o?this.isLoaded=!0:setTimeout(this.checkLoadedFonts.bind(this),100)}else this.isLoaded=!0},getCharData:function(e,r,i){for(var a=0,s=this.chars.length;a<s;){if(this.chars[a].ch===e&&this.chars[a].style===r&&this.chars[a].fFamily===i)return this.chars[a];a+=1}return(\"string\"==typeof e&&13!==e.charCodeAt(0)||!e)&&console&&console.warn&&!this._warned&&(this._warned=!0,console.warn(\"Missing character from exported characters list: \",e,r,i)),t},getFontByName:function(t){for(var e=0,r=this.fonts.length;e<r;){if(this.fonts[e].fName===t)return this.fonts[e];e+=1}return this.fonts[0]},measureText:function(t,e,r){var i=this.getFontByName(e),a=t.charCodeAt(0);if(!i.cache[a+1]){var s=i.helper;if(\" \"===t){s.textContent=\"|\"+t+\"|\";var n=s.getComputedTextLength();s.textContent=\"||\";var o=s.getComputedTextLength();i.cache[a+1]=(n-o)/100}else s.textContent=t,i.cache[a+1]=s.getComputedTextLength()/100}return i.cache[a+1]*r},checkLoadedFonts:function(){var t,e,r,i=this.fonts.length,a=i;for(t=0;t<i;t+=1)this.fonts[t].loaded?a-=1:\"n\"===this.fonts[t].fOrigin||0===this.fonts[t].origin?this.fonts[t].loaded=!0:(e=this.fonts[t].monoCase.node,r=this.fonts[t].monoCase.w,e.offsetWidth!==r?(a-=1,this.fonts[t].loaded=!0):(e=this.fonts[t].sansCase.node,r=this.fonts[t].sansCase.w,e.offsetWidth!==r&&(a-=1,this.fonts[t].loaded=!0)),this.fonts[t].loaded&&(this.fonts[t].sansCase.parent.parentNode.removeChild(this.fonts[t].sansCase.parent),this.fonts[t].monoCase.parent.parentNode.removeChild(this.fonts[t].monoCase.parent)));0!==a&&Date.now()-this.initTime<5e3?setTimeout(this.checkLoadedFontsBinded,20):setTimeout(this.setIsLoadedBinded,10)},setIsLoaded:function(){this.isLoaded=!0}};return n.prototype=o,n}(),PropertyFactory=function(){var t=initialDefaultFrame,e=Math.abs;function r(t,e){var r,a=this.offsetTime;\"multidimensional\"===this.propType&&(r=createTypedArray(\"float32\",this.pv.length));for(var s,n,o,h,l,p,c,f,d,m=e.lastIndex,u=m,y=this.keyframes.length-1,g=!0;g;){if(s=this.keyframes[u],n=this.keyframes[u+1],u===y-1&&t>=n.t-a){s.h&&(s=n),m=0;break}if(n.t-a>t){m=u;break}u<y-1?u+=1:(m=0,g=!1)}o=this.keyframesMetadata[u]||{};var v,b,_,P,E,S,x,A,w,C,k=n.t-a,T=s.t-a;if(s.to){o.bezierData||(o.bezierData=bez.buildBezierData(s.s,n.s||s.e,s.to,s.ti));var D=o.bezierData;if(t>=k||t<T){var M=t>=k?D.points.length-1:0;for(l=D.points[M].point.length,h=0;h<l;h+=1)r[h]=D.points[M].point[h]}else{o.__fnct?d=o.__fnct:(d=BezierFactory.getBezierEasing(s.o.x,s.o.y,s.i.x,s.i.y,s.n).get,o.__fnct=d),p=d((t-T)/(k-T));var F,I=D.segmentLength*p,R=e.lastFrame<t&&e._lastKeyframeIndex===u?e._lastAddedLength:0;for(f=e.lastFrame<t&&e._lastKeyframeIndex===u?e._lastPoint:0,g=!0,c=D.points.length;g;){if(R+=D.points[f].partialLength,0===I||0===p||f===D.points.length-1){for(l=D.points[f].point.length,h=0;h<l;h+=1)r[h]=D.points[f].point[h];break}if(I>=R&&I<R+D.points[f+1].partialLength){for(F=(I-R)/D.points[f+1].partialLength,l=D.points[f].point.length,h=0;h<l;h+=1)r[h]=D.points[f].point[h]+(D.points[f+1].point[h]-D.points[f].point[h])*F;break}f<c-1?f+=1:g=!1}e._lastPoint=f,e._lastAddedLength=R-D.points[f].partialLength,e._lastKeyframeIndex=u}}else{var V,O,L,B,$;if(y=s.s.length,v=n.s||s.e,this.sh&&1!==s.h)if(t>=k)r[0]=v[0],r[1]=v[1],r[2]=v[2];else if(t<=T)r[0]=s.s[0],r[1]=s.s[1],r[2]=s.s[2];else{var z=i(s.s),G=i(v);b=r,_=function(t,e,r){var i,a,s,n,o,h=[],l=t[0],p=t[1],c=t[2],f=t[3],d=e[0],m=e[1],u=e[2],y=e[3];return(a=l*d+p*m+c*u+f*y)<0&&(a=-a,d=-d,m=-m,u=-u,y=-y),1-a>1e-6?(i=Math.acos(a),s=Math.sin(i),n=Math.sin((1-r)*i)/s,o=Math.sin(r*i)/s):(n=1-r,o=r),h[0]=n*l+o*d,h[1]=n*p+o*m,h[2]=n*c+o*u,h[3]=n*f+o*y,h}(z,G,(t-T)/(k-T)),P=_[0],E=_[1],S=_[2],x=_[3],A=Math.atan2(2*E*x-2*P*S,1-2*E*E-2*S*S),w=Math.asin(2*P*E+2*S*x),C=Math.atan2(2*P*x-2*E*S,1-2*P*P-2*S*S),b[0]=A/degToRads,b[1]=w/degToRads,b[2]=C/degToRads}else for(u=0;u<y;u+=1)1!==s.h&&(t>=k?p=1:t<T?p=0:(s.o.x.constructor===Array?(o.__fnct||(o.__fnct=[]),o.__fnct[u]?d=o.__fnct[u]:(V=void 0===s.o.x[u]?s.o.x[0]:s.o.x[u],O=void 0===s.o.y[u]?s.o.y[0]:s.o.y[u],L=void 0===s.i.x[u]?s.i.x[0]:s.i.x[u],B=void 0===s.i.y[u]?s.i.y[0]:s.i.y[u],d=BezierFactory.getBezierEasing(V,O,L,B).get,o.__fnct[u]=d)):o.__fnct?d=o.__fnct:(V=s.o.x,O=s.o.y,L=s.i.x,B=s.i.y,d=BezierFactory.getBezierEasing(V,O,L,B).get,s.keyframeMetadata=d),p=d((t-T)/(k-T)))),v=n.s||s.e,$=1===s.h?s.s[u]:s.s[u]+(v[u]-s.s[u])*p,\"multidimensional\"===this.propType?r[u]=$:r=$}return e.lastIndex=m,r}function i(t){var e=t[0]*degToRads,r=t[1]*degToRads,i=t[2]*degToRads,a=Math.cos(e/2),s=Math.cos(r/2),n=Math.cos(i/2),o=Math.sin(e/2),h=Math.sin(r/2),l=Math.sin(i/2);return[o*h*n+a*s*l,o*s*n+a*h*l,a*h*n-o*s*l,a*s*n-o*h*l]}function a(){var e=this.comp.renderedFrame-this.offsetTime,r=this.keyframes[0].t-this.offsetTime,i=this.keyframes[this.keyframes.length-1].t-this.offsetTime;if(!(e===this._caching.lastFrame||this._caching.lastFrame!==t&&(this._caching.lastFrame>=i&&e>=i||this._caching.lastFrame<r&&e<r))){this._caching.lastFrame>=e&&(this._caching._lastKeyframeIndex=-1,this._caching.lastIndex=0);var a=this.interpolateValue(e,this._caching);this.pv=a}return this._caching.lastFrame=e,this.pv}function s(t){var r;if(\"unidimensional\"===this.propType)r=t*this.mult,e(this.v-r)>1e-5&&(this.v=r,this._mdf=!0);else for(var i=0,a=this.v.length;i<a;)r=t[i]*this.mult,e(this.v[i]-r)>1e-5&&(this.v[i]=r,this._mdf=!0),i+=1}function n(){if(this.elem.globalData.frameId!==this.frameId&&this.effectsSequence.length)if(this.lock)this.setVValue(this.pv);else{var t;this.lock=!0,this._mdf=this._isFirstFrame;var e=this.effectsSequence.length,r=this.kf?this.pv:this.data.k;for(t=0;t<e;t+=1)r=this.effectsSequence[t](r);this.setVValue(r),this._isFirstFrame=!1,this.lock=!1,this.frameId=this.elem.globalData.frameId}}function o(t){this.effectsSequence.push(t),this.container.addDynamicProperty(this)}function h(t,e,r,i){this.propType=\"unidimensional\",this.mult=r||1,this.data=e,this.v=r?e.k*r:e.k,this.pv=e.k,this._mdf=!1,this.elem=t,this.container=i,this.comp=t.comp,this.k=!1,this.kf=!1,this.vel=0,this.effectsSequence=[],this._isFirstFrame=!0,this.getValue=n,this.setVValue=s,this.addEffect=o}function l(t,e,r,i){var a;this.propType=\"multidimensional\",this.mult=r||1,this.data=e,this._mdf=!1,this.elem=t,this.container=i,this.comp=t.comp,this.k=!1,this.kf=!1,this.frameId=-1;var h=e.k.length;for(this.v=createTypedArray(\"float32\",h),this.pv=createTypedArray(\"float32\",h),this.vel=createTypedArray(\"float32\",h),a=0;a<h;a+=1)this.v[a]=e.k[a]*this.mult,this.pv[a]=e.k[a];this._isFirstFrame=!0,this.effectsSequence=[],this.getValue=n,this.setVValue=s,this.addEffect=o}function p(e,i,h,l){this.propType=\"unidimensional\",this.keyframes=i.k,this.keyframesMetadata=[],this.offsetTime=e.data.st,this.frameId=-1,this._caching={lastFrame:t,lastIndex:0,value:0,_lastKeyframeIndex:-1},this.k=!0,this.kf=!0,this.data=i,this.mult=h||1,this.elem=e,this.container=l,this.comp=e.comp,this.v=t,this.pv=t,this._isFirstFrame=!0,this.getValue=n,this.setVValue=s,this.interpolateValue=r,this.effectsSequence=[a.bind(this)],this.addEffect=o}function c(e,i,h,l){var p;this.propType=\"multidimensional\";var c,f,d,m,u=i.k.length;for(p=0;p<u-1;p+=1)i.k[p].to&&i.k[p].s&&i.k[p+1]&&i.k[p+1].s&&(c=i.k[p].s,f=i.k[p+1].s,d=i.k[p].to,m=i.k[p].ti,(2===c.length&&(c[0]!==f[0]||c[1]!==f[1])&&bez.pointOnLine2D(c[0],c[1],f[0],f[1],c[0]+d[0],c[1]+d[1])&&bez.pointOnLine2D(c[0],c[1],f[0],f[1],f[0]+m[0],f[1]+m[1])||3===c.length&&(c[0]!==f[0]||c[1]!==f[1]||c[2]!==f[2])&&bez.pointOnLine3D(c[0],c[1],c[2],f[0],f[1],f[2],c[0]+d[0],c[1]+d[1],c[2]+d[2])&&bez.pointOnLine3D(c[0],c[1],c[2],f[0],f[1],f[2],f[0]+m[0],f[1]+m[1],f[2]+m[2]))&&(i.k[p].to=null,i.k[p].ti=null),c[0]===f[0]&&c[1]===f[1]&&0===d[0]&&0===d[1]&&0===m[0]&&0===m[1]&&(2===c.length||c[2]===f[2]&&0===d[2]&&0===m[2])&&(i.k[p].to=null,i.k[p].ti=null));this.effectsSequence=[a.bind(this)],this.data=i,this.keyframes=i.k,this.keyframesMetadata=[],this.offsetTime=e.data.st,this.k=!0,this.kf=!0,this._isFirstFrame=!0,this.mult=h||1,this.elem=e,this.container=l,this.comp=e.comp,this.getValue=n,this.setVValue=s,this.interpolateValue=r,this.frameId=-1;var y=i.k[0].s.length;for(this.v=createTypedArray(\"float32\",y),this.pv=createTypedArray(\"float32\",y),p=0;p<y;p+=1)this.v[p]=t,this.pv[p]=t;this._caching={lastFrame:t,lastIndex:0,value:createTypedArray(\"float32\",y)},this.addEffect=o}var f={getProp:function(t,e,r,i,a){var s;if(e.k.length)if(\"number\"==typeof e.k[0])s=new l(t,e,i,a);else switch(r){case 0:s=new p(t,e,i,a);break;case 1:s=new c(t,e,i,a)}else s=new h(t,e,i,a);return s.effectsSequence.length&&a.addDynamicProperty(s),s}};return f}(),TransformPropertyFactory=function(){var t=[0,0];function e(t,e,r){if(this.elem=t,this.frameId=-1,this.propType=\"transform\",this.data=e,this.v=new Matrix,this.pre=new Matrix,this.appliedTransformations=0,this.initDynamicPropertyContainer(r||t),e.p&&e.p.s?(this.px=PropertyFactory.getProp(t,e.p.x,0,0,this),this.py=PropertyFactory.getProp(t,e.p.y,0,0,this),e.p.z&&(this.pz=PropertyFactory.getProp(t,e.p.z,0,0,this))):this.p=PropertyFactory.getProp(t,e.p||{k:[0,0,0]},1,0,this),e.rx){if(this.rx=PropertyFactory.getProp(t,e.rx,0,degToRads,this),this.ry=PropertyFactory.getProp(t,e.ry,0,degToRads,this),this.rz=PropertyFactory.getProp(t,e.rz,0,degToRads,this),e.or.k[0].ti){var i,a=e.or.k.length;for(i=0;i<a;i+=1)e.or.k[i].to=null,e.or.k[i].ti=null}this.or=PropertyFactory.getProp(t,e.or,1,degToRads,this),this.or.sh=!0}else this.r=PropertyFactory.getProp(t,e.r||{k:0},0,degToRads,this);e.sk&&(this.sk=PropertyFactory.getProp(t,e.sk,0,degToRads,this),this.sa=PropertyFactory.getProp(t,e.sa,0,degToRads,this)),this.a=PropertyFactory.getProp(t,e.a||{k:[0,0,0]},1,0,this),this.s=PropertyFactory.getProp(t,e.s||{k:[100,100,100]},1,.01,this),e.o?this.o=PropertyFactory.getProp(t,e.o,0,.01,t):this.o={_mdf:!1,v:1},this._isDirty=!0,this.dynamicProperties.length||this.getValue(!0)}return e.prototype={applyToMatrix:function(t){var e=this._mdf;this.iterateDynamicProperties(),this._mdf=this._mdf||e,this.a&&t.translate(-this.a.v[0],-this.a.v[1],this.a.v[2]),this.s&&t.scale(this.s.v[0],this.s.v[1],this.s.v[2]),this.sk&&t.skewFromAxis(-this.sk.v,this.sa.v),this.r?t.rotate(-this.r.v):t.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2]).rotateY(this.or.v[1]).rotateX(this.or.v[0]),this.data.p.s?this.data.p.z?t.translate(this.px.v,this.py.v,-this.pz.v):t.translate(this.px.v,this.py.v,0):t.translate(this.p.v[0],this.p.v[1],-this.p.v[2])},getValue:function(e){if(this.elem.globalData.frameId!==this.frameId){if(this._isDirty&&(this.precalculateMatrix(),this._isDirty=!1),this.iterateDynamicProperties(),this._mdf||e){var r;if(this.v.cloneFromProps(this.pre.props),this.appliedTransformations<1&&this.v.translate(-this.a.v[0],-this.a.v[1],this.a.v[2]),this.appliedTransformations<2&&this.v.scale(this.s.v[0],this.s.v[1],this.s.v[2]),this.sk&&this.appliedTransformations<3&&this.v.skewFromAxis(-this.sk.v,this.sa.v),this.r&&this.appliedTransformations<4?this.v.rotate(-this.r.v):!this.r&&this.appliedTransformations<4&&this.v.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2]).rotateY(this.or.v[1]).rotateX(this.or.v[0]),this.autoOriented){var i,a;if(r=this.elem.globalData.frameRate,this.p&&this.p.keyframes&&this.p.getValueAtTime)this.p._caching.lastFrame+this.p.offsetTime<=this.p.keyframes[0].t?(i=this.p.getValueAtTime((this.p.keyframes[0].t+.01)/r,0),a=this.p.getValueAtTime(this.p.keyframes[0].t/r,0)):this.p._caching.lastFrame+this.p.offsetTime>=this.p.keyframes[this.p.keyframes.length-1].t?(i=this.p.getValueAtTime(this.p.keyframes[this.p.keyframes.length-1].t/r,0),a=this.p.getValueAtTime((this.p.keyframes[this.p.keyframes.length-1].t-.05)/r,0)):(i=this.p.pv,a=this.p.getValueAtTime((this.p._caching.lastFrame+this.p.offsetTime-.01)/r,this.p.offsetTime));else if(this.px&&this.px.keyframes&&this.py.keyframes&&this.px.getValueAtTime&&this.py.getValueAtTime){i=[],a=[];var s=this.px,n=this.py;s._caching.lastFrame+s.offsetTime<=s.keyframes[0].t?(i[0]=s.getValueAtTime((s.keyframes[0].t+.01)/r,0),i[1]=n.getValueAtTime((n.keyframes[0].t+.01)/r,0),a[0]=s.getValueAtTime(s.keyframes[0].t/r,0),a[1]=n.getValueAtTime(n.keyframes[0].t/r,0)):s._caching.lastFrame+s.offsetTime>=s.keyframes[s.keyframes.length-1].t?(i[0]=s.getValueAtTime(s.keyframes[s.keyframes.length-1].t/r,0),i[1]=n.getValueAtTime(n.keyframes[n.keyframes.length-1].t/r,0),a[0]=s.getValueAtTime((s.keyframes[s.keyframes.length-1].t-.01)/r,0),a[1]=n.getValueAtTime((n.keyframes[n.keyframes.length-1].t-.01)/r,0)):(i=[s.pv,n.pv],a[0]=s.getValueAtTime((s._caching.lastFrame+s.offsetTime-.01)/r,s.offsetTime),a[1]=n.getValueAtTime((n._caching.lastFrame+n.offsetTime-.01)/r,n.offsetTime))}else i=a=t;this.v.rotate(-Math.atan2(i[1]-a[1],i[0]-a[0]))}this.data.p&&this.data.p.s?this.data.p.z?this.v.translate(this.px.v,this.py.v,-this.pz.v):this.v.translate(this.px.v,this.py.v,0):this.v.translate(this.p.v[0],this.p.v[1],-this.p.v[2])}this.frameId=this.elem.globalData.frameId}},precalculateMatrix:function(){if(!this.a.k&&(this.pre.translate(-this.a.v[0],-this.a.v[1],this.a.v[2]),this.appliedTransformations=1,!this.s.effectsSequence.length)){if(this.pre.scale(this.s.v[0],this.s.v[1],this.s.v[2]),this.appliedTransformations=2,this.sk){if(this.sk.effectsSequence.length||this.sa.effectsSequence.length)return;this.pre.skewFromAxis(-this.sk.v,this.sa.v),this.appliedTransformations=3}this.r?this.r.effectsSequence.length||(this.pre.rotate(-this.r.v),this.appliedTransformations=4):this.rz.effectsSequence.length||this.ry.effectsSequence.length||this.rx.effectsSequence.length||this.or.effectsSequence.length||(this.pre.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2]).rotateY(this.or.v[1]).rotateX(this.or.v[0]),this.appliedTransformations=4)}},autoOrient:function(){}},extendPrototype([DynamicPropertyContainer],e),e.prototype.addDynamicProperty=function(t){this._addDynamicProperty(t),this.elem.addDynamicProperty(t),this._isDirty=!0},e.prototype._addDynamicProperty=DynamicPropertyContainer.prototype.addDynamicProperty,{getTransformProperty:function(t,r,i){return new e(t,r,i)}}}();function ShapePath(){this.c=!1,this._length=0,this._maxLength=8,this.v=createSizedArray(this._maxLength),this.o=createSizedArray(this._maxLength),this.i=createSizedArray(this._maxLength)}ShapePath.prototype.setPathData=function(t,e){this.c=t,this.setLength(e);for(var r=0;r<e;)this.v[r]=pointPool.newElement(),this.o[r]=pointPool.newElement(),this.i[r]=pointPool.newElement(),r+=1},ShapePath.prototype.setLength=function(t){for(;this._maxLength<t;)this.doubleArrayLength();this._length=t},ShapePath.prototype.doubleArrayLength=function(){this.v=this.v.concat(createSizedArray(this._maxLength)),this.i=this.i.concat(createSizedArray(this._maxLength)),this.o=this.o.concat(createSizedArray(this._maxLength)),this._maxLength*=2},ShapePath.prototype.setXYAt=function(t,e,r,i,a){var s;switch(this._length=Math.max(this._length,i+1),this._length>=this._maxLength&&this.doubleArrayLength(),r){case\"v\":s=this.v;break;case\"i\":s=this.i;break;case\"o\":s=this.o;break;default:s=[]}(!s[i]||s[i]&&!a)&&(s[i]=pointPool.newElement()),s[i][0]=t,s[i][1]=e},ShapePath.prototype.setTripleAt=function(t,e,r,i,a,s,n,o){this.setXYAt(t,e,\"v\",n,o),this.setXYAt(r,i,\"o\",n,o),this.setXYAt(a,s,\"i\",n,o)},ShapePath.prototype.reverse=function(){var t=new ShapePath;t.setPathData(this.c,this._length);var e=this.v,r=this.o,i=this.i,a=0;this.c&&(t.setTripleAt(e[0][0],e[0][1],i[0][0],i[0][1],r[0][0],r[0][1],0,!1),a=1);var s,n=this._length-1,o=this._length;for(s=a;s<o;s+=1)t.setTripleAt(e[n][0],e[n][1],i[n][0],i[n][1],r[n][0],r[n][1],s,!1),n-=1;return t};var ShapePropertyFactory=function(){var t=-999999;function e(t,e,r){var i,a,s,n,o,h,l,p,c,f=r.lastIndex,d=this.keyframes;if(t<d[0].t-this.offsetTime)i=d[0].s[0],s=!0,f=0;else if(t>=d[d.length-1].t-this.offsetTime)i=d[d.length-1].s?d[d.length-1].s[0]:d[d.length-2].e[0],s=!0;else{for(var m,u,y,g=f,v=d.length-1,b=!0;b&&(m=d[g],!((u=d[g+1]).t-this.offsetTime>t));)g<v-1?g+=1:b=!1;if(y=this.keyframesMetadata[g]||{},f=g,!(s=1===m.h)){if(t>=u.t-this.offsetTime)p=1;else if(t<m.t-this.offsetTime)p=0;else{var _;y.__fnct?_=y.__fnct:(_=BezierFactory.getBezierEasing(m.o.x,m.o.y,m.i.x,m.i.y).get,y.__fnct=_),p=_((t-(m.t-this.offsetTime))/(u.t-this.offsetTime-(m.t-this.offsetTime)))}a=u.s?u.s[0]:m.e[0]}i=m.s[0]}for(h=e._length,l=i.i[0].length,r.lastIndex=f,n=0;n<h;n+=1)for(o=0;o<l;o+=1)c=s?i.i[n][o]:i.i[n][o]+(a.i[n][o]-i.i[n][o])*p,e.i[n][o]=c,c=s?i.o[n][o]:i.o[n][o]+(a.o[n][o]-i.o[n][o])*p,e.o[n][o]=c,c=s?i.v[n][o]:i.v[n][o]+(a.v[n][o]-i.v[n][o])*p,e.v[n][o]=c}function r(){var e=this.comp.renderedFrame-this.offsetTime,r=this.keyframes[0].t-this.offsetTime,i=this.keyframes[this.keyframes.length-1].t-this.offsetTime,a=this._caching.lastFrame;return a!==t&&(a<r&&e<r||a>i&&e>i)||(this._caching.lastIndex=a<e?this._caching.lastIndex:0,this.interpolateShape(e,this.pv,this._caching)),this._caching.lastFrame=e,this.pv}function i(){this.paths=this.localShapeCollection}function a(t){(function(t,e){if(t._length!==e._length||t.c!==e.c)return!1;var r,i=t._length;for(r=0;r<i;r+=1)if(t.v[r][0]!==e.v[r][0]||t.v[r][1]!==e.v[r][1]||t.o[r][0]!==e.o[r][0]||t.o[r][1]!==e.o[r][1]||t.i[r][0]!==e.i[r][0]||t.i[r][1]!==e.i[r][1])return!1;return!0})(this.v,t)||(this.v=shapePool.clone(t),this.localShapeCollection.releaseShapes(),this.localShapeCollection.addShape(this.v),this._mdf=!0,this.paths=this.localShapeCollection)}function s(){if(this.elem.globalData.frameId!==this.frameId)if(this.effectsSequence.length)if(this.lock)this.setVValue(this.pv);else{var t,e;this.lock=!0,this._mdf=!1,t=this.kf?this.pv:this.data.ks?this.data.ks.k:this.data.pt.k;var r=this.effectsSequence.length;for(e=0;e<r;e+=1)t=this.effectsSequence[e](t);this.setVValue(t),this.lock=!1,this.frameId=this.elem.globalData.frameId}else this._mdf=!1}function n(t,e,r){this.propType=\"shape\",this.comp=t.comp,this.container=t,this.elem=t,this.data=e,this.k=!1,this.kf=!1,this._mdf=!1;var a=3===r?e.pt.k:e.ks.k;this.v=shapePool.clone(a),this.pv=shapePool.clone(this.v),this.localShapeCollection=shapeCollectionPool.newShapeCollection(),this.paths=this.localShapeCollection,this.paths.addShape(this.v),this.reset=i,this.effectsSequence=[]}function o(t){this.effectsSequence.push(t),this.container.addDynamicProperty(this)}function h(e,a,s){this.propType=\"shape\",this.comp=e.comp,this.elem=e,this.container=e,this.offsetTime=e.data.st,this.keyframes=3===s?a.pt.k:a.ks.k,this.keyframesMetadata=[],this.k=!0,this.kf=!0;var n=this.keyframes[0].s[0].i.length;this.v=shapePool.newElement(),this.v.setPathData(this.keyframes[0].s[0].c,n),this.pv=shapePool.clone(this.v),this.localShapeCollection=shapeCollectionPool.newShapeCollection(),this.paths=this.localShapeCollection,this.paths.addShape(this.v),this.lastFrame=t,this.reset=i,this._caching={lastFrame:t,lastIndex:0},this.effectsSequence=[r.bind(this)]}n.prototype.interpolateShape=e,n.prototype.getValue=s,n.prototype.setVValue=a,n.prototype.addEffect=o,h.prototype.getValue=s,h.prototype.interpolateShape=e,h.prototype.setVValue=a,h.prototype.addEffect=o;var l=function(){var t=roundCorner;function e(t,e){this.v=shapePool.newElement(),this.v.setPathData(!0,4),this.localShapeCollection=shapeCollectionPool.newShapeCollection(),this.paths=this.localShapeCollection,this.localShapeCollection.addShape(this.v),this.d=e.d,this.elem=t,this.comp=t.comp,this.frameId=-1,this.initDynamicPropertyContainer(t),this.p=PropertyFactory.getProp(t,e.p,1,0,this),this.s=PropertyFactory.getProp(t,e.s,1,0,this),this.dynamicProperties.length?this.k=!0:(this.k=!1,this.convertEllToPath())}return e.prototype={reset:i,getValue:function(){this.elem.globalData.frameId!==this.frameId&&(this.frameId=this.elem.globalData.frameId,this.iterateDynamicProperties(),this._mdf&&this.convertEllToPath())},convertEllToPath:function(){var e=this.p.v[0],r=this.p.v[1],i=this.s.v[0]/2,a=this.s.v[1]/2,s=3!==this.d,n=this.v;n.v[0][0]=e,n.v[0][1]=r-a,n.v[1][0]=s?e+i:e-i,n.v[1][1]=r,n.v[2][0]=e,n.v[2][1]=r+a,n.v[3][0]=s?e-i:e+i,n.v[3][1]=r,n.i[0][0]=s?e-i*t:e+i*t,n.i[0][1]=r-a,n.i[1][0]=s?e+i:e-i,n.i[1][1]=r-a*t,n.i[2][0]=s?e+i*t:e-i*t,n.i[2][1]=r+a,n.i[3][0]=s?e-i:e+i,n.i[3][1]=r+a*t,n.o[0][0]=s?e+i*t:e-i*t,n.o[0][1]=r-a,n.o[1][0]=s?e+i:e-i,n.o[1][1]=r+a*t,n.o[2][0]=s?e-i*t:e+i*t,n.o[2][1]=r+a,n.o[3][0]=s?e-i:e+i,n.o[3][1]=r-a*t}},extendPrototype([DynamicPropertyContainer],e),e}(),p=function(){function t(t,e){this.v=shapePool.newElement(),this.v.setPathData(!0,0),this.elem=t,this.comp=t.comp,this.data=e,this.frameId=-1,this.d=e.d,this.initDynamicPropertyContainer(t),1===e.sy?(this.ir=PropertyFactory.getProp(t,e.ir,0,0,this),this.is=PropertyFactory.getProp(t,e.is,0,.01,this),this.convertToPath=this.convertStarToPath):this.convertToPath=this.convertPolygonToPath,this.pt=PropertyFactory.getProp(t,e.pt,0,0,this),this.p=PropertyFactory.getProp(t,e.p,1,0,this),this.r=PropertyFactory.getProp(t,e.r,0,degToRads,this),this.or=PropertyFactory.getProp(t,e.or,0,0,this),this.os=PropertyFactory.getProp(t,e.os,0,.01,this),this.localShapeCollection=shapeCollectionPool.newShapeCollection(),this.localShapeCollection.addShape(this.v),this.paths=this.localShapeCollection,this.dynamicProperties.length?this.k=!0:(this.k=!1,this.convertToPath())}return t.prototype={reset:i,getValue:function(){this.elem.globalData.frameId!==this.frameId&&(this.frameId=this.elem.globalData.frameId,this.iterateDynamicProperties(),this._mdf&&this.convertToPath())},convertStarToPath:function(){var t,e,r,i,a=2*Math.floor(this.pt.v),s=2*Math.PI/a,n=!0,o=this.or.v,h=this.ir.v,l=this.os.v,p=this.is.v,c=2*Math.PI*o/(2*a),f=2*Math.PI*h/(2*a),d=-Math.PI/2;d+=this.r.v;var m=3===this.data.d?-1:1;for(this.v._length=0,t=0;t<a;t+=1){r=n?l:p,i=n?c:f;var u=(e=n?o:h)*Math.cos(d),y=e*Math.sin(d),g=0===u&&0===y?0:y/Math.sqrt(u*u+y*y),v=0===u&&0===y?0:-u/Math.sqrt(u*u+y*y);u+=+this.p.v[0],y+=+this.p.v[1],this.v.setTripleAt(u,y,u-g*i*r*m,y-v*i*r*m,u+g*i*r*m,y+v*i*r*m,t,!0),n=!n,d+=s*m}},convertPolygonToPath:function(){var t,e=Math.floor(this.pt.v),r=2*Math.PI/e,i=this.or.v,a=this.os.v,s=2*Math.PI*i/(4*e),n=.5*-Math.PI,o=3===this.data.d?-1:1;for(n+=this.r.v,this.v._length=0,t=0;t<e;t+=1){var h=i*Math.cos(n),l=i*Math.sin(n),p=0===h&&0===l?0:l/Math.sqrt(h*h+l*l),c=0===h&&0===l?0:-h/Math.sqrt(h*h+l*l);h+=+this.p.v[0],l+=+this.p.v[1],this.v.setTripleAt(h,l,h-p*s*a*o,l-c*s*a*o,h+p*s*a*o,l+c*s*a*o,t,!0),n+=r*o}this.paths.length=0,this.paths[0]=this.v}},extendPrototype([DynamicPropertyContainer],t),t}(),c=function(){function t(t,e){this.v=shapePool.newElement(),this.v.c=!0,this.localShapeCollection=shapeCollectionPool.newShapeCollection(),this.localShapeCollection.addShape(this.v),this.paths=this.localShapeCollection,this.elem=t,this.comp=t.comp,this.frameId=-1,this.d=e.d,this.initDynamicPropertyContainer(t),this.p=PropertyFactory.getProp(t,e.p,1,0,this),this.s=PropertyFactory.getProp(t,e.s,1,0,this),this.r=PropertyFactory.getProp(t,e.r,0,0,this),this.dynamicProperties.length?this.k=!0:(this.k=!1,this.convertRectToPath())}return t.prototype={convertRectToPath:function(){var t=this.p.v[0],e=this.p.v[1],r=this.s.v[0]/2,i=this.s.v[1]/2,a=bmMin(r,i,this.r.v),s=a*(1-roundCorner);this.v._length=0,2===this.d||1===this.d?(this.v.setTripleAt(t+r,e-i+a,t+r,e-i+a,t+r,e-i+s,0,!0),this.v.setTripleAt(t+r,e+i-a,t+r,e+i-s,t+r,e+i-a,1,!0),0!==a?(this.v.setTripleAt(t+r-a,e+i,t+r-a,e+i,t+r-s,e+i,2,!0),this.v.setTripleAt(t-r+a,e+i,t-r+s,e+i,t-r+a,e+i,3,!0),this.v.setTripleAt(t-r,e+i-a,t-r,e+i-a,t-r,e+i-s,4,!0),this.v.setTripleAt(t-r,e-i+a,t-r,e-i+s,t-r,e-i+a,5,!0),this.v.setTripleAt(t-r+a,e-i,t-r+a,e-i,t-r+s,e-i,6,!0),this.v.setTripleAt(t+r-a,e-i,t+r-s,e-i,t+r-a,e-i,7,!0)):(this.v.setTripleAt(t-r,e+i,t-r+s,e+i,t-r,e+i,2),this.v.setTripleAt(t-r,e-i,t-r,e-i+s,t-r,e-i,3))):(this.v.setTripleAt(t+r,e-i+a,t+r,e-i+s,t+r,e-i+a,0,!0),0!==a?(this.v.setTripleAt(t+r-a,e-i,t+r-a,e-i,t+r-s,e-i,1,!0),this.v.setTripleAt(t-r+a,e-i,t-r+s,e-i,t-r+a,e-i,2,!0),this.v.setTripleAt(t-r,e-i+a,t-r,e-i+a,t-r,e-i+s,3,!0),this.v.setTripleAt(t-r,e+i-a,t-r,e+i-s,t-r,e+i-a,4,!0),this.v.setTripleAt(t-r+a,e+i,t-r+a,e+i,t-r+s,e+i,5,!0),this.v.setTripleAt(t+r-a,e+i,t+r-s,e+i,t+r-a,e+i,6,!0),this.v.setTripleAt(t+r,e+i-a,t+r,e+i-a,t+r,e+i-s,7,!0)):(this.v.setTripleAt(t-r,e-i,t-r+s,e-i,t-r,e-i,1,!0),this.v.setTripleAt(t-r,e+i,t-r,e+i-s,t-r,e+i,2,!0),this.v.setTripleAt(t+r,e+i,t+r-s,e+i,t+r,e+i,3,!0)))},getValue:function(){this.elem.globalData.frameId!==this.frameId&&(this.frameId=this.elem.globalData.frameId,this.iterateDynamicProperties(),this._mdf&&this.convertRectToPath())},reset:i},extendPrototype([DynamicPropertyContainer],t),t}(),f={getShapeProp:function(t,e,r){var i;return 3===r||4===r?i=(3===r?e.pt:e.ks).k.length?new h(t,e,r):new n(t,e,r):5===r?i=new c(t,e):6===r?i=new l(t,e):7===r&&(i=new p(t,e)),i.k&&t.addDynamicProperty(i),i},getConstructorFunction:function(){return n},getKeyframedConstructorFunction:function(){return h}};return f}(),ShapeModifiers=(ob={},modifiers={},ob.registerModifier=function(t,e){modifiers[t]||(modifiers[t]=e)},ob.getModifier=function(t,e,r){return new modifiers[t](e,r)},ob),ob,modifiers;function ShapeModifier(){}function TrimModifier(){}function RoundCornersModifier(){}function PuckerAndBloatModifier(){}function RepeaterModifier(){}function ShapeCollection(){this._length=0,this._maxLength=4,this.shapes=createSizedArray(this._maxLength)}function DashProperty(t,e,r,i){var a;this.elem=t,this.frameId=-1,this.dataProps=createSizedArray(e.length),this.renderer=r,this.k=!1,this.dashStr=\"\",this.dashArray=createTypedArray(\"float32\",e.length?e.length-1:0),this.dashoffset=createTypedArray(\"float32\",1),this.initDynamicPropertyContainer(i);var s,n=e.length||0;for(a=0;a<n;a+=1)s=PropertyFactory.getProp(t,e[a].v,0,0,this),this.k=s.k||this.k,this.dataProps[a]={n:e[a].n,p:s};this.k||this.getValue(!0),this._isAnimated=this.k}function GradientProperty(t,e,r){this.data=e,this.c=createTypedArray(\"uint8c\",4*e.p);var i=e.k.k[0].s?e.k.k[0].s.length-4*e.p:e.k.k.length-4*e.p;this.o=createTypedArray(\"float32\",i),this._cmdf=!1,this._omdf=!1,this._collapsable=this.checkCollapsable(),this._hasOpacity=i,this.initDynamicPropertyContainer(r),this.prop=PropertyFactory.getProp(t,e.k,1,null,this),this.k=this.prop.k,this.getValue(!0)}ShapeModifier.prototype.initModifierProperties=function(){},ShapeModifier.prototype.addShapeToModifier=function(){},ShapeModifier.prototype.addShape=function(t){if(!this.closed){t.sh.container.addDynamicProperty(t.sh);var e={shape:t.sh,data:t,localShapeCollection:shapeCollectionPool.newShapeCollection()};this.shapes.push(e),this.addShapeToModifier(e),this._isAnimated&&t.setAsAnimated()}},ShapeModifier.prototype.init=function(t,e){this.shapes=[],this.elem=t,this.initDynamicPropertyContainer(t),this.initModifierProperties(t,e),this.frameId=initialDefaultFrame,this.closed=!1,this.k=!1,this.dynamicProperties.length?this.k=!0:this.getValue(!0)},ShapeModifier.prototype.processKeys=function(){this.elem.globalData.frameId!==this.frameId&&(this.frameId=this.elem.globalData.frameId,this.iterateDynamicProperties())},extendPrototype([DynamicPropertyContainer],ShapeModifier),extendPrototype([ShapeModifier],TrimModifier),TrimModifier.prototype.initModifierProperties=function(t,e){this.s=PropertyFactory.getProp(t,e.s,0,.01,this),this.e=PropertyFactory.getProp(t,e.e,0,.01,this),this.o=PropertyFactory.getProp(t,e.o,0,0,this),this.sValue=0,this.eValue=0,this.getValue=this.processKeys,this.m=e.m,this._isAnimated=!!this.s.effectsSequence.length||!!this.e.effectsSequence.length||!!this.o.effectsSequence.length},TrimModifier.prototype.addShapeToModifier=function(t){t.pathsData=[]},TrimModifier.prototype.calculateShapeEdges=function(t,e,r,i,a){var s=[];e<=1?s.push({s:t,e:e}):t>=1?s.push({s:t-1,e:e-1}):(s.push({s:t,e:1}),s.push({s:0,e:e-1}));var n,o,h=[],l=s.length;for(n=0;n<l;n+=1){var p,c;(o=s[n]).e*a<i||o.s*a>i+r||(p=o.s*a<=i?0:(o.s*a-i)/r,c=o.e*a>=i+r?1:(o.e*a-i)/r,h.push([p,c]))}return h.length||h.push([0,0]),h},TrimModifier.prototype.releasePathsData=function(t){var e,r=t.length;for(e=0;e<r;e+=1)segmentsLengthPool.release(t[e]);return t.length=0,t},TrimModifier.prototype.processShapes=function(t){var e,r,i,a;if(this._mdf||t){var s=this.o.v%360/360;if(s<0&&(s+=1),(e=this.s.v>1?1+s:this.s.v<0?0+s:this.s.v+s)>(r=this.e.v>1?1+s:this.e.v<0?0+s:this.e.v+s)){var n=e;e=r,r=n}e=1e-4*Math.round(1e4*e),r=1e-4*Math.round(1e4*r),this.sValue=e,this.eValue=r}else e=this.sValue,r=this.eValue;var o,h,l,p,c,f=this.shapes.length,d=0;if(r===e)for(a=0;a<f;a+=1)this.shapes[a].localShapeCollection.releaseShapes(),this.shapes[a].shape._mdf=!0,this.shapes[a].shape.paths=this.shapes[a].localShapeCollection,this._mdf&&(this.shapes[a].pathsData.length=0);else if(1===r&&0===e||0===r&&1===e){if(this._mdf)for(a=0;a<f;a+=1)this.shapes[a].pathsData.length=0,this.shapes[a].shape._mdf=!0}else{var m,u,y=[];for(a=0;a<f;a+=1)if((m=this.shapes[a]).shape._mdf||this._mdf||t||2===this.m){if(h=(i=m.shape.paths)._length,c=0,!m.shape._mdf&&m.pathsData.length)c=m.totalShapeLength;else{for(l=this.releasePathsData(m.pathsData),o=0;o<h;o+=1)p=bez.getSegmentsLength(i.shapes[o]),l.push(p),c+=p.totalLength;m.totalShapeLength=c,m.pathsData=l}d+=c,m.shape._mdf=!0}else m.shape.paths=m.localShapeCollection;var g,v=e,b=r,_=0;for(a=f-1;a>=0;a-=1)if((m=this.shapes[a]).shape._mdf){for((u=m.localShapeCollection).releaseShapes(),2===this.m&&f>1?(g=this.calculateShapeEdges(e,r,m.totalShapeLength,_,d),_+=m.totalShapeLength):g=[[v,b]],h=g.length,o=0;o<h;o+=1){v=g[o][0],b=g[o][1],y.length=0,b<=1?y.push({s:m.totalShapeLength*v,e:m.totalShapeLength*b}):v>=1?y.push({s:m.totalShapeLength*(v-1),e:m.totalShapeLength*(b-1)}):(y.push({s:m.totalShapeLength*v,e:m.totalShapeLength}),y.push({s:0,e:m.totalShapeLength*(b-1)}));var P=this.addShapes(m,y[0]);if(y[0].s!==y[0].e){if(y.length>1)if(m.shape.paths.shapes[m.shape.paths._length-1].c){var E=P.pop();this.addPaths(P,u),P=this.addShapes(m,y[1],E)}else this.addPaths(P,u),P=this.addShapes(m,y[1]);this.addPaths(P,u)}}m.shape.paths=u}}},TrimModifier.prototype.addPaths=function(t,e){var r,i=t.length;for(r=0;r<i;r+=1)e.addShape(t[r])},TrimModifier.prototype.addSegment=function(t,e,r,i,a,s,n){a.setXYAt(e[0],e[1],\"o\",s),a.setXYAt(r[0],r[1],\"i\",s+1),n&&a.setXYAt(t[0],t[1],\"v\",s),a.setXYAt(i[0],i[1],\"v\",s+1)},TrimModifier.prototype.addSegmentFromArray=function(t,e,r,i){e.setXYAt(t[1],t[5],\"o\",r),e.setXYAt(t[2],t[6],\"i\",r+1),i&&e.setXYAt(t[0],t[4],\"v\",r),e.setXYAt(t[3],t[7],\"v\",r+1)},TrimModifier.prototype.addShapes=function(t,e,r){var i,a,s,n,o,h,l,p,c=t.pathsData,f=t.shape.paths.shapes,d=t.shape.paths._length,m=0,u=[],y=!0;for(r?(o=r._length,p=r._length):(r=shapePool.newElement(),o=0,p=0),u.push(r),i=0;i<d;i+=1){for(h=c[i].lengths,r.c=f[i].c,s=f[i].c?h.length:h.length+1,a=1;a<s;a+=1)if(m+(n=h[a-1]).addedLength<e.s)m+=n.addedLength,r.c=!1;else{if(m>e.e){r.c=!1;break}e.s<=m&&e.e>=m+n.addedLength?(this.addSegment(f[i].v[a-1],f[i].o[a-1],f[i].i[a],f[i].v[a],r,o,y),y=!1):(l=bez.getNewSegment(f[i].v[a-1],f[i].v[a],f[i].o[a-1],f[i].i[a],(e.s-m)/n.addedLength,(e.e-m)/n.addedLength,h[a-1]),this.addSegmentFromArray(l,r,o,y),y=!1,r.c=!1),m+=n.addedLength,o+=1}if(f[i].c&&h.length){if(n=h[a-1],m<=e.e){var g=h[a-1].addedLength;e.s<=m&&e.e>=m+g?(this.addSegment(f[i].v[a-1],f[i].o[a-1],f[i].i[0],f[i].v[0],r,o,y),y=!1):(l=bez.getNewSegment(f[i].v[a-1],f[i].v[0],f[i].o[a-1],f[i].i[0],(e.s-m)/g,(e.e-m)/g,h[a-1]),this.addSegmentFromArray(l,r,o,y),y=!1,r.c=!1)}else r.c=!1;m+=n.addedLength,o+=1}if(r._length&&(r.setXYAt(r.v[p][0],r.v[p][1],\"i\",p),r.setXYAt(r.v[r._length-1][0],r.v[r._length-1][1],\"o\",r._length-1)),m>e.e)break;i<d-1&&(r=shapePool.newElement(),y=!0,u.push(r),o=0)}return u},ShapeModifiers.registerModifier(\"tm\",TrimModifier),extendPrototype([ShapeModifier],RoundCornersModifier),RoundCornersModifier.prototype.initModifierProperties=function(t,e){this.getValue=this.processKeys,this.rd=PropertyFactory.getProp(t,e.r,0,null,this),this._isAnimated=!!this.rd.effectsSequence.length},RoundCornersModifier.prototype.processPath=function(t,e){var r,i=shapePool.newElement();i.c=t.c;var a,s,n,o,h,l,p,c,f,d,m,u,y=t._length,g=0;for(r=0;r<y;r+=1)a=t.v[r],n=t.o[r],s=t.i[r],a[0]===n[0]&&a[1]===n[1]&&a[0]===s[0]&&a[1]===s[1]?0!==r&&r!==y-1||t.c?(o=0===r?t.v[y-1]:t.v[r-1],l=(h=Math.sqrt(Math.pow(a[0]-o[0],2)+Math.pow(a[1]-o[1],2)))?Math.min(h/2,e)/h:0,p=m=a[0]+(o[0]-a[0])*l,c=u=a[1]-(a[1]-o[1])*l,f=p-(p-a[0])*roundCorner,d=c-(c-a[1])*roundCorner,i.setTripleAt(p,c,f,d,m,u,g),g+=1,o=r===y-1?t.v[0]:t.v[r+1],l=(h=Math.sqrt(Math.pow(a[0]-o[0],2)+Math.pow(a[1]-o[1],2)))?Math.min(h/2,e)/h:0,p=f=a[0]+(o[0]-a[0])*l,c=d=a[1]+(o[1]-a[1])*l,m=p-(p-a[0])*roundCorner,u=c-(c-a[1])*roundCorner,i.setTripleAt(p,c,f,d,m,u,g),g+=1):(i.setTripleAt(a[0],a[1],n[0],n[1],s[0],s[1],g),g+=1):(i.setTripleAt(t.v[r][0],t.v[r][1],t.o[r][0],t.o[r][1],t.i[r][0],t.i[r][1],g),g+=1);return i},RoundCornersModifier.prototype.processShapes=function(t){var e,r,i,a,s,n,o=this.shapes.length,h=this.rd.v;if(0!==h)for(r=0;r<o;r+=1){if(n=(s=this.shapes[r]).localShapeCollection,s.shape._mdf||this._mdf||t)for(n.releaseShapes(),s.shape._mdf=!0,e=s.shape.paths.shapes,a=s.shape.paths._length,i=0;i<a;i+=1)n.addShape(this.processPath(e[i],h));s.shape.paths=s.localShapeCollection}this.dynamicProperties.length||(this._mdf=!1)},ShapeModifiers.registerModifier(\"rd\",RoundCornersModifier),extendPrototype([ShapeModifier],PuckerAndBloatModifier),PuckerAndBloatModifier.prototype.initModifierProperties=function(t,e){this.getValue=this.processKeys,this.amount=PropertyFactory.getProp(t,e.a,0,null,this),this._isAnimated=!!this.amount.effectsSequence.length},PuckerAndBloatModifier.prototype.processPath=function(t,e){var r=e/100,i=[0,0],a=t._length,s=0;for(s=0;s<a;s+=1)i[0]+=t.v[s][0],i[1]+=t.v[s][1];i[0]/=a,i[1]/=a;var n,o,h,l,p,c,f=shapePool.newElement();for(f.c=t.c,s=0;s<a;s+=1)n=t.v[s][0]+(i[0]-t.v[s][0])*r,o=t.v[s][1]+(i[1]-t.v[s][1])*r,h=t.o[s][0]+(i[0]-t.o[s][0])*-r,l=t.o[s][1]+(i[1]-t.o[s][1])*-r,p=t.i[s][0]+(i[0]-t.i[s][0])*-r,c=t.i[s][1]+(i[1]-t.i[s][1])*-r,f.setTripleAt(n,o,h,l,p,c,s);return f},PuckerAndBloatModifier.prototype.processShapes=function(t){var e,r,i,a,s,n,o=this.shapes.length,h=this.amount.v;if(0!==h)for(r=0;r<o;r+=1){if(n=(s=this.shapes[r]).localShapeCollection,s.shape._mdf||this._mdf||t)for(n.releaseShapes(),s.shape._mdf=!0,e=s.shape.paths.shapes,a=s.shape.paths._length,i=0;i<a;i+=1)n.addShape(this.processPath(e[i],h));s.shape.paths=s.localShapeCollection}this.dynamicProperties.length||(this._mdf=!1)},ShapeModifiers.registerModifier(\"pb\",PuckerAndBloatModifier),extendPrototype([ShapeModifier],RepeaterModifier),RepeaterModifier.prototype.initModifierProperties=function(t,e){this.getValue=this.processKeys,this.c=PropertyFactory.getProp(t,e.c,0,null,this),this.o=PropertyFactory.getProp(t,e.o,0,null,this),this.tr=TransformPropertyFactory.getTransformProperty(t,e.tr,this),this.so=PropertyFactory.getProp(t,e.tr.so,0,.01,this),this.eo=PropertyFactory.getProp(t,e.tr.eo,0,.01,this),this.data=e,this.dynamicProperties.length||this.getValue(!0),this._isAnimated=!!this.dynamicProperties.length,this.pMatrix=new Matrix,this.rMatrix=new Matrix,this.sMatrix=new Matrix,this.tMatrix=new Matrix,this.matrix=new Matrix},RepeaterModifier.prototype.applyTransforms=function(t,e,r,i,a,s){var n=s?-1:1,o=i.s.v[0]+(1-i.s.v[0])*(1-a),h=i.s.v[1]+(1-i.s.v[1])*(1-a);t.translate(i.p.v[0]*n*a,i.p.v[1]*n*a,i.p.v[2]),e.translate(-i.a.v[0],-i.a.v[1],i.a.v[2]),e.rotate(-i.r.v*n*a),e.translate(i.a.v[0],i.a.v[1],i.a.v[2]),r.translate(-i.a.v[0],-i.a.v[1],i.a.v[2]),r.scale(s?1/o:o,s?1/h:h),r.translate(i.a.v[0],i.a.v[1],i.a.v[2])},RepeaterModifier.prototype.init=function(t,e,r,i){for(this.elem=t,this.arr=e,this.pos=r,this.elemsData=i,this._currentCopies=0,this._elements=[],this._groups=[],this.frameId=-1,this.initDynamicPropertyContainer(t),this.initModifierProperties(t,e[r]);r>0;)r-=1,this._elements.unshift(e[r]);this.dynamicProperties.length?this.k=!0:this.getValue(!0)},RepeaterModifier.prototype.resetElements=function(t){var e,r=t.length;for(e=0;e<r;e+=1)t[e]._processed=!1,\"gr\"===t[e].ty&&this.resetElements(t[e].it)},RepeaterModifier.prototype.cloneElements=function(t){var e=JSON.parse(JSON.stringify(t));return this.resetElements(e),e},RepeaterModifier.prototype.changeGroupRender=function(t,e){var r,i=t.length;for(r=0;r<i;r+=1)t[r]._render=e,\"gr\"===t[r].ty&&this.changeGroupRender(t[r].it,e)},RepeaterModifier.prototype.processShapes=function(t){var e,r,i,a,s,n=!1;if(this._mdf||t){var o,h=Math.ceil(this.c.v);if(this._groups.length<h){for(;this._groups.length<h;){var l={it:this.cloneElements(this._elements),ty:\"gr\"};l.it.push({a:{a:0,ix:1,k:[0,0]},nm:\"Transform\",o:{a:0,ix:7,k:100},p:{a:0,ix:2,k:[0,0]},r:{a:1,ix:6,k:[{s:0,e:0,t:0},{s:0,e:0,t:1}]},s:{a:0,ix:3,k:[100,100]},sa:{a:0,ix:5,k:0},sk:{a:0,ix:4,k:0},ty:\"tr\"}),this.arr.splice(0,0,l),this._groups.splice(0,0,l),this._currentCopies+=1}this.elem.reloadShapes(),n=!0}for(s=0,i=0;i<=this._groups.length-1;i+=1){if(o=s<h,this._groups[i]._render=o,this.changeGroupRender(this._groups[i].it,o),!o){var p=this.elemsData[i].it,c=p[p.length-1];0!==c.transform.op.v?(c.transform.op._mdf=!0,c.transform.op.v=0):c.transform.op._mdf=!1}s+=1}this._currentCopies=h;var f=this.o.v,d=f%1,m=f>0?Math.floor(f):Math.ceil(f),u=this.pMatrix.props,y=this.rMatrix.props,g=this.sMatrix.props;this.pMatrix.reset(),this.rMatrix.reset(),this.sMatrix.reset(),this.tMatrix.reset(),this.matrix.reset();var v,b,_=0;if(f>0){for(;_<m;)this.applyTransforms(this.pMatrix,this.rMatrix,this.sMatrix,this.tr,1,!1),_+=1;d&&(this.applyTransforms(this.pMatrix,this.rMatrix,this.sMatrix,this.tr,d,!1),_+=d)}else if(f<0){for(;_>m;)this.applyTransforms(this.pMatrix,this.rMatrix,this.sMatrix,this.tr,1,!0),_-=1;d&&(this.applyTransforms(this.pMatrix,this.rMatrix,this.sMatrix,this.tr,-d,!0),_-=d)}for(i=1===this.data.m?0:this._currentCopies-1,a=1===this.data.m?1:-1,s=this._currentCopies;s;){if(b=(r=(e=this.elemsData[i].it)[e.length-1].transform.mProps.v.props).length,e[e.length-1].transform.mProps._mdf=!0,e[e.length-1].transform.op._mdf=!0,e[e.length-1].transform.op.v=1===this._currentCopies?this.so.v:this.so.v+(this.eo.v-this.so.v)*(i/(this._currentCopies-1)),0!==_){for((0!==i&&1===a||i!==this._currentCopies-1&&-1===a)&&this.applyTransforms(this.pMatrix,this.rMatrix,this.sMatrix,this.tr,1,!1),this.matrix.transform(y[0],y[1],y[2],y[3],y[4],y[5],y[6],y[7],y[8],y[9],y[10],y[11],y[12],y[13],y[14],y[15]),this.matrix.transform(g[0],g[1],g[2],g[3],g[4],g[5],g[6],g[7],g[8],g[9],g[10],g[11],g[12],g[13],g[14],g[15]),this.matrix.transform(u[0],u[1],u[2],u[3],u[4],u[5],u[6],u[7],u[8],u[9],u[10],u[11],u[12],u[13],u[14],u[15]),v=0;v<b;v+=1)r[v]=this.matrix.props[v];this.matrix.reset()}else for(this.matrix.reset(),v=0;v<b;v+=1)r[v]=this.matrix.props[v];_+=1,s-=1,i+=a}}else for(s=this._currentCopies,i=0,a=1;s;)r=(e=this.elemsData[i].it)[e.length-1].transform.mProps.v.props,e[e.length-1].transform.mProps._mdf=!1,e[e.length-1].transform.op._mdf=!1,s-=1,i+=a;return n},RepeaterModifier.prototype.addShape=function(){},ShapeModifiers.registerModifier(\"rp\",RepeaterModifier),ShapeCollection.prototype.addShape=function(t){this._length===this._maxLength&&(this.shapes=this.shapes.concat(createSizedArray(this._maxLength)),this._maxLength*=2),this.shapes[this._length]=t,this._length+=1},ShapeCollection.prototype.releaseShapes=function(){var t;for(t=0;t<this._length;t+=1)shapePool.release(this.shapes[t]);this._length=0},DashProperty.prototype.getValue=function(t){if((this.elem.globalData.frameId!==this.frameId||t)&&(this.frameId=this.elem.globalData.frameId,this.iterateDynamicProperties(),this._mdf=this._mdf||t,this._mdf)){var e=0,r=this.dataProps.length;for(\"svg\"===this.renderer&&(this.dashStr=\"\"),e=0;e<r;e+=1)\"o\"!==this.dataProps[e].n?\"svg\"===this.renderer?this.dashStr+=\" \"+this.dataProps[e].p.v:this.dashArray[e]=this.dataProps[e].p.v:this.dashoffset[0]=this.dataProps[e].p.v}},extendPrototype([DynamicPropertyContainer],DashProperty),GradientProperty.prototype.comparePoints=function(t,e){for(var r=0,i=this.o.length/2;r<i;){if(Math.abs(t[4*r]-t[4*e+2*r])>.01)return!1;r+=1}return!0},GradientProperty.prototype.checkCollapsable=function(){if(this.o.length/2!=this.c.length/4)return!1;if(this.data.k.k[0].s)for(var t=0,e=this.data.k.k.length;t<e;){if(!this.comparePoints(this.data.k.k[t].s,this.data.p))return!1;t+=1}else if(!this.comparePoints(this.data.k.k,this.data.p))return!1;return!0},GradientProperty.prototype.getValue=function(t){if(this.prop.getValue(),this._mdf=!1,this._cmdf=!1,this._omdf=!1,this.prop._mdf||t){var e,r,i,a=4*this.data.p;for(e=0;e<a;e+=1)r=e%4==0?100:255,i=Math.round(this.prop.v[e]*r),this.c[e]!==i&&(this.c[e]=i,this._cmdf=!t);if(this.o.length)for(a=this.prop.v.length,e=4*this.data.p;e<a;e+=1)r=e%2==0?100:1,i=e%2==0?Math.round(100*this.prop.v[e]):this.prop.v[e],this.o[e-4*this.data.p]!==i&&(this.o[e-4*this.data.p]=i,this._omdf=!t);this._mdf=!t}},extendPrototype([DynamicPropertyContainer],GradientProperty);var buildShapeString=function(t,e,r,i){if(0===e)return\"\";var a,s=t.o,n=t.i,o=t.v,h=\" M\"+i.applyToPointStringified(o[0][0],o[0][1]);for(a=1;a<e;a+=1)h+=\" C\"+i.applyToPointStringified(s[a-1][0],s[a-1][1])+\" \"+i.applyToPointStringified(n[a][0],n[a][1])+\" \"+i.applyToPointStringified(o[a][0],o[a][1]);return r&&e&&(h+=\" C\"+i.applyToPointStringified(s[a-1][0],s[a-1][1])+\" \"+i.applyToPointStringified(n[0][0],n[0][1])+\" \"+i.applyToPointStringified(o[0][0],o[0][1]),h+=\"z\"),h},audioControllerFactory=function(){function t(t){this.audios=[],this.audioFactory=t,this._volume=1,this._isMuted=!1}return t.prototype={addAudio:function(t){this.audios.push(t)},pause:function(){var t,e=this.audios.length;for(t=0;t<e;t+=1)this.audios[t].pause()},resume:function(){var t,e=this.audios.length;for(t=0;t<e;t+=1)this.audios[t].resume()},setRate:function(t){var e,r=this.audios.length;for(e=0;e<r;e+=1)this.audios[e].setRate(t)},createAudio:function(t){return this.audioFactory?this.audioFactory(t):Howl?new Howl({src:[t]}):{isPlaying:!1,play:function(){this.isPlaying=!0},seek:function(){this.isPlaying=!1},playing:function(){},rate:function(){},setVolume:function(){}}},setAudioFactory:function(t){this.audioFactory=t},setVolume:function(t){this._volume=t,this._updateVolume()},mute:function(){this._isMuted=!0,this._updateVolume()},unmute:function(){this._isMuted=!1,this._updateVolume()},getVolume:function(){return this._volume},_updateVolume:function(){var t,e=this.audios.length;for(t=0;t<e;t+=1)this.audios[t].volume(this._volume*(this._isMuted?0:1))}},function(){return new t}}(),ImagePreloader=function(){var t=function(){var t=createTag(\"canvas\");t.width=1,t.height=1;var e=t.getContext(\"2d\");return e.fillStyle=\"rgba(0,0,0,0)\",e.fillRect(0,0,1,1),t}();function e(){this.loadedAssets+=1,this.loadedAssets===this.totalImages&&this.loadedFootagesCount===this.totalFootages&&this.imagesLoadedCb&&this.imagesLoadedCb(null)}function r(){this.loadedFootagesCount+=1,this.loadedAssets===this.totalImages&&this.loadedFootagesCount===this.totalFootages&&this.imagesLoadedCb&&this.imagesLoadedCb(null)}function i(t,e,r){var i=\"\";if(t.e)i=t.p;else if(e){var a=t.p;-1!==a.indexOf(\"images/\")&&(a=a.split(\"/\")[1]),i=e+a}else i=r,i+=t.u?t.u:\"\",i+=t.p;return i}function a(t){var e=0,r=setInterval(function(){(t.getBBox().width||e>500)&&(this._imageLoaded(),clearInterval(r)),e+=1}.bind(this),50)}function s(t){var e={assetData:t},r=i(t,this.assetsPath,this.path);return dataManager.loadData(r,function(t){e.img=t,this._footageLoaded()}.bind(this),function(){e.img={},this._footageLoaded()}.bind(this)),e}function n(){this._imageLoaded=e.bind(this),this._footageLoaded=r.bind(this),this.testImageLoaded=a.bind(this),this.createFootageData=s.bind(this),this.assetsPath=\"\",this.path=\"\",this.totalImages=0,this.totalFootages=0,this.loadedAssets=0,this.loadedFootagesCount=0,this.imagesLoadedCb=null,this.images=[]}return n.prototype={loadAssets:function(t,e){var r;this.imagesLoadedCb=e;var i=t.length;for(r=0;r<i;r+=1)t[r].layers||(t[r].t&&\"seq\"!==t[r].t?3===t[r].t&&(this.totalFootages+=1,this.images.push(this.createFootageData(t[r]))):(this.totalImages+=1,this.images.push(this._createImageData(t[r]))))},setAssetsPath:function(t){this.assetsPath=t||\"\"},setPath:function(t){this.path=t||\"\"},loadedImages:function(){return this.totalImages===this.loadedAssets},loadedFootages:function(){return this.totalFootages===this.loadedFootagesCount},destroy:function(){this.imagesLoadedCb=null,this.images.length=0},getAsset:function(t){for(var e=0,r=this.images.length;e<r;){if(this.images[e].assetData===t)return this.images[e].img;e+=1}return null},createImgData:function(e){var r=i(e,this.assetsPath,this.path),a=createTag(\"img\");a.crossOrigin=\"anonymous\",a.addEventListener(\"load\",this._imageLoaded,!1),a.addEventListener(\"error\",function(){s.img=t,this._imageLoaded()}.bind(this),!1),a.src=r;var s={img:a,assetData:e};return s},createImageData:function(e){var r=i(e,this.assetsPath,this.path),a=createNS(\"image\");isSafari?this.testImageLoaded(a):a.addEventListener(\"load\",this._imageLoaded,!1),a.addEventListener(\"error\",function(){s.img=t,this._imageLoaded()}.bind(this),!1),a.setAttributeNS(\"http://www.w3.org/1999/xlink\",\"href\",r),this._elementHelper.append?this._elementHelper.append(a):this._elementHelper.appendChild(a);var s={img:a,assetData:e};return s},imageLoaded:e,footageLoaded:r,setCacheType:function(t,e){\"svg\"===t?(this._elementHelper=e,this._createImageData=this.createImageData.bind(this)):this._createImageData=this.createImgData.bind(this)}},n}(),featureSupport=function(){var t={maskType:!0};return(/MSIE 10/i.test(navigator.userAgent)||/MSIE 9/i.test(navigator.userAgent)||/rv:11.0/i.test(navigator.userAgent)||/Edge\\/\\d./i.test(navigator.userAgent))&&(t.maskType=!1),t}(),filtersFactory=function(){var t={createFilter:function(t,e){var r=createNS(\"filter\");return r.setAttribute(\"id\",t),!0!==e&&(r.setAttribute(\"filterUnits\",\"objectBoundingBox\"),r.setAttribute(\"x\",\"0%\"),r.setAttribute(\"y\",\"0%\"),r.setAttribute(\"width\",\"100%\"),r.setAttribute(\"height\",\"100%\")),r},createAlphaToLuminanceFilter:function(){var t=createNS(\"feColorMatrix\");return t.setAttribute(\"type\",\"matrix\"),t.setAttribute(\"color-interpolation-filters\",\"sRGB\"),t.setAttribute(\"values\",\"0 0 0 1 0  0 0 0 1 0  0 0 0 1 0  0 0 0 1 1\"),t}};return t}();function TextAnimatorProperty(t,e,r){this._isFirstFrame=!0,this._hasMaskedPath=!1,this._frameId=-1,this._textData=t,this._renderType=e,this._elem=r,this._animatorsData=createSizedArray(this._textData.a.length),this._pathData={},this._moreOptions={alignment:{}},this.renderedLetters=[],this.lettersChangedFlag=!1,this.initDynamicPropertyContainer(r)}function TextAnimatorDataProperty(t,e,r){var i={propType:!1},a=PropertyFactory.getProp,s=e.a;this.a={r:s.r?a(t,s.r,0,degToRads,r):i,rx:s.rx?a(t,s.rx,0,degToRads,r):i,ry:s.ry?a(t,s.ry,0,degToRads,r):i,sk:s.sk?a(t,s.sk,0,degToRads,r):i,sa:s.sa?a(t,s.sa,0,degToRads,r):i,s:s.s?a(t,s.s,1,.01,r):i,a:s.a?a(t,s.a,1,0,r):i,o:s.o?a(t,s.o,0,.01,r):i,p:s.p?a(t,s.p,1,0,r):i,sw:s.sw?a(t,s.sw,0,0,r):i,sc:s.sc?a(t,s.sc,1,0,r):i,fc:s.fc?a(t,s.fc,1,0,r):i,fh:s.fh?a(t,s.fh,0,0,r):i,fs:s.fs?a(t,s.fs,0,.01,r):i,fb:s.fb?a(t,s.fb,0,.01,r):i,t:s.t?a(t,s.t,0,0,r):i},this.s=TextSelectorProp.getTextSelectorProp(t,e.s,r),this.s.t=e.s.t}function LetterProps(t,e,r,i,a,s){this.o=t,this.sw=e,this.sc=r,this.fc=i,this.m=a,this.p=s,this._mdf={o:!0,sw:!!e,sc:!!r,fc:!!i,m:!0,p:!0}}function TextProperty(t,e){this._frameId=initialDefaultFrame,this.pv=\"\",this.v=\"\",this.kf=!1,this._isFirstFrame=!0,this._mdf=!1,this.data=e,this.elem=t,this.comp=this.elem.comp,this.keysIndex=0,this.canResize=!1,this.minimumFontSize=1,this.effectsSequence=[],this.currentData={ascent:0,boxWidth:this.defaultBoxWidth,f:\"\",fStyle:\"\",fWeight:\"\",fc:\"\",j:\"\",justifyOffset:\"\",l:[],lh:0,lineWidths:[],ls:\"\",of:\"\",s:\"\",sc:\"\",sw:0,t:0,tr:0,sz:0,ps:null,fillColorAnim:!1,strokeColorAnim:!1,strokeWidthAnim:!1,yOffset:0,finalSize:0,finalText:[],finalLineHeight:0,__complete:!1},this.copyData(this.currentData,this.data.d.k[0].s),this.searchProperty()||this.completeTextData(this.currentData)}TextAnimatorProperty.prototype.searchProperties=function(){var t,e,r=this._textData.a.length,i=PropertyFactory.getProp;for(t=0;t<r;t+=1)e=this._textData.a[t],this._animatorsData[t]=new TextAnimatorDataProperty(this._elem,e,this);this._textData.p&&\"m\"in this._textData.p?(this._pathData={a:i(this._elem,this._textData.p.a,0,0,this),f:i(this._elem,this._textData.p.f,0,0,this),l:i(this._elem,this._textData.p.l,0,0,this),r:i(this._elem,this._textData.p.r,0,0,this),p:i(this._elem,this._textData.p.p,0,0,this),m:this._elem.maskManager.getMaskProperty(this._textData.p.m)},this._hasMaskedPath=!0):this._hasMaskedPath=!1,this._moreOptions.alignment=i(this._elem,this._textData.m.a,1,0,this)},TextAnimatorProperty.prototype.getMeasures=function(t,e){if(this.lettersChangedFlag=e,this._mdf||this._isFirstFrame||e||this._hasMaskedPath&&this._pathData.m._mdf){this._isFirstFrame=!1;var r,i,a,s,n,o,h,l,p,c,f,d,m,u,y,g,v,b,_,P=this._moreOptions.alignment.v,E=this._animatorsData,S=this._textData,x=this.mHelper,A=this._renderType,w=this.renderedLetters.length,C=t.l;if(this._hasMaskedPath){if(_=this._pathData.m,!this._pathData.n||this._pathData._mdf){var k,T=_.v;for(this._pathData.r.v&&(T=T.reverse()),n={tLength:0,segments:[]},s=T._length-1,g=0,a=0;a<s;a+=1)k=bez.buildBezierData(T.v[a],T.v[a+1],[T.o[a][0]-T.v[a][0],T.o[a][1]-T.v[a][1]],[T.i[a+1][0]-T.v[a+1][0],T.i[a+1][1]-T.v[a+1][1]]),n.tLength+=k.segmentLength,n.segments.push(k),g+=k.segmentLength;a=s,_.v.c&&(k=bez.buildBezierData(T.v[a],T.v[0],[T.o[a][0]-T.v[a][0],T.o[a][1]-T.v[a][1]],[T.i[0][0]-T.v[0][0],T.i[0][1]-T.v[0][1]]),n.tLength+=k.segmentLength,n.segments.push(k),g+=k.segmentLength),this._pathData.pi=n}if(n=this._pathData.pi,o=this._pathData.f.v,f=0,c=1,l=0,p=!0,u=n.segments,o<0&&_.v.c)for(n.tLength<Math.abs(o)&&(o=-Math.abs(o)%n.tLength),c=(m=u[f=u.length-1].points).length-1;o<0;)o+=m[c].partialLength,(c-=1)<0&&(c=(m=u[f-=1].points).length-1);d=(m=u[f].points)[c-1],y=(h=m[c]).partialLength}s=C.length,r=0,i=0;var D,M,F,I,R,V=1.2*t.finalSize*.714,O=!0;F=E.length;var L,B,$,z,G,N,j,H,q,W,U,Y,X=-1,K=o,J=f,Z=c,Q=-1,tt=\"\",et=this.defaultPropsArray;if(2===t.j||1===t.j){var rt=0,it=0,at=2===t.j?-.5:-1,st=0,nt=!0;for(a=0;a<s;a+=1)if(C[a].n){for(rt&&(rt+=it);st<a;)C[st].animatorJustifyOffset=rt,st+=1;rt=0,nt=!0}else{for(M=0;M<F;M+=1)(D=E[M].a).t.propType&&(nt&&2===t.j&&(it+=D.t.v*at),(R=E[M].s.getMult(C[a].anIndexes[M],S.a[M].s.totalChars)).length?rt+=D.t.v*R[0]*at:rt+=D.t.v*R*at);nt=!1}for(rt&&(rt+=it);st<a;)C[st].animatorJustifyOffset=rt,st+=1}for(a=0;a<s;a+=1){if(x.reset(),z=1,C[a].n)r=0,i+=t.yOffset,i+=O?1:0,o=K,O=!1,this._hasMaskedPath&&(c=Z,d=(m=u[f=J].points)[c-1],y=(h=m[c]).partialLength,l=0),tt=\"\",U=\"\",q=\"\",Y=\"\",et=this.defaultPropsArray;else{if(this._hasMaskedPath){if(Q!==C[a].line){switch(t.j){case 1:o+=g-t.lineWidths[C[a].line];break;case 2:o+=(g-t.lineWidths[C[a].line])/2}Q=C[a].line}X!==C[a].ind&&(C[X]&&(o+=C[X].extra),o+=C[a].an/2,X=C[a].ind),o+=P[0]*C[a].an*.005;var ot=0;for(M=0;M<F;M+=1)(D=E[M].a).p.propType&&((R=E[M].s.getMult(C[a].anIndexes[M],S.a[M].s.totalChars)).length?ot+=D.p.v[0]*R[0]:ot+=D.p.v[0]*R),D.a.propType&&((R=E[M].s.getMult(C[a].anIndexes[M],S.a[M].s.totalChars)).length?ot+=D.a.v[0]*R[0]:ot+=D.a.v[0]*R);for(p=!0,this._pathData.a.v&&(o=.5*C[0].an+(g-this._pathData.f.v-.5*C[0].an-.5*C[C.length-1].an)*X/(s-1),o+=this._pathData.f.v);p;)l+y>=o+ot||!m?(v=(o+ot-l)/h.partialLength,B=d.point[0]+(h.point[0]-d.point[0])*v,$=d.point[1]+(h.point[1]-d.point[1])*v,x.translate(-P[0]*C[a].an*.005,-P[1]*V*.01),p=!1):m&&(l+=h.partialLength,(c+=1)>=m.length&&(c=0,u[f+=1]?m=u[f].points:_.v.c?(c=0,m=u[f=0].points):(l-=h.partialLength,m=null)),m&&(d=h,y=(h=m[c]).partialLength));L=C[a].an/2-C[a].add,x.translate(-L,0,0)}else L=C[a].an/2-C[a].add,x.translate(-L,0,0),x.translate(-P[0]*C[a].an*.005,-P[1]*V*.01,0);for(M=0;M<F;M+=1)(D=E[M].a).t.propType&&(R=E[M].s.getMult(C[a].anIndexes[M],S.a[M].s.totalChars),0===r&&0===t.j||(this._hasMaskedPath?R.length?o+=D.t.v*R[0]:o+=D.t.v*R:R.length?r+=D.t.v*R[0]:r+=D.t.v*R));for(t.strokeWidthAnim&&(N=t.sw||0),t.strokeColorAnim&&(G=t.sc?[t.sc[0],t.sc[1],t.sc[2]]:[0,0,0]),t.fillColorAnim&&t.fc&&(j=[t.fc[0],t.fc[1],t.fc[2]]),M=0;M<F;M+=1)(D=E[M].a).a.propType&&((R=E[M].s.getMult(C[a].anIndexes[M],S.a[M].s.totalChars)).length?x.translate(-D.a.v[0]*R[0],-D.a.v[1]*R[1],D.a.v[2]*R[2]):x.translate(-D.a.v[0]*R,-D.a.v[1]*R,D.a.v[2]*R));for(M=0;M<F;M+=1)(D=E[M].a).s.propType&&((R=E[M].s.getMult(C[a].anIndexes[M],S.a[M].s.totalChars)).length?x.scale(1+(D.s.v[0]-1)*R[0],1+(D.s.v[1]-1)*R[1],1):x.scale(1+(D.s.v[0]-1)*R,1+(D.s.v[1]-1)*R,1));for(M=0;M<F;M+=1){if(D=E[M].a,R=E[M].s.getMult(C[a].anIndexes[M],S.a[M].s.totalChars),D.sk.propType&&(R.length?x.skewFromAxis(-D.sk.v*R[0],D.sa.v*R[1]):x.skewFromAxis(-D.sk.v*R,D.sa.v*R)),D.r.propType&&(R.length?x.rotateZ(-D.r.v*R[2]):x.rotateZ(-D.r.v*R)),D.ry.propType&&(R.length?x.rotateY(D.ry.v*R[1]):x.rotateY(D.ry.v*R)),D.rx.propType&&(R.length?x.rotateX(D.rx.v*R[0]):x.rotateX(D.rx.v*R)),D.o.propType&&(R.length?z+=(D.o.v*R[0]-z)*R[0]:z+=(D.o.v*R-z)*R),t.strokeWidthAnim&&D.sw.propType&&(R.length?N+=D.sw.v*R[0]:N+=D.sw.v*R),t.strokeColorAnim&&D.sc.propType)for(H=0;H<3;H+=1)R.length?G[H]+=(D.sc.v[H]-G[H])*R[0]:G[H]+=(D.sc.v[H]-G[H])*R;if(t.fillColorAnim&&t.fc){if(D.fc.propType)for(H=0;H<3;H+=1)R.length?j[H]+=(D.fc.v[H]-j[H])*R[0]:j[H]+=(D.fc.v[H]-j[H])*R;D.fh.propType&&(j=R.length?addHueToRGB(j,D.fh.v*R[0]):addHueToRGB(j,D.fh.v*R)),D.fs.propType&&(j=R.length?addSaturationToRGB(j,D.fs.v*R[0]):addSaturationToRGB(j,D.fs.v*R)),D.fb.propType&&(j=R.length?addBrightnessToRGB(j,D.fb.v*R[0]):addBrightnessToRGB(j,D.fb.v*R))}}for(M=0;M<F;M+=1)(D=E[M].a).p.propType&&(R=E[M].s.getMult(C[a].anIndexes[M],S.a[M].s.totalChars),this._hasMaskedPath?R.length?x.translate(0,D.p.v[1]*R[0],-D.p.v[2]*R[1]):x.translate(0,D.p.v[1]*R,-D.p.v[2]*R):R.length?x.translate(D.p.v[0]*R[0],D.p.v[1]*R[1],-D.p.v[2]*R[2]):x.translate(D.p.v[0]*R,D.p.v[1]*R,-D.p.v[2]*R));if(t.strokeWidthAnim&&(q=N<0?0:N),t.strokeColorAnim&&(W=\"rgb(\"+Math.round(255*G[0])+\",\"+Math.round(255*G[1])+\",\"+Math.round(255*G[2])+\")\"),t.fillColorAnim&&t.fc&&(U=\"rgb(\"+Math.round(255*j[0])+\",\"+Math.round(255*j[1])+\",\"+Math.round(255*j[2])+\")\"),this._hasMaskedPath){if(x.translate(0,-t.ls),x.translate(0,P[1]*V*.01+i,0),this._pathData.p.v){b=(h.point[1]-d.point[1])/(h.point[0]-d.point[0]);var ht=180*Math.atan(b)/Math.PI;h.point[0]<d.point[0]&&(ht+=180),x.rotate(-ht*Math.PI/180)}x.translate(B,$,0),o-=P[0]*C[a].an*.005,C[a+1]&&X!==C[a+1].ind&&(o+=C[a].an/2,o+=.001*t.tr*t.finalSize)}else{switch(x.translate(r,i,0),t.ps&&x.translate(t.ps[0],t.ps[1]+t.ascent,0),t.j){case 1:x.translate(C[a].animatorJustifyOffset+t.justifyOffset+(t.boxWidth-t.lineWidths[C[a].line]),0,0);break;case 2:x.translate(C[a].animatorJustifyOffset+t.justifyOffset+(t.boxWidth-t.lineWidths[C[a].line])/2,0,0)}x.translate(0,-t.ls),x.translate(L,0,0),x.translate(P[0]*C[a].an*.005,P[1]*V*.01,0),r+=C[a].l+.001*t.tr*t.finalSize}\"html\"===A?tt=x.toCSS():\"svg\"===A?tt=x.to2dCSS():et=[x.props[0],x.props[1],x.props[2],x.props[3],x.props[4],x.props[5],x.props[6],x.props[7],x.props[8],x.props[9],x.props[10],x.props[11],x.props[12],x.props[13],x.props[14],x.props[15]],Y=z}w<=a?(I=new LetterProps(Y,q,W,U,tt,et),this.renderedLetters.push(I),w+=1,this.lettersChangedFlag=!0):(I=this.renderedLetters[a],this.lettersChangedFlag=I.update(Y,q,W,U,tt,et)||this.lettersChangedFlag)}}},TextAnimatorProperty.prototype.getValue=function(){this._elem.globalData.frameId!==this._frameId&&(this._frameId=this._elem.globalData.frameId,this.iterateDynamicProperties())},TextAnimatorProperty.prototype.mHelper=new Matrix,TextAnimatorProperty.prototype.defaultPropsArray=[],extendPrototype([DynamicPropertyContainer],TextAnimatorProperty),LetterProps.prototype.update=function(t,e,r,i,a,s){this._mdf.o=!1,this._mdf.sw=!1,this._mdf.sc=!1,this._mdf.fc=!1,this._mdf.m=!1,this._mdf.p=!1;var n=!1;return this.o!==t&&(this.o=t,this._mdf.o=!0,n=!0),this.sw!==e&&(this.sw=e,this._mdf.sw=!0,n=!0),this.sc!==r&&(this.sc=r,this._mdf.sc=!0,n=!0),this.fc!==i&&(this.fc=i,this._mdf.fc=!0,n=!0),this.m!==a&&(this.m=a,this._mdf.m=!0,n=!0),!s.length||this.p[0]===s[0]&&this.p[1]===s[1]&&this.p[4]===s[4]&&this.p[5]===s[5]&&this.p[12]===s[12]&&this.p[13]===s[13]||(this.p=s,this._mdf.p=!0,n=!0),n},TextProperty.prototype.defaultBoxWidth=[0,0],TextProperty.prototype.copyData=function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t},TextProperty.prototype.setCurrentData=function(t){t.__complete||this.completeTextData(t),this.currentData=t,this.currentData.boxWidth=this.currentData.boxWidth||this.defaultBoxWidth,this._mdf=!0},TextProperty.prototype.searchProperty=function(){return this.searchKeyframes()},TextProperty.prototype.searchKeyframes=function(){return this.kf=this.data.d.k.length>1,this.kf&&this.addEffect(this.getKeyframeValue.bind(this)),this.kf},TextProperty.prototype.addEffect=function(t){this.effectsSequence.push(t),this.elem.addDynamicProperty(this)},TextProperty.prototype.getValue=function(t){if(this.elem.globalData.frameId!==this.frameId&&this.effectsSequence.length||t){this.currentData.t=this.data.d.k[this.keysIndex].s.t;var e=this.currentData,r=this.keysIndex;if(this.lock)this.setCurrentData(this.currentData);else{var i;this.lock=!0,this._mdf=!1;var a=this.effectsSequence.length,s=t||this.data.d.k[this.keysIndex].s;for(i=0;i<a;i+=1)s=r!==this.keysIndex?this.effectsSequence[i](s,s.t):this.effectsSequence[i](this.currentData,s.t);e!==s&&this.setCurrentData(s),this.v=this.currentData,this.pv=this.v,this.lock=!1,this.frameId=this.elem.globalData.frameId}}},TextProperty.prototype.getKeyframeValue=function(){for(var t=this.data.d.k,e=this.elem.comp.renderedFrame,r=0,i=t.length;r<=i-1&&!(r===i-1||t[r+1].t>e);)r+=1;return this.keysIndex!==r&&(this.keysIndex=r),this.data.d.k[this.keysIndex].s},TextProperty.prototype.buildFinalText=function(t){for(var e,r,i=[],a=0,s=t.length,n=!1;a<s;)e=t.charCodeAt(a),FontManager.isCombinedCharacter(e)?i[i.length-1]+=t.charAt(a):e>=55296&&e<=56319?(r=t.charCodeAt(a+1))>=56320&&r<=57343?(n||FontManager.isModifier(e,r)?(i[i.length-1]+=t.substr(a,2),n=!1):i.push(t.substr(a,2)),a+=1):i.push(t.charAt(a)):e>56319?(r=t.charCodeAt(a+1),FontManager.isZeroWidthJoiner(e,r)?(n=!0,i[i.length-1]+=t.substr(a,2),a+=1):i.push(t.charAt(a))):FontManager.isZeroWidthJoiner(e)?(i[i.length-1]+=t.charAt(a),n=!0):i.push(t.charAt(a)),a+=1;return i},TextProperty.prototype.completeTextData=function(t){t.__complete=!0;var e,r,i,a,s,n,o,h=this.elem.globalData.fontManager,l=this.data,p=[],c=0,f=l.m.g,d=0,m=0,u=0,y=[],g=0,v=0,b=h.getFontByName(t.f),_=0,P=getFontProperties(b);t.fWeight=P.weight,t.fStyle=P.style,t.finalSize=t.s,t.finalText=this.buildFinalText(t.t),r=t.finalText.length,t.finalLineHeight=t.lh;var E,S=t.tr/1e3*t.finalSize;if(t.sz)for(var x,A,w=!0,C=t.sz[0],k=t.sz[1];w;){x=0,g=0,r=(A=this.buildFinalText(t.t)).length,S=t.tr/1e3*t.finalSize;var T=-1;for(e=0;e<r;e+=1)E=A[e].charCodeAt(0),i=!1,\" \"===A[e]?T=e:13!==E&&3!==E||(g=0,i=!0,x+=t.finalLineHeight||1.2*t.finalSize),h.chars?(o=h.getCharData(A[e],b.fStyle,b.fFamily),_=i?0:o.w*t.finalSize/100):_=h.measureText(A[e],t.f,t.finalSize),g+_>C&&\" \"!==A[e]?(-1===T?r+=1:e=T,x+=t.finalLineHeight||1.2*t.finalSize,A.splice(e,T===e?1:0,\"\\r\"),T=-1,g=0):(g+=_,g+=S);x+=b.ascent*t.finalSize/100,this.canResize&&t.finalSize>this.minimumFontSize&&k<x?(t.finalSize-=1,t.finalLineHeight=t.finalSize*t.lh/t.s):(t.finalText=A,r=t.finalText.length,w=!1)}g=-S,_=0;var D,M=0;for(e=0;e<r;e+=1)if(i=!1,13===(E=(D=t.finalText[e]).charCodeAt(0))||3===E?(M=0,y.push(g),v=g>v?g:v,g=-2*S,a=\"\",i=!0,u+=1):a=D,h.chars?(o=h.getCharData(D,b.fStyle,h.getFontByName(t.f).fFamily),_=i?0:o.w*t.finalSize/100):_=h.measureText(a,t.f,t.finalSize),\" \"===D?M+=_+S:(g+=_+S+M,M=0),p.push({l:_,an:_,add:d,n:i,anIndexes:[],val:a,line:u,animatorJustifyOffset:0}),2==f){if(d+=_,\"\"===a||\" \"===a||e===r-1){for(\"\"!==a&&\" \"!==a||(d-=_);m<=e;)p[m].an=d,p[m].ind=c,p[m].extra=_,m+=1;c+=1,d=0}}else if(3==f){if(d+=_,\"\"===a||e===r-1){for(\"\"===a&&(d-=_);m<=e;)p[m].an=d,p[m].ind=c,p[m].extra=_,m+=1;d=0,c+=1}}else p[c].ind=c,p[c].extra=0,c+=1;if(t.l=p,v=g>v?g:v,y.push(g),t.sz)t.boxWidth=t.sz[0],t.justifyOffset=0;else switch(t.boxWidth=v,t.j){case 1:t.justifyOffset=-t.boxWidth;break;case 2:t.justifyOffset=-t.boxWidth/2;break;default:t.justifyOffset=0}t.lineWidths=y;var F,I,R,V,O=l.a;n=O.length;var L=[];for(s=0;s<n;s+=1){for((F=O[s]).a.sc&&(t.strokeColorAnim=!0),F.a.sw&&(t.strokeWidthAnim=!0),(F.a.fc||F.a.fh||F.a.fs||F.a.fb)&&(t.fillColorAnim=!0),V=0,R=F.s.b,e=0;e<r;e+=1)(I=p[e]).anIndexes[s]=V,(1==R&&\"\"!==I.val||2==R&&\"\"!==I.val&&\" \"!==I.val||3==R&&(I.n||\" \"==I.val||e==r-1)||4==R&&(I.n||e==r-1))&&(1===F.s.rn&&L.push(V),V+=1);l.a[s].s.totalChars=V;var B,$=-1;if(1===F.s.rn)for(e=0;e<r;e+=1)$!=(I=p[e]).anIndexes[s]&&($=I.anIndexes[s],B=L.splice(Math.floor(Math.random()*L.length),1)[0]),I.anIndexes[s]=B}t.yOffset=t.finalLineHeight||1.2*t.finalSize,t.ls=t.ls||0,t.ascent=b.ascent*t.finalSize/100},TextProperty.prototype.updateDocumentData=function(t,e){e=void 0===e?this.keysIndex:e;var r=this.copyData({},this.data.d.k[e].s);r=this.copyData(r,t),this.data.d.k[e].s=r,this.recalculate(e),this.elem.addDynamicProperty(this)},TextProperty.prototype.recalculate=function(t){var e=this.data.d.k[t].s;e.__complete=!1,this.keysIndex=0,this._isFirstFrame=!0,this.getValue(e)},TextProperty.prototype.canResizeFont=function(t){this.canResize=t,this.recalculate(this.keysIndex),this.elem.addDynamicProperty(this)},TextProperty.prototype.setMinimumFontSize=function(t){this.minimumFontSize=Math.floor(t)||1,this.recalculate(this.keysIndex),this.elem.addDynamicProperty(this)};var TextSelectorProp=function(){var t=Math.max,e=Math.min,r=Math.floor;function i(t,e){this._currentTextLength=-1,this.k=!1,this.data=e,this.elem=t,this.comp=t.comp,this.finalS=0,this.finalE=0,this.initDynamicPropertyContainer(t),this.s=PropertyFactory.getProp(t,e.s||{k:0},0,0,this),this.e=\"e\"in e?PropertyFactory.getProp(t,e.e,0,0,this):{v:100},this.o=PropertyFactory.getProp(t,e.o||{k:0},0,0,this),this.xe=PropertyFactory.getProp(t,e.xe||{k:0},0,0,this),this.ne=PropertyFactory.getProp(t,e.ne||{k:0},0,0,this),this.sm=PropertyFactory.getProp(t,e.sm||{k:100},0,0,this),this.a=PropertyFactory.getProp(t,e.a,0,.01,this),this.dynamicProperties.length||this.getValue()}return i.prototype={getMult:function(i){this._currentTextLength!==this.elem.textProperty.currentData.l.length&&this.getValue();var a=0,s=0,n=1,o=1;this.ne.v>0?a=this.ne.v/100:s=-this.ne.v/100,this.xe.v>0?n=1-this.xe.v/100:o=1+this.xe.v/100;var h=BezierFactory.getBezierEasing(a,s,n,o).get,l=0,p=this.finalS,c=this.finalE,f=this.data.sh;if(2===f)l=h(l=c===p?i>=c?1:0:t(0,e(.5/(c-p)+(i-p)/(c-p),1)));else if(3===f)l=h(l=c===p?i>=c?0:1:1-t(0,e(.5/(c-p)+(i-p)/(c-p),1)));else if(4===f)c===p?l=0:(l=t(0,e(.5/(c-p)+(i-p)/(c-p),1)))<.5?l*=2:l=1-2*(l-.5),l=h(l);else if(5===f){if(c===p)l=0;else{var d=c-p,m=-d/2+(i=e(t(0,i+.5-p),c-p)),u=d/2;l=Math.sqrt(1-m*m/(u*u))}l=h(l)}else 6===f?(c===p?l=0:(i=e(t(0,i+.5-p),c-p),l=(1+Math.cos(Math.PI+2*Math.PI*i/(c-p)))/2),l=h(l)):(i>=r(p)&&(l=t(0,e(i-p<0?e(c,1)-(p-i):c-i,1))),l=h(l));if(100!==this.sm.v){var y=.01*this.sm.v;0===y&&(y=1e-8);var g=.5-.5*y;l<g?l=0:(l=(l-g)/y)>1&&(l=1)}return l*this.a.v},getValue:function(t){this.iterateDynamicProperties(),this._mdf=t||this._mdf,this._currentTextLength=this.elem.textProperty.currentData.l.length||0,t&&2===this.data.r&&(this.e.v=this._currentTextLength);var e=2===this.data.r?1:100/this.data.totalChars,r=this.o.v/e,i=this.s.v/e+r,a=this.e.v/e+r;if(i>a){var s=i;i=a,a=s}this.finalS=i,this.finalE=a}},extendPrototype([DynamicPropertyContainer],i),{getTextSelectorProp:function(t,e,r){return new i(t,e,r)}}}(),poolFactory=function(t,e,r){var i=0,a=t,s=createSizedArray(a);return{newElement:function(){return i?s[i-=1]:e()},release:function(t){i===a&&(s=pooling.double(s),a*=2),r&&r(t),s[i]=t,i+=1}}},pooling={double:function(t){return t.concat(createSizedArray(t.length))}},pointPool=poolFactory(8,(function(){return createTypedArray(\"float32\",2)})),shapePool=(factory=poolFactory(4,(function(){return new ShapePath}),(function(t){var e,r=t._length;for(e=0;e<r;e+=1)pointPool.release(t.v[e]),pointPool.release(t.i[e]),pointPool.release(t.o[e]),t.v[e]=null,t.i[e]=null,t.o[e]=null;t._length=0,t.c=!1})),factory.clone=function(t){var e,r=factory.newElement(),i=void 0===t._length?t.v.length:t._length;for(r.setLength(i),r.c=t.c,e=0;e<i;e+=1)r.setTripleAt(t.v[e][0],t.v[e][1],t.o[e][0],t.o[e][1],t.i[e][0],t.i[e][1],e);return r},factory),factory,shapeCollectionPool=function(){var t={newShapeCollection:function(){return e?i[e-=1]:new ShapeCollection},release:function(t){var a,s=t._length;for(a=0;a<s;a+=1)shapePool.release(t.shapes[a]);t._length=0,e===r&&(i=pooling.double(i),r*=2),i[e]=t,e+=1}},e=0,r=4,i=createSizedArray(r);return t}(),segmentsLengthPool=poolFactory(8,(function(){return{lengths:[],totalLength:0}}),(function(t){var e,r=t.lengths.length;for(e=0;e<r;e+=1)bezierLengthPool.release(t.lengths[e]);t.lengths.length=0})),bezierLengthPool=poolFactory(8,(function(){return{addedLength:0,percents:createTypedArray(\"float32\",defaultCurveSegments),lengths:createTypedArray(\"float32\",defaultCurveSegments)}})),markerParser=function(){function t(t){for(var e,r=t.split(\"\\r\\n\"),i={},a=0,s=0;s<r.length;s+=1)2===(e=r[s].split(\":\")).length&&(i[e[0]]=e[1].trim(),a+=1);if(0===a)throw new Error;return i}return function(e){for(var r=[],i=0;i<e.length;i+=1){var a=e[i],s={time:a.tm,duration:a.dr};try{s.payload=JSON.parse(e[i].cm)}catch(r){try{s.payload=t(e[i].cm)}catch(t){s.payload={name:e[i]}}}r.push(s)}return r}}();function BaseRenderer(){}function SVGRenderer(t,e){this.animationItem=t,this.layers=null,this.renderedFrame=-1,this.svgElement=createNS(\"svg\");var r=\"\";if(e&&e.title){var i=createNS(\"title\"),a=createElementID();i.setAttribute(\"id\",a),i.textContent=e.title,this.svgElement.appendChild(i),r+=a}if(e&&e.description){var s=createNS(\"desc\"),n=createElementID();s.setAttribute(\"id\",n),s.textContent=e.description,this.svgElement.appendChild(s),r+=\" \"+n}r&&this.svgElement.setAttribute(\"aria-labelledby\",r);var o=createNS(\"defs\");this.svgElement.appendChild(o);var h=createNS(\"g\");this.svgElement.appendChild(h),this.layerElement=h,this.renderConfig={preserveAspectRatio:e&&e.preserveAspectRatio||\"xMidYMid meet\",imagePreserveAspectRatio:e&&e.imagePreserveAspectRatio||\"xMidYMid slice\",contentVisibility:e&&e.contentVisibility||\"visible\",progressiveLoad:e&&e.progressiveLoad||!1,hideOnTransparent:!(e&&!1===e.hideOnTransparent),viewBoxOnly:e&&e.viewBoxOnly||!1,viewBoxSize:e&&e.viewBoxSize||!1,className:e&&e.className||\"\",id:e&&e.id||\"\",focusable:e&&e.focusable,filterSize:{width:e&&e.filterSize&&e.filterSize.width||\"100%\",height:e&&e.filterSize&&e.filterSize.height||\"100%\",x:e&&e.filterSize&&e.filterSize.x||\"0%\",y:e&&e.filterSize&&e.filterSize.y||\"0%\"}},this.globalData={_mdf:!1,frameNum:-1,defs:o,renderConfig:this.renderConfig},this.elements=[],this.pendingElements=[],this.destroyed=!1,this.rendererType=\"svg\"}function CanvasRenderer(t,e){this.animationItem=t,this.renderConfig={clearCanvas:!e||void 0===e.clearCanvas||e.clearCanvas,context:e&&e.context||null,progressiveLoad:e&&e.progressiveLoad||!1,preserveAspectRatio:e&&e.preserveAspectRatio||\"xMidYMid meet\",imagePreserveAspectRatio:e&&e.imagePreserveAspectRatio||\"xMidYMid slice\",contentVisibility:e&&e.contentVisibility||\"visible\",className:e&&e.className||\"\",id:e&&e.id||\"\"},this.renderConfig.dpr=e&&e.dpr||1,this.animationItem.wrapper&&(this.renderConfig.dpr=e&&e.dpr||window.devicePixelRatio||1),this.renderedFrame=-1,this.globalData={frameNum:-1,_mdf:!1,renderConfig:this.renderConfig,currentGlobalAlpha:-1},this.contextData=new CVContextData,this.elements=[],this.pendingElements=[],this.transformMat=new Matrix,this.completeLayers=!1,this.rendererType=\"canvas\"}function HybridRenderer(t,e){this.animationItem=t,this.layers=null,this.renderedFrame=-1,this.renderConfig={className:e&&e.className||\"\",imagePreserveAspectRatio:e&&e.imagePreserveAspectRatio||\"xMidYMid slice\",hideOnTransparent:!(e&&!1===e.hideOnTransparent),filterSize:{width:e&&e.filterSize&&e.filterSize.width||\"400%\",height:e&&e.filterSize&&e.filterSize.height||\"400%\",x:e&&e.filterSize&&e.filterSize.x||\"-100%\",y:e&&e.filterSize&&e.filterSize.y||\"-100%\"}},this.globalData={_mdf:!1,frameNum:-1,renderConfig:this.renderConfig},this.pendingElements=[],this.elements=[],this.threeDElements=[],this.destroyed=!1,this.camera=null,this.supports3d=!0,this.rendererType=\"html\"}function MaskElement(t,e,r){this.data=t,this.element=e,this.globalData=r,this.storedData=[],this.masksProperties=this.data.masksProperties||[],this.maskElement=null;var i,a,s=this.globalData.defs,n=this.masksProperties?this.masksProperties.length:0;this.viewData=createSizedArray(n),this.solidPath=\"\";var o,h,l,p,c,f,d=this.masksProperties,m=0,u=[],y=createElementID(),g=\"clipPath\",v=\"clip-path\";for(i=0;i<n;i+=1)if((\"a\"!==d[i].mode&&\"n\"!==d[i].mode||d[i].inv||100!==d[i].o.k||d[i].o.x)&&(g=\"mask\",v=\"mask\"),\"s\"!==d[i].mode&&\"i\"!==d[i].mode||0!==m?l=null:((l=createNS(\"rect\")).setAttribute(\"fill\",\"#ffffff\"),l.setAttribute(\"width\",this.element.comp.data.w||0),l.setAttribute(\"height\",this.element.comp.data.h||0),u.push(l)),a=createNS(\"path\"),\"n\"===d[i].mode)this.viewData[i]={op:PropertyFactory.getProp(this.element,d[i].o,0,.01,this.element),prop:ShapePropertyFactory.getShapeProp(this.element,d[i],3),elem:a,lastPath:\"\"},s.appendChild(a);else{var b;if(m+=1,a.setAttribute(\"fill\",\"s\"===d[i].mode?\"#000000\":\"#ffffff\"),a.setAttribute(\"clip-rule\",\"nonzero\"),0!==d[i].x.k?(g=\"mask\",v=\"mask\",f=PropertyFactory.getProp(this.element,d[i].x,0,null,this.element),b=createElementID(),(p=createNS(\"filter\")).setAttribute(\"id\",b),(c=createNS(\"feMorphology\")).setAttribute(\"operator\",\"erode\"),c.setAttribute(\"in\",\"SourceGraphic\"),c.setAttribute(\"radius\",\"0\"),p.appendChild(c),s.appendChild(p),a.setAttribute(\"stroke\",\"s\"===d[i].mode?\"#000000\":\"#ffffff\")):(c=null,f=null),this.storedData[i]={elem:a,x:f,expan:c,lastPath:\"\",lastOperator:\"\",filterId:b,lastRadius:0},\"i\"===d[i].mode){h=u.length;var _=createNS(\"g\");for(o=0;o<h;o+=1)_.appendChild(u[o]);var P=createNS(\"mask\");P.setAttribute(\"mask-type\",\"alpha\"),P.setAttribute(\"id\",y+\"_\"+m),P.appendChild(a),s.appendChild(P),_.setAttribute(\"mask\",\"url(\"+locationHref+\"#\"+y+\"_\"+m+\")\"),u.length=0,u.push(_)}else u.push(a);d[i].inv&&!this.solidPath&&(this.solidPath=this.createLayerSolidPath()),this.viewData[i]={elem:a,lastPath:\"\",op:PropertyFactory.getProp(this.element,d[i].o,0,.01,this.element),prop:ShapePropertyFactory.getShapeProp(this.element,d[i],3),invRect:l},this.viewData[i].prop.k||this.drawPath(d[i],this.viewData[i].prop.v,this.viewData[i])}for(this.maskElement=createNS(g),n=u.length,i=0;i<n;i+=1)this.maskElement.appendChild(u[i]);m>0&&(this.maskElement.setAttribute(\"id\",y),this.element.maskedElement.setAttribute(v,\"url(\"+locationHref+\"#\"+y+\")\"),s.appendChild(this.maskElement)),this.viewData.length&&this.element.addRenderableComponent(this)}function HierarchyElement(){}function FrameElement(){}function TransformElement(){}function RenderableElement(){}function RenderableDOMElement(){}function ProcessedElement(t,e){this.elem=t,this.pos=e}function SVGStyleData(t,e){this.data=t,this.type=t.ty,this.d=\"\",this.lvl=e,this._mdf=!1,this.closed=!0===t.hd,this.pElem=createNS(\"path\"),this.msElem=null}function SVGShapeData(t,e,r){this.caches=[],this.styles=[],this.transformers=t,this.lStr=\"\",this.sh=r,this.lvl=e,this._isAnimated=!!r.k;for(var i=0,a=t.length;i<a;){if(t[i].mProps.dynamicProperties.length){this._isAnimated=!0;break}i+=1}}function SVGTransformData(t,e,r){this.transform={mProps:t,op:e,container:r},this.elements=[],this._isAnimated=this.transform.mProps.dynamicProperties.length||this.transform.op.effectsSequence.length}function SVGStrokeStyleData(t,e,r){this.initDynamicPropertyContainer(t),this.getValue=this.iterateDynamicProperties,this.o=PropertyFactory.getProp(t,e.o,0,.01,this),this.w=PropertyFactory.getProp(t,e.w,0,null,this),this.d=new DashProperty(t,e.d||{},\"svg\",this),this.c=PropertyFactory.getProp(t,e.c,1,255,this),this.style=r,this._isAnimated=!!this._isAnimated}function SVGFillStyleData(t,e,r){this.initDynamicPropertyContainer(t),this.getValue=this.iterateDynamicProperties,this.o=PropertyFactory.getProp(t,e.o,0,.01,this),this.c=PropertyFactory.getProp(t,e.c,1,255,this),this.style=r}function SVGGradientFillStyleData(t,e,r){this.initDynamicPropertyContainer(t),this.getValue=this.iterateDynamicProperties,this.initGradientData(t,e,r)}function SVGGradientStrokeStyleData(t,e,r){this.initDynamicPropertyContainer(t),this.getValue=this.iterateDynamicProperties,this.w=PropertyFactory.getProp(t,e.w,0,null,this),this.d=new DashProperty(t,e.d||{},\"svg\",this),this.initGradientData(t,e,r),this._isAnimated=!!this._isAnimated}function ShapeGroupData(){this.it=[],this.prevViewData=[],this.gr=createNS(\"g\")}BaseRenderer.prototype.checkLayers=function(t){var e,r,i=this.layers.length;for(this.completeLayers=!0,e=i-1;e>=0;e-=1)this.elements[e]||(r=this.layers[e]).ip-r.st<=t-this.layers[e].st&&r.op-r.st>t-this.layers[e].st&&this.buildItem(e),this.completeLayers=!!this.elements[e]&&this.completeLayers;this.checkPendingElements()},BaseRenderer.prototype.createItem=function(t){switch(t.ty){case 2:return this.createImage(t);case 0:return this.createComp(t);case 1:return this.createSolid(t);case 3:default:return this.createNull(t);case 4:return this.createShape(t);case 5:return this.createText(t);case 6:return this.createAudio(t);case 13:return this.createCamera(t);case 15:return this.createFootage(t)}},BaseRenderer.prototype.createCamera=function(){throw new Error(\"You're using a 3d camera. Try the html renderer.\")},BaseRenderer.prototype.createAudio=function(t){return new AudioElement(t,this.globalData,this)},BaseRenderer.prototype.createFootage=function(t){return new FootageElement(t,this.globalData,this)},BaseRenderer.prototype.buildAllItems=function(){var t,e=this.layers.length;for(t=0;t<e;t+=1)this.buildItem(t);this.checkPendingElements()},BaseRenderer.prototype.includeLayers=function(t){var e;this.completeLayers=!1;var r,i=t.length,a=this.layers.length;for(e=0;e<i;e+=1)for(r=0;r<a;){if(this.layers[r].id===t[e].id){this.layers[r]=t[e];break}r+=1}},BaseRenderer.prototype.setProjectInterface=function(t){this.globalData.projectInterface=t},BaseRenderer.prototype.initItems=function(){this.globalData.progressiveLoad||this.buildAllItems()},BaseRenderer.prototype.buildElementParenting=function(t,e,r){for(var i=this.elements,a=this.layers,s=0,n=a.length;s<n;)a[s].ind==e&&(i[s]&&!0!==i[s]?(r.push(i[s]),i[s].setAsParent(),void 0!==a[s].parent?this.buildElementParenting(t,a[s].parent,r):t.setHierarchy(r)):(this.buildItem(s),this.addPendingElement(t))),s+=1},BaseRenderer.prototype.addPendingElement=function(t){this.pendingElements.push(t)},BaseRenderer.prototype.searchExtraCompositions=function(t){var e,r=t.length;for(e=0;e<r;e+=1)if(t[e].xt){var i=this.createComp(t[e]);i.initExpressions(),this.globalData.projectInterface.registerComposition(i)}},BaseRenderer.prototype.setupGlobalData=function(t,e){this.globalData.fontManager=new FontManager,this.globalData.fontManager.addChars(t.chars),this.globalData.fontManager.addFonts(t.fonts,e),this.globalData.getAssetData=this.animationItem.getAssetData.bind(this.animationItem),this.globalData.getAssetsPath=this.animationItem.getAssetsPath.bind(this.animationItem),this.globalData.imageLoader=this.animationItem.imagePreloader,this.globalData.audioController=this.animationItem.audioController,this.globalData.frameId=0,this.globalData.frameRate=t.fr,this.globalData.nm=t.nm,this.globalData.compSize={w:t.w,h:t.h}},extendPrototype([BaseRenderer],SVGRenderer),SVGRenderer.prototype.createNull=function(t){return new NullElement(t,this.globalData,this)},SVGRenderer.prototype.createShape=function(t){return new SVGShapeElement(t,this.globalData,this)},SVGRenderer.prototype.createText=function(t){return new SVGTextLottieElement(t,this.globalData,this)},SVGRenderer.prototype.createImage=function(t){return new IImageElement(t,this.globalData,this)},SVGRenderer.prototype.createComp=function(t){return new SVGCompElement(t,this.globalData,this)},SVGRenderer.prototype.createSolid=function(t){return new ISolidElement(t,this.globalData,this)},SVGRenderer.prototype.configAnimation=function(t){this.svgElement.setAttribute(\"xmlns\",\"http://www.w3.org/2000/svg\"),this.renderConfig.viewBoxSize?this.svgElement.setAttribute(\"viewBox\",this.renderConfig.viewBoxSize):this.svgElement.setAttribute(\"viewBox\",\"0 0 \"+t.w+\" \"+t.h),this.renderConfig.viewBoxOnly||(this.svgElement.setAttribute(\"width\",t.w),this.svgElement.setAttribute(\"height\",t.h),this.svgElement.style.width=\"100%\",this.svgElement.style.height=\"100%\",this.svgElement.style.transform=\"translate3d(0,0,0)\",this.svgElement.style.contentVisibility=this.renderConfig.contentVisibility),this.renderConfig.className&&this.svgElement.setAttribute(\"class\",this.renderConfig.className),this.renderConfig.id&&this.svgElement.setAttribute(\"id\",this.renderConfig.id),void 0!==this.renderConfig.focusable&&this.svgElement.setAttribute(\"focusable\",this.renderConfig.focusable),this.svgElement.setAttribute(\"preserveAspectRatio\",this.renderConfig.preserveAspectRatio),this.animationItem.wrapper.appendChild(this.svgElement);var e=this.globalData.defs;this.setupGlobalData(t,e),this.globalData.progressiveLoad=this.renderConfig.progressiveLoad,this.data=t;var r=createNS(\"clipPath\"),i=createNS(\"rect\");i.setAttribute(\"width\",t.w),i.setAttribute(\"height\",t.h),i.setAttribute(\"x\",0),i.setAttribute(\"y\",0);var a=createElementID();r.setAttribute(\"id\",a),r.appendChild(i),this.layerElement.setAttribute(\"clip-path\",\"url(\"+locationHref+\"#\"+a+\")\"),e.appendChild(r),this.layers=t.layers,this.elements=createSizedArray(t.layers.length)},SVGRenderer.prototype.destroy=function(){var t;this.animationItem.wrapper&&(this.animationItem.wrapper.innerText=\"\"),this.layerElement=null,this.globalData.defs=null;var e=this.layers?this.layers.length:0;for(t=0;t<e;t+=1)this.elements[t]&&this.elements[t].destroy();this.elements.length=0,this.destroyed=!0,this.animationItem=null},SVGRenderer.prototype.updateContainerSize=function(){},SVGRenderer.prototype.buildItem=function(t){var e=this.elements;if(!e[t]&&99!==this.layers[t].ty){e[t]=!0;var r=this.createItem(this.layers[t]);e[t]=r,expressionsPlugin&&(0===this.layers[t].ty&&this.globalData.projectInterface.registerComposition(r),r.initExpressions()),this.appendElementInPos(r,t),this.layers[t].tt&&(this.elements[t-1]&&!0!==this.elements[t-1]?r.setMatte(e[t-1].layerId):(this.buildItem(t-1),this.addPendingElement(r)))}},SVGRenderer.prototype.checkPendingElements=function(){for(;this.pendingElements.length;){var t=this.pendingElements.pop();if(t.checkParenting(),t.data.tt)for(var e=0,r=this.elements.length;e<r;){if(this.elements[e]===t){t.setMatte(this.elements[e-1].layerId);break}e+=1}}},SVGRenderer.prototype.renderFrame=function(t){if(this.renderedFrame!==t&&!this.destroyed){var e;null===t?t=this.renderedFrame:this.renderedFrame=t,this.globalData.frameNum=t,this.globalData.frameId+=1,this.globalData.projectInterface.currentFrame=t,this.globalData._mdf=!1;var r=this.layers.length;for(this.completeLayers||this.checkLayers(t),e=r-1;e>=0;e-=1)(this.completeLayers||this.elements[e])&&this.elements[e].prepareFrame(t-this.layers[e].st);if(this.globalData._mdf)for(e=0;e<r;e+=1)(this.completeLayers||this.elements[e])&&this.elements[e].renderFrame()}},SVGRenderer.prototype.appendElementInPos=function(t,e){var r=t.getBaseElement();if(r){for(var i,a=0;a<e;)this.elements[a]&&!0!==this.elements[a]&&this.elements[a].getBaseElement()&&(i=this.elements[a].getBaseElement()),a+=1;i?this.layerElement.insertBefore(r,i):this.layerElement.appendChild(r)}},SVGRenderer.prototype.hide=function(){this.layerElement.style.display=\"none\"},SVGRenderer.prototype.show=function(){this.layerElement.style.display=\"block\"},extendPrototype([BaseRenderer],CanvasRenderer),CanvasRenderer.prototype.createShape=function(t){return new CVShapeElement(t,this.globalData,this)},CanvasRenderer.prototype.createText=function(t){return new CVTextElement(t,this.globalData,this)},CanvasRenderer.prototype.createImage=function(t){return new CVImageElement(t,this.globalData,this)},CanvasRenderer.prototype.createComp=function(t){return new CVCompElement(t,this.globalData,this)},CanvasRenderer.prototype.createSolid=function(t){return new CVSolidElement(t,this.globalData,this)},CanvasRenderer.prototype.createNull=SVGRenderer.prototype.createNull,CanvasRenderer.prototype.ctxTransform=function(t){if(1!==t[0]||0!==t[1]||0!==t[4]||1!==t[5]||0!==t[12]||0!==t[13])if(this.renderConfig.clearCanvas){this.transformMat.cloneFromProps(t);var e=this.contextData.cTr.props;this.transformMat.transform(e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8],e[9],e[10],e[11],e[12],e[13],e[14],e[15]),this.contextData.cTr.cloneFromProps(this.transformMat.props);var r=this.contextData.cTr.props;this.canvasContext.setTransform(r[0],r[1],r[4],r[5],r[12],r[13])}else this.canvasContext.transform(t[0],t[1],t[4],t[5],t[12],t[13])},CanvasRenderer.prototype.ctxOpacity=function(t){if(!this.renderConfig.clearCanvas)return this.canvasContext.globalAlpha*=t<0?0:t,void(this.globalData.currentGlobalAlpha=this.contextData.cO);this.contextData.cO*=t<0?0:t,this.globalData.currentGlobalAlpha!==this.contextData.cO&&(this.canvasContext.globalAlpha=this.contextData.cO,this.globalData.currentGlobalAlpha=this.contextData.cO)},CanvasRenderer.prototype.reset=function(){this.renderConfig.clearCanvas?this.contextData.reset():this.canvasContext.restore()},CanvasRenderer.prototype.save=function(t){if(this.renderConfig.clearCanvas){t&&this.canvasContext.save();var e,r=this.contextData.cTr.props;this.contextData._length<=this.contextData.cArrPos&&this.contextData.duplicate();var i=this.contextData.saved[this.contextData.cArrPos];for(e=0;e<16;e+=1)i[e]=r[e];this.contextData.savedOp[this.contextData.cArrPos]=this.contextData.cO,this.contextData.cArrPos+=1}else this.canvasContext.save()},CanvasRenderer.prototype.restore=function(t){if(this.renderConfig.clearCanvas){t&&(this.canvasContext.restore(),this.globalData.blendMode=\"source-over\"),this.contextData.cArrPos-=1;var e,r=this.contextData.saved[this.contextData.cArrPos],i=this.contextData.cTr.props;for(e=0;e<16;e+=1)i[e]=r[e];this.canvasContext.setTransform(r[0],r[1],r[4],r[5],r[12],r[13]),r=this.contextData.savedOp[this.contextData.cArrPos],this.contextData.cO=r,this.globalData.currentGlobalAlpha!==r&&(this.canvasContext.globalAlpha=r,this.globalData.currentGlobalAlpha=r)}else this.canvasContext.restore()},CanvasRenderer.prototype.configAnimation=function(t){if(this.animationItem.wrapper){this.animationItem.container=createTag(\"canvas\");var e=this.animationItem.container.style;e.width=\"100%\",e.height=\"100%\";var r=\"0px 0px 0px\";e.transformOrigin=r,e.mozTransformOrigin=r,e.webkitTransformOrigin=r,e[\"-webkit-transform\"]=r,e.contentVisibility=this.renderConfig.contentVisibility,this.animationItem.wrapper.appendChild(this.animationItem.container),this.canvasContext=this.animationItem.container.getContext(\"2d\"),this.renderConfig.className&&this.animationItem.container.setAttribute(\"class\",this.renderConfig.className),this.renderConfig.id&&this.animationItem.container.setAttribute(\"id\",this.renderConfig.id)}else this.canvasContext=this.renderConfig.context;this.data=t,this.layers=t.layers,this.transformCanvas={w:t.w,h:t.h,sx:0,sy:0,tx:0,ty:0},this.setupGlobalData(t,document.body),this.globalData.canvasContext=this.canvasContext,this.globalData.renderer=this,this.globalData.isDashed=!1,this.globalData.progressiveLoad=this.renderConfig.progressiveLoad,this.globalData.transformCanvas=this.transformCanvas,this.elements=createSizedArray(t.layers.length),this.updateContainerSize()},CanvasRenderer.prototype.updateContainerSize=function(){var t,e,r,i;if(this.reset(),this.animationItem.wrapper&&this.animationItem.container?(t=this.animationItem.wrapper.offsetWidth,e=this.animationItem.wrapper.offsetHeight,this.animationItem.container.setAttribute(\"width\",t*this.renderConfig.dpr),this.animationItem.container.setAttribute(\"height\",e*this.renderConfig.dpr)):(t=this.canvasContext.canvas.width*this.renderConfig.dpr,e=this.canvasContext.canvas.height*this.renderConfig.dpr),-1!==this.renderConfig.preserveAspectRatio.indexOf(\"meet\")||-1!==this.renderConfig.preserveAspectRatio.indexOf(\"slice\")){var a=this.renderConfig.preserveAspectRatio.split(\" \"),s=a[1]||\"meet\",n=a[0]||\"xMidYMid\",o=n.substr(0,4),h=n.substr(4);r=t/e,(i=this.transformCanvas.w/this.transformCanvas.h)>r&&\"meet\"===s||i<r&&\"slice\"===s?(this.transformCanvas.sx=t/(this.transformCanvas.w/this.renderConfig.dpr),this.transformCanvas.sy=t/(this.transformCanvas.w/this.renderConfig.dpr)):(this.transformCanvas.sx=e/(this.transformCanvas.h/this.renderConfig.dpr),this.transformCanvas.sy=e/(this.transformCanvas.h/this.renderConfig.dpr)),this.transformCanvas.tx=\"xMid\"===o&&(i<r&&\"meet\"===s||i>r&&\"slice\"===s)?(t-this.transformCanvas.w*(e/this.transformCanvas.h))/2*this.renderConfig.dpr:\"xMax\"===o&&(i<r&&\"meet\"===s||i>r&&\"slice\"===s)?(t-this.transformCanvas.w*(e/this.transformCanvas.h))*this.renderConfig.dpr:0,this.transformCanvas.ty=\"YMid\"===h&&(i>r&&\"meet\"===s||i<r&&\"slice\"===s)?(e-this.transformCanvas.h*(t/this.transformCanvas.w))/2*this.renderConfig.dpr:\"YMax\"===h&&(i>r&&\"meet\"===s||i<r&&\"slice\"===s)?(e-this.transformCanvas.h*(t/this.transformCanvas.w))*this.renderConfig.dpr:0}else\"none\"===this.renderConfig.preserveAspectRatio?(this.transformCanvas.sx=t/(this.transformCanvas.w/this.renderConfig.dpr),this.transformCanvas.sy=e/(this.transformCanvas.h/this.renderConfig.dpr),this.transformCanvas.tx=0,this.transformCanvas.ty=0):(this.transformCanvas.sx=this.renderConfig.dpr,this.transformCanvas.sy=this.renderConfig.dpr,this.transformCanvas.tx=0,this.transformCanvas.ty=0);this.transformCanvas.props=[this.transformCanvas.sx,0,0,0,0,this.transformCanvas.sy,0,0,0,0,1,0,this.transformCanvas.tx,this.transformCanvas.ty,0,1],this.ctxTransform(this.transformCanvas.props),this.canvasContext.beginPath(),this.canvasContext.rect(0,0,this.transformCanvas.w,this.transformCanvas.h),this.canvasContext.closePath(),this.canvasContext.clip(),this.renderFrame(this.renderedFrame,!0)},CanvasRenderer.prototype.destroy=function(){var t;for(this.renderConfig.clearCanvas&&this.animationItem.wrapper&&(this.animationItem.wrapper.innerText=\"\"),t=(this.layers?this.layers.length:0)-1;t>=0;t-=1)this.elements[t]&&this.elements[t].destroy();this.elements.length=0,this.globalData.canvasContext=null,this.animationItem.container=null,this.destroyed=!0},CanvasRenderer.prototype.renderFrame=function(t,e){if((this.renderedFrame!==t||!0!==this.renderConfig.clearCanvas||e)&&!this.destroyed&&-1!==t){var r;this.renderedFrame=t,this.globalData.frameNum=t-this.animationItem._isFirstFrame,this.globalData.frameId+=1,this.globalData._mdf=!this.renderConfig.clearCanvas||e,this.globalData.projectInterface.currentFrame=t;var i=this.layers.length;for(this.completeLayers||this.checkLayers(t),r=0;r<i;r+=1)(this.completeLayers||this.elements[r])&&this.elements[r].prepareFrame(t-this.layers[r].st);if(this.globalData._mdf){for(!0===this.renderConfig.clearCanvas?this.canvasContext.clearRect(0,0,this.transformCanvas.w,this.transformCanvas.h):this.save(),r=i-1;r>=0;r-=1)(this.completeLayers||this.elements[r])&&this.elements[r].renderFrame();!0!==this.renderConfig.clearCanvas&&this.restore()}}},CanvasRenderer.prototype.buildItem=function(t){var e=this.elements;if(!e[t]&&99!==this.layers[t].ty){var r=this.createItem(this.layers[t],this,this.globalData);e[t]=r,r.initExpressions()}},CanvasRenderer.prototype.checkPendingElements=function(){for(;this.pendingElements.length;)this.pendingElements.pop().checkParenting()},CanvasRenderer.prototype.hide=function(){this.animationItem.container.style.display=\"none\"},CanvasRenderer.prototype.show=function(){this.animationItem.container.style.display=\"block\"},extendPrototype([BaseRenderer],HybridRenderer),HybridRenderer.prototype.buildItem=SVGRenderer.prototype.buildItem,HybridRenderer.prototype.checkPendingElements=function(){for(;this.pendingElements.length;)this.pendingElements.pop().checkParenting()},HybridRenderer.prototype.appendElementInPos=function(t,e){var r=t.getBaseElement();if(r){var i=this.layers[e];if(i.ddd&&this.supports3d)this.addTo3dContainer(r,e);else if(this.threeDElements)this.addTo3dContainer(r,e);else{for(var a,s,n=0;n<e;)this.elements[n]&&!0!==this.elements[n]&&this.elements[n].getBaseElement&&(s=this.elements[n],a=(this.layers[n].ddd?this.getThreeDContainerByPos(n):s.getBaseElement())||a),n+=1;a?i.ddd&&this.supports3d||this.layerElement.insertBefore(r,a):i.ddd&&this.supports3d||this.layerElement.appendChild(r)}}},HybridRenderer.prototype.createShape=function(t){return this.supports3d?new HShapeElement(t,this.globalData,this):new SVGShapeElement(t,this.globalData,this)},HybridRenderer.prototype.createText=function(t){return this.supports3d?new HTextElement(t,this.globalData,this):new SVGTextLottieElement(t,this.globalData,this)},HybridRenderer.prototype.createCamera=function(t){return this.camera=new HCameraElement(t,this.globalData,this),this.camera},HybridRenderer.prototype.createImage=function(t){return this.supports3d?new HImageElement(t,this.globalData,this):new IImageElement(t,this.globalData,this)},HybridRenderer.prototype.createComp=function(t){return this.supports3d?new HCompElement(t,this.globalData,this):new SVGCompElement(t,this.globalData,this)},HybridRenderer.prototype.createSolid=function(t){return this.supports3d?new HSolidElement(t,this.globalData,this):new ISolidElement(t,this.globalData,this)},HybridRenderer.prototype.createNull=SVGRenderer.prototype.createNull,HybridRenderer.prototype.getThreeDContainerByPos=function(t){for(var e=0,r=this.threeDElements.length;e<r;){if(this.threeDElements[e].startPos<=t&&this.threeDElements[e].endPos>=t)return this.threeDElements[e].perspectiveElem;e+=1}return null},HybridRenderer.prototype.createThreeDContainer=function(t,e){var r,i,a=createTag(\"div\");styleDiv(a);var s=createTag(\"div\");if(styleDiv(s),\"3d\"===e){(r=a.style).width=this.globalData.compSize.w+\"px\",r.height=this.globalData.compSize.h+\"px\";var n=\"50% 50%\";r.webkitTransformOrigin=n,r.mozTransformOrigin=n,r.transformOrigin=n;var o=\"matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)\";(i=s.style).transform=o,i.webkitTransform=o}a.appendChild(s);var h={container:s,perspectiveElem:a,startPos:t,endPos:t,type:e};return this.threeDElements.push(h),h},HybridRenderer.prototype.build3dContainers=function(){var t,e,r=this.layers.length,i=\"\";for(t=0;t<r;t+=1)this.layers[t].ddd&&3!==this.layers[t].ty?(\"3d\"!==i&&(i=\"3d\",e=this.createThreeDContainer(t,\"3d\")),e.endPos=Math.max(e.endPos,t)):(\"2d\"!==i&&(i=\"2d\",e=this.createThreeDContainer(t,\"2d\")),e.endPos=Math.max(e.endPos,t));for(t=(r=this.threeDElements.length)-1;t>=0;t-=1)this.resizerElem.appendChild(this.threeDElements[t].perspectiveElem)},HybridRenderer.prototype.addTo3dContainer=function(t,e){for(var r=0,i=this.threeDElements.length;r<i;){if(e<=this.threeDElements[r].endPos){for(var a,s=this.threeDElements[r].startPos;s<e;)this.elements[s]&&this.elements[s].getBaseElement&&(a=this.elements[s].getBaseElement()),s+=1;a?this.threeDElements[r].container.insertBefore(t,a):this.threeDElements[r].container.appendChild(t);break}r+=1}},HybridRenderer.prototype.configAnimation=function(t){var e=createTag(\"div\"),r=this.animationItem.wrapper,i=e.style;i.width=t.w+\"px\",i.height=t.h+\"px\",this.resizerElem=e,styleDiv(e),i.transformStyle=\"flat\",i.mozTransformStyle=\"flat\",i.webkitTransformStyle=\"flat\",this.renderConfig.className&&e.setAttribute(\"class\",this.renderConfig.className),r.appendChild(e),i.overflow=\"hidden\";var a=createNS(\"svg\");a.setAttribute(\"width\",\"1\"),a.setAttribute(\"height\",\"1\"),styleDiv(a),this.resizerElem.appendChild(a);var s=createNS(\"defs\");a.appendChild(s),this.data=t,this.setupGlobalData(t,a),this.globalData.defs=s,this.layers=t.layers,this.layerElement=this.resizerElem,this.build3dContainers(),this.updateContainerSize()},HybridRenderer.prototype.destroy=function(){var t;this.animationItem.wrapper&&(this.animationItem.wrapper.innerText=\"\"),this.animationItem.container=null,this.globalData.defs=null;var e=this.layers?this.layers.length:0;for(t=0;t<e;t+=1)this.elements[t].destroy();this.elements.length=0,this.destroyed=!0,this.animationItem=null},HybridRenderer.prototype.updateContainerSize=function(){var t,e,r,i,a=this.animationItem.wrapper.offsetWidth,s=this.animationItem.wrapper.offsetHeight,n=a/s;this.globalData.compSize.w/this.globalData.compSize.h>n?(t=a/this.globalData.compSize.w,e=a/this.globalData.compSize.w,r=0,i=(s-this.globalData.compSize.h*(a/this.globalData.compSize.w))/2):(t=s/this.globalData.compSize.h,e=s/this.globalData.compSize.h,r=(a-this.globalData.compSize.w*(s/this.globalData.compSize.h))/2,i=0);var o=this.resizerElem.style;o.webkitTransform=\"matrix3d(\"+t+\",0,0,0,0,\"+e+\",0,0,0,0,1,0,\"+r+\",\"+i+\",0,1)\",o.transform=o.webkitTransform},HybridRenderer.prototype.renderFrame=SVGRenderer.prototype.renderFrame,HybridRenderer.prototype.hide=function(){this.resizerElem.style.display=\"none\"},HybridRenderer.prototype.show=function(){this.resizerElem.style.display=\"block\"},HybridRenderer.prototype.initItems=function(){if(this.buildAllItems(),this.camera)this.camera.setup();else{var t,e=this.globalData.compSize.w,r=this.globalData.compSize.h,i=this.threeDElements.length;for(t=0;t<i;t+=1){var a=this.threeDElements[t].perspectiveElem.style;a.webkitPerspective=Math.sqrt(Math.pow(e,2)+Math.pow(r,2))+\"px\",a.perspective=a.webkitPerspective}}},HybridRenderer.prototype.searchExtraCompositions=function(t){var e,r=t.length,i=createTag(\"div\");for(e=0;e<r;e+=1)if(t[e].xt){var a=this.createComp(t[e],i,this.globalData.comp,null);a.initExpressions(),this.globalData.projectInterface.registerComposition(a)}},MaskElement.prototype.getMaskProperty=function(t){return this.viewData[t].prop},MaskElement.prototype.renderFrame=function(t){var e,r=this.element.finalTransform.mat,i=this.masksProperties.length;for(e=0;e<i;e+=1)if((this.viewData[e].prop._mdf||t)&&this.drawPath(this.masksProperties[e],this.viewData[e].prop.v,this.viewData[e]),(this.viewData[e].op._mdf||t)&&this.viewData[e].elem.setAttribute(\"fill-opacity\",this.viewData[e].op.v),\"n\"!==this.masksProperties[e].mode&&(this.viewData[e].invRect&&(this.element.finalTransform.mProp._mdf||t)&&this.viewData[e].invRect.setAttribute(\"transform\",r.getInverseMatrix().to2dCSS()),this.storedData[e].x&&(this.storedData[e].x._mdf||t))){var a=this.storedData[e].expan;this.storedData[e].x.v<0?(\"erode\"!==this.storedData[e].lastOperator&&(this.storedData[e].lastOperator=\"erode\",this.storedData[e].elem.setAttribute(\"filter\",\"url(\"+locationHref+\"#\"+this.storedData[e].filterId+\")\")),a.setAttribute(\"radius\",-this.storedData[e].x.v)):(\"dilate\"!==this.storedData[e].lastOperator&&(this.storedData[e].lastOperator=\"dilate\",this.storedData[e].elem.setAttribute(\"filter\",null)),this.storedData[e].elem.setAttribute(\"stroke-width\",2*this.storedData[e].x.v))}},MaskElement.prototype.getMaskelement=function(){return this.maskElement},MaskElement.prototype.createLayerSolidPath=function(){var t=\"M0,0 \";return t+=\" h\"+this.globalData.compSize.w,t+=\" v\"+this.globalData.compSize.h,t+=\" h-\"+this.globalData.compSize.w,t+=\" v-\"+this.globalData.compSize.h+\" \"},MaskElement.prototype.drawPath=function(t,e,r){var i,a,s=\" M\"+e.v[0][0]+\",\"+e.v[0][1];for(a=e._length,i=1;i<a;i+=1)s+=\" C\"+e.o[i-1][0]+\",\"+e.o[i-1][1]+\" \"+e.i[i][0]+\",\"+e.i[i][1]+\" \"+e.v[i][0]+\",\"+e.v[i][1];if(e.c&&a>1&&(s+=\" C\"+e.o[i-1][0]+\",\"+e.o[i-1][1]+\" \"+e.i[0][0]+\",\"+e.i[0][1]+\" \"+e.v[0][0]+\",\"+e.v[0][1]),r.lastPath!==s){var n=\"\";r.elem&&(e.c&&(n=t.inv?this.solidPath+s:s),r.elem.setAttribute(\"d\",n)),r.lastPath=s}},MaskElement.prototype.destroy=function(){this.element=null,this.globalData=null,this.maskElement=null,this.data=null,this.masksProperties=null},HierarchyElement.prototype={initHierarchy:function(){this.hierarchy=[],this._isParent=!1,this.checkParenting()},setHierarchy:function(t){this.hierarchy=t},setAsParent:function(){this._isParent=!0},checkParenting:function(){void 0!==this.data.parent&&this.comp.buildElementParenting(this,this.data.parent,[])}},FrameElement.prototype={initFrame:function(){this._isFirstFrame=!1,this.dynamicProperties=[],this._mdf=!1},prepareProperties:function(t,e){var r,i=this.dynamicProperties.length;for(r=0;r<i;r+=1)(e||this._isParent&&\"transform\"===this.dynamicProperties[r].propType)&&(this.dynamicProperties[r].getValue(),this.dynamicProperties[r]._mdf&&(this.globalData._mdf=!0,this._mdf=!0))},addDynamicProperty:function(t){-1===this.dynamicProperties.indexOf(t)&&this.dynamicProperties.push(t)}},TransformElement.prototype={initTransform:function(){this.finalTransform={mProp:this.data.ks?TransformPropertyFactory.getTransformProperty(this,this.data.ks,this):{o:0},_matMdf:!1,_opMdf:!1,mat:new Matrix},this.data.ao&&(this.finalTransform.mProp.autoOriented=!0),this.data.ty},renderTransform:function(){if(this.finalTransform._opMdf=this.finalTransform.mProp.o._mdf||this._isFirstFrame,this.finalTransform._matMdf=this.finalTransform.mProp._mdf||this._isFirstFrame,this.hierarchy){var t,e=this.finalTransform.mat,r=0,i=this.hierarchy.length;if(!this.finalTransform._matMdf)for(;r<i;){if(this.hierarchy[r].finalTransform.mProp._mdf){this.finalTransform._matMdf=!0;break}r+=1}if(this.finalTransform._matMdf)for(t=this.finalTransform.mProp.v.props,e.cloneFromProps(t),r=0;r<i;r+=1)t=this.hierarchy[r].finalTransform.mProp.v.props,e.transform(t[0],t[1],t[2],t[3],t[4],t[5],t[6],t[7],t[8],t[9],t[10],t[11],t[12],t[13],t[14],t[15])}},globalToLocal:function(t){var e=[];e.push(this.finalTransform);for(var r,i=!0,a=this.comp;i;)a.finalTransform?(a.data.hasMask&&e.splice(0,0,a.finalTransform),a=a.comp):i=!1;var s,n=e.length;for(r=0;r<n;r+=1)s=e[r].mat.applyToPointArray(0,0,0),t=[t[0]-s[0],t[1]-s[1],0];return t},mHelper:new Matrix},RenderableElement.prototype={initRenderable:function(){this.isInRange=!1,this.hidden=!1,this.isTransparent=!1,this.renderableComponents=[]},addRenderableComponent:function(t){-1===this.renderableComponents.indexOf(t)&&this.renderableComponents.push(t)},removeRenderableComponent:function(t){-1!==this.renderableComponents.indexOf(t)&&this.renderableComponents.splice(this.renderableComponents.indexOf(t),1)},prepareRenderableFrame:function(t){this.checkLayerLimits(t)},checkTransparency:function(){this.finalTransform.mProp.o.v<=0?!this.isTransparent&&this.globalData.renderConfig.hideOnTransparent&&(this.isTransparent=!0,this.hide()):this.isTransparent&&(this.isTransparent=!1,this.show())},checkLayerLimits:function(t){this.data.ip-this.data.st<=t&&this.data.op-this.data.st>t?!0!==this.isInRange&&(this.globalData._mdf=!0,this._mdf=!0,this.isInRange=!0,this.show()):!1!==this.isInRange&&(this.globalData._mdf=!0,this.isInRange=!1,this.hide())},renderRenderable:function(){var t,e=this.renderableComponents.length;for(t=0;t<e;t+=1)this.renderableComponents[t].renderFrame(this._isFirstFrame)},sourceRectAtTime:function(){return{top:0,left:0,width:100,height:100}},getLayerSize:function(){return 5===this.data.ty?{w:this.data.textData.width,h:this.data.textData.height}:{w:this.data.width,h:this.data.height}}},extendPrototype([RenderableElement,createProxyFunction({initElement:function(t,e,r){this.initFrame(),this.initBaseData(t,e,r),this.initTransform(t,e,r),this.initHierarchy(),this.initRenderable(),this.initRendererElement(),this.createContainerElements(),this.createRenderableComponents(),this.createContent(),this.hide()},hide:function(){this.hidden||this.isInRange&&!this.isTransparent||((this.baseElement||this.layerElement).style.display=\"none\",this.hidden=!0)},show:function(){this.isInRange&&!this.isTransparent&&(this.data.hd||((this.baseElement||this.layerElement).style.display=\"block\"),this.hidden=!1,this._isFirstFrame=!0)},renderFrame:function(){this.data.hd||this.hidden||(this.renderTransform(),this.renderRenderable(),this.renderElement(),this.renderInnerContent(),this._isFirstFrame&&(this._isFirstFrame=!1))},renderInnerContent:function(){},prepareFrame:function(t){this._mdf=!1,this.prepareRenderableFrame(t),this.prepareProperties(t,this.isInRange),this.checkTransparency()},destroy:function(){this.innerElem=null,this.destroyBaseElement()}})],RenderableDOMElement),SVGStyleData.prototype.reset=function(){this.d=\"\",this._mdf=!1},SVGShapeData.prototype.setAsAnimated=function(){this._isAnimated=!0},extendPrototype([DynamicPropertyContainer],SVGStrokeStyleData),extendPrototype([DynamicPropertyContainer],SVGFillStyleData),SVGGradientFillStyleData.prototype.initGradientData=function(t,e,r){this.o=PropertyFactory.getProp(t,e.o,0,.01,this),this.s=PropertyFactory.getProp(t,e.s,1,null,this),this.e=PropertyFactory.getProp(t,e.e,1,null,this),this.h=PropertyFactory.getProp(t,e.h||{k:0},0,.01,this),this.a=PropertyFactory.getProp(t,e.a||{k:0},0,degToRads,this),this.g=new GradientProperty(t,e.g,this),this.style=r,this.stops=[],this.setGradientData(r.pElem,e),this.setGradientOpacity(e,r),this._isAnimated=!!this._isAnimated},SVGGradientFillStyleData.prototype.setGradientData=function(t,e){var r=createElementID(),i=createNS(1===e.t?\"linearGradient\":\"radialGradient\");i.setAttribute(\"id\",r),i.setAttribute(\"spreadMethod\",\"pad\"),i.setAttribute(\"gradientUnits\",\"userSpaceOnUse\");var a,s,n,o=[];for(n=4*e.g.p,s=0;s<n;s+=4)a=createNS(\"stop\"),i.appendChild(a),o.push(a);t.setAttribute(\"gf\"===e.ty?\"fill\":\"stroke\",\"url(\"+locationHref+\"#\"+r+\")\"),this.gf=i,this.cst=o},SVGGradientFillStyleData.prototype.setGradientOpacity=function(t,e){if(this.g._hasOpacity&&!this.g._collapsable){var r,i,a,s=createNS(\"mask\"),n=createNS(\"path\");s.appendChild(n);var o=createElementID(),h=createElementID();s.setAttribute(\"id\",h);var l=createNS(1===t.t?\"linearGradient\":\"radialGradient\");l.setAttribute(\"id\",o),l.setAttribute(\"spreadMethod\",\"pad\"),l.setAttribute(\"gradientUnits\",\"userSpaceOnUse\"),a=t.g.k.k[0].s?t.g.k.k[0].s.length:t.g.k.k.length;var p=this.stops;for(i=4*t.g.p;i<a;i+=2)(r=createNS(\"stop\")).setAttribute(\"stop-color\",\"rgb(255,255,255)\"),l.appendChild(r),p.push(r);n.setAttribute(\"gf\"===t.ty?\"fill\":\"stroke\",\"url(\"+locationHref+\"#\"+o+\")\"),\"gs\"===t.ty&&(n.setAttribute(\"stroke-linecap\",lineCapEnum[t.lc||2]),n.setAttribute(\"stroke-linejoin\",lineJoinEnum[t.lj||2]),1===t.lj&&n.setAttribute(\"stroke-miterlimit\",t.ml)),this.of=l,this.ms=s,this.ost=p,this.maskId=h,e.msElem=n}},extendPrototype([DynamicPropertyContainer],SVGGradientFillStyleData),extendPrototype([SVGGradientFillStyleData,DynamicPropertyContainer],SVGGradientStrokeStyleData);var SVGElementsRenderer=function(){var t=new Matrix,e=new Matrix;function r(t,e,r){(r||e.transform.op._mdf)&&e.transform.container.setAttribute(\"opacity\",e.transform.op.v),(r||e.transform.mProps._mdf)&&e.transform.container.setAttribute(\"transform\",e.transform.mProps.v.to2dCSS())}function i(r,i,a){var s,n,o,h,l,p,c,f,d,m,u,y=i.styles.length,g=i.lvl;for(p=0;p<y;p+=1){if(h=i.sh._mdf||a,i.styles[p].lvl<g){for(f=e.reset(),m=g-i.styles[p].lvl,u=i.transformers.length-1;!h&&m>0;)h=i.transformers[u].mProps._mdf||h,m-=1,u-=1;if(h)for(m=g-i.styles[p].lvl,u=i.transformers.length-1;m>0;)d=i.transformers[u].mProps.v.props,f.transform(d[0],d[1],d[2],d[3],d[4],d[5],d[6],d[7],d[8],d[9],d[10],d[11],d[12],d[13],d[14],d[15]),m-=1,u-=1}else f=t;if(n=(c=i.sh.paths)._length,h){for(o=\"\",s=0;s<n;s+=1)(l=c.shapes[s])&&l._length&&(o+=buildShapeString(l,l._length,l.c,f));i.caches[p]=o}else o=i.caches[p];i.styles[p].d+=!0===r.hd?\"\":o,i.styles[p]._mdf=h||i.styles[p]._mdf}}function a(t,e,r){var i=e.style;(e.c._mdf||r)&&i.pElem.setAttribute(\"fill\",\"rgb(\"+bmFloor(e.c.v[0])+\",\"+bmFloor(e.c.v[1])+\",\"+bmFloor(e.c.v[2])+\")\"),(e.o._mdf||r)&&i.pElem.setAttribute(\"fill-opacity\",e.o.v)}function s(t,e,r){n(t,e,r),o(0,e,r)}function n(t,e,r){var i,a,s,n,o,h=e.gf,l=e.g._hasOpacity,p=e.s.v,c=e.e.v;if(e.o._mdf||r){var f=\"gf\"===t.ty?\"fill-opacity\":\"stroke-opacity\";e.style.pElem.setAttribute(f,e.o.v)}if(e.s._mdf||r){var d=1===t.t?\"x1\":\"cx\",m=\"x1\"===d?\"y1\":\"cy\";h.setAttribute(d,p[0]),h.setAttribute(m,p[1]),l&&!e.g._collapsable&&(e.of.setAttribute(d,p[0]),e.of.setAttribute(m,p[1]))}if(e.g._cmdf||r){i=e.cst;var u=e.g.c;for(s=i.length,a=0;a<s;a+=1)(n=i[a]).setAttribute(\"offset\",u[4*a]+\"%\"),n.setAttribute(\"stop-color\",\"rgb(\"+u[4*a+1]+\",\"+u[4*a+2]+\",\"+u[4*a+3]+\")\")}if(l&&(e.g._omdf||r)){var y=e.g.o;for(s=(i=e.g._collapsable?e.cst:e.ost).length,a=0;a<s;a+=1)n=i[a],e.g._collapsable||n.setAttribute(\"offset\",y[2*a]+\"%\"),n.setAttribute(\"stop-opacity\",y[2*a+1])}if(1===t.t)(e.e._mdf||r)&&(h.setAttribute(\"x2\",c[0]),h.setAttribute(\"y2\",c[1]),l&&!e.g._collapsable&&(e.of.setAttribute(\"x2\",c[0]),e.of.setAttribute(\"y2\",c[1])));else if((e.s._mdf||e.e._mdf||r)&&(o=Math.sqrt(Math.pow(p[0]-c[0],2)+Math.pow(p[1]-c[1],2)),h.setAttribute(\"r\",o),l&&!e.g._collapsable&&e.of.setAttribute(\"r\",o)),e.e._mdf||e.h._mdf||e.a._mdf||r){o||(o=Math.sqrt(Math.pow(p[0]-c[0],2)+Math.pow(p[1]-c[1],2)));var g=Math.atan2(c[1]-p[1],c[0]-p[0]),v=e.h.v;v>=1?v=.99:v<=-1&&(v=-.99);var b=o*v,_=Math.cos(g+e.a.v)*b+p[0],P=Math.sin(g+e.a.v)*b+p[1];h.setAttribute(\"fx\",_),h.setAttribute(\"fy\",P),l&&!e.g._collapsable&&(e.of.setAttribute(\"fx\",_),e.of.setAttribute(\"fy\",P))}}function o(t,e,r){var i=e.style,a=e.d;a&&(a._mdf||r)&&a.dashStr&&(i.pElem.setAttribute(\"stroke-dasharray\",a.dashStr),i.pElem.setAttribute(\"stroke-dashoffset\",a.dashoffset[0])),e.c&&(e.c._mdf||r)&&i.pElem.setAttribute(\"stroke\",\"rgb(\"+bmFloor(e.c.v[0])+\",\"+bmFloor(e.c.v[1])+\",\"+bmFloor(e.c.v[2])+\")\"),(e.o._mdf||r)&&i.pElem.setAttribute(\"stroke-opacity\",e.o.v),(e.w._mdf||r)&&(i.pElem.setAttribute(\"stroke-width\",e.w.v),i.msElem&&i.msElem.setAttribute(\"stroke-width\",e.w.v))}return{createRenderFunction:function(t){switch(t.ty){case\"fl\":return a;case\"gf\":return n;case\"gs\":return s;case\"st\":return o;case\"sh\":case\"el\":case\"rc\":case\"sr\":return i;case\"tr\":return r;default:return null}}}}();function ShapeTransformManager(){this.sequences={},this.sequenceList=[],this.transform_key_count=0}function CVShapeData(t,e,r,i){this.styledShapes=[],this.tr=[0,0,0,0,0,0];var a,s=4;\"rc\"===e.ty?s=5:\"el\"===e.ty?s=6:\"sr\"===e.ty&&(s=7),this.sh=ShapePropertyFactory.getShapeProp(t,e,s,t);var n,o=r.length;for(a=0;a<o;a+=1)r[a].closed||(n={transforms:i.addTransformSequence(r[a].transforms),trNodes:[]},this.styledShapes.push(n),r[a].elements.push(n))}function BaseElement(){}function NullElement(t,e,r){this.initFrame(),this.initBaseData(t,e,r),this.initFrame(),this.initTransform(t,e,r),this.initHierarchy()}function SVGBaseElement(){}function IShapeElement(){}function ITextElement(){}function ICompElement(){}function IImageElement(t,e,r){this.assetData=e.getAssetData(t.refId),this.initElement(t,e,r),this.sourceRect={top:0,left:0,width:this.assetData.w,height:this.assetData.h}}function ISolidElement(t,e,r){this.initElement(t,e,r)}function AudioElement(t,e,r){this.initFrame(),this.initRenderable(),this.assetData=e.getAssetData(t.refId),this.initBaseData(t,e,r),this._isPlaying=!1,this._canPlay=!1;var i=this.globalData.getAssetsPath(this.assetData);this.audio=this.globalData.audioController.createAudio(i),this._currentTime=0,this.globalData.audioController.addAudio(this),this.tm=t.tm?PropertyFactory.getProp(this,t.tm,0,e.frameRate,this):{_placeholder:!0}}function FootageElement(t,e,r){this.initFrame(),this.initRenderable(),this.assetData=e.getAssetData(t.refId),this.footageData=e.imageLoader.getAsset(this.assetData),this.initBaseData(t,e,r)}function SVGCompElement(t,e,r){this.layers=t.layers,this.supports3d=!0,this.completeLayers=!1,this.pendingElements=[],this.elements=this.layers?createSizedArray(this.layers.length):[],this.initElement(t,e,r),this.tm=t.tm?PropertyFactory.getProp(this,t.tm,0,e.frameRate,this):{_placeholder:!0}}function SVGTextLottieElement(t,e,r){this.textSpans=[],this.renderType=\"svg\",this.initElement(t,e,r)}function SVGShapeElement(t,e,r){this.shapes=[],this.shapesData=t.shapes,this.stylesList=[],this.shapeModifiers=[],this.itemsData=[],this.processedElements=[],this.animatedContents=[],this.initElement(t,e,r),this.prevViewData=[]}function SVGTintFilter(t,e){this.filterManager=e;var r=createNS(\"feColorMatrix\");if(r.setAttribute(\"type\",\"matrix\"),r.setAttribute(\"color-interpolation-filters\",\"linearRGB\"),r.setAttribute(\"values\",\"0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0\"),r.setAttribute(\"result\",\"f1\"),t.appendChild(r),(r=createNS(\"feColorMatrix\")).setAttribute(\"type\",\"matrix\"),r.setAttribute(\"color-interpolation-filters\",\"sRGB\"),r.setAttribute(\"values\",\"1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0\"),r.setAttribute(\"result\",\"f2\"),t.appendChild(r),this.matrixFilter=r,100!==e.effectElements[2].p.v||e.effectElements[2].p.k){var i,a=createNS(\"feMerge\");t.appendChild(a),(i=createNS(\"feMergeNode\")).setAttribute(\"in\",\"SourceGraphic\"),a.appendChild(i),(i=createNS(\"feMergeNode\")).setAttribute(\"in\",\"f2\"),a.appendChild(i)}}function SVGFillFilter(t,e){this.filterManager=e;var r=createNS(\"feColorMatrix\");r.setAttribute(\"type\",\"matrix\"),r.setAttribute(\"color-interpolation-filters\",\"sRGB\"),r.setAttribute(\"values\",\"1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0\"),t.appendChild(r),this.matrixFilter=r}function SVGGaussianBlurEffect(t,e){t.setAttribute(\"x\",\"-100%\"),t.setAttribute(\"y\",\"-100%\"),t.setAttribute(\"width\",\"300%\"),t.setAttribute(\"height\",\"300%\"),this.filterManager=e;var r=createNS(\"feGaussianBlur\");t.appendChild(r),this.feGaussianBlur=r}function SVGStrokeEffect(t,e){this.initialized=!1,this.filterManager=e,this.elem=t,this.paths=[]}function SVGTritoneFilter(t,e){this.filterManager=e;var r=createNS(\"feColorMatrix\");r.setAttribute(\"type\",\"matrix\"),r.setAttribute(\"color-interpolation-filters\",\"linearRGB\"),r.setAttribute(\"values\",\"0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0\"),r.setAttribute(\"result\",\"f1\"),t.appendChild(r);var i=createNS(\"feComponentTransfer\");i.setAttribute(\"color-interpolation-filters\",\"sRGB\"),t.appendChild(i),this.matrixFilter=i;var a=createNS(\"feFuncR\");a.setAttribute(\"type\",\"table\"),i.appendChild(a),this.feFuncR=a;var s=createNS(\"feFuncG\");s.setAttribute(\"type\",\"table\"),i.appendChild(s),this.feFuncG=s;var n=createNS(\"feFuncB\");n.setAttribute(\"type\",\"table\"),i.appendChild(n),this.feFuncB=n}function SVGProLevelsFilter(t,e){this.filterManager=e;var r=this.filterManager.effectElements,i=createNS(\"feComponentTransfer\");(r[10].p.k||0!==r[10].p.v||r[11].p.k||1!==r[11].p.v||r[12].p.k||1!==r[12].p.v||r[13].p.k||0!==r[13].p.v||r[14].p.k||1!==r[14].p.v)&&(this.feFuncR=this.createFeFunc(\"feFuncR\",i)),(r[17].p.k||0!==r[17].p.v||r[18].p.k||1!==r[18].p.v||r[19].p.k||1!==r[19].p.v||r[20].p.k||0!==r[20].p.v||r[21].p.k||1!==r[21].p.v)&&(this.feFuncG=this.createFeFunc(\"feFuncG\",i)),(r[24].p.k||0!==r[24].p.v||r[25].p.k||1!==r[25].p.v||r[26].p.k||1!==r[26].p.v||r[27].p.k||0!==r[27].p.v||r[28].p.k||1!==r[28].p.v)&&(this.feFuncB=this.createFeFunc(\"feFuncB\",i)),(r[31].p.k||0!==r[31].p.v||r[32].p.k||1!==r[32].p.v||r[33].p.k||1!==r[33].p.v||r[34].p.k||0!==r[34].p.v||r[35].p.k||1!==r[35].p.v)&&(this.feFuncA=this.createFeFunc(\"feFuncA\",i)),(this.feFuncR||this.feFuncG||this.feFuncB||this.feFuncA)&&(i.setAttribute(\"color-interpolation-filters\",\"sRGB\"),t.appendChild(i),i=createNS(\"feComponentTransfer\")),(r[3].p.k||0!==r[3].p.v||r[4].p.k||1!==r[4].p.v||r[5].p.k||1!==r[5].p.v||r[6].p.k||0!==r[6].p.v||r[7].p.k||1!==r[7].p.v)&&(i.setAttribute(\"color-interpolation-filters\",\"sRGB\"),t.appendChild(i),this.feFuncRComposed=this.createFeFunc(\"feFuncR\",i),this.feFuncGComposed=this.createFeFunc(\"feFuncG\",i),this.feFuncBComposed=this.createFeFunc(\"feFuncB\",i))}function SVGDropShadowEffect(t,e){var r=e.container.globalData.renderConfig.filterSize;t.setAttribute(\"x\",r.x),t.setAttribute(\"y\",r.y),t.setAttribute(\"width\",r.width),t.setAttribute(\"height\",r.height),this.filterManager=e;var i=createNS(\"feGaussianBlur\");i.setAttribute(\"in\",\"SourceAlpha\"),i.setAttribute(\"result\",\"drop_shadow_1\"),i.setAttribute(\"stdDeviation\",\"0\"),this.feGaussianBlur=i,t.appendChild(i);var a=createNS(\"feOffset\");a.setAttribute(\"dx\",\"25\"),a.setAttribute(\"dy\",\"0\"),a.setAttribute(\"in\",\"drop_shadow_1\"),a.setAttribute(\"result\",\"drop_shadow_2\"),this.feOffset=a,t.appendChild(a);var s=createNS(\"feFlood\");s.setAttribute(\"flood-color\",\"#00ff00\"),s.setAttribute(\"flood-opacity\",\"1\"),s.setAttribute(\"result\",\"drop_shadow_3\"),this.feFlood=s,t.appendChild(s);var n=createNS(\"feComposite\");n.setAttribute(\"in\",\"drop_shadow_3\"),n.setAttribute(\"in2\",\"drop_shadow_2\"),n.setAttribute(\"operator\",\"in\"),n.setAttribute(\"result\",\"drop_shadow_4\"),t.appendChild(n);var o,h=createNS(\"feMerge\");t.appendChild(h),o=createNS(\"feMergeNode\"),h.appendChild(o),(o=createNS(\"feMergeNode\")).setAttribute(\"in\",\"SourceGraphic\"),this.feMergeNode=o,this.feMerge=h,this.originalNodeAdded=!1,h.appendChild(o)}ShapeTransformManager.prototype={addTransformSequence:function(t){var e,r=t.length,i=\"_\";for(e=0;e<r;e+=1)i+=t[e].transform.key+\"_\";var a=this.sequences[i];return a||(a={transforms:[].concat(t),finalTransform:new Matrix,_mdf:!1},this.sequences[i]=a,this.sequenceList.push(a)),a},processSequence:function(t,e){for(var r,i=0,a=t.transforms.length,s=e;i<a&&!e;){if(t.transforms[i].transform.mProps._mdf){s=!0;break}i+=1}if(s)for(t.finalTransform.reset(),i=a-1;i>=0;i-=1)r=t.transforms[i].transform.mProps.v.props,t.finalTransform.transform(r[0],r[1],r[2],r[3],r[4],r[5],r[6],r[7],r[8],r[9],r[10],r[11],r[12],r[13],r[14],r[15]);t._mdf=s},processSequences:function(t){var e,r=this.sequenceList.length;for(e=0;e<r;e+=1)this.processSequence(this.sequenceList[e],t)},getNewKey:function(){return this.transform_key_count+=1,\"_\"+this.transform_key_count}},CVShapeData.prototype.setAsAnimated=SVGShapeData.prototype.setAsAnimated,BaseElement.prototype={checkMasks:function(){if(!this.data.hasMask)return!1;for(var t=0,e=this.data.masksProperties.length;t<e;){if(\"n\"!==this.data.masksProperties[t].mode&&!1!==this.data.masksProperties[t].cl)return!0;t+=1}return!1},initExpressions:function(){this.layerInterface=LayerExpressionInterface(this),this.data.hasMask&&this.maskManager&&this.layerInterface.registerMaskInterface(this.maskManager);var t=EffectsExpressionInterface.createEffectsInterface(this,this.layerInterface);this.layerInterface.registerEffectsInterface(t),0===this.data.ty||this.data.xt?this.compInterface=CompExpressionInterface(this):4===this.data.ty?(this.layerInterface.shapeInterface=ShapeExpressionInterface(this.shapesData,this.itemsData,this.layerInterface),this.layerInterface.content=this.layerInterface.shapeInterface):5===this.data.ty&&(this.layerInterface.textInterface=TextExpressionInterface(this),this.layerInterface.text=this.layerInterface.textInterface)},setBlendMode:function(){var t=getBlendMode(this.data.bm);(this.baseElement||this.layerElement).style[\"mix-blend-mode\"]=t},initBaseData:function(t,e,r){this.globalData=e,this.comp=r,this.data=t,this.layerId=createElementID(),this.data.sr||(this.data.sr=1),this.effectsManager=new EffectsManager(this.data,this,this.dynamicProperties)},getType:function(){return this.type},sourceRectAtTime:function(){}},NullElement.prototype.prepareFrame=function(t){this.prepareProperties(t,!0)},NullElement.prototype.renderFrame=function(){},NullElement.prototype.getBaseElement=function(){return null},NullElement.prototype.destroy=function(){},NullElement.prototype.sourceRectAtTime=function(){},NullElement.prototype.hide=function(){},extendPrototype([BaseElement,TransformElement,HierarchyElement,FrameElement],NullElement),SVGBaseElement.prototype={initRendererElement:function(){this.layerElement=createNS(\"g\")},createContainerElements:function(){this.matteElement=createNS(\"g\"),this.transformedElement=this.layerElement,this.maskedElement=this.layerElement,this._sizeChanged=!1;var t,e,r,i=null;if(this.data.td){if(3==this.data.td||1==this.data.td){var a=createNS(\"mask\");a.setAttribute(\"id\",this.layerId),a.setAttribute(\"mask-type\",3==this.data.td?\"luminance\":\"alpha\"),a.appendChild(this.layerElement),i=a,this.globalData.defs.appendChild(a),featureSupport.maskType||1!=this.data.td||(a.setAttribute(\"mask-type\",\"luminance\"),t=createElementID(),e=filtersFactory.createFilter(t),this.globalData.defs.appendChild(e),e.appendChild(filtersFactory.createAlphaToLuminanceFilter()),(r=createNS(\"g\")).appendChild(this.layerElement),i=r,a.appendChild(r),r.setAttribute(\"filter\",\"url(\"+locationHref+\"#\"+t+\")\"))}else if(2==this.data.td){var s=createNS(\"mask\");s.setAttribute(\"id\",this.layerId),s.setAttribute(\"mask-type\",\"alpha\");var n=createNS(\"g\");s.appendChild(n),t=createElementID(),e=filtersFactory.createFilter(t);var o=createNS(\"feComponentTransfer\");o.setAttribute(\"in\",\"SourceGraphic\"),e.appendChild(o);var h=createNS(\"feFuncA\");h.setAttribute(\"type\",\"table\"),h.setAttribute(\"tableValues\",\"1.0 0.0\"),o.appendChild(h),this.globalData.defs.appendChild(e);var l=createNS(\"rect\");l.setAttribute(\"width\",this.comp.data.w),l.setAttribute(\"height\",this.comp.data.h),l.setAttribute(\"x\",\"0\"),l.setAttribute(\"y\",\"0\"),l.setAttribute(\"fill\",\"#ffffff\"),l.setAttribute(\"opacity\",\"0\"),n.setAttribute(\"filter\",\"url(\"+locationHref+\"#\"+t+\")\"),n.appendChild(l),n.appendChild(this.layerElement),i=n,featureSupport.maskType||(s.setAttribute(\"mask-type\",\"luminance\"),e.appendChild(filtersFactory.createAlphaToLuminanceFilter()),r=createNS(\"g\"),n.appendChild(l),r.appendChild(this.layerElement),i=r,n.appendChild(r)),this.globalData.defs.appendChild(s)}}else this.data.tt?(this.matteElement.appendChild(this.layerElement),i=this.matteElement,this.baseElement=this.matteElement):this.baseElement=this.layerElement;if(this.data.ln&&this.layerElement.setAttribute(\"id\",this.data.ln),this.data.cl&&this.layerElement.setAttribute(\"class\",this.data.cl),0===this.data.ty&&!this.data.hd){var p=createNS(\"clipPath\"),c=createNS(\"path\");c.setAttribute(\"d\",\"M0,0 L\"+this.data.w+\",0 L\"+this.data.w+\",\"+this.data.h+\" L0,\"+this.data.h+\"z\");var f=createElementID();if(p.setAttribute(\"id\",f),p.appendChild(c),this.globalData.defs.appendChild(p),this.checkMasks()){var d=createNS(\"g\");d.setAttribute(\"clip-path\",\"url(\"+locationHref+\"#\"+f+\")\"),d.appendChild(this.layerElement),this.transformedElement=d,i?i.appendChild(this.transformedElement):this.baseElement=this.transformedElement}else this.layerElement.setAttribute(\"clip-path\",\"url(\"+locationHref+\"#\"+f+\")\")}0!==this.data.bm&&this.setBlendMode()},renderElement:function(){this.finalTransform._matMdf&&this.transformedElement.setAttribute(\"transform\",this.finalTransform.mat.to2dCSS()),this.finalTransform._opMdf&&this.transformedElement.setAttribute(\"opacity\",this.finalTransform.mProp.o.v)},destroyBaseElement:function(){this.layerElement=null,this.matteElement=null,this.maskManager.destroy()},getBaseElement:function(){return this.data.hd?null:this.baseElement},createRenderableComponents:function(){this.maskManager=new MaskElement(this.data,this,this.globalData),this.renderableEffectsManager=new SVGEffects(this)},setMatte:function(t){this.matteElement&&this.matteElement.setAttribute(\"mask\",\"url(\"+locationHref+\"#\"+t+\")\")}},IShapeElement.prototype={addShapeToModifiers:function(t){var e,r=this.shapeModifiers.length;for(e=0;e<r;e+=1)this.shapeModifiers[e].addShape(t)},isShapeInAnimatedModifiers:function(t){for(var e=this.shapeModifiers.length;0<e;)if(this.shapeModifiers[0].isAnimatedWithShape(t))return!0;return!1},renderModifiers:function(){if(this.shapeModifiers.length){var t,e=this.shapes.length;for(t=0;t<e;t+=1)this.shapes[t].sh.reset();for(t=(e=this.shapeModifiers.length)-1;t>=0&&!this.shapeModifiers[t].processShapes(this._isFirstFrame);t-=1);}},searchProcessedElement:function(t){for(var e=this.processedElements,r=0,i=e.length;r<i;){if(e[r].elem===t)return e[r].pos;r+=1}return 0},addProcessedElement:function(t,e){for(var r=this.processedElements,i=r.length;i;)if(r[i-=1].elem===t)return void(r[i].pos=e);r.push(new ProcessedElement(t,e))},prepareFrame:function(t){this.prepareRenderableFrame(t),this.prepareProperties(t,this.isInRange)}},ITextElement.prototype.initElement=function(t,e,r){this.lettersChangedFlag=!0,this.initFrame(),this.initBaseData(t,e,r),this.textProperty=new TextProperty(this,t.t,this.dynamicProperties),this.textAnimator=new TextAnimatorProperty(t.t,this.renderType,this),this.initTransform(t,e,r),this.initHierarchy(),this.initRenderable(),this.initRendererElement(),this.createContainerElements(),this.createRenderableComponents(),this.createContent(),this.hide(),this.textAnimator.searchProperties(this.dynamicProperties)},ITextElement.prototype.prepareFrame=function(t){this._mdf=!1,this.prepareRenderableFrame(t),this.prepareProperties(t,this.isInRange),(this.textProperty._mdf||this.textProperty._isFirstFrame)&&(this.buildNewText(),this.textProperty._isFirstFrame=!1,this.textProperty._mdf=!1)},ITextElement.prototype.createPathShape=function(t,e){var r,i,a=e.length,s=\"\";for(r=0;r<a;r+=1)i=e[r].ks.k,s+=buildShapeString(i,i.i.length,!0,t);return s},ITextElement.prototype.updateDocumentData=function(t,e){this.textProperty.updateDocumentData(t,e)},ITextElement.prototype.canResizeFont=function(t){this.textProperty.canResizeFont(t)},ITextElement.prototype.setMinimumFontSize=function(t){this.textProperty.setMinimumFontSize(t)},ITextElement.prototype.applyTextPropertiesToMatrix=function(t,e,r,i,a){switch(t.ps&&e.translate(t.ps[0],t.ps[1]+t.ascent,0),e.translate(0,-t.ls,0),t.j){case 1:e.translate(t.justifyOffset+(t.boxWidth-t.lineWidths[r]),0,0);break;case 2:e.translate(t.justifyOffset+(t.boxWidth-t.lineWidths[r])/2,0,0)}e.translate(i,a,0)},ITextElement.prototype.buildColor=function(t){return\"rgb(\"+Math.round(255*t[0])+\",\"+Math.round(255*t[1])+\",\"+Math.round(255*t[2])+\")\"},ITextElement.prototype.emptyProp=new LetterProps,ITextElement.prototype.destroy=function(){},extendPrototype([BaseElement,TransformElement,HierarchyElement,FrameElement,RenderableDOMElement],ICompElement),ICompElement.prototype.initElement=function(t,e,r){this.initFrame(),this.initBaseData(t,e,r),this.initTransform(t,e,r),this.initRenderable(),this.initHierarchy(),this.initRendererElement(),this.createContainerElements(),this.createRenderableComponents(),!this.data.xt&&e.progressiveLoad||this.buildAllItems(),this.hide()},ICompElement.prototype.prepareFrame=function(t){if(this._mdf=!1,this.prepareRenderableFrame(t),this.prepareProperties(t,this.isInRange),this.isInRange||this.data.xt){if(this.tm._placeholder)this.renderedFrame=t/this.data.sr;else{var e=this.tm.v;e===this.data.op&&(e=this.data.op-1),this.renderedFrame=e}var r,i=this.elements.length;for(this.completeLayers||this.checkLayers(this.renderedFrame),r=i-1;r>=0;r-=1)(this.completeLayers||this.elements[r])&&(this.elements[r].prepareFrame(this.renderedFrame-this.layers[r].st),this.elements[r]._mdf&&(this._mdf=!0))}},ICompElement.prototype.renderInnerContent=function(){var t,e=this.layers.length;for(t=0;t<e;t+=1)(this.completeLayers||this.elements[t])&&this.elements[t].renderFrame()},ICompElement.prototype.setElements=function(t){this.elements=t},ICompElement.prototype.getElements=function(){return this.elements},ICompElement.prototype.destroyElements=function(){var t,e=this.layers.length;for(t=0;t<e;t+=1)this.elements[t]&&this.elements[t].destroy()},ICompElement.prototype.destroy=function(){this.destroyElements(),this.destroyBaseElement()},extendPrototype([BaseElement,TransformElement,SVGBaseElement,HierarchyElement,FrameElement,RenderableDOMElement],IImageElement),IImageElement.prototype.createContent=function(){var t=this.globalData.getAssetsPath(this.assetData);this.innerElem=createNS(\"image\"),this.innerElem.setAttribute(\"width\",this.assetData.w+\"px\"),this.innerElem.setAttribute(\"height\",this.assetData.h+\"px\"),this.innerElem.setAttribute(\"preserveAspectRatio\",this.assetData.pr||this.globalData.renderConfig.imagePreserveAspectRatio),this.innerElem.setAttributeNS(\"http://www.w3.org/1999/xlink\",\"href\",t),this.layerElement.appendChild(this.innerElem)},IImageElement.prototype.sourceRectAtTime=function(){return this.sourceRect},extendPrototype([IImageElement],ISolidElement),ISolidElement.prototype.createContent=function(){var t=createNS(\"rect\");t.setAttribute(\"width\",this.data.sw),t.setAttribute(\"height\",this.data.sh),t.setAttribute(\"fill\",this.data.sc),this.layerElement.appendChild(t)},AudioElement.prototype.prepareFrame=function(t){if(this.prepareRenderableFrame(t,!0),this.prepareProperties(t,!0),this.tm._placeholder)this._currentTime=t/this.data.sr;else{var e=this.tm.v;this._currentTime=e}},extendPrototype([RenderableElement,BaseElement,FrameElement],AudioElement),AudioElement.prototype.renderFrame=function(){this.isInRange&&this._canPlay&&(this._isPlaying?(!this.audio.playing()||Math.abs(this._currentTime/this.globalData.frameRate-this.audio.seek())>.1)&&this.audio.seek(this._currentTime/this.globalData.frameRate):(this.audio.play(),this.audio.seek(this._currentTime/this.globalData.frameRate),this._isPlaying=!0))},AudioElement.prototype.show=function(){},AudioElement.prototype.hide=function(){this.audio.pause(),this._isPlaying=!1},AudioElement.prototype.pause=function(){this.audio.pause(),this._isPlaying=!1,this._canPlay=!1},AudioElement.prototype.resume=function(){this._canPlay=!0},AudioElement.prototype.setRate=function(t){this.audio.rate(t)},AudioElement.prototype.volume=function(t){this.audio.volume(t)},AudioElement.prototype.getBaseElement=function(){return null},AudioElement.prototype.destroy=function(){},AudioElement.prototype.sourceRectAtTime=function(){},AudioElement.prototype.initExpressions=function(){},FootageElement.prototype.prepareFrame=function(){},extendPrototype([RenderableElement,BaseElement,FrameElement],FootageElement),FootageElement.prototype.getBaseElement=function(){return null},FootageElement.prototype.renderFrame=function(){},FootageElement.prototype.destroy=function(){},FootageElement.prototype.initExpressions=function(){this.layerInterface=FootageInterface(this)},FootageElement.prototype.getFootageData=function(){return this.footageData},extendPrototype([SVGRenderer,ICompElement,SVGBaseElement],SVGCompElement),extendPrototype([BaseElement,TransformElement,SVGBaseElement,HierarchyElement,FrameElement,RenderableDOMElement,ITextElement],SVGTextLottieElement),SVGTextLottieElement.prototype.createContent=function(){this.data.singleShape&&!this.globalData.fontManager.chars&&(this.textContainer=createNS(\"text\"))},SVGTextLottieElement.prototype.buildTextContents=function(t){for(var e=0,r=t.length,i=[],a=\"\";e<r;)t[e]===String.fromCharCode(13)||t[e]===String.fromCharCode(3)?(i.push(a),a=\"\"):a+=t[e],e+=1;return i.push(a),i},SVGTextLottieElement.prototype.buildNewText=function(){var t,e,r=this.textProperty.currentData;this.renderedLetters=createSizedArray(r?r.l.length:0),r.fc?this.layerElement.setAttribute(\"fill\",this.buildColor(r.fc)):this.layerElement.setAttribute(\"fill\",\"rgba(0,0,0,0)\"),r.sc&&(this.layerElement.setAttribute(\"stroke\",this.buildColor(r.sc)),this.layerElement.setAttribute(\"stroke-width\",r.sw)),this.layerElement.setAttribute(\"font-size\",r.finalSize);var i=this.globalData.fontManager.getFontByName(r.f);if(i.fClass)this.layerElement.setAttribute(\"class\",i.fClass);else{this.layerElement.setAttribute(\"font-family\",i.fFamily);var a=r.fWeight,s=r.fStyle;this.layerElement.setAttribute(\"font-style\",s),this.layerElement.setAttribute(\"font-weight\",a)}this.layerElement.setAttribute(\"aria-label\",r.t);var n,o=r.l||[],h=!!this.globalData.fontManager.chars;e=o.length;var l,p=this.mHelper,c=\"\",f=this.data.singleShape,d=0,m=0,u=!0,y=.001*r.tr*r.finalSize;if(!f||h||r.sz){var g,v,b=this.textSpans.length;for(t=0;t<e;t+=1)h&&f&&0!==t||(n=b>t?this.textSpans[t]:createNS(h?\"path\":\"text\"),b<=t&&(n.setAttribute(\"stroke-linecap\",\"butt\"),n.setAttribute(\"stroke-linejoin\",\"round\"),n.setAttribute(\"stroke-miterlimit\",\"4\"),this.textSpans[t]=n,this.layerElement.appendChild(n)),n.style.display=\"inherit\"),p.reset(),p.scale(r.finalSize/100,r.finalSize/100),f&&(o[t].n&&(d=-y,m+=r.yOffset,m+=u?1:0,u=!1),this.applyTextPropertiesToMatrix(r,p,o[t].line,d,m),d+=o[t].l||0,d+=y),h?(l=(g=(v=this.globalData.fontManager.getCharData(r.finalText[t],i.fStyle,this.globalData.fontManager.getFontByName(r.f).fFamily))&&v.data||{}).shapes?g.shapes[0].it:[],f?c+=this.createPathShape(p,l):n.setAttribute(\"d\",this.createPathShape(p,l))):(f&&n.setAttribute(\"transform\",\"translate(\"+p.props[12]+\",\"+p.props[13]+\")\"),n.textContent=o[t].val,n.setAttributeNS(\"http://www.w3.org/XML/1998/namespace\",\"xml:space\",\"preserve\"));f&&n&&n.setAttribute(\"d\",c)}else{var _=this.textContainer,P=\"start\";switch(r.j){case 1:P=\"end\";break;case 2:P=\"middle\";break;default:P=\"start\"}_.setAttribute(\"text-anchor\",P),_.setAttribute(\"letter-spacing\",y);var E=this.buildTextContents(r.finalText);for(e=E.length,m=r.ps?r.ps[1]+r.ascent:0,t=0;t<e;t+=1)(n=this.textSpans[t]||createNS(\"tspan\")).textContent=E[t],n.setAttribute(\"x\",0),n.setAttribute(\"y\",m),n.style.display=\"inherit\",_.appendChild(n),this.textSpans[t]=n,m+=r.finalLineHeight;this.layerElement.appendChild(_)}for(;t<this.textSpans.length;)this.textSpans[t].style.display=\"none\",t+=1;this._sizeChanged=!0},SVGTextLottieElement.prototype.sourceRectAtTime=function(){if(this.prepareFrame(this.comp.renderedFrame-this.data.st),this.renderInnerContent(),this._sizeChanged){this._sizeChanged=!1;var t=this.layerElement.getBBox();this.bbox={top:t.y,left:t.x,width:t.width,height:t.height}}return this.bbox},SVGTextLottieElement.prototype.renderInnerContent=function(){if(!this.data.singleShape&&(this.textAnimator.getMeasures(this.textProperty.currentData,this.lettersChangedFlag),this.lettersChangedFlag||this.textAnimator.lettersChangedFlag)){var t,e;this._sizeChanged=!0;var r,i,a=this.textAnimator.renderedLetters,s=this.textProperty.currentData.l;for(e=s.length,t=0;t<e;t+=1)s[t].n||(r=a[t],i=this.textSpans[t],r._mdf.m&&i.setAttribute(\"transform\",r.m),r._mdf.o&&i.setAttribute(\"opacity\",r.o),r._mdf.sw&&i.setAttribute(\"stroke-width\",r.sw),r._mdf.sc&&i.setAttribute(\"stroke\",r.sc),r._mdf.fc&&i.setAttribute(\"fill\",r.fc))}},extendPrototype([BaseElement,TransformElement,SVGBaseElement,IShapeElement,HierarchyElement,FrameElement,RenderableDOMElement],SVGShapeElement),SVGShapeElement.prototype.initSecondaryElement=function(){},SVGShapeElement.prototype.identityMatrix=new Matrix,SVGShapeElement.prototype.buildExpressionInterface=function(){},SVGShapeElement.prototype.createContent=function(){this.searchShapes(this.shapesData,this.itemsData,this.prevViewData,this.layerElement,0,[],!0),this.filterUniqueShapes()},SVGShapeElement.prototype.filterUniqueShapes=function(){var t,e,r,i,a=this.shapes.length,s=this.stylesList.length,n=[],o=!1;for(r=0;r<s;r+=1){for(i=this.stylesList[r],o=!1,n.length=0,t=0;t<a;t+=1)-1!==(e=this.shapes[t]).styles.indexOf(i)&&(n.push(e),o=e._isAnimated||o);n.length>1&&o&&this.setShapesAsAnimated(n)}},SVGShapeElement.prototype.setShapesAsAnimated=function(t){var e,r=t.length;for(e=0;e<r;e+=1)t[e].setAsAnimated()},SVGShapeElement.prototype.createStyleElement=function(t,e){var r,i=new SVGStyleData(t,e),a=i.pElem;return\"st\"===t.ty?r=new SVGStrokeStyleData(this,t,i):\"fl\"===t.ty?r=new SVGFillStyleData(this,t,i):\"gf\"!==t.ty&&\"gs\"!==t.ty||(r=new(\"gf\"===t.ty?SVGGradientFillStyleData:SVGGradientStrokeStyleData)(this,t,i),this.globalData.defs.appendChild(r.gf),r.maskId&&(this.globalData.defs.appendChild(r.ms),this.globalData.defs.appendChild(r.of),a.setAttribute(\"mask\",\"url(\"+locationHref+\"#\"+r.maskId+\")\"))),\"st\"!==t.ty&&\"gs\"!==t.ty||(a.setAttribute(\"stroke-linecap\",lineCapEnum[t.lc||2]),a.setAttribute(\"stroke-linejoin\",lineJoinEnum[t.lj||2]),a.setAttribute(\"fill-opacity\",\"0\"),1===t.lj&&a.setAttribute(\"stroke-miterlimit\",t.ml)),2===t.r&&a.setAttribute(\"fill-rule\",\"evenodd\"),t.ln&&a.setAttribute(\"id\",t.ln),t.cl&&a.setAttribute(\"class\",t.cl),t.bm&&(a.style[\"mix-blend-mode\"]=getBlendMode(t.bm)),this.stylesList.push(i),this.addToAnimatedContents(t,r),r},SVGShapeElement.prototype.createGroupElement=function(t){var e=new ShapeGroupData;return t.ln&&e.gr.setAttribute(\"id\",t.ln),t.cl&&e.gr.setAttribute(\"class\",t.cl),t.bm&&(e.gr.style[\"mix-blend-mode\"]=getBlendMode(t.bm)),e},SVGShapeElement.prototype.createTransformElement=function(t,e){var r=TransformPropertyFactory.getTransformProperty(this,t,this),i=new SVGTransformData(r,r.o,e);return this.addToAnimatedContents(t,i),i},SVGShapeElement.prototype.createShapeElement=function(t,e,r){var i=4;\"rc\"===t.ty?i=5:\"el\"===t.ty?i=6:\"sr\"===t.ty&&(i=7);var a=new SVGShapeData(e,r,ShapePropertyFactory.getShapeProp(this,t,i,this));return this.shapes.push(a),this.addShapeToModifiers(a),this.addToAnimatedContents(t,a),a},SVGShapeElement.prototype.addToAnimatedContents=function(t,e){for(var r=0,i=this.animatedContents.length;r<i;){if(this.animatedContents[r].element===e)return;r+=1}this.animatedContents.push({fn:SVGElementsRenderer.createRenderFunction(t),element:e,data:t})},SVGShapeElement.prototype.setElementStyles=function(t){var e,r=t.styles,i=this.stylesList.length;for(e=0;e<i;e+=1)this.stylesList[e].closed||r.push(this.stylesList[e])},SVGShapeElement.prototype.reloadShapes=function(){var t;this._isFirstFrame=!0;var e=this.itemsData.length;for(t=0;t<e;t+=1)this.prevViewData[t]=this.itemsData[t];for(this.searchShapes(this.shapesData,this.itemsData,this.prevViewData,this.layerElement,0,[],!0),this.filterUniqueShapes(),e=this.dynamicProperties.length,t=0;t<e;t+=1)this.dynamicProperties[t].getValue();this.renderModifiers()},SVGShapeElement.prototype.searchShapes=function(t,e,r,i,a,s,n){var o,h,l,p,c,f,d=[].concat(s),m=t.length-1,u=[],y=[];for(o=m;o>=0;o-=1){if((f=this.searchProcessedElement(t[o]))?e[o]=r[f-1]:t[o]._render=n,\"fl\"===t[o].ty||\"st\"===t[o].ty||\"gf\"===t[o].ty||\"gs\"===t[o].ty)f?e[o].style.closed=!1:e[o]=this.createStyleElement(t[o],a),t[o]._render&&e[o].style.pElem.parentNode!==i&&i.appendChild(e[o].style.pElem),u.push(e[o].style);else if(\"gr\"===t[o].ty){if(f)for(l=e[o].it.length,h=0;h<l;h+=1)e[o].prevViewData[h]=e[o].it[h];else e[o]=this.createGroupElement(t[o]);this.searchShapes(t[o].it,e[o].it,e[o].prevViewData,e[o].gr,a+1,d,n),t[o]._render&&e[o].gr.parentNode!==i&&i.appendChild(e[o].gr)}else\"tr\"===t[o].ty?(f||(e[o]=this.createTransformElement(t[o],i)),p=e[o].transform,d.push(p)):\"sh\"===t[o].ty||\"rc\"===t[o].ty||\"el\"===t[o].ty||\"sr\"===t[o].ty?(f||(e[o]=this.createShapeElement(t[o],d,a)),this.setElementStyles(e[o])):\"tm\"===t[o].ty||\"rd\"===t[o].ty||\"ms\"===t[o].ty||\"pb\"===t[o].ty?(f?(c=e[o]).closed=!1:((c=ShapeModifiers.getModifier(t[o].ty)).init(this,t[o]),e[o]=c,this.shapeModifiers.push(c)),y.push(c)):\"rp\"===t[o].ty&&(f?(c=e[o]).closed=!0:(c=ShapeModifiers.getModifier(t[o].ty),e[o]=c,c.init(this,t,o,e),this.shapeModifiers.push(c),n=!1),y.push(c));this.addProcessedElement(t[o],o+1)}for(m=u.length,o=0;o<m;o+=1)u[o].closed=!0;for(m=y.length,o=0;o<m;o+=1)y[o].closed=!0},SVGShapeElement.prototype.renderInnerContent=function(){var t;this.renderModifiers();var e=this.stylesList.length;for(t=0;t<e;t+=1)this.stylesList[t].reset();for(this.renderShape(),t=0;t<e;t+=1)(this.stylesList[t]._mdf||this._isFirstFrame)&&(this.stylesList[t].msElem&&(this.stylesList[t].msElem.setAttribute(\"d\",this.stylesList[t].d),this.stylesList[t].d=\"M0 0\"+this.stylesList[t].d),this.stylesList[t].pElem.setAttribute(\"d\",this.stylesList[t].d||\"M0 0\"))},SVGShapeElement.prototype.renderShape=function(){var t,e,r=this.animatedContents.length;for(t=0;t<r;t+=1)e=this.animatedContents[t],(this._isFirstFrame||e.element._isAnimated)&&!0!==e.data&&e.fn(e.data,e.element,this._isFirstFrame)},SVGShapeElement.prototype.destroy=function(){this.destroyBaseElement(),this.shapesData=null,this.itemsData=null},SVGTintFilter.prototype.renderFrame=function(t){if(t||this.filterManager._mdf){var e=this.filterManager.effectElements[0].p.v,r=this.filterManager.effectElements[1].p.v,i=this.filterManager.effectElements[2].p.v/100;this.matrixFilter.setAttribute(\"values\",r[0]-e[0]+\" 0 0 0 \"+e[0]+\" \"+(r[1]-e[1])+\" 0 0 0 \"+e[1]+\" \"+(r[2]-e[2])+\" 0 0 0 \"+e[2]+\" 0 0 0 \"+i+\" 0\")}},SVGFillFilter.prototype.renderFrame=function(t){if(t||this.filterManager._mdf){var e=this.filterManager.effectElements[2].p.v,r=this.filterManager.effectElements[6].p.v;this.matrixFilter.setAttribute(\"values\",\"0 0 0 0 \"+e[0]+\" 0 0 0 0 \"+e[1]+\" 0 0 0 0 \"+e[2]+\" 0 0 0 \"+r+\" 0\")}},SVGGaussianBlurEffect.prototype.renderFrame=function(t){if(t||this.filterManager._mdf){var e=.3*this.filterManager.effectElements[0].p.v,r=this.filterManager.effectElements[1].p.v,i=3==r?0:e,a=2==r?0:e;this.feGaussianBlur.setAttribute(\"stdDeviation\",i+\" \"+a);var s=1==this.filterManager.effectElements[2].p.v?\"wrap\":\"duplicate\";this.feGaussianBlur.setAttribute(\"edgeMode\",s)}},SVGStrokeEffect.prototype.initialize=function(){var t,e,r,i,a=this.elem.layerElement.children||this.elem.layerElement.childNodes;for(1===this.filterManager.effectElements[1].p.v?(i=this.elem.maskManager.masksProperties.length,r=0):i=1+(r=this.filterManager.effectElements[0].p.v-1),(e=createNS(\"g\")).setAttribute(\"fill\",\"none\"),e.setAttribute(\"stroke-linecap\",\"round\"),e.setAttribute(\"stroke-dashoffset\",1);r<i;r+=1)t=createNS(\"path\"),e.appendChild(t),this.paths.push({p:t,m:r});if(3===this.filterManager.effectElements[10].p.v){var s=createNS(\"mask\"),n=createElementID();s.setAttribute(\"id\",n),s.setAttribute(\"mask-type\",\"alpha\"),s.appendChild(e),this.elem.globalData.defs.appendChild(s);var o=createNS(\"g\");for(o.setAttribute(\"mask\",\"url(\"+locationHref+\"#\"+n+\")\");a[0];)o.appendChild(a[0]);this.elem.layerElement.appendChild(o),this.masker=s,e.setAttribute(\"stroke\",\"#fff\")}else if(1===this.filterManager.effectElements[10].p.v||2===this.filterManager.effectElements[10].p.v){if(2===this.filterManager.effectElements[10].p.v)for(a=this.elem.layerElement.children||this.elem.layerElement.childNodes;a.length;)this.elem.layerElement.removeChild(a[0]);this.elem.layerElement.appendChild(e),this.elem.layerElement.removeAttribute(\"mask\"),e.setAttribute(\"stroke\",\"#fff\")}this.initialized=!0,this.pathMasker=e},SVGStrokeEffect.prototype.renderFrame=function(t){var e;this.initialized||this.initialize();var r,i,a=this.paths.length;for(e=0;e<a;e+=1)if(-1!==this.paths[e].m&&(r=this.elem.maskManager.viewData[this.paths[e].m],i=this.paths[e].p,(t||this.filterManager._mdf||r.prop._mdf)&&i.setAttribute(\"d\",r.lastPath),t||this.filterManager.effectElements[9].p._mdf||this.filterManager.effectElements[4].p._mdf||this.filterManager.effectElements[7].p._mdf||this.filterManager.effectElements[8].p._mdf||r.prop._mdf)){var s;if(0!==this.filterManager.effectElements[7].p.v||100!==this.filterManager.effectElements[8].p.v){var n=.01*Math.min(this.filterManager.effectElements[7].p.v,this.filterManager.effectElements[8].p.v),o=.01*Math.max(this.filterManager.effectElements[7].p.v,this.filterManager.effectElements[8].p.v),h=i.getTotalLength();s=\"0 0 0 \"+h*n+\" \";var l,p=h*(o-n),c=1+2*this.filterManager.effectElements[4].p.v*this.filterManager.effectElements[9].p.v*.01,f=Math.floor(p/c);for(l=0;l<f;l+=1)s+=\"1 \"+2*this.filterManager.effectElements[4].p.v*this.filterManager.effectElements[9].p.v*.01+\" \";s+=\"0 \"+10*h+\" 0 0\"}else s=\"1 \"+2*this.filterManager.effectElements[4].p.v*this.filterManager.effectElements[9].p.v*.01;i.setAttribute(\"stroke-dasharray\",s)}if((t||this.filterManager.effectElements[4].p._mdf)&&this.pathMasker.setAttribute(\"stroke-width\",2*this.filterManager.effectElements[4].p.v),(t||this.filterManager.effectElements[6].p._mdf)&&this.pathMasker.setAttribute(\"opacity\",this.filterManager.effectElements[6].p.v),(1===this.filterManager.effectElements[10].p.v||2===this.filterManager.effectElements[10].p.v)&&(t||this.filterManager.effectElements[3].p._mdf)){var d=this.filterManager.effectElements[3].p.v;this.pathMasker.setAttribute(\"stroke\",\"rgb(\"+bmFloor(255*d[0])+\",\"+bmFloor(255*d[1])+\",\"+bmFloor(255*d[2])+\")\")}},SVGTritoneFilter.prototype.renderFrame=function(t){if(t||this.filterManager._mdf){var e=this.filterManager.effectElements[0].p.v,r=this.filterManager.effectElements[1].p.v,i=this.filterManager.effectElements[2].p.v,a=i[0]+\" \"+r[0]+\" \"+e[0],s=i[1]+\" \"+r[1]+\" \"+e[1],n=i[2]+\" \"+r[2]+\" \"+e[2];this.feFuncR.setAttribute(\"tableValues\",a),this.feFuncG.setAttribute(\"tableValues\",s),this.feFuncB.setAttribute(\"tableValues\",n)}},SVGProLevelsFilter.prototype.createFeFunc=function(t,e){var r=createNS(t);return r.setAttribute(\"type\",\"table\"),e.appendChild(r),r},SVGProLevelsFilter.prototype.getTableValue=function(t,e,r,i,a){for(var s,n,o=0,h=Math.min(t,e),l=Math.max(t,e),p=Array.call(null,{length:256}),c=0,f=a-i,d=e-t;o<=256;)n=(s=o/256)<=h?d<0?a:i:s>=l?d<0?i:a:i+f*Math.pow((s-t)/d,1/r),p[c]=n,c+=1,o+=256/255;return p.join(\" \")},SVGProLevelsFilter.prototype.renderFrame=function(t){if(t||this.filterManager._mdf){var e,r=this.filterManager.effectElements;this.feFuncRComposed&&(t||r[3].p._mdf||r[4].p._mdf||r[5].p._mdf||r[6].p._mdf||r[7].p._mdf)&&(e=this.getTableValue(r[3].p.v,r[4].p.v,r[5].p.v,r[6].p.v,r[7].p.v),this.feFuncRComposed.setAttribute(\"tableValues\",e),this.feFuncGComposed.setAttribute(\"tableValues\",e),this.feFuncBComposed.setAttribute(\"tableValues\",e)),this.feFuncR&&(t||r[10].p._mdf||r[11].p._mdf||r[12].p._mdf||r[13].p._mdf||r[14].p._mdf)&&(e=this.getTableValue(r[10].p.v,r[11].p.v,r[12].p.v,r[13].p.v,r[14].p.v),this.feFuncR.setAttribute(\"tableValues\",e)),this.feFuncG&&(t||r[17].p._mdf||r[18].p._mdf||r[19].p._mdf||r[20].p._mdf||r[21].p._mdf)&&(e=this.getTableValue(r[17].p.v,r[18].p.v,r[19].p.v,r[20].p.v,r[21].p.v),this.feFuncG.setAttribute(\"tableValues\",e)),this.feFuncB&&(t||r[24].p._mdf||r[25].p._mdf||r[26].p._mdf||r[27].p._mdf||r[28].p._mdf)&&(e=this.getTableValue(r[24].p.v,r[25].p.v,r[26].p.v,r[27].p.v,r[28].p.v),this.feFuncB.setAttribute(\"tableValues\",e)),this.feFuncA&&(t||r[31].p._mdf||r[32].p._mdf||r[33].p._mdf||r[34].p._mdf||r[35].p._mdf)&&(e=this.getTableValue(r[31].p.v,r[32].p.v,r[33].p.v,r[34].p.v,r[35].p.v),this.feFuncA.setAttribute(\"tableValues\",e))}},SVGDropShadowEffect.prototype.renderFrame=function(t){if(t||this.filterManager._mdf){if((t||this.filterManager.effectElements[4].p._mdf)&&this.feGaussianBlur.setAttribute(\"stdDeviation\",this.filterManager.effectElements[4].p.v/4),t||this.filterManager.effectElements[0].p._mdf){var e=this.filterManager.effectElements[0].p.v;this.feFlood.setAttribute(\"flood-color\",rgbToHex(Math.round(255*e[0]),Math.round(255*e[1]),Math.round(255*e[2])))}if((t||this.filterManager.effectElements[1].p._mdf)&&this.feFlood.setAttribute(\"flood-opacity\",this.filterManager.effectElements[1].p.v/255),t||this.filterManager.effectElements[2].p._mdf||this.filterManager.effectElements[3].p._mdf){var r=this.filterManager.effectElements[3].p.v,i=(this.filterManager.effectElements[2].p.v-90)*degToRads,a=r*Math.cos(i),s=r*Math.sin(i);this.feOffset.setAttribute(\"dx\",a),this.feOffset.setAttribute(\"dy\",s)}}};var _svgMatteSymbols=[];function SVGMatte3Effect(t,e,r){this.initialized=!1,this.filterManager=e,this.filterElem=t,this.elem=r,r.matteElement=createNS(\"g\"),r.matteElement.appendChild(r.layerElement),r.matteElement.appendChild(r.transformedElement),r.baseElement=r.matteElement}function SVGEffects(t){var e,r,i=t.data.ef?t.data.ef.length:0,a=createElementID(),s=filtersFactory.createFilter(a,!0),n=0;for(this.filters=[],e=0;e<i;e+=1)r=null,20===t.data.ef[e].ty?(n+=1,r=new SVGTintFilter(s,t.effectsManager.effectElements[e])):21===t.data.ef[e].ty?(n+=1,r=new SVGFillFilter(s,t.effectsManager.effectElements[e])):22===t.data.ef[e].ty?r=new SVGStrokeEffect(t,t.effectsManager.effectElements[e]):23===t.data.ef[e].ty?(n+=1,r=new SVGTritoneFilter(s,t.effectsManager.effectElements[e])):24===t.data.ef[e].ty?(n+=1,r=new SVGProLevelsFilter(s,t.effectsManager.effectElements[e])):25===t.data.ef[e].ty?(n+=1,r=new SVGDropShadowEffect(s,t.effectsManager.effectElements[e])):28===t.data.ef[e].ty?r=new SVGMatte3Effect(s,t.effectsManager.effectElements[e],t):29===t.data.ef[e].ty&&(n+=1,r=new SVGGaussianBlurEffect(s,t.effectsManager.effectElements[e])),r&&this.filters.push(r);n&&(t.globalData.defs.appendChild(s),t.layerElement.setAttribute(\"filter\",\"url(\"+locationHref+\"#\"+a+\")\")),this.filters.length&&t.addRenderableComponent(this)}function CVContextData(){var t;for(this.saved=[],this.cArrPos=0,this.cTr=new Matrix,this.cO=1,this.savedOp=createTypedArray(\"float32\",15),t=0;t<15;t+=1)this.saved[t]=createTypedArray(\"float32\",16);this._length=15}function CVBaseElement(){}function CVImageElement(t,e,r){this.assetData=e.getAssetData(t.refId),this.img=e.imageLoader.getAsset(this.assetData),this.initElement(t,e,r)}function CVCompElement(t,e,r){this.completeLayers=!1,this.layers=t.layers,this.pendingElements=[],this.elements=createSizedArray(this.layers.length),this.initElement(t,e,r),this.tm=t.tm?PropertyFactory.getProp(this,t.tm,0,e.frameRate,this):{_placeholder:!0}}function CVMaskElement(t,e){var r;this.data=t,this.element=e,this.masksProperties=this.data.masksProperties||[],this.viewData=createSizedArray(this.masksProperties.length);var i=this.masksProperties.length,a=!1;for(r=0;r<i;r+=1)\"n\"!==this.masksProperties[r].mode&&(a=!0),this.viewData[r]=ShapePropertyFactory.getShapeProp(this.element,this.masksProperties[r],3);this.hasMasks=a,a&&this.element.addRenderableComponent(this)}function CVShapeElement(t,e,r){this.shapes=[],this.shapesData=t.shapes,this.stylesList=[],this.itemsData=[],this.prevViewData=[],this.shapeModifiers=[],this.processedElements=[],this.transformsManager=new ShapeTransformManager,this.initElement(t,e,r)}function CVSolidElement(t,e,r){this.initElement(t,e,r)}function CVTextElement(t,e,r){this.textSpans=[],this.yOffset=0,this.fillColorAnim=!1,this.strokeColorAnim=!1,this.strokeWidthAnim=!1,this.stroke=!1,this.fill=!1,this.justifyOffset=0,this.currentRender=null,this.renderType=\"canvas\",this.values={fill:\"rgba(0,0,0,0)\",stroke:\"rgba(0,0,0,0)\",sWidth:0,fValue:\"\"},this.initElement(t,e,r)}function CVEffects(){}function HBaseElement(){}function HSolidElement(t,e,r){this.initElement(t,e,r)}function HCompElement(t,e,r){this.layers=t.layers,this.supports3d=!t.hasMask,this.completeLayers=!1,this.pendingElements=[],this.elements=this.layers?createSizedArray(this.layers.length):[],this.initElement(t,e,r),this.tm=t.tm?PropertyFactory.getProp(this,t.tm,0,e.frameRate,this):{_placeholder:!0}}function HShapeElement(t,e,r){this.shapes=[],this.shapesData=t.shapes,this.stylesList=[],this.shapeModifiers=[],this.itemsData=[],this.processedElements=[],this.animatedContents=[],this.shapesContainer=createNS(\"g\"),this.initElement(t,e,r),this.prevViewData=[],this.currentBBox={x:999999,y:-999999,h:0,w:0}}function HTextElement(t,e,r){this.textSpans=[],this.textPaths=[],this.currentBBox={x:999999,y:-999999,h:0,w:0},this.renderType=\"svg\",this.isMasked=!1,this.initElement(t,e,r)}function HImageElement(t,e,r){this.assetData=e.getAssetData(t.refId),this.initElement(t,e,r)}function HCameraElement(t,e,r){this.initFrame(),this.initBaseData(t,e,r),this.initHierarchy();var i=PropertyFactory.getProp;if(this.pe=i(this,t.pe,0,0,this),t.ks.p.s?(this.px=i(this,t.ks.p.x,1,0,this),this.py=i(this,t.ks.p.y,1,0,this),this.pz=i(this,t.ks.p.z,1,0,this)):this.p=i(this,t.ks.p,1,0,this),t.ks.a&&(this.a=i(this,t.ks.a,1,0,this)),t.ks.or.k.length&&t.ks.or.k[0].to){var a,s=t.ks.or.k.length;for(a=0;a<s;a+=1)t.ks.or.k[a].to=null,t.ks.or.k[a].ti=null}this.or=i(this,t.ks.or,1,degToRads,this),this.or.sh=!0,this.rx=i(this,t.ks.rx,0,degToRads,this),this.ry=i(this,t.ks.ry,0,degToRads,this),this.rz=i(this,t.ks.rz,0,degToRads,this),this.mat=new Matrix,this._prevMat=new Matrix,this._isFirstFrame=!0,this.finalTransform={mProp:this}}function HEffects(){}SVGMatte3Effect.prototype.findSymbol=function(t){for(var e=0,r=_svgMatteSymbols.length;e<r;){if(_svgMatteSymbols[e]===t)return _svgMatteSymbols[e];e+=1}return null},SVGMatte3Effect.prototype.replaceInParent=function(t,e){var r=t.layerElement.parentNode;if(r){for(var i,a=r.children,s=0,n=a.length;s<n&&a[s]!==t.layerElement;)s+=1;s<=n-2&&(i=a[s+1]);var o=createNS(\"use\");o.setAttribute(\"href\",\"#\"+e),i?r.insertBefore(o,i):r.appendChild(o)}},SVGMatte3Effect.prototype.setElementAsMask=function(t,e){if(!this.findSymbol(e)){var r=createElementID(),i=createNS(\"mask\");i.setAttribute(\"id\",e.layerId),i.setAttribute(\"mask-type\",\"alpha\"),_svgMatteSymbols.push(e);var a=t.globalData.defs;a.appendChild(i);var s=createNS(\"symbol\");s.setAttribute(\"id\",r),this.replaceInParent(e,r),s.appendChild(e.layerElement),a.appendChild(s);var n=createNS(\"use\");n.setAttribute(\"href\",\"#\"+r),i.appendChild(n),e.data.hd=!1,e.show()}t.setMatte(e.layerId)},SVGMatte3Effect.prototype.initialize=function(){for(var t=this.filterManager.effectElements[0].p.v,e=this.elem.comp.elements,r=0,i=e.length;r<i;)e[r]&&e[r].data.ind===t&&this.setElementAsMask(this.elem,e[r]),r+=1;this.initialized=!0},SVGMatte3Effect.prototype.renderFrame=function(){this.initialized||this.initialize()},SVGEffects.prototype.renderFrame=function(t){var e,r=this.filters.length;for(e=0;e<r;e+=1)this.filters[e].renderFrame(t)},CVContextData.prototype.duplicate=function(){var t=2*this._length,e=this.savedOp;this.savedOp=createTypedArray(\"float32\",t),this.savedOp.set(e);var r=0;for(r=this._length;r<t;r+=1)this.saved[r]=createTypedArray(\"float32\",16);this._length=t},CVContextData.prototype.reset=function(){this.cArrPos=0,this.cTr.reset(),this.cO=1},CVBaseElement.prototype={createElements:function(){},initRendererElement:function(){},createContainerElements:function(){this.canvasContext=this.globalData.canvasContext,this.renderableEffectsManager=new CVEffects(this)},createContent:function(){},setBlendMode:function(){var t=this.globalData;if(t.blendMode!==this.data.bm){t.blendMode=this.data.bm;var e=getBlendMode(this.data.bm);t.canvasContext.globalCompositeOperation=e}},createRenderableComponents:function(){this.maskManager=new CVMaskElement(this.data,this)},hideElement:function(){this.hidden||this.isInRange&&!this.isTransparent||(this.hidden=!0)},showElement:function(){this.isInRange&&!this.isTransparent&&(this.hidden=!1,this._isFirstFrame=!0,this.maskManager._isFirstFrame=!0)},renderFrame:function(){if(!this.hidden&&!this.data.hd){this.renderTransform(),this.renderRenderable(),this.setBlendMode();var t=0===this.data.ty;this.globalData.renderer.save(t),this.globalData.renderer.ctxTransform(this.finalTransform.mat.props),this.globalData.renderer.ctxOpacity(this.finalTransform.mProp.o.v),this.renderInnerContent(),this.globalData.renderer.restore(t),this.maskManager.hasMasks&&this.globalData.renderer.restore(!0),this._isFirstFrame&&(this._isFirstFrame=!1)}},destroy:function(){this.canvasContext=null,this.data=null,this.globalData=null,this.maskManager.destroy()},mHelper:new Matrix},CVBaseElement.prototype.hide=CVBaseElement.prototype.hideElement,CVBaseElement.prototype.show=CVBaseElement.prototype.showElement,extendPrototype([BaseElement,TransformElement,CVBaseElement,HierarchyElement,FrameElement,RenderableElement],CVImageElement),CVImageElement.prototype.initElement=SVGShapeElement.prototype.initElement,CVImageElement.prototype.prepareFrame=IImageElement.prototype.prepareFrame,CVImageElement.prototype.createContent=function(){if(this.img.width&&(this.assetData.w!==this.img.width||this.assetData.h!==this.img.height)){var t=createTag(\"canvas\");t.width=this.assetData.w,t.height=this.assetData.h;var e,r,i=t.getContext(\"2d\"),a=this.img.width,s=this.img.height,n=a/s,o=this.assetData.w/this.assetData.h,h=this.assetData.pr||this.globalData.renderConfig.imagePreserveAspectRatio;n>o&&\"xMidYMid slice\"===h||n<o&&\"xMidYMid slice\"!==h?e=(r=s)*o:r=(e=a)/o,i.drawImage(this.img,(a-e)/2,(s-r)/2,e,r,0,0,this.assetData.w,this.assetData.h),this.img=t}},CVImageElement.prototype.renderInnerContent=function(){this.canvasContext.drawImage(this.img,0,0)},CVImageElement.prototype.destroy=function(){this.img=null},extendPrototype([CanvasRenderer,ICompElement,CVBaseElement],CVCompElement),CVCompElement.prototype.renderInnerContent=function(){var t,e=this.canvasContext;for(e.beginPath(),e.moveTo(0,0),e.lineTo(this.data.w,0),e.lineTo(this.data.w,this.data.h),e.lineTo(0,this.data.h),e.lineTo(0,0),e.clip(),t=this.layers.length-1;t>=0;t-=1)(this.completeLayers||this.elements[t])&&this.elements[t].renderFrame()},CVCompElement.prototype.destroy=function(){var t;for(t=this.layers.length-1;t>=0;t-=1)this.elements[t]&&this.elements[t].destroy();this.layers=null,this.elements=null},CVMaskElement.prototype.renderFrame=function(){if(this.hasMasks){var t,e,r,i,a=this.element.finalTransform.mat,s=this.element.canvasContext,n=this.masksProperties.length;for(s.beginPath(),t=0;t<n;t+=1)if(\"n\"!==this.masksProperties[t].mode){var o;this.masksProperties[t].inv&&(s.moveTo(0,0),s.lineTo(this.element.globalData.compSize.w,0),s.lineTo(this.element.globalData.compSize.w,this.element.globalData.compSize.h),s.lineTo(0,this.element.globalData.compSize.h),s.lineTo(0,0)),i=this.viewData[t].v,e=a.applyToPointArray(i.v[0][0],i.v[0][1],0),s.moveTo(e[0],e[1]);var h=i._length;for(o=1;o<h;o+=1)r=a.applyToTriplePoints(i.o[o-1],i.i[o],i.v[o]),s.bezierCurveTo(r[0],r[1],r[2],r[3],r[4],r[5]);r=a.applyToTriplePoints(i.o[o-1],i.i[0],i.v[0]),s.bezierCurveTo(r[0],r[1],r[2],r[3],r[4],r[5])}this.element.globalData.renderer.save(!0),s.clip()}},CVMaskElement.prototype.getMaskProperty=MaskElement.prototype.getMaskProperty,CVMaskElement.prototype.destroy=function(){this.element=null},extendPrototype([BaseElement,TransformElement,CVBaseElement,IShapeElement,HierarchyElement,FrameElement,RenderableElement],CVShapeElement),CVShapeElement.prototype.initElement=RenderableDOMElement.prototype.initElement,CVShapeElement.prototype.transformHelper={opacity:1,_opMdf:!1},CVShapeElement.prototype.dashResetter=[],CVShapeElement.prototype.createContent=function(){this.searchShapes(this.shapesData,this.itemsData,this.prevViewData,!0,[])},CVShapeElement.prototype.createStyleElement=function(t,e){var r={data:t,type:t.ty,preTransforms:this.transformsManager.addTransformSequence(e),transforms:[],elements:[],closed:!0===t.hd},i={};if(\"fl\"===t.ty||\"st\"===t.ty?(i.c=PropertyFactory.getProp(this,t.c,1,255,this),i.c.k||(r.co=\"rgb(\"+bmFloor(i.c.v[0])+\",\"+bmFloor(i.c.v[1])+\",\"+bmFloor(i.c.v[2])+\")\")):\"gf\"!==t.ty&&\"gs\"!==t.ty||(i.s=PropertyFactory.getProp(this,t.s,1,null,this),i.e=PropertyFactory.getProp(this,t.e,1,null,this),i.h=PropertyFactory.getProp(this,t.h||{k:0},0,.01,this),i.a=PropertyFactory.getProp(this,t.a||{k:0},0,degToRads,this),i.g=new GradientProperty(this,t.g,this)),i.o=PropertyFactory.getProp(this,t.o,0,.01,this),\"st\"===t.ty||\"gs\"===t.ty){if(r.lc=lineCapEnum[t.lc||2],r.lj=lineJoinEnum[t.lj||2],1==t.lj&&(r.ml=t.ml),i.w=PropertyFactory.getProp(this,t.w,0,null,this),i.w.k||(r.wi=i.w.v),t.d){var a=new DashProperty(this,t.d,\"canvas\",this);i.d=a,i.d.k||(r.da=i.d.dashArray,r.do=i.d.dashoffset[0])}}else r.r=2===t.r?\"evenodd\":\"nonzero\";return this.stylesList.push(r),i.style=r,i},CVShapeElement.prototype.createGroupElement=function(){return{it:[],prevViewData:[]}},CVShapeElement.prototype.createTransformElement=function(t){return{transform:{opacity:1,_opMdf:!1,key:this.transformsManager.getNewKey(),op:PropertyFactory.getProp(this,t.o,0,.01,this),mProps:TransformPropertyFactory.getTransformProperty(this,t,this)}}},CVShapeElement.prototype.createShapeElement=function(t){var e=new CVShapeData(this,t,this.stylesList,this.transformsManager);return this.shapes.push(e),this.addShapeToModifiers(e),e},CVShapeElement.prototype.reloadShapes=function(){var t;this._isFirstFrame=!0;var e=this.itemsData.length;for(t=0;t<e;t+=1)this.prevViewData[t]=this.itemsData[t];for(this.searchShapes(this.shapesData,this.itemsData,this.prevViewData,!0,[]),e=this.dynamicProperties.length,t=0;t<e;t+=1)this.dynamicProperties[t].getValue();this.renderModifiers(),this.transformsManager.processSequences(this._isFirstFrame)},CVShapeElement.prototype.addTransformToStyleList=function(t){var e,r=this.stylesList.length;for(e=0;e<r;e+=1)this.stylesList[e].closed||this.stylesList[e].transforms.push(t)},CVShapeElement.prototype.removeTransformFromStyleList=function(){var t,e=this.stylesList.length;for(t=0;t<e;t+=1)this.stylesList[t].closed||this.stylesList[t].transforms.pop()},CVShapeElement.prototype.closeStyles=function(t){var e,r=t.length;for(e=0;e<r;e+=1)t[e].closed=!0},CVShapeElement.prototype.searchShapes=function(t,e,r,i,a){var s,n,o,h,l,p,c=t.length-1,f=[],d=[],m=[].concat(a);for(s=c;s>=0;s-=1){if((h=this.searchProcessedElement(t[s]))?e[s]=r[h-1]:t[s]._shouldRender=i,\"fl\"===t[s].ty||\"st\"===t[s].ty||\"gf\"===t[s].ty||\"gs\"===t[s].ty)h?e[s].style.closed=!1:e[s]=this.createStyleElement(t[s],m),f.push(e[s].style);else if(\"gr\"===t[s].ty){if(h)for(o=e[s].it.length,n=0;n<o;n+=1)e[s].prevViewData[n]=e[s].it[n];else e[s]=this.createGroupElement(t[s]);this.searchShapes(t[s].it,e[s].it,e[s].prevViewData,i,m)}else\"tr\"===t[s].ty?(h||(p=this.createTransformElement(t[s]),e[s]=p),m.push(e[s]),this.addTransformToStyleList(e[s])):\"sh\"===t[s].ty||\"rc\"===t[s].ty||\"el\"===t[s].ty||\"sr\"===t[s].ty?h||(e[s]=this.createShapeElement(t[s])):\"tm\"===t[s].ty||\"rd\"===t[s].ty||\"pb\"===t[s].ty?(h?(l=e[s]).closed=!1:((l=ShapeModifiers.getModifier(t[s].ty)).init(this,t[s]),e[s]=l,this.shapeModifiers.push(l)),d.push(l)):\"rp\"===t[s].ty&&(h?(l=e[s]).closed=!0:(l=ShapeModifiers.getModifier(t[s].ty),e[s]=l,l.init(this,t,s,e),this.shapeModifiers.push(l),i=!1),d.push(l));this.addProcessedElement(t[s],s+1)}for(this.removeTransformFromStyleList(),this.closeStyles(f),c=d.length,s=0;s<c;s+=1)d[s].closed=!0},CVShapeElement.prototype.renderInnerContent=function(){this.transformHelper.opacity=1,this.transformHelper._opMdf=!1,this.renderModifiers(),this.transformsManager.processSequences(this._isFirstFrame),this.renderShape(this.transformHelper,this.shapesData,this.itemsData,!0)},CVShapeElement.prototype.renderShapeTransform=function(t,e){(t._opMdf||e.op._mdf||this._isFirstFrame)&&(e.opacity=t.opacity,e.opacity*=e.op.v,e._opMdf=!0)},CVShapeElement.prototype.drawLayer=function(){var t,e,r,i,a,s,n,o,h,l=this.stylesList.length,p=this.globalData.renderer,c=this.globalData.canvasContext;for(t=0;t<l;t+=1)if((\"st\"!==(o=(h=this.stylesList[t]).type)&&\"gs\"!==o||0!==h.wi)&&h.data._shouldRender&&0!==h.coOp&&0!==this.globalData.currentGlobalAlpha){for(p.save(),s=h.elements,\"st\"===o||\"gs\"===o?(c.strokeStyle=\"st\"===o?h.co:h.grd,c.lineWidth=h.wi,c.lineCap=h.lc,c.lineJoin=h.lj,c.miterLimit=h.ml||0):c.fillStyle=\"fl\"===o?h.co:h.grd,p.ctxOpacity(h.coOp),\"st\"!==o&&\"gs\"!==o&&c.beginPath(),p.ctxTransform(h.preTransforms.finalTransform.props),r=s.length,e=0;e<r;e+=1){for(\"st\"!==o&&\"gs\"!==o||(c.beginPath(),h.da&&(c.setLineDash(h.da),c.lineDashOffset=h.do)),a=(n=s[e].trNodes).length,i=0;i<a;i+=1)\"m\"===n[i].t?c.moveTo(n[i].p[0],n[i].p[1]):\"c\"===n[i].t?c.bezierCurveTo(n[i].pts[0],n[i].pts[1],n[i].pts[2],n[i].pts[3],n[i].pts[4],n[i].pts[5]):c.closePath();\"st\"!==o&&\"gs\"!==o||(c.stroke(),h.da&&c.setLineDash(this.dashResetter))}\"st\"!==o&&\"gs\"!==o&&c.fill(h.r),p.restore()}},CVShapeElement.prototype.renderShape=function(t,e,r,i){var a,s;for(s=t,a=e.length-1;a>=0;a-=1)\"tr\"===e[a].ty?(s=r[a].transform,this.renderShapeTransform(t,s)):\"sh\"===e[a].ty||\"el\"===e[a].ty||\"rc\"===e[a].ty||\"sr\"===e[a].ty?this.renderPath(e[a],r[a]):\"fl\"===e[a].ty?this.renderFill(e[a],r[a],s):\"st\"===e[a].ty?this.renderStroke(e[a],r[a],s):\"gf\"===e[a].ty||\"gs\"===e[a].ty?this.renderGradientFill(e[a],r[a],s):\"gr\"===e[a].ty?this.renderShape(s,e[a].it,r[a].it):e[a].ty;i&&this.drawLayer()},CVShapeElement.prototype.renderStyledShape=function(t,e){if(this._isFirstFrame||e._mdf||t.transforms._mdf){var r,i,a,s=t.trNodes,n=e.paths,o=n._length;s.length=0;var h=t.transforms.finalTransform;for(a=0;a<o;a+=1){var l=n.shapes[a];if(l&&l.v){for(i=l._length,r=1;r<i;r+=1)1===r&&s.push({t:\"m\",p:h.applyToPointArray(l.v[0][0],l.v[0][1],0)}),s.push({t:\"c\",pts:h.applyToTriplePoints(l.o[r-1],l.i[r],l.v[r])});1===i&&s.push({t:\"m\",p:h.applyToPointArray(l.v[0][0],l.v[0][1],0)}),l.c&&i&&(s.push({t:\"c\",pts:h.applyToTriplePoints(l.o[r-1],l.i[0],l.v[0])}),s.push({t:\"z\"}))}}t.trNodes=s}},CVShapeElement.prototype.renderPath=function(t,e){if(!0!==t.hd&&t._shouldRender){var r,i=e.styledShapes.length;for(r=0;r<i;r+=1)this.renderStyledShape(e.styledShapes[r],e.sh)}},CVShapeElement.prototype.renderFill=function(t,e,r){var i=e.style;(e.c._mdf||this._isFirstFrame)&&(i.co=\"rgb(\"+bmFloor(e.c.v[0])+\",\"+bmFloor(e.c.v[1])+\",\"+bmFloor(e.c.v[2])+\")\"),(e.o._mdf||r._opMdf||this._isFirstFrame)&&(i.coOp=e.o.v*r.opacity)},CVShapeElement.prototype.renderGradientFill=function(t,e,r){var i,a=e.style;if(!a.grd||e.g._mdf||e.s._mdf||e.e._mdf||1!==t.t&&(e.h._mdf||e.a._mdf)){var s,n=this.globalData.canvasContext,o=e.s.v,h=e.e.v;if(1===t.t)i=n.createLinearGradient(o[0],o[1],h[0],h[1]);else{var l=Math.sqrt(Math.pow(o[0]-h[0],2)+Math.pow(o[1]-h[1],2)),p=Math.atan2(h[1]-o[1],h[0]-o[0]),c=e.h.v;c>=1?c=.99:c<=-1&&(c=-.99);var f=l*c,d=Math.cos(p+e.a.v)*f+o[0],m=Math.sin(p+e.a.v)*f+o[1];i=n.createRadialGradient(d,m,0,o[0],o[1],l)}var u=t.g.p,y=e.g.c,g=1;for(s=0;s<u;s+=1)e.g._hasOpacity&&e.g._collapsable&&(g=e.g.o[2*s+1]),i.addColorStop(y[4*s]/100,\"rgba(\"+y[4*s+1]+\",\"+y[4*s+2]+\",\"+y[4*s+3]+\",\"+g+\")\");a.grd=i}a.coOp=e.o.v*r.opacity},CVShapeElement.prototype.renderStroke=function(t,e,r){var i=e.style,a=e.d;a&&(a._mdf||this._isFirstFrame)&&(i.da=a.dashArray,i.do=a.dashoffset[0]),(e.c._mdf||this._isFirstFrame)&&(i.co=\"rgb(\"+bmFloor(e.c.v[0])+\",\"+bmFloor(e.c.v[1])+\",\"+bmFloor(e.c.v[2])+\")\"),(e.o._mdf||r._opMdf||this._isFirstFrame)&&(i.coOp=e.o.v*r.opacity),(e.w._mdf||this._isFirstFrame)&&(i.wi=e.w.v)},CVShapeElement.prototype.destroy=function(){this.shapesData=null,this.globalData=null,this.canvasContext=null,this.stylesList.length=0,this.itemsData.length=0},extendPrototype([BaseElement,TransformElement,CVBaseElement,HierarchyElement,FrameElement,RenderableElement],CVSolidElement),CVSolidElement.prototype.initElement=SVGShapeElement.prototype.initElement,CVSolidElement.prototype.prepareFrame=IImageElement.prototype.prepareFrame,CVSolidElement.prototype.renderInnerContent=function(){var t=this.canvasContext;t.fillStyle=this.data.sc,t.fillRect(0,0,this.data.sw,this.data.sh)},extendPrototype([BaseElement,TransformElement,CVBaseElement,HierarchyElement,FrameElement,RenderableElement,ITextElement],CVTextElement),CVTextElement.prototype.tHelper=createTag(\"canvas\").getContext(\"2d\"),CVTextElement.prototype.buildNewText=function(){var t=this.textProperty.currentData;this.renderedLetters=createSizedArray(t.l?t.l.length:0);var e=!1;t.fc?(e=!0,this.values.fill=this.buildColor(t.fc)):this.values.fill=\"rgba(0,0,0,0)\",this.fill=e;var r=!1;t.sc&&(r=!0,this.values.stroke=this.buildColor(t.sc),this.values.sWidth=t.sw);var i,a,s,n,o,h,l,p,c,f,d,m,u=this.globalData.fontManager.getFontByName(t.f),y=t.l,g=this.mHelper;this.stroke=r,this.values.fValue=t.finalSize+\"px \"+this.globalData.fontManager.getFontByName(t.f).fFamily,a=t.finalText.length;var v=this.data.singleShape,b=.001*t.tr*t.finalSize,_=0,P=0,E=!0,S=0;for(i=0;i<a;i+=1){for(n=(s=this.globalData.fontManager.getCharData(t.finalText[i],u.fStyle,this.globalData.fontManager.getFontByName(t.f).fFamily))&&s.data||{},g.reset(),v&&y[i].n&&(_=-b,P+=t.yOffset,P+=E?1:0,E=!1),c=(l=n.shapes?n.shapes[0].it:[]).length,g.scale(t.finalSize/100,t.finalSize/100),v&&this.applyTextPropertiesToMatrix(t,g,y[i].line,_,P),d=createSizedArray(c),p=0;p<c;p+=1){for(h=l[p].ks.k.i.length,f=l[p].ks.k,m=[],o=1;o<h;o+=1)1===o&&m.push(g.applyToX(f.v[0][0],f.v[0][1],0),g.applyToY(f.v[0][0],f.v[0][1],0)),m.push(g.applyToX(f.o[o-1][0],f.o[o-1][1],0),g.applyToY(f.o[o-1][0],f.o[o-1][1],0),g.applyToX(f.i[o][0],f.i[o][1],0),g.applyToY(f.i[o][0],f.i[o][1],0),g.applyToX(f.v[o][0],f.v[o][1],0),g.applyToY(f.v[o][0],f.v[o][1],0));m.push(g.applyToX(f.o[o-1][0],f.o[o-1][1],0),g.applyToY(f.o[o-1][0],f.o[o-1][1],0),g.applyToX(f.i[0][0],f.i[0][1],0),g.applyToY(f.i[0][0],f.i[0][1],0),g.applyToX(f.v[0][0],f.v[0][1],0),g.applyToY(f.v[0][0],f.v[0][1],0)),d[p]=m}v&&(_+=y[i].l,_+=b),this.textSpans[S]?this.textSpans[S].elem=d:this.textSpans[S]={elem:d},S+=1}},CVTextElement.prototype.renderInnerContent=function(){var t,e,r,i,a,s,n=this.canvasContext;n.font=this.values.fValue,n.lineCap=\"butt\",n.lineJoin=\"miter\",n.miterLimit=4,this.data.singleShape||this.textAnimator.getMeasures(this.textProperty.currentData,this.lettersChangedFlag);var o,h=this.textAnimator.renderedLetters,l=this.textProperty.currentData.l;e=l.length;var p,c,f=null,d=null,m=null;for(t=0;t<e;t+=1)if(!l[t].n){if((o=h[t])&&(this.globalData.renderer.save(),this.globalData.renderer.ctxTransform(o.p),this.globalData.renderer.ctxOpacity(o.o)),this.fill){for(o&&o.fc?f!==o.fc&&(f=o.fc,n.fillStyle=o.fc):f!==this.values.fill&&(f=this.values.fill,n.fillStyle=this.values.fill),i=(p=this.textSpans[t].elem).length,this.globalData.canvasContext.beginPath(),r=0;r<i;r+=1)for(s=(c=p[r]).length,this.globalData.canvasContext.moveTo(c[0],c[1]),a=2;a<s;a+=6)this.globalData.canvasContext.bezierCurveTo(c[a],c[a+1],c[a+2],c[a+3],c[a+4],c[a+5]);this.globalData.canvasContext.closePath(),this.globalData.canvasContext.fill()}if(this.stroke){for(o&&o.sw?m!==o.sw&&(m=o.sw,n.lineWidth=o.sw):m!==this.values.sWidth&&(m=this.values.sWidth,n.lineWidth=this.values.sWidth),o&&o.sc?d!==o.sc&&(d=o.sc,n.strokeStyle=o.sc):d!==this.values.stroke&&(d=this.values.stroke,n.strokeStyle=this.values.stroke),i=(p=this.textSpans[t].elem).length,this.globalData.canvasContext.beginPath(),r=0;r<i;r+=1)for(s=(c=p[r]).length,this.globalData.canvasContext.moveTo(c[0],c[1]),a=2;a<s;a+=6)this.globalData.canvasContext.bezierCurveTo(c[a],c[a+1],c[a+2],c[a+3],c[a+4],c[a+5]);this.globalData.canvasContext.closePath(),this.globalData.canvasContext.stroke()}o&&this.globalData.renderer.restore()}},CVEffects.prototype.renderFrame=function(){},HBaseElement.prototype={checkBlendMode:function(){},initRendererElement:function(){this.baseElement=createTag(this.data.tg||\"div\"),this.data.hasMask?(this.svgElement=createNS(\"svg\"),this.layerElement=createNS(\"g\"),this.maskedElement=this.layerElement,this.svgElement.appendChild(this.layerElement),this.baseElement.appendChild(this.svgElement)):this.layerElement=this.baseElement,styleDiv(this.baseElement)},createContainerElements:function(){this.renderableEffectsManager=new CVEffects(this),this.transformedElement=this.baseElement,this.maskedElement=this.layerElement,this.data.ln&&this.layerElement.setAttribute(\"id\",this.data.ln),this.data.cl&&this.layerElement.setAttribute(\"class\",this.data.cl),0!==this.data.bm&&this.setBlendMode()},renderElement:function(){var t=this.transformedElement?this.transformedElement.style:{};if(this.finalTransform._matMdf){var e=this.finalTransform.mat.toCSS();t.transform=e,t.webkitTransform=e}this.finalTransform._opMdf&&(t.opacity=this.finalTransform.mProp.o.v)},renderFrame:function(){this.data.hd||this.hidden||(this.renderTransform(),this.renderRenderable(),this.renderElement(),this.renderInnerContent(),this._isFirstFrame&&(this._isFirstFrame=!1))},destroy:function(){this.layerElement=null,this.transformedElement=null,this.matteElement&&(this.matteElement=null),this.maskManager&&(this.maskManager.destroy(),this.maskManager=null)},createRenderableComponents:function(){this.maskManager=new MaskElement(this.data,this,this.globalData)},addEffects:function(){},setMatte:function(){}},HBaseElement.prototype.getBaseElement=SVGBaseElement.prototype.getBaseElement,HBaseElement.prototype.destroyBaseElement=HBaseElement.prototype.destroy,HBaseElement.prototype.buildElementParenting=HybridRenderer.prototype.buildElementParenting,extendPrototype([BaseElement,TransformElement,HBaseElement,HierarchyElement,FrameElement,RenderableDOMElement],HSolidElement),HSolidElement.prototype.createContent=function(){var t;this.data.hasMask?((t=createNS(\"rect\")).setAttribute(\"width\",this.data.sw),t.setAttribute(\"height\",this.data.sh),t.setAttribute(\"fill\",this.data.sc),this.svgElement.setAttribute(\"width\",this.data.sw),this.svgElement.setAttribute(\"height\",this.data.sh)):((t=createTag(\"div\")).style.width=this.data.sw+\"px\",t.style.height=this.data.sh+\"px\",t.style.backgroundColor=this.data.sc),this.layerElement.appendChild(t)},extendPrototype([HybridRenderer,ICompElement,HBaseElement],HCompElement),HCompElement.prototype._createBaseContainerElements=HCompElement.prototype.createContainerElements,HCompElement.prototype.createContainerElements=function(){this._createBaseContainerElements(),this.data.hasMask?(this.svgElement.setAttribute(\"width\",this.data.w),this.svgElement.setAttribute(\"height\",this.data.h),this.transformedElement=this.baseElement):this.transformedElement=this.layerElement},HCompElement.prototype.addTo3dContainer=function(t,e){for(var r,i=0;i<e;)this.elements[i]&&this.elements[i].getBaseElement&&(r=this.elements[i].getBaseElement()),i+=1;r?this.layerElement.insertBefore(t,r):this.layerElement.appendChild(t)},extendPrototype([BaseElement,TransformElement,HSolidElement,SVGShapeElement,HBaseElement,HierarchyElement,FrameElement,RenderableElement],HShapeElement),HShapeElement.prototype._renderShapeFrame=HShapeElement.prototype.renderInnerContent,HShapeElement.prototype.createContent=function(){var t;if(this.baseElement.style.fontSize=0,this.data.hasMask)this.layerElement.appendChild(this.shapesContainer),t=this.svgElement;else{t=createNS(\"svg\");var e=this.comp.data?this.comp.data:this.globalData.compSize;t.setAttribute(\"width\",e.w),t.setAttribute(\"height\",e.h),t.appendChild(this.shapesContainer),this.layerElement.appendChild(t)}this.searchShapes(this.shapesData,this.itemsData,this.prevViewData,this.shapesContainer,0,[],!0),this.filterUniqueShapes(),this.shapeCont=t},HShapeElement.prototype.getTransformedPoint=function(t,e){var r,i=t.length;for(r=0;r<i;r+=1)e=t[r].mProps.v.applyToPointArray(e[0],e[1],0);return e},HShapeElement.prototype.calculateShapeBoundingBox=function(t,e){var r,i,a,s,n,o=t.sh.v,h=t.transformers,l=o._length;if(!(l<=1)){for(r=0;r<l-1;r+=1)i=this.getTransformedPoint(h,o.v[r]),a=this.getTransformedPoint(h,o.o[r]),s=this.getTransformedPoint(h,o.i[r+1]),n=this.getTransformedPoint(h,o.v[r+1]),this.checkBounds(i,a,s,n,e);o.c&&(i=this.getTransformedPoint(h,o.v[r]),a=this.getTransformedPoint(h,o.o[r]),s=this.getTransformedPoint(h,o.i[0]),n=this.getTransformedPoint(h,o.v[0]),this.checkBounds(i,a,s,n,e))}},HShapeElement.prototype.checkBounds=function(t,e,r,i,a){this.getBoundsOfCurve(t,e,r,i);var s=this.shapeBoundingBox;a.x=bmMin(s.left,a.x),a.xMax=bmMax(s.right,a.xMax),a.y=bmMin(s.top,a.y),a.yMax=bmMax(s.bottom,a.yMax)},HShapeElement.prototype.shapeBoundingBox={left:0,right:0,top:0,bottom:0},HShapeElement.prototype.tempBoundingBox={x:0,xMax:0,y:0,yMax:0,width:0,height:0},HShapeElement.prototype.getBoundsOfCurve=function(t,e,r,i){for(var a,s,n,o,h,l,p,c=[[t[0],i[0]],[t[1],i[1]]],f=0;f<2;++f)s=6*t[f]-12*e[f]+6*r[f],a=-3*t[f]+9*e[f]-9*r[f]+3*i[f],n=3*e[f]-3*t[f],s|=0,n|=0,0==(a|=0)&&0===s||(0===a?(o=-n/s)>0&&o<1&&c[f].push(this.calculateF(o,t,e,r,i,f)):(h=s*s-4*n*a)>=0&&((l=(-s+bmSqrt(h))/(2*a))>0&&l<1&&c[f].push(this.calculateF(l,t,e,r,i,f)),(p=(-s-bmSqrt(h))/(2*a))>0&&p<1&&c[f].push(this.calculateF(p,t,e,r,i,f))));this.shapeBoundingBox.left=bmMin.apply(null,c[0]),this.shapeBoundingBox.top=bmMin.apply(null,c[1]),this.shapeBoundingBox.right=bmMax.apply(null,c[0]),this.shapeBoundingBox.bottom=bmMax.apply(null,c[1])},HShapeElement.prototype.calculateF=function(t,e,r,i,a,s){return bmPow(1-t,3)*e[s]+3*bmPow(1-t,2)*t*r[s]+3*(1-t)*bmPow(t,2)*i[s]+bmPow(t,3)*a[s]},HShapeElement.prototype.calculateBoundingBox=function(t,e){var r,i=t.length;for(r=0;r<i;r+=1)t[r]&&t[r].sh?this.calculateShapeBoundingBox(t[r],e):t[r]&&t[r].it&&this.calculateBoundingBox(t[r].it,e)},HShapeElement.prototype.currentBoxContains=function(t){return this.currentBBox.x<=t.x&&this.currentBBox.y<=t.y&&this.currentBBox.width+this.currentBBox.x>=t.x+t.width&&this.currentBBox.height+this.currentBBox.y>=t.y+t.height},HShapeElement.prototype.renderInnerContent=function(){if(this._renderShapeFrame(),!this.hidden&&(this._isFirstFrame||this._mdf)){var t=this.tempBoundingBox,e=999999;if(t.x=e,t.xMax=-e,t.y=e,t.yMax=-e,this.calculateBoundingBox(this.itemsData,t),t.width=t.xMax<t.x?0:t.xMax-t.x,t.height=t.yMax<t.y?0:t.yMax-t.y,this.currentBoxContains(t))return;var r=!1;if(this.currentBBox.w!==t.width&&(this.currentBBox.w=t.width,this.shapeCont.setAttribute(\"width\",t.width),r=!0),this.currentBBox.h!==t.height&&(this.currentBBox.h=t.height,this.shapeCont.setAttribute(\"height\",t.height),r=!0),r||this.currentBBox.x!==t.x||this.currentBBox.y!==t.y){this.currentBBox.w=t.width,this.currentBBox.h=t.height,this.currentBBox.x=t.x,this.currentBBox.y=t.y,this.shapeCont.setAttribute(\"viewBox\",this.currentBBox.x+\" \"+this.currentBBox.y+\" \"+this.currentBBox.w+\" \"+this.currentBBox.h);var i=this.shapeCont.style,a=\"translate(\"+this.currentBBox.x+\"px,\"+this.currentBBox.y+\"px)\";i.transform=a,i.webkitTransform=a}}},extendPrototype([BaseElement,TransformElement,HBaseElement,HierarchyElement,FrameElement,RenderableDOMElement,ITextElement],HTextElement),HTextElement.prototype.createContent=function(){if(this.isMasked=this.checkMasks(),this.isMasked){this.renderType=\"svg\",this.compW=this.comp.data.w,this.compH=this.comp.data.h,this.svgElement.setAttribute(\"width\",this.compW),this.svgElement.setAttribute(\"height\",this.compH);var t=createNS(\"g\");this.maskedElement.appendChild(t),this.innerElem=t}else this.renderType=\"html\",this.innerElem=this.layerElement;this.checkParenting()},HTextElement.prototype.buildNewText=function(){var t=this.textProperty.currentData;this.renderedLetters=createSizedArray(t.l?t.l.length:0);var e=this.innerElem.style,r=t.fc?this.buildColor(t.fc):\"rgba(0,0,0,0)\";e.fill=r,e.color=r,t.sc&&(e.stroke=this.buildColor(t.sc),e.strokeWidth=t.sw+\"px\");var i,a,s=this.globalData.fontManager.getFontByName(t.f);if(!this.globalData.fontManager.chars)if(e.fontSize=t.finalSize+\"px\",e.lineHeight=t.finalSize+\"px\",s.fClass)this.innerElem.className=s.fClass;else{e.fontFamily=s.fFamily;var n=t.fWeight,o=t.fStyle;e.fontStyle=o,e.fontWeight=n}var h,l,p,c=t.l;a=c.length;var f,d=this.mHelper,m=\"\",u=0;for(i=0;i<a;i+=1){if(this.globalData.fontManager.chars?(this.textPaths[u]?h=this.textPaths[u]:((h=createNS(\"path\")).setAttribute(\"stroke-linecap\",lineCapEnum[1]),h.setAttribute(\"stroke-linejoin\",lineJoinEnum[2]),h.setAttribute(\"stroke-miterlimit\",\"4\")),this.isMasked||(this.textSpans[u]?p=(l=this.textSpans[u]).children[0]:((l=createTag(\"div\")).style.lineHeight=0,(p=createNS(\"svg\")).appendChild(h),styleDiv(l)))):this.isMasked?h=this.textPaths[u]?this.textPaths[u]:createNS(\"text\"):this.textSpans[u]?(l=this.textSpans[u],h=this.textPaths[u]):(styleDiv(l=createTag(\"span\")),styleDiv(h=createTag(\"span\")),l.appendChild(h)),this.globalData.fontManager.chars){var y,g=this.globalData.fontManager.getCharData(t.finalText[i],s.fStyle,this.globalData.fontManager.getFontByName(t.f).fFamily);if(y=g?g.data:null,d.reset(),y&&y.shapes&&(f=y.shapes[0].it,d.scale(t.finalSize/100,t.finalSize/100),m=this.createPathShape(d,f),h.setAttribute(\"d\",m)),this.isMasked)this.innerElem.appendChild(h);else{if(this.innerElem.appendChild(l),y&&y.shapes){document.body.appendChild(p);var v=p.getBBox();p.setAttribute(\"width\",v.width+2),p.setAttribute(\"height\",v.height+2),p.setAttribute(\"viewBox\",v.x-1+\" \"+(v.y-1)+\" \"+(v.width+2)+\" \"+(v.height+2));var b=p.style,_=\"translate(\"+(v.x-1)+\"px,\"+(v.y-1)+\"px)\";b.transform=_,b.webkitTransform=_,c[i].yOffset=v.y-1}else p.setAttribute(\"width\",1),p.setAttribute(\"height\",1);l.appendChild(p)}}else if(h.textContent=c[i].val,h.setAttributeNS(\"http://www.w3.org/XML/1998/namespace\",\"xml:space\",\"preserve\"),this.isMasked)this.innerElem.appendChild(h);else{this.innerElem.appendChild(l);var P=h.style,E=\"translate3d(0,\"+-t.finalSize/1.2+\"px,0)\";P.transform=E,P.webkitTransform=E}this.isMasked?this.textSpans[u]=h:this.textSpans[u]=l,this.textSpans[u].style.display=\"block\",this.textPaths[u]=h,u+=1}for(;u<this.textSpans.length;)this.textSpans[u].style.display=\"none\",u+=1},HTextElement.prototype.renderInnerContent=function(){var t;if(this.data.singleShape){if(!this._isFirstFrame&&!this.lettersChangedFlag)return;if(this.isMasked&&this.finalTransform._matMdf){this.svgElement.setAttribute(\"viewBox\",-this.finalTransform.mProp.p.v[0]+\" \"+-this.finalTransform.mProp.p.v[1]+\" \"+this.compW+\" \"+this.compH),t=this.svgElement.style;var e=\"translate(\"+-this.finalTransform.mProp.p.v[0]+\"px,\"+-this.finalTransform.mProp.p.v[1]+\"px)\";t.transform=e,t.webkitTransform=e}}if(this.textAnimator.getMeasures(this.textProperty.currentData,this.lettersChangedFlag),this.lettersChangedFlag||this.textAnimator.lettersChangedFlag){var r,i,a,s,n,o=0,h=this.textAnimator.renderedLetters,l=this.textProperty.currentData.l;for(i=l.length,r=0;r<i;r+=1)l[r].n?o+=1:(s=this.textSpans[r],n=this.textPaths[r],a=h[o],o+=1,a._mdf.m&&(this.isMasked?s.setAttribute(\"transform\",a.m):(s.style.webkitTransform=a.m,s.style.transform=a.m)),s.style.opacity=a.o,a.sw&&a._mdf.sw&&n.setAttribute(\"stroke-width\",a.sw),a.sc&&a._mdf.sc&&n.setAttribute(\"stroke\",a.sc),a.fc&&a._mdf.fc&&(n.setAttribute(\"fill\",a.fc),n.style.color=a.fc));if(this.innerElem.getBBox&&!this.hidden&&(this._isFirstFrame||this._mdf)){var p=this.innerElem.getBBox();if(this.currentBBox.w!==p.width&&(this.currentBBox.w=p.width,this.svgElement.setAttribute(\"width\",p.width)),this.currentBBox.h!==p.height&&(this.currentBBox.h=p.height,this.svgElement.setAttribute(\"height\",p.height)),this.currentBBox.w!==p.width+2||this.currentBBox.h!==p.height+2||this.currentBBox.x!==p.x-1||this.currentBBox.y!==p.y-1){this.currentBBox.w=p.width+2,this.currentBBox.h=p.height+2,this.currentBBox.x=p.x-1,this.currentBBox.y=p.y-1,this.svgElement.setAttribute(\"viewBox\",this.currentBBox.x+\" \"+this.currentBBox.y+\" \"+this.currentBBox.w+\" \"+this.currentBBox.h),t=this.svgElement.style;var c=\"translate(\"+this.currentBBox.x+\"px,\"+this.currentBBox.y+\"px)\";t.transform=c,t.webkitTransform=c}}}},extendPrototype([BaseElement,TransformElement,HBaseElement,HSolidElement,HierarchyElement,FrameElement,RenderableElement],HImageElement),HImageElement.prototype.createContent=function(){var t=this.globalData.getAssetsPath(this.assetData),e=new Image;this.data.hasMask?(this.imageElem=createNS(\"image\"),this.imageElem.setAttribute(\"width\",this.assetData.w+\"px\"),this.imageElem.setAttribute(\"height\",this.assetData.h+\"px\"),this.imageElem.setAttributeNS(\"http://www.w3.org/1999/xlink\",\"href\",t),this.layerElement.appendChild(this.imageElem),this.baseElement.setAttribute(\"width\",this.assetData.w),this.baseElement.setAttribute(\"height\",this.assetData.h)):this.layerElement.appendChild(e),e.crossOrigin=\"anonymous\",e.src=t,this.data.ln&&this.baseElement.setAttribute(\"id\",this.data.ln)},extendPrototype([BaseElement,FrameElement,HierarchyElement],HCameraElement),HCameraElement.prototype.setup=function(){var t,e,r,i,a=this.comp.threeDElements.length;for(t=0;t<a;t+=1)if(\"3d\"===(e=this.comp.threeDElements[t]).type){r=e.perspectiveElem.style,i=e.container.style;var s=this.pe.v+\"px\",n=\"0px 0px 0px\",o=\"matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)\";r.perspective=s,r.webkitPerspective=s,i.transformOrigin=n,i.mozTransformOrigin=n,i.webkitTransformOrigin=n,r.transform=o,r.webkitTransform=o}},HCameraElement.prototype.createElements=function(){},HCameraElement.prototype.hide=function(){},HCameraElement.prototype.renderFrame=function(){var t,e,r=this._isFirstFrame;if(this.hierarchy)for(e=this.hierarchy.length,t=0;t<e;t+=1)r=this.hierarchy[t].finalTransform.mProp._mdf||r;if(r||this.pe._mdf||this.p&&this.p._mdf||this.px&&(this.px._mdf||this.py._mdf||this.pz._mdf)||this.rx._mdf||this.ry._mdf||this.rz._mdf||this.or._mdf||this.a&&this.a._mdf){if(this.mat.reset(),this.hierarchy)for(t=e=this.hierarchy.length-1;t>=0;t-=1){var i=this.hierarchy[t].finalTransform.mProp;this.mat.translate(-i.p.v[0],-i.p.v[1],i.p.v[2]),this.mat.rotateX(-i.or.v[0]).rotateY(-i.or.v[1]).rotateZ(i.or.v[2]),this.mat.rotateX(-i.rx.v).rotateY(-i.ry.v).rotateZ(i.rz.v),this.mat.scale(1/i.s.v[0],1/i.s.v[1],1/i.s.v[2]),this.mat.translate(i.a.v[0],i.a.v[1],i.a.v[2])}if(this.p?this.mat.translate(-this.p.v[0],-this.p.v[1],this.p.v[2]):this.mat.translate(-this.px.v,-this.py.v,this.pz.v),this.a){var a;a=this.p?[this.p.v[0]-this.a.v[0],this.p.v[1]-this.a.v[1],this.p.v[2]-this.a.v[2]]:[this.px.v-this.a.v[0],this.py.v-this.a.v[1],this.pz.v-this.a.v[2]];var s=Math.sqrt(Math.pow(a[0],2)+Math.pow(a[1],2)+Math.pow(a[2],2)),n=[a[0]/s,a[1]/s,a[2]/s],o=Math.sqrt(n[2]*n[2]+n[0]*n[0]),h=Math.atan2(n[1],o),l=Math.atan2(n[0],-n[2]);this.mat.rotateY(l).rotateX(-h)}this.mat.rotateX(-this.rx.v).rotateY(-this.ry.v).rotateZ(this.rz.v),this.mat.rotateX(-this.or.v[0]).rotateY(-this.or.v[1]).rotateZ(this.or.v[2]),this.mat.translate(this.globalData.compSize.w/2,this.globalData.compSize.h/2,0),this.mat.translate(0,0,this.pe.v);var p=!this._prevMat.equals(this.mat);if((p||this.pe._mdf)&&this.comp.threeDElements){var c,f,d;for(e=this.comp.threeDElements.length,t=0;t<e;t+=1)if(\"3d\"===(c=this.comp.threeDElements[t]).type){if(p){var m=this.mat.toCSS();(d=c.container.style).transform=m,d.webkitTransform=m}this.pe._mdf&&((f=c.perspectiveElem.style).perspective=this.pe.v+\"px\",f.webkitPerspective=this.pe.v+\"px\")}this.mat.clone(this._prevMat)}}this._isFirstFrame=!1},HCameraElement.prototype.prepareFrame=function(t){this.prepareProperties(t,!0)},HCameraElement.prototype.destroy=function(){},HCameraElement.prototype.getBaseElement=function(){return null},HEffects.prototype.renderFrame=function(){};var animationManager=function(){var t={},e=[],r=0,i=0,a=0,s=!0,n=!1;function o(t){for(var r=0,a=t.target;r<i;)e[r].animation===a&&(e.splice(r,1),r-=1,i-=1,a.isPaused||p()),r+=1}function h(t,r){if(!t)return null;for(var a=0;a<i;){if(e[a].elem===t&&null!==e[a].elem)return e[a].animation;a+=1}var s=new AnimationItem;return c(s,t),s.setData(t,r),s}function l(){a+=1,m()}function p(){a-=1}function c(t,r){t.addEventListener(\"destroy\",o),t.addEventListener(\"_active\",l),t.addEventListener(\"_idle\",p),e.push({elem:r,animation:t}),i+=1}function f(t){var o,h=t-r;for(o=0;o<i;o+=1)e[o].animation.advanceTime(h);r=t,a&&!n?window.requestAnimationFrame(f):s=!0}function d(t){r=t,window.requestAnimationFrame(f)}function m(){!n&&a&&s&&(window.requestAnimationFrame(d),s=!1)}return t.registerAnimation=h,t.loadAnimation=function(t){var e=new AnimationItem;return c(e,null),e.setParams(t),e},t.setSpeed=function(t,r){var a;for(a=0;a<i;a+=1)e[a].animation.setSpeed(t,r)},t.setDirection=function(t,r){var a;for(a=0;a<i;a+=1)e[a].animation.setDirection(t,r)},t.play=function(t){var r;for(r=0;r<i;r+=1)e[r].animation.play(t)},t.pause=function(t){var r;for(r=0;r<i;r+=1)e[r].animation.pause(t)},t.stop=function(t){var r;for(r=0;r<i;r+=1)e[r].animation.stop(t)},t.togglePause=function(t){var r;for(r=0;r<i;r+=1)e[r].animation.togglePause(t)},t.searchAnimations=function(t,e,r){var i,a=[].concat([].slice.call(document.getElementsByClassName(\"lottie\")),[].slice.call(document.getElementsByClassName(\"bodymovin\"))),s=a.length;for(i=0;i<s;i+=1)r&&a[i].setAttribute(\"data-bm-type\",r),h(a[i],t);if(e&&0===s){r||(r=\"svg\");var n=document.getElementsByTagName(\"body\")[0];n.innerText=\"\";var o=createTag(\"div\");o.style.width=\"100%\",o.style.height=\"100%\",o.setAttribute(\"data-bm-type\",r),n.appendChild(o),h(o,t)}},t.resize=function(){var t;for(t=0;t<i;t+=1)e[t].animation.resize()},t.goToAndStop=function(t,r,a){var s;for(s=0;s<i;s+=1)e[s].animation.goToAndStop(t,r,a)},t.destroy=function(t){var r;for(r=i-1;r>=0;r-=1)e[r].animation.destroy(t)},t.freeze=function(){n=!0},t.unfreeze=function(){n=!1,m()},t.setVolume=function(t,r){var a;for(a=0;a<i;a+=1)e[a].animation.setVolume(t,r)},t.mute=function(t){var r;for(r=0;r<i;r+=1)e[r].animation.mute(t)},t.unmute=function(t){var r;for(r=0;r<i;r+=1)e[r].animation.unmute(t)},t.getRegisteredAnimations=function(){var t,r=e.length,i=[];for(t=0;t<r;t+=1)i.push(e[t].animation);return i},t}(),AnimationItem=function(){this._cbs=[],this.name=\"\",this.path=\"\",this.isLoaded=!1,this.currentFrame=0,this.currentRawFrame=0,this.firstFrame=0,this.totalFrames=0,this.frameRate=0,this.frameMult=0,this.playSpeed=1,this.playDirection=1,this.playCount=0,this.animationData={},this.assets=[],this.isPaused=!0,this.autoplay=!1,this.loop=!0,this.renderer=null,this.animationID=createElementID(),this.assetsPath=\"\",this.timeCompleted=0,this.segmentPos=0,this.isSubframeEnabled=subframeEnabled,this.segments=[],this._idle=!0,this._completedLoop=!1,this.projectInterface=ProjectInterface(),this.imagePreloader=new ImagePreloader,this.audioController=audioControllerFactory(),this.markers=[],this.configAnimation=this.configAnimation.bind(this),this.onSetupError=this.onSetupError.bind(this),this.onSegmentComplete=this.onSegmentComplete.bind(this)};extendPrototype([BaseEvent],AnimationItem),AnimationItem.prototype.setParams=function(t){(t.wrapper||t.container)&&(this.wrapper=t.wrapper||t.container);var e=\"svg\";switch(t.animType?e=t.animType:t.renderer&&(e=t.renderer),e){case\"canvas\":this.renderer=new CanvasRenderer(this,t.rendererSettings);break;case\"svg\":this.renderer=new SVGRenderer(this,t.rendererSettings);break;default:this.renderer=new HybridRenderer(this,t.rendererSettings)}this.imagePreloader.setCacheType(e,this.renderer.globalData.defs),this.renderer.setProjectInterface(this.projectInterface),this.animType=e,\"\"===t.loop||null===t.loop||void 0===t.loop||!0===t.loop?this.loop=!0:!1===t.loop?this.loop=!1:this.loop=parseInt(t.loop,10),this.autoplay=!(\"autoplay\"in t)||t.autoplay,this.name=t.name?t.name:\"\",this.autoloadSegments=!Object.prototype.hasOwnProperty.call(t,\"autoloadSegments\")||t.autoloadSegments,this.assetsPath=t.assetsPath,this.initialSegment=t.initialSegment,t.audioFactory&&this.audioController.setAudioFactory(t.audioFactory),t.animationData?this.setupAnimation(t.animationData):t.path&&(-1!==t.path.lastIndexOf(\"\\\\\")?this.path=t.path.substr(0,t.path.lastIndexOf(\"\\\\\")+1):this.path=t.path.substr(0,t.path.lastIndexOf(\"/\")+1),this.fileName=t.path.substr(t.path.lastIndexOf(\"/\")+1),this.fileName=this.fileName.substr(0,this.fileName.lastIndexOf(\".json\")),dataManager.loadAnimation(t.path,this.configAnimation,this.onSetupError))},AnimationItem.prototype.onSetupError=function(){this.trigger(\"data_failed\")},AnimationItem.prototype.setupAnimation=function(t){dataManager.completeAnimation(t,this.configAnimation)},AnimationItem.prototype.setData=function(t,e){e&&\"object\"!=typeof e&&(e=JSON.parse(e));var r={wrapper:t,animationData:e},i=t.attributes;r.path=i.getNamedItem(\"data-animation-path\")?i.getNamedItem(\"data-animation-path\").value:i.getNamedItem(\"data-bm-path\")?i.getNamedItem(\"data-bm-path\").value:i.getNamedItem(\"bm-path\")?i.getNamedItem(\"bm-path\").value:\"\",r.animType=i.getNamedItem(\"data-anim-type\")?i.getNamedItem(\"data-anim-type\").value:i.getNamedItem(\"data-bm-type\")?i.getNamedItem(\"data-bm-type\").value:i.getNamedItem(\"bm-type\")?i.getNamedItem(\"bm-type\").value:i.getNamedItem(\"data-bm-renderer\")?i.getNamedItem(\"data-bm-renderer\").value:i.getNamedItem(\"bm-renderer\")?i.getNamedItem(\"bm-renderer\").value:\"canvas\";var a=i.getNamedItem(\"data-anim-loop\")?i.getNamedItem(\"data-anim-loop\").value:i.getNamedItem(\"data-bm-loop\")?i.getNamedItem(\"data-bm-loop\").value:i.getNamedItem(\"bm-loop\")?i.getNamedItem(\"bm-loop\").value:\"\";\"false\"===a?r.loop=!1:\"true\"===a?r.loop=!0:\"\"!==a&&(r.loop=parseInt(a,10));var s=i.getNamedItem(\"data-anim-autoplay\")?i.getNamedItem(\"data-anim-autoplay\").value:i.getNamedItem(\"data-bm-autoplay\")?i.getNamedItem(\"data-bm-autoplay\").value:!i.getNamedItem(\"bm-autoplay\")||i.getNamedItem(\"bm-autoplay\").value;r.autoplay=\"false\"!==s,r.name=i.getNamedItem(\"data-name\")?i.getNamedItem(\"data-name\").value:i.getNamedItem(\"data-bm-name\")?i.getNamedItem(\"data-bm-name\").value:i.getNamedItem(\"bm-name\")?i.getNamedItem(\"bm-name\").value:\"\",\"false\"===(i.getNamedItem(\"data-anim-prerender\")?i.getNamedItem(\"data-anim-prerender\").value:i.getNamedItem(\"data-bm-prerender\")?i.getNamedItem(\"data-bm-prerender\").value:i.getNamedItem(\"bm-prerender\")?i.getNamedItem(\"bm-prerender\").value:\"\")&&(r.prerender=!1),this.setParams(r)},AnimationItem.prototype.includeLayers=function(t){t.op>this.animationData.op&&(this.animationData.op=t.op,this.totalFrames=Math.floor(t.op-this.animationData.ip));var e,r,i=this.animationData.layers,a=i.length,s=t.layers,n=s.length;for(r=0;r<n;r+=1)for(e=0;e<a;){if(i[e].id===s[r].id){i[e]=s[r];break}e+=1}if((t.chars||t.fonts)&&(this.renderer.globalData.fontManager.addChars(t.chars),this.renderer.globalData.fontManager.addFonts(t.fonts,this.renderer.globalData.defs)),t.assets)for(a=t.assets.length,e=0;e<a;e+=1)this.animationData.assets.push(t.assets[e]);this.animationData.__complete=!1,dataManager.completeAnimation(this.animationData,this.onSegmentComplete)},AnimationItem.prototype.onSegmentComplete=function(t){this.animationData=t,expressionsPlugin&&expressionsPlugin.initExpressions(this),this.loadNextSegment()},AnimationItem.prototype.loadNextSegment=function(){var t=this.animationData.segments;if(!t||0===t.length||!this.autoloadSegments)return this.trigger(\"data_ready\"),void(this.timeCompleted=this.totalFrames);var e=t.shift();this.timeCompleted=e.time*this.frameRate;var r=this.path+this.fileName+\"_\"+this.segmentPos+\".json\";this.segmentPos+=1,dataManager.loadData(r,this.includeLayers.bind(this),function(){this.trigger(\"data_failed\")}.bind(this))},AnimationItem.prototype.loadSegments=function(){this.animationData.segments||(this.timeCompleted=this.totalFrames),this.loadNextSegment()},AnimationItem.prototype.imagesLoaded=function(){this.trigger(\"loaded_images\"),this.checkLoaded()},AnimationItem.prototype.preloadImages=function(){this.imagePreloader.setAssetsPath(this.assetsPath),this.imagePreloader.setPath(this.path),this.imagePreloader.loadAssets(this.animationData.assets,this.imagesLoaded.bind(this))},AnimationItem.prototype.configAnimation=function(t){if(this.renderer)try{this.animationData=t,this.initialSegment?(this.totalFrames=Math.floor(this.initialSegment[1]-this.initialSegment[0]),this.firstFrame=Math.round(this.initialSegment[0])):(this.totalFrames=Math.floor(this.animationData.op-this.animationData.ip),this.firstFrame=Math.round(this.animationData.ip)),this.renderer.configAnimation(t),t.assets||(t.assets=[]),this.assets=this.animationData.assets,this.frameRate=this.animationData.fr,this.frameMult=this.animationData.fr/1e3,this.renderer.searchExtraCompositions(t.assets),this.markers=markerParser(t.markers||[]),this.trigger(\"config_ready\"),this.preloadImages(),this.loadSegments(),this.updaFrameModifier(),this.waitForFontsLoaded(),this.isPaused&&this.audioController.pause()}catch(t){this.triggerConfigError(t)}},AnimationItem.prototype.waitForFontsLoaded=function(){this.renderer&&(this.renderer.globalData.fontManager.isLoaded?this.checkLoaded():setTimeout(this.waitForFontsLoaded.bind(this),20))},AnimationItem.prototype.checkLoaded=function(){!this.isLoaded&&this.renderer.globalData.fontManager.isLoaded&&(this.imagePreloader.loadedImages()||\"canvas\"!==this.renderer.rendererType)&&this.imagePreloader.loadedFootages()&&(this.isLoaded=!0,expressionsPlugin&&expressionsPlugin.initExpressions(this),this.renderer.initItems(),setTimeout(function(){this.trigger(\"DOMLoaded\")}.bind(this),0),this.gotoFrame(),this.autoplay&&this.play())},AnimationItem.prototype.resize=function(){this.renderer.updateContainerSize()},AnimationItem.prototype.setSubframe=function(t){this.isSubframeEnabled=!!t},AnimationItem.prototype.gotoFrame=function(){this.currentFrame=this.isSubframeEnabled?this.currentRawFrame:~~this.currentRawFrame,this.timeCompleted!==this.totalFrames&&this.currentFrame>this.timeCompleted&&(this.currentFrame=this.timeCompleted),this.trigger(\"enterFrame\"),this.renderFrame(),this.trigger(\"drawnFrame\")},AnimationItem.prototype.renderFrame=function(){if(!1!==this.isLoaded&&this.renderer)try{this.renderer.renderFrame(this.currentFrame+this.firstFrame)}catch(t){this.triggerRenderFrameError(t)}},AnimationItem.prototype.play=function(t){t&&this.name!==t||!0===this.isPaused&&(this.isPaused=!1,this.audioController.resume(),this._idle&&(this._idle=!1,this.trigger(\"_active\")))},AnimationItem.prototype.pause=function(t){t&&this.name!==t||!1===this.isPaused&&(this.isPaused=!0,this._idle=!0,this.trigger(\"_idle\"),this.audioController.pause())},AnimationItem.prototype.togglePause=function(t){t&&this.name!==t||(!0===this.isPaused?this.play():this.pause())},AnimationItem.prototype.stop=function(t){t&&this.name!==t||(this.pause(),this.playCount=0,this._completedLoop=!1,this.setCurrentRawFrameValue(0))},AnimationItem.prototype.getMarkerData=function(t){for(var e,r=0;r<this.markers.length;r+=1)if((e=this.markers[r]).payload&&e.payload.name===t)return e;return null},AnimationItem.prototype.goToAndStop=function(t,e,r){if(!r||this.name===r){var i=Number(t);if(isNaN(i)){var a=this.getMarkerData(t);a&&this.goToAndStop(a.time,!0)}else e?this.setCurrentRawFrameValue(t):this.setCurrentRawFrameValue(t*this.frameModifier);this.pause()}},AnimationItem.prototype.goToAndPlay=function(t,e,r){if(!r||this.name===r){var i=Number(t);if(isNaN(i)){var a=this.getMarkerData(t);a&&(a.duration?this.playSegments([a.time,a.time+a.duration],!0):this.goToAndStop(a.time,!0))}else this.goToAndStop(i,e,r);this.play()}},AnimationItem.prototype.advanceTime=function(t){if(!0!==this.isPaused&&!1!==this.isLoaded){var e=this.currentRawFrame+t*this.frameModifier,r=!1;e>=this.totalFrames-1&&this.frameModifier>0?this.loop&&this.playCount!==this.loop?e>=this.totalFrames?(this.playCount+=1,this.checkSegments(e%this.totalFrames)||(this.setCurrentRawFrameValue(e%this.totalFrames),this._completedLoop=!0,this.trigger(\"loopComplete\"))):this.setCurrentRawFrameValue(e):this.checkSegments(e>this.totalFrames?e%this.totalFrames:0)||(r=!0,e=this.totalFrames-1):e<0?this.checkSegments(e%this.totalFrames)||(!this.loop||this.playCount--<=0&&!0!==this.loop?(r=!0,e=0):(this.setCurrentRawFrameValue(this.totalFrames+e%this.totalFrames),this._completedLoop?this.trigger(\"loopComplete\"):this._completedLoop=!0)):this.setCurrentRawFrameValue(e),r&&(this.setCurrentRawFrameValue(e),this.pause(),this.trigger(\"complete\"))}},AnimationItem.prototype.adjustSegment=function(t,e){this.playCount=0,t[1]<t[0]?(this.frameModifier>0&&(this.playSpeed<0?this.setSpeed(-this.playSpeed):this.setDirection(-1)),this.totalFrames=t[0]-t[1],this.timeCompleted=this.totalFrames,this.firstFrame=t[1],this.setCurrentRawFrameValue(this.totalFrames-.001-e)):t[1]>t[0]&&(this.frameModifier<0&&(this.playSpeed<0?this.setSpeed(-this.playSpeed):this.setDirection(1)),this.totalFrames=t[1]-t[0],this.timeCompleted=this.totalFrames,this.firstFrame=t[0],this.setCurrentRawFrameValue(.001+e)),this.trigger(\"segmentStart\")},AnimationItem.prototype.setSegment=function(t,e){var r=-1;this.isPaused&&(this.currentRawFrame+this.firstFrame<t?r=t:this.currentRawFrame+this.firstFrame>e&&(r=e-t)),this.firstFrame=t,this.totalFrames=e-t,this.timeCompleted=this.totalFrames,-1!==r&&this.goToAndStop(r,!0)},AnimationItem.prototype.playSegments=function(t,e){if(e&&(this.segments.length=0),\"object\"==typeof t[0]){var r,i=t.length;for(r=0;r<i;r+=1)this.segments.push(t[r])}else this.segments.push(t);this.segments.length&&e&&this.adjustSegment(this.segments.shift(),0),this.isPaused&&this.play()},AnimationItem.prototype.resetSegments=function(t){this.segments.length=0,this.segments.push([this.animationData.ip,this.animationData.op]),t&&this.checkSegments(0)},AnimationItem.prototype.checkSegments=function(t){return!!this.segments.length&&(this.adjustSegment(this.segments.shift(),t),!0)},AnimationItem.prototype.destroy=function(t){t&&this.name!==t||!this.renderer||(this.renderer.destroy(),this.imagePreloader.destroy(),this.trigger(\"destroy\"),this._cbs=null,this.onEnterFrame=null,this.onLoopComplete=null,this.onComplete=null,this.onSegmentStart=null,this.onDestroy=null,this.renderer=null,this.renderer=null,this.imagePreloader=null,this.projectInterface=null)},AnimationItem.prototype.setCurrentRawFrameValue=function(t){this.currentRawFrame=t,this.gotoFrame()},AnimationItem.prototype.setSpeed=function(t){this.playSpeed=t,this.updaFrameModifier()},AnimationItem.prototype.setDirection=function(t){this.playDirection=t<0?-1:1,this.updaFrameModifier()},AnimationItem.prototype.setVolume=function(t,e){e&&this.name!==e||this.audioController.setVolume(t)},AnimationItem.prototype.getVolume=function(){return this.audioController.getVolume()},AnimationItem.prototype.mute=function(t){t&&this.name!==t||this.audioController.mute()},AnimationItem.prototype.unmute=function(t){t&&this.name!==t||this.audioController.unmute()},AnimationItem.prototype.updaFrameModifier=function(){this.frameModifier=this.frameMult*this.playSpeed*this.playDirection,this.audioController.setRate(this.playSpeed*this.playDirection)},AnimationItem.prototype.getPath=function(){return this.path},AnimationItem.prototype.getAssetsPath=function(t){var e=\"\";if(t.e)e=t.p;else if(this.assetsPath){var r=t.p;-1!==r.indexOf(\"images/\")&&(r=r.split(\"/\")[1]),e=this.assetsPath+r}else e=this.path,e+=t.u?t.u:\"\",e+=t.p;return e},AnimationItem.prototype.getAssetData=function(t){for(var e=0,r=this.assets.length;e<r;){if(t===this.assets[e].id)return this.assets[e];e+=1}return null},AnimationItem.prototype.hide=function(){this.renderer.hide()},AnimationItem.prototype.show=function(){this.renderer.show()},AnimationItem.prototype.getDuration=function(t){return t?this.totalFrames:this.totalFrames/this.frameRate},AnimationItem.prototype.trigger=function(t){if(this._cbs&&this._cbs[t])switch(t){case\"enterFrame\":case\"drawnFrame\":this.triggerEvent(t,new BMEnterFrameEvent(t,this.currentFrame,this.totalFrames,this.frameModifier));break;case\"loopComplete\":this.triggerEvent(t,new BMCompleteLoopEvent(t,this.loop,this.playCount,this.frameMult));break;case\"complete\":this.triggerEvent(t,new BMCompleteEvent(t,this.frameMult));break;case\"segmentStart\":this.triggerEvent(t,new BMSegmentStartEvent(t,this.firstFrame,this.totalFrames));break;case\"destroy\":this.triggerEvent(t,new BMDestroyEvent(t,this));break;default:this.triggerEvent(t)}\"enterFrame\"===t&&this.onEnterFrame&&this.onEnterFrame.call(this,new BMEnterFrameEvent(t,this.currentFrame,this.totalFrames,this.frameMult)),\"loopComplete\"===t&&this.onLoopComplete&&this.onLoopComplete.call(this,new BMCompleteLoopEvent(t,this.loop,this.playCount,this.frameMult)),\"complete\"===t&&this.onComplete&&this.onComplete.call(this,new BMCompleteEvent(t,this.frameMult)),\"segmentStart\"===t&&this.onSegmentStart&&this.onSegmentStart.call(this,new BMSegmentStartEvent(t,this.firstFrame,this.totalFrames)),\"destroy\"===t&&this.onDestroy&&this.onDestroy.call(this,new BMDestroyEvent(t,this))},AnimationItem.prototype.triggerRenderFrameError=function(t){var e=new BMRenderFrameErrorEvent(t,this.currentFrame);this.triggerEvent(\"error\",e),this.onError&&this.onError.call(this,e)},AnimationItem.prototype.triggerConfigError=function(t){var e=new BMConfigErrorEvent(t,this.currentFrame);this.triggerEvent(\"error\",e),this.onError&&this.onError.call(this,e)};var Expressions=function(){var t={initExpressions:function(t){var e=0,r=[];t.renderer.compInterface=CompExpressionInterface(t.renderer),t.renderer.globalData.projectInterface.registerComposition(t.renderer),t.renderer.globalData.pushExpression=function(){e+=1},t.renderer.globalData.popExpression=function(){0==(e-=1)&&function(){var t,e=r.length;for(t=0;t<e;t+=1)r[t].release();r.length=0}()},t.renderer.globalData.registerExpressionProperty=function(t){-1===r.indexOf(t)&&r.push(t)}}};return t}();expressionsPlugin=Expressions;var ExpressionManager=function(){var ob={},Math=BMMath,window=null,document=null,XMLHttpRequest=null,fetch=null,frames=null;function $bm_isInstanceOfArray(t){return t.constructor===Array||t.constructor===Float32Array}function isNumerable(t,e){return\"number\"===t||\"boolean\"===t||\"string\"===t||e instanceof Number}function $bm_neg(t){var e=typeof t;if(\"number\"===e||\"boolean\"===e||t instanceof Number)return-t;if($bm_isInstanceOfArray(t)){var r,i=t.length,a=[];for(r=0;r<i;r+=1)a[r]=-t[r];return a}return t.propType?t.v:-t}var easeInBez=BezierFactory.getBezierEasing(.333,0,.833,.833,\"easeIn\").get,easeOutBez=BezierFactory.getBezierEasing(.167,.167,.667,1,\"easeOut\").get,easeInOutBez=BezierFactory.getBezierEasing(.33,0,.667,1,\"easeInOut\").get;function sum(t,e){var r=typeof t,i=typeof e;if(\"string\"===r||\"string\"===i)return t+e;if(isNumerable(r,t)&&isNumerable(i,e))return t+e;if($bm_isInstanceOfArray(t)&&isNumerable(i,e))return(t=t.slice(0))[0]+=e,t;if(isNumerable(r,t)&&$bm_isInstanceOfArray(e))return(e=e.slice(0))[0]=t+e[0],e;if($bm_isInstanceOfArray(t)&&$bm_isInstanceOfArray(e)){for(var a=0,s=t.length,n=e.length,o=[];a<s||a<n;)(\"number\"==typeof t[a]||t[a]instanceof Number)&&(\"number\"==typeof e[a]||e[a]instanceof Number)?o[a]=t[a]+e[a]:o[a]=void 0===e[a]?t[a]:t[a]||e[a],a+=1;return o}return 0}var add=sum;function sub(t,e){var r=typeof t,i=typeof e;if(isNumerable(r,t)&&isNumerable(i,e))return\"string\"===r&&(t=parseInt(t,10)),\"string\"===i&&(e=parseInt(e,10)),t-e;if($bm_isInstanceOfArray(t)&&isNumerable(i,e))return(t=t.slice(0))[0]-=e,t;if(isNumerable(r,t)&&$bm_isInstanceOfArray(e))return(e=e.slice(0))[0]=t-e[0],e;if($bm_isInstanceOfArray(t)&&$bm_isInstanceOfArray(e)){for(var a=0,s=t.length,n=e.length,o=[];a<s||a<n;)(\"number\"==typeof t[a]||t[a]instanceof Number)&&(\"number\"==typeof e[a]||e[a]instanceof Number)?o[a]=t[a]-e[a]:o[a]=void 0===e[a]?t[a]:t[a]||e[a],a+=1;return o}return 0}function mul(t,e){var r,i,a,s=typeof t,n=typeof e;if(isNumerable(s,t)&&isNumerable(n,e))return t*e;if($bm_isInstanceOfArray(t)&&isNumerable(n,e)){for(a=t.length,r=createTypedArray(\"float32\",a),i=0;i<a;i+=1)r[i]=t[i]*e;return r}if(isNumerable(s,t)&&$bm_isInstanceOfArray(e)){for(a=e.length,r=createTypedArray(\"float32\",a),i=0;i<a;i+=1)r[i]=t*e[i];return r}return 0}function div(t,e){var r,i,a,s=typeof t,n=typeof e;if(isNumerable(s,t)&&isNumerable(n,e))return t/e;if($bm_isInstanceOfArray(t)&&isNumerable(n,e)){for(a=t.length,r=createTypedArray(\"float32\",a),i=0;i<a;i+=1)r[i]=t[i]/e;return r}if(isNumerable(s,t)&&$bm_isInstanceOfArray(e)){for(a=e.length,r=createTypedArray(\"float32\",a),i=0;i<a;i+=1)r[i]=t/e[i];return r}return 0}function mod(t,e){return\"string\"==typeof t&&(t=parseInt(t,10)),\"string\"==typeof e&&(e=parseInt(e,10)),t%e}var $bm_sum=sum,$bm_sub=sub,$bm_mul=mul,$bm_div=div,$bm_mod=mod;function clamp(t,e,r){if(e>r){var i=r;r=e,e=i}return Math.min(Math.max(t,e),r)}function radiansToDegrees(t){return t/degToRads}var radians_to_degrees=radiansToDegrees;function degreesToRadians(t){return t*degToRads}var degrees_to_radians=radiansToDegrees,helperLengthArray=[0,0,0,0,0,0];function length(t,e){if(\"number\"==typeof t||t instanceof Number)return e=e||0,Math.abs(t-e);var r;e||(e=helperLengthArray);var i=Math.min(t.length,e.length),a=0;for(r=0;r<i;r+=1)a+=Math.pow(e[r]-t[r],2);return Math.sqrt(a)}function normalize(t){return div(t,length(t))}function rgbToHsl(t){var e,r,i=t[0],a=t[1],s=t[2],n=Math.max(i,a,s),o=Math.min(i,a,s),h=(n+o)/2;if(n===o)e=0,r=0;else{var l=n-o;switch(r=h>.5?l/(2-n-o):l/(n+o),n){case i:e=(a-s)/l+(a<s?6:0);break;case a:e=(s-i)/l+2;break;case s:e=(i-a)/l+4}e/=6}return[e,r,h,t[3]]}function hue2rgb(t,e,r){return r<0&&(r+=1),r>1&&(r-=1),r<1/6?t+6*(e-t)*r:r<.5?e:r<2/3?t+(e-t)*(2/3-r)*6:t}function hslToRgb(t){var e,r,i,a=t[0],s=t[1],n=t[2];if(0===s)e=n,i=n,r=n;else{var o=n<.5?n*(1+s):n+s-n*s,h=2*n-o;e=hue2rgb(h,o,a+1/3),r=hue2rgb(h,o,a),i=hue2rgb(h,o,a-1/3)}return[e,r,i,t[3]]}function linear(t,e,r,i,a){if(void 0!==i&&void 0!==a||(i=e,a=r,e=0,r=1),r<e){var s=r;r=e,e=s}if(t<=e)return i;if(t>=r)return a;var n,o=r===e?0:(t-e)/(r-e);if(!i.length)return i+(a-i)*o;var h=i.length,l=createTypedArray(\"float32\",h);for(n=0;n<h;n+=1)l[n]=i[n]+(a[n]-i[n])*o;return l}function random(t,e){if(void 0===e&&(void 0===t?(t=0,e=1):(e=t,t=void 0)),e.length){var r,i=e.length;t||(t=createTypedArray(\"float32\",i));var a=createTypedArray(\"float32\",i),s=BMMath.random();for(r=0;r<i;r+=1)a[r]=t[r]+s*(e[r]-t[r]);return a}return void 0===t&&(t=0),t+BMMath.random()*(e-t)}function createPath(t,e,r,i){var a,s=t.length,n=shapePool.newElement();n.setPathData(!!i,s);var o,h,l=[0,0];for(a=0;a<s;a+=1)o=e&&e[a]?e[a]:l,h=r&&r[a]?r[a]:l,n.setTripleAt(t[a][0],t[a][1],h[0]+t[a][0],h[1]+t[a][1],o[0]+t[a][0],o[1]+t[a][1],a,!0);return n}function initiateExpression(elem,data,property){var val=data.x,needsVelocity=/velocity(?![\\w\\d])/.test(val),_needsRandom=-1!==val.indexOf(\"random\"),elemType=elem.data.ty,transform,$bm_transform,content,effect,thisProperty=property;thisProperty.valueAtTime=thisProperty.getValueAtTime,Object.defineProperty(thisProperty,\"value\",{get:function(){return thisProperty.v}}),elem.comp.frameDuration=1/elem.comp.globalData.frameRate,elem.comp.displayStartTime=0;var inPoint=elem.data.ip/elem.comp.globalData.frameRate,outPoint=elem.data.op/elem.comp.globalData.frameRate,width=elem.data.sw?elem.data.sw:0,height=elem.data.sh?elem.data.sh:0,name=elem.data.nm,loopIn,loop_in,loopOut,loop_out,smooth,toWorld,fromWorld,fromComp,toComp,fromCompToSurface,position,rotation,anchorPoint,scale,thisLayer,thisComp,mask,valueAtTime,velocityAtTime,scoped_bm_rt,expression_function=eval(\"[function _expression_function(){\"+val+\";scoped_bm_rt=$bm_rt}]\")[0],numKeys=property.kf?data.k.length:0,active=!this.data||!0!==this.data.hd,wiggle=function(t,e){var r,i,a=this.pv.length?this.pv.length:1,s=createTypedArray(\"float32\",a),n=Math.floor(5*time);for(r=0,i=0;r<n;){for(i=0;i<a;i+=1)s[i]+=-e+2*e*BMMath.random();r+=1}var o=5*time,h=o-Math.floor(o),l=createTypedArray(\"float32\",a);if(a>1){for(i=0;i<a;i+=1)l[i]=this.pv[i]+s[i]+(-e+2*e*BMMath.random())*h;return l}return this.pv+s[0]+(-e+2*e*BMMath.random())*h}.bind(this);function loopInDuration(t,e){return loopIn(t,e,!0)}function loopOutDuration(t,e){return loopOut(t,e,!0)}thisProperty.loopIn&&(loopIn=thisProperty.loopIn.bind(thisProperty),loop_in=loopIn),thisProperty.loopOut&&(loopOut=thisProperty.loopOut.bind(thisProperty),loop_out=loopOut),thisProperty.smooth&&(smooth=thisProperty.smooth.bind(thisProperty)),this.getValueAtTime&&(valueAtTime=this.getValueAtTime.bind(this)),this.getVelocityAtTime&&(velocityAtTime=this.getVelocityAtTime.bind(this));var comp=elem.comp.globalData.projectInterface.bind(elem.comp.globalData.projectInterface),time,velocity,value,text,textIndex,textTotal,selectorValue;function lookAt(t,e){var r=[e[0]-t[0],e[1]-t[1],e[2]-t[2]],i=Math.atan2(r[0],Math.sqrt(r[1]*r[1]+r[2]*r[2]))/degToRads;return[-Math.atan2(r[1],r[2])/degToRads,i,0]}function easeOut(t,e,r,i,a){return applyEase(easeOutBez,t,e,r,i,a)}function easeIn(t,e,r,i,a){return applyEase(easeInBez,t,e,r,i,a)}function ease(t,e,r,i,a){return applyEase(easeInOutBez,t,e,r,i,a)}function applyEase(t,e,r,i,a,s){void 0===a?(a=r,s=i):e=(e-r)/(i-r),e>1?e=1:e<0&&(e=0);var n=t(e);if($bm_isInstanceOfArray(a)){var o,h=a.length,l=createTypedArray(\"float32\",h);for(o=0;o<h;o+=1)l[o]=(s[o]-a[o])*n+a[o];return l}return(s-a)*n+a}function nearestKey(t){var e,r,i,a=data.k.length;if(data.k.length&&\"number\"!=typeof data.k[0])if(r=-1,(t*=elem.comp.globalData.frameRate)<data.k[0].t)r=1,i=data.k[0].t;else{for(e=0;e<a-1;e+=1){if(t===data.k[e].t){r=e+1,i=data.k[e].t;break}if(t>data.k[e].t&&t<data.k[e+1].t){t-data.k[e].t>data.k[e+1].t-t?(r=e+2,i=data.k[e+1].t):(r=e+1,i=data.k[e].t);break}}-1===r&&(r=e+1,i=data.k[e].t)}else r=0,i=0;var s={};return s.index=r,s.time=i/elem.comp.globalData.frameRate,s}function key(t){var e,r,i;if(!data.k.length||\"number\"==typeof data.k[0])throw new Error(\"The property has no keyframe at index \"+t);t-=1,e={time:data.k[t].t/elem.comp.globalData.frameRate,value:[]};var a=Object.prototype.hasOwnProperty.call(data.k[t],\"s\")?data.k[t].s:data.k[t-1].e;for(i=a.length,r=0;r<i;r+=1)e[r]=a[r],e.value[r]=a[r];return e}function framesToTime(t,e){return e||(e=elem.comp.globalData.frameRate),t/e}function timeToFrames(t,e){return t||0===t||(t=time),e||(e=elem.comp.globalData.frameRate),t*e}function seedRandom(t){BMMath.seedrandom(randSeed+t)}function sourceRectAtTime(){return elem.sourceRectAtTime()}function substring(t,e){return\"string\"==typeof value?void 0===e?value.substring(t):value.substring(t,e):\"\"}function substr(t,e){return\"string\"==typeof value?void 0===e?value.substr(t):value.substr(t,e):\"\"}function posterizeTime(t){time=0===t?0:Math.floor(time*t)/t,value=valueAtTime(time)}var index=elem.data.ind,hasParent=!(!elem.hierarchy||!elem.hierarchy.length),parent,randSeed=Math.floor(1e6*Math.random()),globalData=elem.globalData;function executeExpression(t){return value=t,this.frameExpressionId===elem.globalData.frameId&&\"textSelector\"!==this.propType?value:(\"textSelector\"===this.propType&&(textIndex=this.textIndex,textTotal=this.textTotal,selectorValue=this.selectorValue),thisLayer||(text=elem.layerInterface.text,thisLayer=elem.layerInterface,thisComp=elem.comp.compInterface,toWorld=thisLayer.toWorld.bind(thisLayer),fromWorld=thisLayer.fromWorld.bind(thisLayer),fromComp=thisLayer.fromComp.bind(thisLayer),toComp=thisLayer.toComp.bind(thisLayer),mask=thisLayer.mask?thisLayer.mask.bind(thisLayer):null,fromCompToSurface=fromComp),transform||(transform=elem.layerInterface(\"ADBE Transform Group\"),$bm_transform=transform,transform&&(anchorPoint=transform.anchorPoint)),4!==elemType||content||(content=thisLayer(\"ADBE Root Vectors Group\")),effect||(effect=thisLayer(4)),(hasParent=!(!elem.hierarchy||!elem.hierarchy.length))&&!parent&&(parent=elem.hierarchy[0].layerInterface),time=this.comp.renderedFrame/this.comp.globalData.frameRate,_needsRandom&&seedRandom(randSeed+time),needsVelocity&&(velocity=velocityAtTime(time)),expression_function(),this.frameExpressionId=elem.globalData.frameId,\"shape\"===scoped_bm_rt.propType&&(scoped_bm_rt=scoped_bm_rt.v),scoped_bm_rt)}return executeExpression}return ob.initiateExpression=initiateExpression,ob}(),expressionHelpers={searchExpressions:function(t,e,r){e.x&&(r.k=!0,r.x=!0,r.initiateExpression=ExpressionManager.initiateExpression,r.effectsSequence.push(r.initiateExpression(t,e,r).bind(r)))},getSpeedAtTime:function(t){var e=this.getValueAtTime(t),r=this.getValueAtTime(t+-.01),i=0;if(e.length){var a;for(a=0;a<e.length;a+=1)i+=Math.pow(r[a]-e[a],2);i=100*Math.sqrt(i)}else i=0;return i},getVelocityAtTime:function(t){if(void 0!==this.vel)return this.vel;var e,r,i=-.001,a=this.getValueAtTime(t),s=this.getValueAtTime(t+i);if(a.length)for(e=createTypedArray(\"float32\",a.length),r=0;r<a.length;r+=1)e[r]=(s[r]-a[r])/i;else e=(s-a)/i;return e},getValueAtTime:function(t){return t*=this.elem.globalData.frameRate,(t-=this.offsetTime)!==this._cachingAtTime.lastFrame&&(this._cachingAtTime.lastIndex=this._cachingAtTime.lastFrame<t?this._cachingAtTime.lastIndex:0,this._cachingAtTime.value=this.interpolateValue(t,this._cachingAtTime),this._cachingAtTime.lastFrame=t),this._cachingAtTime.value},getStaticValueAtTime:function(){return this.pv},setGroupProperty:function(t){this.propertyGroup=t}};!function(){function t(t,e,r){if(!this.k||!this.keyframes)return this.pv;t=t?t.toLowerCase():\"\";var i,a,s,n,o,h=this.comp.renderedFrame,l=this.keyframes,p=l[l.length-1].t;if(h<=p)return this.pv;if(r?a=p-(i=e?Math.abs(p-this.elem.comp.globalData.frameRate*e):Math.max(0,p-this.elem.data.ip)):((!e||e>l.length-1)&&(e=l.length-1),i=p-(a=l[l.length-1-e].t)),\"pingpong\"===t){if(Math.floor((h-a)/i)%2!=0)return this.getValueAtTime((i-(h-a)%i+a)/this.comp.globalData.frameRate,0)}else{if(\"offset\"===t){var c=this.getValueAtTime(a/this.comp.globalData.frameRate,0),f=this.getValueAtTime(p/this.comp.globalData.frameRate,0),d=this.getValueAtTime(((h-a)%i+a)/this.comp.globalData.frameRate,0),m=Math.floor((h-a)/i);if(this.pv.length){for(n=(o=new Array(c.length)).length,s=0;s<n;s+=1)o[s]=(f[s]-c[s])*m+d[s];return o}return(f-c)*m+d}if(\"continue\"===t){var u=this.getValueAtTime(p/this.comp.globalData.frameRate,0),y=this.getValueAtTime((p-.001)/this.comp.globalData.frameRate,0);if(this.pv.length){for(n=(o=new Array(u.length)).length,s=0;s<n;s+=1)o[s]=u[s]+(u[s]-y[s])*((h-p)/this.comp.globalData.frameRate)/5e-4;return o}return u+(h-p)/.001*(u-y)}}return this.getValueAtTime(((h-a)%i+a)/this.comp.globalData.frameRate,0)}function e(t,e,r){if(!this.k)return this.pv;t=t?t.toLowerCase():\"\";var i,a,s,n,o,h=this.comp.renderedFrame,l=this.keyframes,p=l[0].t;if(h>=p)return this.pv;if(r?a=p+(i=e?Math.abs(this.elem.comp.globalData.frameRate*e):Math.max(0,this.elem.data.op-p)):((!e||e>l.length-1)&&(e=l.length-1),i=(a=l[e].t)-p),\"pingpong\"===t){if(Math.floor((p-h)/i)%2==0)return this.getValueAtTime(((p-h)%i+p)/this.comp.globalData.frameRate,0)}else{if(\"offset\"===t){var c=this.getValueAtTime(p/this.comp.globalData.frameRate,0),f=this.getValueAtTime(a/this.comp.globalData.frameRate,0),d=this.getValueAtTime((i-(p-h)%i+p)/this.comp.globalData.frameRate,0),m=Math.floor((p-h)/i)+1;if(this.pv.length){for(n=(o=new Array(c.length)).length,s=0;s<n;s+=1)o[s]=d[s]-(f[s]-c[s])*m;return o}return d-(f-c)*m}if(\"continue\"===t){var u=this.getValueAtTime(p/this.comp.globalData.frameRate,0),y=this.getValueAtTime((p+.001)/this.comp.globalData.frameRate,0);if(this.pv.length){for(n=(o=new Array(u.length)).length,s=0;s<n;s+=1)o[s]=u[s]+(u[s]-y[s])*(p-h)/.001;return o}return u+(u-y)*(p-h)/.001}}return this.getValueAtTime((i-((p-h)%i+p))/this.comp.globalData.frameRate,0)}function r(t,e){if(!this.k)return this.pv;if(t=.5*(t||.4),(e=Math.floor(e||5))<=1)return this.pv;var r,i,a=this.comp.renderedFrame/this.comp.globalData.frameRate,s=a-t,n=e>1?(a+t-s)/(e-1):1,o=0,h=0;for(r=this.pv.length?createTypedArray(\"float32\",this.pv.length):0;o<e;){if(i=this.getValueAtTime(s+o*n),this.pv.length)for(h=0;h<this.pv.length;h+=1)r[h]+=i[h];else r+=i;o+=1}if(this.pv.length)for(h=0;h<this.pv.length;h+=1)r[h]/=e;else r/=e;return r}function i(t){this._transformCachingAtTime||(this._transformCachingAtTime={v:new Matrix});var e=this._transformCachingAtTime.v;if(e.cloneFromProps(this.pre.props),this.appliedTransformations<1){var r=this.a.getValueAtTime(t);e.translate(-r[0]*this.a.mult,-r[1]*this.a.mult,r[2]*this.a.mult)}if(this.appliedTransformations<2){var i=this.s.getValueAtTime(t);e.scale(i[0]*this.s.mult,i[1]*this.s.mult,i[2]*this.s.mult)}if(this.sk&&this.appliedTransformations<3){var a=this.sk.getValueAtTime(t),s=this.sa.getValueAtTime(t);e.skewFromAxis(-a*this.sk.mult,s*this.sa.mult)}if(this.r&&this.appliedTransformations<4){var n=this.r.getValueAtTime(t);e.rotate(-n*this.r.mult)}else if(!this.r&&this.appliedTransformations<4){var o=this.rz.getValueAtTime(t),h=this.ry.getValueAtTime(t),l=this.rx.getValueAtTime(t),p=this.or.getValueAtTime(t);e.rotateZ(-o*this.rz.mult).rotateY(h*this.ry.mult).rotateX(l*this.rx.mult).rotateZ(-p[2]*this.or.mult).rotateY(p[1]*this.or.mult).rotateX(p[0]*this.or.mult)}if(this.data.p&&this.data.p.s){var c=this.px.getValueAtTime(t),f=this.py.getValueAtTime(t);if(this.data.p.z){var d=this.pz.getValueAtTime(t);e.translate(c*this.px.mult,f*this.py.mult,-d*this.pz.mult)}else e.translate(c*this.px.mult,f*this.py.mult,0)}else{var m=this.p.getValueAtTime(t);e.translate(m[0]*this.p.mult,m[1]*this.p.mult,-m[2]*this.p.mult)}return e}function a(){return this.v.clone(new Matrix)}var s=TransformPropertyFactory.getTransformProperty;TransformPropertyFactory.getTransformProperty=function(t,e,r){var n=s(t,e,r);return n.dynamicProperties.length?n.getValueAtTime=i.bind(n):n.getValueAtTime=a.bind(n),n.setGroupProperty=expressionHelpers.setGroupProperty,n};var n=PropertyFactory.getProp;PropertyFactory.getProp=function(i,a,s,o,h){var l=n(i,a,s,o,h);l.kf?l.getValueAtTime=expressionHelpers.getValueAtTime.bind(l):l.getValueAtTime=expressionHelpers.getStaticValueAtTime.bind(l),l.setGroupProperty=expressionHelpers.setGroupProperty,l.loopOut=t,l.loopIn=e,l.smooth=r,l.getVelocityAtTime=expressionHelpers.getVelocityAtTime.bind(l),l.getSpeedAtTime=expressionHelpers.getSpeedAtTime.bind(l),l.numKeys=1===a.a?a.k.length:0,l.propertyIndex=a.ix;var p=0;return 0!==s&&(p=createTypedArray(\"float32\",1===a.a?a.k[0].s.length:a.k.length)),l._cachingAtTime={lastFrame:initialDefaultFrame,lastIndex:0,value:p},expressionHelpers.searchExpressions(i,a,l),l.k&&h.addDynamicProperty(l),l};var o=ShapePropertyFactory.getConstructorFunction(),h=ShapePropertyFactory.getKeyframedConstructorFunction();function l(){}l.prototype={vertices:function(t,e){this.k&&this.getValue();var r,i=this.v;void 0!==e&&(i=this.getValueAtTime(e,0));var a=i._length,s=i[t],n=i.v,o=createSizedArray(a);for(r=0;r<a;r+=1)o[r]=\"i\"===t||\"o\"===t?[s[r][0]-n[r][0],s[r][1]-n[r][1]]:[s[r][0],s[r][1]];return o},points:function(t){return this.vertices(\"v\",t)},inTangents:function(t){return this.vertices(\"i\",t)},outTangents:function(t){return this.vertices(\"o\",t)},isClosed:function(){return this.v.c},pointOnPath:function(t,e){var r=this.v;void 0!==e&&(r=this.getValueAtTime(e,0)),this._segmentsLength||(this._segmentsLength=bez.getSegmentsLength(r));for(var i,a=this._segmentsLength,s=a.lengths,n=a.totalLength*t,o=0,h=s.length,l=0;o<h;){if(l+s[o].addedLength>n){var p=o,c=r.c&&o===h-1?0:o+1,f=(n-l)/s[o].addedLength;i=bez.getPointInSegment(r.v[p],r.v[c],r.o[p],r.i[c],f,s[o]);break}l+=s[o].addedLength,o+=1}return i||(i=r.c?[r.v[0][0],r.v[0][1]]:[r.v[r._length-1][0],r.v[r._length-1][1]]),i},vectorOnPath:function(t,e,r){1==t?t=this.v.c:0==t&&(t=.999);var i=this.pointOnPath(t,e),a=this.pointOnPath(t+.001,e),s=a[0]-i[0],n=a[1]-i[1],o=Math.sqrt(Math.pow(s,2)+Math.pow(n,2));return 0===o?[0,0]:\"tangent\"===r?[s/o,n/o]:[-n/o,s/o]},tangentOnPath:function(t,e){return this.vectorOnPath(t,e,\"tangent\")},normalOnPath:function(t,e){return this.vectorOnPath(t,e,\"normal\")},setGroupProperty:expressionHelpers.setGroupProperty,getValueAtTime:expressionHelpers.getStaticValueAtTime},extendPrototype([l],o),extendPrototype([l],h),h.prototype.getValueAtTime=function(t){return this._cachingAtTime||(this._cachingAtTime={shapeValue:shapePool.clone(this.pv),lastIndex:0,lastTime:initialDefaultFrame}),t*=this.elem.globalData.frameRate,(t-=this.offsetTime)!==this._cachingAtTime.lastTime&&(this._cachingAtTime.lastIndex=this._cachingAtTime.lastTime<t?this._caching.lastIndex:0,this._cachingAtTime.lastTime=t,this.interpolateShape(t,this._cachingAtTime.shapeValue,this._cachingAtTime)),this._cachingAtTime.shapeValue},h.prototype.initiateExpression=ExpressionManager.initiateExpression;var p=ShapePropertyFactory.getShapeProp;ShapePropertyFactory.getShapeProp=function(t,e,r,i,a){var s=p(t,e,r,i,a);return s.propertyIndex=e.ix,s.lock=!1,3===r?expressionHelpers.searchExpressions(t,e.pt,s):4===r&&expressionHelpers.searchExpressions(t,e.ks,s),s.k&&t.addDynamicProperty(s),s}}(),TextProperty.prototype.getExpressionValue=function(t,e){var r=this.calculateExpression(e);if(t.t!==r){var i={};return this.copyData(i,t),i.t=r.toString(),i.__complete=!1,i}return t},TextProperty.prototype.searchProperty=function(){var t=this.searchKeyframes(),e=this.searchExpressions();return this.kf=t||e,this.kf},TextProperty.prototype.searchExpressions=function(){return this.data.d.x?(this.calculateExpression=ExpressionManager.initiateExpression.bind(this)(this.elem,this.data.d,this),this.addEffect(this.getExpressionValue.bind(this)),!0):null};var ShapePathInterface=function(t,e,r){var i=e.sh;function a(t){return\"Shape\"===t||\"shape\"===t||\"Path\"===t||\"path\"===t||\"ADBE Vector Shape\"===t||2===t?a.path:null}var s=propertyGroupFactory(a,r);return i.setGroupProperty(PropertyInterface(\"Path\",s)),Object.defineProperties(a,{path:{get:function(){return i.k&&i.getValue(),i}},shape:{get:function(){return i.k&&i.getValue(),i}},_name:{value:t.nm},ix:{value:t.ix},propertyIndex:{value:t.ix},mn:{value:t.mn},propertyGroup:{value:r}}),a},propertyGroupFactory=function(t,e){return function(r){return(r=void 0===r?1:r)<=0?t:e(r-1)}},PropertyInterface=function(t,e){var r={_name:t};return function(t){return(t=void 0===t?1:t)<=0?r:e(t-1)}},ShapeExpressionInterface=function(){function t(t,n,f){var d,m=[],u=t?t.length:0;for(d=0;d<u;d+=1)\"gr\"===t[d].ty?m.push(e(t[d],n[d],f)):\"fl\"===t[d].ty?m.push(r(t[d],n[d],f)):\"st\"===t[d].ty?m.push(a(t[d],n[d],f)):\"tm\"===t[d].ty?m.push(s(t[d],n[d],f)):\"tr\"===t[d].ty||(\"el\"===t[d].ty?m.push(o(t[d],n[d],f)):\"sr\"===t[d].ty?m.push(h(t[d],n[d],f)):\"sh\"===t[d].ty?m.push(ShapePathInterface(t[d],n[d],f)):\"rc\"===t[d].ty?m.push(l(t[d],n[d],f)):\"rd\"===t[d].ty?m.push(p(t[d],n[d],f)):\"rp\"===t[d].ty?m.push(c(t[d],n[d],f)):\"gf\"===t[d].ty?m.push(i(t[d],n[d],f)):m.push((t[d],n[d],function(){return null})));return m}function e(e,r,i){var a=function(t){switch(t){case\"ADBE Vectors Group\":case\"Contents\":case 2:return a.content;default:return a.transform}};a.propertyGroup=propertyGroupFactory(a,i);var s=function(e,r,i){var a,s=function(t){for(var e=0,r=a.length;e<r;){if(a[e]._name===t||a[e].mn===t||a[e].propertyIndex===t||a[e].ix===t||a[e].ind===t)return a[e];e+=1}return\"number\"==typeof t?a[t-1]:null};s.propertyGroup=propertyGroupFactory(s,i),a=t(e.it,r.it,s.propertyGroup),s.numProperties=a.length;var o=n(e.it[e.it.length-1],r.it[r.it.length-1],s.propertyGroup);return s.transform=o,s.propertyIndex=e.cix,s._name=e.nm,s}(e,r,a.propertyGroup),o=n(e.it[e.it.length-1],r.it[r.it.length-1],a.propertyGroup);return a.content=s,a.transform=o,Object.defineProperty(a,\"_name\",{get:function(){return e.nm}}),a.numProperties=e.np,a.propertyIndex=e.ix,a.nm=e.nm,a.mn=e.mn,a}function r(t,e,r){function i(t){return\"Color\"===t||\"color\"===t?i.color:\"Opacity\"===t||\"opacity\"===t?i.opacity:null}return Object.defineProperties(i,{color:{get:ExpressionPropertyInterface(e.c)},opacity:{get:ExpressionPropertyInterface(e.o)},_name:{value:t.nm},mn:{value:t.mn}}),e.c.setGroupProperty(PropertyInterface(\"Color\",r)),e.o.setGroupProperty(PropertyInterface(\"Opacity\",r)),i}function i(t,e,r){function i(t){return\"Start Point\"===t||\"start point\"===t?i.startPoint:\"End Point\"===t||\"end point\"===t?i.endPoint:\"Opacity\"===t||\"opacity\"===t?i.opacity:null}return Object.defineProperties(i,{startPoint:{get:ExpressionPropertyInterface(e.s)},endPoint:{get:ExpressionPropertyInterface(e.e)},opacity:{get:ExpressionPropertyInterface(e.o)},type:{get:function(){return\"a\"}},_name:{value:t.nm},mn:{value:t.mn}}),e.s.setGroupProperty(PropertyInterface(\"Start Point\",r)),e.e.setGroupProperty(PropertyInterface(\"End Point\",r)),e.o.setGroupProperty(PropertyInterface(\"Opacity\",r)),i}function a(t,e,r){var i,a=propertyGroupFactory(l,r),s=propertyGroupFactory(h,a);function n(r){Object.defineProperty(h,t.d[r].nm,{get:ExpressionPropertyInterface(e.d.dataProps[r].p)})}var o=t.d?t.d.length:0,h={};for(i=0;i<o;i+=1)n(i),e.d.dataProps[i].p.setGroupProperty(s);function l(t){return\"Color\"===t||\"color\"===t?l.color:\"Opacity\"===t||\"opacity\"===t?l.opacity:\"Stroke Width\"===t||\"stroke width\"===t?l.strokeWidth:null}return Object.defineProperties(l,{color:{get:ExpressionPropertyInterface(e.c)},opacity:{get:ExpressionPropertyInterface(e.o)},strokeWidth:{get:ExpressionPropertyInterface(e.w)},dash:{get:function(){return h}},_name:{value:t.nm},mn:{value:t.mn}}),e.c.setGroupProperty(PropertyInterface(\"Color\",a)),e.o.setGroupProperty(PropertyInterface(\"Opacity\",a)),e.w.setGroupProperty(PropertyInterface(\"Stroke Width\",a)),l}function s(t,e,r){function i(e){return e===t.e.ix||\"End\"===e||\"end\"===e?i.end:e===t.s.ix?i.start:e===t.o.ix?i.offset:null}var a=propertyGroupFactory(i,r);return i.propertyIndex=t.ix,e.s.setGroupProperty(PropertyInterface(\"Start\",a)),e.e.setGroupProperty(PropertyInterface(\"End\",a)),e.o.setGroupProperty(PropertyInterface(\"Offset\",a)),i.propertyIndex=t.ix,i.propertyGroup=r,Object.defineProperties(i,{start:{get:ExpressionPropertyInterface(e.s)},end:{get:ExpressionPropertyInterface(e.e)},offset:{get:ExpressionPropertyInterface(e.o)},_name:{value:t.nm}}),i.mn=t.mn,i}function n(t,e,r){function i(e){return t.a.ix===e||\"Anchor Point\"===e?i.anchorPoint:t.o.ix===e||\"Opacity\"===e?i.opacity:t.p.ix===e||\"Position\"===e?i.position:t.r.ix===e||\"Rotation\"===e||\"ADBE Vector Rotation\"===e?i.rotation:t.s.ix===e||\"Scale\"===e?i.scale:t.sk&&t.sk.ix===e||\"Skew\"===e?i.skew:t.sa&&t.sa.ix===e||\"Skew Axis\"===e?i.skewAxis:null}var a=propertyGroupFactory(i,r);return e.transform.mProps.o.setGroupProperty(PropertyInterface(\"Opacity\",a)),e.transform.mProps.p.setGroupProperty(PropertyInterface(\"Position\",a)),e.transform.mProps.a.setGroupProperty(PropertyInterface(\"Anchor Point\",a)),e.transform.mProps.s.setGroupProperty(PropertyInterface(\"Scale\",a)),e.transform.mProps.r.setGroupProperty(PropertyInterface(\"Rotation\",a)),e.transform.mProps.sk&&(e.transform.mProps.sk.setGroupProperty(PropertyInterface(\"Skew\",a)),e.transform.mProps.sa.setGroupProperty(PropertyInterface(\"Skew Angle\",a))),e.transform.op.setGroupProperty(PropertyInterface(\"Opacity\",a)),Object.defineProperties(i,{opacity:{get:ExpressionPropertyInterface(e.transform.mProps.o)},position:{get:ExpressionPropertyInterface(e.transform.mProps.p)},anchorPoint:{get:ExpressionPropertyInterface(e.transform.mProps.a)},scale:{get:ExpressionPropertyInterface(e.transform.mProps.s)},rotation:{get:ExpressionPropertyInterface(e.transform.mProps.r)},skew:{get:ExpressionPropertyInterface(e.transform.mProps.sk)},skewAxis:{get:ExpressionPropertyInterface(e.transform.mProps.sa)},_name:{value:t.nm}}),i.ty=\"tr\",i.mn=t.mn,i.propertyGroup=r,i}function o(t,e,r){function i(e){return t.p.ix===e?i.position:t.s.ix===e?i.size:null}var a=propertyGroupFactory(i,r);i.propertyIndex=t.ix;var s=\"tm\"===e.sh.ty?e.sh.prop:e.sh;return s.s.setGroupProperty(PropertyInterface(\"Size\",a)),s.p.setGroupProperty(PropertyInterface(\"Position\",a)),Object.defineProperties(i,{size:{get:ExpressionPropertyInterface(s.s)},position:{get:ExpressionPropertyInterface(s.p)},_name:{value:t.nm}}),i.mn=t.mn,i}function h(t,e,r){function i(e){return t.p.ix===e?i.position:t.r.ix===e?i.rotation:t.pt.ix===e?i.points:t.or.ix===e||\"ADBE Vector Star Outer Radius\"===e?i.outerRadius:t.os.ix===e?i.outerRoundness:!t.ir||t.ir.ix!==e&&\"ADBE Vector Star Inner Radius\"!==e?t.is&&t.is.ix===e?i.innerRoundness:null:i.innerRadius}var a=propertyGroupFactory(i,r),s=\"tm\"===e.sh.ty?e.sh.prop:e.sh;return i.propertyIndex=t.ix,s.or.setGroupProperty(PropertyInterface(\"Outer Radius\",a)),s.os.setGroupProperty(PropertyInterface(\"Outer Roundness\",a)),s.pt.setGroupProperty(PropertyInterface(\"Points\",a)),s.p.setGroupProperty(PropertyInterface(\"Position\",a)),s.r.setGroupProperty(PropertyInterface(\"Rotation\",a)),t.ir&&(s.ir.setGroupProperty(PropertyInterface(\"Inner Radius\",a)),s.is.setGroupProperty(PropertyInterface(\"Inner Roundness\",a))),Object.defineProperties(i,{position:{get:ExpressionPropertyInterface(s.p)},rotation:{get:ExpressionPropertyInterface(s.r)},points:{get:ExpressionPropertyInterface(s.pt)},outerRadius:{get:ExpressionPropertyInterface(s.or)},outerRoundness:{get:ExpressionPropertyInterface(s.os)},innerRadius:{get:ExpressionPropertyInterface(s.ir)},innerRoundness:{get:ExpressionPropertyInterface(s.is)},_name:{value:t.nm}}),i.mn=t.mn,i}function l(t,e,r){function i(e){return t.p.ix===e?i.position:t.r.ix===e?i.roundness:t.s.ix===e||\"Size\"===e||\"ADBE Vector Rect Size\"===e?i.size:null}var a=propertyGroupFactory(i,r),s=\"tm\"===e.sh.ty?e.sh.prop:e.sh;return i.propertyIndex=t.ix,s.p.setGroupProperty(PropertyInterface(\"Position\",a)),s.s.setGroupProperty(PropertyInterface(\"Size\",a)),s.r.setGroupProperty(PropertyInterface(\"Rotation\",a)),Object.defineProperties(i,{position:{get:ExpressionPropertyInterface(s.p)},roundness:{get:ExpressionPropertyInterface(s.r)},size:{get:ExpressionPropertyInterface(s.s)},_name:{value:t.nm}}),i.mn=t.mn,i}function p(t,e,r){function i(e){return t.r.ix===e||\"Round Corners 1\"===e?i.radius:null}var a=propertyGroupFactory(i,r),s=e;return i.propertyIndex=t.ix,s.rd.setGroupProperty(PropertyInterface(\"Radius\",a)),Object.defineProperties(i,{radius:{get:ExpressionPropertyInterface(s.rd)},_name:{value:t.nm}}),i.mn=t.mn,i}function c(t,e,r){function i(e){return t.c.ix===e||\"Copies\"===e?i.copies:t.o.ix===e||\"Offset\"===e?i.offset:null}var a=propertyGroupFactory(i,r),s=e;return i.propertyIndex=t.ix,s.c.setGroupProperty(PropertyInterface(\"Copies\",a)),s.o.setGroupProperty(PropertyInterface(\"Offset\",a)),Object.defineProperties(i,{copies:{get:ExpressionPropertyInterface(s.c)},offset:{get:ExpressionPropertyInterface(s.o)},_name:{value:t.nm}}),i.mn=t.mn,i}return function(e,r,i){var a;function s(t){if(\"number\"==typeof t)return 0===(t=void 0===t?1:t)?i:a[t-1];for(var e=0,r=a.length;e<r;){if(a[e]._name===t)return a[e];e+=1}return null}return s.propertyGroup=propertyGroupFactory(s,(function(){return i})),a=t(e,r,s.propertyGroup),s.numProperties=a.length,s._name=\"Contents\",s}}(),TextExpressionInterface=function(t){var e,r;function i(t){return\"ADBE Text Document\"===t?i.sourceText:null}return Object.defineProperty(i,\"sourceText\",{get:function(){t.textProperty.getValue();var i=t.textProperty.currentData.t;return i!==e&&(t.textProperty.currentData.t=e,(r=new String(i)).value=i||new String(i)),r}}),i},LayerExpressionInterface=function(){function t(t){var e=new Matrix;return void 0!==t?this._elem.finalTransform.mProp.getValueAtTime(t).clone(e):this._elem.finalTransform.mProp.applyToMatrix(e),e}function e(t,e){var r=this.getMatrix(e);return r.props[12]=0,r.props[13]=0,r.props[14]=0,this.applyPoint(r,t)}function r(t,e){var r=this.getMatrix(e);return this.applyPoint(r,t)}function i(t,e){var r=this.getMatrix(e);return r.props[12]=0,r.props[13]=0,r.props[14]=0,this.invertPoint(r,t)}function a(t,e){var r=this.getMatrix(e);return this.invertPoint(r,t)}function s(t,e){if(this._elem.hierarchy&&this._elem.hierarchy.length){var r,i=this._elem.hierarchy.length;for(r=0;r<i;r+=1)this._elem.hierarchy[r].finalTransform.mProp.applyToMatrix(t)}return t.applyToPointArray(e[0],e[1],e[2]||0)}function n(t,e){if(this._elem.hierarchy&&this._elem.hierarchy.length){var r,i=this._elem.hierarchy.length;for(r=0;r<i;r+=1)this._elem.hierarchy[r].finalTransform.mProp.applyToMatrix(t)}return t.inversePoint(e)}function o(t){var e=new Matrix;if(e.reset(),this._elem.finalTransform.mProp.applyToMatrix(e),this._elem.hierarchy&&this._elem.hierarchy.length){var r,i=this._elem.hierarchy.length;for(r=0;r<i;r+=1)this._elem.hierarchy[r].finalTransform.mProp.applyToMatrix(e);return e.inversePoint(t)}return e.inversePoint(t)}function h(){return[1,1,1,1]}return function(l){var p;function c(t){switch(t){case\"ADBE Root Vectors Group\":case\"Contents\":case 2:return c.shapeInterface;case 1:case 6:case\"Transform\":case\"transform\":case\"ADBE Transform Group\":return p;case 4:case\"ADBE Effect Parade\":case\"effects\":case\"Effects\":return c.effect;case\"ADBE Text Properties\":return c.textInterface;default:return null}}c.getMatrix=t,c.invertPoint=n,c.applyPoint=s,c.toWorld=r,c.toWorldVec=e,c.fromWorld=a,c.fromWorldVec=i,c.toComp=r,c.fromComp=o,c.sampleImage=h,c.sourceRectAtTime=l.sourceRectAtTime.bind(l),c._elem=l;var f=getDescriptor(p=TransformExpressionInterface(l.finalTransform.mProp),\"anchorPoint\");return Object.defineProperties(c,{hasParent:{get:function(){return l.hierarchy.length}},parent:{get:function(){return l.hierarchy[0].layerInterface}},rotation:getDescriptor(p,\"rotation\"),scale:getDescriptor(p,\"scale\"),position:getDescriptor(p,\"position\"),opacity:getDescriptor(p,\"opacity\"),anchorPoint:f,anchor_point:f,transform:{get:function(){return p}},active:{get:function(){return l.isInRange}}}),c.startTime=l.data.st,c.index=l.data.ind,c.source=l.data.refId,c.height=0===l.data.ty?l.data.h:100,c.width=0===l.data.ty?l.data.w:100,c.inPoint=l.data.ip/l.comp.globalData.frameRate,c.outPoint=l.data.op/l.comp.globalData.frameRate,c._name=l.data.nm,c.registerMaskInterface=function(t){c.mask=new MaskManagerInterface(t,l)},c.registerEffectsInterface=function(t){c.effect=t},c}}(),FootageInterface=(dataInterfaceFactory=function(t){function e(t){return\"Outline\"===t?e.outlineInterface():null}return e._name=\"Outline\",e.outlineInterface=function(t){var e=\"\",r=t.getFootageData();function i(t){if(r[t])return e=t,\"object\"==typeof(r=r[t])?i:r;var a=t.indexOf(e);if(-1!==a){var s=parseInt(t.substr(a+e.length),10);return\"object\"==typeof(r=r[s])?i:r}return\"\"}return function(){return e=\"\",r=t.getFootageData(),i}}(t),e},function(t){function e(t){return\"Data\"===t?e.dataInterface:null}return e._name=\"Data\",e.dataInterface=dataInterfaceFactory(t),e}),dataInterfaceFactory,CompExpressionInterface=function(t){function e(e){for(var r=0,i=t.layers.length;r<i;){if(t.layers[r].nm===e||t.layers[r].ind===e)return t.elements[r].layerInterface;r+=1}return null}return Object.defineProperty(e,\"_name\",{value:t.data.nm}),e.layer=e,e.pixelAspect=1,e.height=t.data.h||t.globalData.compSize.h,e.width=t.data.w||t.globalData.compSize.w,e.pixelAspect=1,e.frameDuration=1/t.globalData.frameRate,e.displayStartTime=0,e.numLayers=t.layers.length,e},TransformExpressionInterface=function(t){function e(t){switch(t){case\"scale\":case\"Scale\":case\"ADBE Scale\":case 6:return e.scale;case\"rotation\":case\"Rotation\":case\"ADBE Rotation\":case\"ADBE Rotate Z\":case 10:return e.rotation;case\"ADBE Rotate X\":return e.xRotation;case\"ADBE Rotate Y\":return e.yRotation;case\"position\":case\"Position\":case\"ADBE Position\":case 2:return e.position;case\"ADBE Position_0\":return e.xPosition;case\"ADBE Position_1\":return e.yPosition;case\"ADBE Position_2\":return e.zPosition;case\"anchorPoint\":case\"AnchorPoint\":case\"Anchor Point\":case\"ADBE AnchorPoint\":case 1:return e.anchorPoint;case\"opacity\":case\"Opacity\":case 11:return e.opacity;default:return null}}var r,i,a,s;return Object.defineProperty(e,\"rotation\",{get:ExpressionPropertyInterface(t.r||t.rz)}),Object.defineProperty(e,\"zRotation\",{get:ExpressionPropertyInterface(t.rz||t.r)}),Object.defineProperty(e,\"xRotation\",{get:ExpressionPropertyInterface(t.rx)}),Object.defineProperty(e,\"yRotation\",{get:ExpressionPropertyInterface(t.ry)}),Object.defineProperty(e,\"scale\",{get:ExpressionPropertyInterface(t.s)}),t.p?s=ExpressionPropertyInterface(t.p):(r=ExpressionPropertyInterface(t.px),i=ExpressionPropertyInterface(t.py),t.pz&&(a=ExpressionPropertyInterface(t.pz))),Object.defineProperty(e,\"position\",{get:function(){return t.p?s():[r(),i(),a?a():0]}}),Object.defineProperty(e,\"xPosition\",{get:ExpressionPropertyInterface(t.px)}),Object.defineProperty(e,\"yPosition\",{get:ExpressionPropertyInterface(t.py)}),Object.defineProperty(e,\"zPosition\",{get:ExpressionPropertyInterface(t.pz)}),Object.defineProperty(e,\"anchorPoint\",{get:ExpressionPropertyInterface(t.a)}),Object.defineProperty(e,\"opacity\",{get:ExpressionPropertyInterface(t.o)}),Object.defineProperty(e,\"skew\",{get:ExpressionPropertyInterface(t.sk)}),Object.defineProperty(e,\"skewAxis\",{get:ExpressionPropertyInterface(t.sa)}),Object.defineProperty(e,\"orientation\",{get:ExpressionPropertyInterface(t.or)}),e},ProjectInterface=function(){function t(t){this.compositions.push(t)}return function(){function e(t){for(var e=0,r=this.compositions.length;e<r;){if(this.compositions[e].data&&this.compositions[e].data.nm===t)return this.compositions[e].prepareFrame&&this.compositions[e].data.xt&&this.compositions[e].prepareFrame(this.currentFrame),this.compositions[e].compInterface;e+=1}return null}return e.compositions=[],e.currentFrame=0,e.registerComposition=t,e}}(),EffectsExpressionInterface=function(){var t={createEffectsInterface:function(t,r){if(t.effectsManager){var i,a=[],s=t.data.ef,n=t.effectsManager.effectElements.length;for(i=0;i<n;i+=1)a.push(e(s[i],t.effectsManager.effectElements[i],r,t));var o=t.data.ef||[],h=function(t){for(i=0,n=o.length;i<n;){if(t===o[i].nm||t===o[i].mn||t===o[i].ix)return a[i];i+=1}return null};return Object.defineProperty(h,\"numProperties\",{get:function(){return o.length}}),h}return null}};function e(t,i,a,s){function n(e){for(var r=t.ef,i=0,a=r.length;i<a;){if(e===r[i].nm||e===r[i].mn||e===r[i].ix)return 5===r[i].ty?l[i]:l[i]();i+=1}throw new Error}var o,h=propertyGroupFactory(n,a),l=[],p=t.ef.length;for(o=0;o<p;o+=1)5===t.ef[o].ty?l.push(e(t.ef[o],i.effectElements[o],i.effectElements[o].propertyGroup,s)):l.push(r(i.effectElements[o],t.ef[o].ty,s,h));return\"ADBE Color Control\"===t.mn&&Object.defineProperty(n,\"color\",{get:function(){return l[0]()}}),Object.defineProperties(n,{numProperties:{get:function(){return t.np}},_name:{value:t.nm},propertyGroup:{value:h}}),n.enabled=0!==t.en,n.active=n.enabled,n}function r(t,e,r,i){var a=ExpressionPropertyInterface(t.p);return t.p.setGroupProperty&&t.p.setGroupProperty(PropertyInterface(\"\",i)),function(){return 10===e?r.comp.compInterface(t.p.v):a()}}return t}(),MaskManagerInterface=function(){function t(t,e){this._mask=t,this._data=e}return Object.defineProperty(t.prototype,\"maskPath\",{get:function(){return this._mask.prop.k&&this._mask.prop.getValue(),this._mask.prop}}),Object.defineProperty(t.prototype,\"maskOpacity\",{get:function(){return this._mask.op.k&&this._mask.op.getValue(),100*this._mask.op.v}}),function(e){var r,i=createSizedArray(e.viewData.length),a=e.viewData.length;for(r=0;r<a;r+=1)i[r]=new t(e.viewData[r],e.masksProperties[r]);return function(t){for(r=0;r<a;){if(e.masksProperties[r].nm===t)return i[r];r+=1}return null}}}(),ExpressionPropertyInterface=function(){var t={pv:0,v:0,mult:1},e={pv:[0,0,0],v:[0,0,0],mult:1};function r(t,e,r){Object.defineProperty(t,\"velocity\",{get:function(){return e.getVelocityAtTime(e.comp.currentFrame)}}),t.numKeys=e.keyframes?e.keyframes.length:0,t.key=function(i){if(!t.numKeys)return 0;var a=\"\";a=\"s\"in e.keyframes[i-1]?e.keyframes[i-1].s:\"e\"in e.keyframes[i-2]?e.keyframes[i-2].e:e.keyframes[i-2].s;var s=\"unidimensional\"===r?new Number(a):Object.assign({},a);return s.time=e.keyframes[i-1].t/e.elem.comp.globalData.frameRate,s.value=\"unidimensional\"===r?a[0]:a,s},t.valueAtTime=e.getValueAtTime,t.speedAtTime=e.getSpeedAtTime,t.velocityAtTime=e.getVelocityAtTime,t.propertyGroup=e.propertyGroup}function i(){return t}return function(a){return a?\"unidimensional\"===a.propType?function(e){e&&\"pv\"in e||(e=t);var i=1/e.mult,a=e.pv*i,s=new Number(a);return s.value=a,r(s,e,\"unidimensional\"),function(){return e.k&&e.getValue(),a=e.v*i,s.value!==a&&((s=new Number(a)).value=a,r(s,e,\"unidimensional\")),s}}(a):function(t){t&&\"pv\"in t||(t=e);var i=1/t.mult,a=t.data&&t.data.l||t.pv.length,s=createTypedArray(\"float32\",a),n=createTypedArray(\"float32\",a);return s.value=n,r(s,t,\"multidimensional\"),function(){t.k&&t.getValue();for(var e=0;e<a;e+=1)n[e]=t.v[e]*i,s[e]=n[e];return s}}(a):i}}(),TextExpressionSelectorPropFactory=function(){function t(t,e){return this.textIndex=t+1,this.textTotal=e,this.v=this.getValue()*this.mult,this.v}return function(e,r){this.pv=1,this.comp=e.comp,this.elem=e,this.mult=.01,this.propType=\"textSelector\",this.textTotal=r.totalChars,this.selectorValue=100,this.lastValue=[1,1,1],this.k=!0,this.x=!0,this.getValue=ExpressionManager.initiateExpression.bind(this)(e,r,this),this.getMult=t,this.getVelocityAtTime=expressionHelpers.getVelocityAtTime,this.kf?this.getValueAtTime=expressionHelpers.getValueAtTime.bind(this):this.getValueAtTime=expressionHelpers.getStaticValueAtTime.bind(this),this.setGroupProperty=expressionHelpers.setGroupProperty}}(),propertyGetTextProp=TextSelectorProp.getTextSelectorProp;function SliderEffect(t,e,r){this.p=PropertyFactory.getProp(e,t.v,0,0,r)}function AngleEffect(t,e,r){this.p=PropertyFactory.getProp(e,t.v,0,0,r)}function ColorEffect(t,e,r){this.p=PropertyFactory.getProp(e,t.v,1,0,r)}function PointEffect(t,e,r){this.p=PropertyFactory.getProp(e,t.v,1,0,r)}function LayerIndexEffect(t,e,r){this.p=PropertyFactory.getProp(e,t.v,0,0,r)}function MaskIndexEffect(t,e,r){this.p=PropertyFactory.getProp(e,t.v,0,0,r)}function CheckboxEffect(t,e,r){this.p=PropertyFactory.getProp(e,t.v,0,0,r)}function NoValueEffect(){this.p={}}function EffectsManager(t,e){var r,i=t.ef||[];this.effectElements=[];var a,s=i.length;for(r=0;r<s;r+=1)a=new GroupEffect(i[r],e),this.effectElements.push(a)}function GroupEffect(t,e){this.init(t,e)}TextSelectorProp.getTextSelectorProp=function(t,e,r){return 1===e.t?new TextExpressionSelectorPropFactory(t,e,r):propertyGetTextProp(t,e,r)},extendPrototype([DynamicPropertyContainer],GroupEffect),GroupEffect.prototype.getValue=GroupEffect.prototype.iterateDynamicProperties,GroupEffect.prototype.init=function(t,e){var r;this.data=t,this.effectElements=[],this.initDynamicPropertyContainer(e);var i,a=this.data.ef.length,s=this.data.ef;for(r=0;r<a;r+=1){switch(i=null,s[r].ty){case 0:i=new SliderEffect(s[r],e,this);break;case 1:i=new AngleEffect(s[r],e,this);break;case 2:i=new ColorEffect(s[r],e,this);break;case 3:i=new PointEffect(s[r],e,this);break;case 4:case 7:i=new CheckboxEffect(s[r],e,this);break;case 10:i=new LayerIndexEffect(s[r],e,this);break;case 11:i=new MaskIndexEffect(s[r],e,this);break;case 5:i=new EffectsManager(s[r],e,this);break;default:i=new NoValueEffect(s[r],e,this)}i&&this.effectElements.push(i)}};var lottie={};function setLocationHref(t){locationHref=t}function searchAnimations(){!0===standalone?animationManager.searchAnimations(animationData,standalone,renderer):animationManager.searchAnimations()}function setSubframeRendering(t){subframeEnabled=t}function setIDPrefix(t){idPrefix=t}function loadAnimation(t){return!0===standalone&&(t.animationData=JSON.parse(animationData)),animationManager.loadAnimation(t)}function setQuality(t){if(\"string\"==typeof t)switch(t){case\"high\":defaultCurveSegments=200;break;default:case\"medium\":defaultCurveSegments=50;break;case\"low\":defaultCurveSegments=10}else!isNaN(t)&&t>1&&(defaultCurveSegments=t);roundValues(!(defaultCurveSegments>=50))}function inBrowser(){return\"undefined\"!=typeof navigator}function installPlugin(t,e){\"expressions\"===t&&(expressionsPlugin=e)}function getFactory(t){switch(t){case\"propertyFactory\":return PropertyFactory;case\"shapePropertyFactory\":return ShapePropertyFactory;case\"matrix\":return Matrix;default:return null}}function checkReady(){\"complete\"===document.readyState&&(clearInterval(readyStateCheckInterval),searchAnimations())}function getQueryVariable(t){for(var e=queryString.split(\"&\"),r=0;r<e.length;r+=1){var i=e[r].split(\"=\");if(decodeURIComponent(i[0])==t)return decodeURIComponent(i[1])}return null}lottie.play=animationManager.play,lottie.pause=animationManager.pause,lottie.setLocationHref=setLocationHref,lottie.togglePause=animationManager.togglePause,lottie.setSpeed=animationManager.setSpeed,lottie.setDirection=animationManager.setDirection,lottie.stop=animationManager.stop,lottie.searchAnimations=searchAnimations,lottie.registerAnimation=animationManager.registerAnimation,lottie.loadAnimation=loadAnimation,lottie.setSubframeRendering=setSubframeRendering,lottie.resize=animationManager.resize,lottie.goToAndStop=animationManager.goToAndStop,lottie.destroy=animationManager.destroy,lottie.setQuality=setQuality,lottie.inBrowser=inBrowser,lottie.installPlugin=installPlugin,lottie.freeze=animationManager.freeze,lottie.unfreeze=animationManager.unfreeze,lottie.setVolume=animationManager.setVolume,lottie.mute=animationManager.mute,lottie.unmute=animationManager.unmute,lottie.getRegisteredAnimations=animationManager.getRegisteredAnimations,lottie.useWebWorker=function(t){_useWebWorker=t},lottie.setIDPrefix=setIDPrefix,lottie.__getFactory=getFactory,lottie.version=\"5.8.1\";var standalone=\"__[STANDALONE]__\",animationData=\"__[ANIMATIONDATA]__\",renderer=\"\",queryString;if(standalone){var scripts=document.getElementsByTagName(\"script\"),index=scripts.length-1,myScript=scripts[index]||{src:\"\"};queryString=myScript.src.replace(/^[^\\?]+\\??/,\"\"),renderer=getQueryVariable(\"renderer\")}var readyStateCheckInterval=setInterval(checkReady,100);return lottie},module.exports?module.exports=factory(root):(root.lottie=factory(root),root.bodymovin=root.lottie))})(lottie$1);var lottie=lottie$1.exports,_templateObject$1,styles=r$3(_templateObject$1||(_templateObject$1=_taggedTemplateLiteral([\"\\n  * {\\n    box-sizing: border-box;\\n  }\\n\\n  :host {\\n    --lottie-player-toolbar-height: 35px;\\n    --lottie-player-toolbar-background-color: transparent;\\n    --lottie-player-toolbar-icon-color: #999;\\n    --lottie-player-toolbar-icon-hover-color: #222;\\n    --lottie-player-toolbar-icon-active-color: #555;\\n    --lottie-player-seeker-track-color: #ccc;\\n    --lottie-player-seeker-thumb-color: rgba(0, 107, 120, 0.8);\\n    --lottie-player-seeker-display: block;\\n\\n    display: block;\\n    width: 100%;\\n    height: 100%;\\n  }\\n\\n  .main {\\n    display: flex;\\n    flex-direction: column;\\n    height: 100%;\\n    width: 100%;\\n  }\\n\\n  .animation {\\n    width: 100%;\\n    height: 100%;\\n    display: flex;\\n  }\\n  .animation.controls {\\n    height: calc(100% - 35px);\\n  }\\n\\n  .toolbar {\\n    display: flex;\\n    align-items: center;\\n    justify-items: center;\\n    background-color: var(--lottie-player-toolbar-background-color);\\n    margin: 0 5px;\\n    height: 35px;\\n  }\\n\\n  .toolbar button {\\n    cursor: pointer;\\n    fill: var(--lottie-player-toolbar-icon-color);\\n    display: flex;\\n    background: none;\\n    border: 0;\\n    padding: 0;\\n    outline: none;\\n    height: 100%;\\n  }\\n\\n  .toolbar button:hover {\\n    fill: var(--lottie-player-toolbar-icon-hover-color);\\n  }\\n\\n  .toolbar button.active {\\n    fill: var(--lottie-player-toolbar-icon-active-color);\\n  }\\n\\n  .toolbar button.active:hover {\\n    fill: var(--lottie-player-toolbar-icon-hover-color);\\n  }\\n\\n  .toolbar button:focus {\\n    outline: 1px dotted var(--lottie-player-toolbar-icon-active-color);\\n  }\\n\\n  .toolbar button svg {\\n  }\\n\\n  .toolbar button.disabled svg {\\n    display: none;\\n  }\\n\\n  .seeker {\\n    -webkit-appearance: none;\\n    width: 95%;\\n    outline: none;\\n    background-color: var(--lottie-player-toolbar-background-color);\\n    display: var(--lottie-player-seeker-display);\\n  }\\n\\n  .seeker::-webkit-slider-runnable-track {\\n    width: 100%;\\n    height: 5px;\\n    cursor: pointer;\\n    background: var(--lottie-player-seeker-track-color);\\n    border-radius: 3px;\\n  }\\n  .seeker::-webkit-slider-thumb {\\n    height: 15px;\\n    width: 15px;\\n    border-radius: 50%;\\n    background: var(--lottie-player-seeker-thumb-color);\\n    cursor: pointer;\\n    -webkit-appearance: none;\\n    margin-top: -5px;\\n  }\\n  .seeker:focus::-webkit-slider-runnable-track {\\n    background: #999;\\n  }\\n  .seeker::-moz-range-track {\\n    width: 100%;\\n    height: 5px;\\n    cursor: pointer;\\n    background: var(--lottie-player-seeker-track-color);\\n    border-radius: 3px;\\n  }\\n  .seeker::-moz-range-thumb {\\n    height: 15px;\\n    width: 15px;\\n    border-radius: 50%;\\n    background: var(--lottie-player-seeker-thumb-color);\\n    cursor: pointer;\\n  }\\n  .seeker::-ms-track {\\n    width: 100%;\\n    height: 5px;\\n    cursor: pointer;\\n    background: transparent;\\n    border-color: transparent;\\n    color: transparent;\\n  }\\n  .seeker::-ms-fill-lower {\\n    background: var(--lottie-player-seeker-track-color);\\n    border-radius: 3px;\\n  }\\n  .seeker::-ms-fill-upper {\\n    background: var(--lottie-player-seeker-track-color);\\n    border-radius: 3px;\\n  }\\n  .seeker::-ms-thumb {\\n    border: 0;\\n    height: 15px;\\n    width: 15px;\\n    border-radius: 50%;\\n    background: var(--lottie-player-seeker-thumb-color);\\n    cursor: pointer;\\n  }\\n  .seeker:focus::-ms-fill-lower {\\n    background: var(--lottie-player-seeker-track-color);\\n  }\\n  .seeker:focus::-ms-fill-upper {\\n    background: var(--lottie-player-seeker-track-color);\\n  }\\n\\n  .error {\\n    display: flex;\\n    justify-content: center;\\n    height: 100%;\\n    align-items: center;\\n  }\\n\"]))),_templateObject,_templateObject2,_templateObject3,_templateObject4,_templateObject5,PlayerState,PlayMode,PlayerEvents;function parseSrc(t){if(\"object\"==typeof t)return t;try{return JSON.parse(t)}catch(e){return new URL(t,window.location.href).toString()}}function isLottie(t){return[\"v\",\"ip\",\"op\",\"layers\",\"fr\",\"w\",\"h\"].every((e=>Object.prototype.hasOwnProperty.call(t,e)))}function fromURL(t){return _fromURL.apply(this,arguments)}function _fromURL(){return(_fromURL=_asyncToGenerator((function*(t){if(\"string\"!=typeof t)throw new Error(\"The url value must be a string\");var e;try{var r=new URL(t),i=yield fetch(r.toString());e=yield i.json()}catch(t){throw new Error(\"An error occurred while trying to load the Lottie file from URL\")}return e}))).apply(this,arguments)}!function(t){t.Destroyed=\"destroyed\",t.Error=\"error\",t.Frozen=\"frozen\",t.Loading=\"loading\",t.Paused=\"paused\",t.Playing=\"playing\",t.Stopped=\"stopped\"}(PlayerState||(PlayerState={})),function(t){t.Bounce=\"bounce\",t.Normal=\"normal\"}(PlayMode||(PlayMode={})),function(t){t.Complete=\"complete\",t.Destroyed=\"destroyed\",t.Error=\"error\",t.Frame=\"frame\",t.Freeze=\"freeze\",t.Load=\"load\",t.Loop=\"loop\",t.Pause=\"pause\",t.Play=\"play\",t.Ready=\"ready\",t.Rendered=\"rendered\",t.Stop=\"stop\"}(PlayerEvents||(PlayerEvents={}));var LottiePlayer=class extends s{constructor(){super(...arguments),this.autoplay=!1,this.background=\"transparent\",this.controls=!1,this.currentState=PlayerState.Loading,this.description=\"Lottie animation\",this.direction=1,this.hover=!1,this.intermission=1,this.loop=!1,this.mode=PlayMode.Normal,this.preserveAspectRatio=\"xMidYMid meet\",this.renderer=\"svg\",this.speed=1,this._io=void 0,this._counter=1}load(t){var e=this;return _asyncToGenerator((function*(){if(e.shadowRoot){var r={container:e.container,loop:!1,autoplay:!1,renderer:e.renderer,rendererSettings:{preserveAspectRatio:e.preserveAspectRatio,clearCanvas:!1,progressiveLoad:!0,hideOnTransparent:!0}};try{var i=parseSrc(t),a={},s=\"string\"==typeof i?\"path\":\"animationData\";e._lottie&&e._lottie.destroy(),e.webworkers&&lottie$1.exports.useWebWorker(!0),e._lottie=lottie$1.exports.loadAnimation(Object.assign(Object.assign({},r),{[s]:i})),e._attachEventListeners(),\"path\"===s?(a=yield fromURL(i),s=\"animationData\"):a=i,isLottie(a)||(e.currentState=PlayerState.Error,e.dispatchEvent(new CustomEvent(PlayerEvents.Error)))}catch(t){e.currentState=PlayerState.Error,e.dispatchEvent(new CustomEvent(PlayerEvents.Error))}}}))()}getLottie(){return this._lottie}play(){this._lottie&&(this._lottie.play(),this.currentState=PlayerState.Playing,this.dispatchEvent(new CustomEvent(PlayerEvents.Play)))}pause(){this._lottie&&(this._lottie.pause(),this.currentState=PlayerState.Paused,this.dispatchEvent(new CustomEvent(PlayerEvents.Pause)))}stop(){this._lottie&&(this._counter=1,this._lottie.stop(),this.currentState=PlayerState.Stopped,this.dispatchEvent(new CustomEvent(PlayerEvents.Stop)))}destroy(){this._lottie&&(this._lottie.destroy(),this._lottie=null,this.currentState=PlayerState.Destroyed,this.dispatchEvent(new CustomEvent(PlayerEvents.Destroyed)),this.remove())}seek(t){if(this._lottie){var e=/^(\\d+)(%?)$/.exec(t.toString());if(e){var r=\"%\"===e[2]?this._lottie.totalFrames*Number(e[1])/100:Number(e[1]);this.seeker=r,this.currentState===PlayerState.Playing?this._lottie.goToAndPlay(r,!0):(this._lottie.goToAndStop(r,!0),this._lottie.pause())}}}snapshot(){var t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];if(this.shadowRoot){var e=this.shadowRoot.querySelector(\".animation svg\"),r=(new XMLSerializer).serializeToString(e);if(t){var i=document.createElement(\"a\");i.href=\"data:image/svg+xml;charset=utf-8,\".concat(encodeURIComponent(r)),i.download=\"download_\".concat(this.seeker,\".svg\"),document.body.appendChild(i),i.click(),document.body.removeChild(i)}return r}}setSpeed(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;this._lottie&&this._lottie.setSpeed(t)}setDirection(t){this._lottie&&this._lottie.setDirection(t)}setLooping(t){this._lottie&&(this.loop=t,this._lottie.loop=t)}togglePlay(){return this.currentState===PlayerState.Playing?this.pause():this.play()}toggleLooping(){this.setLooping(!this.loop)}resize(){this._lottie&&this._lottie.resize()}static get styles(){return styles}disconnectedCallback(){this.isConnected||(this._io&&(this._io.disconnect(),this._io=void 0),document.removeEventListener(\"visibilitychange\",(()=>this._onVisibilityChange())),this.destroy())}render(){var t=this.controls?\"main controls\":\"main\",e=this.controls?\"animation controls\":\"animation\";return $(_templateObject||(_templateObject=_taggedTemplateLiteral([' <div\\n      id=\"animation-container\"\\n      class=','\\n      lang=\"en\"\\n      aria-label=','\\n      role=\"img\"\\n    >\\n      <div\\n        id=\"animation\"\\n        class=','\\n        style=\"background:',';\"\\n      >\\n        ',\"\\n      </div>\\n      \",\"\\n    </div>\"])),t,this.description,e,this.background,this.currentState===PlayerState.Error?$(_templateObject2||(_templateObject2=_taggedTemplateLiteral(['<div class=\"error\">⚠️</div>']))):void 0,this.controls?this.renderControls():void 0)}firstUpdated(){\"IntersectionObserver\"in window&&(this._io=new IntersectionObserver((t=>{t[0].isIntersecting?this.currentState===PlayerState.Frozen&&this.play():this.currentState===PlayerState.Playing&&this.freeze()})),this._io.observe(this.container)),void 0!==document.hidden&&document.addEventListener(\"visibilitychange\",(()=>this._onVisibilityChange())),this.src&&this.load(this.src),this.dispatchEvent(new CustomEvent(PlayerEvents.Rendered))}renderControls(){var t=this.currentState===PlayerState.Playing,e=this.currentState===PlayerState.Paused,r=this.currentState===PlayerState.Stopped;return $(_templateObject3||(_templateObject3=_taggedTemplateLiteral(['\\n      <div\\n        id=\"lottie-controls\"\\n        aria-label=\"lottie-animation-controls\"\\n        class=\"toolbar\"\\n      >\\n        <button\\n          id=\"lottie-play-button\"\\n          @click=',\"\\n          class=\",'\\n          style=\"align-items:center;\"\\n          tabindex=\"0\"\\n          aria-label=\"play-pause\"\\n        >\\n          ','\\n        </button>\\n        <button\\n          id=\"lottie-stop-button\"\\n          @click=',\"\\n          class=\",'\\n          style=\"align-items:center;\"\\n          tabindex=\"0\"\\n          aria-label=\"stop\"\\n        >\\n          <svg width=\"24\" height=\"24\" aria-hidden=\"true\" focusable=\"false\">\\n            <path d=\"M6 6h12v12H6V6z\" />\\n          </svg>\\n        </button>\\n        <input\\n          id=\"lottie-seeker-input\"\\n          class=\"seeker\"\\n          type=\"range\"\\n          min=\"0\"\\n          step=\"1\"\\n          max=\"100\"\\n          .value=',\"\\n          @input=\",\"\\n          @mousedown=\",\"\\n          @mouseup=\",'\\n          aria-valuemin=\"1\"\\n          aria-valuemax=\"100\"\\n          role=\"slider\"\\n          aria-valuenow=','\\n          tabindex=\"0\"\\n          aria-label=\"lottie-seek-input\"\\n        />\\n        <button\\n          id=\"lottie-loop-toggle\"\\n          @click=',\"\\n          class=\",'\\n          style=\"align-items:center;\"\\n          tabindex=\"0\"\\n          aria-label=\"loop-toggle\"\\n        >\\n          <svg width=\"24\" height=\"24\" aria-hidden=\"true\" focusable=\"false\">\\n            <path\\n              d=\"M17.016 17.016v-4.031h1.969v6h-12v3l-3.984-3.984 3.984-3.984v3h10.031zM6.984 6.984v4.031H5.015v-6h12v-3l3.984 3.984-3.984 3.984v-3H6.984z\"\\n            />\\n          </svg>\\n        </button>\\n      </div>\\n    '])),this.togglePlay,t||e?\"active\":\"\",$(t?_templateObject4||(_templateObject4=_taggedTemplateLiteral(['<svg\\n                width=\"24\"\\n                height=\"24\"\\n                aria-hidden=\"true\"\\n                focusable=\"false\"\\n              >\\n                <path\\n                  d=\"M14.016 5.016H18v13.969h-3.984V5.016zM6 18.984V5.015h3.984v13.969H6z\"\\n                />\\n              </svg>'])):_templateObject5||(_templateObject5=_taggedTemplateLiteral(['<svg\\n                width=\"24\"\\n                height=\"24\"\\n                aria-hidden=\"true\"\\n                focusable=\"false\"\\n              >\\n                <path d=\"M8.016 5.016L18.985 12 8.016 18.984V5.015z\" />\\n              </svg>']))),this.stop,r?\"active\":\"\",this.seeker,this._handleSeekChange,(()=>{this._prevState=this.currentState,this.freeze()}),(()=>{this._prevState===PlayerState.Playing&&this.play()}),this.seeker,this.toggleLooping,this.loop?\"active\":\"\")}_onVisibilityChange(){!0===document.hidden&&this.currentState===PlayerState.Playing?this.freeze():this.currentState===PlayerState.Frozen&&this.play()}_handleSeekChange(t){if(this._lottie&&!isNaN(t.target.value)){var e=t.target.value/100*this._lottie.totalFrames;this.seek(e)}}_attachEventListeners(){this._lottie.addEventListener(\"enterFrame\",(()=>{this.seeker=this._lottie.currentFrame/this._lottie.totalFrames*100,this.dispatchEvent(new CustomEvent(PlayerEvents.Frame,{detail:{frame:this._lottie.currentFrame,seeker:this.seeker}}))})),this._lottie.addEventListener(\"complete\",(()=>{if(this.currentState===PlayerState.Playing){if(!this.loop||this.count&&this._counter>=this.count){if(this.dispatchEvent(new CustomEvent(PlayerEvents.Complete)),this.mode!==PlayMode.Bounce)return;if(0===this._lottie.currentFrame)return}this.mode===PlayMode.Bounce?(this.count&&(this._counter+=.5),setTimeout((()=>{this.dispatchEvent(new CustomEvent(PlayerEvents.Loop)),this.currentState===PlayerState.Playing&&(this._lottie.setDirection(-1*this._lottie.playDirection),this._lottie.play())}),this.intermission)):(this.count&&(this._counter+=1),window.setTimeout((()=>{this.dispatchEvent(new CustomEvent(PlayerEvents.Loop)),this.currentState===PlayerState.Playing&&(-1===this.direction?(this.seek(\"99%\"),this.play()):(this._lottie.stop(),this._lottie.play()))}),this.intermission))}else this.dispatchEvent(new CustomEvent(PlayerEvents.Complete))})),this._lottie.addEventListener(\"DOMLoaded\",(()=>{this.setSpeed(this.speed),this.setDirection(this.direction),this.autoplay&&(-1===this.direction&&this.seek(\"100%\"),this.play()),this.dispatchEvent(new CustomEvent(PlayerEvents.Ready))})),this._lottie.addEventListener(\"data_ready\",(()=>{this.dispatchEvent(new CustomEvent(PlayerEvents.Load))})),this._lottie.addEventListener(\"data_failed\",(()=>{this.currentState=PlayerState.Error,this.dispatchEvent(new CustomEvent(PlayerEvents.Error))})),this.container.addEventListener(\"mouseenter\",(()=>{this.hover&&this.currentState!==PlayerState.Playing&&this.play()})),this.container.addEventListener(\"mouseleave\",(()=>{this.hover&&this.currentState===PlayerState.Playing&&this.stop()}))}freeze(){this._lottie&&(this._lottie.pause(),this.currentState=PlayerState.Frozen,this.dispatchEvent(new CustomEvent(PlayerEvents.Freeze)))}};__decorate([e$5({type:Boolean})],LottiePlayer.prototype,\"autoplay\",void 0),__decorate([e$5({type:String,reflect:!0})],LottiePlayer.prototype,\"background\",void 0),__decorate([e$5({type:Boolean})],LottiePlayer.prototype,\"controls\",void 0),__decorate([e$5({type:Number})],LottiePlayer.prototype,\"count\",void 0),__decorate([e$5({type:String})],LottiePlayer.prototype,\"currentState\",void 0),__decorate([e$5({type:String})],LottiePlayer.prototype,\"description\",void 0),__decorate([e$5({type:Number})],LottiePlayer.prototype,\"direction\",void 0),__decorate([e$5({type:Boolean})],LottiePlayer.prototype,\"hover\",void 0),__decorate([e$5()],LottiePlayer.prototype,\"intermission\",void 0),__decorate([e$5({type:Boolean,reflect:!0})],LottiePlayer.prototype,\"loop\",void 0),__decorate([e$5()],LottiePlayer.prototype,\"mode\",void 0),__decorate([e$5({type:String})],LottiePlayer.prototype,\"preserveAspectRatio\",void 0),__decorate([e$5({type:String})],LottiePlayer.prototype,\"renderer\",void 0),__decorate([e$5()],LottiePlayer.prototype,\"seeker\",void 0),__decorate([e$5({type:Number})],LottiePlayer.prototype,\"speed\",void 0),__decorate([e$5({type:String})],LottiePlayer.prototype,\"src\",void 0),__decorate([e$5({type:Boolean})],LottiePlayer.prototype,\"webworkers\",void 0),__decorate([i(\".animation\")],LottiePlayer.prototype,\"container\",void 0),LottiePlayer=__decorate([n$1(\"lottie-player\")],LottiePlayer);export{LottiePlayer,PlayMode,PlayerEvents,PlayerState,parseSrc};\n//# sourceMappingURL=lottie-player.esm.js.map\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 { 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<string | RegExp>;\n  denyUrls: Array<string | RegExp>;\n  ignoreErrors: Array<string | RegExp>;\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<InboundFiltersOptions> = {}) {}\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<InboundFiltersOptions> = {},\n  clientOptions: Partial<InboundFiltersOptions> = {},\n): Partial<InboundFiltersOptions> {\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<InboundFiltersOptions>): 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<string | RegExp>): 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<string | RegExp>): 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<string | RegExp>): 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 !== '<anonymous>' && 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","export const SDK_VERSION = '7.16.0';\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<Hub[HUB_FUNCTION]>`,\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<Hub['captureException']> {\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<Hub['captureMessage']> {\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<Hub['captureEvent']> {\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<Hub['configureScope']> {\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<Hub['addBreadcrumb']> {\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<Hub['setContext']> {\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<Hub['setExtras']> {\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<Hub['setExtra']> {\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<Hub['setTags']> {\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<Hub['setTag']> {\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<Hub['setUser']> {\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<Hub['withScope']> {\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<Hub['startTransaction']> {\n  return getCurrentHub().startTransaction({ ...context }, customSamplingContext);\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<void> = makePromiseBuffer(options.bufferSize || DEFAULT_TRANSPORT_BUFFER_SIZE),\n): Transport {\n  let rateLimits: RateLimits = {};\n\n  const flush = (timeout?: number): PromiseLike<boolean> => buffer.drain(timeout);\n\n  function send(envelope: Envelope): PromiseLike<void> {\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<void> =>\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 because buffer is full.');\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 { getCurrentHub } from '@sentry/core';\nimport { 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<string, unknown>,\n  syntheticException?: Error,\n  isUnhandledRejection?: boolean,\n): Event {\n  const hub = getCurrentHub();\n  const client = hub.getClient();\n  const normalizeDepth = client && client.getOptions().normalizeDepth;\n\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, normalizeDepth),\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<Event> {\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<Event> {\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<string, unknown>;\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<GlobalHandlersIntegrationsOptionKeys, boolean>;\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<GlobalHandlersIntegrationsOptionKeys, (() => 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<BrowserClient>();\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, getOriginalFunction, WINDOW } 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<TryCatchOptions>) {\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    if (this._options.setTimeout) {\n      fill(WINDOW, 'setTimeout', _wrapTimeFunction);\n    }\n\n    if (this._options.setInterval) {\n      fill(WINDOW, 'setInterval', _wrapTimeFunction);\n    }\n\n    if (this._options.requestAnimationFrame) {\n      fill(WINDOW, 'requestAnimationFrame', _wrapRAF);\n    }\n\n    if (this._options.XMLHttpRequest && 'XMLHttpRequest' in WINDOW) {\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 globalObject = WINDOW as { [key: string]: any };\n  // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n  const proto = globalObject[target] && globalObject[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  htmlTreeAsString,\n  parseUrl,\n  safeJoin,\n  severityLevelFromString,\n  WINDOW,\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<BreadcrumbsOptions>;\n\n  /**\n   * @inheritDoc\n   */\n  public constructor(options?: Partial<BreadcrumbsOptions>) {\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 = '<unknown>';\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  let from = handlerData.from;\n  let to = handlerData.to;\n  const parsedLoc = parseUrl(WINDOW.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","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<LinkedErrorsOptions> = {}) {\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<BrowserClient>();\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 { WINDOW } from '@sentry/utils';\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 (!WINDOW.navigator && !WINDOW.location && !WINDOW.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) || (WINDOW.location && WINDOW.location.href);\n        const { referrer } = WINDOW.document || {};\n        const { userAgent } = WINDOW.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 { ClientOptions, DsnComponents, DsnLike, SdkInfo } 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, sdkInfo: SdkInfo | undefined): 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    ...(sdkInfo && { sentry_client: `${sdkInfo.name}/${sdkInfo.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(\n  dsn: DsnComponents,\n  // TODO (v8): Remove `tunnelOrOptions` in favor of `options`, and use the substitute code below\n  // options: ClientOptions = {} as ClientOptions,\n  tunnelOrOptions: string | ClientOptions = {} as ClientOptions,\n): string {\n  // TODO (v8): Use this code instead\n  // const { tunnel, _metadata = {} } = options;\n  // return tunnel ? tunnel : `${_getIngestEndpoint(dsn)}?${_encodedAuth(dsn, _metadata.sdk)}`;\n\n  const tunnel = typeof tunnelOrOptions === 'string' ? tunnelOrOptions : tunnelOrOptions.tunnel;\n  const sdkInfo =\n    typeof tunnelOrOptions === 'string' || !tunnelOrOptions._metadata ? undefined : tunnelOrOptions._metadata.sdk;\n\n  return tunnel ? tunnel : `${_getIngestEndpoint(dsn)}?${_encodedAuth(dsn, sdkInfo)}`;\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 {\n  DsnComponents,\n  Event,\n  EventEnvelope,\n  EventEnvelopeHeaders,\n  EventItem,\n  SdkInfo,\n  SdkMetadata,\n  Session,\n  SessionAggregates,\n  SessionEnvelope,\n  SessionItem,\n} from '@sentry/types';\nimport { createEnvelope, dropUndefinedKeys, dsnToString } from '@sentry/utils';\n\n/** Extract sdk info from from the API metadata */\nfunction getSdkMetadataForEnvelopeHeader(metadata?: SdkMetadata): SdkInfo | undefined {\n  if (!metadata || !metadata.sdk) {\n    return;\n  }\n  const { name, version } = metadata.sdk;\n  return { name, version };\n}\n\n/**\n * Apply SdkInfo (name, version, packages, integrations) to the corresponding event key.\n * Merge with existing data if any.\n **/\nfunction enhanceEventWithSdkInfo(event: Event, sdkInfo?: SdkInfo): Event {\n  if (!sdkInfo) {\n    return event;\n  }\n  event.sdk = event.sdk || {};\n  event.sdk.name = event.sdk.name || sdkInfo.name;\n  event.sdk.version = event.sdk.version || sdkInfo.version;\n  event.sdk.integrations = [...(event.sdk.integrations || []), ...(sdkInfo.integrations || [])];\n  event.sdk.packages = [...(event.sdk.packages || []), ...(sdkInfo.packages || [])];\n  return event;\n}\n\n/** Creates an envelope from a Session */\nexport function createSessionEnvelope(\n  session: Session | SessionAggregates,\n  dsn: DsnComponents,\n  metadata?: SdkMetadata,\n  tunnel?: string,\n): SessionEnvelope {\n  const sdkInfo = getSdkMetadataForEnvelopeHeader(metadata);\n  const envelopeHeaders = {\n    sent_at: new Date().toISOString(),\n    ...(sdkInfo && { sdk: sdkInfo }),\n    ...(!!tunnel && { dsn: dsnToString(dsn) }),\n  };\n\n  const envelopeItem: SessionItem =\n    'aggregates' in session ? [{ type: 'sessions' }, session] : [{ type: 'session' }, session];\n\n  return createEnvelope<SessionEnvelope>(envelopeHeaders, [envelopeItem]);\n}\n\n/**\n * Create an Envelope from an event.\n */\nexport function createEventEnvelope(\n  event: Event,\n  dsn: DsnComponents,\n  metadata?: SdkMetadata,\n  tunnel?: string,\n): EventEnvelope {\n  const sdkInfo = getSdkMetadataForEnvelopeHeader(metadata);\n  const eventType = event.type || 'event';\n\n  enhanceEventWithSdkInfo(event, metadata && metadata.sdk);\n\n  const envelopeHeaders = createEventEnvelopeHeaders(event, sdkInfo, tunnel, dsn);\n\n  // Prevent this data (which, if it exists, was used in earlier steps in the processing pipeline) from being sent to\n  // sentry. (Note: Our use of this property comes and goes with whatever we might be debugging, whatever hacks we may\n  // have temporarily added, etc. Even if we don't happen to be using it at some point in the future, let's not get rid\n  // of this `delete`, lest we miss putting it back in the next time the property is in use.)\n  delete event.sdkProcessingMetadata;\n\n  const eventItem: EventItem = [{ type: eventType }, event];\n  return createEnvelope<EventEnvelope>(envelopeHeaders, [eventItem]);\n}\n\nfunction createEventEnvelopeHeaders(\n  event: Event,\n  sdkInfo: SdkInfo | undefined,\n  tunnel: string | undefined,\n  dsn: DsnComponents,\n): EventEnvelopeHeaders {\n  const dynamicSamplingContext = event.sdkProcessingMetadata && event.sdkProcessingMetadata.dynamicSamplingContext;\n\n  return {\n    event_id: event.event_id as string,\n    sent_at: new Date().toISOString(),\n    ...(sdkInfo && { sdk: sdkInfo }),\n    ...(!!tunnel && { dsn: dsnToString(dsn) }),\n    ...(event.type === 'transaction' &&\n      dynamicSamplingContext && {\n        trace: dropUndefinedKeys({ ...dynamicSamplingContext }),\n      }),\n  };\n}\n","import { Integration, Options } from '@sentry/types';\nimport { arrayify, logger } from '@sentry/utils';\n\nimport { getCurrentHub } from './hub';\nimport { addGlobalEventProcessor } from './scope';\n\ndeclare module '@sentry/types' {\n  interface Integration {\n    isDefaultInstance?: boolean;\n  }\n}\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 * Remove duplicates from the given array, preferring the last instance of any duplicate. Not guaranteed to\n * preseve the order of integrations in the array.\n *\n * @private\n */\nfunction filterDuplicates(integrations: Integration[]): Integration[] {\n  const integrationsByName: { [key: string]: Integration } = {};\n\n  integrations.forEach(currentInstance => {\n    const { name } = currentInstance;\n\n    const existingInstance = integrationsByName[name];\n\n    // We want integrations later in the array to overwrite earlier ones of the same type, except that we never want a\n    // default instance to overwrite an existing user instance\n    if (existingInstance && !existingInstance.isDefaultInstance && currentInstance.isDefaultInstance) {\n      return;\n    }\n\n    integrationsByName[name] = currentInstance;\n  });\n\n  return Object.values(integrationsByName);\n}\n\n/** Gets integrations to install */\nexport function getIntegrationsToSetup(options: Options): Integration[] {\n  const defaultIntegrations = options.defaultIntegrations || [];\n  const userIntegrations = options.integrations;\n\n  // We flag default instances, so that later we can tell them apart from any user-created instances of the same class\n  defaultIntegrations.forEach(integration => {\n    integration.isDefaultInstance = true;\n  });\n\n  let integrations: Integration[];\n\n  if (Array.isArray(userIntegrations)) {\n    integrations = [...defaultIntegrations, ...userIntegrations];\n  } else if (typeof userIntegrations === 'function') {\n    integrations = arrayify(userIntegrations(defaultIntegrations));\n  } else {\n    integrations = defaultIntegrations;\n  }\n\n  const finalIntegrations = filterDuplicates(integrations);\n\n  // The `Debug` integration prints copies of the `event` and `hint` which will be passed to `beforeSend`. It therefore\n  // has to run after all other integrations, so that the changes of all event processors will be reflected in the\n  // printed values. For lack of a more elegant way to guarantee that, we therefore locate it and, assuming it exists,\n  // pop it out of its current spot and shove it onto the end of the array.\n  const debugIndex = finalIntegrations.findIndex(integration => integration.name === 'Debug');\n  if (debugIndex !== -1) {\n    const [debugInstance] = finalIntegrations.splice(debugIndex, 1);\n    finalIntegrations.push(debugInstance);\n  }\n\n  return finalIntegrations;\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 {\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';\nimport { Scope } from './scope';\nimport { updateSession } from './session';\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<NodeOptions> {\n *   public constructor(options: NodeOptions) {\n *     super(options);\n *   }\n *\n *   // ...\n * }\n */\nexport abstract class BaseClient<O extends ClientOptions> implements Client<O> {\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);\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<boolean> {\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<boolean> {\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<T extends Integration>(integration: IntegrationClass<T>): 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<Record<SentryRequestType, Partial<Record<Outcome, number>>>>`\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<boolean> {\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<Event | null> {\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<Event | null>(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<string | undefined> {\n    return this._processEvent(event, hint, scope).then(\n      finalEvent => {\n        return finalEvent.event_id;\n      },\n      reason => {\n        if (__DEBUG_BUILD__) {\n          // If something's gone wrong, log the error as a warning. If it's just us having used a `SentryError` for\n          // control flow, log just the message (no stack) as a log-level log.\n          const sentryError = reason as SentryError;\n          if (sentryError.logLevel === 'log') {\n            logger.log(sentryError.message);\n          } else {\n            logger.warn(sentryError);\n          }\n        }\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<Event> {\n    const { beforeSend, sampleRate } = this.getOptions();\n\n    if (!this._isEnabled()) {\n      return rejectedSyncPromise(new SentryError('SDK not enabled, will not capture event.', 'log'));\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          'log',\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.', 'log');\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.', 'log');\n        }\n\n        const session = scope && scope.getSession();\n        if (!isTransaction && session) {\n          this._updateSessionFromEvent(session, processedEvent);\n        }\n\n        // None of the Sentry built event processor will update transaction name,\n        // so if the transaction name has been changed by an event processor, we know\n        // it has to come from custom event processor added by a user\n        const transactionInfo = processedEvent.transaction_info;\n        if (isTransaction && transactionInfo && processedEvent.transaction !== event.transaction) {\n          const source = 'custom';\n          processedEvent.transaction_info = {\n            ...transactionInfo,\n            source,\n            changes: [\n              ...transactionInfo.changes,\n              {\n                source,\n                // use the same timestamp as the processed event.\n                timestamp: processedEvent.timestamp as number,\n                propagations: transactionInfo.propagations,\n              },\n            ],\n          };\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<T>(promise: PromiseLike<T>): 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<Event>;\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<Event>;\n}\n\n/**\n * Verifies that return value of configured `beforeSend` is of expected type.\n */\nfunction _ensureBeforeSendRv(rv: PromiseLike<Event | null> | Event | null): PromiseLike<Event | null> | 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 { 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  logger,\n  serializeEnvelope,\n  WINDOW,\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';\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<string | RegExp>;\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<string | RegExp>;\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<BrowserTransportOptions>, 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<BrowserTransportOptions>, 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<BrowserClientOptions> {\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 && WINDOW.document) {\n      WINDOW.document.addEventListener('visibilitychange', () => {\n        if (WINDOW.document.visibilityState === 'hidden') {\n          this._flushOutcomes();\n        }\n      });\n    }\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public eventFromException(exception: unknown, hint?: EventHint): PromiseLike<Event> {\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<Event> {\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<Event | null> {\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);\n    const envelope = createClientReportEnvelope(outcomes, this._options.tunnel && dsnToString(this._dsn));\n\n    try {\n      const isRealNavigator = Object.prototype.toString.call(WINDOW && WINDOW.navigator) === '[object Navigator]';\n      const hasSendBeacon = isRealNavigator && typeof WINDOW.navigator.sendBeacon === 'function';\n      // Make sure beacon is not used if user configures custom transport options\n      if (hasSendBeacon && !this._options.transportOptions) {\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 = WINDOW.navigator.sendBeacon.bind(WINDOW.navigator);\n        sendBeacon(url, serializeEnvelope(envelope));\n      } else {\n        // If beacon is not supported or if they are using the tunnel option\n        // use our regular transport to send client reports to Sentry.\n        this._sendEnvelope(envelope);\n      }\n    } catch (e) {\n      __DEBUG_BUILD__ && logger.error(e);\n    }\n  }\n}\n","import { isNativeFetch, logger, WINDOW } from '@sentry/utils';\n\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(WINDOW.fetch)) {\n    return (cachedFetchImpl = WINDOW.fetch.bind(WINDOW));\n  }\n\n  const document = WINDOW.document;\n  let fetchImpl = WINDOW.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(WINDOW));\n  /* eslint-enable @typescript-eslint/unbound-method */\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<TransportMakeRequestResponse> {\n    const requestOptions: RequestInit = {\n      body: request.body,\n      method: 'POST',\n      referrerPolicy: 'origin',\n      headers: options.headers,\n      // Outgoing requests are usually cancelled when navigating to a different page, causing a \"TypeError: Failed to\n      // fetch\" error and sending a \"network_error\" client-outcome - in Chrome, the request status shows \"(cancelled)\".\n      // The `keepalive` flag keeps outgoing requests alive, even when switching pages. We want this since we're\n      // frequently sending events right before the user is switching pages (eg. whenfinishing navigation transactions).\n      // Gotchas:\n      // - `keepalive` isn't supported by Firefox\n      // - As per spec (https://fetch.spec.whatwg.org/#http-network-or-cache-fetch), a request with `keepalive: true`\n      //   and a content length of > 64 kibibytes returns a network error. We will therefore only activate the flag when\n      //   we're below that limit.\n      keepalive: request.body.length <= 65536,\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<TransportMakeRequestResponse> {\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|<anonymous>|[-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|safari-extension|safari-web-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 (?:<anonymous function: ([^>]+)>|([^)]+))\\(.*\\))? 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 { Client, ClientOptions } from '@sentry/types';\nimport { logger } from '@sentry/utils';\n\nimport { getCurrentHub } from './hub';\n\n/** A class object that can instantiate Client objects. */\nexport type ClientClass<F extends Client, O extends ClientOptions> = 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<F extends Client, O extends ClientOptions>(\n  clientClass: ClientClass<F, O>,\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 { WINDOW } 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\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","/* 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  getGlobalSingleton,\n  GLOBAL_OBJ,\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 extends Client>(): 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<T extends Integration>(integration: IntegrationClass<T>): 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 { userAgent } = GLOBAL_OBJ.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<T>(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  GLOBAL_OBJ.__SENTRY__ = GLOBAL_OBJ.__SENTRY__ || {\n    extensions: {},\n    hub: undefined,\n  };\n  return GLOBAL_OBJ;\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>('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","/* 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  arrayify,\n  dateTimestampInSeconds,\n  getGlobalSingleton,\n  isPlainObject,\n  isThenable,\n  logger,\n  SyncPromise,\n} from '@sentry/utils';\n\nimport { updateSession } from './session';\n\n/**\n * Default value for maximum number of breadcrumbs added to an event.\n */\nconst DEFAULT_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 <T>(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' ? maxBreadcrumbs : DEFAULT_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 data from the scope to the event and runs all event processors on it.\n   *\n   * @param event Event\n   * @param hint Object containing additional information about the original exception, for use by the event processors.\n   * @hidden\n   */\n  public applyToEvent(event: Event, hint: EventHint = {}): PromiseLike<Event | null> {\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<Event | null> {\n    return new SyncPromise<Event | null>((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 ? arrayify(event.fingerprint) : [];\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<EventProcessor[]>('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","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<SessionContext, 'started' | 'status'>): 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<SessionStatus, 'ok'>): 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","import { DynamicSamplingContext } 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/**\n * Takes a baggage header and turns it into Dynamic Sampling Context, by extracting all the \"sentry-\" prefixed values\n * from it.\n *\n * @param baggageHeader A very bread definition of a baggage header as it might appear in various frameworks.\n * @returns The Dynamic Sampling Context that was found on `baggageHeader`, if there was any, `undefined` otherwise.\n */\nexport function baggageHeaderToDynamicSamplingContext(\n  // Very liberal definition of what any incoming header might look like\n  baggageHeader: string | string[] | number | null | undefined | boolean,\n): Partial<DynamicSamplingContext> | undefined {\n  if (!isString(baggageHeader) && !Array.isArray(baggageHeader)) {\n    return undefined;\n  }\n\n  // Intermediary object to store baggage key value pairs of incoming baggage headers on.\n  // It is later used to read Sentry-DSC-values from.\n  let baggageObject: Readonly<Record<string, string>> = {};\n\n  if (Array.isArray(baggageHeader)) {\n    // Combine all baggage headers into one object containing the baggage values so we can later read the Sentry-DSC-values from it\n    baggageObject = baggageHeader.reduce<Record<string, string>>((acc, curr) => {\n      const currBaggageObject = baggageHeaderToObject(curr);\n      return {\n        ...acc,\n        ...currBaggageObject,\n      };\n    }, {});\n  } else {\n    // Return undefined if baggage header is an empty string (technically an empty baggage header is not spec conform but\n    // this is how we choose to handle it)\n    if (!baggageHeader) {\n      return undefined;\n    }\n\n    baggageObject = baggageHeaderToObject(baggageHeader);\n  }\n\n  // Read all \"sentry-\" prefixed values out of the baggage object and put it onto a dynamic sampling context object.\n  const dynamicSamplingContext = Object.entries(baggageObject).reduce<Record<string, string>>((acc, [key, value]) => {\n    if (key.match(SENTRY_BAGGAGE_KEY_PREFIX_REGEX)) {\n      const nonPrefixedKey = key.slice(SENTRY_BAGGAGE_KEY_PREFIX.length);\n      acc[nonPrefixedKey] = value;\n    }\n    return acc;\n  }, {});\n\n  // Only return a dynamic sampling context object if there are keys in it.\n  // A keyless object means there were no sentry values on the header, which means that there is no DSC.\n  if (Object.keys(dynamicSamplingContext).length > 0) {\n    return dynamicSamplingContext as Partial<DynamicSamplingContext>;\n  } else {\n    return undefined;\n  }\n}\n\n/**\n * Turns a Dynamic Sampling Object into a baggage header by prefixing all the keys on the object with \"sentry-\".\n *\n * @param dynamicSamplingContext The Dynamic Sampling Context to turn into a header. For convenience and compatibility\n * with the `getDynamicSamplingContext` method on the Transaction class ,this argument can also be `undefined`. If it is\n * `undefined` the function will return `undefined`.\n * @returns a baggage header, created from `dynamicSamplingContext`, or `undefined` either if `dynamicSamplingContext`\n * was `undefined`, or if `dynamicSamplingContext` didn't contain any values.\n */\nexport function dynamicSamplingContextToSentryBaggageHeader(\n  // this also takes undefined for convenience and bundle size in other places\n  dynamicSamplingContext: Partial<DynamicSamplingContext>,\n): string | undefined {\n  // Prefix all DSC keys with \"sentry-\" and put them into a new object\n  const sentryPrefixedDSC = Object.entries(dynamicSamplingContext).reduce<Record<string, string>>(\n    (acc, [dscKey, dscValue]) => {\n      if (dscValue) {\n        acc[`${SENTRY_BAGGAGE_KEY_PREFIX}${dscKey}`] = dscValue;\n      }\n      return acc;\n    },\n    {},\n  );\n\n  return objectToBaggageHeader(sentryPrefixedDSC);\n}\n\n/**\n * Will parse a baggage header, which is a simple key-value map, into a flat object.\n *\n * @param baggageHeader The baggage header to parse.\n * @returns a flat object containing all the key-value pairs from `baggageHeader`.\n */\nfunction baggageHeaderToObject(baggageHeader: string): Record<string, string> {\n  return baggageHeader\n    .split(',')\n    .map(baggageEntry => baggageEntry.split('=').map(keyOrValue => decodeURIComponent(keyOrValue.trim())))\n    .reduce<Record<string, string>>((acc, [key, value]) => {\n      acc[key] = value;\n      return acc;\n    }, {});\n}\n\n/**\n * Turns a flat object (key-value pairs) into a baggage header, which is also just key-value pairs.\n *\n * @param object The object to turn into a baggage header.\n * @returns a baggage header string, or `undefined` if the object didn't have any values, since an empty baggage header\n * is not spec compliant.\n */\nfunction objectToBaggageHeader(object: Record<string, string>): string | undefined {\n  if (Object.keys(object).length === 0) {\n    // An empty baggage header is not spec compliant: We return undefined.\n    return undefined;\n  }\n\n  return Object.entries(object).reduce((baggageHeader, [objectKey, objectValue], currentIndex) => {\n    const baggageEntry = `${encodeURIComponent(objectKey)}=${encodeURIComponent(objectValue)}`;\n    const newBaggageHeader = currentIndex === 0 ? baggageEntry : `${baggageHeader},${baggageEntry}`;\n    if (newBaggageHeader.length > MAX_BAGGAGE_STRING_LENGTH) {\n      __DEBUG_BUILD__ &&\n        logger.warn(\n          `Not adding key: ${objectKey} with val: ${objectValue} to baggage header due to exceeding baggage size limits.`,\n        );\n      return baggageHeader;\n    } else {\n      return newBaggageHeader;\n    }\n  }, '');\n}\n","import { isString } from './is';\nimport { GLOBAL_OBJ } from './worldwide';\n\n/**\n * TODO: Move me to @sentry/browser when @sentry/utils no longer contains any browser code\n */\nexport const WINDOW = GLOBAL_OBJ as typeof GLOBAL_OBJ & Window;\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 '<unknown>';\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  try {\n    return WINDOW.document.location.href;\n  } catch (oO) {\n    return '';\n  }\n}\n\n/**\n * Gets a DOM element by using document.querySelector.\n *\n * This wrapper will first check for the existance of the function before\n * actually calling it so that we don't have to take care of this check,\n * every time we want to access the DOM.\n *\n * Reason: DOM/querySelector is not available in all environments.\n *\n * We have to cast to any because utils can be consumed by a variety of environments,\n * and we don't want to break TS users. If you know what element will be selected by\n * `document.querySelector`, specify it as part of the generic call. For example,\n * `const element = getDomElement<Element>('selector');`\n *\n * @param selector the selector string passed on to document.querySelector\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function getDomElement<E = any>(selector: string): E | null {\n  if (WINDOW.document && WINDOW.document.querySelector) {\n    return WINDOW.document.querySelector(selector) as unknown as E;\n  }\n  return null;\n}\n","import { GenericFunction } from './types';\n\n/**\n * Polyfill for the optional chain operator, `?.`, given previous conversion of the expression into an array of values,\n * descriptors, and functions.\n *\n * Adapted from Sucrase (https://github.com/alangpierce/sucrase)\n * See https://github.com/alangpierce/sucrase/blob/265887868966917f3b924ce38dfad01fbab1329f/src/transformers/OptionalChainingNullishTransformer.ts#L15\n *\n * @param ops Array result of expression conversion\n * @returns The value of the expression\n */\nexport function _optionalChain(ops: unknown[]): unknown {\n  let lastAccessLHS: unknown = undefined;\n  let value = ops[0];\n  let i = 1;\n  while (i < ops.length) {\n    const op = ops[i] as string;\n    const fn = ops[i + 1] as (intermediateValue: unknown) => unknown;\n    i += 2;\n    // by checking for loose equality to `null`, we catch both `null` and `undefined`\n    if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) {\n      // really we're meaning to return `undefined` as an actual value here, but it saves bytes not to write it\n      return;\n    }\n    if (op === 'access' || op === 'optionalAccess') {\n      lastAccessLHS = value;\n      value = fn(value);\n    } else if (op === 'call' || op === 'optionalCall') {\n      value = fn((...args: unknown[]) => (value as GenericFunction).call(lastAccessLHS, ...args));\n      lastAccessLHS = undefined;\n    }\n  }\n  return value;\n}\n\n// Sucrase version\n// function _optionalChain(ops) {\n//   let lastAccessLHS = undefined;\n//   let value = ops[0];\n//   let i = 1;\n//   while (i < ops.length) {\n//     const op = ops[i];\n//     const fn = ops[i + 1];\n//     i += 2;\n//     if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) {\n//       return undefined;\n//     }\n//     if (op === 'access' || op === 'optionalAccess') {\n//       lastAccessLHS = value;\n//       value = fn(value);\n//     } else if (op === 'call' || op === 'optionalCall') {\n//       value = fn((...args) => value.call(lastAccessLHS, ...args));\n//       lastAccessLHS = undefined;\n//     }\n//   }\n//   return value;\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<ClientReportEnvelope>(dsn ? { dsn } : {}, [clientReportItem]);\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<keyof DsnComponents> = ['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","/*\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 type { ConsoleLevel } from './logger';\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 logLevel: ConsoleLevel;\n\n  public constructor(public message: string, logLevel: ConsoleLevel = 'warn') {\n    super(message);\n\n    this.name = new.target.prototype.constructor.name;\n    // This sets the prototype to be `Error`, not `SentryError`. It's unclear why we do this, but commenting this line\n    // out causes various (seemingly totally unrelated) playwright tests consistently time out. FYI, this makes\n    // instances of `SentryError` fail `obj instanceof SentryError` checks.\n    Object.setPrototypeOf(this, new.target.prototype);\n    this.logLevel = logLevel;\n  }\n}\n","// Slightly modified (no IE8 support, ES6) and transcribed to TypeScript\n// https://raw.githubusercontent.com/calvinmetcalf/rollup-plugin-node-builtins/master/src/es6/path.js\n\n/** JSDoc */\nfunction normalizeArray(parts: string[], allowAboveRoot?: boolean): string[] {\n  // if the path tries to go above the root, `up` ends up > 0\n  let up = 0;\n  for (let i = parts.length - 1; i >= 0; i--) {\n    const last = parts[i];\n    if (last === '.') {\n      parts.splice(i, 1);\n    } else if (last === '..') {\n      parts.splice(i, 1);\n      // eslint-disable-next-line no-plusplus\n      up++;\n    } else if (up) {\n      parts.splice(i, 1);\n      // eslint-disable-next-line no-plusplus\n      up--;\n    }\n  }\n\n  // if the path is allowed to go above the root, restore leading ..s\n  if (allowAboveRoot) {\n    // eslint-disable-next-line no-plusplus\n    for (; up--; up) {\n      parts.unshift('..');\n    }\n  }\n\n  return parts;\n}\n\n// Split a filename into [root, dir, basename, ext], unix version\n// 'root' is just a slash, or nothing.\nconst splitPathRe = /^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^/]+?|)(\\.[^./]*|))(?:[/]*)$/;\n/** JSDoc */\nfunction splitPath(filename: string): string[] {\n  const parts = splitPathRe.exec(filename);\n  return parts ? parts.slice(1) : [];\n}\n\n// path.resolve([from ...], to)\n// posix version\n/** JSDoc */\nexport function resolve(...args: string[]): string {\n  let resolvedPath = '';\n  let resolvedAbsolute = false;\n\n  for (let i = args.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n    const path = i >= 0 ? args[i] : '/';\n\n    // Skip empty entries\n    if (!path) {\n      continue;\n    }\n\n    resolvedPath = `${path}/${resolvedPath}`;\n    resolvedAbsolute = path.charAt(0) === '/';\n  }\n\n  // At this point the path should be resolved to a full absolute path, but\n  // handle relative paths to be safe (might happen when process.cwd() fails)\n\n  // Normalize the path\n  resolvedPath = normalizeArray(\n    resolvedPath.split('/').filter(p => !!p),\n    !resolvedAbsolute,\n  ).join('/');\n\n  return (resolvedAbsolute ? '/' : '') + resolvedPath || '.';\n}\n\n/** JSDoc */\nfunction trim(arr: string[]): string[] {\n  let start = 0;\n  for (; start < arr.length; start++) {\n    if (arr[start] !== '') {\n      break;\n    }\n  }\n\n  let end = arr.length - 1;\n  for (; end >= 0; end--) {\n    if (arr[end] !== '') {\n      break;\n    }\n  }\n\n  if (start > end) {\n    return [];\n  }\n  return arr.slice(start, end - start + 1);\n}\n\n// path.relative(from, to)\n// posix version\n/** JSDoc */\nexport function relative(from: string, to: string): string {\n  /* eslint-disable no-param-reassign */\n  from = resolve(from).substr(1);\n  to = resolve(to).substr(1);\n  /* eslint-enable no-param-reassign */\n\n  const fromParts = trim(from.split('/'));\n  const toParts = trim(to.split('/'));\n\n  const length = Math.min(fromParts.length, toParts.length);\n  let samePartsLength = length;\n  for (let i = 0; i < length; i++) {\n    if (fromParts[i] !== toParts[i]) {\n      samePartsLength = i;\n      break;\n    }\n  }\n\n  let outputParts = [];\n  for (let i = samePartsLength; i < fromParts.length; i++) {\n    outputParts.push('..');\n  }\n\n  outputParts = outputParts.concat(toParts.slice(samePartsLength));\n\n  return outputParts.join('/');\n}\n\n// path.normalize(path)\n// posix version\n/** JSDoc */\nexport function normalizePath(path: string): string {\n  const isPathAbsolute = isAbsolute(path);\n  const trailingSlash = path.substr(-1) === '/';\n\n  // Normalize the path\n  let normalizedPath = normalizeArray(\n    path.split('/').filter(p => !!p),\n    !isPathAbsolute,\n  ).join('/');\n\n  if (!normalizedPath && !isPathAbsolute) {\n    normalizedPath = '.';\n  }\n  if (normalizedPath && trailingSlash) {\n    normalizedPath += '/';\n  }\n\n  return (isPathAbsolute ? '/' : '') + normalizedPath;\n}\n\n// posix version\n/** JSDoc */\nexport function isAbsolute(path: string): boolean {\n  return path.charAt(0) === '/';\n}\n\n// posix version\n/** JSDoc */\nexport function join(...args: string[]): string {\n  return normalizePath(args.join('/'));\n}\n\n/** JSDoc */\nexport function dirname(path: string): string {\n  const result = splitPath(path);\n  const root = result[0];\n  let dir = result[1];\n\n  if (!root && !dir) {\n    // No dirname whatsoever\n    return '.';\n  }\n\n  if (dir) {\n    // It has a dirname, strip trailing slash\n    dir = dir.substr(0, dir.length - 1);\n  }\n\n  return root + dir;\n}\n\n/** JSDoc */\nexport function basename(path: string, ext?: string): string {\n  let f = splitPath(path)[2];\n  if (ext && f.substr(ext.length * -1) === ext) {\n    f = f.substr(0, f.length - ext.length);\n  }\n  return f;\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 { WINDOW } from './browser';\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\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 WINDOW)) {\n    return;\n  }\n\n  CONSOLE_LEVELS.forEach(function (level: string): void {\n    if (!(level in WINDOW.console)) {\n      return;\n    }\n\n    fill(WINDOW.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(WINDOW.console, args);\n        }\n      };\n    });\n  });\n}\n\n/** JSDoc */\nfunction instrumentFetch(): void {\n  if (!supportsNativeFetch()) {\n    return;\n  }\n\n  fill(WINDOW, '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(WINDOW, 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 WINDOW && 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 WINDOW && 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 WINDOW)) {\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 = WINDOW.onpopstate;\n  WINDOW.onpopstate = function (this: WindowEventHandlers, ...args: any[]): any {\n    const to = WINDOW.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(WINDOW.history, 'pushState', historyReplacementFunction);\n  fill(WINDOW.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 = WINDOW.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 WINDOW)) {\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  WINDOW.document.addEventListener('click', globalDOMEventHandler, false);\n  WINDOW.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 = (WINDOW as any)[target] && (WINDOW 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 = WINDOW.onerror;\n\n  WINDOW.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 = WINDOW.onunhandledrejection;\n\n  WINDOW.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","/* 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/**\n * Checks whether given value is an instance of the given built-in class.\n *\n * @param wat The value to be checked\n * @param className\n * @returns A boolean representing the result.\n */\nfunction isBuiltin(wat: unknown, className: string): boolean {\n  return objectToString.call(wat) === `[object ${className}]`;\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<string, unknown> {\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<any> {\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 { WrappedFunction } from '@sentry/types';\n\nimport { getGlobalSingleton, GLOBAL_OBJ } from './worldwide';\n\n/** Prefix for logging strings */\nconst PREFIX = 'Sentry Logger ';\n\nexport const CONSOLE_LEVELS = ['debug', 'info', 'warn', 'error', 'log', 'assert', 'trace'] as const;\nexport type ConsoleLevel = typeof CONSOLE_LEVELS[number];\n\ntype LoggerMethod = (...args: unknown[]) => void;\ntype LoggerConsoleMethods = Record<typeof CONSOLE_LEVELS[number], LoggerMethod>;\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<T>(callback: () => T): T {\n  if (!('console' in GLOBAL_OBJ)) {\n    return callback();\n  }\n\n  const originalConsole = GLOBAL_OBJ.console as Console & Record<string, unknown>;\n  const wrappedLevels: Partial<LoggerConsoleMethods> = {};\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 originalConsole && 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<Logger> = {\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_OBJ.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-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","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Event, Exception, Mechanism, StackFrame } from '@sentry/types';\n\nimport { addNonEnumerableProperty } from './object';\nimport { snipLine } from './string';\nimport { GLOBAL_OBJ } from './worldwide';\n\ninterface CryptoInternal {\n  getRandomValues(array: Uint8Array): Uint8Array;\n  randomUUID?(): string;\n}\n\n/** An interface for common properties on global */\ninterface CryptoGlobal {\n  msCrypto?: CryptoInternal;\n  crypto?: CryptoInternal;\n}\n\n/**\n * UUID4 generator\n *\n * @returns string Generated UUID4.\n */\nexport function uuid4(): string {\n  const gbl = GLOBAL_OBJ as typeof GLOBAL_OBJ & CryptoGlobal;\n  const crypto = gbl.crypto || gbl.msCrypto;\n\n  if (crypto && crypto.randomUUID) {\n    return crypto.randomUUID().replace(/-/g, '');\n  }\n\n  const getRandomByte =\n    crypto && crypto.getRandomValues ? () => crypto.getRandomValues(new Uint8Array(1))[0] : () => Math.random() * 16;\n\n  // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523\n  // Concatenating the following numbers as strings results in '10000000100040008000100000000000'\n  return (([1e7] as unknown as string) + 1e3 + 4e3 + 8e3 + 1e11).replace(/[018]/g, c =>\n    // eslint-disable-next-line no-bitwise\n    ((c as unknown as number) ^ ((getRandomByte() & 15) >> ((c as unknown as number) / 4))).toString(16),\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 || '<unknown>';\n  }\n  return eventId || '<unknown>';\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<Mechanism>): 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 * 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\n/**\n * Checks whether the given input is already an array, and if it isn't, wraps it in one.\n *\n * @param maybeArray Input to turn into an array, if necessary\n * @returns The input, if already an array, or an array with the input as the only element, if not\n */\nexport function arrayify<T = unknown>(maybeArray: T | T[]): T[] {\n  return Array.isArray(maybeArray) ? maybeArray : [maybeArray];\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<T>(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","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<T> = { [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<T>(\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<unknown> {\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<unknown>)['__sentry_skip_normalization__']) {\n    return value as ObjOrArray<unknown>;\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<unknown>;\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<unknown>);\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<unknown, string | number | boolean | null>,\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 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, <other\n * args>)` or `origMethod.apply(this, [<other args>])` (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<V extends unknown>(\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 '<unknown>';\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<string, unknown>)[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<string, unknown>, 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<T>(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<unknown, unknown>();\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<T>(inputValue: T, memoizationMap: Map<unknown, unknown>): 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 { SentryError } from './error';\nimport { rejectedSyncPromise, resolvedSyncPromise, SyncPromise } from './syncpromise';\n\nexport interface PromiseBuffer<T> {\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<PromiseLike<T>>;\n  add(taskProducer: () => PromiseLike<T>): PromiseLike<T>;\n  drain(timeout?: number): PromiseLike<boolean>;\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<T>(limit?: number): PromiseBuffer<T> {\n  const buffer: Array<PromiseLike<T>> = [];\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<T>\n   * @returns Removed promise.\n   */\n  function remove(task: PromiseLike<T>): PromiseLike<T> {\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<T>; In previous versions this used to be `task:\n   *        PromiseLike<T>`, 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<T>): PromiseLike<T> {\n    if (!isReady()) {\n      return rejectedSyncPromise(new SentryError('Not adding Promise because buffer limit was 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<boolean> {\n    return new SyncPromise<boolean>((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<string, number>;\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     *     <header>,<header>,..\n     * where each <header> is of the form\n     *     <retry_after>: <categories>: <scope>: <reason_code>\n     * where\n     *     <retry_after> is a delay in seconds\n     *     <categories> is the event type(s) (error, transaction, etc) being rate limited and is of the form\n     *         <category>;<category>;...\n     *     <scope> is what's being limited (org, project, or key) - ignored by SDK\n     *     <reason_code> 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","// TODO: Remove this file once equivalent integration is used everywhere\n\n/* eslint-disable complexity */\n/**\n * The functions here, which enrich an event with request data, are mostly for use in Node, but are safe for use in a\n * browser context. They live here in `@sentry/utils` rather than in `@sentry/node` so that they can be used in\n * frameworks (like nextjs), which, because of SSR, run the same code in both Node and browser contexts.\n *\n * TODO (v8 / #5257): Remove the note below\n * Note that for now, the tests for this code have to live in `@sentry/node`, since they test both these functions and\n * the backwards-compatibility-preserving wrappers which still live in `handlers.ts` there.\n */\n\n/* eslint-disable max-lines */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport { Event, ExtractedNodeRequestData, PolymorphicRequest, Transaction, TransactionSource } from '@sentry/types';\n\nimport { isPlainObject, isString } from './is';\nimport { normalize } from './normalize';\nimport { stripUrlQueryAndFragment } from './url';\n\nconst DEFAULT_INCLUDES = {\n  ip: false,\n  request: true,\n  transaction: true,\n  user: true,\n};\nconst DEFAULT_REQUEST_INCLUDES = ['cookies', 'data', 'headers', 'method', 'query_string', 'url'];\nconst DEFAULT_USER_INCLUDES = ['id', 'username', 'email'];\n\ntype InjectedNodeDeps = {\n  cookie: {\n    parse: (cookieStr: string) => Record<string, string>;\n  };\n  url: {\n    parse: (urlStr: string) => {\n      query: string | null;\n    };\n  };\n};\n\n/**\n * Sets parameterized route as transaction name e.g.: `GET /users/:id`\n * Also adds more context data on the transaction from the request\n */\nexport function addRequestDataToTransaction(\n  transaction: Transaction | undefined,\n  req: PolymorphicRequest,\n  deps?: InjectedNodeDeps,\n): void {\n  if (!transaction) return;\n  if (!transaction.metadata.source || transaction.metadata.source === 'url') {\n    // Attempt to grab a parameterized route off of the request\n    transaction.setName(...extractPathForTransaction(req, { path: true, method: true }));\n  }\n  transaction.setData('url', req.originalUrl || req.url);\n  if (req.baseUrl) {\n    transaction.setData('baseUrl', req.baseUrl);\n  }\n  transaction.setData('query', extractQueryParams(req, deps));\n}\n\n/**\n * Extracts a complete and parameterized path from the request object and uses it to construct transaction name.\n * If the parameterized transaction name cannot be extracted, we fall back to the raw URL.\n *\n * Additionally, this function determines and returns the transaction name source\n *\n * eg. GET /mountpoint/user/:id\n *\n * @param req A request object\n * @param options What to include in the transaction name (method, path, or a custom route name to be\n *                used instead of the request's route)\n *\n * @returns A tuple of the fully constructed transaction name [0] and its source [1] (can be either 'route' or 'url')\n */\nexport function extractPathForTransaction(\n  req: PolymorphicRequest,\n  options: { path?: boolean; method?: boolean; customRoute?: string } = {},\n): [string, TransactionSource] {\n  const method = req.method && req.method.toUpperCase();\n\n  let path = '';\n  let source: TransactionSource = 'url';\n\n  // Check to see if there's a parameterized route we can use (as there is in Express)\n  if (options.customRoute || req.route) {\n    path = options.customRoute || `${req.baseUrl || ''}${req.route && req.route.path}`;\n    source = 'route';\n  }\n\n  // Otherwise, just take the original URL\n  else if (req.originalUrl || req.url) {\n    path = stripUrlQueryAndFragment(req.originalUrl || req.url || '');\n  }\n\n  let name = '';\n  if (options.method && method) {\n    name += method;\n  }\n  if (options.method && options.path) {\n    name += ' ';\n  }\n  if (options.path && path) {\n    name += path;\n  }\n\n  return [name, source];\n}\n\ntype TransactionNamingScheme = 'path' | 'methodPath' | 'handler';\n\n/** JSDoc */\nfunction extractTransaction(req: PolymorphicRequest, type: boolean | TransactionNamingScheme): string {\n  switch (type) {\n    case 'path': {\n      return extractPathForTransaction(req, { path: true })[0];\n    }\n    case 'handler': {\n      return (req.route && req.route.stack && req.route.stack[0] && req.route.stack[0].name) || '<anonymous>';\n    }\n    case 'methodPath':\n    default: {\n      return extractPathForTransaction(req, { path: true, method: true })[0];\n    }\n  }\n}\n\n/** JSDoc */\nfunction extractUserData(\n  user: {\n    [key: string]: any;\n  },\n  keys: boolean | string[],\n): { [key: string]: any } {\n  const extractedUser: { [key: string]: any } = {};\n  const attributes = Array.isArray(keys) ? keys : DEFAULT_USER_INCLUDES;\n\n  attributes.forEach(key => {\n    if (user && key in user) {\n      extractedUser[key] = user[key];\n    }\n  });\n\n  return extractedUser;\n}\n\n/**\n * Normalize data from the request object, accounting for framework differences.\n *\n * @param req The request object from which to extract data\n * @param options.include An optional array of keys to include in the normalized data. Defaults to\n * DEFAULT_REQUEST_INCLUDES if not provided.\n * @param options.deps Injected, platform-specific dependencies\n * @returns An object containing normalized request data\n */\nexport function extractRequestData(\n  req: PolymorphicRequest,\n  options?: {\n    include?: string[];\n    deps?: InjectedNodeDeps;\n  },\n): ExtractedNodeRequestData {\n  const { include = DEFAULT_REQUEST_INCLUDES, deps } = options || {};\n  const requestData: { [key: string]: any } = {};\n\n  // headers:\n  //   node, express, koa, nextjs: req.headers\n  const headers = (req.headers || {}) as {\n    host?: string;\n    cookie?: string;\n  };\n  // method:\n  //   node, express, koa, nextjs: req.method\n  const method = req.method;\n  // host:\n  //   express: req.hostname in > 4 and req.host in < 4\n  //   koa: req.host\n  //   node, nextjs: req.headers.host\n  const host = req.hostname || req.host || headers.host || '<no host>';\n  // protocol:\n  //   node, nextjs: <n/a>\n  //   express, koa: req.protocol\n  const protocol = req.protocol === 'https' || (req.socket && req.socket.encrypted) ? 'https' : 'http';\n  // url (including path and query string):\n  //   node, express: req.originalUrl\n  //   koa, nextjs: req.url\n  const originalUrl = req.originalUrl || req.url || '';\n  // absolute url\n  const absoluteUrl = `${protocol}://${host}${originalUrl}`;\n  include.forEach(key => {\n    switch (key) {\n      case 'headers': {\n        requestData.headers = headers;\n        break;\n      }\n      case 'method': {\n        requestData.method = method;\n        break;\n      }\n      case 'url': {\n        requestData.url = absoluteUrl;\n        break;\n      }\n      case 'cookies': {\n        // cookies:\n        //   node, express, koa: req.headers.cookie\n        //   vercel, sails.js, express (w/ cookie middleware), nextjs: req.cookies\n        // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n        requestData.cookies =\n          // TODO (v8 / #5257): We're only sending the empty object for backwards compatibility, so the last bit can\n          // come off in v8\n          req.cookies || (headers.cookie && deps && deps.cookie && deps.cookie.parse(headers.cookie)) || {};\n        break;\n      }\n      case 'query_string': {\n        // query string:\n        //   node: req.url (raw)\n        //   express, koa, nextjs: req.query\n        // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n        requestData.query_string = extractQueryParams(req, deps);\n        break;\n      }\n      case 'data': {\n        if (method === 'GET' || method === 'HEAD') {\n          break;\n        }\n        // body data:\n        //   express, koa, nextjs: req.body\n        //\n        //   when using node by itself, you have to read the incoming stream(see\n        //   https://nodejs.dev/learn/get-http-request-body-data-using-nodejs); if a user is doing that, we can't know\n        //   where they're going to store the final result, so they'll have to capture this data themselves\n        if (req.body !== undefined) {\n          requestData.data = isString(req.body) ? req.body : JSON.stringify(normalize(req.body));\n        }\n        break;\n      }\n      default: {\n        if ({}.hasOwnProperty.call(req, key)) {\n          requestData[key] = (req as { [key: string]: any })[key];\n        }\n      }\n    }\n  });\n\n  return requestData;\n}\n\n/**\n * Options deciding what parts of the request to use when enhancing an event\n */\nexport interface AddRequestDataToEventOptions {\n  /** Flags controlling whether each type of data should be added to the event */\n  include?: {\n    ip?: boolean;\n    request?: boolean | string[];\n    transaction?: boolean | TransactionNamingScheme;\n    user?: boolean | string[];\n  };\n\n  /** Injected platform-specific dependencies */\n  deps?: {\n    cookie: {\n      parse: (cookieStr: string) => Record<string, string>;\n    };\n    url: {\n      parse: (urlStr: string) => {\n        query: string | null;\n      };\n    };\n  };\n}\n\n/**\n * Add data from the given request to the given event\n *\n * @param event The event to which the request data will be added\n * @param req Request object\n * @param options.include Flags to control what data is included\n * @param options.deps Injected platform-specific dependencies\n * @hidden\n */\nexport function addRequestDataToEvent(\n  event: Event,\n  req: PolymorphicRequest,\n  options?: AddRequestDataToEventOptions,\n): Event {\n  const include = {\n    ...DEFAULT_INCLUDES,\n    ...options?.include,\n  };\n\n  if (include.request) {\n    const extractedRequestData = Array.isArray(include.request)\n      ? extractRequestData(req, { include: include.request, deps: options?.deps })\n      : extractRequestData(req, { deps: options?.deps });\n\n    event.request = {\n      ...event.request,\n      ...extractedRequestData,\n    };\n  }\n\n  if (include.user) {\n    const extractedUser = req.user && isPlainObject(req.user) ? extractUserData(req.user, include.user) : {};\n\n    if (Object.keys(extractedUser).length) {\n      event.user = {\n        ...event.user,\n        ...extractedUser,\n      };\n    }\n  }\n\n  // client ip:\n  //   node, nextjs: req.socket.remoteAddress\n  //   express, koa: req.ip\n  if (include.ip) {\n    const ip = req.ip || (req.socket && req.socket.remoteAddress);\n    if (ip) {\n      event.user = {\n        ...event.user,\n        ip_address: ip,\n      };\n    }\n  }\n\n  if (include.transaction && !event.transaction) {\n    // TODO do we even need this anymore?\n    // TODO make this work for nextjs\n    event.transaction = extractTransaction(req, include.transaction);\n  }\n\n  return event;\n}\n\nfunction extractQueryParams(\n  req: PolymorphicRequest,\n  deps?: InjectedNodeDeps,\n): string | Record<string, unknown> | undefined {\n  // url (including path and query string):\n  //   node, express: req.originalUrl\n  //   koa, nextjs: req.url\n  let originalUrl = req.originalUrl || req.url || '';\n\n  if (!originalUrl) {\n    return;\n  }\n\n  // The `URL` constructor can't handle internal URLs of the form `/some/path/here`, so stick a dummy protocol and\n  // hostname on the beginning. Since the point here is just to grab the query string, it doesn't matter what we use.\n  if (originalUrl.startsWith('/')) {\n    originalUrl = `http://dogs.are.great${originalUrl}`;\n  }\n\n  return (\n    req.query ||\n    (typeof URL !== undefined && new URL(originalUrl).search.replace('?', '')) ||\n    // In Node 8, `URL` isn't in the global scope, so we have to use the built-in module from Node\n    (deps && deps.url && deps.url.parse(originalUrl).query) ||\n    undefined\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 { 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      // https://github.com/getsentry/sentry-javascript/issues/5459\n      // Remove webpack (error: *) wrappers\n      const cleanedLine = line.replace(/\\(error: (.*)\\)/, '$1');\n\n      for (const parser of sortedParsers) {\n        const frame = parser(cleanedLine);\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 = '<anonymous>';\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 === '<anonymous>') {\n      methodName = undefined;\n      functionName = undefined;\n    }\n\n    if (functionName === undefined) {\n      methodName = methodName || '<anonymous>';\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 { 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","import { WINDOW } from './browser';\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 WINDOW)) {\n    return false;\n  }\n\n  try {\n    new Headers();\n    new Request('http://www.example.com');\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  // Fast path to avoid DOM I/O\n  // eslint-disable-next-line @typescript-eslint/unbound-method\n  if (isNativeFetch(WINDOW.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 = WINDOW.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 WINDOW;\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  /* eslint-disable @typescript-eslint/no-unsafe-member-access */\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  const chrome = (WINDOW 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 WINDOW && !!WINDOW.history.pushState && !!WINDOW.history.replaceState;\n\n  return !isChromePackagedApp && hasHistoryApi;\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<void>;\nexport function resolvedSyncPromise<T>(value: T | PromiseLike<T>): PromiseLike<T>;\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<T>(value?: T | PromiseLike<T>): PromiseLike<T> {\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<T = never>(reason?: any): PromiseLike<T> {\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<T> implements PromiseLike<T> {\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<T> | 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<TResult1 = T, TResult2 = never>(\n    onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | null,\n    onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | null,\n  ): PromiseLike<TResult1 | TResult2> {\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<TResult = never>(\n    onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null,\n  ): PromiseLike<T | TResult> {\n    return this.then(val => val, onrejected);\n  }\n\n  /** JSDoc */\n  public finally<TResult>(onfinally?: (() => void) | null): PromiseLike<TResult> {\n    return new SyncPromise<TResult>((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<T> | 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<T> | any) => {\n    if (this._state !== States.PENDING) {\n      return;\n    }\n\n    if (isThenable(value)) {\n      void (value as PromiseLike<T>).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 { WINDOW } from './browser';\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 } = WINDOW;\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 } = WINDOW;\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","import { TraceparentData } from '@sentry/types';\n\nexport const TRACEPARENT_REGEXP = new RegExp(\n  '^[ \\\\t]*' + // whitespace\n    '([0-9a-f]{32})?' + // trace_id\n    '-?([0-9a-f]{16})?' + // span_id\n    '-?([01])?' + // sampled\n    '[ \\\\t]*$', // whitespace\n);\n\n/**\n * Extract transaction context data from a `sentry-trace` header.\n *\n * @param traceparent Traceparent string\n *\n * @returns Object containing data from the header, or undefined if traceparent string is malformed\n */\nexport function extractTraceparentData(traceparent: string): TraceparentData | undefined {\n  const matches = traceparent.match(TRACEPARENT_REGEXP);\n\n  if (!traceparent || !matches) {\n    // empty string or no matches is invalid traceparent data\n    return undefined;\n  }\n\n  let parentSampled: boolean | undefined;\n  if (matches[3] === '1') {\n    parentSampled = true;\n  } else if (matches[3] === '0') {\n    parentSampled = false;\n  }\n\n  return {\n    traceId: matches[1],\n    parentSampled,\n    parentSpanId: matches[2],\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 <a/> 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\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 * Returns number of URL segments of a passed string URL.\n */\nexport function getNumberOfUrlSegments(url: string): number {\n  // split at '/' or at '\\/' to split regex urls correctly\n  return url.split(/\\\\?\\//).filter(s => s.length > 0 && s !== ',').length;\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 * Note: This file was originally called `global.ts`, but was changed to unblock users which might be doing\n * string replaces with bundlers like Vite for `global` (would break imports that rely on importing from utils/src/global).\n *\n * Why worldwide?\n *\n * Why not?\n */\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport { Integration } from '@sentry/types';\n\n/** Internal global with common properties and Sentry extensions  */\nexport interface InternalGlobal {\n  navigator?: { userAgent?: string };\n  console: Console;\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    extensions?: {\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// The code below for 'isGlobalObj' and 'GLOBAL_OBJ' was copied from core-js before modification\n// https://github.com/zloirock/core-js/blob/1b944df55282cdc99c90db5f49eb0b6eda2cc0a3/packages/core-js/internals/global.js\n// core-js has the following licence:\n//\n// Copyright (c) 2014-2022 Denis Pushkarev\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n/** Returns 'obj' if it's the global object, otherwise returns undefined */\nfunction isGlobalObj(obj: { Math?: Math }): any | undefined {\n  return obj && obj.Math == Math ? obj : undefined;\n}\n\n/** Get's the global object for the current JavaScript runtime */\nexport const GLOBAL_OBJ: InternalGlobal =\n  (typeof globalThis == 'object' && isGlobalObj(globalThis)) ||\n  // eslint-disable-next-line no-restricted-globals\n  (typeof window == 'object' && isGlobalObj(window)) ||\n  (typeof self == 'object' && isGlobalObj(self)) ||\n  (typeof global == 'object' && isGlobalObj(global)) ||\n  (function (this: any) {\n    return this;\n  })() ||\n  {};\n\n/**\n * @deprecated Use GLOBAL_OBJ instead. This will be removed in v8\n */\nexport function getGlobalObject<T>(): T & InternalGlobal {\n  return GLOBAL_OBJ as T & InternalGlobal;\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 `GLOBAL_OBJ`'s return value\n * @returns the singleton\n */\nexport function getGlobalSingleton<T>(name: keyof InternalGlobal['__SENTRY__'], creator: () => T, obj?: unknown): T {\n  const gbl = (obj || GLOBAL_OBJ) as InternalGlobal;\n  const __SENTRY__ = (gbl.__SENTRY__ = gbl.__SENTRY__ || {});\n  const singleton = __SENTRY__[name] || (__SENTRY__[name] = creator());\n  return singleton;\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.1): util.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\n\n/**\n * Private TransitionEnd Helpers\n */\n\nconst TRANSITION_END = 'transitionend'\nconst MAX_UID = 1000000\nconst MILLISECONDS_MULTIPLIER = 1000\n\n// Shoutout AngusCroll (https://goo.gl/pxwQGp)\nfunction toType(obj) {\n  if (obj === null || typeof obj === 'undefined') {\n    return `${obj}`\n  }\n\n  return {}.toString.call(obj).match(/\\s([a-z]+)/i)[1].toLowerCase()\n}\n\nfunction getSpecialTransitionEndEvent() {\n  return {\n    bindType: TRANSITION_END,\n    delegateType: TRANSITION_END,\n    handle(event) {\n      if ($(event.target).is(this)) {\n        return event.handleObj.handler.apply(this, arguments) // eslint-disable-line prefer-rest-params\n      }\n\n      return undefined\n    }\n  }\n}\n\nfunction transitionEndEmulator(duration) {\n  let called = false\n\n  $(this).one(Util.TRANSITION_END, () => {\n    called = true\n  })\n\n  setTimeout(() => {\n    if (!called) {\n      Util.triggerTransitionEnd(this)\n    }\n  }, duration)\n\n  return this\n}\n\nfunction setTransitionEndSupport() {\n  $.fn.emulateTransitionEnd = transitionEndEmulator\n  $.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent()\n}\n\n/**\n * Public Util API\n */\n\nconst Util = {\n  TRANSITION_END: 'bsTransitionEnd',\n\n  getUID(prefix) {\n    do {\n      // eslint-disable-next-line no-bitwise\n      prefix += ~~(Math.random() * MAX_UID) // \"~~\" acts like a faster Math.floor() here\n    } while (document.getElementById(prefix))\n\n    return prefix\n  },\n\n  getSelectorFromElement(element) {\n    let selector = element.getAttribute('data-target')\n\n    if (!selector || selector === '#') {\n      const hrefAttr = element.getAttribute('href')\n      selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : ''\n    }\n\n    try {\n      return document.querySelector(selector) ? selector : null\n    } catch (_) {\n      return null\n    }\n  },\n\n  getTransitionDurationFromElement(element) {\n    if (!element) {\n      return 0\n    }\n\n    // Get transition-duration of the element\n    let transitionDuration = $(element).css('transition-duration')\n    let transitionDelay = $(element).css('transition-delay')\n\n    const floatTransitionDuration = parseFloat(transitionDuration)\n    const floatTransitionDelay = parseFloat(transitionDelay)\n\n    // Return 0 if element or transition duration is not found\n    if (!floatTransitionDuration && !floatTransitionDelay) {\n      return 0\n    }\n\n    // If multiple durations are defined, take the first\n    transitionDuration = transitionDuration.split(',')[0]\n    transitionDelay = transitionDelay.split(',')[0]\n\n    return (parseFloat(transitionDuration) + parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER\n  },\n\n  reflow(element) {\n    return element.offsetHeight\n  },\n\n  triggerTransitionEnd(element) {\n    $(element).trigger(TRANSITION_END)\n  },\n\n  supportsTransitionEnd() {\n    return Boolean(TRANSITION_END)\n  },\n\n  isElement(obj) {\n    return (obj[0] || obj).nodeType\n  },\n\n  typeCheckConfig(componentName, config, configTypes) {\n    for (const property in configTypes) {\n      if (Object.prototype.hasOwnProperty.call(configTypes, property)) {\n        const expectedTypes = configTypes[property]\n        const value = config[property]\n        const valueType = value && Util.isElement(value) ?\n          'element' : toType(value)\n\n        if (!new RegExp(expectedTypes).test(valueType)) {\n          throw new Error(\n            `${componentName.toUpperCase()}: ` +\n            `Option \"${property}\" provided type \"${valueType}\" ` +\n            `but expected type \"${expectedTypes}\".`)\n        }\n      }\n    }\n  },\n\n  findShadowRoot(element) {\n    if (!document.documentElement.attachShadow) {\n      return null\n    }\n\n    // Can find the shadow root otherwise it'll return the document\n    if (typeof element.getRootNode === 'function') {\n      const root = element.getRootNode()\n      return root instanceof ShadowRoot ? root : null\n    }\n\n    if (element instanceof ShadowRoot) {\n      return element\n    }\n\n    // when we don't find a shadow root\n    if (!element.parentNode) {\n      return null\n    }\n\n    return Util.findShadowRoot(element.parentNode)\n  },\n\n  jQueryDetection() {\n    if (typeof $ === 'undefined') {\n      throw new TypeError('Bootstrap\\'s JavaScript requires jQuery. jQuery must be included before Bootstrap\\'s JavaScript.')\n    }\n\n    const version = $.fn.jquery.split(' ')[0].split('.')\n    const minMajor = 1\n    const ltMajor = 2\n    const minMinor = 9\n    const minPatch = 1\n    const maxMajor = 4\n\n    if (version[0] < ltMajor && version[1] < minMinor || version[0] === minMajor && version[1] === minMinor && version[2] < minPatch || version[0] >= maxMajor) {\n      throw new Error('Bootstrap\\'s JavaScript requires at least jQuery v1.9.1 but less than v4.0.0')\n    }\n  }\n}\n\nUtil.jQueryDetection()\nsetTransitionEndSupport()\n\nexport default Util\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.1): alert.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * Constants\n */\n\nconst NAME = 'alert'\nconst VERSION = '4.6.1'\nconst DATA_KEY = 'bs.alert'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\n\nconst CLASS_NAME_ALERT = 'alert'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\nconst EVENT_CLOSE = `close${EVENT_KEY}`\nconst EVENT_CLOSED = `closed${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst SELECTOR_DISMISS = '[data-dismiss=\"alert\"]'\n\n/**\n * Class definition\n */\n\nclass Alert {\n  constructor(element) {\n    this._element = element\n  }\n\n  // Getters\n  static get VERSION() {\n    return VERSION\n  }\n\n  // Public\n  close(element) {\n    let rootElement = this._element\n    if (element) {\n      rootElement = this._getRootElement(element)\n    }\n\n    const customEvent = this._triggerCloseEvent(rootElement)\n\n    if (customEvent.isDefaultPrevented()) {\n      return\n    }\n\n    this._removeElement(rootElement)\n  }\n\n  dispose() {\n    $.removeData(this._element, DATA_KEY)\n    this._element = null\n  }\n\n  // Private\n  _getRootElement(element) {\n    const selector = Util.getSelectorFromElement(element)\n    let parent = false\n\n    if (selector) {\n      parent = document.querySelector(selector)\n    }\n\n    if (!parent) {\n      parent = $(element).closest(`.${CLASS_NAME_ALERT}`)[0]\n    }\n\n    return parent\n  }\n\n  _triggerCloseEvent(element) {\n    const closeEvent = $.Event(EVENT_CLOSE)\n\n    $(element).trigger(closeEvent)\n    return closeEvent\n  }\n\n  _removeElement(element) {\n    $(element).removeClass(CLASS_NAME_SHOW)\n\n    if (!$(element).hasClass(CLASS_NAME_FADE)) {\n      this._destroyElement(element)\n      return\n    }\n\n    const transitionDuration = Util.getTransitionDurationFromElement(element)\n\n    $(element)\n      .one(Util.TRANSITION_END, event => this._destroyElement(element, event))\n      .emulateTransitionEnd(transitionDuration)\n  }\n\n  _destroyElement(element) {\n    $(element)\n      .detach()\n      .trigger(EVENT_CLOSED)\n      .remove()\n  }\n\n  // Static\n  static _jQueryInterface(config) {\n    return this.each(function () {\n      const $element = $(this)\n      let data = $element.data(DATA_KEY)\n\n      if (!data) {\n        data = new Alert(this)\n        $element.data(DATA_KEY, data)\n      }\n\n      if (config === 'close') {\n        data[config](this)\n      }\n    })\n  }\n\n  static _handleDismiss(alertInstance) {\n    return function (event) {\n      if (event) {\n        event.preventDefault()\n      }\n\n      alertInstance.close(this)\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\n$(document).on(\n  EVENT_CLICK_DATA_API,\n  SELECTOR_DISMISS,\n  Alert._handleDismiss(new Alert())\n)\n\n/**\n * jQuery\n */\n\n$.fn[NAME] = Alert._jQueryInterface\n$.fn[NAME].Constructor = Alert\n$.fn[NAME].noConflict = () => {\n  $.fn[NAME] = JQUERY_NO_CONFLICT\n  return Alert._jQueryInterface\n}\n\nexport default Alert\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.1): button.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\n\n/**\n * Constants\n */\n\nconst NAME = 'button'\nconst VERSION = '4.6.1'\nconst DATA_KEY = 'bs.button'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\n\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_BUTTON = 'btn'\nconst CLASS_NAME_FOCUS = 'focus'\n\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_FOCUS_BLUR_DATA_API = `focus${EVENT_KEY}${DATA_API_KEY} ` +\n                          `blur${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\n\nconst SELECTOR_DATA_TOGGLE_CARROT = '[data-toggle^=\"button\"]'\nconst SELECTOR_DATA_TOGGLES = '[data-toggle=\"buttons\"]'\nconst SELECTOR_DATA_TOGGLE = '[data-toggle=\"button\"]'\nconst SELECTOR_DATA_TOGGLES_BUTTONS = '[data-toggle=\"buttons\"] .btn'\nconst SELECTOR_INPUT = 'input:not([type=\"hidden\"])'\nconst SELECTOR_ACTIVE = '.active'\nconst SELECTOR_BUTTON = '.btn'\n\n/**\n * Class definition\n */\n\nclass Button {\n  constructor(element) {\n    this._element = element\n    this.shouldAvoidTriggerChange = false\n  }\n\n  // Getters\n  static get VERSION() {\n    return VERSION\n  }\n\n  // Public\n  toggle() {\n    let triggerChangeEvent = true\n    let addAriaPressed = true\n    const rootElement = $(this._element).closest(SELECTOR_DATA_TOGGLES)[0]\n\n    if (rootElement) {\n      const input = this._element.querySelector(SELECTOR_INPUT)\n\n      if (input) {\n        if (input.type === 'radio') {\n          if (input.checked && this._element.classList.contains(CLASS_NAME_ACTIVE)) {\n            triggerChangeEvent = false\n          } else {\n            const activeElement = rootElement.querySelector(SELECTOR_ACTIVE)\n\n            if (activeElement) {\n              $(activeElement).removeClass(CLASS_NAME_ACTIVE)\n            }\n          }\n        }\n\n        if (triggerChangeEvent) {\n          // if it's not a radio button or checkbox don't add a pointless/invalid checked property to the input\n          if (input.type === 'checkbox' || input.type === 'radio') {\n            input.checked = !this._element.classList.contains(CLASS_NAME_ACTIVE)\n          }\n\n          if (!this.shouldAvoidTriggerChange) {\n            $(input).trigger('change')\n          }\n        }\n\n        input.focus()\n        addAriaPressed = false\n      }\n    }\n\n    if (!(this._element.hasAttribute('disabled') || this._element.classList.contains('disabled'))) {\n      if (addAriaPressed) {\n        this._element.setAttribute('aria-pressed', !this._element.classList.contains(CLASS_NAME_ACTIVE))\n      }\n\n      if (triggerChangeEvent) {\n        $(this._element).toggleClass(CLASS_NAME_ACTIVE)\n      }\n    }\n  }\n\n  dispose() {\n    $.removeData(this._element, DATA_KEY)\n    this._element = null\n  }\n\n  // Static\n  static _jQueryInterface(config, avoidTriggerChange) {\n    return this.each(function () {\n      const $element = $(this)\n      let data = $element.data(DATA_KEY)\n\n      if (!data) {\n        data = new Button(this)\n        $element.data(DATA_KEY, data)\n      }\n\n      data.shouldAvoidTriggerChange = avoidTriggerChange\n\n      if (config === 'toggle') {\n        data[config]()\n      }\n    })\n  }\n}\n\n/**\n * Data API implementation\n */\n\n$(document)\n  .on(EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE_CARROT, event => {\n    let button = event.target\n    const initialButton = button\n\n    if (!$(button).hasClass(CLASS_NAME_BUTTON)) {\n      button = $(button).closest(SELECTOR_BUTTON)[0]\n    }\n\n    if (!button || button.hasAttribute('disabled') || button.classList.contains('disabled')) {\n      event.preventDefault() // work around Firefox bug #1540995\n    } else {\n      const inputBtn = button.querySelector(SELECTOR_INPUT)\n\n      if (inputBtn && (inputBtn.hasAttribute('disabled') || inputBtn.classList.contains('disabled'))) {\n        event.preventDefault() // work around Firefox bug #1540995\n        return\n      }\n\n      if (initialButton.tagName === 'INPUT' || button.tagName !== 'LABEL') {\n        Button._jQueryInterface.call($(button), 'toggle', initialButton.tagName === 'INPUT')\n      }\n    }\n  })\n  .on(EVENT_FOCUS_BLUR_DATA_API, SELECTOR_DATA_TOGGLE_CARROT, event => {\n    const button = $(event.target).closest(SELECTOR_BUTTON)[0]\n    $(button).toggleClass(CLASS_NAME_FOCUS, /^focus(in)?$/.test(event.type))\n  })\n\n$(window).on(EVENT_LOAD_DATA_API, () => {\n  // ensure correct active class is set to match the controls' actual values/states\n\n  // find all checkboxes/readio buttons inside data-toggle groups\n  let buttons = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLES_BUTTONS))\n  for (let i = 0, len = buttons.length; i < len; i++) {\n    const button = buttons[i]\n    const input = button.querySelector(SELECTOR_INPUT)\n    if (input.checked || input.hasAttribute('checked')) {\n      button.classList.add(CLASS_NAME_ACTIVE)\n    } else {\n      button.classList.remove(CLASS_NAME_ACTIVE)\n    }\n  }\n\n  // find all button toggles\n  buttons = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE))\n  for (let i = 0, len = buttons.length; i < len; i++) {\n    const button = buttons[i]\n    if (button.getAttribute('aria-pressed') === 'true') {\n      button.classList.add(CLASS_NAME_ACTIVE)\n    } else {\n      button.classList.remove(CLASS_NAME_ACTIVE)\n    }\n  }\n})\n\n/**\n * jQuery\n */\n\n$.fn[NAME] = Button._jQueryInterface\n$.fn[NAME].Constructor = Button\n$.fn[NAME].noConflict = () => {\n  $.fn[NAME] = JQUERY_NO_CONFLICT\n  return Button._jQueryInterface\n}\n\nexport default Button\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.1): carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * Constants\n */\n\nconst NAME = 'carousel'\nconst VERSION = '4.6.1'\nconst DATA_KEY = 'bs.carousel'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\nconst ARROW_LEFT_KEYCODE = 37 // KeyboardEvent.which value for left arrow key\nconst ARROW_RIGHT_KEYCODE = 39 // KeyboardEvent.which value for right arrow key\nconst TOUCHEVENT_COMPAT_WAIT = 500 // Time for mouse compat events to fire after touch\nconst SWIPE_THRESHOLD = 40\n\nconst CLASS_NAME_CAROUSEL = 'carousel'\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_SLIDE = 'slide'\nconst CLASS_NAME_RIGHT = 'carousel-item-right'\nconst CLASS_NAME_LEFT = 'carousel-item-left'\nconst CLASS_NAME_NEXT = 'carousel-item-next'\nconst CLASS_NAME_PREV = 'carousel-item-prev'\nconst CLASS_NAME_POINTER_EVENT = 'pointer-event'\n\nconst DIRECTION_NEXT = 'next'\nconst DIRECTION_PREV = 'prev'\nconst DIRECTION_LEFT = 'left'\nconst DIRECTION_RIGHT = 'right'\n\nconst EVENT_SLIDE = `slide${EVENT_KEY}`\nconst EVENT_SLID = `slid${EVENT_KEY}`\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY}`\nconst EVENT_MOUSEENTER = `mouseenter${EVENT_KEY}`\nconst EVENT_MOUSELEAVE = `mouseleave${EVENT_KEY}`\nconst EVENT_TOUCHSTART = `touchstart${EVENT_KEY}`\nconst EVENT_TOUCHMOVE = `touchmove${EVENT_KEY}`\nconst EVENT_TOUCHEND = `touchend${EVENT_KEY}`\nconst EVENT_POINTERDOWN = `pointerdown${EVENT_KEY}`\nconst EVENT_POINTERUP = `pointerup${EVENT_KEY}`\nconst EVENT_DRAG_START = `dragstart${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst SELECTOR_ACTIVE = '.active'\nconst SELECTOR_ACTIVE_ITEM = '.active.carousel-item'\nconst SELECTOR_ITEM = '.carousel-item'\nconst SELECTOR_ITEM_IMG = '.carousel-item img'\nconst SELECTOR_NEXT_PREV = '.carousel-item-next, .carousel-item-prev'\nconst SELECTOR_INDICATORS = '.carousel-indicators'\nconst SELECTOR_DATA_SLIDE = '[data-slide], [data-slide-to]'\nconst SELECTOR_DATA_RIDE = '[data-ride=\"carousel\"]'\n\nconst Default = {\n  interval: 5000,\n  keyboard: true,\n  slide: false,\n  pause: 'hover',\n  wrap: true,\n  touch: true\n}\n\nconst DefaultType = {\n  interval: '(number|boolean)',\n  keyboard: 'boolean',\n  slide: '(boolean|string)',\n  pause: '(string|boolean)',\n  wrap: 'boolean',\n  touch: 'boolean'\n}\n\nconst PointerType = {\n  TOUCH: 'touch',\n  PEN: 'pen'\n}\n\n/**\n * Class definition\n */\n\nclass Carousel {\n  constructor(element, config) {\n    this._items = null\n    this._interval = null\n    this._activeElement = null\n    this._isPaused = false\n    this._isSliding = false\n    this.touchTimeout = null\n    this.touchStartX = 0\n    this.touchDeltaX = 0\n\n    this._config = this._getConfig(config)\n    this._element = element\n    this._indicatorsElement = this._element.querySelector(SELECTOR_INDICATORS)\n    this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0\n    this._pointerEvent = Boolean(window.PointerEvent || window.MSPointerEvent)\n\n    this._addEventListeners()\n  }\n\n  // Getters\n  static get VERSION() {\n    return VERSION\n  }\n\n  static get Default() {\n    return Default\n  }\n\n  // Public\n  next() {\n    if (!this._isSliding) {\n      this._slide(DIRECTION_NEXT)\n    }\n  }\n\n  nextWhenVisible() {\n    const $element = $(this._element)\n    // Don't call next when the page isn't visible\n    // or the carousel or its parent isn't visible\n    if (!document.hidden &&\n      ($element.is(':visible') && $element.css('visibility') !== 'hidden')) {\n      this.next()\n    }\n  }\n\n  prev() {\n    if (!this._isSliding) {\n      this._slide(DIRECTION_PREV)\n    }\n  }\n\n  pause(event) {\n    if (!event) {\n      this._isPaused = true\n    }\n\n    if (this._element.querySelector(SELECTOR_NEXT_PREV)) {\n      Util.triggerTransitionEnd(this._element)\n      this.cycle(true)\n    }\n\n    clearInterval(this._interval)\n    this._interval = null\n  }\n\n  cycle(event) {\n    if (!event) {\n      this._isPaused = false\n    }\n\n    if (this._interval) {\n      clearInterval(this._interval)\n      this._interval = null\n    }\n\n    if (this._config.interval && !this._isPaused) {\n      this._updateInterval()\n\n      this._interval = setInterval(\n        (document.visibilityState ? this.nextWhenVisible : this.next).bind(this),\n        this._config.interval\n      )\n    }\n  }\n\n  to(index) {\n    this._activeElement = this._element.querySelector(SELECTOR_ACTIVE_ITEM)\n\n    const activeIndex = this._getItemIndex(this._activeElement)\n\n    if (index > this._items.length - 1 || index < 0) {\n      return\n    }\n\n    if (this._isSliding) {\n      $(this._element).one(EVENT_SLID, () => this.to(index))\n      return\n    }\n\n    if (activeIndex === index) {\n      this.pause()\n      this.cycle()\n      return\n    }\n\n    const direction = index > activeIndex ?\n      DIRECTION_NEXT :\n      DIRECTION_PREV\n\n    this._slide(direction, this._items[index])\n  }\n\n  dispose() {\n    $(this._element).off(EVENT_KEY)\n    $.removeData(this._element, DATA_KEY)\n\n    this._items = null\n    this._config = null\n    this._element = null\n    this._interval = null\n    this._isPaused = null\n    this._isSliding = null\n    this._activeElement = null\n    this._indicatorsElement = null\n  }\n\n  // Private\n  _getConfig(config) {\n    config = {\n      ...Default,\n      ...config\n    }\n    Util.typeCheckConfig(NAME, config, DefaultType)\n    return config\n  }\n\n  _handleSwipe() {\n    const absDeltax = Math.abs(this.touchDeltaX)\n\n    if (absDeltax <= SWIPE_THRESHOLD) {\n      return\n    }\n\n    const direction = absDeltax / this.touchDeltaX\n\n    this.touchDeltaX = 0\n\n    // swipe left\n    if (direction > 0) {\n      this.prev()\n    }\n\n    // swipe right\n    if (direction < 0) {\n      this.next()\n    }\n  }\n\n  _addEventListeners() {\n    if (this._config.keyboard) {\n      $(this._element).on(EVENT_KEYDOWN, event => this._keydown(event))\n    }\n\n    if (this._config.pause === 'hover') {\n      $(this._element)\n        .on(EVENT_MOUSEENTER, event => this.pause(event))\n        .on(EVENT_MOUSELEAVE, event => this.cycle(event))\n    }\n\n    if (this._config.touch) {\n      this._addTouchEventListeners()\n    }\n  }\n\n  _addTouchEventListeners() {\n    if (!this._touchSupported) {\n      return\n    }\n\n    const start = event => {\n      if (this._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {\n        this.touchStartX = event.originalEvent.clientX\n      } else if (!this._pointerEvent) {\n        this.touchStartX = event.originalEvent.touches[0].clientX\n      }\n    }\n\n    const move = event => {\n      // ensure swiping with one touch and not pinching\n      this.touchDeltaX = event.originalEvent.touches && event.originalEvent.touches.length > 1 ?\n        0 :\n        event.originalEvent.touches[0].clientX - this.touchStartX\n    }\n\n    const end = event => {\n      if (this._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {\n        this.touchDeltaX = event.originalEvent.clientX - this.touchStartX\n      }\n\n      this._handleSwipe()\n      if (this._config.pause === 'hover') {\n        // If it's a touch-enabled device, mouseenter/leave are fired as\n        // part of the mouse compatibility events on first tap - the carousel\n        // would stop cycling until user tapped out of it;\n        // here, we listen for touchend, explicitly pause the carousel\n        // (as if it's the second time we tap on it, mouseenter compat event\n        // is NOT fired) and after a timeout (to allow for mouse compatibility\n        // events to fire) we explicitly restart cycling\n\n        this.pause()\n        if (this.touchTimeout) {\n          clearTimeout(this.touchTimeout)\n        }\n\n        this.touchTimeout = setTimeout(event => this.cycle(event), TOUCHEVENT_COMPAT_WAIT + this._config.interval)\n      }\n    }\n\n    $(this._element.querySelectorAll(SELECTOR_ITEM_IMG))\n      .on(EVENT_DRAG_START, e => e.preventDefault())\n\n    if (this._pointerEvent) {\n      $(this._element).on(EVENT_POINTERDOWN, event => start(event))\n      $(this._element).on(EVENT_POINTERUP, event => end(event))\n\n      this._element.classList.add(CLASS_NAME_POINTER_EVENT)\n    } else {\n      $(this._element).on(EVENT_TOUCHSTART, event => start(event))\n      $(this._element).on(EVENT_TOUCHMOVE, event => move(event))\n      $(this._element).on(EVENT_TOUCHEND, event => end(event))\n    }\n  }\n\n  _keydown(event) {\n    if (/input|textarea/i.test(event.target.tagName)) {\n      return\n    }\n\n    switch (event.which) {\n      case ARROW_LEFT_KEYCODE:\n        event.preventDefault()\n        this.prev()\n        break\n      case ARROW_RIGHT_KEYCODE:\n        event.preventDefault()\n        this.next()\n        break\n      default:\n    }\n  }\n\n  _getItemIndex(element) {\n    this._items = element && element.parentNode ?\n      [].slice.call(element.parentNode.querySelectorAll(SELECTOR_ITEM)) :\n      []\n    return this._items.indexOf(element)\n  }\n\n  _getItemByDirection(direction, activeElement) {\n    const isNextDirection = direction === DIRECTION_NEXT\n    const isPrevDirection = direction === DIRECTION_PREV\n    const activeIndex = this._getItemIndex(activeElement)\n    const lastItemIndex = this._items.length - 1\n    const isGoingToWrap = isPrevDirection && activeIndex === 0 ||\n                            isNextDirection && activeIndex === lastItemIndex\n\n    if (isGoingToWrap && !this._config.wrap) {\n      return activeElement\n    }\n\n    const delta = direction === DIRECTION_PREV ? -1 : 1\n    const itemIndex = (activeIndex + delta) % this._items.length\n\n    return itemIndex === -1 ?\n      this._items[this._items.length - 1] : this._items[itemIndex]\n  }\n\n  _triggerSlideEvent(relatedTarget, eventDirectionName) {\n    const targetIndex = this._getItemIndex(relatedTarget)\n    const fromIndex = this._getItemIndex(this._element.querySelector(SELECTOR_ACTIVE_ITEM))\n    const slideEvent = $.Event(EVENT_SLIDE, {\n      relatedTarget,\n      direction: eventDirectionName,\n      from: fromIndex,\n      to: targetIndex\n    })\n\n    $(this._element).trigger(slideEvent)\n\n    return slideEvent\n  }\n\n  _setActiveIndicatorElement(element) {\n    if (this._indicatorsElement) {\n      const indicators = [].slice.call(this._indicatorsElement.querySelectorAll(SELECTOR_ACTIVE))\n      $(indicators).removeClass(CLASS_NAME_ACTIVE)\n\n      const nextIndicator = this._indicatorsElement.children[\n        this._getItemIndex(element)\n      ]\n\n      if (nextIndicator) {\n        $(nextIndicator).addClass(CLASS_NAME_ACTIVE)\n      }\n    }\n  }\n\n  _updateInterval() {\n    const element = this._activeElement || this._element.querySelector(SELECTOR_ACTIVE_ITEM)\n\n    if (!element) {\n      return\n    }\n\n    const elementInterval = parseInt(element.getAttribute('data-interval'), 10)\n\n    if (elementInterval) {\n      this._config.defaultInterval = this._config.defaultInterval || this._config.interval\n      this._config.interval = elementInterval\n    } else {\n      this._config.interval = this._config.defaultInterval || this._config.interval\n    }\n  }\n\n  _slide(direction, element) {\n    const activeElement = this._element.querySelector(SELECTOR_ACTIVE_ITEM)\n    const activeElementIndex = this._getItemIndex(activeElement)\n    const nextElement = element || activeElement &&\n      this._getItemByDirection(direction, activeElement)\n    const nextElementIndex = this._getItemIndex(nextElement)\n    const isCycling = Boolean(this._interval)\n\n    let directionalClassName\n    let orderClassName\n    let eventDirectionName\n\n    if (direction === DIRECTION_NEXT) {\n      directionalClassName = CLASS_NAME_LEFT\n      orderClassName = CLASS_NAME_NEXT\n      eventDirectionName = DIRECTION_LEFT\n    } else {\n      directionalClassName = CLASS_NAME_RIGHT\n      orderClassName = CLASS_NAME_PREV\n      eventDirectionName = DIRECTION_RIGHT\n    }\n\n    if (nextElement && $(nextElement).hasClass(CLASS_NAME_ACTIVE)) {\n      this._isSliding = false\n      return\n    }\n\n    const slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName)\n    if (slideEvent.isDefaultPrevented()) {\n      return\n    }\n\n    if (!activeElement || !nextElement) {\n      // Some weirdness is happening, so we bail\n      return\n    }\n\n    this._isSliding = true\n\n    if (isCycling) {\n      this.pause()\n    }\n\n    this._setActiveIndicatorElement(nextElement)\n    this._activeElement = nextElement\n\n    const slidEvent = $.Event(EVENT_SLID, {\n      relatedTarget: nextElement,\n      direction: eventDirectionName,\n      from: activeElementIndex,\n      to: nextElementIndex\n    })\n\n    if ($(this._element).hasClass(CLASS_NAME_SLIDE)) {\n      $(nextElement).addClass(orderClassName)\n\n      Util.reflow(nextElement)\n\n      $(activeElement).addClass(directionalClassName)\n      $(nextElement).addClass(directionalClassName)\n\n      const transitionDuration = Util.getTransitionDurationFromElement(activeElement)\n\n      $(activeElement)\n        .one(Util.TRANSITION_END, () => {\n          $(nextElement)\n            .removeClass(`${directionalClassName} ${orderClassName}`)\n            .addClass(CLASS_NAME_ACTIVE)\n\n          $(activeElement).removeClass(`${CLASS_NAME_ACTIVE} ${orderClassName} ${directionalClassName}`)\n\n          this._isSliding = false\n\n          setTimeout(() => $(this._element).trigger(slidEvent), 0)\n        })\n        .emulateTransitionEnd(transitionDuration)\n    } else {\n      $(activeElement).removeClass(CLASS_NAME_ACTIVE)\n      $(nextElement).addClass(CLASS_NAME_ACTIVE)\n\n      this._isSliding = false\n      $(this._element).trigger(slidEvent)\n    }\n\n    if (isCycling) {\n      this.cycle()\n    }\n  }\n\n  // Static\n  static _jQueryInterface(config) {\n    return this.each(function () {\n      let data = $(this).data(DATA_KEY)\n      let _config = {\n        ...Default,\n        ...$(this).data()\n      }\n\n      if (typeof config === 'object') {\n        _config = {\n          ..._config,\n          ...config\n        }\n      }\n\n      const action = typeof config === 'string' ? config : _config.slide\n\n      if (!data) {\n        data = new Carousel(this, _config)\n        $(this).data(DATA_KEY, data)\n      }\n\n      if (typeof config === 'number') {\n        data.to(config)\n      } else if (typeof action === 'string') {\n        if (typeof data[action] === 'undefined') {\n          throw new TypeError(`No method named \"${action}\"`)\n        }\n\n        data[action]()\n      } else if (_config.interval && _config.ride) {\n        data.pause()\n        data.cycle()\n      }\n    })\n  }\n\n  static _dataApiClickHandler(event) {\n    const selector = Util.getSelectorFromElement(this)\n\n    if (!selector) {\n      return\n    }\n\n    const target = $(selector)[0]\n\n    if (!target || !$(target).hasClass(CLASS_NAME_CAROUSEL)) {\n      return\n    }\n\n    const config = {\n      ...$(target).data(),\n      ...$(this).data()\n    }\n    const slideIndex = this.getAttribute('data-slide-to')\n\n    if (slideIndex) {\n      config.interval = false\n    }\n\n    Carousel._jQueryInterface.call($(target), config)\n\n    if (slideIndex) {\n      $(target).data(DATA_KEY).to(slideIndex)\n    }\n\n    event.preventDefault()\n  }\n}\n\n/**\n * Data API implementation\n */\n\n$(document).on(EVENT_CLICK_DATA_API, SELECTOR_DATA_SLIDE, Carousel._dataApiClickHandler)\n\n$(window).on(EVENT_LOAD_DATA_API, () => {\n  const carousels = [].slice.call(document.querySelectorAll(SELECTOR_DATA_RIDE))\n  for (let i = 0, len = carousels.length; i < len; i++) {\n    const $carousel = $(carousels[i])\n    Carousel._jQueryInterface.call($carousel, $carousel.data())\n  }\n})\n\n/**\n * jQuery\n */\n\n$.fn[NAME] = Carousel._jQueryInterface\n$.fn[NAME].Constructor = Carousel\n$.fn[NAME].noConflict = () => {\n  $.fn[NAME] = JQUERY_NO_CONFLICT\n  return Carousel._jQueryInterface\n}\n\nexport default Carousel\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.1): collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * Constants\n */\n\nconst NAME = 'collapse'\nconst VERSION = '4.6.1'\nconst DATA_KEY = 'bs.collapse'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_COLLAPSE = 'collapse'\nconst CLASS_NAME_COLLAPSING = 'collapsing'\nconst CLASS_NAME_COLLAPSED = 'collapsed'\n\nconst DIMENSION_WIDTH = 'width'\nconst DIMENSION_HEIGHT = 'height'\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst SELECTOR_ACTIVES = '.show, .collapsing'\nconst SELECTOR_DATA_TOGGLE = '[data-toggle=\"collapse\"]'\n\nconst Default = {\n  toggle: true,\n  parent: ''\n}\n\nconst DefaultType = {\n  toggle: 'boolean',\n  parent: '(string|element)'\n}\n\n/**\n * Class definition\n */\n\nclass Collapse {\n  constructor(element, config) {\n    this._isTransitioning = false\n    this._element = element\n    this._config = this._getConfig(config)\n    this._triggerArray = [].slice.call(document.querySelectorAll(\n      `[data-toggle=\"collapse\"][href=\"#${element.id}\"],` +\n      `[data-toggle=\"collapse\"][data-target=\"#${element.id}\"]`\n    ))\n\n    const toggleList = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE))\n    for (let i = 0, len = toggleList.length; i < len; i++) {\n      const elem = toggleList[i]\n      const selector = Util.getSelectorFromElement(elem)\n      const filterElement = [].slice.call(document.querySelectorAll(selector))\n        .filter(foundElem => foundElem === element)\n\n      if (selector !== null && filterElement.length > 0) {\n        this._selector = selector\n        this._triggerArray.push(elem)\n      }\n    }\n\n    this._parent = this._config.parent ? this._getParent() : null\n\n    if (!this._config.parent) {\n      this._addAriaAndCollapsedClass(this._element, this._triggerArray)\n    }\n\n    if (this._config.toggle) {\n      this.toggle()\n    }\n  }\n\n  // Getters\n  static get VERSION() {\n    return VERSION\n  }\n\n  static get Default() {\n    return Default\n  }\n\n  // Public\n  toggle() {\n    if ($(this._element).hasClass(CLASS_NAME_SHOW)) {\n      this.hide()\n    } else {\n      this.show()\n    }\n  }\n\n  show() {\n    if (this._isTransitioning ||\n      $(this._element).hasClass(CLASS_NAME_SHOW)) {\n      return\n    }\n\n    let actives\n    let activesData\n\n    if (this._parent) {\n      actives = [].slice.call(this._parent.querySelectorAll(SELECTOR_ACTIVES))\n        .filter(elem => {\n          if (typeof this._config.parent === 'string') {\n            return elem.getAttribute('data-parent') === this._config.parent\n          }\n\n          return elem.classList.contains(CLASS_NAME_COLLAPSE)\n        })\n\n      if (actives.length === 0) {\n        actives = null\n      }\n    }\n\n    if (actives) {\n      activesData = $(actives).not(this._selector).data(DATA_KEY)\n      if (activesData && activesData._isTransitioning) {\n        return\n      }\n    }\n\n    const startEvent = $.Event(EVENT_SHOW)\n    $(this._element).trigger(startEvent)\n    if (startEvent.isDefaultPrevented()) {\n      return\n    }\n\n    if (actives) {\n      Collapse._jQueryInterface.call($(actives).not(this._selector), 'hide')\n      if (!activesData) {\n        $(actives).data(DATA_KEY, null)\n      }\n    }\n\n    const dimension = this._getDimension()\n\n    $(this._element)\n      .removeClass(CLASS_NAME_COLLAPSE)\n      .addClass(CLASS_NAME_COLLAPSING)\n\n    this._element.style[dimension] = 0\n\n    if (this._triggerArray.length) {\n      $(this._triggerArray)\n        .removeClass(CLASS_NAME_COLLAPSED)\n        .attr('aria-expanded', true)\n    }\n\n    this.setTransitioning(true)\n\n    const complete = () => {\n      $(this._element)\n        .removeClass(CLASS_NAME_COLLAPSING)\n        .addClass(`${CLASS_NAME_COLLAPSE} ${CLASS_NAME_SHOW}`)\n\n      this._element.style[dimension] = ''\n\n      this.setTransitioning(false)\n\n      $(this._element).trigger(EVENT_SHOWN)\n    }\n\n    const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1)\n    const scrollSize = `scroll${capitalizedDimension}`\n    const transitionDuration = Util.getTransitionDurationFromElement(this._element)\n\n    $(this._element)\n      .one(Util.TRANSITION_END, complete)\n      .emulateTransitionEnd(transitionDuration)\n\n    this._element.style[dimension] = `${this._element[scrollSize]}px`\n  }\n\n  hide() {\n    if (this._isTransitioning ||\n      !$(this._element).hasClass(CLASS_NAME_SHOW)) {\n      return\n    }\n\n    const startEvent = $.Event(EVENT_HIDE)\n    $(this._element).trigger(startEvent)\n    if (startEvent.isDefaultPrevented()) {\n      return\n    }\n\n    const dimension = this._getDimension()\n\n    this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`\n\n    Util.reflow(this._element)\n\n    $(this._element)\n      .addClass(CLASS_NAME_COLLAPSING)\n      .removeClass(`${CLASS_NAME_COLLAPSE} ${CLASS_NAME_SHOW}`)\n\n    const triggerArrayLength = this._triggerArray.length\n    if (triggerArrayLength > 0) {\n      for (let i = 0; i < triggerArrayLength; i++) {\n        const trigger = this._triggerArray[i]\n        const selector = Util.getSelectorFromElement(trigger)\n\n        if (selector !== null) {\n          const $elem = $([].slice.call(document.querySelectorAll(selector)))\n          if (!$elem.hasClass(CLASS_NAME_SHOW)) {\n            $(trigger).addClass(CLASS_NAME_COLLAPSED)\n              .attr('aria-expanded', false)\n          }\n        }\n      }\n    }\n\n    this.setTransitioning(true)\n\n    const complete = () => {\n      this.setTransitioning(false)\n      $(this._element)\n        .removeClass(CLASS_NAME_COLLAPSING)\n        .addClass(CLASS_NAME_COLLAPSE)\n        .trigger(EVENT_HIDDEN)\n    }\n\n    this._element.style[dimension] = ''\n    const transitionDuration = Util.getTransitionDurationFromElement(this._element)\n\n    $(this._element)\n      .one(Util.TRANSITION_END, complete)\n      .emulateTransitionEnd(transitionDuration)\n  }\n\n  setTransitioning(isTransitioning) {\n    this._isTransitioning = isTransitioning\n  }\n\n  dispose() {\n    $.removeData(this._element, DATA_KEY)\n\n    this._config = null\n    this._parent = null\n    this._element = null\n    this._triggerArray = null\n    this._isTransitioning = null\n  }\n\n  // Private\n  _getConfig(config) {\n    config = {\n      ...Default,\n      ...config\n    }\n    config.toggle = Boolean(config.toggle) // Coerce string values\n    Util.typeCheckConfig(NAME, config, DefaultType)\n    return config\n  }\n\n  _getDimension() {\n    const hasWidth = $(this._element).hasClass(DIMENSION_WIDTH)\n    return hasWidth ? DIMENSION_WIDTH : DIMENSION_HEIGHT\n  }\n\n  _getParent() {\n    let parent\n\n    if (Util.isElement(this._config.parent)) {\n      parent = this._config.parent\n\n      // It's a jQuery object\n      if (typeof this._config.parent.jquery !== 'undefined') {\n        parent = this._config.parent[0]\n      }\n    } else {\n      parent = document.querySelector(this._config.parent)\n    }\n\n    const selector = `[data-toggle=\"collapse\"][data-parent=\"${this._config.parent}\"]`\n    const children = [].slice.call(parent.querySelectorAll(selector))\n\n    $(children).each((i, element) => {\n      this._addAriaAndCollapsedClass(\n        Collapse._getTargetFromElement(element),\n        [element]\n      )\n    })\n\n    return parent\n  }\n\n  _addAriaAndCollapsedClass(element, triggerArray) {\n    const isOpen = $(element).hasClass(CLASS_NAME_SHOW)\n\n    if (triggerArray.length) {\n      $(triggerArray)\n        .toggleClass(CLASS_NAME_COLLAPSED, !isOpen)\n        .attr('aria-expanded', isOpen)\n    }\n  }\n\n  // Static\n  static _getTargetFromElement(element) {\n    const selector = Util.getSelectorFromElement(element)\n    return selector ? document.querySelector(selector) : null\n  }\n\n  static _jQueryInterface(config) {\n    return this.each(function () {\n      const $element = $(this)\n      let data = $element.data(DATA_KEY)\n      const _config = {\n        ...Default,\n        ...$element.data(),\n        ...(typeof config === 'object' && config ? config : {})\n      }\n\n      if (!data && _config.toggle && typeof config === 'string' && /show|hide/.test(config)) {\n        _config.toggle = false\n      }\n\n      if (!data) {\n        data = new Collapse(this, _config)\n        $element.data(DATA_KEY, data)\n      }\n\n      if (typeof config === 'string') {\n        if (typeof data[config] === 'undefined') {\n          throw new TypeError(`No method named \"${config}\"`)\n        }\n\n        data[config]()\n      }\n    })\n  }\n}\n\n/**\n * Data API implementation\n */\n\n$(document).on(EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  // preventDefault only for <a> elements (which change the URL) not inside the collapsible element\n  if (event.currentTarget.tagName === 'A') {\n    event.preventDefault()\n  }\n\n  const $trigger = $(this)\n  const selector = Util.getSelectorFromElement(this)\n  const selectors = [].slice.call(document.querySelectorAll(selector))\n\n  $(selectors).each(function () {\n    const $target = $(this)\n    const data = $target.data(DATA_KEY)\n    const config = data ? 'toggle' : $trigger.data()\n    Collapse._jQueryInterface.call($target, config)\n  })\n})\n\n/**\n * jQuery\n */\n\n$.fn[NAME] = Collapse._jQueryInterface\n$.fn[NAME].Constructor = Collapse\n$.fn[NAME].noConflict = () => {\n  $.fn[NAME] = JQUERY_NO_CONFLICT\n  return Collapse._jQueryInterface\n}\n\nexport default Collapse\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.1): dropdown.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Popper from 'popper.js'\nimport Util from './util'\n\n/**\n * Constants\n */\n\nconst NAME = 'dropdown'\nconst VERSION = '4.6.1'\nconst DATA_KEY = 'bs.dropdown'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\nconst ESCAPE_KEYCODE = 27 // KeyboardEvent.which value for Escape (Esc) key\nconst SPACE_KEYCODE = 32 // KeyboardEvent.which value for space key\nconst TAB_KEYCODE = 9 // KeyboardEvent.which value for tab key\nconst ARROW_UP_KEYCODE = 38 // KeyboardEvent.which value for up arrow key\nconst ARROW_DOWN_KEYCODE = 40 // KeyboardEvent.which value for down arrow key\nconst RIGHT_MOUSE_BUTTON_WHICH = 3 // MouseEvent.which value for the right button (assuming a right-handed mouse)\nconst REGEXP_KEYDOWN = new RegExp(`${ARROW_UP_KEYCODE}|${ARROW_DOWN_KEYCODE}|${ESCAPE_KEYCODE}`)\n\nconst CLASS_NAME_DISABLED = 'disabled'\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_DROPUP = 'dropup'\nconst CLASS_NAME_DROPRIGHT = 'dropright'\nconst CLASS_NAME_DROPLEFT = 'dropleft'\nconst CLASS_NAME_MENURIGHT = 'dropdown-menu-right'\nconst CLASS_NAME_POSITION_STATIC = 'position-static'\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK = `click${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY}${DATA_API_KEY}`\n\nconst SELECTOR_DATA_TOGGLE = '[data-toggle=\"dropdown\"]'\nconst SELECTOR_FORM_CHILD = '.dropdown form'\nconst SELECTOR_MENU = '.dropdown-menu'\nconst SELECTOR_NAVBAR_NAV = '.navbar-nav'\nconst SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)'\n\nconst PLACEMENT_TOP = 'top-start'\nconst PLACEMENT_TOPEND = 'top-end'\nconst PLACEMENT_BOTTOM = 'bottom-start'\nconst PLACEMENT_BOTTOMEND = 'bottom-end'\nconst PLACEMENT_RIGHT = 'right-start'\nconst PLACEMENT_LEFT = 'left-start'\n\nconst Default = {\n  offset: 0,\n  flip: true,\n  boundary: 'scrollParent',\n  reference: 'toggle',\n  display: 'dynamic',\n  popperConfig: null\n}\n\nconst DefaultType = {\n  offset: '(number|string|function)',\n  flip: 'boolean',\n  boundary: '(string|element)',\n  reference: '(string|element)',\n  display: 'string',\n  popperConfig: '(null|object)'\n}\n\n/**\n * Class definition\n */\n\nclass Dropdown {\n  constructor(element, config) {\n    this._element = element\n    this._popper = null\n    this._config = this._getConfig(config)\n    this._menu = this._getMenuElement()\n    this._inNavbar = this._detectNavbar()\n\n    this._addEventListeners()\n  }\n\n  // Getters\n  static get VERSION() {\n    return VERSION\n  }\n\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  // Public\n  toggle() {\n    if (this._element.disabled || $(this._element).hasClass(CLASS_NAME_DISABLED)) {\n      return\n    }\n\n    const isActive = $(this._menu).hasClass(CLASS_NAME_SHOW)\n\n    Dropdown._clearMenus()\n\n    if (isActive) {\n      return\n    }\n\n    this.show(true)\n  }\n\n  show(usePopper = false) {\n    if (this._element.disabled || $(this._element).hasClass(CLASS_NAME_DISABLED) || $(this._menu).hasClass(CLASS_NAME_SHOW)) {\n      return\n    }\n\n    const relatedTarget = {\n      relatedTarget: this._element\n    }\n    const showEvent = $.Event(EVENT_SHOW, relatedTarget)\n    const parent = Dropdown._getParentFromElement(this._element)\n\n    $(parent).trigger(showEvent)\n\n    if (showEvent.isDefaultPrevented()) {\n      return\n    }\n\n    // Totally disable Popper for Dropdowns in Navbar\n    if (!this._inNavbar && usePopper) {\n      // Check for Popper dependency\n      if (typeof Popper === 'undefined') {\n        throw new TypeError('Bootstrap\\'s dropdowns require Popper (https://popper.js.org)')\n      }\n\n      let referenceElement = this._element\n\n      if (this._config.reference === 'parent') {\n        referenceElement = parent\n      } else if (Util.isElement(this._config.reference)) {\n        referenceElement = this._config.reference\n\n        // Check if it's jQuery element\n        if (typeof this._config.reference.jquery !== 'undefined') {\n          referenceElement = this._config.reference[0]\n        }\n      }\n\n      // If boundary is not `scrollParent`, then set position to `static`\n      // to allow the menu to \"escape\" the scroll parent's boundaries\n      // https://github.com/twbs/bootstrap/issues/24251\n      if (this._config.boundary !== 'scrollParent') {\n        $(parent).addClass(CLASS_NAME_POSITION_STATIC)\n      }\n\n      this._popper = new Popper(referenceElement, this._menu, this._getPopperConfig())\n    }\n\n    // If this is a touch-enabled device we add extra\n    // empty mouseover listeners to the body's immediate children;\n    // only needed because of broken event delegation on iOS\n    // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n    if ('ontouchstart' in document.documentElement &&\n        $(parent).closest(SELECTOR_NAVBAR_NAV).length === 0) {\n      $(document.body).children().on('mouseover', null, $.noop)\n    }\n\n    this._element.focus()\n    this._element.setAttribute('aria-expanded', true)\n\n    $(this._menu).toggleClass(CLASS_NAME_SHOW)\n    $(parent)\n      .toggleClass(CLASS_NAME_SHOW)\n      .trigger($.Event(EVENT_SHOWN, relatedTarget))\n  }\n\n  hide() {\n    if (this._element.disabled || $(this._element).hasClass(CLASS_NAME_DISABLED) || !$(this._menu).hasClass(CLASS_NAME_SHOW)) {\n      return\n    }\n\n    const relatedTarget = {\n      relatedTarget: this._element\n    }\n    const hideEvent = $.Event(EVENT_HIDE, relatedTarget)\n    const parent = Dropdown._getParentFromElement(this._element)\n\n    $(parent).trigger(hideEvent)\n\n    if (hideEvent.isDefaultPrevented()) {\n      return\n    }\n\n    if (this._popper) {\n      this._popper.destroy()\n    }\n\n    $(this._menu).toggleClass(CLASS_NAME_SHOW)\n    $(parent)\n      .toggleClass(CLASS_NAME_SHOW)\n      .trigger($.Event(EVENT_HIDDEN, relatedTarget))\n  }\n\n  dispose() {\n    $.removeData(this._element, DATA_KEY)\n    $(this._element).off(EVENT_KEY)\n    this._element = null\n    this._menu = null\n    if (this._popper !== null) {\n      this._popper.destroy()\n      this._popper = null\n    }\n  }\n\n  update() {\n    this._inNavbar = this._detectNavbar()\n    if (this._popper !== null) {\n      this._popper.scheduleUpdate()\n    }\n  }\n\n  // Private\n  _addEventListeners() {\n    $(this._element).on(EVENT_CLICK, event => {\n      event.preventDefault()\n      event.stopPropagation()\n      this.toggle()\n    })\n  }\n\n  _getConfig(config) {\n    config = {\n      ...this.constructor.Default,\n      ...$(this._element).data(),\n      ...config\n    }\n\n    Util.typeCheckConfig(\n      NAME,\n      config,\n      this.constructor.DefaultType\n    )\n\n    return config\n  }\n\n  _getMenuElement() {\n    if (!this._menu) {\n      const parent = Dropdown._getParentFromElement(this._element)\n\n      if (parent) {\n        this._menu = parent.querySelector(SELECTOR_MENU)\n      }\n    }\n\n    return this._menu\n  }\n\n  _getPlacement() {\n    const $parentDropdown = $(this._element.parentNode)\n    let placement = PLACEMENT_BOTTOM\n\n    // Handle dropup\n    if ($parentDropdown.hasClass(CLASS_NAME_DROPUP)) {\n      placement = $(this._menu).hasClass(CLASS_NAME_MENURIGHT) ?\n        PLACEMENT_TOPEND :\n        PLACEMENT_TOP\n    } else if ($parentDropdown.hasClass(CLASS_NAME_DROPRIGHT)) {\n      placement = PLACEMENT_RIGHT\n    } else if ($parentDropdown.hasClass(CLASS_NAME_DROPLEFT)) {\n      placement = PLACEMENT_LEFT\n    } else if ($(this._menu).hasClass(CLASS_NAME_MENURIGHT)) {\n      placement = PLACEMENT_BOTTOMEND\n    }\n\n    return placement\n  }\n\n  _detectNavbar() {\n    return $(this._element).closest('.navbar').length > 0\n  }\n\n  _getOffset() {\n    const offset = {}\n\n    if (typeof this._config.offset === 'function') {\n      offset.fn = data => {\n        data.offsets = {\n          ...data.offsets,\n          ...this._config.offset(data.offsets, this._element)\n        }\n\n        return data\n      }\n    } else {\n      offset.offset = this._config.offset\n    }\n\n    return offset\n  }\n\n  _getPopperConfig() {\n    const popperConfig = {\n      placement: this._getPlacement(),\n      modifiers: {\n        offset: this._getOffset(),\n        flip: {\n          enabled: this._config.flip\n        },\n        preventOverflow: {\n          boundariesElement: this._config.boundary\n        }\n      }\n    }\n\n    // Disable Popper if we have a static display\n    if (this._config.display === 'static') {\n      popperConfig.modifiers.applyStyle = {\n        enabled: false\n      }\n    }\n\n    return {\n      ...popperConfig,\n      ...this._config.popperConfig\n    }\n  }\n\n  // Static\n  static _jQueryInterface(config) {\n    return this.each(function () {\n      let data = $(this).data(DATA_KEY)\n      const _config = typeof config === 'object' ? config : null\n\n      if (!data) {\n        data = new Dropdown(this, _config)\n        $(this).data(DATA_KEY, data)\n      }\n\n      if (typeof config === 'string') {\n        if (typeof data[config] === 'undefined') {\n          throw new TypeError(`No method named \"${config}\"`)\n        }\n\n        data[config]()\n      }\n    })\n  }\n\n  static _clearMenus(event) {\n    if (event && (event.which === RIGHT_MOUSE_BUTTON_WHICH ||\n      event.type === 'keyup' && event.which !== TAB_KEYCODE)) {\n      return\n    }\n\n    const toggles = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE))\n\n    for (let i = 0, len = toggles.length; i < len; i++) {\n      const parent = Dropdown._getParentFromElement(toggles[i])\n      const context = $(toggles[i]).data(DATA_KEY)\n      const relatedTarget = {\n        relatedTarget: toggles[i]\n      }\n\n      if (event && event.type === 'click') {\n        relatedTarget.clickEvent = event\n      }\n\n      if (!context) {\n        continue\n      }\n\n      const dropdownMenu = context._menu\n      if (!$(parent).hasClass(CLASS_NAME_SHOW)) {\n        continue\n      }\n\n      if (event && (event.type === 'click' &&\n          /input|textarea/i.test(event.target.tagName) || event.type === 'keyup' && event.which === TAB_KEYCODE) &&\n          $.contains(parent, event.target)) {\n        continue\n      }\n\n      const hideEvent = $.Event(EVENT_HIDE, relatedTarget)\n      $(parent).trigger(hideEvent)\n      if (hideEvent.isDefaultPrevented()) {\n        continue\n      }\n\n      // If this is a touch-enabled device we remove the extra\n      // empty mouseover listeners we added for iOS support\n      if ('ontouchstart' in document.documentElement) {\n        $(document.body).children().off('mouseover', null, $.noop)\n      }\n\n      toggles[i].setAttribute('aria-expanded', 'false')\n\n      if (context._popper) {\n        context._popper.destroy()\n      }\n\n      $(dropdownMenu).removeClass(CLASS_NAME_SHOW)\n      $(parent)\n        .removeClass(CLASS_NAME_SHOW)\n        .trigger($.Event(EVENT_HIDDEN, relatedTarget))\n    }\n  }\n\n  static _getParentFromElement(element) {\n    let parent\n    const selector = Util.getSelectorFromElement(element)\n\n    if (selector) {\n      parent = document.querySelector(selector)\n    }\n\n    return parent || element.parentNode\n  }\n\n  // eslint-disable-next-line complexity\n  static _dataApiKeydownHandler(event) {\n    // If not input/textarea:\n    //  - And not a key in REGEXP_KEYDOWN => not a dropdown command\n    // If input/textarea:\n    //  - If space key => not a dropdown command\n    //  - If key is other than escape\n    //    - If key is not up or down => not a dropdown command\n    //    - If trigger inside the menu => not a dropdown command\n    if (/input|textarea/i.test(event.target.tagName) ?\n      event.which === SPACE_KEYCODE || event.which !== ESCAPE_KEYCODE &&\n      (event.which !== ARROW_DOWN_KEYCODE && event.which !== ARROW_UP_KEYCODE ||\n        $(event.target).closest(SELECTOR_MENU).length) : !REGEXP_KEYDOWN.test(event.which)) {\n      return\n    }\n\n    if (this.disabled || $(this).hasClass(CLASS_NAME_DISABLED)) {\n      return\n    }\n\n    const parent = Dropdown._getParentFromElement(this)\n    const isActive = $(parent).hasClass(CLASS_NAME_SHOW)\n\n    if (!isActive && event.which === ESCAPE_KEYCODE) {\n      return\n    }\n\n    event.preventDefault()\n    event.stopPropagation()\n\n    if (!isActive || (event.which === ESCAPE_KEYCODE || event.which === SPACE_KEYCODE)) {\n      if (event.which === ESCAPE_KEYCODE) {\n        $(parent.querySelector(SELECTOR_DATA_TOGGLE)).trigger('focus')\n      }\n\n      $(this).trigger('click')\n      return\n    }\n\n    const items = [].slice.call(parent.querySelectorAll(SELECTOR_VISIBLE_ITEMS))\n      .filter(item => $(item).is(':visible'))\n\n    if (items.length === 0) {\n      return\n    }\n\n    let index = items.indexOf(event.target)\n\n    if (event.which === ARROW_UP_KEYCODE && index > 0) { // Up\n      index--\n    }\n\n    if (event.which === ARROW_DOWN_KEYCODE && index < items.length - 1) { // Down\n      index++\n    }\n\n    if (index < 0) {\n      index = 0\n    }\n\n    items[index].focus()\n  }\n}\n\n/**\n * Data API implementation\n */\n\n$(document)\n  .on(EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE, Dropdown._dataApiKeydownHandler)\n  .on(EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown._dataApiKeydownHandler)\n  .on(`${EVENT_CLICK_DATA_API} ${EVENT_KEYUP_DATA_API}`, Dropdown._clearMenus)\n  .on(EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n    event.preventDefault()\n    event.stopPropagation()\n    Dropdown._jQueryInterface.call($(this), 'toggle')\n  })\n  .on(EVENT_CLICK_DATA_API, SELECTOR_FORM_CHILD, e => {\n    e.stopPropagation()\n  })\n\n/**\n * jQuery\n */\n\n$.fn[NAME] = Dropdown._jQueryInterface\n$.fn[NAME].Constructor = Dropdown\n$.fn[NAME].noConflict = () => {\n  $.fn[NAME] = JQUERY_NO_CONFLICT\n  return Dropdown._jQueryInterface\n}\n\nexport default Dropdown\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.1): modal.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * Constants\n */\n\nconst NAME = 'modal'\nconst VERSION = '4.6.1'\nconst DATA_KEY = 'bs.modal'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\nconst ESCAPE_KEYCODE = 27 // KeyboardEvent.which value for Escape (Esc) key\n\nconst CLASS_NAME_SCROLLABLE = 'modal-dialog-scrollable'\nconst CLASS_NAME_SCROLLBAR_MEASURER = 'modal-scrollbar-measure'\nconst CLASS_NAME_BACKDROP = 'modal-backdrop'\nconst CLASS_NAME_OPEN = 'modal-open'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_STATIC = 'modal-static'\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_RESIZE = `resize${EVENT_KEY}`\nconst EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY}`\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`\nconst EVENT_MOUSEUP_DISMISS = `mouseup.dismiss${EVENT_KEY}`\nconst EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst SELECTOR_DIALOG = '.modal-dialog'\nconst SELECTOR_MODAL_BODY = '.modal-body'\nconst SELECTOR_DATA_TOGGLE = '[data-toggle=\"modal\"]'\nconst SELECTOR_DATA_DISMISS = '[data-dismiss=\"modal\"]'\nconst SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top'\nconst SELECTOR_STICKY_CONTENT = '.sticky-top'\n\nconst Default = {\n  backdrop: true,\n  keyboard: true,\n  focus: true,\n  show: true\n}\n\nconst DefaultType = {\n  backdrop: '(boolean|string)',\n  keyboard: 'boolean',\n  focus: 'boolean',\n  show: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Modal {\n  constructor(element, config) {\n    this._config = this._getConfig(config)\n    this._element = element\n    this._dialog = element.querySelector(SELECTOR_DIALOG)\n    this._backdrop = null\n    this._isShown = false\n    this._isBodyOverflowing = false\n    this._ignoreBackdropClick = false\n    this._isTransitioning = false\n    this._scrollbarWidth = 0\n  }\n\n  // Getters\n  static get VERSION() {\n    return VERSION\n  }\n\n  static get Default() {\n    return Default\n  }\n\n  // Public\n  toggle(relatedTarget) {\n    return this._isShown ? this.hide() : this.show(relatedTarget)\n  }\n\n  show(relatedTarget) {\n    if (this._isShown || this._isTransitioning) {\n      return\n    }\n\n    const showEvent = $.Event(EVENT_SHOW, {\n      relatedTarget\n    })\n\n    $(this._element).trigger(showEvent)\n\n    if (showEvent.isDefaultPrevented()) {\n      return\n    }\n\n    this._isShown = true\n\n    if ($(this._element).hasClass(CLASS_NAME_FADE)) {\n      this._isTransitioning = true\n    }\n\n    this._checkScrollbar()\n    this._setScrollbar()\n\n    this._adjustDialog()\n\n    this._setEscapeEvent()\n    this._setResizeEvent()\n\n    $(this._element).on(\n      EVENT_CLICK_DISMISS,\n      SELECTOR_DATA_DISMISS,\n      event => this.hide(event)\n    )\n\n    $(this._dialog).on(EVENT_MOUSEDOWN_DISMISS, () => {\n      $(this._element).one(EVENT_MOUSEUP_DISMISS, event => {\n        if ($(event.target).is(this._element)) {\n          this._ignoreBackdropClick = true\n        }\n      })\n    })\n\n    this._showBackdrop(() => this._showElement(relatedTarget))\n  }\n\n  hide(event) {\n    if (event) {\n      event.preventDefault()\n    }\n\n    if (!this._isShown || this._isTransitioning) {\n      return\n    }\n\n    const hideEvent = $.Event(EVENT_HIDE)\n\n    $(this._element).trigger(hideEvent)\n\n    if (!this._isShown || hideEvent.isDefaultPrevented()) {\n      return\n    }\n\n    this._isShown = false\n    const transition = $(this._element).hasClass(CLASS_NAME_FADE)\n\n    if (transition) {\n      this._isTransitioning = true\n    }\n\n    this._setEscapeEvent()\n    this._setResizeEvent()\n\n    $(document).off(EVENT_FOCUSIN)\n\n    $(this._element).removeClass(CLASS_NAME_SHOW)\n\n    $(this._element).off(EVENT_CLICK_DISMISS)\n    $(this._dialog).off(EVENT_MOUSEDOWN_DISMISS)\n\n    if (transition) {\n      const transitionDuration = Util.getTransitionDurationFromElement(this._element)\n\n      $(this._element)\n        .one(Util.TRANSITION_END, event => this._hideModal(event))\n        .emulateTransitionEnd(transitionDuration)\n    } else {\n      this._hideModal()\n    }\n  }\n\n  dispose() {\n    [window, this._element, this._dialog]\n      .forEach(htmlElement => $(htmlElement).off(EVENT_KEY))\n\n    /**\n     * `document` has 2 events `EVENT_FOCUSIN` and `EVENT_CLICK_DATA_API`\n     * Do not move `document` in `htmlElements` array\n     * It will remove `EVENT_CLICK_DATA_API` event that should remain\n     */\n    $(document).off(EVENT_FOCUSIN)\n\n    $.removeData(this._element, DATA_KEY)\n\n    this._config = null\n    this._element = null\n    this._dialog = null\n    this._backdrop = null\n    this._isShown = null\n    this._isBodyOverflowing = null\n    this._ignoreBackdropClick = null\n    this._isTransitioning = null\n    this._scrollbarWidth = null\n  }\n\n  handleUpdate() {\n    this._adjustDialog()\n  }\n\n  // Private\n  _getConfig(config) {\n    config = {\n      ...Default,\n      ...config\n    }\n    Util.typeCheckConfig(NAME, config, DefaultType)\n    return config\n  }\n\n  _triggerBackdropTransition() {\n    const hideEventPrevented = $.Event(EVENT_HIDE_PREVENTED)\n\n    $(this._element).trigger(hideEventPrevented)\n    if (hideEventPrevented.isDefaultPrevented()) {\n      return\n    }\n\n    const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight\n\n    if (!isModalOverflowing) {\n      this._element.style.overflowY = 'hidden'\n    }\n\n    this._element.classList.add(CLASS_NAME_STATIC)\n\n    const modalTransitionDuration = Util.getTransitionDurationFromElement(this._dialog)\n    $(this._element).off(Util.TRANSITION_END)\n\n    $(this._element).one(Util.TRANSITION_END, () => {\n      this._element.classList.remove(CLASS_NAME_STATIC)\n      if (!isModalOverflowing) {\n        $(this._element).one(Util.TRANSITION_END, () => {\n          this._element.style.overflowY = ''\n        })\n          .emulateTransitionEnd(this._element, modalTransitionDuration)\n      }\n    })\n      .emulateTransitionEnd(modalTransitionDuration)\n    this._element.focus()\n  }\n\n  _showElement(relatedTarget) {\n    const transition = $(this._element).hasClass(CLASS_NAME_FADE)\n    const modalBody = this._dialog ? this._dialog.querySelector(SELECTOR_MODAL_BODY) : null\n\n    if (!this._element.parentNode ||\n        this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {\n      // Don't move modal's DOM position\n      document.body.appendChild(this._element)\n    }\n\n    this._element.style.display = 'block'\n    this._element.removeAttribute('aria-hidden')\n    this._element.setAttribute('aria-modal', true)\n    this._element.setAttribute('role', 'dialog')\n\n    if ($(this._dialog).hasClass(CLASS_NAME_SCROLLABLE) && modalBody) {\n      modalBody.scrollTop = 0\n    } else {\n      this._element.scrollTop = 0\n    }\n\n    if (transition) {\n      Util.reflow(this._element)\n    }\n\n    $(this._element).addClass(CLASS_NAME_SHOW)\n\n    if (this._config.focus) {\n      this._enforceFocus()\n    }\n\n    const shownEvent = $.Event(EVENT_SHOWN, {\n      relatedTarget\n    })\n\n    const transitionComplete = () => {\n      if (this._config.focus) {\n        this._element.focus()\n      }\n\n      this._isTransitioning = false\n      $(this._element).trigger(shownEvent)\n    }\n\n    if (transition) {\n      const transitionDuration = Util.getTransitionDurationFromElement(this._dialog)\n\n      $(this._dialog)\n        .one(Util.TRANSITION_END, transitionComplete)\n        .emulateTransitionEnd(transitionDuration)\n    } else {\n      transitionComplete()\n    }\n  }\n\n  _enforceFocus() {\n    $(document)\n      .off(EVENT_FOCUSIN) // Guard against infinite focus loop\n      .on(EVENT_FOCUSIN, event => {\n        if (document !== event.target &&\n            this._element !== event.target &&\n            $(this._element).has(event.target).length === 0) {\n          this._element.focus()\n        }\n      })\n  }\n\n  _setEscapeEvent() {\n    if (this._isShown) {\n      $(this._element).on(EVENT_KEYDOWN_DISMISS, event => {\n        if (this._config.keyboard && event.which === ESCAPE_KEYCODE) {\n          event.preventDefault()\n          this.hide()\n        } else if (!this._config.keyboard && event.which === ESCAPE_KEYCODE) {\n          this._triggerBackdropTransition()\n        }\n      })\n    } else if (!this._isShown) {\n      $(this._element).off(EVENT_KEYDOWN_DISMISS)\n    }\n  }\n\n  _setResizeEvent() {\n    if (this._isShown) {\n      $(window).on(EVENT_RESIZE, event => this.handleUpdate(event))\n    } else {\n      $(window).off(EVENT_RESIZE)\n    }\n  }\n\n  _hideModal() {\n    this._element.style.display = 'none'\n    this._element.setAttribute('aria-hidden', true)\n    this._element.removeAttribute('aria-modal')\n    this._element.removeAttribute('role')\n    this._isTransitioning = false\n    this._showBackdrop(() => {\n      $(document.body).removeClass(CLASS_NAME_OPEN)\n      this._resetAdjustments()\n      this._resetScrollbar()\n      $(this._element).trigger(EVENT_HIDDEN)\n    })\n  }\n\n  _removeBackdrop() {\n    if (this._backdrop) {\n      $(this._backdrop).remove()\n      this._backdrop = null\n    }\n  }\n\n  _showBackdrop(callback) {\n    const animate = $(this._element).hasClass(CLASS_NAME_FADE) ?\n      CLASS_NAME_FADE : ''\n\n    if (this._isShown && this._config.backdrop) {\n      this._backdrop = document.createElement('div')\n      this._backdrop.className = CLASS_NAME_BACKDROP\n\n      if (animate) {\n        this._backdrop.classList.add(animate)\n      }\n\n      $(this._backdrop).appendTo(document.body)\n\n      $(this._element).on(EVENT_CLICK_DISMISS, event => {\n        if (this._ignoreBackdropClick) {\n          this._ignoreBackdropClick = false\n          return\n        }\n\n        if (event.target !== event.currentTarget) {\n          return\n        }\n\n        if (this._config.backdrop === 'static') {\n          this._triggerBackdropTransition()\n        } else {\n          this.hide()\n        }\n      })\n\n      if (animate) {\n        Util.reflow(this._backdrop)\n      }\n\n      $(this._backdrop).addClass(CLASS_NAME_SHOW)\n\n      if (!callback) {\n        return\n      }\n\n      if (!animate) {\n        callback()\n        return\n      }\n\n      const backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop)\n\n      $(this._backdrop)\n        .one(Util.TRANSITION_END, callback)\n        .emulateTransitionEnd(backdropTransitionDuration)\n    } else if (!this._isShown && this._backdrop) {\n      $(this._backdrop).removeClass(CLASS_NAME_SHOW)\n\n      const callbackRemove = () => {\n        this._removeBackdrop()\n        if (callback) {\n          callback()\n        }\n      }\n\n      if ($(this._element).hasClass(CLASS_NAME_FADE)) {\n        const backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop)\n\n        $(this._backdrop)\n          .one(Util.TRANSITION_END, callbackRemove)\n          .emulateTransitionEnd(backdropTransitionDuration)\n      } else {\n        callbackRemove()\n      }\n    } else if (callback) {\n      callback()\n    }\n  }\n\n  // ----------------------------------------------------------------------\n  // the following methods are used to handle overflowing modals\n  // todo (fat): these should probably be refactored out of modal.js\n  // ----------------------------------------------------------------------\n\n  _adjustDialog() {\n    const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight\n\n    if (!this._isBodyOverflowing && isModalOverflowing) {\n      this._element.style.paddingLeft = `${this._scrollbarWidth}px`\n    }\n\n    if (this._isBodyOverflowing && !isModalOverflowing) {\n      this._element.style.paddingRight = `${this._scrollbarWidth}px`\n    }\n  }\n\n  _resetAdjustments() {\n    this._element.style.paddingLeft = ''\n    this._element.style.paddingRight = ''\n  }\n\n  _checkScrollbar() {\n    const rect = document.body.getBoundingClientRect()\n    this._isBodyOverflowing = Math.round(rect.left + rect.right) < window.innerWidth\n    this._scrollbarWidth = this._getScrollbarWidth()\n  }\n\n  _setScrollbar() {\n    if (this._isBodyOverflowing) {\n      // Note: DOMNode.style.paddingRight returns the actual value or '' if not set\n      //   while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set\n      const fixedContent = [].slice.call(document.querySelectorAll(SELECTOR_FIXED_CONTENT))\n      const stickyContent = [].slice.call(document.querySelectorAll(SELECTOR_STICKY_CONTENT))\n\n      // Adjust fixed content padding\n      $(fixedContent).each((index, element) => {\n        const actualPadding = element.style.paddingRight\n        const calculatedPadding = $(element).css('padding-right')\n        $(element)\n          .data('padding-right', actualPadding)\n          .css('padding-right', `${parseFloat(calculatedPadding) + this._scrollbarWidth}px`)\n      })\n\n      // Adjust sticky content margin\n      $(stickyContent).each((index, element) => {\n        const actualMargin = element.style.marginRight\n        const calculatedMargin = $(element).css('margin-right')\n        $(element)\n          .data('margin-right', actualMargin)\n          .css('margin-right', `${parseFloat(calculatedMargin) - this._scrollbarWidth}px`)\n      })\n\n      // Adjust body padding\n      const actualPadding = document.body.style.paddingRight\n      const calculatedPadding = $(document.body).css('padding-right')\n      $(document.body)\n        .data('padding-right', actualPadding)\n        .css('padding-right', `${parseFloat(calculatedPadding) + this._scrollbarWidth}px`)\n    }\n\n    $(document.body).addClass(CLASS_NAME_OPEN)\n  }\n\n  _resetScrollbar() {\n    // Restore fixed content padding\n    const fixedContent = [].slice.call(document.querySelectorAll(SELECTOR_FIXED_CONTENT))\n    $(fixedContent).each((index, element) => {\n      const padding = $(element).data('padding-right')\n      $(element).removeData('padding-right')\n      element.style.paddingRight = padding ? padding : ''\n    })\n\n    // Restore sticky content\n    const elements = [].slice.call(document.querySelectorAll(`${SELECTOR_STICKY_CONTENT}`))\n    $(elements).each((index, element) => {\n      const margin = $(element).data('margin-right')\n      if (typeof margin !== 'undefined') {\n        $(element).css('margin-right', margin).removeData('margin-right')\n      }\n    })\n\n    // Restore body padding\n    const padding = $(document.body).data('padding-right')\n    $(document.body).removeData('padding-right')\n    document.body.style.paddingRight = padding ? padding : ''\n  }\n\n  _getScrollbarWidth() { // thx d.walsh\n    const scrollDiv = document.createElement('div')\n    scrollDiv.className = CLASS_NAME_SCROLLBAR_MEASURER\n    document.body.appendChild(scrollDiv)\n    const scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth\n    document.body.removeChild(scrollDiv)\n    return scrollbarWidth\n  }\n\n  // Static\n  static _jQueryInterface(config, relatedTarget) {\n    return this.each(function () {\n      let data = $(this).data(DATA_KEY)\n      const _config = {\n        ...Default,\n        ...$(this).data(),\n        ...(typeof config === 'object' && config ? config : {})\n      }\n\n      if (!data) {\n        data = new Modal(this, _config)\n        $(this).data(DATA_KEY, data)\n      }\n\n      if (typeof config === 'string') {\n        if (typeof data[config] === 'undefined') {\n          throw new TypeError(`No method named \"${config}\"`)\n        }\n\n        data[config](relatedTarget)\n      } else if (_config.show) {\n        data.show(relatedTarget)\n      }\n    })\n  }\n}\n\n/**\n * Data API implementation\n */\n\n$(document).on(EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  let target\n  const selector = Util.getSelectorFromElement(this)\n\n  if (selector) {\n    target = document.querySelector(selector)\n  }\n\n  const config = $(target).data(DATA_KEY) ?\n    'toggle' : {\n      ...$(target).data(),\n      ...$(this).data()\n    }\n\n  if (this.tagName === 'A' || this.tagName === 'AREA') {\n    event.preventDefault()\n  }\n\n  const $target = $(target).one(EVENT_SHOW, showEvent => {\n    if (showEvent.isDefaultPrevented()) {\n      // Only register focus restorer if modal will actually get shown\n      return\n    }\n\n    $target.one(EVENT_HIDDEN, () => {\n      if ($(this).is(':visible')) {\n        this.focus()\n      }\n    })\n  })\n\n  Modal._jQueryInterface.call($(target), config, this)\n})\n\n/**\n * jQuery\n */\n\n$.fn[NAME] = Modal._jQueryInterface\n$.fn[NAME].Constructor = Modal\n$.fn[NAME].noConflict = () => {\n  $.fn[NAME] = JQUERY_NO_CONFLICT\n  return Modal._jQueryInterface\n}\n\nexport default Modal\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.1): tools/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst uriAttrs = [\n  'background',\n  'cite',\n  'href',\n  'itemtype',\n  'longdesc',\n  'poster',\n  'src',\n  'xlink:href'\n]\n\nconst ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i\n\nexport const DefaultWhitelist = {\n  // Global attributes allowed on any supplied element below.\n  '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n  a: ['target', 'href', 'title', 'rel'],\n  area: [],\n  b: [],\n  br: [],\n  col: [],\n  code: [],\n  div: [],\n  em: [],\n  hr: [],\n  h1: [],\n  h2: [],\n  h3: [],\n  h4: [],\n  h5: [],\n  h6: [],\n  i: [],\n  img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],\n  li: [],\n  ol: [],\n  p: [],\n  pre: [],\n  s: [],\n  small: [],\n  span: [],\n  sub: [],\n  sup: [],\n  strong: [],\n  u: [],\n  ul: []\n}\n\n/**\n * A pattern that recognizes a commonly useful subset of URLs that are safe.\n *\n * Shoutout to Angular https://github.com/angular/angular/blob/12.2.x/packages/core/src/sanitization/url_sanitizer.ts\n */\nconst SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file|sms):|[^#&/:?]*(?:[#/?]|$))/i\n\n/**\n * A pattern that matches safe data URLs. Only matches image, video and audio types.\n *\n * Shoutout to Angular https://github.com/angular/angular/blob/12.2.x/packages/core/src/sanitization/url_sanitizer.ts\n */\nconst DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[\\d+/a-z]+=*$/i\n\nfunction allowedAttribute(attr, allowedAttributeList) {\n  const attrName = attr.nodeName.toLowerCase()\n\n  if (allowedAttributeList.indexOf(attrName) !== -1) {\n    if (uriAttrs.indexOf(attrName) !== -1) {\n      return Boolean(SAFE_URL_PATTERN.test(attr.nodeValue) || DATA_URL_PATTERN.test(attr.nodeValue))\n    }\n\n    return true\n  }\n\n  const regExp = allowedAttributeList.filter(attrRegex => attrRegex instanceof RegExp)\n\n  // Check if a regular expression validates the attribute.\n  for (let i = 0, len = regExp.length; i < len; i++) {\n    if (regExp[i].test(attrName)) {\n      return true\n    }\n  }\n\n  return false\n}\n\nexport function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) {\n  if (unsafeHtml.length === 0) {\n    return unsafeHtml\n  }\n\n  if (sanitizeFn && typeof sanitizeFn === 'function') {\n    return sanitizeFn(unsafeHtml)\n  }\n\n  const domParser = new window.DOMParser()\n  const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html')\n  const whitelistKeys = Object.keys(whiteList)\n  const elements = [].slice.call(createdDocument.body.querySelectorAll('*'))\n\n  for (let i = 0, len = elements.length; i < len; i++) {\n    const el = elements[i]\n    const elName = el.nodeName.toLowerCase()\n\n    if (whitelistKeys.indexOf(el.nodeName.toLowerCase()) === -1) {\n      el.parentNode.removeChild(el)\n\n      continue\n    }\n\n    const attributeList = [].slice.call(el.attributes)\n    // eslint-disable-next-line unicorn/prefer-spread\n    const whitelistedAttributes = [].concat(whiteList['*'] || [], whiteList[elName] || [])\n\n    attributeList.forEach(attr => {\n      if (!allowedAttribute(attr, whitelistedAttributes)) {\n        el.removeAttribute(attr.nodeName)\n      }\n    })\n  }\n\n  return createdDocument.body.innerHTML\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.1): tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { DefaultWhitelist, sanitizeHtml } from './tools/sanitizer'\nimport $ from 'jquery'\nimport Popper from 'popper.js'\nimport Util from './util'\n\n/**\n * Constants\n */\n\nconst NAME = 'tooltip'\nconst VERSION = '4.6.1'\nconst DATA_KEY = 'bs.tooltip'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\nconst CLASS_PREFIX = 'bs-tooltip'\nconst BSCLS_PREFIX_REGEX = new RegExp(`(^|\\\\s)${CLASS_PREFIX}\\\\S+`, 'g')\nconst DISALLOWED_ATTRIBUTES = ['sanitize', 'whiteList', 'sanitizeFn']\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\nconst HOVER_STATE_SHOW = 'show'\nconst HOVER_STATE_OUT = 'out'\n\nconst SELECTOR_TOOLTIP_INNER = '.tooltip-inner'\nconst SELECTOR_ARROW = '.arrow'\n\nconst TRIGGER_HOVER = 'hover'\nconst TRIGGER_FOCUS = 'focus'\nconst TRIGGER_CLICK = 'click'\nconst TRIGGER_MANUAL = 'manual'\n\nconst AttachmentMap = {\n  AUTO: 'auto',\n  TOP: 'top',\n  RIGHT: 'right',\n  BOTTOM: 'bottom',\n  LEFT: 'left'\n}\n\nconst Default = {\n  animation: true,\n  template: '<div class=\"tooltip\" role=\"tooltip\">' +\n                    '<div class=\"arrow\"></div>' +\n                    '<div class=\"tooltip-inner\"></div></div>',\n  trigger: 'hover focus',\n  title: '',\n  delay: 0,\n  html: false,\n  selector: false,\n  placement: 'top',\n  offset: 0,\n  container: false,\n  fallbackPlacement: 'flip',\n  boundary: 'scrollParent',\n  customClass: '',\n  sanitize: true,\n  sanitizeFn: null,\n  whiteList: DefaultWhitelist,\n  popperConfig: null\n}\n\nconst DefaultType = {\n  animation: 'boolean',\n  template: 'string',\n  title: '(string|element|function)',\n  trigger: 'string',\n  delay: '(number|object)',\n  html: 'boolean',\n  selector: '(string|boolean)',\n  placement: '(string|function)',\n  offset: '(number|string|function)',\n  container: '(string|element|boolean)',\n  fallbackPlacement: '(string|array)',\n  boundary: '(string|element)',\n  customClass: '(string|function)',\n  sanitize: 'boolean',\n  sanitizeFn: '(null|function)',\n  whiteList: 'object',\n  popperConfig: '(null|object)'\n}\n\nconst Event = {\n  HIDE: `hide${EVENT_KEY}`,\n  HIDDEN: `hidden${EVENT_KEY}`,\n  SHOW: `show${EVENT_KEY}`,\n  SHOWN: `shown${EVENT_KEY}`,\n  INSERTED: `inserted${EVENT_KEY}`,\n  CLICK: `click${EVENT_KEY}`,\n  FOCUSIN: `focusin${EVENT_KEY}`,\n  FOCUSOUT: `focusout${EVENT_KEY}`,\n  MOUSEENTER: `mouseenter${EVENT_KEY}`,\n  MOUSELEAVE: `mouseleave${EVENT_KEY}`\n}\n\n/**\n * Class definition\n */\n\nclass Tooltip {\n  constructor(element, config) {\n    if (typeof Popper === 'undefined') {\n      throw new TypeError('Bootstrap\\'s tooltips require Popper (https://popper.js.org)')\n    }\n\n    // Private\n    this._isEnabled = true\n    this._timeout = 0\n    this._hoverState = ''\n    this._activeTrigger = {}\n    this._popper = null\n\n    // Protected\n    this.element = element\n    this.config = this._getConfig(config)\n    this.tip = null\n\n    this._setListeners()\n  }\n\n  // Getters\n  static get VERSION() {\n    return VERSION\n  }\n\n  static get Default() {\n    return Default\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  static get DATA_KEY() {\n    return DATA_KEY\n  }\n\n  static get Event() {\n    return Event\n  }\n\n  static get EVENT_KEY() {\n    return EVENT_KEY\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  // Public\n  enable() {\n    this._isEnabled = true\n  }\n\n  disable() {\n    this._isEnabled = false\n  }\n\n  toggleEnabled() {\n    this._isEnabled = !this._isEnabled\n  }\n\n  toggle(event) {\n    if (!this._isEnabled) {\n      return\n    }\n\n    if (event) {\n      const dataKey = this.constructor.DATA_KEY\n      let context = $(event.currentTarget).data(dataKey)\n\n      if (!context) {\n        context = new this.constructor(\n          event.currentTarget,\n          this._getDelegateConfig()\n        )\n        $(event.currentTarget).data(dataKey, context)\n      }\n\n      context._activeTrigger.click = !context._activeTrigger.click\n\n      if (context._isWithActiveTrigger()) {\n        context._enter(null, context)\n      } else {\n        context._leave(null, context)\n      }\n    } else {\n      if ($(this.getTipElement()).hasClass(CLASS_NAME_SHOW)) {\n        this._leave(null, this)\n        return\n      }\n\n      this._enter(null, this)\n    }\n  }\n\n  dispose() {\n    clearTimeout(this._timeout)\n\n    $.removeData(this.element, this.constructor.DATA_KEY)\n\n    $(this.element).off(this.constructor.EVENT_KEY)\n    $(this.element).closest('.modal').off('hide.bs.modal', this._hideModalHandler)\n\n    if (this.tip) {\n      $(this.tip).remove()\n    }\n\n    this._isEnabled = null\n    this._timeout = null\n    this._hoverState = null\n    this._activeTrigger = null\n    if (this._popper) {\n      this._popper.destroy()\n    }\n\n    this._popper = null\n    this.element = null\n    this.config = null\n    this.tip = null\n  }\n\n  show() {\n    if ($(this.element).css('display') === 'none') {\n      throw new Error('Please use show on visible elements')\n    }\n\n    const showEvent = $.Event(this.constructor.Event.SHOW)\n    if (this.isWithContent() && this._isEnabled) {\n      $(this.element).trigger(showEvent)\n\n      const shadowRoot = Util.findShadowRoot(this.element)\n      const isInTheDom = $.contains(\n        shadowRoot !== null ? shadowRoot : this.element.ownerDocument.documentElement,\n        this.element\n      )\n\n      if (showEvent.isDefaultPrevented() || !isInTheDom) {\n        return\n      }\n\n      const tip = this.getTipElement()\n      const tipId = Util.getUID(this.constructor.NAME)\n\n      tip.setAttribute('id', tipId)\n      this.element.setAttribute('aria-describedby', tipId)\n\n      this.setContent()\n\n      if (this.config.animation) {\n        $(tip).addClass(CLASS_NAME_FADE)\n      }\n\n      const placement = typeof this.config.placement === 'function' ?\n        this.config.placement.call(this, tip, this.element) :\n        this.config.placement\n\n      const attachment = this._getAttachment(placement)\n      this.addAttachmentClass(attachment)\n\n      const container = this._getContainer()\n      $(tip).data(this.constructor.DATA_KEY, this)\n\n      if (!$.contains(this.element.ownerDocument.documentElement, this.tip)) {\n        $(tip).appendTo(container)\n      }\n\n      $(this.element).trigger(this.constructor.Event.INSERTED)\n\n      this._popper = new Popper(this.element, tip, this._getPopperConfig(attachment))\n\n      $(tip).addClass(CLASS_NAME_SHOW)\n      $(tip).addClass(this.config.customClass)\n\n      // If this is a touch-enabled device we add extra\n      // empty mouseover listeners to the body's immediate children;\n      // only needed because of broken event delegation on iOS\n      // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n      if ('ontouchstart' in document.documentElement) {\n        $(document.body).children().on('mouseover', null, $.noop)\n      }\n\n      const complete = () => {\n        if (this.config.animation) {\n          this._fixTransition()\n        }\n\n        const prevHoverState = this._hoverState\n        this._hoverState = null\n\n        $(this.element).trigger(this.constructor.Event.SHOWN)\n\n        if (prevHoverState === HOVER_STATE_OUT) {\n          this._leave(null, this)\n        }\n      }\n\n      if ($(this.tip).hasClass(CLASS_NAME_FADE)) {\n        const transitionDuration = Util.getTransitionDurationFromElement(this.tip)\n\n        $(this.tip)\n          .one(Util.TRANSITION_END, complete)\n          .emulateTransitionEnd(transitionDuration)\n      } else {\n        complete()\n      }\n    }\n  }\n\n  hide(callback) {\n    const tip = this.getTipElement()\n    const hideEvent = $.Event(this.constructor.Event.HIDE)\n    const complete = () => {\n      if (this._hoverState !== HOVER_STATE_SHOW && tip.parentNode) {\n        tip.parentNode.removeChild(tip)\n      }\n\n      this._cleanTipClass()\n      this.element.removeAttribute('aria-describedby')\n      $(this.element).trigger(this.constructor.Event.HIDDEN)\n      if (this._popper !== null) {\n        this._popper.destroy()\n      }\n\n      if (callback) {\n        callback()\n      }\n    }\n\n    $(this.element).trigger(hideEvent)\n\n    if (hideEvent.isDefaultPrevented()) {\n      return\n    }\n\n    $(tip).removeClass(CLASS_NAME_SHOW)\n\n    // If this is a touch-enabled device we remove the extra\n    // empty mouseover listeners we added for iOS support\n    if ('ontouchstart' in document.documentElement) {\n      $(document.body).children().off('mouseover', null, $.noop)\n    }\n\n    this._activeTrigger[TRIGGER_CLICK] = false\n    this._activeTrigger[TRIGGER_FOCUS] = false\n    this._activeTrigger[TRIGGER_HOVER] = false\n\n    if ($(this.tip).hasClass(CLASS_NAME_FADE)) {\n      const transitionDuration = Util.getTransitionDurationFromElement(tip)\n\n      $(tip)\n        .one(Util.TRANSITION_END, complete)\n        .emulateTransitionEnd(transitionDuration)\n    } else {\n      complete()\n    }\n\n    this._hoverState = ''\n  }\n\n  update() {\n    if (this._popper !== null) {\n      this._popper.scheduleUpdate()\n    }\n  }\n\n  // Protected\n  isWithContent() {\n    return Boolean(this.getTitle())\n  }\n\n  addAttachmentClass(attachment) {\n    $(this.getTipElement()).addClass(`${CLASS_PREFIX}-${attachment}`)\n  }\n\n  getTipElement() {\n    this.tip = this.tip || $(this.config.template)[0]\n    return this.tip\n  }\n\n  setContent() {\n    const tip = this.getTipElement()\n    this.setElementContent($(tip.querySelectorAll(SELECTOR_TOOLTIP_INNER)), this.getTitle())\n    $(tip).removeClass(`${CLASS_NAME_FADE} ${CLASS_NAME_SHOW}`)\n  }\n\n  setElementContent($element, content) {\n    if (typeof content === 'object' && (content.nodeType || content.jquery)) {\n      // Content is a DOM node or a jQuery\n      if (this.config.html) {\n        if (!$(content).parent().is($element)) {\n          $element.empty().append(content)\n        }\n      } else {\n        $element.text($(content).text())\n      }\n\n      return\n    }\n\n    if (this.config.html) {\n      if (this.config.sanitize) {\n        content = sanitizeHtml(content, this.config.whiteList, this.config.sanitizeFn)\n      }\n\n      $element.html(content)\n    } else {\n      $element.text(content)\n    }\n  }\n\n  getTitle() {\n    let title = this.element.getAttribute('data-original-title')\n\n    if (!title) {\n      title = typeof this.config.title === 'function' ?\n        this.config.title.call(this.element) :\n        this.config.title\n    }\n\n    return title\n  }\n\n  // Private\n  _getPopperConfig(attachment) {\n    const defaultBsConfig = {\n      placement: attachment,\n      modifiers: {\n        offset: this._getOffset(),\n        flip: {\n          behavior: this.config.fallbackPlacement\n        },\n        arrow: {\n          element: SELECTOR_ARROW\n        },\n        preventOverflow: {\n          boundariesElement: this.config.boundary\n        }\n      },\n      onCreate: data => {\n        if (data.originalPlacement !== data.placement) {\n          this._handlePopperPlacementChange(data)\n        }\n      },\n      onUpdate: data => this._handlePopperPlacementChange(data)\n    }\n\n    return {\n      ...defaultBsConfig,\n      ...this.config.popperConfig\n    }\n  }\n\n  _getOffset() {\n    const offset = {}\n\n    if (typeof this.config.offset === 'function') {\n      offset.fn = data => {\n        data.offsets = {\n          ...data.offsets,\n          ...this.config.offset(data.offsets, this.element)\n        }\n\n        return data\n      }\n    } else {\n      offset.offset = this.config.offset\n    }\n\n    return offset\n  }\n\n  _getContainer() {\n    if (this.config.container === false) {\n      return document.body\n    }\n\n    if (Util.isElement(this.config.container)) {\n      return $(this.config.container)\n    }\n\n    return $(document).find(this.config.container)\n  }\n\n  _getAttachment(placement) {\n    return AttachmentMap[placement.toUpperCase()]\n  }\n\n  _setListeners() {\n    const triggers = this.config.trigger.split(' ')\n\n    triggers.forEach(trigger => {\n      if (trigger === 'click') {\n        $(this.element).on(\n          this.constructor.Event.CLICK,\n          this.config.selector,\n          event => this.toggle(event)\n        )\n      } else if (trigger !== TRIGGER_MANUAL) {\n        const eventIn = trigger === TRIGGER_HOVER ?\n          this.constructor.Event.MOUSEENTER :\n          this.constructor.Event.FOCUSIN\n        const eventOut = trigger === TRIGGER_HOVER ?\n          this.constructor.Event.MOUSELEAVE :\n          this.constructor.Event.FOCUSOUT\n\n        $(this.element)\n          .on(eventIn, this.config.selector, event => this._enter(event))\n          .on(eventOut, this.config.selector, event => this._leave(event))\n      }\n    })\n\n    this._hideModalHandler = () => {\n      if (this.element) {\n        this.hide()\n      }\n    }\n\n    $(this.element).closest('.modal').on('hide.bs.modal', this._hideModalHandler)\n\n    if (this.config.selector) {\n      this.config = {\n        ...this.config,\n        trigger: 'manual',\n        selector: ''\n      }\n    } else {\n      this._fixTitle()\n    }\n  }\n\n  _fixTitle() {\n    const titleType = typeof this.element.getAttribute('data-original-title')\n\n    if (this.element.getAttribute('title') || titleType !== 'string') {\n      this.element.setAttribute(\n        'data-original-title',\n        this.element.getAttribute('title') || ''\n      )\n\n      this.element.setAttribute('title', '')\n    }\n  }\n\n  _enter(event, context) {\n    const dataKey = this.constructor.DATA_KEY\n    context = context || $(event.currentTarget).data(dataKey)\n\n    if (!context) {\n      context = new this.constructor(\n        event.currentTarget,\n        this._getDelegateConfig()\n      )\n      $(event.currentTarget).data(dataKey, context)\n    }\n\n    if (event) {\n      context._activeTrigger[\n        event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER\n      ] = true\n    }\n\n    if ($(context.getTipElement()).hasClass(CLASS_NAME_SHOW) || context._hoverState === HOVER_STATE_SHOW) {\n      context._hoverState = HOVER_STATE_SHOW\n      return\n    }\n\n    clearTimeout(context._timeout)\n\n    context._hoverState = HOVER_STATE_SHOW\n\n    if (!context.config.delay || !context.config.delay.show) {\n      context.show()\n      return\n    }\n\n    context._timeout = setTimeout(() => {\n      if (context._hoverState === HOVER_STATE_SHOW) {\n        context.show()\n      }\n    }, context.config.delay.show)\n  }\n\n  _leave(event, context) {\n    const dataKey = this.constructor.DATA_KEY\n    context = context || $(event.currentTarget).data(dataKey)\n\n    if (!context) {\n      context = new this.constructor(\n        event.currentTarget,\n        this._getDelegateConfig()\n      )\n      $(event.currentTarget).data(dataKey, context)\n    }\n\n    if (event) {\n      context._activeTrigger[\n        event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER\n      ] = false\n    }\n\n    if (context._isWithActiveTrigger()) {\n      return\n    }\n\n    clearTimeout(context._timeout)\n\n    context._hoverState = HOVER_STATE_OUT\n\n    if (!context.config.delay || !context.config.delay.hide) {\n      context.hide()\n      return\n    }\n\n    context._timeout = setTimeout(() => {\n      if (context._hoverState === HOVER_STATE_OUT) {\n        context.hide()\n      }\n    }, context.config.delay.hide)\n  }\n\n  _isWithActiveTrigger() {\n    for (const trigger in this._activeTrigger) {\n      if (this._activeTrigger[trigger]) {\n        return true\n      }\n    }\n\n    return false\n  }\n\n  _getConfig(config) {\n    const dataAttributes = $(this.element).data()\n\n    Object.keys(dataAttributes)\n      .forEach(dataAttr => {\n        if (DISALLOWED_ATTRIBUTES.indexOf(dataAttr) !== -1) {\n          delete dataAttributes[dataAttr]\n        }\n      })\n\n    config = {\n      ...this.constructor.Default,\n      ...dataAttributes,\n      ...(typeof config === 'object' && config ? config : {})\n    }\n\n    if (typeof config.delay === 'number') {\n      config.delay = {\n        show: config.delay,\n        hide: config.delay\n      }\n    }\n\n    if (typeof config.title === 'number') {\n      config.title = config.title.toString()\n    }\n\n    if (typeof config.content === 'number') {\n      config.content = config.content.toString()\n    }\n\n    Util.typeCheckConfig(\n      NAME,\n      config,\n      this.constructor.DefaultType\n    )\n\n    if (config.sanitize) {\n      config.template = sanitizeHtml(config.template, config.whiteList, config.sanitizeFn)\n    }\n\n    return config\n  }\n\n  _getDelegateConfig() {\n    const config = {}\n\n    if (this.config) {\n      for (const key in this.config) {\n        if (this.constructor.Default[key] !== this.config[key]) {\n          config[key] = this.config[key]\n        }\n      }\n    }\n\n    return config\n  }\n\n  _cleanTipClass() {\n    const $tip = $(this.getTipElement())\n    const tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX)\n    if (tabClass !== null && tabClass.length) {\n      $tip.removeClass(tabClass.join(''))\n    }\n  }\n\n  _handlePopperPlacementChange(popperData) {\n    this.tip = popperData.instance.popper\n    this._cleanTipClass()\n    this.addAttachmentClass(this._getAttachment(popperData.placement))\n  }\n\n  _fixTransition() {\n    const tip = this.getTipElement()\n    const initConfigAnimation = this.config.animation\n\n    if (tip.getAttribute('x-placement') !== null) {\n      return\n    }\n\n    $(tip).removeClass(CLASS_NAME_FADE)\n    this.config.animation = false\n    this.hide()\n    this.show()\n    this.config.animation = initConfigAnimation\n  }\n\n  // Static\n  static _jQueryInterface(config) {\n    return this.each(function () {\n      const $element = $(this)\n      let data = $element.data(DATA_KEY)\n      const _config = typeof config === 'object' && config\n\n      if (!data && /dispose|hide/.test(config)) {\n        return\n      }\n\n      if (!data) {\n        data = new Tooltip(this, _config)\n        $element.data(DATA_KEY, data)\n      }\n\n      if (typeof config === 'string') {\n        if (typeof data[config] === 'undefined') {\n          throw new TypeError(`No method named \"${config}\"`)\n        }\n\n        data[config]()\n      }\n    })\n  }\n}\n\n/**\n * jQuery\n */\n\n$.fn[NAME] = Tooltip._jQueryInterface\n$.fn[NAME].Constructor = Tooltip\n$.fn[NAME].noConflict = () => {\n  $.fn[NAME] = JQUERY_NO_CONFLICT\n  return Tooltip._jQueryInterface\n}\n\nexport default Tooltip\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.1): popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Tooltip from './tooltip'\n\n/**\n * Constants\n */\n\nconst NAME = 'popover'\nconst VERSION = '4.6.1'\nconst DATA_KEY = 'bs.popover'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\nconst CLASS_PREFIX = 'bs-popover'\nconst BSCLS_PREFIX_REGEX = new RegExp(`(^|\\\\s)${CLASS_PREFIX}\\\\S+`, 'g')\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\nconst SELECTOR_TITLE = '.popover-header'\nconst SELECTOR_CONTENT = '.popover-body'\n\nconst Default = {\n  ...Tooltip.Default,\n  placement: 'right',\n  trigger: 'click',\n  content: '',\n  template: '<div class=\"popover\" role=\"tooltip\">' +\n              '<div class=\"arrow\"></div>' +\n              '<h3 class=\"popover-header\"></h3>' +\n              '<div class=\"popover-body\"></div></div>'\n}\n\nconst DefaultType = {\n  ...Tooltip.DefaultType,\n  content: '(string|element|function)'\n}\n\nconst Event = {\n  HIDE: `hide${EVENT_KEY}`,\n  HIDDEN: `hidden${EVENT_KEY}`,\n  SHOW: `show${EVENT_KEY}`,\n  SHOWN: `shown${EVENT_KEY}`,\n  INSERTED: `inserted${EVENT_KEY}`,\n  CLICK: `click${EVENT_KEY}`,\n  FOCUSIN: `focusin${EVENT_KEY}`,\n  FOCUSOUT: `focusout${EVENT_KEY}`,\n  MOUSEENTER: `mouseenter${EVENT_KEY}`,\n  MOUSELEAVE: `mouseleave${EVENT_KEY}`\n}\n\n/**\n * Class definition\n */\n\nclass Popover extends Tooltip {\n  // Getters\n  static get VERSION() {\n    return VERSION\n  }\n\n  static get Default() {\n    return Default\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  static get DATA_KEY() {\n    return DATA_KEY\n  }\n\n  static get Event() {\n    return Event\n  }\n\n  static get EVENT_KEY() {\n    return EVENT_KEY\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  // Overrides\n  isWithContent() {\n    return this.getTitle() || this._getContent()\n  }\n\n  addAttachmentClass(attachment) {\n    $(this.getTipElement()).addClass(`${CLASS_PREFIX}-${attachment}`)\n  }\n\n  getTipElement() {\n    this.tip = this.tip || $(this.config.template)[0]\n    return this.tip\n  }\n\n  setContent() {\n    const $tip = $(this.getTipElement())\n\n    // We use append for html objects to maintain js events\n    this.setElementContent($tip.find(SELECTOR_TITLE), this.getTitle())\n    let content = this._getContent()\n    if (typeof content === 'function') {\n      content = content.call(this.element)\n    }\n\n    this.setElementContent($tip.find(SELECTOR_CONTENT), content)\n\n    $tip.removeClass(`${CLASS_NAME_FADE} ${CLASS_NAME_SHOW}`)\n  }\n\n  // Private\n  _getContent() {\n    return this.element.getAttribute('data-content') ||\n      this.config.content\n  }\n\n  _cleanTipClass() {\n    const $tip = $(this.getTipElement())\n    const tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX)\n    if (tabClass !== null && tabClass.length > 0) {\n      $tip.removeClass(tabClass.join(''))\n    }\n  }\n\n  // Static\n  static _jQueryInterface(config) {\n    return this.each(function () {\n      let data = $(this).data(DATA_KEY)\n      const _config = typeof config === 'object' ? config : null\n\n      if (!data && /dispose|hide/.test(config)) {\n        return\n      }\n\n      if (!data) {\n        data = new Popover(this, _config)\n        $(this).data(DATA_KEY, data)\n      }\n\n      if (typeof config === 'string') {\n        if (typeof data[config] === 'undefined') {\n          throw new TypeError(`No method named \"${config}\"`)\n        }\n\n        data[config]()\n      }\n    })\n  }\n}\n\n/**\n * jQuery\n */\n\n$.fn[NAME] = Popover._jQueryInterface\n$.fn[NAME].Constructor = Popover\n$.fn[NAME].noConflict = () => {\n  $.fn[NAME] = JQUERY_NO_CONFLICT\n  return Popover._jQueryInterface\n}\n\nexport default Popover\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.1): scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * Constants\n */\n\nconst NAME = 'scrollspy'\nconst VERSION = '4.6.1'\nconst DATA_KEY = 'bs.scrollspy'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\n\nconst CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item'\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst EVENT_ACTIVATE = `activate${EVENT_KEY}`\nconst EVENT_SCROLL = `scroll${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\n\nconst METHOD_OFFSET = 'offset'\nconst METHOD_POSITION = 'position'\n\nconst SELECTOR_DATA_SPY = '[data-spy=\"scroll\"]'\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'\nconst SELECTOR_NAV_LINKS = '.nav-link'\nconst SELECTOR_NAV_ITEMS = '.nav-item'\nconst SELECTOR_LIST_ITEMS = '.list-group-item'\nconst SELECTOR_DROPDOWN = '.dropdown'\nconst SELECTOR_DROPDOWN_ITEMS = '.dropdown-item'\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'\n\nconst Default = {\n  offset: 10,\n  method: 'auto',\n  target: ''\n}\n\nconst DefaultType = {\n  offset: 'number',\n  method: 'string',\n  target: '(string|element)'\n}\n\n/**\n * Class definition\n */\n\nclass ScrollSpy {\n  constructor(element, config) {\n    this._element = element\n    this._scrollElement = element.tagName === 'BODY' ? window : element\n    this._config = this._getConfig(config)\n    this._selector = `${this._config.target} ${SELECTOR_NAV_LINKS},` +\n                          `${this._config.target} ${SELECTOR_LIST_ITEMS},` +\n                          `${this._config.target} ${SELECTOR_DROPDOWN_ITEMS}`\n    this._offsets = []\n    this._targets = []\n    this._activeTarget = null\n    this._scrollHeight = 0\n\n    $(this._scrollElement).on(EVENT_SCROLL, event => this._process(event))\n\n    this.refresh()\n    this._process()\n  }\n\n  // Getters\n  static get VERSION() {\n    return VERSION\n  }\n\n  static get Default() {\n    return Default\n  }\n\n  // Public\n  refresh() {\n    const autoMethod = this._scrollElement === this._scrollElement.window ?\n      METHOD_OFFSET : METHOD_POSITION\n\n    const offsetMethod = this._config.method === 'auto' ?\n      autoMethod : this._config.method\n\n    const offsetBase = offsetMethod === METHOD_POSITION ?\n      this._getScrollTop() : 0\n\n    this._offsets = []\n    this._targets = []\n\n    this._scrollHeight = this._getScrollHeight()\n\n    const targets = [].slice.call(document.querySelectorAll(this._selector))\n\n    targets\n      .map(element => {\n        let target\n        const targetSelector = Util.getSelectorFromElement(element)\n\n        if (targetSelector) {\n          target = document.querySelector(targetSelector)\n        }\n\n        if (target) {\n          const targetBCR = target.getBoundingClientRect()\n          if (targetBCR.width || targetBCR.height) {\n            // TODO (fat): remove sketch reliance on jQuery position/offset\n            return [\n              $(target)[offsetMethod]().top + offsetBase,\n              targetSelector\n            ]\n          }\n        }\n\n        return null\n      })\n      .filter(item => item)\n      .sort((a, b) => a[0] - b[0])\n      .forEach(item => {\n        this._offsets.push(item[0])\n        this._targets.push(item[1])\n      })\n  }\n\n  dispose() {\n    $.removeData(this._element, DATA_KEY)\n    $(this._scrollElement).off(EVENT_KEY)\n\n    this._element = null\n    this._scrollElement = null\n    this._config = null\n    this._selector = null\n    this._offsets = null\n    this._targets = null\n    this._activeTarget = null\n    this._scrollHeight = null\n  }\n\n  // Private\n  _getConfig(config) {\n    config = {\n      ...Default,\n      ...(typeof config === 'object' && config ? config : {})\n    }\n\n    if (typeof config.target !== 'string' && Util.isElement(config.target)) {\n      let id = $(config.target).attr('id')\n      if (!id) {\n        id = Util.getUID(NAME)\n        $(config.target).attr('id', id)\n      }\n\n      config.target = `#${id}`\n    }\n\n    Util.typeCheckConfig(NAME, config, DefaultType)\n\n    return config\n  }\n\n  _getScrollTop() {\n    return this._scrollElement === window ?\n      this._scrollElement.pageYOffset : this._scrollElement.scrollTop\n  }\n\n  _getScrollHeight() {\n    return this._scrollElement.scrollHeight || Math.max(\n      document.body.scrollHeight,\n      document.documentElement.scrollHeight\n    )\n  }\n\n  _getOffsetHeight() {\n    return this._scrollElement === window ?\n      window.innerHeight : this._scrollElement.getBoundingClientRect().height\n  }\n\n  _process() {\n    const scrollTop = this._getScrollTop() + this._config.offset\n    const scrollHeight = this._getScrollHeight()\n    const maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight()\n\n    if (this._scrollHeight !== scrollHeight) {\n      this.refresh()\n    }\n\n    if (scrollTop >= maxScroll) {\n      const target = this._targets[this._targets.length - 1]\n\n      if (this._activeTarget !== target) {\n        this._activate(target)\n      }\n\n      return\n    }\n\n    if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {\n      this._activeTarget = null\n      this._clear()\n      return\n    }\n\n    for (let i = this._offsets.length; i--;) {\n      const isActiveTarget = this._activeTarget !== this._targets[i] &&\n          scrollTop >= this._offsets[i] &&\n          (typeof this._offsets[i + 1] === 'undefined' ||\n              scrollTop < this._offsets[i + 1])\n\n      if (isActiveTarget) {\n        this._activate(this._targets[i])\n      }\n    }\n  }\n\n  _activate(target) {\n    this._activeTarget = target\n\n    this._clear()\n\n    const queries = this._selector\n      .split(',')\n      .map(selector => `${selector}[data-target=\"${target}\"],${selector}[href=\"${target}\"]`)\n\n    const $link = $([].slice.call(document.querySelectorAll(queries.join(','))))\n\n    if ($link.hasClass(CLASS_NAME_DROPDOWN_ITEM)) {\n      $link.closest(SELECTOR_DROPDOWN)\n        .find(SELECTOR_DROPDOWN_TOGGLE)\n        .addClass(CLASS_NAME_ACTIVE)\n      $link.addClass(CLASS_NAME_ACTIVE)\n    } else {\n      // Set triggered link as active\n      $link.addClass(CLASS_NAME_ACTIVE)\n      // Set triggered links parents as active\n      // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor\n      $link.parents(SELECTOR_NAV_LIST_GROUP)\n        .prev(`${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`)\n        .addClass(CLASS_NAME_ACTIVE)\n      // Handle special case when .nav-link is inside .nav-item\n      $link.parents(SELECTOR_NAV_LIST_GROUP)\n        .prev(SELECTOR_NAV_ITEMS)\n        .children(SELECTOR_NAV_LINKS)\n        .addClass(CLASS_NAME_ACTIVE)\n    }\n\n    $(this._scrollElement).trigger(EVENT_ACTIVATE, {\n      relatedTarget: target\n    })\n  }\n\n  _clear() {\n    [].slice.call(document.querySelectorAll(this._selector))\n      .filter(node => node.classList.contains(CLASS_NAME_ACTIVE))\n      .forEach(node => node.classList.remove(CLASS_NAME_ACTIVE))\n  }\n\n  // Static\n  static _jQueryInterface(config) {\n    return this.each(function () {\n      let data = $(this).data(DATA_KEY)\n      const _config = typeof config === 'object' && config\n\n      if (!data) {\n        data = new ScrollSpy(this, _config)\n        $(this).data(DATA_KEY, data)\n      }\n\n      if (typeof config === 'string') {\n        if (typeof data[config] === 'undefined') {\n          throw new TypeError(`No method named \"${config}\"`)\n        }\n\n        data[config]()\n      }\n    })\n  }\n}\n\n/**\n * Data API implementation\n */\n\n$(window).on(EVENT_LOAD_DATA_API, () => {\n  const scrollSpys = [].slice.call(document.querySelectorAll(SELECTOR_DATA_SPY))\n  const scrollSpysLength = scrollSpys.length\n\n  for (let i = scrollSpysLength; i--;) {\n    const $spy = $(scrollSpys[i])\n    ScrollSpy._jQueryInterface.call($spy, $spy.data())\n  }\n})\n\n/**\n * jQuery\n */\n\n$.fn[NAME] = ScrollSpy._jQueryInterface\n$.fn[NAME].Constructor = ScrollSpy\n$.fn[NAME].noConflict = () => {\n  $.fn[NAME] = JQUERY_NO_CONFLICT\n  return ScrollSpy._jQueryInterface\n}\n\nexport default ScrollSpy\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.1): tab.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * Constants\n */\n\nconst NAME = 'tab'\nconst VERSION = '4.6.1'\nconst DATA_KEY = 'bs.tab'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\n\nconst CLASS_NAME_DROPDOWN_MENU = 'dropdown-menu'\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_DISABLED = 'disabled'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst SELECTOR_DROPDOWN = '.dropdown'\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'\nconst SELECTOR_ACTIVE = '.active'\nconst SELECTOR_ACTIVE_UL = '> li > .active'\nconst SELECTOR_DATA_TOGGLE = '[data-toggle=\"tab\"], [data-toggle=\"pill\"], [data-toggle=\"list\"]'\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'\nconst SELECTOR_DROPDOWN_ACTIVE_CHILD = '> .dropdown-menu .active'\n\n/**\n * Class definition\n */\n\nclass Tab {\n  constructor(element) {\n    this._element = element\n  }\n\n  // Getters\n  static get VERSION() {\n    return VERSION\n  }\n\n  // Public\n  show() {\n    if (this._element.parentNode &&\n        this._element.parentNode.nodeType === Node.ELEMENT_NODE &&\n        $(this._element).hasClass(CLASS_NAME_ACTIVE) ||\n        $(this._element).hasClass(CLASS_NAME_DISABLED)) {\n      return\n    }\n\n    let target\n    let previous\n    const listElement = $(this._element).closest(SELECTOR_NAV_LIST_GROUP)[0]\n    const selector = Util.getSelectorFromElement(this._element)\n\n    if (listElement) {\n      const itemSelector = listElement.nodeName === 'UL' || listElement.nodeName === 'OL' ? SELECTOR_ACTIVE_UL : SELECTOR_ACTIVE\n      previous = $.makeArray($(listElement).find(itemSelector))\n      previous = previous[previous.length - 1]\n    }\n\n    const hideEvent = $.Event(EVENT_HIDE, {\n      relatedTarget: this._element\n    })\n\n    const showEvent = $.Event(EVENT_SHOW, {\n      relatedTarget: previous\n    })\n\n    if (previous) {\n      $(previous).trigger(hideEvent)\n    }\n\n    $(this._element).trigger(showEvent)\n\n    if (showEvent.isDefaultPrevented() ||\n        hideEvent.isDefaultPrevented()) {\n      return\n    }\n\n    if (selector) {\n      target = document.querySelector(selector)\n    }\n\n    this._activate(\n      this._element,\n      listElement\n    )\n\n    const complete = () => {\n      const hiddenEvent = $.Event(EVENT_HIDDEN, {\n        relatedTarget: this._element\n      })\n\n      const shownEvent = $.Event(EVENT_SHOWN, {\n        relatedTarget: previous\n      })\n\n      $(previous).trigger(hiddenEvent)\n      $(this._element).trigger(shownEvent)\n    }\n\n    if (target) {\n      this._activate(target, target.parentNode, complete)\n    } else {\n      complete()\n    }\n  }\n\n  dispose() {\n    $.removeData(this._element, DATA_KEY)\n    this._element = null\n  }\n\n  // Private\n  _activate(element, container, callback) {\n    const activeElements = container && (container.nodeName === 'UL' || container.nodeName === 'OL') ?\n      $(container).find(SELECTOR_ACTIVE_UL) :\n      $(container).children(SELECTOR_ACTIVE)\n\n    const active = activeElements[0]\n    const isTransitioning = callback && (active && $(active).hasClass(CLASS_NAME_FADE))\n    const complete = () => this._transitionComplete(\n      element,\n      active,\n      callback\n    )\n\n    if (active && isTransitioning) {\n      const transitionDuration = Util.getTransitionDurationFromElement(active)\n\n      $(active)\n        .removeClass(CLASS_NAME_SHOW)\n        .one(Util.TRANSITION_END, complete)\n        .emulateTransitionEnd(transitionDuration)\n    } else {\n      complete()\n    }\n  }\n\n  _transitionComplete(element, active, callback) {\n    if (active) {\n      $(active).removeClass(CLASS_NAME_ACTIVE)\n\n      const dropdownChild = $(active.parentNode).find(\n        SELECTOR_DROPDOWN_ACTIVE_CHILD\n      )[0]\n\n      if (dropdownChild) {\n        $(dropdownChild).removeClass(CLASS_NAME_ACTIVE)\n      }\n\n      if (active.getAttribute('role') === 'tab') {\n        active.setAttribute('aria-selected', false)\n      }\n    }\n\n    $(element).addClass(CLASS_NAME_ACTIVE)\n    if (element.getAttribute('role') === 'tab') {\n      element.setAttribute('aria-selected', true)\n    }\n\n    Util.reflow(element)\n\n    if (element.classList.contains(CLASS_NAME_FADE)) {\n      element.classList.add(CLASS_NAME_SHOW)\n    }\n\n    let parent = element.parentNode\n    if (parent && parent.nodeName === 'LI') {\n      parent = parent.parentNode\n    }\n\n    if (parent && $(parent).hasClass(CLASS_NAME_DROPDOWN_MENU)) {\n      const dropdownElement = $(element).closest(SELECTOR_DROPDOWN)[0]\n\n      if (dropdownElement) {\n        const dropdownToggleList = [].slice.call(dropdownElement.querySelectorAll(SELECTOR_DROPDOWN_TOGGLE))\n\n        $(dropdownToggleList).addClass(CLASS_NAME_ACTIVE)\n      }\n\n      element.setAttribute('aria-expanded', true)\n    }\n\n    if (callback) {\n      callback()\n    }\n  }\n\n  // Static\n  static _jQueryInterface(config) {\n    return this.each(function () {\n      const $this = $(this)\n      let data = $this.data(DATA_KEY)\n\n      if (!data) {\n        data = new Tab(this)\n        $this.data(DATA_KEY, data)\n      }\n\n      if (typeof config === 'string') {\n        if (typeof data[config] === 'undefined') {\n          throw new TypeError(`No method named \"${config}\"`)\n        }\n\n        data[config]()\n      }\n    })\n  }\n}\n\n/**\n * Data API implementation\n */\n\n$(document)\n  .on(EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n    event.preventDefault()\n    Tab._jQueryInterface.call($(this), 'show')\n  })\n\n/**\n * jQuery\n */\n\n$.fn[NAME] = Tab._jQueryInterface\n$.fn[NAME].Constructor = Tab\n$.fn[NAME].noConflict = () => {\n  $.fn[NAME] = JQUERY_NO_CONFLICT\n  return Tab._jQueryInterface\n}\n\nexport default Tab\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.1): toast.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * Constants\n */\n\nconst NAME = 'toast'\nconst VERSION = '4.6.1'\nconst DATA_KEY = 'bs.toast'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_HIDE = 'hide'\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_SHOWING = 'showing'\n\nconst EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\n\nconst SELECTOR_DATA_DISMISS = '[data-dismiss=\"toast\"]'\n\nconst Default = {\n  animation: true,\n  autohide: true,\n  delay: 500\n}\n\nconst DefaultType = {\n  animation: 'boolean',\n  autohide: 'boolean',\n  delay: 'number'\n}\n\n/**\n * Class definition\n */\n\nclass Toast {\n  constructor(element, config) {\n    this._element = element\n    this._config = this._getConfig(config)\n    this._timeout = null\n    this._setListeners()\n  }\n\n  // Getters\n  static get VERSION() {\n    return VERSION\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get Default() {\n    return Default\n  }\n\n  // Public\n  show() {\n    const showEvent = $.Event(EVENT_SHOW)\n\n    $(this._element).trigger(showEvent)\n    if (showEvent.isDefaultPrevented()) {\n      return\n    }\n\n    this._clearTimeout()\n\n    if (this._config.animation) {\n      this._element.classList.add(CLASS_NAME_FADE)\n    }\n\n    const complete = () => {\n      this._element.classList.remove(CLASS_NAME_SHOWING)\n      this._element.classList.add(CLASS_NAME_SHOW)\n\n      $(this._element).trigger(EVENT_SHOWN)\n\n      if (this._config.autohide) {\n        this._timeout = setTimeout(() => {\n          this.hide()\n        }, this._config.delay)\n      }\n    }\n\n    this._element.classList.remove(CLASS_NAME_HIDE)\n    Util.reflow(this._element)\n    this._element.classList.add(CLASS_NAME_SHOWING)\n    if (this._config.animation) {\n      const transitionDuration = Util.getTransitionDurationFromElement(this._element)\n\n      $(this._element)\n        .one(Util.TRANSITION_END, complete)\n        .emulateTransitionEnd(transitionDuration)\n    } else {\n      complete()\n    }\n  }\n\n  hide() {\n    if (!this._element.classList.contains(CLASS_NAME_SHOW)) {\n      return\n    }\n\n    const hideEvent = $.Event(EVENT_HIDE)\n\n    $(this._element).trigger(hideEvent)\n    if (hideEvent.isDefaultPrevented()) {\n      return\n    }\n\n    this._close()\n  }\n\n  dispose() {\n    this._clearTimeout()\n\n    if (this._element.classList.contains(CLASS_NAME_SHOW)) {\n      this._element.classList.remove(CLASS_NAME_SHOW)\n    }\n\n    $(this._element).off(EVENT_CLICK_DISMISS)\n\n    $.removeData(this._element, DATA_KEY)\n    this._element = null\n    this._config = null\n  }\n\n  // Private\n  _getConfig(config) {\n    config = {\n      ...Default,\n      ...$(this._element).data(),\n      ...(typeof config === 'object' && config ? config : {})\n    }\n\n    Util.typeCheckConfig(\n      NAME,\n      config,\n      this.constructor.DefaultType\n    )\n\n    return config\n  }\n\n  _setListeners() {\n    $(this._element).on(EVENT_CLICK_DISMISS, SELECTOR_DATA_DISMISS, () => this.hide())\n  }\n\n  _close() {\n    const complete = () => {\n      this._element.classList.add(CLASS_NAME_HIDE)\n      $(this._element).trigger(EVENT_HIDDEN)\n    }\n\n    this._element.classList.remove(CLASS_NAME_SHOW)\n    if (this._config.animation) {\n      const transitionDuration = Util.getTransitionDurationFromElement(this._element)\n\n      $(this._element)\n        .one(Util.TRANSITION_END, complete)\n        .emulateTransitionEnd(transitionDuration)\n    } else {\n      complete()\n    }\n  }\n\n  _clearTimeout() {\n    clearTimeout(this._timeout)\n    this._timeout = null\n  }\n\n  // Static\n  static _jQueryInterface(config) {\n    return this.each(function () {\n      const $element = $(this)\n      let data = $element.data(DATA_KEY)\n      const _config = typeof config === 'object' && config\n\n      if (!data) {\n        data = new Toast(this, _config)\n        $element.data(DATA_KEY, data)\n      }\n\n      if (typeof config === 'string') {\n        if (typeof data[config] === 'undefined') {\n          throw new TypeError(`No method named \"${config}\"`)\n        }\n\n        data[config](this)\n      }\n    })\n  }\n}\n\n/**\n * jQuery\n */\n\n$.fn[NAME] = Toast._jQueryInterface\n$.fn[NAME].Constructor = Toast\n$.fn[NAME].noConflict = () => {\n  $.fn[NAME] = JQUERY_NO_CONFLICT\n  return Toast._jQueryInterface\n}\n\nexport default Toast\n","/*!\n * Chart.js v2.9.4\n * https://www.chartjs.org\n * (c) 2020 Chart.js Contributors\n * Released under the MIT License\n */\n(function (global, factory) {\ntypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(function() { try { return require('moment'); } catch(e) { } }()) :\ntypeof define === 'function' && define.amd ? define(['require'], function(require) { return factory(function() { try { return require('moment'); } catch(e) { } }()); }) :\n(global = global || self, global.Chart = factory(global.moment));\n}(this, (function (moment) { 'use strict';\n\nmoment = moment && moment.hasOwnProperty('default') ? moment['default'] : moment;\n\nfunction createCommonjsModule(fn, module) {\n\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n}\n\nfunction getCjsExportFromNamespace (n) {\n\treturn n && n['default'] || n;\n}\n\nvar colorName = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\n\nvar conversions = createCommonjsModule(function (module) {\n/* MIT license */\n\n\n// NOTE: conversions should only return primitive values (i.e. arrays, or\n//       values that give correct `typeof` results).\n//       do not use box values types (i.e. Number(), String(), etc.)\n\nvar reverseKeywords = {};\nfor (var key in colorName) {\n\tif (colorName.hasOwnProperty(key)) {\n\t\treverseKeywords[colorName[key]] = key;\n\t}\n}\n\nvar convert = module.exports = {\n\trgb: {channels: 3, labels: 'rgb'},\n\thsl: {channels: 3, labels: 'hsl'},\n\thsv: {channels: 3, labels: 'hsv'},\n\thwb: {channels: 3, labels: 'hwb'},\n\tcmyk: {channels: 4, labels: 'cmyk'},\n\txyz: {channels: 3, labels: 'xyz'},\n\tlab: {channels: 3, labels: 'lab'},\n\tlch: {channels: 3, labels: 'lch'},\n\thex: {channels: 1, labels: ['hex']},\n\tkeyword: {channels: 1, labels: ['keyword']},\n\tansi16: {channels: 1, labels: ['ansi16']},\n\tansi256: {channels: 1, labels: ['ansi256']},\n\thcg: {channels: 3, labels: ['h', 'c', 'g']},\n\tapple: {channels: 3, labels: ['r16', 'g16', 'b16']},\n\tgray: {channels: 1, labels: ['gray']}\n};\n\n// hide .channels and .labels properties\nfor (var model in convert) {\n\tif (convert.hasOwnProperty(model)) {\n\t\tif (!('channels' in convert[model])) {\n\t\t\tthrow new Error('missing channels property: ' + model);\n\t\t}\n\n\t\tif (!('labels' in convert[model])) {\n\t\t\tthrow new Error('missing channel labels property: ' + model);\n\t\t}\n\n\t\tif (convert[model].labels.length !== convert[model].channels) {\n\t\t\tthrow new Error('channel and label counts mismatch: ' + model);\n\t\t}\n\n\t\tvar channels = convert[model].channels;\n\t\tvar labels = convert[model].labels;\n\t\tdelete convert[model].channels;\n\t\tdelete convert[model].labels;\n\t\tObject.defineProperty(convert[model], 'channels', {value: channels});\n\t\tObject.defineProperty(convert[model], 'labels', {value: labels});\n\t}\n}\n\nconvert.rgb.hsl = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar min = Math.min(r, g, b);\n\tvar max = Math.max(r, g, b);\n\tvar delta = max - min;\n\tvar h;\n\tvar s;\n\tvar l;\n\n\tif (max === min) {\n\t\th = 0;\n\t} else if (r === max) {\n\t\th = (g - b) / delta;\n\t} else if (g === max) {\n\t\th = 2 + (b - r) / delta;\n\t} else if (b === max) {\n\t\th = 4 + (r - g) / delta;\n\t}\n\n\th = Math.min(h * 60, 360);\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tl = (min + max) / 2;\n\n\tif (max === min) {\n\t\ts = 0;\n\t} else if (l <= 0.5) {\n\t\ts = delta / (max + min);\n\t} else {\n\t\ts = delta / (2 - max - min);\n\t}\n\n\treturn [h, s * 100, l * 100];\n};\n\nconvert.rgb.hsv = function (rgb) {\n\tvar rdif;\n\tvar gdif;\n\tvar bdif;\n\tvar h;\n\tvar s;\n\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar v = Math.max(r, g, b);\n\tvar diff = v - Math.min(r, g, b);\n\tvar diffc = function (c) {\n\t\treturn (v - c) / 6 / diff + 1 / 2;\n\t};\n\n\tif (diff === 0) {\n\t\th = s = 0;\n\t} else {\n\t\ts = diff / v;\n\t\trdif = diffc(r);\n\t\tgdif = diffc(g);\n\t\tbdif = diffc(b);\n\n\t\tif (r === v) {\n\t\t\th = bdif - gdif;\n\t\t} else if (g === v) {\n\t\t\th = (1 / 3) + rdif - bdif;\n\t\t} else if (b === v) {\n\t\t\th = (2 / 3) + gdif - rdif;\n\t\t}\n\t\tif (h < 0) {\n\t\t\th += 1;\n\t\t} else if (h > 1) {\n\t\t\th -= 1;\n\t\t}\n\t}\n\n\treturn [\n\t\th * 360,\n\t\ts * 100,\n\t\tv * 100\n\t];\n};\n\nconvert.rgb.hwb = function (rgb) {\n\tvar r = rgb[0];\n\tvar g = rgb[1];\n\tvar b = rgb[2];\n\tvar h = convert.rgb.hsl(rgb)[0];\n\tvar w = 1 / 255 * Math.min(r, Math.min(g, b));\n\n\tb = 1 - 1 / 255 * Math.max(r, Math.max(g, b));\n\n\treturn [h, w * 100, b * 100];\n};\n\nconvert.rgb.cmyk = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar c;\n\tvar m;\n\tvar y;\n\tvar k;\n\n\tk = Math.min(1 - r, 1 - g, 1 - b);\n\tc = (1 - r - k) / (1 - k) || 0;\n\tm = (1 - g - k) / (1 - k) || 0;\n\ty = (1 - b - k) / (1 - k) || 0;\n\n\treturn [c * 100, m * 100, y * 100, k * 100];\n};\n\n/**\n * See https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance\n * */\nfunction comparativeDistance(x, y) {\n\treturn (\n\t\tMath.pow(x[0] - y[0], 2) +\n\t\tMath.pow(x[1] - y[1], 2) +\n\t\tMath.pow(x[2] - y[2], 2)\n\t);\n}\n\nconvert.rgb.keyword = function (rgb) {\n\tvar reversed = reverseKeywords[rgb];\n\tif (reversed) {\n\t\treturn reversed;\n\t}\n\n\tvar currentClosestDistance = Infinity;\n\tvar currentClosestKeyword;\n\n\tfor (var keyword in colorName) {\n\t\tif (colorName.hasOwnProperty(keyword)) {\n\t\t\tvar value = colorName[keyword];\n\n\t\t\t// Compute comparative distance\n\t\t\tvar distance = comparativeDistance(rgb, value);\n\n\t\t\t// Check if its less, if so set as closest\n\t\t\tif (distance < currentClosestDistance) {\n\t\t\t\tcurrentClosestDistance = distance;\n\t\t\t\tcurrentClosestKeyword = keyword;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn currentClosestKeyword;\n};\n\nconvert.keyword.rgb = function (keyword) {\n\treturn colorName[keyword];\n};\n\nconvert.rgb.xyz = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\n\t// assume sRGB\n\tr = r > 0.04045 ? Math.pow(((r + 0.055) / 1.055), 2.4) : (r / 12.92);\n\tg = g > 0.04045 ? Math.pow(((g + 0.055) / 1.055), 2.4) : (g / 12.92);\n\tb = b > 0.04045 ? Math.pow(((b + 0.055) / 1.055), 2.4) : (b / 12.92);\n\n\tvar x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);\n\tvar y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);\n\tvar z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);\n\n\treturn [x * 100, y * 100, z * 100];\n};\n\nconvert.rgb.lab = function (rgb) {\n\tvar xyz = convert.rgb.xyz(rgb);\n\tvar x = xyz[0];\n\tvar y = xyz[1];\n\tvar z = xyz[2];\n\tvar l;\n\tvar a;\n\tvar b;\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);\n\n\tl = (116 * y) - 16;\n\ta = 500 * (x - y);\n\tb = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.hsl.rgb = function (hsl) {\n\tvar h = hsl[0] / 360;\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar t1;\n\tvar t2;\n\tvar t3;\n\tvar rgb;\n\tvar val;\n\n\tif (s === 0) {\n\t\tval = l * 255;\n\t\treturn [val, val, val];\n\t}\n\n\tif (l < 0.5) {\n\t\tt2 = l * (1 + s);\n\t} else {\n\t\tt2 = l + s - l * s;\n\t}\n\n\tt1 = 2 * l - t2;\n\n\trgb = [0, 0, 0];\n\tfor (var i = 0; i < 3; i++) {\n\t\tt3 = h + 1 / 3 * -(i - 1);\n\t\tif (t3 < 0) {\n\t\t\tt3++;\n\t\t}\n\t\tif (t3 > 1) {\n\t\t\tt3--;\n\t\t}\n\n\t\tif (6 * t3 < 1) {\n\t\t\tval = t1 + (t2 - t1) * 6 * t3;\n\t\t} else if (2 * t3 < 1) {\n\t\t\tval = t2;\n\t\t} else if (3 * t3 < 2) {\n\t\t\tval = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n\t\t} else {\n\t\t\tval = t1;\n\t\t}\n\n\t\trgb[i] = val * 255;\n\t}\n\n\treturn rgb;\n};\n\nconvert.hsl.hsv = function (hsl) {\n\tvar h = hsl[0];\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar smin = s;\n\tvar lmin = Math.max(l, 0.01);\n\tvar sv;\n\tvar v;\n\n\tl *= 2;\n\ts *= (l <= 1) ? l : 2 - l;\n\tsmin *= lmin <= 1 ? lmin : 2 - lmin;\n\tv = (l + s) / 2;\n\tsv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s);\n\n\treturn [h, sv * 100, v * 100];\n};\n\nconvert.hsv.rgb = function (hsv) {\n\tvar h = hsv[0] / 60;\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\tvar hi = Math.floor(h) % 6;\n\n\tvar f = h - Math.floor(h);\n\tvar p = 255 * v * (1 - s);\n\tvar q = 255 * v * (1 - (s * f));\n\tvar t = 255 * v * (1 - (s * (1 - f)));\n\tv *= 255;\n\n\tswitch (hi) {\n\t\tcase 0:\n\t\t\treturn [v, t, p];\n\t\tcase 1:\n\t\t\treturn [q, v, p];\n\t\tcase 2:\n\t\t\treturn [p, v, t];\n\t\tcase 3:\n\t\t\treturn [p, q, v];\n\t\tcase 4:\n\t\t\treturn [t, p, v];\n\t\tcase 5:\n\t\t\treturn [v, p, q];\n\t}\n};\n\nconvert.hsv.hsl = function (hsv) {\n\tvar h = hsv[0];\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\tvar vmin = Math.max(v, 0.01);\n\tvar lmin;\n\tvar sl;\n\tvar l;\n\n\tl = (2 - s) * v;\n\tlmin = (2 - s) * vmin;\n\tsl = s * vmin;\n\tsl /= (lmin <= 1) ? lmin : 2 - lmin;\n\tsl = sl || 0;\n\tl /= 2;\n\n\treturn [h, sl * 100, l * 100];\n};\n\n// http://dev.w3.org/csswg/css-color/#hwb-to-rgb\nconvert.hwb.rgb = function (hwb) {\n\tvar h = hwb[0] / 360;\n\tvar wh = hwb[1] / 100;\n\tvar bl = hwb[2] / 100;\n\tvar ratio = wh + bl;\n\tvar i;\n\tvar v;\n\tvar f;\n\tvar n;\n\n\t// wh + bl cant be > 1\n\tif (ratio > 1) {\n\t\twh /= ratio;\n\t\tbl /= ratio;\n\t}\n\n\ti = Math.floor(6 * h);\n\tv = 1 - bl;\n\tf = 6 * h - i;\n\n\tif ((i & 0x01) !== 0) {\n\t\tf = 1 - f;\n\t}\n\n\tn = wh + f * (v - wh); // linear interpolation\n\n\tvar r;\n\tvar g;\n\tvar b;\n\tswitch (i) {\n\t\tdefault:\n\t\tcase 6:\n\t\tcase 0: r = v; g = n; b = wh; break;\n\t\tcase 1: r = n; g = v; b = wh; break;\n\t\tcase 2: r = wh; g = v; b = n; break;\n\t\tcase 3: r = wh; g = n; b = v; break;\n\t\tcase 4: r = n; g = wh; b = v; break;\n\t\tcase 5: r = v; g = wh; b = n; break;\n\t}\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.cmyk.rgb = function (cmyk) {\n\tvar c = cmyk[0] / 100;\n\tvar m = cmyk[1] / 100;\n\tvar y = cmyk[2] / 100;\n\tvar k = cmyk[3] / 100;\n\tvar r;\n\tvar g;\n\tvar b;\n\n\tr = 1 - Math.min(1, c * (1 - k) + k);\n\tg = 1 - Math.min(1, m * (1 - k) + k);\n\tb = 1 - Math.min(1, y * (1 - k) + k);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.rgb = function (xyz) {\n\tvar x = xyz[0] / 100;\n\tvar y = xyz[1] / 100;\n\tvar z = xyz[2] / 100;\n\tvar r;\n\tvar g;\n\tvar b;\n\n\tr = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);\n\tg = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);\n\tb = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);\n\n\t// assume sRGB\n\tr = r > 0.0031308\n\t\t? ((1.055 * Math.pow(r, 1.0 / 2.4)) - 0.055)\n\t\t: r * 12.92;\n\n\tg = g > 0.0031308\n\t\t? ((1.055 * Math.pow(g, 1.0 / 2.4)) - 0.055)\n\t\t: g * 12.92;\n\n\tb = b > 0.0031308\n\t\t? ((1.055 * Math.pow(b, 1.0 / 2.4)) - 0.055)\n\t\t: b * 12.92;\n\n\tr = Math.min(Math.max(0, r), 1);\n\tg = Math.min(Math.max(0, g), 1);\n\tb = Math.min(Math.max(0, b), 1);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.lab = function (xyz) {\n\tvar x = xyz[0];\n\tvar y = xyz[1];\n\tvar z = xyz[2];\n\tvar l;\n\tvar a;\n\tvar b;\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);\n\n\tl = (116 * y) - 16;\n\ta = 500 * (x - y);\n\tb = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.lab.xyz = function (lab) {\n\tvar l = lab[0];\n\tvar a = lab[1];\n\tvar b = lab[2];\n\tvar x;\n\tvar y;\n\tvar z;\n\n\ty = (l + 16) / 116;\n\tx = a / 500 + y;\n\tz = y - b / 200;\n\n\tvar y2 = Math.pow(y, 3);\n\tvar x2 = Math.pow(x, 3);\n\tvar z2 = Math.pow(z, 3);\n\ty = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787;\n\tx = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787;\n\tz = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787;\n\n\tx *= 95.047;\n\ty *= 100;\n\tz *= 108.883;\n\n\treturn [x, y, z];\n};\n\nconvert.lab.lch = function (lab) {\n\tvar l = lab[0];\n\tvar a = lab[1];\n\tvar b = lab[2];\n\tvar hr;\n\tvar h;\n\tvar c;\n\n\thr = Math.atan2(b, a);\n\th = hr * 360 / 2 / Math.PI;\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tc = Math.sqrt(a * a + b * b);\n\n\treturn [l, c, h];\n};\n\nconvert.lch.lab = function (lch) {\n\tvar l = lch[0];\n\tvar c = lch[1];\n\tvar h = lch[2];\n\tvar a;\n\tvar b;\n\tvar hr;\n\n\thr = h / 360 * 2 * Math.PI;\n\ta = c * Math.cos(hr);\n\tb = c * Math.sin(hr);\n\n\treturn [l, a, b];\n};\n\nconvert.rgb.ansi16 = function (args) {\n\tvar r = args[0];\n\tvar g = args[1];\n\tvar b = args[2];\n\tvar value = 1 in arguments ? arguments[1] : convert.rgb.hsv(args)[2]; // hsv -> ansi16 optimization\n\n\tvalue = Math.round(value / 50);\n\n\tif (value === 0) {\n\t\treturn 30;\n\t}\n\n\tvar ansi = 30\n\t\t+ ((Math.round(b / 255) << 2)\n\t\t| (Math.round(g / 255) << 1)\n\t\t| Math.round(r / 255));\n\n\tif (value === 2) {\n\t\tansi += 60;\n\t}\n\n\treturn ansi;\n};\n\nconvert.hsv.ansi16 = function (args) {\n\t// optimization here; we already know the value and don't need to get\n\t// it converted for us.\n\treturn convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);\n};\n\nconvert.rgb.ansi256 = function (args) {\n\tvar r = args[0];\n\tvar g = args[1];\n\tvar b = args[2];\n\n\t// we use the extended greyscale palette here, with the exception of\n\t// black and white. normal palette only has 4 greyscale shades.\n\tif (r === g && g === b) {\n\t\tif (r < 8) {\n\t\t\treturn 16;\n\t\t}\n\n\t\tif (r > 248) {\n\t\t\treturn 231;\n\t\t}\n\n\t\treturn Math.round(((r - 8) / 247) * 24) + 232;\n\t}\n\n\tvar ansi = 16\n\t\t+ (36 * Math.round(r / 255 * 5))\n\t\t+ (6 * Math.round(g / 255 * 5))\n\t\t+ Math.round(b / 255 * 5);\n\n\treturn ansi;\n};\n\nconvert.ansi16.rgb = function (args) {\n\tvar color = args % 10;\n\n\t// handle greyscale\n\tif (color === 0 || color === 7) {\n\t\tif (args > 50) {\n\t\t\tcolor += 3.5;\n\t\t}\n\n\t\tcolor = color / 10.5 * 255;\n\n\t\treturn [color, color, color];\n\t}\n\n\tvar mult = (~~(args > 50) + 1) * 0.5;\n\tvar r = ((color & 1) * mult) * 255;\n\tvar g = (((color >> 1) & 1) * mult) * 255;\n\tvar b = (((color >> 2) & 1) * mult) * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.ansi256.rgb = function (args) {\n\t// handle greyscale\n\tif (args >= 232) {\n\t\tvar c = (args - 232) * 10 + 8;\n\t\treturn [c, c, c];\n\t}\n\n\targs -= 16;\n\n\tvar rem;\n\tvar r = Math.floor(args / 36) / 5 * 255;\n\tvar g = Math.floor((rem = args % 36) / 6) / 5 * 255;\n\tvar b = (rem % 6) / 5 * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hex = function (args) {\n\tvar integer = ((Math.round(args[0]) & 0xFF) << 16)\n\t\t+ ((Math.round(args[1]) & 0xFF) << 8)\n\t\t+ (Math.round(args[2]) & 0xFF);\n\n\tvar string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.hex.rgb = function (args) {\n\tvar match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);\n\tif (!match) {\n\t\treturn [0, 0, 0];\n\t}\n\n\tvar colorString = match[0];\n\n\tif (match[0].length === 3) {\n\t\tcolorString = colorString.split('').map(function (char) {\n\t\t\treturn char + char;\n\t\t}).join('');\n\t}\n\n\tvar integer = parseInt(colorString, 16);\n\tvar r = (integer >> 16) & 0xFF;\n\tvar g = (integer >> 8) & 0xFF;\n\tvar b = integer & 0xFF;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hcg = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar max = Math.max(Math.max(r, g), b);\n\tvar min = Math.min(Math.min(r, g), b);\n\tvar chroma = (max - min);\n\tvar grayscale;\n\tvar hue;\n\n\tif (chroma < 1) {\n\t\tgrayscale = min / (1 - chroma);\n\t} else {\n\t\tgrayscale = 0;\n\t}\n\n\tif (chroma <= 0) {\n\t\thue = 0;\n\t} else\n\tif (max === r) {\n\t\thue = ((g - b) / chroma) % 6;\n\t} else\n\tif (max === g) {\n\t\thue = 2 + (b - r) / chroma;\n\t} else {\n\t\thue = 4 + (r - g) / chroma + 4;\n\t}\n\n\thue /= 6;\n\thue %= 1;\n\n\treturn [hue * 360, chroma * 100, grayscale * 100];\n};\n\nconvert.hsl.hcg = function (hsl) {\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar c = 1;\n\tvar f = 0;\n\n\tif (l < 0.5) {\n\t\tc = 2.0 * s * l;\n\t} else {\n\t\tc = 2.0 * s * (1.0 - l);\n\t}\n\n\tif (c < 1.0) {\n\t\tf = (l - 0.5 * c) / (1.0 - c);\n\t}\n\n\treturn [hsl[0], c * 100, f * 100];\n};\n\nconvert.hsv.hcg = function (hsv) {\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\n\tvar c = s * v;\n\tvar f = 0;\n\n\tif (c < 1.0) {\n\t\tf = (v - c) / (1 - c);\n\t}\n\n\treturn [hsv[0], c * 100, f * 100];\n};\n\nconvert.hcg.rgb = function (hcg) {\n\tvar h = hcg[0] / 360;\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tif (c === 0.0) {\n\t\treturn [g * 255, g * 255, g * 255];\n\t}\n\n\tvar pure = [0, 0, 0];\n\tvar hi = (h % 1) * 6;\n\tvar v = hi % 1;\n\tvar w = 1 - v;\n\tvar mg = 0;\n\n\tswitch (Math.floor(hi)) {\n\t\tcase 0:\n\t\t\tpure[0] = 1; pure[1] = v; pure[2] = 0; break;\n\t\tcase 1:\n\t\t\tpure[0] = w; pure[1] = 1; pure[2] = 0; break;\n\t\tcase 2:\n\t\t\tpure[0] = 0; pure[1] = 1; pure[2] = v; break;\n\t\tcase 3:\n\t\t\tpure[0] = 0; pure[1] = w; pure[2] = 1; break;\n\t\tcase 4:\n\t\t\tpure[0] = v; pure[1] = 0; pure[2] = 1; break;\n\t\tdefault:\n\t\t\tpure[0] = 1; pure[1] = 0; pure[2] = w;\n\t}\n\n\tmg = (1.0 - c) * g;\n\n\treturn [\n\t\t(c * pure[0] + mg) * 255,\n\t\t(c * pure[1] + mg) * 255,\n\t\t(c * pure[2] + mg) * 255\n\t];\n};\n\nconvert.hcg.hsv = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tvar v = c + g * (1.0 - c);\n\tvar f = 0;\n\n\tif (v > 0.0) {\n\t\tf = c / v;\n\t}\n\n\treturn [hcg[0], f * 100, v * 100];\n};\n\nconvert.hcg.hsl = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tvar l = g * (1.0 - c) + 0.5 * c;\n\tvar s = 0;\n\n\tif (l > 0.0 && l < 0.5) {\n\t\ts = c / (2 * l);\n\t} else\n\tif (l >= 0.5 && l < 1.0) {\n\t\ts = c / (2 * (1 - l));\n\t}\n\n\treturn [hcg[0], s * 100, l * 100];\n};\n\nconvert.hcg.hwb = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\tvar v = c + g * (1.0 - c);\n\treturn [hcg[0], (v - c) * 100, (1 - v) * 100];\n};\n\nconvert.hwb.hcg = function (hwb) {\n\tvar w = hwb[1] / 100;\n\tvar b = hwb[2] / 100;\n\tvar v = 1 - b;\n\tvar c = v - w;\n\tvar g = 0;\n\n\tif (c < 1) {\n\t\tg = (v - c) / (1 - c);\n\t}\n\n\treturn [hwb[0], c * 100, g * 100];\n};\n\nconvert.apple.rgb = function (apple) {\n\treturn [(apple[0] / 65535) * 255, (apple[1] / 65535) * 255, (apple[2] / 65535) * 255];\n};\n\nconvert.rgb.apple = function (rgb) {\n\treturn [(rgb[0] / 255) * 65535, (rgb[1] / 255) * 65535, (rgb[2] / 255) * 65535];\n};\n\nconvert.gray.rgb = function (args) {\n\treturn [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];\n};\n\nconvert.gray.hsl = convert.gray.hsv = function (args) {\n\treturn [0, 0, args[0]];\n};\n\nconvert.gray.hwb = function (gray) {\n\treturn [0, 100, gray[0]];\n};\n\nconvert.gray.cmyk = function (gray) {\n\treturn [0, 0, 0, gray[0]];\n};\n\nconvert.gray.lab = function (gray) {\n\treturn [gray[0], 0, 0];\n};\n\nconvert.gray.hex = function (gray) {\n\tvar val = Math.round(gray[0] / 100 * 255) & 0xFF;\n\tvar integer = (val << 16) + (val << 8) + val;\n\n\tvar string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.rgb.gray = function (rgb) {\n\tvar val = (rgb[0] + rgb[1] + rgb[2]) / 3;\n\treturn [val / 255 * 100];\n};\n});\nvar conversions_1 = conversions.rgb;\nvar conversions_2 = conversions.hsl;\nvar conversions_3 = conversions.hsv;\nvar conversions_4 = conversions.hwb;\nvar conversions_5 = conversions.cmyk;\nvar conversions_6 = conversions.xyz;\nvar conversions_7 = conversions.lab;\nvar conversions_8 = conversions.lch;\nvar conversions_9 = conversions.hex;\nvar conversions_10 = conversions.keyword;\nvar conversions_11 = conversions.ansi16;\nvar conversions_12 = conversions.ansi256;\nvar conversions_13 = conversions.hcg;\nvar conversions_14 = conversions.apple;\nvar conversions_15 = conversions.gray;\n\n/*\n\tthis function routes a model to all other models.\n\n\tall functions that are routed have a property `.conversion` attached\n\tto the returned synthetic function. This property is an array\n\tof strings, each with the steps in between the 'from' and 'to'\n\tcolor models (inclusive).\n\n\tconversions that are not possible simply are not included.\n*/\n\nfunction buildGraph() {\n\tvar graph = {};\n\t// https://jsperf.com/object-keys-vs-for-in-with-closure/3\n\tvar models = Object.keys(conversions);\n\n\tfor (var len = models.length, i = 0; i < len; i++) {\n\t\tgraph[models[i]] = {\n\t\t\t// http://jsperf.com/1-vs-infinity\n\t\t\t// micro-opt, but this is simple.\n\t\t\tdistance: -1,\n\t\t\tparent: null\n\t\t};\n\t}\n\n\treturn graph;\n}\n\n// https://en.wikipedia.org/wiki/Breadth-first_search\nfunction deriveBFS(fromModel) {\n\tvar graph = buildGraph();\n\tvar queue = [fromModel]; // unshift -> queue -> pop\n\n\tgraph[fromModel].distance = 0;\n\n\twhile (queue.length) {\n\t\tvar current = queue.pop();\n\t\tvar adjacents = Object.keys(conversions[current]);\n\n\t\tfor (var len = adjacents.length, i = 0; i < len; i++) {\n\t\t\tvar adjacent = adjacents[i];\n\t\t\tvar node = graph[adjacent];\n\n\t\t\tif (node.distance === -1) {\n\t\t\t\tnode.distance = graph[current].distance + 1;\n\t\t\t\tnode.parent = current;\n\t\t\t\tqueue.unshift(adjacent);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn graph;\n}\n\nfunction link(from, to) {\n\treturn function (args) {\n\t\treturn to(from(args));\n\t};\n}\n\nfunction wrapConversion(toModel, graph) {\n\tvar path = [graph[toModel].parent, toModel];\n\tvar fn = conversions[graph[toModel].parent][toModel];\n\n\tvar cur = graph[toModel].parent;\n\twhile (graph[cur].parent) {\n\t\tpath.unshift(graph[cur].parent);\n\t\tfn = link(conversions[graph[cur].parent][cur], fn);\n\t\tcur = graph[cur].parent;\n\t}\n\n\tfn.conversion = path;\n\treturn fn;\n}\n\nvar route = function (fromModel) {\n\tvar graph = deriveBFS(fromModel);\n\tvar conversion = {};\n\n\tvar models = Object.keys(graph);\n\tfor (var len = models.length, i = 0; i < len; i++) {\n\t\tvar toModel = models[i];\n\t\tvar node = graph[toModel];\n\n\t\tif (node.parent === null) {\n\t\t\t// no possible conversion, or this node is the source model.\n\t\t\tcontinue;\n\t\t}\n\n\t\tconversion[toModel] = wrapConversion(toModel, graph);\n\t}\n\n\treturn conversion;\n};\n\nvar convert = {};\n\nvar models = Object.keys(conversions);\n\nfunction wrapRaw(fn) {\n\tvar wrappedFn = function (args) {\n\t\tif (args === undefined || args === null) {\n\t\t\treturn args;\n\t\t}\n\n\t\tif (arguments.length > 1) {\n\t\t\targs = Array.prototype.slice.call(arguments);\n\t\t}\n\n\t\treturn fn(args);\n\t};\n\n\t// preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nfunction wrapRounded(fn) {\n\tvar wrappedFn = function (args) {\n\t\tif (args === undefined || args === null) {\n\t\t\treturn args;\n\t\t}\n\n\t\tif (arguments.length > 1) {\n\t\t\targs = Array.prototype.slice.call(arguments);\n\t\t}\n\n\t\tvar result = fn(args);\n\n\t\t// we're assuming the result is an array here.\n\t\t// see notice in conversions.js; don't use box types\n\t\t// in conversion functions.\n\t\tif (typeof result === 'object') {\n\t\t\tfor (var len = result.length, i = 0; i < len; i++) {\n\t\t\t\tresult[i] = Math.round(result[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t};\n\n\t// preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nmodels.forEach(function (fromModel) {\n\tconvert[fromModel] = {};\n\n\tObject.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels});\n\tObject.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels});\n\n\tvar routes = route(fromModel);\n\tvar routeModels = Object.keys(routes);\n\n\trouteModels.forEach(function (toModel) {\n\t\tvar fn = routes[toModel];\n\n\t\tconvert[fromModel][toModel] = wrapRounded(fn);\n\t\tconvert[fromModel][toModel].raw = wrapRaw(fn);\n\t});\n});\n\nvar colorConvert = convert;\n\nvar colorName$1 = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\n\n/* MIT license */\n\n\nvar colorString = {\n   getRgba: getRgba,\n   getHsla: getHsla,\n   getRgb: getRgb,\n   getHsl: getHsl,\n   getHwb: getHwb,\n   getAlpha: getAlpha,\n\n   hexString: hexString,\n   rgbString: rgbString,\n   rgbaString: rgbaString,\n   percentString: percentString,\n   percentaString: percentaString,\n   hslString: hslString,\n   hslaString: hslaString,\n   hwbString: hwbString,\n   keyword: keyword\n};\n\nfunction getRgba(string) {\n   if (!string) {\n      return;\n   }\n   var abbr =  /^#([a-fA-F0-9]{3,4})$/i,\n       hex =  /^#([a-fA-F0-9]{6}([a-fA-F0-9]{2})?)$/i,\n       rgba = /^rgba?\\(\\s*([+-]?\\d+)\\s*,\\s*([+-]?\\d+)\\s*,\\s*([+-]?\\d+)\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)$/i,\n       per = /^rgba?\\(\\s*([+-]?[\\d\\.]+)\\%\\s*,\\s*([+-]?[\\d\\.]+)\\%\\s*,\\s*([+-]?[\\d\\.]+)\\%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)$/i,\n       keyword = /(\\w+)/;\n\n   var rgb = [0, 0, 0],\n       a = 1,\n       match = string.match(abbr),\n       hexAlpha = \"\";\n   if (match) {\n      match = match[1];\n      hexAlpha = match[3];\n      for (var i = 0; i < rgb.length; i++) {\n         rgb[i] = parseInt(match[i] + match[i], 16);\n      }\n      if (hexAlpha) {\n         a = Math.round((parseInt(hexAlpha + hexAlpha, 16) / 255) * 100) / 100;\n      }\n   }\n   else if (match = string.match(hex)) {\n      hexAlpha = match[2];\n      match = match[1];\n      for (var i = 0; i < rgb.length; i++) {\n         rgb[i] = parseInt(match.slice(i * 2, i * 2 + 2), 16);\n      }\n      if (hexAlpha) {\n         a = Math.round((parseInt(hexAlpha, 16) / 255) * 100) / 100;\n      }\n   }\n   else if (match = string.match(rgba)) {\n      for (var i = 0; i < rgb.length; i++) {\n         rgb[i] = parseInt(match[i + 1]);\n      }\n      a = parseFloat(match[4]);\n   }\n   else if (match = string.match(per)) {\n      for (var i = 0; i < rgb.length; i++) {\n         rgb[i] = Math.round(parseFloat(match[i + 1]) * 2.55);\n      }\n      a = parseFloat(match[4]);\n   }\n   else if (match = string.match(keyword)) {\n      if (match[1] == \"transparent\") {\n         return [0, 0, 0, 0];\n      }\n      rgb = colorName$1[match[1]];\n      if (!rgb) {\n         return;\n      }\n   }\n\n   for (var i = 0; i < rgb.length; i++) {\n      rgb[i] = scale(rgb[i], 0, 255);\n   }\n   if (!a && a != 0) {\n      a = 1;\n   }\n   else {\n      a = scale(a, 0, 1);\n   }\n   rgb[3] = a;\n   return rgb;\n}\n\nfunction getHsla(string) {\n   if (!string) {\n      return;\n   }\n   var hsl = /^hsla?\\(\\s*([+-]?\\d+)(?:deg)?\\s*,\\s*([+-]?[\\d\\.]+)%\\s*,\\s*([+-]?[\\d\\.]+)%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)/;\n   var match = string.match(hsl);\n   if (match) {\n      var alpha = parseFloat(match[4]);\n      var h = scale(parseInt(match[1]), 0, 360),\n          s = scale(parseFloat(match[2]), 0, 100),\n          l = scale(parseFloat(match[3]), 0, 100),\n          a = scale(isNaN(alpha) ? 1 : alpha, 0, 1);\n      return [h, s, l, a];\n   }\n}\n\nfunction getHwb(string) {\n   if (!string) {\n      return;\n   }\n   var hwb = /^hwb\\(\\s*([+-]?\\d+)(?:deg)?\\s*,\\s*([+-]?[\\d\\.]+)%\\s*,\\s*([+-]?[\\d\\.]+)%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)/;\n   var match = string.match(hwb);\n   if (match) {\n    var alpha = parseFloat(match[4]);\n      var h = scale(parseInt(match[1]), 0, 360),\n          w = scale(parseFloat(match[2]), 0, 100),\n          b = scale(parseFloat(match[3]), 0, 100),\n          a = scale(isNaN(alpha) ? 1 : alpha, 0, 1);\n      return [h, w, b, a];\n   }\n}\n\nfunction getRgb(string) {\n   var rgba = getRgba(string);\n   return rgba && rgba.slice(0, 3);\n}\n\nfunction getHsl(string) {\n  var hsla = getHsla(string);\n  return hsla && hsla.slice(0, 3);\n}\n\nfunction getAlpha(string) {\n   var vals = getRgba(string);\n   if (vals) {\n      return vals[3];\n   }\n   else if (vals = getHsla(string)) {\n      return vals[3];\n   }\n   else if (vals = getHwb(string)) {\n      return vals[3];\n   }\n}\n\n// generators\nfunction hexString(rgba, a) {\n   var a = (a !== undefined && rgba.length === 3) ? a : rgba[3];\n   return \"#\" + hexDouble(rgba[0]) \n              + hexDouble(rgba[1])\n              + hexDouble(rgba[2])\n              + (\n                 (a >= 0 && a < 1)\n                 ? hexDouble(Math.round(a * 255))\n                 : \"\"\n              );\n}\n\nfunction rgbString(rgba, alpha) {\n   if (alpha < 1 || (rgba[3] && rgba[3] < 1)) {\n      return rgbaString(rgba, alpha);\n   }\n   return \"rgb(\" + rgba[0] + \", \" + rgba[1] + \", \" + rgba[2] + \")\";\n}\n\nfunction rgbaString(rgba, alpha) {\n   if (alpha === undefined) {\n      alpha = (rgba[3] !== undefined ? rgba[3] : 1);\n   }\n   return \"rgba(\" + rgba[0] + \", \" + rgba[1] + \", \" + rgba[2]\n           + \", \" + alpha + \")\";\n}\n\nfunction percentString(rgba, alpha) {\n   if (alpha < 1 || (rgba[3] && rgba[3] < 1)) {\n      return percentaString(rgba, alpha);\n   }\n   var r = Math.round(rgba[0]/255 * 100),\n       g = Math.round(rgba[1]/255 * 100),\n       b = Math.round(rgba[2]/255 * 100);\n\n   return \"rgb(\" + r + \"%, \" + g + \"%, \" + b + \"%)\";\n}\n\nfunction percentaString(rgba, alpha) {\n   var r = Math.round(rgba[0]/255 * 100),\n       g = Math.round(rgba[1]/255 * 100),\n       b = Math.round(rgba[2]/255 * 100);\n   return \"rgba(\" + r + \"%, \" + g + \"%, \" + b + \"%, \" + (alpha || rgba[3] || 1) + \")\";\n}\n\nfunction hslString(hsla, alpha) {\n   if (alpha < 1 || (hsla[3] && hsla[3] < 1)) {\n      return hslaString(hsla, alpha);\n   }\n   return \"hsl(\" + hsla[0] + \", \" + hsla[1] + \"%, \" + hsla[2] + \"%)\";\n}\n\nfunction hslaString(hsla, alpha) {\n   if (alpha === undefined) {\n      alpha = (hsla[3] !== undefined ? hsla[3] : 1);\n   }\n   return \"hsla(\" + hsla[0] + \", \" + hsla[1] + \"%, \" + hsla[2] + \"%, \"\n           + alpha + \")\";\n}\n\n// hwb is a bit different than rgb(a) & hsl(a) since there is no alpha specific syntax\n// (hwb have alpha optional & 1 is default value)\nfunction hwbString(hwb, alpha) {\n   if (alpha === undefined) {\n      alpha = (hwb[3] !== undefined ? hwb[3] : 1);\n   }\n   return \"hwb(\" + hwb[0] + \", \" + hwb[1] + \"%, \" + hwb[2] + \"%\"\n           + (alpha !== undefined && alpha !== 1 ? \", \" + alpha : \"\") + \")\";\n}\n\nfunction keyword(rgb) {\n  return reverseNames[rgb.slice(0, 3)];\n}\n\n// helpers\nfunction scale(num, min, max) {\n   return Math.min(Math.max(min, num), max);\n}\n\nfunction hexDouble(num) {\n  var str = num.toString(16).toUpperCase();\n  return (str.length < 2) ? \"0\" + str : str;\n}\n\n\n//create a list of reverse color names\nvar reverseNames = {};\nfor (var name in colorName$1) {\n   reverseNames[colorName$1[name]] = name;\n}\n\n/* MIT license */\n\n\n\nvar Color = function (obj) {\n\tif (obj instanceof Color) {\n\t\treturn obj;\n\t}\n\tif (!(this instanceof Color)) {\n\t\treturn new Color(obj);\n\t}\n\n\tthis.valid = false;\n\tthis.values = {\n\t\trgb: [0, 0, 0],\n\t\thsl: [0, 0, 0],\n\t\thsv: [0, 0, 0],\n\t\thwb: [0, 0, 0],\n\t\tcmyk: [0, 0, 0, 0],\n\t\talpha: 1\n\t};\n\n\t// parse Color() argument\n\tvar vals;\n\tif (typeof obj === 'string') {\n\t\tvals = colorString.getRgba(obj);\n\t\tif (vals) {\n\t\t\tthis.setValues('rgb', vals);\n\t\t} else if (vals = colorString.getHsla(obj)) {\n\t\t\tthis.setValues('hsl', vals);\n\t\t} else if (vals = colorString.getHwb(obj)) {\n\t\t\tthis.setValues('hwb', vals);\n\t\t}\n\t} else if (typeof obj === 'object') {\n\t\tvals = obj;\n\t\tif (vals.r !== undefined || vals.red !== undefined) {\n\t\t\tthis.setValues('rgb', vals);\n\t\t} else if (vals.l !== undefined || vals.lightness !== undefined) {\n\t\t\tthis.setValues('hsl', vals);\n\t\t} else if (vals.v !== undefined || vals.value !== undefined) {\n\t\t\tthis.setValues('hsv', vals);\n\t\t} else if (vals.w !== undefined || vals.whiteness !== undefined) {\n\t\t\tthis.setValues('hwb', vals);\n\t\t} else if (vals.c !== undefined || vals.cyan !== undefined) {\n\t\t\tthis.setValues('cmyk', vals);\n\t\t}\n\t}\n};\n\nColor.prototype = {\n\tisValid: function () {\n\t\treturn this.valid;\n\t},\n\trgb: function () {\n\t\treturn this.setSpace('rgb', arguments);\n\t},\n\thsl: function () {\n\t\treturn this.setSpace('hsl', arguments);\n\t},\n\thsv: function () {\n\t\treturn this.setSpace('hsv', arguments);\n\t},\n\thwb: function () {\n\t\treturn this.setSpace('hwb', arguments);\n\t},\n\tcmyk: function () {\n\t\treturn this.setSpace('cmyk', arguments);\n\t},\n\n\trgbArray: function () {\n\t\treturn this.values.rgb;\n\t},\n\thslArray: function () {\n\t\treturn this.values.hsl;\n\t},\n\thsvArray: function () {\n\t\treturn this.values.hsv;\n\t},\n\thwbArray: function () {\n\t\tvar values = this.values;\n\t\tif (values.alpha !== 1) {\n\t\t\treturn values.hwb.concat([values.alpha]);\n\t\t}\n\t\treturn values.hwb;\n\t},\n\tcmykArray: function () {\n\t\treturn this.values.cmyk;\n\t},\n\trgbaArray: function () {\n\t\tvar values = this.values;\n\t\treturn values.rgb.concat([values.alpha]);\n\t},\n\thslaArray: function () {\n\t\tvar values = this.values;\n\t\treturn values.hsl.concat([values.alpha]);\n\t},\n\talpha: function (val) {\n\t\tif (val === undefined) {\n\t\t\treturn this.values.alpha;\n\t\t}\n\t\tthis.setValues('alpha', val);\n\t\treturn this;\n\t},\n\n\tred: function (val) {\n\t\treturn this.setChannel('rgb', 0, val);\n\t},\n\tgreen: function (val) {\n\t\treturn this.setChannel('rgb', 1, val);\n\t},\n\tblue: function (val) {\n\t\treturn this.setChannel('rgb', 2, val);\n\t},\n\thue: function (val) {\n\t\tif (val) {\n\t\t\tval %= 360;\n\t\t\tval = val < 0 ? 360 + val : val;\n\t\t}\n\t\treturn this.setChannel('hsl', 0, val);\n\t},\n\tsaturation: function (val) {\n\t\treturn this.setChannel('hsl', 1, val);\n\t},\n\tlightness: function (val) {\n\t\treturn this.setChannel('hsl', 2, val);\n\t},\n\tsaturationv: function (val) {\n\t\treturn this.setChannel('hsv', 1, val);\n\t},\n\twhiteness: function (val) {\n\t\treturn this.setChannel('hwb', 1, val);\n\t},\n\tblackness: function (val) {\n\t\treturn this.setChannel('hwb', 2, val);\n\t},\n\tvalue: function (val) {\n\t\treturn this.setChannel('hsv', 2, val);\n\t},\n\tcyan: function (val) {\n\t\treturn this.setChannel('cmyk', 0, val);\n\t},\n\tmagenta: function (val) {\n\t\treturn this.setChannel('cmyk', 1, val);\n\t},\n\tyellow: function (val) {\n\t\treturn this.setChannel('cmyk', 2, val);\n\t},\n\tblack: function (val) {\n\t\treturn this.setChannel('cmyk', 3, val);\n\t},\n\n\thexString: function () {\n\t\treturn colorString.hexString(this.values.rgb);\n\t},\n\trgbString: function () {\n\t\treturn colorString.rgbString(this.values.rgb, this.values.alpha);\n\t},\n\trgbaString: function () {\n\t\treturn colorString.rgbaString(this.values.rgb, this.values.alpha);\n\t},\n\tpercentString: function () {\n\t\treturn colorString.percentString(this.values.rgb, this.values.alpha);\n\t},\n\thslString: function () {\n\t\treturn colorString.hslString(this.values.hsl, this.values.alpha);\n\t},\n\thslaString: function () {\n\t\treturn colorString.hslaString(this.values.hsl, this.values.alpha);\n\t},\n\thwbString: function () {\n\t\treturn colorString.hwbString(this.values.hwb, this.values.alpha);\n\t},\n\tkeyword: function () {\n\t\treturn colorString.keyword(this.values.rgb, this.values.alpha);\n\t},\n\n\trgbNumber: function () {\n\t\tvar rgb = this.values.rgb;\n\t\treturn (rgb[0] << 16) | (rgb[1] << 8) | rgb[2];\n\t},\n\n\tluminosity: function () {\n\t\t// http://www.w3.org/TR/WCAG20/#relativeluminancedef\n\t\tvar rgb = this.values.rgb;\n\t\tvar lum = [];\n\t\tfor (var i = 0; i < rgb.length; i++) {\n\t\t\tvar chan = rgb[i] / 255;\n\t\t\tlum[i] = (chan <= 0.03928) ? chan / 12.92 : Math.pow(((chan + 0.055) / 1.055), 2.4);\n\t\t}\n\t\treturn 0.2126 * lum[0] + 0.7152 * lum[1] + 0.0722 * lum[2];\n\t},\n\n\tcontrast: function (color2) {\n\t\t// http://www.w3.org/TR/WCAG20/#contrast-ratiodef\n\t\tvar lum1 = this.luminosity();\n\t\tvar lum2 = color2.luminosity();\n\t\tif (lum1 > lum2) {\n\t\t\treturn (lum1 + 0.05) / (lum2 + 0.05);\n\t\t}\n\t\treturn (lum2 + 0.05) / (lum1 + 0.05);\n\t},\n\n\tlevel: function (color2) {\n\t\tvar contrastRatio = this.contrast(color2);\n\t\tif (contrastRatio >= 7.1) {\n\t\t\treturn 'AAA';\n\t\t}\n\n\t\treturn (contrastRatio >= 4.5) ? 'AA' : '';\n\t},\n\n\tdark: function () {\n\t\t// YIQ equation from http://24ways.org/2010/calculating-color-contrast\n\t\tvar rgb = this.values.rgb;\n\t\tvar yiq = (rgb[0] * 299 + rgb[1] * 587 + rgb[2] * 114) / 1000;\n\t\treturn yiq < 128;\n\t},\n\n\tlight: function () {\n\t\treturn !this.dark();\n\t},\n\n\tnegate: function () {\n\t\tvar rgb = [];\n\t\tfor (var i = 0; i < 3; i++) {\n\t\t\trgb[i] = 255 - this.values.rgb[i];\n\t\t}\n\t\tthis.setValues('rgb', rgb);\n\t\treturn this;\n\t},\n\n\tlighten: function (ratio) {\n\t\tvar hsl = this.values.hsl;\n\t\thsl[2] += hsl[2] * ratio;\n\t\tthis.setValues('hsl', hsl);\n\t\treturn this;\n\t},\n\n\tdarken: function (ratio) {\n\t\tvar hsl = this.values.hsl;\n\t\thsl[2] -= hsl[2] * ratio;\n\t\tthis.setValues('hsl', hsl);\n\t\treturn this;\n\t},\n\n\tsaturate: function (ratio) {\n\t\tvar hsl = this.values.hsl;\n\t\thsl[1] += hsl[1] * ratio;\n\t\tthis.setValues('hsl', hsl);\n\t\treturn this;\n\t},\n\n\tdesaturate: function (ratio) {\n\t\tvar hsl = this.values.hsl;\n\t\thsl[1] -= hsl[1] * ratio;\n\t\tthis.setValues('hsl', hsl);\n\t\treturn this;\n\t},\n\n\twhiten: function (ratio) {\n\t\tvar hwb = this.values.hwb;\n\t\thwb[1] += hwb[1] * ratio;\n\t\tthis.setValues('hwb', hwb);\n\t\treturn this;\n\t},\n\n\tblacken: function (ratio) {\n\t\tvar hwb = this.values.hwb;\n\t\thwb[2] += hwb[2] * ratio;\n\t\tthis.setValues('hwb', hwb);\n\t\treturn this;\n\t},\n\n\tgreyscale: function () {\n\t\tvar rgb = this.values.rgb;\n\t\t// http://en.wikipedia.org/wiki/Grayscale#Converting_color_to_grayscale\n\t\tvar val = rgb[0] * 0.3 + rgb[1] * 0.59 + rgb[2] * 0.11;\n\t\tthis.setValues('rgb', [val, val, val]);\n\t\treturn this;\n\t},\n\n\tclearer: function (ratio) {\n\t\tvar alpha = this.values.alpha;\n\t\tthis.setValues('alpha', alpha - (alpha * ratio));\n\t\treturn this;\n\t},\n\n\topaquer: function (ratio) {\n\t\tvar alpha = this.values.alpha;\n\t\tthis.setValues('alpha', alpha + (alpha * ratio));\n\t\treturn this;\n\t},\n\n\trotate: function (degrees) {\n\t\tvar hsl = this.values.hsl;\n\t\tvar hue = (hsl[0] + degrees) % 360;\n\t\thsl[0] = hue < 0 ? 360 + hue : hue;\n\t\tthis.setValues('hsl', hsl);\n\t\treturn this;\n\t},\n\n\t/**\n\t * Ported from sass implementation in C\n\t * https://github.com/sass/libsass/blob/0e6b4a2850092356aa3ece07c6b249f0221caced/functions.cpp#L209\n\t */\n\tmix: function (mixinColor, weight) {\n\t\tvar color1 = this;\n\t\tvar color2 = mixinColor;\n\t\tvar p = weight === undefined ? 0.5 : weight;\n\n\t\tvar w = 2 * p - 1;\n\t\tvar a = color1.alpha() - color2.alpha();\n\n\t\tvar w1 = (((w * a === -1) ? w : (w + a) / (1 + w * a)) + 1) / 2.0;\n\t\tvar w2 = 1 - w1;\n\n\t\treturn this\n\t\t\t.rgb(\n\t\t\t\tw1 * color1.red() + w2 * color2.red(),\n\t\t\t\tw1 * color1.green() + w2 * color2.green(),\n\t\t\t\tw1 * color1.blue() + w2 * color2.blue()\n\t\t\t)\n\t\t\t.alpha(color1.alpha() * p + color2.alpha() * (1 - p));\n\t},\n\n\ttoJSON: function () {\n\t\treturn this.rgb();\n\t},\n\n\tclone: function () {\n\t\t// NOTE(SB): using node-clone creates a dependency to Buffer when using browserify,\n\t\t// making the final build way to big to embed in Chart.js. So let's do it manually,\n\t\t// assuming that values to clone are 1 dimension arrays containing only numbers,\n\t\t// except 'alpha' which is a number.\n\t\tvar result = new Color();\n\t\tvar source = this.values;\n\t\tvar target = result.values;\n\t\tvar value, type;\n\n\t\tfor (var prop in source) {\n\t\t\tif (source.hasOwnProperty(prop)) {\n\t\t\t\tvalue = source[prop];\n\t\t\t\ttype = ({}).toString.call(value);\n\t\t\t\tif (type === '[object Array]') {\n\t\t\t\t\ttarget[prop] = value.slice(0);\n\t\t\t\t} else if (type === '[object Number]') {\n\t\t\t\t\ttarget[prop] = value;\n\t\t\t\t} else {\n\t\t\t\t\tconsole.error('unexpected color value:', value);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t}\n};\n\nColor.prototype.spaces = {\n\trgb: ['red', 'green', 'blue'],\n\thsl: ['hue', 'saturation', 'lightness'],\n\thsv: ['hue', 'saturation', 'value'],\n\thwb: ['hue', 'whiteness', 'blackness'],\n\tcmyk: ['cyan', 'magenta', 'yellow', 'black']\n};\n\nColor.prototype.maxes = {\n\trgb: [255, 255, 255],\n\thsl: [360, 100, 100],\n\thsv: [360, 100, 100],\n\thwb: [360, 100, 100],\n\tcmyk: [100, 100, 100, 100]\n};\n\nColor.prototype.getValues = function (space) {\n\tvar values = this.values;\n\tvar vals = {};\n\n\tfor (var i = 0; i < space.length; i++) {\n\t\tvals[space.charAt(i)] = values[space][i];\n\t}\n\n\tif (values.alpha !== 1) {\n\t\tvals.a = values.alpha;\n\t}\n\n\t// {r: 255, g: 255, b: 255, a: 0.4}\n\treturn vals;\n};\n\nColor.prototype.setValues = function (space, vals) {\n\tvar values = this.values;\n\tvar spaces = this.spaces;\n\tvar maxes = this.maxes;\n\tvar alpha = 1;\n\tvar i;\n\n\tthis.valid = true;\n\n\tif (space === 'alpha') {\n\t\talpha = vals;\n\t} else if (vals.length) {\n\t\t// [10, 10, 10]\n\t\tvalues[space] = vals.slice(0, space.length);\n\t\talpha = vals[space.length];\n\t} else if (vals[space.charAt(0)] !== undefined) {\n\t\t// {r: 10, g: 10, b: 10}\n\t\tfor (i = 0; i < space.length; i++) {\n\t\t\tvalues[space][i] = vals[space.charAt(i)];\n\t\t}\n\n\t\talpha = vals.a;\n\t} else if (vals[spaces[space][0]] !== undefined) {\n\t\t// {red: 10, green: 10, blue: 10}\n\t\tvar chans = spaces[space];\n\n\t\tfor (i = 0; i < space.length; i++) {\n\t\t\tvalues[space][i] = vals[chans[i]];\n\t\t}\n\n\t\talpha = vals.alpha;\n\t}\n\n\tvalues.alpha = Math.max(0, Math.min(1, (alpha === undefined ? values.alpha : alpha)));\n\n\tif (space === 'alpha') {\n\t\treturn false;\n\t}\n\n\tvar capped;\n\n\t// cap values of the space prior converting all values\n\tfor (i = 0; i < space.length; i++) {\n\t\tcapped = Math.max(0, Math.min(maxes[space][i], values[space][i]));\n\t\tvalues[space][i] = Math.round(capped);\n\t}\n\n\t// convert to all the other color spaces\n\tfor (var sname in spaces) {\n\t\tif (sname !== space) {\n\t\t\tvalues[sname] = colorConvert[space][sname](values[space]);\n\t\t}\n\t}\n\n\treturn true;\n};\n\nColor.prototype.setSpace = function (space, args) {\n\tvar vals = args[0];\n\n\tif (vals === undefined) {\n\t\t// color.rgb()\n\t\treturn this.getValues(space);\n\t}\n\n\t// color.rgb(10, 10, 10)\n\tif (typeof vals === 'number') {\n\t\tvals = Array.prototype.slice.call(args);\n\t}\n\n\tthis.setValues(space, vals);\n\treturn this;\n};\n\nColor.prototype.setChannel = function (space, index, val) {\n\tvar svalues = this.values[space];\n\tif (val === undefined) {\n\t\t// color.red()\n\t\treturn svalues[index];\n\t} else if (val === svalues[index]) {\n\t\t// color.red(color.red())\n\t\treturn this;\n\t}\n\n\t// color.red(100)\n\tsvalues[index] = val;\n\tthis.setValues(space, svalues);\n\n\treturn this;\n};\n\nif (typeof window !== 'undefined') {\n\twindow.Color = Color;\n}\n\nvar chartjsColor = Color;\n\nfunction isValidKey(key) {\r\n\treturn ['__proto__', 'prototype', 'constructor'].indexOf(key) === -1;\r\n}\r\n\r\n/**\r\n * @namespace Chart.helpers\r\n */\r\nvar helpers = {\r\n\t/**\r\n\t * An empty function that can be used, for example, for optional callback.\r\n\t */\r\n\tnoop: function() {},\r\n\r\n\t/**\r\n\t * Returns a unique id, sequentially generated from a global variable.\r\n\t * @returns {number}\r\n\t * @function\r\n\t */\r\n\tuid: (function() {\r\n\t\tvar id = 0;\r\n\t\treturn function() {\r\n\t\t\treturn id++;\r\n\t\t};\r\n\t}()),\r\n\r\n\t/**\r\n\t * Returns true if `value` is neither null nor undefined, else returns false.\r\n\t * @param {*} value - The value to test.\r\n\t * @returns {boolean}\r\n\t * @since 2.7.0\r\n\t */\r\n\tisNullOrUndef: function(value) {\r\n\t\treturn value === null || typeof value === 'undefined';\r\n\t},\r\n\r\n\t/**\r\n\t * Returns true if `value` is an array (including typed arrays), else returns false.\r\n\t * @param {*} value - The value to test.\r\n\t * @returns {boolean}\r\n\t * @function\r\n\t */\r\n\tisArray: function(value) {\r\n\t\tif (Array.isArray && Array.isArray(value)) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tvar type = Object.prototype.toString.call(value);\r\n\t\tif (type.substr(0, 7) === '[object' && type.substr(-6) === 'Array]') {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn false;\r\n\t},\r\n\r\n\t/**\r\n\t * Returns true if `value` is an object (excluding null), else returns false.\r\n\t * @param {*} value - The value to test.\r\n\t * @returns {boolean}\r\n\t * @since 2.7.0\r\n\t */\r\n\tisObject: function(value) {\r\n\t\treturn value !== null && Object.prototype.toString.call(value) === '[object Object]';\r\n\t},\r\n\r\n\t/**\r\n\t * Returns true if `value` is a finite number, else returns false\r\n\t * @param {*} value  - The value to test.\r\n\t * @returns {boolean}\r\n\t */\r\n\tisFinite: function(value) {\r\n\t\treturn (typeof value === 'number' || value instanceof Number) && isFinite(value);\r\n\t},\r\n\r\n\t/**\r\n\t * Returns `value` if defined, else returns `defaultValue`.\r\n\t * @param {*} value - The value to return if defined.\r\n\t * @param {*} defaultValue - The value to return if `value` is undefined.\r\n\t * @returns {*}\r\n\t */\r\n\tvalueOrDefault: function(value, defaultValue) {\r\n\t\treturn typeof value === 'undefined' ? defaultValue : value;\r\n\t},\r\n\r\n\t/**\r\n\t * Returns value at the given `index` in array if defined, else returns `defaultValue`.\r\n\t * @param {Array} value - The array to lookup for value at `index`.\r\n\t * @param {number} index - The index in `value` to lookup for value.\r\n\t * @param {*} defaultValue - The value to return if `value[index]` is undefined.\r\n\t * @returns {*}\r\n\t */\r\n\tvalueAtIndexOrDefault: function(value, index, defaultValue) {\r\n\t\treturn helpers.valueOrDefault(helpers.isArray(value) ? value[index] : value, defaultValue);\r\n\t},\r\n\r\n\t/**\r\n\t * Calls `fn` with the given `args` in the scope defined by `thisArg` and returns the\r\n\t * value returned by `fn`. If `fn` is not a function, this method returns undefined.\r\n\t * @param {function} fn - The function to call.\r\n\t * @param {Array|undefined|null} args - The arguments with which `fn` should be called.\r\n\t * @param {object} [thisArg] - The value of `this` provided for the call to `fn`.\r\n\t * @returns {*}\r\n\t */\r\n\tcallback: function(fn, args, thisArg) {\r\n\t\tif (fn && typeof fn.call === 'function') {\r\n\t\t\treturn fn.apply(thisArg, args);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Note(SB) for performance sake, this method should only be used when loopable type\r\n\t * is unknown or in none intensive code (not called often and small loopable). Else\r\n\t * it's preferable to use a regular for() loop and save extra function calls.\r\n\t * @param {object|Array} loopable - The object or array to be iterated.\r\n\t * @param {function} fn - The function to call for each item.\r\n\t * @param {object} [thisArg] - The value of `this` provided for the call to `fn`.\r\n\t * @param {boolean} [reverse] - If true, iterates backward on the loopable.\r\n\t */\r\n\teach: function(loopable, fn, thisArg, reverse) {\r\n\t\tvar i, len, keys;\r\n\t\tif (helpers.isArray(loopable)) {\r\n\t\t\tlen = loopable.length;\r\n\t\t\tif (reverse) {\r\n\t\t\t\tfor (i = len - 1; i >= 0; i--) {\r\n\t\t\t\t\tfn.call(thisArg, loopable[i], i);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tfor (i = 0; i < len; i++) {\r\n\t\t\t\t\tfn.call(thisArg, loopable[i], i);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} else if (helpers.isObject(loopable)) {\r\n\t\t\tkeys = Object.keys(loopable);\r\n\t\t\tlen = keys.length;\r\n\t\t\tfor (i = 0; i < len; i++) {\r\n\t\t\t\tfn.call(thisArg, loopable[keys[i]], keys[i]);\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Returns true if the `a0` and `a1` arrays have the same content, else returns false.\r\n\t * @see https://stackoverflow.com/a/14853974\r\n\t * @param {Array} a0 - The array to compare\r\n\t * @param {Array} a1 - The array to compare\r\n\t * @returns {boolean}\r\n\t */\r\n\tarrayEquals: function(a0, a1) {\r\n\t\tvar i, ilen, v0, v1;\r\n\r\n\t\tif (!a0 || !a1 || a0.length !== a1.length) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tfor (i = 0, ilen = a0.length; i < ilen; ++i) {\r\n\t\t\tv0 = a0[i];\r\n\t\t\tv1 = a1[i];\r\n\r\n\t\t\tif (v0 instanceof Array && v1 instanceof Array) {\r\n\t\t\t\tif (!helpers.arrayEquals(v0, v1)) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t} else if (v0 !== v1) {\r\n\t\t\t\t// NOTE: two different object instances will never be equal: {x:20} != {x:20}\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t},\r\n\r\n\t/**\r\n\t * Returns a deep copy of `source` without keeping references on objects and arrays.\r\n\t * @param {*} source - The value to clone.\r\n\t * @returns {*}\r\n\t */\r\n\tclone: function(source) {\r\n\t\tif (helpers.isArray(source)) {\r\n\t\t\treturn source.map(helpers.clone);\r\n\t\t}\r\n\r\n\t\tif (helpers.isObject(source)) {\r\n\t\t\tvar target = Object.create(source);\r\n\t\t\tvar keys = Object.keys(source);\r\n\t\t\tvar klen = keys.length;\r\n\t\t\tvar k = 0;\r\n\r\n\t\t\tfor (; k < klen; ++k) {\r\n\t\t\t\ttarget[keys[k]] = helpers.clone(source[keys[k]]);\r\n\t\t\t}\r\n\r\n\t\t\treturn target;\r\n\t\t}\r\n\r\n\t\treturn source;\r\n\t},\r\n\r\n\t/**\r\n\t * The default merger when Chart.helpers.merge is called without merger option.\r\n\t * Note(SB): also used by mergeConfig and mergeScaleConfig as fallback.\r\n\t * @private\r\n\t */\r\n\t_merger: function(key, target, source, options) {\r\n\t\tif (!isValidKey(key)) {\r\n\t\t\t// We want to ensure we do not copy prototypes over\r\n\t\t\t// as this can pollute global namespaces\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar tval = target[key];\r\n\t\tvar sval = source[key];\r\n\r\n\t\tif (helpers.isObject(tval) && helpers.isObject(sval)) {\r\n\t\t\thelpers.merge(tval, sval, options);\r\n\t\t} else {\r\n\t\t\ttarget[key] = helpers.clone(sval);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Merges source[key] in target[key] only if target[key] is undefined.\r\n\t * @private\r\n\t */\r\n\t_mergerIf: function(key, target, source) {\r\n\t\tif (!isValidKey(key)) {\r\n\t\t\t// We want to ensure we do not copy prototypes over\r\n\t\t\t// as this can pollute global namespaces\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar tval = target[key];\r\n\t\tvar sval = source[key];\r\n\r\n\t\tif (helpers.isObject(tval) && helpers.isObject(sval)) {\r\n\t\t\thelpers.mergeIf(tval, sval);\r\n\t\t} else if (!target.hasOwnProperty(key)) {\r\n\t\t\ttarget[key] = helpers.clone(sval);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Recursively deep copies `source` properties into `target` with the given `options`.\r\n\t * IMPORTANT: `target` is not cloned and will be updated with `source` properties.\r\n\t * @param {object} target - The target object in which all sources are merged into.\r\n\t * @param {object|object[]} source - Object(s) to merge into `target`.\r\n\t * @param {object} [options] - Merging options:\r\n\t * @param {function} [options.merger] - The merge method (key, target, source, options)\r\n\t * @returns {object} The `target` object.\r\n\t */\r\n\tmerge: function(target, source, options) {\r\n\t\tvar sources = helpers.isArray(source) ? source : [source];\r\n\t\tvar ilen = sources.length;\r\n\t\tvar merge, i, keys, klen, k;\r\n\r\n\t\tif (!helpers.isObject(target)) {\r\n\t\t\treturn target;\r\n\t\t}\r\n\r\n\t\toptions = options || {};\r\n\t\tmerge = options.merger || helpers._merger;\r\n\r\n\t\tfor (i = 0; i < ilen; ++i) {\r\n\t\t\tsource = sources[i];\r\n\t\t\tif (!helpers.isObject(source)) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tkeys = Object.keys(source);\r\n\t\t\tfor (k = 0, klen = keys.length; k < klen; ++k) {\r\n\t\t\t\tmerge(keys[k], target, source, options);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn target;\r\n\t},\r\n\r\n\t/**\r\n\t * Recursively deep copies `source` properties into `target` *only* if not defined in target.\r\n\t * IMPORTANT: `target` is not cloned and will be updated with `source` properties.\r\n\t * @param {object} target - The target object in which all sources are merged into.\r\n\t * @param {object|object[]} source - Object(s) to merge into `target`.\r\n\t * @returns {object} The `target` object.\r\n\t */\r\n\tmergeIf: function(target, source) {\r\n\t\treturn helpers.merge(target, source, {merger: helpers._mergerIf});\r\n\t},\r\n\r\n\t/**\r\n\t * Applies the contents of two or more objects together into the first object.\r\n\t * @param {object} target - The target object in which all objects are merged into.\r\n\t * @param {object} arg1 - Object containing additional properties to merge in target.\r\n\t * @param {object} argN - Additional objects containing properties to merge in target.\r\n\t * @returns {object} The `target` object.\r\n\t */\r\n\textend: Object.assign || function(target) {\r\n\t\treturn helpers.merge(target, [].slice.call(arguments, 1), {\r\n\t\t\tmerger: function(key, dst, src) {\r\n\t\t\t\tdst[key] = src[key];\r\n\t\t\t}\r\n\t\t});\r\n\t},\r\n\r\n\t/**\r\n\t * Basic javascript inheritance based on the model created in Backbone.js\r\n\t */\r\n\tinherits: function(extensions) {\r\n\t\tvar me = this;\r\n\t\tvar ChartElement = (extensions && extensions.hasOwnProperty('constructor')) ? extensions.constructor : function() {\r\n\t\t\treturn me.apply(this, arguments);\r\n\t\t};\r\n\r\n\t\tvar Surrogate = function() {\r\n\t\t\tthis.constructor = ChartElement;\r\n\t\t};\r\n\r\n\t\tSurrogate.prototype = me.prototype;\r\n\t\tChartElement.prototype = new Surrogate();\r\n\t\tChartElement.extend = helpers.inherits;\r\n\r\n\t\tif (extensions) {\r\n\t\t\thelpers.extend(ChartElement.prototype, extensions);\r\n\t\t}\r\n\r\n\t\tChartElement.__super__ = me.prototype;\r\n\t\treturn ChartElement;\r\n\t},\r\n\r\n\t_deprecated: function(scope, value, previous, current) {\r\n\t\tif (value !== undefined) {\r\n\t\t\tconsole.warn(scope + ': \"' + previous +\r\n\t\t\t\t'\" is deprecated. Please use \"' + current + '\" instead');\r\n\t\t}\r\n\t}\r\n};\r\n\r\nvar helpers_core = helpers;\r\n\r\n// DEPRECATIONS\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.helpers.callback instead.\r\n * @function Chart.helpers.callCallback\r\n * @deprecated since version 2.6.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers.callCallback = helpers.callback;\r\n\r\n/**\r\n * Provided for backward compatibility, use Array.prototype.indexOf instead.\r\n * Array.prototype.indexOf compatibility: Chrome, Opera, Safari, FF1.5+, IE9+\r\n * @function Chart.helpers.indexOf\r\n * @deprecated since version 2.7.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers.indexOf = function(array, item, fromIndex) {\r\n\treturn Array.prototype.indexOf.call(array, item, fromIndex);\r\n};\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.helpers.valueOrDefault instead.\r\n * @function Chart.helpers.getValueOrDefault\r\n * @deprecated since version 2.7.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers.getValueOrDefault = helpers.valueOrDefault;\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.helpers.valueAtIndexOrDefault instead.\r\n * @function Chart.helpers.getValueAtIndexOrDefault\r\n * @deprecated since version 2.7.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers.getValueAtIndexOrDefault = helpers.valueAtIndexOrDefault;\n\n/**\r\n * Easing functions adapted from Robert Penner's easing equations.\r\n * @namespace Chart.helpers.easingEffects\r\n * @see http://www.robertpenner.com/easing/\r\n */\r\nvar effects = {\r\n\tlinear: function(t) {\r\n\t\treturn t;\r\n\t},\r\n\r\n\teaseInQuad: function(t) {\r\n\t\treturn t * t;\r\n\t},\r\n\r\n\teaseOutQuad: function(t) {\r\n\t\treturn -t * (t - 2);\r\n\t},\r\n\r\n\teaseInOutQuad: function(t) {\r\n\t\tif ((t /= 0.5) < 1) {\r\n\t\t\treturn 0.5 * t * t;\r\n\t\t}\r\n\t\treturn -0.5 * ((--t) * (t - 2) - 1);\r\n\t},\r\n\r\n\teaseInCubic: function(t) {\r\n\t\treturn t * t * t;\r\n\t},\r\n\r\n\teaseOutCubic: function(t) {\r\n\t\treturn (t = t - 1) * t * t + 1;\r\n\t},\r\n\r\n\teaseInOutCubic: function(t) {\r\n\t\tif ((t /= 0.5) < 1) {\r\n\t\t\treturn 0.5 * t * t * t;\r\n\t\t}\r\n\t\treturn 0.5 * ((t -= 2) * t * t + 2);\r\n\t},\r\n\r\n\teaseInQuart: function(t) {\r\n\t\treturn t * t * t * t;\r\n\t},\r\n\r\n\teaseOutQuart: function(t) {\r\n\t\treturn -((t = t - 1) * t * t * t - 1);\r\n\t},\r\n\r\n\teaseInOutQuart: function(t) {\r\n\t\tif ((t /= 0.5) < 1) {\r\n\t\t\treturn 0.5 * t * t * t * t;\r\n\t\t}\r\n\t\treturn -0.5 * ((t -= 2) * t * t * t - 2);\r\n\t},\r\n\r\n\teaseInQuint: function(t) {\r\n\t\treturn t * t * t * t * t;\r\n\t},\r\n\r\n\teaseOutQuint: function(t) {\r\n\t\treturn (t = t - 1) * t * t * t * t + 1;\r\n\t},\r\n\r\n\teaseInOutQuint: function(t) {\r\n\t\tif ((t /= 0.5) < 1) {\r\n\t\t\treturn 0.5 * t * t * t * t * t;\r\n\t\t}\r\n\t\treturn 0.5 * ((t -= 2) * t * t * t * t + 2);\r\n\t},\r\n\r\n\teaseInSine: function(t) {\r\n\t\treturn -Math.cos(t * (Math.PI / 2)) + 1;\r\n\t},\r\n\r\n\teaseOutSine: function(t) {\r\n\t\treturn Math.sin(t * (Math.PI / 2));\r\n\t},\r\n\r\n\teaseInOutSine: function(t) {\r\n\t\treturn -0.5 * (Math.cos(Math.PI * t) - 1);\r\n\t},\r\n\r\n\teaseInExpo: function(t) {\r\n\t\treturn (t === 0) ? 0 : Math.pow(2, 10 * (t - 1));\r\n\t},\r\n\r\n\teaseOutExpo: function(t) {\r\n\t\treturn (t === 1) ? 1 : -Math.pow(2, -10 * t) + 1;\r\n\t},\r\n\r\n\teaseInOutExpo: function(t) {\r\n\t\tif (t === 0) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t\tif (t === 1) {\r\n\t\t\treturn 1;\r\n\t\t}\r\n\t\tif ((t /= 0.5) < 1) {\r\n\t\t\treturn 0.5 * Math.pow(2, 10 * (t - 1));\r\n\t\t}\r\n\t\treturn 0.5 * (-Math.pow(2, -10 * --t) + 2);\r\n\t},\r\n\r\n\teaseInCirc: function(t) {\r\n\t\tif (t >= 1) {\r\n\t\t\treturn t;\r\n\t\t}\r\n\t\treturn -(Math.sqrt(1 - t * t) - 1);\r\n\t},\r\n\r\n\teaseOutCirc: function(t) {\r\n\t\treturn Math.sqrt(1 - (t = t - 1) * t);\r\n\t},\r\n\r\n\teaseInOutCirc: function(t) {\r\n\t\tif ((t /= 0.5) < 1) {\r\n\t\t\treturn -0.5 * (Math.sqrt(1 - t * t) - 1);\r\n\t\t}\r\n\t\treturn 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1);\r\n\t},\r\n\r\n\teaseInElastic: function(t) {\r\n\t\tvar s = 1.70158;\r\n\t\tvar p = 0;\r\n\t\tvar a = 1;\r\n\t\tif (t === 0) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t\tif (t === 1) {\r\n\t\t\treturn 1;\r\n\t\t}\r\n\t\tif (!p) {\r\n\t\t\tp = 0.3;\r\n\t\t}\r\n\t\tif (a < 1) {\r\n\t\t\ta = 1;\r\n\t\t\ts = p / 4;\r\n\t\t} else {\r\n\t\t\ts = p / (2 * Math.PI) * Math.asin(1 / a);\r\n\t\t}\r\n\t\treturn -(a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p));\r\n\t},\r\n\r\n\teaseOutElastic: function(t) {\r\n\t\tvar s = 1.70158;\r\n\t\tvar p = 0;\r\n\t\tvar a = 1;\r\n\t\tif (t === 0) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t\tif (t === 1) {\r\n\t\t\treturn 1;\r\n\t\t}\r\n\t\tif (!p) {\r\n\t\t\tp = 0.3;\r\n\t\t}\r\n\t\tif (a < 1) {\r\n\t\t\ta = 1;\r\n\t\t\ts = p / 4;\r\n\t\t} else {\r\n\t\t\ts = p / (2 * Math.PI) * Math.asin(1 / a);\r\n\t\t}\r\n\t\treturn a * Math.pow(2, -10 * t) * Math.sin((t - s) * (2 * Math.PI) / p) + 1;\r\n\t},\r\n\r\n\teaseInOutElastic: function(t) {\r\n\t\tvar s = 1.70158;\r\n\t\tvar p = 0;\r\n\t\tvar a = 1;\r\n\t\tif (t === 0) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t\tif ((t /= 0.5) === 2) {\r\n\t\t\treturn 1;\r\n\t\t}\r\n\t\tif (!p) {\r\n\t\t\tp = 0.45;\r\n\t\t}\r\n\t\tif (a < 1) {\r\n\t\t\ta = 1;\r\n\t\t\ts = p / 4;\r\n\t\t} else {\r\n\t\t\ts = p / (2 * Math.PI) * Math.asin(1 / a);\r\n\t\t}\r\n\t\tif (t < 1) {\r\n\t\t\treturn -0.5 * (a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p));\r\n\t\t}\r\n\t\treturn a * Math.pow(2, -10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p) * 0.5 + 1;\r\n\t},\r\n\teaseInBack: function(t) {\r\n\t\tvar s = 1.70158;\r\n\t\treturn t * t * ((s + 1) * t - s);\r\n\t},\r\n\r\n\teaseOutBack: function(t) {\r\n\t\tvar s = 1.70158;\r\n\t\treturn (t = t - 1) * t * ((s + 1) * t + s) + 1;\r\n\t},\r\n\r\n\teaseInOutBack: function(t) {\r\n\t\tvar s = 1.70158;\r\n\t\tif ((t /= 0.5) < 1) {\r\n\t\t\treturn 0.5 * (t * t * (((s *= (1.525)) + 1) * t - s));\r\n\t\t}\r\n\t\treturn 0.5 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2);\r\n\t},\r\n\r\n\teaseInBounce: function(t) {\r\n\t\treturn 1 - effects.easeOutBounce(1 - t);\r\n\t},\r\n\r\n\teaseOutBounce: function(t) {\r\n\t\tif (t < (1 / 2.75)) {\r\n\t\t\treturn 7.5625 * t * t;\r\n\t\t}\r\n\t\tif (t < (2 / 2.75)) {\r\n\t\t\treturn 7.5625 * (t -= (1.5 / 2.75)) * t + 0.75;\r\n\t\t}\r\n\t\tif (t < (2.5 / 2.75)) {\r\n\t\t\treturn 7.5625 * (t -= (2.25 / 2.75)) * t + 0.9375;\r\n\t\t}\r\n\t\treturn 7.5625 * (t -= (2.625 / 2.75)) * t + 0.984375;\r\n\t},\r\n\r\n\teaseInOutBounce: function(t) {\r\n\t\tif (t < 0.5) {\r\n\t\t\treturn effects.easeInBounce(t * 2) * 0.5;\r\n\t\t}\r\n\t\treturn effects.easeOutBounce(t * 2 - 1) * 0.5 + 0.5;\r\n\t}\r\n};\r\n\r\nvar helpers_easing = {\r\n\teffects: effects\r\n};\r\n\r\n// DEPRECATIONS\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.helpers.easing.effects instead.\r\n * @function Chart.helpers.easingEffects\r\n * @deprecated since version 2.7.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers_core.easingEffects = effects;\n\nvar PI = Math.PI;\r\nvar RAD_PER_DEG = PI / 180;\r\nvar DOUBLE_PI = PI * 2;\r\nvar HALF_PI = PI / 2;\r\nvar QUARTER_PI = PI / 4;\r\nvar TWO_THIRDS_PI = PI * 2 / 3;\r\n\r\n/**\r\n * @namespace Chart.helpers.canvas\r\n */\r\nvar exports$1 = {\r\n\t/**\r\n\t * Clears the entire canvas associated to the given `chart`.\r\n\t * @param {Chart} chart - The chart for which to clear the canvas.\r\n\t */\r\n\tclear: function(chart) {\r\n\t\tchart.ctx.clearRect(0, 0, chart.width, chart.height);\r\n\t},\r\n\r\n\t/**\r\n\t * Creates a \"path\" for a rectangle with rounded corners at position (x, y) with a\r\n\t * given size (width, height) and the same `radius` for all corners.\r\n\t * @param {CanvasRenderingContext2D} ctx - The canvas 2D Context.\r\n\t * @param {number} x - The x axis of the coordinate for the rectangle starting point.\r\n\t * @param {number} y - The y axis of the coordinate for the rectangle starting point.\r\n\t * @param {number} width - The rectangle's width.\r\n\t * @param {number} height - The rectangle's height.\r\n\t * @param {number} radius - The rounded amount (in pixels) for the four corners.\r\n\t * @todo handle `radius` as top-left, top-right, bottom-right, bottom-left array/object?\r\n\t */\r\n\troundedRect: function(ctx, x, y, width, height, radius) {\r\n\t\tif (radius) {\r\n\t\t\tvar r = Math.min(radius, height / 2, width / 2);\r\n\t\t\tvar left = x + r;\r\n\t\t\tvar top = y + r;\r\n\t\t\tvar right = x + width - r;\r\n\t\t\tvar bottom = y + height - r;\r\n\r\n\t\t\tctx.moveTo(x, top);\r\n\t\t\tif (left < right && top < bottom) {\r\n\t\t\t\tctx.arc(left, top, r, -PI, -HALF_PI);\r\n\t\t\t\tctx.arc(right, top, r, -HALF_PI, 0);\r\n\t\t\t\tctx.arc(right, bottom, r, 0, HALF_PI);\r\n\t\t\t\tctx.arc(left, bottom, r, HALF_PI, PI);\r\n\t\t\t} else if (left < right) {\r\n\t\t\t\tctx.moveTo(left, y);\r\n\t\t\t\tctx.arc(right, top, r, -HALF_PI, HALF_PI);\r\n\t\t\t\tctx.arc(left, top, r, HALF_PI, PI + HALF_PI);\r\n\t\t\t} else if (top < bottom) {\r\n\t\t\t\tctx.arc(left, top, r, -PI, 0);\r\n\t\t\t\tctx.arc(left, bottom, r, 0, PI);\r\n\t\t\t} else {\r\n\t\t\t\tctx.arc(left, top, r, -PI, PI);\r\n\t\t\t}\r\n\t\t\tctx.closePath();\r\n\t\t\tctx.moveTo(x, y);\r\n\t\t} else {\r\n\t\t\tctx.rect(x, y, width, height);\r\n\t\t}\r\n\t},\r\n\r\n\tdrawPoint: function(ctx, style, radius, x, y, rotation) {\r\n\t\tvar type, xOffset, yOffset, size, cornerRadius;\r\n\t\tvar rad = (rotation || 0) * RAD_PER_DEG;\r\n\r\n\t\tif (style && typeof style === 'object') {\r\n\t\t\ttype = style.toString();\r\n\t\t\tif (type === '[object HTMLImageElement]' || type === '[object HTMLCanvasElement]') {\r\n\t\t\t\tctx.save();\r\n\t\t\t\tctx.translate(x, y);\r\n\t\t\t\tctx.rotate(rad);\r\n\t\t\t\tctx.drawImage(style, -style.width / 2, -style.height / 2, style.width, style.height);\r\n\t\t\t\tctx.restore();\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (isNaN(radius) || radius <= 0) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tctx.beginPath();\r\n\r\n\t\tswitch (style) {\r\n\t\t// Default includes circle\r\n\t\tdefault:\r\n\t\t\tctx.arc(x, y, radius, 0, DOUBLE_PI);\r\n\t\t\tctx.closePath();\r\n\t\t\tbreak;\r\n\t\tcase 'triangle':\r\n\t\t\tctx.moveTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\r\n\t\t\trad += TWO_THIRDS_PI;\r\n\t\t\tctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\r\n\t\t\trad += TWO_THIRDS_PI;\r\n\t\t\tctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\r\n\t\t\tctx.closePath();\r\n\t\t\tbreak;\r\n\t\tcase 'rectRounded':\r\n\t\t\t// NOTE: the rounded rect implementation changed to use `arc` instead of\r\n\t\t\t// `quadraticCurveTo` since it generates better results when rect is\r\n\t\t\t// almost a circle. 0.516 (instead of 0.5) produces results with visually\r\n\t\t\t// closer proportion to the previous impl and it is inscribed in the\r\n\t\t\t// circle with `radius`. For more details, see the following PRs:\r\n\t\t\t// https://github.com/chartjs/Chart.js/issues/5597\r\n\t\t\t// https://github.com/chartjs/Chart.js/issues/5858\r\n\t\t\tcornerRadius = radius * 0.516;\r\n\t\t\tsize = radius - cornerRadius;\r\n\t\t\txOffset = Math.cos(rad + QUARTER_PI) * size;\r\n\t\t\tyOffset = Math.sin(rad + QUARTER_PI) * size;\r\n\t\t\tctx.arc(x - xOffset, y - yOffset, cornerRadius, rad - PI, rad - HALF_PI);\r\n\t\t\tctx.arc(x + yOffset, y - xOffset, cornerRadius, rad - HALF_PI, rad);\r\n\t\t\tctx.arc(x + xOffset, y + yOffset, cornerRadius, rad, rad + HALF_PI);\r\n\t\t\tctx.arc(x - yOffset, y + xOffset, cornerRadius, rad + HALF_PI, rad + PI);\r\n\t\t\tctx.closePath();\r\n\t\t\tbreak;\r\n\t\tcase 'rect':\r\n\t\t\tif (!rotation) {\r\n\t\t\t\tsize = Math.SQRT1_2 * radius;\r\n\t\t\t\tctx.rect(x - size, y - size, 2 * size, 2 * size);\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\trad += QUARTER_PI;\r\n\t\t\t/* falls through */\r\n\t\tcase 'rectRot':\r\n\t\t\txOffset = Math.cos(rad) * radius;\r\n\t\t\tyOffset = Math.sin(rad) * radius;\r\n\t\t\tctx.moveTo(x - xOffset, y - yOffset);\r\n\t\t\tctx.lineTo(x + yOffset, y - xOffset);\r\n\t\t\tctx.lineTo(x + xOffset, y + yOffset);\r\n\t\t\tctx.lineTo(x - yOffset, y + xOffset);\r\n\t\t\tctx.closePath();\r\n\t\t\tbreak;\r\n\t\tcase 'crossRot':\r\n\t\t\trad += QUARTER_PI;\r\n\t\t\t/* falls through */\r\n\t\tcase 'cross':\r\n\t\t\txOffset = Math.cos(rad) * radius;\r\n\t\t\tyOffset = Math.sin(rad) * radius;\r\n\t\t\tctx.moveTo(x - xOffset, y - yOffset);\r\n\t\t\tctx.lineTo(x + xOffset, y + yOffset);\r\n\t\t\tctx.moveTo(x + yOffset, y - xOffset);\r\n\t\t\tctx.lineTo(x - yOffset, y + xOffset);\r\n\t\t\tbreak;\r\n\t\tcase 'star':\r\n\t\t\txOffset = Math.cos(rad) * radius;\r\n\t\t\tyOffset = Math.sin(rad) * radius;\r\n\t\t\tctx.moveTo(x - xOffset, y - yOffset);\r\n\t\t\tctx.lineTo(x + xOffset, y + yOffset);\r\n\t\t\tctx.moveTo(x + yOffset, y - xOffset);\r\n\t\t\tctx.lineTo(x - yOffset, y + xOffset);\r\n\t\t\trad += QUARTER_PI;\r\n\t\t\txOffset = Math.cos(rad) * radius;\r\n\t\t\tyOffset = Math.sin(rad) * radius;\r\n\t\t\tctx.moveTo(x - xOffset, y - yOffset);\r\n\t\t\tctx.lineTo(x + xOffset, y + yOffset);\r\n\t\t\tctx.moveTo(x + yOffset, y - xOffset);\r\n\t\t\tctx.lineTo(x - yOffset, y + xOffset);\r\n\t\t\tbreak;\r\n\t\tcase 'line':\r\n\t\t\txOffset = Math.cos(rad) * radius;\r\n\t\t\tyOffset = Math.sin(rad) * radius;\r\n\t\t\tctx.moveTo(x - xOffset, y - yOffset);\r\n\t\t\tctx.lineTo(x + xOffset, y + yOffset);\r\n\t\t\tbreak;\r\n\t\tcase 'dash':\r\n\t\t\tctx.moveTo(x, y);\r\n\t\t\tctx.lineTo(x + Math.cos(rad) * radius, y + Math.sin(rad) * radius);\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tctx.fill();\r\n\t\tctx.stroke();\r\n\t},\r\n\r\n\t/**\r\n\t * Returns true if the point is inside the rectangle\r\n\t * @param {object} point - The point to test\r\n\t * @param {object} area - The rectangle\r\n\t * @returns {boolean}\r\n\t * @private\r\n\t */\r\n\t_isPointInArea: function(point, area) {\r\n\t\tvar epsilon = 1e-6; // 1e-6 is margin in pixels for accumulated error.\r\n\r\n\t\treturn point.x > area.left - epsilon && point.x < area.right + epsilon &&\r\n\t\t\tpoint.y > area.top - epsilon && point.y < area.bottom + epsilon;\r\n\t},\r\n\r\n\tclipArea: function(ctx, area) {\r\n\t\tctx.save();\r\n\t\tctx.beginPath();\r\n\t\tctx.rect(area.left, area.top, area.right - area.left, area.bottom - area.top);\r\n\t\tctx.clip();\r\n\t},\r\n\r\n\tunclipArea: function(ctx) {\r\n\t\tctx.restore();\r\n\t},\r\n\r\n\tlineTo: function(ctx, previous, target, flip) {\r\n\t\tvar stepped = target.steppedLine;\r\n\t\tif (stepped) {\r\n\t\t\tif (stepped === 'middle') {\r\n\t\t\t\tvar midpoint = (previous.x + target.x) / 2.0;\r\n\t\t\t\tctx.lineTo(midpoint, flip ? target.y : previous.y);\r\n\t\t\t\tctx.lineTo(midpoint, flip ? previous.y : target.y);\r\n\t\t\t} else if ((stepped === 'after' && !flip) || (stepped !== 'after' && flip)) {\r\n\t\t\t\tctx.lineTo(previous.x, target.y);\r\n\t\t\t} else {\r\n\t\t\t\tctx.lineTo(target.x, previous.y);\r\n\t\t\t}\r\n\t\t\tctx.lineTo(target.x, target.y);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (!target.tension) {\r\n\t\t\tctx.lineTo(target.x, target.y);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tctx.bezierCurveTo(\r\n\t\t\tflip ? previous.controlPointPreviousX : previous.controlPointNextX,\r\n\t\t\tflip ? previous.controlPointPreviousY : previous.controlPointNextY,\r\n\t\t\tflip ? target.controlPointNextX : target.controlPointPreviousX,\r\n\t\t\tflip ? target.controlPointNextY : target.controlPointPreviousY,\r\n\t\t\ttarget.x,\r\n\t\t\ttarget.y);\r\n\t}\r\n};\r\n\r\nvar helpers_canvas = exports$1;\r\n\r\n// DEPRECATIONS\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.helpers.canvas.clear instead.\r\n * @namespace Chart.helpers.clear\r\n * @deprecated since version 2.7.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers_core.clear = exports$1.clear;\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.helpers.canvas.roundedRect instead.\r\n * @namespace Chart.helpers.drawRoundedRectangle\r\n * @deprecated since version 2.7.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers_core.drawRoundedRectangle = function(ctx) {\r\n\tctx.beginPath();\r\n\texports$1.roundedRect.apply(exports$1, arguments);\r\n};\n\nvar defaults = {\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_set: function(scope, values) {\r\n\t\treturn helpers_core.merge(this[scope] || (this[scope] = {}), values);\r\n\t}\r\n};\r\n\r\n// TODO(v3): remove 'global' from namespace.  all default are global and\r\n// there's inconsistency around which options are under 'global'\r\ndefaults._set('global', {\r\n\tdefaultColor: 'rgba(0,0,0,0.1)',\r\n\tdefaultFontColor: '#666',\r\n\tdefaultFontFamily: \"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif\",\r\n\tdefaultFontSize: 12,\r\n\tdefaultFontStyle: 'normal',\r\n\tdefaultLineHeight: 1.2,\r\n\tshowLines: true\r\n});\r\n\r\nvar core_defaults = defaults;\n\nvar valueOrDefault = helpers_core.valueOrDefault;\r\n\r\n/**\r\n * Converts the given font object into a CSS font string.\r\n * @param {object} font - A font object.\r\n * @return {string} The CSS font string. See https://developer.mozilla.org/en-US/docs/Web/CSS/font\r\n * @private\r\n */\r\nfunction toFontString(font) {\r\n\tif (!font || helpers_core.isNullOrUndef(font.size) || helpers_core.isNullOrUndef(font.family)) {\r\n\t\treturn null;\r\n\t}\r\n\r\n\treturn (font.style ? font.style + ' ' : '')\r\n\t\t+ (font.weight ? font.weight + ' ' : '')\r\n\t\t+ font.size + 'px '\r\n\t\t+ font.family;\r\n}\r\n\r\n/**\r\n * @alias Chart.helpers.options\r\n * @namespace\r\n */\r\nvar helpers_options = {\r\n\t/**\r\n\t * Converts the given line height `value` in pixels for a specific font `size`.\r\n\t * @param {number|string} value - The lineHeight to parse (eg. 1.6, '14px', '75%', '1.6em').\r\n\t * @param {number} size - The font size (in pixels) used to resolve relative `value`.\r\n\t * @returns {number} The effective line height in pixels (size * 1.2 if value is invalid).\r\n\t * @see https://developer.mozilla.org/en-US/docs/Web/CSS/line-height\r\n\t * @since 2.7.0\r\n\t */\r\n\ttoLineHeight: function(value, size) {\r\n\t\tvar matches = ('' + value).match(/^(normal|(\\d+(?:\\.\\d+)?)(px|em|%)?)$/);\r\n\t\tif (!matches || matches[1] === 'normal') {\r\n\t\t\treturn size * 1.2;\r\n\t\t}\r\n\r\n\t\tvalue = +matches[2];\r\n\r\n\t\tswitch (matches[3]) {\r\n\t\tcase 'px':\r\n\t\t\treturn value;\r\n\t\tcase '%':\r\n\t\t\tvalue /= 100;\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\treturn size * value;\r\n\t},\r\n\r\n\t/**\r\n\t * Converts the given value into a padding object with pre-computed width/height.\r\n\t * @param {number|object} value - If a number, set the value to all TRBL component,\r\n\t *  else, if and object, use defined properties and sets undefined ones to 0.\r\n\t * @returns {object} The padding values (top, right, bottom, left, width, height)\r\n\t * @since 2.7.0\r\n\t */\r\n\ttoPadding: function(value) {\r\n\t\tvar t, r, b, l;\r\n\r\n\t\tif (helpers_core.isObject(value)) {\r\n\t\t\tt = +value.top || 0;\r\n\t\t\tr = +value.right || 0;\r\n\t\t\tb = +value.bottom || 0;\r\n\t\t\tl = +value.left || 0;\r\n\t\t} else {\r\n\t\t\tt = r = b = l = +value || 0;\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\ttop: t,\r\n\t\t\tright: r,\r\n\t\t\tbottom: b,\r\n\t\t\tleft: l,\r\n\t\t\theight: t + b,\r\n\t\t\twidth: l + r\r\n\t\t};\r\n\t},\r\n\r\n\t/**\r\n\t * Parses font options and returns the font object.\r\n\t * @param {object} options - A object that contains font options to be parsed.\r\n\t * @return {object} The font object.\r\n\t * @todo Support font.* options and renamed to toFont().\r\n\t * @private\r\n\t */\r\n\t_parseFont: function(options) {\r\n\t\tvar globalDefaults = core_defaults.global;\r\n\t\tvar size = valueOrDefault(options.fontSize, globalDefaults.defaultFontSize);\r\n\t\tvar font = {\r\n\t\t\tfamily: valueOrDefault(options.fontFamily, globalDefaults.defaultFontFamily),\r\n\t\t\tlineHeight: helpers_core.options.toLineHeight(valueOrDefault(options.lineHeight, globalDefaults.defaultLineHeight), size),\r\n\t\t\tsize: size,\r\n\t\t\tstyle: valueOrDefault(options.fontStyle, globalDefaults.defaultFontStyle),\r\n\t\t\tweight: null,\r\n\t\t\tstring: ''\r\n\t\t};\r\n\r\n\t\tfont.string = toFontString(font);\r\n\t\treturn font;\r\n\t},\r\n\r\n\t/**\r\n\t * Evaluates the given `inputs` sequentially and returns the first defined value.\r\n\t * @param {Array} inputs - An array of values, falling back to the last value.\r\n\t * @param {object} [context] - If defined and the current value is a function, the value\r\n\t * is called with `context` as first argument and the result becomes the new input.\r\n\t * @param {number} [index] - If defined and the current value is an array, the value\r\n\t * at `index` become the new input.\r\n\t * @param {object} [info] - object to return information about resolution in\r\n\t * @param {boolean} [info.cacheable] - Will be set to `false` if option is not cacheable.\r\n\t * @since 2.7.0\r\n\t */\r\n\tresolve: function(inputs, context, index, info) {\r\n\t\tvar cacheable = true;\r\n\t\tvar i, ilen, value;\r\n\r\n\t\tfor (i = 0, ilen = inputs.length; i < ilen; ++i) {\r\n\t\t\tvalue = inputs[i];\r\n\t\t\tif (value === undefined) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tif (context !== undefined && typeof value === 'function') {\r\n\t\t\t\tvalue = value(context);\r\n\t\t\t\tcacheable = false;\r\n\t\t\t}\r\n\t\t\tif (index !== undefined && helpers_core.isArray(value)) {\r\n\t\t\t\tvalue = value[index];\r\n\t\t\t\tcacheable = false;\r\n\t\t\t}\r\n\t\t\tif (value !== undefined) {\r\n\t\t\t\tif (info && !cacheable) {\r\n\t\t\t\t\tinfo.cacheable = false;\r\n\t\t\t\t}\r\n\t\t\t\treturn value;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n};\n\n/**\r\n * @alias Chart.helpers.math\r\n * @namespace\r\n */\r\nvar exports$2 = {\r\n\t/**\r\n\t * Returns an array of factors sorted from 1 to sqrt(value)\r\n\t * @private\r\n\t */\r\n\t_factorize: function(value) {\r\n\t\tvar result = [];\r\n\t\tvar sqrt = Math.sqrt(value);\r\n\t\tvar i;\r\n\r\n\t\tfor (i = 1; i < sqrt; i++) {\r\n\t\t\tif (value % i === 0) {\r\n\t\t\t\tresult.push(i);\r\n\t\t\t\tresult.push(value / i);\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (sqrt === (sqrt | 0)) { // if value is a square number\r\n\t\t\tresult.push(sqrt);\r\n\t\t}\r\n\r\n\t\tresult.sort(function(a, b) {\r\n\t\t\treturn a - b;\r\n\t\t}).pop();\r\n\t\treturn result;\r\n\t},\r\n\r\n\tlog10: Math.log10 || function(x) {\r\n\t\tvar exponent = Math.log(x) * Math.LOG10E; // Math.LOG10E = 1 / Math.LN10.\r\n\t\t// Check for whole powers of 10,\r\n\t\t// which due to floating point rounding error should be corrected.\r\n\t\tvar powerOf10 = Math.round(exponent);\r\n\t\tvar isPowerOf10 = x === Math.pow(10, powerOf10);\r\n\r\n\t\treturn isPowerOf10 ? powerOf10 : exponent;\r\n\t}\r\n};\r\n\r\nvar helpers_math = exports$2;\r\n\r\n// DEPRECATIONS\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.helpers.math.log10 instead.\r\n * @namespace Chart.helpers.log10\r\n * @deprecated since version 2.9.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers_core.log10 = exports$2.log10;\n\nvar getRtlAdapter = function(rectX, width) {\r\n\treturn {\r\n\t\tx: function(x) {\r\n\t\t\treturn rectX + rectX + width - x;\r\n\t\t},\r\n\t\tsetWidth: function(w) {\r\n\t\t\twidth = w;\r\n\t\t},\r\n\t\ttextAlign: function(align) {\r\n\t\t\tif (align === 'center') {\r\n\t\t\t\treturn align;\r\n\t\t\t}\r\n\t\t\treturn align === 'right' ? 'left' : 'right';\r\n\t\t},\r\n\t\txPlus: function(x, value) {\r\n\t\t\treturn x - value;\r\n\t\t},\r\n\t\tleftForLtr: function(x, itemWidth) {\r\n\t\t\treturn x - itemWidth;\r\n\t\t},\r\n\t};\r\n};\r\n\r\nvar getLtrAdapter = function() {\r\n\treturn {\r\n\t\tx: function(x) {\r\n\t\t\treturn x;\r\n\t\t},\r\n\t\tsetWidth: function(w) { // eslint-disable-line no-unused-vars\r\n\t\t},\r\n\t\ttextAlign: function(align) {\r\n\t\t\treturn align;\r\n\t\t},\r\n\t\txPlus: function(x, value) {\r\n\t\t\treturn x + value;\r\n\t\t},\r\n\t\tleftForLtr: function(x, _itemWidth) { // eslint-disable-line no-unused-vars\r\n\t\t\treturn x;\r\n\t\t},\r\n\t};\r\n};\r\n\r\nvar getAdapter = function(rtl, rectX, width) {\r\n\treturn rtl ? getRtlAdapter(rectX, width) : getLtrAdapter();\r\n};\r\n\r\nvar overrideTextDirection = function(ctx, direction) {\r\n\tvar style, original;\r\n\tif (direction === 'ltr' || direction === 'rtl') {\r\n\t\tstyle = ctx.canvas.style;\r\n\t\toriginal = [\r\n\t\t\tstyle.getPropertyValue('direction'),\r\n\t\t\tstyle.getPropertyPriority('direction'),\r\n\t\t];\r\n\r\n\t\tstyle.setProperty('direction', direction, 'important');\r\n\t\tctx.prevTextDirection = original;\r\n\t}\r\n};\r\n\r\nvar restoreTextDirection = function(ctx) {\r\n\tvar original = ctx.prevTextDirection;\r\n\tif (original !== undefined) {\r\n\t\tdelete ctx.prevTextDirection;\r\n\t\tctx.canvas.style.setProperty('direction', original[0], original[1]);\r\n\t}\r\n};\r\n\r\nvar helpers_rtl = {\r\n\tgetRtlAdapter: getAdapter,\r\n\toverrideTextDirection: overrideTextDirection,\r\n\trestoreTextDirection: restoreTextDirection,\r\n};\n\nvar helpers$1 = helpers_core;\r\nvar easing = helpers_easing;\r\nvar canvas = helpers_canvas;\r\nvar options = helpers_options;\r\nvar math = helpers_math;\r\nvar rtl = helpers_rtl;\nhelpers$1.easing = easing;\nhelpers$1.canvas = canvas;\nhelpers$1.options = options;\nhelpers$1.math = math;\nhelpers$1.rtl = rtl;\n\nfunction interpolate(start, view, model, ease) {\r\n\tvar keys = Object.keys(model);\r\n\tvar i, ilen, key, actual, origin, target, type, c0, c1;\r\n\r\n\tfor (i = 0, ilen = keys.length; i < ilen; ++i) {\r\n\t\tkey = keys[i];\r\n\r\n\t\ttarget = model[key];\r\n\r\n\t\t// if a value is added to the model after pivot() has been called, the view\r\n\t\t// doesn't contain it, so let's initialize the view to the target value.\r\n\t\tif (!view.hasOwnProperty(key)) {\r\n\t\t\tview[key] = target;\r\n\t\t}\r\n\r\n\t\tactual = view[key];\r\n\r\n\t\tif (actual === target || key[0] === '_') {\r\n\t\t\tcontinue;\r\n\t\t}\r\n\r\n\t\tif (!start.hasOwnProperty(key)) {\r\n\t\t\tstart[key] = actual;\r\n\t\t}\r\n\r\n\t\torigin = start[key];\r\n\r\n\t\ttype = typeof target;\r\n\r\n\t\tif (type === typeof origin) {\r\n\t\t\tif (type === 'string') {\r\n\t\t\t\tc0 = chartjsColor(origin);\r\n\t\t\t\tif (c0.valid) {\r\n\t\t\t\t\tc1 = chartjsColor(target);\r\n\t\t\t\t\tif (c1.valid) {\r\n\t\t\t\t\t\tview[key] = c1.mix(c0, ease).rgbString();\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} else if (helpers$1.isFinite(origin) && helpers$1.isFinite(target)) {\r\n\t\t\t\tview[key] = origin + (target - origin) * ease;\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tview[key] = target;\r\n\t}\r\n}\r\n\r\nvar Element = function(configuration) {\r\n\thelpers$1.extend(this, configuration);\r\n\tthis.initialize.apply(this, arguments);\r\n};\r\n\r\nhelpers$1.extend(Element.prototype, {\r\n\t_type: undefined,\r\n\r\n\tinitialize: function() {\r\n\t\tthis.hidden = false;\r\n\t},\r\n\r\n\tpivot: function() {\r\n\t\tvar me = this;\r\n\t\tif (!me._view) {\r\n\t\t\tme._view = helpers$1.extend({}, me._model);\r\n\t\t}\r\n\t\tme._start = {};\r\n\t\treturn me;\r\n\t},\r\n\r\n\ttransition: function(ease) {\r\n\t\tvar me = this;\r\n\t\tvar model = me._model;\r\n\t\tvar start = me._start;\r\n\t\tvar view = me._view;\r\n\r\n\t\t// No animation -> No Transition\r\n\t\tif (!model || ease === 1) {\r\n\t\t\tme._view = helpers$1.extend({}, model);\r\n\t\t\tme._start = null;\r\n\t\t\treturn me;\r\n\t\t}\r\n\r\n\t\tif (!view) {\r\n\t\t\tview = me._view = {};\r\n\t\t}\r\n\r\n\t\tif (!start) {\r\n\t\t\tstart = me._start = {};\r\n\t\t}\r\n\r\n\t\tinterpolate(start, view, model, ease);\r\n\r\n\t\treturn me;\r\n\t},\r\n\r\n\ttooltipPosition: function() {\r\n\t\treturn {\r\n\t\t\tx: this._model.x,\r\n\t\t\ty: this._model.y\r\n\t\t};\r\n\t},\r\n\r\n\thasValue: function() {\r\n\t\treturn helpers$1.isNumber(this._model.x) && helpers$1.isNumber(this._model.y);\r\n\t}\r\n});\r\n\r\nElement.extend = helpers$1.inherits;\r\n\r\nvar core_element = Element;\n\nvar exports$3 = core_element.extend({\r\n\tchart: null, // the animation associated chart instance\r\n\tcurrentStep: 0, // the current animation step\r\n\tnumSteps: 60, // default number of steps\r\n\teasing: '', // the easing to use for this animation\r\n\trender: null, // render function used by the animation service\r\n\r\n\tonAnimationProgress: null, // user specified callback to fire on each step of the animation\r\n\tonAnimationComplete: null, // user specified callback to fire when the animation finishes\r\n});\r\n\r\nvar core_animation = exports$3;\r\n\r\n// DEPRECATIONS\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.Animation instead\r\n * @prop Chart.Animation#animationObject\r\n * @deprecated since version 2.6.0\r\n * @todo remove at version 3\r\n */\r\nObject.defineProperty(exports$3.prototype, 'animationObject', {\r\n\tget: function() {\r\n\t\treturn this;\r\n\t}\r\n});\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.Animation#chart instead\r\n * @prop Chart.Animation#chartInstance\r\n * @deprecated since version 2.6.0\r\n * @todo remove at version 3\r\n */\r\nObject.defineProperty(exports$3.prototype, 'chartInstance', {\r\n\tget: function() {\r\n\t\treturn this.chart;\r\n\t},\r\n\tset: function(value) {\r\n\t\tthis.chart = value;\r\n\t}\r\n});\n\ncore_defaults._set('global', {\r\n\tanimation: {\r\n\t\tduration: 1000,\r\n\t\teasing: 'easeOutQuart',\r\n\t\tonProgress: helpers$1.noop,\r\n\t\tonComplete: helpers$1.noop\r\n\t}\r\n});\r\n\r\nvar core_animations = {\r\n\tanimations: [],\r\n\trequest: null,\r\n\r\n\t/**\r\n\t * @param {Chart} chart - The chart to animate.\r\n\t * @param {Chart.Animation} animation - The animation that we will animate.\r\n\t * @param {number} duration - The animation duration in ms.\r\n\t * @param {boolean} lazy - if true, the chart is not marked as animating to enable more responsive interactions\r\n\t */\r\n\taddAnimation: function(chart, animation, duration, lazy) {\r\n\t\tvar animations = this.animations;\r\n\t\tvar i, ilen;\r\n\r\n\t\tanimation.chart = chart;\r\n\t\tanimation.startTime = Date.now();\r\n\t\tanimation.duration = duration;\r\n\r\n\t\tif (!lazy) {\r\n\t\t\tchart.animating = true;\r\n\t\t}\r\n\r\n\t\tfor (i = 0, ilen = animations.length; i < ilen; ++i) {\r\n\t\t\tif (animations[i].chart === chart) {\r\n\t\t\t\tanimations[i] = animation;\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tanimations.push(animation);\r\n\r\n\t\t// If there are no animations queued, manually kickstart a digest, for lack of a better word\r\n\t\tif (animations.length === 1) {\r\n\t\t\tthis.requestAnimationFrame();\r\n\t\t}\r\n\t},\r\n\r\n\tcancelAnimation: function(chart) {\r\n\t\tvar index = helpers$1.findIndex(this.animations, function(animation) {\r\n\t\t\treturn animation.chart === chart;\r\n\t\t});\r\n\r\n\t\tif (index !== -1) {\r\n\t\t\tthis.animations.splice(index, 1);\r\n\t\t\tchart.animating = false;\r\n\t\t}\r\n\t},\r\n\r\n\trequestAnimationFrame: function() {\r\n\t\tvar me = this;\r\n\t\tif (me.request === null) {\r\n\t\t\t// Skip animation frame requests until the active one is executed.\r\n\t\t\t// This can happen when processing mouse events, e.g. 'mousemove'\r\n\t\t\t// and 'mouseout' events will trigger multiple renders.\r\n\t\t\tme.request = helpers$1.requestAnimFrame.call(window, function() {\r\n\t\t\t\tme.request = null;\r\n\t\t\t\tme.startDigest();\r\n\t\t\t});\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tstartDigest: function() {\r\n\t\tvar me = this;\r\n\r\n\t\tme.advance();\r\n\r\n\t\t// Do we have more stuff to animate?\r\n\t\tif (me.animations.length > 0) {\r\n\t\t\tme.requestAnimationFrame();\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tadvance: function() {\r\n\t\tvar animations = this.animations;\r\n\t\tvar animation, chart, numSteps, nextStep;\r\n\t\tvar i = 0;\r\n\r\n\t\t// 1 animation per chart, so we are looping charts here\r\n\t\twhile (i < animations.length) {\r\n\t\t\tanimation = animations[i];\r\n\t\t\tchart = animation.chart;\r\n\t\t\tnumSteps = animation.numSteps;\r\n\r\n\t\t\t// Make sure that currentStep starts at 1\r\n\t\t\t// https://github.com/chartjs/Chart.js/issues/6104\r\n\t\t\tnextStep = Math.floor((Date.now() - animation.startTime) / animation.duration * numSteps) + 1;\r\n\t\t\tanimation.currentStep = Math.min(nextStep, numSteps);\r\n\r\n\t\t\thelpers$1.callback(animation.render, [chart, animation], chart);\r\n\t\t\thelpers$1.callback(animation.onAnimationProgress, [animation], chart);\r\n\r\n\t\t\tif (animation.currentStep >= numSteps) {\r\n\t\t\t\thelpers$1.callback(animation.onAnimationComplete, [animation], chart);\r\n\t\t\t\tchart.animating = false;\r\n\t\t\t\tanimations.splice(i, 1);\r\n\t\t\t} else {\r\n\t\t\t\t++i;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n};\n\nvar resolve = helpers$1.options.resolve;\r\n\r\nvar arrayEvents = ['push', 'pop', 'shift', 'splice', 'unshift'];\r\n\r\n/**\r\n * Hooks the array methods that add or remove values ('push', pop', 'shift', 'splice',\r\n * 'unshift') and notify the listener AFTER the array has been altered. Listeners are\r\n * called on the 'onData*' callbacks (e.g. onDataPush, etc.) with same arguments.\r\n */\r\nfunction listenArrayEvents(array, listener) {\r\n\tif (array._chartjs) {\r\n\t\tarray._chartjs.listeners.push(listener);\r\n\t\treturn;\r\n\t}\r\n\r\n\tObject.defineProperty(array, '_chartjs', {\r\n\t\tconfigurable: true,\r\n\t\tenumerable: false,\r\n\t\tvalue: {\r\n\t\t\tlisteners: [listener]\r\n\t\t}\r\n\t});\r\n\r\n\tarrayEvents.forEach(function(key) {\r\n\t\tvar method = 'onData' + key.charAt(0).toUpperCase() + key.slice(1);\r\n\t\tvar base = array[key];\r\n\r\n\t\tObject.defineProperty(array, key, {\r\n\t\t\tconfigurable: true,\r\n\t\t\tenumerable: false,\r\n\t\t\tvalue: function() {\r\n\t\t\t\tvar args = Array.prototype.slice.call(arguments);\r\n\t\t\t\tvar res = base.apply(this, args);\r\n\r\n\t\t\t\thelpers$1.each(array._chartjs.listeners, function(object) {\r\n\t\t\t\t\tif (typeof object[method] === 'function') {\r\n\t\t\t\t\t\tobject[method].apply(object, args);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\treturn res;\r\n\t\t\t}\r\n\t\t});\r\n\t});\r\n}\r\n\r\n/**\r\n * Removes the given array event listener and cleanup extra attached properties (such as\r\n * the _chartjs stub and overridden methods) if array doesn't have any more listeners.\r\n */\r\nfunction unlistenArrayEvents(array, listener) {\r\n\tvar stub = array._chartjs;\r\n\tif (!stub) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tvar listeners = stub.listeners;\r\n\tvar index = listeners.indexOf(listener);\r\n\tif (index !== -1) {\r\n\t\tlisteners.splice(index, 1);\r\n\t}\r\n\r\n\tif (listeners.length > 0) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tarrayEvents.forEach(function(key) {\r\n\t\tdelete array[key];\r\n\t});\r\n\r\n\tdelete array._chartjs;\r\n}\r\n\r\n// Base class for all dataset controllers (line, bar, etc)\r\nvar DatasetController = function(chart, datasetIndex) {\r\n\tthis.initialize(chart, datasetIndex);\r\n};\r\n\r\nhelpers$1.extend(DatasetController.prototype, {\r\n\r\n\t/**\r\n\t * Element type used to generate a meta dataset (e.g. Chart.element.Line).\r\n\t * @type {Chart.core.element}\r\n\t */\r\n\tdatasetElementType: null,\r\n\r\n\t/**\r\n\t * Element type used to generate a meta data (e.g. Chart.element.Point).\r\n\t * @type {Chart.core.element}\r\n\t */\r\n\tdataElementType: null,\r\n\r\n\t/**\r\n\t * Dataset element option keys to be resolved in _resolveDatasetElementOptions.\r\n\t * A derived controller may override this to resolve controller-specific options.\r\n\t * The keys defined here are for backward compatibility for legend styles.\r\n\t * @private\r\n\t */\r\n\t_datasetElementOptions: [\r\n\t\t'backgroundColor',\r\n\t\t'borderCapStyle',\r\n\t\t'borderColor',\r\n\t\t'borderDash',\r\n\t\t'borderDashOffset',\r\n\t\t'borderJoinStyle',\r\n\t\t'borderWidth'\r\n\t],\r\n\r\n\t/**\r\n\t * Data element option keys to be resolved in _resolveDataElementOptions.\r\n\t * A derived controller may override this to resolve controller-specific options.\r\n\t * The keys defined here are for backward compatibility for legend styles.\r\n\t * @private\r\n\t */\r\n\t_dataElementOptions: [\r\n\t\t'backgroundColor',\r\n\t\t'borderColor',\r\n\t\t'borderWidth',\r\n\t\t'pointStyle'\r\n\t],\r\n\r\n\tinitialize: function(chart, datasetIndex) {\r\n\t\tvar me = this;\r\n\t\tme.chart = chart;\r\n\t\tme.index = datasetIndex;\r\n\t\tme.linkScales();\r\n\t\tme.addElements();\r\n\t\tme._type = me.getMeta().type;\r\n\t},\r\n\r\n\tupdateIndex: function(datasetIndex) {\r\n\t\tthis.index = datasetIndex;\r\n\t},\r\n\r\n\tlinkScales: function() {\r\n\t\tvar me = this;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar chart = me.chart;\r\n\t\tvar scales = chart.scales;\r\n\t\tvar dataset = me.getDataset();\r\n\t\tvar scalesOpts = chart.options.scales;\r\n\r\n\t\tif (meta.xAxisID === null || !(meta.xAxisID in scales) || dataset.xAxisID) {\r\n\t\t\tmeta.xAxisID = dataset.xAxisID || scalesOpts.xAxes[0].id;\r\n\t\t}\r\n\t\tif (meta.yAxisID === null || !(meta.yAxisID in scales) || dataset.yAxisID) {\r\n\t\t\tmeta.yAxisID = dataset.yAxisID || scalesOpts.yAxes[0].id;\r\n\t\t}\r\n\t},\r\n\r\n\tgetDataset: function() {\r\n\t\treturn this.chart.data.datasets[this.index];\r\n\t},\r\n\r\n\tgetMeta: function() {\r\n\t\treturn this.chart.getDatasetMeta(this.index);\r\n\t},\r\n\r\n\tgetScaleForId: function(scaleID) {\r\n\t\treturn this.chart.scales[scaleID];\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getValueScaleId: function() {\r\n\t\treturn this.getMeta().yAxisID;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getIndexScaleId: function() {\r\n\t\treturn this.getMeta().xAxisID;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getValueScale: function() {\r\n\t\treturn this.getScaleForId(this._getValueScaleId());\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getIndexScale: function() {\r\n\t\treturn this.getScaleForId(this._getIndexScaleId());\r\n\t},\r\n\r\n\treset: function() {\r\n\t\tthis._update(true);\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tdestroy: function() {\r\n\t\tif (this._data) {\r\n\t\t\tunlistenArrayEvents(this._data, this);\r\n\t\t}\r\n\t},\r\n\r\n\tcreateMetaDataset: function() {\r\n\t\tvar me = this;\r\n\t\tvar type = me.datasetElementType;\r\n\t\treturn type && new type({\r\n\t\t\t_chart: me.chart,\r\n\t\t\t_datasetIndex: me.index\r\n\t\t});\r\n\t},\r\n\r\n\tcreateMetaData: function(index) {\r\n\t\tvar me = this;\r\n\t\tvar type = me.dataElementType;\r\n\t\treturn type && new type({\r\n\t\t\t_chart: me.chart,\r\n\t\t\t_datasetIndex: me.index,\r\n\t\t\t_index: index\r\n\t\t});\r\n\t},\r\n\r\n\taddElements: function() {\r\n\t\tvar me = this;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar data = me.getDataset().data || [];\r\n\t\tvar metaData = meta.data;\r\n\t\tvar i, ilen;\r\n\r\n\t\tfor (i = 0, ilen = data.length; i < ilen; ++i) {\r\n\t\t\tmetaData[i] = metaData[i] || me.createMetaData(i);\r\n\t\t}\r\n\r\n\t\tmeta.dataset = meta.dataset || me.createMetaDataset();\r\n\t},\r\n\r\n\taddElementAndReset: function(index) {\r\n\t\tvar element = this.createMetaData(index);\r\n\t\tthis.getMeta().data.splice(index, 0, element);\r\n\t\tthis.updateElement(element, index, true);\r\n\t},\r\n\r\n\tbuildOrUpdateElements: function() {\r\n\t\tvar me = this;\r\n\t\tvar dataset = me.getDataset();\r\n\t\tvar data = dataset.data || (dataset.data = []);\r\n\r\n\t\t// In order to correctly handle data addition/deletion animation (an thus simulate\r\n\t\t// real-time charts), we need to monitor these data modifications and synchronize\r\n\t\t// the internal meta data accordingly.\r\n\t\tif (me._data !== data) {\r\n\t\t\tif (me._data) {\r\n\t\t\t\t// This case happens when the user replaced the data array instance.\r\n\t\t\t\tunlistenArrayEvents(me._data, me);\r\n\t\t\t}\r\n\r\n\t\t\tif (data && Object.isExtensible(data)) {\r\n\t\t\t\tlistenArrayEvents(data, me);\r\n\t\t\t}\r\n\t\t\tme._data = data;\r\n\t\t}\r\n\r\n\t\t// Re-sync meta data in case the user replaced the data array or if we missed\r\n\t\t// any updates and so make sure that we handle number of datapoints changing.\r\n\t\tme.resyncElements();\r\n\t},\r\n\r\n\t/**\r\n\t * Returns the merged user-supplied and default dataset-level options\r\n\t * @private\r\n\t */\r\n\t_configure: function() {\r\n\t\tvar me = this;\r\n\t\tme._config = helpers$1.merge(Object.create(null), [\r\n\t\t\tme.chart.options.datasets[me._type],\r\n\t\t\tme.getDataset(),\r\n\t\t], {\r\n\t\t\tmerger: function(key, target, source) {\r\n\t\t\t\tif (key !== '_meta' && key !== 'data') {\r\n\t\t\t\t\thelpers$1._merger(key, target, source);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t},\r\n\r\n\t_update: function(reset) {\r\n\t\tvar me = this;\r\n\t\tme._configure();\r\n\t\tme._cachedDataOpts = null;\r\n\t\tme.update(reset);\r\n\t},\r\n\r\n\tupdate: helpers$1.noop,\r\n\r\n\ttransition: function(easingValue) {\r\n\t\tvar meta = this.getMeta();\r\n\t\tvar elements = meta.data || [];\r\n\t\tvar ilen = elements.length;\r\n\t\tvar i = 0;\r\n\r\n\t\tfor (; i < ilen; ++i) {\r\n\t\t\telements[i].transition(easingValue);\r\n\t\t}\r\n\r\n\t\tif (meta.dataset) {\r\n\t\t\tmeta.dataset.transition(easingValue);\r\n\t\t}\r\n\t},\r\n\r\n\tdraw: function() {\r\n\t\tvar meta = this.getMeta();\r\n\t\tvar elements = meta.data || [];\r\n\t\tvar ilen = elements.length;\r\n\t\tvar i = 0;\r\n\r\n\t\tif (meta.dataset) {\r\n\t\t\tmeta.dataset.draw();\r\n\t\t}\r\n\r\n\t\tfor (; i < ilen; ++i) {\r\n\t\t\telements[i].draw();\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Returns a set of predefined style properties that should be used to represent the dataset\r\n\t * or the data if the index is specified\r\n\t * @param {number} index - data index\r\n\t * @return {IStyleInterface} style object\r\n\t */\r\n\tgetStyle: function(index) {\r\n\t\tvar me = this;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar dataset = meta.dataset;\r\n\t\tvar style;\r\n\r\n\t\tme._configure();\r\n\t\tif (dataset && index === undefined) {\r\n\t\t\tstyle = me._resolveDatasetElementOptions(dataset || {});\r\n\t\t} else {\r\n\t\t\tindex = index || 0;\r\n\t\t\tstyle = me._resolveDataElementOptions(meta.data[index] || {}, index);\r\n\t\t}\r\n\r\n\t\tif (style.fill === false || style.fill === null) {\r\n\t\t\tstyle.backgroundColor = style.borderColor;\r\n\t\t}\r\n\r\n\t\treturn style;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_resolveDatasetElementOptions: function(element, hover) {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar datasetOpts = me._config;\r\n\t\tvar custom = element.custom || {};\r\n\t\tvar options = chart.options.elements[me.datasetElementType.prototype._type] || {};\r\n\t\tvar elementOptions = me._datasetElementOptions;\r\n\t\tvar values = {};\r\n\t\tvar i, ilen, key, readKey;\r\n\r\n\t\t// Scriptable options\r\n\t\tvar context = {\r\n\t\t\tchart: chart,\r\n\t\t\tdataset: me.getDataset(),\r\n\t\t\tdatasetIndex: me.index,\r\n\t\t\thover: hover\r\n\t\t};\r\n\r\n\t\tfor (i = 0, ilen = elementOptions.length; i < ilen; ++i) {\r\n\t\t\tkey = elementOptions[i];\r\n\t\t\treadKey = hover ? 'hover' + key.charAt(0).toUpperCase() + key.slice(1) : key;\r\n\t\t\tvalues[key] = resolve([\r\n\t\t\t\tcustom[readKey],\r\n\t\t\t\tdatasetOpts[readKey],\r\n\t\t\t\toptions[readKey]\r\n\t\t\t], context);\r\n\t\t}\r\n\r\n\t\treturn values;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_resolveDataElementOptions: function(element, index) {\r\n\t\tvar me = this;\r\n\t\tvar custom = element && element.custom;\r\n\t\tvar cached = me._cachedDataOpts;\r\n\t\tif (cached && !custom) {\r\n\t\t\treturn cached;\r\n\t\t}\r\n\t\tvar chart = me.chart;\r\n\t\tvar datasetOpts = me._config;\r\n\t\tvar options = chart.options.elements[me.dataElementType.prototype._type] || {};\r\n\t\tvar elementOptions = me._dataElementOptions;\r\n\t\tvar values = {};\r\n\r\n\t\t// Scriptable options\r\n\t\tvar context = {\r\n\t\t\tchart: chart,\r\n\t\t\tdataIndex: index,\r\n\t\t\tdataset: me.getDataset(),\r\n\t\t\tdatasetIndex: me.index\r\n\t\t};\r\n\r\n\t\t// `resolve` sets cacheable to `false` if any option is indexed or scripted\r\n\t\tvar info = {cacheable: !custom};\r\n\r\n\t\tvar keys, i, ilen, key;\r\n\r\n\t\tcustom = custom || {};\r\n\r\n\t\tif (helpers$1.isArray(elementOptions)) {\r\n\t\t\tfor (i = 0, ilen = elementOptions.length; i < ilen; ++i) {\r\n\t\t\t\tkey = elementOptions[i];\r\n\t\t\t\tvalues[key] = resolve([\r\n\t\t\t\t\tcustom[key],\r\n\t\t\t\t\tdatasetOpts[key],\r\n\t\t\t\t\toptions[key]\r\n\t\t\t\t], context, index, info);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tkeys = Object.keys(elementOptions);\r\n\t\t\tfor (i = 0, ilen = keys.length; i < ilen; ++i) {\r\n\t\t\t\tkey = keys[i];\r\n\t\t\t\tvalues[key] = resolve([\r\n\t\t\t\t\tcustom[key],\r\n\t\t\t\t\tdatasetOpts[elementOptions[key]],\r\n\t\t\t\t\tdatasetOpts[key],\r\n\t\t\t\t\toptions[key]\r\n\t\t\t\t], context, index, info);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (info.cacheable) {\r\n\t\t\tme._cachedDataOpts = Object.freeze(values);\r\n\t\t}\r\n\r\n\t\treturn values;\r\n\t},\r\n\r\n\tremoveHoverStyle: function(element) {\r\n\t\thelpers$1.merge(element._model, element.$previousStyle || {});\r\n\t\tdelete element.$previousStyle;\r\n\t},\r\n\r\n\tsetHoverStyle: function(element) {\r\n\t\tvar dataset = this.chart.data.datasets[element._datasetIndex];\r\n\t\tvar index = element._index;\r\n\t\tvar custom = element.custom || {};\r\n\t\tvar model = element._model;\r\n\t\tvar getHoverColor = helpers$1.getHoverColor;\r\n\r\n\t\telement.$previousStyle = {\r\n\t\t\tbackgroundColor: model.backgroundColor,\r\n\t\t\tborderColor: model.borderColor,\r\n\t\t\tborderWidth: model.borderWidth\r\n\t\t};\r\n\r\n\t\tmodel.backgroundColor = resolve([custom.hoverBackgroundColor, dataset.hoverBackgroundColor, getHoverColor(model.backgroundColor)], undefined, index);\r\n\t\tmodel.borderColor = resolve([custom.hoverBorderColor, dataset.hoverBorderColor, getHoverColor(model.borderColor)], undefined, index);\r\n\t\tmodel.borderWidth = resolve([custom.hoverBorderWidth, dataset.hoverBorderWidth, model.borderWidth], undefined, index);\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_removeDatasetHoverStyle: function() {\r\n\t\tvar element = this.getMeta().dataset;\r\n\r\n\t\tif (element) {\r\n\t\t\tthis.removeHoverStyle(element);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_setDatasetHoverStyle: function() {\r\n\t\tvar element = this.getMeta().dataset;\r\n\t\tvar prev = {};\r\n\t\tvar i, ilen, key, keys, hoverOptions, model;\r\n\r\n\t\tif (!element) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tmodel = element._model;\r\n\t\thoverOptions = this._resolveDatasetElementOptions(element, true);\r\n\r\n\t\tkeys = Object.keys(hoverOptions);\r\n\t\tfor (i = 0, ilen = keys.length; i < ilen; ++i) {\r\n\t\t\tkey = keys[i];\r\n\t\t\tprev[key] = model[key];\r\n\t\t\tmodel[key] = hoverOptions[key];\r\n\t\t}\r\n\r\n\t\telement.$previousStyle = prev;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tresyncElements: function() {\r\n\t\tvar me = this;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar data = me.getDataset().data;\r\n\t\tvar numMeta = meta.data.length;\r\n\t\tvar numData = data.length;\r\n\r\n\t\tif (numData < numMeta) {\r\n\t\t\tmeta.data.splice(numData, numMeta - numData);\r\n\t\t} else if (numData > numMeta) {\r\n\t\t\tme.insertElements(numMeta, numData - numMeta);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tinsertElements: function(start, count) {\r\n\t\tfor (var i = 0; i < count; ++i) {\r\n\t\t\tthis.addElementAndReset(start + i);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tonDataPush: function() {\r\n\t\tvar count = arguments.length;\r\n\t\tthis.insertElements(this.getDataset().data.length - count, count);\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tonDataPop: function() {\r\n\t\tthis.getMeta().data.pop();\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tonDataShift: function() {\r\n\t\tthis.getMeta().data.shift();\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tonDataSplice: function(start, count) {\r\n\t\tthis.getMeta().data.splice(start, count);\r\n\t\tthis.insertElements(start, arguments.length - 2);\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tonDataUnshift: function() {\r\n\t\tthis.insertElements(0, arguments.length);\r\n\t}\r\n});\r\n\r\nDatasetController.extend = helpers$1.inherits;\r\n\r\nvar core_datasetController = DatasetController;\n\nvar TAU = Math.PI * 2;\r\n\r\ncore_defaults._set('global', {\r\n\telements: {\r\n\t\tarc: {\r\n\t\t\tbackgroundColor: core_defaults.global.defaultColor,\r\n\t\t\tborderColor: '#fff',\r\n\t\t\tborderWidth: 2,\r\n\t\t\tborderAlign: 'center'\r\n\t\t}\r\n\t}\r\n});\r\n\r\nfunction clipArc(ctx, arc) {\r\n\tvar startAngle = arc.startAngle;\r\n\tvar endAngle = arc.endAngle;\r\n\tvar pixelMargin = arc.pixelMargin;\r\n\tvar angleMargin = pixelMargin / arc.outerRadius;\r\n\tvar x = arc.x;\r\n\tvar y = arc.y;\r\n\r\n\t// Draw an inner border by cliping the arc and drawing a double-width border\r\n\t// Enlarge the clipping arc by 0.33 pixels to eliminate glitches between borders\r\n\tctx.beginPath();\r\n\tctx.arc(x, y, arc.outerRadius, startAngle - angleMargin, endAngle + angleMargin);\r\n\tif (arc.innerRadius > pixelMargin) {\r\n\t\tangleMargin = pixelMargin / arc.innerRadius;\r\n\t\tctx.arc(x, y, arc.innerRadius - pixelMargin, endAngle + angleMargin, startAngle - angleMargin, true);\r\n\t} else {\r\n\t\tctx.arc(x, y, pixelMargin, endAngle + Math.PI / 2, startAngle - Math.PI / 2);\r\n\t}\r\n\tctx.closePath();\r\n\tctx.clip();\r\n}\r\n\r\nfunction drawFullCircleBorders(ctx, vm, arc, inner) {\r\n\tvar endAngle = arc.endAngle;\r\n\tvar i;\r\n\r\n\tif (inner) {\r\n\t\tarc.endAngle = arc.startAngle + TAU;\r\n\t\tclipArc(ctx, arc);\r\n\t\tarc.endAngle = endAngle;\r\n\t\tif (arc.endAngle === arc.startAngle && arc.fullCircles) {\r\n\t\t\tarc.endAngle += TAU;\r\n\t\t\tarc.fullCircles--;\r\n\t\t}\r\n\t}\r\n\r\n\tctx.beginPath();\r\n\tctx.arc(arc.x, arc.y, arc.innerRadius, arc.startAngle + TAU, arc.startAngle, true);\r\n\tfor (i = 0; i < arc.fullCircles; ++i) {\r\n\t\tctx.stroke();\r\n\t}\r\n\r\n\tctx.beginPath();\r\n\tctx.arc(arc.x, arc.y, vm.outerRadius, arc.startAngle, arc.startAngle + TAU);\r\n\tfor (i = 0; i < arc.fullCircles; ++i) {\r\n\t\tctx.stroke();\r\n\t}\r\n}\r\n\r\nfunction drawBorder(ctx, vm, arc) {\r\n\tvar inner = vm.borderAlign === 'inner';\r\n\r\n\tif (inner) {\r\n\t\tctx.lineWidth = vm.borderWidth * 2;\r\n\t\tctx.lineJoin = 'round';\r\n\t} else {\r\n\t\tctx.lineWidth = vm.borderWidth;\r\n\t\tctx.lineJoin = 'bevel';\r\n\t}\r\n\r\n\tif (arc.fullCircles) {\r\n\t\tdrawFullCircleBorders(ctx, vm, arc, inner);\r\n\t}\r\n\r\n\tif (inner) {\r\n\t\tclipArc(ctx, arc);\r\n\t}\r\n\r\n\tctx.beginPath();\r\n\tctx.arc(arc.x, arc.y, vm.outerRadius, arc.startAngle, arc.endAngle);\r\n\tctx.arc(arc.x, arc.y, arc.innerRadius, arc.endAngle, arc.startAngle, true);\r\n\tctx.closePath();\r\n\tctx.stroke();\r\n}\r\n\r\nvar element_arc = core_element.extend({\r\n\t_type: 'arc',\r\n\r\n\tinLabelRange: function(mouseX) {\r\n\t\tvar vm = this._view;\r\n\r\n\t\tif (vm) {\r\n\t\t\treturn (Math.pow(mouseX - vm.x, 2) < Math.pow(vm.radius + vm.hoverRadius, 2));\r\n\t\t}\r\n\t\treturn false;\r\n\t},\r\n\r\n\tinRange: function(chartX, chartY) {\r\n\t\tvar vm = this._view;\r\n\r\n\t\tif (vm) {\r\n\t\t\tvar pointRelativePosition = helpers$1.getAngleFromPoint(vm, {x: chartX, y: chartY});\r\n\t\t\tvar angle = pointRelativePosition.angle;\r\n\t\t\tvar distance = pointRelativePosition.distance;\r\n\r\n\t\t\t// Sanitise angle range\r\n\t\t\tvar startAngle = vm.startAngle;\r\n\t\t\tvar endAngle = vm.endAngle;\r\n\t\t\twhile (endAngle < startAngle) {\r\n\t\t\t\tendAngle += TAU;\r\n\t\t\t}\r\n\t\t\twhile (angle > endAngle) {\r\n\t\t\t\tangle -= TAU;\r\n\t\t\t}\r\n\t\t\twhile (angle < startAngle) {\r\n\t\t\t\tangle += TAU;\r\n\t\t\t}\r\n\r\n\t\t\t// Check if within the range of the open/close angle\r\n\t\t\tvar betweenAngles = (angle >= startAngle && angle <= endAngle);\r\n\t\t\tvar withinRadius = (distance >= vm.innerRadius && distance <= vm.outerRadius);\r\n\r\n\t\t\treturn (betweenAngles && withinRadius);\r\n\t\t}\r\n\t\treturn false;\r\n\t},\r\n\r\n\tgetCenterPoint: function() {\r\n\t\tvar vm = this._view;\r\n\t\tvar halfAngle = (vm.startAngle + vm.endAngle) / 2;\r\n\t\tvar halfRadius = (vm.innerRadius + vm.outerRadius) / 2;\r\n\t\treturn {\r\n\t\t\tx: vm.x + Math.cos(halfAngle) * halfRadius,\r\n\t\t\ty: vm.y + Math.sin(halfAngle) * halfRadius\r\n\t\t};\r\n\t},\r\n\r\n\tgetArea: function() {\r\n\t\tvar vm = this._view;\r\n\t\treturn Math.PI * ((vm.endAngle - vm.startAngle) / (2 * Math.PI)) * (Math.pow(vm.outerRadius, 2) - Math.pow(vm.innerRadius, 2));\r\n\t},\r\n\r\n\ttooltipPosition: function() {\r\n\t\tvar vm = this._view;\r\n\t\tvar centreAngle = vm.startAngle + ((vm.endAngle - vm.startAngle) / 2);\r\n\t\tvar rangeFromCentre = (vm.outerRadius - vm.innerRadius) / 2 + vm.innerRadius;\r\n\r\n\t\treturn {\r\n\t\t\tx: vm.x + (Math.cos(centreAngle) * rangeFromCentre),\r\n\t\t\ty: vm.y + (Math.sin(centreAngle) * rangeFromCentre)\r\n\t\t};\r\n\t},\r\n\r\n\tdraw: function() {\r\n\t\tvar ctx = this._chart.ctx;\r\n\t\tvar vm = this._view;\r\n\t\tvar pixelMargin = (vm.borderAlign === 'inner') ? 0.33 : 0;\r\n\t\tvar arc = {\r\n\t\t\tx: vm.x,\r\n\t\t\ty: vm.y,\r\n\t\t\tinnerRadius: vm.innerRadius,\r\n\t\t\touterRadius: Math.max(vm.outerRadius - pixelMargin, 0),\r\n\t\t\tpixelMargin: pixelMargin,\r\n\t\t\tstartAngle: vm.startAngle,\r\n\t\t\tendAngle: vm.endAngle,\r\n\t\t\tfullCircles: Math.floor(vm.circumference / TAU)\r\n\t\t};\r\n\t\tvar i;\r\n\r\n\t\tctx.save();\r\n\r\n\t\tctx.fillStyle = vm.backgroundColor;\r\n\t\tctx.strokeStyle = vm.borderColor;\r\n\r\n\t\tif (arc.fullCircles) {\r\n\t\t\tarc.endAngle = arc.startAngle + TAU;\r\n\t\t\tctx.beginPath();\r\n\t\t\tctx.arc(arc.x, arc.y, arc.outerRadius, arc.startAngle, arc.endAngle);\r\n\t\t\tctx.arc(arc.x, arc.y, arc.innerRadius, arc.endAngle, arc.startAngle, true);\r\n\t\t\tctx.closePath();\r\n\t\t\tfor (i = 0; i < arc.fullCircles; ++i) {\r\n\t\t\t\tctx.fill();\r\n\t\t\t}\r\n\t\t\tarc.endAngle = arc.startAngle + vm.circumference % TAU;\r\n\t\t}\r\n\r\n\t\tctx.beginPath();\r\n\t\tctx.arc(arc.x, arc.y, arc.outerRadius, arc.startAngle, arc.endAngle);\r\n\t\tctx.arc(arc.x, arc.y, arc.innerRadius, arc.endAngle, arc.startAngle, true);\r\n\t\tctx.closePath();\r\n\t\tctx.fill();\r\n\r\n\t\tif (vm.borderWidth) {\r\n\t\t\tdrawBorder(ctx, vm, arc);\r\n\t\t}\r\n\r\n\t\tctx.restore();\r\n\t}\r\n});\n\nvar valueOrDefault$1 = helpers$1.valueOrDefault;\r\n\r\nvar defaultColor = core_defaults.global.defaultColor;\r\n\r\ncore_defaults._set('global', {\r\n\telements: {\r\n\t\tline: {\r\n\t\t\ttension: 0.4,\r\n\t\t\tbackgroundColor: defaultColor,\r\n\t\t\tborderWidth: 3,\r\n\t\t\tborderColor: defaultColor,\r\n\t\t\tborderCapStyle: 'butt',\r\n\t\t\tborderDash: [],\r\n\t\t\tborderDashOffset: 0.0,\r\n\t\t\tborderJoinStyle: 'miter',\r\n\t\t\tcapBezierPoints: true,\r\n\t\t\tfill: true, // do we fill in the area between the line and its base axis\r\n\t\t}\r\n\t}\r\n});\r\n\r\nvar element_line = core_element.extend({\r\n\t_type: 'line',\r\n\r\n\tdraw: function() {\r\n\t\tvar me = this;\r\n\t\tvar vm = me._view;\r\n\t\tvar ctx = me._chart.ctx;\r\n\t\tvar spanGaps = vm.spanGaps;\r\n\t\tvar points = me._children.slice(); // clone array\r\n\t\tvar globalDefaults = core_defaults.global;\r\n\t\tvar globalOptionLineElements = globalDefaults.elements.line;\r\n\t\tvar lastDrawnIndex = -1;\r\n\t\tvar closePath = me._loop;\r\n\t\tvar index, previous, currentVM;\r\n\r\n\t\tif (!points.length) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (me._loop) {\r\n\t\t\tfor (index = 0; index < points.length; ++index) {\r\n\t\t\t\tprevious = helpers$1.previousItem(points, index);\r\n\t\t\t\t// If the line has an open path, shift the point array\r\n\t\t\t\tif (!points[index]._view.skip && previous._view.skip) {\r\n\t\t\t\t\tpoints = points.slice(index).concat(points.slice(0, index));\r\n\t\t\t\t\tclosePath = spanGaps;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// If the line has a close path, add the first point again\r\n\t\t\tif (closePath) {\r\n\t\t\t\tpoints.push(points[0]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tctx.save();\r\n\r\n\t\t// Stroke Line Options\r\n\t\tctx.lineCap = vm.borderCapStyle || globalOptionLineElements.borderCapStyle;\r\n\r\n\t\t// IE 9 and 10 do not support line dash\r\n\t\tif (ctx.setLineDash) {\r\n\t\t\tctx.setLineDash(vm.borderDash || globalOptionLineElements.borderDash);\r\n\t\t}\r\n\r\n\t\tctx.lineDashOffset = valueOrDefault$1(vm.borderDashOffset, globalOptionLineElements.borderDashOffset);\r\n\t\tctx.lineJoin = vm.borderJoinStyle || globalOptionLineElements.borderJoinStyle;\r\n\t\tctx.lineWidth = valueOrDefault$1(vm.borderWidth, globalOptionLineElements.borderWidth);\r\n\t\tctx.strokeStyle = vm.borderColor || globalDefaults.defaultColor;\r\n\r\n\t\t// Stroke Line\r\n\t\tctx.beginPath();\r\n\r\n\t\t// First point moves to it's starting position no matter what\r\n\t\tcurrentVM = points[0]._view;\r\n\t\tif (!currentVM.skip) {\r\n\t\t\tctx.moveTo(currentVM.x, currentVM.y);\r\n\t\t\tlastDrawnIndex = 0;\r\n\t\t}\r\n\r\n\t\tfor (index = 1; index < points.length; ++index) {\r\n\t\t\tcurrentVM = points[index]._view;\r\n\t\t\tprevious = lastDrawnIndex === -1 ? helpers$1.previousItem(points, index) : points[lastDrawnIndex];\r\n\r\n\t\t\tif (!currentVM.skip) {\r\n\t\t\t\tif ((lastDrawnIndex !== (index - 1) && !spanGaps) || lastDrawnIndex === -1) {\r\n\t\t\t\t\t// There was a gap and this is the first point after the gap\r\n\t\t\t\t\tctx.moveTo(currentVM.x, currentVM.y);\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// Line to next point\r\n\t\t\t\t\thelpers$1.canvas.lineTo(ctx, previous._view, currentVM);\r\n\t\t\t\t}\r\n\t\t\t\tlastDrawnIndex = index;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (closePath) {\r\n\t\t\tctx.closePath();\r\n\t\t}\r\n\r\n\t\tctx.stroke();\r\n\t\tctx.restore();\r\n\t}\r\n});\n\nvar valueOrDefault$2 = helpers$1.valueOrDefault;\r\n\r\nvar defaultColor$1 = core_defaults.global.defaultColor;\r\n\r\ncore_defaults._set('global', {\r\n\telements: {\r\n\t\tpoint: {\r\n\t\t\tradius: 3,\r\n\t\t\tpointStyle: 'circle',\r\n\t\t\tbackgroundColor: defaultColor$1,\r\n\t\t\tborderColor: defaultColor$1,\r\n\t\t\tborderWidth: 1,\r\n\t\t\t// Hover\r\n\t\t\thitRadius: 1,\r\n\t\t\thoverRadius: 4,\r\n\t\t\thoverBorderWidth: 1\r\n\t\t}\r\n\t}\r\n});\r\n\r\nfunction xRange(mouseX) {\r\n\tvar vm = this._view;\r\n\treturn vm ? (Math.abs(mouseX - vm.x) < vm.radius + vm.hitRadius) : false;\r\n}\r\n\r\nfunction yRange(mouseY) {\r\n\tvar vm = this._view;\r\n\treturn vm ? (Math.abs(mouseY - vm.y) < vm.radius + vm.hitRadius) : false;\r\n}\r\n\r\nvar element_point = core_element.extend({\r\n\t_type: 'point',\r\n\r\n\tinRange: function(mouseX, mouseY) {\r\n\t\tvar vm = this._view;\r\n\t\treturn vm ? ((Math.pow(mouseX - vm.x, 2) + Math.pow(mouseY - vm.y, 2)) < Math.pow(vm.hitRadius + vm.radius, 2)) : false;\r\n\t},\r\n\r\n\tinLabelRange: xRange,\r\n\tinXRange: xRange,\r\n\tinYRange: yRange,\r\n\r\n\tgetCenterPoint: function() {\r\n\t\tvar vm = this._view;\r\n\t\treturn {\r\n\t\t\tx: vm.x,\r\n\t\t\ty: vm.y\r\n\t\t};\r\n\t},\r\n\r\n\tgetArea: function() {\r\n\t\treturn Math.PI * Math.pow(this._view.radius, 2);\r\n\t},\r\n\r\n\ttooltipPosition: function() {\r\n\t\tvar vm = this._view;\r\n\t\treturn {\r\n\t\t\tx: vm.x,\r\n\t\t\ty: vm.y,\r\n\t\t\tpadding: vm.radius + vm.borderWidth\r\n\t\t};\r\n\t},\r\n\r\n\tdraw: function(chartArea) {\r\n\t\tvar vm = this._view;\r\n\t\tvar ctx = this._chart.ctx;\r\n\t\tvar pointStyle = vm.pointStyle;\r\n\t\tvar rotation = vm.rotation;\r\n\t\tvar radius = vm.radius;\r\n\t\tvar x = vm.x;\r\n\t\tvar y = vm.y;\r\n\t\tvar globalDefaults = core_defaults.global;\r\n\t\tvar defaultColor = globalDefaults.defaultColor; // eslint-disable-line no-shadow\r\n\r\n\t\tif (vm.skip) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Clipping for Points.\r\n\t\tif (chartArea === undefined || helpers$1.canvas._isPointInArea(vm, chartArea)) {\r\n\t\t\tctx.strokeStyle = vm.borderColor || defaultColor;\r\n\t\t\tctx.lineWidth = valueOrDefault$2(vm.borderWidth, globalDefaults.elements.point.borderWidth);\r\n\t\t\tctx.fillStyle = vm.backgroundColor || defaultColor;\r\n\t\t\thelpers$1.canvas.drawPoint(ctx, pointStyle, radius, x, y, rotation);\r\n\t\t}\r\n\t}\r\n});\n\nvar defaultColor$2 = core_defaults.global.defaultColor;\r\n\r\ncore_defaults._set('global', {\r\n\telements: {\r\n\t\trectangle: {\r\n\t\t\tbackgroundColor: defaultColor$2,\r\n\t\t\tborderColor: defaultColor$2,\r\n\t\t\tborderSkipped: 'bottom',\r\n\t\t\tborderWidth: 0\r\n\t\t}\r\n\t}\r\n});\r\n\r\nfunction isVertical(vm) {\r\n\treturn vm && vm.width !== undefined;\r\n}\r\n\r\n/**\r\n * Helper function to get the bounds of the bar regardless of the orientation\r\n * @param bar {Chart.Element.Rectangle} the bar\r\n * @return {Bounds} bounds of the bar\r\n * @private\r\n */\r\nfunction getBarBounds(vm) {\r\n\tvar x1, x2, y1, y2, half;\r\n\r\n\tif (isVertical(vm)) {\r\n\t\thalf = vm.width / 2;\r\n\t\tx1 = vm.x - half;\r\n\t\tx2 = vm.x + half;\r\n\t\ty1 = Math.min(vm.y, vm.base);\r\n\t\ty2 = Math.max(vm.y, vm.base);\r\n\t} else {\r\n\t\thalf = vm.height / 2;\r\n\t\tx1 = Math.min(vm.x, vm.base);\r\n\t\tx2 = Math.max(vm.x, vm.base);\r\n\t\ty1 = vm.y - half;\r\n\t\ty2 = vm.y + half;\r\n\t}\r\n\r\n\treturn {\r\n\t\tleft: x1,\r\n\t\ttop: y1,\r\n\t\tright: x2,\r\n\t\tbottom: y2\r\n\t};\r\n}\r\n\r\nfunction swap(orig, v1, v2) {\r\n\treturn orig === v1 ? v2 : orig === v2 ? v1 : orig;\r\n}\r\n\r\nfunction parseBorderSkipped(vm) {\r\n\tvar edge = vm.borderSkipped;\r\n\tvar res = {};\r\n\r\n\tif (!edge) {\r\n\t\treturn res;\r\n\t}\r\n\r\n\tif (vm.horizontal) {\r\n\t\tif (vm.base > vm.x) {\r\n\t\t\tedge = swap(edge, 'left', 'right');\r\n\t\t}\r\n\t} else if (vm.base < vm.y) {\r\n\t\tedge = swap(edge, 'bottom', 'top');\r\n\t}\r\n\r\n\tres[edge] = true;\r\n\treturn res;\r\n}\r\n\r\nfunction parseBorderWidth(vm, maxW, maxH) {\r\n\tvar value = vm.borderWidth;\r\n\tvar skip = parseBorderSkipped(vm);\r\n\tvar t, r, b, l;\r\n\r\n\tif (helpers$1.isObject(value)) {\r\n\t\tt = +value.top || 0;\r\n\t\tr = +value.right || 0;\r\n\t\tb = +value.bottom || 0;\r\n\t\tl = +value.left || 0;\r\n\t} else {\r\n\t\tt = r = b = l = +value || 0;\r\n\t}\r\n\r\n\treturn {\r\n\t\tt: skip.top || (t < 0) ? 0 : t > maxH ? maxH : t,\r\n\t\tr: skip.right || (r < 0) ? 0 : r > maxW ? maxW : r,\r\n\t\tb: skip.bottom || (b < 0) ? 0 : b > maxH ? maxH : b,\r\n\t\tl: skip.left || (l < 0) ? 0 : l > maxW ? maxW : l\r\n\t};\r\n}\r\n\r\nfunction boundingRects(vm) {\r\n\tvar bounds = getBarBounds(vm);\r\n\tvar width = bounds.right - bounds.left;\r\n\tvar height = bounds.bottom - bounds.top;\r\n\tvar border = parseBorderWidth(vm, width / 2, height / 2);\r\n\r\n\treturn {\r\n\t\touter: {\r\n\t\t\tx: bounds.left,\r\n\t\t\ty: bounds.top,\r\n\t\t\tw: width,\r\n\t\t\th: height\r\n\t\t},\r\n\t\tinner: {\r\n\t\t\tx: bounds.left + border.l,\r\n\t\t\ty: bounds.top + border.t,\r\n\t\t\tw: width - border.l - border.r,\r\n\t\t\th: height - border.t - border.b\r\n\t\t}\r\n\t};\r\n}\r\n\r\nfunction inRange(vm, x, y) {\r\n\tvar skipX = x === null;\r\n\tvar skipY = y === null;\r\n\tvar bounds = !vm || (skipX && skipY) ? false : getBarBounds(vm);\r\n\r\n\treturn bounds\r\n\t\t&& (skipX || x >= bounds.left && x <= bounds.right)\r\n\t\t&& (skipY || y >= bounds.top && y <= bounds.bottom);\r\n}\r\n\r\nvar element_rectangle = core_element.extend({\r\n\t_type: 'rectangle',\r\n\r\n\tdraw: function() {\r\n\t\tvar ctx = this._chart.ctx;\r\n\t\tvar vm = this._view;\r\n\t\tvar rects = boundingRects(vm);\r\n\t\tvar outer = rects.outer;\r\n\t\tvar inner = rects.inner;\r\n\r\n\t\tctx.fillStyle = vm.backgroundColor;\r\n\t\tctx.fillRect(outer.x, outer.y, outer.w, outer.h);\r\n\r\n\t\tif (outer.w === inner.w && outer.h === inner.h) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tctx.save();\r\n\t\tctx.beginPath();\r\n\t\tctx.rect(outer.x, outer.y, outer.w, outer.h);\r\n\t\tctx.clip();\r\n\t\tctx.fillStyle = vm.borderColor;\r\n\t\tctx.rect(inner.x, inner.y, inner.w, inner.h);\r\n\t\tctx.fill('evenodd');\r\n\t\tctx.restore();\r\n\t},\r\n\r\n\theight: function() {\r\n\t\tvar vm = this._view;\r\n\t\treturn vm.base - vm.y;\r\n\t},\r\n\r\n\tinRange: function(mouseX, mouseY) {\r\n\t\treturn inRange(this._view, mouseX, mouseY);\r\n\t},\r\n\r\n\tinLabelRange: function(mouseX, mouseY) {\r\n\t\tvar vm = this._view;\r\n\t\treturn isVertical(vm)\r\n\t\t\t? inRange(vm, mouseX, null)\r\n\t\t\t: inRange(vm, null, mouseY);\r\n\t},\r\n\r\n\tinXRange: function(mouseX) {\r\n\t\treturn inRange(this._view, mouseX, null);\r\n\t},\r\n\r\n\tinYRange: function(mouseY) {\r\n\t\treturn inRange(this._view, null, mouseY);\r\n\t},\r\n\r\n\tgetCenterPoint: function() {\r\n\t\tvar vm = this._view;\r\n\t\tvar x, y;\r\n\t\tif (isVertical(vm)) {\r\n\t\t\tx = vm.x;\r\n\t\t\ty = (vm.y + vm.base) / 2;\r\n\t\t} else {\r\n\t\t\tx = (vm.x + vm.base) / 2;\r\n\t\t\ty = vm.y;\r\n\t\t}\r\n\r\n\t\treturn {x: x, y: y};\r\n\t},\r\n\r\n\tgetArea: function() {\r\n\t\tvar vm = this._view;\r\n\r\n\t\treturn isVertical(vm)\r\n\t\t\t? vm.width * Math.abs(vm.y - vm.base)\r\n\t\t\t: vm.height * Math.abs(vm.x - vm.base);\r\n\t},\r\n\r\n\ttooltipPosition: function() {\r\n\t\tvar vm = this._view;\r\n\t\treturn {\r\n\t\t\tx: vm.x,\r\n\t\t\ty: vm.y\r\n\t\t};\r\n\t}\r\n});\n\nvar elements = {};\r\nvar Arc = element_arc;\r\nvar Line = element_line;\r\nvar Point = element_point;\r\nvar Rectangle = element_rectangle;\nelements.Arc = Arc;\nelements.Line = Line;\nelements.Point = Point;\nelements.Rectangle = Rectangle;\n\nvar deprecated = helpers$1._deprecated;\r\nvar valueOrDefault$3 = helpers$1.valueOrDefault;\r\n\r\ncore_defaults._set('bar', {\r\n\thover: {\r\n\t\tmode: 'label'\r\n\t},\r\n\r\n\tscales: {\r\n\t\txAxes: [{\r\n\t\t\ttype: 'category',\r\n\t\t\toffset: true,\r\n\t\t\tgridLines: {\r\n\t\t\t\toffsetGridLines: true\r\n\t\t\t}\r\n\t\t}],\r\n\r\n\t\tyAxes: [{\r\n\t\t\ttype: 'linear'\r\n\t\t}]\r\n\t}\r\n});\r\n\r\ncore_defaults._set('global', {\r\n\tdatasets: {\r\n\t\tbar: {\r\n\t\t\tcategoryPercentage: 0.8,\r\n\t\t\tbarPercentage: 0.9\r\n\t\t}\r\n\t}\r\n});\r\n\r\n/**\r\n * Computes the \"optimal\" sample size to maintain bars equally sized while preventing overlap.\r\n * @private\r\n */\r\nfunction computeMinSampleSize(scale, pixels) {\r\n\tvar min = scale._length;\r\n\tvar prev, curr, i, ilen;\r\n\r\n\tfor (i = 1, ilen = pixels.length; i < ilen; ++i) {\r\n\t\tmin = Math.min(min, Math.abs(pixels[i] - pixels[i - 1]));\r\n\t}\r\n\r\n\tfor (i = 0, ilen = scale.getTicks().length; i < ilen; ++i) {\r\n\t\tcurr = scale.getPixelForTick(i);\r\n\t\tmin = i > 0 ? Math.min(min, Math.abs(curr - prev)) : min;\r\n\t\tprev = curr;\r\n\t}\r\n\r\n\treturn min;\r\n}\r\n\r\n/**\r\n * Computes an \"ideal\" category based on the absolute bar thickness or, if undefined or null,\r\n * uses the smallest interval (see computeMinSampleSize) that prevents bar overlapping. This\r\n * mode currently always generates bars equally sized (until we introduce scriptable options?).\r\n * @private\r\n */\r\nfunction computeFitCategoryTraits(index, ruler, options) {\r\n\tvar thickness = options.barThickness;\r\n\tvar count = ruler.stackCount;\r\n\tvar curr = ruler.pixels[index];\r\n\tvar min = helpers$1.isNullOrUndef(thickness)\r\n\t\t? computeMinSampleSize(ruler.scale, ruler.pixels)\r\n\t\t: -1;\r\n\tvar size, ratio;\r\n\r\n\tif (helpers$1.isNullOrUndef(thickness)) {\r\n\t\tsize = min * options.categoryPercentage;\r\n\t\tratio = options.barPercentage;\r\n\t} else {\r\n\t\t// When bar thickness is enforced, category and bar percentages are ignored.\r\n\t\t// Note(SB): we could add support for relative bar thickness (e.g. barThickness: '50%')\r\n\t\t// and deprecate barPercentage since this value is ignored when thickness is absolute.\r\n\t\tsize = thickness * count;\r\n\t\tratio = 1;\r\n\t}\r\n\r\n\treturn {\r\n\t\tchunk: size / count,\r\n\t\tratio: ratio,\r\n\t\tstart: curr - (size / 2)\r\n\t};\r\n}\r\n\r\n/**\r\n * Computes an \"optimal\" category that globally arranges bars side by side (no gap when\r\n * percentage options are 1), based on the previous and following categories. This mode\r\n * generates bars with different widths when data are not evenly spaced.\r\n * @private\r\n */\r\nfunction computeFlexCategoryTraits(index, ruler, options) {\r\n\tvar pixels = ruler.pixels;\r\n\tvar curr = pixels[index];\r\n\tvar prev = index > 0 ? pixels[index - 1] : null;\r\n\tvar next = index < pixels.length - 1 ? pixels[index + 1] : null;\r\n\tvar percent = options.categoryPercentage;\r\n\tvar start, size;\r\n\r\n\tif (prev === null) {\r\n\t\t// first data: its size is double based on the next point or,\r\n\t\t// if it's also the last data, we use the scale size.\r\n\t\tprev = curr - (next === null ? ruler.end - ruler.start : next - curr);\r\n\t}\r\n\r\n\tif (next === null) {\r\n\t\t// last data: its size is also double based on the previous point.\r\n\t\tnext = curr + curr - prev;\r\n\t}\r\n\r\n\tstart = curr - (curr - Math.min(prev, next)) / 2 * percent;\r\n\tsize = Math.abs(next - prev) / 2 * percent;\r\n\r\n\treturn {\r\n\t\tchunk: size / ruler.stackCount,\r\n\t\tratio: options.barPercentage,\r\n\t\tstart: start\r\n\t};\r\n}\r\n\r\nvar controller_bar = core_datasetController.extend({\r\n\r\n\tdataElementType: elements.Rectangle,\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_dataElementOptions: [\r\n\t\t'backgroundColor',\r\n\t\t'borderColor',\r\n\t\t'borderSkipped',\r\n\t\t'borderWidth',\r\n\t\t'barPercentage',\r\n\t\t'barThickness',\r\n\t\t'categoryPercentage',\r\n\t\t'maxBarThickness',\r\n\t\t'minBarLength'\r\n\t],\r\n\r\n\tinitialize: function() {\r\n\t\tvar me = this;\r\n\t\tvar meta, scaleOpts;\r\n\r\n\t\tcore_datasetController.prototype.initialize.apply(me, arguments);\r\n\r\n\t\tmeta = me.getMeta();\r\n\t\tmeta.stack = me.getDataset().stack;\r\n\t\tmeta.bar = true;\r\n\r\n\t\tscaleOpts = me._getIndexScale().options;\r\n\t\tdeprecated('bar chart', scaleOpts.barPercentage, 'scales.[x/y]Axes.barPercentage', 'dataset.barPercentage');\r\n\t\tdeprecated('bar chart', scaleOpts.barThickness, 'scales.[x/y]Axes.barThickness', 'dataset.barThickness');\r\n\t\tdeprecated('bar chart', scaleOpts.categoryPercentage, 'scales.[x/y]Axes.categoryPercentage', 'dataset.categoryPercentage');\r\n\t\tdeprecated('bar chart', me._getValueScale().options.minBarLength, 'scales.[x/y]Axes.minBarLength', 'dataset.minBarLength');\r\n\t\tdeprecated('bar chart', scaleOpts.maxBarThickness, 'scales.[x/y]Axes.maxBarThickness', 'dataset.maxBarThickness');\r\n\t},\r\n\r\n\tupdate: function(reset) {\r\n\t\tvar me = this;\r\n\t\tvar rects = me.getMeta().data;\r\n\t\tvar i, ilen;\r\n\r\n\t\tme._ruler = me.getRuler();\r\n\r\n\t\tfor (i = 0, ilen = rects.length; i < ilen; ++i) {\r\n\t\t\tme.updateElement(rects[i], i, reset);\r\n\t\t}\r\n\t},\r\n\r\n\tupdateElement: function(rectangle, index, reset) {\r\n\t\tvar me = this;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar dataset = me.getDataset();\r\n\t\tvar options = me._resolveDataElementOptions(rectangle, index);\r\n\r\n\t\trectangle._xScale = me.getScaleForId(meta.xAxisID);\r\n\t\trectangle._yScale = me.getScaleForId(meta.yAxisID);\r\n\t\trectangle._datasetIndex = me.index;\r\n\t\trectangle._index = index;\r\n\t\trectangle._model = {\r\n\t\t\tbackgroundColor: options.backgroundColor,\r\n\t\t\tborderColor: options.borderColor,\r\n\t\t\tborderSkipped: options.borderSkipped,\r\n\t\t\tborderWidth: options.borderWidth,\r\n\t\t\tdatasetLabel: dataset.label,\r\n\t\t\tlabel: me.chart.data.labels[index]\r\n\t\t};\r\n\r\n\t\tif (helpers$1.isArray(dataset.data[index])) {\r\n\t\t\trectangle._model.borderSkipped = null;\r\n\t\t}\r\n\r\n\t\tme._updateElementGeometry(rectangle, index, reset, options);\r\n\r\n\t\trectangle.pivot();\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_updateElementGeometry: function(rectangle, index, reset, options) {\r\n\t\tvar me = this;\r\n\t\tvar model = rectangle._model;\r\n\t\tvar vscale = me._getValueScale();\r\n\t\tvar base = vscale.getBasePixel();\r\n\t\tvar horizontal = vscale.isHorizontal();\r\n\t\tvar ruler = me._ruler || me.getRuler();\r\n\t\tvar vpixels = me.calculateBarValuePixels(me.index, index, options);\r\n\t\tvar ipixels = me.calculateBarIndexPixels(me.index, index, ruler, options);\r\n\r\n\t\tmodel.horizontal = horizontal;\r\n\t\tmodel.base = reset ? base : vpixels.base;\r\n\t\tmodel.x = horizontal ? reset ? base : vpixels.head : ipixels.center;\r\n\t\tmodel.y = horizontal ? ipixels.center : reset ? base : vpixels.head;\r\n\t\tmodel.height = horizontal ? ipixels.size : undefined;\r\n\t\tmodel.width = horizontal ? undefined : ipixels.size;\r\n\t},\r\n\r\n\t/**\r\n\t * Returns the stacks based on groups and bar visibility.\r\n\t * @param {number} [last] - The dataset index\r\n\t * @returns {string[]} The list of stack IDs\r\n\t * @private\r\n\t */\r\n\t_getStacks: function(last) {\r\n\t\tvar me = this;\r\n\t\tvar scale = me._getIndexScale();\r\n\t\tvar metasets = scale._getMatchingVisibleMetas(me._type);\r\n\t\tvar stacked = scale.options.stacked;\r\n\t\tvar ilen = metasets.length;\r\n\t\tvar stacks = [];\r\n\t\tvar i, meta;\r\n\r\n\t\tfor (i = 0; i < ilen; ++i) {\r\n\t\t\tmeta = metasets[i];\r\n\t\t\t// stacked   | meta.stack\r\n\t\t\t//           | found | not found | undefined\r\n\t\t\t// false     |   x   |     x     |     x\r\n\t\t\t// true      |       |     x     |\r\n\t\t\t// undefined |       |     x     |     x\r\n\t\t\tif (stacked === false || stacks.indexOf(meta.stack) === -1 ||\r\n\t\t\t\t(stacked === undefined && meta.stack === undefined)) {\r\n\t\t\t\tstacks.push(meta.stack);\r\n\t\t\t}\r\n\t\t\tif (meta.index === last) {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn stacks;\r\n\t},\r\n\r\n\t/**\r\n\t * Returns the effective number of stacks based on groups and bar visibility.\r\n\t * @private\r\n\t */\r\n\tgetStackCount: function() {\r\n\t\treturn this._getStacks().length;\r\n\t},\r\n\r\n\t/**\r\n\t * Returns the stack index for the given dataset based on groups and bar visibility.\r\n\t * @param {number} [datasetIndex] - The dataset index\r\n\t * @param {string} [name] - The stack name to find\r\n\t * @returns {number} The stack index\r\n\t * @private\r\n\t */\r\n\tgetStackIndex: function(datasetIndex, name) {\r\n\t\tvar stacks = this._getStacks(datasetIndex);\r\n\t\tvar index = (name !== undefined)\r\n\t\t\t? stacks.indexOf(name)\r\n\t\t\t: -1; // indexOf returns -1 if element is not present\r\n\r\n\t\treturn (index === -1)\r\n\t\t\t? stacks.length - 1\r\n\t\t\t: index;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tgetRuler: function() {\r\n\t\tvar me = this;\r\n\t\tvar scale = me._getIndexScale();\r\n\t\tvar pixels = [];\r\n\t\tvar i, ilen;\r\n\r\n\t\tfor (i = 0, ilen = me.getMeta().data.length; i < ilen; ++i) {\r\n\t\t\tpixels.push(scale.getPixelForValue(null, i, me.index));\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tpixels: pixels,\r\n\t\t\tstart: scale._startPixel,\r\n\t\t\tend: scale._endPixel,\r\n\t\t\tstackCount: me.getStackCount(),\r\n\t\t\tscale: scale\r\n\t\t};\r\n\t},\r\n\r\n\t/**\r\n\t * Note: pixel values are not clamped to the scale area.\r\n\t * @private\r\n\t */\r\n\tcalculateBarValuePixels: function(datasetIndex, index, options) {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar scale = me._getValueScale();\r\n\t\tvar isHorizontal = scale.isHorizontal();\r\n\t\tvar datasets = chart.data.datasets;\r\n\t\tvar metasets = scale._getMatchingVisibleMetas(me._type);\r\n\t\tvar value = scale._parseValue(datasets[datasetIndex].data[index]);\r\n\t\tvar minBarLength = options.minBarLength;\r\n\t\tvar stacked = scale.options.stacked;\r\n\t\tvar stack = me.getMeta().stack;\r\n\t\tvar start = value.start === undefined ? 0 : value.max >= 0 && value.min >= 0 ? value.min : value.max;\r\n\t\tvar length = value.start === undefined ? value.end : value.max >= 0 && value.min >= 0 ? value.max - value.min : value.min - value.max;\r\n\t\tvar ilen = metasets.length;\r\n\t\tvar i, imeta, ivalue, base, head, size, stackLength;\r\n\r\n\t\tif (stacked || (stacked === undefined && stack !== undefined)) {\r\n\t\t\tfor (i = 0; i < ilen; ++i) {\r\n\t\t\t\timeta = metasets[i];\r\n\r\n\t\t\t\tif (imeta.index === datasetIndex) {\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (imeta.stack === stack) {\r\n\t\t\t\t\tstackLength = scale._parseValue(datasets[imeta.index].data[index]);\r\n\t\t\t\t\tivalue = stackLength.start === undefined ? stackLength.end : stackLength.min >= 0 && stackLength.max >= 0 ? stackLength.max : stackLength.min;\r\n\r\n\t\t\t\t\tif ((value.min < 0 && ivalue < 0) || (value.max >= 0 && ivalue > 0)) {\r\n\t\t\t\t\t\tstart += ivalue;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tbase = scale.getPixelForValue(start);\r\n\t\thead = scale.getPixelForValue(start + length);\r\n\t\tsize = head - base;\r\n\r\n\t\tif (minBarLength !== undefined && Math.abs(size) < minBarLength) {\r\n\t\t\tsize = minBarLength;\r\n\t\t\tif (length >= 0 && !isHorizontal || length < 0 && isHorizontal) {\r\n\t\t\t\thead = base - minBarLength;\r\n\t\t\t} else {\r\n\t\t\t\thead = base + minBarLength;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tsize: size,\r\n\t\t\tbase: base,\r\n\t\t\thead: head,\r\n\t\t\tcenter: head + size / 2\r\n\t\t};\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tcalculateBarIndexPixels: function(datasetIndex, index, ruler, options) {\r\n\t\tvar me = this;\r\n\t\tvar range = options.barThickness === 'flex'\r\n\t\t\t? computeFlexCategoryTraits(index, ruler, options)\r\n\t\t\t: computeFitCategoryTraits(index, ruler, options);\r\n\r\n\t\tvar stackIndex = me.getStackIndex(datasetIndex, me.getMeta().stack);\r\n\t\tvar center = range.start + (range.chunk * stackIndex) + (range.chunk / 2);\r\n\t\tvar size = Math.min(\r\n\t\t\tvalueOrDefault$3(options.maxBarThickness, Infinity),\r\n\t\t\trange.chunk * range.ratio);\r\n\r\n\t\treturn {\r\n\t\t\tbase: center - size / 2,\r\n\t\t\thead: center + size / 2,\r\n\t\t\tcenter: center,\r\n\t\t\tsize: size\r\n\t\t};\r\n\t},\r\n\r\n\tdraw: function() {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar scale = me._getValueScale();\r\n\t\tvar rects = me.getMeta().data;\r\n\t\tvar dataset = me.getDataset();\r\n\t\tvar ilen = rects.length;\r\n\t\tvar i = 0;\r\n\r\n\t\thelpers$1.canvas.clipArea(chart.ctx, chart.chartArea);\r\n\r\n\t\tfor (; i < ilen; ++i) {\r\n\t\t\tvar val = scale._parseValue(dataset.data[i]);\r\n\t\t\tif (!isNaN(val.min) && !isNaN(val.max)) {\r\n\t\t\t\trects[i].draw();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\thelpers$1.canvas.unclipArea(chart.ctx);\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_resolveDataElementOptions: function() {\r\n\t\tvar me = this;\r\n\t\tvar values = helpers$1.extend({}, core_datasetController.prototype._resolveDataElementOptions.apply(me, arguments));\r\n\t\tvar indexOpts = me._getIndexScale().options;\r\n\t\tvar valueOpts = me._getValueScale().options;\r\n\r\n\t\tvalues.barPercentage = valueOrDefault$3(indexOpts.barPercentage, values.barPercentage);\r\n\t\tvalues.barThickness = valueOrDefault$3(indexOpts.barThickness, values.barThickness);\r\n\t\tvalues.categoryPercentage = valueOrDefault$3(indexOpts.categoryPercentage, values.categoryPercentage);\r\n\t\tvalues.maxBarThickness = valueOrDefault$3(indexOpts.maxBarThickness, values.maxBarThickness);\r\n\t\tvalues.minBarLength = valueOrDefault$3(valueOpts.minBarLength, values.minBarLength);\r\n\r\n\t\treturn values;\r\n\t}\r\n\r\n});\n\nvar valueOrDefault$4 = helpers$1.valueOrDefault;\r\nvar resolve$1 = helpers$1.options.resolve;\r\n\r\ncore_defaults._set('bubble', {\r\n\thover: {\r\n\t\tmode: 'single'\r\n\t},\r\n\r\n\tscales: {\r\n\t\txAxes: [{\r\n\t\t\ttype: 'linear', // bubble should probably use a linear scale by default\r\n\t\t\tposition: 'bottom',\r\n\t\t\tid: 'x-axis-0' // need an ID so datasets can reference the scale\r\n\t\t}],\r\n\t\tyAxes: [{\r\n\t\t\ttype: 'linear',\r\n\t\t\tposition: 'left',\r\n\t\t\tid: 'y-axis-0'\r\n\t\t}]\r\n\t},\r\n\r\n\ttooltips: {\r\n\t\tcallbacks: {\r\n\t\t\ttitle: function() {\r\n\t\t\t\t// Title doesn't make sense for scatter since we format the data as a point\r\n\t\t\t\treturn '';\r\n\t\t\t},\r\n\t\t\tlabel: function(item, data) {\r\n\t\t\t\tvar datasetLabel = data.datasets[item.datasetIndex].label || '';\r\n\t\t\t\tvar dataPoint = data.datasets[item.datasetIndex].data[item.index];\r\n\t\t\t\treturn datasetLabel + ': (' + item.xLabel + ', ' + item.yLabel + ', ' + dataPoint.r + ')';\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n});\r\n\r\nvar controller_bubble = core_datasetController.extend({\r\n\t/**\r\n\t * @protected\r\n\t */\r\n\tdataElementType: elements.Point,\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_dataElementOptions: [\r\n\t\t'backgroundColor',\r\n\t\t'borderColor',\r\n\t\t'borderWidth',\r\n\t\t'hoverBackgroundColor',\r\n\t\t'hoverBorderColor',\r\n\t\t'hoverBorderWidth',\r\n\t\t'hoverRadius',\r\n\t\t'hitRadius',\r\n\t\t'pointStyle',\r\n\t\t'rotation'\r\n\t],\r\n\r\n\t/**\r\n\t * @protected\r\n\t */\r\n\tupdate: function(reset) {\r\n\t\tvar me = this;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar points = meta.data;\r\n\r\n\t\t// Update Points\r\n\t\thelpers$1.each(points, function(point, index) {\r\n\t\t\tme.updateElement(point, index, reset);\r\n\t\t});\r\n\t},\r\n\r\n\t/**\r\n\t * @protected\r\n\t */\r\n\tupdateElement: function(point, index, reset) {\r\n\t\tvar me = this;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar custom = point.custom || {};\r\n\t\tvar xScale = me.getScaleForId(meta.xAxisID);\r\n\t\tvar yScale = me.getScaleForId(meta.yAxisID);\r\n\t\tvar options = me._resolveDataElementOptions(point, index);\r\n\t\tvar data = me.getDataset().data[index];\r\n\t\tvar dsIndex = me.index;\r\n\r\n\t\tvar x = reset ? xScale.getPixelForDecimal(0.5) : xScale.getPixelForValue(typeof data === 'object' ? data : NaN, index, dsIndex);\r\n\t\tvar y = reset ? yScale.getBasePixel() : yScale.getPixelForValue(data, index, dsIndex);\r\n\r\n\t\tpoint._xScale = xScale;\r\n\t\tpoint._yScale = yScale;\r\n\t\tpoint._options = options;\r\n\t\tpoint._datasetIndex = dsIndex;\r\n\t\tpoint._index = index;\r\n\t\tpoint._model = {\r\n\t\t\tbackgroundColor: options.backgroundColor,\r\n\t\t\tborderColor: options.borderColor,\r\n\t\t\tborderWidth: options.borderWidth,\r\n\t\t\thitRadius: options.hitRadius,\r\n\t\t\tpointStyle: options.pointStyle,\r\n\t\t\trotation: options.rotation,\r\n\t\t\tradius: reset ? 0 : options.radius,\r\n\t\t\tskip: custom.skip || isNaN(x) || isNaN(y),\r\n\t\t\tx: x,\r\n\t\t\ty: y,\r\n\t\t};\r\n\r\n\t\tpoint.pivot();\r\n\t},\r\n\r\n\t/**\r\n\t * @protected\r\n\t */\r\n\tsetHoverStyle: function(point) {\r\n\t\tvar model = point._model;\r\n\t\tvar options = point._options;\r\n\t\tvar getHoverColor = helpers$1.getHoverColor;\r\n\r\n\t\tpoint.$previousStyle = {\r\n\t\t\tbackgroundColor: model.backgroundColor,\r\n\t\t\tborderColor: model.borderColor,\r\n\t\t\tborderWidth: model.borderWidth,\r\n\t\t\tradius: model.radius\r\n\t\t};\r\n\r\n\t\tmodel.backgroundColor = valueOrDefault$4(options.hoverBackgroundColor, getHoverColor(options.backgroundColor));\r\n\t\tmodel.borderColor = valueOrDefault$4(options.hoverBorderColor, getHoverColor(options.borderColor));\r\n\t\tmodel.borderWidth = valueOrDefault$4(options.hoverBorderWidth, options.borderWidth);\r\n\t\tmodel.radius = options.radius + options.hoverRadius;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_resolveDataElementOptions: function(point, index) {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar dataset = me.getDataset();\r\n\t\tvar custom = point.custom || {};\r\n\t\tvar data = dataset.data[index] || {};\r\n\t\tvar values = core_datasetController.prototype._resolveDataElementOptions.apply(me, arguments);\r\n\r\n\t\t// Scriptable options\r\n\t\tvar context = {\r\n\t\t\tchart: chart,\r\n\t\t\tdataIndex: index,\r\n\t\t\tdataset: dataset,\r\n\t\t\tdatasetIndex: me.index\r\n\t\t};\r\n\r\n\t\t// In case values were cached (and thus frozen), we need to clone the values\r\n\t\tif (me._cachedDataOpts === values) {\r\n\t\t\tvalues = helpers$1.extend({}, values);\r\n\t\t}\r\n\r\n\t\t// Custom radius resolution\r\n\t\tvalues.radius = resolve$1([\r\n\t\t\tcustom.radius,\r\n\t\t\tdata.r,\r\n\t\t\tme._config.radius,\r\n\t\t\tchart.options.elements.point.radius\r\n\t\t], context, index);\r\n\r\n\t\treturn values;\r\n\t}\r\n});\n\nvar valueOrDefault$5 = helpers$1.valueOrDefault;\r\n\r\nvar PI$1 = Math.PI;\r\nvar DOUBLE_PI$1 = PI$1 * 2;\r\nvar HALF_PI$1 = PI$1 / 2;\r\n\r\ncore_defaults._set('doughnut', {\r\n\tanimation: {\r\n\t\t// Boolean - Whether we animate the rotation of the Doughnut\r\n\t\tanimateRotate: true,\r\n\t\t// Boolean - Whether we animate scaling the Doughnut from the centre\r\n\t\tanimateScale: false\r\n\t},\r\n\thover: {\r\n\t\tmode: 'single'\r\n\t},\r\n\tlegendCallback: function(chart) {\r\n\t\tvar list = document.createElement('ul');\r\n\t\tvar data = chart.data;\r\n\t\tvar datasets = data.datasets;\r\n\t\tvar labels = data.labels;\r\n\t\tvar i, ilen, listItem, listItemSpan;\r\n\r\n\t\tlist.setAttribute('class', chart.id + '-legend');\r\n\t\tif (datasets.length) {\r\n\t\t\tfor (i = 0, ilen = datasets[0].data.length; i < ilen; ++i) {\r\n\t\t\t\tlistItem = list.appendChild(document.createElement('li'));\r\n\t\t\t\tlistItemSpan = listItem.appendChild(document.createElement('span'));\r\n\t\t\t\tlistItemSpan.style.backgroundColor = datasets[0].backgroundColor[i];\r\n\t\t\t\tif (labels[i]) {\r\n\t\t\t\t\tlistItem.appendChild(document.createTextNode(labels[i]));\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn list.outerHTML;\r\n\t},\r\n\tlegend: {\r\n\t\tlabels: {\r\n\t\t\tgenerateLabels: function(chart) {\r\n\t\t\t\tvar data = chart.data;\r\n\t\t\t\tif (data.labels.length && data.datasets.length) {\r\n\t\t\t\t\treturn data.labels.map(function(label, i) {\r\n\t\t\t\t\t\tvar meta = chart.getDatasetMeta(0);\r\n\t\t\t\t\t\tvar style = meta.controller.getStyle(i);\r\n\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\ttext: label,\r\n\t\t\t\t\t\t\tfillStyle: style.backgroundColor,\r\n\t\t\t\t\t\t\tstrokeStyle: style.borderColor,\r\n\t\t\t\t\t\t\tlineWidth: style.borderWidth,\r\n\t\t\t\t\t\t\thidden: isNaN(data.datasets[0].data[i]) || meta.data[i].hidden,\r\n\r\n\t\t\t\t\t\t\t// Extra data used for toggling the correct item\r\n\t\t\t\t\t\t\tindex: i\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t\treturn [];\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tonClick: function(e, legendItem) {\r\n\t\t\tvar index = legendItem.index;\r\n\t\t\tvar chart = this.chart;\r\n\t\t\tvar i, ilen, meta;\r\n\r\n\t\t\tfor (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) {\r\n\t\t\t\tmeta = chart.getDatasetMeta(i);\r\n\t\t\t\t// toggle visibility of index if exists\r\n\t\t\t\tif (meta.data[index]) {\r\n\t\t\t\t\tmeta.data[index].hidden = !meta.data[index].hidden;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tchart.update();\r\n\t\t}\r\n\t},\r\n\r\n\t// The percentage of the chart that we cut out of the middle.\r\n\tcutoutPercentage: 50,\r\n\r\n\t// The rotation of the chart, where the first data arc begins.\r\n\trotation: -HALF_PI$1,\r\n\r\n\t// The total circumference of the chart.\r\n\tcircumference: DOUBLE_PI$1,\r\n\r\n\t// Need to override these to give a nice default\r\n\ttooltips: {\r\n\t\tcallbacks: {\r\n\t\t\ttitle: function() {\r\n\t\t\t\treturn '';\r\n\t\t\t},\r\n\t\t\tlabel: function(tooltipItem, data) {\r\n\t\t\t\tvar dataLabel = data.labels[tooltipItem.index];\r\n\t\t\t\tvar value = ': ' + data.datasets[tooltipItem.datasetIndex].data[tooltipItem.index];\r\n\r\n\t\t\t\tif (helpers$1.isArray(dataLabel)) {\r\n\t\t\t\t\t// show value on first line of multiline label\r\n\t\t\t\t\t// need to clone because we are changing the value\r\n\t\t\t\t\tdataLabel = dataLabel.slice();\r\n\t\t\t\t\tdataLabel[0] += value;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdataLabel += value;\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn dataLabel;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n});\r\n\r\nvar controller_doughnut = core_datasetController.extend({\r\n\r\n\tdataElementType: elements.Arc,\r\n\r\n\tlinkScales: helpers$1.noop,\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_dataElementOptions: [\r\n\t\t'backgroundColor',\r\n\t\t'borderColor',\r\n\t\t'borderWidth',\r\n\t\t'borderAlign',\r\n\t\t'hoverBackgroundColor',\r\n\t\t'hoverBorderColor',\r\n\t\t'hoverBorderWidth',\r\n\t],\r\n\r\n\t// Get index of the dataset in relation to the visible datasets. This allows determining the inner and outer radius correctly\r\n\tgetRingIndex: function(datasetIndex) {\r\n\t\tvar ringIndex = 0;\r\n\r\n\t\tfor (var j = 0; j < datasetIndex; ++j) {\r\n\t\t\tif (this.chart.isDatasetVisible(j)) {\r\n\t\t\t\t++ringIndex;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn ringIndex;\r\n\t},\r\n\r\n\tupdate: function(reset) {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar chartArea = chart.chartArea;\r\n\t\tvar opts = chart.options;\r\n\t\tvar ratioX = 1;\r\n\t\tvar ratioY = 1;\r\n\t\tvar offsetX = 0;\r\n\t\tvar offsetY = 0;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar arcs = meta.data;\r\n\t\tvar cutout = opts.cutoutPercentage / 100 || 0;\r\n\t\tvar circumference = opts.circumference;\r\n\t\tvar chartWeight = me._getRingWeight(me.index);\r\n\t\tvar maxWidth, maxHeight, i, ilen;\r\n\r\n\t\t// If the chart's circumference isn't a full circle, calculate size as a ratio of the width/height of the arc\r\n\t\tif (circumference < DOUBLE_PI$1) {\r\n\t\t\tvar startAngle = opts.rotation % DOUBLE_PI$1;\r\n\t\t\tstartAngle += startAngle >= PI$1 ? -DOUBLE_PI$1 : startAngle < -PI$1 ? DOUBLE_PI$1 : 0;\r\n\t\t\tvar endAngle = startAngle + circumference;\r\n\t\t\tvar startX = Math.cos(startAngle);\r\n\t\t\tvar startY = Math.sin(startAngle);\r\n\t\t\tvar endX = Math.cos(endAngle);\r\n\t\t\tvar endY = Math.sin(endAngle);\r\n\t\t\tvar contains0 = (startAngle <= 0 && endAngle >= 0) || endAngle >= DOUBLE_PI$1;\r\n\t\t\tvar contains90 = (startAngle <= HALF_PI$1 && endAngle >= HALF_PI$1) || endAngle >= DOUBLE_PI$1 + HALF_PI$1;\r\n\t\t\tvar contains180 = startAngle === -PI$1 || endAngle >= PI$1;\r\n\t\t\tvar contains270 = (startAngle <= -HALF_PI$1 && endAngle >= -HALF_PI$1) || endAngle >= PI$1 + HALF_PI$1;\r\n\t\t\tvar minX = contains180 ? -1 : Math.min(startX, startX * cutout, endX, endX * cutout);\r\n\t\t\tvar minY = contains270 ? -1 : Math.min(startY, startY * cutout, endY, endY * cutout);\r\n\t\t\tvar maxX = contains0 ? 1 : Math.max(startX, startX * cutout, endX, endX * cutout);\r\n\t\t\tvar maxY = contains90 ? 1 : Math.max(startY, startY * cutout, endY, endY * cutout);\r\n\t\t\tratioX = (maxX - minX) / 2;\r\n\t\t\tratioY = (maxY - minY) / 2;\r\n\t\t\toffsetX = -(maxX + minX) / 2;\r\n\t\t\toffsetY = -(maxY + minY) / 2;\r\n\t\t}\r\n\r\n\t\tfor (i = 0, ilen = arcs.length; i < ilen; ++i) {\r\n\t\t\tarcs[i]._options = me._resolveDataElementOptions(arcs[i], i);\r\n\t\t}\r\n\r\n\t\tchart.borderWidth = me.getMaxBorderWidth();\r\n\t\tmaxWidth = (chartArea.right - chartArea.left - chart.borderWidth) / ratioX;\r\n\t\tmaxHeight = (chartArea.bottom - chartArea.top - chart.borderWidth) / ratioY;\r\n\t\tchart.outerRadius = Math.max(Math.min(maxWidth, maxHeight) / 2, 0);\r\n\t\tchart.innerRadius = Math.max(chart.outerRadius * cutout, 0);\r\n\t\tchart.radiusLength = (chart.outerRadius - chart.innerRadius) / (me._getVisibleDatasetWeightTotal() || 1);\r\n\t\tchart.offsetX = offsetX * chart.outerRadius;\r\n\t\tchart.offsetY = offsetY * chart.outerRadius;\r\n\r\n\t\tmeta.total = me.calculateTotal();\r\n\r\n\t\tme.outerRadius = chart.outerRadius - chart.radiusLength * me._getRingWeightOffset(me.index);\r\n\t\tme.innerRadius = Math.max(me.outerRadius - chart.radiusLength * chartWeight, 0);\r\n\r\n\t\tfor (i = 0, ilen = arcs.length; i < ilen; ++i) {\r\n\t\t\tme.updateElement(arcs[i], i, reset);\r\n\t\t}\r\n\t},\r\n\r\n\tupdateElement: function(arc, index, reset) {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar chartArea = chart.chartArea;\r\n\t\tvar opts = chart.options;\r\n\t\tvar animationOpts = opts.animation;\r\n\t\tvar centerX = (chartArea.left + chartArea.right) / 2;\r\n\t\tvar centerY = (chartArea.top + chartArea.bottom) / 2;\r\n\t\tvar startAngle = opts.rotation; // non reset case handled later\r\n\t\tvar endAngle = opts.rotation; // non reset case handled later\r\n\t\tvar dataset = me.getDataset();\r\n\t\tvar circumference = reset && animationOpts.animateRotate ? 0 : arc.hidden ? 0 : me.calculateCircumference(dataset.data[index]) * (opts.circumference / DOUBLE_PI$1);\r\n\t\tvar innerRadius = reset && animationOpts.animateScale ? 0 : me.innerRadius;\r\n\t\tvar outerRadius = reset && animationOpts.animateScale ? 0 : me.outerRadius;\r\n\t\tvar options = arc._options || {};\r\n\r\n\t\thelpers$1.extend(arc, {\r\n\t\t\t// Utility\r\n\t\t\t_datasetIndex: me.index,\r\n\t\t\t_index: index,\r\n\r\n\t\t\t// Desired view properties\r\n\t\t\t_model: {\r\n\t\t\t\tbackgroundColor: options.backgroundColor,\r\n\t\t\t\tborderColor: options.borderColor,\r\n\t\t\t\tborderWidth: options.borderWidth,\r\n\t\t\t\tborderAlign: options.borderAlign,\r\n\t\t\t\tx: centerX + chart.offsetX,\r\n\t\t\t\ty: centerY + chart.offsetY,\r\n\t\t\t\tstartAngle: startAngle,\r\n\t\t\t\tendAngle: endAngle,\r\n\t\t\t\tcircumference: circumference,\r\n\t\t\t\touterRadius: outerRadius,\r\n\t\t\t\tinnerRadius: innerRadius,\r\n\t\t\t\tlabel: helpers$1.valueAtIndexOrDefault(dataset.label, index, chart.data.labels[index])\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tvar model = arc._model;\r\n\r\n\t\t// Set correct angles if not resetting\r\n\t\tif (!reset || !animationOpts.animateRotate) {\r\n\t\t\tif (index === 0) {\r\n\t\t\t\tmodel.startAngle = opts.rotation;\r\n\t\t\t} else {\r\n\t\t\t\tmodel.startAngle = me.getMeta().data[index - 1]._model.endAngle;\r\n\t\t\t}\r\n\r\n\t\t\tmodel.endAngle = model.startAngle + model.circumference;\r\n\t\t}\r\n\r\n\t\tarc.pivot();\r\n\t},\r\n\r\n\tcalculateTotal: function() {\r\n\t\tvar dataset = this.getDataset();\r\n\t\tvar meta = this.getMeta();\r\n\t\tvar total = 0;\r\n\t\tvar value;\r\n\r\n\t\thelpers$1.each(meta.data, function(element, index) {\r\n\t\t\tvalue = dataset.data[index];\r\n\t\t\tif (!isNaN(value) && !element.hidden) {\r\n\t\t\t\ttotal += Math.abs(value);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t/* if (total === 0) {\r\n\t\t\ttotal = NaN;\r\n\t\t}*/\r\n\r\n\t\treturn total;\r\n\t},\r\n\r\n\tcalculateCircumference: function(value) {\r\n\t\tvar total = this.getMeta().total;\r\n\t\tif (total > 0 && !isNaN(value)) {\r\n\t\t\treturn DOUBLE_PI$1 * (Math.abs(value) / total);\r\n\t\t}\r\n\t\treturn 0;\r\n\t},\r\n\r\n\t// gets the max border or hover width to properly scale pie charts\r\n\tgetMaxBorderWidth: function(arcs) {\r\n\t\tvar me = this;\r\n\t\tvar max = 0;\r\n\t\tvar chart = me.chart;\r\n\t\tvar i, ilen, meta, arc, controller, options, borderWidth, hoverWidth;\r\n\r\n\t\tif (!arcs) {\r\n\t\t\t// Find the outmost visible dataset\r\n\t\t\tfor (i = 0, ilen = chart.data.datasets.length; i < ilen; ++i) {\r\n\t\t\t\tif (chart.isDatasetVisible(i)) {\r\n\t\t\t\t\tmeta = chart.getDatasetMeta(i);\r\n\t\t\t\t\tarcs = meta.data;\r\n\t\t\t\t\tif (i !== me.index) {\r\n\t\t\t\t\t\tcontroller = meta.controller;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (!arcs) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\r\n\t\tfor (i = 0, ilen = arcs.length; i < ilen; ++i) {\r\n\t\t\tarc = arcs[i];\r\n\t\t\tif (controller) {\r\n\t\t\t\tcontroller._configure();\r\n\t\t\t\toptions = controller._resolveDataElementOptions(arc, i);\r\n\t\t\t} else {\r\n\t\t\t\toptions = arc._options;\r\n\t\t\t}\r\n\t\t\tif (options.borderAlign !== 'inner') {\r\n\t\t\t\tborderWidth = options.borderWidth;\r\n\t\t\t\thoverWidth = options.hoverBorderWidth;\r\n\r\n\t\t\t\tmax = borderWidth > max ? borderWidth : max;\r\n\t\t\t\tmax = hoverWidth > max ? hoverWidth : max;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn max;\r\n\t},\r\n\r\n\t/**\r\n\t * @protected\r\n\t */\r\n\tsetHoverStyle: function(arc) {\r\n\t\tvar model = arc._model;\r\n\t\tvar options = arc._options;\r\n\t\tvar getHoverColor = helpers$1.getHoverColor;\r\n\r\n\t\tarc.$previousStyle = {\r\n\t\t\tbackgroundColor: model.backgroundColor,\r\n\t\t\tborderColor: model.borderColor,\r\n\t\t\tborderWidth: model.borderWidth,\r\n\t\t};\r\n\r\n\t\tmodel.backgroundColor = valueOrDefault$5(options.hoverBackgroundColor, getHoverColor(options.backgroundColor));\r\n\t\tmodel.borderColor = valueOrDefault$5(options.hoverBorderColor, getHoverColor(options.borderColor));\r\n\t\tmodel.borderWidth = valueOrDefault$5(options.hoverBorderWidth, options.borderWidth);\r\n\t},\r\n\r\n\t/**\r\n\t * Get radius length offset of the dataset in relation to the visible datasets weights. This allows determining the inner and outer radius correctly\r\n\t * @private\r\n\t */\r\n\t_getRingWeightOffset: function(datasetIndex) {\r\n\t\tvar ringWeightOffset = 0;\r\n\r\n\t\tfor (var i = 0; i < datasetIndex; ++i) {\r\n\t\t\tif (this.chart.isDatasetVisible(i)) {\r\n\t\t\t\tringWeightOffset += this._getRingWeight(i);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn ringWeightOffset;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getRingWeight: function(dataSetIndex) {\r\n\t\treturn Math.max(valueOrDefault$5(this.chart.data.datasets[dataSetIndex].weight, 1), 0);\r\n\t},\r\n\r\n\t/**\r\n\t * Returns the sum of all visibile data set weights.  This value can be 0.\r\n\t * @private\r\n\t */\r\n\t_getVisibleDatasetWeightTotal: function() {\r\n\t\treturn this._getRingWeightOffset(this.chart.data.datasets.length);\r\n\t}\r\n});\n\ncore_defaults._set('horizontalBar', {\r\n\thover: {\r\n\t\tmode: 'index',\r\n\t\taxis: 'y'\r\n\t},\r\n\r\n\tscales: {\r\n\t\txAxes: [{\r\n\t\t\ttype: 'linear',\r\n\t\t\tposition: 'bottom'\r\n\t\t}],\r\n\r\n\t\tyAxes: [{\r\n\t\t\ttype: 'category',\r\n\t\t\tposition: 'left',\r\n\t\t\toffset: true,\r\n\t\t\tgridLines: {\r\n\t\t\t\toffsetGridLines: true\r\n\t\t\t}\r\n\t\t}]\r\n\t},\r\n\r\n\telements: {\r\n\t\trectangle: {\r\n\t\t\tborderSkipped: 'left'\r\n\t\t}\r\n\t},\r\n\r\n\ttooltips: {\r\n\t\tmode: 'index',\r\n\t\taxis: 'y'\r\n\t}\r\n});\r\n\r\ncore_defaults._set('global', {\r\n\tdatasets: {\r\n\t\thorizontalBar: {\r\n\t\t\tcategoryPercentage: 0.8,\r\n\t\t\tbarPercentage: 0.9\r\n\t\t}\r\n\t}\r\n});\r\n\r\nvar controller_horizontalBar = controller_bar.extend({\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getValueScaleId: function() {\r\n\t\treturn this.getMeta().xAxisID;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getIndexScaleId: function() {\r\n\t\treturn this.getMeta().yAxisID;\r\n\t}\r\n});\n\nvar valueOrDefault$6 = helpers$1.valueOrDefault;\r\nvar resolve$2 = helpers$1.options.resolve;\r\nvar isPointInArea = helpers$1.canvas._isPointInArea;\r\n\r\ncore_defaults._set('line', {\r\n\tshowLines: true,\r\n\tspanGaps: false,\r\n\r\n\thover: {\r\n\t\tmode: 'label'\r\n\t},\r\n\r\n\tscales: {\r\n\t\txAxes: [{\r\n\t\t\ttype: 'category',\r\n\t\t\tid: 'x-axis-0'\r\n\t\t}],\r\n\t\tyAxes: [{\r\n\t\t\ttype: 'linear',\r\n\t\t\tid: 'y-axis-0'\r\n\t\t}]\r\n\t}\r\n});\r\n\r\nfunction scaleClip(scale, halfBorderWidth) {\r\n\tvar tickOpts = scale && scale.options.ticks || {};\r\n\tvar reverse = tickOpts.reverse;\r\n\tvar min = tickOpts.min === undefined ? halfBorderWidth : 0;\r\n\tvar max = tickOpts.max === undefined ? halfBorderWidth : 0;\r\n\treturn {\r\n\t\tstart: reverse ? max : min,\r\n\t\tend: reverse ? min : max\r\n\t};\r\n}\r\n\r\nfunction defaultClip(xScale, yScale, borderWidth) {\r\n\tvar halfBorderWidth = borderWidth / 2;\r\n\tvar x = scaleClip(xScale, halfBorderWidth);\r\n\tvar y = scaleClip(yScale, halfBorderWidth);\r\n\r\n\treturn {\r\n\t\ttop: y.end,\r\n\t\tright: x.end,\r\n\t\tbottom: y.start,\r\n\t\tleft: x.start\r\n\t};\r\n}\r\n\r\nfunction toClip(value) {\r\n\tvar t, r, b, l;\r\n\r\n\tif (helpers$1.isObject(value)) {\r\n\t\tt = value.top;\r\n\t\tr = value.right;\r\n\t\tb = value.bottom;\r\n\t\tl = value.left;\r\n\t} else {\r\n\t\tt = r = b = l = value;\r\n\t}\r\n\r\n\treturn {\r\n\t\ttop: t,\r\n\t\tright: r,\r\n\t\tbottom: b,\r\n\t\tleft: l\r\n\t};\r\n}\r\n\r\n\r\nvar controller_line = core_datasetController.extend({\r\n\r\n\tdatasetElementType: elements.Line,\r\n\r\n\tdataElementType: elements.Point,\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_datasetElementOptions: [\r\n\t\t'backgroundColor',\r\n\t\t'borderCapStyle',\r\n\t\t'borderColor',\r\n\t\t'borderDash',\r\n\t\t'borderDashOffset',\r\n\t\t'borderJoinStyle',\r\n\t\t'borderWidth',\r\n\t\t'cubicInterpolationMode',\r\n\t\t'fill'\r\n\t],\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_dataElementOptions: {\r\n\t\tbackgroundColor: 'pointBackgroundColor',\r\n\t\tborderColor: 'pointBorderColor',\r\n\t\tborderWidth: 'pointBorderWidth',\r\n\t\thitRadius: 'pointHitRadius',\r\n\t\thoverBackgroundColor: 'pointHoverBackgroundColor',\r\n\t\thoverBorderColor: 'pointHoverBorderColor',\r\n\t\thoverBorderWidth: 'pointHoverBorderWidth',\r\n\t\thoverRadius: 'pointHoverRadius',\r\n\t\tpointStyle: 'pointStyle',\r\n\t\tradius: 'pointRadius',\r\n\t\trotation: 'pointRotation'\r\n\t},\r\n\r\n\tupdate: function(reset) {\r\n\t\tvar me = this;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar line = meta.dataset;\r\n\t\tvar points = meta.data || [];\r\n\t\tvar options = me.chart.options;\r\n\t\tvar config = me._config;\r\n\t\tvar showLine = me._showLine = valueOrDefault$6(config.showLine, options.showLines);\r\n\t\tvar i, ilen;\r\n\r\n\t\tme._xScale = me.getScaleForId(meta.xAxisID);\r\n\t\tme._yScale = me.getScaleForId(meta.yAxisID);\r\n\r\n\t\t// Update Line\r\n\t\tif (showLine) {\r\n\t\t\t// Compatibility: If the properties are defined with only the old name, use those values\r\n\t\t\tif (config.tension !== undefined && config.lineTension === undefined) {\r\n\t\t\t\tconfig.lineTension = config.tension;\r\n\t\t\t}\r\n\r\n\t\t\t// Utility\r\n\t\t\tline._scale = me._yScale;\r\n\t\t\tline._datasetIndex = me.index;\r\n\t\t\t// Data\r\n\t\t\tline._children = points;\r\n\t\t\t// Model\r\n\t\t\tline._model = me._resolveDatasetElementOptions(line);\r\n\r\n\t\t\tline.pivot();\r\n\t\t}\r\n\r\n\t\t// Update Points\r\n\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\r\n\t\t\tme.updateElement(points[i], i, reset);\r\n\t\t}\r\n\r\n\t\tif (showLine && line._model.tension !== 0) {\r\n\t\t\tme.updateBezierControlPoints();\r\n\t\t}\r\n\r\n\t\t// Now pivot the point for animation\r\n\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\r\n\t\t\tpoints[i].pivot();\r\n\t\t}\r\n\t},\r\n\r\n\tupdateElement: function(point, index, reset) {\r\n\t\tvar me = this;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar custom = point.custom || {};\r\n\t\tvar dataset = me.getDataset();\r\n\t\tvar datasetIndex = me.index;\r\n\t\tvar value = dataset.data[index];\r\n\t\tvar xScale = me._xScale;\r\n\t\tvar yScale = me._yScale;\r\n\t\tvar lineModel = meta.dataset._model;\r\n\t\tvar x, y;\r\n\r\n\t\tvar options = me._resolveDataElementOptions(point, index);\r\n\r\n\t\tx = xScale.getPixelForValue(typeof value === 'object' ? value : NaN, index, datasetIndex);\r\n\t\ty = reset ? yScale.getBasePixel() : me.calculatePointY(value, index, datasetIndex);\r\n\r\n\t\t// Utility\r\n\t\tpoint._xScale = xScale;\r\n\t\tpoint._yScale = yScale;\r\n\t\tpoint._options = options;\r\n\t\tpoint._datasetIndex = datasetIndex;\r\n\t\tpoint._index = index;\r\n\r\n\t\t// Desired view properties\r\n\t\tpoint._model = {\r\n\t\t\tx: x,\r\n\t\t\ty: y,\r\n\t\t\tskip: custom.skip || isNaN(x) || isNaN(y),\r\n\t\t\t// Appearance\r\n\t\t\tradius: options.radius,\r\n\t\t\tpointStyle: options.pointStyle,\r\n\t\t\trotation: options.rotation,\r\n\t\t\tbackgroundColor: options.backgroundColor,\r\n\t\t\tborderColor: options.borderColor,\r\n\t\t\tborderWidth: options.borderWidth,\r\n\t\t\ttension: valueOrDefault$6(custom.tension, lineModel ? lineModel.tension : 0),\r\n\t\t\tsteppedLine: lineModel ? lineModel.steppedLine : false,\r\n\t\t\t// Tooltip\r\n\t\t\thitRadius: options.hitRadius\r\n\t\t};\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_resolveDatasetElementOptions: function(element) {\r\n\t\tvar me = this;\r\n\t\tvar config = me._config;\r\n\t\tvar custom = element.custom || {};\r\n\t\tvar options = me.chart.options;\r\n\t\tvar lineOptions = options.elements.line;\r\n\t\tvar values = core_datasetController.prototype._resolveDatasetElementOptions.apply(me, arguments);\r\n\r\n\t\t// The default behavior of lines is to break at null values, according\r\n\t\t// to https://github.com/chartjs/Chart.js/issues/2435#issuecomment-216718158\r\n\t\t// This option gives lines the ability to span gaps\r\n\t\tvalues.spanGaps = valueOrDefault$6(config.spanGaps, options.spanGaps);\r\n\t\tvalues.tension = valueOrDefault$6(config.lineTension, lineOptions.tension);\r\n\t\tvalues.steppedLine = resolve$2([custom.steppedLine, config.steppedLine, lineOptions.stepped]);\r\n\t\tvalues.clip = toClip(valueOrDefault$6(config.clip, defaultClip(me._xScale, me._yScale, values.borderWidth)));\r\n\r\n\t\treturn values;\r\n\t},\r\n\r\n\tcalculatePointY: function(value, index, datasetIndex) {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar yScale = me._yScale;\r\n\t\tvar sumPos = 0;\r\n\t\tvar sumNeg = 0;\r\n\t\tvar i, ds, dsMeta, stackedRightValue, rightValue, metasets, ilen;\r\n\r\n\t\tif (yScale.options.stacked) {\r\n\t\t\trightValue = +yScale.getRightValue(value);\r\n\t\t\tmetasets = chart._getSortedVisibleDatasetMetas();\r\n\t\t\tilen = metasets.length;\r\n\r\n\t\t\tfor (i = 0; i < ilen; ++i) {\r\n\t\t\t\tdsMeta = metasets[i];\r\n\t\t\t\tif (dsMeta.index === datasetIndex) {\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tds = chart.data.datasets[dsMeta.index];\r\n\t\t\t\tif (dsMeta.type === 'line' && dsMeta.yAxisID === yScale.id) {\r\n\t\t\t\t\tstackedRightValue = +yScale.getRightValue(ds.data[index]);\r\n\t\t\t\t\tif (stackedRightValue < 0) {\r\n\t\t\t\t\t\tsumNeg += stackedRightValue || 0;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tsumPos += stackedRightValue || 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (rightValue < 0) {\r\n\t\t\t\treturn yScale.getPixelForValue(sumNeg + rightValue);\r\n\t\t\t}\r\n\t\t\treturn yScale.getPixelForValue(sumPos + rightValue);\r\n\t\t}\r\n\t\treturn yScale.getPixelForValue(value);\r\n\t},\r\n\r\n\tupdateBezierControlPoints: function() {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar lineModel = meta.dataset._model;\r\n\t\tvar area = chart.chartArea;\r\n\t\tvar points = meta.data || [];\r\n\t\tvar i, ilen, model, controlPoints;\r\n\r\n\t\t// Only consider points that are drawn in case the spanGaps option is used\r\n\t\tif (lineModel.spanGaps) {\r\n\t\t\tpoints = points.filter(function(pt) {\r\n\t\t\t\treturn !pt._model.skip;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tfunction capControlPoint(pt, min, max) {\r\n\t\t\treturn Math.max(Math.min(pt, max), min);\r\n\t\t}\r\n\r\n\t\tif (lineModel.cubicInterpolationMode === 'monotone') {\r\n\t\t\thelpers$1.splineCurveMonotone(points);\r\n\t\t} else {\r\n\t\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\r\n\t\t\t\tmodel = points[i]._model;\r\n\t\t\t\tcontrolPoints = helpers$1.splineCurve(\r\n\t\t\t\t\thelpers$1.previousItem(points, i)._model,\r\n\t\t\t\t\tmodel,\r\n\t\t\t\t\thelpers$1.nextItem(points, i)._model,\r\n\t\t\t\t\tlineModel.tension\r\n\t\t\t\t);\r\n\t\t\t\tmodel.controlPointPreviousX = controlPoints.previous.x;\r\n\t\t\t\tmodel.controlPointPreviousY = controlPoints.previous.y;\r\n\t\t\t\tmodel.controlPointNextX = controlPoints.next.x;\r\n\t\t\t\tmodel.controlPointNextY = controlPoints.next.y;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (chart.options.elements.line.capBezierPoints) {\r\n\t\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\r\n\t\t\t\tmodel = points[i]._model;\r\n\t\t\t\tif (isPointInArea(model, area)) {\r\n\t\t\t\t\tif (i > 0 && isPointInArea(points[i - 1]._model, area)) {\r\n\t\t\t\t\t\tmodel.controlPointPreviousX = capControlPoint(model.controlPointPreviousX, area.left, area.right);\r\n\t\t\t\t\t\tmodel.controlPointPreviousY = capControlPoint(model.controlPointPreviousY, area.top, area.bottom);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (i < points.length - 1 && isPointInArea(points[i + 1]._model, area)) {\r\n\t\t\t\t\t\tmodel.controlPointNextX = capControlPoint(model.controlPointNextX, area.left, area.right);\r\n\t\t\t\t\t\tmodel.controlPointNextY = capControlPoint(model.controlPointNextY, area.top, area.bottom);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tdraw: function() {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar points = meta.data || [];\r\n\t\tvar area = chart.chartArea;\r\n\t\tvar canvas = chart.canvas;\r\n\t\tvar i = 0;\r\n\t\tvar ilen = points.length;\r\n\t\tvar clip;\r\n\r\n\t\tif (me._showLine) {\r\n\t\t\tclip = meta.dataset._model.clip;\r\n\r\n\t\t\thelpers$1.canvas.clipArea(chart.ctx, {\r\n\t\t\t\tleft: clip.left === false ? 0 : area.left - clip.left,\r\n\t\t\t\tright: clip.right === false ? canvas.width : area.right + clip.right,\r\n\t\t\t\ttop: clip.top === false ? 0 : area.top - clip.top,\r\n\t\t\t\tbottom: clip.bottom === false ? canvas.height : area.bottom + clip.bottom\r\n\t\t\t});\r\n\r\n\t\t\tmeta.dataset.draw();\r\n\r\n\t\t\thelpers$1.canvas.unclipArea(chart.ctx);\r\n\t\t}\r\n\r\n\t\t// Draw the points\r\n\t\tfor (; i < ilen; ++i) {\r\n\t\t\tpoints[i].draw(area);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * @protected\r\n\t */\r\n\tsetHoverStyle: function(point) {\r\n\t\tvar model = point._model;\r\n\t\tvar options = point._options;\r\n\t\tvar getHoverColor = helpers$1.getHoverColor;\r\n\r\n\t\tpoint.$previousStyle = {\r\n\t\t\tbackgroundColor: model.backgroundColor,\r\n\t\t\tborderColor: model.borderColor,\r\n\t\t\tborderWidth: model.borderWidth,\r\n\t\t\tradius: model.radius\r\n\t\t};\r\n\r\n\t\tmodel.backgroundColor = valueOrDefault$6(options.hoverBackgroundColor, getHoverColor(options.backgroundColor));\r\n\t\tmodel.borderColor = valueOrDefault$6(options.hoverBorderColor, getHoverColor(options.borderColor));\r\n\t\tmodel.borderWidth = valueOrDefault$6(options.hoverBorderWidth, options.borderWidth);\r\n\t\tmodel.radius = valueOrDefault$6(options.hoverRadius, options.radius);\r\n\t},\r\n});\n\nvar resolve$3 = helpers$1.options.resolve;\r\n\r\ncore_defaults._set('polarArea', {\r\n\tscale: {\r\n\t\ttype: 'radialLinear',\r\n\t\tangleLines: {\r\n\t\t\tdisplay: false\r\n\t\t},\r\n\t\tgridLines: {\r\n\t\t\tcircular: true\r\n\t\t},\r\n\t\tpointLabels: {\r\n\t\t\tdisplay: false\r\n\t\t},\r\n\t\tticks: {\r\n\t\t\tbeginAtZero: true\r\n\t\t}\r\n\t},\r\n\r\n\t// Boolean - Whether to animate the rotation of the chart\r\n\tanimation: {\r\n\t\tanimateRotate: true,\r\n\t\tanimateScale: true\r\n\t},\r\n\r\n\tstartAngle: -0.5 * Math.PI,\r\n\tlegendCallback: function(chart) {\r\n\t\tvar list = document.createElement('ul');\r\n\t\tvar data = chart.data;\r\n\t\tvar datasets = data.datasets;\r\n\t\tvar labels = data.labels;\r\n\t\tvar i, ilen, listItem, listItemSpan;\r\n\r\n\t\tlist.setAttribute('class', chart.id + '-legend');\r\n\t\tif (datasets.length) {\r\n\t\t\tfor (i = 0, ilen = datasets[0].data.length; i < ilen; ++i) {\r\n\t\t\t\tlistItem = list.appendChild(document.createElement('li'));\r\n\t\t\t\tlistItemSpan = listItem.appendChild(document.createElement('span'));\r\n\t\t\t\tlistItemSpan.style.backgroundColor = datasets[0].backgroundColor[i];\r\n\t\t\t\tif (labels[i]) {\r\n\t\t\t\t\tlistItem.appendChild(document.createTextNode(labels[i]));\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn list.outerHTML;\r\n\t},\r\n\tlegend: {\r\n\t\tlabels: {\r\n\t\t\tgenerateLabels: function(chart) {\r\n\t\t\t\tvar data = chart.data;\r\n\t\t\t\tif (data.labels.length && data.datasets.length) {\r\n\t\t\t\t\treturn data.labels.map(function(label, i) {\r\n\t\t\t\t\t\tvar meta = chart.getDatasetMeta(0);\r\n\t\t\t\t\t\tvar style = meta.controller.getStyle(i);\r\n\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\ttext: label,\r\n\t\t\t\t\t\t\tfillStyle: style.backgroundColor,\r\n\t\t\t\t\t\t\tstrokeStyle: style.borderColor,\r\n\t\t\t\t\t\t\tlineWidth: style.borderWidth,\r\n\t\t\t\t\t\t\thidden: isNaN(data.datasets[0].data[i]) || meta.data[i].hidden,\r\n\r\n\t\t\t\t\t\t\t// Extra data used for toggling the correct item\r\n\t\t\t\t\t\t\tindex: i\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t\treturn [];\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tonClick: function(e, legendItem) {\r\n\t\t\tvar index = legendItem.index;\r\n\t\t\tvar chart = this.chart;\r\n\t\t\tvar i, ilen, meta;\r\n\r\n\t\t\tfor (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) {\r\n\t\t\t\tmeta = chart.getDatasetMeta(i);\r\n\t\t\t\tmeta.data[index].hidden = !meta.data[index].hidden;\r\n\t\t\t}\r\n\r\n\t\t\tchart.update();\r\n\t\t}\r\n\t},\r\n\r\n\t// Need to override these to give a nice default\r\n\ttooltips: {\r\n\t\tcallbacks: {\r\n\t\t\ttitle: function() {\r\n\t\t\t\treturn '';\r\n\t\t\t},\r\n\t\t\tlabel: function(item, data) {\r\n\t\t\t\treturn data.labels[item.index] + ': ' + item.yLabel;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n});\r\n\r\nvar controller_polarArea = core_datasetController.extend({\r\n\r\n\tdataElementType: elements.Arc,\r\n\r\n\tlinkScales: helpers$1.noop,\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_dataElementOptions: [\r\n\t\t'backgroundColor',\r\n\t\t'borderColor',\r\n\t\t'borderWidth',\r\n\t\t'borderAlign',\r\n\t\t'hoverBackgroundColor',\r\n\t\t'hoverBorderColor',\r\n\t\t'hoverBorderWidth',\r\n\t],\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getIndexScaleId: function() {\r\n\t\treturn this.chart.scale.id;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getValueScaleId: function() {\r\n\t\treturn this.chart.scale.id;\r\n\t},\r\n\r\n\tupdate: function(reset) {\r\n\t\tvar me = this;\r\n\t\tvar dataset = me.getDataset();\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar start = me.chart.options.startAngle || 0;\r\n\t\tvar starts = me._starts = [];\r\n\t\tvar angles = me._angles = [];\r\n\t\tvar arcs = meta.data;\r\n\t\tvar i, ilen, angle;\r\n\r\n\t\tme._updateRadius();\r\n\r\n\t\tmeta.count = me.countVisibleElements();\r\n\r\n\t\tfor (i = 0, ilen = dataset.data.length; i < ilen; i++) {\r\n\t\t\tstarts[i] = start;\r\n\t\t\tangle = me._computeAngle(i);\r\n\t\t\tangles[i] = angle;\r\n\t\t\tstart += angle;\r\n\t\t}\r\n\r\n\t\tfor (i = 0, ilen = arcs.length; i < ilen; ++i) {\r\n\t\t\tarcs[i]._options = me._resolveDataElementOptions(arcs[i], i);\r\n\t\t\tme.updateElement(arcs[i], i, reset);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_updateRadius: function() {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar chartArea = chart.chartArea;\r\n\t\tvar opts = chart.options;\r\n\t\tvar minSize = Math.min(chartArea.right - chartArea.left, chartArea.bottom - chartArea.top);\r\n\r\n\t\tchart.outerRadius = Math.max(minSize / 2, 0);\r\n\t\tchart.innerRadius = Math.max(opts.cutoutPercentage ? (chart.outerRadius / 100) * (opts.cutoutPercentage) : 1, 0);\r\n\t\tchart.radiusLength = (chart.outerRadius - chart.innerRadius) / chart.getVisibleDatasetCount();\r\n\r\n\t\tme.outerRadius = chart.outerRadius - (chart.radiusLength * me.index);\r\n\t\tme.innerRadius = me.outerRadius - chart.radiusLength;\r\n\t},\r\n\r\n\tupdateElement: function(arc, index, reset) {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar dataset = me.getDataset();\r\n\t\tvar opts = chart.options;\r\n\t\tvar animationOpts = opts.animation;\r\n\t\tvar scale = chart.scale;\r\n\t\tvar labels = chart.data.labels;\r\n\r\n\t\tvar centerX = scale.xCenter;\r\n\t\tvar centerY = scale.yCenter;\r\n\r\n\t\t// var negHalfPI = -0.5 * Math.PI;\r\n\t\tvar datasetStartAngle = opts.startAngle;\r\n\t\tvar distance = arc.hidden ? 0 : scale.getDistanceFromCenterForValue(dataset.data[index]);\r\n\t\tvar startAngle = me._starts[index];\r\n\t\tvar endAngle = startAngle + (arc.hidden ? 0 : me._angles[index]);\r\n\r\n\t\tvar resetRadius = animationOpts.animateScale ? 0 : scale.getDistanceFromCenterForValue(dataset.data[index]);\r\n\t\tvar options = arc._options || {};\r\n\r\n\t\thelpers$1.extend(arc, {\r\n\t\t\t// Utility\r\n\t\t\t_datasetIndex: me.index,\r\n\t\t\t_index: index,\r\n\t\t\t_scale: scale,\r\n\r\n\t\t\t// Desired view properties\r\n\t\t\t_model: {\r\n\t\t\t\tbackgroundColor: options.backgroundColor,\r\n\t\t\t\tborderColor: options.borderColor,\r\n\t\t\t\tborderWidth: options.borderWidth,\r\n\t\t\t\tborderAlign: options.borderAlign,\r\n\t\t\t\tx: centerX,\r\n\t\t\t\ty: centerY,\r\n\t\t\t\tinnerRadius: 0,\r\n\t\t\t\touterRadius: reset ? resetRadius : distance,\r\n\t\t\t\tstartAngle: reset && animationOpts.animateRotate ? datasetStartAngle : startAngle,\r\n\t\t\t\tendAngle: reset && animationOpts.animateRotate ? datasetStartAngle : endAngle,\r\n\t\t\t\tlabel: helpers$1.valueAtIndexOrDefault(labels, index, labels[index])\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tarc.pivot();\r\n\t},\r\n\r\n\tcountVisibleElements: function() {\r\n\t\tvar dataset = this.getDataset();\r\n\t\tvar meta = this.getMeta();\r\n\t\tvar count = 0;\r\n\r\n\t\thelpers$1.each(meta.data, function(element, index) {\r\n\t\t\tif (!isNaN(dataset.data[index]) && !element.hidden) {\r\n\t\t\t\tcount++;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn count;\r\n\t},\r\n\r\n\t/**\r\n\t * @protected\r\n\t */\r\n\tsetHoverStyle: function(arc) {\r\n\t\tvar model = arc._model;\r\n\t\tvar options = arc._options;\r\n\t\tvar getHoverColor = helpers$1.getHoverColor;\r\n\t\tvar valueOrDefault = helpers$1.valueOrDefault;\r\n\r\n\t\tarc.$previousStyle = {\r\n\t\t\tbackgroundColor: model.backgroundColor,\r\n\t\t\tborderColor: model.borderColor,\r\n\t\t\tborderWidth: model.borderWidth,\r\n\t\t};\r\n\r\n\t\tmodel.backgroundColor = valueOrDefault(options.hoverBackgroundColor, getHoverColor(options.backgroundColor));\r\n\t\tmodel.borderColor = valueOrDefault(options.hoverBorderColor, getHoverColor(options.borderColor));\r\n\t\tmodel.borderWidth = valueOrDefault(options.hoverBorderWidth, options.borderWidth);\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_computeAngle: function(index) {\r\n\t\tvar me = this;\r\n\t\tvar count = this.getMeta().count;\r\n\t\tvar dataset = me.getDataset();\r\n\t\tvar meta = me.getMeta();\r\n\r\n\t\tif (isNaN(dataset.data[index]) || meta.data[index].hidden) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\r\n\t\t// Scriptable options\r\n\t\tvar context = {\r\n\t\t\tchart: me.chart,\r\n\t\t\tdataIndex: index,\r\n\t\t\tdataset: dataset,\r\n\t\t\tdatasetIndex: me.index\r\n\t\t};\r\n\r\n\t\treturn resolve$3([\r\n\t\t\tme.chart.options.elements.arc.angle,\r\n\t\t\t(2 * Math.PI) / count\r\n\t\t], context, index);\r\n\t}\r\n});\n\ncore_defaults._set('pie', helpers$1.clone(core_defaults.doughnut));\r\ncore_defaults._set('pie', {\r\n\tcutoutPercentage: 0\r\n});\r\n\r\n// Pie charts are Doughnut chart with different defaults\r\nvar controller_pie = controller_doughnut;\n\nvar valueOrDefault$7 = helpers$1.valueOrDefault;\r\n\r\ncore_defaults._set('radar', {\r\n\tspanGaps: false,\r\n\tscale: {\r\n\t\ttype: 'radialLinear'\r\n\t},\r\n\telements: {\r\n\t\tline: {\r\n\t\t\tfill: 'start',\r\n\t\t\ttension: 0 // no bezier in radar\r\n\t\t}\r\n\t}\r\n});\r\n\r\nvar controller_radar = core_datasetController.extend({\r\n\tdatasetElementType: elements.Line,\r\n\r\n\tdataElementType: elements.Point,\r\n\r\n\tlinkScales: helpers$1.noop,\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_datasetElementOptions: [\r\n\t\t'backgroundColor',\r\n\t\t'borderWidth',\r\n\t\t'borderColor',\r\n\t\t'borderCapStyle',\r\n\t\t'borderDash',\r\n\t\t'borderDashOffset',\r\n\t\t'borderJoinStyle',\r\n\t\t'fill'\r\n\t],\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_dataElementOptions: {\r\n\t\tbackgroundColor: 'pointBackgroundColor',\r\n\t\tborderColor: 'pointBorderColor',\r\n\t\tborderWidth: 'pointBorderWidth',\r\n\t\thitRadius: 'pointHitRadius',\r\n\t\thoverBackgroundColor: 'pointHoverBackgroundColor',\r\n\t\thoverBorderColor: 'pointHoverBorderColor',\r\n\t\thoverBorderWidth: 'pointHoverBorderWidth',\r\n\t\thoverRadius: 'pointHoverRadius',\r\n\t\tpointStyle: 'pointStyle',\r\n\t\tradius: 'pointRadius',\r\n\t\trotation: 'pointRotation'\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getIndexScaleId: function() {\r\n\t\treturn this.chart.scale.id;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getValueScaleId: function() {\r\n\t\treturn this.chart.scale.id;\r\n\t},\r\n\r\n\tupdate: function(reset) {\r\n\t\tvar me = this;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar line = meta.dataset;\r\n\t\tvar points = meta.data || [];\r\n\t\tvar scale = me.chart.scale;\r\n\t\tvar config = me._config;\r\n\t\tvar i, ilen;\r\n\r\n\t\t// Compatibility: If the properties are defined with only the old name, use those values\r\n\t\tif (config.tension !== undefined && config.lineTension === undefined) {\r\n\t\t\tconfig.lineTension = config.tension;\r\n\t\t}\r\n\r\n\t\t// Utility\r\n\t\tline._scale = scale;\r\n\t\tline._datasetIndex = me.index;\r\n\t\t// Data\r\n\t\tline._children = points;\r\n\t\tline._loop = true;\r\n\t\t// Model\r\n\t\tline._model = me._resolveDatasetElementOptions(line);\r\n\r\n\t\tline.pivot();\r\n\r\n\t\t// Update Points\r\n\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\r\n\t\t\tme.updateElement(points[i], i, reset);\r\n\t\t}\r\n\r\n\t\t// Update bezier control points\r\n\t\tme.updateBezierControlPoints();\r\n\r\n\t\t// Now pivot the point for animation\r\n\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\r\n\t\t\tpoints[i].pivot();\r\n\t\t}\r\n\t},\r\n\r\n\tupdateElement: function(point, index, reset) {\r\n\t\tvar me = this;\r\n\t\tvar custom = point.custom || {};\r\n\t\tvar dataset = me.getDataset();\r\n\t\tvar scale = me.chart.scale;\r\n\t\tvar pointPosition = scale.getPointPositionForValue(index, dataset.data[index]);\r\n\t\tvar options = me._resolveDataElementOptions(point, index);\r\n\t\tvar lineModel = me.getMeta().dataset._model;\r\n\t\tvar x = reset ? scale.xCenter : pointPosition.x;\r\n\t\tvar y = reset ? scale.yCenter : pointPosition.y;\r\n\r\n\t\t// Utility\r\n\t\tpoint._scale = scale;\r\n\t\tpoint._options = options;\r\n\t\tpoint._datasetIndex = me.index;\r\n\t\tpoint._index = index;\r\n\r\n\t\t// Desired view properties\r\n\t\tpoint._model = {\r\n\t\t\tx: x, // value not used in dataset scale, but we want a consistent API between scales\r\n\t\t\ty: y,\r\n\t\t\tskip: custom.skip || isNaN(x) || isNaN(y),\r\n\t\t\t// Appearance\r\n\t\t\tradius: options.radius,\r\n\t\t\tpointStyle: options.pointStyle,\r\n\t\t\trotation: options.rotation,\r\n\t\t\tbackgroundColor: options.backgroundColor,\r\n\t\t\tborderColor: options.borderColor,\r\n\t\t\tborderWidth: options.borderWidth,\r\n\t\t\ttension: valueOrDefault$7(custom.tension, lineModel ? lineModel.tension : 0),\r\n\r\n\t\t\t// Tooltip\r\n\t\t\thitRadius: options.hitRadius\r\n\t\t};\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_resolveDatasetElementOptions: function() {\r\n\t\tvar me = this;\r\n\t\tvar config = me._config;\r\n\t\tvar options = me.chart.options;\r\n\t\tvar values = core_datasetController.prototype._resolveDatasetElementOptions.apply(me, arguments);\r\n\r\n\t\tvalues.spanGaps = valueOrDefault$7(config.spanGaps, options.spanGaps);\r\n\t\tvalues.tension = valueOrDefault$7(config.lineTension, options.elements.line.tension);\r\n\r\n\t\treturn values;\r\n\t},\r\n\r\n\tupdateBezierControlPoints: function() {\r\n\t\tvar me = this;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar area = me.chart.chartArea;\r\n\t\tvar points = meta.data || [];\r\n\t\tvar i, ilen, model, controlPoints;\r\n\r\n\t\t// Only consider points that are drawn in case the spanGaps option is used\r\n\t\tif (meta.dataset._model.spanGaps) {\r\n\t\t\tpoints = points.filter(function(pt) {\r\n\t\t\t\treturn !pt._model.skip;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tfunction capControlPoint(pt, min, max) {\r\n\t\t\treturn Math.max(Math.min(pt, max), min);\r\n\t\t}\r\n\r\n\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\r\n\t\t\tmodel = points[i]._model;\r\n\t\t\tcontrolPoints = helpers$1.splineCurve(\r\n\t\t\t\thelpers$1.previousItem(points, i, true)._model,\r\n\t\t\t\tmodel,\r\n\t\t\t\thelpers$1.nextItem(points, i, true)._model,\r\n\t\t\t\tmodel.tension\r\n\t\t\t);\r\n\r\n\t\t\t// Prevent the bezier going outside of the bounds of the graph\r\n\t\t\tmodel.controlPointPreviousX = capControlPoint(controlPoints.previous.x, area.left, area.right);\r\n\t\t\tmodel.controlPointPreviousY = capControlPoint(controlPoints.previous.y, area.top, area.bottom);\r\n\t\t\tmodel.controlPointNextX = capControlPoint(controlPoints.next.x, area.left, area.right);\r\n\t\t\tmodel.controlPointNextY = capControlPoint(controlPoints.next.y, area.top, area.bottom);\r\n\t\t}\r\n\t},\r\n\r\n\tsetHoverStyle: function(point) {\r\n\t\tvar model = point._model;\r\n\t\tvar options = point._options;\r\n\t\tvar getHoverColor = helpers$1.getHoverColor;\r\n\r\n\t\tpoint.$previousStyle = {\r\n\t\t\tbackgroundColor: model.backgroundColor,\r\n\t\t\tborderColor: model.borderColor,\r\n\t\t\tborderWidth: model.borderWidth,\r\n\t\t\tradius: model.radius\r\n\t\t};\r\n\r\n\t\tmodel.backgroundColor = valueOrDefault$7(options.hoverBackgroundColor, getHoverColor(options.backgroundColor));\r\n\t\tmodel.borderColor = valueOrDefault$7(options.hoverBorderColor, getHoverColor(options.borderColor));\r\n\t\tmodel.borderWidth = valueOrDefault$7(options.hoverBorderWidth, options.borderWidth);\r\n\t\tmodel.radius = valueOrDefault$7(options.hoverRadius, options.radius);\r\n\t}\r\n});\n\ncore_defaults._set('scatter', {\r\n\thover: {\r\n\t\tmode: 'single'\r\n\t},\r\n\r\n\tscales: {\r\n\t\txAxes: [{\r\n\t\t\tid: 'x-axis-1',    // need an ID so datasets can reference the scale\r\n\t\t\ttype: 'linear',    // scatter should not use a category axis\r\n\t\t\tposition: 'bottom'\r\n\t\t}],\r\n\t\tyAxes: [{\r\n\t\t\tid: 'y-axis-1',\r\n\t\t\ttype: 'linear',\r\n\t\t\tposition: 'left'\r\n\t\t}]\r\n\t},\r\n\r\n\ttooltips: {\r\n\t\tcallbacks: {\r\n\t\t\ttitle: function() {\r\n\t\t\t\treturn '';     // doesn't make sense for scatter since data are formatted as a point\r\n\t\t\t},\r\n\t\t\tlabel: function(item) {\r\n\t\t\t\treturn '(' + item.xLabel + ', ' + item.yLabel + ')';\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n});\r\n\r\ncore_defaults._set('global', {\r\n\tdatasets: {\r\n\t\tscatter: {\r\n\t\t\tshowLine: false\r\n\t\t}\r\n\t}\r\n});\r\n\r\n// Scatter charts use line controllers\r\nvar controller_scatter = controller_line;\n\n// NOTE export a map in which the key represents the controller type, not\r\n// the class, and so must be CamelCase in order to be correctly retrieved\r\n// by the controller in core.controller.js (`controllers[meta.type]`).\r\n\r\nvar controllers = {\r\n\tbar: controller_bar,\r\n\tbubble: controller_bubble,\r\n\tdoughnut: controller_doughnut,\r\n\thorizontalBar: controller_horizontalBar,\r\n\tline: controller_line,\r\n\tpolarArea: controller_polarArea,\r\n\tpie: controller_pie,\r\n\tradar: controller_radar,\r\n\tscatter: controller_scatter\r\n};\n\n/**\r\n * Helper function to get relative position for an event\r\n * @param {Event|IEvent} event - The event to get the position for\r\n * @param {Chart} chart - The chart\r\n * @returns {object} the event position\r\n */\r\nfunction getRelativePosition(e, chart) {\r\n\tif (e.native) {\r\n\t\treturn {\r\n\t\t\tx: e.x,\r\n\t\t\ty: e.y\r\n\t\t};\r\n\t}\r\n\r\n\treturn helpers$1.getRelativePosition(e, chart);\r\n}\r\n\r\n/**\r\n * Helper function to traverse all of the visible elements in the chart\r\n * @param {Chart} chart - the chart\r\n * @param {function} handler - the callback to execute for each visible item\r\n */\r\nfunction parseVisibleItems(chart, handler) {\r\n\tvar metasets = chart._getSortedVisibleDatasetMetas();\r\n\tvar metadata, i, j, ilen, jlen, element;\r\n\r\n\tfor (i = 0, ilen = metasets.length; i < ilen; ++i) {\r\n\t\tmetadata = metasets[i].data;\r\n\t\tfor (j = 0, jlen = metadata.length; j < jlen; ++j) {\r\n\t\t\telement = metadata[j];\r\n\t\t\tif (!element._view.skip) {\r\n\t\t\t\thandler(element);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\n/**\r\n * Helper function to get the items that intersect the event position\r\n * @param {ChartElement[]} items - elements to filter\r\n * @param {object} position - the point to be nearest to\r\n * @return {ChartElement[]} the nearest items\r\n */\r\nfunction getIntersectItems(chart, position) {\r\n\tvar elements = [];\r\n\r\n\tparseVisibleItems(chart, function(element) {\r\n\t\tif (element.inRange(position.x, position.y)) {\r\n\t\t\telements.push(element);\r\n\t\t}\r\n\t});\r\n\r\n\treturn elements;\r\n}\r\n\r\n/**\r\n * Helper function to get the items nearest to the event position considering all visible items in teh chart\r\n * @param {Chart} chart - the chart to look at elements from\r\n * @param {object} position - the point to be nearest to\r\n * @param {boolean} intersect - if true, only consider items that intersect the position\r\n * @param {function} distanceMetric - function to provide the distance between points\r\n * @return {ChartElement[]} the nearest items\r\n */\r\nfunction getNearestItems(chart, position, intersect, distanceMetric) {\r\n\tvar minDistance = Number.POSITIVE_INFINITY;\r\n\tvar nearestItems = [];\r\n\r\n\tparseVisibleItems(chart, function(element) {\r\n\t\tif (intersect && !element.inRange(position.x, position.y)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar center = element.getCenterPoint();\r\n\t\tvar distance = distanceMetric(position, center);\r\n\t\tif (distance < minDistance) {\r\n\t\t\tnearestItems = [element];\r\n\t\t\tminDistance = distance;\r\n\t\t} else if (distance === minDistance) {\r\n\t\t\t// Can have multiple items at the same distance in which case we sort by size\r\n\t\t\tnearestItems.push(element);\r\n\t\t}\r\n\t});\r\n\r\n\treturn nearestItems;\r\n}\r\n\r\n/**\r\n * Get a distance metric function for two points based on the\r\n * axis mode setting\r\n * @param {string} axis - the axis mode. x|y|xy\r\n */\r\nfunction getDistanceMetricForAxis(axis) {\r\n\tvar useX = axis.indexOf('x') !== -1;\r\n\tvar useY = axis.indexOf('y') !== -1;\r\n\r\n\treturn function(pt1, pt2) {\r\n\t\tvar deltaX = useX ? Math.abs(pt1.x - pt2.x) : 0;\r\n\t\tvar deltaY = useY ? Math.abs(pt1.y - pt2.y) : 0;\r\n\t\treturn Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2));\r\n\t};\r\n}\r\n\r\nfunction indexMode(chart, e, options) {\r\n\tvar position = getRelativePosition(e, chart);\r\n\t// Default axis for index mode is 'x' to match old behaviour\r\n\toptions.axis = options.axis || 'x';\r\n\tvar distanceMetric = getDistanceMetricForAxis(options.axis);\r\n\tvar items = options.intersect ? getIntersectItems(chart, position) : getNearestItems(chart, position, false, distanceMetric);\r\n\tvar elements = [];\r\n\r\n\tif (!items.length) {\r\n\t\treturn [];\r\n\t}\r\n\r\n\tchart._getSortedVisibleDatasetMetas().forEach(function(meta) {\r\n\t\tvar element = meta.data[items[0]._index];\r\n\r\n\t\t// don't count items that are skipped (null data)\r\n\t\tif (element && !element._view.skip) {\r\n\t\t\telements.push(element);\r\n\t\t}\r\n\t});\r\n\r\n\treturn elements;\r\n}\r\n\r\n/**\r\n * @interface IInteractionOptions\r\n */\r\n/**\r\n * If true, only consider items that intersect the point\r\n * @name IInterfaceOptions#boolean\r\n * @type Boolean\r\n */\r\n\r\n/**\r\n * Contains interaction related functions\r\n * @namespace Chart.Interaction\r\n */\r\nvar core_interaction = {\r\n\t// Helper function for different modes\r\n\tmodes: {\r\n\t\tsingle: function(chart, e) {\r\n\t\t\tvar position = getRelativePosition(e, chart);\r\n\t\t\tvar elements = [];\r\n\r\n\t\t\tparseVisibleItems(chart, function(element) {\r\n\t\t\t\tif (element.inRange(position.x, position.y)) {\r\n\t\t\t\t\telements.push(element);\r\n\t\t\t\t\treturn elements;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\treturn elements.slice(0, 1);\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @function Chart.Interaction.modes.label\r\n\t\t * @deprecated since version 2.4.0\r\n\t\t * @todo remove at version 3\r\n\t\t * @private\r\n\t\t */\r\n\t\tlabel: indexMode,\r\n\r\n\t\t/**\r\n\t\t * Returns items at the same index. If the options.intersect parameter is true, we only return items if we intersect something\r\n\t\t * If the options.intersect mode is false, we find the nearest item and return the items at the same index as that item\r\n\t\t * @function Chart.Interaction.modes.index\r\n\t\t * @since v2.4.0\r\n\t\t * @param {Chart} chart - the chart we are returning items from\r\n\t\t * @param {Event} e - the event we are find things at\r\n\t\t * @param {IInteractionOptions} options - options to use during interaction\r\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\r\n\t\t */\r\n\t\tindex: indexMode,\r\n\r\n\t\t/**\r\n\t\t * Returns items in the same dataset. If the options.intersect parameter is true, we only return items if we intersect something\r\n\t\t * If the options.intersect is false, we find the nearest item and return the items in that dataset\r\n\t\t * @function Chart.Interaction.modes.dataset\r\n\t\t * @param {Chart} chart - the chart we are returning items from\r\n\t\t * @param {Event} e - the event we are find things at\r\n\t\t * @param {IInteractionOptions} options - options to use during interaction\r\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\r\n\t\t */\r\n\t\tdataset: function(chart, e, options) {\r\n\t\t\tvar position = getRelativePosition(e, chart);\r\n\t\t\toptions.axis = options.axis || 'xy';\r\n\t\t\tvar distanceMetric = getDistanceMetricForAxis(options.axis);\r\n\t\t\tvar items = options.intersect ? getIntersectItems(chart, position) : getNearestItems(chart, position, false, distanceMetric);\r\n\r\n\t\t\tif (items.length > 0) {\r\n\t\t\t\titems = chart.getDatasetMeta(items[0]._datasetIndex).data;\r\n\t\t\t}\r\n\r\n\t\t\treturn items;\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @function Chart.Interaction.modes.x-axis\r\n\t\t * @deprecated since version 2.4.0. Use index mode and intersect == true\r\n\t\t * @todo remove at version 3\r\n\t\t * @private\r\n\t\t */\r\n\t\t'x-axis': function(chart, e) {\r\n\t\t\treturn indexMode(chart, e, {intersect: false});\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Point mode returns all elements that hit test based on the event position\r\n\t\t * of the event\r\n\t\t * @function Chart.Interaction.modes.intersect\r\n\t\t * @param {Chart} chart - the chart we are returning items from\r\n\t\t * @param {Event} e - the event we are find things at\r\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\r\n\t\t */\r\n\t\tpoint: function(chart, e) {\r\n\t\t\tvar position = getRelativePosition(e, chart);\r\n\t\t\treturn getIntersectItems(chart, position);\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * nearest mode returns the element closest to the point\r\n\t\t * @function Chart.Interaction.modes.intersect\r\n\t\t * @param {Chart} chart - the chart we are returning items from\r\n\t\t * @param {Event} e - the event we are find things at\r\n\t\t * @param {IInteractionOptions} options - options to use\r\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\r\n\t\t */\r\n\t\tnearest: function(chart, e, options) {\r\n\t\t\tvar position = getRelativePosition(e, chart);\r\n\t\t\toptions.axis = options.axis || 'xy';\r\n\t\t\tvar distanceMetric = getDistanceMetricForAxis(options.axis);\r\n\t\t\treturn getNearestItems(chart, position, options.intersect, distanceMetric);\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * x mode returns the elements that hit-test at the current x coordinate\r\n\t\t * @function Chart.Interaction.modes.x\r\n\t\t * @param {Chart} chart - the chart we are returning items from\r\n\t\t * @param {Event} e - the event we are find things at\r\n\t\t * @param {IInteractionOptions} options - options to use\r\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\r\n\t\t */\r\n\t\tx: function(chart, e, options) {\r\n\t\t\tvar position = getRelativePosition(e, chart);\r\n\t\t\tvar items = [];\r\n\t\t\tvar intersectsItem = false;\r\n\r\n\t\t\tparseVisibleItems(chart, function(element) {\r\n\t\t\t\tif (element.inXRange(position.x)) {\r\n\t\t\t\t\titems.push(element);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (element.inRange(position.x, position.y)) {\r\n\t\t\t\t\tintersectsItem = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\t// If we want to trigger on an intersect and we don't have any items\r\n\t\t\t// that intersect the position, return nothing\r\n\t\t\tif (options.intersect && !intersectsItem) {\r\n\t\t\t\titems = [];\r\n\t\t\t}\r\n\t\t\treturn items;\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * y mode returns the elements that hit-test at the current y coordinate\r\n\t\t * @function Chart.Interaction.modes.y\r\n\t\t * @param {Chart} chart - the chart we are returning items from\r\n\t\t * @param {Event} e - the event we are find things at\r\n\t\t * @param {IInteractionOptions} options - options to use\r\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\r\n\t\t */\r\n\t\ty: function(chart, e, options) {\r\n\t\t\tvar position = getRelativePosition(e, chart);\r\n\t\t\tvar items = [];\r\n\t\t\tvar intersectsItem = false;\r\n\r\n\t\t\tparseVisibleItems(chart, function(element) {\r\n\t\t\t\tif (element.inYRange(position.y)) {\r\n\t\t\t\t\titems.push(element);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (element.inRange(position.x, position.y)) {\r\n\t\t\t\t\tintersectsItem = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\t// If we want to trigger on an intersect and we don't have any items\r\n\t\t\t// that intersect the position, return nothing\r\n\t\t\tif (options.intersect && !intersectsItem) {\r\n\t\t\t\titems = [];\r\n\t\t\t}\r\n\t\t\treturn items;\r\n\t\t}\r\n\t}\r\n};\n\nvar extend = helpers$1.extend;\r\n\r\nfunction filterByPosition(array, position) {\r\n\treturn helpers$1.where(array, function(v) {\r\n\t\treturn v.pos === position;\r\n\t});\r\n}\r\n\r\nfunction sortByWeight(array, reverse) {\r\n\treturn array.sort(function(a, b) {\r\n\t\tvar v0 = reverse ? b : a;\r\n\t\tvar v1 = reverse ? a : b;\r\n\t\treturn v0.weight === v1.weight ?\r\n\t\t\tv0.index - v1.index :\r\n\t\t\tv0.weight - v1.weight;\r\n\t});\r\n}\r\n\r\nfunction wrapBoxes(boxes) {\r\n\tvar layoutBoxes = [];\r\n\tvar i, ilen, box;\r\n\r\n\tfor (i = 0, ilen = (boxes || []).length; i < ilen; ++i) {\r\n\t\tbox = boxes[i];\r\n\t\tlayoutBoxes.push({\r\n\t\t\tindex: i,\r\n\t\t\tbox: box,\r\n\t\t\tpos: box.position,\r\n\t\t\thorizontal: box.isHorizontal(),\r\n\t\t\tweight: box.weight\r\n\t\t});\r\n\t}\r\n\treturn layoutBoxes;\r\n}\r\n\r\nfunction setLayoutDims(layouts, params) {\r\n\tvar i, ilen, layout;\r\n\tfor (i = 0, ilen = layouts.length; i < ilen; ++i) {\r\n\t\tlayout = layouts[i];\r\n\t\t// store width used instead of chartArea.w in fitBoxes\r\n\t\tlayout.width = layout.horizontal\r\n\t\t\t? layout.box.fullWidth && params.availableWidth\r\n\t\t\t: params.vBoxMaxWidth;\r\n\t\t// store height used instead of chartArea.h in fitBoxes\r\n\t\tlayout.height = layout.horizontal && params.hBoxMaxHeight;\r\n\t}\r\n}\r\n\r\nfunction buildLayoutBoxes(boxes) {\r\n\tvar layoutBoxes = wrapBoxes(boxes);\r\n\tvar left = sortByWeight(filterByPosition(layoutBoxes, 'left'), true);\r\n\tvar right = sortByWeight(filterByPosition(layoutBoxes, 'right'));\r\n\tvar top = sortByWeight(filterByPosition(layoutBoxes, 'top'), true);\r\n\tvar bottom = sortByWeight(filterByPosition(layoutBoxes, 'bottom'));\r\n\r\n\treturn {\r\n\t\tleftAndTop: left.concat(top),\r\n\t\trightAndBottom: right.concat(bottom),\r\n\t\tchartArea: filterByPosition(layoutBoxes, 'chartArea'),\r\n\t\tvertical: left.concat(right),\r\n\t\thorizontal: top.concat(bottom)\r\n\t};\r\n}\r\n\r\nfunction getCombinedMax(maxPadding, chartArea, a, b) {\r\n\treturn Math.max(maxPadding[a], chartArea[a]) + Math.max(maxPadding[b], chartArea[b]);\r\n}\r\n\r\nfunction updateDims(chartArea, params, layout) {\r\n\tvar box = layout.box;\r\n\tvar maxPadding = chartArea.maxPadding;\r\n\tvar newWidth, newHeight;\r\n\r\n\tif (layout.size) {\r\n\t\t// this layout was already counted for, lets first reduce old size\r\n\t\tchartArea[layout.pos] -= layout.size;\r\n\t}\r\n\tlayout.size = layout.horizontal ? box.height : box.width;\r\n\tchartArea[layout.pos] += layout.size;\r\n\r\n\tif (box.getPadding) {\r\n\t\tvar boxPadding = box.getPadding();\r\n\t\tmaxPadding.top = Math.max(maxPadding.top, boxPadding.top);\r\n\t\tmaxPadding.left = Math.max(maxPadding.left, boxPadding.left);\r\n\t\tmaxPadding.bottom = Math.max(maxPadding.bottom, boxPadding.bottom);\r\n\t\tmaxPadding.right = Math.max(maxPadding.right, boxPadding.right);\r\n\t}\r\n\r\n\tnewWidth = params.outerWidth - getCombinedMax(maxPadding, chartArea, 'left', 'right');\r\n\tnewHeight = params.outerHeight - getCombinedMax(maxPadding, chartArea, 'top', 'bottom');\r\n\r\n\tif (newWidth !== chartArea.w || newHeight !== chartArea.h) {\r\n\t\tchartArea.w = newWidth;\r\n\t\tchartArea.h = newHeight;\r\n\r\n\t\t// return true if chart area changed in layout's direction\r\n\t\tvar sizes = layout.horizontal ? [newWidth, chartArea.w] : [newHeight, chartArea.h];\r\n\t\treturn sizes[0] !== sizes[1] && (!isNaN(sizes[0]) || !isNaN(sizes[1]));\r\n\t}\r\n}\r\n\r\nfunction handleMaxPadding(chartArea) {\r\n\tvar maxPadding = chartArea.maxPadding;\r\n\r\n\tfunction updatePos(pos) {\r\n\t\tvar change = Math.max(maxPadding[pos] - chartArea[pos], 0);\r\n\t\tchartArea[pos] += change;\r\n\t\treturn change;\r\n\t}\r\n\tchartArea.y += updatePos('top');\r\n\tchartArea.x += updatePos('left');\r\n\tupdatePos('right');\r\n\tupdatePos('bottom');\r\n}\r\n\r\nfunction getMargins(horizontal, chartArea) {\r\n\tvar maxPadding = chartArea.maxPadding;\r\n\r\n\tfunction marginForPositions(positions) {\r\n\t\tvar margin = {left: 0, top: 0, right: 0, bottom: 0};\r\n\t\tpositions.forEach(function(pos) {\r\n\t\t\tmargin[pos] = Math.max(chartArea[pos], maxPadding[pos]);\r\n\t\t});\r\n\t\treturn margin;\r\n\t}\r\n\r\n\treturn horizontal\r\n\t\t? marginForPositions(['left', 'right'])\r\n\t\t: marginForPositions(['top', 'bottom']);\r\n}\r\n\r\nfunction fitBoxes(boxes, chartArea, params) {\r\n\tvar refitBoxes = [];\r\n\tvar i, ilen, layout, box, refit, changed;\r\n\r\n\tfor (i = 0, ilen = boxes.length; i < ilen; ++i) {\r\n\t\tlayout = boxes[i];\r\n\t\tbox = layout.box;\r\n\r\n\t\tbox.update(\r\n\t\t\tlayout.width || chartArea.w,\r\n\t\t\tlayout.height || chartArea.h,\r\n\t\t\tgetMargins(layout.horizontal, chartArea)\r\n\t\t);\r\n\t\tif (updateDims(chartArea, params, layout)) {\r\n\t\t\tchanged = true;\r\n\t\t\tif (refitBoxes.length) {\r\n\t\t\t\t// Dimensions changed and there were non full width boxes before this\r\n\t\t\t\t// -> we have to refit those\r\n\t\t\t\trefit = true;\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (!box.fullWidth) { // fullWidth boxes don't need to be re-fitted in any case\r\n\t\t\trefitBoxes.push(layout);\r\n\t\t}\r\n\t}\r\n\r\n\treturn refit ? fitBoxes(refitBoxes, chartArea, params) || changed : changed;\r\n}\r\n\r\nfunction placeBoxes(boxes, chartArea, params) {\r\n\tvar userPadding = params.padding;\r\n\tvar x = chartArea.x;\r\n\tvar y = chartArea.y;\r\n\tvar i, ilen, layout, box;\r\n\r\n\tfor (i = 0, ilen = boxes.length; i < ilen; ++i) {\r\n\t\tlayout = boxes[i];\r\n\t\tbox = layout.box;\r\n\t\tif (layout.horizontal) {\r\n\t\t\tbox.left = box.fullWidth ? userPadding.left : chartArea.left;\r\n\t\t\tbox.right = box.fullWidth ? params.outerWidth - userPadding.right : chartArea.left + chartArea.w;\r\n\t\t\tbox.top = y;\r\n\t\t\tbox.bottom = y + box.height;\r\n\t\t\tbox.width = box.right - box.left;\r\n\t\t\ty = box.bottom;\r\n\t\t} else {\r\n\t\t\tbox.left = x;\r\n\t\t\tbox.right = x + box.width;\r\n\t\t\tbox.top = chartArea.top;\r\n\t\t\tbox.bottom = chartArea.top + chartArea.h;\r\n\t\t\tbox.height = box.bottom - box.top;\r\n\t\t\tx = box.right;\r\n\t\t}\r\n\t}\r\n\r\n\tchartArea.x = x;\r\n\tchartArea.y = y;\r\n}\r\n\r\ncore_defaults._set('global', {\r\n\tlayout: {\r\n\t\tpadding: {\r\n\t\t\ttop: 0,\r\n\t\t\tright: 0,\r\n\t\t\tbottom: 0,\r\n\t\t\tleft: 0\r\n\t\t}\r\n\t}\r\n});\r\n\r\n/**\r\n * @interface ILayoutItem\r\n * @prop {string} position - The position of the item in the chart layout. Possible values are\r\n * 'left', 'top', 'right', 'bottom', and 'chartArea'\r\n * @prop {number} weight - The weight used to sort the item. Higher weights are further away from the chart area\r\n * @prop {boolean} fullWidth - if true, and the item is horizontal, then push vertical boxes down\r\n * @prop {function} isHorizontal - returns true if the layout item is horizontal (ie. top or bottom)\r\n * @prop {function} update - Takes two parameters: width and height. Returns size of item\r\n * @prop {function} getPadding -  Returns an object with padding on the edges\r\n * @prop {number} width - Width of item. Must be valid after update()\r\n * @prop {number} height - Height of item. Must be valid after update()\r\n * @prop {number} left - Left edge of the item. Set by layout system and cannot be used in update\r\n * @prop {number} top - Top edge of the item. Set by layout system and cannot be used in update\r\n * @prop {number} right - Right edge of the item. Set by layout system and cannot be used in update\r\n * @prop {number} bottom - Bottom edge of the item. Set by layout system and cannot be used in update\r\n */\r\n\r\n// The layout service is very self explanatory.  It's responsible for the layout within a chart.\r\n// Scales, Legends and Plugins all rely on the layout service and can easily register to be placed anywhere they need\r\n// It is this service's responsibility of carrying out that layout.\r\nvar core_layouts = {\r\n\tdefaults: {},\r\n\r\n\t/**\r\n\t * Register a box to a chart.\r\n\t * A box is simply a reference to an object that requires layout. eg. Scales, Legend, Title.\r\n\t * @param {Chart} chart - the chart to use\r\n\t * @param {ILayoutItem} item - the item to add to be layed out\r\n\t */\r\n\taddBox: function(chart, item) {\r\n\t\tif (!chart.boxes) {\r\n\t\t\tchart.boxes = [];\r\n\t\t}\r\n\r\n\t\t// initialize item with default values\r\n\t\titem.fullWidth = item.fullWidth || false;\r\n\t\titem.position = item.position || 'top';\r\n\t\titem.weight = item.weight || 0;\r\n\t\titem._layers = item._layers || function() {\r\n\t\t\treturn [{\r\n\t\t\t\tz: 0,\r\n\t\t\t\tdraw: function() {\r\n\t\t\t\t\titem.draw.apply(item, arguments);\r\n\t\t\t\t}\r\n\t\t\t}];\r\n\t\t};\r\n\r\n\t\tchart.boxes.push(item);\r\n\t},\r\n\r\n\t/**\r\n\t * Remove a layoutItem from a chart\r\n\t * @param {Chart} chart - the chart to remove the box from\r\n\t * @param {ILayoutItem} layoutItem - the item to remove from the layout\r\n\t */\r\n\tremoveBox: function(chart, layoutItem) {\r\n\t\tvar index = chart.boxes ? chart.boxes.indexOf(layoutItem) : -1;\r\n\t\tif (index !== -1) {\r\n\t\t\tchart.boxes.splice(index, 1);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Sets (or updates) options on the given `item`.\r\n\t * @param {Chart} chart - the chart in which the item lives (or will be added to)\r\n\t * @param {ILayoutItem} item - the item to configure with the given options\r\n\t * @param {object} options - the new item options.\r\n\t */\r\n\tconfigure: function(chart, item, options) {\r\n\t\tvar props = ['fullWidth', 'position', 'weight'];\r\n\t\tvar ilen = props.length;\r\n\t\tvar i = 0;\r\n\t\tvar prop;\r\n\r\n\t\tfor (; i < ilen; ++i) {\r\n\t\t\tprop = props[i];\r\n\t\t\tif (options.hasOwnProperty(prop)) {\r\n\t\t\t\titem[prop] = options[prop];\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Fits boxes of the given chart into the given size by having each box measure itself\r\n\t * then running a fitting algorithm\r\n\t * @param {Chart} chart - the chart\r\n\t * @param {number} width - the width to fit into\r\n\t * @param {number} height - the height to fit into\r\n\t */\r\n\tupdate: function(chart, width, height) {\r\n\t\tif (!chart) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar layoutOptions = chart.options.layout || {};\r\n\t\tvar padding = helpers$1.options.toPadding(layoutOptions.padding);\r\n\r\n\t\tvar availableWidth = width - padding.width;\r\n\t\tvar availableHeight = height - padding.height;\r\n\t\tvar boxes = buildLayoutBoxes(chart.boxes);\r\n\t\tvar verticalBoxes = boxes.vertical;\r\n\t\tvar horizontalBoxes = boxes.horizontal;\r\n\r\n\t\t// Essentially we now have any number of boxes on each of the 4 sides.\r\n\t\t// Our canvas looks like the following.\r\n\t\t// The areas L1 and L2 are the left axes. R1 is the right axis, T1 is the top axis and\r\n\t\t// B1 is the bottom axis\r\n\t\t// There are also 4 quadrant-like locations (left to right instead of clockwise) reserved for chart overlays\r\n\t\t// These locations are single-box locations only, when trying to register a chartArea location that is already taken,\r\n\t\t// an error will be thrown.\r\n\t\t//\r\n\t\t// |----------------------------------------------------|\r\n\t\t// |                  T1 (Full Width)                   |\r\n\t\t// |----------------------------------------------------|\r\n\t\t// |    |    |                 T2                  |    |\r\n\t\t// |    |----|-------------------------------------|----|\r\n\t\t// |    |    | C1 |                           | C2 |    |\r\n\t\t// |    |    |----|                           |----|    |\r\n\t\t// |    |    |                                     |    |\r\n\t\t// | L1 | L2 |           ChartArea (C0)            | R1 |\r\n\t\t// |    |    |                                     |    |\r\n\t\t// |    |    |----|                           |----|    |\r\n\t\t// |    |    | C3 |                           | C4 |    |\r\n\t\t// |    |----|-------------------------------------|----|\r\n\t\t// |    |    |                 B1                  |    |\r\n\t\t// |----------------------------------------------------|\r\n\t\t// |                  B2 (Full Width)                   |\r\n\t\t// |----------------------------------------------------|\r\n\t\t//\r\n\r\n\t\tvar params = Object.freeze({\r\n\t\t\touterWidth: width,\r\n\t\t\touterHeight: height,\r\n\t\t\tpadding: padding,\r\n\t\t\tavailableWidth: availableWidth,\r\n\t\t\tvBoxMaxWidth: availableWidth / 2 / verticalBoxes.length,\r\n\t\t\thBoxMaxHeight: availableHeight / 2\r\n\t\t});\r\n\t\tvar chartArea = extend({\r\n\t\t\tmaxPadding: extend({}, padding),\r\n\t\t\tw: availableWidth,\r\n\t\t\th: availableHeight,\r\n\t\t\tx: padding.left,\r\n\t\t\ty: padding.top\r\n\t\t}, padding);\r\n\r\n\t\tsetLayoutDims(verticalBoxes.concat(horizontalBoxes), params);\r\n\r\n\t\t// First fit vertical boxes\r\n\t\tfitBoxes(verticalBoxes, chartArea, params);\r\n\r\n\t\t// Then fit horizontal boxes\r\n\t\tif (fitBoxes(horizontalBoxes, chartArea, params)) {\r\n\t\t\t// if the area changed, re-fit vertical boxes\r\n\t\t\tfitBoxes(verticalBoxes, chartArea, params);\r\n\t\t}\r\n\r\n\t\thandleMaxPadding(chartArea);\r\n\r\n\t\t// Finally place the boxes to correct coordinates\r\n\t\tplaceBoxes(boxes.leftAndTop, chartArea, params);\r\n\r\n\t\t// Move to opposite side of chart\r\n\t\tchartArea.x += chartArea.w;\r\n\t\tchartArea.y += chartArea.h;\r\n\r\n\t\tplaceBoxes(boxes.rightAndBottom, chartArea, params);\r\n\r\n\t\tchart.chartArea = {\r\n\t\t\tleft: chartArea.left,\r\n\t\t\ttop: chartArea.top,\r\n\t\t\tright: chartArea.left + chartArea.w,\r\n\t\t\tbottom: chartArea.top + chartArea.h\r\n\t\t};\r\n\r\n\t\t// Finally update boxes in chartArea (radial scale for example)\r\n\t\thelpers$1.each(boxes.chartArea, function(layout) {\r\n\t\t\tvar box = layout.box;\r\n\t\t\textend(box, chart.chartArea);\r\n\t\t\tbox.update(chartArea.w, chartArea.h);\r\n\t\t});\r\n\t}\r\n};\n\n/**\r\n * Platform fallback implementation (minimal).\r\n * @see https://github.com/chartjs/Chart.js/pull/4591#issuecomment-319575939\r\n */\r\n\r\nvar platform_basic = {\r\n\tacquireContext: function(item) {\r\n\t\tif (item && item.canvas) {\r\n\t\t\t// Support for any object associated to a canvas (including a context2d)\r\n\t\t\titem = item.canvas;\r\n\t\t}\r\n\r\n\t\treturn item && item.getContext('2d') || null;\r\n\t}\r\n};\n\nvar platform_dom = \"/*\\r\\n * DOM element rendering detection\\r\\n * https://davidwalsh.name/detect-node-insertion\\r\\n */\\r\\n@keyframes chartjs-render-animation {\\r\\n\\tfrom { opacity: 0.99; }\\r\\n\\tto { opacity: 1; }\\r\\n}\\r\\n\\r\\n.chartjs-render-monitor {\\r\\n\\tanimation: chartjs-render-animation 0.001s;\\r\\n}\\r\\n\\r\\n/*\\r\\n * DOM element resizing detection\\r\\n * https://github.com/marcj/css-element-queries\\r\\n */\\r\\n.chartjs-size-monitor,\\r\\n.chartjs-size-monitor-expand,\\r\\n.chartjs-size-monitor-shrink {\\r\\n\\tposition: absolute;\\r\\n\\tdirection: ltr;\\r\\n\\tleft: 0;\\r\\n\\ttop: 0;\\r\\n\\tright: 0;\\r\\n\\tbottom: 0;\\r\\n\\toverflow: hidden;\\r\\n\\tpointer-events: none;\\r\\n\\tvisibility: hidden;\\r\\n\\tz-index: -1;\\r\\n}\\r\\n\\r\\n.chartjs-size-monitor-expand > div {\\r\\n\\tposition: absolute;\\r\\n\\twidth: 1000000px;\\r\\n\\theight: 1000000px;\\r\\n\\tleft: 0;\\r\\n\\ttop: 0;\\r\\n}\\r\\n\\r\\n.chartjs-size-monitor-shrink > div {\\r\\n\\tposition: absolute;\\r\\n\\twidth: 200%;\\r\\n\\theight: 200%;\\r\\n\\tleft: 0;\\r\\n\\ttop: 0;\\r\\n}\\r\\n\";\n\nvar platform_dom$1 = /*#__PURE__*/Object.freeze({\n__proto__: null,\n'default': platform_dom\n});\n\nvar stylesheet = getCjsExportFromNamespace(platform_dom$1);\n\nvar EXPANDO_KEY = '$chartjs';\r\nvar CSS_PREFIX = 'chartjs-';\r\nvar CSS_SIZE_MONITOR = CSS_PREFIX + 'size-monitor';\r\nvar CSS_RENDER_MONITOR = CSS_PREFIX + 'render-monitor';\r\nvar CSS_RENDER_ANIMATION = CSS_PREFIX + 'render-animation';\r\nvar ANIMATION_START_EVENTS = ['animationstart', 'webkitAnimationStart'];\r\n\r\n/**\r\n * DOM event types -> Chart.js event types.\r\n * Note: only events with different types are mapped.\r\n * @see https://developer.mozilla.org/en-US/docs/Web/Events\r\n */\r\nvar EVENT_TYPES = {\r\n\ttouchstart: 'mousedown',\r\n\ttouchmove: 'mousemove',\r\n\ttouchend: 'mouseup',\r\n\tpointerenter: 'mouseenter',\r\n\tpointerdown: 'mousedown',\r\n\tpointermove: 'mousemove',\r\n\tpointerup: 'mouseup',\r\n\tpointerleave: 'mouseout',\r\n\tpointerout: 'mouseout'\r\n};\r\n\r\n/**\r\n * The \"used\" size is the final value of a dimension property after all calculations have\r\n * been performed. This method uses the computed style of `element` but returns undefined\r\n * if the computed style is not expressed in pixels. That can happen in some cases where\r\n * `element` has a size relative to its parent and this last one is not yet displayed,\r\n * for example because of `display: none` on a parent node.\r\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/used_value\r\n * @returns {number} Size in pixels or undefined if unknown.\r\n */\r\nfunction readUsedSize(element, property) {\r\n\tvar value = helpers$1.getStyle(element, property);\r\n\tvar matches = value && value.match(/^(\\d+)(\\.\\d+)?px$/);\r\n\treturn matches ? Number(matches[1]) : undefined;\r\n}\r\n\r\n/**\r\n * Initializes the canvas style and render size without modifying the canvas display size,\r\n * since responsiveness is handled by the controller.resize() method. The config is used\r\n * to determine the aspect ratio to apply in case no explicit height has been specified.\r\n */\r\nfunction initCanvas(canvas, config) {\r\n\tvar style = canvas.style;\r\n\r\n\t// NOTE(SB) canvas.getAttribute('width') !== canvas.width: in the first case it\r\n\t// returns null or '' if no explicit value has been set to the canvas attribute.\r\n\tvar renderHeight = canvas.getAttribute('height');\r\n\tvar renderWidth = canvas.getAttribute('width');\r\n\r\n\t// Chart.js modifies some canvas values that we want to restore on destroy\r\n\tcanvas[EXPANDO_KEY] = {\r\n\t\tinitial: {\r\n\t\t\theight: renderHeight,\r\n\t\t\twidth: renderWidth,\r\n\t\t\tstyle: {\r\n\t\t\t\tdisplay: style.display,\r\n\t\t\t\theight: style.height,\r\n\t\t\t\twidth: style.width\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\t// Force canvas to display as block to avoid extra space caused by inline\r\n\t// elements, which would interfere with the responsive resize process.\r\n\t// https://github.com/chartjs/Chart.js/issues/2538\r\n\tstyle.display = style.display || 'block';\r\n\r\n\tif (renderWidth === null || renderWidth === '') {\r\n\t\tvar displayWidth = readUsedSize(canvas, 'width');\r\n\t\tif (displayWidth !== undefined) {\r\n\t\t\tcanvas.width = displayWidth;\r\n\t\t}\r\n\t}\r\n\r\n\tif (renderHeight === null || renderHeight === '') {\r\n\t\tif (canvas.style.height === '') {\r\n\t\t\t// If no explicit render height and style height, let's apply the aspect ratio,\r\n\t\t\t// which one can be specified by the user but also by charts as default option\r\n\t\t\t// (i.e. options.aspectRatio). If not specified, use canvas aspect ratio of 2.\r\n\t\t\tcanvas.height = canvas.width / (config.options.aspectRatio || 2);\r\n\t\t} else {\r\n\t\t\tvar displayHeight = readUsedSize(canvas, 'height');\r\n\t\t\tif (displayWidth !== undefined) {\r\n\t\t\t\tcanvas.height = displayHeight;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn canvas;\r\n}\r\n\r\n/**\r\n * Detects support for options object argument in addEventListener.\r\n * https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#Safely_detecting_option_support\r\n * @private\r\n */\r\nvar supportsEventListenerOptions = (function() {\r\n\tvar supports = false;\r\n\ttry {\r\n\t\tvar options = Object.defineProperty({}, 'passive', {\r\n\t\t\t// eslint-disable-next-line getter-return\r\n\t\t\tget: function() {\r\n\t\t\t\tsupports = true;\r\n\t\t\t}\r\n\t\t});\r\n\t\twindow.addEventListener('e', null, options);\r\n\t} catch (e) {\r\n\t\t// continue regardless of error\r\n\t}\r\n\treturn supports;\r\n}());\r\n\r\n// Default passive to true as expected by Chrome for 'touchstart' and 'touchend' events.\r\n// https://github.com/chartjs/Chart.js/issues/4287\r\nvar eventListenerOptions = supportsEventListenerOptions ? {passive: true} : false;\r\n\r\nfunction addListener(node, type, listener) {\r\n\tnode.addEventListener(type, listener, eventListenerOptions);\r\n}\r\n\r\nfunction removeListener(node, type, listener) {\r\n\tnode.removeEventListener(type, listener, eventListenerOptions);\r\n}\r\n\r\nfunction createEvent(type, chart, x, y, nativeEvent) {\r\n\treturn {\r\n\t\ttype: type,\r\n\t\tchart: chart,\r\n\t\tnative: nativeEvent || null,\r\n\t\tx: x !== undefined ? x : null,\r\n\t\ty: y !== undefined ? y : null,\r\n\t};\r\n}\r\n\r\nfunction fromNativeEvent(event, chart) {\r\n\tvar type = EVENT_TYPES[event.type] || event.type;\r\n\tvar pos = helpers$1.getRelativePosition(event, chart);\r\n\treturn createEvent(type, chart, pos.x, pos.y, event);\r\n}\r\n\r\nfunction throttled(fn, thisArg) {\r\n\tvar ticking = false;\r\n\tvar args = [];\r\n\r\n\treturn function() {\r\n\t\targs = Array.prototype.slice.call(arguments);\r\n\t\tthisArg = thisArg || this;\r\n\r\n\t\tif (!ticking) {\r\n\t\t\tticking = true;\r\n\t\t\thelpers$1.requestAnimFrame.call(window, function() {\r\n\t\t\t\tticking = false;\r\n\t\t\t\tfn.apply(thisArg, args);\r\n\t\t\t});\r\n\t\t}\r\n\t};\r\n}\r\n\r\nfunction createDiv(cls) {\r\n\tvar el = document.createElement('div');\r\n\tel.className = cls || '';\r\n\treturn el;\r\n}\r\n\r\n// Implementation based on https://github.com/marcj/css-element-queries\r\nfunction createResizer(handler) {\r\n\tvar maxSize = 1000000;\r\n\r\n\t// NOTE(SB) Don't use innerHTML because it could be considered unsafe.\r\n\t// https://github.com/chartjs/Chart.js/issues/5902\r\n\tvar resizer = createDiv(CSS_SIZE_MONITOR);\r\n\tvar expand = createDiv(CSS_SIZE_MONITOR + '-expand');\r\n\tvar shrink = createDiv(CSS_SIZE_MONITOR + '-shrink');\r\n\r\n\texpand.appendChild(createDiv());\r\n\tshrink.appendChild(createDiv());\r\n\r\n\tresizer.appendChild(expand);\r\n\tresizer.appendChild(shrink);\r\n\tresizer._reset = function() {\r\n\t\texpand.scrollLeft = maxSize;\r\n\t\texpand.scrollTop = maxSize;\r\n\t\tshrink.scrollLeft = maxSize;\r\n\t\tshrink.scrollTop = maxSize;\r\n\t};\r\n\r\n\tvar onScroll = function() {\r\n\t\tresizer._reset();\r\n\t\thandler();\r\n\t};\r\n\r\n\taddListener(expand, 'scroll', onScroll.bind(expand, 'expand'));\r\n\taddListener(shrink, 'scroll', onScroll.bind(shrink, 'shrink'));\r\n\r\n\treturn resizer;\r\n}\r\n\r\n// https://davidwalsh.name/detect-node-insertion\r\nfunction watchForRender(node, handler) {\r\n\tvar expando = node[EXPANDO_KEY] || (node[EXPANDO_KEY] = {});\r\n\tvar proxy = expando.renderProxy = function(e) {\r\n\t\tif (e.animationName === CSS_RENDER_ANIMATION) {\r\n\t\t\thandler();\r\n\t\t}\r\n\t};\r\n\r\n\thelpers$1.each(ANIMATION_START_EVENTS, function(type) {\r\n\t\taddListener(node, type, proxy);\r\n\t});\r\n\r\n\t// #4737: Chrome might skip the CSS animation when the CSS_RENDER_MONITOR class\r\n\t// is removed then added back immediately (same animation frame?). Accessing the\r\n\t// `offsetParent` property will force a reflow and re-evaluate the CSS animation.\r\n\t// https://gist.github.com/paulirish/5d52fb081b3570c81e3a#box-metrics\r\n\t// https://github.com/chartjs/Chart.js/issues/4737\r\n\texpando.reflow = !!node.offsetParent;\r\n\r\n\tnode.classList.add(CSS_RENDER_MONITOR);\r\n}\r\n\r\nfunction unwatchForRender(node) {\r\n\tvar expando = node[EXPANDO_KEY] || {};\r\n\tvar proxy = expando.renderProxy;\r\n\r\n\tif (proxy) {\r\n\t\thelpers$1.each(ANIMATION_START_EVENTS, function(type) {\r\n\t\t\tremoveListener(node, type, proxy);\r\n\t\t});\r\n\r\n\t\tdelete expando.renderProxy;\r\n\t}\r\n\r\n\tnode.classList.remove(CSS_RENDER_MONITOR);\r\n}\r\n\r\nfunction addResizeListener(node, listener, chart) {\r\n\tvar expando = node[EXPANDO_KEY] || (node[EXPANDO_KEY] = {});\r\n\r\n\t// Let's keep track of this added resizer and thus avoid DOM query when removing it.\r\n\tvar resizer = expando.resizer = createResizer(throttled(function() {\r\n\t\tif (expando.resizer) {\r\n\t\t\tvar container = chart.options.maintainAspectRatio && node.parentNode;\r\n\t\t\tvar w = container ? container.clientWidth : 0;\r\n\t\t\tlistener(createEvent('resize', chart));\r\n\t\t\tif (container && container.clientWidth < w && chart.canvas) {\r\n\t\t\t\t// If the container size shrank during chart resize, let's assume\r\n\t\t\t\t// scrollbar appeared. So we resize again with the scrollbar visible -\r\n\t\t\t\t// effectively making chart smaller and the scrollbar hidden again.\r\n\t\t\t\t// Because we are inside `throttled`, and currently `ticking`, scroll\r\n\t\t\t\t// events are ignored during this whole 2 resize process.\r\n\t\t\t\t// If we assumed wrong and something else happened, we are resizing\r\n\t\t\t\t// twice in a frame (potential performance issue)\r\n\t\t\t\tlistener(createEvent('resize', chart));\r\n\t\t\t}\r\n\t\t}\r\n\t}));\r\n\r\n\t// The resizer needs to be attached to the node parent, so we first need to be\r\n\t// sure that `node` is attached to the DOM before injecting the resizer element.\r\n\twatchForRender(node, function() {\r\n\t\tif (expando.resizer) {\r\n\t\t\tvar container = node.parentNode;\r\n\t\t\tif (container && container !== resizer.parentNode) {\r\n\t\t\t\tcontainer.insertBefore(resizer, container.firstChild);\r\n\t\t\t}\r\n\r\n\t\t\t// The container size might have changed, let's reset the resizer state.\r\n\t\t\tresizer._reset();\r\n\t\t}\r\n\t});\r\n}\r\n\r\nfunction removeResizeListener(node) {\r\n\tvar expando = node[EXPANDO_KEY] || {};\r\n\tvar resizer = expando.resizer;\r\n\r\n\tdelete expando.resizer;\r\n\tunwatchForRender(node);\r\n\r\n\tif (resizer && resizer.parentNode) {\r\n\t\tresizer.parentNode.removeChild(resizer);\r\n\t}\r\n}\r\n\r\n/**\r\n * Injects CSS styles inline if the styles are not already present.\r\n * @param {HTMLDocument|ShadowRoot} rootNode - the node to contain the <style>.\r\n * @param {string} css - the CSS to be injected.\r\n */\r\nfunction injectCSS(rootNode, css) {\r\n\t// https://stackoverflow.com/q/3922139\r\n\tvar expando = rootNode[EXPANDO_KEY] || (rootNode[EXPANDO_KEY] = {});\r\n\tif (!expando.containsStyles) {\r\n\t\texpando.containsStyles = true;\r\n\t\tcss = '/* Chart.js */\\n' + css;\r\n\t\tvar style = document.createElement('style');\r\n\t\tstyle.setAttribute('type', 'text/css');\r\n\t\tstyle.appendChild(document.createTextNode(css));\r\n\t\trootNode.appendChild(style);\r\n\t}\r\n}\r\n\r\nvar platform_dom$2 = {\r\n\t/**\r\n\t * When `true`, prevents the automatic injection of the stylesheet required to\r\n\t * correctly detect when the chart is added to the DOM and then resized. This\r\n\t * switch has been added to allow external stylesheet (`dist/Chart(.min)?.js`)\r\n\t * to be manually imported to make this library compatible with any CSP.\r\n\t * See https://github.com/chartjs/Chart.js/issues/5208\r\n\t */\r\n\tdisableCSSInjection: false,\r\n\r\n\t/**\r\n\t * This property holds whether this platform is enabled for the current environment.\r\n\t * Currently used by platform.js to select the proper implementation.\r\n\t * @private\r\n\t */\r\n\t_enabled: typeof window !== 'undefined' && typeof document !== 'undefined',\r\n\r\n\t/**\r\n\t * Initializes resources that depend on platform options.\r\n\t * @param {HTMLCanvasElement} canvas - The Canvas element.\r\n\t * @private\r\n\t */\r\n\t_ensureLoaded: function(canvas) {\r\n\t\tif (!this.disableCSSInjection) {\r\n\t\t\t// If the canvas is in a shadow DOM, then the styles must also be inserted\r\n\t\t\t// into the same shadow DOM.\r\n\t\t\t// https://github.com/chartjs/Chart.js/issues/5763\r\n\t\t\tvar root = canvas.getRootNode ? canvas.getRootNode() : document;\r\n\t\t\tvar targetNode = root.host ? root : document.head;\r\n\t\t\tinjectCSS(targetNode, stylesheet);\r\n\t\t}\r\n\t},\r\n\r\n\tacquireContext: function(item, config) {\r\n\t\tif (typeof item === 'string') {\r\n\t\t\titem = document.getElementById(item);\r\n\t\t} else if (item.length) {\r\n\t\t\t// Support for array based queries (such as jQuery)\r\n\t\t\titem = item[0];\r\n\t\t}\r\n\r\n\t\tif (item && item.canvas) {\r\n\t\t\t// Support for any object associated to a canvas (including a context2d)\r\n\t\t\titem = item.canvas;\r\n\t\t}\r\n\r\n\t\t// To prevent canvas fingerprinting, some add-ons undefine the getContext\r\n\t\t// method, for example: https://github.com/kkapsner/CanvasBlocker\r\n\t\t// https://github.com/chartjs/Chart.js/issues/2807\r\n\t\tvar context = item && item.getContext && item.getContext('2d');\r\n\r\n\t\t// `instanceof HTMLCanvasElement/CanvasRenderingContext2D` fails when the item is\r\n\t\t// inside an iframe or when running in a protected environment. We could guess the\r\n\t\t// types from their toString() value but let's keep things flexible and assume it's\r\n\t\t// a sufficient condition if the item has a context2D which has item as `canvas`.\r\n\t\t// https://github.com/chartjs/Chart.js/issues/3887\r\n\t\t// https://github.com/chartjs/Chart.js/issues/4102\r\n\t\t// https://github.com/chartjs/Chart.js/issues/4152\r\n\t\tif (context && context.canvas === item) {\r\n\t\t\t// Load platform resources on first chart creation, to make it possible to\r\n\t\t\t// import the library before setting platform options.\r\n\t\t\tthis._ensureLoaded(item);\r\n\t\t\tinitCanvas(item, config);\r\n\t\t\treturn context;\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t},\r\n\r\n\treleaseContext: function(context) {\r\n\t\tvar canvas = context.canvas;\r\n\t\tif (!canvas[EXPANDO_KEY]) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar initial = canvas[EXPANDO_KEY].initial;\r\n\t\t['height', 'width'].forEach(function(prop) {\r\n\t\t\tvar value = initial[prop];\r\n\t\t\tif (helpers$1.isNullOrUndef(value)) {\r\n\t\t\t\tcanvas.removeAttribute(prop);\r\n\t\t\t} else {\r\n\t\t\t\tcanvas.setAttribute(prop, value);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\thelpers$1.each(initial.style || {}, function(value, key) {\r\n\t\t\tcanvas.style[key] = value;\r\n\t\t});\r\n\r\n\t\t// The canvas render size might have been changed (and thus the state stack discarded),\r\n\t\t// we can't use save() and restore() to restore the initial state. So make sure that at\r\n\t\t// least the canvas context is reset to the default state by setting the canvas width.\r\n\t\t// https://www.w3.org/TR/2011/WD-html5-20110525/the-canvas-element.html\r\n\t\t// eslint-disable-next-line no-self-assign\r\n\t\tcanvas.width = canvas.width;\r\n\r\n\t\tdelete canvas[EXPANDO_KEY];\r\n\t},\r\n\r\n\taddEventListener: function(chart, type, listener) {\r\n\t\tvar canvas = chart.canvas;\r\n\t\tif (type === 'resize') {\r\n\t\t\t// Note: the resize event is not supported on all browsers.\r\n\t\t\taddResizeListener(canvas, listener, chart);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar expando = listener[EXPANDO_KEY] || (listener[EXPANDO_KEY] = {});\r\n\t\tvar proxies = expando.proxies || (expando.proxies = {});\r\n\t\tvar proxy = proxies[chart.id + '_' + type] = function(event) {\r\n\t\t\tlistener(fromNativeEvent(event, chart));\r\n\t\t};\r\n\r\n\t\taddListener(canvas, type, proxy);\r\n\t},\r\n\r\n\tremoveEventListener: function(chart, type, listener) {\r\n\t\tvar canvas = chart.canvas;\r\n\t\tif (type === 'resize') {\r\n\t\t\t// Note: the resize event is not supported on all browsers.\r\n\t\t\tremoveResizeListener(canvas);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar expando = listener[EXPANDO_KEY] || {};\r\n\t\tvar proxies = expando.proxies || {};\r\n\t\tvar proxy = proxies[chart.id + '_' + type];\r\n\t\tif (!proxy) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tremoveListener(canvas, type, proxy);\r\n\t}\r\n};\r\n\r\n// DEPRECATIONS\r\n\r\n/**\r\n * Provided for backward compatibility, use EventTarget.addEventListener instead.\r\n * EventTarget.addEventListener compatibility: Chrome, Opera 7, Safari, FF1.5+, IE9+\r\n * @see https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener\r\n * @function Chart.helpers.addEvent\r\n * @deprecated since version 2.7.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers$1.addEvent = addListener;\r\n\r\n/**\r\n * Provided for backward compatibility, use EventTarget.removeEventListener instead.\r\n * EventTarget.removeEventListener compatibility: Chrome, Opera 7, Safari, FF1.5+, IE9+\r\n * @see https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/removeEventListener\r\n * @function Chart.helpers.removeEvent\r\n * @deprecated since version 2.7.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers$1.removeEvent = removeListener;\n\n// @TODO Make possible to select another platform at build time.\r\nvar implementation = platform_dom$2._enabled ? platform_dom$2 : platform_basic;\r\n\r\n/**\r\n * @namespace Chart.platform\r\n * @see https://chartjs.gitbooks.io/proposals/content/Platform.html\r\n * @since 2.4.0\r\n */\r\nvar platform = helpers$1.extend({\r\n\t/**\r\n\t * @since 2.7.0\r\n\t */\r\n\tinitialize: function() {},\r\n\r\n\t/**\r\n\t * Called at chart construction time, returns a context2d instance implementing\r\n\t * the [W3C Canvas 2D Context API standard]{@link https://www.w3.org/TR/2dcontext/}.\r\n\t * @param {*} item - The native item from which to acquire context (platform specific)\r\n\t * @param {object} options - The chart options\r\n\t * @returns {CanvasRenderingContext2D} context2d instance\r\n\t */\r\n\tacquireContext: function() {},\r\n\r\n\t/**\r\n\t * Called at chart destruction time, releases any resources associated to the context\r\n\t * previously returned by the acquireContext() method.\r\n\t * @param {CanvasRenderingContext2D} context - The context2d instance\r\n\t * @returns {boolean} true if the method succeeded, else false\r\n\t */\r\n\treleaseContext: function() {},\r\n\r\n\t/**\r\n\t * Registers the specified listener on the given chart.\r\n\t * @param {Chart} chart - Chart from which to listen for event\r\n\t * @param {string} type - The ({@link IEvent}) type to listen for\r\n\t * @param {function} listener - Receives a notification (an object that implements\r\n\t * the {@link IEvent} interface) when an event of the specified type occurs.\r\n\t */\r\n\taddEventListener: function() {},\r\n\r\n\t/**\r\n\t * Removes the specified listener previously registered with addEventListener.\r\n\t * @param {Chart} chart - Chart from which to remove the listener\r\n\t * @param {string} type - The ({@link IEvent}) type to remove\r\n\t * @param {function} listener - The listener function to remove from the event target.\r\n\t */\r\n\tremoveEventListener: function() {}\r\n\r\n}, implementation);\n\ncore_defaults._set('global', {\r\n\tplugins: {}\r\n});\r\n\r\n/**\r\n * The plugin service singleton\r\n * @namespace Chart.plugins\r\n * @since 2.1.0\r\n */\r\nvar core_plugins = {\r\n\t/**\r\n\t * Globally registered plugins.\r\n\t * @private\r\n\t */\r\n\t_plugins: [],\r\n\r\n\t/**\r\n\t * This identifier is used to invalidate the descriptors cache attached to each chart\r\n\t * when a global plugin is registered or unregistered. In this case, the cache ID is\r\n\t * incremented and descriptors are regenerated during following API calls.\r\n\t * @private\r\n\t */\r\n\t_cacheId: 0,\r\n\r\n\t/**\r\n\t * Registers the given plugin(s) if not already registered.\r\n\t * @param {IPlugin[]|IPlugin} plugins plugin instance(s).\r\n\t */\r\n\tregister: function(plugins) {\r\n\t\tvar p = this._plugins;\r\n\t\t([]).concat(plugins).forEach(function(plugin) {\r\n\t\t\tif (p.indexOf(plugin) === -1) {\r\n\t\t\t\tp.push(plugin);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis._cacheId++;\r\n\t},\r\n\r\n\t/**\r\n\t * Unregisters the given plugin(s) only if registered.\r\n\t * @param {IPlugin[]|IPlugin} plugins plugin instance(s).\r\n\t */\r\n\tunregister: function(plugins) {\r\n\t\tvar p = this._plugins;\r\n\t\t([]).concat(plugins).forEach(function(plugin) {\r\n\t\t\tvar idx = p.indexOf(plugin);\r\n\t\t\tif (idx !== -1) {\r\n\t\t\t\tp.splice(idx, 1);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis._cacheId++;\r\n\t},\r\n\r\n\t/**\r\n\t * Remove all registered plugins.\r\n\t * @since 2.1.5\r\n\t */\r\n\tclear: function() {\r\n\t\tthis._plugins = [];\r\n\t\tthis._cacheId++;\r\n\t},\r\n\r\n\t/**\r\n\t * Returns the number of registered plugins?\r\n\t * @returns {number}\r\n\t * @since 2.1.5\r\n\t */\r\n\tcount: function() {\r\n\t\treturn this._plugins.length;\r\n\t},\r\n\r\n\t/**\r\n\t * Returns all registered plugin instances.\r\n\t * @returns {IPlugin[]} array of plugin objects.\r\n\t * @since 2.1.5\r\n\t */\r\n\tgetAll: function() {\r\n\t\treturn this._plugins;\r\n\t},\r\n\r\n\t/**\r\n\t * Calls enabled plugins for `chart` on the specified hook and with the given args.\r\n\t * This method immediately returns as soon as a plugin explicitly returns false. The\r\n\t * returned value can be used, for instance, to interrupt the current action.\r\n\t * @param {Chart} chart - The chart instance for which plugins should be called.\r\n\t * @param {string} hook - The name of the plugin method to call (e.g. 'beforeUpdate').\r\n\t * @param {Array} [args] - Extra arguments to apply to the hook call.\r\n\t * @returns {boolean} false if any of the plugins return false, else returns true.\r\n\t */\r\n\tnotify: function(chart, hook, args) {\r\n\t\tvar descriptors = this.descriptors(chart);\r\n\t\tvar ilen = descriptors.length;\r\n\t\tvar i, descriptor, plugin, params, method;\r\n\r\n\t\tfor (i = 0; i < ilen; ++i) {\r\n\t\t\tdescriptor = descriptors[i];\r\n\t\t\tplugin = descriptor.plugin;\r\n\t\t\tmethod = plugin[hook];\r\n\t\t\tif (typeof method === 'function') {\r\n\t\t\t\tparams = [chart].concat(args || []);\r\n\t\t\t\tparams.push(descriptor.options);\r\n\t\t\t\tif (method.apply(plugin, params) === false) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t},\r\n\r\n\t/**\r\n\t * Returns descriptors of enabled plugins for the given chart.\r\n\t * @returns {object[]} [{ plugin, options }]\r\n\t * @private\r\n\t */\r\n\tdescriptors: function(chart) {\r\n\t\tvar cache = chart.$plugins || (chart.$plugins = {});\r\n\t\tif (cache.id === this._cacheId) {\r\n\t\t\treturn cache.descriptors;\r\n\t\t}\r\n\r\n\t\tvar plugins = [];\r\n\t\tvar descriptors = [];\r\n\t\tvar config = (chart && chart.config) || {};\r\n\t\tvar options = (config.options && config.options.plugins) || {};\r\n\r\n\t\tthis._plugins.concat(config.plugins || []).forEach(function(plugin) {\r\n\t\t\tvar idx = plugins.indexOf(plugin);\r\n\t\t\tif (idx !== -1) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tvar id = plugin.id;\r\n\t\t\tvar opts = options[id];\r\n\t\t\tif (opts === false) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif (opts === true) {\r\n\t\t\t\topts = helpers$1.clone(core_defaults.global.plugins[id]);\r\n\t\t\t}\r\n\r\n\t\t\tplugins.push(plugin);\r\n\t\t\tdescriptors.push({\r\n\t\t\t\tplugin: plugin,\r\n\t\t\t\toptions: opts || {}\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\tcache.descriptors = descriptors;\r\n\t\tcache.id = this._cacheId;\r\n\t\treturn descriptors;\r\n\t},\r\n\r\n\t/**\r\n\t * Invalidates cache for the given chart: descriptors hold a reference on plugin option,\r\n\t * but in some cases, this reference can be changed by the user when updating options.\r\n\t * https://github.com/chartjs/Chart.js/issues/5111#issuecomment-355934167\r\n\t * @private\r\n\t */\r\n\t_invalidate: function(chart) {\r\n\t\tdelete chart.$plugins;\r\n\t}\r\n};\n\nvar core_scaleService = {\r\n\t// Scale registration object. Extensions can register new scale types (such as log or DB scales) and then\r\n\t// use the new chart options to grab the correct scale\r\n\tconstructors: {},\r\n\t// Use a registration function so that we can move to an ES6 map when we no longer need to support\r\n\t// old browsers\r\n\r\n\t// Scale config defaults\r\n\tdefaults: {},\r\n\tregisterScaleType: function(type, scaleConstructor, scaleDefaults) {\r\n\t\tthis.constructors[type] = scaleConstructor;\r\n\t\tthis.defaults[type] = helpers$1.clone(scaleDefaults);\r\n\t},\r\n\tgetScaleConstructor: function(type) {\r\n\t\treturn this.constructors.hasOwnProperty(type) ? this.constructors[type] : undefined;\r\n\t},\r\n\tgetScaleDefaults: function(type) {\r\n\t\t// Return the scale defaults merged with the global settings so that we always use the latest ones\r\n\t\treturn this.defaults.hasOwnProperty(type) ? helpers$1.merge(Object.create(null), [core_defaults.scale, this.defaults[type]]) : {};\r\n\t},\r\n\tupdateScaleDefaults: function(type, additions) {\r\n\t\tvar me = this;\r\n\t\tif (me.defaults.hasOwnProperty(type)) {\r\n\t\t\tme.defaults[type] = helpers$1.extend(me.defaults[type], additions);\r\n\t\t}\r\n\t},\r\n\taddScalesToLayout: function(chart) {\r\n\t\t// Adds each scale to the chart.boxes array to be sized accordingly\r\n\t\thelpers$1.each(chart.scales, function(scale) {\r\n\t\t\t// Set ILayoutItem parameters for backwards compatibility\r\n\t\t\tscale.fullWidth = scale.options.fullWidth;\r\n\t\t\tscale.position = scale.options.position;\r\n\t\t\tscale.weight = scale.options.weight;\r\n\t\t\tcore_layouts.addBox(chart, scale);\r\n\t\t});\r\n\t}\r\n};\n\nvar valueOrDefault$8 = helpers$1.valueOrDefault;\r\nvar getRtlHelper = helpers$1.rtl.getRtlAdapter;\r\n\r\ncore_defaults._set('global', {\r\n\ttooltips: {\r\n\t\tenabled: true,\r\n\t\tcustom: null,\r\n\t\tmode: 'nearest',\r\n\t\tposition: 'average',\r\n\t\tintersect: true,\r\n\t\tbackgroundColor: 'rgba(0,0,0,0.8)',\r\n\t\ttitleFontStyle: 'bold',\r\n\t\ttitleSpacing: 2,\r\n\t\ttitleMarginBottom: 6,\r\n\t\ttitleFontColor: '#fff',\r\n\t\ttitleAlign: 'left',\r\n\t\tbodySpacing: 2,\r\n\t\tbodyFontColor: '#fff',\r\n\t\tbodyAlign: 'left',\r\n\t\tfooterFontStyle: 'bold',\r\n\t\tfooterSpacing: 2,\r\n\t\tfooterMarginTop: 6,\r\n\t\tfooterFontColor: '#fff',\r\n\t\tfooterAlign: 'left',\r\n\t\tyPadding: 6,\r\n\t\txPadding: 6,\r\n\t\tcaretPadding: 2,\r\n\t\tcaretSize: 5,\r\n\t\tcornerRadius: 6,\r\n\t\tmultiKeyBackground: '#fff',\r\n\t\tdisplayColors: true,\r\n\t\tborderColor: 'rgba(0,0,0,0)',\r\n\t\tborderWidth: 0,\r\n\t\tcallbacks: {\r\n\t\t\t// Args are: (tooltipItems, data)\r\n\t\t\tbeforeTitle: helpers$1.noop,\r\n\t\t\ttitle: function(tooltipItems, data) {\r\n\t\t\t\tvar title = '';\r\n\t\t\t\tvar labels = data.labels;\r\n\t\t\t\tvar labelCount = labels ? labels.length : 0;\r\n\r\n\t\t\t\tif (tooltipItems.length > 0) {\r\n\t\t\t\t\tvar item = tooltipItems[0];\r\n\t\t\t\t\tif (item.label) {\r\n\t\t\t\t\t\ttitle = item.label;\r\n\t\t\t\t\t} else if (item.xLabel) {\r\n\t\t\t\t\t\ttitle = item.xLabel;\r\n\t\t\t\t\t} else if (labelCount > 0 && item.index < labelCount) {\r\n\t\t\t\t\t\ttitle = labels[item.index];\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn title;\r\n\t\t\t},\r\n\t\t\tafterTitle: helpers$1.noop,\r\n\r\n\t\t\t// Args are: (tooltipItems, data)\r\n\t\t\tbeforeBody: helpers$1.noop,\r\n\r\n\t\t\t// Args are: (tooltipItem, data)\r\n\t\t\tbeforeLabel: helpers$1.noop,\r\n\t\t\tlabel: function(tooltipItem, data) {\r\n\t\t\t\tvar label = data.datasets[tooltipItem.datasetIndex].label || '';\r\n\r\n\t\t\t\tif (label) {\r\n\t\t\t\t\tlabel += ': ';\r\n\t\t\t\t}\r\n\t\t\t\tif (!helpers$1.isNullOrUndef(tooltipItem.value)) {\r\n\t\t\t\t\tlabel += tooltipItem.value;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tlabel += tooltipItem.yLabel;\r\n\t\t\t\t}\r\n\t\t\t\treturn label;\r\n\t\t\t},\r\n\t\t\tlabelColor: function(tooltipItem, chart) {\r\n\t\t\t\tvar meta = chart.getDatasetMeta(tooltipItem.datasetIndex);\r\n\t\t\t\tvar activeElement = meta.data[tooltipItem.index];\r\n\t\t\t\tvar view = activeElement._view;\r\n\t\t\t\treturn {\r\n\t\t\t\t\tborderColor: view.borderColor,\r\n\t\t\t\t\tbackgroundColor: view.backgroundColor\r\n\t\t\t\t};\r\n\t\t\t},\r\n\t\t\tlabelTextColor: function() {\r\n\t\t\t\treturn this._options.bodyFontColor;\r\n\t\t\t},\r\n\t\t\tafterLabel: helpers$1.noop,\r\n\r\n\t\t\t// Args are: (tooltipItems, data)\r\n\t\t\tafterBody: helpers$1.noop,\r\n\r\n\t\t\t// Args are: (tooltipItems, data)\r\n\t\t\tbeforeFooter: helpers$1.noop,\r\n\t\t\tfooter: helpers$1.noop,\r\n\t\t\tafterFooter: helpers$1.noop\r\n\t\t}\r\n\t}\r\n});\r\n\r\nvar positioners = {\r\n\t/**\r\n\t * Average mode places the tooltip at the average position of the elements shown\r\n\t * @function Chart.Tooltip.positioners.average\r\n\t * @param elements {ChartElement[]} the elements being displayed in the tooltip\r\n\t * @returns {object} tooltip position\r\n\t */\r\n\taverage: function(elements) {\r\n\t\tif (!elements.length) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tvar i, len;\r\n\t\tvar x = 0;\r\n\t\tvar y = 0;\r\n\t\tvar count = 0;\r\n\r\n\t\tfor (i = 0, len = elements.length; i < len; ++i) {\r\n\t\t\tvar el = elements[i];\r\n\t\t\tif (el && el.hasValue()) {\r\n\t\t\t\tvar pos = el.tooltipPosition();\r\n\t\t\t\tx += pos.x;\r\n\t\t\t\ty += pos.y;\r\n\t\t\t\t++count;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tx: x / count,\r\n\t\t\ty: y / count\r\n\t\t};\r\n\t},\r\n\r\n\t/**\r\n\t * Gets the tooltip position nearest of the item nearest to the event position\r\n\t * @function Chart.Tooltip.positioners.nearest\r\n\t * @param elements {Chart.Element[]} the tooltip elements\r\n\t * @param eventPosition {object} the position of the event in canvas coordinates\r\n\t * @returns {object} the tooltip position\r\n\t */\r\n\tnearest: function(elements, eventPosition) {\r\n\t\tvar x = eventPosition.x;\r\n\t\tvar y = eventPosition.y;\r\n\t\tvar minDistance = Number.POSITIVE_INFINITY;\r\n\t\tvar i, len, nearestElement;\r\n\r\n\t\tfor (i = 0, len = elements.length; i < len; ++i) {\r\n\t\t\tvar el = elements[i];\r\n\t\t\tif (el && el.hasValue()) {\r\n\t\t\t\tvar center = el.getCenterPoint();\r\n\t\t\t\tvar d = helpers$1.distanceBetweenPoints(eventPosition, center);\r\n\r\n\t\t\t\tif (d < minDistance) {\r\n\t\t\t\t\tminDistance = d;\r\n\t\t\t\t\tnearestElement = el;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (nearestElement) {\r\n\t\t\tvar tp = nearestElement.tooltipPosition();\r\n\t\t\tx = tp.x;\r\n\t\t\ty = tp.y;\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tx: x,\r\n\t\t\ty: y\r\n\t\t};\r\n\t}\r\n};\r\n\r\n// Helper to push or concat based on if the 2nd parameter is an array or not\r\nfunction pushOrConcat(base, toPush) {\r\n\tif (toPush) {\r\n\t\tif (helpers$1.isArray(toPush)) {\r\n\t\t\t// base = base.concat(toPush);\r\n\t\t\tArray.prototype.push.apply(base, toPush);\r\n\t\t} else {\r\n\t\t\tbase.push(toPush);\r\n\t\t}\r\n\t}\r\n\r\n\treturn base;\r\n}\r\n\r\n/**\r\n * Returns array of strings split by newline\r\n * @param {string} value - The value to split by newline.\r\n * @returns {string[]} value if newline present - Returned from String split() method\r\n * @function\r\n */\r\nfunction splitNewlines(str) {\r\n\tif ((typeof str === 'string' || str instanceof String) && str.indexOf('\\n') > -1) {\r\n\t\treturn str.split('\\n');\r\n\t}\r\n\treturn str;\r\n}\r\n\r\n\r\n/**\r\n * Private helper to create a tooltip item model\r\n * @param element - the chart element (point, arc, bar) to create the tooltip item for\r\n * @return new tooltip item\r\n */\r\nfunction createTooltipItem(element) {\r\n\tvar xScale = element._xScale;\r\n\tvar yScale = element._yScale || element._scale; // handle radar || polarArea charts\r\n\tvar index = element._index;\r\n\tvar datasetIndex = element._datasetIndex;\r\n\tvar controller = element._chart.getDatasetMeta(datasetIndex).controller;\r\n\tvar indexScale = controller._getIndexScale();\r\n\tvar valueScale = controller._getValueScale();\r\n\r\n\treturn {\r\n\t\txLabel: xScale ? xScale.getLabelForIndex(index, datasetIndex) : '',\r\n\t\tyLabel: yScale ? yScale.getLabelForIndex(index, datasetIndex) : '',\r\n\t\tlabel: indexScale ? '' + indexScale.getLabelForIndex(index, datasetIndex) : '',\r\n\t\tvalue: valueScale ? '' + valueScale.getLabelForIndex(index, datasetIndex) : '',\r\n\t\tindex: index,\r\n\t\tdatasetIndex: datasetIndex,\r\n\t\tx: element._model.x,\r\n\t\ty: element._model.y\r\n\t};\r\n}\r\n\r\n/**\r\n * Helper to get the reset model for the tooltip\r\n * @param tooltipOpts {object} the tooltip options\r\n */\r\nfunction getBaseModel(tooltipOpts) {\r\n\tvar globalDefaults = core_defaults.global;\r\n\r\n\treturn {\r\n\t\t// Positioning\r\n\t\txPadding: tooltipOpts.xPadding,\r\n\t\tyPadding: tooltipOpts.yPadding,\r\n\t\txAlign: tooltipOpts.xAlign,\r\n\t\tyAlign: tooltipOpts.yAlign,\r\n\r\n\t\t// Drawing direction and text direction\r\n\t\trtl: tooltipOpts.rtl,\r\n\t\ttextDirection: tooltipOpts.textDirection,\r\n\r\n\t\t// Body\r\n\t\tbodyFontColor: tooltipOpts.bodyFontColor,\r\n\t\t_bodyFontFamily: valueOrDefault$8(tooltipOpts.bodyFontFamily, globalDefaults.defaultFontFamily),\r\n\t\t_bodyFontStyle: valueOrDefault$8(tooltipOpts.bodyFontStyle, globalDefaults.defaultFontStyle),\r\n\t\t_bodyAlign: tooltipOpts.bodyAlign,\r\n\t\tbodyFontSize: valueOrDefault$8(tooltipOpts.bodyFontSize, globalDefaults.defaultFontSize),\r\n\t\tbodySpacing: tooltipOpts.bodySpacing,\r\n\r\n\t\t// Title\r\n\t\ttitleFontColor: tooltipOpts.titleFontColor,\r\n\t\t_titleFontFamily: valueOrDefault$8(tooltipOpts.titleFontFamily, globalDefaults.defaultFontFamily),\r\n\t\t_titleFontStyle: valueOrDefault$8(tooltipOpts.titleFontStyle, globalDefaults.defaultFontStyle),\r\n\t\ttitleFontSize: valueOrDefault$8(tooltipOpts.titleFontSize, globalDefaults.defaultFontSize),\r\n\t\t_titleAlign: tooltipOpts.titleAlign,\r\n\t\ttitleSpacing: tooltipOpts.titleSpacing,\r\n\t\ttitleMarginBottom: tooltipOpts.titleMarginBottom,\r\n\r\n\t\t// Footer\r\n\t\tfooterFontColor: tooltipOpts.footerFontColor,\r\n\t\t_footerFontFamily: valueOrDefault$8(tooltipOpts.footerFontFamily, globalDefaults.defaultFontFamily),\r\n\t\t_footerFontStyle: valueOrDefault$8(tooltipOpts.footerFontStyle, globalDefaults.defaultFontStyle),\r\n\t\tfooterFontSize: valueOrDefault$8(tooltipOpts.footerFontSize, globalDefaults.defaultFontSize),\r\n\t\t_footerAlign: tooltipOpts.footerAlign,\r\n\t\tfooterSpacing: tooltipOpts.footerSpacing,\r\n\t\tfooterMarginTop: tooltipOpts.footerMarginTop,\r\n\r\n\t\t// Appearance\r\n\t\tcaretSize: tooltipOpts.caretSize,\r\n\t\tcornerRadius: tooltipOpts.cornerRadius,\r\n\t\tbackgroundColor: tooltipOpts.backgroundColor,\r\n\t\topacity: 0,\r\n\t\tlegendColorBackground: tooltipOpts.multiKeyBackground,\r\n\t\tdisplayColors: tooltipOpts.displayColors,\r\n\t\tborderColor: tooltipOpts.borderColor,\r\n\t\tborderWidth: tooltipOpts.borderWidth\r\n\t};\r\n}\r\n\r\n/**\r\n * Get the size of the tooltip\r\n */\r\nfunction getTooltipSize(tooltip, model) {\r\n\tvar ctx = tooltip._chart.ctx;\r\n\r\n\tvar height = model.yPadding * 2; // Tooltip Padding\r\n\tvar width = 0;\r\n\r\n\t// Count of all lines in the body\r\n\tvar body = model.body;\r\n\tvar combinedBodyLength = body.reduce(function(count, bodyItem) {\r\n\t\treturn count + bodyItem.before.length + bodyItem.lines.length + bodyItem.after.length;\r\n\t}, 0);\r\n\tcombinedBodyLength += model.beforeBody.length + model.afterBody.length;\r\n\r\n\tvar titleLineCount = model.title.length;\r\n\tvar footerLineCount = model.footer.length;\r\n\tvar titleFontSize = model.titleFontSize;\r\n\tvar bodyFontSize = model.bodyFontSize;\r\n\tvar footerFontSize = model.footerFontSize;\r\n\r\n\theight += titleLineCount * titleFontSize; // Title Lines\r\n\theight += titleLineCount ? (titleLineCount - 1) * model.titleSpacing : 0; // Title Line Spacing\r\n\theight += titleLineCount ? model.titleMarginBottom : 0; // Title's bottom Margin\r\n\theight += combinedBodyLength * bodyFontSize; // Body Lines\r\n\theight += combinedBodyLength ? (combinedBodyLength - 1) * model.bodySpacing : 0; // Body Line Spacing\r\n\theight += footerLineCount ? model.footerMarginTop : 0; // Footer Margin\r\n\theight += footerLineCount * (footerFontSize); // Footer Lines\r\n\theight += footerLineCount ? (footerLineCount - 1) * model.footerSpacing : 0; // Footer Line Spacing\r\n\r\n\t// Title width\r\n\tvar widthPadding = 0;\r\n\tvar maxLineWidth = function(line) {\r\n\t\twidth = Math.max(width, ctx.measureText(line).width + widthPadding);\r\n\t};\r\n\r\n\tctx.font = helpers$1.fontString(titleFontSize, model._titleFontStyle, model._titleFontFamily);\r\n\thelpers$1.each(model.title, maxLineWidth);\r\n\r\n\t// Body width\r\n\tctx.font = helpers$1.fontString(bodyFontSize, model._bodyFontStyle, model._bodyFontFamily);\r\n\thelpers$1.each(model.beforeBody.concat(model.afterBody), maxLineWidth);\r\n\r\n\t// Body lines may include some extra width due to the color box\r\n\twidthPadding = model.displayColors ? (bodyFontSize + 2) : 0;\r\n\thelpers$1.each(body, function(bodyItem) {\r\n\t\thelpers$1.each(bodyItem.before, maxLineWidth);\r\n\t\thelpers$1.each(bodyItem.lines, maxLineWidth);\r\n\t\thelpers$1.each(bodyItem.after, maxLineWidth);\r\n\t});\r\n\r\n\t// Reset back to 0\r\n\twidthPadding = 0;\r\n\r\n\t// Footer width\r\n\tctx.font = helpers$1.fontString(footerFontSize, model._footerFontStyle, model._footerFontFamily);\r\n\thelpers$1.each(model.footer, maxLineWidth);\r\n\r\n\t// Add padding\r\n\twidth += 2 * model.xPadding;\r\n\r\n\treturn {\r\n\t\twidth: width,\r\n\t\theight: height\r\n\t};\r\n}\r\n\r\n/**\r\n * Helper to get the alignment of a tooltip given the size\r\n */\r\nfunction determineAlignment(tooltip, size) {\r\n\tvar model = tooltip._model;\r\n\tvar chart = tooltip._chart;\r\n\tvar chartArea = tooltip._chart.chartArea;\r\n\tvar xAlign = 'center';\r\n\tvar yAlign = 'center';\r\n\r\n\tif (model.y < size.height) {\r\n\t\tyAlign = 'top';\r\n\t} else if (model.y > (chart.height - size.height)) {\r\n\t\tyAlign = 'bottom';\r\n\t}\r\n\r\n\tvar lf, rf; // functions to determine left, right alignment\r\n\tvar olf, orf; // functions to determine if left/right alignment causes tooltip to go outside chart\r\n\tvar yf; // function to get the y alignment if the tooltip goes outside of the left or right edges\r\n\tvar midX = (chartArea.left + chartArea.right) / 2;\r\n\tvar midY = (chartArea.top + chartArea.bottom) / 2;\r\n\r\n\tif (yAlign === 'center') {\r\n\t\tlf = function(x) {\r\n\t\t\treturn x <= midX;\r\n\t\t};\r\n\t\trf = function(x) {\r\n\t\t\treturn x > midX;\r\n\t\t};\r\n\t} else {\r\n\t\tlf = function(x) {\r\n\t\t\treturn x <= (size.width / 2);\r\n\t\t};\r\n\t\trf = function(x) {\r\n\t\t\treturn x >= (chart.width - (size.width / 2));\r\n\t\t};\r\n\t}\r\n\r\n\tolf = function(x) {\r\n\t\treturn x + size.width + model.caretSize + model.caretPadding > chart.width;\r\n\t};\r\n\torf = function(x) {\r\n\t\treturn x - size.width - model.caretSize - model.caretPadding < 0;\r\n\t};\r\n\tyf = function(y) {\r\n\t\treturn y <= midY ? 'top' : 'bottom';\r\n\t};\r\n\r\n\tif (lf(model.x)) {\r\n\t\txAlign = 'left';\r\n\r\n\t\t// Is tooltip too wide and goes over the right side of the chart.?\r\n\t\tif (olf(model.x)) {\r\n\t\t\txAlign = 'center';\r\n\t\t\tyAlign = yf(model.y);\r\n\t\t}\r\n\t} else if (rf(model.x)) {\r\n\t\txAlign = 'right';\r\n\r\n\t\t// Is tooltip too wide and goes outside left edge of canvas?\r\n\t\tif (orf(model.x)) {\r\n\t\t\txAlign = 'center';\r\n\t\t\tyAlign = yf(model.y);\r\n\t\t}\r\n\t}\r\n\r\n\tvar opts = tooltip._options;\r\n\treturn {\r\n\t\txAlign: opts.xAlign ? opts.xAlign : xAlign,\r\n\t\tyAlign: opts.yAlign ? opts.yAlign : yAlign\r\n\t};\r\n}\r\n\r\n/**\r\n * Helper to get the location a tooltip needs to be placed at given the initial position (via the vm) and the size and alignment\r\n */\r\nfunction getBackgroundPoint(vm, size, alignment, chart) {\r\n\t// Background Position\r\n\tvar x = vm.x;\r\n\tvar y = vm.y;\r\n\r\n\tvar caretSize = vm.caretSize;\r\n\tvar caretPadding = vm.caretPadding;\r\n\tvar cornerRadius = vm.cornerRadius;\r\n\tvar xAlign = alignment.xAlign;\r\n\tvar yAlign = alignment.yAlign;\r\n\tvar paddingAndSize = caretSize + caretPadding;\r\n\tvar radiusAndPadding = cornerRadius + caretPadding;\r\n\r\n\tif (xAlign === 'right') {\r\n\t\tx -= size.width;\r\n\t} else if (xAlign === 'center') {\r\n\t\tx -= (size.width / 2);\r\n\t\tif (x + size.width > chart.width) {\r\n\t\t\tx = chart.width - size.width;\r\n\t\t}\r\n\t\tif (x < 0) {\r\n\t\t\tx = 0;\r\n\t\t}\r\n\t}\r\n\r\n\tif (yAlign === 'top') {\r\n\t\ty += paddingAndSize;\r\n\t} else if (yAlign === 'bottom') {\r\n\t\ty -= size.height + paddingAndSize;\r\n\t} else {\r\n\t\ty -= (size.height / 2);\r\n\t}\r\n\r\n\tif (yAlign === 'center') {\r\n\t\tif (xAlign === 'left') {\r\n\t\t\tx += paddingAndSize;\r\n\t\t} else if (xAlign === 'right') {\r\n\t\t\tx -= paddingAndSize;\r\n\t\t}\r\n\t} else if (xAlign === 'left') {\r\n\t\tx -= radiusAndPadding;\r\n\t} else if (xAlign === 'right') {\r\n\t\tx += radiusAndPadding;\r\n\t}\r\n\r\n\treturn {\r\n\t\tx: x,\r\n\t\ty: y\r\n\t};\r\n}\r\n\r\nfunction getAlignedX(vm, align) {\r\n\treturn align === 'center'\r\n\t\t? vm.x + vm.width / 2\r\n\t\t: align === 'right'\r\n\t\t\t? vm.x + vm.width - vm.xPadding\r\n\t\t\t: vm.x + vm.xPadding;\r\n}\r\n\r\n/**\r\n * Helper to build before and after body lines\r\n */\r\nfunction getBeforeAfterBodyLines(callback) {\r\n\treturn pushOrConcat([], splitNewlines(callback));\r\n}\r\n\r\nvar exports$4 = core_element.extend({\r\n\tinitialize: function() {\r\n\t\tthis._model = getBaseModel(this._options);\r\n\t\tthis._lastActive = [];\r\n\t},\r\n\r\n\t// Get the title\r\n\t// Args are: (tooltipItem, data)\r\n\tgetTitle: function() {\r\n\t\tvar me = this;\r\n\t\tvar opts = me._options;\r\n\t\tvar callbacks = opts.callbacks;\r\n\r\n\t\tvar beforeTitle = callbacks.beforeTitle.apply(me, arguments);\r\n\t\tvar title = callbacks.title.apply(me, arguments);\r\n\t\tvar afterTitle = callbacks.afterTitle.apply(me, arguments);\r\n\r\n\t\tvar lines = [];\r\n\t\tlines = pushOrConcat(lines, splitNewlines(beforeTitle));\r\n\t\tlines = pushOrConcat(lines, splitNewlines(title));\r\n\t\tlines = pushOrConcat(lines, splitNewlines(afterTitle));\r\n\r\n\t\treturn lines;\r\n\t},\r\n\r\n\t// Args are: (tooltipItem, data)\r\n\tgetBeforeBody: function() {\r\n\t\treturn getBeforeAfterBodyLines(this._options.callbacks.beforeBody.apply(this, arguments));\r\n\t},\r\n\r\n\t// Args are: (tooltipItem, data)\r\n\tgetBody: function(tooltipItems, data) {\r\n\t\tvar me = this;\r\n\t\tvar callbacks = me._options.callbacks;\r\n\t\tvar bodyItems = [];\r\n\r\n\t\thelpers$1.each(tooltipItems, function(tooltipItem) {\r\n\t\t\tvar bodyItem = {\r\n\t\t\t\tbefore: [],\r\n\t\t\t\tlines: [],\r\n\t\t\t\tafter: []\r\n\t\t\t};\r\n\t\t\tpushOrConcat(bodyItem.before, splitNewlines(callbacks.beforeLabel.call(me, tooltipItem, data)));\r\n\t\t\tpushOrConcat(bodyItem.lines, callbacks.label.call(me, tooltipItem, data));\r\n\t\t\tpushOrConcat(bodyItem.after, splitNewlines(callbacks.afterLabel.call(me, tooltipItem, data)));\r\n\r\n\t\t\tbodyItems.push(bodyItem);\r\n\t\t});\r\n\r\n\t\treturn bodyItems;\r\n\t},\r\n\r\n\t// Args are: (tooltipItem, data)\r\n\tgetAfterBody: function() {\r\n\t\treturn getBeforeAfterBodyLines(this._options.callbacks.afterBody.apply(this, arguments));\r\n\t},\r\n\r\n\t// Get the footer and beforeFooter and afterFooter lines\r\n\t// Args are: (tooltipItem, data)\r\n\tgetFooter: function() {\r\n\t\tvar me = this;\r\n\t\tvar callbacks = me._options.callbacks;\r\n\r\n\t\tvar beforeFooter = callbacks.beforeFooter.apply(me, arguments);\r\n\t\tvar footer = callbacks.footer.apply(me, arguments);\r\n\t\tvar afterFooter = callbacks.afterFooter.apply(me, arguments);\r\n\r\n\t\tvar lines = [];\r\n\t\tlines = pushOrConcat(lines, splitNewlines(beforeFooter));\r\n\t\tlines = pushOrConcat(lines, splitNewlines(footer));\r\n\t\tlines = pushOrConcat(lines, splitNewlines(afterFooter));\r\n\r\n\t\treturn lines;\r\n\t},\r\n\r\n\tupdate: function(changed) {\r\n\t\tvar me = this;\r\n\t\tvar opts = me._options;\r\n\r\n\t\t// Need to regenerate the model because its faster than using extend and it is necessary due to the optimization in Chart.Element.transition\r\n\t\t// that does _view = _model if ease === 1. This causes the 2nd tooltip update to set properties in both the view and model at the same time\r\n\t\t// which breaks any animations.\r\n\t\tvar existingModel = me._model;\r\n\t\tvar model = me._model = getBaseModel(opts);\r\n\t\tvar active = me._active;\r\n\r\n\t\tvar data = me._data;\r\n\r\n\t\t// In the case where active.length === 0 we need to keep these at existing values for good animations\r\n\t\tvar alignment = {\r\n\t\t\txAlign: existingModel.xAlign,\r\n\t\t\tyAlign: existingModel.yAlign\r\n\t\t};\r\n\t\tvar backgroundPoint = {\r\n\t\t\tx: existingModel.x,\r\n\t\t\ty: existingModel.y\r\n\t\t};\r\n\t\tvar tooltipSize = {\r\n\t\t\twidth: existingModel.width,\r\n\t\t\theight: existingModel.height\r\n\t\t};\r\n\t\tvar tooltipPosition = {\r\n\t\t\tx: existingModel.caretX,\r\n\t\t\ty: existingModel.caretY\r\n\t\t};\r\n\r\n\t\tvar i, len;\r\n\r\n\t\tif (active.length) {\r\n\t\t\tmodel.opacity = 1;\r\n\r\n\t\t\tvar labelColors = [];\r\n\t\t\tvar labelTextColors = [];\r\n\t\t\ttooltipPosition = positioners[opts.position].call(me, active, me._eventPosition);\r\n\r\n\t\t\tvar tooltipItems = [];\r\n\t\t\tfor (i = 0, len = active.length; i < len; ++i) {\r\n\t\t\t\ttooltipItems.push(createTooltipItem(active[i]));\r\n\t\t\t}\r\n\r\n\t\t\t// If the user provided a filter function, use it to modify the tooltip items\r\n\t\t\tif (opts.filter) {\r\n\t\t\t\ttooltipItems = tooltipItems.filter(function(a) {\r\n\t\t\t\t\treturn opts.filter(a, data);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\t// If the user provided a sorting function, use it to modify the tooltip items\r\n\t\t\tif (opts.itemSort) {\r\n\t\t\t\ttooltipItems = tooltipItems.sort(function(a, b) {\r\n\t\t\t\t\treturn opts.itemSort(a, b, data);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\t// Determine colors for boxes\r\n\t\t\thelpers$1.each(tooltipItems, function(tooltipItem) {\r\n\t\t\t\tlabelColors.push(opts.callbacks.labelColor.call(me, tooltipItem, me._chart));\r\n\t\t\t\tlabelTextColors.push(opts.callbacks.labelTextColor.call(me, tooltipItem, me._chart));\r\n\t\t\t});\r\n\r\n\r\n\t\t\t// Build the Text Lines\r\n\t\t\tmodel.title = me.getTitle(tooltipItems, data);\r\n\t\t\tmodel.beforeBody = me.getBeforeBody(tooltipItems, data);\r\n\t\t\tmodel.body = me.getBody(tooltipItems, data);\r\n\t\t\tmodel.afterBody = me.getAfterBody(tooltipItems, data);\r\n\t\t\tmodel.footer = me.getFooter(tooltipItems, data);\r\n\r\n\t\t\t// Initial positioning and colors\r\n\t\t\tmodel.x = tooltipPosition.x;\r\n\t\t\tmodel.y = tooltipPosition.y;\r\n\t\t\tmodel.caretPadding = opts.caretPadding;\r\n\t\t\tmodel.labelColors = labelColors;\r\n\t\t\tmodel.labelTextColors = labelTextColors;\r\n\r\n\t\t\t// data points\r\n\t\t\tmodel.dataPoints = tooltipItems;\r\n\r\n\t\t\t// We need to determine alignment of the tooltip\r\n\t\t\ttooltipSize = getTooltipSize(this, model);\r\n\t\t\talignment = determineAlignment(this, tooltipSize);\r\n\t\t\t// Final Size and Position\r\n\t\t\tbackgroundPoint = getBackgroundPoint(model, tooltipSize, alignment, me._chart);\r\n\t\t} else {\r\n\t\t\tmodel.opacity = 0;\r\n\t\t}\r\n\r\n\t\tmodel.xAlign = alignment.xAlign;\r\n\t\tmodel.yAlign = alignment.yAlign;\r\n\t\tmodel.x = backgroundPoint.x;\r\n\t\tmodel.y = backgroundPoint.y;\r\n\t\tmodel.width = tooltipSize.width;\r\n\t\tmodel.height = tooltipSize.height;\r\n\r\n\t\t// Point where the caret on the tooltip points to\r\n\t\tmodel.caretX = tooltipPosition.x;\r\n\t\tmodel.caretY = tooltipPosition.y;\r\n\r\n\t\tme._model = model;\r\n\r\n\t\tif (changed && opts.custom) {\r\n\t\t\topts.custom.call(me, model);\r\n\t\t}\r\n\r\n\t\treturn me;\r\n\t},\r\n\r\n\tdrawCaret: function(tooltipPoint, size) {\r\n\t\tvar ctx = this._chart.ctx;\r\n\t\tvar vm = this._view;\r\n\t\tvar caretPosition = this.getCaretPosition(tooltipPoint, size, vm);\r\n\r\n\t\tctx.lineTo(caretPosition.x1, caretPosition.y1);\r\n\t\tctx.lineTo(caretPosition.x2, caretPosition.y2);\r\n\t\tctx.lineTo(caretPosition.x3, caretPosition.y3);\r\n\t},\r\n\tgetCaretPosition: function(tooltipPoint, size, vm) {\r\n\t\tvar x1, x2, x3, y1, y2, y3;\r\n\t\tvar caretSize = vm.caretSize;\r\n\t\tvar cornerRadius = vm.cornerRadius;\r\n\t\tvar xAlign = vm.xAlign;\r\n\t\tvar yAlign = vm.yAlign;\r\n\t\tvar ptX = tooltipPoint.x;\r\n\t\tvar ptY = tooltipPoint.y;\r\n\t\tvar width = size.width;\r\n\t\tvar height = size.height;\r\n\r\n\t\tif (yAlign === 'center') {\r\n\t\t\ty2 = ptY + (height / 2);\r\n\r\n\t\t\tif (xAlign === 'left') {\r\n\t\t\t\tx1 = ptX;\r\n\t\t\t\tx2 = x1 - caretSize;\r\n\t\t\t\tx3 = x1;\r\n\r\n\t\t\t\ty1 = y2 + caretSize;\r\n\t\t\t\ty3 = y2 - caretSize;\r\n\t\t\t} else {\r\n\t\t\t\tx1 = ptX + width;\r\n\t\t\t\tx2 = x1 + caretSize;\r\n\t\t\t\tx3 = x1;\r\n\r\n\t\t\t\ty1 = y2 - caretSize;\r\n\t\t\t\ty3 = y2 + caretSize;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tif (xAlign === 'left') {\r\n\t\t\t\tx2 = ptX + cornerRadius + (caretSize);\r\n\t\t\t\tx1 = x2 - caretSize;\r\n\t\t\t\tx3 = x2 + caretSize;\r\n\t\t\t} else if (xAlign === 'right') {\r\n\t\t\t\tx2 = ptX + width - cornerRadius - caretSize;\r\n\t\t\t\tx1 = x2 - caretSize;\r\n\t\t\t\tx3 = x2 + caretSize;\r\n\t\t\t} else {\r\n\t\t\t\tx2 = vm.caretX;\r\n\t\t\t\tx1 = x2 - caretSize;\r\n\t\t\t\tx3 = x2 + caretSize;\r\n\t\t\t}\r\n\t\t\tif (yAlign === 'top') {\r\n\t\t\t\ty1 = ptY;\r\n\t\t\t\ty2 = y1 - caretSize;\r\n\t\t\t\ty3 = y1;\r\n\t\t\t} else {\r\n\t\t\t\ty1 = ptY + height;\r\n\t\t\t\ty2 = y1 + caretSize;\r\n\t\t\t\ty3 = y1;\r\n\t\t\t\t// invert drawing order\r\n\t\t\t\tvar tmp = x3;\r\n\t\t\t\tx3 = x1;\r\n\t\t\t\tx1 = tmp;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn {x1: x1, x2: x2, x3: x3, y1: y1, y2: y2, y3: y3};\r\n\t},\r\n\r\n\tdrawTitle: function(pt, vm, ctx) {\r\n\t\tvar title = vm.title;\r\n\t\tvar length = title.length;\r\n\t\tvar titleFontSize, titleSpacing, i;\r\n\r\n\t\tif (length) {\r\n\t\t\tvar rtlHelper = getRtlHelper(vm.rtl, vm.x, vm.width);\r\n\r\n\t\t\tpt.x = getAlignedX(vm, vm._titleAlign);\r\n\r\n\t\t\tctx.textAlign = rtlHelper.textAlign(vm._titleAlign);\r\n\t\t\tctx.textBaseline = 'middle';\r\n\r\n\t\t\ttitleFontSize = vm.titleFontSize;\r\n\t\t\ttitleSpacing = vm.titleSpacing;\r\n\r\n\t\t\tctx.fillStyle = vm.titleFontColor;\r\n\t\t\tctx.font = helpers$1.fontString(titleFontSize, vm._titleFontStyle, vm._titleFontFamily);\r\n\r\n\t\t\tfor (i = 0; i < length; ++i) {\r\n\t\t\t\tctx.fillText(title[i], rtlHelper.x(pt.x), pt.y + titleFontSize / 2);\r\n\t\t\t\tpt.y += titleFontSize + titleSpacing; // Line Height and spacing\r\n\r\n\t\t\t\tif (i + 1 === length) {\r\n\t\t\t\t\tpt.y += vm.titleMarginBottom - titleSpacing; // If Last, add margin, remove spacing\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tdrawBody: function(pt, vm, ctx) {\r\n\t\tvar bodyFontSize = vm.bodyFontSize;\r\n\t\tvar bodySpacing = vm.bodySpacing;\r\n\t\tvar bodyAlign = vm._bodyAlign;\r\n\t\tvar body = vm.body;\r\n\t\tvar drawColorBoxes = vm.displayColors;\r\n\t\tvar xLinePadding = 0;\r\n\t\tvar colorX = drawColorBoxes ? getAlignedX(vm, 'left') : 0;\r\n\r\n\t\tvar rtlHelper = getRtlHelper(vm.rtl, vm.x, vm.width);\r\n\r\n\t\tvar fillLineOfText = function(line) {\r\n\t\t\tctx.fillText(line, rtlHelper.x(pt.x + xLinePadding), pt.y + bodyFontSize / 2);\r\n\t\t\tpt.y += bodyFontSize + bodySpacing;\r\n\t\t};\r\n\r\n\t\tvar bodyItem, textColor, labelColors, lines, i, j, ilen, jlen;\r\n\t\tvar bodyAlignForCalculation = rtlHelper.textAlign(bodyAlign);\r\n\r\n\t\tctx.textAlign = bodyAlign;\r\n\t\tctx.textBaseline = 'middle';\r\n\t\tctx.font = helpers$1.fontString(bodyFontSize, vm._bodyFontStyle, vm._bodyFontFamily);\r\n\r\n\t\tpt.x = getAlignedX(vm, bodyAlignForCalculation);\r\n\r\n\t\t// Before body lines\r\n\t\tctx.fillStyle = vm.bodyFontColor;\r\n\t\thelpers$1.each(vm.beforeBody, fillLineOfText);\r\n\r\n\t\txLinePadding = drawColorBoxes && bodyAlignForCalculation !== 'right'\r\n\t\t\t? bodyAlign === 'center' ? (bodyFontSize / 2 + 1) : (bodyFontSize + 2)\r\n\t\t\t: 0;\r\n\r\n\t\t// Draw body lines now\r\n\t\tfor (i = 0, ilen = body.length; i < ilen; ++i) {\r\n\t\t\tbodyItem = body[i];\r\n\t\t\ttextColor = vm.labelTextColors[i];\r\n\t\t\tlabelColors = vm.labelColors[i];\r\n\r\n\t\t\tctx.fillStyle = textColor;\r\n\t\t\thelpers$1.each(bodyItem.before, fillLineOfText);\r\n\r\n\t\t\tlines = bodyItem.lines;\r\n\t\t\tfor (j = 0, jlen = lines.length; j < jlen; ++j) {\r\n\t\t\t\t// Draw Legend-like boxes if needed\r\n\t\t\t\tif (drawColorBoxes) {\r\n\t\t\t\t\tvar rtlColorX = rtlHelper.x(colorX);\r\n\r\n\t\t\t\t\t// Fill a white rect so that colours merge nicely if the opacity is < 1\r\n\t\t\t\t\tctx.fillStyle = vm.legendColorBackground;\r\n\t\t\t\t\tctx.fillRect(rtlHelper.leftForLtr(rtlColorX, bodyFontSize), pt.y, bodyFontSize, bodyFontSize);\r\n\r\n\t\t\t\t\t// Border\r\n\t\t\t\t\tctx.lineWidth = 1;\r\n\t\t\t\t\tctx.strokeStyle = labelColors.borderColor;\r\n\t\t\t\t\tctx.strokeRect(rtlHelper.leftForLtr(rtlColorX, bodyFontSize), pt.y, bodyFontSize, bodyFontSize);\r\n\r\n\t\t\t\t\t// Inner square\r\n\t\t\t\t\tctx.fillStyle = labelColors.backgroundColor;\r\n\t\t\t\t\tctx.fillRect(rtlHelper.leftForLtr(rtlHelper.xPlus(rtlColorX, 1), bodyFontSize - 2), pt.y + 1, bodyFontSize - 2, bodyFontSize - 2);\r\n\t\t\t\t\tctx.fillStyle = textColor;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfillLineOfText(lines[j]);\r\n\t\t\t}\r\n\r\n\t\t\thelpers$1.each(bodyItem.after, fillLineOfText);\r\n\t\t}\r\n\r\n\t\t// Reset back to 0 for after body\r\n\t\txLinePadding = 0;\r\n\r\n\t\t// After body lines\r\n\t\thelpers$1.each(vm.afterBody, fillLineOfText);\r\n\t\tpt.y -= bodySpacing; // Remove last body spacing\r\n\t},\r\n\r\n\tdrawFooter: function(pt, vm, ctx) {\r\n\t\tvar footer = vm.footer;\r\n\t\tvar length = footer.length;\r\n\t\tvar footerFontSize, i;\r\n\r\n\t\tif (length) {\r\n\t\t\tvar rtlHelper = getRtlHelper(vm.rtl, vm.x, vm.width);\r\n\r\n\t\t\tpt.x = getAlignedX(vm, vm._footerAlign);\r\n\t\t\tpt.y += vm.footerMarginTop;\r\n\r\n\t\t\tctx.textAlign = rtlHelper.textAlign(vm._footerAlign);\r\n\t\t\tctx.textBaseline = 'middle';\r\n\r\n\t\t\tfooterFontSize = vm.footerFontSize;\r\n\r\n\t\t\tctx.fillStyle = vm.footerFontColor;\r\n\t\t\tctx.font = helpers$1.fontString(footerFontSize, vm._footerFontStyle, vm._footerFontFamily);\r\n\r\n\t\t\tfor (i = 0; i < length; ++i) {\r\n\t\t\t\tctx.fillText(footer[i], rtlHelper.x(pt.x), pt.y + footerFontSize / 2);\r\n\t\t\t\tpt.y += footerFontSize + vm.footerSpacing;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tdrawBackground: function(pt, vm, ctx, tooltipSize) {\r\n\t\tctx.fillStyle = vm.backgroundColor;\r\n\t\tctx.strokeStyle = vm.borderColor;\r\n\t\tctx.lineWidth = vm.borderWidth;\r\n\t\tvar xAlign = vm.xAlign;\r\n\t\tvar yAlign = vm.yAlign;\r\n\t\tvar x = pt.x;\r\n\t\tvar y = pt.y;\r\n\t\tvar width = tooltipSize.width;\r\n\t\tvar height = tooltipSize.height;\r\n\t\tvar radius = vm.cornerRadius;\r\n\r\n\t\tctx.beginPath();\r\n\t\tctx.moveTo(x + radius, y);\r\n\t\tif (yAlign === 'top') {\r\n\t\t\tthis.drawCaret(pt, tooltipSize);\r\n\t\t}\r\n\t\tctx.lineTo(x + width - radius, y);\r\n\t\tctx.quadraticCurveTo(x + width, y, x + width, y + radius);\r\n\t\tif (yAlign === 'center' && xAlign === 'right') {\r\n\t\t\tthis.drawCaret(pt, tooltipSize);\r\n\t\t}\r\n\t\tctx.lineTo(x + width, y + height - radius);\r\n\t\tctx.quadraticCurveTo(x + width, y + height, x + width - radius, y + height);\r\n\t\tif (yAlign === 'bottom') {\r\n\t\t\tthis.drawCaret(pt, tooltipSize);\r\n\t\t}\r\n\t\tctx.lineTo(x + radius, y + height);\r\n\t\tctx.quadraticCurveTo(x, y + height, x, y + height - radius);\r\n\t\tif (yAlign === 'center' && xAlign === 'left') {\r\n\t\t\tthis.drawCaret(pt, tooltipSize);\r\n\t\t}\r\n\t\tctx.lineTo(x, y + radius);\r\n\t\tctx.quadraticCurveTo(x, y, x + radius, y);\r\n\t\tctx.closePath();\r\n\r\n\t\tctx.fill();\r\n\r\n\t\tif (vm.borderWidth > 0) {\r\n\t\t\tctx.stroke();\r\n\t\t}\r\n\t},\r\n\r\n\tdraw: function() {\r\n\t\tvar ctx = this._chart.ctx;\r\n\t\tvar vm = this._view;\r\n\r\n\t\tif (vm.opacity === 0) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar tooltipSize = {\r\n\t\t\twidth: vm.width,\r\n\t\t\theight: vm.height\r\n\t\t};\r\n\t\tvar pt = {\r\n\t\t\tx: vm.x,\r\n\t\t\ty: vm.y\r\n\t\t};\r\n\r\n\t\t// IE11/Edge does not like very small opacities, so snap to 0\r\n\t\tvar opacity = Math.abs(vm.opacity < 1e-3) ? 0 : vm.opacity;\r\n\r\n\t\t// Truthy/falsey value for empty tooltip\r\n\t\tvar hasTooltipContent = vm.title.length || vm.beforeBody.length || vm.body.length || vm.afterBody.length || vm.footer.length;\r\n\r\n\t\tif (this._options.enabled && hasTooltipContent) {\r\n\t\t\tctx.save();\r\n\t\t\tctx.globalAlpha = opacity;\r\n\r\n\t\t\t// Draw Background\r\n\t\t\tthis.drawBackground(pt, vm, ctx, tooltipSize);\r\n\r\n\t\t\t// Draw Title, Body, and Footer\r\n\t\t\tpt.y += vm.yPadding;\r\n\r\n\t\t\thelpers$1.rtl.overrideTextDirection(ctx, vm.textDirection);\r\n\r\n\t\t\t// Titles\r\n\t\t\tthis.drawTitle(pt, vm, ctx);\r\n\r\n\t\t\t// Body\r\n\t\t\tthis.drawBody(pt, vm, ctx);\r\n\r\n\t\t\t// Footer\r\n\t\t\tthis.drawFooter(pt, vm, ctx);\r\n\r\n\t\t\thelpers$1.rtl.restoreTextDirection(ctx, vm.textDirection);\r\n\r\n\t\t\tctx.restore();\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Handle an event\r\n\t * @private\r\n\t * @param {IEvent} event - The event to handle\r\n\t * @returns {boolean} true if the tooltip changed\r\n\t */\r\n\thandleEvent: function(e) {\r\n\t\tvar me = this;\r\n\t\tvar options = me._options;\r\n\t\tvar changed = false;\r\n\r\n\t\tme._lastActive = me._lastActive || [];\r\n\r\n\t\t// Find Active Elements for tooltips\r\n\t\tif (e.type === 'mouseout') {\r\n\t\t\tme._active = [];\r\n\t\t} else {\r\n\t\t\tme._active = me._chart.getElementsAtEventForMode(e, options.mode, options);\r\n\t\t\tif (options.reverse) {\r\n\t\t\t\tme._active.reverse();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Remember Last Actives\r\n\t\tchanged = !helpers$1.arrayEquals(me._active, me._lastActive);\r\n\r\n\t\t// Only handle target event on tooltip change\r\n\t\tif (changed) {\r\n\t\t\tme._lastActive = me._active;\r\n\r\n\t\t\tif (options.enabled || options.custom) {\r\n\t\t\t\tme._eventPosition = {\r\n\t\t\t\t\tx: e.x,\r\n\t\t\t\t\ty: e.y\r\n\t\t\t\t};\r\n\r\n\t\t\t\tme.update(true);\r\n\t\t\t\tme.pivot();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn changed;\r\n\t}\r\n});\r\n\r\n/**\r\n * @namespace Chart.Tooltip.positioners\r\n */\r\nvar positioners_1 = positioners;\r\n\r\nvar core_tooltip = exports$4;\ncore_tooltip.positioners = positioners_1;\n\nvar valueOrDefault$9 = helpers$1.valueOrDefault;\r\n\r\ncore_defaults._set('global', {\r\n\telements: {},\r\n\tevents: [\r\n\t\t'mousemove',\r\n\t\t'mouseout',\r\n\t\t'click',\r\n\t\t'touchstart',\r\n\t\t'touchmove'\r\n\t],\r\n\thover: {\r\n\t\tonHover: null,\r\n\t\tmode: 'nearest',\r\n\t\tintersect: true,\r\n\t\tanimationDuration: 400\r\n\t},\r\n\tonClick: null,\r\n\tmaintainAspectRatio: true,\r\n\tresponsive: true,\r\n\tresponsiveAnimationDuration: 0\r\n});\r\n\r\n/**\r\n * Recursively merge the given config objects representing the `scales` option\r\n * by incorporating scale defaults in `xAxes` and `yAxes` array items, then\r\n * returns a deep copy of the result, thus doesn't alter inputs.\r\n */\r\nfunction mergeScaleConfig(/* config objects ... */) {\r\n\treturn helpers$1.merge(Object.create(null), [].slice.call(arguments), {\r\n\t\tmerger: function(key, target, source, options) {\r\n\t\t\tif (key === 'xAxes' || key === 'yAxes') {\r\n\t\t\t\tvar slen = source[key].length;\r\n\t\t\t\tvar i, type, scale;\r\n\r\n\t\t\t\tif (!target[key]) {\r\n\t\t\t\t\ttarget[key] = [];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfor (i = 0; i < slen; ++i) {\r\n\t\t\t\t\tscale = source[key][i];\r\n\t\t\t\t\ttype = valueOrDefault$9(scale.type, key === 'xAxes' ? 'category' : 'linear');\r\n\r\n\t\t\t\t\tif (i >= target[key].length) {\r\n\t\t\t\t\t\ttarget[key].push({});\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (!target[key][i].type || (scale.type && scale.type !== target[key][i].type)) {\r\n\t\t\t\t\t\t// new/untyped scale or type changed: let's apply the new defaults\r\n\t\t\t\t\t\t// then merge source scale to correctly overwrite the defaults.\r\n\t\t\t\t\t\thelpers$1.merge(target[key][i], [core_scaleService.getScaleDefaults(type), scale]);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t// scales type are the same\r\n\t\t\t\t\t\thelpers$1.merge(target[key][i], scale);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\thelpers$1._merger(key, target, source, options);\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n}\r\n\r\n/**\r\n * Recursively merge the given config objects as the root options by handling\r\n * default scale options for the `scales` and `scale` properties, then returns\r\n * a deep copy of the result, thus doesn't alter inputs.\r\n */\r\nfunction mergeConfig(/* config objects ... */) {\r\n\treturn helpers$1.merge(Object.create(null), [].slice.call(arguments), {\r\n\t\tmerger: function(key, target, source, options) {\r\n\t\t\tvar tval = target[key] || Object.create(null);\r\n\t\t\tvar sval = source[key];\r\n\r\n\t\t\tif (key === 'scales') {\r\n\t\t\t\t// scale config merging is complex. Add our own function here for that\r\n\t\t\t\ttarget[key] = mergeScaleConfig(tval, sval);\r\n\t\t\t} else if (key === 'scale') {\r\n\t\t\t\t// used in polar area & radar charts since there is only one scale\r\n\t\t\t\ttarget[key] = helpers$1.merge(tval, [core_scaleService.getScaleDefaults(sval.type), sval]);\r\n\t\t\t} else {\r\n\t\t\t\thelpers$1._merger(key, target, source, options);\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n}\r\n\r\nfunction initConfig(config) {\r\n\tconfig = config || Object.create(null);\r\n\r\n\t// Do NOT use mergeConfig for the data object because this method merges arrays\r\n\t// and so would change references to labels and datasets, preventing data updates.\r\n\tvar data = config.data = config.data || {};\r\n\tdata.datasets = data.datasets || [];\r\n\tdata.labels = data.labels || [];\r\n\r\n\tconfig.options = mergeConfig(\r\n\t\tcore_defaults.global,\r\n\t\tcore_defaults[config.type],\r\n\t\tconfig.options || {});\r\n\r\n\treturn config;\r\n}\r\n\r\nfunction updateConfig(chart) {\r\n\tvar newOptions = chart.options;\r\n\r\n\thelpers$1.each(chart.scales, function(scale) {\r\n\t\tcore_layouts.removeBox(chart, scale);\r\n\t});\r\n\r\n\tnewOptions = mergeConfig(\r\n\t\tcore_defaults.global,\r\n\t\tcore_defaults[chart.config.type],\r\n\t\tnewOptions);\r\n\r\n\tchart.options = chart.config.options = newOptions;\r\n\tchart.ensureScalesHaveIDs();\r\n\tchart.buildOrUpdateScales();\r\n\r\n\t// Tooltip\r\n\tchart.tooltip._options = newOptions.tooltips;\r\n\tchart.tooltip.initialize();\r\n}\r\n\r\nfunction nextAvailableScaleId(axesOpts, prefix, index) {\r\n\tvar id;\r\n\tvar hasId = function(obj) {\r\n\t\treturn obj.id === id;\r\n\t};\r\n\r\n\tdo {\r\n\t\tid = prefix + index++;\r\n\t} while (helpers$1.findIndex(axesOpts, hasId) >= 0);\r\n\r\n\treturn id;\r\n}\r\n\r\nfunction positionIsHorizontal(position) {\r\n\treturn position === 'top' || position === 'bottom';\r\n}\r\n\r\nfunction compare2Level(l1, l2) {\r\n\treturn function(a, b) {\r\n\t\treturn a[l1] === b[l1]\r\n\t\t\t? a[l2] - b[l2]\r\n\t\t\t: a[l1] - b[l1];\r\n\t};\r\n}\r\n\r\nvar Chart = function(item, config) {\r\n\tthis.construct(item, config);\r\n\treturn this;\r\n};\r\n\r\nhelpers$1.extend(Chart.prototype, /** @lends Chart */ {\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tconstruct: function(item, config) {\r\n\t\tvar me = this;\r\n\r\n\t\tconfig = initConfig(config);\r\n\r\n\t\tvar context = platform.acquireContext(item, config);\r\n\t\tvar canvas = context && context.canvas;\r\n\t\tvar height = canvas && canvas.height;\r\n\t\tvar width = canvas && canvas.width;\r\n\r\n\t\tme.id = helpers$1.uid();\r\n\t\tme.ctx = context;\r\n\t\tme.canvas = canvas;\r\n\t\tme.config = config;\r\n\t\tme.width = width;\r\n\t\tme.height = height;\r\n\t\tme.aspectRatio = height ? width / height : null;\r\n\t\tme.options = config.options;\r\n\t\tme._bufferedRender = false;\r\n\t\tme._layers = [];\r\n\r\n\t\t/**\r\n\t\t * Provided for backward compatibility, Chart and Chart.Controller have been merged,\r\n\t\t * the \"instance\" still need to be defined since it might be called from plugins.\r\n\t\t * @prop Chart#chart\r\n\t\t * @deprecated since version 2.6.0\r\n\t\t * @todo remove at version 3\r\n\t\t * @private\r\n\t\t */\r\n\t\tme.chart = me;\r\n\t\tme.controller = me; // chart.chart.controller #inception\r\n\r\n\t\t// Add the chart instance to the global namespace\r\n\t\tChart.instances[me.id] = me;\r\n\r\n\t\t// Define alias to the config data: `chart.data === chart.config.data`\r\n\t\tObject.defineProperty(me, 'data', {\r\n\t\t\tget: function() {\r\n\t\t\t\treturn me.config.data;\r\n\t\t\t},\r\n\t\t\tset: function(value) {\r\n\t\t\t\tme.config.data = value;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif (!context || !canvas) {\r\n\t\t\t// The given item is not a compatible context2d element, let's return before finalizing\r\n\t\t\t// the chart initialization but after setting basic chart / controller properties that\r\n\t\t\t// can help to figure out that the chart is not valid (e.g chart.canvas !== null);\r\n\t\t\t// https://github.com/chartjs/Chart.js/issues/2807\r\n\t\t\tconsole.error(\"Failed to create chart: can't acquire context from the given item\");\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tme.initialize();\r\n\t\tme.update();\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tinitialize: function() {\r\n\t\tvar me = this;\r\n\r\n\t\t// Before init plugin notification\r\n\t\tcore_plugins.notify(me, 'beforeInit');\r\n\r\n\t\thelpers$1.retinaScale(me, me.options.devicePixelRatio);\r\n\r\n\t\tme.bindEvents();\r\n\r\n\t\tif (me.options.responsive) {\r\n\t\t\t// Initial resize before chart draws (must be silent to preserve initial animations).\r\n\t\t\tme.resize(true);\r\n\t\t}\r\n\r\n\t\tme.initToolTip();\r\n\r\n\t\t// After init plugin notification\r\n\t\tcore_plugins.notify(me, 'afterInit');\r\n\r\n\t\treturn me;\r\n\t},\r\n\r\n\tclear: function() {\r\n\t\thelpers$1.canvas.clear(this);\r\n\t\treturn this;\r\n\t},\r\n\r\n\tstop: function() {\r\n\t\t// Stops any current animation loop occurring\r\n\t\tcore_animations.cancelAnimation(this);\r\n\t\treturn this;\r\n\t},\r\n\r\n\tresize: function(silent) {\r\n\t\tvar me = this;\r\n\t\tvar options = me.options;\r\n\t\tvar canvas = me.canvas;\r\n\t\tvar aspectRatio = (options.maintainAspectRatio && me.aspectRatio) || null;\r\n\r\n\t\t// the canvas render width and height will be casted to integers so make sure that\r\n\t\t// the canvas display style uses the same integer values to avoid blurring effect.\r\n\r\n\t\t// Set to 0 instead of canvas.size because the size defaults to 300x150 if the element is collapsed\r\n\t\tvar newWidth = Math.max(0, Math.floor(helpers$1.getMaximumWidth(canvas)));\r\n\t\tvar newHeight = Math.max(0, Math.floor(aspectRatio ? newWidth / aspectRatio : helpers$1.getMaximumHeight(canvas)));\r\n\r\n\t\tif (me.width === newWidth && me.height === newHeight) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tcanvas.width = me.width = newWidth;\r\n\t\tcanvas.height = me.height = newHeight;\r\n\t\tcanvas.style.width = newWidth + 'px';\r\n\t\tcanvas.style.height = newHeight + 'px';\r\n\r\n\t\thelpers$1.retinaScale(me, options.devicePixelRatio);\r\n\r\n\t\tif (!silent) {\r\n\t\t\t// Notify any plugins about the resize\r\n\t\t\tvar newSize = {width: newWidth, height: newHeight};\r\n\t\t\tcore_plugins.notify(me, 'resize', [newSize]);\r\n\r\n\t\t\t// Notify of resize\r\n\t\t\tif (options.onResize) {\r\n\t\t\t\toptions.onResize(me, newSize);\r\n\t\t\t}\r\n\r\n\t\t\tme.stop();\r\n\t\t\tme.update({\r\n\t\t\t\tduration: options.responsiveAnimationDuration\r\n\t\t\t});\r\n\t\t}\r\n\t},\r\n\r\n\tensureScalesHaveIDs: function() {\r\n\t\tvar options = this.options;\r\n\t\tvar scalesOptions = options.scales || {};\r\n\t\tvar scaleOptions = options.scale;\r\n\r\n\t\thelpers$1.each(scalesOptions.xAxes, function(xAxisOptions, index) {\r\n\t\t\tif (!xAxisOptions.id) {\r\n\t\t\t\txAxisOptions.id = nextAvailableScaleId(scalesOptions.xAxes, 'x-axis-', index);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\thelpers$1.each(scalesOptions.yAxes, function(yAxisOptions, index) {\r\n\t\t\tif (!yAxisOptions.id) {\r\n\t\t\t\tyAxisOptions.id = nextAvailableScaleId(scalesOptions.yAxes, 'y-axis-', index);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif (scaleOptions) {\r\n\t\t\tscaleOptions.id = scaleOptions.id || 'scale';\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Builds a map of scale ID to scale object for future lookup.\r\n\t */\r\n\tbuildOrUpdateScales: function() {\r\n\t\tvar me = this;\r\n\t\tvar options = me.options;\r\n\t\tvar scales = me.scales || {};\r\n\t\tvar items = [];\r\n\t\tvar updated = Object.keys(scales).reduce(function(obj, id) {\r\n\t\t\tobj[id] = false;\r\n\t\t\treturn obj;\r\n\t\t}, {});\r\n\r\n\t\tif (options.scales) {\r\n\t\t\titems = items.concat(\r\n\t\t\t\t(options.scales.xAxes || []).map(function(xAxisOptions) {\r\n\t\t\t\t\treturn {options: xAxisOptions, dtype: 'category', dposition: 'bottom'};\r\n\t\t\t\t}),\r\n\t\t\t\t(options.scales.yAxes || []).map(function(yAxisOptions) {\r\n\t\t\t\t\treturn {options: yAxisOptions, dtype: 'linear', dposition: 'left'};\r\n\t\t\t\t})\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\tif (options.scale) {\r\n\t\t\titems.push({\r\n\t\t\t\toptions: options.scale,\r\n\t\t\t\tdtype: 'radialLinear',\r\n\t\t\t\tisDefault: true,\r\n\t\t\t\tdposition: 'chartArea'\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\thelpers$1.each(items, function(item) {\r\n\t\t\tvar scaleOptions = item.options;\r\n\t\t\tvar id = scaleOptions.id;\r\n\t\t\tvar scaleType = valueOrDefault$9(scaleOptions.type, item.dtype);\r\n\r\n\t\t\tif (positionIsHorizontal(scaleOptions.position) !== positionIsHorizontal(item.dposition)) {\r\n\t\t\t\tscaleOptions.position = item.dposition;\r\n\t\t\t}\r\n\r\n\t\t\tupdated[id] = true;\r\n\t\t\tvar scale = null;\r\n\t\t\tif (id in scales && scales[id].type === scaleType) {\r\n\t\t\t\tscale = scales[id];\r\n\t\t\t\tscale.options = scaleOptions;\r\n\t\t\t\tscale.ctx = me.ctx;\r\n\t\t\t\tscale.chart = me;\r\n\t\t\t} else {\r\n\t\t\t\tvar scaleClass = core_scaleService.getScaleConstructor(scaleType);\r\n\t\t\t\tif (!scaleClass) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tscale = new scaleClass({\r\n\t\t\t\t\tid: id,\r\n\t\t\t\t\ttype: scaleType,\r\n\t\t\t\t\toptions: scaleOptions,\r\n\t\t\t\t\tctx: me.ctx,\r\n\t\t\t\t\tchart: me\r\n\t\t\t\t});\r\n\t\t\t\tscales[scale.id] = scale;\r\n\t\t\t}\r\n\r\n\t\t\tscale.mergeTicksOptions();\r\n\r\n\t\t\t// TODO(SB): I think we should be able to remove this custom case (options.scale)\r\n\t\t\t// and consider it as a regular scale part of the \"scales\"\" map only! This would\r\n\t\t\t// make the logic easier and remove some useless? custom code.\r\n\t\t\tif (item.isDefault) {\r\n\t\t\t\tme.scale = scale;\r\n\t\t\t}\r\n\t\t});\r\n\t\t// clear up discarded scales\r\n\t\thelpers$1.each(updated, function(hasUpdated, id) {\r\n\t\t\tif (!hasUpdated) {\r\n\t\t\t\tdelete scales[id];\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tme.scales = scales;\r\n\r\n\t\tcore_scaleService.addScalesToLayout(this);\r\n\t},\r\n\r\n\tbuildOrUpdateControllers: function() {\r\n\t\tvar me = this;\r\n\t\tvar newControllers = [];\r\n\t\tvar datasets = me.data.datasets;\r\n\t\tvar i, ilen;\r\n\r\n\t\tfor (i = 0, ilen = datasets.length; i < ilen; i++) {\r\n\t\t\tvar dataset = datasets[i];\r\n\t\t\tvar meta = me.getDatasetMeta(i);\r\n\t\t\tvar type = dataset.type || me.config.type;\r\n\r\n\t\t\tif (meta.type && meta.type !== type) {\r\n\t\t\t\tme.destroyDatasetMeta(i);\r\n\t\t\t\tmeta = me.getDatasetMeta(i);\r\n\t\t\t}\r\n\t\t\tmeta.type = type;\r\n\t\t\tmeta.order = dataset.order || 0;\r\n\t\t\tmeta.index = i;\r\n\r\n\t\t\tif (meta.controller) {\r\n\t\t\t\tmeta.controller.updateIndex(i);\r\n\t\t\t\tmeta.controller.linkScales();\r\n\t\t\t} else {\r\n\t\t\t\tvar ControllerClass = controllers[meta.type];\r\n\t\t\t\tif (ControllerClass === undefined) {\r\n\t\t\t\t\tthrow new Error('\"' + meta.type + '\" is not a chart type.');\r\n\t\t\t\t}\r\n\r\n\t\t\t\tmeta.controller = new ControllerClass(me, i);\r\n\t\t\t\tnewControllers.push(meta.controller);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn newControllers;\r\n\t},\r\n\r\n\t/**\r\n\t * Reset the elements of all datasets\r\n\t * @private\r\n\t */\r\n\tresetElements: function() {\r\n\t\tvar me = this;\r\n\t\thelpers$1.each(me.data.datasets, function(dataset, datasetIndex) {\r\n\t\t\tme.getDatasetMeta(datasetIndex).controller.reset();\r\n\t\t}, me);\r\n\t},\r\n\r\n\t/**\r\n\t* Resets the chart back to it's state before the initial animation\r\n\t*/\r\n\treset: function() {\r\n\t\tthis.resetElements();\r\n\t\tthis.tooltip.initialize();\r\n\t},\r\n\r\n\tupdate: function(config) {\r\n\t\tvar me = this;\r\n\t\tvar i, ilen;\r\n\r\n\t\tif (!config || typeof config !== 'object') {\r\n\t\t\t// backwards compatibility\r\n\t\t\tconfig = {\r\n\t\t\t\tduration: config,\r\n\t\t\t\tlazy: arguments[1]\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\tupdateConfig(me);\r\n\r\n\t\t// plugins options references might have change, let's invalidate the cache\r\n\t\t// https://github.com/chartjs/Chart.js/issues/5111#issuecomment-355934167\r\n\t\tcore_plugins._invalidate(me);\r\n\r\n\t\tif (core_plugins.notify(me, 'beforeUpdate') === false) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// In case the entire data object changed\r\n\t\tme.tooltip._data = me.data;\r\n\r\n\t\t// Make sure dataset controllers are updated and new controllers are reset\r\n\t\tvar newControllers = me.buildOrUpdateControllers();\r\n\r\n\t\t// Make sure all dataset controllers have correct meta data counts\r\n\t\tfor (i = 0, ilen = me.data.datasets.length; i < ilen; i++) {\r\n\t\t\tme.getDatasetMeta(i).controller.buildOrUpdateElements();\r\n\t\t}\r\n\r\n\t\tme.updateLayout();\r\n\r\n\t\t// Can only reset the new controllers after the scales have been updated\r\n\t\tif (me.options.animation && me.options.animation.duration) {\r\n\t\t\thelpers$1.each(newControllers, function(controller) {\r\n\t\t\t\tcontroller.reset();\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tme.updateDatasets();\r\n\r\n\t\t// Need to reset tooltip in case it is displayed with elements that are removed\r\n\t\t// after update.\r\n\t\tme.tooltip.initialize();\r\n\r\n\t\t// Last active contains items that were previously in the tooltip.\r\n\t\t// When we reset the tooltip, we need to clear it\r\n\t\tme.lastActive = [];\r\n\r\n\t\t// Do this before render so that any plugins that need final scale updates can use it\r\n\t\tcore_plugins.notify(me, 'afterUpdate');\r\n\r\n\t\tme._layers.sort(compare2Level('z', '_idx'));\r\n\r\n\t\tif (me._bufferedRender) {\r\n\t\t\tme._bufferedRequest = {\r\n\t\t\t\tduration: config.duration,\r\n\t\t\t\teasing: config.easing,\r\n\t\t\t\tlazy: config.lazy\r\n\t\t\t};\r\n\t\t} else {\r\n\t\t\tme.render(config);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Updates the chart layout unless a plugin returns `false` to the `beforeLayout`\r\n\t * hook, in which case, plugins will not be called on `afterLayout`.\r\n\t * @private\r\n\t */\r\n\tupdateLayout: function() {\r\n\t\tvar me = this;\r\n\r\n\t\tif (core_plugins.notify(me, 'beforeLayout') === false) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tcore_layouts.update(this, this.width, this.height);\r\n\r\n\t\tme._layers = [];\r\n\t\thelpers$1.each(me.boxes, function(box) {\r\n\t\t\t// _configure is called twice, once in core.scale.update and once here.\r\n\t\t\t// Here the boxes are fully updated and at their final positions.\r\n\t\t\tif (box._configure) {\r\n\t\t\t\tbox._configure();\r\n\t\t\t}\r\n\t\t\tme._layers.push.apply(me._layers, box._layers());\r\n\t\t}, me);\r\n\r\n\t\tme._layers.forEach(function(item, index) {\r\n\t\t\titem._idx = index;\r\n\t\t});\r\n\r\n\t\t/**\r\n\t\t * Provided for backward compatibility, use `afterLayout` instead.\r\n\t\t * @method IPlugin#afterScaleUpdate\r\n\t\t * @deprecated since version 2.5.0\r\n\t\t * @todo remove at version 3\r\n\t\t * @private\r\n\t\t */\r\n\t\tcore_plugins.notify(me, 'afterScaleUpdate');\r\n\t\tcore_plugins.notify(me, 'afterLayout');\r\n\t},\r\n\r\n\t/**\r\n\t * Updates all datasets unless a plugin returns `false` to the `beforeDatasetsUpdate`\r\n\t * hook, in which case, plugins will not be called on `afterDatasetsUpdate`.\r\n\t * @private\r\n\t */\r\n\tupdateDatasets: function() {\r\n\t\tvar me = this;\r\n\r\n\t\tif (core_plugins.notify(me, 'beforeDatasetsUpdate') === false) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tfor (var i = 0, ilen = me.data.datasets.length; i < ilen; ++i) {\r\n\t\t\tme.updateDataset(i);\r\n\t\t}\r\n\r\n\t\tcore_plugins.notify(me, 'afterDatasetsUpdate');\r\n\t},\r\n\r\n\t/**\r\n\t * Updates dataset at index unless a plugin returns `false` to the `beforeDatasetUpdate`\r\n\t * hook, in which case, plugins will not be called on `afterDatasetUpdate`.\r\n\t * @private\r\n\t */\r\n\tupdateDataset: function(index) {\r\n\t\tvar me = this;\r\n\t\tvar meta = me.getDatasetMeta(index);\r\n\t\tvar args = {\r\n\t\t\tmeta: meta,\r\n\t\t\tindex: index\r\n\t\t};\r\n\r\n\t\tif (core_plugins.notify(me, 'beforeDatasetUpdate', [args]) === false) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tmeta.controller._update();\r\n\r\n\t\tcore_plugins.notify(me, 'afterDatasetUpdate', [args]);\r\n\t},\r\n\r\n\trender: function(config) {\r\n\t\tvar me = this;\r\n\r\n\t\tif (!config || typeof config !== 'object') {\r\n\t\t\t// backwards compatibility\r\n\t\t\tconfig = {\r\n\t\t\t\tduration: config,\r\n\t\t\t\tlazy: arguments[1]\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\tvar animationOptions = me.options.animation;\r\n\t\tvar duration = valueOrDefault$9(config.duration, animationOptions && animationOptions.duration);\r\n\t\tvar lazy = config.lazy;\r\n\r\n\t\tif (core_plugins.notify(me, 'beforeRender') === false) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar onComplete = function(animation) {\r\n\t\t\tcore_plugins.notify(me, 'afterRender');\r\n\t\t\thelpers$1.callback(animationOptions && animationOptions.onComplete, [animation], me);\r\n\t\t};\r\n\r\n\t\tif (animationOptions && duration) {\r\n\t\t\tvar animation = new core_animation({\r\n\t\t\t\tnumSteps: duration / 16.66, // 60 fps\r\n\t\t\t\teasing: config.easing || animationOptions.easing,\r\n\r\n\t\t\t\trender: function(chart, animationObject) {\r\n\t\t\t\t\tvar easingFunction = helpers$1.easing.effects[animationObject.easing];\r\n\t\t\t\t\tvar currentStep = animationObject.currentStep;\r\n\t\t\t\t\tvar stepDecimal = currentStep / animationObject.numSteps;\r\n\r\n\t\t\t\t\tchart.draw(easingFunction(stepDecimal), stepDecimal, currentStep);\r\n\t\t\t\t},\r\n\r\n\t\t\t\tonAnimationProgress: animationOptions.onProgress,\r\n\t\t\t\tonAnimationComplete: onComplete\r\n\t\t\t});\r\n\r\n\t\t\tcore_animations.addAnimation(me, animation, duration, lazy);\r\n\t\t} else {\r\n\t\t\tme.draw();\r\n\r\n\t\t\t// See https://github.com/chartjs/Chart.js/issues/3781\r\n\t\t\tonComplete(new core_animation({numSteps: 0, chart: me}));\r\n\t\t}\r\n\r\n\t\treturn me;\r\n\t},\r\n\r\n\tdraw: function(easingValue) {\r\n\t\tvar me = this;\r\n\t\tvar i, layers;\r\n\r\n\t\tme.clear();\r\n\r\n\t\tif (helpers$1.isNullOrUndef(easingValue)) {\r\n\t\t\teasingValue = 1;\r\n\t\t}\r\n\r\n\t\tme.transition(easingValue);\r\n\r\n\t\tif (me.width <= 0 || me.height <= 0) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (core_plugins.notify(me, 'beforeDraw', [easingValue]) === false) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Because of plugin hooks (before/afterDatasetsDraw), datasets can't\r\n\t\t// currently be part of layers. Instead, we draw\r\n\t\t// layers <= 0 before(default, backward compat), and the rest after\r\n\t\tlayers = me._layers;\r\n\t\tfor (i = 0; i < layers.length && layers[i].z <= 0; ++i) {\r\n\t\t\tlayers[i].draw(me.chartArea);\r\n\t\t}\r\n\r\n\t\tme.drawDatasets(easingValue);\r\n\r\n\t\t// Rest of layers\r\n\t\tfor (; i < layers.length; ++i) {\r\n\t\t\tlayers[i].draw(me.chartArea);\r\n\t\t}\r\n\r\n\t\tme._drawTooltip(easingValue);\r\n\r\n\t\tcore_plugins.notify(me, 'afterDraw', [easingValue]);\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\ttransition: function(easingValue) {\r\n\t\tvar me = this;\r\n\r\n\t\tfor (var i = 0, ilen = (me.data.datasets || []).length; i < ilen; ++i) {\r\n\t\t\tif (me.isDatasetVisible(i)) {\r\n\t\t\t\tme.getDatasetMeta(i).controller.transition(easingValue);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tme.tooltip.transition(easingValue);\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getSortedDatasetMetas: function(filterVisible) {\r\n\t\tvar me = this;\r\n\t\tvar datasets = me.data.datasets || [];\r\n\t\tvar result = [];\r\n\t\tvar i, ilen;\r\n\r\n\t\tfor (i = 0, ilen = datasets.length; i < ilen; ++i) {\r\n\t\t\tif (!filterVisible || me.isDatasetVisible(i)) {\r\n\t\t\t\tresult.push(me.getDatasetMeta(i));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tresult.sort(compare2Level('order', 'index'));\r\n\r\n\t\treturn result;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getSortedVisibleDatasetMetas: function() {\r\n\t\treturn this._getSortedDatasetMetas(true);\r\n\t},\r\n\r\n\t/**\r\n\t * Draws all datasets unless a plugin returns `false` to the `beforeDatasetsDraw`\r\n\t * hook, in which case, plugins will not be called on `afterDatasetsDraw`.\r\n\t * @private\r\n\t */\r\n\tdrawDatasets: function(easingValue) {\r\n\t\tvar me = this;\r\n\t\tvar metasets, i;\r\n\r\n\t\tif (core_plugins.notify(me, 'beforeDatasetsDraw', [easingValue]) === false) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tmetasets = me._getSortedVisibleDatasetMetas();\r\n\t\tfor (i = metasets.length - 1; i >= 0; --i) {\r\n\t\t\tme.drawDataset(metasets[i], easingValue);\r\n\t\t}\r\n\r\n\t\tcore_plugins.notify(me, 'afterDatasetsDraw', [easingValue]);\r\n\t},\r\n\r\n\t/**\r\n\t * Draws dataset at index unless a plugin returns `false` to the `beforeDatasetDraw`\r\n\t * hook, in which case, plugins will not be called on `afterDatasetDraw`.\r\n\t * @private\r\n\t */\r\n\tdrawDataset: function(meta, easingValue) {\r\n\t\tvar me = this;\r\n\t\tvar args = {\r\n\t\t\tmeta: meta,\r\n\t\t\tindex: meta.index,\r\n\t\t\teasingValue: easingValue\r\n\t\t};\r\n\r\n\t\tif (core_plugins.notify(me, 'beforeDatasetDraw', [args]) === false) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tmeta.controller.draw(easingValue);\r\n\r\n\t\tcore_plugins.notify(me, 'afterDatasetDraw', [args]);\r\n\t},\r\n\r\n\t/**\r\n\t * Draws tooltip unless a plugin returns `false` to the `beforeTooltipDraw`\r\n\t * hook, in which case, plugins will not be called on `afterTooltipDraw`.\r\n\t * @private\r\n\t */\r\n\t_drawTooltip: function(easingValue) {\r\n\t\tvar me = this;\r\n\t\tvar tooltip = me.tooltip;\r\n\t\tvar args = {\r\n\t\t\ttooltip: tooltip,\r\n\t\t\teasingValue: easingValue\r\n\t\t};\r\n\r\n\t\tif (core_plugins.notify(me, 'beforeTooltipDraw', [args]) === false) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\ttooltip.draw();\r\n\r\n\t\tcore_plugins.notify(me, 'afterTooltipDraw', [args]);\r\n\t},\r\n\r\n\t/**\r\n\t * Get the single element that was clicked on\r\n\t * @return An object containing the dataset index and element index of the matching element. Also contains the rectangle that was draw\r\n\t */\r\n\tgetElementAtEvent: function(e) {\r\n\t\treturn core_interaction.modes.single(this, e);\r\n\t},\r\n\r\n\tgetElementsAtEvent: function(e) {\r\n\t\treturn core_interaction.modes.label(this, e, {intersect: true});\r\n\t},\r\n\r\n\tgetElementsAtXAxis: function(e) {\r\n\t\treturn core_interaction.modes['x-axis'](this, e, {intersect: true});\r\n\t},\r\n\r\n\tgetElementsAtEventForMode: function(e, mode, options) {\r\n\t\tvar method = core_interaction.modes[mode];\r\n\t\tif (typeof method === 'function') {\r\n\t\t\treturn method(this, e, options);\r\n\t\t}\r\n\r\n\t\treturn [];\r\n\t},\r\n\r\n\tgetDatasetAtEvent: function(e) {\r\n\t\treturn core_interaction.modes.dataset(this, e, {intersect: true});\r\n\t},\r\n\r\n\tgetDatasetMeta: function(datasetIndex) {\r\n\t\tvar me = this;\r\n\t\tvar dataset = me.data.datasets[datasetIndex];\r\n\t\tif (!dataset._meta) {\r\n\t\t\tdataset._meta = {};\r\n\t\t}\r\n\r\n\t\tvar meta = dataset._meta[me.id];\r\n\t\tif (!meta) {\r\n\t\t\tmeta = dataset._meta[me.id] = {\r\n\t\t\t\ttype: null,\r\n\t\t\t\tdata: [],\r\n\t\t\t\tdataset: null,\r\n\t\t\t\tcontroller: null,\r\n\t\t\t\thidden: null,\t\t\t// See isDatasetVisible() comment\r\n\t\t\t\txAxisID: null,\r\n\t\t\t\tyAxisID: null,\r\n\t\t\t\torder: dataset.order || 0,\r\n\t\t\t\tindex: datasetIndex\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn meta;\r\n\t},\r\n\r\n\tgetVisibleDatasetCount: function() {\r\n\t\tvar count = 0;\r\n\t\tfor (var i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\r\n\t\t\tif (this.isDatasetVisible(i)) {\r\n\t\t\t\tcount++;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn count;\r\n\t},\r\n\r\n\tisDatasetVisible: function(datasetIndex) {\r\n\t\tvar meta = this.getDatasetMeta(datasetIndex);\r\n\r\n\t\t// meta.hidden is a per chart dataset hidden flag override with 3 states: if true or false,\r\n\t\t// the dataset.hidden value is ignored, else if null, the dataset hidden state is returned.\r\n\t\treturn typeof meta.hidden === 'boolean' ? !meta.hidden : !this.data.datasets[datasetIndex].hidden;\r\n\t},\r\n\r\n\tgenerateLegend: function() {\r\n\t\treturn this.options.legendCallback(this);\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tdestroyDatasetMeta: function(datasetIndex) {\r\n\t\tvar id = this.id;\r\n\t\tvar dataset = this.data.datasets[datasetIndex];\r\n\t\tvar meta = dataset._meta && dataset._meta[id];\r\n\r\n\t\tif (meta) {\r\n\t\t\tmeta.controller.destroy();\r\n\t\t\tdelete dataset._meta[id];\r\n\t\t}\r\n\t},\r\n\r\n\tdestroy: function() {\r\n\t\tvar me = this;\r\n\t\tvar canvas = me.canvas;\r\n\t\tvar i, ilen;\r\n\r\n\t\tme.stop();\r\n\r\n\t\t// dataset controllers need to cleanup associated data\r\n\t\tfor (i = 0, ilen = me.data.datasets.length; i < ilen; ++i) {\r\n\t\t\tme.destroyDatasetMeta(i);\r\n\t\t}\r\n\r\n\t\tif (canvas) {\r\n\t\t\tme.unbindEvents();\r\n\t\t\thelpers$1.canvas.clear(me);\r\n\t\t\tplatform.releaseContext(me.ctx);\r\n\t\t\tme.canvas = null;\r\n\t\t\tme.ctx = null;\r\n\t\t}\r\n\r\n\t\tcore_plugins.notify(me, 'destroy');\r\n\r\n\t\tdelete Chart.instances[me.id];\r\n\t},\r\n\r\n\ttoBase64Image: function() {\r\n\t\treturn this.canvas.toDataURL.apply(this.canvas, arguments);\r\n\t},\r\n\r\n\tinitToolTip: function() {\r\n\t\tvar me = this;\r\n\t\tme.tooltip = new core_tooltip({\r\n\t\t\t_chart: me,\r\n\t\t\t_chartInstance: me, // deprecated, backward compatibility\r\n\t\t\t_data: me.data,\r\n\t\t\t_options: me.options.tooltips\r\n\t\t}, me);\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tbindEvents: function() {\r\n\t\tvar me = this;\r\n\t\tvar listeners = me._listeners = {};\r\n\t\tvar listener = function() {\r\n\t\t\tme.eventHandler.apply(me, arguments);\r\n\t\t};\r\n\r\n\t\thelpers$1.each(me.options.events, function(type) {\r\n\t\t\tplatform.addEventListener(me, type, listener);\r\n\t\t\tlisteners[type] = listener;\r\n\t\t});\r\n\r\n\t\t// Elements used to detect size change should not be injected for non responsive charts.\r\n\t\t// See https://github.com/chartjs/Chart.js/issues/2210\r\n\t\tif (me.options.responsive) {\r\n\t\t\tlistener = function() {\r\n\t\t\t\tme.resize();\r\n\t\t\t};\r\n\r\n\t\t\tplatform.addEventListener(me, 'resize', listener);\r\n\t\t\tlisteners.resize = listener;\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tunbindEvents: function() {\r\n\t\tvar me = this;\r\n\t\tvar listeners = me._listeners;\r\n\t\tif (!listeners) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tdelete me._listeners;\r\n\t\thelpers$1.each(listeners, function(listener, type) {\r\n\t\t\tplatform.removeEventListener(me, type, listener);\r\n\t\t});\r\n\t},\r\n\r\n\tupdateHoverStyle: function(elements, mode, enabled) {\r\n\t\tvar prefix = enabled ? 'set' : 'remove';\r\n\t\tvar element, i, ilen;\r\n\r\n\t\tfor (i = 0, ilen = elements.length; i < ilen; ++i) {\r\n\t\t\telement = elements[i];\r\n\t\t\tif (element) {\r\n\t\t\t\tthis.getDatasetMeta(element._datasetIndex).controller[prefix + 'HoverStyle'](element);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (mode === 'dataset') {\r\n\t\t\tthis.getDatasetMeta(elements[0]._datasetIndex).controller['_' + prefix + 'DatasetHoverStyle']();\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\teventHandler: function(e) {\r\n\t\tvar me = this;\r\n\t\tvar tooltip = me.tooltip;\r\n\r\n\t\tif (core_plugins.notify(me, 'beforeEvent', [e]) === false) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Buffer any update calls so that renders do not occur\r\n\t\tme._bufferedRender = true;\r\n\t\tme._bufferedRequest = null;\r\n\r\n\t\tvar changed = me.handleEvent(e);\r\n\t\t// for smooth tooltip animations issue #4989\r\n\t\t// the tooltip should be the source of change\r\n\t\t// Animation check workaround:\r\n\t\t// tooltip._start will be null when tooltip isn't animating\r\n\t\tif (tooltip) {\r\n\t\t\tchanged = tooltip._start\r\n\t\t\t\t? tooltip.handleEvent(e)\r\n\t\t\t\t: changed | tooltip.handleEvent(e);\r\n\t\t}\r\n\r\n\t\tcore_plugins.notify(me, 'afterEvent', [e]);\r\n\r\n\t\tvar bufferedRequest = me._bufferedRequest;\r\n\t\tif (bufferedRequest) {\r\n\t\t\t// If we have an update that was triggered, we need to do a normal render\r\n\t\t\tme.render(bufferedRequest);\r\n\t\t} else if (changed && !me.animating) {\r\n\t\t\t// If entering, leaving, or changing elements, animate the change via pivot\r\n\t\t\tme.stop();\r\n\r\n\t\t\t// We only need to render at this point. Updating will cause scales to be\r\n\t\t\t// recomputed generating flicker & using more memory than necessary.\r\n\t\t\tme.render({\r\n\t\t\t\tduration: me.options.hover.animationDuration,\r\n\t\t\t\tlazy: true\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tme._bufferedRender = false;\r\n\t\tme._bufferedRequest = null;\r\n\r\n\t\treturn me;\r\n\t},\r\n\r\n\t/**\r\n\t * Handle an event\r\n\t * @private\r\n\t * @param {IEvent} event the event to handle\r\n\t * @return {boolean} true if the chart needs to re-render\r\n\t */\r\n\thandleEvent: function(e) {\r\n\t\tvar me = this;\r\n\t\tvar options = me.options || {};\r\n\t\tvar hoverOptions = options.hover;\r\n\t\tvar changed = false;\r\n\r\n\t\tme.lastActive = me.lastActive || [];\r\n\r\n\t\t// Find Active Elements for hover and tooltips\r\n\t\tif (e.type === 'mouseout') {\r\n\t\t\tme.active = [];\r\n\t\t} else {\r\n\t\t\tme.active = me.getElementsAtEventForMode(e, hoverOptions.mode, hoverOptions);\r\n\t\t}\r\n\r\n\t\t// Invoke onHover hook\r\n\t\t// Need to call with native event here to not break backwards compatibility\r\n\t\thelpers$1.callback(options.onHover || options.hover.onHover, [e.native, me.active], me);\r\n\r\n\t\tif (e.type === 'mouseup' || e.type === 'click') {\r\n\t\t\tif (options.onClick) {\r\n\t\t\t\t// Use e.native here for backwards compatibility\r\n\t\t\t\toptions.onClick.call(me, e.native, me.active);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Remove styling for last active (even if it may still be active)\r\n\t\tif (me.lastActive.length) {\r\n\t\t\tme.updateHoverStyle(me.lastActive, hoverOptions.mode, false);\r\n\t\t}\r\n\r\n\t\t// Built in hover styling\r\n\t\tif (me.active.length && hoverOptions.mode) {\r\n\t\t\tme.updateHoverStyle(me.active, hoverOptions.mode, true);\r\n\t\t}\r\n\r\n\t\tchanged = !helpers$1.arrayEquals(me.active, me.lastActive);\r\n\r\n\t\t// Remember Last Actives\r\n\t\tme.lastActive = me.active;\r\n\r\n\t\treturn changed;\r\n\t}\r\n});\r\n\r\n/**\r\n * NOTE(SB) We actually don't use this container anymore but we need to keep it\r\n * for backward compatibility. Though, it can still be useful for plugins that\r\n * would need to work on multiple charts?!\r\n */\r\nChart.instances = {};\r\n\r\nvar core_controller = Chart;\r\n\r\n// DEPRECATIONS\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart instead.\r\n * @class Chart.Controller\r\n * @deprecated since version 2.6\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nChart.Controller = Chart;\r\n\r\n/**\r\n * Provided for backward compatibility, not available anymore.\r\n * @namespace Chart\r\n * @deprecated since version 2.8\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nChart.types = {};\r\n\r\n/**\r\n * Provided for backward compatibility, not available anymore.\r\n * @namespace Chart.helpers.configMerge\r\n * @deprecated since version 2.8.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers$1.configMerge = mergeConfig;\r\n\r\n/**\r\n * Provided for backward compatibility, not available anymore.\r\n * @namespace Chart.helpers.scaleMerge\r\n * @deprecated since version 2.8.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers$1.scaleMerge = mergeScaleConfig;\n\nvar core_helpers = function() {\r\n\r\n\t// -- Basic js utility methods\r\n\r\n\thelpers$1.where = function(collection, filterCallback) {\r\n\t\tif (helpers$1.isArray(collection) && Array.prototype.filter) {\r\n\t\t\treturn collection.filter(filterCallback);\r\n\t\t}\r\n\t\tvar filtered = [];\r\n\r\n\t\thelpers$1.each(collection, function(item) {\r\n\t\t\tif (filterCallback(item)) {\r\n\t\t\t\tfiltered.push(item);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn filtered;\r\n\t};\r\n\thelpers$1.findIndex = Array.prototype.findIndex ?\r\n\t\tfunction(array, callback, scope) {\r\n\t\t\treturn array.findIndex(callback, scope);\r\n\t\t} :\r\n\t\tfunction(array, callback, scope) {\r\n\t\t\tscope = scope === undefined ? array : scope;\r\n\t\t\tfor (var i = 0, ilen = array.length; i < ilen; ++i) {\r\n\t\t\t\tif (callback.call(scope, array[i], i, array)) {\r\n\t\t\t\t\treturn i;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn -1;\r\n\t\t};\r\n\thelpers$1.findNextWhere = function(arrayToSearch, filterCallback, startIndex) {\r\n\t\t// Default to start of the array\r\n\t\tif (helpers$1.isNullOrUndef(startIndex)) {\r\n\t\t\tstartIndex = -1;\r\n\t\t}\r\n\t\tfor (var i = startIndex + 1; i < arrayToSearch.length; i++) {\r\n\t\t\tvar currentItem = arrayToSearch[i];\r\n\t\t\tif (filterCallback(currentItem)) {\r\n\t\t\t\treturn currentItem;\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\thelpers$1.findPreviousWhere = function(arrayToSearch, filterCallback, startIndex) {\r\n\t\t// Default to end of the array\r\n\t\tif (helpers$1.isNullOrUndef(startIndex)) {\r\n\t\t\tstartIndex = arrayToSearch.length;\r\n\t\t}\r\n\t\tfor (var i = startIndex - 1; i >= 0; i--) {\r\n\t\t\tvar currentItem = arrayToSearch[i];\r\n\t\t\tif (filterCallback(currentItem)) {\r\n\t\t\t\treturn currentItem;\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\t// -- Math methods\r\n\thelpers$1.isNumber = function(n) {\r\n\t\treturn !isNaN(parseFloat(n)) && isFinite(n);\r\n\t};\r\n\thelpers$1.almostEquals = function(x, y, epsilon) {\r\n\t\treturn Math.abs(x - y) < epsilon;\r\n\t};\r\n\thelpers$1.almostWhole = function(x, epsilon) {\r\n\t\tvar rounded = Math.round(x);\r\n\t\treturn ((rounded - epsilon) <= x) && ((rounded + epsilon) >= x);\r\n\t};\r\n\thelpers$1.max = function(array) {\r\n\t\treturn array.reduce(function(max, value) {\r\n\t\t\tif (!isNaN(value)) {\r\n\t\t\t\treturn Math.max(max, value);\r\n\t\t\t}\r\n\t\t\treturn max;\r\n\t\t}, Number.NEGATIVE_INFINITY);\r\n\t};\r\n\thelpers$1.min = function(array) {\r\n\t\treturn array.reduce(function(min, value) {\r\n\t\t\tif (!isNaN(value)) {\r\n\t\t\t\treturn Math.min(min, value);\r\n\t\t\t}\r\n\t\t\treturn min;\r\n\t\t}, Number.POSITIVE_INFINITY);\r\n\t};\r\n\thelpers$1.sign = Math.sign ?\r\n\t\tfunction(x) {\r\n\t\t\treturn Math.sign(x);\r\n\t\t} :\r\n\t\tfunction(x) {\r\n\t\t\tx = +x; // convert to a number\r\n\t\t\tif (x === 0 || isNaN(x)) {\r\n\t\t\t\treturn x;\r\n\t\t\t}\r\n\t\t\treturn x > 0 ? 1 : -1;\r\n\t\t};\r\n\thelpers$1.toRadians = function(degrees) {\r\n\t\treturn degrees * (Math.PI / 180);\r\n\t};\r\n\thelpers$1.toDegrees = function(radians) {\r\n\t\treturn radians * (180 / Math.PI);\r\n\t};\r\n\r\n\t/**\r\n\t * Returns the number of decimal places\r\n\t * i.e. the number of digits after the decimal point, of the value of this Number.\r\n\t * @param {number} x - A number.\r\n\t * @returns {number} The number of decimal places.\r\n\t * @private\r\n\t */\r\n\thelpers$1._decimalPlaces = function(x) {\r\n\t\tif (!helpers$1.isFinite(x)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tvar e = 1;\r\n\t\tvar p = 0;\r\n\t\twhile (Math.round(x * e) / e !== x) {\r\n\t\t\te *= 10;\r\n\t\t\tp++;\r\n\t\t}\r\n\t\treturn p;\r\n\t};\r\n\r\n\t// Gets the angle from vertical upright to the point about a centre.\r\n\thelpers$1.getAngleFromPoint = function(centrePoint, anglePoint) {\r\n\t\tvar distanceFromXCenter = anglePoint.x - centrePoint.x;\r\n\t\tvar distanceFromYCenter = anglePoint.y - centrePoint.y;\r\n\t\tvar radialDistanceFromCenter = Math.sqrt(distanceFromXCenter * distanceFromXCenter + distanceFromYCenter * distanceFromYCenter);\r\n\r\n\t\tvar angle = Math.atan2(distanceFromYCenter, distanceFromXCenter);\r\n\r\n\t\tif (angle < (-0.5 * Math.PI)) {\r\n\t\t\tangle += 2.0 * Math.PI; // make sure the returned angle is in the range of (-PI/2, 3PI/2]\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tangle: angle,\r\n\t\t\tdistance: radialDistanceFromCenter\r\n\t\t};\r\n\t};\r\n\thelpers$1.distanceBetweenPoints = function(pt1, pt2) {\r\n\t\treturn Math.sqrt(Math.pow(pt2.x - pt1.x, 2) + Math.pow(pt2.y - pt1.y, 2));\r\n\t};\r\n\r\n\t/**\r\n\t * Provided for backward compatibility, not available anymore\r\n\t * @function Chart.helpers.aliasPixel\r\n\t * @deprecated since version 2.8.0\r\n\t * @todo remove at version 3\r\n\t */\r\n\thelpers$1.aliasPixel = function(pixelWidth) {\r\n\t\treturn (pixelWidth % 2 === 0) ? 0 : 0.5;\r\n\t};\r\n\r\n\t/**\r\n\t * Returns the aligned pixel value to avoid anti-aliasing blur\r\n\t * @param {Chart} chart - The chart instance.\r\n\t * @param {number} pixel - A pixel value.\r\n\t * @param {number} width - The width of the element.\r\n\t * @returns {number} The aligned pixel value.\r\n\t * @private\r\n\t */\r\n\thelpers$1._alignPixel = function(chart, pixel, width) {\r\n\t\tvar devicePixelRatio = chart.currentDevicePixelRatio;\r\n\t\tvar halfWidth = width / 2;\r\n\t\treturn Math.round((pixel - halfWidth) * devicePixelRatio) / devicePixelRatio + halfWidth;\r\n\t};\r\n\r\n\thelpers$1.splineCurve = function(firstPoint, middlePoint, afterPoint, t) {\r\n\t\t// Props to Rob Spencer at scaled innovation for his post on splining between points\r\n\t\t// http://scaledinnovation.com/analytics/splines/aboutSplines.html\r\n\r\n\t\t// This function must also respect \"skipped\" points\r\n\r\n\t\tvar previous = firstPoint.skip ? middlePoint : firstPoint;\r\n\t\tvar current = middlePoint;\r\n\t\tvar next = afterPoint.skip ? middlePoint : afterPoint;\r\n\r\n\t\tvar d01 = Math.sqrt(Math.pow(current.x - previous.x, 2) + Math.pow(current.y - previous.y, 2));\r\n\t\tvar d12 = Math.sqrt(Math.pow(next.x - current.x, 2) + Math.pow(next.y - current.y, 2));\r\n\r\n\t\tvar s01 = d01 / (d01 + d12);\r\n\t\tvar s12 = d12 / (d01 + d12);\r\n\r\n\t\t// If all points are the same, s01 & s02 will be inf\r\n\t\ts01 = isNaN(s01) ? 0 : s01;\r\n\t\ts12 = isNaN(s12) ? 0 : s12;\r\n\r\n\t\tvar fa = t * s01; // scaling factor for triangle Ta\r\n\t\tvar fb = t * s12;\r\n\r\n\t\treturn {\r\n\t\t\tprevious: {\r\n\t\t\t\tx: current.x - fa * (next.x - previous.x),\r\n\t\t\t\ty: current.y - fa * (next.y - previous.y)\r\n\t\t\t},\r\n\t\t\tnext: {\r\n\t\t\t\tx: current.x + fb * (next.x - previous.x),\r\n\t\t\t\ty: current.y + fb * (next.y - previous.y)\r\n\t\t\t}\r\n\t\t};\r\n\t};\r\n\thelpers$1.EPSILON = Number.EPSILON || 1e-14;\r\n\thelpers$1.splineCurveMonotone = function(points) {\r\n\t\t// This function calculates Bézier control points in a similar way than |splineCurve|,\r\n\t\t// but preserves monotonicity of the provided data and ensures no local extremums are added\r\n\t\t// between the dataset discrete points due to the interpolation.\r\n\t\t// See : https://en.wikipedia.org/wiki/Monotone_cubic_interpolation\r\n\r\n\t\tvar pointsWithTangents = (points || []).map(function(point) {\r\n\t\t\treturn {\r\n\t\t\t\tmodel: point._model,\r\n\t\t\t\tdeltaK: 0,\r\n\t\t\t\tmK: 0\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\t// Calculate slopes (deltaK) and initialize tangents (mK)\r\n\t\tvar pointsLen = pointsWithTangents.length;\r\n\t\tvar i, pointBefore, pointCurrent, pointAfter;\r\n\t\tfor (i = 0; i < pointsLen; ++i) {\r\n\t\t\tpointCurrent = pointsWithTangents[i];\r\n\t\t\tif (pointCurrent.model.skip) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tpointBefore = i > 0 ? pointsWithTangents[i - 1] : null;\r\n\t\t\tpointAfter = i < pointsLen - 1 ? pointsWithTangents[i + 1] : null;\r\n\t\t\tif (pointAfter && !pointAfter.model.skip) {\r\n\t\t\t\tvar slopeDeltaX = (pointAfter.model.x - pointCurrent.model.x);\r\n\r\n\t\t\t\t// In the case of two points that appear at the same x pixel, slopeDeltaX is 0\r\n\t\t\t\tpointCurrent.deltaK = slopeDeltaX !== 0 ? (pointAfter.model.y - pointCurrent.model.y) / slopeDeltaX : 0;\r\n\t\t\t}\r\n\r\n\t\t\tif (!pointBefore || pointBefore.model.skip) {\r\n\t\t\t\tpointCurrent.mK = pointCurrent.deltaK;\r\n\t\t\t} else if (!pointAfter || pointAfter.model.skip) {\r\n\t\t\t\tpointCurrent.mK = pointBefore.deltaK;\r\n\t\t\t} else if (this.sign(pointBefore.deltaK) !== this.sign(pointCurrent.deltaK)) {\r\n\t\t\t\tpointCurrent.mK = 0;\r\n\t\t\t} else {\r\n\t\t\t\tpointCurrent.mK = (pointBefore.deltaK + pointCurrent.deltaK) / 2;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Adjust tangents to ensure monotonic properties\r\n\t\tvar alphaK, betaK, tauK, squaredMagnitude;\r\n\t\tfor (i = 0; i < pointsLen - 1; ++i) {\r\n\t\t\tpointCurrent = pointsWithTangents[i];\r\n\t\t\tpointAfter = pointsWithTangents[i + 1];\r\n\t\t\tif (pointCurrent.model.skip || pointAfter.model.skip) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tif (helpers$1.almostEquals(pointCurrent.deltaK, 0, this.EPSILON)) {\r\n\t\t\t\tpointCurrent.mK = pointAfter.mK = 0;\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\talphaK = pointCurrent.mK / pointCurrent.deltaK;\r\n\t\t\tbetaK = pointAfter.mK / pointCurrent.deltaK;\r\n\t\t\tsquaredMagnitude = Math.pow(alphaK, 2) + Math.pow(betaK, 2);\r\n\t\t\tif (squaredMagnitude <= 9) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\ttauK = 3 / Math.sqrt(squaredMagnitude);\r\n\t\t\tpointCurrent.mK = alphaK * tauK * pointCurrent.deltaK;\r\n\t\t\tpointAfter.mK = betaK * tauK * pointCurrent.deltaK;\r\n\t\t}\r\n\r\n\t\t// Compute control points\r\n\t\tvar deltaX;\r\n\t\tfor (i = 0; i < pointsLen; ++i) {\r\n\t\t\tpointCurrent = pointsWithTangents[i];\r\n\t\t\tif (pointCurrent.model.skip) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tpointBefore = i > 0 ? pointsWithTangents[i - 1] : null;\r\n\t\t\tpointAfter = i < pointsLen - 1 ? pointsWithTangents[i + 1] : null;\r\n\t\t\tif (pointBefore && !pointBefore.model.skip) {\r\n\t\t\t\tdeltaX = (pointCurrent.model.x - pointBefore.model.x) / 3;\r\n\t\t\t\tpointCurrent.model.controlPointPreviousX = pointCurrent.model.x - deltaX;\r\n\t\t\t\tpointCurrent.model.controlPointPreviousY = pointCurrent.model.y - deltaX * pointCurrent.mK;\r\n\t\t\t}\r\n\t\t\tif (pointAfter && !pointAfter.model.skip) {\r\n\t\t\t\tdeltaX = (pointAfter.model.x - pointCurrent.model.x) / 3;\r\n\t\t\t\tpointCurrent.model.controlPointNextX = pointCurrent.model.x + deltaX;\r\n\t\t\t\tpointCurrent.model.controlPointNextY = pointCurrent.model.y + deltaX * pointCurrent.mK;\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\thelpers$1.nextItem = function(collection, index, loop) {\r\n\t\tif (loop) {\r\n\t\t\treturn index >= collection.length - 1 ? collection[0] : collection[index + 1];\r\n\t\t}\r\n\t\treturn index >= collection.length - 1 ? collection[collection.length - 1] : collection[index + 1];\r\n\t};\r\n\thelpers$1.previousItem = function(collection, index, loop) {\r\n\t\tif (loop) {\r\n\t\t\treturn index <= 0 ? collection[collection.length - 1] : collection[index - 1];\r\n\t\t}\r\n\t\treturn index <= 0 ? collection[0] : collection[index - 1];\r\n\t};\r\n\t// Implementation of the nice number algorithm used in determining where axis labels will go\r\n\thelpers$1.niceNum = function(range, round) {\r\n\t\tvar exponent = Math.floor(helpers$1.log10(range));\r\n\t\tvar fraction = range / Math.pow(10, exponent);\r\n\t\tvar niceFraction;\r\n\r\n\t\tif (round) {\r\n\t\t\tif (fraction < 1.5) {\r\n\t\t\t\tniceFraction = 1;\r\n\t\t\t} else if (fraction < 3) {\r\n\t\t\t\tniceFraction = 2;\r\n\t\t\t} else if (fraction < 7) {\r\n\t\t\t\tniceFraction = 5;\r\n\t\t\t} else {\r\n\t\t\t\tniceFraction = 10;\r\n\t\t\t}\r\n\t\t} else if (fraction <= 1.0) {\r\n\t\t\tniceFraction = 1;\r\n\t\t} else if (fraction <= 2) {\r\n\t\t\tniceFraction = 2;\r\n\t\t} else if (fraction <= 5) {\r\n\t\t\tniceFraction = 5;\r\n\t\t} else {\r\n\t\t\tniceFraction = 10;\r\n\t\t}\r\n\r\n\t\treturn niceFraction * Math.pow(10, exponent);\r\n\t};\r\n\t// Request animation polyfill - https://www.paulirish.com/2011/requestanimationframe-for-smart-animating/\r\n\thelpers$1.requestAnimFrame = (function() {\r\n\t\tif (typeof window === 'undefined') {\r\n\t\t\treturn function(callback) {\r\n\t\t\t\tcallback();\r\n\t\t\t};\r\n\t\t}\r\n\t\treturn window.requestAnimationFrame ||\r\n\t\t\twindow.webkitRequestAnimationFrame ||\r\n\t\t\twindow.mozRequestAnimationFrame ||\r\n\t\t\twindow.oRequestAnimationFrame ||\r\n\t\t\twindow.msRequestAnimationFrame ||\r\n\t\t\tfunction(callback) {\r\n\t\t\t\treturn window.setTimeout(callback, 1000 / 60);\r\n\t\t\t};\r\n\t}());\r\n\t// -- DOM methods\r\n\thelpers$1.getRelativePosition = function(evt, chart) {\r\n\t\tvar mouseX, mouseY;\r\n\t\tvar e = evt.originalEvent || evt;\r\n\t\tvar canvas = evt.target || evt.srcElement;\r\n\t\tvar boundingRect = canvas.getBoundingClientRect();\r\n\r\n\t\tvar touches = e.touches;\r\n\t\tif (touches && touches.length > 0) {\r\n\t\t\tmouseX = touches[0].clientX;\r\n\t\t\tmouseY = touches[0].clientY;\r\n\r\n\t\t} else {\r\n\t\t\tmouseX = e.clientX;\r\n\t\t\tmouseY = e.clientY;\r\n\t\t}\r\n\r\n\t\t// Scale mouse coordinates into canvas coordinates\r\n\t\t// by following the pattern laid out by 'jerryj' in the comments of\r\n\t\t// https://www.html5canvastutorials.com/advanced/html5-canvas-mouse-coordinates/\r\n\t\tvar paddingLeft = parseFloat(helpers$1.getStyle(canvas, 'padding-left'));\r\n\t\tvar paddingTop = parseFloat(helpers$1.getStyle(canvas, 'padding-top'));\r\n\t\tvar paddingRight = parseFloat(helpers$1.getStyle(canvas, 'padding-right'));\r\n\t\tvar paddingBottom = parseFloat(helpers$1.getStyle(canvas, 'padding-bottom'));\r\n\t\tvar width = boundingRect.right - boundingRect.left - paddingLeft - paddingRight;\r\n\t\tvar height = boundingRect.bottom - boundingRect.top - paddingTop - paddingBottom;\r\n\r\n\t\t// We divide by the current device pixel ratio, because the canvas is scaled up by that amount in each direction. However\r\n\t\t// the backend model is in unscaled coordinates. Since we are going to deal with our model coordinates, we go back here\r\n\t\tmouseX = Math.round((mouseX - boundingRect.left - paddingLeft) / (width) * canvas.width / chart.currentDevicePixelRatio);\r\n\t\tmouseY = Math.round((mouseY - boundingRect.top - paddingTop) / (height) * canvas.height / chart.currentDevicePixelRatio);\r\n\r\n\t\treturn {\r\n\t\t\tx: mouseX,\r\n\t\t\ty: mouseY\r\n\t\t};\r\n\r\n\t};\r\n\r\n\t// Private helper function to convert max-width/max-height values that may be percentages into a number\r\n\tfunction parseMaxStyle(styleValue, node, parentProperty) {\r\n\t\tvar valueInPixels;\r\n\t\tif (typeof styleValue === 'string') {\r\n\t\t\tvalueInPixels = parseInt(styleValue, 10);\r\n\r\n\t\t\tif (styleValue.indexOf('%') !== -1) {\r\n\t\t\t\t// percentage * size in dimension\r\n\t\t\t\tvalueInPixels = valueInPixels / 100 * node.parentNode[parentProperty];\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tvalueInPixels = styleValue;\r\n\t\t}\r\n\r\n\t\treturn valueInPixels;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns if the given value contains an effective constraint.\r\n\t * @private\r\n\t */\r\n\tfunction isConstrainedValue(value) {\r\n\t\treturn value !== undefined && value !== null && value !== 'none';\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the max width or height of the given DOM node in a cross-browser compatible fashion\r\n\t * @param {HTMLElement} domNode - the node to check the constraint on\r\n\t * @param {string} maxStyle - the style that defines the maximum for the direction we are using ('max-width' / 'max-height')\r\n\t * @param {string} percentageProperty - property of parent to use when calculating width as a percentage\r\n\t * @see {@link https://www.nathanaeljones.com/blog/2013/reading-max-width-cross-browser}\r\n\t */\r\n\tfunction getConstraintDimension(domNode, maxStyle, percentageProperty) {\r\n\t\tvar view = document.defaultView;\r\n\t\tvar parentNode = helpers$1._getParentNode(domNode);\r\n\t\tvar constrainedNode = view.getComputedStyle(domNode)[maxStyle];\r\n\t\tvar constrainedContainer = view.getComputedStyle(parentNode)[maxStyle];\r\n\t\tvar hasCNode = isConstrainedValue(constrainedNode);\r\n\t\tvar hasCContainer = isConstrainedValue(constrainedContainer);\r\n\t\tvar infinity = Number.POSITIVE_INFINITY;\r\n\r\n\t\tif (hasCNode || hasCContainer) {\r\n\t\t\treturn Math.min(\r\n\t\t\t\thasCNode ? parseMaxStyle(constrainedNode, domNode, percentageProperty) : infinity,\r\n\t\t\t\thasCContainer ? parseMaxStyle(constrainedContainer, parentNode, percentageProperty) : infinity);\r\n\t\t}\r\n\r\n\t\treturn 'none';\r\n\t}\r\n\t// returns Number or undefined if no constraint\r\n\thelpers$1.getConstraintWidth = function(domNode) {\r\n\t\treturn getConstraintDimension(domNode, 'max-width', 'clientWidth');\r\n\t};\r\n\t// returns Number or undefined if no constraint\r\n\thelpers$1.getConstraintHeight = function(domNode) {\r\n\t\treturn getConstraintDimension(domNode, 'max-height', 'clientHeight');\r\n\t};\r\n\t/**\r\n\t * @private\r\n \t */\r\n\thelpers$1._calculatePadding = function(container, padding, parentDimension) {\r\n\t\tpadding = helpers$1.getStyle(container, padding);\r\n\r\n\t\treturn padding.indexOf('%') > -1 ? parentDimension * parseInt(padding, 10) / 100 : parseInt(padding, 10);\r\n\t};\r\n\t/**\r\n\t * @private\r\n\t */\r\n\thelpers$1._getParentNode = function(domNode) {\r\n\t\tvar parent = domNode.parentNode;\r\n\t\tif (parent && parent.toString() === '[object ShadowRoot]') {\r\n\t\t\tparent = parent.host;\r\n\t\t}\r\n\t\treturn parent;\r\n\t};\r\n\thelpers$1.getMaximumWidth = function(domNode) {\r\n\t\tvar container = helpers$1._getParentNode(domNode);\r\n\t\tif (!container) {\r\n\t\t\treturn domNode.clientWidth;\r\n\t\t}\r\n\r\n\t\tvar clientWidth = container.clientWidth;\r\n\t\tvar paddingLeft = helpers$1._calculatePadding(container, 'padding-left', clientWidth);\r\n\t\tvar paddingRight = helpers$1._calculatePadding(container, 'padding-right', clientWidth);\r\n\r\n\t\tvar w = clientWidth - paddingLeft - paddingRight;\r\n\t\tvar cw = helpers$1.getConstraintWidth(domNode);\r\n\t\treturn isNaN(cw) ? w : Math.min(w, cw);\r\n\t};\r\n\thelpers$1.getMaximumHeight = function(domNode) {\r\n\t\tvar container = helpers$1._getParentNode(domNode);\r\n\t\tif (!container) {\r\n\t\t\treturn domNode.clientHeight;\r\n\t\t}\r\n\r\n\t\tvar clientHeight = container.clientHeight;\r\n\t\tvar paddingTop = helpers$1._calculatePadding(container, 'padding-top', clientHeight);\r\n\t\tvar paddingBottom = helpers$1._calculatePadding(container, 'padding-bottom', clientHeight);\r\n\r\n\t\tvar h = clientHeight - paddingTop - paddingBottom;\r\n\t\tvar ch = helpers$1.getConstraintHeight(domNode);\r\n\t\treturn isNaN(ch) ? h : Math.min(h, ch);\r\n\t};\r\n\thelpers$1.getStyle = function(el, property) {\r\n\t\treturn el.currentStyle ?\r\n\t\t\tel.currentStyle[property] :\r\n\t\t\tdocument.defaultView.getComputedStyle(el, null).getPropertyValue(property);\r\n\t};\r\n\thelpers$1.retinaScale = function(chart, forceRatio) {\r\n\t\tvar pixelRatio = chart.currentDevicePixelRatio = forceRatio || (typeof window !== 'undefined' && window.devicePixelRatio) || 1;\r\n\t\tif (pixelRatio === 1) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar canvas = chart.canvas;\r\n\t\tvar height = chart.height;\r\n\t\tvar width = chart.width;\r\n\r\n\t\tcanvas.height = height * pixelRatio;\r\n\t\tcanvas.width = width * pixelRatio;\r\n\t\tchart.ctx.scale(pixelRatio, pixelRatio);\r\n\r\n\t\t// If no style has been set on the canvas, the render size is used as display size,\r\n\t\t// making the chart visually bigger, so let's enforce it to the \"correct\" values.\r\n\t\t// See https://github.com/chartjs/Chart.js/issues/3575\r\n\t\tif (!canvas.style.height && !canvas.style.width) {\r\n\t\t\tcanvas.style.height = height + 'px';\r\n\t\t\tcanvas.style.width = width + 'px';\r\n\t\t}\r\n\t};\r\n\t// -- Canvas methods\r\n\thelpers$1.fontString = function(pixelSize, fontStyle, fontFamily) {\r\n\t\treturn fontStyle + ' ' + pixelSize + 'px ' + fontFamily;\r\n\t};\r\n\thelpers$1.longestText = function(ctx, font, arrayOfThings, cache) {\r\n\t\tcache = cache || {};\r\n\t\tvar data = cache.data = cache.data || {};\r\n\t\tvar gc = cache.garbageCollect = cache.garbageCollect || [];\r\n\r\n\t\tif (cache.font !== font) {\r\n\t\t\tdata = cache.data = {};\r\n\t\t\tgc = cache.garbageCollect = [];\r\n\t\t\tcache.font = font;\r\n\t\t}\r\n\r\n\t\tctx.font = font;\r\n\t\tvar longest = 0;\r\n\t\tvar ilen = arrayOfThings.length;\r\n\t\tvar i, j, jlen, thing, nestedThing;\r\n\t\tfor (i = 0; i < ilen; i++) {\r\n\t\t\tthing = arrayOfThings[i];\r\n\r\n\t\t\t// Undefined strings and arrays should not be measured\r\n\t\t\tif (thing !== undefined && thing !== null && helpers$1.isArray(thing) !== true) {\r\n\t\t\t\tlongest = helpers$1.measureText(ctx, data, gc, longest, thing);\r\n\t\t\t} else if (helpers$1.isArray(thing)) {\r\n\t\t\t\t// if it is an array lets measure each element\r\n\t\t\t\t// to do maybe simplify this function a bit so we can do this more recursively?\r\n\t\t\t\tfor (j = 0, jlen = thing.length; j < jlen; j++) {\r\n\t\t\t\t\tnestedThing = thing[j];\r\n\t\t\t\t\t// Undefined strings and arrays should not be measured\r\n\t\t\t\t\tif (nestedThing !== undefined && nestedThing !== null && !helpers$1.isArray(nestedThing)) {\r\n\t\t\t\t\t\tlongest = helpers$1.measureText(ctx, data, gc, longest, nestedThing);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar gcLen = gc.length / 2;\r\n\t\tif (gcLen > arrayOfThings.length) {\r\n\t\t\tfor (i = 0; i < gcLen; i++) {\r\n\t\t\t\tdelete data[gc[i]];\r\n\t\t\t}\r\n\t\t\tgc.splice(0, gcLen);\r\n\t\t}\r\n\t\treturn longest;\r\n\t};\r\n\thelpers$1.measureText = function(ctx, data, gc, longest, string) {\r\n\t\tvar textWidth = data[string];\r\n\t\tif (!textWidth) {\r\n\t\t\ttextWidth = data[string] = ctx.measureText(string).width;\r\n\t\t\tgc.push(string);\r\n\t\t}\r\n\t\tif (textWidth > longest) {\r\n\t\t\tlongest = textWidth;\r\n\t\t}\r\n\t\treturn longest;\r\n\t};\r\n\r\n\t/**\r\n\t * @deprecated\r\n\t */\r\n\thelpers$1.numberOfLabelLines = function(arrayOfThings) {\r\n\t\tvar numberOfLines = 1;\r\n\t\thelpers$1.each(arrayOfThings, function(thing) {\r\n\t\t\tif (helpers$1.isArray(thing)) {\r\n\t\t\t\tif (thing.length > numberOfLines) {\r\n\t\t\t\t\tnumberOfLines = thing.length;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t\treturn numberOfLines;\r\n\t};\r\n\r\n\thelpers$1.color = !chartjsColor ?\r\n\t\tfunction(value) {\r\n\t\t\tconsole.error('Color.js not found!');\r\n\t\t\treturn value;\r\n\t\t} :\r\n\t\tfunction(value) {\r\n\t\t\t/* global CanvasGradient */\r\n\t\t\tif (value instanceof CanvasGradient) {\r\n\t\t\t\tvalue = core_defaults.global.defaultColor;\r\n\t\t\t}\r\n\r\n\t\t\treturn chartjsColor(value);\r\n\t\t};\r\n\r\n\thelpers$1.getHoverColor = function(colorValue) {\r\n\t\t/* global CanvasPattern */\r\n\t\treturn (colorValue instanceof CanvasPattern || colorValue instanceof CanvasGradient) ?\r\n\t\t\tcolorValue :\r\n\t\t\thelpers$1.color(colorValue).saturate(0.5).darken(0.1).rgbString();\r\n\t};\r\n};\n\nfunction abstract() {\r\n\tthrow new Error(\r\n\t\t'This method is not implemented: either no adapter can ' +\r\n\t\t'be found or an incomplete integration was provided.'\r\n\t);\r\n}\r\n\r\n/**\r\n * Date adapter (current used by the time scale)\r\n * @namespace Chart._adapters._date\r\n * @memberof Chart._adapters\r\n * @private\r\n */\r\n\r\n/**\r\n * Currently supported unit string values.\r\n * @typedef {('millisecond'|'second'|'minute'|'hour'|'day'|'week'|'month'|'quarter'|'year')}\r\n * @memberof Chart._adapters._date\r\n * @name Unit\r\n */\r\n\r\n/**\r\n * @class\r\n */\r\nfunction DateAdapter(options) {\r\n\tthis.options = options || {};\r\n}\r\n\r\nhelpers$1.extend(DateAdapter.prototype, /** @lends DateAdapter */ {\r\n\t/**\r\n\t * Returns a map of time formats for the supported formatting units defined\r\n\t * in Unit as well as 'datetime' representing a detailed date/time string.\r\n\t * @returns {{string: string}}\r\n\t */\r\n\tformats: abstract,\r\n\r\n\t/**\r\n\t * Parses the given `value` and return the associated timestamp.\r\n\t * @param {any} value - the value to parse (usually comes from the data)\r\n\t * @param {string} [format] - the expected data format\r\n\t * @returns {(number|null)}\r\n\t * @function\r\n\t */\r\n\tparse: abstract,\r\n\r\n\t/**\r\n\t * Returns the formatted date in the specified `format` for a given `timestamp`.\r\n\t * @param {number} timestamp - the timestamp to format\r\n\t * @param {string} format - the date/time token\r\n\t * @return {string}\r\n\t * @function\r\n\t */\r\n\tformat: abstract,\r\n\r\n\t/**\r\n\t * Adds the specified `amount` of `unit` to the given `timestamp`.\r\n\t * @param {number} timestamp - the input timestamp\r\n\t * @param {number} amount - the amount to add\r\n\t * @param {Unit} unit - the unit as string\r\n\t * @return {number}\r\n\t * @function\r\n\t */\r\n\tadd: abstract,\r\n\r\n\t/**\r\n\t * Returns the number of `unit` between the given timestamps.\r\n\t * @param {number} max - the input timestamp (reference)\r\n\t * @param {number} min - the timestamp to substract\r\n\t * @param {Unit} unit - the unit as string\r\n\t * @return {number}\r\n\t * @function\r\n\t */\r\n\tdiff: abstract,\r\n\r\n\t/**\r\n\t * Returns start of `unit` for the given `timestamp`.\r\n\t * @param {number} timestamp - the input timestamp\r\n\t * @param {Unit} unit - the unit as string\r\n\t * @param {number} [weekday] - the ISO day of the week with 1 being Monday\r\n\t * and 7 being Sunday (only needed if param *unit* is `isoWeek`).\r\n\t * @function\r\n\t */\r\n\tstartOf: abstract,\r\n\r\n\t/**\r\n\t * Returns end of `unit` for the given `timestamp`.\r\n\t * @param {number} timestamp - the input timestamp\r\n\t * @param {Unit} unit - the unit as string\r\n\t * @function\r\n\t */\r\n\tendOf: abstract,\r\n\r\n\t// DEPRECATIONS\r\n\r\n\t/**\r\n\t * Provided for backward compatibility for scale.getValueForPixel(),\r\n\t * this method should be overridden only by the moment adapter.\r\n\t * @deprecated since version 2.8.0\r\n\t * @todo remove at version 3\r\n\t * @private\r\n\t */\r\n\t_create: function(value) {\r\n\t\treturn value;\r\n\t}\r\n});\r\n\r\nDateAdapter.override = function(members) {\r\n\thelpers$1.extend(DateAdapter.prototype, members);\r\n};\r\n\r\nvar _date = DateAdapter;\n\nvar core_adapters = {\n\t_date: _date\n};\n\n/**\r\n * Namespace to hold static tick generation functions\r\n * @namespace Chart.Ticks\r\n */\r\nvar core_ticks = {\r\n\t/**\r\n\t * Namespace to hold formatters for different types of ticks\r\n\t * @namespace Chart.Ticks.formatters\r\n\t */\r\n\tformatters: {\r\n\t\t/**\r\n\t\t * Formatter for value labels\r\n\t\t * @method Chart.Ticks.formatters.values\r\n\t\t * @param value the value to display\r\n\t\t * @return {string|string[]} the label to display\r\n\t\t */\r\n\t\tvalues: function(value) {\r\n\t\t\treturn helpers$1.isArray(value) ? value : '' + value;\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Formatter for linear numeric ticks\r\n\t\t * @method Chart.Ticks.formatters.linear\r\n\t\t * @param tickValue {number} the value to be formatted\r\n\t\t * @param index {number} the position of the tickValue parameter in the ticks array\r\n\t\t * @param ticks {number[]} the list of ticks being converted\r\n\t\t * @return {string} string representation of the tickValue parameter\r\n\t\t */\r\n\t\tlinear: function(tickValue, index, ticks) {\r\n\t\t\t// If we have lots of ticks, don't use the ones\r\n\t\t\tvar delta = ticks.length > 3 ? ticks[2] - ticks[1] : ticks[1] - ticks[0];\r\n\r\n\t\t\t// If we have a number like 2.5 as the delta, figure out how many decimal places we need\r\n\t\t\tif (Math.abs(delta) > 1) {\r\n\t\t\t\tif (tickValue !== Math.floor(tickValue)) {\r\n\t\t\t\t\t// not an integer\r\n\t\t\t\t\tdelta = tickValue - Math.floor(tickValue);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tvar logDelta = helpers$1.log10(Math.abs(delta));\r\n\t\t\tvar tickString = '';\r\n\r\n\t\t\tif (tickValue !== 0) {\r\n\t\t\t\tvar maxTick = Math.max(Math.abs(ticks[0]), Math.abs(ticks[ticks.length - 1]));\r\n\t\t\t\tif (maxTick < 1e-4) { // all ticks are small numbers; use scientific notation\r\n\t\t\t\t\tvar logTick = helpers$1.log10(Math.abs(tickValue));\r\n\t\t\t\t\tvar numExponential = Math.floor(logTick) - Math.floor(logDelta);\r\n\t\t\t\t\tnumExponential = Math.max(Math.min(numExponential, 20), 0);\r\n\t\t\t\t\ttickString = tickValue.toExponential(numExponential);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tvar numDecimal = -1 * Math.floor(logDelta);\r\n\t\t\t\t\tnumDecimal = Math.max(Math.min(numDecimal, 20), 0); // toFixed has a max of 20 decimal places\r\n\t\t\t\t\ttickString = tickValue.toFixed(numDecimal);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\ttickString = '0'; // never show decimal places for 0\r\n\t\t\t}\r\n\r\n\t\t\treturn tickString;\r\n\t\t},\r\n\r\n\t\tlogarithmic: function(tickValue, index, ticks) {\r\n\t\t\tvar remain = tickValue / (Math.pow(10, Math.floor(helpers$1.log10(tickValue))));\r\n\r\n\t\t\tif (tickValue === 0) {\r\n\t\t\t\treturn '0';\r\n\t\t\t} else if (remain === 1 || remain === 2 || remain === 5 || index === 0 || index === ticks.length - 1) {\r\n\t\t\t\treturn tickValue.toExponential();\r\n\t\t\t}\r\n\t\t\treturn '';\r\n\t\t}\r\n\t}\r\n};\n\nvar isArray = helpers$1.isArray;\r\nvar isNullOrUndef = helpers$1.isNullOrUndef;\r\nvar valueOrDefault$a = helpers$1.valueOrDefault;\r\nvar valueAtIndexOrDefault = helpers$1.valueAtIndexOrDefault;\r\n\r\ncore_defaults._set('scale', {\r\n\tdisplay: true,\r\n\tposition: 'left',\r\n\toffset: false,\r\n\r\n\t// grid line settings\r\n\tgridLines: {\r\n\t\tdisplay: true,\r\n\t\tcolor: 'rgba(0,0,0,0.1)',\r\n\t\tlineWidth: 1,\r\n\t\tdrawBorder: true,\r\n\t\tdrawOnChartArea: true,\r\n\t\tdrawTicks: true,\r\n\t\ttickMarkLength: 10,\r\n\t\tzeroLineWidth: 1,\r\n\t\tzeroLineColor: 'rgba(0,0,0,0.25)',\r\n\t\tzeroLineBorderDash: [],\r\n\t\tzeroLineBorderDashOffset: 0.0,\r\n\t\toffsetGridLines: false,\r\n\t\tborderDash: [],\r\n\t\tborderDashOffset: 0.0\r\n\t},\r\n\r\n\t// scale label\r\n\tscaleLabel: {\r\n\t\t// display property\r\n\t\tdisplay: false,\r\n\r\n\t\t// actual label\r\n\t\tlabelString: '',\r\n\r\n\t\t// top/bottom padding\r\n\t\tpadding: {\r\n\t\t\ttop: 4,\r\n\t\t\tbottom: 4\r\n\t\t}\r\n\t},\r\n\r\n\t// label settings\r\n\tticks: {\r\n\t\tbeginAtZero: false,\r\n\t\tminRotation: 0,\r\n\t\tmaxRotation: 50,\r\n\t\tmirror: false,\r\n\t\tpadding: 0,\r\n\t\treverse: false,\r\n\t\tdisplay: true,\r\n\t\tautoSkip: true,\r\n\t\tautoSkipPadding: 0,\r\n\t\tlabelOffset: 0,\r\n\t\t// We pass through arrays to be rendered as multiline labels, we convert Others to strings here.\r\n\t\tcallback: core_ticks.formatters.values,\r\n\t\tminor: {},\r\n\t\tmajor: {}\r\n\t}\r\n});\r\n\r\n/** Returns a new array containing numItems from arr */\r\nfunction sample(arr, numItems) {\r\n\tvar result = [];\r\n\tvar increment = arr.length / numItems;\r\n\tvar i = 0;\r\n\tvar len = arr.length;\r\n\r\n\tfor (; i < len; i += increment) {\r\n\t\tresult.push(arr[Math.floor(i)]);\r\n\t}\r\n\treturn result;\r\n}\r\n\r\nfunction getPixelForGridLine(scale, index, offsetGridLines) {\r\n\tvar length = scale.getTicks().length;\r\n\tvar validIndex = Math.min(index, length - 1);\r\n\tvar lineValue = scale.getPixelForTick(validIndex);\r\n\tvar start = scale._startPixel;\r\n\tvar end = scale._endPixel;\r\n\tvar epsilon = 1e-6; // 1e-6 is margin in pixels for accumulated error.\r\n\tvar offset;\r\n\r\n\tif (offsetGridLines) {\r\n\t\tif (length === 1) {\r\n\t\t\toffset = Math.max(lineValue - start, end - lineValue);\r\n\t\t} else if (index === 0) {\r\n\t\t\toffset = (scale.getPixelForTick(1) - lineValue) / 2;\r\n\t\t} else {\r\n\t\t\toffset = (lineValue - scale.getPixelForTick(validIndex - 1)) / 2;\r\n\t\t}\r\n\t\tlineValue += validIndex < index ? offset : -offset;\r\n\r\n\t\t// Return undefined if the pixel is out of the range\r\n\t\tif (lineValue < start - epsilon || lineValue > end + epsilon) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t}\r\n\treturn lineValue;\r\n}\r\n\r\nfunction garbageCollect(caches, length) {\r\n\thelpers$1.each(caches, function(cache) {\r\n\t\tvar gc = cache.gc;\r\n\t\tvar gcLen = gc.length / 2;\r\n\t\tvar i;\r\n\t\tif (gcLen > length) {\r\n\t\t\tfor (i = 0; i < gcLen; ++i) {\r\n\t\t\t\tdelete cache.data[gc[i]];\r\n\t\t\t}\r\n\t\t\tgc.splice(0, gcLen);\r\n\t\t}\r\n\t});\r\n}\r\n\r\n/**\r\n * Returns {width, height, offset} objects for the first, last, widest, highest tick\r\n * labels where offset indicates the anchor point offset from the top in pixels.\r\n */\r\nfunction computeLabelSizes(ctx, tickFonts, ticks, caches) {\r\n\tvar length = ticks.length;\r\n\tvar widths = [];\r\n\tvar heights = [];\r\n\tvar offsets = [];\r\n\tvar widestLabelSize = 0;\r\n\tvar highestLabelSize = 0;\r\n\tvar i, j, jlen, label, tickFont, fontString, cache, lineHeight, width, height, nestedLabel, widest, highest;\r\n\r\n\tfor (i = 0; i < length; ++i) {\r\n\t\tlabel = ticks[i].label;\r\n\t\ttickFont = ticks[i].major ? tickFonts.major : tickFonts.minor;\r\n\t\tctx.font = fontString = tickFont.string;\r\n\t\tcache = caches[fontString] = caches[fontString] || {data: {}, gc: []};\r\n\t\tlineHeight = tickFont.lineHeight;\r\n\t\twidth = height = 0;\r\n\t\t// Undefined labels and arrays should not be measured\r\n\t\tif (!isNullOrUndef(label) && !isArray(label)) {\r\n\t\t\twidth = helpers$1.measureText(ctx, cache.data, cache.gc, width, label);\r\n\t\t\theight = lineHeight;\r\n\t\t} else if (isArray(label)) {\r\n\t\t\t// if it is an array let's measure each element\r\n\t\t\tfor (j = 0, jlen = label.length; j < jlen; ++j) {\r\n\t\t\t\tnestedLabel = label[j];\r\n\t\t\t\t// Undefined labels and arrays should not be measured\r\n\t\t\t\tif (!isNullOrUndef(nestedLabel) && !isArray(nestedLabel)) {\r\n\t\t\t\t\twidth = helpers$1.measureText(ctx, cache.data, cache.gc, width, nestedLabel);\r\n\t\t\t\t\theight += lineHeight;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\twidths.push(width);\r\n\t\theights.push(height);\r\n\t\toffsets.push(lineHeight / 2);\r\n\t\twidestLabelSize = Math.max(width, widestLabelSize);\r\n\t\thighestLabelSize = Math.max(height, highestLabelSize);\r\n\t}\r\n\tgarbageCollect(caches, length);\r\n\r\n\twidest = widths.indexOf(widestLabelSize);\r\n\thighest = heights.indexOf(highestLabelSize);\r\n\r\n\tfunction valueAt(idx) {\r\n\t\treturn {\r\n\t\t\twidth: widths[idx] || 0,\r\n\t\t\theight: heights[idx] || 0,\r\n\t\t\toffset: offsets[idx] || 0\r\n\t\t};\r\n\t}\r\n\r\n\treturn {\r\n\t\tfirst: valueAt(0),\r\n\t\tlast: valueAt(length - 1),\r\n\t\twidest: valueAt(widest),\r\n\t\thighest: valueAt(highest)\r\n\t};\r\n}\r\n\r\nfunction getTickMarkLength(options) {\r\n\treturn options.drawTicks ? options.tickMarkLength : 0;\r\n}\r\n\r\nfunction getScaleLabelHeight(options) {\r\n\tvar font, padding;\r\n\r\n\tif (!options.display) {\r\n\t\treturn 0;\r\n\t}\r\n\r\n\tfont = helpers$1.options._parseFont(options);\r\n\tpadding = helpers$1.options.toPadding(options.padding);\r\n\r\n\treturn font.lineHeight + padding.height;\r\n}\r\n\r\nfunction parseFontOptions(options, nestedOpts) {\r\n\treturn helpers$1.extend(helpers$1.options._parseFont({\r\n\t\tfontFamily: valueOrDefault$a(nestedOpts.fontFamily, options.fontFamily),\r\n\t\tfontSize: valueOrDefault$a(nestedOpts.fontSize, options.fontSize),\r\n\t\tfontStyle: valueOrDefault$a(nestedOpts.fontStyle, options.fontStyle),\r\n\t\tlineHeight: valueOrDefault$a(nestedOpts.lineHeight, options.lineHeight)\r\n\t}), {\r\n\t\tcolor: helpers$1.options.resolve([nestedOpts.fontColor, options.fontColor, core_defaults.global.defaultFontColor])\r\n\t});\r\n}\r\n\r\nfunction parseTickFontOptions(options) {\r\n\tvar minor = parseFontOptions(options, options.minor);\r\n\tvar major = options.major.enabled ? parseFontOptions(options, options.major) : minor;\r\n\r\n\treturn {minor: minor, major: major};\r\n}\r\n\r\nfunction nonSkipped(ticksToFilter) {\r\n\tvar filtered = [];\r\n\tvar item, index, len;\r\n\tfor (index = 0, len = ticksToFilter.length; index < len; ++index) {\r\n\t\titem = ticksToFilter[index];\r\n\t\tif (typeof item._index !== 'undefined') {\r\n\t\t\tfiltered.push(item);\r\n\t\t}\r\n\t}\r\n\treturn filtered;\r\n}\r\n\r\nfunction getEvenSpacing(arr) {\r\n\tvar len = arr.length;\r\n\tvar i, diff;\r\n\r\n\tif (len < 2) {\r\n\t\treturn false;\r\n\t}\r\n\r\n\tfor (diff = arr[0], i = 1; i < len; ++i) {\r\n\t\tif (arr[i] - arr[i - 1] !== diff) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\treturn diff;\r\n}\r\n\r\nfunction calculateSpacing(majorIndices, ticks, axisLength, ticksLimit) {\r\n\tvar evenMajorSpacing = getEvenSpacing(majorIndices);\r\n\tvar spacing = (ticks.length - 1) / ticksLimit;\r\n\tvar factors, factor, i, ilen;\r\n\r\n\t// If the major ticks are evenly spaced apart, place the minor ticks\r\n\t// so that they divide the major ticks into even chunks\r\n\tif (!evenMajorSpacing) {\r\n\t\treturn Math.max(spacing, 1);\r\n\t}\r\n\r\n\tfactors = helpers$1.math._factorize(evenMajorSpacing);\r\n\tfor (i = 0, ilen = factors.length - 1; i < ilen; i++) {\r\n\t\tfactor = factors[i];\r\n\t\tif (factor > spacing) {\r\n\t\t\treturn factor;\r\n\t\t}\r\n\t}\r\n\treturn Math.max(spacing, 1);\r\n}\r\n\r\nfunction getMajorIndices(ticks) {\r\n\tvar result = [];\r\n\tvar i, ilen;\r\n\tfor (i = 0, ilen = ticks.length; i < ilen; i++) {\r\n\t\tif (ticks[i].major) {\r\n\t\t\tresult.push(i);\r\n\t\t}\r\n\t}\r\n\treturn result;\r\n}\r\n\r\nfunction skipMajors(ticks, majorIndices, spacing) {\r\n\tvar count = 0;\r\n\tvar next = majorIndices[0];\r\n\tvar i, tick;\r\n\r\n\tspacing = Math.ceil(spacing);\r\n\tfor (i = 0; i < ticks.length; i++) {\r\n\t\ttick = ticks[i];\r\n\t\tif (i === next) {\r\n\t\t\ttick._index = i;\r\n\t\t\tcount++;\r\n\t\t\tnext = majorIndices[count * spacing];\r\n\t\t} else {\r\n\t\t\tdelete tick.label;\r\n\t\t}\r\n\t}\r\n}\r\n\r\nfunction skip(ticks, spacing, majorStart, majorEnd) {\r\n\tvar start = valueOrDefault$a(majorStart, 0);\r\n\tvar end = Math.min(valueOrDefault$a(majorEnd, ticks.length), ticks.length);\r\n\tvar count = 0;\r\n\tvar length, i, tick, next;\r\n\r\n\tspacing = Math.ceil(spacing);\r\n\tif (majorEnd) {\r\n\t\tlength = majorEnd - majorStart;\r\n\t\tspacing = length / Math.floor(length / spacing);\r\n\t}\r\n\r\n\tnext = start;\r\n\r\n\twhile (next < 0) {\r\n\t\tcount++;\r\n\t\tnext = Math.round(start + count * spacing);\r\n\t}\r\n\r\n\tfor (i = Math.max(start, 0); i < end; i++) {\r\n\t\ttick = ticks[i];\r\n\t\tif (i === next) {\r\n\t\t\ttick._index = i;\r\n\t\t\tcount++;\r\n\t\t\tnext = Math.round(start + count * spacing);\r\n\t\t} else {\r\n\t\t\tdelete tick.label;\r\n\t\t}\r\n\t}\r\n}\r\n\r\nvar Scale = core_element.extend({\r\n\r\n\tzeroLineIndex: 0,\r\n\r\n\t/**\r\n\t * Get the padding needed for the scale\r\n\t * @method getPadding\r\n\t * @private\r\n\t * @returns {Padding} the necessary padding\r\n\t */\r\n\tgetPadding: function() {\r\n\t\tvar me = this;\r\n\t\treturn {\r\n\t\t\tleft: me.paddingLeft || 0,\r\n\t\t\ttop: me.paddingTop || 0,\r\n\t\t\tright: me.paddingRight || 0,\r\n\t\t\tbottom: me.paddingBottom || 0\r\n\t\t};\r\n\t},\r\n\r\n\t/**\r\n\t * Returns the scale tick objects ({label, major})\r\n\t * @since 2.7\r\n\t */\r\n\tgetTicks: function() {\r\n\t\treturn this._ticks;\r\n\t},\r\n\r\n\t/**\r\n\t* @private\r\n\t*/\r\n\t_getLabels: function() {\r\n\t\tvar data = this.chart.data;\r\n\t\treturn this.options.labels || (this.isHorizontal() ? data.xLabels : data.yLabels) || data.labels || [];\r\n\t},\r\n\r\n\t// These methods are ordered by lifecyle. Utilities then follow.\r\n\t// Any function defined here is inherited by all scale types.\r\n\t// Any function can be extended by the scale type\r\n\r\n\t/**\r\n\t * Provided for backward compatibility, not available anymore\r\n\t * @function Chart.Scale.mergeTicksOptions\r\n\t * @deprecated since version 2.8.0\r\n\t * @todo remove at version 3\r\n\t */\r\n\tmergeTicksOptions: function() {\r\n\t\t// noop\r\n\t},\r\n\r\n\tbeforeUpdate: function() {\r\n\t\thelpers$1.callback(this.options.beforeUpdate, [this]);\r\n\t},\r\n\r\n\t/**\r\n\t * @param {number} maxWidth - the max width in pixels\r\n\t * @param {number} maxHeight - the max height in pixels\r\n\t * @param {object} margins - the space between the edge of the other scales and edge of the chart\r\n\t *   This space comes from two sources:\r\n\t *     - padding - space that's required to show the labels at the edges of the scale\r\n\t *     - thickness of scales or legends in another orientation\r\n\t */\r\n\tupdate: function(maxWidth, maxHeight, margins) {\r\n\t\tvar me = this;\r\n\t\tvar tickOpts = me.options.ticks;\r\n\t\tvar sampleSize = tickOpts.sampleSize;\r\n\t\tvar i, ilen, labels, ticks, samplingEnabled;\r\n\r\n\t\t// Update Lifecycle - Probably don't want to ever extend or overwrite this function ;)\r\n\t\tme.beforeUpdate();\r\n\r\n\t\t// Absorb the master measurements\r\n\t\tme.maxWidth = maxWidth;\r\n\t\tme.maxHeight = maxHeight;\r\n\t\tme.margins = helpers$1.extend({\r\n\t\t\tleft: 0,\r\n\t\t\tright: 0,\r\n\t\t\ttop: 0,\r\n\t\t\tbottom: 0\r\n\t\t}, margins);\r\n\r\n\t\tme._ticks = null;\r\n\t\tme.ticks = null;\r\n\t\tme._labelSizes = null;\r\n\t\tme._maxLabelLines = 0;\r\n\t\tme.longestLabelWidth = 0;\r\n\t\tme.longestTextCache = me.longestTextCache || {};\r\n\t\tme._gridLineItems = null;\r\n\t\tme._labelItems = null;\r\n\r\n\t\t// Dimensions\r\n\t\tme.beforeSetDimensions();\r\n\t\tme.setDimensions();\r\n\t\tme.afterSetDimensions();\r\n\r\n\t\t// Data min/max\r\n\t\tme.beforeDataLimits();\r\n\t\tme.determineDataLimits();\r\n\t\tme.afterDataLimits();\r\n\r\n\t\t// Ticks - `this.ticks` is now DEPRECATED!\r\n\t\t// Internal ticks are now stored as objects in the PRIVATE `this._ticks` member\r\n\t\t// and must not be accessed directly from outside this class. `this.ticks` being\r\n\t\t// around for long time and not marked as private, we can't change its structure\r\n\t\t// without unexpected breaking changes. If you need to access the scale ticks,\r\n\t\t// use scale.getTicks() instead.\r\n\r\n\t\tme.beforeBuildTicks();\r\n\r\n\t\t// New implementations should return an array of objects but for BACKWARD COMPAT,\r\n\t\t// we still support no return (`this.ticks` internally set by calling this method).\r\n\t\tticks = me.buildTicks() || [];\r\n\r\n\t\t// Allow modification of ticks in callback.\r\n\t\tticks = me.afterBuildTicks(ticks) || ticks;\r\n\r\n\t\t// Ensure ticks contains ticks in new tick format\r\n\t\tif ((!ticks || !ticks.length) && me.ticks) {\r\n\t\t\tticks = [];\r\n\t\t\tfor (i = 0, ilen = me.ticks.length; i < ilen; ++i) {\r\n\t\t\t\tticks.push({\r\n\t\t\t\t\tvalue: me.ticks[i],\r\n\t\t\t\t\tmajor: false\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tme._ticks = ticks;\r\n\r\n\t\t// Compute tick rotation and fit using a sampled subset of labels\r\n\t\t// We generally don't need to compute the size of every single label for determining scale size\r\n\t\tsamplingEnabled = sampleSize < ticks.length;\r\n\t\tlabels = me._convertTicksToLabels(samplingEnabled ? sample(ticks, sampleSize) : ticks);\r\n\r\n\t\t// _configure is called twice, once here, once from core.controller.updateLayout.\r\n\t\t// Here we haven't been positioned yet, but dimensions are correct.\r\n\t\t// Variables set in _configure are needed for calculateTickRotation, and\r\n\t\t// it's ok that coordinates are not correct there, only dimensions matter.\r\n\t\tme._configure();\r\n\r\n\t\t// Tick Rotation\r\n\t\tme.beforeCalculateTickRotation();\r\n\t\tme.calculateTickRotation();\r\n\t\tme.afterCalculateTickRotation();\r\n\r\n\t\tme.beforeFit();\r\n\t\tme.fit();\r\n\t\tme.afterFit();\r\n\r\n\t\t// Auto-skip\r\n\t\tme._ticksToDraw = tickOpts.display && (tickOpts.autoSkip || tickOpts.source === 'auto') ? me._autoSkip(ticks) : ticks;\r\n\r\n\t\tif (samplingEnabled) {\r\n\t\t\t// Generate labels using all non-skipped ticks\r\n\t\t\tlabels = me._convertTicksToLabels(me._ticksToDraw);\r\n\t\t}\r\n\r\n\t\tme.ticks = labels;   // BACKWARD COMPATIBILITY\r\n\r\n\t\t// IMPORTANT: after this point, we consider that `this.ticks` will NEVER change!\r\n\r\n\t\tme.afterUpdate();\r\n\r\n\t\t// TODO(v3): remove minSize as a public property and return value from all layout boxes. It is unused\r\n\t\t// make maxWidth and maxHeight private\r\n\t\treturn me.minSize;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_configure: function() {\r\n\t\tvar me = this;\r\n\t\tvar reversePixels = me.options.ticks.reverse;\r\n\t\tvar startPixel, endPixel;\r\n\r\n\t\tif (me.isHorizontal()) {\r\n\t\t\tstartPixel = me.left;\r\n\t\t\tendPixel = me.right;\r\n\t\t} else {\r\n\t\t\tstartPixel = me.top;\r\n\t\t\tendPixel = me.bottom;\r\n\t\t\t// by default vertical scales are from bottom to top, so pixels are reversed\r\n\t\t\treversePixels = !reversePixels;\r\n\t\t}\r\n\t\tme._startPixel = startPixel;\r\n\t\tme._endPixel = endPixel;\r\n\t\tme._reversePixels = reversePixels;\r\n\t\tme._length = endPixel - startPixel;\r\n\t},\r\n\r\n\tafterUpdate: function() {\r\n\t\thelpers$1.callback(this.options.afterUpdate, [this]);\r\n\t},\r\n\r\n\t//\r\n\r\n\tbeforeSetDimensions: function() {\r\n\t\thelpers$1.callback(this.options.beforeSetDimensions, [this]);\r\n\t},\r\n\tsetDimensions: function() {\r\n\t\tvar me = this;\r\n\t\t// Set the unconstrained dimension before label rotation\r\n\t\tif (me.isHorizontal()) {\r\n\t\t\t// Reset position before calculating rotation\r\n\t\t\tme.width = me.maxWidth;\r\n\t\t\tme.left = 0;\r\n\t\t\tme.right = me.width;\r\n\t\t} else {\r\n\t\t\tme.height = me.maxHeight;\r\n\r\n\t\t\t// Reset position before calculating rotation\r\n\t\t\tme.top = 0;\r\n\t\t\tme.bottom = me.height;\r\n\t\t}\r\n\r\n\t\t// Reset padding\r\n\t\tme.paddingLeft = 0;\r\n\t\tme.paddingTop = 0;\r\n\t\tme.paddingRight = 0;\r\n\t\tme.paddingBottom = 0;\r\n\t},\r\n\tafterSetDimensions: function() {\r\n\t\thelpers$1.callback(this.options.afterSetDimensions, [this]);\r\n\t},\r\n\r\n\t// Data limits\r\n\tbeforeDataLimits: function() {\r\n\t\thelpers$1.callback(this.options.beforeDataLimits, [this]);\r\n\t},\r\n\tdetermineDataLimits: helpers$1.noop,\r\n\tafterDataLimits: function() {\r\n\t\thelpers$1.callback(this.options.afterDataLimits, [this]);\r\n\t},\r\n\r\n\t//\r\n\tbeforeBuildTicks: function() {\r\n\t\thelpers$1.callback(this.options.beforeBuildTicks, [this]);\r\n\t},\r\n\tbuildTicks: helpers$1.noop,\r\n\tafterBuildTicks: function(ticks) {\r\n\t\tvar me = this;\r\n\t\t// ticks is empty for old axis implementations here\r\n\t\tif (isArray(ticks) && ticks.length) {\r\n\t\t\treturn helpers$1.callback(me.options.afterBuildTicks, [me, ticks]);\r\n\t\t}\r\n\t\t// Support old implementations (that modified `this.ticks` directly in buildTicks)\r\n\t\tme.ticks = helpers$1.callback(me.options.afterBuildTicks, [me, me.ticks]) || me.ticks;\r\n\t\treturn ticks;\r\n\t},\r\n\r\n\tbeforeTickToLabelConversion: function() {\r\n\t\thelpers$1.callback(this.options.beforeTickToLabelConversion, [this]);\r\n\t},\r\n\tconvertTicksToLabels: function() {\r\n\t\tvar me = this;\r\n\t\t// Convert ticks to strings\r\n\t\tvar tickOpts = me.options.ticks;\r\n\t\tme.ticks = me.ticks.map(tickOpts.userCallback || tickOpts.callback, this);\r\n\t},\r\n\tafterTickToLabelConversion: function() {\r\n\t\thelpers$1.callback(this.options.afterTickToLabelConversion, [this]);\r\n\t},\r\n\r\n\t//\r\n\r\n\tbeforeCalculateTickRotation: function() {\r\n\t\thelpers$1.callback(this.options.beforeCalculateTickRotation, [this]);\r\n\t},\r\n\tcalculateTickRotation: function() {\r\n\t\tvar me = this;\r\n\t\tvar options = me.options;\r\n\t\tvar tickOpts = options.ticks;\r\n\t\tvar numTicks = me.getTicks().length;\r\n\t\tvar minRotation = tickOpts.minRotation || 0;\r\n\t\tvar maxRotation = tickOpts.maxRotation;\r\n\t\tvar labelRotation = minRotation;\r\n\t\tvar labelSizes, maxLabelWidth, maxLabelHeight, maxWidth, tickWidth, maxHeight, maxLabelDiagonal;\r\n\r\n\t\tif (!me._isVisible() || !tickOpts.display || minRotation >= maxRotation || numTicks <= 1 || !me.isHorizontal()) {\r\n\t\t\tme.labelRotation = minRotation;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlabelSizes = me._getLabelSizes();\r\n\t\tmaxLabelWidth = labelSizes.widest.width;\r\n\t\tmaxLabelHeight = labelSizes.highest.height - labelSizes.highest.offset;\r\n\r\n\t\t// Estimate the width of each grid based on the canvas width, the maximum\r\n\t\t// label width and the number of tick intervals\r\n\t\tmaxWidth = Math.min(me.maxWidth, me.chart.width - maxLabelWidth);\r\n\t\ttickWidth = options.offset ? me.maxWidth / numTicks : maxWidth / (numTicks - 1);\r\n\r\n\t\t// Allow 3 pixels x2 padding either side for label readability\r\n\t\tif (maxLabelWidth + 6 > tickWidth) {\r\n\t\t\ttickWidth = maxWidth / (numTicks - (options.offset ? 0.5 : 1));\r\n\t\t\tmaxHeight = me.maxHeight - getTickMarkLength(options.gridLines)\r\n\t\t\t\t- tickOpts.padding - getScaleLabelHeight(options.scaleLabel);\r\n\t\t\tmaxLabelDiagonal = Math.sqrt(maxLabelWidth * maxLabelWidth + maxLabelHeight * maxLabelHeight);\r\n\t\t\tlabelRotation = helpers$1.toDegrees(Math.min(\r\n\t\t\t\tMath.asin(Math.min((labelSizes.highest.height + 6) / tickWidth, 1)),\r\n\t\t\t\tMath.asin(Math.min(maxHeight / maxLabelDiagonal, 1)) - Math.asin(maxLabelHeight / maxLabelDiagonal)\r\n\t\t\t));\r\n\t\t\tlabelRotation = Math.max(minRotation, Math.min(maxRotation, labelRotation));\r\n\t\t}\r\n\r\n\t\tme.labelRotation = labelRotation;\r\n\t},\r\n\tafterCalculateTickRotation: function() {\r\n\t\thelpers$1.callback(this.options.afterCalculateTickRotation, [this]);\r\n\t},\r\n\r\n\t//\r\n\r\n\tbeforeFit: function() {\r\n\t\thelpers$1.callback(this.options.beforeFit, [this]);\r\n\t},\r\n\tfit: function() {\r\n\t\tvar me = this;\r\n\t\t// Reset\r\n\t\tvar minSize = me.minSize = {\r\n\t\t\twidth: 0,\r\n\t\t\theight: 0\r\n\t\t};\r\n\r\n\t\tvar chart = me.chart;\r\n\t\tvar opts = me.options;\r\n\t\tvar tickOpts = opts.ticks;\r\n\t\tvar scaleLabelOpts = opts.scaleLabel;\r\n\t\tvar gridLineOpts = opts.gridLines;\r\n\t\tvar display = me._isVisible();\r\n\t\tvar isBottom = opts.position === 'bottom';\r\n\t\tvar isHorizontal = me.isHorizontal();\r\n\r\n\t\t// Width\r\n\t\tif (isHorizontal) {\r\n\t\t\tminSize.width = me.maxWidth;\r\n\t\t} else if (display) {\r\n\t\t\tminSize.width = getTickMarkLength(gridLineOpts) + getScaleLabelHeight(scaleLabelOpts);\r\n\t\t}\r\n\r\n\t\t// height\r\n\t\tif (!isHorizontal) {\r\n\t\t\tminSize.height = me.maxHeight; // fill all the height\r\n\t\t} else if (display) {\r\n\t\t\tminSize.height = getTickMarkLength(gridLineOpts) + getScaleLabelHeight(scaleLabelOpts);\r\n\t\t}\r\n\r\n\t\t// Don't bother fitting the ticks if we are not showing the labels\r\n\t\tif (tickOpts.display && display) {\r\n\t\t\tvar tickFonts = parseTickFontOptions(tickOpts);\r\n\t\t\tvar labelSizes = me._getLabelSizes();\r\n\t\t\tvar firstLabelSize = labelSizes.first;\r\n\t\t\tvar lastLabelSize = labelSizes.last;\r\n\t\t\tvar widestLabelSize = labelSizes.widest;\r\n\t\t\tvar highestLabelSize = labelSizes.highest;\r\n\t\t\tvar lineSpace = tickFonts.minor.lineHeight * 0.4;\r\n\t\t\tvar tickPadding = tickOpts.padding;\r\n\r\n\t\t\tif (isHorizontal) {\r\n\t\t\t\t// A horizontal axis is more constrained by the height.\r\n\t\t\t\tvar isRotated = me.labelRotation !== 0;\r\n\t\t\t\tvar angleRadians = helpers$1.toRadians(me.labelRotation);\r\n\t\t\t\tvar cosRotation = Math.cos(angleRadians);\r\n\t\t\t\tvar sinRotation = Math.sin(angleRadians);\r\n\r\n\t\t\t\tvar labelHeight = sinRotation * widestLabelSize.width\r\n\t\t\t\t\t+ cosRotation * (highestLabelSize.height - (isRotated ? highestLabelSize.offset : 0))\r\n\t\t\t\t\t+ (isRotated ? 0 : lineSpace); // padding\r\n\r\n\t\t\t\tminSize.height = Math.min(me.maxHeight, minSize.height + labelHeight + tickPadding);\r\n\r\n\t\t\t\tvar offsetLeft = me.getPixelForTick(0) - me.left;\r\n\t\t\t\tvar offsetRight = me.right - me.getPixelForTick(me.getTicks().length - 1);\r\n\t\t\t\tvar paddingLeft, paddingRight;\r\n\r\n\t\t\t\t// Ensure that our ticks are always inside the canvas. When rotated, ticks are right aligned\r\n\t\t\t\t// which means that the right padding is dominated by the font height\r\n\t\t\t\tif (isRotated) {\r\n\t\t\t\t\tpaddingLeft = isBottom ?\r\n\t\t\t\t\t\tcosRotation * firstLabelSize.width + sinRotation * firstLabelSize.offset :\r\n\t\t\t\t\t\tsinRotation * (firstLabelSize.height - firstLabelSize.offset);\r\n\t\t\t\t\tpaddingRight = isBottom ?\r\n\t\t\t\t\t\tsinRotation * (lastLabelSize.height - lastLabelSize.offset) :\r\n\t\t\t\t\t\tcosRotation * lastLabelSize.width + sinRotation * lastLabelSize.offset;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tpaddingLeft = firstLabelSize.width / 2;\r\n\t\t\t\t\tpaddingRight = lastLabelSize.width / 2;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Adjust padding taking into account changes in offsets\r\n\t\t\t\t// and add 3 px to move away from canvas edges\r\n\t\t\t\tme.paddingLeft = Math.max((paddingLeft - offsetLeft) * me.width / (me.width - offsetLeft), 0) + 3;\r\n\t\t\t\tme.paddingRight = Math.max((paddingRight - offsetRight) * me.width / (me.width - offsetRight), 0) + 3;\r\n\t\t\t} else {\r\n\t\t\t\t// A vertical axis is more constrained by the width. Labels are the\r\n\t\t\t\t// dominant factor here, so get that length first and account for padding\r\n\t\t\t\tvar labelWidth = tickOpts.mirror ? 0 :\r\n\t\t\t\t\t// use lineSpace for consistency with horizontal axis\r\n\t\t\t\t\t// tickPadding is not implemented for horizontal\r\n\t\t\t\t\twidestLabelSize.width + tickPadding + lineSpace;\r\n\r\n\t\t\t\tminSize.width = Math.min(me.maxWidth, minSize.width + labelWidth);\r\n\r\n\t\t\t\tme.paddingTop = firstLabelSize.height / 2;\r\n\t\t\t\tme.paddingBottom = lastLabelSize.height / 2;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tme.handleMargins();\r\n\r\n\t\tif (isHorizontal) {\r\n\t\t\tme.width = me._length = chart.width - me.margins.left - me.margins.right;\r\n\t\t\tme.height = minSize.height;\r\n\t\t} else {\r\n\t\t\tme.width = minSize.width;\r\n\t\t\tme.height = me._length = chart.height - me.margins.top - me.margins.bottom;\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Handle margins and padding interactions\r\n\t * @private\r\n\t */\r\n\thandleMargins: function() {\r\n\t\tvar me = this;\r\n\t\tif (me.margins) {\r\n\t\t\tme.margins.left = Math.max(me.paddingLeft, me.margins.left);\r\n\t\t\tme.margins.top = Math.max(me.paddingTop, me.margins.top);\r\n\t\t\tme.margins.right = Math.max(me.paddingRight, me.margins.right);\r\n\t\t\tme.margins.bottom = Math.max(me.paddingBottom, me.margins.bottom);\r\n\t\t}\r\n\t},\r\n\r\n\tafterFit: function() {\r\n\t\thelpers$1.callback(this.options.afterFit, [this]);\r\n\t},\r\n\r\n\t// Shared Methods\r\n\tisHorizontal: function() {\r\n\t\tvar pos = this.options.position;\r\n\t\treturn pos === 'top' || pos === 'bottom';\r\n\t},\r\n\tisFullWidth: function() {\r\n\t\treturn this.options.fullWidth;\r\n\t},\r\n\r\n\t// Get the correct value. NaN bad inputs, If the value type is object get the x or y based on whether we are horizontal or not\r\n\tgetRightValue: function(rawValue) {\r\n\t\t// Null and undefined values first\r\n\t\tif (isNullOrUndef(rawValue)) {\r\n\t\t\treturn NaN;\r\n\t\t}\r\n\t\t// isNaN(object) returns true, so make sure NaN is checking for a number; Discard Infinite values\r\n\t\tif ((typeof rawValue === 'number' || rawValue instanceof Number) && !isFinite(rawValue)) {\r\n\t\t\treturn NaN;\r\n\t\t}\r\n\r\n\t\t// If it is in fact an object, dive in one more level\r\n\t\tif (rawValue) {\r\n\t\t\tif (this.isHorizontal()) {\r\n\t\t\t\tif (rawValue.x !== undefined) {\r\n\t\t\t\t\treturn this.getRightValue(rawValue.x);\r\n\t\t\t\t}\r\n\t\t\t} else if (rawValue.y !== undefined) {\r\n\t\t\t\treturn this.getRightValue(rawValue.y);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Value is good, return it\r\n\t\treturn rawValue;\r\n\t},\r\n\r\n\t_convertTicksToLabels: function(ticks) {\r\n\t\tvar me = this;\r\n\t\tvar labels, i, ilen;\r\n\r\n\t\tme.ticks = ticks.map(function(tick) {\r\n\t\t\treturn tick.value;\r\n\t\t});\r\n\r\n\t\tme.beforeTickToLabelConversion();\r\n\r\n\t\t// New implementations should return the formatted tick labels but for BACKWARD\r\n\t\t// COMPAT, we still support no return (`this.ticks` internally changed by calling\r\n\t\t// this method and supposed to contain only string values).\r\n\t\tlabels = me.convertTicksToLabels(ticks) || me.ticks;\r\n\r\n\t\tme.afterTickToLabelConversion();\r\n\r\n\t\t// BACKWARD COMPAT: synchronize `_ticks` with labels (so potentially `this.ticks`)\r\n\t\tfor (i = 0, ilen = ticks.length; i < ilen; ++i) {\r\n\t\t\tticks[i].label = labels[i];\r\n\t\t}\r\n\r\n\t\treturn labels;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getLabelSizes: function() {\r\n\t\tvar me = this;\r\n\t\tvar labelSizes = me._labelSizes;\r\n\r\n\t\tif (!labelSizes) {\r\n\t\t\tme._labelSizes = labelSizes = computeLabelSizes(me.ctx, parseTickFontOptions(me.options.ticks), me.getTicks(), me.longestTextCache);\r\n\t\t\tme.longestLabelWidth = labelSizes.widest.width;\r\n\t\t}\r\n\r\n\t\treturn labelSizes;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_parseValue: function(value) {\r\n\t\tvar start, end, min, max;\r\n\r\n\t\tif (isArray(value)) {\r\n\t\t\tstart = +this.getRightValue(value[0]);\r\n\t\t\tend = +this.getRightValue(value[1]);\r\n\t\t\tmin = Math.min(start, end);\r\n\t\t\tmax = Math.max(start, end);\r\n\t\t} else {\r\n\t\t\tvalue = +this.getRightValue(value);\r\n\t\t\tstart = undefined;\r\n\t\t\tend = value;\r\n\t\t\tmin = value;\r\n\t\t\tmax = value;\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tmin: min,\r\n\t\t\tmax: max,\r\n\t\t\tstart: start,\r\n\t\t\tend: end\r\n\t\t};\r\n\t},\r\n\r\n\t/**\r\n\t* @private\r\n\t*/\r\n\t_getScaleLabel: function(rawValue) {\r\n\t\tvar v = this._parseValue(rawValue);\r\n\t\tif (v.start !== undefined) {\r\n\t\t\treturn '[' + v.start + ', ' + v.end + ']';\r\n\t\t}\r\n\r\n\t\treturn +this.getRightValue(rawValue);\r\n\t},\r\n\r\n\t/**\r\n\t * Used to get the value to display in the tooltip for the data at the given index\r\n\t * @param index\r\n\t * @param datasetIndex\r\n\t */\r\n\tgetLabelForIndex: helpers$1.noop,\r\n\r\n\t/**\r\n\t * Returns the location of the given data point. Value can either be an index or a numerical value\r\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\r\n\t * @param value\r\n\t * @param index\r\n\t * @param datasetIndex\r\n\t */\r\n\tgetPixelForValue: helpers$1.noop,\r\n\r\n\t/**\r\n\t * Used to get the data value from a given pixel. This is the inverse of getPixelForValue\r\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\r\n\t * @param pixel\r\n\t */\r\n\tgetValueForPixel: helpers$1.noop,\r\n\r\n\t/**\r\n\t * Returns the location of the tick at the given index\r\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\r\n\t */\r\n\tgetPixelForTick: function(index) {\r\n\t\tvar me = this;\r\n\t\tvar offset = me.options.offset;\r\n\t\tvar numTicks = me._ticks.length;\r\n\t\tvar tickWidth = 1 / Math.max(numTicks - (offset ? 0 : 1), 1);\r\n\r\n\t\treturn index < 0 || index > numTicks - 1\r\n\t\t\t? null\r\n\t\t\t: me.getPixelForDecimal(index * tickWidth + (offset ? tickWidth / 2 : 0));\r\n\t},\r\n\r\n\t/**\r\n\t * Utility for getting the pixel location of a percentage of scale\r\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\r\n\t */\r\n\tgetPixelForDecimal: function(decimal) {\r\n\t\tvar me = this;\r\n\r\n\t\tif (me._reversePixels) {\r\n\t\t\tdecimal = 1 - decimal;\r\n\t\t}\r\n\r\n\t\treturn me._startPixel + decimal * me._length;\r\n\t},\r\n\r\n\tgetDecimalForPixel: function(pixel) {\r\n\t\tvar decimal = (pixel - this._startPixel) / this._length;\r\n\t\treturn this._reversePixels ? 1 - decimal : decimal;\r\n\t},\r\n\r\n\t/**\r\n\t * Returns the pixel for the minimum chart value\r\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\r\n\t */\r\n\tgetBasePixel: function() {\r\n\t\treturn this.getPixelForValue(this.getBaseValue());\r\n\t},\r\n\r\n\tgetBaseValue: function() {\r\n\t\tvar me = this;\r\n\t\tvar min = me.min;\r\n\t\tvar max = me.max;\r\n\r\n\t\treturn me.beginAtZero ? 0 :\r\n\t\t\tmin < 0 && max < 0 ? max :\r\n\t\t\tmin > 0 && max > 0 ? min :\r\n\t\t\t0;\r\n\t},\r\n\r\n\t/**\r\n\t * Returns a subset of ticks to be plotted to avoid overlapping labels.\r\n\t * @private\r\n\t */\r\n\t_autoSkip: function(ticks) {\r\n\t\tvar me = this;\r\n\t\tvar tickOpts = me.options.ticks;\r\n\t\tvar axisLength = me._length;\r\n\t\tvar ticksLimit = tickOpts.maxTicksLimit || axisLength / me._tickSize() + 1;\r\n\t\tvar majorIndices = tickOpts.major.enabled ? getMajorIndices(ticks) : [];\r\n\t\tvar numMajorIndices = majorIndices.length;\r\n\t\tvar first = majorIndices[0];\r\n\t\tvar last = majorIndices[numMajorIndices - 1];\r\n\t\tvar i, ilen, spacing, avgMajorSpacing;\r\n\r\n\t\t// If there are too many major ticks to display them all\r\n\t\tif (numMajorIndices > ticksLimit) {\r\n\t\t\tskipMajors(ticks, majorIndices, numMajorIndices / ticksLimit);\r\n\t\t\treturn nonSkipped(ticks);\r\n\t\t}\r\n\r\n\t\tspacing = calculateSpacing(majorIndices, ticks, axisLength, ticksLimit);\r\n\r\n\t\tif (numMajorIndices > 0) {\r\n\t\t\tfor (i = 0, ilen = numMajorIndices - 1; i < ilen; i++) {\r\n\t\t\t\tskip(ticks, spacing, majorIndices[i], majorIndices[i + 1]);\r\n\t\t\t}\r\n\t\t\tavgMajorSpacing = numMajorIndices > 1 ? (last - first) / (numMajorIndices - 1) : null;\r\n\t\t\tskip(ticks, spacing, helpers$1.isNullOrUndef(avgMajorSpacing) ? 0 : first - avgMajorSpacing, first);\r\n\t\t\tskip(ticks, spacing, last, helpers$1.isNullOrUndef(avgMajorSpacing) ? ticks.length : last + avgMajorSpacing);\r\n\t\t\treturn nonSkipped(ticks);\r\n\t\t}\r\n\t\tskip(ticks, spacing);\r\n\t\treturn nonSkipped(ticks);\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_tickSize: function() {\r\n\t\tvar me = this;\r\n\t\tvar optionTicks = me.options.ticks;\r\n\r\n\t\t// Calculate space needed by label in axis direction.\r\n\t\tvar rot = helpers$1.toRadians(me.labelRotation);\r\n\t\tvar cos = Math.abs(Math.cos(rot));\r\n\t\tvar sin = Math.abs(Math.sin(rot));\r\n\r\n\t\tvar labelSizes = me._getLabelSizes();\r\n\t\tvar padding = optionTicks.autoSkipPadding || 0;\r\n\t\tvar w = labelSizes ? labelSizes.widest.width + padding : 0;\r\n\t\tvar h = labelSizes ? labelSizes.highest.height + padding : 0;\r\n\r\n\t\t// Calculate space needed for 1 tick in axis direction.\r\n\t\treturn me.isHorizontal()\r\n\t\t\t? h * cos > w * sin ? w / cos : h / sin\r\n\t\t\t: h * sin < w * cos ? h / cos : w / sin;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_isVisible: function() {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar display = me.options.display;\r\n\t\tvar i, ilen, meta;\r\n\r\n\t\tif (display !== 'auto') {\r\n\t\t\treturn !!display;\r\n\t\t}\r\n\r\n\t\t// When 'auto', the scale is visible if at least one associated dataset is visible.\r\n\t\tfor (i = 0, ilen = chart.data.datasets.length; i < ilen; ++i) {\r\n\t\t\tif (chart.isDatasetVisible(i)) {\r\n\t\t\t\tmeta = chart.getDatasetMeta(i);\r\n\t\t\t\tif (meta.xAxisID === me.id || meta.yAxisID === me.id) {\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_computeGridLineItems: function(chartArea) {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar options = me.options;\r\n\t\tvar gridLines = options.gridLines;\r\n\t\tvar position = options.position;\r\n\t\tvar offsetGridLines = gridLines.offsetGridLines;\r\n\t\tvar isHorizontal = me.isHorizontal();\r\n\t\tvar ticks = me._ticksToDraw;\r\n\t\tvar ticksLength = ticks.length + (offsetGridLines ? 1 : 0);\r\n\r\n\t\tvar tl = getTickMarkLength(gridLines);\r\n\t\tvar items = [];\r\n\t\tvar axisWidth = gridLines.drawBorder ? valueAtIndexOrDefault(gridLines.lineWidth, 0, 0) : 0;\r\n\t\tvar axisHalfWidth = axisWidth / 2;\r\n\t\tvar alignPixel = helpers$1._alignPixel;\r\n\t\tvar alignBorderValue = function(pixel) {\r\n\t\t\treturn alignPixel(chart, pixel, axisWidth);\r\n\t\t};\r\n\t\tvar borderValue, i, tick, lineValue, alignedLineValue;\r\n\t\tvar tx1, ty1, tx2, ty2, x1, y1, x2, y2, lineWidth, lineColor, borderDash, borderDashOffset;\r\n\r\n\t\tif (position === 'top') {\r\n\t\t\tborderValue = alignBorderValue(me.bottom);\r\n\t\t\tty1 = me.bottom - tl;\r\n\t\t\tty2 = borderValue - axisHalfWidth;\r\n\t\t\ty1 = alignBorderValue(chartArea.top) + axisHalfWidth;\r\n\t\t\ty2 = chartArea.bottom;\r\n\t\t} else if (position === 'bottom') {\r\n\t\t\tborderValue = alignBorderValue(me.top);\r\n\t\t\ty1 = chartArea.top;\r\n\t\t\ty2 = alignBorderValue(chartArea.bottom) - axisHalfWidth;\r\n\t\t\tty1 = borderValue + axisHalfWidth;\r\n\t\t\tty2 = me.top + tl;\r\n\t\t} else if (position === 'left') {\r\n\t\t\tborderValue = alignBorderValue(me.right);\r\n\t\t\ttx1 = me.right - tl;\r\n\t\t\ttx2 = borderValue - axisHalfWidth;\r\n\t\t\tx1 = alignBorderValue(chartArea.left) + axisHalfWidth;\r\n\t\t\tx2 = chartArea.right;\r\n\t\t} else {\r\n\t\t\tborderValue = alignBorderValue(me.left);\r\n\t\t\tx1 = chartArea.left;\r\n\t\t\tx2 = alignBorderValue(chartArea.right) - axisHalfWidth;\r\n\t\t\ttx1 = borderValue + axisHalfWidth;\r\n\t\t\ttx2 = me.left + tl;\r\n\t\t}\r\n\r\n\t\tfor (i = 0; i < ticksLength; ++i) {\r\n\t\t\ttick = ticks[i] || {};\r\n\r\n\t\t\t// autoskipper skipped this tick (#4635)\r\n\t\t\tif (isNullOrUndef(tick.label) && i < ticks.length) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tif (i === me.zeroLineIndex && options.offset === offsetGridLines) {\r\n\t\t\t\t// Draw the first index specially\r\n\t\t\t\tlineWidth = gridLines.zeroLineWidth;\r\n\t\t\t\tlineColor = gridLines.zeroLineColor;\r\n\t\t\t\tborderDash = gridLines.zeroLineBorderDash || [];\r\n\t\t\t\tborderDashOffset = gridLines.zeroLineBorderDashOffset || 0.0;\r\n\t\t\t} else {\r\n\t\t\t\tlineWidth = valueAtIndexOrDefault(gridLines.lineWidth, i, 1);\r\n\t\t\t\tlineColor = valueAtIndexOrDefault(gridLines.color, i, 'rgba(0,0,0,0.1)');\r\n\t\t\t\tborderDash = gridLines.borderDash || [];\r\n\t\t\t\tborderDashOffset = gridLines.borderDashOffset || 0.0;\r\n\t\t\t}\r\n\r\n\t\t\tlineValue = getPixelForGridLine(me, tick._index || i, offsetGridLines);\r\n\r\n\t\t\t// Skip if the pixel is out of the range\r\n\t\t\tif (lineValue === undefined) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\talignedLineValue = alignPixel(chart, lineValue, lineWidth);\r\n\r\n\t\t\tif (isHorizontal) {\r\n\t\t\t\ttx1 = tx2 = x1 = x2 = alignedLineValue;\r\n\t\t\t} else {\r\n\t\t\t\tty1 = ty2 = y1 = y2 = alignedLineValue;\r\n\t\t\t}\r\n\r\n\t\t\titems.push({\r\n\t\t\t\ttx1: tx1,\r\n\t\t\t\tty1: ty1,\r\n\t\t\t\ttx2: tx2,\r\n\t\t\t\tty2: ty2,\r\n\t\t\t\tx1: x1,\r\n\t\t\t\ty1: y1,\r\n\t\t\t\tx2: x2,\r\n\t\t\t\ty2: y2,\r\n\t\t\t\twidth: lineWidth,\r\n\t\t\t\tcolor: lineColor,\r\n\t\t\t\tborderDash: borderDash,\r\n\t\t\t\tborderDashOffset: borderDashOffset,\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\titems.ticksLength = ticksLength;\r\n\t\titems.borderValue = borderValue;\r\n\r\n\t\treturn items;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_computeLabelItems: function() {\r\n\t\tvar me = this;\r\n\t\tvar options = me.options;\r\n\t\tvar optionTicks = options.ticks;\r\n\t\tvar position = options.position;\r\n\t\tvar isMirrored = optionTicks.mirror;\r\n\t\tvar isHorizontal = me.isHorizontal();\r\n\t\tvar ticks = me._ticksToDraw;\r\n\t\tvar fonts = parseTickFontOptions(optionTicks);\r\n\t\tvar tickPadding = optionTicks.padding;\r\n\t\tvar tl = getTickMarkLength(options.gridLines);\r\n\t\tvar rotation = -helpers$1.toRadians(me.labelRotation);\r\n\t\tvar items = [];\r\n\t\tvar i, ilen, tick, label, x, y, textAlign, pixel, font, lineHeight, lineCount, textOffset;\r\n\r\n\t\tif (position === 'top') {\r\n\t\t\ty = me.bottom - tl - tickPadding;\r\n\t\t\ttextAlign = !rotation ? 'center' : 'left';\r\n\t\t} else if (position === 'bottom') {\r\n\t\t\ty = me.top + tl + tickPadding;\r\n\t\t\ttextAlign = !rotation ? 'center' : 'right';\r\n\t\t} else if (position === 'left') {\r\n\t\t\tx = me.right - (isMirrored ? 0 : tl) - tickPadding;\r\n\t\t\ttextAlign = isMirrored ? 'left' : 'right';\r\n\t\t} else {\r\n\t\t\tx = me.left + (isMirrored ? 0 : tl) + tickPadding;\r\n\t\t\ttextAlign = isMirrored ? 'right' : 'left';\r\n\t\t}\r\n\r\n\t\tfor (i = 0, ilen = ticks.length; i < ilen; ++i) {\r\n\t\t\ttick = ticks[i];\r\n\t\t\tlabel = tick.label;\r\n\r\n\t\t\t// autoskipper skipped this tick (#4635)\r\n\t\t\tif (isNullOrUndef(label)) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tpixel = me.getPixelForTick(tick._index || i) + optionTicks.labelOffset;\r\n\t\t\tfont = tick.major ? fonts.major : fonts.minor;\r\n\t\t\tlineHeight = font.lineHeight;\r\n\t\t\tlineCount = isArray(label) ? label.length : 1;\r\n\r\n\t\t\tif (isHorizontal) {\r\n\t\t\t\tx = pixel;\r\n\t\t\t\ttextOffset = position === 'top'\r\n\t\t\t\t\t? ((!rotation ? 0.5 : 1) - lineCount) * lineHeight\r\n\t\t\t\t\t: (!rotation ? 0.5 : 0) * lineHeight;\r\n\t\t\t} else {\r\n\t\t\t\ty = pixel;\r\n\t\t\t\ttextOffset = (1 - lineCount) * lineHeight / 2;\r\n\t\t\t}\r\n\r\n\t\t\titems.push({\r\n\t\t\t\tx: x,\r\n\t\t\t\ty: y,\r\n\t\t\t\trotation: rotation,\r\n\t\t\t\tlabel: label,\r\n\t\t\t\tfont: font,\r\n\t\t\t\ttextOffset: textOffset,\r\n\t\t\t\ttextAlign: textAlign\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn items;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_drawGrid: function(chartArea) {\r\n\t\tvar me = this;\r\n\t\tvar gridLines = me.options.gridLines;\r\n\r\n\t\tif (!gridLines.display) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar ctx = me.ctx;\r\n\t\tvar chart = me.chart;\r\n\t\tvar alignPixel = helpers$1._alignPixel;\r\n\t\tvar axisWidth = gridLines.drawBorder ? valueAtIndexOrDefault(gridLines.lineWidth, 0, 0) : 0;\r\n\t\tvar items = me._gridLineItems || (me._gridLineItems = me._computeGridLineItems(chartArea));\r\n\t\tvar width, color, i, ilen, item;\r\n\r\n\t\tfor (i = 0, ilen = items.length; i < ilen; ++i) {\r\n\t\t\titem = items[i];\r\n\t\t\twidth = item.width;\r\n\t\t\tcolor = item.color;\r\n\r\n\t\t\tif (width && color) {\r\n\t\t\t\tctx.save();\r\n\t\t\t\tctx.lineWidth = width;\r\n\t\t\t\tctx.strokeStyle = color;\r\n\t\t\t\tif (ctx.setLineDash) {\r\n\t\t\t\t\tctx.setLineDash(item.borderDash);\r\n\t\t\t\t\tctx.lineDashOffset = item.borderDashOffset;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tctx.beginPath();\r\n\r\n\t\t\t\tif (gridLines.drawTicks) {\r\n\t\t\t\t\tctx.moveTo(item.tx1, item.ty1);\r\n\t\t\t\t\tctx.lineTo(item.tx2, item.ty2);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (gridLines.drawOnChartArea) {\r\n\t\t\t\t\tctx.moveTo(item.x1, item.y1);\r\n\t\t\t\t\tctx.lineTo(item.x2, item.y2);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tctx.stroke();\r\n\t\t\t\tctx.restore();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (axisWidth) {\r\n\t\t\t// Draw the line at the edge of the axis\r\n\t\t\tvar firstLineWidth = axisWidth;\r\n\t\t\tvar lastLineWidth = valueAtIndexOrDefault(gridLines.lineWidth, items.ticksLength - 1, 1);\r\n\t\t\tvar borderValue = items.borderValue;\r\n\t\t\tvar x1, x2, y1, y2;\r\n\r\n\t\t\tif (me.isHorizontal()) {\r\n\t\t\t\tx1 = alignPixel(chart, me.left, firstLineWidth) - firstLineWidth / 2;\r\n\t\t\t\tx2 = alignPixel(chart, me.right, lastLineWidth) + lastLineWidth / 2;\r\n\t\t\t\ty1 = y2 = borderValue;\r\n\t\t\t} else {\r\n\t\t\t\ty1 = alignPixel(chart, me.top, firstLineWidth) - firstLineWidth / 2;\r\n\t\t\t\ty2 = alignPixel(chart, me.bottom, lastLineWidth) + lastLineWidth / 2;\r\n\t\t\t\tx1 = x2 = borderValue;\r\n\t\t\t}\r\n\r\n\t\t\tctx.lineWidth = axisWidth;\r\n\t\t\tctx.strokeStyle = valueAtIndexOrDefault(gridLines.color, 0);\r\n\t\t\tctx.beginPath();\r\n\t\t\tctx.moveTo(x1, y1);\r\n\t\t\tctx.lineTo(x2, y2);\r\n\t\t\tctx.stroke();\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_drawLabels: function() {\r\n\t\tvar me = this;\r\n\t\tvar optionTicks = me.options.ticks;\r\n\r\n\t\tif (!optionTicks.display) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar ctx = me.ctx;\r\n\t\tvar items = me._labelItems || (me._labelItems = me._computeLabelItems());\r\n\t\tvar i, j, ilen, jlen, item, tickFont, label, y;\r\n\r\n\t\tfor (i = 0, ilen = items.length; i < ilen; ++i) {\r\n\t\t\titem = items[i];\r\n\t\t\ttickFont = item.font;\r\n\r\n\t\t\t// Make sure we draw text in the correct color and font\r\n\t\t\tctx.save();\r\n\t\t\tctx.translate(item.x, item.y);\r\n\t\t\tctx.rotate(item.rotation);\r\n\t\t\tctx.font = tickFont.string;\r\n\t\t\tctx.fillStyle = tickFont.color;\r\n\t\t\tctx.textBaseline = 'middle';\r\n\t\t\tctx.textAlign = item.textAlign;\r\n\r\n\t\t\tlabel = item.label;\r\n\t\t\ty = item.textOffset;\r\n\t\t\tif (isArray(label)) {\r\n\t\t\t\tfor (j = 0, jlen = label.length; j < jlen; ++j) {\r\n\t\t\t\t\t// We just make sure the multiline element is a string here..\r\n\t\t\t\t\tctx.fillText('' + label[j], 0, y);\r\n\t\t\t\t\ty += tickFont.lineHeight;\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tctx.fillText(label, 0, y);\r\n\t\t\t}\r\n\t\t\tctx.restore();\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_drawTitle: function() {\r\n\t\tvar me = this;\r\n\t\tvar ctx = me.ctx;\r\n\t\tvar options = me.options;\r\n\t\tvar scaleLabel = options.scaleLabel;\r\n\r\n\t\tif (!scaleLabel.display) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar scaleLabelFontColor = valueOrDefault$a(scaleLabel.fontColor, core_defaults.global.defaultFontColor);\r\n\t\tvar scaleLabelFont = helpers$1.options._parseFont(scaleLabel);\r\n\t\tvar scaleLabelPadding = helpers$1.options.toPadding(scaleLabel.padding);\r\n\t\tvar halfLineHeight = scaleLabelFont.lineHeight / 2;\r\n\t\tvar position = options.position;\r\n\t\tvar rotation = 0;\r\n\t\tvar scaleLabelX, scaleLabelY;\r\n\r\n\t\tif (me.isHorizontal()) {\r\n\t\t\tscaleLabelX = me.left + me.width / 2; // midpoint of the width\r\n\t\t\tscaleLabelY = position === 'bottom'\r\n\t\t\t\t? me.bottom - halfLineHeight - scaleLabelPadding.bottom\r\n\t\t\t\t: me.top + halfLineHeight + scaleLabelPadding.top;\r\n\t\t} else {\r\n\t\t\tvar isLeft = position === 'left';\r\n\t\t\tscaleLabelX = isLeft\r\n\t\t\t\t? me.left + halfLineHeight + scaleLabelPadding.top\r\n\t\t\t\t: me.right - halfLineHeight - scaleLabelPadding.top;\r\n\t\t\tscaleLabelY = me.top + me.height / 2;\r\n\t\t\trotation = isLeft ? -0.5 * Math.PI : 0.5 * Math.PI;\r\n\t\t}\r\n\r\n\t\tctx.save();\r\n\t\tctx.translate(scaleLabelX, scaleLabelY);\r\n\t\tctx.rotate(rotation);\r\n\t\tctx.textAlign = 'center';\r\n\t\tctx.textBaseline = 'middle';\r\n\t\tctx.fillStyle = scaleLabelFontColor; // render in correct colour\r\n\t\tctx.font = scaleLabelFont.string;\r\n\t\tctx.fillText(scaleLabel.labelString, 0, 0);\r\n\t\tctx.restore();\r\n\t},\r\n\r\n\tdraw: function(chartArea) {\r\n\t\tvar me = this;\r\n\r\n\t\tif (!me._isVisible()) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tme._drawGrid(chartArea);\r\n\t\tme._drawTitle();\r\n\t\tme._drawLabels();\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_layers: function() {\r\n\t\tvar me = this;\r\n\t\tvar opts = me.options;\r\n\t\tvar tz = opts.ticks && opts.ticks.z || 0;\r\n\t\tvar gz = opts.gridLines && opts.gridLines.z || 0;\r\n\r\n\t\tif (!me._isVisible() || tz === gz || me.draw !== me._draw) {\r\n\t\t\t// backward compatibility: draw has been overridden by custom scale\r\n\t\t\treturn [{\r\n\t\t\t\tz: tz,\r\n\t\t\t\tdraw: function() {\r\n\t\t\t\t\tme.draw.apply(me, arguments);\r\n\t\t\t\t}\r\n\t\t\t}];\r\n\t\t}\r\n\r\n\t\treturn [{\r\n\t\t\tz: gz,\r\n\t\t\tdraw: function() {\r\n\t\t\t\tme._drawGrid.apply(me, arguments);\r\n\t\t\t\tme._drawTitle.apply(me, arguments);\r\n\t\t\t}\r\n\t\t}, {\r\n\t\t\tz: tz,\r\n\t\t\tdraw: function() {\r\n\t\t\t\tme._drawLabels.apply(me, arguments);\r\n\t\t\t}\r\n\t\t}];\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getMatchingVisibleMetas: function(type) {\r\n\t\tvar me = this;\r\n\t\tvar isHorizontal = me.isHorizontal();\r\n\t\treturn me.chart._getSortedVisibleDatasetMetas()\r\n\t\t\t.filter(function(meta) {\r\n\t\t\t\treturn (!type || meta.type === type)\r\n\t\t\t\t\t&& (isHorizontal ? meta.xAxisID === me.id : meta.yAxisID === me.id);\r\n\t\t\t});\r\n\t}\r\n});\r\n\r\nScale.prototype._draw = Scale.prototype.draw;\r\n\r\nvar core_scale = Scale;\n\nvar isNullOrUndef$1 = helpers$1.isNullOrUndef;\r\n\r\nvar defaultConfig = {\r\n\tposition: 'bottom'\r\n};\r\n\r\nvar scale_category = core_scale.extend({\r\n\tdetermineDataLimits: function() {\r\n\t\tvar me = this;\r\n\t\tvar labels = me._getLabels();\r\n\t\tvar ticksOpts = me.options.ticks;\r\n\t\tvar min = ticksOpts.min;\r\n\t\tvar max = ticksOpts.max;\r\n\t\tvar minIndex = 0;\r\n\t\tvar maxIndex = labels.length - 1;\r\n\t\tvar findIndex;\r\n\r\n\t\tif (min !== undefined) {\r\n\t\t\t// user specified min value\r\n\t\t\tfindIndex = labels.indexOf(min);\r\n\t\t\tif (findIndex >= 0) {\r\n\t\t\t\tminIndex = findIndex;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (max !== undefined) {\r\n\t\t\t// user specified max value\r\n\t\t\tfindIndex = labels.indexOf(max);\r\n\t\t\tif (findIndex >= 0) {\r\n\t\t\t\tmaxIndex = findIndex;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tme.minIndex = minIndex;\r\n\t\tme.maxIndex = maxIndex;\r\n\t\tme.min = labels[minIndex];\r\n\t\tme.max = labels[maxIndex];\r\n\t},\r\n\r\n\tbuildTicks: function() {\r\n\t\tvar me = this;\r\n\t\tvar labels = me._getLabels();\r\n\t\tvar minIndex = me.minIndex;\r\n\t\tvar maxIndex = me.maxIndex;\r\n\r\n\t\t// If we are viewing some subset of labels, slice the original array\r\n\t\tme.ticks = (minIndex === 0 && maxIndex === labels.length - 1) ? labels : labels.slice(minIndex, maxIndex + 1);\r\n\t},\r\n\r\n\tgetLabelForIndex: function(index, datasetIndex) {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\r\n\t\tif (chart.getDatasetMeta(datasetIndex).controller._getValueScaleId() === me.id) {\r\n\t\t\treturn me.getRightValue(chart.data.datasets[datasetIndex].data[index]);\r\n\t\t}\r\n\r\n\t\treturn me._getLabels()[index];\r\n\t},\r\n\r\n\t_configure: function() {\r\n\t\tvar me = this;\r\n\t\tvar offset = me.options.offset;\r\n\t\tvar ticks = me.ticks;\r\n\r\n\t\tcore_scale.prototype._configure.call(me);\r\n\r\n\t\tif (!me.isHorizontal()) {\r\n\t\t\t// For backward compatibility, vertical category scale reverse is inverted.\r\n\t\t\tme._reversePixels = !me._reversePixels;\r\n\t\t}\r\n\r\n\t\tif (!ticks) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tme._startValue = me.minIndex - (offset ? 0.5 : 0);\r\n\t\tme._valueRange = Math.max(ticks.length - (offset ? 0 : 1), 1);\r\n\t},\r\n\r\n\t// Used to get data value locations.  Value can either be an index or a numerical value\r\n\tgetPixelForValue: function(value, index, datasetIndex) {\r\n\t\tvar me = this;\r\n\t\tvar valueCategory, labels, idx;\r\n\r\n\t\tif (!isNullOrUndef$1(index) && !isNullOrUndef$1(datasetIndex)) {\r\n\t\t\tvalue = me.chart.data.datasets[datasetIndex].data[index];\r\n\t\t}\r\n\r\n\t\t// If value is a data object, then index is the index in the data array,\r\n\t\t// not the index of the scale. We need to change that.\r\n\t\tif (!isNullOrUndef$1(value)) {\r\n\t\t\tvalueCategory = me.isHorizontal() ? value.x : value.y;\r\n\t\t}\r\n\t\tif (valueCategory !== undefined || (value !== undefined && isNaN(index))) {\r\n\t\t\tlabels = me._getLabels();\r\n\t\t\tvalue = helpers$1.valueOrDefault(valueCategory, value);\r\n\t\t\tidx = labels.indexOf(value);\r\n\t\t\tindex = idx !== -1 ? idx : index;\r\n\t\t\tif (isNaN(index)) {\r\n\t\t\t\tindex = value;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn me.getPixelForDecimal((index - me._startValue) / me._valueRange);\r\n\t},\r\n\r\n\tgetPixelForTick: function(index) {\r\n\t\tvar ticks = this.ticks;\r\n\t\treturn index < 0 || index > ticks.length - 1\r\n\t\t\t? null\r\n\t\t\t: this.getPixelForValue(ticks[index], index + this.minIndex);\r\n\t},\r\n\r\n\tgetValueForPixel: function(pixel) {\r\n\t\tvar me = this;\r\n\t\tvar value = Math.round(me._startValue + me.getDecimalForPixel(pixel) * me._valueRange);\r\n\t\treturn Math.min(Math.max(value, 0), me.ticks.length - 1);\r\n\t},\r\n\r\n\tgetBasePixel: function() {\r\n\t\treturn this.bottom;\r\n\t}\r\n});\r\n\r\n// INTERNAL: static default options, registered in src/index.js\r\nvar _defaults = defaultConfig;\nscale_category._defaults = _defaults;\n\nvar noop = helpers$1.noop;\r\nvar isNullOrUndef$2 = helpers$1.isNullOrUndef;\r\n\r\n/**\r\n * Generate a set of linear ticks\r\n * @param generationOptions the options used to generate the ticks\r\n * @param dataRange the range of the data\r\n * @returns {number[]} array of tick values\r\n */\r\nfunction generateTicks(generationOptions, dataRange) {\r\n\tvar ticks = [];\r\n\t// To get a \"nice\" value for the tick spacing, we will use the appropriately named\r\n\t// \"nice number\" algorithm. See https://stackoverflow.com/questions/8506881/nice-label-algorithm-for-charts-with-minimum-ticks\r\n\t// for details.\r\n\r\n\tvar MIN_SPACING = 1e-14;\r\n\tvar stepSize = generationOptions.stepSize;\r\n\tvar unit = stepSize || 1;\r\n\tvar maxNumSpaces = generationOptions.maxTicks - 1;\r\n\tvar min = generationOptions.min;\r\n\tvar max = generationOptions.max;\r\n\tvar precision = generationOptions.precision;\r\n\tvar rmin = dataRange.min;\r\n\tvar rmax = dataRange.max;\r\n\tvar spacing = helpers$1.niceNum((rmax - rmin) / maxNumSpaces / unit) * unit;\r\n\tvar factor, niceMin, niceMax, numSpaces;\r\n\r\n\t// Beyond MIN_SPACING floating point numbers being to lose precision\r\n\t// such that we can't do the math necessary to generate ticks\r\n\tif (spacing < MIN_SPACING && isNullOrUndef$2(min) && isNullOrUndef$2(max)) {\r\n\t\treturn [rmin, rmax];\r\n\t}\r\n\r\n\tnumSpaces = Math.ceil(rmax / spacing) - Math.floor(rmin / spacing);\r\n\tif (numSpaces > maxNumSpaces) {\r\n\t\t// If the calculated num of spaces exceeds maxNumSpaces, recalculate it\r\n\t\tspacing = helpers$1.niceNum(numSpaces * spacing / maxNumSpaces / unit) * unit;\r\n\t}\r\n\r\n\tif (stepSize || isNullOrUndef$2(precision)) {\r\n\t\t// If a precision is not specified, calculate factor based on spacing\r\n\t\tfactor = Math.pow(10, helpers$1._decimalPlaces(spacing));\r\n\t} else {\r\n\t\t// If the user specified a precision, round to that number of decimal places\r\n\t\tfactor = Math.pow(10, precision);\r\n\t\tspacing = Math.ceil(spacing * factor) / factor;\r\n\t}\r\n\r\n\tniceMin = Math.floor(rmin / spacing) * spacing;\r\n\tniceMax = Math.ceil(rmax / spacing) * spacing;\r\n\r\n\t// If min, max and stepSize is set and they make an evenly spaced scale use it.\r\n\tif (stepSize) {\r\n\t\t// If very close to our whole number, use it.\r\n\t\tif (!isNullOrUndef$2(min) && helpers$1.almostWhole(min / spacing, spacing / 1000)) {\r\n\t\t\tniceMin = min;\r\n\t\t}\r\n\t\tif (!isNullOrUndef$2(max) && helpers$1.almostWhole(max / spacing, spacing / 1000)) {\r\n\t\t\tniceMax = max;\r\n\t\t}\r\n\t}\r\n\r\n\tnumSpaces = (niceMax - niceMin) / spacing;\r\n\t// If very close to our rounded value, use it.\r\n\tif (helpers$1.almostEquals(numSpaces, Math.round(numSpaces), spacing / 1000)) {\r\n\t\tnumSpaces = Math.round(numSpaces);\r\n\t} else {\r\n\t\tnumSpaces = Math.ceil(numSpaces);\r\n\t}\r\n\r\n\tniceMin = Math.round(niceMin * factor) / factor;\r\n\tniceMax = Math.round(niceMax * factor) / factor;\r\n\tticks.push(isNullOrUndef$2(min) ? niceMin : min);\r\n\tfor (var j = 1; j < numSpaces; ++j) {\r\n\t\tticks.push(Math.round((niceMin + j * spacing) * factor) / factor);\r\n\t}\r\n\tticks.push(isNullOrUndef$2(max) ? niceMax : max);\r\n\r\n\treturn ticks;\r\n}\r\n\r\nvar scale_linearbase = core_scale.extend({\r\n\tgetRightValue: function(value) {\r\n\t\tif (typeof value === 'string') {\r\n\t\t\treturn +value;\r\n\t\t}\r\n\t\treturn core_scale.prototype.getRightValue.call(this, value);\r\n\t},\r\n\r\n\thandleTickRangeOptions: function() {\r\n\t\tvar me = this;\r\n\t\tvar opts = me.options;\r\n\t\tvar tickOpts = opts.ticks;\r\n\r\n\t\t// If we are forcing it to begin at 0, but 0 will already be rendered on the chart,\r\n\t\t// do nothing since that would make the chart weird. If the user really wants a weird chart\r\n\t\t// axis, they can manually override it\r\n\t\tif (tickOpts.beginAtZero) {\r\n\t\t\tvar minSign = helpers$1.sign(me.min);\r\n\t\t\tvar maxSign = helpers$1.sign(me.max);\r\n\r\n\t\t\tif (minSign < 0 && maxSign < 0) {\r\n\t\t\t\t// move the top up to 0\r\n\t\t\t\tme.max = 0;\r\n\t\t\t} else if (minSign > 0 && maxSign > 0) {\r\n\t\t\t\t// move the bottom down to 0\r\n\t\t\t\tme.min = 0;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar setMin = tickOpts.min !== undefined || tickOpts.suggestedMin !== undefined;\r\n\t\tvar setMax = tickOpts.max !== undefined || tickOpts.suggestedMax !== undefined;\r\n\r\n\t\tif (tickOpts.min !== undefined) {\r\n\t\t\tme.min = tickOpts.min;\r\n\t\t} else if (tickOpts.suggestedMin !== undefined) {\r\n\t\t\tif (me.min === null) {\r\n\t\t\t\tme.min = tickOpts.suggestedMin;\r\n\t\t\t} else {\r\n\t\t\t\tme.min = Math.min(me.min, tickOpts.suggestedMin);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (tickOpts.max !== undefined) {\r\n\t\t\tme.max = tickOpts.max;\r\n\t\t} else if (tickOpts.suggestedMax !== undefined) {\r\n\t\t\tif (me.max === null) {\r\n\t\t\t\tme.max = tickOpts.suggestedMax;\r\n\t\t\t} else {\r\n\t\t\t\tme.max = Math.max(me.max, tickOpts.suggestedMax);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (setMin !== setMax) {\r\n\t\t\t// We set the min or the max but not both.\r\n\t\t\t// So ensure that our range is good\r\n\t\t\t// Inverted or 0 length range can happen when\r\n\t\t\t// ticks.min is set, and no datasets are visible\r\n\t\t\tif (me.min >= me.max) {\r\n\t\t\t\tif (setMin) {\r\n\t\t\t\t\tme.max = me.min + 1;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tme.min = me.max - 1;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (me.min === me.max) {\r\n\t\t\tme.max++;\r\n\r\n\t\t\tif (!tickOpts.beginAtZero) {\r\n\t\t\t\tme.min--;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tgetTickLimit: function() {\r\n\t\tvar me = this;\r\n\t\tvar tickOpts = me.options.ticks;\r\n\t\tvar stepSize = tickOpts.stepSize;\r\n\t\tvar maxTicksLimit = tickOpts.maxTicksLimit;\r\n\t\tvar maxTicks;\r\n\r\n\t\tif (stepSize) {\r\n\t\t\tmaxTicks = Math.ceil(me.max / stepSize) - Math.floor(me.min / stepSize) + 1;\r\n\t\t} else {\r\n\t\t\tmaxTicks = me._computeTickLimit();\r\n\t\t\tmaxTicksLimit = maxTicksLimit || 11;\r\n\t\t}\r\n\r\n\t\tif (maxTicksLimit) {\r\n\t\t\tmaxTicks = Math.min(maxTicksLimit, maxTicks);\r\n\t\t}\r\n\r\n\t\treturn maxTicks;\r\n\t},\r\n\r\n\t_computeTickLimit: function() {\r\n\t\treturn Number.POSITIVE_INFINITY;\r\n\t},\r\n\r\n\thandleDirectionalChanges: noop,\r\n\r\n\tbuildTicks: function() {\r\n\t\tvar me = this;\r\n\t\tvar opts = me.options;\r\n\t\tvar tickOpts = opts.ticks;\r\n\r\n\t\t// Figure out what the max number of ticks we can support it is based on the size of\r\n\t\t// the axis area. For now, we say that the minimum tick spacing in pixels must be 40\r\n\t\t// We also limit the maximum number of ticks to 11 which gives a nice 10 squares on\r\n\t\t// the graph. Make sure we always have at least 2 ticks\r\n\t\tvar maxTicks = me.getTickLimit();\r\n\t\tmaxTicks = Math.max(2, maxTicks);\r\n\r\n\t\tvar numericGeneratorOptions = {\r\n\t\t\tmaxTicks: maxTicks,\r\n\t\t\tmin: tickOpts.min,\r\n\t\t\tmax: tickOpts.max,\r\n\t\t\tprecision: tickOpts.precision,\r\n\t\t\tstepSize: helpers$1.valueOrDefault(tickOpts.fixedStepSize, tickOpts.stepSize)\r\n\t\t};\r\n\t\tvar ticks = me.ticks = generateTicks(numericGeneratorOptions, me);\r\n\r\n\t\tme.handleDirectionalChanges();\r\n\r\n\t\t// At this point, we need to update our max and min given the tick values since we have expanded the\r\n\t\t// range of the scale\r\n\t\tme.max = helpers$1.max(ticks);\r\n\t\tme.min = helpers$1.min(ticks);\r\n\r\n\t\tif (tickOpts.reverse) {\r\n\t\t\tticks.reverse();\r\n\r\n\t\t\tme.start = me.max;\r\n\t\t\tme.end = me.min;\r\n\t\t} else {\r\n\t\t\tme.start = me.min;\r\n\t\t\tme.end = me.max;\r\n\t\t}\r\n\t},\r\n\r\n\tconvertTicksToLabels: function() {\r\n\t\tvar me = this;\r\n\t\tme.ticksAsNumbers = me.ticks.slice();\r\n\t\tme.zeroLineIndex = me.ticks.indexOf(0);\r\n\r\n\t\tcore_scale.prototype.convertTicksToLabels.call(me);\r\n\t},\r\n\r\n\t_configure: function() {\r\n\t\tvar me = this;\r\n\t\tvar ticks = me.getTicks();\r\n\t\tvar start = me.min;\r\n\t\tvar end = me.max;\r\n\t\tvar offset;\r\n\r\n\t\tcore_scale.prototype._configure.call(me);\r\n\r\n\t\tif (me.options.offset && ticks.length) {\r\n\t\t\toffset = (end - start) / Math.max(ticks.length - 1, 1) / 2;\r\n\t\t\tstart -= offset;\r\n\t\t\tend += offset;\r\n\t\t}\r\n\t\tme._startValue = start;\r\n\t\tme._endValue = end;\r\n\t\tme._valueRange = end - start;\r\n\t}\r\n});\n\nvar defaultConfig$1 = {\r\n\tposition: 'left',\r\n\tticks: {\r\n\t\tcallback: core_ticks.formatters.linear\r\n\t}\r\n};\r\n\r\nvar DEFAULT_MIN = 0;\r\nvar DEFAULT_MAX = 1;\r\n\r\nfunction getOrCreateStack(stacks, stacked, meta) {\r\n\tvar key = [\r\n\t\tmeta.type,\r\n\t\t// we have a separate stack for stack=undefined datasets when the opts.stacked is undefined\r\n\t\tstacked === undefined && meta.stack === undefined ? meta.index : '',\r\n\t\tmeta.stack\r\n\t].join('.');\r\n\r\n\tif (stacks[key] === undefined) {\r\n\t\tstacks[key] = {\r\n\t\t\tpos: [],\r\n\t\t\tneg: []\r\n\t\t};\r\n\t}\r\n\r\n\treturn stacks[key];\r\n}\r\n\r\nfunction stackData(scale, stacks, meta, data) {\r\n\tvar opts = scale.options;\r\n\tvar stacked = opts.stacked;\r\n\tvar stack = getOrCreateStack(stacks, stacked, meta);\r\n\tvar pos = stack.pos;\r\n\tvar neg = stack.neg;\r\n\tvar ilen = data.length;\r\n\tvar i, value;\r\n\r\n\tfor (i = 0; i < ilen; ++i) {\r\n\t\tvalue = scale._parseValue(data[i]);\r\n\t\tif (isNaN(value.min) || isNaN(value.max) || meta.data[i].hidden) {\r\n\t\t\tcontinue;\r\n\t\t}\r\n\r\n\t\tpos[i] = pos[i] || 0;\r\n\t\tneg[i] = neg[i] || 0;\r\n\r\n\t\tif (opts.relativePoints) {\r\n\t\t\tpos[i] = 100;\r\n\t\t} else if (value.min < 0 || value.max < 0) {\r\n\t\t\tneg[i] += value.min;\r\n\t\t} else {\r\n\t\t\tpos[i] += value.max;\r\n\t\t}\r\n\t}\r\n}\r\n\r\nfunction updateMinMax(scale, meta, data) {\r\n\tvar ilen = data.length;\r\n\tvar i, value;\r\n\r\n\tfor (i = 0; i < ilen; ++i) {\r\n\t\tvalue = scale._parseValue(data[i]);\r\n\t\tif (isNaN(value.min) || isNaN(value.max) || meta.data[i].hidden) {\r\n\t\t\tcontinue;\r\n\t\t}\r\n\r\n\t\tscale.min = Math.min(scale.min, value.min);\r\n\t\tscale.max = Math.max(scale.max, value.max);\r\n\t}\r\n}\r\n\r\nvar scale_linear = scale_linearbase.extend({\r\n\tdetermineDataLimits: function() {\r\n\t\tvar me = this;\r\n\t\tvar opts = me.options;\r\n\t\tvar chart = me.chart;\r\n\t\tvar datasets = chart.data.datasets;\r\n\t\tvar metasets = me._getMatchingVisibleMetas();\r\n\t\tvar hasStacks = opts.stacked;\r\n\t\tvar stacks = {};\r\n\t\tvar ilen = metasets.length;\r\n\t\tvar i, meta, data, values;\r\n\r\n\t\tme.min = Number.POSITIVE_INFINITY;\r\n\t\tme.max = Number.NEGATIVE_INFINITY;\r\n\r\n\t\tif (hasStacks === undefined) {\r\n\t\t\tfor (i = 0; !hasStacks && i < ilen; ++i) {\r\n\t\t\t\tmeta = metasets[i];\r\n\t\t\t\thasStacks = meta.stack !== undefined;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (i = 0; i < ilen; ++i) {\r\n\t\t\tmeta = metasets[i];\r\n\t\t\tdata = datasets[meta.index].data;\r\n\t\t\tif (hasStacks) {\r\n\t\t\t\tstackData(me, stacks, meta, data);\r\n\t\t\t} else {\r\n\t\t\t\tupdateMinMax(me, meta, data);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\thelpers$1.each(stacks, function(stackValues) {\r\n\t\t\tvalues = stackValues.pos.concat(stackValues.neg);\r\n\t\t\tme.min = Math.min(me.min, helpers$1.min(values));\r\n\t\t\tme.max = Math.max(me.max, helpers$1.max(values));\r\n\t\t});\r\n\r\n\t\tme.min = helpers$1.isFinite(me.min) && !isNaN(me.min) ? me.min : DEFAULT_MIN;\r\n\t\tme.max = helpers$1.isFinite(me.max) && !isNaN(me.max) ? me.max : DEFAULT_MAX;\r\n\r\n\t\t// Common base implementation to handle ticks.min, ticks.max, ticks.beginAtZero\r\n\t\tme.handleTickRangeOptions();\r\n\t},\r\n\r\n\t// Returns the maximum number of ticks based on the scale dimension\r\n\t_computeTickLimit: function() {\r\n\t\tvar me = this;\r\n\t\tvar tickFont;\r\n\r\n\t\tif (me.isHorizontal()) {\r\n\t\t\treturn Math.ceil(me.width / 40);\r\n\t\t}\r\n\t\ttickFont = helpers$1.options._parseFont(me.options.ticks);\r\n\t\treturn Math.ceil(me.height / tickFont.lineHeight);\r\n\t},\r\n\r\n\t// Called after the ticks are built. We need\r\n\thandleDirectionalChanges: function() {\r\n\t\tif (!this.isHorizontal()) {\r\n\t\t\t// We are in a vertical orientation. The top value is the highest. So reverse the array\r\n\t\t\tthis.ticks.reverse();\r\n\t\t}\r\n\t},\r\n\r\n\tgetLabelForIndex: function(index, datasetIndex) {\r\n\t\treturn this._getScaleLabel(this.chart.data.datasets[datasetIndex].data[index]);\r\n\t},\r\n\r\n\t// Utils\r\n\tgetPixelForValue: function(value) {\r\n\t\tvar me = this;\r\n\t\treturn me.getPixelForDecimal((+me.getRightValue(value) - me._startValue) / me._valueRange);\r\n\t},\r\n\r\n\tgetValueForPixel: function(pixel) {\r\n\t\treturn this._startValue + this.getDecimalForPixel(pixel) * this._valueRange;\r\n\t},\r\n\r\n\tgetPixelForTick: function(index) {\r\n\t\tvar ticks = this.ticksAsNumbers;\r\n\t\tif (index < 0 || index > ticks.length - 1) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\treturn this.getPixelForValue(ticks[index]);\r\n\t}\r\n});\r\n\r\n// INTERNAL: static default options, registered in src/index.js\r\nvar _defaults$1 = defaultConfig$1;\nscale_linear._defaults = _defaults$1;\n\nvar valueOrDefault$b = helpers$1.valueOrDefault;\r\nvar log10 = helpers$1.math.log10;\r\n\r\n/**\r\n * Generate a set of logarithmic ticks\r\n * @param generationOptions the options used to generate the ticks\r\n * @param dataRange the range of the data\r\n * @returns {number[]} array of tick values\r\n */\r\nfunction generateTicks$1(generationOptions, dataRange) {\r\n\tvar ticks = [];\r\n\r\n\tvar tickVal = valueOrDefault$b(generationOptions.min, Math.pow(10, Math.floor(log10(dataRange.min))));\r\n\r\n\tvar endExp = Math.floor(log10(dataRange.max));\r\n\tvar endSignificand = Math.ceil(dataRange.max / Math.pow(10, endExp));\r\n\tvar exp, significand;\r\n\r\n\tif (tickVal === 0) {\r\n\t\texp = Math.floor(log10(dataRange.minNotZero));\r\n\t\tsignificand = Math.floor(dataRange.minNotZero / Math.pow(10, exp));\r\n\r\n\t\tticks.push(tickVal);\r\n\t\ttickVal = significand * Math.pow(10, exp);\r\n\t} else {\r\n\t\texp = Math.floor(log10(tickVal));\r\n\t\tsignificand = Math.floor(tickVal / Math.pow(10, exp));\r\n\t}\r\n\tvar precision = exp < 0 ? Math.pow(10, Math.abs(exp)) : 1;\r\n\r\n\tdo {\r\n\t\tticks.push(tickVal);\r\n\r\n\t\t++significand;\r\n\t\tif (significand === 10) {\r\n\t\t\tsignificand = 1;\r\n\t\t\t++exp;\r\n\t\t\tprecision = exp >= 0 ? 1 : precision;\r\n\t\t}\r\n\r\n\t\ttickVal = Math.round(significand * Math.pow(10, exp) * precision) / precision;\r\n\t} while (exp < endExp || (exp === endExp && significand < endSignificand));\r\n\r\n\tvar lastTick = valueOrDefault$b(generationOptions.max, tickVal);\r\n\tticks.push(lastTick);\r\n\r\n\treturn ticks;\r\n}\r\n\r\nvar defaultConfig$2 = {\r\n\tposition: 'left',\r\n\r\n\t// label settings\r\n\tticks: {\r\n\t\tcallback: core_ticks.formatters.logarithmic\r\n\t}\r\n};\r\n\r\n// TODO(v3): change this to positiveOrDefault\r\nfunction nonNegativeOrDefault(value, defaultValue) {\r\n\treturn helpers$1.isFinite(value) && value >= 0 ? value : defaultValue;\r\n}\r\n\r\nvar scale_logarithmic = core_scale.extend({\r\n\tdetermineDataLimits: function() {\r\n\t\tvar me = this;\r\n\t\tvar opts = me.options;\r\n\t\tvar chart = me.chart;\r\n\t\tvar datasets = chart.data.datasets;\r\n\t\tvar isHorizontal = me.isHorizontal();\r\n\t\tfunction IDMatches(meta) {\r\n\t\t\treturn isHorizontal ? meta.xAxisID === me.id : meta.yAxisID === me.id;\r\n\t\t}\r\n\t\tvar datasetIndex, meta, value, data, i, ilen;\r\n\r\n\t\t// Calculate Range\r\n\t\tme.min = Number.POSITIVE_INFINITY;\r\n\t\tme.max = Number.NEGATIVE_INFINITY;\r\n\t\tme.minNotZero = Number.POSITIVE_INFINITY;\r\n\r\n\t\tvar hasStacks = opts.stacked;\r\n\t\tif (hasStacks === undefined) {\r\n\t\t\tfor (datasetIndex = 0; datasetIndex < datasets.length; datasetIndex++) {\r\n\t\t\t\tmeta = chart.getDatasetMeta(datasetIndex);\r\n\t\t\t\tif (chart.isDatasetVisible(datasetIndex) && IDMatches(meta) &&\r\n\t\t\t\t\tmeta.stack !== undefined) {\r\n\t\t\t\t\thasStacks = true;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (opts.stacked || hasStacks) {\r\n\t\t\tvar valuesPerStack = {};\r\n\r\n\t\t\tfor (datasetIndex = 0; datasetIndex < datasets.length; datasetIndex++) {\r\n\t\t\t\tmeta = chart.getDatasetMeta(datasetIndex);\r\n\t\t\t\tvar key = [\r\n\t\t\t\t\tmeta.type,\r\n\t\t\t\t\t// we have a separate stack for stack=undefined datasets when the opts.stacked is undefined\r\n\t\t\t\t\t((opts.stacked === undefined && meta.stack === undefined) ? datasetIndex : ''),\r\n\t\t\t\t\tmeta.stack\r\n\t\t\t\t].join('.');\r\n\r\n\t\t\t\tif (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) {\r\n\t\t\t\t\tif (valuesPerStack[key] === undefined) {\r\n\t\t\t\t\t\tvaluesPerStack[key] = [];\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tdata = datasets[datasetIndex].data;\r\n\t\t\t\t\tfor (i = 0, ilen = data.length; i < ilen; i++) {\r\n\t\t\t\t\t\tvar values = valuesPerStack[key];\r\n\t\t\t\t\t\tvalue = me._parseValue(data[i]);\r\n\t\t\t\t\t\t// invalid, hidden and negative values are ignored\r\n\t\t\t\t\t\tif (isNaN(value.min) || isNaN(value.max) || meta.data[i].hidden || value.min < 0 || value.max < 0) {\r\n\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tvalues[i] = values[i] || 0;\r\n\t\t\t\t\t\tvalues[i] += value.max;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\thelpers$1.each(valuesPerStack, function(valuesForType) {\r\n\t\t\t\tif (valuesForType.length > 0) {\r\n\t\t\t\t\tvar minVal = helpers$1.min(valuesForType);\r\n\t\t\t\t\tvar maxVal = helpers$1.max(valuesForType);\r\n\t\t\t\t\tme.min = Math.min(me.min, minVal);\r\n\t\t\t\t\tme.max = Math.max(me.max, maxVal);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t} else {\r\n\t\t\tfor (datasetIndex = 0; datasetIndex < datasets.length; datasetIndex++) {\r\n\t\t\t\tmeta = chart.getDatasetMeta(datasetIndex);\r\n\t\t\t\tif (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) {\r\n\t\t\t\t\tdata = datasets[datasetIndex].data;\r\n\t\t\t\t\tfor (i = 0, ilen = data.length; i < ilen; i++) {\r\n\t\t\t\t\t\tvalue = me._parseValue(data[i]);\r\n\t\t\t\t\t\t// invalid, hidden and negative values are ignored\r\n\t\t\t\t\t\tif (isNaN(value.min) || isNaN(value.max) || meta.data[i].hidden || value.min < 0 || value.max < 0) {\r\n\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tme.min = Math.min(value.min, me.min);\r\n\t\t\t\t\t\tme.max = Math.max(value.max, me.max);\r\n\r\n\t\t\t\t\t\tif (value.min !== 0) {\r\n\t\t\t\t\t\t\tme.minNotZero = Math.min(value.min, me.minNotZero);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tme.min = helpers$1.isFinite(me.min) ? me.min : null;\r\n\t\tme.max = helpers$1.isFinite(me.max) ? me.max : null;\r\n\t\tme.minNotZero = helpers$1.isFinite(me.minNotZero) ? me.minNotZero : null;\r\n\r\n\t\t// Common base implementation to handle ticks.min, ticks.max\r\n\t\tthis.handleTickRangeOptions();\r\n\t},\r\n\r\n\thandleTickRangeOptions: function() {\r\n\t\tvar me = this;\r\n\t\tvar tickOpts = me.options.ticks;\r\n\t\tvar DEFAULT_MIN = 1;\r\n\t\tvar DEFAULT_MAX = 10;\r\n\r\n\t\tme.min = nonNegativeOrDefault(tickOpts.min, me.min);\r\n\t\tme.max = nonNegativeOrDefault(tickOpts.max, me.max);\r\n\r\n\t\tif (me.min === me.max) {\r\n\t\t\tif (me.min !== 0 && me.min !== null) {\r\n\t\t\t\tme.min = Math.pow(10, Math.floor(log10(me.min)) - 1);\r\n\t\t\t\tme.max = Math.pow(10, Math.floor(log10(me.max)) + 1);\r\n\t\t\t} else {\r\n\t\t\t\tme.min = DEFAULT_MIN;\r\n\t\t\t\tme.max = DEFAULT_MAX;\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (me.min === null) {\r\n\t\t\tme.min = Math.pow(10, Math.floor(log10(me.max)) - 1);\r\n\t\t}\r\n\t\tif (me.max === null) {\r\n\t\t\tme.max = me.min !== 0\r\n\t\t\t\t? Math.pow(10, Math.floor(log10(me.min)) + 1)\r\n\t\t\t\t: DEFAULT_MAX;\r\n\t\t}\r\n\t\tif (me.minNotZero === null) {\r\n\t\t\tif (me.min > 0) {\r\n\t\t\t\tme.minNotZero = me.min;\r\n\t\t\t} else if (me.max < 1) {\r\n\t\t\t\tme.minNotZero = Math.pow(10, Math.floor(log10(me.max)));\r\n\t\t\t} else {\r\n\t\t\t\tme.minNotZero = DEFAULT_MIN;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tbuildTicks: function() {\r\n\t\tvar me = this;\r\n\t\tvar tickOpts = me.options.ticks;\r\n\t\tvar reverse = !me.isHorizontal();\r\n\r\n\t\tvar generationOptions = {\r\n\t\t\tmin: nonNegativeOrDefault(tickOpts.min),\r\n\t\t\tmax: nonNegativeOrDefault(tickOpts.max)\r\n\t\t};\r\n\t\tvar ticks = me.ticks = generateTicks$1(generationOptions, me);\r\n\r\n\t\t// At this point, we need to update our max and min given the tick values since we have expanded the\r\n\t\t// range of the scale\r\n\t\tme.max = helpers$1.max(ticks);\r\n\t\tme.min = helpers$1.min(ticks);\r\n\r\n\t\tif (tickOpts.reverse) {\r\n\t\t\treverse = !reverse;\r\n\t\t\tme.start = me.max;\r\n\t\t\tme.end = me.min;\r\n\t\t} else {\r\n\t\t\tme.start = me.min;\r\n\t\t\tme.end = me.max;\r\n\t\t}\r\n\t\tif (reverse) {\r\n\t\t\tticks.reverse();\r\n\t\t}\r\n\t},\r\n\r\n\tconvertTicksToLabels: function() {\r\n\t\tthis.tickValues = this.ticks.slice();\r\n\r\n\t\tcore_scale.prototype.convertTicksToLabels.call(this);\r\n\t},\r\n\r\n\t// Get the correct tooltip label\r\n\tgetLabelForIndex: function(index, datasetIndex) {\r\n\t\treturn this._getScaleLabel(this.chart.data.datasets[datasetIndex].data[index]);\r\n\t},\r\n\r\n\tgetPixelForTick: function(index) {\r\n\t\tvar ticks = this.tickValues;\r\n\t\tif (index < 0 || index > ticks.length - 1) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\treturn this.getPixelForValue(ticks[index]);\r\n\t},\r\n\r\n\t/**\r\n\t * Returns the value of the first tick.\r\n\t * @param {number} value - The minimum not zero value.\r\n\t * @return {number} The first tick value.\r\n\t * @private\r\n\t */\r\n\t_getFirstTickValue: function(value) {\r\n\t\tvar exp = Math.floor(log10(value));\r\n\t\tvar significand = Math.floor(value / Math.pow(10, exp));\r\n\r\n\t\treturn significand * Math.pow(10, exp);\r\n\t},\r\n\r\n\t_configure: function() {\r\n\t\tvar me = this;\r\n\t\tvar start = me.min;\r\n\t\tvar offset = 0;\r\n\r\n\t\tcore_scale.prototype._configure.call(me);\r\n\r\n\t\tif (start === 0) {\r\n\t\t\tstart = me._getFirstTickValue(me.minNotZero);\r\n\t\t\toffset = valueOrDefault$b(me.options.ticks.fontSize, core_defaults.global.defaultFontSize) / me._length;\r\n\t\t}\r\n\r\n\t\tme._startValue = log10(start);\r\n\t\tme._valueOffset = offset;\r\n\t\tme._valueRange = (log10(me.max) - log10(start)) / (1 - offset);\r\n\t},\r\n\r\n\tgetPixelForValue: function(value) {\r\n\t\tvar me = this;\r\n\t\tvar decimal = 0;\r\n\r\n\t\tvalue = +me.getRightValue(value);\r\n\r\n\t\tif (value > me.min && value > 0) {\r\n\t\t\tdecimal = (log10(value) - me._startValue) / me._valueRange + me._valueOffset;\r\n\t\t}\r\n\t\treturn me.getPixelForDecimal(decimal);\r\n\t},\r\n\r\n\tgetValueForPixel: function(pixel) {\r\n\t\tvar me = this;\r\n\t\tvar decimal = me.getDecimalForPixel(pixel);\r\n\t\treturn decimal === 0 && me.min === 0\r\n\t\t\t? 0\r\n\t\t\t: Math.pow(10, me._startValue + (decimal - me._valueOffset) * me._valueRange);\r\n\t}\r\n});\r\n\r\n// INTERNAL: static default options, registered in src/index.js\r\nvar _defaults$2 = defaultConfig$2;\nscale_logarithmic._defaults = _defaults$2;\n\nvar valueOrDefault$c = helpers$1.valueOrDefault;\r\nvar valueAtIndexOrDefault$1 = helpers$1.valueAtIndexOrDefault;\r\nvar resolve$4 = helpers$1.options.resolve;\r\n\r\nvar defaultConfig$3 = {\r\n\tdisplay: true,\r\n\r\n\t// Boolean - Whether to animate scaling the chart from the centre\r\n\tanimate: true,\r\n\tposition: 'chartArea',\r\n\r\n\tangleLines: {\r\n\t\tdisplay: true,\r\n\t\tcolor: 'rgba(0,0,0,0.1)',\r\n\t\tlineWidth: 1,\r\n\t\tborderDash: [],\r\n\t\tborderDashOffset: 0.0\r\n\t},\r\n\r\n\tgridLines: {\r\n\t\tcircular: false\r\n\t},\r\n\r\n\t// label settings\r\n\tticks: {\r\n\t\t// Boolean - Show a backdrop to the scale label\r\n\t\tshowLabelBackdrop: true,\r\n\r\n\t\t// String - The colour of the label backdrop\r\n\t\tbackdropColor: 'rgba(255,255,255,0.75)',\r\n\r\n\t\t// Number - The backdrop padding above & below the label in pixels\r\n\t\tbackdropPaddingY: 2,\r\n\r\n\t\t// Number - The backdrop padding to the side of the label in pixels\r\n\t\tbackdropPaddingX: 2,\r\n\r\n\t\tcallback: core_ticks.formatters.linear\r\n\t},\r\n\r\n\tpointLabels: {\r\n\t\t// Boolean - if true, show point labels\r\n\t\tdisplay: true,\r\n\r\n\t\t// Number - Point label font size in pixels\r\n\t\tfontSize: 10,\r\n\r\n\t\t// Function - Used to convert point labels\r\n\t\tcallback: function(label) {\r\n\t\t\treturn label;\r\n\t\t}\r\n\t}\r\n};\r\n\r\nfunction getTickBackdropHeight(opts) {\r\n\tvar tickOpts = opts.ticks;\r\n\r\n\tif (tickOpts.display && opts.display) {\r\n\t\treturn valueOrDefault$c(tickOpts.fontSize, core_defaults.global.defaultFontSize) + tickOpts.backdropPaddingY * 2;\r\n\t}\r\n\treturn 0;\r\n}\r\n\r\nfunction measureLabelSize(ctx, lineHeight, label) {\r\n\tif (helpers$1.isArray(label)) {\r\n\t\treturn {\r\n\t\t\tw: helpers$1.longestText(ctx, ctx.font, label),\r\n\t\t\th: label.length * lineHeight\r\n\t\t};\r\n\t}\r\n\r\n\treturn {\r\n\t\tw: ctx.measureText(label).width,\r\n\t\th: lineHeight\r\n\t};\r\n}\r\n\r\nfunction determineLimits(angle, pos, size, min, max) {\r\n\tif (angle === min || angle === max) {\r\n\t\treturn {\r\n\t\t\tstart: pos - (size / 2),\r\n\t\t\tend: pos + (size / 2)\r\n\t\t};\r\n\t} else if (angle < min || angle > max) {\r\n\t\treturn {\r\n\t\t\tstart: pos - size,\r\n\t\t\tend: pos\r\n\t\t};\r\n\t}\r\n\r\n\treturn {\r\n\t\tstart: pos,\r\n\t\tend: pos + size\r\n\t};\r\n}\r\n\r\n/**\r\n * Helper function to fit a radial linear scale with point labels\r\n */\r\nfunction fitWithPointLabels(scale) {\r\n\r\n\t// Right, this is really confusing and there is a lot of maths going on here\r\n\t// The gist of the problem is here: https://gist.github.com/nnnick/696cc9c55f4b0beb8fe9\r\n\t//\r\n\t// Reaction: https://dl.dropboxusercontent.com/u/34601363/toomuchscience.gif\r\n\t//\r\n\t// Solution:\r\n\t//\r\n\t// We assume the radius of the polygon is half the size of the canvas at first\r\n\t// at each index we check if the text overlaps.\r\n\t//\r\n\t// Where it does, we store that angle and that index.\r\n\t//\r\n\t// After finding the largest index and angle we calculate how much we need to remove\r\n\t// from the shape radius to move the point inwards by that x.\r\n\t//\r\n\t// We average the left and right distances to get the maximum shape radius that can fit in the box\r\n\t// along with labels.\r\n\t//\r\n\t// Once we have that, we can find the centre point for the chart, by taking the x text protrusion\r\n\t// on each side, removing that from the size, halving it and adding the left x protrusion width.\r\n\t//\r\n\t// This will mean we have a shape fitted to the canvas, as large as it can be with the labels\r\n\t// and position it in the most space efficient manner\r\n\t//\r\n\t// https://dl.dropboxusercontent.com/u/34601363/yeahscience.gif\r\n\r\n\tvar plFont = helpers$1.options._parseFont(scale.options.pointLabels);\r\n\r\n\t// Get maximum radius of the polygon. Either half the height (minus the text width) or half the width.\r\n\t// Use this to calculate the offset + change. - Make sure L/R protrusion is at least 0 to stop issues with centre points\r\n\tvar furthestLimits = {\r\n\t\tl: 0,\r\n\t\tr: scale.width,\r\n\t\tt: 0,\r\n\t\tb: scale.height - scale.paddingTop\r\n\t};\r\n\tvar furthestAngles = {};\r\n\tvar i, textSize, pointPosition;\r\n\r\n\tscale.ctx.font = plFont.string;\r\n\tscale._pointLabelSizes = [];\r\n\r\n\tvar valueCount = scale.chart.data.labels.length;\r\n\tfor (i = 0; i < valueCount; i++) {\r\n\t\tpointPosition = scale.getPointPosition(i, scale.drawingArea + 5);\r\n\t\ttextSize = measureLabelSize(scale.ctx, plFont.lineHeight, scale.pointLabels[i]);\r\n\t\tscale._pointLabelSizes[i] = textSize;\r\n\r\n\t\t// Add quarter circle to make degree 0 mean top of circle\r\n\t\tvar angleRadians = scale.getIndexAngle(i);\r\n\t\tvar angle = helpers$1.toDegrees(angleRadians) % 360;\r\n\t\tvar hLimits = determineLimits(angle, pointPosition.x, textSize.w, 0, 180);\r\n\t\tvar vLimits = determineLimits(angle, pointPosition.y, textSize.h, 90, 270);\r\n\r\n\t\tif (hLimits.start < furthestLimits.l) {\r\n\t\t\tfurthestLimits.l = hLimits.start;\r\n\t\t\tfurthestAngles.l = angleRadians;\r\n\t\t}\r\n\r\n\t\tif (hLimits.end > furthestLimits.r) {\r\n\t\t\tfurthestLimits.r = hLimits.end;\r\n\t\t\tfurthestAngles.r = angleRadians;\r\n\t\t}\r\n\r\n\t\tif (vLimits.start < furthestLimits.t) {\r\n\t\t\tfurthestLimits.t = vLimits.start;\r\n\t\t\tfurthestAngles.t = angleRadians;\r\n\t\t}\r\n\r\n\t\tif (vLimits.end > furthestLimits.b) {\r\n\t\t\tfurthestLimits.b = vLimits.end;\r\n\t\t\tfurthestAngles.b = angleRadians;\r\n\t\t}\r\n\t}\r\n\r\n\tscale.setReductions(scale.drawingArea, furthestLimits, furthestAngles);\r\n}\r\n\r\nfunction getTextAlignForAngle(angle) {\r\n\tif (angle === 0 || angle === 180) {\r\n\t\treturn 'center';\r\n\t} else if (angle < 180) {\r\n\t\treturn 'left';\r\n\t}\r\n\r\n\treturn 'right';\r\n}\r\n\r\nfunction fillText(ctx, text, position, lineHeight) {\r\n\tvar y = position.y + lineHeight / 2;\r\n\tvar i, ilen;\r\n\r\n\tif (helpers$1.isArray(text)) {\r\n\t\tfor (i = 0, ilen = text.length; i < ilen; ++i) {\r\n\t\t\tctx.fillText(text[i], position.x, y);\r\n\t\t\ty += lineHeight;\r\n\t\t}\r\n\t} else {\r\n\t\tctx.fillText(text, position.x, y);\r\n\t}\r\n}\r\n\r\nfunction adjustPointPositionForLabelHeight(angle, textSize, position) {\r\n\tif (angle === 90 || angle === 270) {\r\n\t\tposition.y -= (textSize.h / 2);\r\n\t} else if (angle > 270 || angle < 90) {\r\n\t\tposition.y -= textSize.h;\r\n\t}\r\n}\r\n\r\nfunction drawPointLabels(scale) {\r\n\tvar ctx = scale.ctx;\r\n\tvar opts = scale.options;\r\n\tvar pointLabelOpts = opts.pointLabels;\r\n\tvar tickBackdropHeight = getTickBackdropHeight(opts);\r\n\tvar outerDistance = scale.getDistanceFromCenterForValue(opts.ticks.reverse ? scale.min : scale.max);\r\n\tvar plFont = helpers$1.options._parseFont(pointLabelOpts);\r\n\r\n\tctx.save();\r\n\r\n\tctx.font = plFont.string;\r\n\tctx.textBaseline = 'middle';\r\n\r\n\tfor (var i = scale.chart.data.labels.length - 1; i >= 0; i--) {\r\n\t\t// Extra pixels out for some label spacing\r\n\t\tvar extra = (i === 0 ? tickBackdropHeight / 2 : 0);\r\n\t\tvar pointLabelPosition = scale.getPointPosition(i, outerDistance + extra + 5);\r\n\r\n\t\t// Keep this in loop since we may support array properties here\r\n\t\tvar pointLabelFontColor = valueAtIndexOrDefault$1(pointLabelOpts.fontColor, i, core_defaults.global.defaultFontColor);\r\n\t\tctx.fillStyle = pointLabelFontColor;\r\n\r\n\t\tvar angleRadians = scale.getIndexAngle(i);\r\n\t\tvar angle = helpers$1.toDegrees(angleRadians);\r\n\t\tctx.textAlign = getTextAlignForAngle(angle);\r\n\t\tadjustPointPositionForLabelHeight(angle, scale._pointLabelSizes[i], pointLabelPosition);\r\n\t\tfillText(ctx, scale.pointLabels[i], pointLabelPosition, plFont.lineHeight);\r\n\t}\r\n\tctx.restore();\r\n}\r\n\r\nfunction drawRadiusLine(scale, gridLineOpts, radius, index) {\r\n\tvar ctx = scale.ctx;\r\n\tvar circular = gridLineOpts.circular;\r\n\tvar valueCount = scale.chart.data.labels.length;\r\n\tvar lineColor = valueAtIndexOrDefault$1(gridLineOpts.color, index - 1);\r\n\tvar lineWidth = valueAtIndexOrDefault$1(gridLineOpts.lineWidth, index - 1);\r\n\tvar pointPosition;\r\n\r\n\tif ((!circular && !valueCount) || !lineColor || !lineWidth) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tctx.save();\r\n\tctx.strokeStyle = lineColor;\r\n\tctx.lineWidth = lineWidth;\r\n\tif (ctx.setLineDash) {\r\n\t\tctx.setLineDash(gridLineOpts.borderDash || []);\r\n\t\tctx.lineDashOffset = gridLineOpts.borderDashOffset || 0.0;\r\n\t}\r\n\r\n\tctx.beginPath();\r\n\tif (circular) {\r\n\t\t// Draw circular arcs between the points\r\n\t\tctx.arc(scale.xCenter, scale.yCenter, radius, 0, Math.PI * 2);\r\n\t} else {\r\n\t\t// Draw straight lines connecting each index\r\n\t\tpointPosition = scale.getPointPosition(0, radius);\r\n\t\tctx.moveTo(pointPosition.x, pointPosition.y);\r\n\r\n\t\tfor (var i = 1; i < valueCount; i++) {\r\n\t\t\tpointPosition = scale.getPointPosition(i, radius);\r\n\t\t\tctx.lineTo(pointPosition.x, pointPosition.y);\r\n\t\t}\r\n\t}\r\n\tctx.closePath();\r\n\tctx.stroke();\r\n\tctx.restore();\r\n}\r\n\r\nfunction numberOrZero(param) {\r\n\treturn helpers$1.isNumber(param) ? param : 0;\r\n}\r\n\r\nvar scale_radialLinear = scale_linearbase.extend({\r\n\tsetDimensions: function() {\r\n\t\tvar me = this;\r\n\r\n\t\t// Set the unconstrained dimension before label rotation\r\n\t\tme.width = me.maxWidth;\r\n\t\tme.height = me.maxHeight;\r\n\t\tme.paddingTop = getTickBackdropHeight(me.options) / 2;\r\n\t\tme.xCenter = Math.floor(me.width / 2);\r\n\t\tme.yCenter = Math.floor((me.height - me.paddingTop) / 2);\r\n\t\tme.drawingArea = Math.min(me.height - me.paddingTop, me.width) / 2;\r\n\t},\r\n\r\n\tdetermineDataLimits: function() {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar min = Number.POSITIVE_INFINITY;\r\n\t\tvar max = Number.NEGATIVE_INFINITY;\r\n\r\n\t\thelpers$1.each(chart.data.datasets, function(dataset, datasetIndex) {\r\n\t\t\tif (chart.isDatasetVisible(datasetIndex)) {\r\n\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\r\n\r\n\t\t\t\thelpers$1.each(dataset.data, function(rawValue, index) {\r\n\t\t\t\t\tvar value = +me.getRightValue(rawValue);\r\n\t\t\t\t\tif (isNaN(value) || meta.data[index].hidden) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tmin = Math.min(value, min);\r\n\t\t\t\t\tmax = Math.max(value, max);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tme.min = (min === Number.POSITIVE_INFINITY ? 0 : min);\r\n\t\tme.max = (max === Number.NEGATIVE_INFINITY ? 0 : max);\r\n\r\n\t\t// Common base implementation to handle ticks.min, ticks.max, ticks.beginAtZero\r\n\t\tme.handleTickRangeOptions();\r\n\t},\r\n\r\n\t// Returns the maximum number of ticks based on the scale dimension\r\n\t_computeTickLimit: function() {\r\n\t\treturn Math.ceil(this.drawingArea / getTickBackdropHeight(this.options));\r\n\t},\r\n\r\n\tconvertTicksToLabels: function() {\r\n\t\tvar me = this;\r\n\r\n\t\tscale_linearbase.prototype.convertTicksToLabels.call(me);\r\n\r\n\t\t// Point labels\r\n\t\tme.pointLabels = me.chart.data.labels.map(function() {\r\n\t\t\tvar label = helpers$1.callback(me.options.pointLabels.callback, arguments, me);\r\n\t\t\treturn label || label === 0 ? label : '';\r\n\t\t});\r\n\t},\r\n\r\n\tgetLabelForIndex: function(index, datasetIndex) {\r\n\t\treturn +this.getRightValue(this.chart.data.datasets[datasetIndex].data[index]);\r\n\t},\r\n\r\n\tfit: function() {\r\n\t\tvar me = this;\r\n\t\tvar opts = me.options;\r\n\r\n\t\tif (opts.display && opts.pointLabels.display) {\r\n\t\t\tfitWithPointLabels(me);\r\n\t\t} else {\r\n\t\t\tme.setCenterPoint(0, 0, 0, 0);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Set radius reductions and determine new radius and center point\r\n\t * @private\r\n\t */\r\n\tsetReductions: function(largestPossibleRadius, furthestLimits, furthestAngles) {\r\n\t\tvar me = this;\r\n\t\tvar radiusReductionLeft = furthestLimits.l / Math.sin(furthestAngles.l);\r\n\t\tvar radiusReductionRight = Math.max(furthestLimits.r - me.width, 0) / Math.sin(furthestAngles.r);\r\n\t\tvar radiusReductionTop = -furthestLimits.t / Math.cos(furthestAngles.t);\r\n\t\tvar radiusReductionBottom = -Math.max(furthestLimits.b - (me.height - me.paddingTop), 0) / Math.cos(furthestAngles.b);\r\n\r\n\t\tradiusReductionLeft = numberOrZero(radiusReductionLeft);\r\n\t\tradiusReductionRight = numberOrZero(radiusReductionRight);\r\n\t\tradiusReductionTop = numberOrZero(radiusReductionTop);\r\n\t\tradiusReductionBottom = numberOrZero(radiusReductionBottom);\r\n\r\n\t\tme.drawingArea = Math.min(\r\n\t\t\tMath.floor(largestPossibleRadius - (radiusReductionLeft + radiusReductionRight) / 2),\r\n\t\t\tMath.floor(largestPossibleRadius - (radiusReductionTop + radiusReductionBottom) / 2));\r\n\t\tme.setCenterPoint(radiusReductionLeft, radiusReductionRight, radiusReductionTop, radiusReductionBottom);\r\n\t},\r\n\r\n\tsetCenterPoint: function(leftMovement, rightMovement, topMovement, bottomMovement) {\r\n\t\tvar me = this;\r\n\t\tvar maxRight = me.width - rightMovement - me.drawingArea;\r\n\t\tvar maxLeft = leftMovement + me.drawingArea;\r\n\t\tvar maxTop = topMovement + me.drawingArea;\r\n\t\tvar maxBottom = (me.height - me.paddingTop) - bottomMovement - me.drawingArea;\r\n\r\n\t\tme.xCenter = Math.floor(((maxLeft + maxRight) / 2) + me.left);\r\n\t\tme.yCenter = Math.floor(((maxTop + maxBottom) / 2) + me.top + me.paddingTop);\r\n\t},\r\n\r\n\tgetIndexAngle: function(index) {\r\n\t\tvar chart = this.chart;\r\n\t\tvar angleMultiplier = 360 / chart.data.labels.length;\r\n\t\tvar options = chart.options || {};\r\n\t\tvar startAngle = options.startAngle || 0;\r\n\r\n\t\t// Start from the top instead of right, so remove a quarter of the circle\r\n\t\tvar angle = (index * angleMultiplier + startAngle) % 360;\r\n\r\n\t\treturn (angle < 0 ? angle + 360 : angle) * Math.PI * 2 / 360;\r\n\t},\r\n\r\n\tgetDistanceFromCenterForValue: function(value) {\r\n\t\tvar me = this;\r\n\r\n\t\tif (helpers$1.isNullOrUndef(value)) {\r\n\t\t\treturn NaN;\r\n\t\t}\r\n\r\n\t\t// Take into account half font size + the yPadding of the top value\r\n\t\tvar scalingFactor = me.drawingArea / (me.max - me.min);\r\n\t\tif (me.options.ticks.reverse) {\r\n\t\t\treturn (me.max - value) * scalingFactor;\r\n\t\t}\r\n\t\treturn (value - me.min) * scalingFactor;\r\n\t},\r\n\r\n\tgetPointPosition: function(index, distanceFromCenter) {\r\n\t\tvar me = this;\r\n\t\tvar thisAngle = me.getIndexAngle(index) - (Math.PI / 2);\r\n\t\treturn {\r\n\t\t\tx: Math.cos(thisAngle) * distanceFromCenter + me.xCenter,\r\n\t\t\ty: Math.sin(thisAngle) * distanceFromCenter + me.yCenter\r\n\t\t};\r\n\t},\r\n\r\n\tgetPointPositionForValue: function(index, value) {\r\n\t\treturn this.getPointPosition(index, this.getDistanceFromCenterForValue(value));\r\n\t},\r\n\r\n\tgetBasePosition: function(index) {\r\n\t\tvar me = this;\r\n\t\tvar min = me.min;\r\n\t\tvar max = me.max;\r\n\r\n\t\treturn me.getPointPositionForValue(index || 0,\r\n\t\t\tme.beginAtZero ? 0 :\r\n\t\t\tmin < 0 && max < 0 ? max :\r\n\t\t\tmin > 0 && max > 0 ? min :\r\n\t\t\t0);\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_drawGrid: function() {\r\n\t\tvar me = this;\r\n\t\tvar ctx = me.ctx;\r\n\t\tvar opts = me.options;\r\n\t\tvar gridLineOpts = opts.gridLines;\r\n\t\tvar angleLineOpts = opts.angleLines;\r\n\t\tvar lineWidth = valueOrDefault$c(angleLineOpts.lineWidth, gridLineOpts.lineWidth);\r\n\t\tvar lineColor = valueOrDefault$c(angleLineOpts.color, gridLineOpts.color);\r\n\t\tvar i, offset, position;\r\n\r\n\t\tif (opts.pointLabels.display) {\r\n\t\t\tdrawPointLabels(me);\r\n\t\t}\r\n\r\n\t\tif (gridLineOpts.display) {\r\n\t\t\thelpers$1.each(me.ticks, function(label, index) {\r\n\t\t\t\tif (index !== 0) {\r\n\t\t\t\t\toffset = me.getDistanceFromCenterForValue(me.ticksAsNumbers[index]);\r\n\t\t\t\t\tdrawRadiusLine(me, gridLineOpts, offset, index);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (angleLineOpts.display && lineWidth && lineColor) {\r\n\t\t\tctx.save();\r\n\t\t\tctx.lineWidth = lineWidth;\r\n\t\t\tctx.strokeStyle = lineColor;\r\n\t\t\tif (ctx.setLineDash) {\r\n\t\t\t\tctx.setLineDash(resolve$4([angleLineOpts.borderDash, gridLineOpts.borderDash, []]));\r\n\t\t\t\tctx.lineDashOffset = resolve$4([angleLineOpts.borderDashOffset, gridLineOpts.borderDashOffset, 0.0]);\r\n\t\t\t}\r\n\r\n\t\t\tfor (i = me.chart.data.labels.length - 1; i >= 0; i--) {\r\n\t\t\t\toffset = me.getDistanceFromCenterForValue(opts.ticks.reverse ? me.min : me.max);\r\n\t\t\t\tposition = me.getPointPosition(i, offset);\r\n\t\t\t\tctx.beginPath();\r\n\t\t\t\tctx.moveTo(me.xCenter, me.yCenter);\r\n\t\t\t\tctx.lineTo(position.x, position.y);\r\n\t\t\t\tctx.stroke();\r\n\t\t\t}\r\n\r\n\t\t\tctx.restore();\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_drawLabels: function() {\r\n\t\tvar me = this;\r\n\t\tvar ctx = me.ctx;\r\n\t\tvar opts = me.options;\r\n\t\tvar tickOpts = opts.ticks;\r\n\r\n\t\tif (!tickOpts.display) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar startAngle = me.getIndexAngle(0);\r\n\t\tvar tickFont = helpers$1.options._parseFont(tickOpts);\r\n\t\tvar tickFontColor = valueOrDefault$c(tickOpts.fontColor, core_defaults.global.defaultFontColor);\r\n\t\tvar offset, width;\r\n\r\n\t\tctx.save();\r\n\t\tctx.font = tickFont.string;\r\n\t\tctx.translate(me.xCenter, me.yCenter);\r\n\t\tctx.rotate(startAngle);\r\n\t\tctx.textAlign = 'center';\r\n\t\tctx.textBaseline = 'middle';\r\n\r\n\t\thelpers$1.each(me.ticks, function(label, index) {\r\n\t\t\tif (index === 0 && !tickOpts.reverse) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\toffset = me.getDistanceFromCenterForValue(me.ticksAsNumbers[index]);\r\n\r\n\t\t\tif (tickOpts.showLabelBackdrop) {\r\n\t\t\t\twidth = ctx.measureText(label).width;\r\n\t\t\t\tctx.fillStyle = tickOpts.backdropColor;\r\n\r\n\t\t\t\tctx.fillRect(\r\n\t\t\t\t\t-width / 2 - tickOpts.backdropPaddingX,\r\n\t\t\t\t\t-offset - tickFont.size / 2 - tickOpts.backdropPaddingY,\r\n\t\t\t\t\twidth + tickOpts.backdropPaddingX * 2,\r\n\t\t\t\t\ttickFont.size + tickOpts.backdropPaddingY * 2\r\n\t\t\t\t);\r\n\t\t\t}\r\n\r\n\t\t\tctx.fillStyle = tickFontColor;\r\n\t\t\tctx.fillText(label, 0, -offset);\r\n\t\t});\r\n\r\n\t\tctx.restore();\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_drawTitle: helpers$1.noop\r\n});\r\n\r\n// INTERNAL: static default options, registered in src/index.js\r\nvar _defaults$3 = defaultConfig$3;\nscale_radialLinear._defaults = _defaults$3;\n\nvar deprecated$1 = helpers$1._deprecated;\r\nvar resolve$5 = helpers$1.options.resolve;\r\nvar valueOrDefault$d = helpers$1.valueOrDefault;\r\n\r\n// Integer constants are from the ES6 spec.\r\nvar MIN_INTEGER = Number.MIN_SAFE_INTEGER || -9007199254740991;\r\nvar MAX_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991;\r\n\r\nvar INTERVALS = {\r\n\tmillisecond: {\r\n\t\tcommon: true,\r\n\t\tsize: 1,\r\n\t\tsteps: 1000\r\n\t},\r\n\tsecond: {\r\n\t\tcommon: true,\r\n\t\tsize: 1000,\r\n\t\tsteps: 60\r\n\t},\r\n\tminute: {\r\n\t\tcommon: true,\r\n\t\tsize: 60000,\r\n\t\tsteps: 60\r\n\t},\r\n\thour: {\r\n\t\tcommon: true,\r\n\t\tsize: 3600000,\r\n\t\tsteps: 24\r\n\t},\r\n\tday: {\r\n\t\tcommon: true,\r\n\t\tsize: 86400000,\r\n\t\tsteps: 30\r\n\t},\r\n\tweek: {\r\n\t\tcommon: false,\r\n\t\tsize: 604800000,\r\n\t\tsteps: 4\r\n\t},\r\n\tmonth: {\r\n\t\tcommon: true,\r\n\t\tsize: 2.628e9,\r\n\t\tsteps: 12\r\n\t},\r\n\tquarter: {\r\n\t\tcommon: false,\r\n\t\tsize: 7.884e9,\r\n\t\tsteps: 4\r\n\t},\r\n\tyear: {\r\n\t\tcommon: true,\r\n\t\tsize: 3.154e10\r\n\t}\r\n};\r\n\r\nvar UNITS = Object.keys(INTERVALS);\r\n\r\nfunction sorter(a, b) {\r\n\treturn a - b;\r\n}\r\n\r\nfunction arrayUnique(items) {\r\n\tvar hash = {};\r\n\tvar out = [];\r\n\tvar i, ilen, item;\r\n\r\n\tfor (i = 0, ilen = items.length; i < ilen; ++i) {\r\n\t\titem = items[i];\r\n\t\tif (!hash[item]) {\r\n\t\t\thash[item] = true;\r\n\t\t\tout.push(item);\r\n\t\t}\r\n\t}\r\n\r\n\treturn out;\r\n}\r\n\r\nfunction getMin(options) {\r\n\treturn helpers$1.valueOrDefault(options.time.min, options.ticks.min);\r\n}\r\n\r\nfunction getMax(options) {\r\n\treturn helpers$1.valueOrDefault(options.time.max, options.ticks.max);\r\n}\r\n\r\n/**\r\n * Returns an array of {time, pos} objects used to interpolate a specific `time` or position\r\n * (`pos`) on the scale, by searching entries before and after the requested value. `pos` is\r\n * a decimal between 0 and 1: 0 being the start of the scale (left or top) and 1 the other\r\n * extremity (left + width or top + height). Note that it would be more optimized to directly\r\n * store pre-computed pixels, but the scale dimensions are not guaranteed at the time we need\r\n * to create the lookup table. The table ALWAYS contains at least two items: min and max.\r\n *\r\n * @param {number[]} timestamps - timestamps sorted from lowest to highest.\r\n * @param {string} distribution - If 'linear', timestamps will be spread linearly along the min\r\n * and max range, so basically, the table will contains only two items: {min, 0} and {max, 1}.\r\n * If 'series', timestamps will be positioned at the same distance from each other. In this\r\n * case, only timestamps that break the time linearity are registered, meaning that in the\r\n * best case, all timestamps are linear, the table contains only min and max.\r\n */\r\nfunction buildLookupTable(timestamps, min, max, distribution) {\r\n\tif (distribution === 'linear' || !timestamps.length) {\r\n\t\treturn [\r\n\t\t\t{time: min, pos: 0},\r\n\t\t\t{time: max, pos: 1}\r\n\t\t];\r\n\t}\r\n\r\n\tvar table = [];\r\n\tvar items = [min];\r\n\tvar i, ilen, prev, curr, next;\r\n\r\n\tfor (i = 0, ilen = timestamps.length; i < ilen; ++i) {\r\n\t\tcurr = timestamps[i];\r\n\t\tif (curr > min && curr < max) {\r\n\t\t\titems.push(curr);\r\n\t\t}\r\n\t}\r\n\r\n\titems.push(max);\r\n\r\n\tfor (i = 0, ilen = items.length; i < ilen; ++i) {\r\n\t\tnext = items[i + 1];\r\n\t\tprev = items[i - 1];\r\n\t\tcurr = items[i];\r\n\r\n\t\t// only add points that breaks the scale linearity\r\n\t\tif (prev === undefined || next === undefined || Math.round((next + prev) / 2) !== curr) {\r\n\t\t\ttable.push({time: curr, pos: i / (ilen - 1)});\r\n\t\t}\r\n\t}\r\n\r\n\treturn table;\r\n}\r\n\r\n// @see adapted from https://www.anujgakhar.com/2014/03/01/binary-search-in-javascript/\r\nfunction lookup(table, key, value) {\r\n\tvar lo = 0;\r\n\tvar hi = table.length - 1;\r\n\tvar mid, i0, i1;\r\n\r\n\twhile (lo >= 0 && lo <= hi) {\r\n\t\tmid = (lo + hi) >> 1;\r\n\t\ti0 = table[mid - 1] || null;\r\n\t\ti1 = table[mid];\r\n\r\n\t\tif (!i0) {\r\n\t\t\t// given value is outside table (before first item)\r\n\t\t\treturn {lo: null, hi: i1};\r\n\t\t} else if (i1[key] < value) {\r\n\t\t\tlo = mid + 1;\r\n\t\t} else if (i0[key] > value) {\r\n\t\t\thi = mid - 1;\r\n\t\t} else {\r\n\t\t\treturn {lo: i0, hi: i1};\r\n\t\t}\r\n\t}\r\n\r\n\t// given value is outside table (after last item)\r\n\treturn {lo: i1, hi: null};\r\n}\r\n\r\n/**\r\n * Linearly interpolates the given source `value` using the table items `skey` values and\r\n * returns the associated `tkey` value. For example, interpolate(table, 'time', 42, 'pos')\r\n * returns the position for a timestamp equal to 42. If value is out of bounds, values at\r\n * index [0, 1] or [n - 1, n] are used for the interpolation.\r\n */\r\nfunction interpolate$1(table, skey, sval, tkey) {\r\n\tvar range = lookup(table, skey, sval);\r\n\r\n\t// Note: the lookup table ALWAYS contains at least 2 items (min and max)\r\n\tvar prev = !range.lo ? table[0] : !range.hi ? table[table.length - 2] : range.lo;\r\n\tvar next = !range.lo ? table[1] : !range.hi ? table[table.length - 1] : range.hi;\r\n\r\n\tvar span = next[skey] - prev[skey];\r\n\tvar ratio = span ? (sval - prev[skey]) / span : 0;\r\n\tvar offset = (next[tkey] - prev[tkey]) * ratio;\r\n\r\n\treturn prev[tkey] + offset;\r\n}\r\n\r\nfunction toTimestamp(scale, input) {\r\n\tvar adapter = scale._adapter;\r\n\tvar options = scale.options.time;\r\n\tvar parser = options.parser;\r\n\tvar format = parser || options.format;\r\n\tvar value = input;\r\n\r\n\tif (typeof parser === 'function') {\r\n\t\tvalue = parser(value);\r\n\t}\r\n\r\n\t// Only parse if its not a timestamp already\r\n\tif (!helpers$1.isFinite(value)) {\r\n\t\tvalue = typeof format === 'string'\r\n\t\t\t? adapter.parse(value, format)\r\n\t\t\t: adapter.parse(value);\r\n\t}\r\n\r\n\tif (value !== null) {\r\n\t\treturn +value;\r\n\t}\r\n\r\n\t// Labels are in an incompatible format and no `parser` has been provided.\r\n\t// The user might still use the deprecated `format` option for parsing.\r\n\tif (!parser && typeof format === 'function') {\r\n\t\tvalue = format(input);\r\n\r\n\t\t// `format` could return something else than a timestamp, if so, parse it\r\n\t\tif (!helpers$1.isFinite(value)) {\r\n\t\t\tvalue = adapter.parse(value);\r\n\t\t}\r\n\t}\r\n\r\n\treturn value;\r\n}\r\n\r\nfunction parse(scale, input) {\r\n\tif (helpers$1.isNullOrUndef(input)) {\r\n\t\treturn null;\r\n\t}\r\n\r\n\tvar options = scale.options.time;\r\n\tvar value = toTimestamp(scale, scale.getRightValue(input));\r\n\tif (value === null) {\r\n\t\treturn value;\r\n\t}\r\n\r\n\tif (options.round) {\r\n\t\tvalue = +scale._adapter.startOf(value, options.round);\r\n\t}\r\n\r\n\treturn value;\r\n}\r\n\r\n/**\r\n * Figures out what unit results in an appropriate number of auto-generated ticks\r\n */\r\nfunction determineUnitForAutoTicks(minUnit, min, max, capacity) {\r\n\tvar ilen = UNITS.length;\r\n\tvar i, interval, factor;\r\n\r\n\tfor (i = UNITS.indexOf(minUnit); i < ilen - 1; ++i) {\r\n\t\tinterval = INTERVALS[UNITS[i]];\r\n\t\tfactor = interval.steps ? interval.steps : MAX_INTEGER;\r\n\r\n\t\tif (interval.common && Math.ceil((max - min) / (factor * interval.size)) <= capacity) {\r\n\t\t\treturn UNITS[i];\r\n\t\t}\r\n\t}\r\n\r\n\treturn UNITS[ilen - 1];\r\n}\r\n\r\n/**\r\n * Figures out what unit to format a set of ticks with\r\n */\r\nfunction determineUnitForFormatting(scale, numTicks, minUnit, min, max) {\r\n\tvar i, unit;\r\n\r\n\tfor (i = UNITS.length - 1; i >= UNITS.indexOf(minUnit); i--) {\r\n\t\tunit = UNITS[i];\r\n\t\tif (INTERVALS[unit].common && scale._adapter.diff(max, min, unit) >= numTicks - 1) {\r\n\t\t\treturn unit;\r\n\t\t}\r\n\t}\r\n\r\n\treturn UNITS[minUnit ? UNITS.indexOf(minUnit) : 0];\r\n}\r\n\r\nfunction determineMajorUnit(unit) {\r\n\tfor (var i = UNITS.indexOf(unit) + 1, ilen = UNITS.length; i < ilen; ++i) {\r\n\t\tif (INTERVALS[UNITS[i]].common) {\r\n\t\t\treturn UNITS[i];\r\n\t\t}\r\n\t}\r\n}\r\n\r\n/**\r\n * Generates a maximum of `capacity` timestamps between min and max, rounded to the\r\n * `minor` unit using the given scale time `options`.\r\n * Important: this method can return ticks outside the min and max range, it's the\r\n * responsibility of the calling code to clamp values if needed.\r\n */\r\nfunction generate(scale, min, max, capacity) {\r\n\tvar adapter = scale._adapter;\r\n\tvar options = scale.options;\r\n\tvar timeOpts = options.time;\r\n\tvar minor = timeOpts.unit || determineUnitForAutoTicks(timeOpts.minUnit, min, max, capacity);\r\n\tvar stepSize = resolve$5([timeOpts.stepSize, timeOpts.unitStepSize, 1]);\r\n\tvar weekday = minor === 'week' ? timeOpts.isoWeekday : false;\r\n\tvar first = min;\r\n\tvar ticks = [];\r\n\tvar time;\r\n\r\n\t// For 'week' unit, handle the first day of week option\r\n\tif (weekday) {\r\n\t\tfirst = +adapter.startOf(first, 'isoWeek', weekday);\r\n\t}\r\n\r\n\t// Align first ticks on unit\r\n\tfirst = +adapter.startOf(first, weekday ? 'day' : minor);\r\n\r\n\t// Prevent browser from freezing in case user options request millions of milliseconds\r\n\tif (adapter.diff(max, min, minor) > 100000 * stepSize) {\r\n\t\tthrow min + ' and ' + max + ' are too far apart with stepSize of ' + stepSize + ' ' + minor;\r\n\t}\r\n\r\n\tfor (time = first; time < max; time = +adapter.add(time, stepSize, minor)) {\r\n\t\tticks.push(time);\r\n\t}\r\n\r\n\tif (time === max || options.bounds === 'ticks') {\r\n\t\tticks.push(time);\r\n\t}\r\n\r\n\treturn ticks;\r\n}\r\n\r\n/**\r\n * Returns the start and end offsets from edges in the form of {start, end}\r\n * where each value is a relative width to the scale and ranges between 0 and 1.\r\n * They add extra margins on the both sides by scaling down the original scale.\r\n * Offsets are added when the `offset` option is true.\r\n */\r\nfunction computeOffsets(table, ticks, min, max, options) {\r\n\tvar start = 0;\r\n\tvar end = 0;\r\n\tvar first, last;\r\n\r\n\tif (options.offset && ticks.length) {\r\n\t\tfirst = interpolate$1(table, 'time', ticks[0], 'pos');\r\n\t\tif (ticks.length === 1) {\r\n\t\t\tstart = 1 - first;\r\n\t\t} else {\r\n\t\t\tstart = (interpolate$1(table, 'time', ticks[1], 'pos') - first) / 2;\r\n\t\t}\r\n\t\tlast = interpolate$1(table, 'time', ticks[ticks.length - 1], 'pos');\r\n\t\tif (ticks.length === 1) {\r\n\t\t\tend = last;\r\n\t\t} else {\r\n\t\t\tend = (last - interpolate$1(table, 'time', ticks[ticks.length - 2], 'pos')) / 2;\r\n\t\t}\r\n\t}\r\n\r\n\treturn {start: start, end: end, factor: 1 / (start + 1 + end)};\r\n}\r\n\r\nfunction setMajorTicks(scale, ticks, map, majorUnit) {\r\n\tvar adapter = scale._adapter;\r\n\tvar first = +adapter.startOf(ticks[0].value, majorUnit);\r\n\tvar last = ticks[ticks.length - 1].value;\r\n\tvar major, index;\r\n\r\n\tfor (major = first; major <= last; major = +adapter.add(major, 1, majorUnit)) {\r\n\t\tindex = map[major];\r\n\t\tif (index >= 0) {\r\n\t\t\tticks[index].major = true;\r\n\t\t}\r\n\t}\r\n\treturn ticks;\r\n}\r\n\r\nfunction ticksFromTimestamps(scale, values, majorUnit) {\r\n\tvar ticks = [];\r\n\tvar map = {};\r\n\tvar ilen = values.length;\r\n\tvar i, value;\r\n\r\n\tfor (i = 0; i < ilen; ++i) {\r\n\t\tvalue = values[i];\r\n\t\tmap[value] = i;\r\n\r\n\t\tticks.push({\r\n\t\t\tvalue: value,\r\n\t\t\tmajor: false\r\n\t\t});\r\n\t}\r\n\r\n\t// We set the major ticks separately from the above loop because calling startOf for every tick\r\n\t// is expensive when there is a large number of ticks\r\n\treturn (ilen === 0 || !majorUnit) ? ticks : setMajorTicks(scale, ticks, map, majorUnit);\r\n}\r\n\r\nvar defaultConfig$4 = {\r\n\tposition: 'bottom',\r\n\r\n\t/**\r\n\t * Data distribution along the scale:\r\n\t * - 'linear': data are spread according to their time (distances can vary),\r\n\t * - 'series': data are spread at the same distance from each other.\r\n\t * @see https://github.com/chartjs/Chart.js/pull/4507\r\n\t * @since 2.7.0\r\n\t */\r\n\tdistribution: 'linear',\r\n\r\n\t/**\r\n\t * Scale boundary strategy (bypassed by min/max time options)\r\n\t * - `data`: make sure data are fully visible, ticks outside are removed\r\n\t * - `ticks`: make sure ticks are fully visible, data outside are truncated\r\n\t * @see https://github.com/chartjs/Chart.js/pull/4556\r\n\t * @since 2.7.0\r\n\t */\r\n\tbounds: 'data',\r\n\r\n\tadapters: {},\r\n\ttime: {\r\n\t\tparser: false, // false == a pattern string from https://momentjs.com/docs/#/parsing/string-format/ or a custom callback that converts its argument to a moment\r\n\t\tunit: false, // false == automatic or override with week, month, year, etc.\r\n\t\tround: false, // none, or override with week, month, year, etc.\r\n\t\tdisplayFormat: false, // DEPRECATED\r\n\t\tisoWeekday: false, // override week start day - see https://momentjs.com/docs/#/get-set/iso-weekday/\r\n\t\tminUnit: 'millisecond',\r\n\t\tdisplayFormats: {}\r\n\t},\r\n\tticks: {\r\n\t\tautoSkip: false,\r\n\r\n\t\t/**\r\n\t\t * Ticks generation input values:\r\n\t\t * - 'auto': generates \"optimal\" ticks based on scale size and time options.\r\n\t\t * - 'data': generates ticks from data (including labels from data {t|x|y} objects).\r\n\t\t * - 'labels': generates ticks from user given `data.labels` values ONLY.\r\n\t\t * @see https://github.com/chartjs/Chart.js/pull/4507\r\n\t\t * @since 2.7.0\r\n\t\t */\r\n\t\tsource: 'auto',\r\n\r\n\t\tmajor: {\r\n\t\t\tenabled: false\r\n\t\t}\r\n\t}\r\n};\r\n\r\nvar scale_time = core_scale.extend({\r\n\tinitialize: function() {\r\n\t\tthis.mergeTicksOptions();\r\n\t\tcore_scale.prototype.initialize.call(this);\r\n\t},\r\n\r\n\tupdate: function() {\r\n\t\tvar me = this;\r\n\t\tvar options = me.options;\r\n\t\tvar time = options.time || (options.time = {});\r\n\t\tvar adapter = me._adapter = new core_adapters._date(options.adapters.date);\r\n\r\n\t\t// DEPRECATIONS: output a message only one time per update\r\n\t\tdeprecated$1('time scale', time.format, 'time.format', 'time.parser');\r\n\t\tdeprecated$1('time scale', time.min, 'time.min', 'ticks.min');\r\n\t\tdeprecated$1('time scale', time.max, 'time.max', 'ticks.max');\r\n\r\n\t\t// Backward compatibility: before introducing adapter, `displayFormats` was\r\n\t\t// supposed to contain *all* unit/string pairs but this can't be resolved\r\n\t\t// when loading the scale (adapters are loaded afterward), so let's populate\r\n\t\t// missing formats on update\r\n\t\thelpers$1.mergeIf(time.displayFormats, adapter.formats());\r\n\r\n\t\treturn core_scale.prototype.update.apply(me, arguments);\r\n\t},\r\n\r\n\t/**\r\n\t * Allows data to be referenced via 't' attribute\r\n\t */\r\n\tgetRightValue: function(rawValue) {\r\n\t\tif (rawValue && rawValue.t !== undefined) {\r\n\t\t\trawValue = rawValue.t;\r\n\t\t}\r\n\t\treturn core_scale.prototype.getRightValue.call(this, rawValue);\r\n\t},\r\n\r\n\tdetermineDataLimits: function() {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar adapter = me._adapter;\r\n\t\tvar options = me.options;\r\n\t\tvar unit = options.time.unit || 'day';\r\n\t\tvar min = MAX_INTEGER;\r\n\t\tvar max = MIN_INTEGER;\r\n\t\tvar timestamps = [];\r\n\t\tvar datasets = [];\r\n\t\tvar labels = [];\r\n\t\tvar i, j, ilen, jlen, data, timestamp, labelsAdded;\r\n\t\tvar dataLabels = me._getLabels();\r\n\r\n\t\tfor (i = 0, ilen = dataLabels.length; i < ilen; ++i) {\r\n\t\t\tlabels.push(parse(me, dataLabels[i]));\r\n\t\t}\r\n\r\n\t\tfor (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) {\r\n\t\t\tif (chart.isDatasetVisible(i)) {\r\n\t\t\t\tdata = chart.data.datasets[i].data;\r\n\r\n\t\t\t\t// Let's consider that all data have the same format.\r\n\t\t\t\tif (helpers$1.isObject(data[0])) {\r\n\t\t\t\t\tdatasets[i] = [];\r\n\r\n\t\t\t\t\tfor (j = 0, jlen = data.length; j < jlen; ++j) {\r\n\t\t\t\t\t\ttimestamp = parse(me, data[j]);\r\n\t\t\t\t\t\ttimestamps.push(timestamp);\r\n\t\t\t\t\t\tdatasets[i][j] = timestamp;\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdatasets[i] = labels.slice(0);\r\n\t\t\t\t\tif (!labelsAdded) {\r\n\t\t\t\t\t\ttimestamps = timestamps.concat(labels);\r\n\t\t\t\t\t\tlabelsAdded = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tdatasets[i] = [];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (labels.length) {\r\n\t\t\tmin = Math.min(min, labels[0]);\r\n\t\t\tmax = Math.max(max, labels[labels.length - 1]);\r\n\t\t}\r\n\r\n\t\tif (timestamps.length) {\r\n\t\t\ttimestamps = ilen > 1 ? arrayUnique(timestamps).sort(sorter) : timestamps.sort(sorter);\r\n\t\t\tmin = Math.min(min, timestamps[0]);\r\n\t\t\tmax = Math.max(max, timestamps[timestamps.length - 1]);\r\n\t\t}\r\n\r\n\t\tmin = parse(me, getMin(options)) || min;\r\n\t\tmax = parse(me, getMax(options)) || max;\r\n\r\n\t\t// In case there is no valid min/max, set limits based on unit time option\r\n\t\tmin = min === MAX_INTEGER ? +adapter.startOf(Date.now(), unit) : min;\r\n\t\tmax = max === MIN_INTEGER ? +adapter.endOf(Date.now(), unit) + 1 : max;\r\n\r\n\t\t// Make sure that max is strictly higher than min (required by the lookup table)\r\n\t\tme.min = Math.min(min, max);\r\n\t\tme.max = Math.max(min + 1, max);\r\n\r\n\t\t// PRIVATE\r\n\t\tme._table = [];\r\n\t\tme._timestamps = {\r\n\t\t\tdata: timestamps,\r\n\t\t\tdatasets: datasets,\r\n\t\t\tlabels: labels\r\n\t\t};\r\n\t},\r\n\r\n\tbuildTicks: function() {\r\n\t\tvar me = this;\r\n\t\tvar min = me.min;\r\n\t\tvar max = me.max;\r\n\t\tvar options = me.options;\r\n\t\tvar tickOpts = options.ticks;\r\n\t\tvar timeOpts = options.time;\r\n\t\tvar timestamps = me._timestamps;\r\n\t\tvar ticks = [];\r\n\t\tvar capacity = me.getLabelCapacity(min);\r\n\t\tvar source = tickOpts.source;\r\n\t\tvar distribution = options.distribution;\r\n\t\tvar i, ilen, timestamp;\r\n\r\n\t\tif (source === 'data' || (source === 'auto' && distribution === 'series')) {\r\n\t\t\ttimestamps = timestamps.data;\r\n\t\t} else if (source === 'labels') {\r\n\t\t\ttimestamps = timestamps.labels;\r\n\t\t} else {\r\n\t\t\ttimestamps = generate(me, min, max, capacity);\r\n\t\t}\r\n\r\n\t\tif (options.bounds === 'ticks' && timestamps.length) {\r\n\t\t\tmin = timestamps[0];\r\n\t\t\tmax = timestamps[timestamps.length - 1];\r\n\t\t}\r\n\r\n\t\t// Enforce limits with user min/max options\r\n\t\tmin = parse(me, getMin(options)) || min;\r\n\t\tmax = parse(me, getMax(options)) || max;\r\n\r\n\t\t// Remove ticks outside the min/max range\r\n\t\tfor (i = 0, ilen = timestamps.length; i < ilen; ++i) {\r\n\t\t\ttimestamp = timestamps[i];\r\n\t\t\tif (timestamp >= min && timestamp <= max) {\r\n\t\t\t\tticks.push(timestamp);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tme.min = min;\r\n\t\tme.max = max;\r\n\r\n\t\t// PRIVATE\r\n\t\t// determineUnitForFormatting relies on the number of ticks so we don't use it when\r\n\t\t// autoSkip is enabled because we don't yet know what the final number of ticks will be\r\n\t\tme._unit = timeOpts.unit || (tickOpts.autoSkip\r\n\t\t\t? determineUnitForAutoTicks(timeOpts.minUnit, me.min, me.max, capacity)\r\n\t\t\t: determineUnitForFormatting(me, ticks.length, timeOpts.minUnit, me.min, me.max));\r\n\t\tme._majorUnit = !tickOpts.major.enabled || me._unit === 'year' ? undefined\r\n\t\t\t: determineMajorUnit(me._unit);\r\n\t\tme._table = buildLookupTable(me._timestamps.data, min, max, distribution);\r\n\t\tme._offsets = computeOffsets(me._table, ticks, min, max, options);\r\n\r\n\t\tif (tickOpts.reverse) {\r\n\t\t\tticks.reverse();\r\n\t\t}\r\n\r\n\t\treturn ticksFromTimestamps(me, ticks, me._majorUnit);\r\n\t},\r\n\r\n\tgetLabelForIndex: function(index, datasetIndex) {\r\n\t\tvar me = this;\r\n\t\tvar adapter = me._adapter;\r\n\t\tvar data = me.chart.data;\r\n\t\tvar timeOpts = me.options.time;\r\n\t\tvar label = data.labels && index < data.labels.length ? data.labels[index] : '';\r\n\t\tvar value = data.datasets[datasetIndex].data[index];\r\n\r\n\t\tif (helpers$1.isObject(value)) {\r\n\t\t\tlabel = me.getRightValue(value);\r\n\t\t}\r\n\t\tif (timeOpts.tooltipFormat) {\r\n\t\t\treturn adapter.format(toTimestamp(me, label), timeOpts.tooltipFormat);\r\n\t\t}\r\n\t\tif (typeof label === 'string') {\r\n\t\t\treturn label;\r\n\t\t}\r\n\t\treturn adapter.format(toTimestamp(me, label), timeOpts.displayFormats.datetime);\r\n\t},\r\n\r\n\t/**\r\n\t * Function to format an individual tick mark\r\n\t * @private\r\n\t */\r\n\ttickFormatFunction: function(time, index, ticks, format) {\r\n\t\tvar me = this;\r\n\t\tvar adapter = me._adapter;\r\n\t\tvar options = me.options;\r\n\t\tvar formats = options.time.displayFormats;\r\n\t\tvar minorFormat = formats[me._unit];\r\n\t\tvar majorUnit = me._majorUnit;\r\n\t\tvar majorFormat = formats[majorUnit];\r\n\t\tvar tick = ticks[index];\r\n\t\tvar tickOpts = options.ticks;\r\n\t\tvar major = majorUnit && majorFormat && tick && tick.major;\r\n\t\tvar label = adapter.format(time, format ? format : major ? majorFormat : minorFormat);\r\n\t\tvar nestedTickOpts = major ? tickOpts.major : tickOpts.minor;\r\n\t\tvar formatter = resolve$5([\r\n\t\t\tnestedTickOpts.callback,\r\n\t\t\tnestedTickOpts.userCallback,\r\n\t\t\ttickOpts.callback,\r\n\t\t\ttickOpts.userCallback\r\n\t\t]);\r\n\r\n\t\treturn formatter ? formatter(label, index, ticks) : label;\r\n\t},\r\n\r\n\tconvertTicksToLabels: function(ticks) {\r\n\t\tvar labels = [];\r\n\t\tvar i, ilen;\r\n\r\n\t\tfor (i = 0, ilen = ticks.length; i < ilen; ++i) {\r\n\t\t\tlabels.push(this.tickFormatFunction(ticks[i].value, i, ticks));\r\n\t\t}\r\n\r\n\t\treturn labels;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tgetPixelForOffset: function(time) {\r\n\t\tvar me = this;\r\n\t\tvar offsets = me._offsets;\r\n\t\tvar pos = interpolate$1(me._table, 'time', time, 'pos');\r\n\t\treturn me.getPixelForDecimal((offsets.start + pos) * offsets.factor);\r\n\t},\r\n\r\n\tgetPixelForValue: function(value, index, datasetIndex) {\r\n\t\tvar me = this;\r\n\t\tvar time = null;\r\n\r\n\t\tif (index !== undefined && datasetIndex !== undefined) {\r\n\t\t\ttime = me._timestamps.datasets[datasetIndex][index];\r\n\t\t}\r\n\r\n\t\tif (time === null) {\r\n\t\t\ttime = parse(me, value);\r\n\t\t}\r\n\r\n\t\tif (time !== null) {\r\n\t\t\treturn me.getPixelForOffset(time);\r\n\t\t}\r\n\t},\r\n\r\n\tgetPixelForTick: function(index) {\r\n\t\tvar ticks = this.getTicks();\r\n\t\treturn index >= 0 && index < ticks.length ?\r\n\t\t\tthis.getPixelForOffset(ticks[index].value) :\r\n\t\t\tnull;\r\n\t},\r\n\r\n\tgetValueForPixel: function(pixel) {\r\n\t\tvar me = this;\r\n\t\tvar offsets = me._offsets;\r\n\t\tvar pos = me.getDecimalForPixel(pixel) / offsets.factor - offsets.end;\r\n\t\tvar time = interpolate$1(me._table, 'pos', pos, 'time');\r\n\r\n\t\t// DEPRECATION, we should return time directly\r\n\t\treturn me._adapter._create(time);\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getLabelSize: function(label) {\r\n\t\tvar me = this;\r\n\t\tvar ticksOpts = me.options.ticks;\r\n\t\tvar tickLabelWidth = me.ctx.measureText(label).width;\r\n\t\tvar angle = helpers$1.toRadians(me.isHorizontal() ? ticksOpts.maxRotation : ticksOpts.minRotation);\r\n\t\tvar cosRotation = Math.cos(angle);\r\n\t\tvar sinRotation = Math.sin(angle);\r\n\t\tvar tickFontSize = valueOrDefault$d(ticksOpts.fontSize, core_defaults.global.defaultFontSize);\r\n\r\n\t\treturn {\r\n\t\t\tw: (tickLabelWidth * cosRotation) + (tickFontSize * sinRotation),\r\n\t\t\th: (tickLabelWidth * sinRotation) + (tickFontSize * cosRotation)\r\n\t\t};\r\n\t},\r\n\r\n\t/**\r\n\t * Crude approximation of what the label width might be\r\n\t * @private\r\n\t */\r\n\tgetLabelWidth: function(label) {\r\n\t\treturn this._getLabelSize(label).w;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tgetLabelCapacity: function(exampleTime) {\r\n\t\tvar me = this;\r\n\t\tvar timeOpts = me.options.time;\r\n\t\tvar displayFormats = timeOpts.displayFormats;\r\n\r\n\t\t// pick the longest format (milliseconds) for guestimation\r\n\t\tvar format = displayFormats[timeOpts.unit] || displayFormats.millisecond;\r\n\t\tvar exampleLabel = me.tickFormatFunction(exampleTime, 0, ticksFromTimestamps(me, [exampleTime], me._majorUnit), format);\r\n\t\tvar size = me._getLabelSize(exampleLabel);\r\n\t\tvar capacity = Math.floor(me.isHorizontal() ? me.width / size.w : me.height / size.h);\r\n\r\n\t\tif (me.options.offset) {\r\n\t\t\tcapacity--;\r\n\t\t}\r\n\r\n\t\treturn capacity > 0 ? capacity : 1;\r\n\t}\r\n});\r\n\r\n// INTERNAL: static default options, registered in src/index.js\r\nvar _defaults$4 = defaultConfig$4;\nscale_time._defaults = _defaults$4;\n\nvar scales = {\r\n\tcategory: scale_category,\r\n\tlinear: scale_linear,\r\n\tlogarithmic: scale_logarithmic,\r\n\tradialLinear: scale_radialLinear,\r\n\ttime: scale_time\r\n};\n\nvar FORMATS = {\r\n\tdatetime: 'MMM D, YYYY, h:mm:ss a',\r\n\tmillisecond: 'h:mm:ss.SSS a',\r\n\tsecond: 'h:mm:ss a',\r\n\tminute: 'h:mm a',\r\n\thour: 'hA',\r\n\tday: 'MMM D',\r\n\tweek: 'll',\r\n\tmonth: 'MMM YYYY',\r\n\tquarter: '[Q]Q - YYYY',\r\n\tyear: 'YYYY'\r\n};\r\n\r\ncore_adapters._date.override(typeof moment === 'function' ? {\r\n\t_id: 'moment', // DEBUG ONLY\r\n\r\n\tformats: function() {\r\n\t\treturn FORMATS;\r\n\t},\r\n\r\n\tparse: function(value, format) {\r\n\t\tif (typeof value === 'string' && typeof format === 'string') {\r\n\t\t\tvalue = moment(value, format);\r\n\t\t} else if (!(value instanceof moment)) {\r\n\t\t\tvalue = moment(value);\r\n\t\t}\r\n\t\treturn value.isValid() ? value.valueOf() : null;\r\n\t},\r\n\r\n\tformat: function(time, format) {\r\n\t\treturn moment(time).format(format);\r\n\t},\r\n\r\n\tadd: function(time, amount, unit) {\r\n\t\treturn moment(time).add(amount, unit).valueOf();\r\n\t},\r\n\r\n\tdiff: function(max, min, unit) {\r\n\t\treturn moment(max).diff(moment(min), unit);\r\n\t},\r\n\r\n\tstartOf: function(time, unit, weekday) {\r\n\t\ttime = moment(time);\r\n\t\tif (unit === 'isoWeek') {\r\n\t\t\treturn time.isoWeekday(weekday).valueOf();\r\n\t\t}\r\n\t\treturn time.startOf(unit).valueOf();\r\n\t},\r\n\r\n\tendOf: function(time, unit) {\r\n\t\treturn moment(time).endOf(unit).valueOf();\r\n\t},\r\n\r\n\t// DEPRECATIONS\r\n\r\n\t/**\r\n\t * Provided for backward compatibility with scale.getValueForPixel().\r\n\t * @deprecated since version 2.8.0\r\n\t * @todo remove at version 3\r\n\t * @private\r\n\t */\r\n\t_create: function(time) {\r\n\t\treturn moment(time);\r\n\t},\r\n} : {});\n\ncore_defaults._set('global', {\r\n\tplugins: {\r\n\t\tfiller: {\r\n\t\t\tpropagate: true\r\n\t\t}\r\n\t}\r\n});\r\n\r\nvar mappers = {\r\n\tdataset: function(source) {\r\n\t\tvar index = source.fill;\r\n\t\tvar chart = source.chart;\r\n\t\tvar meta = chart.getDatasetMeta(index);\r\n\t\tvar visible = meta && chart.isDatasetVisible(index);\r\n\t\tvar points = (visible && meta.dataset._children) || [];\r\n\t\tvar length = points.length || 0;\r\n\r\n\t\treturn !length ? null : function(point, i) {\r\n\t\t\treturn (i < length && points[i]._view) || null;\r\n\t\t};\r\n\t},\r\n\r\n\tboundary: function(source) {\r\n\t\tvar boundary = source.boundary;\r\n\t\tvar x = boundary ? boundary.x : null;\r\n\t\tvar y = boundary ? boundary.y : null;\r\n\r\n\t\tif (helpers$1.isArray(boundary)) {\r\n\t\t\treturn function(point, i) {\r\n\t\t\t\treturn boundary[i];\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn function(point) {\r\n\t\t\treturn {\r\n\t\t\t\tx: x === null ? point.x : x,\r\n\t\t\t\ty: y === null ? point.y : y,\r\n\t\t\t};\r\n\t\t};\r\n\t}\r\n};\r\n\r\n// @todo if (fill[0] === '#')\r\nfunction decodeFill(el, index, count) {\r\n\tvar model = el._model || {};\r\n\tvar fill = model.fill;\r\n\tvar target;\r\n\r\n\tif (fill === undefined) {\r\n\t\tfill = !!model.backgroundColor;\r\n\t}\r\n\r\n\tif (fill === false || fill === null) {\r\n\t\treturn false;\r\n\t}\r\n\r\n\tif (fill === true) {\r\n\t\treturn 'origin';\r\n\t}\r\n\r\n\ttarget = parseFloat(fill, 10);\r\n\tif (isFinite(target) && Math.floor(target) === target) {\r\n\t\tif (fill[0] === '-' || fill[0] === '+') {\r\n\t\t\ttarget = index + target;\r\n\t\t}\r\n\r\n\t\tif (target === index || target < 0 || target >= count) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn target;\r\n\t}\r\n\r\n\tswitch (fill) {\r\n\t// compatibility\r\n\tcase 'bottom':\r\n\t\treturn 'start';\r\n\tcase 'top':\r\n\t\treturn 'end';\r\n\tcase 'zero':\r\n\t\treturn 'origin';\r\n\t// supported boundaries\r\n\tcase 'origin':\r\n\tcase 'start':\r\n\tcase 'end':\r\n\t\treturn fill;\r\n\t// invalid fill values\r\n\tdefault:\r\n\t\treturn false;\r\n\t}\r\n}\r\n\r\nfunction computeLinearBoundary(source) {\r\n\tvar model = source.el._model || {};\r\n\tvar scale = source.el._scale || {};\r\n\tvar fill = source.fill;\r\n\tvar target = null;\r\n\tvar horizontal;\r\n\r\n\tif (isFinite(fill)) {\r\n\t\treturn null;\r\n\t}\r\n\r\n\t// Backward compatibility: until v3, we still need to support boundary values set on\r\n\t// the model (scaleTop, scaleBottom and scaleZero) because some external plugins and\r\n\t// controllers might still use it (e.g. the Smith chart).\r\n\r\n\tif (fill === 'start') {\r\n\t\ttarget = model.scaleBottom === undefined ? scale.bottom : model.scaleBottom;\r\n\t} else if (fill === 'end') {\r\n\t\ttarget = model.scaleTop === undefined ? scale.top : model.scaleTop;\r\n\t} else if (model.scaleZero !== undefined) {\r\n\t\ttarget = model.scaleZero;\r\n\t} else if (scale.getBasePixel) {\r\n\t\ttarget = scale.getBasePixel();\r\n\t}\r\n\r\n\tif (target !== undefined && target !== null) {\r\n\t\tif (target.x !== undefined && target.y !== undefined) {\r\n\t\t\treturn target;\r\n\t\t}\r\n\r\n\t\tif (helpers$1.isFinite(target)) {\r\n\t\t\thorizontal = scale.isHorizontal();\r\n\t\t\treturn {\r\n\t\t\t\tx: horizontal ? target : null,\r\n\t\t\t\ty: horizontal ? null : target\r\n\t\t\t};\r\n\t\t}\r\n\t}\r\n\r\n\treturn null;\r\n}\r\n\r\nfunction computeCircularBoundary(source) {\r\n\tvar scale = source.el._scale;\r\n\tvar options = scale.options;\r\n\tvar length = scale.chart.data.labels.length;\r\n\tvar fill = source.fill;\r\n\tvar target = [];\r\n\tvar start, end, center, i, point;\r\n\r\n\tif (!length) {\r\n\t\treturn null;\r\n\t}\r\n\r\n\tstart = options.ticks.reverse ? scale.max : scale.min;\r\n\tend = options.ticks.reverse ? scale.min : scale.max;\r\n\tcenter = scale.getPointPositionForValue(0, start);\r\n\tfor (i = 0; i < length; ++i) {\r\n\t\tpoint = fill === 'start' || fill === 'end'\r\n\t\t\t? scale.getPointPositionForValue(i, fill === 'start' ? start : end)\r\n\t\t\t: scale.getBasePosition(i);\r\n\t\tif (options.gridLines.circular) {\r\n\t\t\tpoint.cx = center.x;\r\n\t\t\tpoint.cy = center.y;\r\n\t\t\tpoint.angle = scale.getIndexAngle(i) - Math.PI / 2;\r\n\t\t}\r\n\t\ttarget.push(point);\r\n\t}\r\n\treturn target;\r\n}\r\n\r\nfunction computeBoundary(source) {\r\n\tvar scale = source.el._scale || {};\r\n\r\n\tif (scale.getPointPositionForValue) {\r\n\t\treturn computeCircularBoundary(source);\r\n\t}\r\n\treturn computeLinearBoundary(source);\r\n}\r\n\r\nfunction resolveTarget(sources, index, propagate) {\r\n\tvar source = sources[index];\r\n\tvar fill = source.fill;\r\n\tvar visited = [index];\r\n\tvar target;\r\n\r\n\tif (!propagate) {\r\n\t\treturn fill;\r\n\t}\r\n\r\n\twhile (fill !== false && visited.indexOf(fill) === -1) {\r\n\t\tif (!isFinite(fill)) {\r\n\t\t\treturn fill;\r\n\t\t}\r\n\r\n\t\ttarget = sources[fill];\r\n\t\tif (!target) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (target.visible) {\r\n\t\t\treturn fill;\r\n\t\t}\r\n\r\n\t\tvisited.push(fill);\r\n\t\tfill = target.fill;\r\n\t}\r\n\r\n\treturn false;\r\n}\r\n\r\nfunction createMapper(source) {\r\n\tvar fill = source.fill;\r\n\tvar type = 'dataset';\r\n\r\n\tif (fill === false) {\r\n\t\treturn null;\r\n\t}\r\n\r\n\tif (!isFinite(fill)) {\r\n\t\ttype = 'boundary';\r\n\t}\r\n\r\n\treturn mappers[type](source);\r\n}\r\n\r\nfunction isDrawable(point) {\r\n\treturn point && !point.skip;\r\n}\r\n\r\nfunction drawArea(ctx, curve0, curve1, len0, len1) {\r\n\tvar i, cx, cy, r;\r\n\r\n\tif (!len0 || !len1) {\r\n\t\treturn;\r\n\t}\r\n\r\n\t// building first area curve (normal)\r\n\tctx.moveTo(curve0[0].x, curve0[0].y);\r\n\tfor (i = 1; i < len0; ++i) {\r\n\t\thelpers$1.canvas.lineTo(ctx, curve0[i - 1], curve0[i]);\r\n\t}\r\n\r\n\tif (curve1[0].angle !== undefined) {\r\n\t\tcx = curve1[0].cx;\r\n\t\tcy = curve1[0].cy;\r\n\t\tr = Math.sqrt(Math.pow(curve1[0].x - cx, 2) + Math.pow(curve1[0].y - cy, 2));\r\n\t\tfor (i = len1 - 1; i > 0; --i) {\r\n\t\t\tctx.arc(cx, cy, r, curve1[i].angle, curve1[i - 1].angle, true);\r\n\t\t}\r\n\t\treturn;\r\n\t}\r\n\r\n\t// joining the two area curves\r\n\tctx.lineTo(curve1[len1 - 1].x, curve1[len1 - 1].y);\r\n\r\n\t// building opposite area curve (reverse)\r\n\tfor (i = len1 - 1; i > 0; --i) {\r\n\t\thelpers$1.canvas.lineTo(ctx, curve1[i], curve1[i - 1], true);\r\n\t}\r\n}\r\n\r\nfunction doFill(ctx, points, mapper, view, color, loop) {\r\n\tvar count = points.length;\r\n\tvar span = view.spanGaps;\r\n\tvar curve0 = [];\r\n\tvar curve1 = [];\r\n\tvar len0 = 0;\r\n\tvar len1 = 0;\r\n\tvar i, ilen, index, p0, p1, d0, d1, loopOffset;\r\n\r\n\tctx.beginPath();\r\n\r\n\tfor (i = 0, ilen = count; i < ilen; ++i) {\r\n\t\tindex = i % count;\r\n\t\tp0 = points[index]._view;\r\n\t\tp1 = mapper(p0, index, view);\r\n\t\td0 = isDrawable(p0);\r\n\t\td1 = isDrawable(p1);\r\n\r\n\t\tif (loop && loopOffset === undefined && d0) {\r\n\t\t\tloopOffset = i + 1;\r\n\t\t\tilen = count + loopOffset;\r\n\t\t}\r\n\r\n\t\tif (d0 && d1) {\r\n\t\t\tlen0 = curve0.push(p0);\r\n\t\t\tlen1 = curve1.push(p1);\r\n\t\t} else if (len0 && len1) {\r\n\t\t\tif (!span) {\r\n\t\t\t\tdrawArea(ctx, curve0, curve1, len0, len1);\r\n\t\t\t\tlen0 = len1 = 0;\r\n\t\t\t\tcurve0 = [];\r\n\t\t\t\tcurve1 = [];\r\n\t\t\t} else {\r\n\t\t\t\tif (d0) {\r\n\t\t\t\t\tcurve0.push(p0);\r\n\t\t\t\t}\r\n\t\t\t\tif (d1) {\r\n\t\t\t\t\tcurve1.push(p1);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tdrawArea(ctx, curve0, curve1, len0, len1);\r\n\r\n\tctx.closePath();\r\n\tctx.fillStyle = color;\r\n\tctx.fill();\r\n}\r\n\r\nvar plugin_filler = {\r\n\tid: 'filler',\r\n\r\n\tafterDatasetsUpdate: function(chart, options) {\r\n\t\tvar count = (chart.data.datasets || []).length;\r\n\t\tvar propagate = options.propagate;\r\n\t\tvar sources = [];\r\n\t\tvar meta, i, el, source;\r\n\r\n\t\tfor (i = 0; i < count; ++i) {\r\n\t\t\tmeta = chart.getDatasetMeta(i);\r\n\t\t\tel = meta.dataset;\r\n\t\t\tsource = null;\r\n\r\n\t\t\tif (el && el._model && el instanceof elements.Line) {\r\n\t\t\t\tsource = {\r\n\t\t\t\t\tvisible: chart.isDatasetVisible(i),\r\n\t\t\t\t\tfill: decodeFill(el, i, count),\r\n\t\t\t\t\tchart: chart,\r\n\t\t\t\t\tel: el\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\tmeta.$filler = source;\r\n\t\t\tsources.push(source);\r\n\t\t}\r\n\r\n\t\tfor (i = 0; i < count; ++i) {\r\n\t\t\tsource = sources[i];\r\n\t\t\tif (!source) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tsource.fill = resolveTarget(sources, i, propagate);\r\n\t\t\tsource.boundary = computeBoundary(source);\r\n\t\t\tsource.mapper = createMapper(source);\r\n\t\t}\r\n\t},\r\n\r\n\tbeforeDatasetsDraw: function(chart) {\r\n\t\tvar metasets = chart._getSortedVisibleDatasetMetas();\r\n\t\tvar ctx = chart.ctx;\r\n\t\tvar meta, i, el, view, points, mapper, color;\r\n\r\n\t\tfor (i = metasets.length - 1; i >= 0; --i) {\r\n\t\t\tmeta = metasets[i].$filler;\r\n\r\n\t\t\tif (!meta || !meta.visible) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tel = meta.el;\r\n\t\t\tview = el._view;\r\n\t\t\tpoints = el._children || [];\r\n\t\t\tmapper = meta.mapper;\r\n\t\t\tcolor = view.backgroundColor || core_defaults.global.defaultColor;\r\n\r\n\t\t\tif (mapper && color && points.length) {\r\n\t\t\t\thelpers$1.canvas.clipArea(ctx, chart.chartArea);\r\n\t\t\t\tdoFill(ctx, points, mapper, view, color, el._loop);\r\n\t\t\t\thelpers$1.canvas.unclipArea(ctx);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n};\n\nvar getRtlHelper$1 = helpers$1.rtl.getRtlAdapter;\r\nvar noop$1 = helpers$1.noop;\r\nvar valueOrDefault$e = helpers$1.valueOrDefault;\r\n\r\ncore_defaults._set('global', {\r\n\tlegend: {\r\n\t\tdisplay: true,\r\n\t\tposition: 'top',\r\n\t\talign: 'center',\r\n\t\tfullWidth: true,\r\n\t\treverse: false,\r\n\t\tweight: 1000,\r\n\r\n\t\t// a callback that will handle\r\n\t\tonClick: function(e, legendItem) {\r\n\t\t\tvar index = legendItem.datasetIndex;\r\n\t\t\tvar ci = this.chart;\r\n\t\t\tvar meta = ci.getDatasetMeta(index);\r\n\r\n\t\t\t// See controller.isDatasetVisible comment\r\n\t\t\tmeta.hidden = meta.hidden === null ? !ci.data.datasets[index].hidden : null;\r\n\r\n\t\t\t// We hid a dataset ... rerender the chart\r\n\t\t\tci.update();\r\n\t\t},\r\n\r\n\t\tonHover: null,\r\n\t\tonLeave: null,\r\n\r\n\t\tlabels: {\r\n\t\t\tboxWidth: 40,\r\n\t\t\tpadding: 10,\r\n\t\t\t// Generates labels shown in the legend\r\n\t\t\t// Valid properties to return:\r\n\t\t\t// text : text to display\r\n\t\t\t// fillStyle : fill of coloured box\r\n\t\t\t// strokeStyle: stroke of coloured box\r\n\t\t\t// hidden : if this legend item refers to a hidden item\r\n\t\t\t// lineCap : cap style for line\r\n\t\t\t// lineDash\r\n\t\t\t// lineDashOffset :\r\n\t\t\t// lineJoin :\r\n\t\t\t// lineWidth :\r\n\t\t\tgenerateLabels: function(chart) {\r\n\t\t\t\tvar datasets = chart.data.datasets;\r\n\t\t\t\tvar options = chart.options.legend || {};\r\n\t\t\t\tvar usePointStyle = options.labels && options.labels.usePointStyle;\r\n\r\n\t\t\t\treturn chart._getSortedDatasetMetas().map(function(meta) {\r\n\t\t\t\t\tvar style = meta.controller.getStyle(usePointStyle ? 0 : undefined);\r\n\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\ttext: datasets[meta.index].label,\r\n\t\t\t\t\t\tfillStyle: style.backgroundColor,\r\n\t\t\t\t\t\thidden: !chart.isDatasetVisible(meta.index),\r\n\t\t\t\t\t\tlineCap: style.borderCapStyle,\r\n\t\t\t\t\t\tlineDash: style.borderDash,\r\n\t\t\t\t\t\tlineDashOffset: style.borderDashOffset,\r\n\t\t\t\t\t\tlineJoin: style.borderJoinStyle,\r\n\t\t\t\t\t\tlineWidth: style.borderWidth,\r\n\t\t\t\t\t\tstrokeStyle: style.borderColor,\r\n\t\t\t\t\t\tpointStyle: style.pointStyle,\r\n\t\t\t\t\t\trotation: style.rotation,\r\n\r\n\t\t\t\t\t\t// Below is extra data used for toggling the datasets\r\n\t\t\t\t\t\tdatasetIndex: meta.index\r\n\t\t\t\t\t};\r\n\t\t\t\t}, this);\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tlegendCallback: function(chart) {\r\n\t\tvar list = document.createElement('ul');\r\n\t\tvar datasets = chart.data.datasets;\r\n\t\tvar i, ilen, listItem, listItemSpan;\r\n\r\n\t\tlist.setAttribute('class', chart.id + '-legend');\r\n\r\n\t\tfor (i = 0, ilen = datasets.length; i < ilen; i++) {\r\n\t\t\tlistItem = list.appendChild(document.createElement('li'));\r\n\t\t\tlistItemSpan = listItem.appendChild(document.createElement('span'));\r\n\t\t\tlistItemSpan.style.backgroundColor = datasets[i].backgroundColor;\r\n\t\t\tif (datasets[i].label) {\r\n\t\t\t\tlistItem.appendChild(document.createTextNode(datasets[i].label));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn list.outerHTML;\r\n\t}\r\n});\r\n\r\n/**\r\n * Helper function to get the box width based on the usePointStyle option\r\n * @param {object} labelopts - the label options on the legend\r\n * @param {number} fontSize - the label font size\r\n * @return {number} width of the color box area\r\n */\r\nfunction getBoxWidth(labelOpts, fontSize) {\r\n\treturn labelOpts.usePointStyle && labelOpts.boxWidth > fontSize ?\r\n\t\tfontSize :\r\n\t\tlabelOpts.boxWidth;\r\n}\r\n\r\n/**\r\n * IMPORTANT: this class is exposed publicly as Chart.Legend, backward compatibility required!\r\n */\r\nvar Legend = core_element.extend({\r\n\r\n\tinitialize: function(config) {\r\n\t\tvar me = this;\r\n\t\thelpers$1.extend(me, config);\r\n\r\n\t\t// Contains hit boxes for each dataset (in dataset order)\r\n\t\tme.legendHitBoxes = [];\r\n\r\n\t\t/**\r\n \t\t * @private\r\n \t\t */\r\n\t\tme._hoveredItem = null;\r\n\r\n\t\t// Are we in doughnut mode which has a different data type\r\n\t\tme.doughnutMode = false;\r\n\t},\r\n\r\n\t// These methods are ordered by lifecycle. Utilities then follow.\r\n\t// Any function defined here is inherited by all legend types.\r\n\t// Any function can be extended by the legend type\r\n\r\n\tbeforeUpdate: noop$1,\r\n\tupdate: function(maxWidth, maxHeight, margins) {\r\n\t\tvar me = this;\r\n\r\n\t\t// Update Lifecycle - Probably don't want to ever extend or overwrite this function ;)\r\n\t\tme.beforeUpdate();\r\n\r\n\t\t// Absorb the master measurements\r\n\t\tme.maxWidth = maxWidth;\r\n\t\tme.maxHeight = maxHeight;\r\n\t\tme.margins = margins;\r\n\r\n\t\t// Dimensions\r\n\t\tme.beforeSetDimensions();\r\n\t\tme.setDimensions();\r\n\t\tme.afterSetDimensions();\r\n\t\t// Labels\r\n\t\tme.beforeBuildLabels();\r\n\t\tme.buildLabels();\r\n\t\tme.afterBuildLabels();\r\n\r\n\t\t// Fit\r\n\t\tme.beforeFit();\r\n\t\tme.fit();\r\n\t\tme.afterFit();\r\n\t\t//\r\n\t\tme.afterUpdate();\r\n\r\n\t\treturn me.minSize;\r\n\t},\r\n\tafterUpdate: noop$1,\r\n\r\n\t//\r\n\r\n\tbeforeSetDimensions: noop$1,\r\n\tsetDimensions: function() {\r\n\t\tvar me = this;\r\n\t\t// Set the unconstrained dimension before label rotation\r\n\t\tif (me.isHorizontal()) {\r\n\t\t\t// Reset position before calculating rotation\r\n\t\t\tme.width = me.maxWidth;\r\n\t\t\tme.left = 0;\r\n\t\t\tme.right = me.width;\r\n\t\t} else {\r\n\t\t\tme.height = me.maxHeight;\r\n\r\n\t\t\t// Reset position before calculating rotation\r\n\t\t\tme.top = 0;\r\n\t\t\tme.bottom = me.height;\r\n\t\t}\r\n\r\n\t\t// Reset padding\r\n\t\tme.paddingLeft = 0;\r\n\t\tme.paddingTop = 0;\r\n\t\tme.paddingRight = 0;\r\n\t\tme.paddingBottom = 0;\r\n\r\n\t\t// Reset minSize\r\n\t\tme.minSize = {\r\n\t\t\twidth: 0,\r\n\t\t\theight: 0\r\n\t\t};\r\n\t},\r\n\tafterSetDimensions: noop$1,\r\n\r\n\t//\r\n\r\n\tbeforeBuildLabels: noop$1,\r\n\tbuildLabels: function() {\r\n\t\tvar me = this;\r\n\t\tvar labelOpts = me.options.labels || {};\r\n\t\tvar legendItems = helpers$1.callback(labelOpts.generateLabels, [me.chart], me) || [];\r\n\r\n\t\tif (labelOpts.filter) {\r\n\t\t\tlegendItems = legendItems.filter(function(item) {\r\n\t\t\t\treturn labelOpts.filter(item, me.chart.data);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (me.options.reverse) {\r\n\t\t\tlegendItems.reverse();\r\n\t\t}\r\n\r\n\t\tme.legendItems = legendItems;\r\n\t},\r\n\tafterBuildLabels: noop$1,\r\n\r\n\t//\r\n\r\n\tbeforeFit: noop$1,\r\n\tfit: function() {\r\n\t\tvar me = this;\r\n\t\tvar opts = me.options;\r\n\t\tvar labelOpts = opts.labels;\r\n\t\tvar display = opts.display;\r\n\r\n\t\tvar ctx = me.ctx;\r\n\r\n\t\tvar labelFont = helpers$1.options._parseFont(labelOpts);\r\n\t\tvar fontSize = labelFont.size;\r\n\r\n\t\t// Reset hit boxes\r\n\t\tvar hitboxes = me.legendHitBoxes = [];\r\n\r\n\t\tvar minSize = me.minSize;\r\n\t\tvar isHorizontal = me.isHorizontal();\r\n\r\n\t\tif (isHorizontal) {\r\n\t\t\tminSize.width = me.maxWidth; // fill all the width\r\n\t\t\tminSize.height = display ? 10 : 0;\r\n\t\t} else {\r\n\t\t\tminSize.width = display ? 10 : 0;\r\n\t\t\tminSize.height = me.maxHeight; // fill all the height\r\n\t\t}\r\n\r\n\t\t// Increase sizes here\r\n\t\tif (!display) {\r\n\t\t\tme.width = minSize.width = me.height = minSize.height = 0;\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tctx.font = labelFont.string;\r\n\r\n\t\tif (isHorizontal) {\r\n\t\t\t// Labels\r\n\r\n\t\t\t// Width of each line of legend boxes. Labels wrap onto multiple lines when there are too many to fit on one\r\n\t\t\tvar lineWidths = me.lineWidths = [0];\r\n\t\t\tvar totalHeight = 0;\r\n\r\n\t\t\tctx.textAlign = 'left';\r\n\t\t\tctx.textBaseline = 'middle';\r\n\r\n\t\t\thelpers$1.each(me.legendItems, function(legendItem, i) {\r\n\t\t\t\tvar boxWidth = getBoxWidth(labelOpts, fontSize);\r\n\t\t\t\tvar width = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;\r\n\r\n\t\t\t\tif (i === 0 || lineWidths[lineWidths.length - 1] + width + 2 * labelOpts.padding > minSize.width) {\r\n\t\t\t\t\ttotalHeight += fontSize + labelOpts.padding;\r\n\t\t\t\t\tlineWidths[lineWidths.length - (i > 0 ? 0 : 1)] = 0;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Store the hitbox width and height here. Final position will be updated in `draw`\r\n\t\t\t\thitboxes[i] = {\r\n\t\t\t\t\tleft: 0,\r\n\t\t\t\t\ttop: 0,\r\n\t\t\t\t\twidth: width,\r\n\t\t\t\t\theight: fontSize\r\n\t\t\t\t};\r\n\r\n\t\t\t\tlineWidths[lineWidths.length - 1] += width + labelOpts.padding;\r\n\t\t\t});\r\n\r\n\t\t\tminSize.height += totalHeight;\r\n\r\n\t\t} else {\r\n\t\t\tvar vPadding = labelOpts.padding;\r\n\t\t\tvar columnWidths = me.columnWidths = [];\r\n\t\t\tvar columnHeights = me.columnHeights = [];\r\n\t\t\tvar totalWidth = labelOpts.padding;\r\n\t\t\tvar currentColWidth = 0;\r\n\t\t\tvar currentColHeight = 0;\r\n\r\n\t\t\thelpers$1.each(me.legendItems, function(legendItem, i) {\r\n\t\t\t\tvar boxWidth = getBoxWidth(labelOpts, fontSize);\r\n\t\t\t\tvar itemWidth = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;\r\n\r\n\t\t\t\t// If too tall, go to new column\r\n\t\t\t\tif (i > 0 && currentColHeight + fontSize + 2 * vPadding > minSize.height) {\r\n\t\t\t\t\ttotalWidth += currentColWidth + labelOpts.padding;\r\n\t\t\t\t\tcolumnWidths.push(currentColWidth); // previous column width\r\n\t\t\t\t\tcolumnHeights.push(currentColHeight);\r\n\t\t\t\t\tcurrentColWidth = 0;\r\n\t\t\t\t\tcurrentColHeight = 0;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Get max width\r\n\t\t\t\tcurrentColWidth = Math.max(currentColWidth, itemWidth);\r\n\t\t\t\tcurrentColHeight += fontSize + vPadding;\r\n\r\n\t\t\t\t// Store the hitbox width and height here. Final position will be updated in `draw`\r\n\t\t\t\thitboxes[i] = {\r\n\t\t\t\t\tleft: 0,\r\n\t\t\t\t\ttop: 0,\r\n\t\t\t\t\twidth: itemWidth,\r\n\t\t\t\t\theight: fontSize\r\n\t\t\t\t};\r\n\t\t\t});\r\n\r\n\t\t\ttotalWidth += currentColWidth;\r\n\t\t\tcolumnWidths.push(currentColWidth);\r\n\t\t\tcolumnHeights.push(currentColHeight);\r\n\t\t\tminSize.width += totalWidth;\r\n\t\t}\r\n\r\n\t\tme.width = minSize.width;\r\n\t\tme.height = minSize.height;\r\n\t},\r\n\tafterFit: noop$1,\r\n\r\n\t// Shared Methods\r\n\tisHorizontal: function() {\r\n\t\treturn this.options.position === 'top' || this.options.position === 'bottom';\r\n\t},\r\n\r\n\t// Actually draw the legend on the canvas\r\n\tdraw: function() {\r\n\t\tvar me = this;\r\n\t\tvar opts = me.options;\r\n\t\tvar labelOpts = opts.labels;\r\n\t\tvar globalDefaults = core_defaults.global;\r\n\t\tvar defaultColor = globalDefaults.defaultColor;\r\n\t\tvar lineDefault = globalDefaults.elements.line;\r\n\t\tvar legendHeight = me.height;\r\n\t\tvar columnHeights = me.columnHeights;\r\n\t\tvar legendWidth = me.width;\r\n\t\tvar lineWidths = me.lineWidths;\r\n\r\n\t\tif (!opts.display) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar rtlHelper = getRtlHelper$1(opts.rtl, me.left, me.minSize.width);\r\n\t\tvar ctx = me.ctx;\r\n\t\tvar fontColor = valueOrDefault$e(labelOpts.fontColor, globalDefaults.defaultFontColor);\r\n\t\tvar labelFont = helpers$1.options._parseFont(labelOpts);\r\n\t\tvar fontSize = labelFont.size;\r\n\t\tvar cursor;\r\n\r\n\t\t// Canvas setup\r\n\t\tctx.textAlign = rtlHelper.textAlign('left');\r\n\t\tctx.textBaseline = 'middle';\r\n\t\tctx.lineWidth = 0.5;\r\n\t\tctx.strokeStyle = fontColor; // for strikethrough effect\r\n\t\tctx.fillStyle = fontColor; // render in correct colour\r\n\t\tctx.font = labelFont.string;\r\n\r\n\t\tvar boxWidth = getBoxWidth(labelOpts, fontSize);\r\n\t\tvar hitboxes = me.legendHitBoxes;\r\n\r\n\t\t// current position\r\n\t\tvar drawLegendBox = function(x, y, legendItem) {\r\n\t\t\tif (isNaN(boxWidth) || boxWidth <= 0) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\t// Set the ctx for the box\r\n\t\t\tctx.save();\r\n\r\n\t\t\tvar lineWidth = valueOrDefault$e(legendItem.lineWidth, lineDefault.borderWidth);\r\n\t\t\tctx.fillStyle = valueOrDefault$e(legendItem.fillStyle, defaultColor);\r\n\t\t\tctx.lineCap = valueOrDefault$e(legendItem.lineCap, lineDefault.borderCapStyle);\r\n\t\t\tctx.lineDashOffset = valueOrDefault$e(legendItem.lineDashOffset, lineDefault.borderDashOffset);\r\n\t\t\tctx.lineJoin = valueOrDefault$e(legendItem.lineJoin, lineDefault.borderJoinStyle);\r\n\t\t\tctx.lineWidth = lineWidth;\r\n\t\t\tctx.strokeStyle = valueOrDefault$e(legendItem.strokeStyle, defaultColor);\r\n\r\n\t\t\tif (ctx.setLineDash) {\r\n\t\t\t\t// IE 9 and 10 do not support line dash\r\n\t\t\t\tctx.setLineDash(valueOrDefault$e(legendItem.lineDash, lineDefault.borderDash));\r\n\t\t\t}\r\n\r\n\t\t\tif (labelOpts && labelOpts.usePointStyle) {\r\n\t\t\t\t// Recalculate x and y for drawPoint() because its expecting\r\n\t\t\t\t// x and y to be center of figure (instead of top left)\r\n\t\t\t\tvar radius = boxWidth * Math.SQRT2 / 2;\r\n\t\t\t\tvar centerX = rtlHelper.xPlus(x, boxWidth / 2);\r\n\t\t\t\tvar centerY = y + fontSize / 2;\r\n\r\n\t\t\t\t// Draw pointStyle as legend symbol\r\n\t\t\t\thelpers$1.canvas.drawPoint(ctx, legendItem.pointStyle, radius, centerX, centerY, legendItem.rotation);\r\n\t\t\t} else {\r\n\t\t\t\t// Draw box as legend symbol\r\n\t\t\t\tctx.fillRect(rtlHelper.leftForLtr(x, boxWidth), y, boxWidth, fontSize);\r\n\t\t\t\tif (lineWidth !== 0) {\r\n\t\t\t\t\tctx.strokeRect(rtlHelper.leftForLtr(x, boxWidth), y, boxWidth, fontSize);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tctx.restore();\r\n\t\t};\r\n\r\n\t\tvar fillText = function(x, y, legendItem, textWidth) {\r\n\t\t\tvar halfFontSize = fontSize / 2;\r\n\t\t\tvar xLeft = rtlHelper.xPlus(x, boxWidth + halfFontSize);\r\n\t\t\tvar yMiddle = y + halfFontSize;\r\n\r\n\t\t\tctx.fillText(legendItem.text, xLeft, yMiddle);\r\n\r\n\t\t\tif (legendItem.hidden) {\r\n\t\t\t\t// Strikethrough the text if hidden\r\n\t\t\t\tctx.beginPath();\r\n\t\t\t\tctx.lineWidth = 2;\r\n\t\t\t\tctx.moveTo(xLeft, yMiddle);\r\n\t\t\t\tctx.lineTo(rtlHelper.xPlus(xLeft, textWidth), yMiddle);\r\n\t\t\t\tctx.stroke();\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tvar alignmentOffset = function(dimension, blockSize) {\r\n\t\t\tswitch (opts.align) {\r\n\t\t\tcase 'start':\r\n\t\t\t\treturn labelOpts.padding;\r\n\t\t\tcase 'end':\r\n\t\t\t\treturn dimension - blockSize;\r\n\t\t\tdefault: // center\r\n\t\t\t\treturn (dimension - blockSize + labelOpts.padding) / 2;\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t// Horizontal\r\n\t\tvar isHorizontal = me.isHorizontal();\r\n\t\tif (isHorizontal) {\r\n\t\t\tcursor = {\r\n\t\t\t\tx: me.left + alignmentOffset(legendWidth, lineWidths[0]),\r\n\t\t\t\ty: me.top + labelOpts.padding,\r\n\t\t\t\tline: 0\r\n\t\t\t};\r\n\t\t} else {\r\n\t\t\tcursor = {\r\n\t\t\t\tx: me.left + labelOpts.padding,\r\n\t\t\t\ty: me.top + alignmentOffset(legendHeight, columnHeights[0]),\r\n\t\t\t\tline: 0\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\thelpers$1.rtl.overrideTextDirection(me.ctx, opts.textDirection);\r\n\r\n\t\tvar itemHeight = fontSize + labelOpts.padding;\r\n\t\thelpers$1.each(me.legendItems, function(legendItem, i) {\r\n\t\t\tvar textWidth = ctx.measureText(legendItem.text).width;\r\n\t\t\tvar width = boxWidth + (fontSize / 2) + textWidth;\r\n\t\t\tvar x = cursor.x;\r\n\t\t\tvar y = cursor.y;\r\n\r\n\t\t\trtlHelper.setWidth(me.minSize.width);\r\n\r\n\t\t\t// Use (me.left + me.minSize.width) and (me.top + me.minSize.height)\r\n\t\t\t// instead of me.right and me.bottom because me.width and me.height\r\n\t\t\t// may have been changed since me.minSize was calculated\r\n\t\t\tif (isHorizontal) {\r\n\t\t\t\tif (i > 0 && x + width + labelOpts.padding > me.left + me.minSize.width) {\r\n\t\t\t\t\ty = cursor.y += itemHeight;\r\n\t\t\t\t\tcursor.line++;\r\n\t\t\t\t\tx = cursor.x = me.left + alignmentOffset(legendWidth, lineWidths[cursor.line]);\r\n\t\t\t\t}\r\n\t\t\t} else if (i > 0 && y + itemHeight > me.top + me.minSize.height) {\r\n\t\t\t\tx = cursor.x = x + me.columnWidths[cursor.line] + labelOpts.padding;\r\n\t\t\t\tcursor.line++;\r\n\t\t\t\ty = cursor.y = me.top + alignmentOffset(legendHeight, columnHeights[cursor.line]);\r\n\t\t\t}\r\n\r\n\t\t\tvar realX = rtlHelper.x(x);\r\n\r\n\t\t\tdrawLegendBox(realX, y, legendItem);\r\n\r\n\t\t\thitboxes[i].left = rtlHelper.leftForLtr(realX, hitboxes[i].width);\r\n\t\t\thitboxes[i].top = y;\r\n\r\n\t\t\t// Fill the actual label\r\n\t\t\tfillText(realX, y, legendItem, textWidth);\r\n\r\n\t\t\tif (isHorizontal) {\r\n\t\t\t\tcursor.x += width + labelOpts.padding;\r\n\t\t\t} else {\r\n\t\t\t\tcursor.y += itemHeight;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\thelpers$1.rtl.restoreTextDirection(me.ctx, opts.textDirection);\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getLegendItemAt: function(x, y) {\r\n\t\tvar me = this;\r\n\t\tvar i, hitBox, lh;\r\n\r\n\t\tif (x >= me.left && x <= me.right && y >= me.top && y <= me.bottom) {\r\n\t\t\t// See if we are touching one of the dataset boxes\r\n\t\t\tlh = me.legendHitBoxes;\r\n\t\t\tfor (i = 0; i < lh.length; ++i) {\r\n\t\t\t\thitBox = lh[i];\r\n\r\n\t\t\t\tif (x >= hitBox.left && x <= hitBox.left + hitBox.width && y >= hitBox.top && y <= hitBox.top + hitBox.height) {\r\n\t\t\t\t\t// Touching an element\r\n\t\t\t\t\treturn me.legendItems[i];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t},\r\n\r\n\t/**\r\n\t * Handle an event\r\n\t * @private\r\n\t * @param {IEvent} event - The event to handle\r\n\t */\r\n\thandleEvent: function(e) {\r\n\t\tvar me = this;\r\n\t\tvar opts = me.options;\r\n\t\tvar type = e.type === 'mouseup' ? 'click' : e.type;\r\n\t\tvar hoveredItem;\r\n\r\n\t\tif (type === 'mousemove') {\r\n\t\t\tif (!opts.onHover && !opts.onLeave) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t} else if (type === 'click') {\r\n\t\t\tif (!opts.onClick) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Chart event already has relative position in it\r\n\t\thoveredItem = me._getLegendItemAt(e.x, e.y);\r\n\r\n\t\tif (type === 'click') {\r\n\t\t\tif (hoveredItem && opts.onClick) {\r\n\t\t\t\t// use e.native for backwards compatibility\r\n\t\t\t\topts.onClick.call(me, e.native, hoveredItem);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tif (opts.onLeave && hoveredItem !== me._hoveredItem) {\r\n\t\t\t\tif (me._hoveredItem) {\r\n\t\t\t\t\topts.onLeave.call(me, e.native, me._hoveredItem);\r\n\t\t\t\t}\r\n\t\t\t\tme._hoveredItem = hoveredItem;\r\n\t\t\t}\r\n\r\n\t\t\tif (opts.onHover && hoveredItem) {\r\n\t\t\t\t// use e.native for backwards compatibility\r\n\t\t\t\topts.onHover.call(me, e.native, hoveredItem);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n});\r\n\r\nfunction createNewLegendAndAttach(chart, legendOpts) {\r\n\tvar legend = new Legend({\r\n\t\tctx: chart.ctx,\r\n\t\toptions: legendOpts,\r\n\t\tchart: chart\r\n\t});\r\n\r\n\tcore_layouts.configure(chart, legend, legendOpts);\r\n\tcore_layouts.addBox(chart, legend);\r\n\tchart.legend = legend;\r\n}\r\n\r\nvar plugin_legend = {\r\n\tid: 'legend',\r\n\r\n\t/**\r\n\t * Backward compatibility: since 2.1.5, the legend is registered as a plugin, making\r\n\t * Chart.Legend obsolete. To avoid a breaking change, we export the Legend as part of\r\n\t * the plugin, which one will be re-exposed in the chart.js file.\r\n\t * https://github.com/chartjs/Chart.js/pull/2640\r\n\t * @private\r\n\t */\r\n\t_element: Legend,\r\n\r\n\tbeforeInit: function(chart) {\r\n\t\tvar legendOpts = chart.options.legend;\r\n\r\n\t\tif (legendOpts) {\r\n\t\t\tcreateNewLegendAndAttach(chart, legendOpts);\r\n\t\t}\r\n\t},\r\n\r\n\tbeforeUpdate: function(chart) {\r\n\t\tvar legendOpts = chart.options.legend;\r\n\t\tvar legend = chart.legend;\r\n\r\n\t\tif (legendOpts) {\r\n\t\t\thelpers$1.mergeIf(legendOpts, core_defaults.global.legend);\r\n\r\n\t\t\tif (legend) {\r\n\t\t\t\tcore_layouts.configure(chart, legend, legendOpts);\r\n\t\t\t\tlegend.options = legendOpts;\r\n\t\t\t} else {\r\n\t\t\t\tcreateNewLegendAndAttach(chart, legendOpts);\r\n\t\t\t}\r\n\t\t} else if (legend) {\r\n\t\t\tcore_layouts.removeBox(chart, legend);\r\n\t\t\tdelete chart.legend;\r\n\t\t}\r\n\t},\r\n\r\n\tafterEvent: function(chart, e) {\r\n\t\tvar legend = chart.legend;\r\n\t\tif (legend) {\r\n\t\t\tlegend.handleEvent(e);\r\n\t\t}\r\n\t}\r\n};\n\nvar noop$2 = helpers$1.noop;\r\n\r\ncore_defaults._set('global', {\r\n\ttitle: {\r\n\t\tdisplay: false,\r\n\t\tfontStyle: 'bold',\r\n\t\tfullWidth: true,\r\n\t\tpadding: 10,\r\n\t\tposition: 'top',\r\n\t\ttext: '',\r\n\t\tweight: 2000         // by default greater than legend (1000) to be above\r\n\t}\r\n});\r\n\r\n/**\r\n * IMPORTANT: this class is exposed publicly as Chart.Legend, backward compatibility required!\r\n */\r\nvar Title = core_element.extend({\r\n\tinitialize: function(config) {\r\n\t\tvar me = this;\r\n\t\thelpers$1.extend(me, config);\r\n\r\n\t\t// Contains hit boxes for each dataset (in dataset order)\r\n\t\tme.legendHitBoxes = [];\r\n\t},\r\n\r\n\t// These methods are ordered by lifecycle. Utilities then follow.\r\n\r\n\tbeforeUpdate: noop$2,\r\n\tupdate: function(maxWidth, maxHeight, margins) {\r\n\t\tvar me = this;\r\n\r\n\t\t// Update Lifecycle - Probably don't want to ever extend or overwrite this function ;)\r\n\t\tme.beforeUpdate();\r\n\r\n\t\t// Absorb the master measurements\r\n\t\tme.maxWidth = maxWidth;\r\n\t\tme.maxHeight = maxHeight;\r\n\t\tme.margins = margins;\r\n\r\n\t\t// Dimensions\r\n\t\tme.beforeSetDimensions();\r\n\t\tme.setDimensions();\r\n\t\tme.afterSetDimensions();\r\n\t\t// Labels\r\n\t\tme.beforeBuildLabels();\r\n\t\tme.buildLabels();\r\n\t\tme.afterBuildLabels();\r\n\r\n\t\t// Fit\r\n\t\tme.beforeFit();\r\n\t\tme.fit();\r\n\t\tme.afterFit();\r\n\t\t//\r\n\t\tme.afterUpdate();\r\n\r\n\t\treturn me.minSize;\r\n\r\n\t},\r\n\tafterUpdate: noop$2,\r\n\r\n\t//\r\n\r\n\tbeforeSetDimensions: noop$2,\r\n\tsetDimensions: function() {\r\n\t\tvar me = this;\r\n\t\t// Set the unconstrained dimension before label rotation\r\n\t\tif (me.isHorizontal()) {\r\n\t\t\t// Reset position before calculating rotation\r\n\t\t\tme.width = me.maxWidth;\r\n\t\t\tme.left = 0;\r\n\t\t\tme.right = me.width;\r\n\t\t} else {\r\n\t\t\tme.height = me.maxHeight;\r\n\r\n\t\t\t// Reset position before calculating rotation\r\n\t\t\tme.top = 0;\r\n\t\t\tme.bottom = me.height;\r\n\t\t}\r\n\r\n\t\t// Reset padding\r\n\t\tme.paddingLeft = 0;\r\n\t\tme.paddingTop = 0;\r\n\t\tme.paddingRight = 0;\r\n\t\tme.paddingBottom = 0;\r\n\r\n\t\t// Reset minSize\r\n\t\tme.minSize = {\r\n\t\t\twidth: 0,\r\n\t\t\theight: 0\r\n\t\t};\r\n\t},\r\n\tafterSetDimensions: noop$2,\r\n\r\n\t//\r\n\r\n\tbeforeBuildLabels: noop$2,\r\n\tbuildLabels: noop$2,\r\n\tafterBuildLabels: noop$2,\r\n\r\n\t//\r\n\r\n\tbeforeFit: noop$2,\r\n\tfit: function() {\r\n\t\tvar me = this;\r\n\t\tvar opts = me.options;\r\n\t\tvar minSize = me.minSize = {};\r\n\t\tvar isHorizontal = me.isHorizontal();\r\n\t\tvar lineCount, textSize;\r\n\r\n\t\tif (!opts.display) {\r\n\t\t\tme.width = minSize.width = me.height = minSize.height = 0;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlineCount = helpers$1.isArray(opts.text) ? opts.text.length : 1;\r\n\t\ttextSize = lineCount * helpers$1.options._parseFont(opts).lineHeight + opts.padding * 2;\r\n\r\n\t\tme.width = minSize.width = isHorizontal ? me.maxWidth : textSize;\r\n\t\tme.height = minSize.height = isHorizontal ? textSize : me.maxHeight;\r\n\t},\r\n\tafterFit: noop$2,\r\n\r\n\t// Shared Methods\r\n\tisHorizontal: function() {\r\n\t\tvar pos = this.options.position;\r\n\t\treturn pos === 'top' || pos === 'bottom';\r\n\t},\r\n\r\n\t// Actually draw the title block on the canvas\r\n\tdraw: function() {\r\n\t\tvar me = this;\r\n\t\tvar ctx = me.ctx;\r\n\t\tvar opts = me.options;\r\n\r\n\t\tif (!opts.display) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar fontOpts = helpers$1.options._parseFont(opts);\r\n\t\tvar lineHeight = fontOpts.lineHeight;\r\n\t\tvar offset = lineHeight / 2 + opts.padding;\r\n\t\tvar rotation = 0;\r\n\t\tvar top = me.top;\r\n\t\tvar left = me.left;\r\n\t\tvar bottom = me.bottom;\r\n\t\tvar right = me.right;\r\n\t\tvar maxWidth, titleX, titleY;\r\n\r\n\t\tctx.fillStyle = helpers$1.valueOrDefault(opts.fontColor, core_defaults.global.defaultFontColor); // render in correct colour\r\n\t\tctx.font = fontOpts.string;\r\n\r\n\t\t// Horizontal\r\n\t\tif (me.isHorizontal()) {\r\n\t\t\ttitleX = left + ((right - left) / 2); // midpoint of the width\r\n\t\t\ttitleY = top + offset;\r\n\t\t\tmaxWidth = right - left;\r\n\t\t} else {\r\n\t\t\ttitleX = opts.position === 'left' ? left + offset : right - offset;\r\n\t\t\ttitleY = top + ((bottom - top) / 2);\r\n\t\t\tmaxWidth = bottom - top;\r\n\t\t\trotation = Math.PI * (opts.position === 'left' ? -0.5 : 0.5);\r\n\t\t}\r\n\r\n\t\tctx.save();\r\n\t\tctx.translate(titleX, titleY);\r\n\t\tctx.rotate(rotation);\r\n\t\tctx.textAlign = 'center';\r\n\t\tctx.textBaseline = 'middle';\r\n\r\n\t\tvar text = opts.text;\r\n\t\tif (helpers$1.isArray(text)) {\r\n\t\t\tvar y = 0;\r\n\t\t\tfor (var i = 0; i < text.length; ++i) {\r\n\t\t\t\tctx.fillText(text[i], 0, y, maxWidth);\r\n\t\t\t\ty += lineHeight;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tctx.fillText(text, 0, 0, maxWidth);\r\n\t\t}\r\n\r\n\t\tctx.restore();\r\n\t}\r\n});\r\n\r\nfunction createNewTitleBlockAndAttach(chart, titleOpts) {\r\n\tvar title = new Title({\r\n\t\tctx: chart.ctx,\r\n\t\toptions: titleOpts,\r\n\t\tchart: chart\r\n\t});\r\n\r\n\tcore_layouts.configure(chart, title, titleOpts);\r\n\tcore_layouts.addBox(chart, title);\r\n\tchart.titleBlock = title;\r\n}\r\n\r\nvar plugin_title = {\r\n\tid: 'title',\r\n\r\n\t/**\r\n\t * Backward compatibility: since 2.1.5, the title is registered as a plugin, making\r\n\t * Chart.Title obsolete. To avoid a breaking change, we export the Title as part of\r\n\t * the plugin, which one will be re-exposed in the chart.js file.\r\n\t * https://github.com/chartjs/Chart.js/pull/2640\r\n\t * @private\r\n\t */\r\n\t_element: Title,\r\n\r\n\tbeforeInit: function(chart) {\r\n\t\tvar titleOpts = chart.options.title;\r\n\r\n\t\tif (titleOpts) {\r\n\t\t\tcreateNewTitleBlockAndAttach(chart, titleOpts);\r\n\t\t}\r\n\t},\r\n\r\n\tbeforeUpdate: function(chart) {\r\n\t\tvar titleOpts = chart.options.title;\r\n\t\tvar titleBlock = chart.titleBlock;\r\n\r\n\t\tif (titleOpts) {\r\n\t\t\thelpers$1.mergeIf(titleOpts, core_defaults.global.title);\r\n\r\n\t\t\tif (titleBlock) {\r\n\t\t\t\tcore_layouts.configure(chart, titleBlock, titleOpts);\r\n\t\t\t\ttitleBlock.options = titleOpts;\r\n\t\t\t} else {\r\n\t\t\t\tcreateNewTitleBlockAndAttach(chart, titleOpts);\r\n\t\t\t}\r\n\t\t} else if (titleBlock) {\r\n\t\t\tcore_layouts.removeBox(chart, titleBlock);\r\n\t\t\tdelete chart.titleBlock;\r\n\t\t}\r\n\t}\r\n};\n\nvar plugins = {};\r\nvar filler = plugin_filler;\r\nvar legend = plugin_legend;\r\nvar title = plugin_title;\nplugins.filler = filler;\nplugins.legend = legend;\nplugins.title = title;\n\n/**\r\n * @namespace Chart\r\n */\r\n\r\n\r\ncore_controller.helpers = helpers$1;\r\n\r\n// @todo dispatch these helpers into appropriated helpers/helpers.* file and write unit tests!\r\ncore_helpers();\r\n\r\ncore_controller._adapters = core_adapters;\r\ncore_controller.Animation = core_animation;\r\ncore_controller.animationService = core_animations;\r\ncore_controller.controllers = controllers;\r\ncore_controller.DatasetController = core_datasetController;\r\ncore_controller.defaults = core_defaults;\r\ncore_controller.Element = core_element;\r\ncore_controller.elements = elements;\r\ncore_controller.Interaction = core_interaction;\r\ncore_controller.layouts = core_layouts;\r\ncore_controller.platform = platform;\r\ncore_controller.plugins = core_plugins;\r\ncore_controller.Scale = core_scale;\r\ncore_controller.scaleService = core_scaleService;\r\ncore_controller.Ticks = core_ticks;\r\ncore_controller.Tooltip = core_tooltip;\r\n\r\n// Register built-in scales\r\n\r\ncore_controller.helpers.each(scales, function(scale, type) {\r\n\tcore_controller.scaleService.registerScaleType(type, scale, scale._defaults);\r\n});\r\n\r\n// Load to register built-in adapters (as side effects)\r\n\r\n\r\n// Loading built-in plugins\r\n\r\nfor (var k in plugins) {\r\n\tif (plugins.hasOwnProperty(k)) {\r\n\t\tcore_controller.plugins.register(plugins[k]);\r\n\t}\r\n}\r\n\r\ncore_controller.platform.initialize();\r\n\r\nvar src = core_controller;\r\nif (typeof window !== 'undefined') {\r\n\twindow.Chart = core_controller;\r\n}\r\n\r\n// DEPRECATIONS\r\n\r\n/**\r\n * Provided for backward compatibility, not available anymore\r\n * @namespace Chart.Chart\r\n * @deprecated since version 2.8.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\ncore_controller.Chart = core_controller;\r\n\r\n/**\r\n * Provided for backward compatibility, not available anymore\r\n * @namespace Chart.Legend\r\n * @deprecated since version 2.1.5\r\n * @todo remove at version 3\r\n * @private\r\n */\r\ncore_controller.Legend = plugins.legend._element;\r\n\r\n/**\r\n * Provided for backward compatibility, not available anymore\r\n * @namespace Chart.Title\r\n * @deprecated since version 2.1.5\r\n * @todo remove at version 3\r\n * @private\r\n */\r\ncore_controller.Title = plugins.title._element;\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.plugins instead\r\n * @namespace Chart.pluginService\r\n * @deprecated since version 2.1.5\r\n * @todo remove at version 3\r\n * @private\r\n */\r\ncore_controller.pluginService = core_controller.plugins;\r\n\r\n/**\r\n * Provided for backward compatibility, inheriting from Chart.PlugingBase has no\r\n * effect, instead simply create/register plugins via plain JavaScript objects.\r\n * @interface Chart.PluginBase\r\n * @deprecated since version 2.5.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\ncore_controller.PluginBase = core_controller.Element.extend({});\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.helpers.canvas instead.\r\n * @namespace Chart.canvasHelpers\r\n * @deprecated since version 2.6.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\ncore_controller.canvasHelpers = core_controller.helpers.canvas;\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.layouts instead.\r\n * @namespace Chart.layoutService\r\n * @deprecated since version 2.7.3\r\n * @todo remove at version 3\r\n * @private\r\n */\r\ncore_controller.layoutService = core_controller.layouts;\r\n\r\n/**\r\n * Provided for backward compatibility, not available anymore.\r\n * @namespace Chart.LinearScaleBase\r\n * @deprecated since version 2.8\r\n * @todo remove at version 3\r\n * @private\r\n */\r\ncore_controller.LinearScaleBase = scale_linearbase;\r\n\r\n/**\r\n * Provided for backward compatibility, instead we should create a new Chart\r\n * by setting the type in the config (`new Chart(id, {type: '{chart-type}'}`).\r\n * @deprecated since version 2.8.0\r\n * @todo remove at version 3\r\n */\r\ncore_controller.helpers.each(\r\n\t[\r\n\t\t'Bar',\r\n\t\t'Bubble',\r\n\t\t'Doughnut',\r\n\t\t'Line',\r\n\t\t'PolarArea',\r\n\t\t'Radar',\r\n\t\t'Scatter'\r\n\t],\r\n\tfunction(klass) {\r\n\t\tcore_controller[klass] = function(ctx, cfg) {\r\n\t\t\treturn new core_controller(ctx, core_controller.helpers.merge(cfg || {}, {\r\n\t\t\t\ttype: klass.charAt(0).toLowerCase() + klass.slice(1)\r\n\t\t\t}));\r\n\t\t};\r\n\t}\r\n);\n\nreturn src;\n\n})));\n","const {\n  hasOwnProperty,\n  setPrototypeOf,\n  isFrozen,\n  getPrototypeOf,\n  getOwnPropertyDescriptor,\n} = Object;\n\nlet { freeze, seal, create } = Object; // eslint-disable-line import/no-mutable-exports\nlet { apply, construct } = typeof Reflect !== 'undefined' && Reflect;\n\nif (!apply) {\n  apply = function (fun, thisValue, args) {\n    return fun.apply(thisValue, args);\n  };\n}\n\nif (!freeze) {\n  freeze = function (x) {\n    return x;\n  };\n}\n\nif (!seal) {\n  seal = function (x) {\n    return x;\n  };\n}\n\nif (!construct) {\n  construct = function (Func, args) {\n    return new Func(...args);\n  };\n}\n\nconst arrayForEach = unapply(Array.prototype.forEach);\nconst arrayIndexOf = unapply(Array.prototype.indexOf);\nconst arrayPop = unapply(Array.prototype.pop);\nconst arrayPush = unapply(Array.prototype.push);\nconst arraySlice = unapply(Array.prototype.slice);\n\nconst stringToLowerCase = unapply(String.prototype.toLowerCase);\nconst stringToString = unapply(String.prototype.toString);\nconst stringMatch = unapply(String.prototype.match);\nconst stringReplace = unapply(String.prototype.replace);\nconst stringIndexOf = unapply(String.prototype.indexOf);\nconst stringTrim = unapply(String.prototype.trim);\n\nconst regExpTest = unapply(RegExp.prototype.test);\n\nconst typeErrorCreate = unconstruct(TypeError);\n\nexport function unapply(func) {\n  return (thisArg, ...args) => apply(func, thisArg, args);\n}\n\nexport function unconstruct(func) {\n  return (...args) => construct(func, args);\n}\n\n/* Add properties to a lookup table */\nexport function addToSet(set, array, transformCaseFunc) {\n  transformCaseFunc = transformCaseFunc ? transformCaseFunc : stringToLowerCase;\n  if (setPrototypeOf) {\n    // Make 'in' and truthy checks like Boolean(set.constructor)\n    // independent of any properties defined on Object.prototype.\n    // Prevent prototype setters from intercepting set as a this value.\n    setPrototypeOf(set, null);\n  }\n\n  let l = array.length;\n  while (l--) {\n    let element = array[l];\n    if (typeof element === 'string') {\n      const lcElement = transformCaseFunc(element);\n      if (lcElement !== element) {\n        // Config presets (e.g. tags.js, attrs.js) are immutable.\n        if (!isFrozen(array)) {\n          array[l] = lcElement;\n        }\n\n        element = lcElement;\n      }\n    }\n\n    set[element] = true;\n  }\n\n  return set;\n}\n\n/* Shallow clone an object */\nexport function clone(object) {\n  const newObject = create(null);\n\n  let property;\n  for (property in object) {\n    if (apply(hasOwnProperty, object, [property])) {\n      newObject[property] = object[property];\n    }\n  }\n\n  return newObject;\n}\n\n/* IE10 doesn't support __lookupGetter__ so lets'\n * simulate it. It also automatically checks\n * if the prop is function or getter and behaves\n * accordingly. */\nfunction lookupGetter(object, prop) {\n  while (object !== null) {\n    const desc = getOwnPropertyDescriptor(object, prop);\n    if (desc) {\n      if (desc.get) {\n        return unapply(desc.get);\n      }\n\n      if (typeof desc.value === 'function') {\n        return unapply(desc.value);\n      }\n    }\n\n    object = getPrototypeOf(object);\n  }\n\n  function fallbackValue(element) {\n    console.warn('fallback value for', element);\n    return null;\n  }\n\n  return fallbackValue;\n}\n\nexport {\n  // Array\n  arrayForEach,\n  arrayIndexOf,\n  arrayPop,\n  arrayPush,\n  arraySlice,\n  // Object\n  freeze,\n  getPrototypeOf,\n  getOwnPropertyDescriptor,\n  hasOwnProperty,\n  isFrozen,\n  setPrototypeOf,\n  seal,\n  // RegExp\n  regExpTest,\n  // String\n  stringIndexOf,\n  stringMatch,\n  stringReplace,\n  stringToLowerCase,\n  stringToString,\n  stringTrim,\n  // Errors\n  typeErrorCreate,\n  // Other\n  lookupGetter,\n};\n","import { freeze } from './utils.js';\n\nexport const html = freeze([\n  'a',\n  'abbr',\n  'acronym',\n  'address',\n  'area',\n  'article',\n  'aside',\n  'audio',\n  'b',\n  'bdi',\n  'bdo',\n  'big',\n  'blink',\n  'blockquote',\n  'body',\n  'br',\n  'button',\n  'canvas',\n  'caption',\n  'center',\n  'cite',\n  'code',\n  'col',\n  'colgroup',\n  'content',\n  'data',\n  'datalist',\n  'dd',\n  'decorator',\n  'del',\n  'details',\n  'dfn',\n  'dialog',\n  'dir',\n  'div',\n  'dl',\n  'dt',\n  'element',\n  'em',\n  'fieldset',\n  'figcaption',\n  'figure',\n  'font',\n  'footer',\n  'form',\n  'h1',\n  'h2',\n  'h3',\n  'h4',\n  'h5',\n  'h6',\n  'head',\n  'header',\n  'hgroup',\n  'hr',\n  'html',\n  'i',\n  'img',\n  'input',\n  'ins',\n  'kbd',\n  'label',\n  'legend',\n  'li',\n  'main',\n  'map',\n  'mark',\n  'marquee',\n  'menu',\n  'menuitem',\n  'meter',\n  'nav',\n  'nobr',\n  'ol',\n  'optgroup',\n  'option',\n  'output',\n  'p',\n  'picture',\n  'pre',\n  'progress',\n  'q',\n  'rp',\n  'rt',\n  'ruby',\n  's',\n  'samp',\n  'section',\n  'select',\n  'shadow',\n  'small',\n  'source',\n  'spacer',\n  'span',\n  'strike',\n  'strong',\n  'style',\n  'sub',\n  'summary',\n  'sup',\n  'table',\n  'tbody',\n  'td',\n  'template',\n  'textarea',\n  'tfoot',\n  'th',\n  'thead',\n  'time',\n  'tr',\n  'track',\n  'tt',\n  'u',\n  'ul',\n  'var',\n  'video',\n  'wbr',\n]);\n\n// SVG\nexport const svg = freeze([\n  'svg',\n  'a',\n  'altglyph',\n  'altglyphdef',\n  'altglyphitem',\n  'animatecolor',\n  'animatemotion',\n  'animatetransform',\n  'circle',\n  'clippath',\n  'defs',\n  'desc',\n  'ellipse',\n  'filter',\n  'font',\n  'g',\n  'glyph',\n  'glyphref',\n  'hkern',\n  'image',\n  'line',\n  'lineargradient',\n  'marker',\n  'mask',\n  'metadata',\n  'mpath',\n  'path',\n  'pattern',\n  'polygon',\n  'polyline',\n  'radialgradient',\n  'rect',\n  'stop',\n  'style',\n  'switch',\n  'symbol',\n  'text',\n  'textpath',\n  'title',\n  'tref',\n  'tspan',\n  'view',\n  'vkern',\n]);\n\nexport const svgFilters = freeze([\n  'feBlend',\n  'feColorMatrix',\n  'feComponentTransfer',\n  'feComposite',\n  'feConvolveMatrix',\n  'feDiffuseLighting',\n  'feDisplacementMap',\n  'feDistantLight',\n  'feFlood',\n  'feFuncA',\n  'feFuncB',\n  'feFuncG',\n  'feFuncR',\n  'feGaussianBlur',\n  'feImage',\n  'feMerge',\n  'feMergeNode',\n  'feMorphology',\n  'feOffset',\n  'fePointLight',\n  'feSpecularLighting',\n  'feSpotLight',\n  'feTile',\n  'feTurbulence',\n]);\n\n// List of SVG elements that are disallowed by default.\n// We still need to know them so that we can do namespace\n// checks properly in case one wants to add them to\n// allow-list.\nexport const svgDisallowed = freeze([\n  'animate',\n  'color-profile',\n  'cursor',\n  'discard',\n  'fedropshadow',\n  'font-face',\n  'font-face-format',\n  'font-face-name',\n  'font-face-src',\n  'font-face-uri',\n  'foreignobject',\n  'hatch',\n  'hatchpath',\n  'mesh',\n  'meshgradient',\n  'meshpatch',\n  'meshrow',\n  'missing-glyph',\n  'script',\n  'set',\n  'solidcolor',\n  'unknown',\n  'use',\n]);\n\nexport const mathMl = freeze([\n  'math',\n  'menclose',\n  'merror',\n  'mfenced',\n  'mfrac',\n  'mglyph',\n  'mi',\n  'mlabeledtr',\n  'mmultiscripts',\n  'mn',\n  'mo',\n  'mover',\n  'mpadded',\n  'mphantom',\n  'mroot',\n  'mrow',\n  'ms',\n  'mspace',\n  'msqrt',\n  'mstyle',\n  'msub',\n  'msup',\n  'msubsup',\n  'mtable',\n  'mtd',\n  'mtext',\n  'mtr',\n  'munder',\n  'munderover',\n]);\n\n// Similarly to SVG, we want to know all MathML elements,\n// even those that we disallow by default.\nexport const mathMlDisallowed = freeze([\n  'maction',\n  'maligngroup',\n  'malignmark',\n  'mlongdiv',\n  'mscarries',\n  'mscarry',\n  'msgroup',\n  'mstack',\n  'msline',\n  'msrow',\n  'semantics',\n  'annotation',\n  'annotation-xml',\n  'mprescripts',\n  'none',\n]);\n\nexport const text = freeze(['#text']);\n","import { freeze } from './utils.js';\n\nexport const html = freeze([\n  'accept',\n  'action',\n  'align',\n  'alt',\n  'autocapitalize',\n  'autocomplete',\n  'autopictureinpicture',\n  'autoplay',\n  'background',\n  'bgcolor',\n  'border',\n  'capture',\n  'cellpadding',\n  'cellspacing',\n  'checked',\n  'cite',\n  'class',\n  'clear',\n  'color',\n  'cols',\n  'colspan',\n  'controls',\n  'controlslist',\n  'coords',\n  'crossorigin',\n  'datetime',\n  'decoding',\n  'default',\n  'dir',\n  'disabled',\n  'disablepictureinpicture',\n  'disableremoteplayback',\n  'download',\n  'draggable',\n  'enctype',\n  'enterkeyhint',\n  'face',\n  'for',\n  'headers',\n  'height',\n  'hidden',\n  'high',\n  'href',\n  'hreflang',\n  'id',\n  'inputmode',\n  'integrity',\n  'ismap',\n  'kind',\n  'label',\n  'lang',\n  'list',\n  'loading',\n  'loop',\n  'low',\n  'max',\n  'maxlength',\n  'media',\n  'method',\n  'min',\n  'minlength',\n  'multiple',\n  'muted',\n  'name',\n  'nonce',\n  'noshade',\n  'novalidate',\n  'nowrap',\n  'open',\n  'optimum',\n  'pattern',\n  'placeholder',\n  'playsinline',\n  'poster',\n  'preload',\n  'pubdate',\n  'radiogroup',\n  'readonly',\n  'rel',\n  'required',\n  'rev',\n  'reversed',\n  'role',\n  'rows',\n  'rowspan',\n  'spellcheck',\n  'scope',\n  'selected',\n  'shape',\n  'size',\n  'sizes',\n  'span',\n  'srclang',\n  'start',\n  'src',\n  'srcset',\n  'step',\n  'style',\n  'summary',\n  'tabindex',\n  'title',\n  'translate',\n  'type',\n  'usemap',\n  'valign',\n  'value',\n  'width',\n  'xmlns',\n  'slot',\n]);\n\nexport const svg = freeze([\n  'accent-height',\n  'accumulate',\n  'additive',\n  'alignment-baseline',\n  'ascent',\n  'attributename',\n  'attributetype',\n  'azimuth',\n  'basefrequency',\n  'baseline-shift',\n  'begin',\n  'bias',\n  'by',\n  'class',\n  'clip',\n  'clippathunits',\n  'clip-path',\n  'clip-rule',\n  'color',\n  'color-interpolation',\n  'color-interpolation-filters',\n  'color-profile',\n  'color-rendering',\n  'cx',\n  'cy',\n  'd',\n  'dx',\n  'dy',\n  'diffuseconstant',\n  'direction',\n  'display',\n  'divisor',\n  'dur',\n  'edgemode',\n  'elevation',\n  'end',\n  'fill',\n  'fill-opacity',\n  'fill-rule',\n  'filter',\n  'filterunits',\n  'flood-color',\n  'flood-opacity',\n  'font-family',\n  'font-size',\n  'font-size-adjust',\n  'font-stretch',\n  'font-style',\n  'font-variant',\n  'font-weight',\n  'fx',\n  'fy',\n  'g1',\n  'g2',\n  'glyph-name',\n  'glyphref',\n  'gradientunits',\n  'gradienttransform',\n  'height',\n  'href',\n  'id',\n  'image-rendering',\n  'in',\n  'in2',\n  'k',\n  'k1',\n  'k2',\n  'k3',\n  'k4',\n  'kerning',\n  'keypoints',\n  'keysplines',\n  'keytimes',\n  'lang',\n  'lengthadjust',\n  'letter-spacing',\n  'kernelmatrix',\n  'kernelunitlength',\n  'lighting-color',\n  'local',\n  'marker-end',\n  'marker-mid',\n  'marker-start',\n  'markerheight',\n  'markerunits',\n  'markerwidth',\n  'maskcontentunits',\n  'maskunits',\n  'max',\n  'mask',\n  'media',\n  'method',\n  'mode',\n  'min',\n  'name',\n  'numoctaves',\n  'offset',\n  'operator',\n  'opacity',\n  'order',\n  'orient',\n  'orientation',\n  'origin',\n  'overflow',\n  'paint-order',\n  'path',\n  'pathlength',\n  'patterncontentunits',\n  'patterntransform',\n  'patternunits',\n  'points',\n  'preservealpha',\n  'preserveaspectratio',\n  'primitiveunits',\n  'r',\n  'rx',\n  'ry',\n  'radius',\n  'refx',\n  'refy',\n  'repeatcount',\n  'repeatdur',\n  'restart',\n  'result',\n  'rotate',\n  'scale',\n  'seed',\n  'shape-rendering',\n  'specularconstant',\n  'specularexponent',\n  'spreadmethod',\n  'startoffset',\n  'stddeviation',\n  'stitchtiles',\n  'stop-color',\n  'stop-opacity',\n  'stroke-dasharray',\n  'stroke-dashoffset',\n  'stroke-linecap',\n  'stroke-linejoin',\n  'stroke-miterlimit',\n  'stroke-opacity',\n  'stroke',\n  'stroke-width',\n  'style',\n  'surfacescale',\n  'systemlanguage',\n  'tabindex',\n  'targetx',\n  'targety',\n  'transform',\n  'transform-origin',\n  'text-anchor',\n  'text-decoration',\n  'text-rendering',\n  'textlength',\n  'type',\n  'u1',\n  'u2',\n  'unicode',\n  'values',\n  'viewbox',\n  'visibility',\n  'version',\n  'vert-adv-y',\n  'vert-origin-x',\n  'vert-origin-y',\n  'width',\n  'word-spacing',\n  'wrap',\n  'writing-mode',\n  'xchannelselector',\n  'ychannelselector',\n  'x',\n  'x1',\n  'x2',\n  'xmlns',\n  'y',\n  'y1',\n  'y2',\n  'z',\n  'zoomandpan',\n]);\n\nexport const mathMl = freeze([\n  'accent',\n  'accentunder',\n  'align',\n  'bevelled',\n  'close',\n  'columnsalign',\n  'columnlines',\n  'columnspan',\n  'denomalign',\n  'depth',\n  'dir',\n  'display',\n  'displaystyle',\n  'encoding',\n  'fence',\n  'frame',\n  'height',\n  'href',\n  'id',\n  'largeop',\n  'length',\n  'linethickness',\n  'lspace',\n  'lquote',\n  'mathbackground',\n  'mathcolor',\n  'mathsize',\n  'mathvariant',\n  'maxsize',\n  'minsize',\n  'movablelimits',\n  'notation',\n  'numalign',\n  'open',\n  'rowalign',\n  'rowlines',\n  'rowspacing',\n  'rowspan',\n  'rspace',\n  'rquote',\n  'scriptlevel',\n  'scriptminsize',\n  'scriptsizemultiplier',\n  'selection',\n  'separator',\n  'separators',\n  'stretchy',\n  'subscriptshift',\n  'supscriptshift',\n  'symmetric',\n  'voffset',\n  'width',\n  'xmlns',\n]);\n\nexport const xml = freeze([\n  'xlink:href',\n  'xml:id',\n  'xlink:title',\n  'xml:space',\n  'xmlns:xlink',\n]);\n","import { seal } from './utils.js';\n\n// eslint-disable-next-line unicorn/better-regex\nexport const MUSTACHE_EXPR = seal(/\\{\\{[\\w\\W]*|[\\w\\W]*\\}\\}/gm); // Specify template detection regex for SAFE_FOR_TEMPLATES mode\nexport const ERB_EXPR = seal(/<%[\\w\\W]*|[\\w\\W]*%>/gm);\nexport const TMPLIT_EXPR = seal(/\\${[\\w\\W]*}/gm);\nexport const DATA_ATTR = seal(/^data-[\\-\\w.\\u00B7-\\uFFFF]/); // eslint-disable-line no-useless-escape\nexport const ARIA_ATTR = seal(/^aria-[\\-\\w]+$/); // eslint-disable-line no-useless-escape\nexport const IS_ALLOWED_URI = seal(\n  /^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i // eslint-disable-line no-useless-escape\n);\nexport const IS_SCRIPT_OR_DATA = seal(/^(?:\\w+script|data):/i);\nexport const ATTR_WHITESPACE = seal(\n  /[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205F\\u3000]/g // eslint-disable-line no-control-regex\n);\nexport const DOCTYPE_NAME = seal(/^html$/i);\n","import * as TAGS from './tags.js';\nimport * as ATTRS from './attrs.js';\nimport * as EXPRESSIONS from './regexp.js';\nimport {\n  addToSet,\n  clone,\n  freeze,\n  arrayForEach,\n  arrayPop,\n  arrayPush,\n  stringMatch,\n  stringReplace,\n  stringToLowerCase,\n  stringToString,\n  stringIndexOf,\n  stringTrim,\n  regExpTest,\n  typeErrorCreate,\n  lookupGetter,\n} from './utils.js';\n\nconst getGlobal = () => (typeof window === 'undefined' ? null : window);\n\n/**\n * Creates a no-op policy for internal use only.\n * Don't export this function outside this module!\n * @param {?TrustedTypePolicyFactory} trustedTypes The policy factory.\n * @param {Document} document The document object (to determine policy name suffix)\n * @return {?TrustedTypePolicy} The policy created (or null, if Trusted Types\n * are not supported).\n */\nconst _createTrustedTypesPolicy = function (trustedTypes, document) {\n  if (\n    typeof trustedTypes !== 'object' ||\n    typeof trustedTypes.createPolicy !== 'function'\n  ) {\n    return null;\n  }\n\n  // Allow the callers to control the unique policy name\n  // by adding a data-tt-policy-suffix to the script element with the DOMPurify.\n  // Policy creation with duplicate names throws in Trusted Types.\n  let suffix = null;\n  const ATTR_NAME = 'data-tt-policy-suffix';\n  if (\n    document.currentScript &&\n    document.currentScript.hasAttribute(ATTR_NAME)\n  ) {\n    suffix = document.currentScript.getAttribute(ATTR_NAME);\n  }\n\n  const policyName = 'dompurify' + (suffix ? '#' + suffix : '');\n\n  try {\n    return trustedTypes.createPolicy(policyName, {\n      createHTML(html) {\n        return html;\n      },\n      createScriptURL(scriptUrl) {\n        return scriptUrl;\n      },\n    });\n  } catch (_) {\n    // Policy creation failed (most likely another DOMPurify script has\n    // already run). Skip creating the policy, as this will only cause errors\n    // if TT are enforced.\n    console.warn(\n      'TrustedTypes policy ' + policyName + ' could not be created.'\n    );\n    return null;\n  }\n};\n\nfunction createDOMPurify(window = getGlobal()) {\n  const DOMPurify = (root) => createDOMPurify(root);\n\n  /**\n   * Version label, exposed for easier checks\n   * if DOMPurify is up to date or not\n   */\n  DOMPurify.version = VERSION;\n\n  /**\n   * Array of elements that DOMPurify removed during sanitation.\n   * Empty if nothing was removed.\n   */\n  DOMPurify.removed = [];\n\n  if (!window || !window.document || window.document.nodeType !== 9) {\n    // Not running in a browser, provide a factory function\n    // so that you can pass your own Window\n    DOMPurify.isSupported = false;\n\n    return DOMPurify;\n  }\n\n  const originalDocument = window.document;\n\n  let { document } = window;\n  const {\n    DocumentFragment,\n    HTMLTemplateElement,\n    Node,\n    Element,\n    NodeFilter,\n    NamedNodeMap = window.NamedNodeMap || window.MozNamedAttrMap,\n    HTMLFormElement,\n    DOMParser,\n    trustedTypes,\n  } = window;\n\n  const ElementPrototype = Element.prototype;\n\n  const cloneNode = lookupGetter(ElementPrototype, 'cloneNode');\n  const getNextSibling = lookupGetter(ElementPrototype, 'nextSibling');\n  const getChildNodes = lookupGetter(ElementPrototype, 'childNodes');\n  const getParentNode = lookupGetter(ElementPrototype, 'parentNode');\n\n  // As per issue #47, the web-components registry is inherited by a\n  // new document created via createHTMLDocument. As per the spec\n  // (http://w3c.github.io/webcomponents/spec/custom/#creating-and-passing-registries)\n  // a new empty registry is used when creating a template contents owner\n  // document, so we use that as our parent document to ensure nothing\n  // is inherited.\n  if (typeof HTMLTemplateElement === 'function') {\n    const template = document.createElement('template');\n    if (template.content && template.content.ownerDocument) {\n      document = template.content.ownerDocument;\n    }\n  }\n\n  const trustedTypesPolicy = _createTrustedTypesPolicy(\n    trustedTypes,\n    originalDocument\n  );\n  const emptyHTML = trustedTypesPolicy ? trustedTypesPolicy.createHTML('') : '';\n\n  const {\n    implementation,\n    createNodeIterator,\n    createDocumentFragment,\n    getElementsByTagName,\n  } = document;\n  const { importNode } = originalDocument;\n\n  let documentMode = {};\n  try {\n    documentMode = clone(document).documentMode ? document.documentMode : {};\n  } catch (_) {}\n\n  let hooks = {};\n\n  /**\n   * Expose whether this browser supports running the full DOMPurify.\n   */\n  DOMPurify.isSupported =\n    typeof getParentNode === 'function' &&\n    implementation &&\n    typeof implementation.createHTMLDocument !== 'undefined' &&\n    documentMode !== 9;\n\n  const {\n    MUSTACHE_EXPR,\n    ERB_EXPR,\n    TMPLIT_EXPR,\n    DATA_ATTR,\n    ARIA_ATTR,\n    IS_SCRIPT_OR_DATA,\n    ATTR_WHITESPACE,\n  } = EXPRESSIONS;\n\n  let { IS_ALLOWED_URI } = EXPRESSIONS;\n\n  /**\n   * We consider the elements and attributes below to be safe. Ideally\n   * don't add any new ones but feel free to remove unwanted ones.\n   */\n\n  /* allowed element names */\n  let ALLOWED_TAGS = null;\n  const DEFAULT_ALLOWED_TAGS = addToSet({}, [\n    ...TAGS.html,\n    ...TAGS.svg,\n    ...TAGS.svgFilters,\n    ...TAGS.mathMl,\n    ...TAGS.text,\n  ]);\n\n  /* Allowed attribute names */\n  let ALLOWED_ATTR = null;\n  const DEFAULT_ALLOWED_ATTR = addToSet({}, [\n    ...ATTRS.html,\n    ...ATTRS.svg,\n    ...ATTRS.mathMl,\n    ...ATTRS.xml,\n  ]);\n\n  /*\n   * Configure how DOMPUrify should handle custom elements and their attributes as well as customized built-in elements.\n   * @property {RegExp|Function|null} tagNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any custom elements)\n   * @property {RegExp|Function|null} attributeNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any attributes not on the allow list)\n   * @property {boolean} allowCustomizedBuiltInElements allow custom elements derived from built-ins if they pass CUSTOM_ELEMENT_HANDLING.tagNameCheck. Default: `false`.\n   */\n  const CUSTOM_ELEMENT_HANDLING = Object.seal(\n    Object.create(null, {\n      tagNameCheck: {\n        writable: true,\n        configurable: false,\n        enumerable: true,\n        value: null,\n      },\n      attributeNameCheck: {\n        writable: true,\n        configurable: false,\n        enumerable: true,\n        value: null,\n      },\n      allowCustomizedBuiltInElements: {\n        writable: true,\n        configurable: false,\n        enumerable: true,\n        value: false,\n      },\n    })\n  );\n\n  /* Explicitly forbidden tags (overrides ALLOWED_TAGS/ADD_TAGS) */\n  let FORBID_TAGS = null;\n\n  /* Explicitly forbidden attributes (overrides ALLOWED_ATTR/ADD_ATTR) */\n  let FORBID_ATTR = null;\n\n  /* Decide if ARIA attributes are okay */\n  let ALLOW_ARIA_ATTR = true;\n\n  /* Decide if custom data attributes are okay */\n  let ALLOW_DATA_ATTR = true;\n\n  /* Decide if unknown protocols are okay */\n  let ALLOW_UNKNOWN_PROTOCOLS = false;\n\n  /* Output should be safe for common template engines.\n   * This means, DOMPurify removes data attributes, mustaches and ERB\n   */\n  let SAFE_FOR_TEMPLATES = false;\n\n  /* Decide if document with <html>... should be returned */\n  let WHOLE_DOCUMENT = false;\n\n  /* Track whether config is already set on this instance of DOMPurify. */\n  let SET_CONFIG = false;\n\n  /* Decide if all elements (e.g. style, script) must be children of\n   * document.body. By default, browsers might move them to document.head */\n  let FORCE_BODY = false;\n\n  /* Decide if a DOM `HTMLBodyElement` should be returned, instead of a html\n   * string (or a TrustedHTML object if Trusted Types are supported).\n   * If `WHOLE_DOCUMENT` is enabled a `HTMLHtmlElement` will be returned instead\n   */\n  let RETURN_DOM = false;\n\n  /* Decide if a DOM `DocumentFragment` should be returned, instead of a html\n   * string  (or a TrustedHTML object if Trusted Types are supported) */\n  let RETURN_DOM_FRAGMENT = false;\n\n  /* Try to return a Trusted Type object instead of a string, return a string in\n   * case Trusted Types are not supported  */\n  let RETURN_TRUSTED_TYPE = false;\n\n  /* Output should be free from DOM clobbering attacks?\n   * This sanitizes markups named with colliding, clobberable built-in DOM APIs.\n   */\n  let SANITIZE_DOM = true;\n\n  /* Achieve full DOM Clobbering protection by isolating the namespace of named\n   * properties and JS variables, mitigating attacks that abuse the HTML/DOM spec rules.\n   *\n   * HTML/DOM spec rules that enable DOM Clobbering:\n   *   - Named Access on Window (§7.3.3)\n   *   - DOM Tree Accessors (§3.1.5)\n   *   - Form Element Parent-Child Relations (§4.10.3)\n   *   - Iframe srcdoc / Nested WindowProxies (§4.8.5)\n   *   - HTMLCollection (§4.2.10.2)\n   *\n   * Namespace isolation is implemented by prefixing `id` and `name` attributes\n   * with a constant string, i.e., `user-content-`\n   */\n  let SANITIZE_NAMED_PROPS = false;\n  const SANITIZE_NAMED_PROPS_PREFIX = 'user-content-';\n\n  /* Keep element content when removing element? */\n  let KEEP_CONTENT = true;\n\n  /* If a `Node` is passed to sanitize(), then performs sanitization in-place instead\n   * of importing it into a new Document and returning a sanitized copy */\n  let IN_PLACE = false;\n\n  /* Allow usage of profiles like html, svg and mathMl */\n  let USE_PROFILES = {};\n\n  /* Tags to ignore content of when KEEP_CONTENT is true */\n  let FORBID_CONTENTS = null;\n  const DEFAULT_FORBID_CONTENTS = addToSet({}, [\n    'annotation-xml',\n    'audio',\n    'colgroup',\n    'desc',\n    'foreignobject',\n    'head',\n    'iframe',\n    'math',\n    'mi',\n    'mn',\n    'mo',\n    'ms',\n    'mtext',\n    'noembed',\n    'noframes',\n    'noscript',\n    'plaintext',\n    'script',\n    'style',\n    'svg',\n    'template',\n    'thead',\n    'title',\n    'video',\n    'xmp',\n  ]);\n\n  /* Tags that are safe for data: URIs */\n  let DATA_URI_TAGS = null;\n  const DEFAULT_DATA_URI_TAGS = addToSet({}, [\n    'audio',\n    'video',\n    'img',\n    'source',\n    'image',\n    'track',\n  ]);\n\n  /* Attributes safe for values like \"javascript:\" */\n  let URI_SAFE_ATTRIBUTES = null;\n  const DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, [\n    'alt',\n    'class',\n    'for',\n    'id',\n    'label',\n    'name',\n    'pattern',\n    'placeholder',\n    'role',\n    'summary',\n    'title',\n    'value',\n    'style',\n    'xmlns',\n  ]);\n\n  const MATHML_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';\n  const SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\n  const HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';\n  /* Document namespace */\n  let NAMESPACE = HTML_NAMESPACE;\n  let IS_EMPTY_INPUT = false;\n\n  /* Allowed XHTML+XML namespaces */\n  let ALLOWED_NAMESPACES = null;\n  const DEFAULT_ALLOWED_NAMESPACES = addToSet(\n    {},\n    [MATHML_NAMESPACE, SVG_NAMESPACE, HTML_NAMESPACE],\n    stringToString\n  );\n\n  /* Parsing of strict XHTML documents */\n  let PARSER_MEDIA_TYPE;\n  const SUPPORTED_PARSER_MEDIA_TYPES = ['application/xhtml+xml', 'text/html'];\n  const DEFAULT_PARSER_MEDIA_TYPE = 'text/html';\n  let transformCaseFunc;\n\n  /* Keep a reference to config to pass to hooks */\n  let CONFIG = null;\n\n  /* Ideally, do not touch anything below this line */\n  /* ______________________________________________ */\n\n  const formElement = document.createElement('form');\n\n  const isRegexOrFunction = function (testValue) {\n    return testValue instanceof RegExp || testValue instanceof Function;\n  };\n\n  /**\n   * _parseConfig\n   *\n   * @param  {Object} cfg optional config literal\n   */\n  // eslint-disable-next-line complexity\n  const _parseConfig = function (cfg) {\n    if (CONFIG && CONFIG === cfg) {\n      return;\n    }\n\n    /* Shield configuration object from tampering */\n    if (!cfg || typeof cfg !== 'object') {\n      cfg = {};\n    }\n\n    /* Shield configuration object from prototype pollution */\n    cfg = clone(cfg);\n\n    PARSER_MEDIA_TYPE =\n      // eslint-disable-next-line unicorn/prefer-includes\n      SUPPORTED_PARSER_MEDIA_TYPES.indexOf(cfg.PARSER_MEDIA_TYPE) === -1\n        ? (PARSER_MEDIA_TYPE = DEFAULT_PARSER_MEDIA_TYPE)\n        : (PARSER_MEDIA_TYPE = cfg.PARSER_MEDIA_TYPE);\n\n    // HTML tags and attributes are not case-sensitive, converting to lowercase. Keeping XHTML as is.\n    transformCaseFunc =\n      PARSER_MEDIA_TYPE === 'application/xhtml+xml'\n        ? stringToString\n        : stringToLowerCase;\n\n    /* Set configuration parameters */\n    ALLOWED_TAGS =\n      'ALLOWED_TAGS' in cfg\n        ? addToSet({}, cfg.ALLOWED_TAGS, transformCaseFunc)\n        : DEFAULT_ALLOWED_TAGS;\n    ALLOWED_ATTR =\n      'ALLOWED_ATTR' in cfg\n        ? addToSet({}, cfg.ALLOWED_ATTR, transformCaseFunc)\n        : DEFAULT_ALLOWED_ATTR;\n    ALLOWED_NAMESPACES =\n      'ALLOWED_NAMESPACES' in cfg\n        ? addToSet({}, cfg.ALLOWED_NAMESPACES, stringToString)\n        : DEFAULT_ALLOWED_NAMESPACES;\n    URI_SAFE_ATTRIBUTES =\n      'ADD_URI_SAFE_ATTR' in cfg\n        ? addToSet(\n            clone(DEFAULT_URI_SAFE_ATTRIBUTES), // eslint-disable-line indent\n            cfg.ADD_URI_SAFE_ATTR, // eslint-disable-line indent\n            transformCaseFunc // eslint-disable-line indent\n          ) // eslint-disable-line indent\n        : DEFAULT_URI_SAFE_ATTRIBUTES;\n    DATA_URI_TAGS =\n      'ADD_DATA_URI_TAGS' in cfg\n        ? addToSet(\n            clone(DEFAULT_DATA_URI_TAGS), // eslint-disable-line indent\n            cfg.ADD_DATA_URI_TAGS, // eslint-disable-line indent\n            transformCaseFunc // eslint-disable-line indent\n          ) // eslint-disable-line indent\n        : DEFAULT_DATA_URI_TAGS;\n    FORBID_CONTENTS =\n      'FORBID_CONTENTS' in cfg\n        ? addToSet({}, cfg.FORBID_CONTENTS, transformCaseFunc)\n        : DEFAULT_FORBID_CONTENTS;\n    FORBID_TAGS =\n      'FORBID_TAGS' in cfg\n        ? addToSet({}, cfg.FORBID_TAGS, transformCaseFunc)\n        : {};\n    FORBID_ATTR =\n      'FORBID_ATTR' in cfg\n        ? addToSet({}, cfg.FORBID_ATTR, transformCaseFunc)\n        : {};\n    USE_PROFILES = 'USE_PROFILES' in cfg ? cfg.USE_PROFILES : false;\n    ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false; // Default true\n    ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false; // Default true\n    ALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false; // Default false\n    SAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false; // Default false\n    WHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false; // Default false\n    RETURN_DOM = cfg.RETURN_DOM || false; // Default false\n    RETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false; // Default false\n    RETURN_TRUSTED_TYPE = cfg.RETURN_TRUSTED_TYPE || false; // Default false\n    FORCE_BODY = cfg.FORCE_BODY || false; // Default false\n    SANITIZE_DOM = cfg.SANITIZE_DOM !== false; // Default true\n    SANITIZE_NAMED_PROPS = cfg.SANITIZE_NAMED_PROPS || false; // Default false\n    KEEP_CONTENT = cfg.KEEP_CONTENT !== false; // Default true\n    IN_PLACE = cfg.IN_PLACE || false; // Default false\n    IS_ALLOWED_URI = cfg.ALLOWED_URI_REGEXP || IS_ALLOWED_URI;\n    NAMESPACE = cfg.NAMESPACE || HTML_NAMESPACE;\n    if (\n      cfg.CUSTOM_ELEMENT_HANDLING &&\n      isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck)\n    ) {\n      CUSTOM_ELEMENT_HANDLING.tagNameCheck =\n        cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck;\n    }\n\n    if (\n      cfg.CUSTOM_ELEMENT_HANDLING &&\n      isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)\n    ) {\n      CUSTOM_ELEMENT_HANDLING.attributeNameCheck =\n        cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck;\n    }\n\n    if (\n      cfg.CUSTOM_ELEMENT_HANDLING &&\n      typeof cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements ===\n        'boolean'\n    ) {\n      CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements =\n        cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements;\n    }\n\n    if (SAFE_FOR_TEMPLATES) {\n      ALLOW_DATA_ATTR = false;\n    }\n\n    if (RETURN_DOM_FRAGMENT) {\n      RETURN_DOM = true;\n    }\n\n    /* Parse profile info */\n    if (USE_PROFILES) {\n      ALLOWED_TAGS = addToSet({}, [...TAGS.text]);\n      ALLOWED_ATTR = [];\n      if (USE_PROFILES.html === true) {\n        addToSet(ALLOWED_TAGS, TAGS.html);\n        addToSet(ALLOWED_ATTR, ATTRS.html);\n      }\n\n      if (USE_PROFILES.svg === true) {\n        addToSet(ALLOWED_TAGS, TAGS.svg);\n        addToSet(ALLOWED_ATTR, ATTRS.svg);\n        addToSet(ALLOWED_ATTR, ATTRS.xml);\n      }\n\n      if (USE_PROFILES.svgFilters === true) {\n        addToSet(ALLOWED_TAGS, TAGS.svgFilters);\n        addToSet(ALLOWED_ATTR, ATTRS.svg);\n        addToSet(ALLOWED_ATTR, ATTRS.xml);\n      }\n\n      if (USE_PROFILES.mathMl === true) {\n        addToSet(ALLOWED_TAGS, TAGS.mathMl);\n        addToSet(ALLOWED_ATTR, ATTRS.mathMl);\n        addToSet(ALLOWED_ATTR, ATTRS.xml);\n      }\n    }\n\n    /* Merge configuration parameters */\n    if (cfg.ADD_TAGS) {\n      if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) {\n        ALLOWED_TAGS = clone(ALLOWED_TAGS);\n      }\n\n      addToSet(ALLOWED_TAGS, cfg.ADD_TAGS, transformCaseFunc);\n    }\n\n    if (cfg.ADD_ATTR) {\n      if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) {\n        ALLOWED_ATTR = clone(ALLOWED_ATTR);\n      }\n\n      addToSet(ALLOWED_ATTR, cfg.ADD_ATTR, transformCaseFunc);\n    }\n\n    if (cfg.ADD_URI_SAFE_ATTR) {\n      addToSet(URI_SAFE_ATTRIBUTES, cfg.ADD_URI_SAFE_ATTR, transformCaseFunc);\n    }\n\n    if (cfg.FORBID_CONTENTS) {\n      if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {\n        FORBID_CONTENTS = clone(FORBID_CONTENTS);\n      }\n\n      addToSet(FORBID_CONTENTS, cfg.FORBID_CONTENTS, transformCaseFunc);\n    }\n\n    /* Add #text in case KEEP_CONTENT is set to true */\n    if (KEEP_CONTENT) {\n      ALLOWED_TAGS['#text'] = true;\n    }\n\n    /* Add html, head and body to ALLOWED_TAGS in case WHOLE_DOCUMENT is true */\n    if (WHOLE_DOCUMENT) {\n      addToSet(ALLOWED_TAGS, ['html', 'head', 'body']);\n    }\n\n    /* Add tbody to ALLOWED_TAGS in case tables are permitted, see #286, #365 */\n    if (ALLOWED_TAGS.table) {\n      addToSet(ALLOWED_TAGS, ['tbody']);\n      delete FORBID_TAGS.tbody;\n    }\n\n    // Prevent further manipulation of configuration.\n    // Not available in IE8, Safari 5, etc.\n    if (freeze) {\n      freeze(cfg);\n    }\n\n    CONFIG = cfg;\n  };\n\n  const MATHML_TEXT_INTEGRATION_POINTS = addToSet({}, [\n    'mi',\n    'mo',\n    'mn',\n    'ms',\n    'mtext',\n  ]);\n\n  const HTML_INTEGRATION_POINTS = addToSet({}, [\n    'foreignobject',\n    'desc',\n    'title',\n    'annotation-xml',\n  ]);\n\n  // Certain elements are allowed in both SVG and HTML\n  // namespace. We need to specify them explicitly\n  // so that they don't get erroneously deleted from\n  // HTML namespace.\n  const COMMON_SVG_AND_HTML_ELEMENTS = addToSet({}, [\n    'title',\n    'style',\n    'font',\n    'a',\n    'script',\n  ]);\n\n  /* Keep track of all possible SVG and MathML tags\n   * so that we can perform the namespace checks\n   * correctly. */\n  const ALL_SVG_TAGS = addToSet({}, TAGS.svg);\n  addToSet(ALL_SVG_TAGS, TAGS.svgFilters);\n  addToSet(ALL_SVG_TAGS, TAGS.svgDisallowed);\n\n  const ALL_MATHML_TAGS = addToSet({}, TAGS.mathMl);\n  addToSet(ALL_MATHML_TAGS, TAGS.mathMlDisallowed);\n\n  /**\n   *\n   *\n   * @param  {Element} element a DOM element whose namespace is being checked\n   * @returns {boolean} Return false if the element has a\n   *  namespace that a spec-compliant parser would never\n   *  return. Return true otherwise.\n   */\n  const _checkValidNamespace = function (element) {\n    let parent = getParentNode(element);\n\n    // In JSDOM, if we're inside shadow DOM, then parentNode\n    // can be null. We just simulate parent in this case.\n    if (!parent || !parent.tagName) {\n      parent = {\n        namespaceURI: NAMESPACE,\n        tagName: 'template',\n      };\n    }\n\n    const tagName = stringToLowerCase(element.tagName);\n    const parentTagName = stringToLowerCase(parent.tagName);\n\n    if (!ALLOWED_NAMESPACES[element.namespaceURI]) {\n      return false;\n    }\n\n    if (element.namespaceURI === SVG_NAMESPACE) {\n      // The only way to switch from HTML namespace to SVG\n      // is via <svg>. If it happens via any other tag, then\n      // it should be killed.\n      if (parent.namespaceURI === HTML_NAMESPACE) {\n        return tagName === 'svg';\n      }\n\n      // The only way to switch from MathML to SVG is via`\n      // svg if parent is either <annotation-xml> or MathML\n      // text integration points.\n      if (parent.namespaceURI === MATHML_NAMESPACE) {\n        return (\n          tagName === 'svg' &&\n          (parentTagName === 'annotation-xml' ||\n            MATHML_TEXT_INTEGRATION_POINTS[parentTagName])\n        );\n      }\n\n      // We only allow elements that are defined in SVG\n      // spec. All others are disallowed in SVG namespace.\n      return Boolean(ALL_SVG_TAGS[tagName]);\n    }\n\n    if (element.namespaceURI === MATHML_NAMESPACE) {\n      // The only way to switch from HTML namespace to MathML\n      // is via <math>. If it happens via any other tag, then\n      // it should be killed.\n      if (parent.namespaceURI === HTML_NAMESPACE) {\n        return tagName === 'math';\n      }\n\n      // The only way to switch from SVG to MathML is via\n      // <math> and HTML integration points\n      if (parent.namespaceURI === SVG_NAMESPACE) {\n        return tagName === 'math' && HTML_INTEGRATION_POINTS[parentTagName];\n      }\n\n      // We only allow elements that are defined in MathML\n      // spec. All others are disallowed in MathML namespace.\n      return Boolean(ALL_MATHML_TAGS[tagName]);\n    }\n\n    if (element.namespaceURI === HTML_NAMESPACE) {\n      // The only way to switch from SVG to HTML is via\n      // HTML integration points, and from MathML to HTML\n      // is via MathML text integration points\n      if (\n        parent.namespaceURI === SVG_NAMESPACE &&\n        !HTML_INTEGRATION_POINTS[parentTagName]\n      ) {\n        return false;\n      }\n\n      if (\n        parent.namespaceURI === MATHML_NAMESPACE &&\n        !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]\n      ) {\n        return false;\n      }\n\n      // We disallow tags that are specific for MathML\n      // or SVG and should never appear in HTML namespace\n      return (\n        !ALL_MATHML_TAGS[tagName] &&\n        (COMMON_SVG_AND_HTML_ELEMENTS[tagName] || !ALL_SVG_TAGS[tagName])\n      );\n    }\n\n    // For XHTML and XML documents that support custom namespaces\n    if (\n      PARSER_MEDIA_TYPE === 'application/xhtml+xml' &&\n      ALLOWED_NAMESPACES[element.namespaceURI]\n    ) {\n      return true;\n    }\n\n    // The code should never reach this place (this means\n    // that the element somehow got namespace that is not\n    // HTML, SVG, MathML or allowed via ALLOWED_NAMESPACES).\n    // Return false just in case.\n    return false;\n  };\n\n  /**\n   * _forceRemove\n   *\n   * @param  {Node} node a DOM node\n   */\n  const _forceRemove = function (node) {\n    arrayPush(DOMPurify.removed, { element: node });\n    try {\n      // eslint-disable-next-line unicorn/prefer-dom-node-remove\n      node.parentNode.removeChild(node);\n    } catch (_) {\n      try {\n        node.outerHTML = emptyHTML;\n      } catch (_) {\n        node.remove();\n      }\n    }\n  };\n\n  /**\n   * _removeAttribute\n   *\n   * @param  {String} name an Attribute name\n   * @param  {Node} node a DOM node\n   */\n  const _removeAttribute = function (name, node) {\n    try {\n      arrayPush(DOMPurify.removed, {\n        attribute: node.getAttributeNode(name),\n        from: node,\n      });\n    } catch (_) {\n      arrayPush(DOMPurify.removed, {\n        attribute: null,\n        from: node,\n      });\n    }\n\n    node.removeAttribute(name);\n\n    // We void attribute values for unremovable \"is\"\" attributes\n    if (name === 'is' && !ALLOWED_ATTR[name]) {\n      if (RETURN_DOM || RETURN_DOM_FRAGMENT) {\n        try {\n          _forceRemove(node);\n        } catch (_) {}\n      } else {\n        try {\n          node.setAttribute(name, '');\n        } catch (_) {}\n      }\n    }\n  };\n\n  /**\n   * _initDocument\n   *\n   * @param  {String} dirty a string of dirty markup\n   * @return {Document} a DOM, filled with the dirty markup\n   */\n  const _initDocument = function (dirty) {\n    /* Create a HTML document */\n    let doc;\n    let leadingWhitespace;\n\n    if (FORCE_BODY) {\n      dirty = '<remove></remove>' + dirty;\n    } else {\n      /* If FORCE_BODY isn't used, leading whitespace needs to be preserved manually */\n      const matches = stringMatch(dirty, /^[\\r\\n\\t ]+/);\n      leadingWhitespace = matches && matches[0];\n    }\n\n    if (\n      PARSER_MEDIA_TYPE === 'application/xhtml+xml' &&\n      NAMESPACE === HTML_NAMESPACE\n    ) {\n      // Root of XHTML doc must contain xmlns declaration (see https://www.w3.org/TR/xhtml1/normative.html#strict)\n      dirty =\n        '<html xmlns=\"http://www.w3.org/1999/xhtml\"><head></head><body>' +\n        dirty +\n        '</body></html>';\n    }\n\n    const dirtyPayload = trustedTypesPolicy\n      ? trustedTypesPolicy.createHTML(dirty)\n      : dirty;\n    /*\n     * Use the DOMParser API by default, fallback later if needs be\n     * DOMParser not work for svg when has multiple root element.\n     */\n    if (NAMESPACE === HTML_NAMESPACE) {\n      try {\n        doc = new DOMParser().parseFromString(dirtyPayload, PARSER_MEDIA_TYPE);\n      } catch (_) {}\n    }\n\n    /* Use createHTMLDocument in case DOMParser is not available */\n    if (!doc || !doc.documentElement) {\n      doc = implementation.createDocument(NAMESPACE, 'template', null);\n      try {\n        doc.documentElement.innerHTML = IS_EMPTY_INPUT ? '' : dirtyPayload;\n      } catch (_) {\n        // Syntax error if dirtyPayload is invalid xml\n      }\n    }\n\n    const body = doc.body || doc.documentElement;\n\n    if (dirty && leadingWhitespace) {\n      body.insertBefore(\n        document.createTextNode(leadingWhitespace),\n        body.childNodes[0] || null\n      );\n    }\n\n    /* Work on whole document or just its body */\n    if (NAMESPACE === HTML_NAMESPACE) {\n      return getElementsByTagName.call(\n        doc,\n        WHOLE_DOCUMENT ? 'html' : 'body'\n      )[0];\n    }\n\n    return WHOLE_DOCUMENT ? doc.documentElement : body;\n  };\n\n  /**\n   * _createIterator\n   *\n   * @param  {Document} root document/fragment to create iterator for\n   * @return {Iterator} iterator instance\n   */\n  const _createIterator = function (root) {\n    return createNodeIterator.call(\n      root.ownerDocument || root,\n      root,\n      // eslint-disable-next-line no-bitwise\n      NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_TEXT,\n      null,\n      false\n    );\n  };\n\n  /**\n   * _isClobbered\n   *\n   * @param  {Node} elm element to check for clobbering attacks\n   * @return {Boolean} true if clobbered, false if safe\n   */\n  const _isClobbered = function (elm) {\n    return (\n      elm instanceof HTMLFormElement &&\n      (typeof elm.nodeName !== 'string' ||\n        typeof elm.textContent !== 'string' ||\n        typeof elm.removeChild !== 'function' ||\n        !(elm.attributes instanceof NamedNodeMap) ||\n        typeof elm.removeAttribute !== 'function' ||\n        typeof elm.setAttribute !== 'function' ||\n        typeof elm.namespaceURI !== 'string' ||\n        typeof elm.insertBefore !== 'function' ||\n        typeof elm.hasChildNodes !== 'function')\n    );\n  };\n\n  /**\n   * _isNode\n   *\n   * @param  {Node} obj object to check whether it's a DOM node\n   * @return {Boolean} true is object is a DOM node\n   */\n  const _isNode = function (object) {\n    return typeof Node === 'object'\n      ? object instanceof Node\n      : object &&\n          typeof object === 'object' &&\n          typeof object.nodeType === 'number' &&\n          typeof object.nodeName === 'string';\n  };\n\n  /**\n   * _executeHook\n   * Execute user configurable hooks\n   *\n   * @param  {String} entryPoint  Name of the hook's entry point\n   * @param  {Node} currentNode node to work on with the hook\n   * @param  {Object} data additional hook parameters\n   */\n  const _executeHook = function (entryPoint, currentNode, data) {\n    if (!hooks[entryPoint]) {\n      return;\n    }\n\n    arrayForEach(hooks[entryPoint], (hook) => {\n      hook.call(DOMPurify, currentNode, data, CONFIG);\n    });\n  };\n\n  /**\n   * _sanitizeElements\n   *\n   * @protect nodeName\n   * @protect textContent\n   * @protect removeChild\n   *\n   * @param   {Node} currentNode to check for permission to exist\n   * @return  {Boolean} true if node was killed, false if left alive\n   */\n  const _sanitizeElements = function (currentNode) {\n    let content;\n\n    /* Execute a hook if present */\n    _executeHook('beforeSanitizeElements', currentNode, null);\n\n    /* Check if element is clobbered or can clobber */\n    if (_isClobbered(currentNode)) {\n      _forceRemove(currentNode);\n      return true;\n    }\n\n    /* Check if tagname contains Unicode */\n    if (regExpTest(/[\\u0080-\\uFFFF]/, currentNode.nodeName)) {\n      _forceRemove(currentNode);\n      return true;\n    }\n\n    /* Now let's check the element's type and name */\n    const tagName = transformCaseFunc(currentNode.nodeName);\n\n    /* Execute a hook if present */\n    _executeHook('uponSanitizeElement', currentNode, {\n      tagName,\n      allowedTags: ALLOWED_TAGS,\n    });\n\n    /* Detect mXSS attempts abusing namespace confusion */\n    if (\n      currentNode.hasChildNodes() &&\n      !_isNode(currentNode.firstElementChild) &&\n      (!_isNode(currentNode.content) ||\n        !_isNode(currentNode.content.firstElementChild)) &&\n      regExpTest(/<[/\\w]/g, currentNode.innerHTML) &&\n      regExpTest(/<[/\\w]/g, currentNode.textContent)\n    ) {\n      _forceRemove(currentNode);\n      return true;\n    }\n\n    /* Mitigate a problem with templates inside select */\n    if (\n      tagName === 'select' &&\n      regExpTest(/<template/i, currentNode.innerHTML)\n    ) {\n      _forceRemove(currentNode);\n      return true;\n    }\n\n    /* Remove element if anything forbids its presence */\n    if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n      /* Check if we have a custom element to handle */\n      if (!FORBID_TAGS[tagName] && _basicCustomElementTest(tagName)) {\n        if (\n          CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp &&\n          regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, tagName)\n        )\n          return false;\n        if (\n          CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function &&\n          CUSTOM_ELEMENT_HANDLING.tagNameCheck(tagName)\n        )\n          return false;\n      }\n\n      /* Keep content except for bad-listed elements */\n      if (KEEP_CONTENT && !FORBID_CONTENTS[tagName]) {\n        const parentNode = getParentNode(currentNode) || currentNode.parentNode;\n        const childNodes = getChildNodes(currentNode) || currentNode.childNodes;\n\n        if (childNodes && parentNode) {\n          const childCount = childNodes.length;\n\n          for (let i = childCount - 1; i >= 0; --i) {\n            parentNode.insertBefore(\n              cloneNode(childNodes[i], true),\n              getNextSibling(currentNode)\n            );\n          }\n        }\n      }\n\n      _forceRemove(currentNode);\n      return true;\n    }\n\n    /* Check whether element has a valid namespace */\n    if (currentNode instanceof Element && !_checkValidNamespace(currentNode)) {\n      _forceRemove(currentNode);\n      return true;\n    }\n\n    if (\n      (tagName === 'noscript' || tagName === 'noembed') &&\n      regExpTest(/<\\/no(script|embed)/i, currentNode.innerHTML)\n    ) {\n      _forceRemove(currentNode);\n      return true;\n    }\n\n    /* Sanitize element content to be template-safe */\n    if (SAFE_FOR_TEMPLATES && currentNode.nodeType === 3) {\n      /* Get the element's text content */\n      content = currentNode.textContent;\n      content = stringReplace(content, MUSTACHE_EXPR, ' ');\n      content = stringReplace(content, ERB_EXPR, ' ');\n      content = stringReplace(content, TMPLIT_EXPR, ' ');\n      if (currentNode.textContent !== content) {\n        arrayPush(DOMPurify.removed, { element: currentNode.cloneNode() });\n        currentNode.textContent = content;\n      }\n    }\n\n    /* Execute a hook if present */\n    _executeHook('afterSanitizeElements', currentNode, null);\n\n    return false;\n  };\n\n  /**\n   * _isValidAttribute\n   *\n   * @param  {string} lcTag Lowercase tag name of containing element.\n   * @param  {string} lcName Lowercase attribute name.\n   * @param  {string} value Attribute value.\n   * @return {Boolean} Returns true if `value` is valid, otherwise false.\n   */\n  // eslint-disable-next-line complexity\n  const _isValidAttribute = function (lcTag, lcName, value) {\n    /* Make sure attribute cannot clobber */\n    if (\n      SANITIZE_DOM &&\n      (lcName === 'id' || lcName === 'name') &&\n      (value in document || value in formElement)\n    ) {\n      return false;\n    }\n\n    /* Allow valid data-* attributes: At least one character after \"-\"\n        (https://html.spec.whatwg.org/multipage/dom.html#embedding-custom-non-visible-data-with-the-data-*-attributes)\n        XML-compatible (https://html.spec.whatwg.org/multipage/infrastructure.html#xml-compatible and http://www.w3.org/TR/xml/#d0e804)\n        We don't need to check the value; it's always URI safe. */\n    if (\n      ALLOW_DATA_ATTR &&\n      !FORBID_ATTR[lcName] &&\n      regExpTest(DATA_ATTR, lcName)\n    ) {\n      // This attribute is safe\n    } else if (ALLOW_ARIA_ATTR && regExpTest(ARIA_ATTR, lcName)) {\n      // This attribute is safe\n      /* Otherwise, check the name is permitted */\n    } else if (!ALLOWED_ATTR[lcName] || FORBID_ATTR[lcName]) {\n      if (\n        // First condition does a very basic check if a) it's basically a valid custom element tagname AND\n        // b) if the tagName passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n        // and c) if the attribute name passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.attributeNameCheck\n        (_basicCustomElementTest(lcTag) &&\n          ((CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp &&\n            regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, lcTag)) ||\n            (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function &&\n              CUSTOM_ELEMENT_HANDLING.tagNameCheck(lcTag))) &&\n          ((CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof RegExp &&\n            regExpTest(CUSTOM_ELEMENT_HANDLING.attributeNameCheck, lcName)) ||\n            (CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof Function &&\n              CUSTOM_ELEMENT_HANDLING.attributeNameCheck(lcName)))) ||\n        // Alternative, second condition checks if it's an `is`-attribute, AND\n        // the value passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n        (lcName === 'is' &&\n          CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements &&\n          ((CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp &&\n            regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, value)) ||\n            (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function &&\n              CUSTOM_ELEMENT_HANDLING.tagNameCheck(value))))\n      ) {\n        // If user has supplied a regexp or function in CUSTOM_ELEMENT_HANDLING.tagNameCheck, we need to also allow derived custom elements using the same tagName test.\n        // Additionally, we need to allow attributes passing the CUSTOM_ELEMENT_HANDLING.attributeNameCheck user has configured, as custom elements can define these at their own discretion.\n      } else {\n        return false;\n      }\n      /* Check value is safe. First, is attr inert? If so, is safe */\n    } else if (URI_SAFE_ATTRIBUTES[lcName]) {\n      // This attribute is safe\n      /* Check no script, data or unknown possibly unsafe URI\n        unless we know URI values are safe for that attribute */\n    } else if (\n      regExpTest(IS_ALLOWED_URI, stringReplace(value, ATTR_WHITESPACE, ''))\n    ) {\n      // This attribute is safe\n      /* Keep image data URIs alive if src/xlink:href is allowed */\n      /* Further prevent gadget XSS for dynamically built script tags */\n    } else if (\n      (lcName === 'src' || lcName === 'xlink:href' || lcName === 'href') &&\n      lcTag !== 'script' &&\n      stringIndexOf(value, 'data:') === 0 &&\n      DATA_URI_TAGS[lcTag]\n    ) {\n      // This attribute is safe\n      /* Allow unknown protocols: This provides support for links that\n        are handled by protocol handlers which may be unknown ahead of\n        time, e.g. fb:, spotify: */\n    } else if (\n      ALLOW_UNKNOWN_PROTOCOLS &&\n      !regExpTest(IS_SCRIPT_OR_DATA, stringReplace(value, ATTR_WHITESPACE, ''))\n    ) {\n      // This attribute is safe\n      /* Check for binary attributes */\n      // eslint-disable-next-line no-negated-condition\n    } else if (!value) {\n      // Binary attributes are safe at this point\n      /* Anything else, presume unsafe, do not add it back */\n    } else {\n      return false;\n    }\n\n    return true;\n  };\n\n  /**\n   * _basicCustomElementCheck\n   * checks if at least one dash is included in tagName, and it's not the first char\n   * for more sophisticated checking see https://github.com/sindresorhus/validate-element-name\n   * @param {string} tagName name of the tag of the node to sanitize\n   */\n  const _basicCustomElementTest = function (tagName) {\n    return tagName.indexOf('-') > 0;\n  };\n\n  /**\n   * _sanitizeAttributes\n   *\n   * @protect attributes\n   * @protect nodeName\n   * @protect removeAttribute\n   * @protect setAttribute\n   *\n   * @param  {Node} currentNode to sanitize\n   */\n  const _sanitizeAttributes = function (currentNode) {\n    let attr;\n    let value;\n    let lcName;\n    let l;\n    /* Execute a hook if present */\n    _executeHook('beforeSanitizeAttributes', currentNode, null);\n\n    const { attributes } = currentNode;\n\n    /* Check if we have attributes; if not we might have a text node */\n    if (!attributes) {\n      return;\n    }\n\n    const hookEvent = {\n      attrName: '',\n      attrValue: '',\n      keepAttr: true,\n      allowedAttributes: ALLOWED_ATTR,\n    };\n    l = attributes.length;\n\n    /* Go backwards over all attributes; safely remove bad ones */\n    while (l--) {\n      attr = attributes[l];\n      const { name, namespaceURI } = attr;\n      value = name === 'value' ? attr.value : stringTrim(attr.value);\n      lcName = transformCaseFunc(name);\n\n      /* Execute a hook if present */\n      hookEvent.attrName = lcName;\n      hookEvent.attrValue = value;\n      hookEvent.keepAttr = true;\n      hookEvent.forceKeepAttr = undefined; // Allows developers to see this is a property they can set\n      _executeHook('uponSanitizeAttribute', currentNode, hookEvent);\n      value = hookEvent.attrValue;\n      /* Did the hooks approve of the attribute? */\n      if (hookEvent.forceKeepAttr) {\n        continue;\n      }\n\n      /* Remove attribute */\n      _removeAttribute(name, currentNode);\n\n      /* Did the hooks approve of the attribute? */\n      if (!hookEvent.keepAttr) {\n        continue;\n      }\n\n      /* Work around a security issue in jQuery 3.0 */\n      if (regExpTest(/\\/>/i, value)) {\n        _removeAttribute(name, currentNode);\n        continue;\n      }\n\n      /* Sanitize attribute content to be template-safe */\n      if (SAFE_FOR_TEMPLATES) {\n        value = stringReplace(value, MUSTACHE_EXPR, ' ');\n        value = stringReplace(value, ERB_EXPR, ' ');\n        value = stringReplace(value, TMPLIT_EXPR, ' ');\n      }\n\n      /* Is `value` valid for this attribute? */\n      const lcTag = transformCaseFunc(currentNode.nodeName);\n      if (!_isValidAttribute(lcTag, lcName, value)) {\n        continue;\n      }\n\n      /* Full DOM Clobbering protection via namespace isolation,\n       * Prefix id and name attributes with `user-content-`\n       */\n      if (SANITIZE_NAMED_PROPS && (lcName === 'id' || lcName === 'name')) {\n        // Remove the attribute with this value\n        _removeAttribute(name, currentNode);\n\n        // Prefix the value and later re-create the attribute with the sanitized value\n        value = SANITIZE_NAMED_PROPS_PREFIX + value;\n      }\n\n      /* Handle attributes that require Trusted Types */\n      if (\n        trustedTypesPolicy &&\n        typeof trustedTypes === 'object' &&\n        typeof trustedTypes.getAttributeType === 'function'\n      ) {\n        if (namespaceURI) {\n          /* Namespaces are not yet supported, see https://bugs.chromium.org/p/chromium/issues/detail?id=1305293 */\n        } else {\n          switch (trustedTypes.getAttributeType(lcTag, lcName)) {\n            case 'TrustedHTML':\n              value = trustedTypesPolicy.createHTML(value);\n              break;\n            case 'TrustedScriptURL':\n              value = trustedTypesPolicy.createScriptURL(value);\n              break;\n            default:\n              break;\n          }\n        }\n      }\n\n      /* Handle invalid data-* attribute set by try-catching it */\n      try {\n        if (namespaceURI) {\n          currentNode.setAttributeNS(namespaceURI, name, value);\n        } else {\n          /* Fallback to setAttribute() for browser-unrecognized namespaces e.g. \"x-schema\". */\n          currentNode.setAttribute(name, value);\n        }\n\n        arrayPop(DOMPurify.removed);\n      } catch (_) {}\n    }\n\n    /* Execute a hook if present */\n    _executeHook('afterSanitizeAttributes', currentNode, null);\n  };\n\n  /**\n   * _sanitizeShadowDOM\n   *\n   * @param  {DocumentFragment} fragment to iterate over recursively\n   */\n  const _sanitizeShadowDOM = function (fragment) {\n    let shadowNode;\n    const shadowIterator = _createIterator(fragment);\n\n    /* Execute a hook if present */\n    _executeHook('beforeSanitizeShadowDOM', fragment, null);\n\n    while ((shadowNode = shadowIterator.nextNode())) {\n      /* Execute a hook if present */\n      _executeHook('uponSanitizeShadowNode', shadowNode, null);\n\n      /* Sanitize tags and elements */\n      if (_sanitizeElements(shadowNode)) {\n        continue;\n      }\n\n      /* Deep shadow DOM detected */\n      if (shadowNode.content instanceof DocumentFragment) {\n        _sanitizeShadowDOM(shadowNode.content);\n      }\n\n      /* Check attributes, sanitize if necessary */\n      _sanitizeAttributes(shadowNode);\n    }\n\n    /* Execute a hook if present */\n    _executeHook('afterSanitizeShadowDOM', fragment, null);\n  };\n\n  /**\n   * Sanitize\n   * Public method providing core sanitation functionality\n   *\n   * @param {String|Node} dirty string or DOM node\n   * @param {Object} configuration object\n   */\n  // eslint-disable-next-line complexity\n  DOMPurify.sanitize = function (dirty, cfg = {}) {\n    let body;\n    let importedNode;\n    let currentNode;\n    let oldNode;\n    let returnNode;\n    /* Make sure we have a string to sanitize.\n      DO NOT return early, as this will return the wrong type if\n      the user has requested a DOM object rather than a string */\n    IS_EMPTY_INPUT = !dirty;\n    if (IS_EMPTY_INPUT) {\n      dirty = '<!-->';\n    }\n\n    /* Stringify, in case dirty is an object */\n    if (typeof dirty !== 'string' && !_isNode(dirty)) {\n      // eslint-disable-next-line no-negated-condition\n      if (typeof dirty.toString !== 'function') {\n        throw typeErrorCreate('toString is not a function');\n      } else {\n        dirty = dirty.toString();\n        if (typeof dirty !== 'string') {\n          throw typeErrorCreate('dirty is not a string, aborting');\n        }\n      }\n    }\n\n    /* Check we can run. Otherwise fall back or ignore */\n    if (!DOMPurify.isSupported) {\n      if (\n        typeof window.toStaticHTML === 'object' ||\n        typeof window.toStaticHTML === 'function'\n      ) {\n        if (typeof dirty === 'string') {\n          return window.toStaticHTML(dirty);\n        }\n\n        if (_isNode(dirty)) {\n          return window.toStaticHTML(dirty.outerHTML);\n        }\n      }\n\n      return dirty;\n    }\n\n    /* Assign config vars */\n    if (!SET_CONFIG) {\n      _parseConfig(cfg);\n    }\n\n    /* Clean up removed elements */\n    DOMPurify.removed = [];\n\n    /* Check if dirty is correctly typed for IN_PLACE */\n    if (typeof dirty === 'string') {\n      IN_PLACE = false;\n    }\n\n    if (IN_PLACE) {\n      /* Do some early pre-sanitization to avoid unsafe root nodes */\n      if (dirty.nodeName) {\n        const tagName = transformCaseFunc(dirty.nodeName);\n        if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n          throw typeErrorCreate(\n            'root node is forbidden and cannot be sanitized in-place'\n          );\n        }\n      }\n    } else if (dirty instanceof Node) {\n      /* If dirty is a DOM element, append to an empty document to avoid\n         elements being stripped by the parser */\n      body = _initDocument('<!---->');\n      importedNode = body.ownerDocument.importNode(dirty, true);\n      if (importedNode.nodeType === 1 && importedNode.nodeName === 'BODY') {\n        /* Node is already a body, use as is */\n        body = importedNode;\n      } else if (importedNode.nodeName === 'HTML') {\n        body = importedNode;\n      } else {\n        // eslint-disable-next-line unicorn/prefer-dom-node-append\n        body.appendChild(importedNode);\n      }\n    } else {\n      /* Exit directly if we have nothing to do */\n      if (\n        !RETURN_DOM &&\n        !SAFE_FOR_TEMPLATES &&\n        !WHOLE_DOCUMENT &&\n        // eslint-disable-next-line unicorn/prefer-includes\n        dirty.indexOf('<') === -1\n      ) {\n        return trustedTypesPolicy && RETURN_TRUSTED_TYPE\n          ? trustedTypesPolicy.createHTML(dirty)\n          : dirty;\n      }\n\n      /* Initialize the document to work on */\n      body = _initDocument(dirty);\n\n      /* Check we have a DOM node from the data */\n      if (!body) {\n        return RETURN_DOM ? null : RETURN_TRUSTED_TYPE ? emptyHTML : '';\n      }\n    }\n\n    /* Remove first element node (ours) if FORCE_BODY is set */\n    if (body && FORCE_BODY) {\n      _forceRemove(body.firstChild);\n    }\n\n    /* Get node iterator */\n    const nodeIterator = _createIterator(IN_PLACE ? dirty : body);\n\n    /* Now start iterating over the created document */\n    while ((currentNode = nodeIterator.nextNode())) {\n      /* Fix IE's strange behavior with manipulated textNodes #89 */\n      if (currentNode.nodeType === 3 && currentNode === oldNode) {\n        continue;\n      }\n\n      /* Sanitize tags and elements */\n      if (_sanitizeElements(currentNode)) {\n        continue;\n      }\n\n      /* Shadow DOM detected, sanitize it */\n      if (currentNode.content instanceof DocumentFragment) {\n        _sanitizeShadowDOM(currentNode.content);\n      }\n\n      /* Check attributes, sanitize if necessary */\n      _sanitizeAttributes(currentNode);\n\n      oldNode = currentNode;\n    }\n\n    oldNode = null;\n\n    /* If we sanitized `dirty` in-place, return it. */\n    if (IN_PLACE) {\n      return dirty;\n    }\n\n    /* Return sanitized string or DOM */\n    if (RETURN_DOM) {\n      if (RETURN_DOM_FRAGMENT) {\n        returnNode = createDocumentFragment.call(body.ownerDocument);\n\n        while (body.firstChild) {\n          // eslint-disable-next-line unicorn/prefer-dom-node-append\n          returnNode.appendChild(body.firstChild);\n        }\n      } else {\n        returnNode = body;\n      }\n\n      if (ALLOWED_ATTR.shadowroot) {\n        /*\n          AdoptNode() is not used because internal state is not reset\n          (e.g. the past names map of a HTMLFormElement), this is safe\n          in theory but we would rather not risk another attack vector.\n          The state that is cloned by importNode() is explicitly defined\n          by the specs.\n        */\n        returnNode = importNode.call(originalDocument, returnNode, true);\n      }\n\n      return returnNode;\n    }\n\n    let serializedHTML = WHOLE_DOCUMENT ? body.outerHTML : body.innerHTML;\n\n    /* Serialize doctype if allowed */\n    if (\n      WHOLE_DOCUMENT &&\n      ALLOWED_TAGS['!doctype'] &&\n      body.ownerDocument &&\n      body.ownerDocument.doctype &&\n      body.ownerDocument.doctype.name &&\n      regExpTest(EXPRESSIONS.DOCTYPE_NAME, body.ownerDocument.doctype.name)\n    ) {\n      serializedHTML =\n        '<!DOCTYPE ' + body.ownerDocument.doctype.name + '>\\n' + serializedHTML;\n    }\n\n    /* Sanitize final string template-safe */\n    if (SAFE_FOR_TEMPLATES) {\n      serializedHTML = stringReplace(serializedHTML, MUSTACHE_EXPR, ' ');\n      serializedHTML = stringReplace(serializedHTML, ERB_EXPR, ' ');\n      serializedHTML = stringReplace(serializedHTML, TMPLIT_EXPR, ' ');\n    }\n\n    return trustedTypesPolicy && RETURN_TRUSTED_TYPE\n      ? trustedTypesPolicy.createHTML(serializedHTML)\n      : serializedHTML;\n  };\n\n  /**\n   * Public method to set the configuration once\n   * setConfig\n   *\n   * @param {Object} cfg configuration object\n   */\n  DOMPurify.setConfig = function (cfg) {\n    _parseConfig(cfg);\n    SET_CONFIG = true;\n  };\n\n  /**\n   * Public method to remove the configuration\n   * clearConfig\n   *\n   */\n  DOMPurify.clearConfig = function () {\n    CONFIG = null;\n    SET_CONFIG = false;\n  };\n\n  /**\n   * Public method to check if an attribute value is valid.\n   * Uses last set config, if any. Otherwise, uses config defaults.\n   * isValidAttribute\n   *\n   * @param  {string} tag Tag name of containing element.\n   * @param  {string} attr Attribute name.\n   * @param  {string} value Attribute value.\n   * @return {Boolean} Returns true if `value` is valid. Otherwise, returns false.\n   */\n  DOMPurify.isValidAttribute = function (tag, attr, value) {\n    /* Initialize shared config vars if necessary. */\n    if (!CONFIG) {\n      _parseConfig({});\n    }\n\n    const lcTag = transformCaseFunc(tag);\n    const lcName = transformCaseFunc(attr);\n    return _isValidAttribute(lcTag, lcName, value);\n  };\n\n  /**\n   * AddHook\n   * Public method to add DOMPurify hooks\n   *\n   * @param {String} entryPoint entry point for the hook to add\n   * @param {Function} hookFunction function to execute\n   */\n  DOMPurify.addHook = function (entryPoint, hookFunction) {\n    if (typeof hookFunction !== 'function') {\n      return;\n    }\n\n    hooks[entryPoint] = hooks[entryPoint] || [];\n    arrayPush(hooks[entryPoint], hookFunction);\n  };\n\n  /**\n   * RemoveHook\n   * Public method to remove a DOMPurify hook at a given entryPoint\n   * (pops it from the stack of hooks if more are present)\n   *\n   * @param {String} entryPoint entry point for the hook to remove\n   * @return {Function} removed(popped) hook\n   */\n  DOMPurify.removeHook = function (entryPoint) {\n    if (hooks[entryPoint]) {\n      return arrayPop(hooks[entryPoint]);\n    }\n  };\n\n  /**\n   * RemoveHooks\n   * Public method to remove all DOMPurify hooks at a given entryPoint\n   *\n   * @param  {String} entryPoint entry point for the hooks to remove\n   */\n  DOMPurify.removeHooks = function (entryPoint) {\n    if (hooks[entryPoint]) {\n      hooks[entryPoint] = [];\n    }\n  };\n\n  /**\n   * RemoveAllHooks\n   * Public method to remove all DOMPurify hooks\n   *\n   */\n  DOMPurify.removeAllHooks = function () {\n    hooks = {};\n  };\n\n  return DOMPurify;\n}\n\nexport default createDOMPurify();\n","const candidateSelectors = [\n  'input',\n  'select',\n  'textarea',\n  'a[href]',\n  'button',\n  '[tabindex]:not(slot)',\n  'audio[controls]',\n  'video[controls]',\n  '[contenteditable]:not([contenteditable=\"false\"])',\n  'details>summary:first-of-type',\n  'details',\n];\nconst candidateSelector = /* #__PURE__ */ candidateSelectors.join(',');\n\nconst NoElement = typeof Element === 'undefined';\n\nconst matches = NoElement\n  ? function () {}\n  : Element.prototype.matches ||\n    Element.prototype.msMatchesSelector ||\n    Element.prototype.webkitMatchesSelector;\n\nconst getRootNode =\n  !NoElement && Element.prototype.getRootNode\n    ? (element) => element.getRootNode()\n    : (element) => element.ownerDocument;\n\n/**\n * @param {Element} el container to check in\n * @param {boolean} includeContainer add container to check\n * @param {(node: Element) => boolean} filter filter candidates\n * @returns {Element[]}\n */\nconst getCandidates = function (el, includeContainer, filter) {\n  let candidates = Array.prototype.slice.apply(\n    el.querySelectorAll(candidateSelector)\n  );\n  if (includeContainer && matches.call(el, candidateSelector)) {\n    candidates.unshift(el);\n  }\n  candidates = candidates.filter(filter);\n  return candidates;\n};\n\n/**\n * @callback GetShadowRoot\n * @param {Element} element to check for shadow root\n * @returns {ShadowRoot|boolean} ShadowRoot if available or boolean indicating if a shadowRoot is attached but not available.\n */\n\n/**\n * @callback ShadowRootFilter\n * @param {Element} shadowHostNode the element which contains shadow content\n * @returns {boolean} true if a shadow root could potentially contain valid candidates.\n */\n\n/**\n * @typedef {Object} CandidatesScope\n * @property {Element} scope contains inner candidates\n * @property {Element[]} candidates\n */\n\n/**\n * @typedef {Object} IterativeOptions\n * @property {GetShadowRoot|boolean} getShadowRoot true if shadow support is enabled; falsy if not;\n *  if a function, implies shadow support is enabled and either returns the shadow root of an element\n *  or a boolean stating if it has an undisclosed shadow root\n * @property {(node: Element) => boolean} filter filter candidates\n * @property {boolean} flatten if true then result will flatten any CandidatesScope into the returned list\n * @property {ShadowRootFilter} shadowRootFilter filter shadow roots;\n */\n\n/**\n * @param {Element[]} elements list of element containers to match candidates from\n * @param {boolean} includeContainer add container list to check\n * @param {IterativeOptions} options\n * @returns {Array.<Element|CandidatesScope>}\n */\nconst getCandidatesIteratively = function (\n  elements,\n  includeContainer,\n  options\n) {\n  const candidates = [];\n  const elementsToCheck = Array.from(elements);\n  while (elementsToCheck.length) {\n    const element = elementsToCheck.shift();\n    if (element.tagName === 'SLOT') {\n      // add shadow dom slot scope (slot itself cannot be focusable)\n      const assigned = element.assignedElements();\n      const content = assigned.length ? assigned : element.children;\n      const nestedCandidates = getCandidatesIteratively(content, true, options);\n      if (options.flatten) {\n        candidates.push(...nestedCandidates);\n      } else {\n        candidates.push({\n          scope: element,\n          candidates: nestedCandidates,\n        });\n      }\n    } else {\n      // check candidate element\n      const validCandidate = matches.call(element, candidateSelector);\n      if (\n        validCandidate &&\n        options.filter(element) &&\n        (includeContainer || !elements.includes(element))\n      ) {\n        candidates.push(element);\n      }\n\n      // iterate over shadow content if possible\n      const shadowRoot =\n        element.shadowRoot ||\n        // check for an undisclosed shadow\n        (typeof options.getShadowRoot === 'function' &&\n          options.getShadowRoot(element));\n\n      const validShadowRoot =\n        !options.shadowRootFilter || options.shadowRootFilter(element);\n\n      if (shadowRoot && validShadowRoot) {\n        // add shadow dom scope IIF a shadow root node was given; otherwise, an undisclosed\n        //  shadow exists, so look at light dom children as fallback BUT create a scope for any\n        //  child candidates found because they're likely slotted elements (elements that are\n        //  children of the web component element (which has the shadow), in the light dom, but\n        //  slotted somewhere _inside_ the undisclosed shadow) -- the scope is created below,\n        //  _after_ we return from this recursive call\n        const nestedCandidates = getCandidatesIteratively(\n          shadowRoot === true ? element.children : shadowRoot.children,\n          true,\n          options\n        );\n\n        if (options.flatten) {\n          candidates.push(...nestedCandidates);\n        } else {\n          candidates.push({\n            scope: element,\n            candidates: nestedCandidates,\n          });\n        }\n      } else {\n        // there's not shadow so just dig into the element's (light dom) children\n        //  __without__ giving the element special scope treatment\n        elementsToCheck.unshift(...element.children);\n      }\n    }\n  }\n  return candidates;\n};\n\nconst getTabindex = function (node, isScope) {\n  if (node.tabIndex < 0) {\n    // in Chrome, <details/>, <audio controls/> and <video controls/> elements get a default\n    // `tabIndex` of -1 when the 'tabindex' attribute isn't specified in the DOM,\n    // yet they are still part of the regular tab order; in FF, they get a default\n    // `tabIndex` of 0; since Chrome still puts those elements in the regular tab\n    // order, consider their tab index to be 0.\n    // Also browsers do not return `tabIndex` correctly for contentEditable nodes;\n    // so if they don't have a tabindex attribute specifically set, assume it's 0.\n    //\n    // isScope is positive for custom element with shadow root or slot that by default\n    // have tabIndex -1, but need to be sorted by document order in order for their\n    // content to be inserted in the correct position\n    if (\n      (isScope ||\n        /^(AUDIO|VIDEO|DETAILS)$/.test(node.tagName) ||\n        node.isContentEditable) &&\n      isNaN(parseInt(node.getAttribute('tabindex'), 10))\n    ) {\n      return 0;\n    }\n  }\n\n  return node.tabIndex;\n};\n\nconst sortOrderedTabbables = function (a, b) {\n  return a.tabIndex === b.tabIndex\n    ? a.documentOrder - b.documentOrder\n    : a.tabIndex - b.tabIndex;\n};\n\nconst isInput = function (node) {\n  return node.tagName === 'INPUT';\n};\n\nconst isHiddenInput = function (node) {\n  return isInput(node) && node.type === 'hidden';\n};\n\nconst isDetailsWithSummary = function (node) {\n  const r =\n    node.tagName === 'DETAILS' &&\n    Array.prototype.slice\n      .apply(node.children)\n      .some((child) => child.tagName === 'SUMMARY');\n  return r;\n};\n\nconst getCheckedRadio = function (nodes, form) {\n  for (let i = 0; i < nodes.length; i++) {\n    if (nodes[i].checked && nodes[i].form === form) {\n      return nodes[i];\n    }\n  }\n};\n\nconst isTabbableRadio = function (node) {\n  if (!node.name) {\n    return true;\n  }\n  const radioScope = node.form || getRootNode(node);\n  const queryRadios = function (name) {\n    return radioScope.querySelectorAll(\n      'input[type=\"radio\"][name=\"' + name + '\"]'\n    );\n  };\n\n  let radioSet;\n  if (\n    typeof window !== 'undefined' &&\n    typeof window.CSS !== 'undefined' &&\n    typeof window.CSS.escape === 'function'\n  ) {\n    radioSet = queryRadios(window.CSS.escape(node.name));\n  } else {\n    try {\n      radioSet = queryRadios(node.name);\n    } catch (err) {\n      // eslint-disable-next-line no-console\n      console.error(\n        'Looks like you have a radio button with a name attribute containing invalid CSS selector characters and need the CSS.escape polyfill: %s',\n        err.message\n      );\n      return false;\n    }\n  }\n\n  const checked = getCheckedRadio(radioSet, node.form);\n  return !checked || checked === node;\n};\n\nconst isRadio = function (node) {\n  return isInput(node) && node.type === 'radio';\n};\n\nconst isNonTabbableRadio = function (node) {\n  return isRadio(node) && !isTabbableRadio(node);\n};\n\nconst isZeroArea = function (node) {\n  const { width, height } = node.getBoundingClientRect();\n  return width === 0 && height === 0;\n};\nconst isHidden = function (node, { displayCheck, getShadowRoot }) {\n  // NOTE: visibility will be `undefined` if node is detached from the document\n  //  (see notes about this further down), which means we will consider it visible\n  //  (this is legacy behavior from a very long way back)\n  // NOTE: we check this regardless of `displayCheck=\"none\"` because this is a\n  //  _visibility_ check, not a _display_ check\n  if (getComputedStyle(node).visibility === 'hidden') {\n    return true;\n  }\n\n  const isDirectSummary = matches.call(node, 'details>summary:first-of-type');\n  const nodeUnderDetails = isDirectSummary ? node.parentElement : node;\n  if (matches.call(nodeUnderDetails, 'details:not([open]) *')) {\n    return true;\n  }\n\n  // The root node is the shadow root if the node is in a shadow DOM; some document otherwise\n  //  (but NOT _the_ document; see second 'If' comment below for more).\n  // If rootNode is shadow root, it'll have a host, which is the element to which the shadow\n  //  is attached, and the one we need to check if it's in the document or not (because the\n  //  shadow, and all nodes it contains, is never considered in the document since shadows\n  //  behave like self-contained DOMs; but if the shadow's HOST, which is part of the document,\n  //  is hidden, or is not in the document itself but is detached, it will affect the shadow's\n  //  visibility, including all the nodes it contains). The host could be any normal node,\n  //  or a custom element (i.e. web component). Either way, that's the one that is considered\n  //  part of the document, not the shadow root, nor any of its children (i.e. the node being\n  //  tested).\n  // If rootNode is not a shadow root, it won't have a host, and so rootNode should be the\n  //  document (per the docs) and while it's a Document-type object, that document does not\n  //  appear to be the same as the node's `ownerDocument` for some reason, so it's safer\n  //  to ignore the rootNode at this point, and use `node.ownerDocument`. Otherwise,\n  //  using `rootNode.contains(node)` will _always_ be true we'll get false-positives when\n  //  node is actually detached.\n  const nodeRootHost = getRootNode(node).host;\n  const nodeIsAttached =\n    nodeRootHost?.ownerDocument.contains(nodeRootHost) ||\n    node.ownerDocument.contains(node);\n\n  if (!displayCheck || displayCheck === 'full') {\n    if (typeof getShadowRoot === 'function') {\n      // figure out if we should consider the node to be in an undisclosed shadow and use the\n      //  'non-zero-area' fallback\n      const originalNode = node;\n      while (node) {\n        const parentElement = node.parentElement;\n        const rootNode = getRootNode(node);\n        if (\n          parentElement &&\n          !parentElement.shadowRoot &&\n          getShadowRoot(parentElement) === true // check if there's an undisclosed shadow\n        ) {\n          // node has an undisclosed shadow which means we can only treat it as a black box, so we\n          //  fall back to a non-zero-area test\n          return isZeroArea(node);\n        } else if (node.assignedSlot) {\n          // iterate up slot\n          node = node.assignedSlot;\n        } else if (!parentElement && rootNode !== node.ownerDocument) {\n          // cross shadow boundary\n          node = rootNode.host;\n        } else {\n          // iterate up normal dom\n          node = parentElement;\n        }\n      }\n\n      node = originalNode;\n    }\n    // else, `getShadowRoot` might be true, but all that does is enable shadow DOM support\n    //  (i.e. it does not also presume that all nodes might have undisclosed shadows); or\n    //  it might be a falsy value, which means shadow DOM support is disabled\n\n    // Since we didn't find it sitting in an undisclosed shadow (or shadows are disabled)\n    //  now we can just test to see if it would normally be visible or not, provided it's\n    //  attached to the main document.\n    // NOTE: We must consider case where node is inside a shadow DOM and given directly to\n    //  `isTabbable()` or `isFocusable()` -- regardless of `getShadowRoot` option setting.\n\n    if (nodeIsAttached) {\n      // this works wherever the node is: if there's at least one client rect, it's\n      //  somehow displayed; it also covers the CSS 'display: contents' case where the\n      //  node itself is hidden in place of its contents; and there's no need to search\n      //  up the hierarchy either\n      return !node.getClientRects().length;\n    }\n\n    // Else, the node isn't attached to the document, which means the `getClientRects()`\n    //  API will __always__ return zero rects (this can happen, for example, if React\n    //  is used to render nodes onto a detached tree, as confirmed in this thread:\n    //  https://github.com/facebook/react/issues/9117#issuecomment-284228870)\n    //\n    // It also means that even window.getComputedStyle(node).display will return `undefined`\n    //  because styles are only computed for nodes that are in the document.\n    //\n    // NOTE: THIS HAS BEEN THE CASE FOR YEARS. It is not new, nor is it caused by tabbable\n    //  somehow. Though it was never stated officially, anyone who has ever used tabbable\n    //  APIs on nodes in detached containers has actually implicitly used tabbable in what\n    //  was later (as of v5.2.0 on Apr 9, 2021) called `displayCheck=\"none\"` mode -- essentially\n    //  considering __everything__ to be visible because of the innability to determine styles.\n  } else if (displayCheck === 'non-zero-area') {\n    // NOTE: Even though this tests that the node's client rect is non-zero to determine\n    //  whether it's displayed, and that a detached node will __always__ have a zero-area\n    //  client rect, we don't special-case for whether the node is attached or not. In\n    //  this mode, we do want to consider nodes that have a zero area to be hidden at all\n    //  times, and that includes attached or not.\n    return isZeroArea(node);\n  }\n\n  // visible, as far as we can tell, or per current `displayCheck` mode\n  return false;\n};\n\n// form fields (nested) inside a disabled fieldset are not focusable/tabbable\n//  unless they are in the _first_ <legend> element of the top-most disabled\n//  fieldset\nconst isDisabledFromFieldset = function (node) {\n  if (/^(INPUT|BUTTON|SELECT|TEXTAREA)$/.test(node.tagName)) {\n    let parentNode = node.parentElement;\n    // check if `node` is contained in a disabled <fieldset>\n    while (parentNode) {\n      if (parentNode.tagName === 'FIELDSET' && parentNode.disabled) {\n        // look for the first <legend> among the children of the disabled <fieldset>\n        for (let i = 0; i < parentNode.children.length; i++) {\n          const child = parentNode.children.item(i);\n          // when the first <legend> (in document order) is found\n          if (child.tagName === 'LEGEND') {\n            // if its parent <fieldset> is not nested in another disabled <fieldset>,\n            // return whether `node` is a descendant of its first <legend>\n            return matches.call(parentNode, 'fieldset[disabled] *')\n              ? true\n              : !child.contains(node);\n          }\n        }\n        // the disabled <fieldset> containing `node` has no <legend>\n        return true;\n      }\n      parentNode = parentNode.parentElement;\n    }\n  }\n\n  // else, node's tabbable/focusable state should not be affected by a fieldset's\n  //  enabled/disabled state\n  return false;\n};\n\nconst isNodeMatchingSelectorFocusable = function (options, node) {\n  if (\n    node.disabled ||\n    isHiddenInput(node) ||\n    isHidden(node, options) ||\n    // For a details element with a summary, the summary element gets the focus\n    isDetailsWithSummary(node) ||\n    isDisabledFromFieldset(node)\n  ) {\n    return false;\n  }\n  return true;\n};\n\nconst isNodeMatchingSelectorTabbable = function (options, node) {\n  if (\n    isNonTabbableRadio(node) ||\n    getTabindex(node) < 0 ||\n    !isNodeMatchingSelectorFocusable(options, node)\n  ) {\n    return false;\n  }\n  return true;\n};\n\nconst isValidShadowRootTabbable = function (shadowHostNode) {\n  const tabIndex = parseInt(shadowHostNode.getAttribute('tabindex'), 10);\n  if (isNaN(tabIndex) || tabIndex >= 0) {\n    return true;\n  }\n  // If a custom element has an explicit negative tabindex,\n  // browsers will not allow tab targeting said element's children.\n  return false;\n};\n\n/**\n * @param {Array.<Element|CandidatesScope>} candidates\n * @returns Element[]\n */\nconst sortByOrder = function (candidates) {\n  const regularTabbables = [];\n  const orderedTabbables = [];\n  candidates.forEach(function (item, i) {\n    const isScope = !!item.scope;\n    const element = isScope ? item.scope : item;\n    const candidateTabindex = getTabindex(element, isScope);\n    const elements = isScope ? sortByOrder(item.candidates) : element;\n    if (candidateTabindex === 0) {\n      isScope\n        ? regularTabbables.push(...elements)\n        : regularTabbables.push(element);\n    } else {\n      orderedTabbables.push({\n        documentOrder: i,\n        tabIndex: candidateTabindex,\n        item: item,\n        isScope: isScope,\n        content: elements,\n      });\n    }\n  });\n\n  return orderedTabbables\n    .sort(sortOrderedTabbables)\n    .reduce((acc, sortable) => {\n      sortable.isScope\n        ? acc.push(...sortable.content)\n        : acc.push(sortable.content);\n      return acc;\n    }, [])\n    .concat(regularTabbables);\n};\n\nconst tabbable = function (el, options) {\n  options = options || {};\n\n  let candidates;\n  if (options.getShadowRoot) {\n    candidates = getCandidatesIteratively([el], options.includeContainer, {\n      filter: isNodeMatchingSelectorTabbable.bind(null, options),\n      flatten: false,\n      getShadowRoot: options.getShadowRoot,\n      shadowRootFilter: isValidShadowRootTabbable,\n    });\n  } else {\n    candidates = getCandidates(\n      el,\n      options.includeContainer,\n      isNodeMatchingSelectorTabbable.bind(null, options)\n    );\n  }\n  return sortByOrder(candidates);\n};\n\nconst focusable = function (el, options) {\n  options = options || {};\n\n  let candidates;\n  if (options.getShadowRoot) {\n    candidates = getCandidatesIteratively([el], options.includeContainer, {\n      filter: isNodeMatchingSelectorFocusable.bind(null, options),\n      flatten: true,\n      getShadowRoot: options.getShadowRoot,\n    });\n  } else {\n    candidates = getCandidates(\n      el,\n      options.includeContainer,\n      isNodeMatchingSelectorFocusable.bind(null, options)\n    );\n  }\n\n  return candidates;\n};\n\nconst isTabbable = function (node, options) {\n  options = options || {};\n  if (!node) {\n    throw new Error('No node provided');\n  }\n  if (matches.call(node, candidateSelector) === false) {\n    return false;\n  }\n  return isNodeMatchingSelectorTabbable(options, node);\n};\n\nconst focusableCandidateSelector = /* #__PURE__ */ candidateSelectors\n  .concat('iframe')\n  .join(',');\n\nconst isFocusable = function (node, options) {\n  options = options || {};\n  if (!node) {\n    throw new Error('No node provided');\n  }\n  if (matches.call(node, focusableCandidateSelector) === false) {\n    return false;\n  }\n  return isNodeMatchingSelectorFocusable(options, node);\n};\n\nexport { tabbable, focusable, isTabbable, isFocusable };\n","import { tabbable, focusable, isFocusable, isTabbable } from 'tabbable';\n\nconst activeFocusTraps = (function () {\n  const trapQueue = [];\n  return {\n    activateTrap(trap) {\n      if (trapQueue.length > 0) {\n        const activeTrap = trapQueue[trapQueue.length - 1];\n        if (activeTrap !== trap) {\n          activeTrap.pause();\n        }\n      }\n\n      const trapIndex = trapQueue.indexOf(trap);\n      if (trapIndex === -1) {\n        trapQueue.push(trap);\n      } else {\n        // move this existing trap to the front of the queue\n        trapQueue.splice(trapIndex, 1);\n        trapQueue.push(trap);\n      }\n    },\n\n    deactivateTrap(trap) {\n      const trapIndex = trapQueue.indexOf(trap);\n      if (trapIndex !== -1) {\n        trapQueue.splice(trapIndex, 1);\n      }\n\n      if (trapQueue.length > 0) {\n        trapQueue[trapQueue.length - 1].unpause();\n      }\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\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\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 config = {\n    returnFocusOnDeactivate: true,\n    escapeDeactivates: true,\n    delayInitialFocus: true,\n    ...userOptions,\n  };\n\n  const state = {\n    // containers given to createFocusTrap()\n    // @type {Array<HTMLElement>}\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<HTMLElement>, // empty if none\n    //   focusableNodes: Array<HTMLElement>, // 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   * @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) {\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        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) {\n      // option not specified: 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) >= 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        // if, on deactivation, we should return focus to the node originally-focused\n        //  when the trap was activated (or the configured `setReturnFocus` node),\n        //  then assume it's also OK to return focus to the outside node that was\n        //  just clicked, causing deactivation, as long as that node is focusable;\n        //  if it isn't focusable, then return focus to the original node focused\n        //  on activation (or the configured `setReturnFocus` node)\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, whether it's focusable or not; by setting\n        //  `returnFocus: true`, we'll attempt to re-focus the node originally-focused\n        //  on activation (or the configured `setReturnFocus` node)\n        returnFocus:\n          config.returnFocusOnDeactivate &&\n          !isFocusable(target, config.tabbableOptions),\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) >= 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 Tab 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 checkTab = function (e) {\n    const target = getActualTarget(e);\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);\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 in to...\n        if (e.shiftKey) {\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 (e.shiftKey) {\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        }\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        }\n      }\n    } else {\n      // NOTE: the fallbackFocus option does not support returning false to opt-out\n      destinationNode = getNodeForOption('fallbackFocus');\n    }\n\n    if (destinationNode) {\n      e.preventDefault();\n      tryFocus(destinationNode);\n    }\n    // else, let the browser take care of [shift+]tab and move the focus\n  };\n\n  const checkKey = function (e) {\n    if (\n      isEscapeEvent(e) &&\n      valueOrHandler(config.escapeDeactivates, e) !== false\n    ) {\n      e.preventDefault();\n      trap.deactivate();\n      return;\n    }\n\n    if (isTabEvent(e)) {\n      checkTab(e);\n      return;\n    }\n  };\n\n  const checkClick = function (e) {\n    const target = getActualTarget(e);\n\n    if (findContainerIndex(target) >= 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(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  // 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      if (onActivate) {\n        onActivate();\n      }\n\n      const finishActivation = () => {\n        if (checkCanFocusTrap) {\n          updateTabbableNodes();\n        }\n        addListeners();\n        if (onPostActivate) {\n          onPostActivate();\n        }\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\n      activeFocusTraps.deactivateTrap(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      if (onDeactivate) {\n        onDeactivate();\n      }\n\n      const finishDeactivation = () => {\n        delay(() => {\n          if (returnFocus) {\n            tryFocus(getReturnFocusNode(state.nodeFocusedBeforeActivation));\n          }\n          if (onPostDeactivate) {\n            onPostDeactivate();\n          }\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() {\n      if (state.paused || !state.active) {\n        return this;\n      }\n\n      state.paused = true;\n      removeListeners();\n\n      return this;\n    },\n\n    unpause() {\n      if (!state.paused || !state.active) {\n        return this;\n      }\n\n      state.paused = false;\n      updateTabbableNodes();\n      addListeners();\n\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      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.1\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: 2022-08-26T17:52Z\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 trac-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 <object> 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.1\",\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 = \"<a id='\" + expando + \"'></a>\" +\n\t\t\t\t\"<select id='\" + expando + \"-\\r\\\\' msallowcapture=''>\" +\n\t\t\t\t\"<option selected=''></option></select>\";\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 = \"<a href='' disabled='disabled'></a>\" +\n\t\t\t\t\"<select disabled='disabled'><option/></select>\";\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: <number>) 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 = \"<a href='#'></a>\";\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 = \"<input/>\";\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 <tag> to avoid XSS via location.hash (trac-9521)\n\t// Strict HTML recognition (trac-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// <object> 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 trac-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 (trac-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 trac-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 (trac-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 (trac-11217)\n\t// Support: Windows Web Apps (WWA)\n\t// `name` and `type` must use .setAttribute for WWA (trac-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 = \"<textarea>x</textarea>\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n\n\t// Support: IE <=9 only\n\t// IE <=9 replaces <option> tags with their contents when inserted outside of\n\t// the select element.\n\tdiv.innerHTML = \"<option></option>\";\n\tsupport.option = !!div.lastChild;\n} )();\n\n\n// We have to close these tags to support XHTML (trac-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 <tbody> or other required elements.\n\tthead: [ 1, \"<table>\", \"</table>\" ],\n\tcol: [ 2, \"<table><colgroup>\", \"</colgroup></table>\" ],\n\ttr: [ 2, \"<table><tbody>\", \"</tbody></table>\" ],\n\ttd: [ 3, \"<table><tbody><tr>\", \"</tr></tbody></table>\" ],\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, \"<select multiple='multiple'>\", \"</select>\" ];\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 (trac-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 (trac-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 <use> 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 (trac-13208)\n\t\t\t\t// Don't process clicks on disabled elements (trac-6911, trac-8165, trac-11382, trac-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 (trac-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 (trac-504, trac-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 if we're currently inside\n\t\t// a leveraged native-event stack\n\t\t_default: function( event ) {\n\t\t\treturn dataPriv.get( event.target, type );\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 = /<script|<style|<link/i,\n\n\t// checked=\"checked\" or checked\n\trchecked = /checked\\s*(?:[^=]|=\\s*.checked.)/i,\n\n\trcleanScript = /^\\s*<!\\[CDATA\\[|\\]\\]>\\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 (trac-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\n\t\t\t\t\t\t\t// Unwrap a CDATA section containing script contents. This shouldn't be\n\t\t\t\t\t\t\t// needed as in XML documents they're already not visible when\n\t\t\t\t\t\t\t// inspecting element contents and in HTML documents they have no\n\t\t\t\t\t\t\t// meaning but we're preserving that logic for backwards compatibility.\n\t\t\t\t\t\t\t// This will be removed completely in 4.0. See gh-4904.\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 rcustomProp = /^--/;\n\n\nvar getStyles = function( elem ) {\n\n\t\t// Support: IE <=11 only, Firefox <=30 (trac-15098, trac-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\nvar whitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\";\n\n\nvar rtrimCSS = new RegExp(\n\t\"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\",\n\t\"g\"\n);\n\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 (trac-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\t\tisCustomProp = rcustomProp.test( name ),\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, trac-12537)\n\t//   .css('--customProperty) (gh-3144)\n\tif ( computed ) {\n\t\tret = computed.getPropertyValue( name ) || computed[ name ];\n\n\t\t// trim whitespace for custom property (issue gh-4926)\n\t\tif ( isCustomProp ) {\n\n\t\t\t// rtrim treats U+000D CARRIAGE RETURN and U+000C FORM FEED\n\t\t\t// as whitespace while CSS does not, but this is not a problem\n\t\t\t// because CSS preprocessing replaces them with U+000A LINE FEED\n\t\t\t// (which *is* CSS whitespace)\n\t\t\t// https://www.w3.org/TR/css-syntax-3/#input-preprocessing\n\t\t\tret = ret.replace( rtrimCSS, \"$1\" );\n\t\t}\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\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 (trac-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 trac-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 (trac-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 )` (trac-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.\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// Use proper attribute retrieval (trac-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 classNames, cur, curValue, className, i, finalValue;\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\tclassNames = classesToArray( value );\n\n\t\tif ( classNames.length ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tcurValue = getClass( this );\n\t\t\t\tcur = this.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tfor ( i = 0; i < classNames.length; i++ ) {\n\t\t\t\t\t\tclassName = classNames[ i ];\n\t\t\t\t\t\tif ( cur.indexOf( \" \" + className + \" \" ) < 0 ) {\n\t\t\t\t\t\t\tcur += className + \" \";\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\tthis.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 classNames, cur, curValue, className, i, finalValue;\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\tclassNames = classesToArray( value );\n\n\t\tif ( classNames.length ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tcurValue = getClass( this );\n\n\t\t\t\t// This expression is here for better compressibility (see addClass)\n\t\t\t\tcur = this.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tfor ( i = 0; i < classNames.length; i++ ) {\n\t\t\t\t\t\tclassName = classNames[ i ];\n\n\t\t\t\t\t\t// Remove *all* instances\n\t\t\t\t\t\twhile ( cur.indexOf( \" \" + className + \" \" ) > -1 ) {\n\t\t\t\t\t\t\tcur = cur.replace( \" \" + className + \" \", \" \" );\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\tthis.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 classNames, className, i, self,\n\t\t\ttype = typeof value,\n\t\t\tisValidValue = type === \"string\" || Array.isArray( value );\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\tif ( typeof stateVal === \"boolean\" && isValidValue ) {\n\t\t\treturn stateVal ? this.addClass( value ) : this.removeClass( value );\n\t\t}\n\n\t\tclassNames = classesToArray( value );\n\n\t\treturn this.each( function() {\n\t\t\tif ( isValidValue ) {\n\n\t\t\t\t// Toggle individual class names\n\t\t\t\tself = jQuery( this );\n\n\t\t\t\tfor ( i = 0; i < classNames.length; i++ ) {\n\t\t\t\t\tclassName = 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 (trac-14686, trac-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 (trac-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 (trac-9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (trac-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 (trac-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// trac-7653, trac-8125, trac-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 (trac-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 trac-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 (trac-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 trac-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 (trac-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// trac-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 (trac-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// trac-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 trac-8605, trac-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// trac-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( \"<script>\" )\n\t\t\t\t\t.attr( s.scriptAttrs || {} )\n\t\t\t\t\t.prop( { charset: s.scriptCharset, src: s.url } )\n\t\t\t\t\t.on( \"load error\", callback = function( evt ) {\n\t\t\t\t\t\tscript.remove();\n\t\t\t\t\t\tcallback = null;\n\t\t\t\t\t\tif ( evt ) {\n\t\t\t\t\t\t\tcomplete( evt.type === \"error\" ? 404 : 200, evt.type );\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\n\t\t\t\t// Use native DOM manipulation to avoid our domManip AJAX trickery\n\t\t\t\tdocument.head.appendChild( script[ 0 ] );\n\t\t\t},\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\nvar oldCallbacks = [],\n\trjsonp = /(=)\\?(?=&|$)|\\?\\?/;\n\n// Default jsonp settings\njQuery.ajaxSetup( {\n\tjsonp: \"callback\",\n\tjsonpCallback: function() {\n\t\tvar callback = oldCallbacks.pop() || ( jQuery.expando + \"_\" + ( nonce.guid++ ) );\n\t\tthis[ callback ] = true;\n\t\treturn callback;\n\t}\n} );\n\n// Detect, normalize options and install callbacks for jsonp requests\njQuery.ajaxPrefilter( \"json jsonp\", function( s, originalSettings, jqXHR ) {\n\n\tvar callbackName, overwritten, responseContainer,\n\t\tjsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?\n\t\t\t\"url\" :\n\t\t\ttypeof s.data === \"string\" &&\n\t\t\t\t( s.contentType || \"\" )\n\t\t\t\t\t.indexOf( \"application/x-www-form-urlencoded\" ) === 0 &&\n\t\t\t\trjsonp.test( s.data ) && \"data\"\n\t\t);\n\n\t// Handle iff the expected data type is \"jsonp\" or we have a parameter to set\n\tif ( jsonProp || s.dataTypes[ 0 ] === \"jsonp\" ) {\n\n\t\t// Get callback name, remembering preexisting value associated with it\n\t\tcallbackName = s.jsonpCallback = isFunction( s.jsonpCallback ) ?\n\t\t\ts.jsonpCallback() :\n\t\t\ts.jsonpCallback;\n\n\t\t// Insert callback into url or form data\n\t\tif ( jsonProp ) {\n\t\t\ts[ jsonProp ] = s[ jsonProp ].replace( rjsonp, \"$1\" + callbackName );\n\t\t} else if ( s.jsonp !== false ) {\n\t\t\ts.url += ( rquery.test( s.url ) ? \"&\" : \"?\" ) + s.jsonp + \"=\" + callbackName;\n\t\t}\n\n\t\t// Use data converter to retrieve json after script execution\n\t\ts.converters[ \"script json\" ] = function() {\n\t\t\tif ( !responseContainer ) {\n\t\t\t\tjQuery.error( callbackName + \" was not called\" );\n\t\t\t}\n\t\t\treturn responseContainer[ 0 ];\n\t\t};\n\n\t\t// Force json dataType\n\t\ts.dataTypes[ 0 ] = \"json\";\n\n\t\t// Install callback\n\t\toverwritten = window[ callbackName ];\n\t\twindow[ callbackName ] = function() {\n\t\t\tresponseContainer = arguments;\n\t\t};\n\n\t\t// Clean-up function (fires after converters)\n\t\tjqXHR.always( function() {\n\n\t\t\t// If previous value didn't exist - remove it\n\t\t\tif ( overwritten === undefined ) {\n\t\t\t\tjQuery( window ).removeProp( callbackName );\n\n\t\t\t// Otherwise restore preexisting value\n\t\t\t} else {\n\t\t\t\twindow[ callbackName ] = overwritten;\n\t\t\t}\n\n\t\t\t// Save back as free\n\t\t\tif ( s[ callbackName ] ) {\n\n\t\t\t\t// Make sure that re-using the options doesn't screw things around\n\t\t\t\ts.jsonpCallback = originalSettings.jsonpCallback;\n\n\t\t\t\t// Save the callback name for future use\n\t\t\t\toldCallbacks.push( callbackName );\n\t\t\t}\n\n\t\t\t// Call if it was a function and we have a response\n\t\t\tif ( responseContainer && isFunction( overwritten ) ) {\n\t\t\t\toverwritten( responseContainer[ 0 ] );\n\t\t\t}\n\n\t\t\tresponseContainer = overwritten = undefined;\n\t\t} );\n\n\t\t// Delegate to script\n\t\treturn \"script\";\n\t}\n} );\n\n\n\n\n// Support: Safari 8 only\n// In Safari 8 documents created via document.implementation.createHTMLDocument\n// collapse sibling forms: the second one becomes a child of the first one.\n// Because of that, this security measure has to be disabled in Safari 8.\n// https://bugs.webkit.org/show_bug.cgi?id=137337\nsupport.createHTMLDocument = ( function() {\n\tvar body = document.implementation.createHTMLDocument( \"\" ).body;\n\tbody.innerHTML = \"<form></form><form></form>\";\n\treturn body.childNodes.length === 2;\n} )();\n\n\n// Argument \"data\" should be string of html\n// context (optional): If specified, the fragment will be created in this context,\n// defaults to document\n// keepScripts (optional): If true, will include scripts passed in the html string\njQuery.parseHTML = function( data, context, keepScripts ) {\n\tif ( typeof data !== \"string\" ) {\n\t\treturn [];\n\t}\n\tif ( typeof context === \"boolean\" ) {\n\t\tkeepScripts = context;\n\t\tcontext = false;\n\t}\n\n\tvar base, parsed, scripts;\n\n\tif ( !context ) {\n\n\t\t// Stop scripts or inline event handlers from being executed immediately\n\t\t// by using document.implementation\n\t\tif ( support.createHTMLDocument ) {\n\t\t\tcontext = document.implementation.createHTMLDocument( \"\" );\n\n\t\t\t// Set the base href for the created document\n\t\t\t// so any parsed elements with URLs\n\t\t\t// are based on the document's URL (gh-2965)\n\t\t\tbase = context.createElement( \"base\" );\n\t\t\tbase.href = document.location.href;\n\t\t\tcontext.head.appendChild( base );\n\t\t} else {\n\t\t\tcontext = document;\n\t\t}\n\t}\n\n\tparsed = rsingleTag.exec( data );\n\tscripts = !keepScripts && [];\n\n\t// Single tag\n\tif ( parsed ) {\n\t\treturn [ context.createElement( parsed[ 1 ] ) ];\n\t}\n\n\tparsed = buildFragment( [ data ], context, scripts );\n\n\tif ( scripts && scripts.length ) {\n\t\tjQuery( scripts ).remove();\n\t}\n\n\treturn jQuery.merge( [], parsed.childNodes );\n};\n\n\n/**\n * Load a url into a page\n */\njQuery.fn.load = function( url, params, callback ) {\n\tvar selector, type, response,\n\t\tself = this,\n\t\toff = url.indexOf( \" \" );\n\n\tif ( off > -1 ) {\n\t\tselector = stripAndCollapse( url.slice( off ) );\n\t\turl = url.slice( 0, off );\n\t}\n\n\t// If it's a function\n\tif ( isFunction( params ) ) {\n\n\t\t// We assume that it's the callback\n\t\tcallback = params;\n\t\tparams = undefined;\n\n\t// Otherwise, build a param string\n\t} else if ( params && typeof params === \"object\" ) {\n\t\ttype = \"POST\";\n\t}\n\n\t// If we have elements to modify, make the request\n\tif ( self.length > 0 ) {\n\t\tjQuery.ajax( {\n\t\t\turl: url,\n\n\t\t\t// If \"type\" variable is undefined, then \"GET\" method will be used.\n\t\t\t// Make value of this field explicit since\n\t\t\t// user can override it through ajaxSetup method\n\t\t\ttype: type || \"GET\",\n\t\t\tdataType: \"html\",\n\t\t\tdata: params\n\t\t} ).done( function( responseText ) {\n\n\t\t\t// Save response for use in complete callback\n\t\t\tresponse = arguments;\n\n\t\t\tself.html( selector ?\n\n\t\t\t\t// If a selector was specified, locate the right elements in a dummy div\n\t\t\t\t// Exclude scripts to avoid IE 'Permission Denied' errors\n\t\t\t\tjQuery( \"<div>\" ).append( jQuery.parseHTML( responseText ) ).find( selector ) :\n\n\t\t\t\t// Otherwise use the full result\n\t\t\t\tresponseText );\n\n\t\t// If the request succeeds, this function gets \"data\", \"status\", \"jqXHR\"\n\t\t// but they are ignored because response was set above.\n\t\t// If it fails, this function gets \"jqXHR\", \"status\", \"error\"\n\t\t} ).always( callback && function( jqXHR, status ) {\n\t\t\tself.each( function() {\n\t\t\t\tcallback.apply( this, response || [ jqXHR.responseText, status, jqXHR ] );\n\t\t\t} );\n\t\t} );\n\t}\n\n\treturn this;\n};\n\n\n\n\njQuery.expr.pseudos.animated = function( elem ) {\n\treturn jQuery.grep( jQuery.timers, function( fn ) {\n\t\treturn elem === fn.elem;\n\t} ).length;\n};\n\n\n\n\njQuery.offset = {\n\tsetOffset: function( elem, options, i ) {\n\t\tvar curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,\n\t\t\tposition = jQuery.css( elem, \"position\" ),\n\t\t\tcurElem = jQuery( elem ),\n\t\t\tprops = {};\n\n\t\t// Set position first, in-case top/left are set even on static elem\n\t\tif ( position === \"static\" ) {\n\t\t\telem.style.position = \"relative\";\n\t\t}\n\n\t\tcurOffset = curElem.offset();\n\t\tcurCSSTop = jQuery.css( elem, \"top\" );\n\t\tcurCSSLeft = jQuery.css( elem, \"left\" );\n\t\tcalculatePosition = ( position === \"absolute\" || position === \"fixed\" ) &&\n\t\t\t( curCSSTop + curCSSLeft ).indexOf( \"auto\" ) > -1;\n\n\t\t// Need to be able to calculate position if either\n\t\t// top or left is auto and position is either absolute or fixed\n\t\tif ( calculatePosition ) {\n\t\t\tcurPosition = curElem.position();\n\t\t\tcurTop = curPosition.top;\n\t\t\tcurLeft = curPosition.left;\n\n\t\t} else {\n\t\t\tcurTop = parseFloat( curCSSTop ) || 0;\n\t\t\tcurLeft = parseFloat( curCSSLeft ) || 0;\n\t\t}\n\n\t\tif ( isFunction( options ) ) {\n\n\t\t\t// Use jQuery.extend here to allow modification of coordinates argument (gh-1848)\n\t\t\toptions = options.call( elem, i, jQuery.extend( {}, curOffset ) );\n\t\t}\n\n\t\tif ( options.top != null ) {\n\t\t\tprops.top = ( options.top - curOffset.top ) + curTop;\n\t\t}\n\t\tif ( options.left != null ) {\n\t\t\tprops.left = ( options.left - curOffset.left ) + curLeft;\n\t\t}\n\n\t\tif ( \"using\" in options ) {\n\t\t\toptions.using.call( elem, props );\n\n\t\t} else {\n\t\t\tcurElem.css( props );\n\t\t}\n\t}\n};\n\njQuery.fn.extend( {\n\n\t// offset() relates an element's border box to the document origin\n\toffset: function( options ) {\n\n\t\t// Preserve chaining for setter\n\t\tif ( arguments.length ) {\n\t\t\treturn options === undefined ?\n\t\t\t\tthis :\n\t\t\t\tthis.each( function( i ) {\n\t\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t\t} );\n\t\t}\n\n\t\tvar rect, win,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !elem ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Return zeros for disconnected and hidden (display: none) elements (gh-2310)\n\t\t// Support: IE <=11 only\n\t\t// Running getBoundingClientRect on a\n\t\t// disconnected node in IE throws an error\n\t\tif ( !elem.getClientRects().length ) {\n\t\t\treturn { top: 0, left: 0 };\n\t\t}\n\n\t\t// Get document-relative position by adding viewport scroll to viewport-relative gBCR\n\t\trect = elem.getBoundingClientRect();\n\t\twin = elem.ownerDocument.defaultView;\n\t\treturn {\n\t\t\ttop: rect.top + win.pageYOffset,\n\t\t\tleft: rect.left + win.pageXOffset\n\t\t};\n\t},\n\n\t// position() relates an element's margin box to its offset parent's padding box\n\t// This corresponds to the behavior of CSS absolute positioning\n\tposition: function() {\n\t\tif ( !this[ 0 ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar offsetParent, offset, doc,\n\t\t\telem = this[ 0 ],\n\t\t\tparentOffset = { top: 0, left: 0 };\n\n\t\t// position:fixed elements are offset from the viewport, which itself always has zero offset\n\t\tif ( jQuery.css( elem, \"position\" ) === \"fixed\" ) {\n\n\t\t\t// Assume position:fixed implies availability of getBoundingClientRect\n\t\t\toffset = elem.getBoundingClientRect();\n\n\t\t} else {\n\t\t\toffset = this.offset();\n\n\t\t\t// Account for the *real* offset parent, which can be the document or its root element\n\t\t\t// when a statically positioned element is identified\n\t\t\tdoc = elem.ownerDocument;\n\t\t\toffsetParent = elem.offsetParent || doc.documentElement;\n\t\t\twhile ( offsetParent &&\n\t\t\t\t( offsetParent === doc.body || offsetParent === doc.documentElement ) &&\n\t\t\t\tjQuery.css( offsetParent, \"position\" ) === \"static\" ) {\n\n\t\t\t\toffsetParent = offsetParent.parentNode;\n\t\t\t}\n\t\t\tif ( offsetParent && offsetParent !== elem && offsetParent.nodeType === 1 ) {\n\n\t\t\t\t// Incorporate borders into its offset, since they are outside its content origin\n\t\t\t\tparentOffset = jQuery( offsetParent ).offset();\n\t\t\t\tparentOffset.top += jQuery.css( offsetParent, \"borderTopWidth\", true );\n\t\t\t\tparentOffset.left += jQuery.css( offsetParent, \"borderLeftWidth\", true );\n\t\t\t}\n\t\t}\n\n\t\t// Subtract parent offsets and element margins\n\t\treturn {\n\t\t\ttop: offset.top - parentOffset.top - jQuery.css( elem, \"marginTop\", true ),\n\t\t\tleft: offset.left - parentOffset.left - jQuery.css( elem, \"marginLeft\", true )\n\t\t};\n\t},\n\n\t// This method will return documentElement in the following cases:\n\t// 1) For the element inside the iframe without offsetParent, this method will return\n\t//    documentElement of the parent window\n\t// 2) For the hidden or detached element\n\t// 3) For body or html element, i.e. in case of the html node - it will return itself\n\t//\n\t// but those exceptions were never presented as a real life use-cases\n\t// and might be considered as more preferable results.\n\t//\n\t// This logic, however, is not guaranteed and can change at any point in the future\n\toffsetParent: function() {\n\t\treturn this.map( function() {\n\t\t\tvar offsetParent = this.offsetParent;\n\n\t\t\twhile ( offsetParent && jQuery.css( offsetParent, \"position\" ) === \"static\" ) {\n\t\t\t\toffsetParent = offsetParent.offsetParent;\n\t\t\t}\n\n\t\t\treturn offsetParent || documentElement;\n\t\t} );\n\t}\n} );\n\n// Create scrollLeft and scrollTop methods\njQuery.each( { scrollLeft: \"pageXOffset\", scrollTop: \"pageYOffset\" }, function( method, prop ) {\n\tvar top = \"pageYOffset\" === prop;\n\n\tjQuery.fn[ method ] = function( val ) {\n\t\treturn access( this, function( elem, method, val ) {\n\n\t\t\t// Coalesce documents and windows\n\t\t\tvar win;\n\t\t\tif ( isWindow( elem ) ) {\n\t\t\t\twin = elem;\n\t\t\t} else if ( elem.nodeType === 9 ) {\n\t\t\t\twin = elem.defaultView;\n\t\t\t}\n\n\t\t\tif ( val === undefined ) {\n\t\t\t\treturn win ? win[ prop ] : elem[ method ];\n\t\t\t}\n\n\t\t\tif ( win ) {\n\t\t\t\twin.scrollTo(\n\t\t\t\t\t!top ? val : win.pageXOffset,\n\t\t\t\t\ttop ? val : win.pageYOffset\n\t\t\t\t);\n\n\t\t\t} else {\n\t\t\t\telem[ method ] = val;\n\t\t\t}\n\t\t}, method, val, arguments.length );\n\t};\n} );\n\n// Support: Safari <=7 - 9.1, Chrome <=37 - 49\n// Add the top/left cssHooks using jQuery.fn.position\n// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084\n// Blink bug: https://bugs.chromium.org/p/chromium/issues/detail?id=589347\n// getComputedStyle returns percent when specified for top/left/bottom/right;\n// rather than make the css module depend on the offset module, just check for it here\njQuery.each( [ \"top\", \"left\" ], function( _i, prop ) {\n\tjQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,\n\t\tfunction( elem, computed ) {\n\t\t\tif ( computed ) {\n\t\t\t\tcomputed = curCSS( elem, prop );\n\n\t\t\t\t// If curCSS returns percentage, fallback to offset\n\t\t\t\treturn rnumnonpx.test( computed ) ?\n\t\t\t\t\tjQuery( elem ).position()[ prop ] + \"px\" :\n\t\t\t\t\tcomputed;\n\t\t\t}\n\t\t}\n\t);\n} );\n\n\n// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods\njQuery.each( { Height: \"height\", Width: \"width\" }, function( name, type ) {\n\tjQuery.each( {\n\t\tpadding: \"inner\" + name,\n\t\tcontent: type,\n\t\t\"\": \"outer\" + name\n\t}, function( defaultExtra, funcName ) {\n\n\t\t// Margin is only for outerHeight, outerWidth\n\t\tjQuery.fn[ funcName ] = function( margin, value ) {\n\t\t\tvar chainable = arguments.length && ( defaultExtra || typeof margin !== \"boolean\" ),\n\t\t\t\textra = defaultExtra || ( margin === true || value === true ? \"margin\" : \"border\" );\n\n\t\t\treturn access( this, function( elem, type, value ) {\n\t\t\t\tvar doc;\n\n\t\t\t\tif ( isWindow( elem ) ) {\n\n\t\t\t\t\t// $( window ).outerWidth/Height return w/h including scrollbars (gh-1729)\n\t\t\t\t\treturn funcName.indexOf( \"outer\" ) === 0 ?\n\t\t\t\t\t\telem[ \"inner\" + name ] :\n\t\t\t\t\t\telem.document.documentElement[ \"client\" + name ];\n\t\t\t\t}\n\n\t\t\t\t// Get document width or height\n\t\t\t\tif ( elem.nodeType === 9 ) {\n\t\t\t\t\tdoc = elem.documentElement;\n\n\t\t\t\t\t// Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],\n\t\t\t\t\t// whichever is greatest\n\t\t\t\t\treturn Math.max(\n\t\t\t\t\t\telem.body[ \"scroll\" + name ], doc[ \"scroll\" + name ],\n\t\t\t\t\t\telem.body[ \"offset\" + name ], doc[ \"offset\" + name ],\n\t\t\t\t\t\tdoc[ \"client\" + name ]\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn value === undefined ?\n\n\t\t\t\t\t// Get width or height on the element, requesting but not forcing parseFloat\n\t\t\t\t\tjQuery.css( elem, type, extra ) :\n\n\t\t\t\t\t// Set width or height on the element\n\t\t\t\t\tjQuery.style( elem, type, value, extra );\n\t\t\t}, type, chainable ? margin : undefined, chainable );\n\t\t};\n\t} );\n} );\n\n\njQuery.each( [\n\t\"ajaxStart\",\n\t\"ajaxStop\",\n\t\"ajaxComplete\",\n\t\"ajaxError\",\n\t\"ajaxSuccess\",\n\t\"ajaxSend\"\n], function( _i, type ) {\n\tjQuery.fn[ type ] = function( fn ) {\n\t\treturn this.on( type, fn );\n\t};\n} );\n\n\n\n\njQuery.fn.extend( {\n\n\tbind: function( types, data, fn ) {\n\t\treturn this.on( types, null, data, fn );\n\t},\n\tunbind: function( types, fn ) {\n\t\treturn this.off( types, null, fn );\n\t},\n\n\tdelegate: function( selector, types, data, fn ) {\n\t\treturn this.on( types, selector, data, fn );\n\t},\n\tundelegate: function( selector, types, fn ) {\n\n\t\t// ( namespace ) or ( selector, types [, fn] )\n\t\treturn arguments.length === 1 ?\n\t\t\tthis.off( selector, \"**\" ) :\n\t\t\tthis.off( types, selector || \"**\", fn );\n\t},\n\n\thover: function( fnOver, fnOut ) {\n\t\treturn this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );\n\t}\n} );\n\njQuery.each(\n\t( \"blur focus focusin focusout resize scroll click dblclick \" +\n\t\"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave \" +\n\t\"change select submit keydown keypress keyup contextmenu\" ).split( \" \" ),\n\tfunction( _i, name ) {\n\n\t\t// Handle event binding\n\t\tjQuery.fn[ name ] = function( data, fn ) {\n\t\t\treturn arguments.length > 0 ?\n\t\t\t\tthis.on( name, null, data, fn ) :\n\t\t\t\tthis.trigger( name );\n\t\t};\n\t}\n);\n\n\n\n\n// Support: Android <=4.0 only\n// Make sure we trim BOM and NBSP\n// Require that the \"whitespace run\" starts from a non-whitespace\n// to avoid O(N^2) behavior when the engine would try matching \"\\s+$\" at each space position.\nvar rtrim = /^[\\s\\uFEFF\\xA0]+|([^\\s\\uFEFF\\xA0])[\\s\\uFEFF\\xA0]+$/g;\n\n// Bind a function to a context, optionally partially applying any\n// arguments.\n// jQuery.proxy is deprecated to promote standards (specifically Function#bind)\n// However, it is not slated for removal any time soon\njQuery.proxy = function( fn, context ) {\n\tvar tmp, args, proxy;\n\n\tif ( typeof context === \"string\" ) {\n\t\ttmp = fn[ context ];\n\t\tcontext = fn;\n\t\tfn = tmp;\n\t}\n\n\t// Quick check to determine if target is callable, in the spec\n\t// this throws a TypeError, but we will just return undefined.\n\tif ( !isFunction( fn ) ) {\n\t\treturn undefined;\n\t}\n\n\t// Simulated bind\n\targs = slice.call( arguments, 2 );\n\tproxy = function() {\n\t\treturn fn.apply( context || this, args.concat( slice.call( arguments ) ) );\n\t};\n\n\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\tproxy.guid = fn.guid = fn.guid || jQuery.guid++;\n\n\treturn proxy;\n};\n\njQuery.holdReady = function( hold ) {\n\tif ( hold ) {\n\t\tjQuery.readyWait++;\n\t} else {\n\t\tjQuery.ready( true );\n\t}\n};\njQuery.isArray = Array.isArray;\njQuery.parseJSON = JSON.parse;\njQuery.nodeName = nodeName;\njQuery.isFunction = isFunction;\njQuery.isWindow = isWindow;\njQuery.camelCase = camelCase;\njQuery.type = toType;\n\njQuery.now = Date.now;\n\njQuery.isNumeric = function( obj ) {\n\n\t// As of jQuery 3.0, isNumeric is limited to\n\t// strings and numbers (primitives or objects)\n\t// that can be coerced to finite numbers (gh-2662)\n\tvar type = jQuery.type( obj );\n\treturn ( type === \"number\" || type === \"string\" ) &&\n\n\t\t// parseFloat NaNs numeric-cast false positives (\"\")\n\t\t// ...but misinterprets leading-number strings, particularly hex literals (\"0x...\")\n\t\t// subtraction forces infinities to NaN\n\t\t!isNaN( obj - parseFloat( obj ) );\n};\n\njQuery.trim = function( text ) {\n\treturn text == null ?\n\t\t\"\" :\n\t\t( text + \"\" ).replace( rtrim, \"$1\" );\n};\n\n\n\n// Register as a named AMD module, since jQuery can be concatenated with other\n// files that may use define, but not via a proper concatenation script that\n// understands anonymous AMD modules. A named AMD is safest and most robust\n// way to register. Lowercase jquery is used because AMD module names are\n// derived from file names, and jQuery is normally delivered in a lowercase\n// file name. Do this after creating the global so that if an AMD module wants\n// to call noConflict to hide this version of jQuery, it will work.\n\n// Note that for maximum portability, libraries that are not jQuery should\n// declare themselves as anonymous modules, and avoid setting a global if an\n// AMD loader is present. jQuery is a special case. For more information, see\n// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon\n\nif ( typeof define === \"function\" && define.amd ) {\n\tdefine( \"jquery\", [], function() {\n\t\treturn jQuery;\n\t} );\n}\n\n\n\n\nvar\n\n\t// Map over jQuery in case of overwrite\n\t_jQuery = window.jQuery,\n\n\t// Map over the $ in case of overwrite\n\t_$ = window.$;\n\njQuery.noConflict = function( deep ) {\n\tif ( window.$ === jQuery ) {\n\t\twindow.$ = _$;\n\t}\n\n\tif ( deep && window.jQuery === jQuery ) {\n\t\twindow.jQuery = _jQuery;\n\t}\n\n\treturn jQuery;\n};\n\n// Expose jQuery and $ identifiers, even in AMD\n// (trac-7102#comment:10, https://github.com/jquery/jquery/pull/557)\n// and CommonJS for browser emulators (trac-13566)\nif ( typeof noGlobal === \"undefined\" ) {\n\twindow.jQuery = window.$ = jQuery;\n}\n\n\n\n\nreturn jQuery;\n} );\n","//! moment.js locale configuration\n//! locale : Afrikaans [af]\n//! author : Werner Mollentze : https://github.com/wernerm\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var af = moment.defineLocale('af', {\n        months: 'Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des'.split('_'),\n        weekdays: 'Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag'.split(\n            '_'\n        ),\n        weekdaysShort: 'Son_Maa_Din_Woe_Don_Vry_Sat'.split('_'),\n        weekdaysMin: 'So_Ma_Di_Wo_Do_Vr_Sa'.split('_'),\n        meridiemParse: /vm|nm/i,\n        isPM: function (input) {\n            return /^nm$/i.test(input);\n        },\n        meridiem: function (hours, minutes, isLower) {\n            if (hours < 12) {\n                return isLower ? 'vm' : 'VM';\n            } else {\n                return isLower ? 'nm' : 'NM';\n            }\n        },\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Vandag om] LT',\n            nextDay: '[Môre om] LT',\n            nextWeek: 'dddd [om] LT',\n            lastDay: '[Gister om] LT',\n            lastWeek: '[Laas] dddd [om] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'oor %s',\n            past: '%s gelede',\n            s: \"'n paar sekondes\",\n            ss: '%d sekondes',\n            m: \"'n minuut\",\n            mm: '%d minute',\n            h: \"'n uur\",\n            hh: '%d ure',\n            d: \"'n dag\",\n            dd: '%d dae',\n            M: \"'n maand\",\n            MM: '%d maande',\n            y: \"'n jaar\",\n            yy: '%d jaar',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n        ordinal: function (number) {\n            return (\n                number +\n                (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n            ); // Thanks to Joris Röling : https://github.com/jjupiter\n        },\n        week: {\n            dow: 1, // Maandag is die eerste dag van die week.\n            doy: 4, // Die week wat die 4de Januarie bevat is die eerste week van die jaar.\n        },\n    });\n\n    return af;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Algeria) [ar-dz]\n//! author : Amine Roukh: https://github.com/Amine27\n//! author : Abdel Said: https://github.com/abdelsaid\n//! author : Ahmed Elkhatib\n//! author : forabi https://github.com/forabi\n//! author : Noureddine LOUAHEDJ : https://github.com/noureddinem\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var pluralForm = function (n) {\n            return n === 0\n                ? 0\n                : n === 1\n                ? 1\n                : n === 2\n                ? 2\n                : n % 100 >= 3 && n % 100 <= 10\n                ? 3\n                : n % 100 >= 11\n                ? 4\n                : 5;\n        },\n        plurals = {\n            s: [\n                'أقل من ثانية',\n                'ثانية واحدة',\n                ['ثانيتان', 'ثانيتين'],\n                '%d ثوان',\n                '%d ثانية',\n                '%d ثانية',\n            ],\n            m: [\n                'أقل من دقيقة',\n                'دقيقة واحدة',\n                ['دقيقتان', 'دقيقتين'],\n                '%d دقائق',\n                '%d دقيقة',\n                '%d دقيقة',\n            ],\n            h: [\n                'أقل من ساعة',\n                'ساعة واحدة',\n                ['ساعتان', 'ساعتين'],\n                '%d ساعات',\n                '%d ساعة',\n                '%d ساعة',\n            ],\n            d: [\n                'أقل من يوم',\n                'يوم واحد',\n                ['يومان', 'يومين'],\n                '%d أيام',\n                '%d يومًا',\n                '%d يوم',\n            ],\n            M: [\n                'أقل من شهر',\n                'شهر واحد',\n                ['شهران', 'شهرين'],\n                '%d أشهر',\n                '%d شهرا',\n                '%d شهر',\n            ],\n            y: [\n                'أقل من عام',\n                'عام واحد',\n                ['عامان', 'عامين'],\n                '%d أعوام',\n                '%d عامًا',\n                '%d عام',\n            ],\n        },\n        pluralize = function (u) {\n            return function (number, withoutSuffix, string, isFuture) {\n                var f = pluralForm(number),\n                    str = plurals[u][pluralForm(number)];\n                if (f === 2) {\n                    str = str[withoutSuffix ? 0 : 1];\n                }\n                return str.replace(/%d/i, number);\n            };\n        },\n        months = [\n            'جانفي',\n            'فيفري',\n            'مارس',\n            'أفريل',\n            'ماي',\n            'جوان',\n            'جويلية',\n            'أوت',\n            'سبتمبر',\n            'أكتوبر',\n            'نوفمبر',\n            'ديسمبر',\n        ];\n\n    var arDz = moment.defineLocale('ar-dz', {\n        months: months,\n        monthsShort: months,\n        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'D/\\u200FM/\\u200FYYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        meridiemParse: /ص|م/,\n        isPM: function (input) {\n            return 'م' === input;\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'ص';\n            } else {\n                return 'م';\n            }\n        },\n        calendar: {\n            sameDay: '[اليوم عند الساعة] LT',\n            nextDay: '[غدًا عند الساعة] LT',\n            nextWeek: 'dddd [عند الساعة] LT',\n            lastDay: '[أمس عند الساعة] LT',\n            lastWeek: 'dddd [عند الساعة] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'بعد %s',\n            past: 'منذ %s',\n            s: pluralize('s'),\n            ss: pluralize('s'),\n            m: pluralize('m'),\n            mm: pluralize('m'),\n            h: pluralize('h'),\n            hh: pluralize('h'),\n            d: pluralize('d'),\n            dd: pluralize('d'),\n            M: pluralize('M'),\n            MM: pluralize('M'),\n            y: pluralize('y'),\n            yy: pluralize('y'),\n        },\n        postformat: function (string) {\n            return string.replace(/,/g, '،');\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return arDz;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Kuwait) [ar-kw]\n//! author : Nusret Parlak: https://github.com/nusretparlak\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var arKw = moment.defineLocale('ar-kw', {\n        months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n            '_'\n        ),\n        monthsShort: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n            '_'\n        ),\n        weekdays: 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n        weekdaysShort: 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[اليوم على الساعة] LT',\n            nextDay: '[غدا على الساعة] LT',\n            nextWeek: 'dddd [على الساعة] LT',\n            lastDay: '[أمس على الساعة] LT',\n            lastWeek: 'dddd [على الساعة] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'في %s',\n            past: 'منذ %s',\n            s: 'ثوان',\n            ss: '%d ثانية',\n            m: 'دقيقة',\n            mm: '%d دقائق',\n            h: 'ساعة',\n            hh: '%d ساعات',\n            d: 'يوم',\n            dd: '%d أيام',\n            M: 'شهر',\n            MM: '%d أشهر',\n            y: 'سنة',\n            yy: '%d سنوات',\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 12, // The week that contains Jan 12th is the first week of the year.\n        },\n    });\n\n    return arKw;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Lybia) [ar-ly]\n//! author : Ali Hmer: https://github.com/kikoanis\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            1: '1',\n            2: '2',\n            3: '3',\n            4: '4',\n            5: '5',\n            6: '6',\n            7: '7',\n            8: '8',\n            9: '9',\n            0: '0',\n        },\n        pluralForm = function (n) {\n            return n === 0\n                ? 0\n                : n === 1\n                ? 1\n                : n === 2\n                ? 2\n                : n % 100 >= 3 && n % 100 <= 10\n                ? 3\n                : n % 100 >= 11\n                ? 4\n                : 5;\n        },\n        plurals = {\n            s: [\n                'أقل من ثانية',\n                'ثانية واحدة',\n                ['ثانيتان', 'ثانيتين'],\n                '%d ثوان',\n                '%d ثانية',\n                '%d ثانية',\n            ],\n            m: [\n                'أقل من دقيقة',\n                'دقيقة واحدة',\n                ['دقيقتان', 'دقيقتين'],\n                '%d دقائق',\n                '%d دقيقة',\n                '%d دقيقة',\n            ],\n            h: [\n                'أقل من ساعة',\n                'ساعة واحدة',\n                ['ساعتان', 'ساعتين'],\n                '%d ساعات',\n                '%d ساعة',\n                '%d ساعة',\n            ],\n            d: [\n                'أقل من يوم',\n                'يوم واحد',\n                ['يومان', 'يومين'],\n                '%d أيام',\n                '%d يومًا',\n                '%d يوم',\n            ],\n            M: [\n                'أقل من شهر',\n                'شهر واحد',\n                ['شهران', 'شهرين'],\n                '%d أشهر',\n                '%d شهرا',\n                '%d شهر',\n            ],\n            y: [\n                'أقل من عام',\n                'عام واحد',\n                ['عامان', 'عامين'],\n                '%d أعوام',\n                '%d عامًا',\n                '%d عام',\n            ],\n        },\n        pluralize = function (u) {\n            return function (number, withoutSuffix, string, isFuture) {\n                var f = pluralForm(number),\n                    str = plurals[u][pluralForm(number)];\n                if (f === 2) {\n                    str = str[withoutSuffix ? 0 : 1];\n                }\n                return str.replace(/%d/i, number);\n            };\n        },\n        months = [\n            'يناير',\n            'فبراير',\n            'مارس',\n            'أبريل',\n            'مايو',\n            'يونيو',\n            'يوليو',\n            'أغسطس',\n            'سبتمبر',\n            'أكتوبر',\n            'نوفمبر',\n            'ديسمبر',\n        ];\n\n    var arLy = moment.defineLocale('ar-ly', {\n        months: months,\n        monthsShort: months,\n        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'D/\\u200FM/\\u200FYYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        meridiemParse: /ص|م/,\n        isPM: function (input) {\n            return 'م' === input;\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'ص';\n            } else {\n                return 'م';\n            }\n        },\n        calendar: {\n            sameDay: '[اليوم عند الساعة] LT',\n            nextDay: '[غدًا عند الساعة] LT',\n            nextWeek: 'dddd [عند الساعة] LT',\n            lastDay: '[أمس عند الساعة] LT',\n            lastWeek: 'dddd [عند الساعة] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'بعد %s',\n            past: 'منذ %s',\n            s: pluralize('s'),\n            ss: pluralize('s'),\n            m: pluralize('m'),\n            mm: pluralize('m'),\n            h: pluralize('h'),\n            hh: pluralize('h'),\n            d: pluralize('d'),\n            dd: pluralize('d'),\n            M: pluralize('M'),\n            MM: pluralize('M'),\n            y: pluralize('y'),\n            yy: pluralize('y'),\n        },\n        preparse: function (string) {\n            return string.replace(/،/g, ',');\n        },\n        postformat: function (string) {\n            return string\n                .replace(/\\d/g, function (match) {\n                    return symbolMap[match];\n                })\n                .replace(/,/g, '،');\n        },\n        week: {\n            dow: 6, // Saturday is the first day of the week.\n            doy: 12, // The week that contains Jan 12th is the first week of the year.\n        },\n    });\n\n    return arLy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Morocco) [ar-ma]\n//! author : ElFadili Yassine : https://github.com/ElFadiliY\n//! author : Abdel Said : https://github.com/abdelsaid\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var arMa = moment.defineLocale('ar-ma', {\n        months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n            '_'\n        ),\n        monthsShort: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n            '_'\n        ),\n        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n        weekdaysShort: 'احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[اليوم على الساعة] LT',\n            nextDay: '[غدا على الساعة] LT',\n            nextWeek: 'dddd [على الساعة] LT',\n            lastDay: '[أمس على الساعة] LT',\n            lastWeek: 'dddd [على الساعة] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'في %s',\n            past: 'منذ %s',\n            s: 'ثوان',\n            ss: '%d ثانية',\n            m: 'دقيقة',\n            mm: '%d دقائق',\n            h: 'ساعة',\n            hh: '%d ساعات',\n            d: 'يوم',\n            dd: '%d أيام',\n            M: 'شهر',\n            MM: '%d أشهر',\n            y: 'سنة',\n            yy: '%d سنوات',\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return arMa;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Saudi Arabia) [ar-sa]\n//! author : Suhail Alkowaileet : https://github.com/xsoh\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            1: '١',\n            2: '٢',\n            3: '٣',\n            4: '٤',\n            5: '٥',\n            6: '٦',\n            7: '٧',\n            8: '٨',\n            9: '٩',\n            0: '٠',\n        },\n        numberMap = {\n            '١': '1',\n            '٢': '2',\n            '٣': '3',\n            '٤': '4',\n            '٥': '5',\n            '٦': '6',\n            '٧': '7',\n            '٨': '8',\n            '٩': '9',\n            '٠': '0',\n        };\n\n    var arSa = moment.defineLocale('ar-sa', {\n        months: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n            '_'\n        ),\n        monthsShort: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n            '_'\n        ),\n        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        meridiemParse: /ص|م/,\n        isPM: function (input) {\n            return 'م' === input;\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'ص';\n            } else {\n                return 'م';\n            }\n        },\n        calendar: {\n            sameDay: '[اليوم على الساعة] LT',\n            nextDay: '[غدا على الساعة] LT',\n            nextWeek: 'dddd [على الساعة] LT',\n            lastDay: '[أمس على الساعة] LT',\n            lastWeek: 'dddd [على الساعة] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'في %s',\n            past: 'منذ %s',\n            s: 'ثوان',\n            ss: '%d ثانية',\n            m: 'دقيقة',\n            mm: '%d دقائق',\n            h: 'ساعة',\n            hh: '%d ساعات',\n            d: 'يوم',\n            dd: '%d أيام',\n            M: 'شهر',\n            MM: '%d أشهر',\n            y: 'سنة',\n            yy: '%d سنوات',\n        },\n        preparse: function (string) {\n            return string\n                .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n                    return numberMap[match];\n                })\n                .replace(/،/g, ',');\n        },\n        postformat: function (string) {\n            return string\n                .replace(/\\d/g, function (match) {\n                    return symbolMap[match];\n                })\n                .replace(/,/g, '،');\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 6th is the first week of the year.\n        },\n    });\n\n    return arSa;\n\n})));\n","//! moment.js locale configuration\n//! locale  :  Arabic (Tunisia) [ar-tn]\n//! author : Nader Toukabri : https://github.com/naderio\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var arTn = moment.defineLocale('ar-tn', {\n        months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n            '_'\n        ),\n        monthsShort: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n            '_'\n        ),\n        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[اليوم على الساعة] LT',\n            nextDay: '[غدا على الساعة] LT',\n            nextWeek: 'dddd [على الساعة] LT',\n            lastDay: '[أمس على الساعة] LT',\n            lastWeek: 'dddd [على الساعة] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'في %s',\n            past: 'منذ %s',\n            s: 'ثوان',\n            ss: '%d ثانية',\n            m: 'دقيقة',\n            mm: '%d دقائق',\n            h: 'ساعة',\n            hh: '%d ساعات',\n            d: 'يوم',\n            dd: '%d أيام',\n            M: 'شهر',\n            MM: '%d أشهر',\n            y: 'سنة',\n            yy: '%d سنوات',\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return arTn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic [ar]\n//! author : Abdel Said: https://github.com/abdelsaid\n//! author : Ahmed Elkhatib\n//! author : forabi https://github.com/forabi\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            1: '١',\n            2: '٢',\n            3: '٣',\n            4: '٤',\n            5: '٥',\n            6: '٦',\n            7: '٧',\n            8: '٨',\n            9: '٩',\n            0: '٠',\n        },\n        numberMap = {\n            '١': '1',\n            '٢': '2',\n            '٣': '3',\n            '٤': '4',\n            '٥': '5',\n            '٦': '6',\n            '٧': '7',\n            '٨': '8',\n            '٩': '9',\n            '٠': '0',\n        },\n        pluralForm = function (n) {\n            return n === 0\n                ? 0\n                : n === 1\n                ? 1\n                : n === 2\n                ? 2\n                : n % 100 >= 3 && n % 100 <= 10\n                ? 3\n                : n % 100 >= 11\n                ? 4\n                : 5;\n        },\n        plurals = {\n            s: [\n                'أقل من ثانية',\n                'ثانية واحدة',\n                ['ثانيتان', 'ثانيتين'],\n                '%d ثوان',\n                '%d ثانية',\n                '%d ثانية',\n            ],\n            m: [\n                'أقل من دقيقة',\n                'دقيقة واحدة',\n                ['دقيقتان', 'دقيقتين'],\n                '%d دقائق',\n                '%d دقيقة',\n                '%d دقيقة',\n            ],\n            h: [\n                'أقل من ساعة',\n                'ساعة واحدة',\n                ['ساعتان', 'ساعتين'],\n                '%d ساعات',\n                '%d ساعة',\n                '%d ساعة',\n            ],\n            d: [\n                'أقل من يوم',\n                'يوم واحد',\n                ['يومان', 'يومين'],\n                '%d أيام',\n                '%d يومًا',\n                '%d يوم',\n            ],\n            M: [\n                'أقل من شهر',\n                'شهر واحد',\n                ['شهران', 'شهرين'],\n                '%d أشهر',\n                '%d شهرا',\n                '%d شهر',\n            ],\n            y: [\n                'أقل من عام',\n                'عام واحد',\n                ['عامان', 'عامين'],\n                '%d أعوام',\n                '%d عامًا',\n                '%d عام',\n            ],\n        },\n        pluralize = function (u) {\n            return function (number, withoutSuffix, string, isFuture) {\n                var f = pluralForm(number),\n                    str = plurals[u][pluralForm(number)];\n                if (f === 2) {\n                    str = str[withoutSuffix ? 0 : 1];\n                }\n                return str.replace(/%d/i, number);\n            };\n        },\n        months = [\n            'يناير',\n            'فبراير',\n            'مارس',\n            'أبريل',\n            'مايو',\n            'يونيو',\n            'يوليو',\n            'أغسطس',\n            'سبتمبر',\n            'أكتوبر',\n            'نوفمبر',\n            'ديسمبر',\n        ];\n\n    var ar = moment.defineLocale('ar', {\n        months: months,\n        monthsShort: months,\n        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'D/\\u200FM/\\u200FYYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        meridiemParse: /ص|م/,\n        isPM: function (input) {\n            return 'م' === input;\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'ص';\n            } else {\n                return 'م';\n            }\n        },\n        calendar: {\n            sameDay: '[اليوم عند الساعة] LT',\n            nextDay: '[غدًا عند الساعة] LT',\n            nextWeek: 'dddd [عند الساعة] LT',\n            lastDay: '[أمس عند الساعة] LT',\n            lastWeek: 'dddd [عند الساعة] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'بعد %s',\n            past: 'منذ %s',\n            s: pluralize('s'),\n            ss: pluralize('s'),\n            m: pluralize('m'),\n            mm: pluralize('m'),\n            h: pluralize('h'),\n            hh: pluralize('h'),\n            d: pluralize('d'),\n            dd: pluralize('d'),\n            M: pluralize('M'),\n            MM: pluralize('M'),\n            y: pluralize('y'),\n            yy: pluralize('y'),\n        },\n        preparse: function (string) {\n            return string\n                .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n                    return numberMap[match];\n                })\n                .replace(/،/g, ',');\n        },\n        postformat: function (string) {\n            return string\n                .replace(/\\d/g, function (match) {\n                    return symbolMap[match];\n                })\n                .replace(/,/g, '،');\n        },\n        week: {\n            dow: 6, // Saturday is the first day of the week.\n            doy: 12, // The week that contains Jan 12th is the first week of the year.\n        },\n    });\n\n    return ar;\n\n})));\n","//! moment.js locale configuration\n//! locale : Azerbaijani [az]\n//! author : topchiyev : https://github.com/topchiyev\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var suffixes = {\n        1: '-inci',\n        5: '-inci',\n        8: '-inci',\n        70: '-inci',\n        80: '-inci',\n        2: '-nci',\n        7: '-nci',\n        20: '-nci',\n        50: '-nci',\n        3: '-üncü',\n        4: '-üncü',\n        100: '-üncü',\n        6: '-ncı',\n        9: '-uncu',\n        10: '-uncu',\n        30: '-uncu',\n        60: '-ıncı',\n        90: '-ıncı',\n    };\n\n    var az = moment.defineLocale('az', {\n        months: 'yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr'.split(\n            '_'\n        ),\n        monthsShort: 'yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek'.split('_'),\n        weekdays: 'Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə'.split(\n            '_'\n        ),\n        weekdaysShort: 'Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən'.split('_'),\n        weekdaysMin: 'Bz_BE_ÇA_Çə_CA_Cü_Şə'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[bugün saat] LT',\n            nextDay: '[sabah saat] LT',\n            nextWeek: '[gələn həftə] dddd [saat] LT',\n            lastDay: '[dünən] LT',\n            lastWeek: '[keçən həftə] dddd [saat] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s sonra',\n            past: '%s əvvəl',\n            s: 'bir neçə saniyə',\n            ss: '%d saniyə',\n            m: 'bir dəqiqə',\n            mm: '%d dəqiqə',\n            h: 'bir saat',\n            hh: '%d saat',\n            d: 'bir gün',\n            dd: '%d gün',\n            M: 'bir ay',\n            MM: '%d ay',\n            y: 'bir il',\n            yy: '%d il',\n        },\n        meridiemParse: /gecə|səhər|gündüz|axşam/,\n        isPM: function (input) {\n            return /^(gündüz|axşam)$/.test(input);\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'gecə';\n            } else if (hour < 12) {\n                return 'səhər';\n            } else if (hour < 17) {\n                return 'gündüz';\n            } else {\n                return 'axşam';\n            }\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,\n        ordinal: function (number) {\n            if (number === 0) {\n                // special case for zero\n                return number + '-ıncı';\n            }\n            var a = number % 10,\n                b = (number % 100) - a,\n                c = number >= 100 ? 100 : null;\n            return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return az;\n\n})));\n","//! moment.js locale configuration\n//! locale : Belarusian [be]\n//! author : Dmitry Demidov : https://github.com/demidov91\n//! author: Praleska: http://praleska.pro/\n//! Author : Menelion Elensúle : https://github.com/Oire\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function plural(word, num) {\n        var forms = word.split('_');\n        return num % 10 === 1 && num % 100 !== 11\n            ? forms[0]\n            : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n            ? forms[1]\n            : forms[2];\n    }\n    function relativeTimeWithPlural(number, withoutSuffix, key) {\n        var format = {\n            ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',\n            mm: withoutSuffix ? 'хвіліна_хвіліны_хвілін' : 'хвіліну_хвіліны_хвілін',\n            hh: withoutSuffix ? 'гадзіна_гадзіны_гадзін' : 'гадзіну_гадзіны_гадзін',\n            dd: 'дзень_дні_дзён',\n            MM: 'месяц_месяцы_месяцаў',\n            yy: 'год_гады_гадоў',\n        };\n        if (key === 'm') {\n            return withoutSuffix ? 'хвіліна' : 'хвіліну';\n        } else if (key === 'h') {\n            return withoutSuffix ? 'гадзіна' : 'гадзіну';\n        } else {\n            return number + ' ' + plural(format[key], +number);\n        }\n    }\n\n    var be = moment.defineLocale('be', {\n        months: {\n            format: 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split(\n                '_'\n            ),\n            standalone: 'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split(\n                '_'\n            ),\n        },\n        monthsShort: 'студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж'.split(\n            '_'\n        ),\n        weekdays: {\n            format: 'нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу'.split(\n                '_'\n            ),\n            standalone: 'нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота'.split(\n                '_'\n            ),\n            isFormat: /\\[ ?[Ууў] ?(?:мінулую|наступную)? ?\\] ?dddd/,\n        },\n        weekdaysShort: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),\n        weekdaysMin: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY г.',\n            LLL: 'D MMMM YYYY г., HH:mm',\n            LLLL: 'dddd, D MMMM YYYY г., HH:mm',\n        },\n        calendar: {\n            sameDay: '[Сёння ў] LT',\n            nextDay: '[Заўтра ў] LT',\n            lastDay: '[Учора ў] LT',\n            nextWeek: function () {\n                return '[У] dddd [ў] LT';\n            },\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                    case 3:\n                    case 5:\n                    case 6:\n                        return '[У мінулую] dddd [ў] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                        return '[У мінулы] dddd [ў] LT';\n                }\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'праз %s',\n            past: '%s таму',\n            s: 'некалькі секунд',\n            m: relativeTimeWithPlural,\n            mm: relativeTimeWithPlural,\n            h: relativeTimeWithPlural,\n            hh: relativeTimeWithPlural,\n            d: 'дзень',\n            dd: relativeTimeWithPlural,\n            M: 'месяц',\n            MM: relativeTimeWithPlural,\n            y: 'год',\n            yy: relativeTimeWithPlural,\n        },\n        meridiemParse: /ночы|раніцы|дня|вечара/,\n        isPM: function (input) {\n            return /^(дня|вечара)$/.test(input);\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'ночы';\n            } else if (hour < 12) {\n                return 'раніцы';\n            } else if (hour < 17) {\n                return 'дня';\n            } else {\n                return 'вечара';\n            }\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-(і|ы|га)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'M':\n                case 'd':\n                case 'DDD':\n                case 'w':\n                case 'W':\n                    return (number % 10 === 2 || number % 10 === 3) &&\n                        number % 100 !== 12 &&\n                        number % 100 !== 13\n                        ? number + '-і'\n                        : number + '-ы';\n                case 'D':\n                    return number + '-га';\n                default:\n                    return number;\n            }\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return be;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bulgarian [bg]\n//! author : Krasen Borisov : https://github.com/kraz\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var bg = moment.defineLocale('bg', {\n        months: 'януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември'.split(\n            '_'\n        ),\n        monthsShort: 'яну_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек'.split('_'),\n        weekdays: 'неделя_понеделник_вторник_сряда_четвъртък_петък_събота'.split(\n            '_'\n        ),\n        weekdaysShort: 'нед_пон_вто_сря_чет_пет_съб'.split('_'),\n        weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'D.MM.YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY H:mm',\n            LLLL: 'dddd, D MMMM YYYY H:mm',\n        },\n        calendar: {\n            sameDay: '[Днес в] LT',\n            nextDay: '[Утре в] LT',\n            nextWeek: 'dddd [в] LT',\n            lastDay: '[Вчера в] LT',\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                    case 3:\n                    case 6:\n                        return '[Миналата] dddd [в] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[Миналия] dddd [в] LT';\n                }\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'след %s',\n            past: 'преди %s',\n            s: 'няколко секунди',\n            ss: '%d секунди',\n            m: 'минута',\n            mm: '%d минути',\n            h: 'час',\n            hh: '%d часа',\n            d: 'ден',\n            dd: '%d дена',\n            w: 'седмица',\n            ww: '%d седмици',\n            M: 'месец',\n            MM: '%d месеца',\n            y: 'година',\n            yy: '%d години',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,\n        ordinal: function (number) {\n            var lastDigit = number % 10,\n                last2Digits = number % 100;\n            if (number === 0) {\n                return number + '-ев';\n            } else if (last2Digits === 0) {\n                return number + '-ен';\n            } else if (last2Digits > 10 && last2Digits < 20) {\n                return number + '-ти';\n            } else if (lastDigit === 1) {\n                return number + '-ви';\n            } else if (lastDigit === 2) {\n                return number + '-ри';\n            } else if (lastDigit === 7 || lastDigit === 8) {\n                return number + '-ми';\n            } else {\n                return number + '-ти';\n            }\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return bg;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bambara [bm]\n//! author : Estelle Comment : https://github.com/estellecomment\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var bm = moment.defineLocale('bm', {\n        months: 'Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo'.split(\n            '_'\n        ),\n        monthsShort: 'Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des'.split('_'),\n        weekdays: 'Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri'.split('_'),\n        weekdaysShort: 'Kar_Ntɛ_Tar_Ara_Ala_Jum_Sib'.split('_'),\n        weekdaysMin: 'Ka_Nt_Ta_Ar_Al_Ju_Si'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'MMMM [tile] D [san] YYYY',\n            LLL: 'MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',\n            LLLL: 'dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',\n        },\n        calendar: {\n            sameDay: '[Bi lɛrɛ] LT',\n            nextDay: '[Sini lɛrɛ] LT',\n            nextWeek: 'dddd [don lɛrɛ] LT',\n            lastDay: '[Kunu lɛrɛ] LT',\n            lastWeek: 'dddd [tɛmɛnen lɛrɛ] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s kɔnɔ',\n            past: 'a bɛ %s bɔ',\n            s: 'sanga dama dama',\n            ss: 'sekondi %d',\n            m: 'miniti kelen',\n            mm: 'miniti %d',\n            h: 'lɛrɛ kelen',\n            hh: 'lɛrɛ %d',\n            d: 'tile kelen',\n            dd: 'tile %d',\n            M: 'kalo kelen',\n            MM: 'kalo %d',\n            y: 'san kelen',\n            yy: 'san %d',\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return bm;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bengali (Bangladesh) [bn-bd]\n//! author : Asraf Hossain Patoary : https://github.com/ashwoolford\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            1: '১',\n            2: '২',\n            3: '৩',\n            4: '৪',\n            5: '৫',\n            6: '৬',\n            7: '৭',\n            8: '৮',\n            9: '৯',\n            0: '০',\n        },\n        numberMap = {\n            '১': '1',\n            '২': '2',\n            '৩': '3',\n            '৪': '4',\n            '৫': '5',\n            '৬': '6',\n            '৭': '7',\n            '৮': '8',\n            '৯': '9',\n            '০': '0',\n        };\n\n    var bnBd = moment.defineLocale('bn-bd', {\n        months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split(\n            '_'\n        ),\n        monthsShort: 'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split(\n            '_'\n        ),\n        weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split(\n            '_'\n        ),\n        weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),\n        weekdaysMin: 'রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি'.split('_'),\n        longDateFormat: {\n            LT: 'A h:mm সময়',\n            LTS: 'A h:mm:ss সময়',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY, A h:mm সময়',\n            LLLL: 'dddd, D MMMM YYYY, A h:mm সময়',\n        },\n        calendar: {\n            sameDay: '[আজ] LT',\n            nextDay: '[আগামীকাল] LT',\n            nextWeek: 'dddd, LT',\n            lastDay: '[গতকাল] LT',\n            lastWeek: '[গত] dddd, LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s পরে',\n            past: '%s আগে',\n            s: 'কয়েক সেকেন্ড',\n            ss: '%d সেকেন্ড',\n            m: 'এক মিনিট',\n            mm: '%d মিনিট',\n            h: 'এক ঘন্টা',\n            hh: '%d ঘন্টা',\n            d: 'এক দিন',\n            dd: '%d দিন',\n            M: 'এক মাস',\n            MM: '%d মাস',\n            y: 'এক বছর',\n            yy: '%d বছর',\n        },\n        preparse: function (string) {\n            return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n\n        meridiemParse: /রাত|ভোর|সকাল|দুপুর|বিকাল|সন্ধ্যা|রাত/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'রাত') {\n                return hour < 4 ? hour : hour + 12;\n            } else if (meridiem === 'ভোর') {\n                return hour;\n            } else if (meridiem === 'সকাল') {\n                return hour;\n            } else if (meridiem === 'দুপুর') {\n                return hour >= 3 ? hour : hour + 12;\n            } else if (meridiem === 'বিকাল') {\n                return hour + 12;\n            } else if (meridiem === 'সন্ধ্যা') {\n                return hour + 12;\n            }\n        },\n\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'রাত';\n            } else if (hour < 6) {\n                return 'ভোর';\n            } else if (hour < 12) {\n                return 'সকাল';\n            } else if (hour < 15) {\n                return 'দুপুর';\n            } else if (hour < 18) {\n                return 'বিকাল';\n            } else if (hour < 20) {\n                return 'সন্ধ্যা';\n            } else {\n                return 'রাত';\n            }\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 6th is the first week of the year.\n        },\n    });\n\n    return bnBd;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bengali [bn]\n//! author : Kaushik Gandhi : https://github.com/kaushikgandhi\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            1: '১',\n            2: '২',\n            3: '৩',\n            4: '৪',\n            5: '৫',\n            6: '৬',\n            7: '৭',\n            8: '৮',\n            9: '৯',\n            0: '০',\n        },\n        numberMap = {\n            '১': '1',\n            '২': '2',\n            '৩': '3',\n            '৪': '4',\n            '৫': '5',\n            '৬': '6',\n            '৭': '7',\n            '৮': '8',\n            '৯': '9',\n            '০': '0',\n        };\n\n    var bn = moment.defineLocale('bn', {\n        months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split(\n            '_'\n        ),\n        monthsShort: 'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split(\n            '_'\n        ),\n        weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split(\n            '_'\n        ),\n        weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),\n        weekdaysMin: 'রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি'.split('_'),\n        longDateFormat: {\n            LT: 'A h:mm সময়',\n            LTS: 'A h:mm:ss সময়',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY, A h:mm সময়',\n            LLLL: 'dddd, D MMMM YYYY, A h:mm সময়',\n        },\n        calendar: {\n            sameDay: '[আজ] LT',\n            nextDay: '[আগামীকাল] LT',\n            nextWeek: 'dddd, LT',\n            lastDay: '[গতকাল] LT',\n            lastWeek: '[গত] dddd, LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s পরে',\n            past: '%s আগে',\n            s: 'কয়েক সেকেন্ড',\n            ss: '%d সেকেন্ড',\n            m: 'এক মিনিট',\n            mm: '%d মিনিট',\n            h: 'এক ঘন্টা',\n            hh: '%d ঘন্টা',\n            d: 'এক দিন',\n            dd: '%d দিন',\n            M: 'এক মাস',\n            MM: '%d মাস',\n            y: 'এক বছর',\n            yy: '%d বছর',\n        },\n        preparse: function (string) {\n            return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        meridiemParse: /রাত|সকাল|দুপুর|বিকাল|রাত/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (\n                (meridiem === 'রাত' && hour >= 4) ||\n                (meridiem === 'দুপুর' && hour < 5) ||\n                meridiem === 'বিকাল'\n            ) {\n                return hour + 12;\n            } else {\n                return hour;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'রাত';\n            } else if (hour < 10) {\n                return 'সকাল';\n            } else if (hour < 17) {\n                return 'দুপুর';\n            } else if (hour < 20) {\n                return 'বিকাল';\n            } else {\n                return 'রাত';\n            }\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 6th is the first week of the year.\n        },\n    });\n\n    return bn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tibetan [bo]\n//! author : Thupten N. Chakrishar : https://github.com/vajradog\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            1: '༡',\n            2: '༢',\n            3: '༣',\n            4: '༤',\n            5: '༥',\n            6: '༦',\n            7: '༧',\n            8: '༨',\n            9: '༩',\n            0: '༠',\n        },\n        numberMap = {\n            '༡': '1',\n            '༢': '2',\n            '༣': '3',\n            '༤': '4',\n            '༥': '5',\n            '༦': '6',\n            '༧': '7',\n            '༨': '8',\n            '༩': '9',\n            '༠': '0',\n        };\n\n    var bo = moment.defineLocale('bo', {\n        months: 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split(\n            '_'\n        ),\n        monthsShort: 'ཟླ་1_ཟླ་2_ཟླ་3_ཟླ་4_ཟླ་5_ཟླ་6_ཟླ་7_ཟླ་8_ཟླ་9_ཟླ་10_ཟླ་11_ཟླ་12'.split(\n            '_'\n        ),\n        monthsShortRegex: /^(ཟླ་\\d{1,2})/,\n        monthsParseExact: true,\n        weekdays: 'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split(\n            '_'\n        ),\n        weekdaysShort: 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split(\n            '_'\n        ),\n        weekdaysMin: 'ཉི_ཟླ_མིག_ལྷག_ཕུར_སངས_སྤེན'.split('_'),\n        longDateFormat: {\n            LT: 'A h:mm',\n            LTS: 'A h:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY, A h:mm',\n            LLLL: 'dddd, D MMMM YYYY, A h:mm',\n        },\n        calendar: {\n            sameDay: '[དི་རིང] LT',\n            nextDay: '[སང་ཉིན] LT',\n            nextWeek: '[བདུན་ཕྲག་རྗེས་མ], LT',\n            lastDay: '[ཁ་སང] LT',\n            lastWeek: '[བདུན་ཕྲག་མཐའ་མ] dddd, LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s ལ་',\n            past: '%s སྔན་ལ',\n            s: 'ལམ་སང',\n            ss: '%d སྐར་ཆ།',\n            m: 'སྐར་མ་གཅིག',\n            mm: '%d སྐར་མ',\n            h: 'ཆུ་ཚོད་གཅིག',\n            hh: '%d ཆུ་ཚོད',\n            d: 'ཉིན་གཅིག',\n            dd: '%d ཉིན་',\n            M: 'ཟླ་བ་གཅིག',\n            MM: '%d ཟླ་བ',\n            y: 'ལོ་གཅིག',\n            yy: '%d ལོ',\n        },\n        preparse: function (string) {\n            return string.replace(/[༡༢༣༤༥༦༧༨༩༠]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        meridiemParse: /མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (\n                (meridiem === 'མཚན་མོ' && hour >= 4) ||\n                (meridiem === 'ཉིན་གུང' && hour < 5) ||\n                meridiem === 'དགོང་དག'\n            ) {\n                return hour + 12;\n            } else {\n                return hour;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'མཚན་མོ';\n            } else if (hour < 10) {\n                return 'ཞོགས་ཀས';\n            } else if (hour < 17) {\n                return 'ཉིན་གུང';\n            } else if (hour < 20) {\n                return 'དགོང་དག';\n            } else {\n                return 'མཚན་མོ';\n            }\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 6th is the first week of the year.\n        },\n    });\n\n    return bo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Breton [br]\n//! author : Jean-Baptiste Le Duigou : https://github.com/jbleduigou\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function relativeTimeWithMutation(number, withoutSuffix, key) {\n        var format = {\n            mm: 'munutenn',\n            MM: 'miz',\n            dd: 'devezh',\n        };\n        return number + ' ' + mutation(format[key], number);\n    }\n    function specialMutationForYears(number) {\n        switch (lastNumber(number)) {\n            case 1:\n            case 3:\n            case 4:\n            case 5:\n            case 9:\n                return number + ' bloaz';\n            default:\n                return number + ' vloaz';\n        }\n    }\n    function lastNumber(number) {\n        if (number > 9) {\n            return lastNumber(number % 10);\n        }\n        return number;\n    }\n    function mutation(text, number) {\n        if (number === 2) {\n            return softMutation(text);\n        }\n        return text;\n    }\n    function softMutation(text) {\n        var mutationTable = {\n            m: 'v',\n            b: 'v',\n            d: 'z',\n        };\n        if (mutationTable[text.charAt(0)] === undefined) {\n            return text;\n        }\n        return mutationTable[text.charAt(0)] + text.substring(1);\n    }\n\n    var monthsParse = [\n            /^gen/i,\n            /^c[ʼ\\']hwe/i,\n            /^meu/i,\n            /^ebr/i,\n            /^mae/i,\n            /^(mez|eve)/i,\n            /^gou/i,\n            /^eos/i,\n            /^gwe/i,\n            /^her/i,\n            /^du/i,\n            /^ker/i,\n        ],\n        monthsRegex = /^(genver|c[ʼ\\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu|gen|c[ʼ\\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,\n        monthsStrictRegex = /^(genver|c[ʼ\\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu)/i,\n        monthsShortStrictRegex = /^(gen|c[ʼ\\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,\n        fullWeekdaysParse = [\n            /^sul/i,\n            /^lun/i,\n            /^meurzh/i,\n            /^merc[ʼ\\']her/i,\n            /^yaou/i,\n            /^gwener/i,\n            /^sadorn/i,\n        ],\n        shortWeekdaysParse = [\n            /^Sul/i,\n            /^Lun/i,\n            /^Meu/i,\n            /^Mer/i,\n            /^Yao/i,\n            /^Gwe/i,\n            /^Sad/i,\n        ],\n        minWeekdaysParse = [\n            /^Su/i,\n            /^Lu/i,\n            /^Me([^r]|$)/i,\n            /^Mer/i,\n            /^Ya/i,\n            /^Gw/i,\n            /^Sa/i,\n        ];\n\n    var br = moment.defineLocale('br', {\n        months: 'Genver_Cʼhwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu'.split(\n            '_'\n        ),\n        monthsShort: 'Gen_Cʼhwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker'.split('_'),\n        weekdays: 'Sul_Lun_Meurzh_Mercʼher_Yaou_Gwener_Sadorn'.split('_'),\n        weekdaysShort: 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'),\n        weekdaysMin: 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'),\n        weekdaysParse: minWeekdaysParse,\n        fullWeekdaysParse: fullWeekdaysParse,\n        shortWeekdaysParse: shortWeekdaysParse,\n        minWeekdaysParse: minWeekdaysParse,\n\n        monthsRegex: monthsRegex,\n        monthsShortRegex: monthsRegex,\n        monthsStrictRegex: monthsStrictRegex,\n        monthsShortStrictRegex: monthsShortStrictRegex,\n        monthsParse: monthsParse,\n        longMonthsParse: monthsParse,\n        shortMonthsParse: monthsParse,\n\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D [a viz] MMMM YYYY',\n            LLL: 'D [a viz] MMMM YYYY HH:mm',\n            LLLL: 'dddd, D [a viz] MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Hiziv da] LT',\n            nextDay: '[Warcʼhoazh da] LT',\n            nextWeek: 'dddd [da] LT',\n            lastDay: '[Decʼh da] LT',\n            lastWeek: 'dddd [paset da] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'a-benn %s',\n            past: '%s ʼzo',\n            s: 'un nebeud segondennoù',\n            ss: '%d eilenn',\n            m: 'ur vunutenn',\n            mm: relativeTimeWithMutation,\n            h: 'un eur',\n            hh: '%d eur',\n            d: 'un devezh',\n            dd: relativeTimeWithMutation,\n            M: 'ur miz',\n            MM: relativeTimeWithMutation,\n            y: 'ur bloaz',\n            yy: specialMutationForYears,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(añ|vet)/,\n        ordinal: function (number) {\n            var output = number === 1 ? 'añ' : 'vet';\n            return number + output;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n        meridiemParse: /a.m.|g.m./, // goude merenn | a-raok merenn\n        isPM: function (token) {\n            return token === 'g.m.';\n        },\n        meridiem: function (hour, minute, isLower) {\n            return hour < 12 ? 'a.m.' : 'g.m.';\n        },\n    });\n\n    return br;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bosnian [bs]\n//! author : Nedim Cholich : https://github.com/frontyard\n//! based on (hr) translation by Bojan Marković\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function translate(number, withoutSuffix, key) {\n        var result = number + ' ';\n        switch (key) {\n            case 'ss':\n                if (number === 1) {\n                    result += 'sekunda';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'sekunde';\n                } else {\n                    result += 'sekundi';\n                }\n                return result;\n            case 'm':\n                return withoutSuffix ? 'jedna minuta' : 'jedne minute';\n            case 'mm':\n                if (number === 1) {\n                    result += 'minuta';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'minute';\n                } else {\n                    result += 'minuta';\n                }\n                return result;\n            case 'h':\n                return withoutSuffix ? 'jedan sat' : 'jednog sata';\n            case 'hh':\n                if (number === 1) {\n                    result += 'sat';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'sata';\n                } else {\n                    result += 'sati';\n                }\n                return result;\n            case 'dd':\n                if (number === 1) {\n                    result += 'dan';\n                } else {\n                    result += 'dana';\n                }\n                return result;\n            case 'MM':\n                if (number === 1) {\n                    result += 'mjesec';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'mjeseca';\n                } else {\n                    result += 'mjeseci';\n                }\n                return result;\n            case 'yy':\n                if (number === 1) {\n                    result += 'godina';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'godine';\n                } else {\n                    result += 'godina';\n                }\n                return result;\n        }\n    }\n\n    var bs = moment.defineLocale('bs', {\n        months: 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split(\n            '_'\n        ),\n        monthsShort: 'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(\n            '_'\n        ),\n        weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n        weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY H:mm',\n            LLLL: 'dddd, D. MMMM YYYY H:mm',\n        },\n        calendar: {\n            sameDay: '[danas u] LT',\n            nextDay: '[sutra u] LT',\n            nextWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[u] [nedjelju] [u] LT';\n                    case 3:\n                        return '[u] [srijedu] [u] LT';\n                    case 6:\n                        return '[u] [subotu] [u] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[u] dddd [u] LT';\n                }\n            },\n            lastDay: '[jučer u] LT',\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                    case 3:\n                        return '[prošlu] dddd [u] LT';\n                    case 6:\n                        return '[prošle] [subote] [u] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[prošli] dddd [u] LT';\n                }\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'za %s',\n            past: 'prije %s',\n            s: 'par sekundi',\n            ss: translate,\n            m: translate,\n            mm: translate,\n            h: translate,\n            hh: translate,\n            d: 'dan',\n            dd: translate,\n            M: 'mjesec',\n            MM: translate,\n            y: 'godinu',\n            yy: translate,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return bs;\n\n})));\n","//! moment.js locale configuration\n//! locale : Catalan [ca]\n//! author : Juan G. Hurtado : https://github.com/juanghurtado\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var ca = moment.defineLocale('ca', {\n        months: {\n            standalone: 'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split(\n                '_'\n            ),\n            format: \"de gener_de febrer_de març_d'abril_de maig_de juny_de juliol_d'agost_de setembre_d'octubre_de novembre_de desembre\".split(\n                '_'\n            ),\n            isFormat: /D[oD]?(\\s)+MMMM/,\n        },\n        monthsShort: 'gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split(\n            '_'\n        ),\n        weekdaysShort: 'dg._dl._dt._dc._dj._dv._ds.'.split('_'),\n        weekdaysMin: 'dg_dl_dt_dc_dj_dv_ds'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM [de] YYYY',\n            ll: 'D MMM YYYY',\n            LLL: 'D MMMM [de] YYYY [a les] H:mm',\n            lll: 'D MMM YYYY, H:mm',\n            LLLL: 'dddd D MMMM [de] YYYY [a les] H:mm',\n            llll: 'ddd D MMM YYYY, H:mm',\n        },\n        calendar: {\n            sameDay: function () {\n                return '[avui a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n            },\n            nextDay: function () {\n                return '[demà a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n            },\n            nextWeek: function () {\n                return 'dddd [a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n            },\n            lastDay: function () {\n                return '[ahir a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n            },\n            lastWeek: function () {\n                return (\n                    '[el] dddd [passat a ' +\n                    (this.hours() !== 1 ? 'les' : 'la') +\n                    '] LT'\n                );\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: \"d'aquí %s\",\n            past: 'fa %s',\n            s: 'uns segons',\n            ss: '%d segons',\n            m: 'un minut',\n            mm: '%d minuts',\n            h: 'una hora',\n            hh: '%d hores',\n            d: 'un dia',\n            dd: '%d dies',\n            M: 'un mes',\n            MM: '%d mesos',\n            y: 'un any',\n            yy: '%d anys',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(r|n|t|è|a)/,\n        ordinal: function (number, period) {\n            var output =\n                number === 1\n                    ? 'r'\n                    : number === 2\n                    ? 'n'\n                    : number === 3\n                    ? 'r'\n                    : number === 4\n                    ? 't'\n                    : 'è';\n            if (period === 'w' || period === 'W') {\n                output = 'a';\n            }\n            return number + output;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return ca;\n\n})));\n","//! moment.js locale configuration\n//! locale : Czech [cs]\n//! author : petrbela : https://github.com/petrbela\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var months = 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split(\n            '_'\n        ),\n        monthsShort = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_'),\n        monthsParse = [\n            /^led/i,\n            /^úno/i,\n            /^bře/i,\n            /^dub/i,\n            /^kvě/i,\n            /^(čvn|červen$|června)/i,\n            /^(čvc|červenec|července)/i,\n            /^srp/i,\n            /^zář/i,\n            /^říj/i,\n            /^lis/i,\n            /^pro/i,\n        ],\n        // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.\n        // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.\n        monthsRegex = /^(leden|únor|březen|duben|květen|červenec|července|červen|června|srpen|září|říjen|listopad|prosinec|led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i;\n\n    function plural(n) {\n        return n > 1 && n < 5 && ~~(n / 10) !== 1;\n    }\n    function translate(number, withoutSuffix, key, isFuture) {\n        var result = number + ' ';\n        switch (key) {\n            case 's': // a few seconds / in a few seconds / a few seconds ago\n                return withoutSuffix || isFuture ? 'pár sekund' : 'pár sekundami';\n            case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'sekundy' : 'sekund');\n                } else {\n                    return result + 'sekundami';\n                }\n            case 'm': // a minute / in a minute / a minute ago\n                return withoutSuffix ? 'minuta' : isFuture ? 'minutu' : 'minutou';\n            case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'minuty' : 'minut');\n                } else {\n                    return result + 'minutami';\n                }\n            case 'h': // an hour / in an hour / an hour ago\n                return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';\n            case 'hh': // 9 hours / in 9 hours / 9 hours ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'hodiny' : 'hodin');\n                } else {\n                    return result + 'hodinami';\n                }\n            case 'd': // a day / in a day / a day ago\n                return withoutSuffix || isFuture ? 'den' : 'dnem';\n            case 'dd': // 9 days / in 9 days / 9 days ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'dny' : 'dní');\n                } else {\n                    return result + 'dny';\n                }\n            case 'M': // a month / in a month / a month ago\n                return withoutSuffix || isFuture ? 'měsíc' : 'měsícem';\n            case 'MM': // 9 months / in 9 months / 9 months ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'měsíce' : 'měsíců');\n                } else {\n                    return result + 'měsíci';\n                }\n            case 'y': // a year / in a year / a year ago\n                return withoutSuffix || isFuture ? 'rok' : 'rokem';\n            case 'yy': // 9 years / in 9 years / 9 years ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'roky' : 'let');\n                } else {\n                    return result + 'lety';\n                }\n        }\n    }\n\n    var cs = moment.defineLocale('cs', {\n        months: months,\n        monthsShort: monthsShort,\n        monthsRegex: monthsRegex,\n        monthsShortRegex: monthsRegex,\n        // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.\n        // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.\n        monthsStrictRegex: /^(leden|ledna|února|únor|březen|března|duben|dubna|květen|května|červenec|července|červen|června|srpen|srpna|září|říjen|října|listopadu|listopad|prosinec|prosince)/i,\n        monthsShortStrictRegex: /^(led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i,\n        monthsParse: monthsParse,\n        longMonthsParse: monthsParse,\n        shortMonthsParse: monthsParse,\n        weekdays: 'neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota'.split('_'),\n        weekdaysShort: 'ne_po_út_st_čt_pá_so'.split('_'),\n        weekdaysMin: 'ne_po_út_st_čt_pá_so'.split('_'),\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY H:mm',\n            LLLL: 'dddd D. MMMM YYYY H:mm',\n            l: 'D. M. YYYY',\n        },\n        calendar: {\n            sameDay: '[dnes v] LT',\n            nextDay: '[zítra v] LT',\n            nextWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[v neděli v] LT';\n                    case 1:\n                    case 2:\n                        return '[v] dddd [v] LT';\n                    case 3:\n                        return '[ve středu v] LT';\n                    case 4:\n                        return '[ve čtvrtek v] LT';\n                    case 5:\n                        return '[v pátek v] LT';\n                    case 6:\n                        return '[v sobotu v] LT';\n                }\n            },\n            lastDay: '[včera v] LT',\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[minulou neděli v] LT';\n                    case 1:\n                    case 2:\n                        return '[minulé] dddd [v] LT';\n                    case 3:\n                        return '[minulou středu v] LT';\n                    case 4:\n                    case 5:\n                        return '[minulý] dddd [v] LT';\n                    case 6:\n                        return '[minulou sobotu v] LT';\n                }\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'za %s',\n            past: 'před %s',\n            s: translate,\n            ss: translate,\n            m: translate,\n            mm: translate,\n            h: translate,\n            hh: translate,\n            d: translate,\n            dd: translate,\n            M: translate,\n            MM: translate,\n            y: translate,\n            yy: translate,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return cs;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chuvash [cv]\n//! author : Anatoly Mironov : https://github.com/mirontoli\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var cv = moment.defineLocale('cv', {\n        months: 'кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав'.split(\n            '_'\n        ),\n        monthsShort: 'кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш'.split('_'),\n        weekdays: 'вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун'.split(\n            '_'\n        ),\n        weekdaysShort: 'выр_тун_ытл_юн_кӗҫ_эрн_шӑм'.split('_'),\n        weekdaysMin: 'вр_тн_ыт_юн_кҫ_эр_шм'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD-MM-YYYY',\n            LL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]',\n            LLL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',\n            LLLL: 'dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',\n        },\n        calendar: {\n            sameDay: '[Паян] LT [сехетре]',\n            nextDay: '[Ыран] LT [сехетре]',\n            lastDay: '[Ӗнер] LT [сехетре]',\n            nextWeek: '[Ҫитес] dddd LT [сехетре]',\n            lastWeek: '[Иртнӗ] dddd LT [сехетре]',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: function (output) {\n                var affix = /сехет$/i.exec(output)\n                    ? 'рен'\n                    : /ҫул$/i.exec(output)\n                    ? 'тан'\n                    : 'ран';\n                return output + affix;\n            },\n            past: '%s каялла',\n            s: 'пӗр-ик ҫеккунт',\n            ss: '%d ҫеккунт',\n            m: 'пӗр минут',\n            mm: '%d минут',\n            h: 'пӗр сехет',\n            hh: '%d сехет',\n            d: 'пӗр кун',\n            dd: '%d кун',\n            M: 'пӗр уйӑх',\n            MM: '%d уйӑх',\n            y: 'пӗр ҫул',\n            yy: '%d ҫул',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-мӗш/,\n        ordinal: '%d-мӗш',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return cv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Welsh [cy]\n//! author : Robert Allen : https://github.com/robgallen\n//! author : https://github.com/ryangreaves\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var cy = moment.defineLocale('cy', {\n        months: 'Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr'.split(\n            '_'\n        ),\n        monthsShort: 'Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag'.split(\n            '_'\n        ),\n        weekdays: 'Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn'.split(\n            '_'\n        ),\n        weekdaysShort: 'Sul_Llun_Maw_Mer_Iau_Gwe_Sad'.split('_'),\n        weekdaysMin: 'Su_Ll_Ma_Me_Ia_Gw_Sa'.split('_'),\n        weekdaysParseExact: true,\n        // time formats are the same as en-gb\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Heddiw am] LT',\n            nextDay: '[Yfory am] LT',\n            nextWeek: 'dddd [am] LT',\n            lastDay: '[Ddoe am] LT',\n            lastWeek: 'dddd [diwethaf am] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'mewn %s',\n            past: '%s yn ôl',\n            s: 'ychydig eiliadau',\n            ss: '%d eiliad',\n            m: 'munud',\n            mm: '%d munud',\n            h: 'awr',\n            hh: '%d awr',\n            d: 'diwrnod',\n            dd: '%d diwrnod',\n            M: 'mis',\n            MM: '%d mis',\n            y: 'blwyddyn',\n            yy: '%d flynedd',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,\n        // traditional ordinal numbers above 31 are not commonly used in colloquial Welsh\n        ordinal: function (number) {\n            var b = number,\n                output = '',\n                lookup = [\n                    '',\n                    'af',\n                    'il',\n                    'ydd',\n                    'ydd',\n                    'ed',\n                    'ed',\n                    'ed',\n                    'fed',\n                    'fed',\n                    'fed', // 1af to 10fed\n                    'eg',\n                    'fed',\n                    'eg',\n                    'eg',\n                    'fed',\n                    'eg',\n                    'eg',\n                    'fed',\n                    'eg',\n                    'fed', // 11eg to 20fed\n                ];\n            if (b > 20) {\n                if (b === 40 || b === 50 || b === 60 || b === 80 || b === 100) {\n                    output = 'fed'; // not 30ain, 70ain or 90ain\n                } else {\n                    output = 'ain';\n                }\n            } else if (b > 0) {\n                output = lookup[b];\n            }\n            return number + output;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return cy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Danish [da]\n//! author : Ulrik Nielsen : https://github.com/mrbase\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var da = moment.defineLocale('da', {\n        months: 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split(\n            '_'\n        ),\n        monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n        weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\n        weekdaysShort: 'søn_man_tir_ons_tor_fre_lør'.split('_'),\n        weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY HH:mm',\n            LLLL: 'dddd [d.] D. MMMM YYYY [kl.] HH:mm',\n        },\n        calendar: {\n            sameDay: '[i dag kl.] LT',\n            nextDay: '[i morgen kl.] LT',\n            nextWeek: 'på dddd [kl.] LT',\n            lastDay: '[i går kl.] LT',\n            lastWeek: '[i] dddd[s kl.] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'om %s',\n            past: '%s siden',\n            s: 'få sekunder',\n            ss: '%d sekunder',\n            m: 'et minut',\n            mm: '%d minutter',\n            h: 'en time',\n            hh: '%d timer',\n            d: 'en dag',\n            dd: '%d dage',\n            M: 'en måned',\n            MM: '%d måneder',\n            y: 'et år',\n            yy: '%d år',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return da;\n\n})));\n","//! moment.js locale configuration\n//! locale : German (Austria) [de-at]\n//! author : lluchs : https://github.com/lluchs\n//! author: Menelion Elensúle: https://github.com/Oire\n//! author : Martin Groller : https://github.com/MadMG\n//! author : Mikolaj Dadela : https://github.com/mik01aj\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function processRelativeTime(number, withoutSuffix, key, isFuture) {\n        var format = {\n            m: ['eine Minute', 'einer Minute'],\n            h: ['eine Stunde', 'einer Stunde'],\n            d: ['ein Tag', 'einem Tag'],\n            dd: [number + ' Tage', number + ' Tagen'],\n            w: ['eine Woche', 'einer Woche'],\n            M: ['ein Monat', 'einem Monat'],\n            MM: [number + ' Monate', number + ' Monaten'],\n            y: ['ein Jahr', 'einem Jahr'],\n            yy: [number + ' Jahre', number + ' Jahren'],\n        };\n        return withoutSuffix ? format[key][0] : format[key][1];\n    }\n\n    var deAt = moment.defineLocale('de-at', {\n        months: 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n            '_'\n        ),\n        monthsShort: 'Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n            '_'\n        ),\n        weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n        weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY HH:mm',\n            LLLL: 'dddd, D. MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[heute um] LT [Uhr]',\n            sameElse: 'L',\n            nextDay: '[morgen um] LT [Uhr]',\n            nextWeek: 'dddd [um] LT [Uhr]',\n            lastDay: '[gestern um] LT [Uhr]',\n            lastWeek: '[letzten] dddd [um] LT [Uhr]',\n        },\n        relativeTime: {\n            future: 'in %s',\n            past: 'vor %s',\n            s: 'ein paar Sekunden',\n            ss: '%d Sekunden',\n            m: processRelativeTime,\n            mm: '%d Minuten',\n            h: processRelativeTime,\n            hh: '%d Stunden',\n            d: processRelativeTime,\n            dd: processRelativeTime,\n            w: processRelativeTime,\n            ww: '%d Wochen',\n            M: processRelativeTime,\n            MM: processRelativeTime,\n            y: processRelativeTime,\n            yy: processRelativeTime,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return deAt;\n\n})));\n","//! moment.js locale configuration\n//! locale : German (Switzerland) [de-ch]\n//! author : sschueller : https://github.com/sschueller\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function processRelativeTime(number, withoutSuffix, key, isFuture) {\n        var format = {\n            m: ['eine Minute', 'einer Minute'],\n            h: ['eine Stunde', 'einer Stunde'],\n            d: ['ein Tag', 'einem Tag'],\n            dd: [number + ' Tage', number + ' Tagen'],\n            w: ['eine Woche', 'einer Woche'],\n            M: ['ein Monat', 'einem Monat'],\n            MM: [number + ' Monate', number + ' Monaten'],\n            y: ['ein Jahr', 'einem Jahr'],\n            yy: [number + ' Jahre', number + ' Jahren'],\n        };\n        return withoutSuffix ? format[key][0] : format[key][1];\n    }\n\n    var deCh = moment.defineLocale('de-ch', {\n        months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n            '_'\n        ),\n        monthsShort: 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n            '_'\n        ),\n        weekdaysShort: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n        weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY HH:mm',\n            LLLL: 'dddd, D. MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[heute um] LT [Uhr]',\n            sameElse: 'L',\n            nextDay: '[morgen um] LT [Uhr]',\n            nextWeek: 'dddd [um] LT [Uhr]',\n            lastDay: '[gestern um] LT [Uhr]',\n            lastWeek: '[letzten] dddd [um] LT [Uhr]',\n        },\n        relativeTime: {\n            future: 'in %s',\n            past: 'vor %s',\n            s: 'ein paar Sekunden',\n            ss: '%d Sekunden',\n            m: processRelativeTime,\n            mm: '%d Minuten',\n            h: processRelativeTime,\n            hh: '%d Stunden',\n            d: processRelativeTime,\n            dd: processRelativeTime,\n            w: processRelativeTime,\n            ww: '%d Wochen',\n            M: processRelativeTime,\n            MM: processRelativeTime,\n            y: processRelativeTime,\n            yy: processRelativeTime,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return deCh;\n\n})));\n","//! moment.js locale configuration\n//! locale : German [de]\n//! author : lluchs : https://github.com/lluchs\n//! author: Menelion Elensúle: https://github.com/Oire\n//! author : Mikolaj Dadela : https://github.com/mik01aj\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function processRelativeTime(number, withoutSuffix, key, isFuture) {\n        var format = {\n            m: ['eine Minute', 'einer Minute'],\n            h: ['eine Stunde', 'einer Stunde'],\n            d: ['ein Tag', 'einem Tag'],\n            dd: [number + ' Tage', number + ' Tagen'],\n            w: ['eine Woche', 'einer Woche'],\n            M: ['ein Monat', 'einem Monat'],\n            MM: [number + ' Monate', number + ' Monaten'],\n            y: ['ein Jahr', 'einem Jahr'],\n            yy: [number + ' Jahre', number + ' Jahren'],\n        };\n        return withoutSuffix ? format[key][0] : format[key][1];\n    }\n\n    var de = moment.defineLocale('de', {\n        months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n            '_'\n        ),\n        monthsShort: 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n            '_'\n        ),\n        weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n        weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY HH:mm',\n            LLLL: 'dddd, D. MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[heute um] LT [Uhr]',\n            sameElse: 'L',\n            nextDay: '[morgen um] LT [Uhr]',\n            nextWeek: 'dddd [um] LT [Uhr]',\n            lastDay: '[gestern um] LT [Uhr]',\n            lastWeek: '[letzten] dddd [um] LT [Uhr]',\n        },\n        relativeTime: {\n            future: 'in %s',\n            past: 'vor %s',\n            s: 'ein paar Sekunden',\n            ss: '%d Sekunden',\n            m: processRelativeTime,\n            mm: '%d Minuten',\n            h: processRelativeTime,\n            hh: '%d Stunden',\n            d: processRelativeTime,\n            dd: processRelativeTime,\n            w: processRelativeTime,\n            ww: '%d Wochen',\n            M: processRelativeTime,\n            MM: processRelativeTime,\n            y: processRelativeTime,\n            yy: processRelativeTime,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return de;\n\n})));\n","//! moment.js locale configuration\n//! locale : Maldivian [dv]\n//! author : Jawish Hameed : https://github.com/jawish\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var months = [\n            'ޖެނުއަރީ',\n            'ފެބްރުއަރީ',\n            'މާރިޗު',\n            'އޭޕްރީލު',\n            'މޭ',\n            'ޖޫން',\n            'ޖުލައި',\n            'އޯގަސްޓު',\n            'ސެޕްޓެމްބަރު',\n            'އޮކްޓޯބަރު',\n            'ނޮވެމްބަރު',\n            'ޑިސެމްބަރު',\n        ],\n        weekdays = [\n            'އާދިއްތަ',\n            'ހޯމަ',\n            'އަންގާރަ',\n            'ބުދަ',\n            'ބުރާސްފަތި',\n            'ހުކުރު',\n            'ހޮނިހިރު',\n        ];\n\n    var dv = moment.defineLocale('dv', {\n        months: months,\n        monthsShort: months,\n        weekdays: weekdays,\n        weekdaysShort: weekdays,\n        weekdaysMin: 'އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'D/M/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        meridiemParse: /މކ|މފ/,\n        isPM: function (input) {\n            return 'މފ' === input;\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'މކ';\n            } else {\n                return 'މފ';\n            }\n        },\n        calendar: {\n            sameDay: '[މިއަދު] LT',\n            nextDay: '[މާދަމާ] LT',\n            nextWeek: 'dddd LT',\n            lastDay: '[އިއްޔެ] LT',\n            lastWeek: '[ފާއިތުވި] dddd LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'ތެރޭގައި %s',\n            past: 'ކުރިން %s',\n            s: 'ސިކުންތުކޮޅެއް',\n            ss: 'd% ސިކުންތު',\n            m: 'މިނިޓެއް',\n            mm: 'މިނިޓު %d',\n            h: 'ގަޑިއިރެއް',\n            hh: 'ގަޑިއިރު %d',\n            d: 'ދުވަހެއް',\n            dd: 'ދުވަސް %d',\n            M: 'މަހެއް',\n            MM: 'މަސް %d',\n            y: 'އަހަރެއް',\n            yy: 'އަހަރު %d',\n        },\n        preparse: function (string) {\n            return string.replace(/،/g, ',');\n        },\n        postformat: function (string) {\n            return string.replace(/,/g, '،');\n        },\n        week: {\n            dow: 7, // Sunday is the first day of the week.\n            doy: 12, // The week that contains Jan 12th is the first week of the year.\n        },\n    });\n\n    return dv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Greek [el]\n//! author : Aggelos Karalias : https://github.com/mehiel\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function isFunction(input) {\n        return (\n            (typeof Function !== 'undefined' && input instanceof Function) ||\n            Object.prototype.toString.call(input) === '[object Function]'\n        );\n    }\n\n    var el = moment.defineLocale('el', {\n        monthsNominativeEl: 'Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος'.split(\n            '_'\n        ),\n        monthsGenitiveEl: 'Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου'.split(\n            '_'\n        ),\n        months: function (momentToFormat, format) {\n            if (!momentToFormat) {\n                return this._monthsNominativeEl;\n            } else if (\n                typeof format === 'string' &&\n                /D/.test(format.substring(0, format.indexOf('MMMM')))\n            ) {\n                // if there is a day number before 'MMMM'\n                return this._monthsGenitiveEl[momentToFormat.month()];\n            } else {\n                return this._monthsNominativeEl[momentToFormat.month()];\n            }\n        },\n        monthsShort: 'Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ'.split('_'),\n        weekdays: 'Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο'.split(\n            '_'\n        ),\n        weekdaysShort: 'Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ'.split('_'),\n        weekdaysMin: 'Κυ_Δε_Τρ_Τε_Πε_Πα_Σα'.split('_'),\n        meridiem: function (hours, minutes, isLower) {\n            if (hours > 11) {\n                return isLower ? 'μμ' : 'ΜΜ';\n            } else {\n                return isLower ? 'πμ' : 'ΠΜ';\n            }\n        },\n        isPM: function (input) {\n            return (input + '').toLowerCase()[0] === 'μ';\n        },\n        meridiemParse: /[ΠΜ]\\.?Μ?\\.?/i,\n        longDateFormat: {\n            LT: 'h:mm A',\n            LTS: 'h:mm:ss A',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY h:mm A',\n            LLLL: 'dddd, D MMMM YYYY h:mm A',\n        },\n        calendarEl: {\n            sameDay: '[Σήμερα {}] LT',\n            nextDay: '[Αύριο {}] LT',\n            nextWeek: 'dddd [{}] LT',\n            lastDay: '[Χθες {}] LT',\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 6:\n                        return '[το προηγούμενο] dddd [{}] LT';\n                    default:\n                        return '[την προηγούμενη] dddd [{}] LT';\n                }\n            },\n            sameElse: 'L',\n        },\n        calendar: function (key, mom) {\n            var output = this._calendarEl[key],\n                hours = mom && mom.hours();\n            if (isFunction(output)) {\n                output = output.apply(mom);\n            }\n            return output.replace('{}', hours % 12 === 1 ? 'στη' : 'στις');\n        },\n        relativeTime: {\n            future: 'σε %s',\n            past: '%s πριν',\n            s: 'λίγα δευτερόλεπτα',\n            ss: '%d δευτερόλεπτα',\n            m: 'ένα λεπτό',\n            mm: '%d λεπτά',\n            h: 'μία ώρα',\n            hh: '%d ώρες',\n            d: 'μία μέρα',\n            dd: '%d μέρες',\n            M: 'ένας μήνας',\n            MM: '%d μήνες',\n            y: 'ένας χρόνος',\n            yy: '%d χρόνια',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}η/,\n        ordinal: '%dη',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4st is the first week of the year.\n        },\n    });\n\n    return el;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Australia) [en-au]\n//! author : Jared Morse : https://github.com/jarcoal\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var enAu = moment.defineLocale('en-au', {\n        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n            '_'\n        ),\n        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        longDateFormat: {\n            LT: 'h:mm A',\n            LTS: 'h:mm:ss A',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY h:mm A',\n            LLLL: 'dddd, D MMMM YYYY h:mm A',\n        },\n        calendar: {\n            sameDay: '[Today at] LT',\n            nextDay: '[Tomorrow at] LT',\n            nextWeek: 'dddd [at] LT',\n            lastDay: '[Yesterday at] LT',\n            lastWeek: '[Last] dddd [at] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'in %s',\n            past: '%s ago',\n            s: 'a few seconds',\n            ss: '%d seconds',\n            m: 'a minute',\n            mm: '%d minutes',\n            h: 'an hour',\n            hh: '%d hours',\n            d: 'a day',\n            dd: '%d days',\n            M: 'a month',\n            MM: '%d months',\n            y: 'a year',\n            yy: '%d years',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    ~~((number % 100) / 10) === 1\n                        ? 'th'\n                        : b === 1\n                        ? 'st'\n                        : b === 2\n                        ? 'nd'\n                        : b === 3\n                        ? 'rd'\n                        : 'th';\n            return number + output;\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return enAu;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Canada) [en-ca]\n//! author : Jonathan Abourbih : https://github.com/jonbca\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var enCa = moment.defineLocale('en-ca', {\n        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n            '_'\n        ),\n        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        longDateFormat: {\n            LT: 'h:mm A',\n            LTS: 'h:mm:ss A',\n            L: 'YYYY-MM-DD',\n            LL: 'MMMM D, YYYY',\n            LLL: 'MMMM D, YYYY h:mm A',\n            LLLL: 'dddd, MMMM D, YYYY h:mm A',\n        },\n        calendar: {\n            sameDay: '[Today at] LT',\n            nextDay: '[Tomorrow at] LT',\n            nextWeek: 'dddd [at] LT',\n            lastDay: '[Yesterday at] LT',\n            lastWeek: '[Last] dddd [at] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'in %s',\n            past: '%s ago',\n            s: 'a few seconds',\n            ss: '%d seconds',\n            m: 'a minute',\n            mm: '%d minutes',\n            h: 'an hour',\n            hh: '%d hours',\n            d: 'a day',\n            dd: '%d days',\n            M: 'a month',\n            MM: '%d months',\n            y: 'a year',\n            yy: '%d years',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    ~~((number % 100) / 10) === 1\n                        ? 'th'\n                        : b === 1\n                        ? 'st'\n                        : b === 2\n                        ? 'nd'\n                        : b === 3\n                        ? 'rd'\n                        : 'th';\n            return number + output;\n        },\n    });\n\n    return enCa;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (United Kingdom) [en-gb]\n//! author : Chris Gedrim : https://github.com/chrisgedrim\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var enGb = moment.defineLocale('en-gb', {\n        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n            '_'\n        ),\n        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Today at] LT',\n            nextDay: '[Tomorrow at] LT',\n            nextWeek: 'dddd [at] LT',\n            lastDay: '[Yesterday at] LT',\n            lastWeek: '[Last] dddd [at] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'in %s',\n            past: '%s ago',\n            s: 'a few seconds',\n            ss: '%d seconds',\n            m: 'a minute',\n            mm: '%d minutes',\n            h: 'an hour',\n            hh: '%d hours',\n            d: 'a day',\n            dd: '%d days',\n            M: 'a month',\n            MM: '%d months',\n            y: 'a year',\n            yy: '%d years',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    ~~((number % 100) / 10) === 1\n                        ? 'th'\n                        : b === 1\n                        ? 'st'\n                        : b === 2\n                        ? 'nd'\n                        : b === 3\n                        ? 'rd'\n                        : 'th';\n            return number + output;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return enGb;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Ireland) [en-ie]\n//! author : Chris Cartlidge : https://github.com/chriscartlidge\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var enIe = moment.defineLocale('en-ie', {\n        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n            '_'\n        ),\n        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Today at] LT',\n            nextDay: '[Tomorrow at] LT',\n            nextWeek: 'dddd [at] LT',\n            lastDay: '[Yesterday at] LT',\n            lastWeek: '[Last] dddd [at] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'in %s',\n            past: '%s ago',\n            s: 'a few seconds',\n            ss: '%d seconds',\n            m: 'a minute',\n            mm: '%d minutes',\n            h: 'an hour',\n            hh: '%d hours',\n            d: 'a day',\n            dd: '%d days',\n            M: 'a month',\n            MM: '%d months',\n            y: 'a year',\n            yy: '%d years',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    ~~((number % 100) / 10) === 1\n                        ? 'th'\n                        : b === 1\n                        ? 'st'\n                        : b === 2\n                        ? 'nd'\n                        : b === 3\n                        ? 'rd'\n                        : 'th';\n            return number + output;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return enIe;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Israel) [en-il]\n//! author : Chris Gedrim : https://github.com/chrisgedrim\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var enIl = moment.defineLocale('en-il', {\n        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n            '_'\n        ),\n        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Today at] LT',\n            nextDay: '[Tomorrow at] LT',\n            nextWeek: 'dddd [at] LT',\n            lastDay: '[Yesterday at] LT',\n            lastWeek: '[Last] dddd [at] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'in %s',\n            past: '%s ago',\n            s: 'a few seconds',\n            ss: '%d seconds',\n            m: 'a minute',\n            mm: '%d minutes',\n            h: 'an hour',\n            hh: '%d hours',\n            d: 'a day',\n            dd: '%d days',\n            M: 'a month',\n            MM: '%d months',\n            y: 'a year',\n            yy: '%d years',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    ~~((number % 100) / 10) === 1\n                        ? 'th'\n                        : b === 1\n                        ? 'st'\n                        : b === 2\n                        ? 'nd'\n                        : b === 3\n                        ? 'rd'\n                        : 'th';\n            return number + output;\n        },\n    });\n\n    return enIl;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (India) [en-in]\n//! author : Jatin Agrawal : https://github.com/jatinag22\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var enIn = moment.defineLocale('en-in', {\n        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n            '_'\n        ),\n        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        longDateFormat: {\n            LT: 'h:mm A',\n            LTS: 'h:mm:ss A',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY h:mm A',\n            LLLL: 'dddd, D MMMM YYYY h:mm A',\n        },\n        calendar: {\n            sameDay: '[Today at] LT',\n            nextDay: '[Tomorrow at] LT',\n            nextWeek: 'dddd [at] LT',\n            lastDay: '[Yesterday at] LT',\n            lastWeek: '[Last] dddd [at] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'in %s',\n            past: '%s ago',\n            s: 'a few seconds',\n            ss: '%d seconds',\n            m: 'a minute',\n            mm: '%d minutes',\n            h: 'an hour',\n            hh: '%d hours',\n            d: 'a day',\n            dd: '%d days',\n            M: 'a month',\n            MM: '%d months',\n            y: 'a year',\n            yy: '%d years',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    ~~((number % 100) / 10) === 1\n                        ? 'th'\n                        : b === 1\n                        ? 'st'\n                        : b === 2\n                        ? 'nd'\n                        : b === 3\n                        ? 'rd'\n                        : 'th';\n            return number + output;\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 1st is the first week of the year.\n        },\n    });\n\n    return enIn;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (New Zealand) [en-nz]\n//! author : Luke McGregor : https://github.com/lukemcgregor\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var enNz = moment.defineLocale('en-nz', {\n        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n            '_'\n        ),\n        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        longDateFormat: {\n            LT: 'h:mm A',\n            LTS: 'h:mm:ss A',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY h:mm A',\n            LLLL: 'dddd, D MMMM YYYY h:mm A',\n        },\n        calendar: {\n            sameDay: '[Today at] LT',\n            nextDay: '[Tomorrow at] LT',\n            nextWeek: 'dddd [at] LT',\n            lastDay: '[Yesterday at] LT',\n            lastWeek: '[Last] dddd [at] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'in %s',\n            past: '%s ago',\n            s: 'a few seconds',\n            ss: '%d seconds',\n            m: 'a minute',\n            mm: '%d minutes',\n            h: 'an hour',\n            hh: '%d hours',\n            d: 'a day',\n            dd: '%d days',\n            M: 'a month',\n            MM: '%d months',\n            y: 'a year',\n            yy: '%d years',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    ~~((number % 100) / 10) === 1\n                        ? 'th'\n                        : b === 1\n                        ? 'st'\n                        : b === 2\n                        ? 'nd'\n                        : b === 3\n                        ? 'rd'\n                        : 'th';\n            return number + output;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return enNz;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Singapore) [en-sg]\n//! author : Matthew Castrillon-Madrigal : https://github.com/techdimension\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var enSg = moment.defineLocale('en-sg', {\n        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n            '_'\n        ),\n        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Today at] LT',\n            nextDay: '[Tomorrow at] LT',\n            nextWeek: 'dddd [at] LT',\n            lastDay: '[Yesterday at] LT',\n            lastWeek: '[Last] dddd [at] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'in %s',\n            past: '%s ago',\n            s: 'a few seconds',\n            ss: '%d seconds',\n            m: 'a minute',\n            mm: '%d minutes',\n            h: 'an hour',\n            hh: '%d hours',\n            d: 'a day',\n            dd: '%d days',\n            M: 'a month',\n            MM: '%d months',\n            y: 'a year',\n            yy: '%d years',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    ~~((number % 100) / 10) === 1\n                        ? 'th'\n                        : b === 1\n                        ? 'st'\n                        : b === 2\n                        ? 'nd'\n                        : b === 3\n                        ? 'rd'\n                        : 'th';\n            return number + output;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return enSg;\n\n})));\n","//! moment.js locale configuration\n//! locale : Esperanto [eo]\n//! author : Colin Dean : https://github.com/colindean\n//! author : Mia Nordentoft Imperatori : https://github.com/miestasmia\n//! comment : miestasmia corrected the translation by colindean\n//! comment : Vivakvo corrected the translation by colindean and miestasmia\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var eo = moment.defineLocale('eo', {\n        months: 'januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro'.split(\n            '_'\n        ),\n        monthsShort: 'jan_feb_mart_apr_maj_jun_jul_aŭg_sept_okt_nov_dec'.split('_'),\n        weekdays: 'dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato'.split('_'),\n        weekdaysShort: 'dim_lun_mard_merk_ĵaŭ_ven_sab'.split('_'),\n        weekdaysMin: 'di_lu_ma_me_ĵa_ve_sa'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'YYYY-MM-DD',\n            LL: '[la] D[-an de] MMMM, YYYY',\n            LLL: '[la] D[-an de] MMMM, YYYY HH:mm',\n            LLLL: 'dddd[n], [la] D[-an de] MMMM, YYYY HH:mm',\n            llll: 'ddd, [la] D[-an de] MMM, YYYY HH:mm',\n        },\n        meridiemParse: /[ap]\\.t\\.m/i,\n        isPM: function (input) {\n            return input.charAt(0).toLowerCase() === 'p';\n        },\n        meridiem: function (hours, minutes, isLower) {\n            if (hours > 11) {\n                return isLower ? 'p.t.m.' : 'P.T.M.';\n            } else {\n                return isLower ? 'a.t.m.' : 'A.T.M.';\n            }\n        },\n        calendar: {\n            sameDay: '[Hodiaŭ je] LT',\n            nextDay: '[Morgaŭ je] LT',\n            nextWeek: 'dddd[n je] LT',\n            lastDay: '[Hieraŭ je] LT',\n            lastWeek: '[pasintan] dddd[n je] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'post %s',\n            past: 'antaŭ %s',\n            s: 'kelkaj sekundoj',\n            ss: '%d sekundoj',\n            m: 'unu minuto',\n            mm: '%d minutoj',\n            h: 'unu horo',\n            hh: '%d horoj',\n            d: 'unu tago', //ne 'diurno', ĉar estas uzita por proksimumo\n            dd: '%d tagoj',\n            M: 'unu monato',\n            MM: '%d monatoj',\n            y: 'unu jaro',\n            yy: '%d jaroj',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}a/,\n        ordinal: '%da',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return eo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish (Dominican Republic) [es-do]\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n            '_'\n        ),\n        monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n        monthsParse = [\n            /^ene/i,\n            /^feb/i,\n            /^mar/i,\n            /^abr/i,\n            /^may/i,\n            /^jun/i,\n            /^jul/i,\n            /^ago/i,\n            /^sep/i,\n            /^oct/i,\n            /^nov/i,\n            /^dic/i,\n        ],\n        monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n    var esDo = moment.defineLocale('es-do', {\n        months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n            '_'\n        ),\n        monthsShort: function (m, format) {\n            if (!m) {\n                return monthsShortDot;\n            } else if (/-MMM-/.test(format)) {\n                return monthsShort[m.month()];\n            } else {\n                return monthsShortDot[m.month()];\n            }\n        },\n        monthsRegex: monthsRegex,\n        monthsShortRegex: monthsRegex,\n        monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n        monthsShortStrictRegex: /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n        monthsParse: monthsParse,\n        longMonthsParse: monthsParse,\n        shortMonthsParse: monthsParse,\n        weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n        weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n        weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'h:mm A',\n            LTS: 'h:mm:ss A',\n            L: 'DD/MM/YYYY',\n            LL: 'D [de] MMMM [de] YYYY',\n            LLL: 'D [de] MMMM [de] YYYY h:mm A',\n            LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A',\n        },\n        calendar: {\n            sameDay: function () {\n                return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            nextDay: function () {\n                return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            nextWeek: function () {\n                return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            lastDay: function () {\n                return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            lastWeek: function () {\n                return (\n                    '[el] dddd [pasado a la' +\n                    (this.hours() !== 1 ? 's' : '') +\n                    '] LT'\n                );\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'en %s',\n            past: 'hace %s',\n            s: 'unos segundos',\n            ss: '%d segundos',\n            m: 'un minuto',\n            mm: '%d minutos',\n            h: 'una hora',\n            hh: '%d horas',\n            d: 'un día',\n            dd: '%d días',\n            w: 'una semana',\n            ww: '%d semanas',\n            M: 'un mes',\n            MM: '%d meses',\n            y: 'un año',\n            yy: '%d años',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}º/,\n        ordinal: '%dº',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return esDo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish (Mexico) [es-mx]\n//! author : JC Franco : https://github.com/jcfranco\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n            '_'\n        ),\n        monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n        monthsParse = [\n            /^ene/i,\n            /^feb/i,\n            /^mar/i,\n            /^abr/i,\n            /^may/i,\n            /^jun/i,\n            /^jul/i,\n            /^ago/i,\n            /^sep/i,\n            /^oct/i,\n            /^nov/i,\n            /^dic/i,\n        ],\n        monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n    var esMx = moment.defineLocale('es-mx', {\n        months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n            '_'\n        ),\n        monthsShort: function (m, format) {\n            if (!m) {\n                return monthsShortDot;\n            } else if (/-MMM-/.test(format)) {\n                return monthsShort[m.month()];\n            } else {\n                return monthsShortDot[m.month()];\n            }\n        },\n        monthsRegex: monthsRegex,\n        monthsShortRegex: monthsRegex,\n        monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n        monthsShortStrictRegex: /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n        monthsParse: monthsParse,\n        longMonthsParse: monthsParse,\n        shortMonthsParse: monthsParse,\n        weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n        weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n        weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D [de] MMMM [de] YYYY',\n            LLL: 'D [de] MMMM [de] YYYY H:mm',\n            LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n        },\n        calendar: {\n            sameDay: function () {\n                return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            nextDay: function () {\n                return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            nextWeek: function () {\n                return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            lastDay: function () {\n                return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            lastWeek: function () {\n                return (\n                    '[el] dddd [pasado a la' +\n                    (this.hours() !== 1 ? 's' : '') +\n                    '] LT'\n                );\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'en %s',\n            past: 'hace %s',\n            s: 'unos segundos',\n            ss: '%d segundos',\n            m: 'un minuto',\n            mm: '%d minutos',\n            h: 'una hora',\n            hh: '%d horas',\n            d: 'un día',\n            dd: '%d días',\n            w: 'una semana',\n            ww: '%d semanas',\n            M: 'un mes',\n            MM: '%d meses',\n            y: 'un año',\n            yy: '%d años',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}º/,\n        ordinal: '%dº',\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n        invalidDate: 'Fecha inválida',\n    });\n\n    return esMx;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish (United States) [es-us]\n//! author : bustta : https://github.com/bustta\n//! author : chrisrodz : https://github.com/chrisrodz\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n            '_'\n        ),\n        monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n        monthsParse = [\n            /^ene/i,\n            /^feb/i,\n            /^mar/i,\n            /^abr/i,\n            /^may/i,\n            /^jun/i,\n            /^jul/i,\n            /^ago/i,\n            /^sep/i,\n            /^oct/i,\n            /^nov/i,\n            /^dic/i,\n        ],\n        monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n    var esUs = moment.defineLocale('es-us', {\n        months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n            '_'\n        ),\n        monthsShort: function (m, format) {\n            if (!m) {\n                return monthsShortDot;\n            } else if (/-MMM-/.test(format)) {\n                return monthsShort[m.month()];\n            } else {\n                return monthsShortDot[m.month()];\n            }\n        },\n        monthsRegex: monthsRegex,\n        monthsShortRegex: monthsRegex,\n        monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n        monthsShortStrictRegex: /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n        monthsParse: monthsParse,\n        longMonthsParse: monthsParse,\n        shortMonthsParse: monthsParse,\n        weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n        weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n        weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'h:mm A',\n            LTS: 'h:mm:ss A',\n            L: 'MM/DD/YYYY',\n            LL: 'D [de] MMMM [de] YYYY',\n            LLL: 'D [de] MMMM [de] YYYY h:mm A',\n            LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A',\n        },\n        calendar: {\n            sameDay: function () {\n                return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            nextDay: function () {\n                return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            nextWeek: function () {\n                return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            lastDay: function () {\n                return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            lastWeek: function () {\n                return (\n                    '[el] dddd [pasado a la' +\n                    (this.hours() !== 1 ? 's' : '') +\n                    '] LT'\n                );\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'en %s',\n            past: 'hace %s',\n            s: 'unos segundos',\n            ss: '%d segundos',\n            m: 'un minuto',\n            mm: '%d minutos',\n            h: 'una hora',\n            hh: '%d horas',\n            d: 'un día',\n            dd: '%d días',\n            w: 'una semana',\n            ww: '%d semanas',\n            M: 'un mes',\n            MM: '%d meses',\n            y: 'un año',\n            yy: '%d años',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}º/,\n        ordinal: '%dº',\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 6th is the first week of the year.\n        },\n    });\n\n    return esUs;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish [es]\n//! author : Julio Napurí : https://github.com/julionc\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n            '_'\n        ),\n        monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n        monthsParse = [\n            /^ene/i,\n            /^feb/i,\n            /^mar/i,\n            /^abr/i,\n            /^may/i,\n            /^jun/i,\n            /^jul/i,\n            /^ago/i,\n            /^sep/i,\n            /^oct/i,\n            /^nov/i,\n            /^dic/i,\n        ],\n        monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n    var es = moment.defineLocale('es', {\n        months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n            '_'\n        ),\n        monthsShort: function (m, format) {\n            if (!m) {\n                return monthsShortDot;\n            } else if (/-MMM-/.test(format)) {\n                return monthsShort[m.month()];\n            } else {\n                return monthsShortDot[m.month()];\n            }\n        },\n        monthsRegex: monthsRegex,\n        monthsShortRegex: monthsRegex,\n        monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n        monthsShortStrictRegex: /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n        monthsParse: monthsParse,\n        longMonthsParse: monthsParse,\n        shortMonthsParse: monthsParse,\n        weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n        weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n        weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D [de] MMMM [de] YYYY',\n            LLL: 'D [de] MMMM [de] YYYY H:mm',\n            LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n        },\n        calendar: {\n            sameDay: function () {\n                return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            nextDay: function () {\n                return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            nextWeek: function () {\n                return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            lastDay: function () {\n                return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            lastWeek: function () {\n                return (\n                    '[el] dddd [pasado a la' +\n                    (this.hours() !== 1 ? 's' : '') +\n                    '] LT'\n                );\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'en %s',\n            past: 'hace %s',\n            s: 'unos segundos',\n            ss: '%d segundos',\n            m: 'un minuto',\n            mm: '%d minutos',\n            h: 'una hora',\n            hh: '%d horas',\n            d: 'un día',\n            dd: '%d días',\n            w: 'una semana',\n            ww: '%d semanas',\n            M: 'un mes',\n            MM: '%d meses',\n            y: 'un año',\n            yy: '%d años',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}º/,\n        ordinal: '%dº',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n        invalidDate: 'Fecha inválida',\n    });\n\n    return es;\n\n})));\n","//! moment.js locale configuration\n//! locale : Estonian [et]\n//! author : Henry Kehlmann : https://github.com/madhenry\n//! improvements : Illimar Tambek : https://github.com/ragulka\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function processRelativeTime(number, withoutSuffix, key, isFuture) {\n        var format = {\n            s: ['mõne sekundi', 'mõni sekund', 'paar sekundit'],\n            ss: [number + 'sekundi', number + 'sekundit'],\n            m: ['ühe minuti', 'üks minut'],\n            mm: [number + ' minuti', number + ' minutit'],\n            h: ['ühe tunni', 'tund aega', 'üks tund'],\n            hh: [number + ' tunni', number + ' tundi'],\n            d: ['ühe päeva', 'üks päev'],\n            M: ['kuu aja', 'kuu aega', 'üks kuu'],\n            MM: [number + ' kuu', number + ' kuud'],\n            y: ['ühe aasta', 'aasta', 'üks aasta'],\n            yy: [number + ' aasta', number + ' aastat'],\n        };\n        if (withoutSuffix) {\n            return format[key][2] ? format[key][2] : format[key][1];\n        }\n        return isFuture ? format[key][0] : format[key][1];\n    }\n\n    var et = moment.defineLocale('et', {\n        months: 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split(\n            '_'\n        ),\n        monthsShort: 'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split(\n            '_'\n        ),\n        weekdays: 'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split(\n            '_'\n        ),\n        weekdaysShort: 'P_E_T_K_N_R_L'.split('_'),\n        weekdaysMin: 'P_E_T_K_N_R_L'.split('_'),\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY H:mm',\n            LLLL: 'dddd, D. MMMM YYYY H:mm',\n        },\n        calendar: {\n            sameDay: '[Täna,] LT',\n            nextDay: '[Homme,] LT',\n            nextWeek: '[Järgmine] dddd LT',\n            lastDay: '[Eile,] LT',\n            lastWeek: '[Eelmine] dddd LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s pärast',\n            past: '%s tagasi',\n            s: processRelativeTime,\n            ss: processRelativeTime,\n            m: processRelativeTime,\n            mm: processRelativeTime,\n            h: processRelativeTime,\n            hh: processRelativeTime,\n            d: processRelativeTime,\n            dd: '%d päeva',\n            M: processRelativeTime,\n            MM: processRelativeTime,\n            y: processRelativeTime,\n            yy: processRelativeTime,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return et;\n\n})));\n","//! moment.js locale configuration\n//! locale : Basque [eu]\n//! author : Eneko Illarramendi : https://github.com/eillarra\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var eu = moment.defineLocale('eu', {\n        months: 'urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua'.split(\n            '_'\n        ),\n        monthsShort: 'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata'.split(\n            '_'\n        ),\n        weekdaysShort: 'ig._al._ar._az._og._ol._lr.'.split('_'),\n        weekdaysMin: 'ig_al_ar_az_og_ol_lr'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'YYYY-MM-DD',\n            LL: 'YYYY[ko] MMMM[ren] D[a]',\n            LLL: 'YYYY[ko] MMMM[ren] D[a] HH:mm',\n            LLLL: 'dddd, YYYY[ko] MMMM[ren] D[a] HH:mm',\n            l: 'YYYY-M-D',\n            ll: 'YYYY[ko] MMM D[a]',\n            lll: 'YYYY[ko] MMM D[a] HH:mm',\n            llll: 'ddd, YYYY[ko] MMM D[a] HH:mm',\n        },\n        calendar: {\n            sameDay: '[gaur] LT[etan]',\n            nextDay: '[bihar] LT[etan]',\n            nextWeek: 'dddd LT[etan]',\n            lastDay: '[atzo] LT[etan]',\n            lastWeek: '[aurreko] dddd LT[etan]',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s barru',\n            past: 'duela %s',\n            s: 'segundo batzuk',\n            ss: '%d segundo',\n            m: 'minutu bat',\n            mm: '%d minutu',\n            h: 'ordu bat',\n            hh: '%d ordu',\n            d: 'egun bat',\n            dd: '%d egun',\n            M: 'hilabete bat',\n            MM: '%d hilabete',\n            y: 'urte bat',\n            yy: '%d urte',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return eu;\n\n})));\n","//! moment.js locale configuration\n//! locale : Persian [fa]\n//! author : Ebrahim Byagowi : https://github.com/ebraminio\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            1: '۱',\n            2: '۲',\n            3: '۳',\n            4: '۴',\n            5: '۵',\n            6: '۶',\n            7: '۷',\n            8: '۸',\n            9: '۹',\n            0: '۰',\n        },\n        numberMap = {\n            '۱': '1',\n            '۲': '2',\n            '۳': '3',\n            '۴': '4',\n            '۵': '5',\n            '۶': '6',\n            '۷': '7',\n            '۸': '8',\n            '۹': '9',\n            '۰': '0',\n        };\n\n    var fa = moment.defineLocale('fa', {\n        months: 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split(\n            '_'\n        ),\n        monthsShort: 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split(\n            '_'\n        ),\n        weekdays: 'یک\\u200cشنبه_دوشنبه_سه\\u200cشنبه_چهارشنبه_پنج\\u200cشنبه_جمعه_شنبه'.split(\n            '_'\n        ),\n        weekdaysShort: 'یک\\u200cشنبه_دوشنبه_سه\\u200cشنبه_چهارشنبه_پنج\\u200cشنبه_جمعه_شنبه'.split(\n            '_'\n        ),\n        weekdaysMin: 'ی_د_س_چ_پ_ج_ش'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        meridiemParse: /قبل از ظهر|بعد از ظهر/,\n        isPM: function (input) {\n            return /بعد از ظهر/.test(input);\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'قبل از ظهر';\n            } else {\n                return 'بعد از ظهر';\n            }\n        },\n        calendar: {\n            sameDay: '[امروز ساعت] LT',\n            nextDay: '[فردا ساعت] LT',\n            nextWeek: 'dddd [ساعت] LT',\n            lastDay: '[دیروز ساعت] LT',\n            lastWeek: 'dddd [پیش] [ساعت] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'در %s',\n            past: '%s پیش',\n            s: 'چند ثانیه',\n            ss: '%d ثانیه',\n            m: 'یک دقیقه',\n            mm: '%d دقیقه',\n            h: 'یک ساعت',\n            hh: '%d ساعت',\n            d: 'یک روز',\n            dd: '%d روز',\n            M: 'یک ماه',\n            MM: '%d ماه',\n            y: 'یک سال',\n            yy: '%d سال',\n        },\n        preparse: function (string) {\n            return string\n                .replace(/[۰-۹]/g, function (match) {\n                    return numberMap[match];\n                })\n                .replace(/،/g, ',');\n        },\n        postformat: function (string) {\n            return string\n                .replace(/\\d/g, function (match) {\n                    return symbolMap[match];\n                })\n                .replace(/,/g, '،');\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}م/,\n        ordinal: '%dم',\n        week: {\n            dow: 6, // Saturday is the first day of the week.\n            doy: 12, // The week that contains Jan 12th is the first week of the year.\n        },\n    });\n\n    return fa;\n\n})));\n","//! moment.js locale configuration\n//! locale : Finnish [fi]\n//! author : Tarmo Aidantausta : https://github.com/bleadof\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var numbersPast = 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(\n            ' '\n        ),\n        numbersFuture = [\n            'nolla',\n            'yhden',\n            'kahden',\n            'kolmen',\n            'neljän',\n            'viiden',\n            'kuuden',\n            numbersPast[7],\n            numbersPast[8],\n            numbersPast[9],\n        ];\n    function translate(number, withoutSuffix, key, isFuture) {\n        var result = '';\n        switch (key) {\n            case 's':\n                return isFuture ? 'muutaman sekunnin' : 'muutama sekunti';\n            case 'ss':\n                result = isFuture ? 'sekunnin' : 'sekuntia';\n                break;\n            case 'm':\n                return isFuture ? 'minuutin' : 'minuutti';\n            case 'mm':\n                result = isFuture ? 'minuutin' : 'minuuttia';\n                break;\n            case 'h':\n                return isFuture ? 'tunnin' : 'tunti';\n            case 'hh':\n                result = isFuture ? 'tunnin' : 'tuntia';\n                break;\n            case 'd':\n                return isFuture ? 'päivän' : 'päivä';\n            case 'dd':\n                result = isFuture ? 'päivän' : 'päivää';\n                break;\n            case 'M':\n                return isFuture ? 'kuukauden' : 'kuukausi';\n            case 'MM':\n                result = isFuture ? 'kuukauden' : 'kuukautta';\n                break;\n            case 'y':\n                return isFuture ? 'vuoden' : 'vuosi';\n            case 'yy':\n                result = isFuture ? 'vuoden' : 'vuotta';\n                break;\n        }\n        result = verbalNumber(number, isFuture) + ' ' + result;\n        return result;\n    }\n    function verbalNumber(number, isFuture) {\n        return number < 10\n            ? isFuture\n                ? numbersFuture[number]\n                : numbersPast[number]\n            : number;\n    }\n\n    var fi = moment.defineLocale('fi', {\n        months: 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split(\n            '_'\n        ),\n        monthsShort: 'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split(\n            '_'\n        ),\n        weekdays: 'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split(\n            '_'\n        ),\n        weekdaysShort: 'su_ma_ti_ke_to_pe_la'.split('_'),\n        weekdaysMin: 'su_ma_ti_ke_to_pe_la'.split('_'),\n        longDateFormat: {\n            LT: 'HH.mm',\n            LTS: 'HH.mm.ss',\n            L: 'DD.MM.YYYY',\n            LL: 'Do MMMM[ta] YYYY',\n            LLL: 'Do MMMM[ta] YYYY, [klo] HH.mm',\n            LLLL: 'dddd, Do MMMM[ta] YYYY, [klo] HH.mm',\n            l: 'D.M.YYYY',\n            ll: 'Do MMM YYYY',\n            lll: 'Do MMM YYYY, [klo] HH.mm',\n            llll: 'ddd, Do MMM YYYY, [klo] HH.mm',\n        },\n        calendar: {\n            sameDay: '[tänään] [klo] LT',\n            nextDay: '[huomenna] [klo] LT',\n            nextWeek: 'dddd [klo] LT',\n            lastDay: '[eilen] [klo] LT',\n            lastWeek: '[viime] dddd[na] [klo] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s päästä',\n            past: '%s sitten',\n            s: translate,\n            ss: translate,\n            m: translate,\n            mm: translate,\n            h: translate,\n            hh: translate,\n            d: translate,\n            dd: translate,\n            M: translate,\n            MM: translate,\n            y: translate,\n            yy: translate,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return fi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Filipino [fil]\n//! author : Dan Hagman : https://github.com/hagmandan\n//! author : Matthew Co : https://github.com/matthewdeeco\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var fil = moment.defineLocale('fil', {\n        months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split(\n            '_'\n        ),\n        monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),\n        weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split(\n            '_'\n        ),\n        weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),\n        weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'MM/D/YYYY',\n            LL: 'MMMM D, YYYY',\n            LLL: 'MMMM D, YYYY HH:mm',\n            LLLL: 'dddd, MMMM DD, YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: 'LT [ngayong araw]',\n            nextDay: '[Bukas ng] LT',\n            nextWeek: 'LT [sa susunod na] dddd',\n            lastDay: 'LT [kahapon]',\n            lastWeek: 'LT [noong nakaraang] dddd',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'sa loob ng %s',\n            past: '%s ang nakalipas',\n            s: 'ilang segundo',\n            ss: '%d segundo',\n            m: 'isang minuto',\n            mm: '%d minuto',\n            h: 'isang oras',\n            hh: '%d oras',\n            d: 'isang araw',\n            dd: '%d araw',\n            M: 'isang buwan',\n            MM: '%d buwan',\n            y: 'isang taon',\n            yy: '%d taon',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}/,\n        ordinal: function (number) {\n            return number;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return fil;\n\n})));\n","//! moment.js locale configuration\n//! locale : Faroese [fo]\n//! author : Ragnar Johannesen : https://github.com/ragnar123\n//! author : Kristian Sakarisson : https://github.com/sakarisson\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var fo = moment.defineLocale('fo', {\n        months: 'januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember'.split(\n            '_'\n        ),\n        monthsShort: 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),\n        weekdays: 'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur'.split(\n            '_'\n        ),\n        weekdaysShort: 'sun_mán_týs_mik_hós_frí_ley'.split('_'),\n        weekdaysMin: 'su_má_tý_mi_hó_fr_le'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D. MMMM, YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Í dag kl.] LT',\n            nextDay: '[Í morgin kl.] LT',\n            nextWeek: 'dddd [kl.] LT',\n            lastDay: '[Í gjár kl.] LT',\n            lastWeek: '[síðstu] dddd [kl] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'um %s',\n            past: '%s síðani',\n            s: 'fá sekund',\n            ss: '%d sekundir',\n            m: 'ein minuttur',\n            mm: '%d minuttir',\n            h: 'ein tími',\n            hh: '%d tímar',\n            d: 'ein dagur',\n            dd: '%d dagar',\n            M: 'ein mánaður',\n            MM: '%d mánaðir',\n            y: 'eitt ár',\n            yy: '%d ár',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return fo;\n\n})));\n","//! moment.js locale configuration\n//! locale : French (Canada) [fr-ca]\n//! author : Jonathan Abourbih : https://github.com/jonbca\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var frCa = moment.defineLocale('fr-ca', {\n        months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n            '_'\n        ),\n        monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n        weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n        weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'YYYY-MM-DD',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Aujourd’hui à] LT',\n            nextDay: '[Demain à] LT',\n            nextWeek: 'dddd [à] LT',\n            lastDay: '[Hier à] LT',\n            lastWeek: 'dddd [dernier à] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'dans %s',\n            past: 'il y a %s',\n            s: 'quelques secondes',\n            ss: '%d secondes',\n            m: 'une minute',\n            mm: '%d minutes',\n            h: 'une heure',\n            hh: '%d heures',\n            d: 'un jour',\n            dd: '%d jours',\n            M: 'un mois',\n            MM: '%d mois',\n            y: 'un an',\n            yy: '%d ans',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(er|e)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                // Words with masculine grammatical gender: mois, trimestre, jour\n                default:\n                case 'M':\n                case 'Q':\n                case 'D':\n                case 'DDD':\n                case 'd':\n                    return number + (number === 1 ? 'er' : 'e');\n\n                // Words with feminine grammatical gender: semaine\n                case 'w':\n                case 'W':\n                    return number + (number === 1 ? 're' : 'e');\n            }\n        },\n    });\n\n    return frCa;\n\n})));\n","//! moment.js locale configuration\n//! locale : French (Switzerland) [fr-ch]\n//! author : Gaspard Bucher : https://github.com/gaspard\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var frCh = moment.defineLocale('fr-ch', {\n        months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n            '_'\n        ),\n        monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n        weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n        weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Aujourd’hui à] LT',\n            nextDay: '[Demain à] LT',\n            nextWeek: 'dddd [à] LT',\n            lastDay: '[Hier à] LT',\n            lastWeek: 'dddd [dernier à] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'dans %s',\n            past: 'il y a %s',\n            s: 'quelques secondes',\n            ss: '%d secondes',\n            m: 'une minute',\n            mm: '%d minutes',\n            h: 'une heure',\n            hh: '%d heures',\n            d: 'un jour',\n            dd: '%d jours',\n            M: 'un mois',\n            MM: '%d mois',\n            y: 'un an',\n            yy: '%d ans',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(er|e)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                // Words with masculine grammatical gender: mois, trimestre, jour\n                default:\n                case 'M':\n                case 'Q':\n                case 'D':\n                case 'DDD':\n                case 'd':\n                    return number + (number === 1 ? 'er' : 'e');\n\n                // Words with feminine grammatical gender: semaine\n                case 'w':\n                case 'W':\n                    return number + (number === 1 ? 're' : 'e');\n            }\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return frCh;\n\n})));\n","//! moment.js locale configuration\n//! locale : French [fr]\n//! author : John Fischer : https://github.com/jfroffice\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var monthsStrictRegex = /^(janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,\n        monthsShortStrictRegex = /(janv\\.?|févr\\.?|mars|avr\\.?|mai|juin|juil\\.?|août|sept\\.?|oct\\.?|nov\\.?|déc\\.?)/i,\n        monthsRegex = /(janv\\.?|févr\\.?|mars|avr\\.?|mai|juin|juil\\.?|août|sept\\.?|oct\\.?|nov\\.?|déc\\.?|janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,\n        monthsParse = [\n            /^janv/i,\n            /^févr/i,\n            /^mars/i,\n            /^avr/i,\n            /^mai/i,\n            /^juin/i,\n            /^juil/i,\n            /^août/i,\n            /^sept/i,\n            /^oct/i,\n            /^nov/i,\n            /^déc/i,\n        ];\n\n    var fr = moment.defineLocale('fr', {\n        months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n            '_'\n        ),\n        monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n            '_'\n        ),\n        monthsRegex: monthsRegex,\n        monthsShortRegex: monthsRegex,\n        monthsStrictRegex: monthsStrictRegex,\n        monthsShortStrictRegex: monthsShortStrictRegex,\n        monthsParse: monthsParse,\n        longMonthsParse: monthsParse,\n        shortMonthsParse: monthsParse,\n        weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n        weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n        weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Aujourd’hui à] LT',\n            nextDay: '[Demain à] LT',\n            nextWeek: 'dddd [à] LT',\n            lastDay: '[Hier à] LT',\n            lastWeek: 'dddd [dernier à] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'dans %s',\n            past: 'il y a %s',\n            s: 'quelques secondes',\n            ss: '%d secondes',\n            m: 'une minute',\n            mm: '%d minutes',\n            h: 'une heure',\n            hh: '%d heures',\n            d: 'un jour',\n            dd: '%d jours',\n            w: 'une semaine',\n            ww: '%d semaines',\n            M: 'un mois',\n            MM: '%d mois',\n            y: 'un an',\n            yy: '%d ans',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(er|)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                // TODO: Return 'e' when day of month > 1. Move this case inside\n                // block for masculine words below.\n                // See https://github.com/moment/moment/issues/3375\n                case 'D':\n                    return number + (number === 1 ? 'er' : '');\n\n                // Words with masculine grammatical gender: mois, trimestre, jour\n                default:\n                case 'M':\n                case 'Q':\n                case 'DDD':\n                case 'd':\n                    return number + (number === 1 ? 'er' : 'e');\n\n                // Words with feminine grammatical gender: semaine\n                case 'w':\n                case 'W':\n                    return number + (number === 1 ? 're' : 'e');\n            }\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return fr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Frisian [fy]\n//! author : Robin van der Vliet : https://github.com/robin0van0der0v\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var monthsShortWithDots = 'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split(\n            '_'\n        ),\n        monthsShortWithoutDots = 'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split(\n            '_'\n        );\n\n    var fy = moment.defineLocale('fy', {\n        months: 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split(\n            '_'\n        ),\n        monthsShort: function (m, format) {\n            if (!m) {\n                return monthsShortWithDots;\n            } else if (/-MMM-/.test(format)) {\n                return monthsShortWithoutDots[m.month()];\n            } else {\n                return monthsShortWithDots[m.month()];\n            }\n        },\n        monthsParseExact: true,\n        weekdays: 'snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon'.split(\n            '_'\n        ),\n        weekdaysShort: 'si._mo._ti._wo._to._fr._so.'.split('_'),\n        weekdaysMin: 'Si_Mo_Ti_Wo_To_Fr_So'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD-MM-YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[hjoed om] LT',\n            nextDay: '[moarn om] LT',\n            nextWeek: 'dddd [om] LT',\n            lastDay: '[juster om] LT',\n            lastWeek: '[ôfrûne] dddd [om] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'oer %s',\n            past: '%s lyn',\n            s: 'in pear sekonden',\n            ss: '%d sekonden',\n            m: 'ien minút',\n            mm: '%d minuten',\n            h: 'ien oere',\n            hh: '%d oeren',\n            d: 'ien dei',\n            dd: '%d dagen',\n            M: 'ien moanne',\n            MM: '%d moannen',\n            y: 'ien jier',\n            yy: '%d jierren',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n        ordinal: function (number) {\n            return (\n                number +\n                (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n            );\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return fy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Irish or Irish Gaelic [ga]\n//! author : André Silva : https://github.com/askpt\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var months = [\n            'Eanáir',\n            'Feabhra',\n            'Márta',\n            'Aibreán',\n            'Bealtaine',\n            'Meitheamh',\n            'Iúil',\n            'Lúnasa',\n            'Meán Fómhair',\n            'Deireadh Fómhair',\n            'Samhain',\n            'Nollaig',\n        ],\n        monthsShort = [\n            'Ean',\n            'Feabh',\n            'Márt',\n            'Aib',\n            'Beal',\n            'Meith',\n            'Iúil',\n            'Lún',\n            'M.F.',\n            'D.F.',\n            'Samh',\n            'Noll',\n        ],\n        weekdays = [\n            'Dé Domhnaigh',\n            'Dé Luain',\n            'Dé Máirt',\n            'Dé Céadaoin',\n            'Déardaoin',\n            'Dé hAoine',\n            'Dé Sathairn',\n        ],\n        weekdaysShort = ['Domh', 'Luan', 'Máirt', 'Céad', 'Déar', 'Aoine', 'Sath'],\n        weekdaysMin = ['Do', 'Lu', 'Má', 'Cé', 'Dé', 'A', 'Sa'];\n\n    var ga = moment.defineLocale('ga', {\n        months: months,\n        monthsShort: monthsShort,\n        monthsParseExact: true,\n        weekdays: weekdays,\n        weekdaysShort: weekdaysShort,\n        weekdaysMin: weekdaysMin,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Inniu ag] LT',\n            nextDay: '[Amárach ag] LT',\n            nextWeek: 'dddd [ag] LT',\n            lastDay: '[Inné ag] LT',\n            lastWeek: 'dddd [seo caite] [ag] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'i %s',\n            past: '%s ó shin',\n            s: 'cúpla soicind',\n            ss: '%d soicind',\n            m: 'nóiméad',\n            mm: '%d nóiméad',\n            h: 'uair an chloig',\n            hh: '%d uair an chloig',\n            d: 'lá',\n            dd: '%d lá',\n            M: 'mí',\n            MM: '%d míonna',\n            y: 'bliain',\n            yy: '%d bliain',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(d|na|mh)/,\n        ordinal: function (number) {\n            var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';\n            return number + output;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return ga;\n\n})));\n","//! moment.js locale configuration\n//! locale : Scottish Gaelic [gd]\n//! author : Jon Ashdown : https://github.com/jonashdown\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var months = [\n            'Am Faoilleach',\n            'An Gearran',\n            'Am Màrt',\n            'An Giblean',\n            'An Cèitean',\n            'An t-Ògmhios',\n            'An t-Iuchar',\n            'An Lùnastal',\n            'An t-Sultain',\n            'An Dàmhair',\n            'An t-Samhain',\n            'An Dùbhlachd',\n        ],\n        monthsShort = [\n            'Faoi',\n            'Gear',\n            'Màrt',\n            'Gibl',\n            'Cèit',\n            'Ògmh',\n            'Iuch',\n            'Lùn',\n            'Sult',\n            'Dàmh',\n            'Samh',\n            'Dùbh',\n        ],\n        weekdays = [\n            'Didòmhnaich',\n            'Diluain',\n            'Dimàirt',\n            'Diciadain',\n            'Diardaoin',\n            'Dihaoine',\n            'Disathairne',\n        ],\n        weekdaysShort = ['Did', 'Dil', 'Dim', 'Dic', 'Dia', 'Dih', 'Dis'],\n        weekdaysMin = ['Dò', 'Lu', 'Mà', 'Ci', 'Ar', 'Ha', 'Sa'];\n\n    var gd = moment.defineLocale('gd', {\n        months: months,\n        monthsShort: monthsShort,\n        monthsParseExact: true,\n        weekdays: weekdays,\n        weekdaysShort: weekdaysShort,\n        weekdaysMin: weekdaysMin,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[An-diugh aig] LT',\n            nextDay: '[A-màireach aig] LT',\n            nextWeek: 'dddd [aig] LT',\n            lastDay: '[An-dè aig] LT',\n            lastWeek: 'dddd [seo chaidh] [aig] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'ann an %s',\n            past: 'bho chionn %s',\n            s: 'beagan diogan',\n            ss: '%d diogan',\n            m: 'mionaid',\n            mm: '%d mionaidean',\n            h: 'uair',\n            hh: '%d uairean',\n            d: 'latha',\n            dd: '%d latha',\n            M: 'mìos',\n            MM: '%d mìosan',\n            y: 'bliadhna',\n            yy: '%d bliadhna',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(d|na|mh)/,\n        ordinal: function (number) {\n            var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';\n            return number + output;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return gd;\n\n})));\n","//! moment.js locale configuration\n//! locale : Galician [gl]\n//! author : Juan G. Hurtado : https://github.com/juanghurtado\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var gl = moment.defineLocale('gl', {\n        months: 'xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro'.split(\n            '_'\n        ),\n        monthsShort: 'xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'domingo_luns_martes_mércores_xoves_venres_sábado'.split('_'),\n        weekdaysShort: 'dom._lun._mar._mér._xov._ven._sáb.'.split('_'),\n        weekdaysMin: 'do_lu_ma_mé_xo_ve_sá'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D [de] MMMM [de] YYYY',\n            LLL: 'D [de] MMMM [de] YYYY H:mm',\n            LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n        },\n        calendar: {\n            sameDay: function () {\n                return '[hoxe ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';\n            },\n            nextDay: function () {\n                return '[mañá ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';\n            },\n            nextWeek: function () {\n                return 'dddd [' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT';\n            },\n            lastDay: function () {\n                return '[onte ' + (this.hours() !== 1 ? 'á' : 'a') + '] LT';\n            },\n            lastWeek: function () {\n                return (\n                    '[o] dddd [pasado ' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT'\n                );\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: function (str) {\n                if (str.indexOf('un') === 0) {\n                    return 'n' + str;\n                }\n                return 'en ' + str;\n            },\n            past: 'hai %s',\n            s: 'uns segundos',\n            ss: '%d segundos',\n            m: 'un minuto',\n            mm: '%d minutos',\n            h: 'unha hora',\n            hh: '%d horas',\n            d: 'un día',\n            dd: '%d días',\n            M: 'un mes',\n            MM: '%d meses',\n            y: 'un ano',\n            yy: '%d anos',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}º/,\n        ordinal: '%dº',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return gl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Konkani Devanagari script [gom-deva]\n//! author : The Discoverer : https://github.com/WikiDiscoverer\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function processRelativeTime(number, withoutSuffix, key, isFuture) {\n        var format = {\n            s: ['थोडया सॅकंडांनी', 'थोडे सॅकंड'],\n            ss: [number + ' सॅकंडांनी', number + ' सॅकंड'],\n            m: ['एका मिणटान', 'एक मिनूट'],\n            mm: [number + ' मिणटांनी', number + ' मिणटां'],\n            h: ['एका वरान', 'एक वर'],\n            hh: [number + ' वरांनी', number + ' वरां'],\n            d: ['एका दिसान', 'एक दीस'],\n            dd: [number + ' दिसांनी', number + ' दीस'],\n            M: ['एका म्हयन्यान', 'एक म्हयनो'],\n            MM: [number + ' म्हयन्यानी', number + ' म्हयने'],\n            y: ['एका वर्सान', 'एक वर्स'],\n            yy: [number + ' वर्सांनी', number + ' वर्सां'],\n        };\n        return isFuture ? format[key][0] : format[key][1];\n    }\n\n    var gomDeva = moment.defineLocale('gom-deva', {\n        months: {\n            standalone: 'जानेवारी_फेब्रुवारी_मार्च_एप्रील_मे_जून_जुलय_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split(\n                '_'\n            ),\n            format: 'जानेवारीच्या_फेब्रुवारीच्या_मार्चाच्या_एप्रीलाच्या_मेयाच्या_जूनाच्या_जुलयाच्या_ऑगस्टाच्या_सप्टेंबराच्या_ऑक्टोबराच्या_नोव्हेंबराच्या_डिसेंबराच्या'.split(\n                '_'\n            ),\n            isFormat: /MMMM(\\s)+D[oD]?/,\n        },\n        monthsShort: 'जाने._फेब्रु._मार्च_एप्री._मे_जून_जुल._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'आयतार_सोमार_मंगळार_बुधवार_बिरेस्तार_सुक्रार_शेनवार'.split('_'),\n        weekdaysShort: 'आयत._सोम._मंगळ._बुध._ब्रेस्त._सुक्र._शेन.'.split('_'),\n        weekdaysMin: 'आ_सो_मं_बु_ब्रे_सु_शे'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'A h:mm [वाजतां]',\n            LTS: 'A h:mm:ss [वाजतां]',\n            L: 'DD-MM-YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY A h:mm [वाजतां]',\n            LLLL: 'dddd, MMMM Do, YYYY, A h:mm [वाजतां]',\n            llll: 'ddd, D MMM YYYY, A h:mm [वाजतां]',\n        },\n        calendar: {\n            sameDay: '[आयज] LT',\n            nextDay: '[फाल्यां] LT',\n            nextWeek: '[फुडलो] dddd[,] LT',\n            lastDay: '[काल] LT',\n            lastWeek: '[फाटलो] dddd[,] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s',\n            past: '%s आदीं',\n            s: processRelativeTime,\n            ss: processRelativeTime,\n            m: processRelativeTime,\n            mm: processRelativeTime,\n            h: processRelativeTime,\n            hh: processRelativeTime,\n            d: processRelativeTime,\n            dd: processRelativeTime,\n            M: processRelativeTime,\n            MM: processRelativeTime,\n            y: processRelativeTime,\n            yy: processRelativeTime,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(वेर)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                // the ordinal 'वेर' only applies to day of the month\n                case 'D':\n                    return number + 'वेर';\n                default:\n                case 'M':\n                case 'Q':\n                case 'DDD':\n                case 'd':\n                case 'w':\n                case 'W':\n                    return number;\n            }\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week\n            doy: 3, // The week that contains Jan 4th is the first week of the year (7 + 0 - 4)\n        },\n        meridiemParse: /राती|सकाळीं|दनपारां|सांजे/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'राती') {\n                return hour < 4 ? hour : hour + 12;\n            } else if (meridiem === 'सकाळीं') {\n                return hour;\n            } else if (meridiem === 'दनपारां') {\n                return hour > 12 ? hour : hour + 12;\n            } else if (meridiem === 'सांजे') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'राती';\n            } else if (hour < 12) {\n                return 'सकाळीं';\n            } else if (hour < 16) {\n                return 'दनपारां';\n            } else if (hour < 20) {\n                return 'सांजे';\n            } else {\n                return 'राती';\n            }\n        },\n    });\n\n    return gomDeva;\n\n})));\n","//! moment.js locale configuration\n//! locale : Konkani Latin script [gom-latn]\n//! author : The Discoverer : https://github.com/WikiDiscoverer\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function processRelativeTime(number, withoutSuffix, key, isFuture) {\n        var format = {\n            s: ['thoddea sekondamni', 'thodde sekond'],\n            ss: [number + ' sekondamni', number + ' sekond'],\n            m: ['eka mintan', 'ek minut'],\n            mm: [number + ' mintamni', number + ' mintam'],\n            h: ['eka voran', 'ek vor'],\n            hh: [number + ' voramni', number + ' voram'],\n            d: ['eka disan', 'ek dis'],\n            dd: [number + ' disamni', number + ' dis'],\n            M: ['eka mhoinean', 'ek mhoino'],\n            MM: [number + ' mhoineamni', number + ' mhoine'],\n            y: ['eka vorsan', 'ek voros'],\n            yy: [number + ' vorsamni', number + ' vorsam'],\n        };\n        return isFuture ? format[key][0] : format[key][1];\n    }\n\n    var gomLatn = moment.defineLocale('gom-latn', {\n        months: {\n            standalone: 'Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr'.split(\n                '_'\n            ),\n            format: 'Janerachea_Febrerachea_Marsachea_Abrilachea_Maiachea_Junachea_Julaiachea_Agostachea_Setembrachea_Otubrachea_Novembrachea_Dezembrachea'.split(\n                '_'\n            ),\n            isFormat: /MMMM(\\s)+D[oD]?/,\n        },\n        monthsShort: 'Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: \"Aitar_Somar_Mongllar_Budhvar_Birestar_Sukrar_Son'var\".split('_'),\n        weekdaysShort: 'Ait._Som._Mon._Bud._Bre._Suk._Son.'.split('_'),\n        weekdaysMin: 'Ai_Sm_Mo_Bu_Br_Su_Sn'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'A h:mm [vazta]',\n            LTS: 'A h:mm:ss [vazta]',\n            L: 'DD-MM-YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY A h:mm [vazta]',\n            LLLL: 'dddd, MMMM Do, YYYY, A h:mm [vazta]',\n            llll: 'ddd, D MMM YYYY, A h:mm [vazta]',\n        },\n        calendar: {\n            sameDay: '[Aiz] LT',\n            nextDay: '[Faleam] LT',\n            nextWeek: '[Fuddlo] dddd[,] LT',\n            lastDay: '[Kal] LT',\n            lastWeek: '[Fattlo] dddd[,] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s',\n            past: '%s adim',\n            s: processRelativeTime,\n            ss: processRelativeTime,\n            m: processRelativeTime,\n            mm: processRelativeTime,\n            h: processRelativeTime,\n            hh: processRelativeTime,\n            d: processRelativeTime,\n            dd: processRelativeTime,\n            M: processRelativeTime,\n            MM: processRelativeTime,\n            y: processRelativeTime,\n            yy: processRelativeTime,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(er)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                // the ordinal 'er' only applies to day of the month\n                case 'D':\n                    return number + 'er';\n                default:\n                case 'M':\n                case 'Q':\n                case 'DDD':\n                case 'd':\n                case 'w':\n                case 'W':\n                    return number;\n            }\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week\n            doy: 3, // The week that contains Jan 4th is the first week of the year (7 + 0 - 4)\n        },\n        meridiemParse: /rati|sokallim|donparam|sanje/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'rati') {\n                return hour < 4 ? hour : hour + 12;\n            } else if (meridiem === 'sokallim') {\n                return hour;\n            } else if (meridiem === 'donparam') {\n                return hour > 12 ? hour : hour + 12;\n            } else if (meridiem === 'sanje') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'rati';\n            } else if (hour < 12) {\n                return 'sokallim';\n            } else if (hour < 16) {\n                return 'donparam';\n            } else if (hour < 20) {\n                return 'sanje';\n            } else {\n                return 'rati';\n            }\n        },\n    });\n\n    return gomLatn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Gujarati [gu]\n//! author : Kaushik Thanki : https://github.com/Kaushik1987\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            1: '૧',\n            2: '૨',\n            3: '૩',\n            4: '૪',\n            5: '૫',\n            6: '૬',\n            7: '૭',\n            8: '૮',\n            9: '૯',\n            0: '૦',\n        },\n        numberMap = {\n            '૧': '1',\n            '૨': '2',\n            '૩': '3',\n            '૪': '4',\n            '૫': '5',\n            '૬': '6',\n            '૭': '7',\n            '૮': '8',\n            '૯': '9',\n            '૦': '0',\n        };\n\n    var gu = moment.defineLocale('gu', {\n        months: 'જાન્યુઆરી_ફેબ્રુઆરી_માર્ચ_એપ્રિલ_મે_જૂન_જુલાઈ_ઑગસ્ટ_સપ્ટેમ્બર_ઑક્ટ્બર_નવેમ્બર_ડિસેમ્બર'.split(\n            '_'\n        ),\n        monthsShort: 'જાન્યુ._ફેબ્રુ._માર્ચ_એપ્રિ._મે_જૂન_જુલા._ઑગ._સપ્ટે._ઑક્ટ્._નવે._ડિસે.'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'રવિવાર_સોમવાર_મંગળવાર_બુધ્વાર_ગુરુવાર_શુક્રવાર_શનિવાર'.split(\n            '_'\n        ),\n        weekdaysShort: 'રવિ_સોમ_મંગળ_બુધ્_ગુરુ_શુક્ર_શનિ'.split('_'),\n        weekdaysMin: 'ર_સો_મં_બુ_ગુ_શુ_શ'.split('_'),\n        longDateFormat: {\n            LT: 'A h:mm વાગ્યે',\n            LTS: 'A h:mm:ss વાગ્યે',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY, A h:mm વાગ્યે',\n            LLLL: 'dddd, D MMMM YYYY, A h:mm વાગ્યે',\n        },\n        calendar: {\n            sameDay: '[આજ] LT',\n            nextDay: '[કાલે] LT',\n            nextWeek: 'dddd, LT',\n            lastDay: '[ગઇકાલે] LT',\n            lastWeek: '[પાછલા] dddd, LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s મા',\n            past: '%s પહેલા',\n            s: 'અમુક પળો',\n            ss: '%d સેકંડ',\n            m: 'એક મિનિટ',\n            mm: '%d મિનિટ',\n            h: 'એક કલાક',\n            hh: '%d કલાક',\n            d: 'એક દિવસ',\n            dd: '%d દિવસ',\n            M: 'એક મહિનો',\n            MM: '%d મહિનો',\n            y: 'એક વર્ષ',\n            yy: '%d વર્ષ',\n        },\n        preparse: function (string) {\n            return string.replace(/[૧૨૩૪૫૬૭૮૯૦]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        // Gujarati notation for meridiems are quite fuzzy in practice. While there exists\n        // a rigid notion of a 'Pahar' it is not used as rigidly in modern Gujarati.\n        meridiemParse: /રાત|બપોર|સવાર|સાંજ/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'રાત') {\n                return hour < 4 ? hour : hour + 12;\n            } else if (meridiem === 'સવાર') {\n                return hour;\n            } else if (meridiem === 'બપોર') {\n                return hour >= 10 ? hour : hour + 12;\n            } else if (meridiem === 'સાંજ') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'રાત';\n            } else if (hour < 10) {\n                return 'સવાર';\n            } else if (hour < 17) {\n                return 'બપોર';\n            } else if (hour < 20) {\n                return 'સાંજ';\n            } else {\n                return 'રાત';\n            }\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 6th is the first week of the year.\n        },\n    });\n\n    return gu;\n\n})));\n","//! moment.js locale configuration\n//! locale : Hebrew [he]\n//! author : Tomer Cohen : https://github.com/tomer\n//! author : Moshe Simantov : https://github.com/DevelopmentIL\n//! author : Tal Ater : https://github.com/TalAter\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var he = moment.defineLocale('he', {\n        months: 'ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר'.split(\n            '_'\n        ),\n        monthsShort: 'ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳'.split(\n            '_'\n        ),\n        weekdays: 'ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת'.split('_'),\n        weekdaysShort: 'א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳'.split('_'),\n        weekdaysMin: 'א_ב_ג_ד_ה_ו_ש'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D [ב]MMMM YYYY',\n            LLL: 'D [ב]MMMM YYYY HH:mm',\n            LLLL: 'dddd, D [ב]MMMM YYYY HH:mm',\n            l: 'D/M/YYYY',\n            ll: 'D MMM YYYY',\n            lll: 'D MMM YYYY HH:mm',\n            llll: 'ddd, D MMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[היום ב־]LT',\n            nextDay: '[מחר ב־]LT',\n            nextWeek: 'dddd [בשעה] LT',\n            lastDay: '[אתמול ב־]LT',\n            lastWeek: '[ביום] dddd [האחרון בשעה] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'בעוד %s',\n            past: 'לפני %s',\n            s: 'מספר שניות',\n            ss: '%d שניות',\n            m: 'דקה',\n            mm: '%d דקות',\n            h: 'שעה',\n            hh: function (number) {\n                if (number === 2) {\n                    return 'שעתיים';\n                }\n                return number + ' שעות';\n            },\n            d: 'יום',\n            dd: function (number) {\n                if (number === 2) {\n                    return 'יומיים';\n                }\n                return number + ' ימים';\n            },\n            M: 'חודש',\n            MM: function (number) {\n                if (number === 2) {\n                    return 'חודשיים';\n                }\n                return number + ' חודשים';\n            },\n            y: 'שנה',\n            yy: function (number) {\n                if (number === 2) {\n                    return 'שנתיים';\n                } else if (number % 10 === 0 && number !== 10) {\n                    return number + ' שנה';\n                }\n                return number + ' שנים';\n            },\n        },\n        meridiemParse: /אחה\"צ|לפנה\"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,\n        isPM: function (input) {\n            return /^(אחה\"צ|אחרי הצהריים|בערב)$/.test(input);\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 5) {\n                return 'לפנות בוקר';\n            } else if (hour < 10) {\n                return 'בבוקר';\n            } else if (hour < 12) {\n                return isLower ? 'לפנה\"צ' : 'לפני הצהריים';\n            } else if (hour < 18) {\n                return isLower ? 'אחה\"צ' : 'אחרי הצהריים';\n            } else {\n                return 'בערב';\n            }\n        },\n    });\n\n    return he;\n\n})));\n","//! moment.js locale configuration\n//! locale : Hindi [hi]\n//! author : Mayank Singhal : https://github.com/mayanksinghal\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            1: '१',\n            2: '२',\n            3: '३',\n            4: '४',\n            5: '५',\n            6: '६',\n            7: '७',\n            8: '८',\n            9: '९',\n            0: '०',\n        },\n        numberMap = {\n            '१': '1',\n            '२': '2',\n            '३': '3',\n            '४': '4',\n            '५': '5',\n            '६': '6',\n            '७': '7',\n            '८': '8',\n            '९': '9',\n            '०': '0',\n        },\n        monthsParse = [\n            /^जन/i,\n            /^फ़र|फर/i,\n            /^मार्च/i,\n            /^अप्रै/i,\n            /^मई/i,\n            /^जून/i,\n            /^जुल/i,\n            /^अग/i,\n            /^सितं|सित/i,\n            /^अक्टू/i,\n            /^नव|नवं/i,\n            /^दिसं|दिस/i,\n        ],\n        shortMonthsParse = [\n            /^जन/i,\n            /^फ़र/i,\n            /^मार्च/i,\n            /^अप्रै/i,\n            /^मई/i,\n            /^जून/i,\n            /^जुल/i,\n            /^अग/i,\n            /^सित/i,\n            /^अक्टू/i,\n            /^नव/i,\n            /^दिस/i,\n        ];\n\n    var hi = moment.defineLocale('hi', {\n        months: {\n            format: 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split(\n                '_'\n            ),\n            standalone: 'जनवरी_फरवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितंबर_अक्टूबर_नवंबर_दिसंबर'.split(\n                '_'\n            ),\n        },\n        monthsShort: 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split(\n            '_'\n        ),\n        weekdays: 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),\n        weekdaysShort: 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split('_'),\n        weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),\n        longDateFormat: {\n            LT: 'A h:mm बजे',\n            LTS: 'A h:mm:ss बजे',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY, A h:mm बजे',\n            LLLL: 'dddd, D MMMM YYYY, A h:mm बजे',\n        },\n\n        monthsParse: monthsParse,\n        longMonthsParse: monthsParse,\n        shortMonthsParse: shortMonthsParse,\n\n        monthsRegex: /^(जनवरी|जन\\.?|फ़रवरी|फरवरी|फ़र\\.?|मार्च?|अप्रैल|अप्रै\\.?|मई?|जून?|जुलाई|जुल\\.?|अगस्त|अग\\.?|सितम्बर|सितंबर|सित\\.?|अक्टूबर|अक्टू\\.?|नवम्बर|नवंबर|नव\\.?|दिसम्बर|दिसंबर|दिस\\.?)/i,\n\n        monthsShortRegex: /^(जनवरी|जन\\.?|फ़रवरी|फरवरी|फ़र\\.?|मार्च?|अप्रैल|अप्रै\\.?|मई?|जून?|जुलाई|जुल\\.?|अगस्त|अग\\.?|सितम्बर|सितंबर|सित\\.?|अक्टूबर|अक्टू\\.?|नवम्बर|नवंबर|नव\\.?|दिसम्बर|दिसंबर|दिस\\.?)/i,\n\n        monthsStrictRegex: /^(जनवरी?|फ़रवरी|फरवरी?|मार्च?|अप्रैल?|मई?|जून?|जुलाई?|अगस्त?|सितम्बर|सितंबर|सित?\\.?|अक्टूबर|अक्टू\\.?|नवम्बर|नवंबर?|दिसम्बर|दिसंबर?)/i,\n\n        monthsShortStrictRegex: /^(जन\\.?|फ़र\\.?|मार्च?|अप्रै\\.?|मई?|जून?|जुल\\.?|अग\\.?|सित\\.?|अक्टू\\.?|नव\\.?|दिस\\.?)/i,\n\n        calendar: {\n            sameDay: '[आज] LT',\n            nextDay: '[कल] LT',\n            nextWeek: 'dddd, LT',\n            lastDay: '[कल] LT',\n            lastWeek: '[पिछले] dddd, LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s में',\n            past: '%s पहले',\n            s: 'कुछ ही क्षण',\n            ss: '%d सेकंड',\n            m: 'एक मिनट',\n            mm: '%d मिनट',\n            h: 'एक घंटा',\n            hh: '%d घंटे',\n            d: 'एक दिन',\n            dd: '%d दिन',\n            M: 'एक महीने',\n            MM: '%d महीने',\n            y: 'एक वर्ष',\n            yy: '%d वर्ष',\n        },\n        preparse: function (string) {\n            return string.replace(/[१२३४५६७८९०]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        // Hindi notation for meridiems are quite fuzzy in practice. While there exists\n        // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi.\n        meridiemParse: /रात|सुबह|दोपहर|शाम/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'रात') {\n                return hour < 4 ? hour : hour + 12;\n            } else if (meridiem === 'सुबह') {\n                return hour;\n            } else if (meridiem === 'दोपहर') {\n                return hour >= 10 ? hour : hour + 12;\n            } else if (meridiem === 'शाम') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'रात';\n            } else if (hour < 10) {\n                return 'सुबह';\n            } else if (hour < 17) {\n                return 'दोपहर';\n            } else if (hour < 20) {\n                return 'शाम';\n            } else {\n                return 'रात';\n            }\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 6th is the first week of the year.\n        },\n    });\n\n    return hi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Croatian [hr]\n//! author : Bojan Marković : https://github.com/bmarkovic\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function translate(number, withoutSuffix, key) {\n        var result = number + ' ';\n        switch (key) {\n            case 'ss':\n                if (number === 1) {\n                    result += 'sekunda';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'sekunde';\n                } else {\n                    result += 'sekundi';\n                }\n                return result;\n            case 'm':\n                return withoutSuffix ? 'jedna minuta' : 'jedne minute';\n            case 'mm':\n                if (number === 1) {\n                    result += 'minuta';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'minute';\n                } else {\n                    result += 'minuta';\n                }\n                return result;\n            case 'h':\n                return withoutSuffix ? 'jedan sat' : 'jednog sata';\n            case 'hh':\n                if (number === 1) {\n                    result += 'sat';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'sata';\n                } else {\n                    result += 'sati';\n                }\n                return result;\n            case 'dd':\n                if (number === 1) {\n                    result += 'dan';\n                } else {\n                    result += 'dana';\n                }\n                return result;\n            case 'MM':\n                if (number === 1) {\n                    result += 'mjesec';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'mjeseca';\n                } else {\n                    result += 'mjeseci';\n                }\n                return result;\n            case 'yy':\n                if (number === 1) {\n                    result += 'godina';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'godine';\n                } else {\n                    result += 'godina';\n                }\n                return result;\n        }\n    }\n\n    var hr = moment.defineLocale('hr', {\n        months: {\n            format: 'siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca'.split(\n                '_'\n            ),\n            standalone: 'siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split(\n                '_'\n            ),\n        },\n        monthsShort: 'sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(\n            '_'\n        ),\n        weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n        weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'Do MMMM YYYY',\n            LLL: 'Do MMMM YYYY H:mm',\n            LLLL: 'dddd, Do MMMM YYYY H:mm',\n        },\n        calendar: {\n            sameDay: '[danas u] LT',\n            nextDay: '[sutra u] LT',\n            nextWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[u] [nedjelju] [u] LT';\n                    case 3:\n                        return '[u] [srijedu] [u] LT';\n                    case 6:\n                        return '[u] [subotu] [u] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[u] dddd [u] LT';\n                }\n            },\n            lastDay: '[jučer u] LT',\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[prošlu] [nedjelju] [u] LT';\n                    case 3:\n                        return '[prošlu] [srijedu] [u] LT';\n                    case 6:\n                        return '[prošle] [subote] [u] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[prošli] dddd [u] LT';\n                }\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'za %s',\n            past: 'prije %s',\n            s: 'par sekundi',\n            ss: translate,\n            m: translate,\n            mm: translate,\n            h: translate,\n            hh: translate,\n            d: 'dan',\n            dd: translate,\n            M: 'mjesec',\n            MM: translate,\n            y: 'godinu',\n            yy: translate,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return hr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Hungarian [hu]\n//! author : Adam Brunner : https://github.com/adambrunner\n//! author : Peter Viszt  : https://github.com/passatgt\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var weekEndings = 'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(\n        ' '\n    );\n    function translate(number, withoutSuffix, key, isFuture) {\n        var num = number;\n        switch (key) {\n            case 's':\n                return isFuture || withoutSuffix\n                    ? 'néhány másodperc'\n                    : 'néhány másodperce';\n            case 'ss':\n                return num + (isFuture || withoutSuffix)\n                    ? ' másodperc'\n                    : ' másodperce';\n            case 'm':\n                return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce');\n            case 'mm':\n                return num + (isFuture || withoutSuffix ? ' perc' : ' perce');\n            case 'h':\n                return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája');\n            case 'hh':\n                return num + (isFuture || withoutSuffix ? ' óra' : ' órája');\n            case 'd':\n                return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja');\n            case 'dd':\n                return num + (isFuture || withoutSuffix ? ' nap' : ' napja');\n            case 'M':\n                return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n            case 'MM':\n                return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n            case 'y':\n                return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve');\n            case 'yy':\n                return num + (isFuture || withoutSuffix ? ' év' : ' éve');\n        }\n        return '';\n    }\n    function week(isFuture) {\n        return (\n            (isFuture ? '' : '[múlt] ') +\n            '[' +\n            weekEndings[this.day()] +\n            '] LT[-kor]'\n        );\n    }\n\n    var hu = moment.defineLocale('hu', {\n        months: 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split(\n            '_'\n        ),\n        monthsShort: 'jan._feb._márc._ápr._máj._jún._júl._aug._szept._okt._nov._dec.'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat'.split('_'),\n        weekdaysShort: 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'),\n        weekdaysMin: 'v_h_k_sze_cs_p_szo'.split('_'),\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'YYYY.MM.DD.',\n            LL: 'YYYY. MMMM D.',\n            LLL: 'YYYY. MMMM D. H:mm',\n            LLLL: 'YYYY. MMMM D., dddd H:mm',\n        },\n        meridiemParse: /de|du/i,\n        isPM: function (input) {\n            return input.charAt(1).toLowerCase() === 'u';\n        },\n        meridiem: function (hours, minutes, isLower) {\n            if (hours < 12) {\n                return isLower === true ? 'de' : 'DE';\n            } else {\n                return isLower === true ? 'du' : 'DU';\n            }\n        },\n        calendar: {\n            sameDay: '[ma] LT[-kor]',\n            nextDay: '[holnap] LT[-kor]',\n            nextWeek: function () {\n                return week.call(this, true);\n            },\n            lastDay: '[tegnap] LT[-kor]',\n            lastWeek: function () {\n                return week.call(this, false);\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s múlva',\n            past: '%s',\n            s: translate,\n            ss: translate,\n            m: translate,\n            mm: translate,\n            h: translate,\n            hh: translate,\n            d: translate,\n            dd: translate,\n            M: translate,\n            MM: translate,\n            y: translate,\n            yy: translate,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return hu;\n\n})));\n","//! moment.js locale configuration\n//! locale : Armenian [hy-am]\n//! author : Armendarabyan : https://github.com/armendarabyan\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var hyAm = moment.defineLocale('hy-am', {\n        months: {\n            format: 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split(\n                '_'\n            ),\n            standalone: 'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split(\n                '_'\n            ),\n        },\n        monthsShort: 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'),\n        weekdays: 'կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ'.split(\n            '_'\n        ),\n        weekdaysShort: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),\n        weekdaysMin: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY թ.',\n            LLL: 'D MMMM YYYY թ., HH:mm',\n            LLLL: 'dddd, D MMMM YYYY թ., HH:mm',\n        },\n        calendar: {\n            sameDay: '[այսօր] LT',\n            nextDay: '[վաղը] LT',\n            lastDay: '[երեկ] LT',\n            nextWeek: function () {\n                return 'dddd [օրը ժամը] LT';\n            },\n            lastWeek: function () {\n                return '[անցած] dddd [օրը ժամը] LT';\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s հետո',\n            past: '%s առաջ',\n            s: 'մի քանի վայրկյան',\n            ss: '%d վայրկյան',\n            m: 'րոպե',\n            mm: '%d րոպե',\n            h: 'ժամ',\n            hh: '%d ժամ',\n            d: 'օր',\n            dd: '%d օր',\n            M: 'ամիս',\n            MM: '%d ամիս',\n            y: 'տարի',\n            yy: '%d տարի',\n        },\n        meridiemParse: /գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,\n        isPM: function (input) {\n            return /^(ցերեկվա|երեկոյան)$/.test(input);\n        },\n        meridiem: function (hour) {\n            if (hour < 4) {\n                return 'գիշերվա';\n            } else if (hour < 12) {\n                return 'առավոտվա';\n            } else if (hour < 17) {\n                return 'ցերեկվա';\n            } else {\n                return 'երեկոյան';\n            }\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}|\\d{1,2}-(ին|րդ)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'DDD':\n                case 'w':\n                case 'W':\n                case 'DDDo':\n                    if (number === 1) {\n                        return number + '-ին';\n                    }\n                    return number + '-րդ';\n                default:\n                    return number;\n            }\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return hyAm;\n\n})));\n","//! moment.js locale configuration\n//! locale : Indonesian [id]\n//! author : Mohammad Satrio Utomo : https://github.com/tyok\n//! reference: http://id.wikisource.org/wiki/Pedoman_Umum_Ejaan_Bahasa_Indonesia_yang_Disempurnakan\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var id = moment.defineLocale('id', {\n        months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des'.split('_'),\n        weekdays: 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'),\n        weekdaysShort: 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'),\n        weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'),\n        longDateFormat: {\n            LT: 'HH.mm',\n            LTS: 'HH.mm.ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY [pukul] HH.mm',\n            LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n        },\n        meridiemParse: /pagi|siang|sore|malam/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'pagi') {\n                return hour;\n            } else if (meridiem === 'siang') {\n                return hour >= 11 ? hour : hour + 12;\n            } else if (meridiem === 'sore' || meridiem === 'malam') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hours, minutes, isLower) {\n            if (hours < 11) {\n                return 'pagi';\n            } else if (hours < 15) {\n                return 'siang';\n            } else if (hours < 19) {\n                return 'sore';\n            } else {\n                return 'malam';\n            }\n        },\n        calendar: {\n            sameDay: '[Hari ini pukul] LT',\n            nextDay: '[Besok pukul] LT',\n            nextWeek: 'dddd [pukul] LT',\n            lastDay: '[Kemarin pukul] LT',\n            lastWeek: 'dddd [lalu pukul] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'dalam %s',\n            past: '%s yang lalu',\n            s: 'beberapa detik',\n            ss: '%d detik',\n            m: 'semenit',\n            mm: '%d menit',\n            h: 'sejam',\n            hh: '%d jam',\n            d: 'sehari',\n            dd: '%d hari',\n            M: 'sebulan',\n            MM: '%d bulan',\n            y: 'setahun',\n            yy: '%d tahun',\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 6th is the first week of the year.\n        },\n    });\n\n    return id;\n\n})));\n","//! moment.js locale configuration\n//! locale : Icelandic [is]\n//! author : Hinrik Örn Sigurðsson : https://github.com/hinrik\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function plural(n) {\n        if (n % 100 === 11) {\n            return true;\n        } else if (n % 10 === 1) {\n            return false;\n        }\n        return true;\n    }\n    function translate(number, withoutSuffix, key, isFuture) {\n        var result = number + ' ';\n        switch (key) {\n            case 's':\n                return withoutSuffix || isFuture\n                    ? 'nokkrar sekúndur'\n                    : 'nokkrum sekúndum';\n            case 'ss':\n                if (plural(number)) {\n                    return (\n                        result +\n                        (withoutSuffix || isFuture ? 'sekúndur' : 'sekúndum')\n                    );\n                }\n                return result + 'sekúnda';\n            case 'm':\n                return withoutSuffix ? 'mínúta' : 'mínútu';\n            case 'mm':\n                if (plural(number)) {\n                    return (\n                        result + (withoutSuffix || isFuture ? 'mínútur' : 'mínútum')\n                    );\n                } else if (withoutSuffix) {\n                    return result + 'mínúta';\n                }\n                return result + 'mínútu';\n            case 'hh':\n                if (plural(number)) {\n                    return (\n                        result +\n                        (withoutSuffix || isFuture\n                            ? 'klukkustundir'\n                            : 'klukkustundum')\n                    );\n                }\n                return result + 'klukkustund';\n            case 'd':\n                if (withoutSuffix) {\n                    return 'dagur';\n                }\n                return isFuture ? 'dag' : 'degi';\n            case 'dd':\n                if (plural(number)) {\n                    if (withoutSuffix) {\n                        return result + 'dagar';\n                    }\n                    return result + (isFuture ? 'daga' : 'dögum');\n                } else if (withoutSuffix) {\n                    return result + 'dagur';\n                }\n                return result + (isFuture ? 'dag' : 'degi');\n            case 'M':\n                if (withoutSuffix) {\n                    return 'mánuður';\n                }\n                return isFuture ? 'mánuð' : 'mánuði';\n            case 'MM':\n                if (plural(number)) {\n                    if (withoutSuffix) {\n                        return result + 'mánuðir';\n                    }\n                    return result + (isFuture ? 'mánuði' : 'mánuðum');\n                } else if (withoutSuffix) {\n                    return result + 'mánuður';\n                }\n                return result + (isFuture ? 'mánuð' : 'mánuði');\n            case 'y':\n                return withoutSuffix || isFuture ? 'ár' : 'ári';\n            case 'yy':\n                if (plural(number)) {\n                    return result + (withoutSuffix || isFuture ? 'ár' : 'árum');\n                }\n                return result + (withoutSuffix || isFuture ? 'ár' : 'ári');\n        }\n    }\n\n    var is = moment.defineLocale('is', {\n        months: 'janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember'.split(\n            '_'\n        ),\n        monthsShort: 'jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des'.split('_'),\n        weekdays: 'sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur'.split(\n            '_'\n        ),\n        weekdaysShort: 'sun_mán_þri_mið_fim_fös_lau'.split('_'),\n        weekdaysMin: 'Su_Má_Þr_Mi_Fi_Fö_La'.split('_'),\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY [kl.] H:mm',\n            LLLL: 'dddd, D. MMMM YYYY [kl.] H:mm',\n        },\n        calendar: {\n            sameDay: '[í dag kl.] LT',\n            nextDay: '[á morgun kl.] LT',\n            nextWeek: 'dddd [kl.] LT',\n            lastDay: '[í gær kl.] LT',\n            lastWeek: '[síðasta] dddd [kl.] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'eftir %s',\n            past: 'fyrir %s síðan',\n            s: translate,\n            ss: translate,\n            m: translate,\n            mm: translate,\n            h: 'klukkustund',\n            hh: translate,\n            d: translate,\n            dd: translate,\n            M: translate,\n            MM: translate,\n            y: translate,\n            yy: translate,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return is;\n\n})));\n","//! moment.js locale configuration\n//! locale : Italian (Switzerland) [it-ch]\n//! author : xfh : https://github.com/xfh\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var itCh = moment.defineLocale('it-ch', {\n        months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split(\n            '_'\n        ),\n        monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\n        weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split(\n            '_'\n        ),\n        weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\n        weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Oggi alle] LT',\n            nextDay: '[Domani alle] LT',\n            nextWeek: 'dddd [alle] LT',\n            lastDay: '[Ieri alle] LT',\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[la scorsa] dddd [alle] LT';\n                    default:\n                        return '[lo scorso] dddd [alle] LT';\n                }\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: function (s) {\n                return (/^[0-9].+$/.test(s) ? 'tra' : 'in') + ' ' + s;\n            },\n            past: '%s fa',\n            s: 'alcuni secondi',\n            ss: '%d secondi',\n            m: 'un minuto',\n            mm: '%d minuti',\n            h: \"un'ora\",\n            hh: '%d ore',\n            d: 'un giorno',\n            dd: '%d giorni',\n            M: 'un mese',\n            MM: '%d mesi',\n            y: 'un anno',\n            yy: '%d anni',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}º/,\n        ordinal: '%dº',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return itCh;\n\n})));\n","//! moment.js locale configuration\n//! locale : Italian [it]\n//! author : Lorenzo : https://github.com/aliem\n//! author: Mattia Larentis: https://github.com/nostalgiaz\n//! author: Marco : https://github.com/Manfre98\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var it = moment.defineLocale('it', {\n        months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split(\n            '_'\n        ),\n        monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\n        weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split(\n            '_'\n        ),\n        weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\n        weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: function () {\n                return (\n                    '[Oggi a' +\n                    (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n                    ']LT'\n                );\n            },\n            nextDay: function () {\n                return (\n                    '[Domani a' +\n                    (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n                    ']LT'\n                );\n            },\n            nextWeek: function () {\n                return (\n                    'dddd [a' +\n                    (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n                    ']LT'\n                );\n            },\n            lastDay: function () {\n                return (\n                    '[Ieri a' +\n                    (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n                    ']LT'\n                );\n            },\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return (\n                            '[La scorsa] dddd [a' +\n                            (this.hours() > 1\n                                ? 'lle '\n                                : this.hours() === 0\n                                ? ' '\n                                : \"ll'\") +\n                            ']LT'\n                        );\n                    default:\n                        return (\n                            '[Lo scorso] dddd [a' +\n                            (this.hours() > 1\n                                ? 'lle '\n                                : this.hours() === 0\n                                ? ' '\n                                : \"ll'\") +\n                            ']LT'\n                        );\n                }\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'tra %s',\n            past: '%s fa',\n            s: 'alcuni secondi',\n            ss: '%d secondi',\n            m: 'un minuto',\n            mm: '%d minuti',\n            h: \"un'ora\",\n            hh: '%d ore',\n            d: 'un giorno',\n            dd: '%d giorni',\n            w: 'una settimana',\n            ww: '%d settimane',\n            M: 'un mese',\n            MM: '%d mesi',\n            y: 'un anno',\n            yy: '%d anni',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}º/,\n        ordinal: '%dº',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return it;\n\n})));\n","//! moment.js locale configuration\n//! locale : Japanese [ja]\n//! author : LI Long : https://github.com/baryon\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var ja = moment.defineLocale('ja', {\n        eras: [\n            {\n                since: '2019-05-01',\n                offset: 1,\n                name: '令和',\n                narrow: '㋿',\n                abbr: 'R',\n            },\n            {\n                since: '1989-01-08',\n                until: '2019-04-30',\n                offset: 1,\n                name: '平成',\n                narrow: '㍻',\n                abbr: 'H',\n            },\n            {\n                since: '1926-12-25',\n                until: '1989-01-07',\n                offset: 1,\n                name: '昭和',\n                narrow: '㍼',\n                abbr: 'S',\n            },\n            {\n                since: '1912-07-30',\n                until: '1926-12-24',\n                offset: 1,\n                name: '大正',\n                narrow: '㍽',\n                abbr: 'T',\n            },\n            {\n                since: '1873-01-01',\n                until: '1912-07-29',\n                offset: 6,\n                name: '明治',\n                narrow: '㍾',\n                abbr: 'M',\n            },\n            {\n                since: '0001-01-01',\n                until: '1873-12-31',\n                offset: 1,\n                name: '西暦',\n                narrow: 'AD',\n                abbr: 'AD',\n            },\n            {\n                since: '0000-12-31',\n                until: -Infinity,\n                offset: 1,\n                name: '紀元前',\n                narrow: 'BC',\n                abbr: 'BC',\n            },\n        ],\n        eraYearOrdinalRegex: /(元|\\d+)年/,\n        eraYearOrdinalParse: function (input, match) {\n            return match[1] === '元' ? 1 : parseInt(match[1] || input, 10);\n        },\n        months: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n        monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n            '_'\n        ),\n        weekdays: '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'),\n        weekdaysShort: '日_月_火_水_木_金_土'.split('_'),\n        weekdaysMin: '日_月_火_水_木_金_土'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'YYYY/MM/DD',\n            LL: 'YYYY年M月D日',\n            LLL: 'YYYY年M月D日 HH:mm',\n            LLLL: 'YYYY年M月D日 dddd HH:mm',\n            l: 'YYYY/MM/DD',\n            ll: 'YYYY年M月D日',\n            lll: 'YYYY年M月D日 HH:mm',\n            llll: 'YYYY年M月D日(ddd) HH:mm',\n        },\n        meridiemParse: /午前|午後/i,\n        isPM: function (input) {\n            return input === '午後';\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return '午前';\n            } else {\n                return '午後';\n            }\n        },\n        calendar: {\n            sameDay: '[今日] LT',\n            nextDay: '[明日] LT',\n            nextWeek: function (now) {\n                if (now.week() !== this.week()) {\n                    return '[来週]dddd LT';\n                } else {\n                    return 'dddd LT';\n                }\n            },\n            lastDay: '[昨日] LT',\n            lastWeek: function (now) {\n                if (this.week() !== now.week()) {\n                    return '[先週]dddd LT';\n                } else {\n                    return 'dddd LT';\n                }\n            },\n            sameElse: 'L',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}日/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'y':\n                    return number === 1 ? '元年' : number + '年';\n                case 'd':\n                case 'D':\n                case 'DDD':\n                    return number + '日';\n                default:\n                    return number;\n            }\n        },\n        relativeTime: {\n            future: '%s後',\n            past: '%s前',\n            s: '数秒',\n            ss: '%d秒',\n            m: '1分',\n            mm: '%d分',\n            h: '1時間',\n            hh: '%d時間',\n            d: '1日',\n            dd: '%d日',\n            M: '1ヶ月',\n            MM: '%dヶ月',\n            y: '1年',\n            yy: '%d年',\n        },\n    });\n\n    return ja;\n\n})));\n","//! moment.js locale configuration\n//! locale : Javanese [jv]\n//! author : Rony Lantip : https://github.com/lantip\n//! reference: http://jv.wikipedia.org/wiki/Basa_Jawa\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var jv = moment.defineLocale('jv', {\n        months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des'.split('_'),\n        weekdays: 'Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu'.split('_'),\n        weekdaysShort: 'Min_Sen_Sel_Reb_Kem_Jem_Sep'.split('_'),\n        weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sp'.split('_'),\n        longDateFormat: {\n            LT: 'HH.mm',\n            LTS: 'HH.mm.ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY [pukul] HH.mm',\n            LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n        },\n        meridiemParse: /enjing|siyang|sonten|ndalu/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'enjing') {\n                return hour;\n            } else if (meridiem === 'siyang') {\n                return hour >= 11 ? hour : hour + 12;\n            } else if (meridiem === 'sonten' || meridiem === 'ndalu') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hours, minutes, isLower) {\n            if (hours < 11) {\n                return 'enjing';\n            } else if (hours < 15) {\n                return 'siyang';\n            } else if (hours < 19) {\n                return 'sonten';\n            } else {\n                return 'ndalu';\n            }\n        },\n        calendar: {\n            sameDay: '[Dinten puniko pukul] LT',\n            nextDay: '[Mbenjang pukul] LT',\n            nextWeek: 'dddd [pukul] LT',\n            lastDay: '[Kala wingi pukul] LT',\n            lastWeek: 'dddd [kepengker pukul] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'wonten ing %s',\n            past: '%s ingkang kepengker',\n            s: 'sawetawis detik',\n            ss: '%d detik',\n            m: 'setunggal menit',\n            mm: '%d menit',\n            h: 'setunggal jam',\n            hh: '%d jam',\n            d: 'sedinten',\n            dd: '%d dinten',\n            M: 'sewulan',\n            MM: '%d wulan',\n            y: 'setaun',\n            yy: '%d taun',\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return jv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Georgian [ka]\n//! author : Irakli Janiashvili : https://github.com/IrakliJani\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var ka = moment.defineLocale('ka', {\n        months: 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split(\n            '_'\n        ),\n        monthsShort: 'იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ'.split('_'),\n        weekdays: {\n            standalone: 'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split(\n                '_'\n            ),\n            format: 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split(\n                '_'\n            ),\n            isFormat: /(წინა|შემდეგ)/,\n        },\n        weekdaysShort: 'კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ'.split('_'),\n        weekdaysMin: 'კვ_ორ_სა_ოთ_ხუ_პა_შა'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[დღეს] LT[-ზე]',\n            nextDay: '[ხვალ] LT[-ზე]',\n            lastDay: '[გუშინ] LT[-ზე]',\n            nextWeek: '[შემდეგ] dddd LT[-ზე]',\n            lastWeek: '[წინა] dddd LT-ზე',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: function (s) {\n                return s.replace(/(წამ|წუთ|საათ|წელ|დღ|თვ)(ი|ე)/, function (\n                    $0,\n                    $1,\n                    $2\n                ) {\n                    return $2 === 'ი' ? $1 + 'ში' : $1 + $2 + 'ში';\n                });\n            },\n            past: function (s) {\n                if (/(წამი|წუთი|საათი|დღე|თვე)/.test(s)) {\n                    return s.replace(/(ი|ე)$/, 'ის წინ');\n                }\n                if (/წელი/.test(s)) {\n                    return s.replace(/წელი$/, 'წლის წინ');\n                }\n                return s;\n            },\n            s: 'რამდენიმე წამი',\n            ss: '%d წამი',\n            m: 'წუთი',\n            mm: '%d წუთი',\n            h: 'საათი',\n            hh: '%d საათი',\n            d: 'დღე',\n            dd: '%d დღე',\n            M: 'თვე',\n            MM: '%d თვე',\n            y: 'წელი',\n            yy: '%d წელი',\n        },\n        dayOfMonthOrdinalParse: /0|1-ლი|მე-\\d{1,2}|\\d{1,2}-ე/,\n        ordinal: function (number) {\n            if (number === 0) {\n                return number;\n            }\n            if (number === 1) {\n                return number + '-ლი';\n            }\n            if (\n                number < 20 ||\n                (number <= 100 && number % 20 === 0) ||\n                number % 100 === 0\n            ) {\n                return 'მე-' + number;\n            }\n            return number + '-ე';\n        },\n        week: {\n            dow: 1,\n            doy: 7,\n        },\n    });\n\n    return ka;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kazakh [kk]\n//! authors : Nurlan Rakhimzhanov : https://github.com/nurlan\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var suffixes = {\n        0: '-ші',\n        1: '-ші',\n        2: '-ші',\n        3: '-ші',\n        4: '-ші',\n        5: '-ші',\n        6: '-шы',\n        7: '-ші',\n        8: '-ші',\n        9: '-шы',\n        10: '-шы',\n        20: '-шы',\n        30: '-шы',\n        40: '-шы',\n        50: '-ші',\n        60: '-шы',\n        70: '-ші',\n        80: '-ші',\n        90: '-шы',\n        100: '-ші',\n    };\n\n    var kk = moment.defineLocale('kk', {\n        months: 'қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан'.split(\n            '_'\n        ),\n        monthsShort: 'қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел'.split('_'),\n        weekdays: 'жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі'.split(\n            '_'\n        ),\n        weekdaysShort: 'жек_дүй_сей_сәр_бей_жұм_сен'.split('_'),\n        weekdaysMin: 'жк_дй_сй_ср_бй_жм_сн'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Бүгін сағат] LT',\n            nextDay: '[Ертең сағат] LT',\n            nextWeek: 'dddd [сағат] LT',\n            lastDay: '[Кеше сағат] LT',\n            lastWeek: '[Өткен аптаның] dddd [сағат] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s ішінде',\n            past: '%s бұрын',\n            s: 'бірнеше секунд',\n            ss: '%d секунд',\n            m: 'бір минут',\n            mm: '%d минут',\n            h: 'бір сағат',\n            hh: '%d сағат',\n            d: 'бір күн',\n            dd: '%d күн',\n            M: 'бір ай',\n            MM: '%d ай',\n            y: 'бір жыл',\n            yy: '%d жыл',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-(ші|шы)/,\n        ordinal: function (number) {\n            var a = number % 10,\n                b = number >= 100 ? 100 : null;\n            return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return kk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Cambodian [km]\n//! author : Kruy Vanna : https://github.com/kruyvanna\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            1: '១',\n            2: '២',\n            3: '៣',\n            4: '៤',\n            5: '៥',\n            6: '៦',\n            7: '៧',\n            8: '៨',\n            9: '៩',\n            0: '០',\n        },\n        numberMap = {\n            '១': '1',\n            '២': '2',\n            '៣': '3',\n            '៤': '4',\n            '៥': '5',\n            '៦': '6',\n            '៧': '7',\n            '៨': '8',\n            '៩': '9',\n            '០': '0',\n        };\n\n    var km = moment.defineLocale('km', {\n        months: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(\n            '_'\n        ),\n        monthsShort: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(\n            '_'\n        ),\n        weekdays: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'),\n        weekdaysShort: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),\n        weekdaysMin: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        meridiemParse: /ព្រឹក|ល្ងាច/,\n        isPM: function (input) {\n            return input === 'ល្ងាច';\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'ព្រឹក';\n            } else {\n                return 'ល្ងាច';\n            }\n        },\n        calendar: {\n            sameDay: '[ថ្ងៃនេះ ម៉ោង] LT',\n            nextDay: '[ស្អែក ម៉ោង] LT',\n            nextWeek: 'dddd [ម៉ោង] LT',\n            lastDay: '[ម្សិលមិញ ម៉ោង] LT',\n            lastWeek: 'dddd [សប្តាហ៍មុន] [ម៉ោង] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%sទៀត',\n            past: '%sមុន',\n            s: 'ប៉ុន្មានវិនាទី',\n            ss: '%d វិនាទី',\n            m: 'មួយនាទី',\n            mm: '%d នាទី',\n            h: 'មួយម៉ោង',\n            hh: '%d ម៉ោង',\n            d: 'មួយថ្ងៃ',\n            dd: '%d ថ្ងៃ',\n            M: 'មួយខែ',\n            MM: '%d ខែ',\n            y: 'មួយឆ្នាំ',\n            yy: '%d ឆ្នាំ',\n        },\n        dayOfMonthOrdinalParse: /ទី\\d{1,2}/,\n        ordinal: 'ទី%d',\n        preparse: function (string) {\n            return string.replace(/[១២៣៤៥៦៧៨៩០]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return km;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kannada [kn]\n//! author : Rajeev Naik : https://github.com/rajeevnaikte\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            1: '೧',\n            2: '೨',\n            3: '೩',\n            4: '೪',\n            5: '೫',\n            6: '೬',\n            7: '೭',\n            8: '೮',\n            9: '೯',\n            0: '೦',\n        },\n        numberMap = {\n            '೧': '1',\n            '೨': '2',\n            '೩': '3',\n            '೪': '4',\n            '೫': '5',\n            '೬': '6',\n            '೭': '7',\n            '೮': '8',\n            '೯': '9',\n            '೦': '0',\n        };\n\n    var kn = moment.defineLocale('kn', {\n        months: 'ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್'.split(\n            '_'\n        ),\n        monthsShort: 'ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋ_ನವೆಂ_ಡಿಸೆಂ'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ'.split(\n            '_'\n        ),\n        weekdaysShort: 'ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ'.split('_'),\n        weekdaysMin: 'ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ'.split('_'),\n        longDateFormat: {\n            LT: 'A h:mm',\n            LTS: 'A h:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY, A h:mm',\n            LLLL: 'dddd, D MMMM YYYY, A h:mm',\n        },\n        calendar: {\n            sameDay: '[ಇಂದು] LT',\n            nextDay: '[ನಾಳೆ] LT',\n            nextWeek: 'dddd, LT',\n            lastDay: '[ನಿನ್ನೆ] LT',\n            lastWeek: '[ಕೊನೆಯ] dddd, LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s ನಂತರ',\n            past: '%s ಹಿಂದೆ',\n            s: 'ಕೆಲವು ಕ್ಷಣಗಳು',\n            ss: '%d ಸೆಕೆಂಡುಗಳು',\n            m: 'ಒಂದು ನಿಮಿಷ',\n            mm: '%d ನಿಮಿಷ',\n            h: 'ಒಂದು ಗಂಟೆ',\n            hh: '%d ಗಂಟೆ',\n            d: 'ಒಂದು ದಿನ',\n            dd: '%d ದಿನ',\n            M: 'ಒಂದು ತಿಂಗಳು',\n            MM: '%d ತಿಂಗಳು',\n            y: 'ಒಂದು ವರ್ಷ',\n            yy: '%d ವರ್ಷ',\n        },\n        preparse: function (string) {\n            return string.replace(/[೧೨೩೪೫೬೭೮೯೦]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        meridiemParse: /ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'ರಾತ್ರಿ') {\n                return hour < 4 ? hour : hour + 12;\n            } else if (meridiem === 'ಬೆಳಿಗ್ಗೆ') {\n                return hour;\n            } else if (meridiem === 'ಮಧ್ಯಾಹ್ನ') {\n                return hour >= 10 ? hour : hour + 12;\n            } else if (meridiem === 'ಸಂಜೆ') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'ರಾತ್ರಿ';\n            } else if (hour < 10) {\n                return 'ಬೆಳಿಗ್ಗೆ';\n            } else if (hour < 17) {\n                return 'ಮಧ್ಯಾಹ್ನ';\n            } else if (hour < 20) {\n                return 'ಸಂಜೆ';\n            } else {\n                return 'ರಾತ್ರಿ';\n            }\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(ನೇ)/,\n        ordinal: function (number) {\n            return number + 'ನೇ';\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 6th is the first week of the year.\n        },\n    });\n\n    return kn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Korean [ko]\n//! author : Kyungwook, Park : https://github.com/kyungw00k\n//! author : Jeeeyul Lee <jeeeyul@gmail.com>\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var ko = moment.defineLocale('ko', {\n        months: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),\n        monthsShort: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split(\n            '_'\n        ),\n        weekdays: '일요일_월요일_화요일_수요일_목요일_금요일_토요일'.split('_'),\n        weekdaysShort: '일_월_화_수_목_금_토'.split('_'),\n        weekdaysMin: '일_월_화_수_목_금_토'.split('_'),\n        longDateFormat: {\n            LT: 'A h:mm',\n            LTS: 'A h:mm:ss',\n            L: 'YYYY.MM.DD.',\n            LL: 'YYYY년 MMMM D일',\n            LLL: 'YYYY년 MMMM D일 A h:mm',\n            LLLL: 'YYYY년 MMMM D일 dddd A h:mm',\n            l: 'YYYY.MM.DD.',\n            ll: 'YYYY년 MMMM D일',\n            lll: 'YYYY년 MMMM D일 A h:mm',\n            llll: 'YYYY년 MMMM D일 dddd A h:mm',\n        },\n        calendar: {\n            sameDay: '오늘 LT',\n            nextDay: '내일 LT',\n            nextWeek: 'dddd LT',\n            lastDay: '어제 LT',\n            lastWeek: '지난주 dddd LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s 후',\n            past: '%s 전',\n            s: '몇 초',\n            ss: '%d초',\n            m: '1분',\n            mm: '%d분',\n            h: '한 시간',\n            hh: '%d시간',\n            d: '하루',\n            dd: '%d일',\n            M: '한 달',\n            MM: '%d달',\n            y: '일 년',\n            yy: '%d년',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(일|월|주)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'd':\n                case 'D':\n                case 'DDD':\n                    return number + '일';\n                case 'M':\n                    return number + '월';\n                case 'w':\n                case 'W':\n                    return number + '주';\n                default:\n                    return number;\n            }\n        },\n        meridiemParse: /오전|오후/,\n        isPM: function (token) {\n            return token === '오후';\n        },\n        meridiem: function (hour, minute, isUpper) {\n            return hour < 12 ? '오전' : '오후';\n        },\n    });\n\n    return ko;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kurdish [ku]\n//! author : Shahram Mebashar : https://github.com/ShahramMebashar\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            1: '١',\n            2: '٢',\n            3: '٣',\n            4: '٤',\n            5: '٥',\n            6: '٦',\n            7: '٧',\n            8: '٨',\n            9: '٩',\n            0: '٠',\n        },\n        numberMap = {\n            '١': '1',\n            '٢': '2',\n            '٣': '3',\n            '٤': '4',\n            '٥': '5',\n            '٦': '6',\n            '٧': '7',\n            '٨': '8',\n            '٩': '9',\n            '٠': '0',\n        },\n        months = [\n            'کانونی دووەم',\n            'شوبات',\n            'ئازار',\n            'نیسان',\n            'ئایار',\n            'حوزەیران',\n            'تەمموز',\n            'ئاب',\n            'ئەیلوول',\n            'تشرینی یەكەم',\n            'تشرینی دووەم',\n            'كانونی یەکەم',\n        ];\n\n    var ku = moment.defineLocale('ku', {\n        months: months,\n        monthsShort: months,\n        weekdays: 'یه‌كشه‌ممه‌_دووشه‌ممه‌_سێشه‌ممه‌_چوارشه‌ممه‌_پێنجشه‌ممه‌_هه‌ینی_شه‌ممه‌'.split(\n            '_'\n        ),\n        weekdaysShort: 'یه‌كشه‌م_دووشه‌م_سێشه‌م_چوارشه‌م_پێنجشه‌م_هه‌ینی_شه‌ممه‌'.split(\n            '_'\n        ),\n        weekdaysMin: 'ی_د_س_چ_پ_ه_ش'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        meridiemParse: /ئێواره‌|به‌یانی/,\n        isPM: function (input) {\n            return /ئێواره‌/.test(input);\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'به‌یانی';\n            } else {\n                return 'ئێواره‌';\n            }\n        },\n        calendar: {\n            sameDay: '[ئه‌مرۆ كاتژمێر] LT',\n            nextDay: '[به‌یانی كاتژمێر] LT',\n            nextWeek: 'dddd [كاتژمێر] LT',\n            lastDay: '[دوێنێ كاتژمێر] LT',\n            lastWeek: 'dddd [كاتژمێر] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'له‌ %s',\n            past: '%s',\n            s: 'چه‌ند چركه‌یه‌ك',\n            ss: 'چركه‌ %d',\n            m: 'یه‌ك خوله‌ك',\n            mm: '%d خوله‌ك',\n            h: 'یه‌ك كاتژمێر',\n            hh: '%d كاتژمێر',\n            d: 'یه‌ك ڕۆژ',\n            dd: '%d ڕۆژ',\n            M: 'یه‌ك مانگ',\n            MM: '%d مانگ',\n            y: 'یه‌ك ساڵ',\n            yy: '%d ساڵ',\n        },\n        preparse: function (string) {\n            return string\n                .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n                    return numberMap[match];\n                })\n                .replace(/،/g, ',');\n        },\n        postformat: function (string) {\n            return string\n                .replace(/\\d/g, function (match) {\n                    return symbolMap[match];\n                })\n                .replace(/,/g, '،');\n        },\n        week: {\n            dow: 6, // Saturday is the first day of the week.\n            doy: 12, // The week that contains Jan 12th is the first week of the year.\n        },\n    });\n\n    return ku;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kyrgyz [ky]\n//! author : Chyngyz Arystan uulu : https://github.com/chyngyz\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var suffixes = {\n        0: '-чү',\n        1: '-чи',\n        2: '-чи',\n        3: '-чү',\n        4: '-чү',\n        5: '-чи',\n        6: '-чы',\n        7: '-чи',\n        8: '-чи',\n        9: '-чу',\n        10: '-чу',\n        20: '-чы',\n        30: '-чу',\n        40: '-чы',\n        50: '-чү',\n        60: '-чы',\n        70: '-чи',\n        80: '-чи',\n        90: '-чу',\n        100: '-чү',\n    };\n\n    var ky = moment.defineLocale('ky', {\n        months: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split(\n            '_'\n        ),\n        monthsShort: 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split(\n            '_'\n        ),\n        weekdays: 'Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби'.split(\n            '_'\n        ),\n        weekdaysShort: 'Жек_Дүй_Шей_Шар_Бей_Жум_Ише'.split('_'),\n        weekdaysMin: 'Жк_Дй_Шй_Шр_Бй_Жм_Иш'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Бүгүн саат] LT',\n            nextDay: '[Эртең саат] LT',\n            nextWeek: 'dddd [саат] LT',\n            lastDay: '[Кечээ саат] LT',\n            lastWeek: '[Өткөн аптанын] dddd [күнү] [саат] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s ичинде',\n            past: '%s мурун',\n            s: 'бирнече секунд',\n            ss: '%d секунд',\n            m: 'бир мүнөт',\n            mm: '%d мүнөт',\n            h: 'бир саат',\n            hh: '%d саат',\n            d: 'бир күн',\n            dd: '%d күн',\n            M: 'бир ай',\n            MM: '%d ай',\n            y: 'бир жыл',\n            yy: '%d жыл',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-(чи|чы|чү|чу)/,\n        ordinal: function (number) {\n            var a = number % 10,\n                b = number >= 100 ? 100 : null;\n            return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return ky;\n\n})));\n","//! moment.js locale configuration\n//! locale : Luxembourgish [lb]\n//! author : mweimerskirch : https://github.com/mweimerskirch\n//! author : David Raison : https://github.com/kwisatz\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function processRelativeTime(number, withoutSuffix, key, isFuture) {\n        var format = {\n            m: ['eng Minutt', 'enger Minutt'],\n            h: ['eng Stonn', 'enger Stonn'],\n            d: ['een Dag', 'engem Dag'],\n            M: ['ee Mount', 'engem Mount'],\n            y: ['ee Joer', 'engem Joer'],\n        };\n        return withoutSuffix ? format[key][0] : format[key][1];\n    }\n    function processFutureTime(string) {\n        var number = string.substr(0, string.indexOf(' '));\n        if (eifelerRegelAppliesToNumber(number)) {\n            return 'a ' + string;\n        }\n        return 'an ' + string;\n    }\n    function processPastTime(string) {\n        var number = string.substr(0, string.indexOf(' '));\n        if (eifelerRegelAppliesToNumber(number)) {\n            return 'viru ' + string;\n        }\n        return 'virun ' + string;\n    }\n    /**\n     * Returns true if the word before the given number loses the '-n' ending.\n     * e.g. 'an 10 Deeg' but 'a 5 Deeg'\n     *\n     * @param number {integer}\n     * @returns {boolean}\n     */\n    function eifelerRegelAppliesToNumber(number) {\n        number = parseInt(number, 10);\n        if (isNaN(number)) {\n            return false;\n        }\n        if (number < 0) {\n            // Negative Number --> always true\n            return true;\n        } else if (number < 10) {\n            // Only 1 digit\n            if (4 <= number && number <= 7) {\n                return true;\n            }\n            return false;\n        } else if (number < 100) {\n            // 2 digits\n            var lastDigit = number % 10,\n                firstDigit = number / 10;\n            if (lastDigit === 0) {\n                return eifelerRegelAppliesToNumber(firstDigit);\n            }\n            return eifelerRegelAppliesToNumber(lastDigit);\n        } else if (number < 10000) {\n            // 3 or 4 digits --> recursively check first digit\n            while (number >= 10) {\n                number = number / 10;\n            }\n            return eifelerRegelAppliesToNumber(number);\n        } else {\n            // Anything larger than 4 digits: recursively check first n-3 digits\n            number = number / 1000;\n            return eifelerRegelAppliesToNumber(number);\n        }\n    }\n\n    var lb = moment.defineLocale('lb', {\n        months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n            '_'\n        ),\n        monthsShort: 'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split(\n            '_'\n        ),\n        weekdaysShort: 'So._Mé._Dë._Më._Do._Fr._Sa.'.split('_'),\n        weekdaysMin: 'So_Mé_Dë_Më_Do_Fr_Sa'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'H:mm [Auer]',\n            LTS: 'H:mm:ss [Auer]',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY H:mm [Auer]',\n            LLLL: 'dddd, D. MMMM YYYY H:mm [Auer]',\n        },\n        calendar: {\n            sameDay: '[Haut um] LT',\n            sameElse: 'L',\n            nextDay: '[Muer um] LT',\n            nextWeek: 'dddd [um] LT',\n            lastDay: '[Gëschter um] LT',\n            lastWeek: function () {\n                // Different date string for 'Dënschdeg' (Tuesday) and 'Donneschdeg' (Thursday) due to phonological rule\n                switch (this.day()) {\n                    case 2:\n                    case 4:\n                        return '[Leschten] dddd [um] LT';\n                    default:\n                        return '[Leschte] dddd [um] LT';\n                }\n            },\n        },\n        relativeTime: {\n            future: processFutureTime,\n            past: processPastTime,\n            s: 'e puer Sekonnen',\n            ss: '%d Sekonnen',\n            m: processRelativeTime,\n            mm: '%d Minutten',\n            h: processRelativeTime,\n            hh: '%d Stonnen',\n            d: processRelativeTime,\n            dd: '%d Deeg',\n            M: processRelativeTime,\n            MM: '%d Méint',\n            y: processRelativeTime,\n            yy: '%d Joer',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return lb;\n\n})));\n","//! moment.js locale configuration\n//! locale : Lao [lo]\n//! author : Ryan Hart : https://github.com/ryanhart2\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var lo = moment.defineLocale('lo', {\n        months: 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split(\n            '_'\n        ),\n        monthsShort: 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split(\n            '_'\n        ),\n        weekdays: 'ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),\n        weekdaysShort: 'ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),\n        weekdaysMin: 'ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'ວັນdddd D MMMM YYYY HH:mm',\n        },\n        meridiemParse: /ຕອນເຊົ້າ|ຕອນແລງ/,\n        isPM: function (input) {\n            return input === 'ຕອນແລງ';\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'ຕອນເຊົ້າ';\n            } else {\n                return 'ຕອນແລງ';\n            }\n        },\n        calendar: {\n            sameDay: '[ມື້ນີ້ເວລາ] LT',\n            nextDay: '[ມື້ອື່ນເວລາ] LT',\n            nextWeek: '[ວັນ]dddd[ໜ້າເວລາ] LT',\n            lastDay: '[ມື້ວານນີ້ເວລາ] LT',\n            lastWeek: '[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'ອີກ %s',\n            past: '%sຜ່ານມາ',\n            s: 'ບໍ່ເທົ່າໃດວິນາທີ',\n            ss: '%d ວິນາທີ',\n            m: '1 ນາທີ',\n            mm: '%d ນາທີ',\n            h: '1 ຊົ່ວໂມງ',\n            hh: '%d ຊົ່ວໂມງ',\n            d: '1 ມື້',\n            dd: '%d ມື້',\n            M: '1 ເດືອນ',\n            MM: '%d ເດືອນ',\n            y: '1 ປີ',\n            yy: '%d ປີ',\n        },\n        dayOfMonthOrdinalParse: /(ທີ່)\\d{1,2}/,\n        ordinal: function (number) {\n            return 'ທີ່' + number;\n        },\n    });\n\n    return lo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Lithuanian [lt]\n//! author : Mindaugas Mozūras : https://github.com/mmozuras\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var units = {\n        ss: 'sekundė_sekundžių_sekundes',\n        m: 'minutė_minutės_minutę',\n        mm: 'minutės_minučių_minutes',\n        h: 'valanda_valandos_valandą',\n        hh: 'valandos_valandų_valandas',\n        d: 'diena_dienos_dieną',\n        dd: 'dienos_dienų_dienas',\n        M: 'mėnuo_mėnesio_mėnesį',\n        MM: 'mėnesiai_mėnesių_mėnesius',\n        y: 'metai_metų_metus',\n        yy: 'metai_metų_metus',\n    };\n    function translateSeconds(number, withoutSuffix, key, isFuture) {\n        if (withoutSuffix) {\n            return 'kelios sekundės';\n        } else {\n            return isFuture ? 'kelių sekundžių' : 'kelias sekundes';\n        }\n    }\n    function translateSingular(number, withoutSuffix, key, isFuture) {\n        return withoutSuffix\n            ? forms(key)[0]\n            : isFuture\n            ? forms(key)[1]\n            : forms(key)[2];\n    }\n    function special(number) {\n        return number % 10 === 0 || (number > 10 && number < 20);\n    }\n    function forms(key) {\n        return units[key].split('_');\n    }\n    function translate(number, withoutSuffix, key, isFuture) {\n        var result = number + ' ';\n        if (number === 1) {\n            return (\n                result + translateSingular(number, withoutSuffix, key[0], isFuture)\n            );\n        } else if (withoutSuffix) {\n            return result + (special(number) ? forms(key)[1] : forms(key)[0]);\n        } else {\n            if (isFuture) {\n                return result + forms(key)[1];\n            } else {\n                return result + (special(number) ? forms(key)[1] : forms(key)[2]);\n            }\n        }\n    }\n    var lt = moment.defineLocale('lt', {\n        months: {\n            format: 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio'.split(\n                '_'\n            ),\n            standalone: 'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis'.split(\n                '_'\n            ),\n            isFormat: /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?|MMMM?(\\[[^\\[\\]]*\\]|\\s)+D[oD]?/,\n        },\n        monthsShort: 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'),\n        weekdays: {\n            format: 'sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį'.split(\n                '_'\n            ),\n            standalone: 'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis'.split(\n                '_'\n            ),\n            isFormat: /dddd HH:mm/,\n        },\n        weekdaysShort: 'Sek_Pir_Ant_Tre_Ket_Pen_Šeš'.split('_'),\n        weekdaysMin: 'S_P_A_T_K_Pn_Š'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'YYYY-MM-DD',\n            LL: 'YYYY [m.] MMMM D [d.]',\n            LLL: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n            LLLL: 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]',\n            l: 'YYYY-MM-DD',\n            ll: 'YYYY [m.] MMMM D [d.]',\n            lll: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n            llll: 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]',\n        },\n        calendar: {\n            sameDay: '[Šiandien] LT',\n            nextDay: '[Rytoj] LT',\n            nextWeek: 'dddd LT',\n            lastDay: '[Vakar] LT',\n            lastWeek: '[Praėjusį] dddd LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'po %s',\n            past: 'prieš %s',\n            s: translateSeconds,\n            ss: translate,\n            m: translateSingular,\n            mm: translate,\n            h: translateSingular,\n            hh: translate,\n            d: translateSingular,\n            dd: translate,\n            M: translateSingular,\n            MM: translate,\n            y: translateSingular,\n            yy: translate,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-oji/,\n        ordinal: function (number) {\n            return number + '-oji';\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return lt;\n\n})));\n","//! moment.js locale configuration\n//! locale : Latvian [lv]\n//! author : Kristaps Karlsons : https://github.com/skakri\n//! author : Jānis Elmeris : https://github.com/JanisE\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var units = {\n        ss: 'sekundes_sekundēm_sekunde_sekundes'.split('_'),\n        m: 'minūtes_minūtēm_minūte_minūtes'.split('_'),\n        mm: 'minūtes_minūtēm_minūte_minūtes'.split('_'),\n        h: 'stundas_stundām_stunda_stundas'.split('_'),\n        hh: 'stundas_stundām_stunda_stundas'.split('_'),\n        d: 'dienas_dienām_diena_dienas'.split('_'),\n        dd: 'dienas_dienām_diena_dienas'.split('_'),\n        M: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),\n        MM: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),\n        y: 'gada_gadiem_gads_gadi'.split('_'),\n        yy: 'gada_gadiem_gads_gadi'.split('_'),\n    };\n    /**\n     * @param withoutSuffix boolean true = a length of time; false = before/after a period of time.\n     */\n    function format(forms, number, withoutSuffix) {\n        if (withoutSuffix) {\n            // E.g. \"21 minūte\", \"3 minūtes\".\n            return number % 10 === 1 && number % 100 !== 11 ? forms[2] : forms[3];\n        } else {\n            // E.g. \"21 minūtes\" as in \"pēc 21 minūtes\".\n            // E.g. \"3 minūtēm\" as in \"pēc 3 minūtēm\".\n            return number % 10 === 1 && number % 100 !== 11 ? forms[0] : forms[1];\n        }\n    }\n    function relativeTimeWithPlural(number, withoutSuffix, key) {\n        return number + ' ' + format(units[key], number, withoutSuffix);\n    }\n    function relativeTimeWithSingular(number, withoutSuffix, key) {\n        return format(units[key], number, withoutSuffix);\n    }\n    function relativeSeconds(number, withoutSuffix) {\n        return withoutSuffix ? 'dažas sekundes' : 'dažām sekundēm';\n    }\n\n    var lv = moment.defineLocale('lv', {\n        months: 'janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris'.split(\n            '_'\n        ),\n        monthsShort: 'jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec'.split('_'),\n        weekdays: 'svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena'.split(\n            '_'\n        ),\n        weekdaysShort: 'Sv_P_O_T_C_Pk_S'.split('_'),\n        weekdaysMin: 'Sv_P_O_T_C_Pk_S'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY.',\n            LL: 'YYYY. [gada] D. MMMM',\n            LLL: 'YYYY. [gada] D. MMMM, HH:mm',\n            LLLL: 'YYYY. [gada] D. MMMM, dddd, HH:mm',\n        },\n        calendar: {\n            sameDay: '[Šodien pulksten] LT',\n            nextDay: '[Rīt pulksten] LT',\n            nextWeek: 'dddd [pulksten] LT',\n            lastDay: '[Vakar pulksten] LT',\n            lastWeek: '[Pagājušā] dddd [pulksten] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'pēc %s',\n            past: 'pirms %s',\n            s: relativeSeconds,\n            ss: relativeTimeWithPlural,\n            m: relativeTimeWithSingular,\n            mm: relativeTimeWithPlural,\n            h: relativeTimeWithSingular,\n            hh: relativeTimeWithPlural,\n            d: relativeTimeWithSingular,\n            dd: relativeTimeWithPlural,\n            M: relativeTimeWithSingular,\n            MM: relativeTimeWithPlural,\n            y: relativeTimeWithSingular,\n            yy: relativeTimeWithPlural,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return lv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Montenegrin [me]\n//! author : Miodrag Nikač <miodrag@restartit.me> : https://github.com/miodragnikac\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var translator = {\n        words: {\n            //Different grammatical cases\n            ss: ['sekund', 'sekunda', 'sekundi'],\n            m: ['jedan minut', 'jednog minuta'],\n            mm: ['minut', 'minuta', 'minuta'],\n            h: ['jedan sat', 'jednog sata'],\n            hh: ['sat', 'sata', 'sati'],\n            dd: ['dan', 'dana', 'dana'],\n            MM: ['mjesec', 'mjeseca', 'mjeseci'],\n            yy: ['godina', 'godine', 'godina'],\n        },\n        correctGrammaticalCase: function (number, wordKey) {\n            return number === 1\n                ? wordKey[0]\n                : number >= 2 && number <= 4\n                ? wordKey[1]\n                : wordKey[2];\n        },\n        translate: function (number, withoutSuffix, key) {\n            var wordKey = translator.words[key];\n            if (key.length === 1) {\n                return withoutSuffix ? wordKey[0] : wordKey[1];\n            } else {\n                return (\n                    number +\n                    ' ' +\n                    translator.correctGrammaticalCase(number, wordKey)\n                );\n            }\n        },\n    };\n\n    var me = moment.defineLocale('me', {\n        months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split(\n            '_'\n        ),\n        monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(\n            '_'\n        ),\n        weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n        weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY H:mm',\n            LLLL: 'dddd, D. MMMM YYYY H:mm',\n        },\n        calendar: {\n            sameDay: '[danas u] LT',\n            nextDay: '[sjutra u] LT',\n\n            nextWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[u] [nedjelju] [u] LT';\n                    case 3:\n                        return '[u] [srijedu] [u] LT';\n                    case 6:\n                        return '[u] [subotu] [u] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[u] dddd [u] LT';\n                }\n            },\n            lastDay: '[juče u] LT',\n            lastWeek: function () {\n                var lastWeekDays = [\n                    '[prošle] [nedjelje] [u] LT',\n                    '[prošlog] [ponedjeljka] [u] LT',\n                    '[prošlog] [utorka] [u] LT',\n                    '[prošle] [srijede] [u] LT',\n                    '[prošlog] [četvrtka] [u] LT',\n                    '[prošlog] [petka] [u] LT',\n                    '[prošle] [subote] [u] LT',\n                ];\n                return lastWeekDays[this.day()];\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'za %s',\n            past: 'prije %s',\n            s: 'nekoliko sekundi',\n            ss: translator.translate,\n            m: translator.translate,\n            mm: translator.translate,\n            h: translator.translate,\n            hh: translator.translate,\n            d: 'dan',\n            dd: translator.translate,\n            M: 'mjesec',\n            MM: translator.translate,\n            y: 'godinu',\n            yy: translator.translate,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return me;\n\n})));\n","//! moment.js locale configuration\n//! locale : Maori [mi]\n//! author : John Corrigan <robbiecloset@gmail.com> : https://github.com/johnideal\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var mi = moment.defineLocale('mi', {\n        months: 'Kohi-tāte_Hui-tanguru_Poutū-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea'.split(\n            '_'\n        ),\n        monthsShort: 'Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki'.split(\n            '_'\n        ),\n        monthsRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n        monthsStrictRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n        monthsShortRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n        monthsShortStrictRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,2}/i,\n        weekdays: 'Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei'.split('_'),\n        weekdaysShort: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),\n        weekdaysMin: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY [i] HH:mm',\n            LLLL: 'dddd, D MMMM YYYY [i] HH:mm',\n        },\n        calendar: {\n            sameDay: '[i teie mahana, i] LT',\n            nextDay: '[apopo i] LT',\n            nextWeek: 'dddd [i] LT',\n            lastDay: '[inanahi i] LT',\n            lastWeek: 'dddd [whakamutunga i] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'i roto i %s',\n            past: '%s i mua',\n            s: 'te hēkona ruarua',\n            ss: '%d hēkona',\n            m: 'he meneti',\n            mm: '%d meneti',\n            h: 'te haora',\n            hh: '%d haora',\n            d: 'he ra',\n            dd: '%d ra',\n            M: 'he marama',\n            MM: '%d marama',\n            y: 'he tau',\n            yy: '%d tau',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}º/,\n        ordinal: '%dº',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return mi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Macedonian [mk]\n//! author : Borislav Mickov : https://github.com/B0k0\n//! author : Sashko Todorov : https://github.com/bkyceh\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var mk = moment.defineLocale('mk', {\n        months: 'јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември'.split(\n            '_'\n        ),\n        monthsShort: 'јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек'.split('_'),\n        weekdays: 'недела_понеделник_вторник_среда_четврток_петок_сабота'.split(\n            '_'\n        ),\n        weekdaysShort: 'нед_пон_вто_сре_чет_пет_саб'.split('_'),\n        weekdaysMin: 'нe_пo_вт_ср_че_пе_сa'.split('_'),\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'D.MM.YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY H:mm',\n            LLLL: 'dddd, D MMMM YYYY H:mm',\n        },\n        calendar: {\n            sameDay: '[Денес во] LT',\n            nextDay: '[Утре во] LT',\n            nextWeek: '[Во] dddd [во] LT',\n            lastDay: '[Вчера во] LT',\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                    case 3:\n                    case 6:\n                        return '[Изминатата] dddd [во] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[Изминатиот] dddd [во] LT';\n                }\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'за %s',\n            past: 'пред %s',\n            s: 'неколку секунди',\n            ss: '%d секунди',\n            m: 'една минута',\n            mm: '%d минути',\n            h: 'еден час',\n            hh: '%d часа',\n            d: 'еден ден',\n            dd: '%d дена',\n            M: 'еден месец',\n            MM: '%d месеци',\n            y: 'една година',\n            yy: '%d години',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,\n        ordinal: function (number) {\n            var lastDigit = number % 10,\n                last2Digits = number % 100;\n            if (number === 0) {\n                return number + '-ев';\n            } else if (last2Digits === 0) {\n                return number + '-ен';\n            } else if (last2Digits > 10 && last2Digits < 20) {\n                return number + '-ти';\n            } else if (lastDigit === 1) {\n                return number + '-ви';\n            } else if (lastDigit === 2) {\n                return number + '-ри';\n            } else if (lastDigit === 7 || lastDigit === 8) {\n                return number + '-ми';\n            } else {\n                return number + '-ти';\n            }\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return mk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Malayalam [ml]\n//! author : Floyd Pink : https://github.com/floydpink\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var ml = moment.defineLocale('ml', {\n        months: 'ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split(\n            '_'\n        ),\n        monthsShort: 'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split(\n            '_'\n        ),\n        weekdaysShort: 'ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി'.split('_'),\n        weekdaysMin: 'ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ'.split('_'),\n        longDateFormat: {\n            LT: 'A h:mm -നു',\n            LTS: 'A h:mm:ss -നു',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY, A h:mm -നു',\n            LLLL: 'dddd, D MMMM YYYY, A h:mm -നു',\n        },\n        calendar: {\n            sameDay: '[ഇന്ന്] LT',\n            nextDay: '[നാളെ] LT',\n            nextWeek: 'dddd, LT',\n            lastDay: '[ഇന്നലെ] LT',\n            lastWeek: '[കഴിഞ്ഞ] dddd, LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s കഴിഞ്ഞ്',\n            past: '%s മുൻപ്',\n            s: 'അൽപ നിമിഷങ്ങൾ',\n            ss: '%d സെക്കൻഡ്',\n            m: 'ഒരു മിനിറ്റ്',\n            mm: '%d മിനിറ്റ്',\n            h: 'ഒരു മണിക്കൂർ',\n            hh: '%d മണിക്കൂർ',\n            d: 'ഒരു ദിവസം',\n            dd: '%d ദിവസം',\n            M: 'ഒരു മാസം',\n            MM: '%d മാസം',\n            y: 'ഒരു വർഷം',\n            yy: '%d വർഷം',\n        },\n        meridiemParse: /രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (\n                (meridiem === 'രാത്രി' && hour >= 4) ||\n                meridiem === 'ഉച്ച കഴിഞ്ഞ്' ||\n                meridiem === 'വൈകുന്നേരം'\n            ) {\n                return hour + 12;\n            } else {\n                return hour;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'രാത്രി';\n            } else if (hour < 12) {\n                return 'രാവിലെ';\n            } else if (hour < 17) {\n                return 'ഉച്ച കഴിഞ്ഞ്';\n            } else if (hour < 20) {\n                return 'വൈകുന്നേരം';\n            } else {\n                return 'രാത്രി';\n            }\n        },\n    });\n\n    return ml;\n\n})));\n","//! moment.js locale configuration\n//! locale : Mongolian [mn]\n//! author : Javkhlantugs Nyamdorj : https://github.com/javkhaanj7\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function translate(number, withoutSuffix, key, isFuture) {\n        switch (key) {\n            case 's':\n                return withoutSuffix ? 'хэдхэн секунд' : 'хэдхэн секундын';\n            case 'ss':\n                return number + (withoutSuffix ? ' секунд' : ' секундын');\n            case 'm':\n            case 'mm':\n                return number + (withoutSuffix ? ' минут' : ' минутын');\n            case 'h':\n            case 'hh':\n                return number + (withoutSuffix ? ' цаг' : ' цагийн');\n            case 'd':\n            case 'dd':\n                return number + (withoutSuffix ? ' өдөр' : ' өдрийн');\n            case 'M':\n            case 'MM':\n                return number + (withoutSuffix ? ' сар' : ' сарын');\n            case 'y':\n            case 'yy':\n                return number + (withoutSuffix ? ' жил' : ' жилийн');\n            default:\n                return number;\n        }\n    }\n\n    var mn = moment.defineLocale('mn', {\n        months: 'Нэгдүгээр сар_Хоёрдугаар сар_Гуравдугаар сар_Дөрөвдүгээр сар_Тавдугаар сар_Зургадугаар сар_Долдугаар сар_Наймдугаар сар_Есдүгээр сар_Аравдугаар сар_Арван нэгдүгээр сар_Арван хоёрдугаар сар'.split(\n            '_'\n        ),\n        monthsShort: '1 сар_2 сар_3 сар_4 сар_5 сар_6 сар_7 сар_8 сар_9 сар_10 сар_11 сар_12 сар'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'Ням_Даваа_Мягмар_Лхагва_Пүрэв_Баасан_Бямба'.split('_'),\n        weekdaysShort: 'Ням_Дав_Мяг_Лха_Пүр_Баа_Бям'.split('_'),\n        weekdaysMin: 'Ня_Да_Мя_Лх_Пү_Ба_Бя'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'YYYY-MM-DD',\n            LL: 'YYYY оны MMMMын D',\n            LLL: 'YYYY оны MMMMын D HH:mm',\n            LLLL: 'dddd, YYYY оны MMMMын D HH:mm',\n        },\n        meridiemParse: /ҮӨ|ҮХ/i,\n        isPM: function (input) {\n            return input === 'ҮХ';\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'ҮӨ';\n            } else {\n                return 'ҮХ';\n            }\n        },\n        calendar: {\n            sameDay: '[Өнөөдөр] LT',\n            nextDay: '[Маргааш] LT',\n            nextWeek: '[Ирэх] dddd LT',\n            lastDay: '[Өчигдөр] LT',\n            lastWeek: '[Өнгөрсөн] dddd LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s дараа',\n            past: '%s өмнө',\n            s: translate,\n            ss: translate,\n            m: translate,\n            mm: translate,\n            h: translate,\n            hh: translate,\n            d: translate,\n            dd: translate,\n            M: translate,\n            MM: translate,\n            y: translate,\n            yy: translate,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2} өдөр/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'd':\n                case 'D':\n                case 'DDD':\n                    return number + ' өдөр';\n                default:\n                    return number;\n            }\n        },\n    });\n\n    return mn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Marathi [mr]\n//! author : Harshad Kale : https://github.com/kalehv\n//! author : Vivek Athalye : https://github.com/vnathalye\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            1: '१',\n            2: '२',\n            3: '३',\n            4: '४',\n            5: '५',\n            6: '६',\n            7: '७',\n            8: '८',\n            9: '९',\n            0: '०',\n        },\n        numberMap = {\n            '१': '1',\n            '२': '2',\n            '३': '3',\n            '४': '4',\n            '५': '5',\n            '६': '6',\n            '७': '7',\n            '८': '8',\n            '९': '9',\n            '०': '0',\n        };\n\n    function relativeTimeMr(number, withoutSuffix, string, isFuture) {\n        var output = '';\n        if (withoutSuffix) {\n            switch (string) {\n                case 's':\n                    output = 'काही सेकंद';\n                    break;\n                case 'ss':\n                    output = '%d सेकंद';\n                    break;\n                case 'm':\n                    output = 'एक मिनिट';\n                    break;\n                case 'mm':\n                    output = '%d मिनिटे';\n                    break;\n                case 'h':\n                    output = 'एक तास';\n                    break;\n                case 'hh':\n                    output = '%d तास';\n                    break;\n                case 'd':\n                    output = 'एक दिवस';\n                    break;\n                case 'dd':\n                    output = '%d दिवस';\n                    break;\n                case 'M':\n                    output = 'एक महिना';\n                    break;\n                case 'MM':\n                    output = '%d महिने';\n                    break;\n                case 'y':\n                    output = 'एक वर्ष';\n                    break;\n                case 'yy':\n                    output = '%d वर्षे';\n                    break;\n            }\n        } else {\n            switch (string) {\n                case 's':\n                    output = 'काही सेकंदां';\n                    break;\n                case 'ss':\n                    output = '%d सेकंदां';\n                    break;\n                case 'm':\n                    output = 'एका मिनिटा';\n                    break;\n                case 'mm':\n                    output = '%d मिनिटां';\n                    break;\n                case 'h':\n                    output = 'एका तासा';\n                    break;\n                case 'hh':\n                    output = '%d तासां';\n                    break;\n                case 'd':\n                    output = 'एका दिवसा';\n                    break;\n                case 'dd':\n                    output = '%d दिवसां';\n                    break;\n                case 'M':\n                    output = 'एका महिन्या';\n                    break;\n                case 'MM':\n                    output = '%d महिन्यां';\n                    break;\n                case 'y':\n                    output = 'एका वर्षा';\n                    break;\n                case 'yy':\n                    output = '%d वर्षां';\n                    break;\n            }\n        }\n        return output.replace(/%d/i, number);\n    }\n\n    var mr = moment.defineLocale('mr', {\n        months: 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split(\n            '_'\n        ),\n        monthsShort: 'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),\n        weekdaysShort: 'रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि'.split('_'),\n        weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),\n        longDateFormat: {\n            LT: 'A h:mm वाजता',\n            LTS: 'A h:mm:ss वाजता',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY, A h:mm वाजता',\n            LLLL: 'dddd, D MMMM YYYY, A h:mm वाजता',\n        },\n        calendar: {\n            sameDay: '[आज] LT',\n            nextDay: '[उद्या] LT',\n            nextWeek: 'dddd, LT',\n            lastDay: '[काल] LT',\n            lastWeek: '[मागील] dddd, LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%sमध्ये',\n            past: '%sपूर्वी',\n            s: relativeTimeMr,\n            ss: relativeTimeMr,\n            m: relativeTimeMr,\n            mm: relativeTimeMr,\n            h: relativeTimeMr,\n            hh: relativeTimeMr,\n            d: relativeTimeMr,\n            dd: relativeTimeMr,\n            M: relativeTimeMr,\n            MM: relativeTimeMr,\n            y: relativeTimeMr,\n            yy: relativeTimeMr,\n        },\n        preparse: function (string) {\n            return string.replace(/[१२३४५६७८९०]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        meridiemParse: /पहाटे|सकाळी|दुपारी|सायंकाळी|रात्री/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'पहाटे' || meridiem === 'सकाळी') {\n                return hour;\n            } else if (\n                meridiem === 'दुपारी' ||\n                meridiem === 'सायंकाळी' ||\n                meridiem === 'रात्री'\n            ) {\n                return hour >= 12 ? hour : hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour >= 0 && hour < 6) {\n                return 'पहाटे';\n            } else if (hour < 12) {\n                return 'सकाळी';\n            } else if (hour < 17) {\n                return 'दुपारी';\n            } else if (hour < 20) {\n                return 'सायंकाळी';\n            } else {\n                return 'रात्री';\n            }\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 6th is the first week of the year.\n        },\n    });\n\n    return mr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Malay [ms-my]\n//! note : DEPRECATED, the correct one is [ms]\n//! author : Weldan Jamili : https://github.com/weldan\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var msMy = moment.defineLocale('ms-my', {\n        months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\n        weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\n        weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\n        weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\n        longDateFormat: {\n            LT: 'HH.mm',\n            LTS: 'HH.mm.ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY [pukul] HH.mm',\n            LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n        },\n        meridiemParse: /pagi|tengahari|petang|malam/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'pagi') {\n                return hour;\n            } else if (meridiem === 'tengahari') {\n                return hour >= 11 ? hour : hour + 12;\n            } else if (meridiem === 'petang' || meridiem === 'malam') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hours, minutes, isLower) {\n            if (hours < 11) {\n                return 'pagi';\n            } else if (hours < 15) {\n                return 'tengahari';\n            } else if (hours < 19) {\n                return 'petang';\n            } else {\n                return 'malam';\n            }\n        },\n        calendar: {\n            sameDay: '[Hari ini pukul] LT',\n            nextDay: '[Esok pukul] LT',\n            nextWeek: 'dddd [pukul] LT',\n            lastDay: '[Kelmarin pukul] LT',\n            lastWeek: 'dddd [lepas pukul] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'dalam %s',\n            past: '%s yang lepas',\n            s: 'beberapa saat',\n            ss: '%d saat',\n            m: 'seminit',\n            mm: '%d minit',\n            h: 'sejam',\n            hh: '%d jam',\n            d: 'sehari',\n            dd: '%d hari',\n            M: 'sebulan',\n            MM: '%d bulan',\n            y: 'setahun',\n            yy: '%d tahun',\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return msMy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Malay [ms]\n//! author : Weldan Jamili : https://github.com/weldan\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var ms = moment.defineLocale('ms', {\n        months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\n        weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\n        weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\n        weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\n        longDateFormat: {\n            LT: 'HH.mm',\n            LTS: 'HH.mm.ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY [pukul] HH.mm',\n            LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n        },\n        meridiemParse: /pagi|tengahari|petang|malam/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'pagi') {\n                return hour;\n            } else if (meridiem === 'tengahari') {\n                return hour >= 11 ? hour : hour + 12;\n            } else if (meridiem === 'petang' || meridiem === 'malam') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hours, minutes, isLower) {\n            if (hours < 11) {\n                return 'pagi';\n            } else if (hours < 15) {\n                return 'tengahari';\n            } else if (hours < 19) {\n                return 'petang';\n            } else {\n                return 'malam';\n            }\n        },\n        calendar: {\n            sameDay: '[Hari ini pukul] LT',\n            nextDay: '[Esok pukul] LT',\n            nextWeek: 'dddd [pukul] LT',\n            lastDay: '[Kelmarin pukul] LT',\n            lastWeek: 'dddd [lepas pukul] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'dalam %s',\n            past: '%s yang lepas',\n            s: 'beberapa saat',\n            ss: '%d saat',\n            m: 'seminit',\n            mm: '%d minit',\n            h: 'sejam',\n            hh: '%d jam',\n            d: 'sehari',\n            dd: '%d hari',\n            M: 'sebulan',\n            MM: '%d bulan',\n            y: 'setahun',\n            yy: '%d tahun',\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return ms;\n\n})));\n","//! moment.js locale configuration\n//! locale : Maltese (Malta) [mt]\n//! author : Alessandro Maruccia : https://github.com/alesma\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var mt = moment.defineLocale('mt', {\n        months: 'Jannar_Frar_Marzu_April_Mejju_Ġunju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Diċembru'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Fra_Mar_Apr_Mej_Ġun_Lul_Aww_Set_Ott_Nov_Diċ'.split('_'),\n        weekdays: 'Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ġimgħa_Is-Sibt'.split(\n            '_'\n        ),\n        weekdaysShort: 'Ħad_Tne_Tli_Erb_Ħam_Ġim_Sib'.split('_'),\n        weekdaysMin: 'Ħa_Tn_Tl_Er_Ħa_Ġi_Si'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Illum fil-]LT',\n            nextDay: '[Għada fil-]LT',\n            nextWeek: 'dddd [fil-]LT',\n            lastDay: '[Il-bieraħ fil-]LT',\n            lastWeek: 'dddd [li għadda] [fil-]LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'f’ %s',\n            past: '%s ilu',\n            s: 'ftit sekondi',\n            ss: '%d sekondi',\n            m: 'minuta',\n            mm: '%d minuti',\n            h: 'siegħa',\n            hh: '%d siegħat',\n            d: 'ġurnata',\n            dd: '%d ġranet',\n            M: 'xahar',\n            MM: '%d xhur',\n            y: 'sena',\n            yy: '%d sni',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}º/,\n        ordinal: '%dº',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return mt;\n\n})));\n","//! moment.js locale configuration\n//! locale : Burmese [my]\n//! author : Squar team, mysquar.com\n//! author : David Rossellat : https://github.com/gholadr\n//! author : Tin Aung Lin : https://github.com/thanyawzinmin\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            1: '၁',\n            2: '၂',\n            3: '၃',\n            4: '၄',\n            5: '၅',\n            6: '၆',\n            7: '၇',\n            8: '၈',\n            9: '၉',\n            0: '၀',\n        },\n        numberMap = {\n            '၁': '1',\n            '၂': '2',\n            '၃': '3',\n            '၄': '4',\n            '၅': '5',\n            '၆': '6',\n            '၇': '7',\n            '၈': '8',\n            '၉': '9',\n            '၀': '0',\n        };\n\n    var my = moment.defineLocale('my', {\n        months: 'ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ'.split(\n            '_'\n        ),\n        monthsShort: 'ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ'.split('_'),\n        weekdays: 'တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ'.split(\n            '_'\n        ),\n        weekdaysShort: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),\n        weekdaysMin: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),\n\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[ယနေ.] LT [မှာ]',\n            nextDay: '[မနက်ဖြန်] LT [မှာ]',\n            nextWeek: 'dddd LT [မှာ]',\n            lastDay: '[မနေ.က] LT [မှာ]',\n            lastWeek: '[ပြီးခဲ့သော] dddd LT [မှာ]',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'လာမည့် %s မှာ',\n            past: 'လွန်ခဲ့သော %s က',\n            s: 'စက္ကန်.အနည်းငယ်',\n            ss: '%d စက္ကန့်',\n            m: 'တစ်မိနစ်',\n            mm: '%d မိနစ်',\n            h: 'တစ်နာရီ',\n            hh: '%d နာရီ',\n            d: 'တစ်ရက်',\n            dd: '%d ရက်',\n            M: 'တစ်လ',\n            MM: '%d လ',\n            y: 'တစ်နှစ်',\n            yy: '%d နှစ်',\n        },\n        preparse: function (string) {\n            return string.replace(/[၁၂၃၄၅၆၇၈၉၀]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return my;\n\n})));\n","//! moment.js locale configuration\n//! locale : Norwegian Bokmål [nb]\n//! authors : Espen Hovlandsdal : https://github.com/rexxars\n//!           Sigurd Gartmann : https://github.com/sigurdga\n//!           Stephen Ramthun : https://github.com/stephenramthun\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var nb = moment.defineLocale('nb', {\n        months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split(\n            '_'\n        ),\n        monthsShort: 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\n        weekdaysShort: 'sø._ma._ti._on._to._fr._lø.'.split('_'),\n        weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY [kl.] HH:mm',\n            LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm',\n        },\n        calendar: {\n            sameDay: '[i dag kl.] LT',\n            nextDay: '[i morgen kl.] LT',\n            nextWeek: 'dddd [kl.] LT',\n            lastDay: '[i går kl.] LT',\n            lastWeek: '[forrige] dddd [kl.] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'om %s',\n            past: '%s siden',\n            s: 'noen sekunder',\n            ss: '%d sekunder',\n            m: 'ett minutt',\n            mm: '%d minutter',\n            h: 'en time',\n            hh: '%d timer',\n            d: 'en dag',\n            dd: '%d dager',\n            w: 'en uke',\n            ww: '%d uker',\n            M: 'en måned',\n            MM: '%d måneder',\n            y: 'ett år',\n            yy: '%d år',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return nb;\n\n})));\n","//! moment.js locale configuration\n//! locale : Nepalese [ne]\n//! author : suvash : https://github.com/suvash\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            1: '१',\n            2: '२',\n            3: '३',\n            4: '४',\n            5: '५',\n            6: '६',\n            7: '७',\n            8: '८',\n            9: '९',\n            0: '०',\n        },\n        numberMap = {\n            '१': '1',\n            '२': '2',\n            '३': '3',\n            '४': '4',\n            '५': '5',\n            '६': '6',\n            '७': '7',\n            '८': '8',\n            '९': '9',\n            '०': '0',\n        };\n\n    var ne = moment.defineLocale('ne', {\n        months: 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split(\n            '_'\n        ),\n        monthsShort: 'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split(\n            '_'\n        ),\n        weekdaysShort: 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split('_'),\n        weekdaysMin: 'आ._सो._मं._बु._बि._शु._श.'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'Aको h:mm बजे',\n            LTS: 'Aको h:mm:ss बजे',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY, Aको h:mm बजे',\n            LLLL: 'dddd, D MMMM YYYY, Aको h:mm बजे',\n        },\n        preparse: function (string) {\n            return string.replace(/[१२३४५६७८९०]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        meridiemParse: /राति|बिहान|दिउँसो|साँझ/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'राति') {\n                return hour < 4 ? hour : hour + 12;\n            } else if (meridiem === 'बिहान') {\n                return hour;\n            } else if (meridiem === 'दिउँसो') {\n                return hour >= 10 ? hour : hour + 12;\n            } else if (meridiem === 'साँझ') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 3) {\n                return 'राति';\n            } else if (hour < 12) {\n                return 'बिहान';\n            } else if (hour < 16) {\n                return 'दिउँसो';\n            } else if (hour < 20) {\n                return 'साँझ';\n            } else {\n                return 'राति';\n            }\n        },\n        calendar: {\n            sameDay: '[आज] LT',\n            nextDay: '[भोलि] LT',\n            nextWeek: '[आउँदो] dddd[,] LT',\n            lastDay: '[हिजो] LT',\n            lastWeek: '[गएको] dddd[,] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%sमा',\n            past: '%s अगाडि',\n            s: 'केही क्षण',\n            ss: '%d सेकेण्ड',\n            m: 'एक मिनेट',\n            mm: '%d मिनेट',\n            h: 'एक घण्टा',\n            hh: '%d घण्टा',\n            d: 'एक दिन',\n            dd: '%d दिन',\n            M: 'एक महिना',\n            MM: '%d महिना',\n            y: 'एक बर्ष',\n            yy: '%d बर्ष',\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 6th is the first week of the year.\n        },\n    });\n\n    return ne;\n\n})));\n","//! moment.js locale configuration\n//! locale : Dutch (Belgium) [nl-be]\n//! author : Joris Röling : https://github.com/jorisroling\n//! author : Jacob Middag : https://github.com/middagj\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split(\n            '_'\n        ),\n        monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split(\n            '_'\n        ),\n        monthsParse = [\n            /^jan/i,\n            /^feb/i,\n            /^maart|mrt.?$/i,\n            /^apr/i,\n            /^mei$/i,\n            /^jun[i.]?$/i,\n            /^jul[i.]?$/i,\n            /^aug/i,\n            /^sep/i,\n            /^okt/i,\n            /^nov/i,\n            /^dec/i,\n        ],\n        monthsRegex = /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\n\n    var nlBe = moment.defineLocale('nl-be', {\n        months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split(\n            '_'\n        ),\n        monthsShort: function (m, format) {\n            if (!m) {\n                return monthsShortWithDots;\n            } else if (/-MMM-/.test(format)) {\n                return monthsShortWithoutDots[m.month()];\n            } else {\n                return monthsShortWithDots[m.month()];\n            }\n        },\n\n        monthsRegex: monthsRegex,\n        monthsShortRegex: monthsRegex,\n        monthsStrictRegex: /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,\n        monthsShortStrictRegex: /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n\n        monthsParse: monthsParse,\n        longMonthsParse: monthsParse,\n        shortMonthsParse: monthsParse,\n\n        weekdays: 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split(\n            '_'\n        ),\n        weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),\n        weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[vandaag om] LT',\n            nextDay: '[morgen om] LT',\n            nextWeek: 'dddd [om] LT',\n            lastDay: '[gisteren om] LT',\n            lastWeek: '[afgelopen] dddd [om] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'over %s',\n            past: '%s geleden',\n            s: 'een paar seconden',\n            ss: '%d seconden',\n            m: 'één minuut',\n            mm: '%d minuten',\n            h: 'één uur',\n            hh: '%d uur',\n            d: 'één dag',\n            dd: '%d dagen',\n            M: 'één maand',\n            MM: '%d maanden',\n            y: 'één jaar',\n            yy: '%d jaar',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n        ordinal: function (number) {\n            return (\n                number +\n                (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n            );\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return nlBe;\n\n})));\n","//! moment.js locale configuration\n//! locale : Dutch [nl]\n//! author : Joris Röling : https://github.com/jorisroling\n//! author : Jacob Middag : https://github.com/middagj\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split(\n            '_'\n        ),\n        monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split(\n            '_'\n        ),\n        monthsParse = [\n            /^jan/i,\n            /^feb/i,\n            /^maart|mrt.?$/i,\n            /^apr/i,\n            /^mei$/i,\n            /^jun[i.]?$/i,\n            /^jul[i.]?$/i,\n            /^aug/i,\n            /^sep/i,\n            /^okt/i,\n            /^nov/i,\n            /^dec/i,\n        ],\n        monthsRegex = /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\n\n    var nl = moment.defineLocale('nl', {\n        months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split(\n            '_'\n        ),\n        monthsShort: function (m, format) {\n            if (!m) {\n                return monthsShortWithDots;\n            } else if (/-MMM-/.test(format)) {\n                return monthsShortWithoutDots[m.month()];\n            } else {\n                return monthsShortWithDots[m.month()];\n            }\n        },\n\n        monthsRegex: monthsRegex,\n        monthsShortRegex: monthsRegex,\n        monthsStrictRegex: /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,\n        monthsShortStrictRegex: /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n\n        monthsParse: monthsParse,\n        longMonthsParse: monthsParse,\n        shortMonthsParse: monthsParse,\n\n        weekdays: 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split(\n            '_'\n        ),\n        weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),\n        weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD-MM-YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[vandaag om] LT',\n            nextDay: '[morgen om] LT',\n            nextWeek: 'dddd [om] LT',\n            lastDay: '[gisteren om] LT',\n            lastWeek: '[afgelopen] dddd [om] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'over %s',\n            past: '%s geleden',\n            s: 'een paar seconden',\n            ss: '%d seconden',\n            m: 'één minuut',\n            mm: '%d minuten',\n            h: 'één uur',\n            hh: '%d uur',\n            d: 'één dag',\n            dd: '%d dagen',\n            w: 'één week',\n            ww: '%d weken',\n            M: 'één maand',\n            MM: '%d maanden',\n            y: 'één jaar',\n            yy: '%d jaar',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n        ordinal: function (number) {\n            return (\n                number +\n                (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n            );\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return nl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Nynorsk [nn]\n//! authors : https://github.com/mechuwind\n//!           Stephen Ramthun : https://github.com/stephenramthun\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var nn = moment.defineLocale('nn', {\n        months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split(\n            '_'\n        ),\n        monthsShort: 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag'.split('_'),\n        weekdaysShort: 'su._må._ty._on._to._fr._lau.'.split('_'),\n        weekdaysMin: 'su_må_ty_on_to_fr_la'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY [kl.] H:mm',\n            LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm',\n        },\n        calendar: {\n            sameDay: '[I dag klokka] LT',\n            nextDay: '[I morgon klokka] LT',\n            nextWeek: 'dddd [klokka] LT',\n            lastDay: '[I går klokka] LT',\n            lastWeek: '[Føregåande] dddd [klokka] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'om %s',\n            past: '%s sidan',\n            s: 'nokre sekund',\n            ss: '%d sekund',\n            m: 'eit minutt',\n            mm: '%d minutt',\n            h: 'ein time',\n            hh: '%d timar',\n            d: 'ein dag',\n            dd: '%d dagar',\n            w: 'ei veke',\n            ww: '%d veker',\n            M: 'ein månad',\n            MM: '%d månader',\n            y: 'eit år',\n            yy: '%d år',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return nn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Occitan, lengadocian dialecte [oc-lnc]\n//! author : Quentin PAGÈS : https://github.com/Quenty31\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var ocLnc = moment.defineLocale('oc-lnc', {\n        months: {\n            standalone: 'genièr_febrièr_març_abril_mai_junh_julhet_agost_setembre_octòbre_novembre_decembre'.split(\n                '_'\n            ),\n            format: \"de genièr_de febrièr_de març_d'abril_de mai_de junh_de julhet_d'agost_de setembre_d'octòbre_de novembre_de decembre\".split(\n                '_'\n            ),\n            isFormat: /D[oD]?(\\s)+MMMM/,\n        },\n        monthsShort: 'gen._febr._març_abr._mai_junh_julh._ago._set._oct._nov._dec.'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'dimenge_diluns_dimars_dimècres_dijòus_divendres_dissabte'.split(\n            '_'\n        ),\n        weekdaysShort: 'dg._dl._dm._dc._dj._dv._ds.'.split('_'),\n        weekdaysMin: 'dg_dl_dm_dc_dj_dv_ds'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM [de] YYYY',\n            ll: 'D MMM YYYY',\n            LLL: 'D MMMM [de] YYYY [a] H:mm',\n            lll: 'D MMM YYYY, H:mm',\n            LLLL: 'dddd D MMMM [de] YYYY [a] H:mm',\n            llll: 'ddd D MMM YYYY, H:mm',\n        },\n        calendar: {\n            sameDay: '[uèi a] LT',\n            nextDay: '[deman a] LT',\n            nextWeek: 'dddd [a] LT',\n            lastDay: '[ièr a] LT',\n            lastWeek: 'dddd [passat a] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: \"d'aquí %s\",\n            past: 'fa %s',\n            s: 'unas segondas',\n            ss: '%d segondas',\n            m: 'una minuta',\n            mm: '%d minutas',\n            h: 'una ora',\n            hh: '%d oras',\n            d: 'un jorn',\n            dd: '%d jorns',\n            M: 'un mes',\n            MM: '%d meses',\n            y: 'un an',\n            yy: '%d ans',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(r|n|t|è|a)/,\n        ordinal: function (number, period) {\n            var output =\n                number === 1\n                    ? 'r'\n                    : number === 2\n                    ? 'n'\n                    : number === 3\n                    ? 'r'\n                    : number === 4\n                    ? 't'\n                    : 'è';\n            if (period === 'w' || period === 'W') {\n                output = 'a';\n            }\n            return number + output;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4,\n        },\n    });\n\n    return ocLnc;\n\n})));\n","//! moment.js locale configuration\n//! locale : Punjabi (India) [pa-in]\n//! author : Harpreet Singh : https://github.com/harpreetkhalsagtbit\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            1: '੧',\n            2: '੨',\n            3: '੩',\n            4: '੪',\n            5: '੫',\n            6: '੬',\n            7: '੭',\n            8: '੮',\n            9: '੯',\n            0: '੦',\n        },\n        numberMap = {\n            '੧': '1',\n            '੨': '2',\n            '੩': '3',\n            '੪': '4',\n            '੫': '5',\n            '੬': '6',\n            '੭': '7',\n            '੮': '8',\n            '੯': '9',\n            '੦': '0',\n        };\n\n    var paIn = moment.defineLocale('pa-in', {\n        // There are months name as per Nanakshahi Calendar but they are not used as rigidly in modern Punjabi.\n        months: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split(\n            '_'\n        ),\n        monthsShort: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split(\n            '_'\n        ),\n        weekdays: 'ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ'.split(\n            '_'\n        ),\n        weekdaysShort: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),\n        weekdaysMin: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),\n        longDateFormat: {\n            LT: 'A h:mm ਵਜੇ',\n            LTS: 'A h:mm:ss ਵਜੇ',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY, A h:mm ਵਜੇ',\n            LLLL: 'dddd, D MMMM YYYY, A h:mm ਵਜੇ',\n        },\n        calendar: {\n            sameDay: '[ਅਜ] LT',\n            nextDay: '[ਕਲ] LT',\n            nextWeek: '[ਅਗਲਾ] dddd, LT',\n            lastDay: '[ਕਲ] LT',\n            lastWeek: '[ਪਿਛਲੇ] dddd, LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s ਵਿੱਚ',\n            past: '%s ਪਿਛਲੇ',\n            s: 'ਕੁਝ ਸਕਿੰਟ',\n            ss: '%d ਸਕਿੰਟ',\n            m: 'ਇਕ ਮਿੰਟ',\n            mm: '%d ਮਿੰਟ',\n            h: 'ਇੱਕ ਘੰਟਾ',\n            hh: '%d ਘੰਟੇ',\n            d: 'ਇੱਕ ਦਿਨ',\n            dd: '%d ਦਿਨ',\n            M: 'ਇੱਕ ਮਹੀਨਾ',\n            MM: '%d ਮਹੀਨੇ',\n            y: 'ਇੱਕ ਸਾਲ',\n            yy: '%d ਸਾਲ',\n        },\n        preparse: function (string) {\n            return string.replace(/[੧੨੩੪੫੬੭੮੯੦]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        // Punjabi notation for meridiems are quite fuzzy in practice. While there exists\n        // a rigid notion of a 'Pahar' it is not used as rigidly in modern Punjabi.\n        meridiemParse: /ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'ਰਾਤ') {\n                return hour < 4 ? hour : hour + 12;\n            } else if (meridiem === 'ਸਵੇਰ') {\n                return hour;\n            } else if (meridiem === 'ਦੁਪਹਿਰ') {\n                return hour >= 10 ? hour : hour + 12;\n            } else if (meridiem === 'ਸ਼ਾਮ') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'ਰਾਤ';\n            } else if (hour < 10) {\n                return 'ਸਵੇਰ';\n            } else if (hour < 17) {\n                return 'ਦੁਪਹਿਰ';\n            } else if (hour < 20) {\n                return 'ਸ਼ਾਮ';\n            } else {\n                return 'ਰਾਤ';\n            }\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 6th is the first week of the year.\n        },\n    });\n\n    return paIn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Polish [pl]\n//! author : Rafal Hirsz : https://github.com/evoL\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var monthsNominative = 'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split(\n            '_'\n        ),\n        monthsSubjective = 'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia'.split(\n            '_'\n        ),\n        monthsParse = [\n            /^sty/i,\n            /^lut/i,\n            /^mar/i,\n            /^kwi/i,\n            /^maj/i,\n            /^cze/i,\n            /^lip/i,\n            /^sie/i,\n            /^wrz/i,\n            /^paź/i,\n            /^lis/i,\n            /^gru/i,\n        ];\n    function plural(n) {\n        return n % 10 < 5 && n % 10 > 1 && ~~(n / 10) % 10 !== 1;\n    }\n    function translate(number, withoutSuffix, key) {\n        var result = number + ' ';\n        switch (key) {\n            case 'ss':\n                return result + (plural(number) ? 'sekundy' : 'sekund');\n            case 'm':\n                return withoutSuffix ? 'minuta' : 'minutę';\n            case 'mm':\n                return result + (plural(number) ? 'minuty' : 'minut');\n            case 'h':\n                return withoutSuffix ? 'godzina' : 'godzinę';\n            case 'hh':\n                return result + (plural(number) ? 'godziny' : 'godzin');\n            case 'ww':\n                return result + (plural(number) ? 'tygodnie' : 'tygodni');\n            case 'MM':\n                return result + (plural(number) ? 'miesiące' : 'miesięcy');\n            case 'yy':\n                return result + (plural(number) ? 'lata' : 'lat');\n        }\n    }\n\n    var pl = moment.defineLocale('pl', {\n        months: function (momentToFormat, format) {\n            if (!momentToFormat) {\n                return monthsNominative;\n            } else if (/D MMMM/.test(format)) {\n                return monthsSubjective[momentToFormat.month()];\n            } else {\n                return monthsNominative[momentToFormat.month()];\n            }\n        },\n        monthsShort: 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'),\n        monthsParse: monthsParse,\n        longMonthsParse: monthsParse,\n        shortMonthsParse: monthsParse,\n        weekdays: 'niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota'.split(\n            '_'\n        ),\n        weekdaysShort: 'ndz_pon_wt_śr_czw_pt_sob'.split('_'),\n        weekdaysMin: 'Nd_Pn_Wt_Śr_Cz_Pt_So'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Dziś o] LT',\n            nextDay: '[Jutro o] LT',\n            nextWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[W niedzielę o] LT';\n\n                    case 2:\n                        return '[We wtorek o] LT';\n\n                    case 3:\n                        return '[W środę o] LT';\n\n                    case 6:\n                        return '[W sobotę o] LT';\n\n                    default:\n                        return '[W] dddd [o] LT';\n                }\n            },\n            lastDay: '[Wczoraj o] LT',\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[W zeszłą niedzielę o] LT';\n                    case 3:\n                        return '[W zeszłą środę o] LT';\n                    case 6:\n                        return '[W zeszłą sobotę o] LT';\n                    default:\n                        return '[W zeszły] dddd [o] LT';\n                }\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'za %s',\n            past: '%s temu',\n            s: 'kilka sekund',\n            ss: translate,\n            m: translate,\n            mm: translate,\n            h: translate,\n            hh: translate,\n            d: '1 dzień',\n            dd: '%d dni',\n            w: 'tydzień',\n            ww: translate,\n            M: 'miesiąc',\n            MM: translate,\n            y: 'rok',\n            yy: translate,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return pl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Portuguese (Brazil) [pt-br]\n//! author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var ptBr = moment.defineLocale('pt-br', {\n        months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split(\n            '_'\n        ),\n        monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),\n        weekdays: 'domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado'.split(\n            '_'\n        ),\n        weekdaysShort: 'dom_seg_ter_qua_qui_sex_sáb'.split('_'),\n        weekdaysMin: 'do_2ª_3ª_4ª_5ª_6ª_sá'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D [de] MMMM [de] YYYY',\n            LLL: 'D [de] MMMM [de] YYYY [às] HH:mm',\n            LLLL: 'dddd, D [de] MMMM [de] YYYY [às] HH:mm',\n        },\n        calendar: {\n            sameDay: '[Hoje às] LT',\n            nextDay: '[Amanhã às] LT',\n            nextWeek: 'dddd [às] LT',\n            lastDay: '[Ontem às] LT',\n            lastWeek: function () {\n                return this.day() === 0 || this.day() === 6\n                    ? '[Último] dddd [às] LT' // Saturday + Sunday\n                    : '[Última] dddd [às] LT'; // Monday - Friday\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'em %s',\n            past: 'há %s',\n            s: 'poucos segundos',\n            ss: '%d segundos',\n            m: 'um minuto',\n            mm: '%d minutos',\n            h: 'uma hora',\n            hh: '%d horas',\n            d: 'um dia',\n            dd: '%d dias',\n            M: 'um mês',\n            MM: '%d meses',\n            y: 'um ano',\n            yy: '%d anos',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}º/,\n        ordinal: '%dº',\n        invalidDate: 'Data inválida',\n    });\n\n    return ptBr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Portuguese [pt]\n//! author : Jefferson : https://github.com/jalex79\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var pt = moment.defineLocale('pt', {\n        months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split(\n            '_'\n        ),\n        monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),\n        weekdays: 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split(\n            '_'\n        ),\n        weekdaysShort: 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),\n        weekdaysMin: 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D [de] MMMM [de] YYYY',\n            LLL: 'D [de] MMMM [de] YYYY HH:mm',\n            LLLL: 'dddd, D [de] MMMM [de] YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Hoje às] LT',\n            nextDay: '[Amanhã às] LT',\n            nextWeek: 'dddd [às] LT',\n            lastDay: '[Ontem às] LT',\n            lastWeek: function () {\n                return this.day() === 0 || this.day() === 6\n                    ? '[Último] dddd [às] LT' // Saturday + Sunday\n                    : '[Última] dddd [às] LT'; // Monday - Friday\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'em %s',\n            past: 'há %s',\n            s: 'segundos',\n            ss: '%d segundos',\n            m: 'um minuto',\n            mm: '%d minutos',\n            h: 'uma hora',\n            hh: '%d horas',\n            d: 'um dia',\n            dd: '%d dias',\n            w: 'uma semana',\n            ww: '%d semanas',\n            M: 'um mês',\n            MM: '%d meses',\n            y: 'um ano',\n            yy: '%d anos',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}º/,\n        ordinal: '%dº',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return pt;\n\n})));\n","//! moment.js locale configuration\n//! locale : Romanian [ro]\n//! author : Vlad Gurdiga : https://github.com/gurdiga\n//! author : Valentin Agachi : https://github.com/avaly\n//! author : Emanuel Cepoi : https://github.com/cepem\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function relativeTimeWithPlural(number, withoutSuffix, key) {\n        var format = {\n                ss: 'secunde',\n                mm: 'minute',\n                hh: 'ore',\n                dd: 'zile',\n                ww: 'săptămâni',\n                MM: 'luni',\n                yy: 'ani',\n            },\n            separator = ' ';\n        if (number % 100 >= 20 || (number >= 100 && number % 100 === 0)) {\n            separator = ' de ';\n        }\n        return number + separator + format[key];\n    }\n\n    var ro = moment.defineLocale('ro', {\n        months: 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split(\n            '_'\n        ),\n        monthsShort: 'ian._feb._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'duminică_luni_marți_miercuri_joi_vineri_sâmbătă'.split('_'),\n        weekdaysShort: 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'),\n        weekdaysMin: 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'),\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY H:mm',\n            LLLL: 'dddd, D MMMM YYYY H:mm',\n        },\n        calendar: {\n            sameDay: '[azi la] LT',\n            nextDay: '[mâine la] LT',\n            nextWeek: 'dddd [la] LT',\n            lastDay: '[ieri la] LT',\n            lastWeek: '[fosta] dddd [la] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'peste %s',\n            past: '%s în urmă',\n            s: 'câteva secunde',\n            ss: relativeTimeWithPlural,\n            m: 'un minut',\n            mm: relativeTimeWithPlural,\n            h: 'o oră',\n            hh: relativeTimeWithPlural,\n            d: 'o zi',\n            dd: relativeTimeWithPlural,\n            w: 'o săptămână',\n            ww: relativeTimeWithPlural,\n            M: 'o lună',\n            MM: relativeTimeWithPlural,\n            y: 'un an',\n            yy: relativeTimeWithPlural,\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return ro;\n\n})));\n","//! moment.js locale configuration\n//! locale : Russian [ru]\n//! author : Viktorminator : https://github.com/Viktorminator\n//! author : Menelion Elensúle : https://github.com/Oire\n//! author : Коренберг Марк : https://github.com/socketpair\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function plural(word, num) {\n        var forms = word.split('_');\n        return num % 10 === 1 && num % 100 !== 11\n            ? forms[0]\n            : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n            ? forms[1]\n            : forms[2];\n    }\n    function relativeTimeWithPlural(number, withoutSuffix, key) {\n        var format = {\n            ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',\n            mm: withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут',\n            hh: 'час_часа_часов',\n            dd: 'день_дня_дней',\n            ww: 'неделя_недели_недель',\n            MM: 'месяц_месяца_месяцев',\n            yy: 'год_года_лет',\n        };\n        if (key === 'm') {\n            return withoutSuffix ? 'минута' : 'минуту';\n        } else {\n            return number + ' ' + plural(format[key], +number);\n        }\n    }\n    var monthsParse = [\n        /^янв/i,\n        /^фев/i,\n        /^мар/i,\n        /^апр/i,\n        /^ма[йя]/i,\n        /^июн/i,\n        /^июл/i,\n        /^авг/i,\n        /^сен/i,\n        /^окт/i,\n        /^ноя/i,\n        /^дек/i,\n    ];\n\n    // http://new.gramota.ru/spravka/rules/139-prop : § 103\n    // Сокращения месяцев: http://new.gramota.ru/spravka/buro/search-answer?s=242637\n    // CLDR data:          http://www.unicode.org/cldr/charts/28/summary/ru.html#1753\n    var ru = moment.defineLocale('ru', {\n        months: {\n            format: 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split(\n                '_'\n            ),\n            standalone: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split(\n                '_'\n            ),\n        },\n        monthsShort: {\n            // по CLDR именно \"июл.\" и \"июн.\", но какой смысл менять букву на точку?\n            format: 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split(\n                '_'\n            ),\n            standalone: 'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split(\n                '_'\n            ),\n        },\n        weekdays: {\n            standalone: 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split(\n                '_'\n            ),\n            format: 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split(\n                '_'\n            ),\n            isFormat: /\\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?] ?dddd/,\n        },\n        weekdaysShort: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\n        weekdaysMin: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\n        monthsParse: monthsParse,\n        longMonthsParse: monthsParse,\n        shortMonthsParse: monthsParse,\n\n        // полные названия с падежами, по три буквы, для некоторых, по 4 буквы, сокращения с точкой и без точки\n        monthsRegex: /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\n\n        // копия предыдущего\n        monthsShortRegex: /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\n\n        // полные названия с падежами\n        monthsStrictRegex: /^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,\n\n        // Выражение, которое соответствует только сокращённым формам\n        monthsShortStrictRegex: /^(янв\\.|февр?\\.|мар[т.]|апр\\.|ма[яй]|июн[ья.]|июл[ья.]|авг\\.|сент?\\.|окт\\.|нояб?\\.|дек\\.)/i,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY г.',\n            LLL: 'D MMMM YYYY г., H:mm',\n            LLLL: 'dddd, D MMMM YYYY г., H:mm',\n        },\n        calendar: {\n            sameDay: '[Сегодня, в] LT',\n            nextDay: '[Завтра, в] LT',\n            lastDay: '[Вчера, в] LT',\n            nextWeek: function (now) {\n                if (now.week() !== this.week()) {\n                    switch (this.day()) {\n                        case 0:\n                            return '[В следующее] dddd, [в] LT';\n                        case 1:\n                        case 2:\n                        case 4:\n                            return '[В следующий] dddd, [в] LT';\n                        case 3:\n                        case 5:\n                        case 6:\n                            return '[В следующую] dddd, [в] LT';\n                    }\n                } else {\n                    if (this.day() === 2) {\n                        return '[Во] dddd, [в] LT';\n                    } else {\n                        return '[В] dddd, [в] LT';\n                    }\n                }\n            },\n            lastWeek: function (now) {\n                if (now.week() !== this.week()) {\n                    switch (this.day()) {\n                        case 0:\n                            return '[В прошлое] dddd, [в] LT';\n                        case 1:\n                        case 2:\n                        case 4:\n                            return '[В прошлый] dddd, [в] LT';\n                        case 3:\n                        case 5:\n                        case 6:\n                            return '[В прошлую] dddd, [в] LT';\n                    }\n                } else {\n                    if (this.day() === 2) {\n                        return '[Во] dddd, [в] LT';\n                    } else {\n                        return '[В] dddd, [в] LT';\n                    }\n                }\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'через %s',\n            past: '%s назад',\n            s: 'несколько секунд',\n            ss: relativeTimeWithPlural,\n            m: relativeTimeWithPlural,\n            mm: relativeTimeWithPlural,\n            h: 'час',\n            hh: relativeTimeWithPlural,\n            d: 'день',\n            dd: relativeTimeWithPlural,\n            w: 'неделя',\n            ww: relativeTimeWithPlural,\n            M: 'месяц',\n            MM: relativeTimeWithPlural,\n            y: 'год',\n            yy: relativeTimeWithPlural,\n        },\n        meridiemParse: /ночи|утра|дня|вечера/i,\n        isPM: function (input) {\n            return /^(дня|вечера)$/.test(input);\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'ночи';\n            } else if (hour < 12) {\n                return 'утра';\n            } else if (hour < 17) {\n                return 'дня';\n            } else {\n                return 'вечера';\n            }\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-(й|го|я)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'M':\n                case 'd':\n                case 'DDD':\n                    return number + '-й';\n                case 'D':\n                    return number + '-го';\n                case 'w':\n                case 'W':\n                    return number + '-я';\n                default:\n                    return number;\n            }\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return ru;\n\n})));\n","//! moment.js locale configuration\n//! locale : Sindhi [sd]\n//! author : Narain Sagar : https://github.com/narainsagar\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var months = [\n            'جنوري',\n            'فيبروري',\n            'مارچ',\n            'اپريل',\n            'مئي',\n            'جون',\n            'جولاءِ',\n            'آگسٽ',\n            'سيپٽمبر',\n            'آڪٽوبر',\n            'نومبر',\n            'ڊسمبر',\n        ],\n        days = ['آچر', 'سومر', 'اڱارو', 'اربع', 'خميس', 'جمع', 'ڇنڇر'];\n\n    var sd = moment.defineLocale('sd', {\n        months: months,\n        monthsShort: months,\n        weekdays: days,\n        weekdaysShort: days,\n        weekdaysMin: days,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd، D MMMM YYYY HH:mm',\n        },\n        meridiemParse: /صبح|شام/,\n        isPM: function (input) {\n            return 'شام' === input;\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'صبح';\n            }\n            return 'شام';\n        },\n        calendar: {\n            sameDay: '[اڄ] LT',\n            nextDay: '[سڀاڻي] LT',\n            nextWeek: 'dddd [اڳين هفتي تي] LT',\n            lastDay: '[ڪالهه] LT',\n            lastWeek: '[گزريل هفتي] dddd [تي] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s پوء',\n            past: '%s اڳ',\n            s: 'چند سيڪنڊ',\n            ss: '%d سيڪنڊ',\n            m: 'هڪ منٽ',\n            mm: '%d منٽ',\n            h: 'هڪ ڪلاڪ',\n            hh: '%d ڪلاڪ',\n            d: 'هڪ ڏينهن',\n            dd: '%d ڏينهن',\n            M: 'هڪ مهينو',\n            MM: '%d مهينا',\n            y: 'هڪ سال',\n            yy: '%d سال',\n        },\n        preparse: function (string) {\n            return string.replace(/،/g, ',');\n        },\n        postformat: function (string) {\n            return string.replace(/,/g, '،');\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return sd;\n\n})));\n","//! moment.js locale configuration\n//! locale : Northern Sami [se]\n//! authors : Bård Rolstad Henriksen : https://github.com/karamell\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var se = moment.defineLocale('se', {\n        months: 'ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu'.split(\n            '_'\n        ),\n        monthsShort: 'ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov'.split(\n            '_'\n        ),\n        weekdays: 'sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat'.split(\n            '_'\n        ),\n        weekdaysShort: 'sotn_vuos_maŋ_gask_duor_bear_láv'.split('_'),\n        weekdaysMin: 's_v_m_g_d_b_L'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'MMMM D. [b.] YYYY',\n            LLL: 'MMMM D. [b.] YYYY [ti.] HH:mm',\n            LLLL: 'dddd, MMMM D. [b.] YYYY [ti.] HH:mm',\n        },\n        calendar: {\n            sameDay: '[otne ti] LT',\n            nextDay: '[ihttin ti] LT',\n            nextWeek: 'dddd [ti] LT',\n            lastDay: '[ikte ti] LT',\n            lastWeek: '[ovddit] dddd [ti] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s geažes',\n            past: 'maŋit %s',\n            s: 'moadde sekunddat',\n            ss: '%d sekunddat',\n            m: 'okta minuhta',\n            mm: '%d minuhtat',\n            h: 'okta diimmu',\n            hh: '%d diimmut',\n            d: 'okta beaivi',\n            dd: '%d beaivvit',\n            M: 'okta mánnu',\n            MM: '%d mánut',\n            y: 'okta jahki',\n            yy: '%d jagit',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return se;\n\n})));\n","//! moment.js locale configuration\n//! locale : Sinhalese [si]\n//! author : Sampath Sitinamaluwa : https://github.com/sampathsris\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    /*jshint -W100*/\n    var si = moment.defineLocale('si', {\n        months: 'ජනවාරි_පෙබරවාරි_මාර්තු_අප්‍රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්'.split(\n            '_'\n        ),\n        monthsShort: 'ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ'.split(\n            '_'\n        ),\n        weekdays: 'ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්‍රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා'.split(\n            '_'\n        ),\n        weekdaysShort: 'ඉරි_සඳු_අඟ_බදා_බ්‍රහ_සිකු_සෙන'.split('_'),\n        weekdaysMin: 'ඉ_ස_අ_බ_බ්‍ර_සි_සෙ'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'a h:mm',\n            LTS: 'a h:mm:ss',\n            L: 'YYYY/MM/DD',\n            LL: 'YYYY MMMM D',\n            LLL: 'YYYY MMMM D, a h:mm',\n            LLLL: 'YYYY MMMM D [වැනි] dddd, a h:mm:ss',\n        },\n        calendar: {\n            sameDay: '[අද] LT[ට]',\n            nextDay: '[හෙට] LT[ට]',\n            nextWeek: 'dddd LT[ට]',\n            lastDay: '[ඊයේ] LT[ට]',\n            lastWeek: '[පසුගිය] dddd LT[ට]',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%sකින්',\n            past: '%sකට පෙර',\n            s: 'තත්පර කිහිපය',\n            ss: 'තත්පර %d',\n            m: 'මිනිත්තුව',\n            mm: 'මිනිත්තු %d',\n            h: 'පැය',\n            hh: 'පැය %d',\n            d: 'දිනය',\n            dd: 'දින %d',\n            M: 'මාසය',\n            MM: 'මාස %d',\n            y: 'වසර',\n            yy: 'වසර %d',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2} වැනි/,\n        ordinal: function (number) {\n            return number + ' වැනි';\n        },\n        meridiemParse: /පෙර වරු|පස් වරු|පෙ.ව|ප.ව./,\n        isPM: function (input) {\n            return input === 'ප.ව.' || input === 'පස් වරු';\n        },\n        meridiem: function (hours, minutes, isLower) {\n            if (hours > 11) {\n                return isLower ? 'ප.ව.' : 'පස් වරු';\n            } else {\n                return isLower ? 'පෙ.ව.' : 'පෙර වරු';\n            }\n        },\n    });\n\n    return si;\n\n})));\n","//! moment.js locale configuration\n//! locale : Slovak [sk]\n//! author : Martin Minka : https://github.com/k2s\n//! based on work of petrbela : https://github.com/petrbela\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var months = 'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split(\n            '_'\n        ),\n        monthsShort = 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_');\n    function plural(n) {\n        return n > 1 && n < 5;\n    }\n    function translate(number, withoutSuffix, key, isFuture) {\n        var result = number + ' ';\n        switch (key) {\n            case 's': // a few seconds / in a few seconds / a few seconds ago\n                return withoutSuffix || isFuture ? 'pár sekúnd' : 'pár sekundami';\n            case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'sekundy' : 'sekúnd');\n                } else {\n                    return result + 'sekundami';\n                }\n            case 'm': // a minute / in a minute / a minute ago\n                return withoutSuffix ? 'minúta' : isFuture ? 'minútu' : 'minútou';\n            case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'minúty' : 'minút');\n                } else {\n                    return result + 'minútami';\n                }\n            case 'h': // an hour / in an hour / an hour ago\n                return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';\n            case 'hh': // 9 hours / in 9 hours / 9 hours ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'hodiny' : 'hodín');\n                } else {\n                    return result + 'hodinami';\n                }\n            case 'd': // a day / in a day / a day ago\n                return withoutSuffix || isFuture ? 'deň' : 'dňom';\n            case 'dd': // 9 days / in 9 days / 9 days ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'dni' : 'dní');\n                } else {\n                    return result + 'dňami';\n                }\n            case 'M': // a month / in a month / a month ago\n                return withoutSuffix || isFuture ? 'mesiac' : 'mesiacom';\n            case 'MM': // 9 months / in 9 months / 9 months ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'mesiace' : 'mesiacov');\n                } else {\n                    return result + 'mesiacmi';\n                }\n            case 'y': // a year / in a year / a year ago\n                return withoutSuffix || isFuture ? 'rok' : 'rokom';\n            case 'yy': // 9 years / in 9 years / 9 years ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'roky' : 'rokov');\n                } else {\n                    return result + 'rokmi';\n                }\n        }\n    }\n\n    var sk = moment.defineLocale('sk', {\n        months: months,\n        monthsShort: monthsShort,\n        weekdays: 'nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota'.split('_'),\n        weekdaysShort: 'ne_po_ut_st_št_pi_so'.split('_'),\n        weekdaysMin: 'ne_po_ut_st_št_pi_so'.split('_'),\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY H:mm',\n            LLLL: 'dddd D. MMMM YYYY H:mm',\n        },\n        calendar: {\n            sameDay: '[dnes o] LT',\n            nextDay: '[zajtra o] LT',\n            nextWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[v nedeľu o] LT';\n                    case 1:\n                    case 2:\n                        return '[v] dddd [o] LT';\n                    case 3:\n                        return '[v stredu o] LT';\n                    case 4:\n                        return '[vo štvrtok o] LT';\n                    case 5:\n                        return '[v piatok o] LT';\n                    case 6:\n                        return '[v sobotu o] LT';\n                }\n            },\n            lastDay: '[včera o] LT',\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[minulú nedeľu o] LT';\n                    case 1:\n                    case 2:\n                        return '[minulý] dddd [o] LT';\n                    case 3:\n                        return '[minulú stredu o] LT';\n                    case 4:\n                    case 5:\n                        return '[minulý] dddd [o] LT';\n                    case 6:\n                        return '[minulú sobotu o] LT';\n                }\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'za %s',\n            past: 'pred %s',\n            s: translate,\n            ss: translate,\n            m: translate,\n            mm: translate,\n            h: translate,\n            hh: translate,\n            d: translate,\n            dd: translate,\n            M: translate,\n            MM: translate,\n            y: translate,\n            yy: translate,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return sk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Slovenian [sl]\n//! author : Robert Sedovšek : https://github.com/sedovsek\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function processRelativeTime(number, withoutSuffix, key, isFuture) {\n        var result = number + ' ';\n        switch (key) {\n            case 's':\n                return withoutSuffix || isFuture\n                    ? 'nekaj sekund'\n                    : 'nekaj sekundami';\n            case 'ss':\n                if (number === 1) {\n                    result += withoutSuffix ? 'sekundo' : 'sekundi';\n                } else if (number === 2) {\n                    result += withoutSuffix || isFuture ? 'sekundi' : 'sekundah';\n                } else if (number < 5) {\n                    result += withoutSuffix || isFuture ? 'sekunde' : 'sekundah';\n                } else {\n                    result += 'sekund';\n                }\n                return result;\n            case 'm':\n                return withoutSuffix ? 'ena minuta' : 'eno minuto';\n            case 'mm':\n                if (number === 1) {\n                    result += withoutSuffix ? 'minuta' : 'minuto';\n                } else if (number === 2) {\n                    result += withoutSuffix || isFuture ? 'minuti' : 'minutama';\n                } else if (number < 5) {\n                    result += withoutSuffix || isFuture ? 'minute' : 'minutami';\n                } else {\n                    result += withoutSuffix || isFuture ? 'minut' : 'minutami';\n                }\n                return result;\n            case 'h':\n                return withoutSuffix ? 'ena ura' : 'eno uro';\n            case 'hh':\n                if (number === 1) {\n                    result += withoutSuffix ? 'ura' : 'uro';\n                } else if (number === 2) {\n                    result += withoutSuffix || isFuture ? 'uri' : 'urama';\n                } else if (number < 5) {\n                    result += withoutSuffix || isFuture ? 'ure' : 'urami';\n                } else {\n                    result += withoutSuffix || isFuture ? 'ur' : 'urami';\n                }\n                return result;\n            case 'd':\n                return withoutSuffix || isFuture ? 'en dan' : 'enim dnem';\n            case 'dd':\n                if (number === 1) {\n                    result += withoutSuffix || isFuture ? 'dan' : 'dnem';\n                } else if (number === 2) {\n                    result += withoutSuffix || isFuture ? 'dni' : 'dnevoma';\n                } else {\n                    result += withoutSuffix || isFuture ? 'dni' : 'dnevi';\n                }\n                return result;\n            case 'M':\n                return withoutSuffix || isFuture ? 'en mesec' : 'enim mesecem';\n            case 'MM':\n                if (number === 1) {\n                    result += withoutSuffix || isFuture ? 'mesec' : 'mesecem';\n                } else if (number === 2) {\n                    result += withoutSuffix || isFuture ? 'meseca' : 'mesecema';\n                } else if (number < 5) {\n                    result += withoutSuffix || isFuture ? 'mesece' : 'meseci';\n                } else {\n                    result += withoutSuffix || isFuture ? 'mesecev' : 'meseci';\n                }\n                return result;\n            case 'y':\n                return withoutSuffix || isFuture ? 'eno leto' : 'enim letom';\n            case 'yy':\n                if (number === 1) {\n                    result += withoutSuffix || isFuture ? 'leto' : 'letom';\n                } else if (number === 2) {\n                    result += withoutSuffix || isFuture ? 'leti' : 'letoma';\n                } else if (number < 5) {\n                    result += withoutSuffix || isFuture ? 'leta' : 'leti';\n                } else {\n                    result += withoutSuffix || isFuture ? 'let' : 'leti';\n                }\n                return result;\n        }\n    }\n\n    var sl = moment.defineLocale('sl', {\n        months: 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split(\n            '_'\n        ),\n        monthsShort: 'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota'.split('_'),\n        weekdaysShort: 'ned._pon._tor._sre._čet._pet._sob.'.split('_'),\n        weekdaysMin: 'ne_po_to_sr_če_pe_so'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD. MM. YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY H:mm',\n            LLLL: 'dddd, D. MMMM YYYY H:mm',\n        },\n        calendar: {\n            sameDay: '[danes ob] LT',\n            nextDay: '[jutri ob] LT',\n\n            nextWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[v] [nedeljo] [ob] LT';\n                    case 3:\n                        return '[v] [sredo] [ob] LT';\n                    case 6:\n                        return '[v] [soboto] [ob] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[v] dddd [ob] LT';\n                }\n            },\n            lastDay: '[včeraj ob] LT',\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[prejšnjo] [nedeljo] [ob] LT';\n                    case 3:\n                        return '[prejšnjo] [sredo] [ob] LT';\n                    case 6:\n                        return '[prejšnjo] [soboto] [ob] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[prejšnji] dddd [ob] LT';\n                }\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'čez %s',\n            past: 'pred %s',\n            s: processRelativeTime,\n            ss: processRelativeTime,\n            m: processRelativeTime,\n            mm: processRelativeTime,\n            h: processRelativeTime,\n            hh: processRelativeTime,\n            d: processRelativeTime,\n            dd: processRelativeTime,\n            M: processRelativeTime,\n            MM: processRelativeTime,\n            y: processRelativeTime,\n            yy: processRelativeTime,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return sl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Albanian [sq]\n//! author : Flakërim Ismani : https://github.com/flakerimi\n//! author : Menelion Elensúle : https://github.com/Oire\n//! author : Oerd Cukalla : https://github.com/oerd\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var sq = moment.defineLocale('sq', {\n        months: 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'),\n        weekdays: 'E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split(\n            '_'\n        ),\n        weekdaysShort: 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'),\n        weekdaysMin: 'D_H_Ma_Më_E_P_Sh'.split('_'),\n        weekdaysParseExact: true,\n        meridiemParse: /PD|MD/,\n        isPM: function (input) {\n            return input.charAt(0) === 'M';\n        },\n        meridiem: function (hours, minutes, isLower) {\n            return hours < 12 ? 'PD' : 'MD';\n        },\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Sot në] LT',\n            nextDay: '[Nesër në] LT',\n            nextWeek: 'dddd [në] LT',\n            lastDay: '[Dje në] LT',\n            lastWeek: 'dddd [e kaluar në] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'në %s',\n            past: '%s më parë',\n            s: 'disa sekonda',\n            ss: '%d sekonda',\n            m: 'një minutë',\n            mm: '%d minuta',\n            h: 'një orë',\n            hh: '%d orë',\n            d: 'një ditë',\n            dd: '%d ditë',\n            M: 'një muaj',\n            MM: '%d muaj',\n            y: 'një vit',\n            yy: '%d vite',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return sq;\n\n})));\n","//! moment.js locale configuration\n//! locale : Serbian Cyrillic [sr-cyrl]\n//! author : Milan Janačković<milanjanackovic@gmail.com> : https://github.com/milan-j\n//! author : Stefan Crnjaković <stefan@hotmail.rs> : https://github.com/crnjakovic\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var translator = {\n        words: {\n            //Different grammatical cases\n            ss: ['секунда', 'секунде', 'секунди'],\n            m: ['један минут', 'једне минуте'],\n            mm: ['минут', 'минуте', 'минута'],\n            h: ['један сат', 'једног сата'],\n            hh: ['сат', 'сата', 'сати'],\n            dd: ['дан', 'дана', 'дана'],\n            MM: ['месец', 'месеца', 'месеци'],\n            yy: ['година', 'године', 'година'],\n        },\n        correctGrammaticalCase: function (number, wordKey) {\n            return number === 1\n                ? wordKey[0]\n                : number >= 2 && number <= 4\n                ? wordKey[1]\n                : wordKey[2];\n        },\n        translate: function (number, withoutSuffix, key) {\n            var wordKey = translator.words[key];\n            if (key.length === 1) {\n                return withoutSuffix ? wordKey[0] : wordKey[1];\n            } else {\n                return (\n                    number +\n                    ' ' +\n                    translator.correctGrammaticalCase(number, wordKey)\n                );\n            }\n        },\n    };\n\n    var srCyrl = moment.defineLocale('sr-cyrl', {\n        months: 'јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар'.split(\n            '_'\n        ),\n        monthsShort: 'јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'недеља_понедељак_уторак_среда_четвртак_петак_субота'.split('_'),\n        weekdaysShort: 'нед._пон._уто._сре._чет._пет._суб.'.split('_'),\n        weekdaysMin: 'не_по_ут_ср_че_пе_су'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'D. M. YYYY.',\n            LL: 'D. MMMM YYYY.',\n            LLL: 'D. MMMM YYYY. H:mm',\n            LLLL: 'dddd, D. MMMM YYYY. H:mm',\n        },\n        calendar: {\n            sameDay: '[данас у] LT',\n            nextDay: '[сутра у] LT',\n            nextWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[у] [недељу] [у] LT';\n                    case 3:\n                        return '[у] [среду] [у] LT';\n                    case 6:\n                        return '[у] [суботу] [у] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[у] dddd [у] LT';\n                }\n            },\n            lastDay: '[јуче у] LT',\n            lastWeek: function () {\n                var lastWeekDays = [\n                    '[прошле] [недеље] [у] LT',\n                    '[прошлог] [понедељка] [у] LT',\n                    '[прошлог] [уторка] [у] LT',\n                    '[прошле] [среде] [у] LT',\n                    '[прошлог] [четвртка] [у] LT',\n                    '[прошлог] [петка] [у] LT',\n                    '[прошле] [суботе] [у] LT',\n                ];\n                return lastWeekDays[this.day()];\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'за %s',\n            past: 'пре %s',\n            s: 'неколико секунди',\n            ss: translator.translate,\n            m: translator.translate,\n            mm: translator.translate,\n            h: translator.translate,\n            hh: translator.translate,\n            d: 'дан',\n            dd: translator.translate,\n            M: 'месец',\n            MM: translator.translate,\n            y: 'годину',\n            yy: translator.translate,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 1st is the first week of the year.\n        },\n    });\n\n    return srCyrl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Serbian [sr]\n//! author : Milan Janačković<milanjanackovic@gmail.com> : https://github.com/milan-j\n//! author : Stefan Crnjaković <stefan@hotmail.rs> : https://github.com/crnjakovic\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var translator = {\n        words: {\n            //Different grammatical cases\n            ss: ['sekunda', 'sekunde', 'sekundi'],\n            m: ['jedan minut', 'jedne minute'],\n            mm: ['minut', 'minute', 'minuta'],\n            h: ['jedan sat', 'jednog sata'],\n            hh: ['sat', 'sata', 'sati'],\n            dd: ['dan', 'dana', 'dana'],\n            MM: ['mesec', 'meseca', 'meseci'],\n            yy: ['godina', 'godine', 'godina'],\n        },\n        correctGrammaticalCase: function (number, wordKey) {\n            return number === 1\n                ? wordKey[0]\n                : number >= 2 && number <= 4\n                ? wordKey[1]\n                : wordKey[2];\n        },\n        translate: function (number, withoutSuffix, key) {\n            var wordKey = translator.words[key];\n            if (key.length === 1) {\n                return withoutSuffix ? wordKey[0] : wordKey[1];\n            } else {\n                return (\n                    number +\n                    ' ' +\n                    translator.correctGrammaticalCase(number, wordKey)\n                );\n            }\n        },\n    };\n\n    var sr = moment.defineLocale('sr', {\n        months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split(\n            '_'\n        ),\n        monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota'.split(\n            '_'\n        ),\n        weekdaysShort: 'ned._pon._uto._sre._čet._pet._sub.'.split('_'),\n        weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'D. M. YYYY.',\n            LL: 'D. MMMM YYYY.',\n            LLL: 'D. MMMM YYYY. H:mm',\n            LLLL: 'dddd, D. MMMM YYYY. H:mm',\n        },\n        calendar: {\n            sameDay: '[danas u] LT',\n            nextDay: '[sutra u] LT',\n            nextWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[u] [nedelju] [u] LT';\n                    case 3:\n                        return '[u] [sredu] [u] LT';\n                    case 6:\n                        return '[u] [subotu] [u] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[u] dddd [u] LT';\n                }\n            },\n            lastDay: '[juče u] LT',\n            lastWeek: function () {\n                var lastWeekDays = [\n                    '[prošle] [nedelje] [u] LT',\n                    '[prošlog] [ponedeljka] [u] LT',\n                    '[prošlog] [utorka] [u] LT',\n                    '[prošle] [srede] [u] LT',\n                    '[prošlog] [četvrtka] [u] LT',\n                    '[prošlog] [petka] [u] LT',\n                    '[prošle] [subote] [u] LT',\n                ];\n                return lastWeekDays[this.day()];\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'za %s',\n            past: 'pre %s',\n            s: 'nekoliko sekundi',\n            ss: translator.translate,\n            m: translator.translate,\n            mm: translator.translate,\n            h: translator.translate,\n            hh: translator.translate,\n            d: 'dan',\n            dd: translator.translate,\n            M: 'mesec',\n            MM: translator.translate,\n            y: 'godinu',\n            yy: translator.translate,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return sr;\n\n})));\n","//! moment.js locale configuration\n//! locale : siSwati [ss]\n//! author : Nicolai Davies<mail@nicolai.io> : https://github.com/nicolaidavies\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var ss = moment.defineLocale('ss', {\n        months: \"Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni\".split(\n            '_'\n        ),\n        monthsShort: 'Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo'.split('_'),\n        weekdays: 'Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo'.split(\n            '_'\n        ),\n        weekdaysShort: 'Lis_Umb_Lsb_Les_Lsi_Lsh_Umg'.split('_'),\n        weekdaysMin: 'Li_Us_Lb_Lt_Ls_Lh_Ug'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'h:mm A',\n            LTS: 'h:mm:ss A',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY h:mm A',\n            LLLL: 'dddd, D MMMM YYYY h:mm A',\n        },\n        calendar: {\n            sameDay: '[Namuhla nga] LT',\n            nextDay: '[Kusasa nga] LT',\n            nextWeek: 'dddd [nga] LT',\n            lastDay: '[Itolo nga] LT',\n            lastWeek: 'dddd [leliphelile] [nga] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'nga %s',\n            past: 'wenteka nga %s',\n            s: 'emizuzwana lomcane',\n            ss: '%d mzuzwana',\n            m: 'umzuzu',\n            mm: '%d emizuzu',\n            h: 'lihora',\n            hh: '%d emahora',\n            d: 'lilanga',\n            dd: '%d emalanga',\n            M: 'inyanga',\n            MM: '%d tinyanga',\n            y: 'umnyaka',\n            yy: '%d iminyaka',\n        },\n        meridiemParse: /ekuseni|emini|entsambama|ebusuku/,\n        meridiem: function (hours, minutes, isLower) {\n            if (hours < 11) {\n                return 'ekuseni';\n            } else if (hours < 15) {\n                return 'emini';\n            } else if (hours < 19) {\n                return 'entsambama';\n            } else {\n                return 'ebusuku';\n            }\n        },\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'ekuseni') {\n                return hour;\n            } else if (meridiem === 'emini') {\n                return hour >= 11 ? hour : hour + 12;\n            } else if (meridiem === 'entsambama' || meridiem === 'ebusuku') {\n                if (hour === 0) {\n                    return 0;\n                }\n                return hour + 12;\n            }\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}/,\n        ordinal: '%d',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return ss;\n\n})));\n","//! moment.js locale configuration\n//! locale : Swedish [sv]\n//! author : Jens Alm : https://github.com/ulmus\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var sv = moment.defineLocale('sv', {\n        months: 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split(\n            '_'\n        ),\n        monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n        weekdays: 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'),\n        weekdaysShort: 'sön_mån_tis_ons_tor_fre_lör'.split('_'),\n        weekdaysMin: 'sö_må_ti_on_to_fr_lö'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'YYYY-MM-DD',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY [kl.] HH:mm',\n            LLLL: 'dddd D MMMM YYYY [kl.] HH:mm',\n            lll: 'D MMM YYYY HH:mm',\n            llll: 'ddd D MMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Idag] LT',\n            nextDay: '[Imorgon] LT',\n            lastDay: '[Igår] LT',\n            nextWeek: '[På] dddd LT',\n            lastWeek: '[I] dddd[s] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'om %s',\n            past: 'för %s sedan',\n            s: 'några sekunder',\n            ss: '%d sekunder',\n            m: 'en minut',\n            mm: '%d minuter',\n            h: 'en timme',\n            hh: '%d timmar',\n            d: 'en dag',\n            dd: '%d dagar',\n            M: 'en månad',\n            MM: '%d månader',\n            y: 'ett år',\n            yy: '%d år',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(\\:e|\\:a)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    ~~((number % 100) / 10) === 1\n                        ? ':e'\n                        : b === 1\n                        ? ':a'\n                        : b === 2\n                        ? ':a'\n                        : b === 3\n                        ? ':e'\n                        : ':e';\n            return number + output;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return sv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Swahili [sw]\n//! author : Fahad Kassim : https://github.com/fadsel\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var sw = moment.defineLocale('sw', {\n        months: 'Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des'.split('_'),\n        weekdays: 'Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi'.split(\n            '_'\n        ),\n        weekdaysShort: 'Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos'.split('_'),\n        weekdaysMin: 'J2_J3_J4_J5_Al_Ij_J1'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'hh:mm A',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[leo saa] LT',\n            nextDay: '[kesho saa] LT',\n            nextWeek: '[wiki ijayo] dddd [saat] LT',\n            lastDay: '[jana] LT',\n            lastWeek: '[wiki iliyopita] dddd [saat] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s baadaye',\n            past: 'tokea %s',\n            s: 'hivi punde',\n            ss: 'sekunde %d',\n            m: 'dakika moja',\n            mm: 'dakika %d',\n            h: 'saa limoja',\n            hh: 'masaa %d',\n            d: 'siku moja',\n            dd: 'siku %d',\n            M: 'mwezi mmoja',\n            MM: 'miezi %d',\n            y: 'mwaka mmoja',\n            yy: 'miaka %d',\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return sw;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tamil [ta]\n//! author : Arjunkumar Krishnamoorthy : https://github.com/tk120404\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            1: '௧',\n            2: '௨',\n            3: '௩',\n            4: '௪',\n            5: '௫',\n            6: '௬',\n            7: '௭',\n            8: '௮',\n            9: '௯',\n            0: '௦',\n        },\n        numberMap = {\n            '௧': '1',\n            '௨': '2',\n            '௩': '3',\n            '௪': '4',\n            '௫': '5',\n            '௬': '6',\n            '௭': '7',\n            '௮': '8',\n            '௯': '9',\n            '௦': '0',\n        };\n\n    var ta = moment.defineLocale('ta', {\n        months: 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split(\n            '_'\n        ),\n        monthsShort: 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split(\n            '_'\n        ),\n        weekdays: 'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split(\n            '_'\n        ),\n        weekdaysShort: 'ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி'.split(\n            '_'\n        ),\n        weekdaysMin: 'ஞா_தி_செ_பு_வி_வெ_ச'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY, HH:mm',\n            LLLL: 'dddd, D MMMM YYYY, HH:mm',\n        },\n        calendar: {\n            sameDay: '[இன்று] LT',\n            nextDay: '[நாளை] LT',\n            nextWeek: 'dddd, LT',\n            lastDay: '[நேற்று] LT',\n            lastWeek: '[கடந்த வாரம்] dddd, LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s இல்',\n            past: '%s முன்',\n            s: 'ஒரு சில விநாடிகள்',\n            ss: '%d விநாடிகள்',\n            m: 'ஒரு நிமிடம்',\n            mm: '%d நிமிடங்கள்',\n            h: 'ஒரு மணி நேரம்',\n            hh: '%d மணி நேரம்',\n            d: 'ஒரு நாள்',\n            dd: '%d நாட்கள்',\n            M: 'ஒரு மாதம்',\n            MM: '%d மாதங்கள்',\n            y: 'ஒரு வருடம்',\n            yy: '%d ஆண்டுகள்',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}வது/,\n        ordinal: function (number) {\n            return number + 'வது';\n        },\n        preparse: function (string) {\n            return string.replace(/[௧௨௩௪௫௬௭௮௯௦]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        // refer http://ta.wikipedia.org/s/1er1\n        meridiemParse: /யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 2) {\n                return ' யாமம்';\n            } else if (hour < 6) {\n                return ' வைகறை'; // வைகறை\n            } else if (hour < 10) {\n                return ' காலை'; // காலை\n            } else if (hour < 14) {\n                return ' நண்பகல்'; // நண்பகல்\n            } else if (hour < 18) {\n                return ' எற்பாடு'; // எற்பாடு\n            } else if (hour < 22) {\n                return ' மாலை'; // மாலை\n            } else {\n                return ' யாமம்';\n            }\n        },\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'யாமம்') {\n                return hour < 2 ? hour : hour + 12;\n            } else if (meridiem === 'வைகறை' || meridiem === 'காலை') {\n                return hour;\n            } else if (meridiem === 'நண்பகல்') {\n                return hour >= 10 ? hour : hour + 12;\n            } else {\n                return hour + 12;\n            }\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 6th is the first week of the year.\n        },\n    });\n\n    return ta;\n\n})));\n","//! moment.js locale configuration\n//! locale : Telugu [te]\n//! author : Krishna Chaitanya Thota : https://github.com/kcthota\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var te = moment.defineLocale('te', {\n        months: 'జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జులై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్'.split(\n            '_'\n        ),\n        monthsShort: 'జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జులై_ఆగ._సెప్._అక్టో._నవ._డిసె.'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం'.split(\n            '_'\n        ),\n        weekdaysShort: 'ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని'.split('_'),\n        weekdaysMin: 'ఆ_సో_మం_బు_గు_శు_శ'.split('_'),\n        longDateFormat: {\n            LT: 'A h:mm',\n            LTS: 'A h:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY, A h:mm',\n            LLLL: 'dddd, D MMMM YYYY, A h:mm',\n        },\n        calendar: {\n            sameDay: '[నేడు] LT',\n            nextDay: '[రేపు] LT',\n            nextWeek: 'dddd, LT',\n            lastDay: '[నిన్న] LT',\n            lastWeek: '[గత] dddd, LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s లో',\n            past: '%s క్రితం',\n            s: 'కొన్ని క్షణాలు',\n            ss: '%d సెకన్లు',\n            m: 'ఒక నిమిషం',\n            mm: '%d నిమిషాలు',\n            h: 'ఒక గంట',\n            hh: '%d గంటలు',\n            d: 'ఒక రోజు',\n            dd: '%d రోజులు',\n            M: 'ఒక నెల',\n            MM: '%d నెలలు',\n            y: 'ఒక సంవత్సరం',\n            yy: '%d సంవత్సరాలు',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}వ/,\n        ordinal: '%dవ',\n        meridiemParse: /రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'రాత్రి') {\n                return hour < 4 ? hour : hour + 12;\n            } else if (meridiem === 'ఉదయం') {\n                return hour;\n            } else if (meridiem === 'మధ్యాహ్నం') {\n                return hour >= 10 ? hour : hour + 12;\n            } else if (meridiem === 'సాయంత్రం') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'రాత్రి';\n            } else if (hour < 10) {\n                return 'ఉదయం';\n            } else if (hour < 17) {\n                return 'మధ్యాహ్నం';\n            } else if (hour < 20) {\n                return 'సాయంత్రం';\n            } else {\n                return 'రాత్రి';\n            }\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 6th is the first week of the year.\n        },\n    });\n\n    return te;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tetun Dili (East Timor) [tet]\n//! author : Joshua Brooks : https://github.com/joshbrooks\n//! author : Onorio De J. Afonso : https://github.com/marobo\n//! author : Sonia Simoes : https://github.com/soniasimoes\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var tet = moment.defineLocale('tet', {\n        months: 'Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),\n        weekdays: 'Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu'.split('_'),\n        weekdaysShort: 'Dom_Seg_Ters_Kua_Kint_Sest_Sab'.split('_'),\n        weekdaysMin: 'Do_Seg_Te_Ku_Ki_Ses_Sa'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Ohin iha] LT',\n            nextDay: '[Aban iha] LT',\n            nextWeek: 'dddd [iha] LT',\n            lastDay: '[Horiseik iha] LT',\n            lastWeek: 'dddd [semana kotuk] [iha] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'iha %s',\n            past: '%s liuba',\n            s: 'segundu balun',\n            ss: 'segundu %d',\n            m: 'minutu ida',\n            mm: 'minutu %d',\n            h: 'oras ida',\n            hh: 'oras %d',\n            d: 'loron ida',\n            dd: 'loron %d',\n            M: 'fulan ida',\n            MM: 'fulan %d',\n            y: 'tinan ida',\n            yy: 'tinan %d',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    ~~((number % 100) / 10) === 1\n                        ? 'th'\n                        : b === 1\n                        ? 'st'\n                        : b === 2\n                        ? 'nd'\n                        : b === 3\n                        ? 'rd'\n                        : 'th';\n            return number + output;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return tet;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tajik [tg]\n//! author : Orif N. Jr. : https://github.com/orif-jr\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var suffixes = {\n        0: '-ум',\n        1: '-ум',\n        2: '-юм',\n        3: '-юм',\n        4: '-ум',\n        5: '-ум',\n        6: '-ум',\n        7: '-ум',\n        8: '-ум',\n        9: '-ум',\n        10: '-ум',\n        12: '-ум',\n        13: '-ум',\n        20: '-ум',\n        30: '-юм',\n        40: '-ум',\n        50: '-ум',\n        60: '-ум',\n        70: '-ум',\n        80: '-ум',\n        90: '-ум',\n        100: '-ум',\n    };\n\n    var tg = moment.defineLocale('tg', {\n        months: {\n            format: 'январи_феврали_марти_апрели_майи_июни_июли_августи_сентябри_октябри_ноябри_декабри'.split(\n                '_'\n            ),\n            standalone: 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split(\n                '_'\n            ),\n        },\n        monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),\n        weekdays: 'якшанбе_душанбе_сешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе'.split(\n            '_'\n        ),\n        weekdaysShort: 'яшб_дшб_сшб_чшб_пшб_ҷум_шнб'.split('_'),\n        weekdaysMin: 'яш_дш_сш_чш_пш_ҷм_шб'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Имрӯз соати] LT',\n            nextDay: '[Фардо соати] LT',\n            lastDay: '[Дирӯз соати] LT',\n            nextWeek: 'dddd[и] [ҳафтаи оянда соати] LT',\n            lastWeek: 'dddd[и] [ҳафтаи гузашта соати] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'баъди %s',\n            past: '%s пеш',\n            s: 'якчанд сония',\n            m: 'як дақиқа',\n            mm: '%d дақиқа',\n            h: 'як соат',\n            hh: '%d соат',\n            d: 'як рӯз',\n            dd: '%d рӯз',\n            M: 'як моҳ',\n            MM: '%d моҳ',\n            y: 'як сол',\n            yy: '%d сол',\n        },\n        meridiemParse: /шаб|субҳ|рӯз|бегоҳ/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'шаб') {\n                return hour < 4 ? hour : hour + 12;\n            } else if (meridiem === 'субҳ') {\n                return hour;\n            } else if (meridiem === 'рӯз') {\n                return hour >= 11 ? hour : hour + 12;\n            } else if (meridiem === 'бегоҳ') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'шаб';\n            } else if (hour < 11) {\n                return 'субҳ';\n            } else if (hour < 16) {\n                return 'рӯз';\n            } else if (hour < 19) {\n                return 'бегоҳ';\n            } else {\n                return 'шаб';\n            }\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-(ум|юм)/,\n        ordinal: function (number) {\n            var a = number % 10,\n                b = number >= 100 ? 100 : null;\n            return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 1th is the first week of the year.\n        },\n    });\n\n    return tg;\n\n})));\n","//! moment.js locale configuration\n//! locale : Thai [th]\n//! author : Kridsada Thanabulpong : https://github.com/sirn\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var th = moment.defineLocale('th', {\n        months: 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split(\n            '_'\n        ),\n        monthsShort: 'ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'),\n        weekdaysShort: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์'.split('_'), // yes, three characters difference\n        weekdaysMin: 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY เวลา H:mm',\n            LLLL: 'วันddddที่ D MMMM YYYY เวลา H:mm',\n        },\n        meridiemParse: /ก่อนเที่ยง|หลังเที่ยง/,\n        isPM: function (input) {\n            return input === 'หลังเที่ยง';\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'ก่อนเที่ยง';\n            } else {\n                return 'หลังเที่ยง';\n            }\n        },\n        calendar: {\n            sameDay: '[วันนี้ เวลา] LT',\n            nextDay: '[พรุ่งนี้ เวลา] LT',\n            nextWeek: 'dddd[หน้า เวลา] LT',\n            lastDay: '[เมื่อวานนี้ เวลา] LT',\n            lastWeek: '[วัน]dddd[ที่แล้ว เวลา] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'อีก %s',\n            past: '%sที่แล้ว',\n            s: 'ไม่กี่วินาที',\n            ss: '%d วินาที',\n            m: '1 นาที',\n            mm: '%d นาที',\n            h: '1 ชั่วโมง',\n            hh: '%d ชั่วโมง',\n            d: '1 วัน',\n            dd: '%d วัน',\n            w: '1 สัปดาห์',\n            ww: '%d สัปดาห์',\n            M: '1 เดือน',\n            MM: '%d เดือน',\n            y: '1 ปี',\n            yy: '%d ปี',\n        },\n    });\n\n    return th;\n\n})));\n","//! moment.js locale configuration\n//! locale : Turkmen [tk]\n//! author : Atamyrat Abdyrahmanov : https://github.com/atamyratabdy\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var suffixes = {\n        1: \"'inji\",\n        5: \"'inji\",\n        8: \"'inji\",\n        70: \"'inji\",\n        80: \"'inji\",\n        2: \"'nji\",\n        7: \"'nji\",\n        20: \"'nji\",\n        50: \"'nji\",\n        3: \"'ünji\",\n        4: \"'ünji\",\n        100: \"'ünji\",\n        6: \"'njy\",\n        9: \"'unjy\",\n        10: \"'unjy\",\n        30: \"'unjy\",\n        60: \"'ynjy\",\n        90: \"'ynjy\",\n    };\n\n    var tk = moment.defineLocale('tk', {\n        months: 'Ýanwar_Fewral_Mart_Aprel_Maý_Iýun_Iýul_Awgust_Sentýabr_Oktýabr_Noýabr_Dekabr'.split(\n            '_'\n        ),\n        monthsShort: 'Ýan_Few_Mar_Apr_Maý_Iýn_Iýl_Awg_Sen_Okt_Noý_Dek'.split('_'),\n        weekdays: 'Ýekşenbe_Duşenbe_Sişenbe_Çarşenbe_Penşenbe_Anna_Şenbe'.split(\n            '_'\n        ),\n        weekdaysShort: 'Ýek_Duş_Siş_Çar_Pen_Ann_Şen'.split('_'),\n        weekdaysMin: 'Ýk_Dş_Sş_Çr_Pn_An_Şn'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[bugün sagat] LT',\n            nextDay: '[ertir sagat] LT',\n            nextWeek: '[indiki] dddd [sagat] LT',\n            lastDay: '[düýn] LT',\n            lastWeek: '[geçen] dddd [sagat] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s soň',\n            past: '%s öň',\n            s: 'birnäçe sekunt',\n            m: 'bir minut',\n            mm: '%d minut',\n            h: 'bir sagat',\n            hh: '%d sagat',\n            d: 'bir gün',\n            dd: '%d gün',\n            M: 'bir aý',\n            MM: '%d aý',\n            y: 'bir ýyl',\n            yy: '%d ýyl',\n        },\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'd':\n                case 'D':\n                case 'Do':\n                case 'DD':\n                    return number;\n                default:\n                    if (number === 0) {\n                        // special case for zero\n                        return number + \"'unjy\";\n                    }\n                    var a = number % 10,\n                        b = (number % 100) - a,\n                        c = number >= 100 ? 100 : null;\n                    return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n            }\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return tk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tagalog (Philippines) [tl-ph]\n//! author : Dan Hagman : https://github.com/hagmandan\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var tlPh = moment.defineLocale('tl-ph', {\n        months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split(\n            '_'\n        ),\n        monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),\n        weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split(\n            '_'\n        ),\n        weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),\n        weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'MM/D/YYYY',\n            LL: 'MMMM D, YYYY',\n            LLL: 'MMMM D, YYYY HH:mm',\n            LLLL: 'dddd, MMMM DD, YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: 'LT [ngayong araw]',\n            nextDay: '[Bukas ng] LT',\n            nextWeek: 'LT [sa susunod na] dddd',\n            lastDay: 'LT [kahapon]',\n            lastWeek: 'LT [noong nakaraang] dddd',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'sa loob ng %s',\n            past: '%s ang nakalipas',\n            s: 'ilang segundo',\n            ss: '%d segundo',\n            m: 'isang minuto',\n            mm: '%d minuto',\n            h: 'isang oras',\n            hh: '%d oras',\n            d: 'isang araw',\n            dd: '%d araw',\n            M: 'isang buwan',\n            MM: '%d buwan',\n            y: 'isang taon',\n            yy: '%d taon',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}/,\n        ordinal: function (number) {\n            return number;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return tlPh;\n\n})));\n","//! moment.js locale configuration\n//! locale : Klingon [tlh]\n//! author : Dominika Kruk : https://github.com/amaranthrose\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var numbersNouns = 'pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut'.split('_');\n\n    function translateFuture(output) {\n        var time = output;\n        time =\n            output.indexOf('jaj') !== -1\n                ? time.slice(0, -3) + 'leS'\n                : output.indexOf('jar') !== -1\n                ? time.slice(0, -3) + 'waQ'\n                : output.indexOf('DIS') !== -1\n                ? time.slice(0, -3) + 'nem'\n                : time + ' pIq';\n        return time;\n    }\n\n    function translatePast(output) {\n        var time = output;\n        time =\n            output.indexOf('jaj') !== -1\n                ? time.slice(0, -3) + 'Hu’'\n                : output.indexOf('jar') !== -1\n                ? time.slice(0, -3) + 'wen'\n                : output.indexOf('DIS') !== -1\n                ? time.slice(0, -3) + 'ben'\n                : time + ' ret';\n        return time;\n    }\n\n    function translate(number, withoutSuffix, string, isFuture) {\n        var numberNoun = numberAsNoun(number);\n        switch (string) {\n            case 'ss':\n                return numberNoun + ' lup';\n            case 'mm':\n                return numberNoun + ' tup';\n            case 'hh':\n                return numberNoun + ' rep';\n            case 'dd':\n                return numberNoun + ' jaj';\n            case 'MM':\n                return numberNoun + ' jar';\n            case 'yy':\n                return numberNoun + ' DIS';\n        }\n    }\n\n    function numberAsNoun(number) {\n        var hundred = Math.floor((number % 1000) / 100),\n            ten = Math.floor((number % 100) / 10),\n            one = number % 10,\n            word = '';\n        if (hundred > 0) {\n            word += numbersNouns[hundred] + 'vatlh';\n        }\n        if (ten > 0) {\n            word += (word !== '' ? ' ' : '') + numbersNouns[ten] + 'maH';\n        }\n        if (one > 0) {\n            word += (word !== '' ? ' ' : '') + numbersNouns[one];\n        }\n        return word === '' ? 'pagh' : word;\n    }\n\n    var tlh = moment.defineLocale('tlh', {\n        months: 'tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’'.split(\n            '_'\n        ),\n        monthsShort: 'jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split(\n            '_'\n        ),\n        weekdaysShort: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split(\n            '_'\n        ),\n        weekdaysMin: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split(\n            '_'\n        ),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[DaHjaj] LT',\n            nextDay: '[wa’leS] LT',\n            nextWeek: 'LLL',\n            lastDay: '[wa’Hu’] LT',\n            lastWeek: 'LLL',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: translateFuture,\n            past: translatePast,\n            s: 'puS lup',\n            ss: translate,\n            m: 'wa’ tup',\n            mm: translate,\n            h: 'wa’ rep',\n            hh: translate,\n            d: 'wa’ jaj',\n            dd: translate,\n            M: 'wa’ jar',\n            MM: translate,\n            y: 'wa’ DIS',\n            yy: translate,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return tlh;\n\n})));\n","//! moment.js locale configuration\n//! locale : Turkish [tr]\n//! authors : Erhan Gundogan : https://github.com/erhangundogan,\n//!           Burak Yiğit Kaya: https://github.com/BYK\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var suffixes = {\n        1: \"'inci\",\n        5: \"'inci\",\n        8: \"'inci\",\n        70: \"'inci\",\n        80: \"'inci\",\n        2: \"'nci\",\n        7: \"'nci\",\n        20: \"'nci\",\n        50: \"'nci\",\n        3: \"'üncü\",\n        4: \"'üncü\",\n        100: \"'üncü\",\n        6: \"'ncı\",\n        9: \"'uncu\",\n        10: \"'uncu\",\n        30: \"'uncu\",\n        60: \"'ıncı\",\n        90: \"'ıncı\",\n    };\n\n    var tr = moment.defineLocale('tr', {\n        months: 'Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık'.split(\n            '_'\n        ),\n        monthsShort: 'Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara'.split('_'),\n        weekdays: 'Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi'.split(\n            '_'\n        ),\n        weekdaysShort: 'Paz_Pts_Sal_Çar_Per_Cum_Cts'.split('_'),\n        weekdaysMin: 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'),\n        meridiem: function (hours, minutes, isLower) {\n            if (hours < 12) {\n                return isLower ? 'öö' : 'ÖÖ';\n            } else {\n                return isLower ? 'ös' : 'ÖS';\n            }\n        },\n        meridiemParse: /öö|ÖÖ|ös|ÖS/,\n        isPM: function (input) {\n            return input === 'ös' || input === 'ÖS';\n        },\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[bugün saat] LT',\n            nextDay: '[yarın saat] LT',\n            nextWeek: '[gelecek] dddd [saat] LT',\n            lastDay: '[dün] LT',\n            lastWeek: '[geçen] dddd [saat] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s sonra',\n            past: '%s önce',\n            s: 'birkaç saniye',\n            ss: '%d saniye',\n            m: 'bir dakika',\n            mm: '%d dakika',\n            h: 'bir saat',\n            hh: '%d saat',\n            d: 'bir gün',\n            dd: '%d gün',\n            w: 'bir hafta',\n            ww: '%d hafta',\n            M: 'bir ay',\n            MM: '%d ay',\n            y: 'bir yıl',\n            yy: '%d yıl',\n        },\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'd':\n                case 'D':\n                case 'Do':\n                case 'DD':\n                    return number;\n                default:\n                    if (number === 0) {\n                        // special case for zero\n                        return number + \"'ıncı\";\n                    }\n                    var a = number % 10,\n                        b = (number % 100) - a,\n                        c = number >= 100 ? 100 : null;\n                    return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n            }\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return tr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Talossan [tzl]\n//! author : Robin van der Vliet : https://github.com/robin0van0der0v\n//! author : Iustì Canun\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    // After the year there should be a slash and the amount of years since December 26, 1979 in Roman numerals.\n    // This is currently too difficult (maybe even impossible) to add.\n    var tzl = moment.defineLocale('tzl', {\n        months: 'Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec'.split('_'),\n        weekdays: 'Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi'.split('_'),\n        weekdaysShort: 'Súl_Lún_Mai_Már_Xhú_Vié_Sát'.split('_'),\n        weekdaysMin: 'Sú_Lú_Ma_Má_Xh_Vi_Sá'.split('_'),\n        longDateFormat: {\n            LT: 'HH.mm',\n            LTS: 'HH.mm.ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM [dallas] YYYY',\n            LLL: 'D. MMMM [dallas] YYYY HH.mm',\n            LLLL: 'dddd, [li] D. MMMM [dallas] YYYY HH.mm',\n        },\n        meridiemParse: /d\\'o|d\\'a/i,\n        isPM: function (input) {\n            return \"d'o\" === input.toLowerCase();\n        },\n        meridiem: function (hours, minutes, isLower) {\n            if (hours > 11) {\n                return isLower ? \"d'o\" : \"D'O\";\n            } else {\n                return isLower ? \"d'a\" : \"D'A\";\n            }\n        },\n        calendar: {\n            sameDay: '[oxhi à] LT',\n            nextDay: '[demà à] LT',\n            nextWeek: 'dddd [à] LT',\n            lastDay: '[ieiri à] LT',\n            lastWeek: '[sür el] dddd [lasteu à] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'osprei %s',\n            past: 'ja%s',\n            s: processRelativeTime,\n            ss: processRelativeTime,\n            m: processRelativeTime,\n            mm: processRelativeTime,\n            h: processRelativeTime,\n            hh: processRelativeTime,\n            d: processRelativeTime,\n            dd: processRelativeTime,\n            M: processRelativeTime,\n            MM: processRelativeTime,\n            y: processRelativeTime,\n            yy: processRelativeTime,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    function processRelativeTime(number, withoutSuffix, key, isFuture) {\n        var format = {\n            s: ['viensas secunds', \"'iensas secunds\"],\n            ss: [number + ' secunds', '' + number + ' secunds'],\n            m: [\"'n míut\", \"'iens míut\"],\n            mm: [number + ' míuts', '' + number + ' míuts'],\n            h: [\"'n þora\", \"'iensa þora\"],\n            hh: [number + ' þoras', '' + number + ' þoras'],\n            d: [\"'n ziua\", \"'iensa ziua\"],\n            dd: [number + ' ziuas', '' + number + ' ziuas'],\n            M: [\"'n mes\", \"'iens mes\"],\n            MM: [number + ' mesen', '' + number + ' mesen'],\n            y: [\"'n ar\", \"'iens ar\"],\n            yy: [number + ' ars', '' + number + ' ars'],\n        };\n        return isFuture\n            ? format[key][0]\n            : withoutSuffix\n            ? format[key][0]\n            : format[key][1];\n    }\n\n    return tzl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Central Atlas Tamazight Latin [tzm-latn]\n//! author : Abdel Said : https://github.com/abdelsaid\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var tzmLatn = moment.defineLocale('tzm-latn', {\n        months: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split(\n            '_'\n        ),\n        monthsShort: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split(\n            '_'\n        ),\n        weekdays: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n        weekdaysShort: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n        weekdaysMin: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[asdkh g] LT',\n            nextDay: '[aska g] LT',\n            nextWeek: 'dddd [g] LT',\n            lastDay: '[assant g] LT',\n            lastWeek: 'dddd [g] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'dadkh s yan %s',\n            past: 'yan %s',\n            s: 'imik',\n            ss: '%d imik',\n            m: 'minuḍ',\n            mm: '%d minuḍ',\n            h: 'saɛa',\n            hh: '%d tassaɛin',\n            d: 'ass',\n            dd: '%d ossan',\n            M: 'ayowr',\n            MM: '%d iyyirn',\n            y: 'asgas',\n            yy: '%d isgasn',\n        },\n        week: {\n            dow: 6, // Saturday is the first day of the week.\n            doy: 12, // The week that contains Jan 12th is the first week of the year.\n        },\n    });\n\n    return tzmLatn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Central Atlas Tamazight [tzm]\n//! author : Abdel Said : https://github.com/abdelsaid\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var tzm = moment.defineLocale('tzm', {\n        months: 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split(\n            '_'\n        ),\n        monthsShort: 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split(\n            '_'\n        ),\n        weekdays: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n        weekdaysShort: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n        weekdaysMin: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[ⴰⵙⴷⵅ ⴴ] LT',\n            nextDay: '[ⴰⵙⴽⴰ ⴴ] LT',\n            nextWeek: 'dddd [ⴴ] LT',\n            lastDay: '[ⴰⵚⴰⵏⵜ ⴴ] LT',\n            lastWeek: 'dddd [ⴴ] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s',\n            past: 'ⵢⴰⵏ %s',\n            s: 'ⵉⵎⵉⴽ',\n            ss: '%d ⵉⵎⵉⴽ',\n            m: 'ⵎⵉⵏⵓⴺ',\n            mm: '%d ⵎⵉⵏⵓⴺ',\n            h: 'ⵙⴰⵄⴰ',\n            hh: '%d ⵜⴰⵙⵙⴰⵄⵉⵏ',\n            d: 'ⴰⵙⵙ',\n            dd: '%d oⵙⵙⴰⵏ',\n            M: 'ⴰⵢoⵓⵔ',\n            MM: '%d ⵉⵢⵢⵉⵔⵏ',\n            y: 'ⴰⵙⴳⴰⵙ',\n            yy: '%d ⵉⵙⴳⴰⵙⵏ',\n        },\n        week: {\n            dow: 6, // Saturday is the first day of the week.\n            doy: 12, // The week that contains Jan 12th is the first week of the year.\n        },\n    });\n\n    return tzm;\n\n})));\n","//! moment.js locale configuration\n//! locale : Uyghur (China) [ug-cn]\n//! author: boyaq : https://github.com/boyaq\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var ugCn = moment.defineLocale('ug-cn', {\n        months: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(\n            '_'\n        ),\n        monthsShort: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(\n            '_'\n        ),\n        weekdays: 'يەكشەنبە_دۈشەنبە_سەيشەنبە_چارشەنبە_پەيشەنبە_جۈمە_شەنبە'.split(\n            '_'\n        ),\n        weekdaysShort: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),\n        weekdaysMin: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'YYYY-MM-DD',\n            LL: 'YYYY-يىلىM-ئاينىڭD-كۈنى',\n            LLL: 'YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',\n            LLLL: 'dddd، YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',\n        },\n        meridiemParse: /يېرىم كېچە|سەھەر|چۈشتىن بۇرۇن|چۈش|چۈشتىن كېيىن|كەچ/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (\n                meridiem === 'يېرىم كېچە' ||\n                meridiem === 'سەھەر' ||\n                meridiem === 'چۈشتىن بۇرۇن'\n            ) {\n                return hour;\n            } else if (meridiem === 'چۈشتىن كېيىن' || meridiem === 'كەچ') {\n                return hour + 12;\n            } else {\n                return hour >= 11 ? hour : hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            var hm = hour * 100 + minute;\n            if (hm < 600) {\n                return 'يېرىم كېچە';\n            } else if (hm < 900) {\n                return 'سەھەر';\n            } else if (hm < 1130) {\n                return 'چۈشتىن بۇرۇن';\n            } else if (hm < 1230) {\n                return 'چۈش';\n            } else if (hm < 1800) {\n                return 'چۈشتىن كېيىن';\n            } else {\n                return 'كەچ';\n            }\n        },\n        calendar: {\n            sameDay: '[بۈگۈن سائەت] LT',\n            nextDay: '[ئەتە سائەت] LT',\n            nextWeek: '[كېلەركى] dddd [سائەت] LT',\n            lastDay: '[تۆنۈگۈن] LT',\n            lastWeek: '[ئالدىنقى] dddd [سائەت] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s كېيىن',\n            past: '%s بۇرۇن',\n            s: 'نەچچە سېكونت',\n            ss: '%d سېكونت',\n            m: 'بىر مىنۇت',\n            mm: '%d مىنۇت',\n            h: 'بىر سائەت',\n            hh: '%d سائەت',\n            d: 'بىر كۈن',\n            dd: '%d كۈن',\n            M: 'بىر ئاي',\n            MM: '%d ئاي',\n            y: 'بىر يىل',\n            yy: '%d يىل',\n        },\n\n        dayOfMonthOrdinalParse: /\\d{1,2}(-كۈنى|-ئاي|-ھەپتە)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'd':\n                case 'D':\n                case 'DDD':\n                    return number + '-كۈنى';\n                case 'w':\n                case 'W':\n                    return number + '-ھەپتە';\n                default:\n                    return number;\n            }\n        },\n        preparse: function (string) {\n            return string.replace(/،/g, ',');\n        },\n        postformat: function (string) {\n            return string.replace(/,/g, '،');\n        },\n        week: {\n            // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 1st is the first week of the year.\n        },\n    });\n\n    return ugCn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Ukrainian [uk]\n//! author : zemlanin : https://github.com/zemlanin\n//! Author : Menelion Elensúle : https://github.com/Oire\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function plural(word, num) {\n        var forms = word.split('_');\n        return num % 10 === 1 && num % 100 !== 11\n            ? forms[0]\n            : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n            ? forms[1]\n            : forms[2];\n    }\n    function relativeTimeWithPlural(number, withoutSuffix, key) {\n        var format = {\n            ss: withoutSuffix ? 'секунда_секунди_секунд' : 'секунду_секунди_секунд',\n            mm: withoutSuffix ? 'хвилина_хвилини_хвилин' : 'хвилину_хвилини_хвилин',\n            hh: withoutSuffix ? 'година_години_годин' : 'годину_години_годин',\n            dd: 'день_дні_днів',\n            MM: 'місяць_місяці_місяців',\n            yy: 'рік_роки_років',\n        };\n        if (key === 'm') {\n            return withoutSuffix ? 'хвилина' : 'хвилину';\n        } else if (key === 'h') {\n            return withoutSuffix ? 'година' : 'годину';\n        } else {\n            return number + ' ' + plural(format[key], +number);\n        }\n    }\n    function weekdaysCaseReplace(m, format) {\n        var weekdays = {\n                nominative: 'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split(\n                    '_'\n                ),\n                accusative: 'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split(\n                    '_'\n                ),\n                genitive: 'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split(\n                    '_'\n                ),\n            },\n            nounCase;\n\n        if (m === true) {\n            return weekdays['nominative']\n                .slice(1, 7)\n                .concat(weekdays['nominative'].slice(0, 1));\n        }\n        if (!m) {\n            return weekdays['nominative'];\n        }\n\n        nounCase = /(\\[[ВвУу]\\]) ?dddd/.test(format)\n            ? 'accusative'\n            : /\\[?(?:минулої|наступної)? ?\\] ?dddd/.test(format)\n            ? 'genitive'\n            : 'nominative';\n        return weekdays[nounCase][m.day()];\n    }\n    function processHoursFunction(str) {\n        return function () {\n            return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT';\n        };\n    }\n\n    var uk = moment.defineLocale('uk', {\n        months: {\n            format: 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split(\n                '_'\n            ),\n            standalone: 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split(\n                '_'\n            ),\n        },\n        monthsShort: 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split(\n            '_'\n        ),\n        weekdays: weekdaysCaseReplace,\n        weekdaysShort: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n        weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY р.',\n            LLL: 'D MMMM YYYY р., HH:mm',\n            LLLL: 'dddd, D MMMM YYYY р., HH:mm',\n        },\n        calendar: {\n            sameDay: processHoursFunction('[Сьогодні '),\n            nextDay: processHoursFunction('[Завтра '),\n            lastDay: processHoursFunction('[Вчора '),\n            nextWeek: processHoursFunction('[У] dddd ['),\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                    case 3:\n                    case 5:\n                    case 6:\n                        return processHoursFunction('[Минулої] dddd [').call(this);\n                    case 1:\n                    case 2:\n                    case 4:\n                        return processHoursFunction('[Минулого] dddd [').call(this);\n                }\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'за %s',\n            past: '%s тому',\n            s: 'декілька секунд',\n            ss: relativeTimeWithPlural,\n            m: relativeTimeWithPlural,\n            mm: relativeTimeWithPlural,\n            h: 'годину',\n            hh: relativeTimeWithPlural,\n            d: 'день',\n            dd: relativeTimeWithPlural,\n            M: 'місяць',\n            MM: relativeTimeWithPlural,\n            y: 'рік',\n            yy: relativeTimeWithPlural,\n        },\n        // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason\n        meridiemParse: /ночі|ранку|дня|вечора/,\n        isPM: function (input) {\n            return /^(дня|вечора)$/.test(input);\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'ночі';\n            } else if (hour < 12) {\n                return 'ранку';\n            } else if (hour < 17) {\n                return 'дня';\n            } else {\n                return 'вечора';\n            }\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-(й|го)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'M':\n                case 'd':\n                case 'DDD':\n                case 'w':\n                case 'W':\n                    return number + '-й';\n                case 'D':\n                    return number + '-го';\n                default:\n                    return number;\n            }\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return uk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Urdu [ur]\n//! author : Sawood Alam : https://github.com/ibnesayeed\n//! author : Zack : https://github.com/ZackVision\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var months = [\n            'جنوری',\n            'فروری',\n            'مارچ',\n            'اپریل',\n            'مئی',\n            'جون',\n            'جولائی',\n            'اگست',\n            'ستمبر',\n            'اکتوبر',\n            'نومبر',\n            'دسمبر',\n        ],\n        days = ['اتوار', 'پیر', 'منگل', 'بدھ', 'جمعرات', 'جمعہ', 'ہفتہ'];\n\n    var ur = moment.defineLocale('ur', {\n        months: months,\n        monthsShort: months,\n        weekdays: days,\n        weekdaysShort: days,\n        weekdaysMin: days,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd، D MMMM YYYY HH:mm',\n        },\n        meridiemParse: /صبح|شام/,\n        isPM: function (input) {\n            return 'شام' === input;\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'صبح';\n            }\n            return 'شام';\n        },\n        calendar: {\n            sameDay: '[آج بوقت] LT',\n            nextDay: '[کل بوقت] LT',\n            nextWeek: 'dddd [بوقت] LT',\n            lastDay: '[گذشتہ روز بوقت] LT',\n            lastWeek: '[گذشتہ] dddd [بوقت] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s بعد',\n            past: '%s قبل',\n            s: 'چند سیکنڈ',\n            ss: '%d سیکنڈ',\n            m: 'ایک منٹ',\n            mm: '%d منٹ',\n            h: 'ایک گھنٹہ',\n            hh: '%d گھنٹے',\n            d: 'ایک دن',\n            dd: '%d دن',\n            M: 'ایک ماہ',\n            MM: '%d ماہ',\n            y: 'ایک سال',\n            yy: '%d سال',\n        },\n        preparse: function (string) {\n            return string.replace(/،/g, ',');\n        },\n        postformat: function (string) {\n            return string.replace(/,/g, '،');\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return ur;\n\n})));\n","//! moment.js locale configuration\n//! locale : Uzbek Latin [uz-latn]\n//! author : Rasulbek Mirzayev : github.com/Rasulbeeek\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var uzLatn = moment.defineLocale('uz-latn', {\n        months: 'Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr'.split(\n            '_'\n        ),\n        monthsShort: 'Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek'.split('_'),\n        weekdays: 'Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba'.split(\n            '_'\n        ),\n        weekdaysShort: 'Yak_Dush_Sesh_Chor_Pay_Jum_Shan'.split('_'),\n        weekdaysMin: 'Ya_Du_Se_Cho_Pa_Ju_Sha'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'D MMMM YYYY, dddd HH:mm',\n        },\n        calendar: {\n            sameDay: '[Bugun soat] LT [da]',\n            nextDay: '[Ertaga] LT [da]',\n            nextWeek: 'dddd [kuni soat] LT [da]',\n            lastDay: '[Kecha soat] LT [da]',\n            lastWeek: \"[O'tgan] dddd [kuni soat] LT [da]\",\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'Yaqin %s ichida',\n            past: 'Bir necha %s oldin',\n            s: 'soniya',\n            ss: '%d soniya',\n            m: 'bir daqiqa',\n            mm: '%d daqiqa',\n            h: 'bir soat',\n            hh: '%d soat',\n            d: 'bir kun',\n            dd: '%d kun',\n            M: 'bir oy',\n            MM: '%d oy',\n            y: 'bir yil',\n            yy: '%d yil',\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return uzLatn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Uzbek [uz]\n//! author : Sardor Muminov : https://github.com/muminoff\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var uz = moment.defineLocale('uz', {\n        months: 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split(\n            '_'\n        ),\n        monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),\n        weekdays: 'Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба'.split('_'),\n        weekdaysShort: 'Якш_Душ_Сеш_Чор_Пай_Жум_Шан'.split('_'),\n        weekdaysMin: 'Як_Ду_Се_Чо_Па_Жу_Ша'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'D MMMM YYYY, dddd HH:mm',\n        },\n        calendar: {\n            sameDay: '[Бугун соат] LT [да]',\n            nextDay: '[Эртага] LT [да]',\n            nextWeek: 'dddd [куни соат] LT [да]',\n            lastDay: '[Кеча соат] LT [да]',\n            lastWeek: '[Утган] dddd [куни соат] LT [да]',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'Якин %s ичида',\n            past: 'Бир неча %s олдин',\n            s: 'фурсат',\n            ss: '%d фурсат',\n            m: 'бир дакика',\n            mm: '%d дакика',\n            h: 'бир соат',\n            hh: '%d соат',\n            d: 'бир кун',\n            dd: '%d кун',\n            M: 'бир ой',\n            MM: '%d ой',\n            y: 'бир йил',\n            yy: '%d йил',\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return uz;\n\n})));\n","//! moment.js locale configuration\n//! locale : Vietnamese [vi]\n//! author : Bang Nguyen : https://github.com/bangnk\n//! author : Chien Kira : https://github.com/chienkira\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var vi = moment.defineLocale('vi', {\n        months: 'tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12'.split(\n            '_'\n        ),\n        monthsShort: 'Thg 01_Thg 02_Thg 03_Thg 04_Thg 05_Thg 06_Thg 07_Thg 08_Thg 09_Thg 10_Thg 11_Thg 12'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy'.split(\n            '_'\n        ),\n        weekdaysShort: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n        weekdaysMin: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n        weekdaysParseExact: true,\n        meridiemParse: /sa|ch/i,\n        isPM: function (input) {\n            return /^ch$/i.test(input);\n        },\n        meridiem: function (hours, minutes, isLower) {\n            if (hours < 12) {\n                return isLower ? 'sa' : 'SA';\n            } else {\n                return isLower ? 'ch' : 'CH';\n            }\n        },\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM [năm] YYYY',\n            LLL: 'D MMMM [năm] YYYY HH:mm',\n            LLLL: 'dddd, D MMMM [năm] YYYY HH:mm',\n            l: 'DD/M/YYYY',\n            ll: 'D MMM YYYY',\n            lll: 'D MMM YYYY HH:mm',\n            llll: 'ddd, D MMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Hôm nay lúc] LT',\n            nextDay: '[Ngày mai lúc] LT',\n            nextWeek: 'dddd [tuần tới lúc] LT',\n            lastDay: '[Hôm qua lúc] LT',\n            lastWeek: 'dddd [tuần trước lúc] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s tới',\n            past: '%s trước',\n            s: 'vài giây',\n            ss: '%d giây',\n            m: 'một phút',\n            mm: '%d phút',\n            h: 'một giờ',\n            hh: '%d giờ',\n            d: 'một ngày',\n            dd: '%d ngày',\n            w: 'một tuần',\n            ww: '%d tuần',\n            M: 'một tháng',\n            MM: '%d tháng',\n            y: 'một năm',\n            yy: '%d năm',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}/,\n        ordinal: function (number) {\n            return number;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return vi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Pseudo [x-pseudo]\n//! author : Andrew Hood : https://github.com/andrewhood125\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var xPseudo = moment.defineLocale('x-pseudo', {\n        months: 'J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér'.split(\n            '_'\n        ),\n        monthsShort: 'J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý'.split(\n            '_'\n        ),\n        weekdaysShort: 'S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát'.split('_'),\n        weekdaysMin: 'S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[T~ódá~ý át] LT',\n            nextDay: '[T~ómó~rró~w át] LT',\n            nextWeek: 'dddd [át] LT',\n            lastDay: '[Ý~ést~érdá~ý át] LT',\n            lastWeek: '[L~ást] dddd [át] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'í~ñ %s',\n            past: '%s á~gó',\n            s: 'á ~féw ~sécó~ñds',\n            ss: '%d s~écóñ~ds',\n            m: 'á ~míñ~úté',\n            mm: '%d m~íñú~tés',\n            h: 'á~ñ hó~úr',\n            hh: '%d h~óúrs',\n            d: 'á ~dáý',\n            dd: '%d d~áýs',\n            M: 'á ~móñ~th',\n            MM: '%d m~óñt~hs',\n            y: 'á ~ýéár',\n            yy: '%d ý~éárs',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    ~~((number % 100) / 10) === 1\n                        ? 'th'\n                        : b === 1\n                        ? 'st'\n                        : b === 2\n                        ? 'nd'\n                        : b === 3\n                        ? 'rd'\n                        : 'th';\n            return number + output;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return xPseudo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Yoruba Nigeria [yo]\n//! author : Atolagbe Abisoye : https://github.com/andela-batolagbe\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var yo = moment.defineLocale('yo', {\n        months: 'Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀'.split(\n            '_'\n        ),\n        monthsShort: 'Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀'.split('_'),\n        weekdays: 'Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta'.split('_'),\n        weekdaysShort: 'Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá'.split('_'),\n        weekdaysMin: 'Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb'.split('_'),\n        longDateFormat: {\n            LT: 'h:mm A',\n            LTS: 'h:mm:ss A',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY h:mm A',\n            LLLL: 'dddd, D MMMM YYYY h:mm A',\n        },\n        calendar: {\n            sameDay: '[Ònì ni] LT',\n            nextDay: '[Ọ̀la ni] LT',\n            nextWeek: \"dddd [Ọsẹ̀ tón'bọ] [ni] LT\",\n            lastDay: '[Àna ni] LT',\n            lastWeek: 'dddd [Ọsẹ̀ tólọ́] [ni] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'ní %s',\n            past: '%s kọjá',\n            s: 'ìsẹjú aayá die',\n            ss: 'aayá %d',\n            m: 'ìsẹjú kan',\n            mm: 'ìsẹjú %d',\n            h: 'wákati kan',\n            hh: 'wákati %d',\n            d: 'ọjọ́ kan',\n            dd: 'ọjọ́ %d',\n            M: 'osù kan',\n            MM: 'osù %d',\n            y: 'ọdún kan',\n            yy: 'ọdún %d',\n        },\n        dayOfMonthOrdinalParse: /ọjọ́\\s\\d{1,2}/,\n        ordinal: 'ọjọ́ %d',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return yo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (China) [zh-cn]\n//! author : suupic : https://github.com/suupic\n//! author : Zeno Zeng : https://github.com/zenozeng\n//! author : uu109 : https://github.com/uu109\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var zhCn = moment.defineLocale('zh-cn', {\n        months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n            '_'\n        ),\n        monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n            '_'\n        ),\n        weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n        weekdaysShort: '周日_周一_周二_周三_周四_周五_周六'.split('_'),\n        weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'YYYY/MM/DD',\n            LL: 'YYYY年M月D日',\n            LLL: 'YYYY年M月D日Ah点mm分',\n            LLLL: 'YYYY年M月D日ddddAh点mm分',\n            l: 'YYYY/M/D',\n            ll: 'YYYY年M月D日',\n            lll: 'YYYY年M月D日 HH:mm',\n            llll: 'YYYY年M月D日dddd HH:mm',\n        },\n        meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n                return hour;\n            } else if (meridiem === '下午' || meridiem === '晚上') {\n                return hour + 12;\n            } else {\n                // '中午'\n                return hour >= 11 ? hour : hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            var hm = hour * 100 + minute;\n            if (hm < 600) {\n                return '凌晨';\n            } else if (hm < 900) {\n                return '早上';\n            } else if (hm < 1130) {\n                return '上午';\n            } else if (hm < 1230) {\n                return '中午';\n            } else if (hm < 1800) {\n                return '下午';\n            } else {\n                return '晚上';\n            }\n        },\n        calendar: {\n            sameDay: '[今天]LT',\n            nextDay: '[明天]LT',\n            nextWeek: function (now) {\n                if (now.week() !== this.week()) {\n                    return '[下]dddLT';\n                } else {\n                    return '[本]dddLT';\n                }\n            },\n            lastDay: '[昨天]LT',\n            lastWeek: function (now) {\n                if (this.week() !== now.week()) {\n                    return '[上]dddLT';\n                } else {\n                    return '[本]dddLT';\n                }\n            },\n            sameElse: 'L',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(日|月|周)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'd':\n                case 'D':\n                case 'DDD':\n                    return number + '日';\n                case 'M':\n                    return number + '月';\n                case 'w':\n                case 'W':\n                    return number + '周';\n                default:\n                    return number;\n            }\n        },\n        relativeTime: {\n            future: '%s后',\n            past: '%s前',\n            s: '几秒',\n            ss: '%d 秒',\n            m: '1 分钟',\n            mm: '%d 分钟',\n            h: '1 小时',\n            hh: '%d 小时',\n            d: '1 天',\n            dd: '%d 天',\n            w: '1 周',\n            ww: '%d 周',\n            M: '1 个月',\n            MM: '%d 个月',\n            y: '1 年',\n            yy: '%d 年',\n        },\n        week: {\n            // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return zhCn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (Hong Kong) [zh-hk]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n//! author : Konstantin : https://github.com/skfd\n//! author : Anthony : https://github.com/anthonylau\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var zhHk = moment.defineLocale('zh-hk', {\n        months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n            '_'\n        ),\n        monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n            '_'\n        ),\n        weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n        weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n        weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'YYYY/MM/DD',\n            LL: 'YYYY年M月D日',\n            LLL: 'YYYY年M月D日 HH:mm',\n            LLLL: 'YYYY年M月D日dddd HH:mm',\n            l: 'YYYY/M/D',\n            ll: 'YYYY年M月D日',\n            lll: 'YYYY年M月D日 HH:mm',\n            llll: 'YYYY年M月D日dddd HH:mm',\n        },\n        meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n                return hour;\n            } else if (meridiem === '中午') {\n                return hour >= 11 ? hour : hour + 12;\n            } else if (meridiem === '下午' || meridiem === '晚上') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            var hm = hour * 100 + minute;\n            if (hm < 600) {\n                return '凌晨';\n            } else if (hm < 900) {\n                return '早上';\n            } else if (hm < 1200) {\n                return '上午';\n            } else if (hm === 1200) {\n                return '中午';\n            } else if (hm < 1800) {\n                return '下午';\n            } else {\n                return '晚上';\n            }\n        },\n        calendar: {\n            sameDay: '[今天]LT',\n            nextDay: '[明天]LT',\n            nextWeek: '[下]ddddLT',\n            lastDay: '[昨天]LT',\n            lastWeek: '[上]ddddLT',\n            sameElse: 'L',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'd':\n                case 'D':\n                case 'DDD':\n                    return number + '日';\n                case 'M':\n                    return number + '月';\n                case 'w':\n                case 'W':\n                    return number + '週';\n                default:\n                    return number;\n            }\n        },\n        relativeTime: {\n            future: '%s後',\n            past: '%s前',\n            s: '幾秒',\n            ss: '%d 秒',\n            m: '1 分鐘',\n            mm: '%d 分鐘',\n            h: '1 小時',\n            hh: '%d 小時',\n            d: '1 天',\n            dd: '%d 天',\n            M: '1 個月',\n            MM: '%d 個月',\n            y: '1 年',\n            yy: '%d 年',\n        },\n    });\n\n    return zhHk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (Macau) [zh-mo]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n//! author : Tan Yuanhong : https://github.com/le0tan\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var zhMo = moment.defineLocale('zh-mo', {\n        months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n            '_'\n        ),\n        monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n            '_'\n        ),\n        weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n        weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n        weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'YYYY年M月D日',\n            LLL: 'YYYY年M月D日 HH:mm',\n            LLLL: 'YYYY年M月D日dddd HH:mm',\n            l: 'D/M/YYYY',\n            ll: 'YYYY年M月D日',\n            lll: 'YYYY年M月D日 HH:mm',\n            llll: 'YYYY年M月D日dddd HH:mm',\n        },\n        meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n                return hour;\n            } else if (meridiem === '中午') {\n                return hour >= 11 ? hour : hour + 12;\n            } else if (meridiem === '下午' || meridiem === '晚上') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            var hm = hour * 100 + minute;\n            if (hm < 600) {\n                return '凌晨';\n            } else if (hm < 900) {\n                return '早上';\n            } else if (hm < 1130) {\n                return '上午';\n            } else if (hm < 1230) {\n                return '中午';\n            } else if (hm < 1800) {\n                return '下午';\n            } else {\n                return '晚上';\n            }\n        },\n        calendar: {\n            sameDay: '[今天] LT',\n            nextDay: '[明天] LT',\n            nextWeek: '[下]dddd LT',\n            lastDay: '[昨天] LT',\n            lastWeek: '[上]dddd LT',\n            sameElse: 'L',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'd':\n                case 'D':\n                case 'DDD':\n                    return number + '日';\n                case 'M':\n                    return number + '月';\n                case 'w':\n                case 'W':\n                    return number + '週';\n                default:\n                    return number;\n            }\n        },\n        relativeTime: {\n            future: '%s內',\n            past: '%s前',\n            s: '幾秒',\n            ss: '%d 秒',\n            m: '1 分鐘',\n            mm: '%d 分鐘',\n            h: '1 小時',\n            hh: '%d 小時',\n            d: '1 天',\n            dd: '%d 天',\n            M: '1 個月',\n            MM: '%d 個月',\n            y: '1 年',\n            yy: '%d 年',\n        },\n    });\n\n    return zhMo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (Taiwan) [zh-tw]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var zhTw = moment.defineLocale('zh-tw', {\n        months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n            '_'\n        ),\n        monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n            '_'\n        ),\n        weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n        weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n        weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'YYYY/MM/DD',\n            LL: 'YYYY年M月D日',\n            LLL: 'YYYY年M月D日 HH:mm',\n            LLLL: 'YYYY年M月D日dddd HH:mm',\n            l: 'YYYY/M/D',\n            ll: 'YYYY年M月D日',\n            lll: 'YYYY年M月D日 HH:mm',\n            llll: 'YYYY年M月D日dddd HH:mm',\n        },\n        meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n                return hour;\n            } else if (meridiem === '中午') {\n                return hour >= 11 ? hour : hour + 12;\n            } else if (meridiem === '下午' || meridiem === '晚上') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            var hm = hour * 100 + minute;\n            if (hm < 600) {\n                return '凌晨';\n            } else if (hm < 900) {\n                return '早上';\n            } else if (hm < 1130) {\n                return '上午';\n            } else if (hm < 1230) {\n                return '中午';\n            } else if (hm < 1800) {\n                return '下午';\n            } else {\n                return '晚上';\n            }\n        },\n        calendar: {\n            sameDay: '[今天] LT',\n            nextDay: '[明天] LT',\n            nextWeek: '[下]dddd LT',\n            lastDay: '[昨天] LT',\n            lastWeek: '[上]dddd LT',\n            sameElse: 'L',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'd':\n                case 'D':\n                case 'DDD':\n                    return number + '日';\n                case 'M':\n                    return number + '月';\n                case 'w':\n                case 'W':\n                    return number + '週';\n                default:\n                    return number;\n            }\n        },\n        relativeTime: {\n            future: '%s後',\n            past: '%s前',\n            s: '幾秒',\n            ss: '%d 秒',\n            m: '1 分鐘',\n            mm: '%d 分鐘',\n            h: '1 小時',\n            hh: '%d 小時',\n            d: '1 天',\n            dd: '%d 天',\n            M: '1 個月',\n            MM: '%d 個月',\n            y: '1 年',\n            yy: '%d 年',\n        },\n    });\n\n    return zhTw;\n\n})));\n","//! moment.js\n//! version : 2.29.1\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\n\n;(function (global, factory) {\n    typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n    typeof define === 'function' && define.amd ? define(factory) :\n    global.moment = factory()\n}(this, (function () { 'use strict';\n\n    var hookCallback;\n\n    function hooks() {\n        return hookCallback.apply(null, arguments);\n    }\n\n    // This is done to register the method called with moment()\n    // without creating circular dependencies.\n    function setHookCallback(callback) {\n        hookCallback = callback;\n    }\n\n    function isArray(input) {\n        return (\n            input instanceof Array ||\n            Object.prototype.toString.call(input) === '[object Array]'\n        );\n    }\n\n    function isObject(input) {\n        // IE8 will treat undefined and null as object if it wasn't for\n        // input != null\n        return (\n            input != null &&\n            Object.prototype.toString.call(input) === '[object Object]'\n        );\n    }\n\n    function hasOwnProp(a, b) {\n        return Object.prototype.hasOwnProperty.call(a, b);\n    }\n\n    function isObjectEmpty(obj) {\n        if (Object.getOwnPropertyNames) {\n            return Object.getOwnPropertyNames(obj).length === 0;\n        } else {\n            var k;\n            for (k in obj) {\n                if (hasOwnProp(obj, k)) {\n                    return false;\n                }\n            }\n            return true;\n        }\n    }\n\n    function isUndefined(input) {\n        return input === void 0;\n    }\n\n    function isNumber(input) {\n        return (\n            typeof input === 'number' ||\n            Object.prototype.toString.call(input) === '[object Number]'\n        );\n    }\n\n    function isDate(input) {\n        return (\n            input instanceof Date ||\n            Object.prototype.toString.call(input) === '[object Date]'\n        );\n    }\n\n    function map(arr, fn) {\n        var res = [],\n            i;\n        for (i = 0; i < arr.length; ++i) {\n            res.push(fn(arr[i], i));\n        }\n        return res;\n    }\n\n    function extend(a, b) {\n        for (var i in b) {\n            if (hasOwnProp(b, i)) {\n                a[i] = b[i];\n            }\n        }\n\n        if (hasOwnProp(b, 'toString')) {\n            a.toString = b.toString;\n        }\n\n        if (hasOwnProp(b, 'valueOf')) {\n            a.valueOf = b.valueOf;\n        }\n\n        return a;\n    }\n\n    function createUTC(input, format, locale, strict) {\n        return createLocalOrUTC(input, format, locale, strict, true).utc();\n    }\n\n    function defaultParsingFlags() {\n        // We need to deep clone this object.\n        return {\n            empty: false,\n            unusedTokens: [],\n            unusedInput: [],\n            overflow: -2,\n            charsLeftOver: 0,\n            nullInput: false,\n            invalidEra: null,\n            invalidMonth: null,\n            invalidFormat: false,\n            userInvalidated: false,\n            iso: false,\n            parsedDateParts: [],\n            era: null,\n            meridiem: null,\n            rfc2822: false,\n            weekdayMismatch: false,\n        };\n    }\n\n    function getParsingFlags(m) {\n        if (m._pf == null) {\n            m._pf = defaultParsingFlags();\n        }\n        return m._pf;\n    }\n\n    var some;\n    if (Array.prototype.some) {\n        some = Array.prototype.some;\n    } else {\n        some = function (fun) {\n            var t = Object(this),\n                len = t.length >>> 0,\n                i;\n\n            for (i = 0; i < len; i++) {\n                if (i in t && fun.call(this, t[i], i, t)) {\n                    return true;\n                }\n            }\n\n            return false;\n        };\n    }\n\n    function isValid(m) {\n        if (m._isValid == null) {\n            var flags = getParsingFlags(m),\n                parsedParts = some.call(flags.parsedDateParts, function (i) {\n                    return i != null;\n                }),\n                isNowValid =\n                    !isNaN(m._d.getTime()) &&\n                    flags.overflow < 0 &&\n                    !flags.empty &&\n                    !flags.invalidEra &&\n                    !flags.invalidMonth &&\n                    !flags.invalidWeekday &&\n                    !flags.weekdayMismatch &&\n                    !flags.nullInput &&\n                    !flags.invalidFormat &&\n                    !flags.userInvalidated &&\n                    (!flags.meridiem || (flags.meridiem && parsedParts));\n\n            if (m._strict) {\n                isNowValid =\n                    isNowValid &&\n                    flags.charsLeftOver === 0 &&\n                    flags.unusedTokens.length === 0 &&\n                    flags.bigHour === undefined;\n            }\n\n            if (Object.isFrozen == null || !Object.isFrozen(m)) {\n                m._isValid = isNowValid;\n            } else {\n                return isNowValid;\n            }\n        }\n        return m._isValid;\n    }\n\n    function createInvalid(flags) {\n        var m = createUTC(NaN);\n        if (flags != null) {\n            extend(getParsingFlags(m), flags);\n        } else {\n            getParsingFlags(m).userInvalidated = true;\n        }\n\n        return m;\n    }\n\n    // Plugins that add properties should also add the key here (null value),\n    // so we can properly clone ourselves.\n    var momentProperties = (hooks.momentProperties = []),\n        updateInProgress = false;\n\n    function copyConfig(to, from) {\n        var i, prop, val;\n\n        if (!isUndefined(from._isAMomentObject)) {\n            to._isAMomentObject = from._isAMomentObject;\n        }\n        if (!isUndefined(from._i)) {\n            to._i = from._i;\n        }\n        if (!isUndefined(from._f)) {\n            to._f = from._f;\n        }\n        if (!isUndefined(from._l)) {\n            to._l = from._l;\n        }\n        if (!isUndefined(from._strict)) {\n            to._strict = from._strict;\n        }\n        if (!isUndefined(from._tzm)) {\n            to._tzm = from._tzm;\n        }\n        if (!isUndefined(from._isUTC)) {\n            to._isUTC = from._isUTC;\n        }\n        if (!isUndefined(from._offset)) {\n            to._offset = from._offset;\n        }\n        if (!isUndefined(from._pf)) {\n            to._pf = getParsingFlags(from);\n        }\n        if (!isUndefined(from._locale)) {\n            to._locale = from._locale;\n        }\n\n        if (momentProperties.length > 0) {\n            for (i = 0; i < momentProperties.length; i++) {\n                prop = momentProperties[i];\n                val = from[prop];\n                if (!isUndefined(val)) {\n                    to[prop] = val;\n                }\n            }\n        }\n\n        return to;\n    }\n\n    // Moment prototype object\n    function Moment(config) {\n        copyConfig(this, config);\n        this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n        if (!this.isValid()) {\n            this._d = new Date(NaN);\n        }\n        // Prevent infinite loop in case updateOffset creates new moment\n        // objects.\n        if (updateInProgress === false) {\n            updateInProgress = true;\n            hooks.updateOffset(this);\n            updateInProgress = false;\n        }\n    }\n\n    function isMoment(obj) {\n        return (\n            obj instanceof Moment || (obj != null && obj._isAMomentObject != null)\n        );\n    }\n\n    function warn(msg) {\n        if (\n            hooks.suppressDeprecationWarnings === false &&\n            typeof console !== 'undefined' &&\n            console.warn\n        ) {\n            console.warn('Deprecation warning: ' + msg);\n        }\n    }\n\n    function deprecate(msg, fn) {\n        var firstTime = true;\n\n        return extend(function () {\n            if (hooks.deprecationHandler != null) {\n                hooks.deprecationHandler(null, msg);\n            }\n            if (firstTime) {\n                var args = [],\n                    arg,\n                    i,\n                    key;\n                for (i = 0; i < arguments.length; i++) {\n                    arg = '';\n                    if (typeof arguments[i] === 'object') {\n                        arg += '\\n[' + i + '] ';\n                        for (key in arguments[0]) {\n                            if (hasOwnProp(arguments[0], key)) {\n                                arg += key + ': ' + arguments[0][key] + ', ';\n                            }\n                        }\n                        arg = arg.slice(0, -2); // Remove trailing comma and space\n                    } else {\n                        arg = arguments[i];\n                    }\n                    args.push(arg);\n                }\n                warn(\n                    msg +\n                        '\\nArguments: ' +\n                        Array.prototype.slice.call(args).join('') +\n                        '\\n' +\n                        new Error().stack\n                );\n                firstTime = false;\n            }\n            return fn.apply(this, arguments);\n        }, fn);\n    }\n\n    var deprecations = {};\n\n    function deprecateSimple(name, msg) {\n        if (hooks.deprecationHandler != null) {\n            hooks.deprecationHandler(name, msg);\n        }\n        if (!deprecations[name]) {\n            warn(msg);\n            deprecations[name] = true;\n        }\n    }\n\n    hooks.suppressDeprecationWarnings = false;\n    hooks.deprecationHandler = null;\n\n    function isFunction(input) {\n        return (\n            (typeof Function !== 'undefined' && input instanceof Function) ||\n            Object.prototype.toString.call(input) === '[object Function]'\n        );\n    }\n\n    function set(config) {\n        var prop, i;\n        for (i in config) {\n            if (hasOwnProp(config, i)) {\n                prop = config[i];\n                if (isFunction(prop)) {\n                    this[i] = prop;\n                } else {\n                    this['_' + i] = prop;\n                }\n            }\n        }\n        this._config = config;\n        // Lenient ordinal parsing accepts just a number in addition to\n        // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n        // TODO: Remove \"ordinalParse\" fallback in next major release.\n        this._dayOfMonthOrdinalParseLenient = new RegExp(\n            (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n                '|' +\n                /\\d{1,2}/.source\n        );\n    }\n\n    function mergeConfigs(parentConfig, childConfig) {\n        var res = extend({}, parentConfig),\n            prop;\n        for (prop in childConfig) {\n            if (hasOwnProp(childConfig, prop)) {\n                if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n                    res[prop] = {};\n                    extend(res[prop], parentConfig[prop]);\n                    extend(res[prop], childConfig[prop]);\n                } else if (childConfig[prop] != null) {\n                    res[prop] = childConfig[prop];\n                } else {\n                    delete res[prop];\n                }\n            }\n        }\n        for (prop in parentConfig) {\n            if (\n                hasOwnProp(parentConfig, prop) &&\n                !hasOwnProp(childConfig, prop) &&\n                isObject(parentConfig[prop])\n            ) {\n                // make sure changes to properties don't modify parent config\n                res[prop] = extend({}, res[prop]);\n            }\n        }\n        return res;\n    }\n\n    function Locale(config) {\n        if (config != null) {\n            this.set(config);\n        }\n    }\n\n    var keys;\n\n    if (Object.keys) {\n        keys = Object.keys;\n    } else {\n        keys = function (obj) {\n            var i,\n                res = [];\n            for (i in obj) {\n                if (hasOwnProp(obj, i)) {\n                    res.push(i);\n                }\n            }\n            return res;\n        };\n    }\n\n    var defaultCalendar = {\n        sameDay: '[Today at] LT',\n        nextDay: '[Tomorrow at] LT',\n        nextWeek: 'dddd [at] LT',\n        lastDay: '[Yesterday at] LT',\n        lastWeek: '[Last] dddd [at] LT',\n        sameElse: 'L',\n    };\n\n    function calendar(key, mom, now) {\n        var output = this._calendar[key] || this._calendar['sameElse'];\n        return isFunction(output) ? output.call(mom, now) : output;\n    }\n\n    function zeroFill(number, targetLength, forceSign) {\n        var absNumber = '' + Math.abs(number),\n            zerosToFill = targetLength - absNumber.length,\n            sign = number >= 0;\n        return (\n            (sign ? (forceSign ? '+' : '') : '-') +\n            Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +\n            absNumber\n        );\n    }\n\n    var formattingTokens = /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,\n        localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,\n        formatFunctions = {},\n        formatTokenFunctions = {};\n\n    // token:    'M'\n    // padded:   ['MM', 2]\n    // ordinal:  'Mo'\n    // callback: function () { this.month() + 1 }\n    function addFormatToken(token, padded, ordinal, callback) {\n        var func = callback;\n        if (typeof callback === 'string') {\n            func = function () {\n                return this[callback]();\n            };\n        }\n        if (token) {\n            formatTokenFunctions[token] = func;\n        }\n        if (padded) {\n            formatTokenFunctions[padded[0]] = function () {\n                return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n            };\n        }\n        if (ordinal) {\n            formatTokenFunctions[ordinal] = function () {\n                return this.localeData().ordinal(\n                    func.apply(this, arguments),\n                    token\n                );\n            };\n        }\n    }\n\n    function removeFormattingTokens(input) {\n        if (input.match(/\\[[\\s\\S]/)) {\n            return input.replace(/^\\[|\\]$/g, '');\n        }\n        return input.replace(/\\\\/g, '');\n    }\n\n    function makeFormatFunction(format) {\n        var array = format.match(formattingTokens),\n            i,\n            length;\n\n        for (i = 0, length = array.length; i < length; i++) {\n            if (formatTokenFunctions[array[i]]) {\n                array[i] = formatTokenFunctions[array[i]];\n            } else {\n                array[i] = removeFormattingTokens(array[i]);\n            }\n        }\n\n        return function (mom) {\n            var output = '',\n                i;\n            for (i = 0; i < length; i++) {\n                output += isFunction(array[i])\n                    ? array[i].call(mom, format)\n                    : array[i];\n            }\n            return output;\n        };\n    }\n\n    // format date using native date object\n    function formatMoment(m, format) {\n        if (!m.isValid()) {\n            return m.localeData().invalidDate();\n        }\n\n        format = expandFormat(format, m.localeData());\n        formatFunctions[format] =\n            formatFunctions[format] || makeFormatFunction(format);\n\n        return formatFunctions[format](m);\n    }\n\n    function expandFormat(format, locale) {\n        var i = 5;\n\n        function replaceLongDateFormatTokens(input) {\n            return locale.longDateFormat(input) || input;\n        }\n\n        localFormattingTokens.lastIndex = 0;\n        while (i >= 0 && localFormattingTokens.test(format)) {\n            format = format.replace(\n                localFormattingTokens,\n                replaceLongDateFormatTokens\n            );\n            localFormattingTokens.lastIndex = 0;\n            i -= 1;\n        }\n\n        return format;\n    }\n\n    var defaultLongDateFormat = {\n        LTS: 'h:mm:ss A',\n        LT: 'h:mm A',\n        L: 'MM/DD/YYYY',\n        LL: 'MMMM D, YYYY',\n        LLL: 'MMMM D, YYYY h:mm A',\n        LLLL: 'dddd, MMMM D, YYYY h:mm A',\n    };\n\n    function longDateFormat(key) {\n        var format = this._longDateFormat[key],\n            formatUpper = this._longDateFormat[key.toUpperCase()];\n\n        if (format || !formatUpper) {\n            return format;\n        }\n\n        this._longDateFormat[key] = formatUpper\n            .match(formattingTokens)\n            .map(function (tok) {\n                if (\n                    tok === 'MMMM' ||\n                    tok === 'MM' ||\n                    tok === 'DD' ||\n                    tok === 'dddd'\n                ) {\n                    return tok.slice(1);\n                }\n                return tok;\n            })\n            .join('');\n\n        return this._longDateFormat[key];\n    }\n\n    var defaultInvalidDate = 'Invalid date';\n\n    function invalidDate() {\n        return this._invalidDate;\n    }\n\n    var defaultOrdinal = '%d',\n        defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n    function ordinal(number) {\n        return this._ordinal.replace('%d', number);\n    }\n\n    var defaultRelativeTime = {\n        future: 'in %s',\n        past: '%s ago',\n        s: 'a few seconds',\n        ss: '%d seconds',\n        m: 'a minute',\n        mm: '%d minutes',\n        h: 'an hour',\n        hh: '%d hours',\n        d: 'a day',\n        dd: '%d days',\n        w: 'a week',\n        ww: '%d weeks',\n        M: 'a month',\n        MM: '%d months',\n        y: 'a year',\n        yy: '%d years',\n    };\n\n    function relativeTime(number, withoutSuffix, string, isFuture) {\n        var output = this._relativeTime[string];\n        return isFunction(output)\n            ? output(number, withoutSuffix, string, isFuture)\n            : output.replace(/%d/i, number);\n    }\n\n    function pastFuture(diff, output) {\n        var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n        return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n    }\n\n    var aliases = {};\n\n    function addUnitAlias(unit, shorthand) {\n        var lowerCase = unit.toLowerCase();\n        aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\n    }\n\n    function normalizeUnits(units) {\n        return typeof units === 'string'\n            ? aliases[units] || aliases[units.toLowerCase()]\n            : undefined;\n    }\n\n    function normalizeObjectUnits(inputObject) {\n        var normalizedInput = {},\n            normalizedProp,\n            prop;\n\n        for (prop in inputObject) {\n            if (hasOwnProp(inputObject, prop)) {\n                normalizedProp = normalizeUnits(prop);\n                if (normalizedProp) {\n                    normalizedInput[normalizedProp] = inputObject[prop];\n                }\n            }\n        }\n\n        return normalizedInput;\n    }\n\n    var priorities = {};\n\n    function addUnitPriority(unit, priority) {\n        priorities[unit] = priority;\n    }\n\n    function getPrioritizedUnits(unitsObj) {\n        var units = [],\n            u;\n        for (u in unitsObj) {\n            if (hasOwnProp(unitsObj, u)) {\n                units.push({ unit: u, priority: priorities[u] });\n            }\n        }\n        units.sort(function (a, b) {\n            return a.priority - b.priority;\n        });\n        return units;\n    }\n\n    function isLeapYear(year) {\n        return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n    }\n\n    function absFloor(number) {\n        if (number < 0) {\n            // -0 -> 0\n            return Math.ceil(number) || 0;\n        } else {\n            return Math.floor(number);\n        }\n    }\n\n    function toInt(argumentForCoercion) {\n        var coercedNumber = +argumentForCoercion,\n            value = 0;\n\n        if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n            value = absFloor(coercedNumber);\n        }\n\n        return value;\n    }\n\n    function makeGetSet(unit, keepTime) {\n        return function (value) {\n            if (value != null) {\n                set$1(this, unit, value);\n                hooks.updateOffset(this, keepTime);\n                return this;\n            } else {\n                return get(this, unit);\n            }\n        };\n    }\n\n    function get(mom, unit) {\n        return mom.isValid()\n            ? mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]()\n            : NaN;\n    }\n\n    function set$1(mom, unit, value) {\n        if (mom.isValid() && !isNaN(value)) {\n            if (\n                unit === 'FullYear' &&\n                isLeapYear(mom.year()) &&\n                mom.month() === 1 &&\n                mom.date() === 29\n            ) {\n                value = toInt(value);\n                mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](\n                    value,\n                    mom.month(),\n                    daysInMonth(value, mom.month())\n                );\n            } else {\n                mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n            }\n        }\n    }\n\n    // MOMENTS\n\n    function stringGet(units) {\n        units = normalizeUnits(units);\n        if (isFunction(this[units])) {\n            return this[units]();\n        }\n        return this;\n    }\n\n    function stringSet(units, value) {\n        if (typeof units === 'object') {\n            units = normalizeObjectUnits(units);\n            var prioritized = getPrioritizedUnits(units),\n                i;\n            for (i = 0; i < prioritized.length; i++) {\n                this[prioritized[i].unit](units[prioritized[i].unit]);\n            }\n        } else {\n            units = normalizeUnits(units);\n            if (isFunction(this[units])) {\n                return this[units](value);\n            }\n        }\n        return this;\n    }\n\n    var match1 = /\\d/, //       0 - 9\n        match2 = /\\d\\d/, //      00 - 99\n        match3 = /\\d{3}/, //     000 - 999\n        match4 = /\\d{4}/, //    0000 - 9999\n        match6 = /[+-]?\\d{6}/, // -999999 - 999999\n        match1to2 = /\\d\\d?/, //       0 - 99\n        match3to4 = /\\d\\d\\d\\d?/, //     999 - 9999\n        match5to6 = /\\d\\d\\d\\d\\d\\d?/, //   99999 - 999999\n        match1to3 = /\\d{1,3}/, //       0 - 999\n        match1to4 = /\\d{1,4}/, //       0 - 9999\n        match1to6 = /[+-]?\\d{1,6}/, // -999999 - 999999\n        matchUnsigned = /\\d+/, //       0 - inf\n        matchSigned = /[+-]?\\d+/, //    -inf - inf\n        matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi, // +00:00 -00:00 +0000 -0000 or Z\n        matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n        matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/, // 123456789 123456789.123\n        // any word (or two) characters or numbers including two/three word month in arabic.\n        // includes scottish gaelic two word and hyphenated months\n        matchWord = /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i,\n        regexes;\n\n    regexes = {};\n\n    function addRegexToken(token, regex, strictRegex) {\n        regexes[token] = isFunction(regex)\n            ? regex\n            : function (isStrict, localeData) {\n                  return isStrict && strictRegex ? strictRegex : regex;\n              };\n    }\n\n    function getParseRegexForToken(token, config) {\n        if (!hasOwnProp(regexes, token)) {\n            return new RegExp(unescapeFormat(token));\n        }\n\n        return regexes[token](config._strict, config._locale);\n    }\n\n    // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n    function unescapeFormat(s) {\n        return regexEscape(\n            s\n                .replace('\\\\', '')\n                .replace(/\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g, function (\n                    matched,\n                    p1,\n                    p2,\n                    p3,\n                    p4\n                ) {\n                    return p1 || p2 || p3 || p4;\n                })\n        );\n    }\n\n    function regexEscape(s) {\n        return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n    }\n\n    var tokens = {};\n\n    function addParseToken(token, callback) {\n        var i,\n            func = callback;\n        if (typeof token === 'string') {\n            token = [token];\n        }\n        if (isNumber(callback)) {\n            func = function (input, array) {\n                array[callback] = toInt(input);\n            };\n        }\n        for (i = 0; i < token.length; i++) {\n            tokens[token[i]] = func;\n        }\n    }\n\n    function addWeekParseToken(token, callback) {\n        addParseToken(token, function (input, array, config, token) {\n            config._w = config._w || {};\n            callback(input, config._w, config, token);\n        });\n    }\n\n    function addTimeToArrayFromToken(token, input, config) {\n        if (input != null && hasOwnProp(tokens, token)) {\n            tokens[token](input, config._a, config, token);\n        }\n    }\n\n    var YEAR = 0,\n        MONTH = 1,\n        DATE = 2,\n        HOUR = 3,\n        MINUTE = 4,\n        SECOND = 5,\n        MILLISECOND = 6,\n        WEEK = 7,\n        WEEKDAY = 8;\n\n    function mod(n, x) {\n        return ((n % x) + x) % x;\n    }\n\n    var indexOf;\n\n    if (Array.prototype.indexOf) {\n        indexOf = Array.prototype.indexOf;\n    } else {\n        indexOf = function (o) {\n            // I know\n            var i;\n            for (i = 0; i < this.length; ++i) {\n                if (this[i] === o) {\n                    return i;\n                }\n            }\n            return -1;\n        };\n    }\n\n    function daysInMonth(year, month) {\n        if (isNaN(year) || isNaN(month)) {\n            return NaN;\n        }\n        var modMonth = mod(month, 12);\n        year += (month - modMonth) / 12;\n        return modMonth === 1\n            ? isLeapYear(year)\n                ? 29\n                : 28\n            : 31 - ((modMonth % 7) % 2);\n    }\n\n    // FORMATTING\n\n    addFormatToken('M', ['MM', 2], 'Mo', function () {\n        return this.month() + 1;\n    });\n\n    addFormatToken('MMM', 0, 0, function (format) {\n        return this.localeData().monthsShort(this, format);\n    });\n\n    addFormatToken('MMMM', 0, 0, function (format) {\n        return this.localeData().months(this, format);\n    });\n\n    // ALIASES\n\n    addUnitAlias('month', 'M');\n\n    // PRIORITY\n\n    addUnitPriority('month', 8);\n\n    // PARSING\n\n    addRegexToken('M', match1to2);\n    addRegexToken('MM', match1to2, match2);\n    addRegexToken('MMM', function (isStrict, locale) {\n        return locale.monthsShortRegex(isStrict);\n    });\n    addRegexToken('MMMM', function (isStrict, locale) {\n        return locale.monthsRegex(isStrict);\n    });\n\n    addParseToken(['M', 'MM'], function (input, array) {\n        array[MONTH] = toInt(input) - 1;\n    });\n\n    addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n        var month = config._locale.monthsParse(input, token, config._strict);\n        // if we didn't find a month name, mark the date as invalid.\n        if (month != null) {\n            array[MONTH] = month;\n        } else {\n            getParsingFlags(config).invalidMonth = input;\n        }\n    });\n\n    // LOCALES\n\n    var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n            '_'\n        ),\n        defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split(\n            '_'\n        ),\n        MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,\n        defaultMonthsShortRegex = matchWord,\n        defaultMonthsRegex = matchWord;\n\n    function localeMonths(m, format) {\n        if (!m) {\n            return isArray(this._months)\n                ? this._months\n                : this._months['standalone'];\n        }\n        return isArray(this._months)\n            ? this._months[m.month()]\n            : this._months[\n                  (this._months.isFormat || MONTHS_IN_FORMAT).test(format)\n                      ? 'format'\n                      : 'standalone'\n              ][m.month()];\n    }\n\n    function localeMonthsShort(m, format) {\n        if (!m) {\n            return isArray(this._monthsShort)\n                ? this._monthsShort\n                : this._monthsShort['standalone'];\n        }\n        return isArray(this._monthsShort)\n            ? this._monthsShort[m.month()]\n            : this._monthsShort[\n                  MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'\n              ][m.month()];\n    }\n\n    function handleStrictParse(monthName, format, strict) {\n        var i,\n            ii,\n            mom,\n            llc = monthName.toLocaleLowerCase();\n        if (!this._monthsParse) {\n            // this is not used\n            this._monthsParse = [];\n            this._longMonthsParse = [];\n            this._shortMonthsParse = [];\n            for (i = 0; i < 12; ++i) {\n                mom = createUTC([2000, i]);\n                this._shortMonthsParse[i] = this.monthsShort(\n                    mom,\n                    ''\n                ).toLocaleLowerCase();\n                this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n            }\n        }\n\n        if (strict) {\n            if (format === 'MMM') {\n                ii = indexOf.call(this._shortMonthsParse, llc);\n                return ii !== -1 ? ii : null;\n            } else {\n                ii = indexOf.call(this._longMonthsParse, llc);\n                return ii !== -1 ? ii : null;\n            }\n        } else {\n            if (format === 'MMM') {\n                ii = indexOf.call(this._shortMonthsParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._longMonthsParse, llc);\n                return ii !== -1 ? ii : null;\n            } else {\n                ii = indexOf.call(this._longMonthsParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._shortMonthsParse, llc);\n                return ii !== -1 ? ii : null;\n            }\n        }\n    }\n\n    function localeMonthsParse(monthName, format, strict) {\n        var i, mom, regex;\n\n        if (this._monthsParseExact) {\n            return handleStrictParse.call(this, monthName, format, strict);\n        }\n\n        if (!this._monthsParse) {\n            this._monthsParse = [];\n            this._longMonthsParse = [];\n            this._shortMonthsParse = [];\n        }\n\n        // TODO: add sorting\n        // Sorting makes sure if one month (or abbr) is a prefix of another\n        // see sorting in computeMonthsParse\n        for (i = 0; i < 12; i++) {\n            // make the regex if we don't have it already\n            mom = createUTC([2000, i]);\n            if (strict && !this._longMonthsParse[i]) {\n                this._longMonthsParse[i] = new RegExp(\n                    '^' + this.months(mom, '').replace('.', '') + '$',\n                    'i'\n                );\n                this._shortMonthsParse[i] = new RegExp(\n                    '^' + this.monthsShort(mom, '').replace('.', '') + '$',\n                    'i'\n                );\n            }\n            if (!strict && !this._monthsParse[i]) {\n                regex =\n                    '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n                this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n            }\n            // test the regex\n            if (\n                strict &&\n                format === 'MMMM' &&\n                this._longMonthsParse[i].test(monthName)\n            ) {\n                return i;\n            } else if (\n                strict &&\n                format === 'MMM' &&\n                this._shortMonthsParse[i].test(monthName)\n            ) {\n                return i;\n            } else if (!strict && this._monthsParse[i].test(monthName)) {\n                return i;\n            }\n        }\n    }\n\n    // MOMENTS\n\n    function setMonth(mom, value) {\n        var dayOfMonth;\n\n        if (!mom.isValid()) {\n            // No op\n            return mom;\n        }\n\n        if (typeof value === 'string') {\n            if (/^\\d+$/.test(value)) {\n                value = toInt(value);\n            } else {\n                value = mom.localeData().monthsParse(value);\n                // TODO: Another silent failure?\n                if (!isNumber(value)) {\n                    return mom;\n                }\n            }\n        }\n\n        dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n        mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\n        return mom;\n    }\n\n    function getSetMonth(value) {\n        if (value != null) {\n            setMonth(this, value);\n            hooks.updateOffset(this, true);\n            return this;\n        } else {\n            return get(this, 'Month');\n        }\n    }\n\n    function getDaysInMonth() {\n        return daysInMonth(this.year(), this.month());\n    }\n\n    function monthsShortRegex(isStrict) {\n        if (this._monthsParseExact) {\n            if (!hasOwnProp(this, '_monthsRegex')) {\n                computeMonthsParse.call(this);\n            }\n            if (isStrict) {\n                return this._monthsShortStrictRegex;\n            } else {\n                return this._monthsShortRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_monthsShortRegex')) {\n                this._monthsShortRegex = defaultMonthsShortRegex;\n            }\n            return this._monthsShortStrictRegex && isStrict\n                ? this._monthsShortStrictRegex\n                : this._monthsShortRegex;\n        }\n    }\n\n    function monthsRegex(isStrict) {\n        if (this._monthsParseExact) {\n            if (!hasOwnProp(this, '_monthsRegex')) {\n                computeMonthsParse.call(this);\n            }\n            if (isStrict) {\n                return this._monthsStrictRegex;\n            } else {\n                return this._monthsRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_monthsRegex')) {\n                this._monthsRegex = defaultMonthsRegex;\n            }\n            return this._monthsStrictRegex && isStrict\n                ? this._monthsStrictRegex\n                : this._monthsRegex;\n        }\n    }\n\n    function computeMonthsParse() {\n        function cmpLenRev(a, b) {\n            return b.length - a.length;\n        }\n\n        var shortPieces = [],\n            longPieces = [],\n            mixedPieces = [],\n            i,\n            mom;\n        for (i = 0; i < 12; i++) {\n            // make the regex if we don't have it already\n            mom = createUTC([2000, i]);\n            shortPieces.push(this.monthsShort(mom, ''));\n            longPieces.push(this.months(mom, ''));\n            mixedPieces.push(this.months(mom, ''));\n            mixedPieces.push(this.monthsShort(mom, ''));\n        }\n        // Sorting makes sure if one month (or abbr) is a prefix of another it\n        // will match the longer piece.\n        shortPieces.sort(cmpLenRev);\n        longPieces.sort(cmpLenRev);\n        mixedPieces.sort(cmpLenRev);\n        for (i = 0; i < 12; i++) {\n            shortPieces[i] = regexEscape(shortPieces[i]);\n            longPieces[i] = regexEscape(longPieces[i]);\n        }\n        for (i = 0; i < 24; i++) {\n            mixedPieces[i] = regexEscape(mixedPieces[i]);\n        }\n\n        this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n        this._monthsShortRegex = this._monthsRegex;\n        this._monthsStrictRegex = new RegExp(\n            '^(' + longPieces.join('|') + ')',\n            'i'\n        );\n        this._monthsShortStrictRegex = new RegExp(\n            '^(' + shortPieces.join('|') + ')',\n            'i'\n        );\n    }\n\n    // FORMATTING\n\n    addFormatToken('Y', 0, 0, function () {\n        var y = this.year();\n        return y <= 9999 ? zeroFill(y, 4) : '+' + y;\n    });\n\n    addFormatToken(0, ['YY', 2], 0, function () {\n        return this.year() % 100;\n    });\n\n    addFormatToken(0, ['YYYY', 4], 0, 'year');\n    addFormatToken(0, ['YYYYY', 5], 0, 'year');\n    addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n    // ALIASES\n\n    addUnitAlias('year', 'y');\n\n    // PRIORITIES\n\n    addUnitPriority('year', 1);\n\n    // PARSING\n\n    addRegexToken('Y', matchSigned);\n    addRegexToken('YY', match1to2, match2);\n    addRegexToken('YYYY', match1to4, match4);\n    addRegexToken('YYYYY', match1to6, match6);\n    addRegexToken('YYYYYY', match1to6, match6);\n\n    addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n    addParseToken('YYYY', function (input, array) {\n        array[YEAR] =\n            input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n    });\n    addParseToken('YY', function (input, array) {\n        array[YEAR] = hooks.parseTwoDigitYear(input);\n    });\n    addParseToken('Y', function (input, array) {\n        array[YEAR] = parseInt(input, 10);\n    });\n\n    // HELPERS\n\n    function daysInYear(year) {\n        return isLeapYear(year) ? 366 : 365;\n    }\n\n    // HOOKS\n\n    hooks.parseTwoDigitYear = function (input) {\n        return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n    };\n\n    // MOMENTS\n\n    var getSetYear = makeGetSet('FullYear', true);\n\n    function getIsLeapYear() {\n        return isLeapYear(this.year());\n    }\n\n    function createDate(y, m, d, h, M, s, ms) {\n        // can't just apply() to create a date:\n        // https://stackoverflow.com/q/181348\n        var date;\n        // the date constructor remaps years 0-99 to 1900-1999\n        if (y < 100 && y >= 0) {\n            // preserve leap years using a full 400 year cycle, then reset\n            date = new Date(y + 400, m, d, h, M, s, ms);\n            if (isFinite(date.getFullYear())) {\n                date.setFullYear(y);\n            }\n        } else {\n            date = new Date(y, m, d, h, M, s, ms);\n        }\n\n        return date;\n    }\n\n    function createUTCDate(y) {\n        var date, args;\n        // the Date.UTC function remaps years 0-99 to 1900-1999\n        if (y < 100 && y >= 0) {\n            args = Array.prototype.slice.call(arguments);\n            // preserve leap years using a full 400 year cycle, then reset\n            args[0] = y + 400;\n            date = new Date(Date.UTC.apply(null, args));\n            if (isFinite(date.getUTCFullYear())) {\n                date.setUTCFullYear(y);\n            }\n        } else {\n            date = new Date(Date.UTC.apply(null, arguments));\n        }\n\n        return date;\n    }\n\n    // start-of-first-week - start-of-year\n    function firstWeekOffset(year, dow, doy) {\n        var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n            fwd = 7 + dow - doy,\n            // first-week day local weekday -- which local weekday is fwd\n            fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n        return -fwdlw + fwd - 1;\n    }\n\n    // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n    function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n        var localWeekday = (7 + weekday - dow) % 7,\n            weekOffset = firstWeekOffset(year, dow, doy),\n            dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n            resYear,\n            resDayOfYear;\n\n        if (dayOfYear <= 0) {\n            resYear = year - 1;\n            resDayOfYear = daysInYear(resYear) + dayOfYear;\n        } else if (dayOfYear > daysInYear(year)) {\n            resYear = year + 1;\n            resDayOfYear = dayOfYear - daysInYear(year);\n        } else {\n            resYear = year;\n            resDayOfYear = dayOfYear;\n        }\n\n        return {\n            year: resYear,\n            dayOfYear: resDayOfYear,\n        };\n    }\n\n    function weekOfYear(mom, dow, doy) {\n        var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n            week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n            resWeek,\n            resYear;\n\n        if (week < 1) {\n            resYear = mom.year() - 1;\n            resWeek = week + weeksInYear(resYear, dow, doy);\n        } else if (week > weeksInYear(mom.year(), dow, doy)) {\n            resWeek = week - weeksInYear(mom.year(), dow, doy);\n            resYear = mom.year() + 1;\n        } else {\n            resYear = mom.year();\n            resWeek = week;\n        }\n\n        return {\n            week: resWeek,\n            year: resYear,\n        };\n    }\n\n    function weeksInYear(year, dow, doy) {\n        var weekOffset = firstWeekOffset(year, dow, doy),\n            weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n        return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n    }\n\n    // FORMATTING\n\n    addFormatToken('w', ['ww', 2], 'wo', 'week');\n    addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n    // ALIASES\n\n    addUnitAlias('week', 'w');\n    addUnitAlias('isoWeek', 'W');\n\n    // PRIORITIES\n\n    addUnitPriority('week', 5);\n    addUnitPriority('isoWeek', 5);\n\n    // PARSING\n\n    addRegexToken('w', match1to2);\n    addRegexToken('ww', match1to2, match2);\n    addRegexToken('W', match1to2);\n    addRegexToken('WW', match1to2, match2);\n\n    addWeekParseToken(['w', 'ww', 'W', 'WW'], function (\n        input,\n        week,\n        config,\n        token\n    ) {\n        week[token.substr(0, 1)] = toInt(input);\n    });\n\n    // HELPERS\n\n    // LOCALES\n\n    function localeWeek(mom) {\n        return weekOfYear(mom, this._week.dow, this._week.doy).week;\n    }\n\n    var defaultLocaleWeek = {\n        dow: 0, // Sunday is the first day of the week.\n        doy: 6, // The week that contains Jan 6th is the first week of the year.\n    };\n\n    function localeFirstDayOfWeek() {\n        return this._week.dow;\n    }\n\n    function localeFirstDayOfYear() {\n        return this._week.doy;\n    }\n\n    // MOMENTS\n\n    function getSetWeek(input) {\n        var week = this.localeData().week(this);\n        return input == null ? week : this.add((input - week) * 7, 'd');\n    }\n\n    function getSetISOWeek(input) {\n        var week = weekOfYear(this, 1, 4).week;\n        return input == null ? week : this.add((input - week) * 7, 'd');\n    }\n\n    // FORMATTING\n\n    addFormatToken('d', 0, 'do', 'day');\n\n    addFormatToken('dd', 0, 0, function (format) {\n        return this.localeData().weekdaysMin(this, format);\n    });\n\n    addFormatToken('ddd', 0, 0, function (format) {\n        return this.localeData().weekdaysShort(this, format);\n    });\n\n    addFormatToken('dddd', 0, 0, function (format) {\n        return this.localeData().weekdays(this, format);\n    });\n\n    addFormatToken('e', 0, 0, 'weekday');\n    addFormatToken('E', 0, 0, 'isoWeekday');\n\n    // ALIASES\n\n    addUnitAlias('day', 'd');\n    addUnitAlias('weekday', 'e');\n    addUnitAlias('isoWeekday', 'E');\n\n    // PRIORITY\n    addUnitPriority('day', 11);\n    addUnitPriority('weekday', 11);\n    addUnitPriority('isoWeekday', 11);\n\n    // PARSING\n\n    addRegexToken('d', match1to2);\n    addRegexToken('e', match1to2);\n    addRegexToken('E', match1to2);\n    addRegexToken('dd', function (isStrict, locale) {\n        return locale.weekdaysMinRegex(isStrict);\n    });\n    addRegexToken('ddd', function (isStrict, locale) {\n        return locale.weekdaysShortRegex(isStrict);\n    });\n    addRegexToken('dddd', function (isStrict, locale) {\n        return locale.weekdaysRegex(isStrict);\n    });\n\n    addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n        var weekday = config._locale.weekdaysParse(input, token, config._strict);\n        // if we didn't get a weekday name, mark the date as invalid\n        if (weekday != null) {\n            week.d = weekday;\n        } else {\n            getParsingFlags(config).invalidWeekday = input;\n        }\n    });\n\n    addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n        week[token] = toInt(input);\n    });\n\n    // HELPERS\n\n    function parseWeekday(input, locale) {\n        if (typeof input !== 'string') {\n            return input;\n        }\n\n        if (!isNaN(input)) {\n            return parseInt(input, 10);\n        }\n\n        input = locale.weekdaysParse(input);\n        if (typeof input === 'number') {\n            return input;\n        }\n\n        return null;\n    }\n\n    function parseIsoWeekday(input, locale) {\n        if (typeof input === 'string') {\n            return locale.weekdaysParse(input) % 7 || 7;\n        }\n        return isNaN(input) ? null : input;\n    }\n\n    // LOCALES\n    function shiftWeekdays(ws, n) {\n        return ws.slice(n, 7).concat(ws.slice(0, n));\n    }\n\n    var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n            '_'\n        ),\n        defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        defaultWeekdaysRegex = matchWord,\n        defaultWeekdaysShortRegex = matchWord,\n        defaultWeekdaysMinRegex = matchWord;\n\n    function localeWeekdays(m, format) {\n        var weekdays = isArray(this._weekdays)\n            ? this._weekdays\n            : this._weekdays[\n                  m && m !== true && this._weekdays.isFormat.test(format)\n                      ? 'format'\n                      : 'standalone'\n              ];\n        return m === true\n            ? shiftWeekdays(weekdays, this._week.dow)\n            : m\n            ? weekdays[m.day()]\n            : weekdays;\n    }\n\n    function localeWeekdaysShort(m) {\n        return m === true\n            ? shiftWeekdays(this._weekdaysShort, this._week.dow)\n            : m\n            ? this._weekdaysShort[m.day()]\n            : this._weekdaysShort;\n    }\n\n    function localeWeekdaysMin(m) {\n        return m === true\n            ? shiftWeekdays(this._weekdaysMin, this._week.dow)\n            : m\n            ? this._weekdaysMin[m.day()]\n            : this._weekdaysMin;\n    }\n\n    function handleStrictParse$1(weekdayName, format, strict) {\n        var i,\n            ii,\n            mom,\n            llc = weekdayName.toLocaleLowerCase();\n        if (!this._weekdaysParse) {\n            this._weekdaysParse = [];\n            this._shortWeekdaysParse = [];\n            this._minWeekdaysParse = [];\n\n            for (i = 0; i < 7; ++i) {\n                mom = createUTC([2000, 1]).day(i);\n                this._minWeekdaysParse[i] = this.weekdaysMin(\n                    mom,\n                    ''\n                ).toLocaleLowerCase();\n                this._shortWeekdaysParse[i] = this.weekdaysShort(\n                    mom,\n                    ''\n                ).toLocaleLowerCase();\n                this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n            }\n        }\n\n        if (strict) {\n            if (format === 'dddd') {\n                ii = indexOf.call(this._weekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            } else if (format === 'ddd') {\n                ii = indexOf.call(this._shortWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            } else {\n                ii = indexOf.call(this._minWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            }\n        } else {\n            if (format === 'dddd') {\n                ii = indexOf.call(this._weekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._shortWeekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._minWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            } else if (format === 'ddd') {\n                ii = indexOf.call(this._shortWeekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._weekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._minWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            } else {\n                ii = indexOf.call(this._minWeekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._weekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._shortWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            }\n        }\n    }\n\n    function localeWeekdaysParse(weekdayName, format, strict) {\n        var i, mom, regex;\n\n        if (this._weekdaysParseExact) {\n            return handleStrictParse$1.call(this, weekdayName, format, strict);\n        }\n\n        if (!this._weekdaysParse) {\n            this._weekdaysParse = [];\n            this._minWeekdaysParse = [];\n            this._shortWeekdaysParse = [];\n            this._fullWeekdaysParse = [];\n        }\n\n        for (i = 0; i < 7; i++) {\n            // make the regex if we don't have it already\n\n            mom = createUTC([2000, 1]).day(i);\n            if (strict && !this._fullWeekdaysParse[i]) {\n                this._fullWeekdaysParse[i] = new RegExp(\n                    '^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$',\n                    'i'\n                );\n                this._shortWeekdaysParse[i] = new RegExp(\n                    '^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$',\n                    'i'\n                );\n                this._minWeekdaysParse[i] = new RegExp(\n                    '^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$',\n                    'i'\n                );\n            }\n            if (!this._weekdaysParse[i]) {\n                regex =\n                    '^' +\n                    this.weekdays(mom, '') +\n                    '|^' +\n                    this.weekdaysShort(mom, '') +\n                    '|^' +\n                    this.weekdaysMin(mom, '');\n                this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n            }\n            // test the regex\n            if (\n                strict &&\n                format === 'dddd' &&\n                this._fullWeekdaysParse[i].test(weekdayName)\n            ) {\n                return i;\n            } else if (\n                strict &&\n                format === 'ddd' &&\n                this._shortWeekdaysParse[i].test(weekdayName)\n            ) {\n                return i;\n            } else if (\n                strict &&\n                format === 'dd' &&\n                this._minWeekdaysParse[i].test(weekdayName)\n            ) {\n                return i;\n            } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n                return i;\n            }\n        }\n    }\n\n    // MOMENTS\n\n    function getSetDayOfWeek(input) {\n        if (!this.isValid()) {\n            return input != null ? this : NaN;\n        }\n        var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\n        if (input != null) {\n            input = parseWeekday(input, this.localeData());\n            return this.add(input - day, 'd');\n        } else {\n            return day;\n        }\n    }\n\n    function getSetLocaleDayOfWeek(input) {\n        if (!this.isValid()) {\n            return input != null ? this : NaN;\n        }\n        var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n        return input == null ? weekday : this.add(input - weekday, 'd');\n    }\n\n    function getSetISODayOfWeek(input) {\n        if (!this.isValid()) {\n            return input != null ? this : NaN;\n        }\n\n        // behaves the same as moment#day except\n        // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n        // as a setter, sunday should belong to the previous week.\n\n        if (input != null) {\n            var weekday = parseIsoWeekday(input, this.localeData());\n            return this.day(this.day() % 7 ? weekday : weekday - 7);\n        } else {\n            return this.day() || 7;\n        }\n    }\n\n    function weekdaysRegex(isStrict) {\n        if (this._weekdaysParseExact) {\n            if (!hasOwnProp(this, '_weekdaysRegex')) {\n                computeWeekdaysParse.call(this);\n            }\n            if (isStrict) {\n                return this._weekdaysStrictRegex;\n            } else {\n                return this._weekdaysRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_weekdaysRegex')) {\n                this._weekdaysRegex = defaultWeekdaysRegex;\n            }\n            return this._weekdaysStrictRegex && isStrict\n                ? this._weekdaysStrictRegex\n                : this._weekdaysRegex;\n        }\n    }\n\n    function weekdaysShortRegex(isStrict) {\n        if (this._weekdaysParseExact) {\n            if (!hasOwnProp(this, '_weekdaysRegex')) {\n                computeWeekdaysParse.call(this);\n            }\n            if (isStrict) {\n                return this._weekdaysShortStrictRegex;\n            } else {\n                return this._weekdaysShortRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n                this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n            }\n            return this._weekdaysShortStrictRegex && isStrict\n                ? this._weekdaysShortStrictRegex\n                : this._weekdaysShortRegex;\n        }\n    }\n\n    function weekdaysMinRegex(isStrict) {\n        if (this._weekdaysParseExact) {\n            if (!hasOwnProp(this, '_weekdaysRegex')) {\n                computeWeekdaysParse.call(this);\n            }\n            if (isStrict) {\n                return this._weekdaysMinStrictRegex;\n            } else {\n                return this._weekdaysMinRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n                this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n            }\n            return this._weekdaysMinStrictRegex && isStrict\n                ? this._weekdaysMinStrictRegex\n                : this._weekdaysMinRegex;\n        }\n    }\n\n    function computeWeekdaysParse() {\n        function cmpLenRev(a, b) {\n            return b.length - a.length;\n        }\n\n        var minPieces = [],\n            shortPieces = [],\n            longPieces = [],\n            mixedPieces = [],\n            i,\n            mom,\n            minp,\n            shortp,\n            longp;\n        for (i = 0; i < 7; i++) {\n            // make the regex if we don't have it already\n            mom = createUTC([2000, 1]).day(i);\n            minp = regexEscape(this.weekdaysMin(mom, ''));\n            shortp = regexEscape(this.weekdaysShort(mom, ''));\n            longp = regexEscape(this.weekdays(mom, ''));\n            minPieces.push(minp);\n            shortPieces.push(shortp);\n            longPieces.push(longp);\n            mixedPieces.push(minp);\n            mixedPieces.push(shortp);\n            mixedPieces.push(longp);\n        }\n        // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n        // will match the longer piece.\n        minPieces.sort(cmpLenRev);\n        shortPieces.sort(cmpLenRev);\n        longPieces.sort(cmpLenRev);\n        mixedPieces.sort(cmpLenRev);\n\n        this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n        this._weekdaysShortRegex = this._weekdaysRegex;\n        this._weekdaysMinRegex = this._weekdaysRegex;\n\n        this._weekdaysStrictRegex = new RegExp(\n            '^(' + longPieces.join('|') + ')',\n            'i'\n        );\n        this._weekdaysShortStrictRegex = new RegExp(\n            '^(' + shortPieces.join('|') + ')',\n            'i'\n        );\n        this._weekdaysMinStrictRegex = new RegExp(\n            '^(' + minPieces.join('|') + ')',\n            'i'\n        );\n    }\n\n    // FORMATTING\n\n    function hFormat() {\n        return this.hours() % 12 || 12;\n    }\n\n    function kFormat() {\n        return this.hours() || 24;\n    }\n\n    addFormatToken('H', ['HH', 2], 0, 'hour');\n    addFormatToken('h', ['hh', 2], 0, hFormat);\n    addFormatToken('k', ['kk', 2], 0, kFormat);\n\n    addFormatToken('hmm', 0, 0, function () {\n        return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n    });\n\n    addFormatToken('hmmss', 0, 0, function () {\n        return (\n            '' +\n            hFormat.apply(this) +\n            zeroFill(this.minutes(), 2) +\n            zeroFill(this.seconds(), 2)\n        );\n    });\n\n    addFormatToken('Hmm', 0, 0, function () {\n        return '' + this.hours() + zeroFill(this.minutes(), 2);\n    });\n\n    addFormatToken('Hmmss', 0, 0, function () {\n        return (\n            '' +\n            this.hours() +\n            zeroFill(this.minutes(), 2) +\n            zeroFill(this.seconds(), 2)\n        );\n    });\n\n    function meridiem(token, lowercase) {\n        addFormatToken(token, 0, 0, function () {\n            return this.localeData().meridiem(\n                this.hours(),\n                this.minutes(),\n                lowercase\n            );\n        });\n    }\n\n    meridiem('a', true);\n    meridiem('A', false);\n\n    // ALIASES\n\n    addUnitAlias('hour', 'h');\n\n    // PRIORITY\n    addUnitPriority('hour', 13);\n\n    // PARSING\n\n    function matchMeridiem(isStrict, locale) {\n        return locale._meridiemParse;\n    }\n\n    addRegexToken('a', matchMeridiem);\n    addRegexToken('A', matchMeridiem);\n    addRegexToken('H', match1to2);\n    addRegexToken('h', match1to2);\n    addRegexToken('k', match1to2);\n    addRegexToken('HH', match1to2, match2);\n    addRegexToken('hh', match1to2, match2);\n    addRegexToken('kk', match1to2, match2);\n\n    addRegexToken('hmm', match3to4);\n    addRegexToken('hmmss', match5to6);\n    addRegexToken('Hmm', match3to4);\n    addRegexToken('Hmmss', match5to6);\n\n    addParseToken(['H', 'HH'], HOUR);\n    addParseToken(['k', 'kk'], function (input, array, config) {\n        var kInput = toInt(input);\n        array[HOUR] = kInput === 24 ? 0 : kInput;\n    });\n    addParseToken(['a', 'A'], function (input, array, config) {\n        config._isPm = config._locale.isPM(input);\n        config._meridiem = input;\n    });\n    addParseToken(['h', 'hh'], function (input, array, config) {\n        array[HOUR] = toInt(input);\n        getParsingFlags(config).bigHour = true;\n    });\n    addParseToken('hmm', function (input, array, config) {\n        var pos = input.length - 2;\n        array[HOUR] = toInt(input.substr(0, pos));\n        array[MINUTE] = toInt(input.substr(pos));\n        getParsingFlags(config).bigHour = true;\n    });\n    addParseToken('hmmss', function (input, array, config) {\n        var pos1 = input.length - 4,\n            pos2 = input.length - 2;\n        array[HOUR] = toInt(input.substr(0, pos1));\n        array[MINUTE] = toInt(input.substr(pos1, 2));\n        array[SECOND] = toInt(input.substr(pos2));\n        getParsingFlags(config).bigHour = true;\n    });\n    addParseToken('Hmm', function (input, array, config) {\n        var pos = input.length - 2;\n        array[HOUR] = toInt(input.substr(0, pos));\n        array[MINUTE] = toInt(input.substr(pos));\n    });\n    addParseToken('Hmmss', function (input, array, config) {\n        var pos1 = input.length - 4,\n            pos2 = input.length - 2;\n        array[HOUR] = toInt(input.substr(0, pos1));\n        array[MINUTE] = toInt(input.substr(pos1, 2));\n        array[SECOND] = toInt(input.substr(pos2));\n    });\n\n    // LOCALES\n\n    function localeIsPM(input) {\n        // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n        // Using charAt should be more compatible.\n        return (input + '').toLowerCase().charAt(0) === 'p';\n    }\n\n    var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i,\n        // Setting the hour should keep the time, because the user explicitly\n        // specified which hour they want. So trying to maintain the same hour (in\n        // a new timezone) makes sense. Adding/subtracting hours does not follow\n        // this rule.\n        getSetHour = makeGetSet('Hours', true);\n\n    function localeMeridiem(hours, minutes, isLower) {\n        if (hours > 11) {\n            return isLower ? 'pm' : 'PM';\n        } else {\n            return isLower ? 'am' : 'AM';\n        }\n    }\n\n    var baseConfig = {\n        calendar: defaultCalendar,\n        longDateFormat: defaultLongDateFormat,\n        invalidDate: defaultInvalidDate,\n        ordinal: defaultOrdinal,\n        dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n        relativeTime: defaultRelativeTime,\n\n        months: defaultLocaleMonths,\n        monthsShort: defaultLocaleMonthsShort,\n\n        week: defaultLocaleWeek,\n\n        weekdays: defaultLocaleWeekdays,\n        weekdaysMin: defaultLocaleWeekdaysMin,\n        weekdaysShort: defaultLocaleWeekdaysShort,\n\n        meridiemParse: defaultLocaleMeridiemParse,\n    };\n\n    // internal storage for locale config files\n    var locales = {},\n        localeFamilies = {},\n        globalLocale;\n\n    function commonPrefix(arr1, arr2) {\n        var i,\n            minl = Math.min(arr1.length, arr2.length);\n        for (i = 0; i < minl; i += 1) {\n            if (arr1[i] !== arr2[i]) {\n                return i;\n            }\n        }\n        return minl;\n    }\n\n    function normalizeLocale(key) {\n        return key ? key.toLowerCase().replace('_', '-') : key;\n    }\n\n    // pick the locale from the array\n    // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n    // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n    function chooseLocale(names) {\n        var i = 0,\n            j,\n            next,\n            locale,\n            split;\n\n        while (i < names.length) {\n            split = normalizeLocale(names[i]).split('-');\n            j = split.length;\n            next = normalizeLocale(names[i + 1]);\n            next = next ? next.split('-') : null;\n            while (j > 0) {\n                locale = loadLocale(split.slice(0, j).join('-'));\n                if (locale) {\n                    return locale;\n                }\n                if (\n                    next &&\n                    next.length >= j &&\n                    commonPrefix(split, next) >= j - 1\n                ) {\n                    //the next array item is better than a shallower substring of this one\n                    break;\n                }\n                j--;\n            }\n            i++;\n        }\n        return globalLocale;\n    }\n\n    function loadLocale(name) {\n        var oldLocale = null,\n            aliasedRequire;\n        // TODO: Find a better way to register and load all the locales in Node\n        if (\n            locales[name] === undefined &&\n            typeof module !== 'undefined' &&\n            module &&\n            module.exports\n        ) {\n            try {\n                oldLocale = globalLocale._abbr;\n                aliasedRequire = require;\n                aliasedRequire('./locale/' + name);\n                getSetGlobalLocale(oldLocale);\n            } catch (e) {\n                // mark as not found to avoid repeating expensive file require call causing high CPU\n                // when trying to find en-US, en_US, en-us for every format call\n                locales[name] = null; // null means not found\n            }\n        }\n        return locales[name];\n    }\n\n    // This function will load locale and then set the global locale.  If\n    // no arguments are passed in, it will simply return the current global\n    // locale key.\n    function getSetGlobalLocale(key, values) {\n        var data;\n        if (key) {\n            if (isUndefined(values)) {\n                data = getLocale(key);\n            } else {\n                data = defineLocale(key, values);\n            }\n\n            if (data) {\n                // moment.duration._locale = moment._locale = data;\n                globalLocale = data;\n            } else {\n                if (typeof console !== 'undefined' && console.warn) {\n                    //warn user if arguments are passed but the locale could not be set\n                    console.warn(\n                        'Locale ' + key + ' not found. Did you forget to load it?'\n                    );\n                }\n            }\n        }\n\n        return globalLocale._abbr;\n    }\n\n    function defineLocale(name, config) {\n        if (config !== null) {\n            var locale,\n                parentConfig = baseConfig;\n            config.abbr = name;\n            if (locales[name] != null) {\n                deprecateSimple(\n                    'defineLocaleOverride',\n                    'use moment.updateLocale(localeName, config) to change ' +\n                        'an existing locale. moment.defineLocale(localeName, ' +\n                        'config) should only be used for creating a new locale ' +\n                        'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'\n                );\n                parentConfig = locales[name]._config;\n            } else if (config.parentLocale != null) {\n                if (locales[config.parentLocale] != null) {\n                    parentConfig = locales[config.parentLocale]._config;\n                } else {\n                    locale = loadLocale(config.parentLocale);\n                    if (locale != null) {\n                        parentConfig = locale._config;\n                    } else {\n                        if (!localeFamilies[config.parentLocale]) {\n                            localeFamilies[config.parentLocale] = [];\n                        }\n                        localeFamilies[config.parentLocale].push({\n                            name: name,\n                            config: config,\n                        });\n                        return null;\n                    }\n                }\n            }\n            locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n            if (localeFamilies[name]) {\n                localeFamilies[name].forEach(function (x) {\n                    defineLocale(x.name, x.config);\n                });\n            }\n\n            // backwards compat for now: also set the locale\n            // make sure we set the locale AFTER all child locales have been\n            // created, so we won't end up with the child locale set.\n            getSetGlobalLocale(name);\n\n            return locales[name];\n        } else {\n            // useful for testing\n            delete locales[name];\n            return null;\n        }\n    }\n\n    function updateLocale(name, config) {\n        if (config != null) {\n            var locale,\n                tmpLocale,\n                parentConfig = baseConfig;\n\n            if (locales[name] != null && locales[name].parentLocale != null) {\n                // Update existing child locale in-place to avoid memory-leaks\n                locales[name].set(mergeConfigs(locales[name]._config, config));\n            } else {\n                // MERGE\n                tmpLocale = loadLocale(name);\n                if (tmpLocale != null) {\n                    parentConfig = tmpLocale._config;\n                }\n                config = mergeConfigs(parentConfig, config);\n                if (tmpLocale == null) {\n                    // updateLocale is called for creating a new locale\n                    // Set abbr so it will have a name (getters return\n                    // undefined otherwise).\n                    config.abbr = name;\n                }\n                locale = new Locale(config);\n                locale.parentLocale = locales[name];\n                locales[name] = locale;\n            }\n\n            // backwards compat for now: also set the locale\n            getSetGlobalLocale(name);\n        } else {\n            // pass null for config to unupdate, useful for tests\n            if (locales[name] != null) {\n                if (locales[name].parentLocale != null) {\n                    locales[name] = locales[name].parentLocale;\n                    if (name === getSetGlobalLocale()) {\n                        getSetGlobalLocale(name);\n                    }\n                } else if (locales[name] != null) {\n                    delete locales[name];\n                }\n            }\n        }\n        return locales[name];\n    }\n\n    // returns locale data\n    function getLocale(key) {\n        var locale;\n\n        if (key && key._locale && key._locale._abbr) {\n            key = key._locale._abbr;\n        }\n\n        if (!key) {\n            return globalLocale;\n        }\n\n        if (!isArray(key)) {\n            //short-circuit everything else\n            locale = loadLocale(key);\n            if (locale) {\n                return locale;\n            }\n            key = [key];\n        }\n\n        return chooseLocale(key);\n    }\n\n    function listLocales() {\n        return keys(locales);\n    }\n\n    function checkOverflow(m) {\n        var overflow,\n            a = m._a;\n\n        if (a && getParsingFlags(m).overflow === -2) {\n            overflow =\n                a[MONTH] < 0 || a[MONTH] > 11\n                    ? MONTH\n                    : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])\n                    ? DATE\n                    : a[HOUR] < 0 ||\n                      a[HOUR] > 24 ||\n                      (a[HOUR] === 24 &&\n                          (a[MINUTE] !== 0 ||\n                              a[SECOND] !== 0 ||\n                              a[MILLISECOND] !== 0))\n                    ? HOUR\n                    : a[MINUTE] < 0 || a[MINUTE] > 59\n                    ? MINUTE\n                    : a[SECOND] < 0 || a[SECOND] > 59\n                    ? SECOND\n                    : a[MILLISECOND] < 0 || a[MILLISECOND] > 999\n                    ? MILLISECOND\n                    : -1;\n\n            if (\n                getParsingFlags(m)._overflowDayOfYear &&\n                (overflow < YEAR || overflow > DATE)\n            ) {\n                overflow = DATE;\n            }\n            if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n                overflow = WEEK;\n            }\n            if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n                overflow = WEEKDAY;\n            }\n\n            getParsingFlags(m).overflow = overflow;\n        }\n\n        return m;\n    }\n\n    // iso 8601 regex\n    // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n    var extendedIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n        basicIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d|))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n        tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/,\n        isoDates = [\n            ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n            ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n            ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n            ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n            ['YYYY-DDD', /\\d{4}-\\d{3}/],\n            ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n            ['YYYYYYMMDD', /[+-]\\d{10}/],\n            ['YYYYMMDD', /\\d{8}/],\n            ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n            ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n            ['YYYYDDD', /\\d{7}/],\n            ['YYYYMM', /\\d{6}/, false],\n            ['YYYY', /\\d{4}/, false],\n        ],\n        // iso time formats and regexes\n        isoTimes = [\n            ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n            ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n            ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n            ['HH:mm', /\\d\\d:\\d\\d/],\n            ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n            ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n            ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n            ['HHmm', /\\d\\d\\d\\d/],\n            ['HH', /\\d\\d/],\n        ],\n        aspNetJsonRegex = /^\\/?Date\\((-?\\d+)/i,\n        // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n        rfc2822 = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/,\n        obsOffsets = {\n            UT: 0,\n            GMT: 0,\n            EDT: -4 * 60,\n            EST: -5 * 60,\n            CDT: -5 * 60,\n            CST: -6 * 60,\n            MDT: -6 * 60,\n            MST: -7 * 60,\n            PDT: -7 * 60,\n            PST: -8 * 60,\n        };\n\n    // date from iso format\n    function configFromISO(config) {\n        var i,\n            l,\n            string = config._i,\n            match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n            allowTime,\n            dateFormat,\n            timeFormat,\n            tzFormat;\n\n        if (match) {\n            getParsingFlags(config).iso = true;\n\n            for (i = 0, l = isoDates.length; i < l; i++) {\n                if (isoDates[i][1].exec(match[1])) {\n                    dateFormat = isoDates[i][0];\n                    allowTime = isoDates[i][2] !== false;\n                    break;\n                }\n            }\n            if (dateFormat == null) {\n                config._isValid = false;\n                return;\n            }\n            if (match[3]) {\n                for (i = 0, l = isoTimes.length; i < l; i++) {\n                    if (isoTimes[i][1].exec(match[3])) {\n                        // match[2] should be 'T' or space\n                        timeFormat = (match[2] || ' ') + isoTimes[i][0];\n                        break;\n                    }\n                }\n                if (timeFormat == null) {\n                    config._isValid = false;\n                    return;\n                }\n            }\n            if (!allowTime && timeFormat != null) {\n                config._isValid = false;\n                return;\n            }\n            if (match[4]) {\n                if (tzRegex.exec(match[4])) {\n                    tzFormat = 'Z';\n                } else {\n                    config._isValid = false;\n                    return;\n                }\n            }\n            config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n            configFromStringAndFormat(config);\n        } else {\n            config._isValid = false;\n        }\n    }\n\n    function extractFromRFC2822Strings(\n        yearStr,\n        monthStr,\n        dayStr,\n        hourStr,\n        minuteStr,\n        secondStr\n    ) {\n        var result = [\n            untruncateYear(yearStr),\n            defaultLocaleMonthsShort.indexOf(monthStr),\n            parseInt(dayStr, 10),\n            parseInt(hourStr, 10),\n            parseInt(minuteStr, 10),\n        ];\n\n        if (secondStr) {\n            result.push(parseInt(secondStr, 10));\n        }\n\n        return result;\n    }\n\n    function untruncateYear(yearStr) {\n        var year = parseInt(yearStr, 10);\n        if (year <= 49) {\n            return 2000 + year;\n        } else if (year <= 999) {\n            return 1900 + year;\n        }\n        return year;\n    }\n\n    function preprocessRFC2822(s) {\n        // Remove comments and folding whitespace and replace multiple-spaces with a single space\n        return s\n            .replace(/\\([^)]*\\)|[\\n\\t]/g, ' ')\n            .replace(/(\\s\\s+)/g, ' ')\n            .replace(/^\\s\\s*/, '')\n            .replace(/\\s\\s*$/, '');\n    }\n\n    function checkWeekday(weekdayStr, parsedInput, config) {\n        if (weekdayStr) {\n            // TODO: Replace the vanilla JS Date object with an independent day-of-week check.\n            var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n                weekdayActual = new Date(\n                    parsedInput[0],\n                    parsedInput[1],\n                    parsedInput[2]\n                ).getDay();\n            if (weekdayProvided !== weekdayActual) {\n                getParsingFlags(config).weekdayMismatch = true;\n                config._isValid = false;\n                return false;\n            }\n        }\n        return true;\n    }\n\n    function calculateOffset(obsOffset, militaryOffset, numOffset) {\n        if (obsOffset) {\n            return obsOffsets[obsOffset];\n        } else if (militaryOffset) {\n            // the only allowed military tz is Z\n            return 0;\n        } else {\n            var hm = parseInt(numOffset, 10),\n                m = hm % 100,\n                h = (hm - m) / 100;\n            return h * 60 + m;\n        }\n    }\n\n    // date and time from ref 2822 format\n    function configFromRFC2822(config) {\n        var match = rfc2822.exec(preprocessRFC2822(config._i)),\n            parsedArray;\n        if (match) {\n            parsedArray = extractFromRFC2822Strings(\n                match[4],\n                match[3],\n                match[2],\n                match[5],\n                match[6],\n                match[7]\n            );\n            if (!checkWeekday(match[1], parsedArray, config)) {\n                return;\n            }\n\n            config._a = parsedArray;\n            config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n            config._d = createUTCDate.apply(null, config._a);\n            config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n            getParsingFlags(config).rfc2822 = true;\n        } else {\n            config._isValid = false;\n        }\n    }\n\n    // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict\n    function configFromString(config) {\n        var matched = aspNetJsonRegex.exec(config._i);\n        if (matched !== null) {\n            config._d = new Date(+matched[1]);\n            return;\n        }\n\n        configFromISO(config);\n        if (config._isValid === false) {\n            delete config._isValid;\n        } else {\n            return;\n        }\n\n        configFromRFC2822(config);\n        if (config._isValid === false) {\n            delete config._isValid;\n        } else {\n            return;\n        }\n\n        if (config._strict) {\n            config._isValid = false;\n        } else {\n            // Final attempt, use Input Fallback\n            hooks.createFromInputFallback(config);\n        }\n    }\n\n    hooks.createFromInputFallback = deprecate(\n        'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n            'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n            'discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n        function (config) {\n            config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n        }\n    );\n\n    // Pick the first defined of two or three arguments.\n    function defaults(a, b, c) {\n        if (a != null) {\n            return a;\n        }\n        if (b != null) {\n            return b;\n        }\n        return c;\n    }\n\n    function currentDateArray(config) {\n        // hooks is actually the exported moment object\n        var nowValue = new Date(hooks.now());\n        if (config._useUTC) {\n            return [\n                nowValue.getUTCFullYear(),\n                nowValue.getUTCMonth(),\n                nowValue.getUTCDate(),\n            ];\n        }\n        return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n    }\n\n    // convert an array to a date.\n    // the array should mirror the parameters below\n    // note: all values past the year are optional and will default to the lowest possible value.\n    // [year, month, day , hour, minute, second, millisecond]\n    function configFromArray(config) {\n        var i,\n            date,\n            input = [],\n            currentDate,\n            expectedWeekday,\n            yearToUse;\n\n        if (config._d) {\n            return;\n        }\n\n        currentDate = currentDateArray(config);\n\n        //compute day of the year from weeks and weekdays\n        if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n            dayOfYearFromWeekInfo(config);\n        }\n\n        //if the day of the year is set, figure out what it is\n        if (config._dayOfYear != null) {\n            yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n            if (\n                config._dayOfYear > daysInYear(yearToUse) ||\n                config._dayOfYear === 0\n            ) {\n                getParsingFlags(config)._overflowDayOfYear = true;\n            }\n\n            date = createUTCDate(yearToUse, 0, config._dayOfYear);\n            config._a[MONTH] = date.getUTCMonth();\n            config._a[DATE] = date.getUTCDate();\n        }\n\n        // Default to current date.\n        // * if no year, month, day of month are given, default to today\n        // * if day of month is given, default month and year\n        // * if month is given, default only year\n        // * if year is given, don't default anything\n        for (i = 0; i < 3 && config._a[i] == null; ++i) {\n            config._a[i] = input[i] = currentDate[i];\n        }\n\n        // Zero out whatever was not defaulted, including time\n        for (; i < 7; i++) {\n            config._a[i] = input[i] =\n                config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];\n        }\n\n        // Check for 24:00:00.000\n        if (\n            config._a[HOUR] === 24 &&\n            config._a[MINUTE] === 0 &&\n            config._a[SECOND] === 0 &&\n            config._a[MILLISECOND] === 0\n        ) {\n            config._nextDay = true;\n            config._a[HOUR] = 0;\n        }\n\n        config._d = (config._useUTC ? createUTCDate : createDate).apply(\n            null,\n            input\n        );\n        expectedWeekday = config._useUTC\n            ? config._d.getUTCDay()\n            : config._d.getDay();\n\n        // Apply timezone offset from input. The actual utcOffset can be changed\n        // with parseZone.\n        if (config._tzm != null) {\n            config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n        }\n\n        if (config._nextDay) {\n            config._a[HOUR] = 24;\n        }\n\n        // check for mismatching day of week\n        if (\n            config._w &&\n            typeof config._w.d !== 'undefined' &&\n            config._w.d !== expectedWeekday\n        ) {\n            getParsingFlags(config).weekdayMismatch = true;\n        }\n    }\n\n    function dayOfYearFromWeekInfo(config) {\n        var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;\n\n        w = config._w;\n        if (w.GG != null || w.W != null || w.E != null) {\n            dow = 1;\n            doy = 4;\n\n            // TODO: We need to take the current isoWeekYear, but that depends on\n            // how we interpret now (local, utc, fixed offset). So create\n            // a now version of current config (take local/utc/offset flags, and\n            // create now).\n            weekYear = defaults(\n                w.GG,\n                config._a[YEAR],\n                weekOfYear(createLocal(), 1, 4).year\n            );\n            week = defaults(w.W, 1);\n            weekday = defaults(w.E, 1);\n            if (weekday < 1 || weekday > 7) {\n                weekdayOverflow = true;\n            }\n        } else {\n            dow = config._locale._week.dow;\n            doy = config._locale._week.doy;\n\n            curWeek = weekOfYear(createLocal(), dow, doy);\n\n            weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n            // Default to current week.\n            week = defaults(w.w, curWeek.week);\n\n            if (w.d != null) {\n                // weekday -- low day numbers are considered next week\n                weekday = w.d;\n                if (weekday < 0 || weekday > 6) {\n                    weekdayOverflow = true;\n                }\n            } else if (w.e != null) {\n                // local weekday -- counting starts from beginning of week\n                weekday = w.e + dow;\n                if (w.e < 0 || w.e > 6) {\n                    weekdayOverflow = true;\n                }\n            } else {\n                // default to beginning of week\n                weekday = dow;\n            }\n        }\n        if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n            getParsingFlags(config)._overflowWeeks = true;\n        } else if (weekdayOverflow != null) {\n            getParsingFlags(config)._overflowWeekday = true;\n        } else {\n            temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n            config._a[YEAR] = temp.year;\n            config._dayOfYear = temp.dayOfYear;\n        }\n    }\n\n    // constant that refers to the ISO standard\n    hooks.ISO_8601 = function () {};\n\n    // constant that refers to the RFC 2822 form\n    hooks.RFC_2822 = function () {};\n\n    // date from string and format string\n    function configFromStringAndFormat(config) {\n        // TODO: Move this to another part of the creation flow to prevent circular deps\n        if (config._f === hooks.ISO_8601) {\n            configFromISO(config);\n            return;\n        }\n        if (config._f === hooks.RFC_2822) {\n            configFromRFC2822(config);\n            return;\n        }\n        config._a = [];\n        getParsingFlags(config).empty = true;\n\n        // This array is used to make a Date, either with `new Date` or `Date.UTC`\n        var string = '' + config._i,\n            i,\n            parsedInput,\n            tokens,\n            token,\n            skipped,\n            stringLength = string.length,\n            totalParsedInputLength = 0,\n            era;\n\n        tokens =\n            expandFormat(config._f, config._locale).match(formattingTokens) || [];\n\n        for (i = 0; i < tokens.length; i++) {\n            token = tokens[i];\n            parsedInput = (string.match(getParseRegexForToken(token, config)) ||\n                [])[0];\n            if (parsedInput) {\n                skipped = string.substr(0, string.indexOf(parsedInput));\n                if (skipped.length > 0) {\n                    getParsingFlags(config).unusedInput.push(skipped);\n                }\n                string = string.slice(\n                    string.indexOf(parsedInput) + parsedInput.length\n                );\n                totalParsedInputLength += parsedInput.length;\n            }\n            // don't parse if it's not a known token\n            if (formatTokenFunctions[token]) {\n                if (parsedInput) {\n                    getParsingFlags(config).empty = false;\n                } else {\n                    getParsingFlags(config).unusedTokens.push(token);\n                }\n                addTimeToArrayFromToken(token, parsedInput, config);\n            } else if (config._strict && !parsedInput) {\n                getParsingFlags(config).unusedTokens.push(token);\n            }\n        }\n\n        // add remaining unparsed input length to the string\n        getParsingFlags(config).charsLeftOver =\n            stringLength - totalParsedInputLength;\n        if (string.length > 0) {\n            getParsingFlags(config).unusedInput.push(string);\n        }\n\n        // clear _12h flag if hour is <= 12\n        if (\n            config._a[HOUR] <= 12 &&\n            getParsingFlags(config).bigHour === true &&\n            config._a[HOUR] > 0\n        ) {\n            getParsingFlags(config).bigHour = undefined;\n        }\n\n        getParsingFlags(config).parsedDateParts = config._a.slice(0);\n        getParsingFlags(config).meridiem = config._meridiem;\n        // handle meridiem\n        config._a[HOUR] = meridiemFixWrap(\n            config._locale,\n            config._a[HOUR],\n            config._meridiem\n        );\n\n        // handle era\n        era = getParsingFlags(config).era;\n        if (era !== null) {\n            config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);\n        }\n\n        configFromArray(config);\n        checkOverflow(config);\n    }\n\n    function meridiemFixWrap(locale, hour, meridiem) {\n        var isPm;\n\n        if (meridiem == null) {\n            // nothing to do\n            return hour;\n        }\n        if (locale.meridiemHour != null) {\n            return locale.meridiemHour(hour, meridiem);\n        } else if (locale.isPM != null) {\n            // Fallback\n            isPm = locale.isPM(meridiem);\n            if (isPm && hour < 12) {\n                hour += 12;\n            }\n            if (!isPm && hour === 12) {\n                hour = 0;\n            }\n            return hour;\n        } else {\n            // this is not supposed to happen\n            return hour;\n        }\n    }\n\n    // date from string and array of format strings\n    function configFromStringAndArray(config) {\n        var tempConfig,\n            bestMoment,\n            scoreToBeat,\n            i,\n            currentScore,\n            validFormatFound,\n            bestFormatIsValid = false;\n\n        if (config._f.length === 0) {\n            getParsingFlags(config).invalidFormat = true;\n            config._d = new Date(NaN);\n            return;\n        }\n\n        for (i = 0; i < config._f.length; i++) {\n            currentScore = 0;\n            validFormatFound = false;\n            tempConfig = copyConfig({}, config);\n            if (config._useUTC != null) {\n                tempConfig._useUTC = config._useUTC;\n            }\n            tempConfig._f = config._f[i];\n            configFromStringAndFormat(tempConfig);\n\n            if (isValid(tempConfig)) {\n                validFormatFound = true;\n            }\n\n            // if there is any input that was not parsed add a penalty for that format\n            currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n            //or tokens\n            currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n            getParsingFlags(tempConfig).score = currentScore;\n\n            if (!bestFormatIsValid) {\n                if (\n                    scoreToBeat == null ||\n                    currentScore < scoreToBeat ||\n                    validFormatFound\n                ) {\n                    scoreToBeat = currentScore;\n                    bestMoment = tempConfig;\n                    if (validFormatFound) {\n                        bestFormatIsValid = true;\n                    }\n                }\n            } else {\n                if (currentScore < scoreToBeat) {\n                    scoreToBeat = currentScore;\n                    bestMoment = tempConfig;\n                }\n            }\n        }\n\n        extend(config, bestMoment || tempConfig);\n    }\n\n    function configFromObject(config) {\n        if (config._d) {\n            return;\n        }\n\n        var i = normalizeObjectUnits(config._i),\n            dayOrDate = i.day === undefined ? i.date : i.day;\n        config._a = map(\n            [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],\n            function (obj) {\n                return obj && parseInt(obj, 10);\n            }\n        );\n\n        configFromArray(config);\n    }\n\n    function createFromConfig(config) {\n        var res = new Moment(checkOverflow(prepareConfig(config)));\n        if (res._nextDay) {\n            // Adding is smart enough around DST\n            res.add(1, 'd');\n            res._nextDay = undefined;\n        }\n\n        return res;\n    }\n\n    function prepareConfig(config) {\n        var input = config._i,\n            format = config._f;\n\n        config._locale = config._locale || getLocale(config._l);\n\n        if (input === null || (format === undefined && input === '')) {\n            return createInvalid({ nullInput: true });\n        }\n\n        if (typeof input === 'string') {\n            config._i = input = config._locale.preparse(input);\n        }\n\n        if (isMoment(input)) {\n            return new Moment(checkOverflow(input));\n        } else if (isDate(input)) {\n            config._d = input;\n        } else if (isArray(format)) {\n            configFromStringAndArray(config);\n        } else if (format) {\n            configFromStringAndFormat(config);\n        } else {\n            configFromInput(config);\n        }\n\n        if (!isValid(config)) {\n            config._d = null;\n        }\n\n        return config;\n    }\n\n    function configFromInput(config) {\n        var input = config._i;\n        if (isUndefined(input)) {\n            config._d = new Date(hooks.now());\n        } else if (isDate(input)) {\n            config._d = new Date(input.valueOf());\n        } else if (typeof input === 'string') {\n            configFromString(config);\n        } else if (isArray(input)) {\n            config._a = map(input.slice(0), function (obj) {\n                return parseInt(obj, 10);\n            });\n            configFromArray(config);\n        } else if (isObject(input)) {\n            configFromObject(config);\n        } else if (isNumber(input)) {\n            // from milliseconds\n            config._d = new Date(input);\n        } else {\n            hooks.createFromInputFallback(config);\n        }\n    }\n\n    function createLocalOrUTC(input, format, locale, strict, isUTC) {\n        var c = {};\n\n        if (format === true || format === false) {\n            strict = format;\n            format = undefined;\n        }\n\n        if (locale === true || locale === false) {\n            strict = locale;\n            locale = undefined;\n        }\n\n        if (\n            (isObject(input) && isObjectEmpty(input)) ||\n            (isArray(input) && input.length === 0)\n        ) {\n            input = undefined;\n        }\n        // object construction must be done this way.\n        // https://github.com/moment/moment/issues/1423\n        c._isAMomentObject = true;\n        c._useUTC = c._isUTC = isUTC;\n        c._l = locale;\n        c._i = input;\n        c._f = format;\n        c._strict = strict;\n\n        return createFromConfig(c);\n    }\n\n    function createLocal(input, format, locale, strict) {\n        return createLocalOrUTC(input, format, locale, strict, false);\n    }\n\n    var prototypeMin = deprecate(\n            'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n            function () {\n                var other = createLocal.apply(null, arguments);\n                if (this.isValid() && other.isValid()) {\n                    return other < this ? this : other;\n                } else {\n                    return createInvalid();\n                }\n            }\n        ),\n        prototypeMax = deprecate(\n            'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n            function () {\n                var other = createLocal.apply(null, arguments);\n                if (this.isValid() && other.isValid()) {\n                    return other > this ? this : other;\n                } else {\n                    return createInvalid();\n                }\n            }\n        );\n\n    // Pick a moment m from moments so that m[fn](other) is true for all\n    // other. This relies on the function fn to be transitive.\n    //\n    // moments should either be an array of moment objects or an array, whose\n    // first element is an array of moment objects.\n    function pickBy(fn, moments) {\n        var res, i;\n        if (moments.length === 1 && isArray(moments[0])) {\n            moments = moments[0];\n        }\n        if (!moments.length) {\n            return createLocal();\n        }\n        res = moments[0];\n        for (i = 1; i < moments.length; ++i) {\n            if (!moments[i].isValid() || moments[i][fn](res)) {\n                res = moments[i];\n            }\n        }\n        return res;\n    }\n\n    // TODO: Use [].sort instead?\n    function min() {\n        var args = [].slice.call(arguments, 0);\n\n        return pickBy('isBefore', args);\n    }\n\n    function max() {\n        var args = [].slice.call(arguments, 0);\n\n        return pickBy('isAfter', args);\n    }\n\n    var now = function () {\n        return Date.now ? Date.now() : +new Date();\n    };\n\n    var ordering = [\n        'year',\n        'quarter',\n        'month',\n        'week',\n        'day',\n        'hour',\n        'minute',\n        'second',\n        'millisecond',\n    ];\n\n    function isDurationValid(m) {\n        var key,\n            unitHasDecimal = false,\n            i;\n        for (key in m) {\n            if (\n                hasOwnProp(m, key) &&\n                !(\n                    indexOf.call(ordering, key) !== -1 &&\n                    (m[key] == null || !isNaN(m[key]))\n                )\n            ) {\n                return false;\n            }\n        }\n\n        for (i = 0; i < ordering.length; ++i) {\n            if (m[ordering[i]]) {\n                if (unitHasDecimal) {\n                    return false; // only allow non-integers for smallest unit\n                }\n                if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n                    unitHasDecimal = true;\n                }\n            }\n        }\n\n        return true;\n    }\n\n    function isValid$1() {\n        return this._isValid;\n    }\n\n    function createInvalid$1() {\n        return createDuration(NaN);\n    }\n\n    function Duration(duration) {\n        var normalizedInput = normalizeObjectUnits(duration),\n            years = normalizedInput.year || 0,\n            quarters = normalizedInput.quarter || 0,\n            months = normalizedInput.month || 0,\n            weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n            days = normalizedInput.day || 0,\n            hours = normalizedInput.hour || 0,\n            minutes = normalizedInput.minute || 0,\n            seconds = normalizedInput.second || 0,\n            milliseconds = normalizedInput.millisecond || 0;\n\n        this._isValid = isDurationValid(normalizedInput);\n\n        // representation for dateAddRemove\n        this._milliseconds =\n            +milliseconds +\n            seconds * 1e3 + // 1000\n            minutes * 6e4 + // 1000 * 60\n            hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n        // Because of dateAddRemove treats 24 hours as different from a\n        // day when working around DST, we need to store them separately\n        this._days = +days + weeks * 7;\n        // It is impossible to translate months into days without knowing\n        // which months you are are talking about, so we have to store\n        // it separately.\n        this._months = +months + quarters * 3 + years * 12;\n\n        this._data = {};\n\n        this._locale = getLocale();\n\n        this._bubble();\n    }\n\n    function isDuration(obj) {\n        return obj instanceof Duration;\n    }\n\n    function absRound(number) {\n        if (number < 0) {\n            return Math.round(-1 * number) * -1;\n        } else {\n            return Math.round(number);\n        }\n    }\n\n    // compare two arrays, return the number of differences\n    function compareArrays(array1, array2, dontConvert) {\n        var len = Math.min(array1.length, array2.length),\n            lengthDiff = Math.abs(array1.length - array2.length),\n            diffs = 0,\n            i;\n        for (i = 0; i < len; i++) {\n            if (\n                (dontConvert && array1[i] !== array2[i]) ||\n                (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))\n            ) {\n                diffs++;\n            }\n        }\n        return diffs + lengthDiff;\n    }\n\n    // FORMATTING\n\n    function offset(token, separator) {\n        addFormatToken(token, 0, 0, function () {\n            var offset = this.utcOffset(),\n                sign = '+';\n            if (offset < 0) {\n                offset = -offset;\n                sign = '-';\n            }\n            return (\n                sign +\n                zeroFill(~~(offset / 60), 2) +\n                separator +\n                zeroFill(~~offset % 60, 2)\n            );\n        });\n    }\n\n    offset('Z', ':');\n    offset('ZZ', '');\n\n    // PARSING\n\n    addRegexToken('Z', matchShortOffset);\n    addRegexToken('ZZ', matchShortOffset);\n    addParseToken(['Z', 'ZZ'], function (input, array, config) {\n        config._useUTC = true;\n        config._tzm = offsetFromString(matchShortOffset, input);\n    });\n\n    // HELPERS\n\n    // timezone chunker\n    // '+10:00' > ['10',  '00']\n    // '-1530'  > ['-15', '30']\n    var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n    function offsetFromString(matcher, string) {\n        var matches = (string || '').match(matcher),\n            chunk,\n            parts,\n            minutes;\n\n        if (matches === null) {\n            return null;\n        }\n\n        chunk = matches[matches.length - 1] || [];\n        parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n        minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n        return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;\n    }\n\n    // Return a moment from input, that is local/utc/zone equivalent to model.\n    function cloneWithOffset(input, model) {\n        var res, diff;\n        if (model._isUTC) {\n            res = model.clone();\n            diff =\n                (isMoment(input) || isDate(input)\n                    ? input.valueOf()\n                    : createLocal(input).valueOf()) - res.valueOf();\n            // Use low-level api, because this fn is low-level api.\n            res._d.setTime(res._d.valueOf() + diff);\n            hooks.updateOffset(res, false);\n            return res;\n        } else {\n            return createLocal(input).local();\n        }\n    }\n\n    function getDateOffset(m) {\n        // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n        // https://github.com/moment/moment/pull/1871\n        return -Math.round(m._d.getTimezoneOffset());\n    }\n\n    // HOOKS\n\n    // This function will be called whenever a moment is mutated.\n    // It is intended to keep the offset in sync with the timezone.\n    hooks.updateOffset = function () {};\n\n    // MOMENTS\n\n    // keepLocalTime = true means only change the timezone, without\n    // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n    // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n    // +0200, so we adjust the time as needed, to be valid.\n    //\n    // Keeping the time actually adds/subtracts (one hour)\n    // from the actual represented time. That is why we call updateOffset\n    // a second time. In case it wants us to change the offset again\n    // _changeInProgress == true case, then we have to adjust, because\n    // there is no such time in the given timezone.\n    function getSetOffset(input, keepLocalTime, keepMinutes) {\n        var offset = this._offset || 0,\n            localAdjust;\n        if (!this.isValid()) {\n            return input != null ? this : NaN;\n        }\n        if (input != null) {\n            if (typeof input === 'string') {\n                input = offsetFromString(matchShortOffset, input);\n                if (input === null) {\n                    return this;\n                }\n            } else if (Math.abs(input) < 16 && !keepMinutes) {\n                input = input * 60;\n            }\n            if (!this._isUTC && keepLocalTime) {\n                localAdjust = getDateOffset(this);\n            }\n            this._offset = input;\n            this._isUTC = true;\n            if (localAdjust != null) {\n                this.add(localAdjust, 'm');\n            }\n            if (offset !== input) {\n                if (!keepLocalTime || this._changeInProgress) {\n                    addSubtract(\n                        this,\n                        createDuration(input - offset, 'm'),\n                        1,\n                        false\n                    );\n                } else if (!this._changeInProgress) {\n                    this._changeInProgress = true;\n                    hooks.updateOffset(this, true);\n                    this._changeInProgress = null;\n                }\n            }\n            return this;\n        } else {\n            return this._isUTC ? offset : getDateOffset(this);\n        }\n    }\n\n    function getSetZone(input, keepLocalTime) {\n        if (input != null) {\n            if (typeof input !== 'string') {\n                input = -input;\n            }\n\n            this.utcOffset(input, keepLocalTime);\n\n            return this;\n        } else {\n            return -this.utcOffset();\n        }\n    }\n\n    function setOffsetToUTC(keepLocalTime) {\n        return this.utcOffset(0, keepLocalTime);\n    }\n\n    function setOffsetToLocal(keepLocalTime) {\n        if (this._isUTC) {\n            this.utcOffset(0, keepLocalTime);\n            this._isUTC = false;\n\n            if (keepLocalTime) {\n                this.subtract(getDateOffset(this), 'm');\n            }\n        }\n        return this;\n    }\n\n    function setOffsetToParsedOffset() {\n        if (this._tzm != null) {\n            this.utcOffset(this._tzm, false, true);\n        } else if (typeof this._i === 'string') {\n            var tZone = offsetFromString(matchOffset, this._i);\n            if (tZone != null) {\n                this.utcOffset(tZone);\n            } else {\n                this.utcOffset(0, true);\n            }\n        }\n        return this;\n    }\n\n    function hasAlignedHourOffset(input) {\n        if (!this.isValid()) {\n            return false;\n        }\n        input = input ? createLocal(input).utcOffset() : 0;\n\n        return (this.utcOffset() - input) % 60 === 0;\n    }\n\n    function isDaylightSavingTime() {\n        return (\n            this.utcOffset() > this.clone().month(0).utcOffset() ||\n            this.utcOffset() > this.clone().month(5).utcOffset()\n        );\n    }\n\n    function isDaylightSavingTimeShifted() {\n        if (!isUndefined(this._isDSTShifted)) {\n            return this._isDSTShifted;\n        }\n\n        var c = {},\n            other;\n\n        copyConfig(c, this);\n        c = prepareConfig(c);\n\n        if (c._a) {\n            other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n            this._isDSTShifted =\n                this.isValid() && compareArrays(c._a, other.toArray()) > 0;\n        } else {\n            this._isDSTShifted = false;\n        }\n\n        return this._isDSTShifted;\n    }\n\n    function isLocal() {\n        return this.isValid() ? !this._isUTC : false;\n    }\n\n    function isUtcOffset() {\n        return this.isValid() ? this._isUTC : false;\n    }\n\n    function isUtc() {\n        return this.isValid() ? this._isUTC && this._offset === 0 : false;\n    }\n\n    // ASP.NET json date format regex\n    var aspNetRegex = /^(-|\\+)?(?:(\\d*)[. ])?(\\d+):(\\d+)(?::(\\d+)(\\.\\d*)?)?$/,\n        // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n        // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n        // and further modified to allow for strings containing both week and day\n        isoRegex = /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n    function createDuration(input, key) {\n        var duration = input,\n            // matching against regexp is expensive, do it on demand\n            match = null,\n            sign,\n            ret,\n            diffRes;\n\n        if (isDuration(input)) {\n            duration = {\n                ms: input._milliseconds,\n                d: input._days,\n                M: input._months,\n            };\n        } else if (isNumber(input) || !isNaN(+input)) {\n            duration = {};\n            if (key) {\n                duration[key] = +input;\n            } else {\n                duration.milliseconds = +input;\n            }\n        } else if ((match = aspNetRegex.exec(input))) {\n            sign = match[1] === '-' ? -1 : 1;\n            duration = {\n                y: 0,\n                d: toInt(match[DATE]) * sign,\n                h: toInt(match[HOUR]) * sign,\n                m: toInt(match[MINUTE]) * sign,\n                s: toInt(match[SECOND]) * sign,\n                ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match\n            };\n        } else if ((match = isoRegex.exec(input))) {\n            sign = match[1] === '-' ? -1 : 1;\n            duration = {\n                y: parseIso(match[2], sign),\n                M: parseIso(match[3], sign),\n                w: parseIso(match[4], sign),\n                d: parseIso(match[5], sign),\n                h: parseIso(match[6], sign),\n                m: parseIso(match[7], sign),\n                s: parseIso(match[8], sign),\n            };\n        } else if (duration == null) {\n            // checks for null or undefined\n            duration = {};\n        } else if (\n            typeof duration === 'object' &&\n            ('from' in duration || 'to' in duration)\n        ) {\n            diffRes = momentsDifference(\n                createLocal(duration.from),\n                createLocal(duration.to)\n            );\n\n            duration = {};\n            duration.ms = diffRes.milliseconds;\n            duration.M = diffRes.months;\n        }\n\n        ret = new Duration(duration);\n\n        if (isDuration(input) && hasOwnProp(input, '_locale')) {\n            ret._locale = input._locale;\n        }\n\n        if (isDuration(input) && hasOwnProp(input, '_isValid')) {\n            ret._isValid = input._isValid;\n        }\n\n        return ret;\n    }\n\n    createDuration.fn = Duration.prototype;\n    createDuration.invalid = createInvalid$1;\n\n    function parseIso(inp, sign) {\n        // We'd normally use ~~inp for this, but unfortunately it also\n        // converts floats to ints.\n        // inp may be undefined, so careful calling replace on it.\n        var res = inp && parseFloat(inp.replace(',', '.'));\n        // apply sign while we're at it\n        return (isNaN(res) ? 0 : res) * sign;\n    }\n\n    function positiveMomentsDifference(base, other) {\n        var res = {};\n\n        res.months =\n            other.month() - base.month() + (other.year() - base.year()) * 12;\n        if (base.clone().add(res.months, 'M').isAfter(other)) {\n            --res.months;\n        }\n\n        res.milliseconds = +other - +base.clone().add(res.months, 'M');\n\n        return res;\n    }\n\n    function momentsDifference(base, other) {\n        var res;\n        if (!(base.isValid() && other.isValid())) {\n            return { milliseconds: 0, months: 0 };\n        }\n\n        other = cloneWithOffset(other, base);\n        if (base.isBefore(other)) {\n            res = positiveMomentsDifference(base, other);\n        } else {\n            res = positiveMomentsDifference(other, base);\n            res.milliseconds = -res.milliseconds;\n            res.months = -res.months;\n        }\n\n        return res;\n    }\n\n    // TODO: remove 'name' arg after deprecation is removed\n    function createAdder(direction, name) {\n        return function (val, period) {\n            var dur, tmp;\n            //invert the arguments, but complain about it\n            if (period !== null && !isNaN(+period)) {\n                deprecateSimple(\n                    name,\n                    'moment().' +\n                        name +\n                        '(period, number) is deprecated. Please use moment().' +\n                        name +\n                        '(number, period). ' +\n                        'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'\n                );\n                tmp = val;\n                val = period;\n                period = tmp;\n            }\n\n            dur = createDuration(val, period);\n            addSubtract(this, dur, direction);\n            return this;\n        };\n    }\n\n    function addSubtract(mom, duration, isAdding, updateOffset) {\n        var milliseconds = duration._milliseconds,\n            days = absRound(duration._days),\n            months = absRound(duration._months);\n\n        if (!mom.isValid()) {\n            // No op\n            return;\n        }\n\n        updateOffset = updateOffset == null ? true : updateOffset;\n\n        if (months) {\n            setMonth(mom, get(mom, 'Month') + months * isAdding);\n        }\n        if (days) {\n            set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n        }\n        if (milliseconds) {\n            mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n        }\n        if (updateOffset) {\n            hooks.updateOffset(mom, days || months);\n        }\n    }\n\n    var add = createAdder(1, 'add'),\n        subtract = createAdder(-1, 'subtract');\n\n    function isString(input) {\n        return typeof input === 'string' || input instanceof String;\n    }\n\n    // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined\n    function isMomentInput(input) {\n        return (\n            isMoment(input) ||\n            isDate(input) ||\n            isString(input) ||\n            isNumber(input) ||\n            isNumberOrStringArray(input) ||\n            isMomentInputObject(input) ||\n            input === null ||\n            input === undefined\n        );\n    }\n\n    function isMomentInputObject(input) {\n        var objectTest = isObject(input) && !isObjectEmpty(input),\n            propertyTest = false,\n            properties = [\n                'years',\n                'year',\n                'y',\n                'months',\n                'month',\n                'M',\n                'days',\n                'day',\n                'd',\n                'dates',\n                'date',\n                'D',\n                'hours',\n                'hour',\n                'h',\n                'minutes',\n                'minute',\n                'm',\n                'seconds',\n                'second',\n                's',\n                'milliseconds',\n                'millisecond',\n                'ms',\n            ],\n            i,\n            property;\n\n        for (i = 0; i < properties.length; i += 1) {\n            property = properties[i];\n            propertyTest = propertyTest || hasOwnProp(input, property);\n        }\n\n        return objectTest && propertyTest;\n    }\n\n    function isNumberOrStringArray(input) {\n        var arrayTest = isArray(input),\n            dataTypeTest = false;\n        if (arrayTest) {\n            dataTypeTest =\n                input.filter(function (item) {\n                    return !isNumber(item) && isString(input);\n                }).length === 0;\n        }\n        return arrayTest && dataTypeTest;\n    }\n\n    function isCalendarSpec(input) {\n        var objectTest = isObject(input) && !isObjectEmpty(input),\n            propertyTest = false,\n            properties = [\n                'sameDay',\n                'nextDay',\n                'lastDay',\n                'nextWeek',\n                'lastWeek',\n                'sameElse',\n            ],\n            i,\n            property;\n\n        for (i = 0; i < properties.length; i += 1) {\n            property = properties[i];\n            propertyTest = propertyTest || hasOwnProp(input, property);\n        }\n\n        return objectTest && propertyTest;\n    }\n\n    function getCalendarFormat(myMoment, now) {\n        var diff = myMoment.diff(now, 'days', true);\n        return diff < -6\n            ? 'sameElse'\n            : diff < -1\n            ? 'lastWeek'\n            : diff < 0\n            ? 'lastDay'\n            : diff < 1\n            ? 'sameDay'\n            : diff < 2\n            ? 'nextDay'\n            : diff < 7\n            ? 'nextWeek'\n            : 'sameElse';\n    }\n\n    function calendar$1(time, formats) {\n        // Support for single parameter, formats only overload to the calendar function\n        if (arguments.length === 1) {\n            if (!arguments[0]) {\n                time = undefined;\n                formats = undefined;\n            } else if (isMomentInput(arguments[0])) {\n                time = arguments[0];\n                formats = undefined;\n            } else if (isCalendarSpec(arguments[0])) {\n                formats = arguments[0];\n                time = undefined;\n            }\n        }\n        // We want to compare the start of today, vs this.\n        // Getting start-of-today depends on whether we're local/utc/offset or not.\n        var now = time || createLocal(),\n            sod = cloneWithOffset(now, this).startOf('day'),\n            format = hooks.calendarFormat(this, sod) || 'sameElse',\n            output =\n                formats &&\n                (isFunction(formats[format])\n                    ? formats[format].call(this, now)\n                    : formats[format]);\n\n        return this.format(\n            output || this.localeData().calendar(format, this, createLocal(now))\n        );\n    }\n\n    function clone() {\n        return new Moment(this);\n    }\n\n    function isAfter(input, units) {\n        var localInput = isMoment(input) ? input : createLocal(input);\n        if (!(this.isValid() && localInput.isValid())) {\n            return false;\n        }\n        units = normalizeUnits(units) || 'millisecond';\n        if (units === 'millisecond') {\n            return this.valueOf() > localInput.valueOf();\n        } else {\n            return localInput.valueOf() < this.clone().startOf(units).valueOf();\n        }\n    }\n\n    function isBefore(input, units) {\n        var localInput = isMoment(input) ? input : createLocal(input);\n        if (!(this.isValid() && localInput.isValid())) {\n            return false;\n        }\n        units = normalizeUnits(units) || 'millisecond';\n        if (units === 'millisecond') {\n            return this.valueOf() < localInput.valueOf();\n        } else {\n            return this.clone().endOf(units).valueOf() < localInput.valueOf();\n        }\n    }\n\n    function isBetween(from, to, units, inclusivity) {\n        var localFrom = isMoment(from) ? from : createLocal(from),\n            localTo = isMoment(to) ? to : createLocal(to);\n        if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n            return false;\n        }\n        inclusivity = inclusivity || '()';\n        return (\n            (inclusivity[0] === '('\n                ? this.isAfter(localFrom, units)\n                : !this.isBefore(localFrom, units)) &&\n            (inclusivity[1] === ')'\n                ? this.isBefore(localTo, units)\n                : !this.isAfter(localTo, units))\n        );\n    }\n\n    function isSame(input, units) {\n        var localInput = isMoment(input) ? input : createLocal(input),\n            inputMs;\n        if (!(this.isValid() && localInput.isValid())) {\n            return false;\n        }\n        units = normalizeUnits(units) || 'millisecond';\n        if (units === 'millisecond') {\n            return this.valueOf() === localInput.valueOf();\n        } else {\n            inputMs = localInput.valueOf();\n            return (\n                this.clone().startOf(units).valueOf() <= inputMs &&\n                inputMs <= this.clone().endOf(units).valueOf()\n            );\n        }\n    }\n\n    function isSameOrAfter(input, units) {\n        return this.isSame(input, units) || this.isAfter(input, units);\n    }\n\n    function isSameOrBefore(input, units) {\n        return this.isSame(input, units) || this.isBefore(input, units);\n    }\n\n    function diff(input, units, asFloat) {\n        var that, zoneDelta, output;\n\n        if (!this.isValid()) {\n            return NaN;\n        }\n\n        that = cloneWithOffset(input, this);\n\n        if (!that.isValid()) {\n            return NaN;\n        }\n\n        zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n        units = normalizeUnits(units);\n\n        switch (units) {\n            case 'year':\n                output = monthDiff(this, that) / 12;\n                break;\n            case 'month':\n                output = monthDiff(this, that);\n                break;\n            case 'quarter':\n                output = monthDiff(this, that) / 3;\n                break;\n            case 'second':\n                output = (this - that) / 1e3;\n                break; // 1000\n            case 'minute':\n                output = (this - that) / 6e4;\n                break; // 1000 * 60\n            case 'hour':\n                output = (this - that) / 36e5;\n                break; // 1000 * 60 * 60\n            case 'day':\n                output = (this - that - zoneDelta) / 864e5;\n                break; // 1000 * 60 * 60 * 24, negate dst\n            case 'week':\n                output = (this - that - zoneDelta) / 6048e5;\n                break; // 1000 * 60 * 60 * 24 * 7, negate dst\n            default:\n                output = this - that;\n        }\n\n        return asFloat ? output : absFloor(output);\n    }\n\n    function monthDiff(a, b) {\n        if (a.date() < b.date()) {\n            // end-of-month calculations work correct when the start month has more\n            // days than the end month.\n            return -monthDiff(b, a);\n        }\n        // difference in months\n        var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),\n            // b is in (anchor - 1 month, anchor + 1 month)\n            anchor = a.clone().add(wholeMonthDiff, 'months'),\n            anchor2,\n            adjust;\n\n        if (b - anchor < 0) {\n            anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n            // linear across the month\n            adjust = (b - anchor) / (anchor - anchor2);\n        } else {\n            anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n            // linear across the month\n            adjust = (b - anchor) / (anchor2 - anchor);\n        }\n\n        //check for negative zero, return zero if negative zero\n        return -(wholeMonthDiff + adjust) || 0;\n    }\n\n    hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n    hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n    function toString() {\n        return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n    }\n\n    function toISOString(keepOffset) {\n        if (!this.isValid()) {\n            return null;\n        }\n        var utc = keepOffset !== true,\n            m = utc ? this.clone().utc() : this;\n        if (m.year() < 0 || m.year() > 9999) {\n            return formatMoment(\n                m,\n                utc\n                    ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'\n                    : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'\n            );\n        }\n        if (isFunction(Date.prototype.toISOString)) {\n            // native implementation is ~50x faster, use it when we can\n            if (utc) {\n                return this.toDate().toISOString();\n            } else {\n                return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)\n                    .toISOString()\n                    .replace('Z', formatMoment(m, 'Z'));\n            }\n        }\n        return formatMoment(\n            m,\n            utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'\n        );\n    }\n\n    /**\n     * Return a human readable representation of a moment that can\n     * also be evaluated to get a new moment which is the same\n     *\n     * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n     */\n    function inspect() {\n        if (!this.isValid()) {\n            return 'moment.invalid(/* ' + this._i + ' */)';\n        }\n        var func = 'moment',\n            zone = '',\n            prefix,\n            year,\n            datetime,\n            suffix;\n        if (!this.isLocal()) {\n            func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n            zone = 'Z';\n        }\n        prefix = '[' + func + '(\"]';\n        year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';\n        datetime = '-MM-DD[T]HH:mm:ss.SSS';\n        suffix = zone + '[\")]';\n\n        return this.format(prefix + year + datetime + suffix);\n    }\n\n    function format(inputString) {\n        if (!inputString) {\n            inputString = this.isUtc()\n                ? hooks.defaultFormatUtc\n                : hooks.defaultFormat;\n        }\n        var output = formatMoment(this, inputString);\n        return this.localeData().postformat(output);\n    }\n\n    function from(time, withoutSuffix) {\n        if (\n            this.isValid() &&\n            ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n        ) {\n            return createDuration({ to: this, from: time })\n                .locale(this.locale())\n                .humanize(!withoutSuffix);\n        } else {\n            return this.localeData().invalidDate();\n        }\n    }\n\n    function fromNow(withoutSuffix) {\n        return this.from(createLocal(), withoutSuffix);\n    }\n\n    function to(time, withoutSuffix) {\n        if (\n            this.isValid() &&\n            ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n        ) {\n            return createDuration({ from: this, to: time })\n                .locale(this.locale())\n                .humanize(!withoutSuffix);\n        } else {\n            return this.localeData().invalidDate();\n        }\n    }\n\n    function toNow(withoutSuffix) {\n        return this.to(createLocal(), withoutSuffix);\n    }\n\n    // If passed a locale key, it will set the locale for this\n    // instance.  Otherwise, it will return the locale configuration\n    // variables for this instance.\n    function locale(key) {\n        var newLocaleData;\n\n        if (key === undefined) {\n            return this._locale._abbr;\n        } else {\n            newLocaleData = getLocale(key);\n            if (newLocaleData != null) {\n                this._locale = newLocaleData;\n            }\n            return this;\n        }\n    }\n\n    var lang = deprecate(\n        'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n        function (key) {\n            if (key === undefined) {\n                return this.localeData();\n            } else {\n                return this.locale(key);\n            }\n        }\n    );\n\n    function localeData() {\n        return this._locale;\n    }\n\n    var MS_PER_SECOND = 1000,\n        MS_PER_MINUTE = 60 * MS_PER_SECOND,\n        MS_PER_HOUR = 60 * MS_PER_MINUTE,\n        MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\n    // actual modulo - handles negative numbers (for dates before 1970):\n    function mod$1(dividend, divisor) {\n        return ((dividend % divisor) + divisor) % divisor;\n    }\n\n    function localStartOfDate(y, m, d) {\n        // the date constructor remaps years 0-99 to 1900-1999\n        if (y < 100 && y >= 0) {\n            // preserve leap years using a full 400 year cycle, then reset\n            return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n        } else {\n            return new Date(y, m, d).valueOf();\n        }\n    }\n\n    function utcStartOfDate(y, m, d) {\n        // Date.UTC remaps years 0-99 to 1900-1999\n        if (y < 100 && y >= 0) {\n            // preserve leap years using a full 400 year cycle, then reset\n            return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n        } else {\n            return Date.UTC(y, m, d);\n        }\n    }\n\n    function startOf(units) {\n        var time, startOfDate;\n        units = normalizeUnits(units);\n        if (units === undefined || units === 'millisecond' || !this.isValid()) {\n            return this;\n        }\n\n        startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n        switch (units) {\n            case 'year':\n                time = startOfDate(this.year(), 0, 1);\n                break;\n            case 'quarter':\n                time = startOfDate(\n                    this.year(),\n                    this.month() - (this.month() % 3),\n                    1\n                );\n                break;\n            case 'month':\n                time = startOfDate(this.year(), this.month(), 1);\n                break;\n            case 'week':\n                time = startOfDate(\n                    this.year(),\n                    this.month(),\n                    this.date() - this.weekday()\n                );\n                break;\n            case 'isoWeek':\n                time = startOfDate(\n                    this.year(),\n                    this.month(),\n                    this.date() - (this.isoWeekday() - 1)\n                );\n                break;\n            case 'day':\n            case 'date':\n                time = startOfDate(this.year(), this.month(), this.date());\n                break;\n            case 'hour':\n                time = this._d.valueOf();\n                time -= mod$1(\n                    time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n                    MS_PER_HOUR\n                );\n                break;\n            case 'minute':\n                time = this._d.valueOf();\n                time -= mod$1(time, MS_PER_MINUTE);\n                break;\n            case 'second':\n                time = this._d.valueOf();\n                time -= mod$1(time, MS_PER_SECOND);\n                break;\n        }\n\n        this._d.setTime(time);\n        hooks.updateOffset(this, true);\n        return this;\n    }\n\n    function endOf(units) {\n        var time, startOfDate;\n        units = normalizeUnits(units);\n        if (units === undefined || units === 'millisecond' || !this.isValid()) {\n            return this;\n        }\n\n        startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n        switch (units) {\n            case 'year':\n                time = startOfDate(this.year() + 1, 0, 1) - 1;\n                break;\n            case 'quarter':\n                time =\n                    startOfDate(\n                        this.year(),\n                        this.month() - (this.month() % 3) + 3,\n                        1\n                    ) - 1;\n                break;\n            case 'month':\n                time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n                break;\n            case 'week':\n                time =\n                    startOfDate(\n                        this.year(),\n                        this.month(),\n                        this.date() - this.weekday() + 7\n                    ) - 1;\n                break;\n            case 'isoWeek':\n                time =\n                    startOfDate(\n                        this.year(),\n                        this.month(),\n                        this.date() - (this.isoWeekday() - 1) + 7\n                    ) - 1;\n                break;\n            case 'day':\n            case 'date':\n                time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n                break;\n            case 'hour':\n                time = this._d.valueOf();\n                time +=\n                    MS_PER_HOUR -\n                    mod$1(\n                        time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n                        MS_PER_HOUR\n                    ) -\n                    1;\n                break;\n            case 'minute':\n                time = this._d.valueOf();\n                time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n                break;\n            case 'second':\n                time = this._d.valueOf();\n                time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n                break;\n        }\n\n        this._d.setTime(time);\n        hooks.updateOffset(this, true);\n        return this;\n    }\n\n    function valueOf() {\n        return this._d.valueOf() - (this._offset || 0) * 60000;\n    }\n\n    function unix() {\n        return Math.floor(this.valueOf() / 1000);\n    }\n\n    function toDate() {\n        return new Date(this.valueOf());\n    }\n\n    function toArray() {\n        var m = this;\n        return [\n            m.year(),\n            m.month(),\n            m.date(),\n            m.hour(),\n            m.minute(),\n            m.second(),\n            m.millisecond(),\n        ];\n    }\n\n    function toObject() {\n        var m = this;\n        return {\n            years: m.year(),\n            months: m.month(),\n            date: m.date(),\n            hours: m.hours(),\n            minutes: m.minutes(),\n            seconds: m.seconds(),\n            milliseconds: m.milliseconds(),\n        };\n    }\n\n    function toJSON() {\n        // new Date(NaN).toJSON() === null\n        return this.isValid() ? this.toISOString() : null;\n    }\n\n    function isValid$2() {\n        return isValid(this);\n    }\n\n    function parsingFlags() {\n        return extend({}, getParsingFlags(this));\n    }\n\n    function invalidAt() {\n        return getParsingFlags(this).overflow;\n    }\n\n    function creationData() {\n        return {\n            input: this._i,\n            format: this._f,\n            locale: this._locale,\n            isUTC: this._isUTC,\n            strict: this._strict,\n        };\n    }\n\n    addFormatToken('N', 0, 0, 'eraAbbr');\n    addFormatToken('NN', 0, 0, 'eraAbbr');\n    addFormatToken('NNN', 0, 0, 'eraAbbr');\n    addFormatToken('NNNN', 0, 0, 'eraName');\n    addFormatToken('NNNNN', 0, 0, 'eraNarrow');\n\n    addFormatToken('y', ['y', 1], 'yo', 'eraYear');\n    addFormatToken('y', ['yy', 2], 0, 'eraYear');\n    addFormatToken('y', ['yyy', 3], 0, 'eraYear');\n    addFormatToken('y', ['yyyy', 4], 0, 'eraYear');\n\n    addRegexToken('N', matchEraAbbr);\n    addRegexToken('NN', matchEraAbbr);\n    addRegexToken('NNN', matchEraAbbr);\n    addRegexToken('NNNN', matchEraName);\n    addRegexToken('NNNNN', matchEraNarrow);\n\n    addParseToken(['N', 'NN', 'NNN', 'NNNN', 'NNNNN'], function (\n        input,\n        array,\n        config,\n        token\n    ) {\n        var era = config._locale.erasParse(input, token, config._strict);\n        if (era) {\n            getParsingFlags(config).era = era;\n        } else {\n            getParsingFlags(config).invalidEra = input;\n        }\n    });\n\n    addRegexToken('y', matchUnsigned);\n    addRegexToken('yy', matchUnsigned);\n    addRegexToken('yyy', matchUnsigned);\n    addRegexToken('yyyy', matchUnsigned);\n    addRegexToken('yo', matchEraYearOrdinal);\n\n    addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);\n    addParseToken(['yo'], function (input, array, config, token) {\n        var match;\n        if (config._locale._eraYearOrdinalRegex) {\n            match = input.match(config._locale._eraYearOrdinalRegex);\n        }\n\n        if (config._locale.eraYearOrdinalParse) {\n            array[YEAR] = config._locale.eraYearOrdinalParse(input, match);\n        } else {\n            array[YEAR] = parseInt(input, 10);\n        }\n    });\n\n    function localeEras(m, format) {\n        var i,\n            l,\n            date,\n            eras = this._eras || getLocale('en')._eras;\n        for (i = 0, l = eras.length; i < l; ++i) {\n            switch (typeof eras[i].since) {\n                case 'string':\n                    // truncate time\n                    date = hooks(eras[i].since).startOf('day');\n                    eras[i].since = date.valueOf();\n                    break;\n            }\n\n            switch (typeof eras[i].until) {\n                case 'undefined':\n                    eras[i].until = +Infinity;\n                    break;\n                case 'string':\n                    // truncate time\n                    date = hooks(eras[i].until).startOf('day').valueOf();\n                    eras[i].until = date.valueOf();\n                    break;\n            }\n        }\n        return eras;\n    }\n\n    function localeErasParse(eraName, format, strict) {\n        var i,\n            l,\n            eras = this.eras(),\n            name,\n            abbr,\n            narrow;\n        eraName = eraName.toUpperCase();\n\n        for (i = 0, l = eras.length; i < l; ++i) {\n            name = eras[i].name.toUpperCase();\n            abbr = eras[i].abbr.toUpperCase();\n            narrow = eras[i].narrow.toUpperCase();\n\n            if (strict) {\n                switch (format) {\n                    case 'N':\n                    case 'NN':\n                    case 'NNN':\n                        if (abbr === eraName) {\n                            return eras[i];\n                        }\n                        break;\n\n                    case 'NNNN':\n                        if (name === eraName) {\n                            return eras[i];\n                        }\n                        break;\n\n                    case 'NNNNN':\n                        if (narrow === eraName) {\n                            return eras[i];\n                        }\n                        break;\n                }\n            } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {\n                return eras[i];\n            }\n        }\n    }\n\n    function localeErasConvertYear(era, year) {\n        var dir = era.since <= era.until ? +1 : -1;\n        if (year === undefined) {\n            return hooks(era.since).year();\n        } else {\n            return hooks(era.since).year() + (year - era.offset) * dir;\n        }\n    }\n\n    function getEraName() {\n        var i,\n            l,\n            val,\n            eras = this.localeData().eras();\n        for (i = 0, l = eras.length; i < l; ++i) {\n            // truncate time\n            val = this.clone().startOf('day').valueOf();\n\n            if (eras[i].since <= val && val <= eras[i].until) {\n                return eras[i].name;\n            }\n            if (eras[i].until <= val && val <= eras[i].since) {\n                return eras[i].name;\n            }\n        }\n\n        return '';\n    }\n\n    function getEraNarrow() {\n        var i,\n            l,\n            val,\n            eras = this.localeData().eras();\n        for (i = 0, l = eras.length; i < l; ++i) {\n            // truncate time\n            val = this.clone().startOf('day').valueOf();\n\n            if (eras[i].since <= val && val <= eras[i].until) {\n                return eras[i].narrow;\n            }\n            if (eras[i].until <= val && val <= eras[i].since) {\n                return eras[i].narrow;\n            }\n        }\n\n        return '';\n    }\n\n    function getEraAbbr() {\n        var i,\n            l,\n            val,\n            eras = this.localeData().eras();\n        for (i = 0, l = eras.length; i < l; ++i) {\n            // truncate time\n            val = this.clone().startOf('day').valueOf();\n\n            if (eras[i].since <= val && val <= eras[i].until) {\n                return eras[i].abbr;\n            }\n            if (eras[i].until <= val && val <= eras[i].since) {\n                return eras[i].abbr;\n            }\n        }\n\n        return '';\n    }\n\n    function getEraYear() {\n        var i,\n            l,\n            dir,\n            val,\n            eras = this.localeData().eras();\n        for (i = 0, l = eras.length; i < l; ++i) {\n            dir = eras[i].since <= eras[i].until ? +1 : -1;\n\n            // truncate time\n            val = this.clone().startOf('day').valueOf();\n\n            if (\n                (eras[i].since <= val && val <= eras[i].until) ||\n                (eras[i].until <= val && val <= eras[i].since)\n            ) {\n                return (\n                    (this.year() - hooks(eras[i].since).year()) * dir +\n                    eras[i].offset\n                );\n            }\n        }\n\n        return this.year();\n    }\n\n    function erasNameRegex(isStrict) {\n        if (!hasOwnProp(this, '_erasNameRegex')) {\n            computeErasParse.call(this);\n        }\n        return isStrict ? this._erasNameRegex : this._erasRegex;\n    }\n\n    function erasAbbrRegex(isStrict) {\n        if (!hasOwnProp(this, '_erasAbbrRegex')) {\n            computeErasParse.call(this);\n        }\n        return isStrict ? this._erasAbbrRegex : this._erasRegex;\n    }\n\n    function erasNarrowRegex(isStrict) {\n        if (!hasOwnProp(this, '_erasNarrowRegex')) {\n            computeErasParse.call(this);\n        }\n        return isStrict ? this._erasNarrowRegex : this._erasRegex;\n    }\n\n    function matchEraAbbr(isStrict, locale) {\n        return locale.erasAbbrRegex(isStrict);\n    }\n\n    function matchEraName(isStrict, locale) {\n        return locale.erasNameRegex(isStrict);\n    }\n\n    function matchEraNarrow(isStrict, locale) {\n        return locale.erasNarrowRegex(isStrict);\n    }\n\n    function matchEraYearOrdinal(isStrict, locale) {\n        return locale._eraYearOrdinalRegex || matchUnsigned;\n    }\n\n    function computeErasParse() {\n        var abbrPieces = [],\n            namePieces = [],\n            narrowPieces = [],\n            mixedPieces = [],\n            i,\n            l,\n            eras = this.eras();\n\n        for (i = 0, l = eras.length; i < l; ++i) {\n            namePieces.push(regexEscape(eras[i].name));\n            abbrPieces.push(regexEscape(eras[i].abbr));\n            narrowPieces.push(regexEscape(eras[i].narrow));\n\n            mixedPieces.push(regexEscape(eras[i].name));\n            mixedPieces.push(regexEscape(eras[i].abbr));\n            mixedPieces.push(regexEscape(eras[i].narrow));\n        }\n\n        this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n        this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');\n        this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');\n        this._erasNarrowRegex = new RegExp(\n            '^(' + narrowPieces.join('|') + ')',\n            'i'\n        );\n    }\n\n    // FORMATTING\n\n    addFormatToken(0, ['gg', 2], 0, function () {\n        return this.weekYear() % 100;\n    });\n\n    addFormatToken(0, ['GG', 2], 0, function () {\n        return this.isoWeekYear() % 100;\n    });\n\n    function addWeekYearFormatToken(token, getter) {\n        addFormatToken(0, [token, token.length], 0, getter);\n    }\n\n    addWeekYearFormatToken('gggg', 'weekYear');\n    addWeekYearFormatToken('ggggg', 'weekYear');\n    addWeekYearFormatToken('GGGG', 'isoWeekYear');\n    addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n    // ALIASES\n\n    addUnitAlias('weekYear', 'gg');\n    addUnitAlias('isoWeekYear', 'GG');\n\n    // PRIORITY\n\n    addUnitPriority('weekYear', 1);\n    addUnitPriority('isoWeekYear', 1);\n\n    // PARSING\n\n    addRegexToken('G', matchSigned);\n    addRegexToken('g', matchSigned);\n    addRegexToken('GG', match1to2, match2);\n    addRegexToken('gg', match1to2, match2);\n    addRegexToken('GGGG', match1to4, match4);\n    addRegexToken('gggg', match1to4, match4);\n    addRegexToken('GGGGG', match1to6, match6);\n    addRegexToken('ggggg', match1to6, match6);\n\n    addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (\n        input,\n        week,\n        config,\n        token\n    ) {\n        week[token.substr(0, 2)] = toInt(input);\n    });\n\n    addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n        week[token] = hooks.parseTwoDigitYear(input);\n    });\n\n    // MOMENTS\n\n    function getSetWeekYear(input) {\n        return getSetWeekYearHelper.call(\n            this,\n            input,\n            this.week(),\n            this.weekday(),\n            this.localeData()._week.dow,\n            this.localeData()._week.doy\n        );\n    }\n\n    function getSetISOWeekYear(input) {\n        return getSetWeekYearHelper.call(\n            this,\n            input,\n            this.isoWeek(),\n            this.isoWeekday(),\n            1,\n            4\n        );\n    }\n\n    function getISOWeeksInYear() {\n        return weeksInYear(this.year(), 1, 4);\n    }\n\n    function getISOWeeksInISOWeekYear() {\n        return weeksInYear(this.isoWeekYear(), 1, 4);\n    }\n\n    function getWeeksInYear() {\n        var weekInfo = this.localeData()._week;\n        return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n    }\n\n    function getWeeksInWeekYear() {\n        var weekInfo = this.localeData()._week;\n        return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);\n    }\n\n    function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n        var weeksTarget;\n        if (input == null) {\n            return weekOfYear(this, dow, doy).year;\n        } else {\n            weeksTarget = weeksInYear(input, dow, doy);\n            if (week > weeksTarget) {\n                week = weeksTarget;\n            }\n            return setWeekAll.call(this, input, week, weekday, dow, doy);\n        }\n    }\n\n    function setWeekAll(weekYear, week, weekday, dow, doy) {\n        var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n            date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n        this.year(date.getUTCFullYear());\n        this.month(date.getUTCMonth());\n        this.date(date.getUTCDate());\n        return this;\n    }\n\n    // FORMATTING\n\n    addFormatToken('Q', 0, 'Qo', 'quarter');\n\n    // ALIASES\n\n    addUnitAlias('quarter', 'Q');\n\n    // PRIORITY\n\n    addUnitPriority('quarter', 7);\n\n    // PARSING\n\n    addRegexToken('Q', match1);\n    addParseToken('Q', function (input, array) {\n        array[MONTH] = (toInt(input) - 1) * 3;\n    });\n\n    // MOMENTS\n\n    function getSetQuarter(input) {\n        return input == null\n            ? Math.ceil((this.month() + 1) / 3)\n            : this.month((input - 1) * 3 + (this.month() % 3));\n    }\n\n    // FORMATTING\n\n    addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n    // ALIASES\n\n    addUnitAlias('date', 'D');\n\n    // PRIORITY\n    addUnitPriority('date', 9);\n\n    // PARSING\n\n    addRegexToken('D', match1to2);\n    addRegexToken('DD', match1to2, match2);\n    addRegexToken('Do', function (isStrict, locale) {\n        // TODO: Remove \"ordinalParse\" fallback in next major release.\n        return isStrict\n            ? locale._dayOfMonthOrdinalParse || locale._ordinalParse\n            : locale._dayOfMonthOrdinalParseLenient;\n    });\n\n    addParseToken(['D', 'DD'], DATE);\n    addParseToken('Do', function (input, array) {\n        array[DATE] = toInt(input.match(match1to2)[0]);\n    });\n\n    // MOMENTS\n\n    var getSetDayOfMonth = makeGetSet('Date', true);\n\n    // FORMATTING\n\n    addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n    // ALIASES\n\n    addUnitAlias('dayOfYear', 'DDD');\n\n    // PRIORITY\n    addUnitPriority('dayOfYear', 4);\n\n    // PARSING\n\n    addRegexToken('DDD', match1to3);\n    addRegexToken('DDDD', match3);\n    addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n        config._dayOfYear = toInt(input);\n    });\n\n    // HELPERS\n\n    // MOMENTS\n\n    function getSetDayOfYear(input) {\n        var dayOfYear =\n            Math.round(\n                (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5\n            ) + 1;\n        return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');\n    }\n\n    // FORMATTING\n\n    addFormatToken('m', ['mm', 2], 0, 'minute');\n\n    // ALIASES\n\n    addUnitAlias('minute', 'm');\n\n    // PRIORITY\n\n    addUnitPriority('minute', 14);\n\n    // PARSING\n\n    addRegexToken('m', match1to2);\n    addRegexToken('mm', match1to2, match2);\n    addParseToken(['m', 'mm'], MINUTE);\n\n    // MOMENTS\n\n    var getSetMinute = makeGetSet('Minutes', false);\n\n    // FORMATTING\n\n    addFormatToken('s', ['ss', 2], 0, 'second');\n\n    // ALIASES\n\n    addUnitAlias('second', 's');\n\n    // PRIORITY\n\n    addUnitPriority('second', 15);\n\n    // PARSING\n\n    addRegexToken('s', match1to2);\n    addRegexToken('ss', match1to2, match2);\n    addParseToken(['s', 'ss'], SECOND);\n\n    // MOMENTS\n\n    var getSetSecond = makeGetSet('Seconds', false);\n\n    // FORMATTING\n\n    addFormatToken('S', 0, 0, function () {\n        return ~~(this.millisecond() / 100);\n    });\n\n    addFormatToken(0, ['SS', 2], 0, function () {\n        return ~~(this.millisecond() / 10);\n    });\n\n    addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n    addFormatToken(0, ['SSSS', 4], 0, function () {\n        return this.millisecond() * 10;\n    });\n    addFormatToken(0, ['SSSSS', 5], 0, function () {\n        return this.millisecond() * 100;\n    });\n    addFormatToken(0, ['SSSSSS', 6], 0, function () {\n        return this.millisecond() * 1000;\n    });\n    addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n        return this.millisecond() * 10000;\n    });\n    addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n        return this.millisecond() * 100000;\n    });\n    addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n        return this.millisecond() * 1000000;\n    });\n\n    // ALIASES\n\n    addUnitAlias('millisecond', 'ms');\n\n    // PRIORITY\n\n    addUnitPriority('millisecond', 16);\n\n    // PARSING\n\n    addRegexToken('S', match1to3, match1);\n    addRegexToken('SS', match1to3, match2);\n    addRegexToken('SSS', match1to3, match3);\n\n    var token, getSetMillisecond;\n    for (token = 'SSSS'; token.length <= 9; token += 'S') {\n        addRegexToken(token, matchUnsigned);\n    }\n\n    function parseMs(input, array) {\n        array[MILLISECOND] = toInt(('0.' + input) * 1000);\n    }\n\n    for (token = 'S'; token.length <= 9; token += 'S') {\n        addParseToken(token, parseMs);\n    }\n\n    getSetMillisecond = makeGetSet('Milliseconds', false);\n\n    // FORMATTING\n\n    addFormatToken('z', 0, 0, 'zoneAbbr');\n    addFormatToken('zz', 0, 0, 'zoneName');\n\n    // MOMENTS\n\n    function getZoneAbbr() {\n        return this._isUTC ? 'UTC' : '';\n    }\n\n    function getZoneName() {\n        return this._isUTC ? 'Coordinated Universal Time' : '';\n    }\n\n    var proto = Moment.prototype;\n\n    proto.add = add;\n    proto.calendar = calendar$1;\n    proto.clone = clone;\n    proto.diff = diff;\n    proto.endOf = endOf;\n    proto.format = format;\n    proto.from = from;\n    proto.fromNow = fromNow;\n    proto.to = to;\n    proto.toNow = toNow;\n    proto.get = stringGet;\n    proto.invalidAt = invalidAt;\n    proto.isAfter = isAfter;\n    proto.isBefore = isBefore;\n    proto.isBetween = isBetween;\n    proto.isSame = isSame;\n    proto.isSameOrAfter = isSameOrAfter;\n    proto.isSameOrBefore = isSameOrBefore;\n    proto.isValid = isValid$2;\n    proto.lang = lang;\n    proto.locale = locale;\n    proto.localeData = localeData;\n    proto.max = prototypeMax;\n    proto.min = prototypeMin;\n    proto.parsingFlags = parsingFlags;\n    proto.set = stringSet;\n    proto.startOf = startOf;\n    proto.subtract = subtract;\n    proto.toArray = toArray;\n    proto.toObject = toObject;\n    proto.toDate = toDate;\n    proto.toISOString = toISOString;\n    proto.inspect = inspect;\n    if (typeof Symbol !== 'undefined' && Symbol.for != null) {\n        proto[Symbol.for('nodejs.util.inspect.custom')] = function () {\n            return 'Moment<' + this.format() + '>';\n        };\n    }\n    proto.toJSON = toJSON;\n    proto.toString = toString;\n    proto.unix = unix;\n    proto.valueOf = valueOf;\n    proto.creationData = creationData;\n    proto.eraName = getEraName;\n    proto.eraNarrow = getEraNarrow;\n    proto.eraAbbr = getEraAbbr;\n    proto.eraYear = getEraYear;\n    proto.year = getSetYear;\n    proto.isLeapYear = getIsLeapYear;\n    proto.weekYear = getSetWeekYear;\n    proto.isoWeekYear = getSetISOWeekYear;\n    proto.quarter = proto.quarters = getSetQuarter;\n    proto.month = getSetMonth;\n    proto.daysInMonth = getDaysInMonth;\n    proto.week = proto.weeks = getSetWeek;\n    proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n    proto.weeksInYear = getWeeksInYear;\n    proto.weeksInWeekYear = getWeeksInWeekYear;\n    proto.isoWeeksInYear = getISOWeeksInYear;\n    proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;\n    proto.date = getSetDayOfMonth;\n    proto.day = proto.days = getSetDayOfWeek;\n    proto.weekday = getSetLocaleDayOfWeek;\n    proto.isoWeekday = getSetISODayOfWeek;\n    proto.dayOfYear = getSetDayOfYear;\n    proto.hour = proto.hours = getSetHour;\n    proto.minute = proto.minutes = getSetMinute;\n    proto.second = proto.seconds = getSetSecond;\n    proto.millisecond = proto.milliseconds = getSetMillisecond;\n    proto.utcOffset = getSetOffset;\n    proto.utc = setOffsetToUTC;\n    proto.local = setOffsetToLocal;\n    proto.parseZone = setOffsetToParsedOffset;\n    proto.hasAlignedHourOffset = hasAlignedHourOffset;\n    proto.isDST = isDaylightSavingTime;\n    proto.isLocal = isLocal;\n    proto.isUtcOffset = isUtcOffset;\n    proto.isUtc = isUtc;\n    proto.isUTC = isUtc;\n    proto.zoneAbbr = getZoneAbbr;\n    proto.zoneName = getZoneName;\n    proto.dates = deprecate(\n        'dates accessor is deprecated. Use date instead.',\n        getSetDayOfMonth\n    );\n    proto.months = deprecate(\n        'months accessor is deprecated. Use month instead',\n        getSetMonth\n    );\n    proto.years = deprecate(\n        'years accessor is deprecated. Use year instead',\n        getSetYear\n    );\n    proto.zone = deprecate(\n        'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',\n        getSetZone\n    );\n    proto.isDSTShifted = deprecate(\n        'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',\n        isDaylightSavingTimeShifted\n    );\n\n    function createUnix(input) {\n        return createLocal(input * 1000);\n    }\n\n    function createInZone() {\n        return createLocal.apply(null, arguments).parseZone();\n    }\n\n    function preParsePostFormat(string) {\n        return string;\n    }\n\n    var proto$1 = Locale.prototype;\n\n    proto$1.calendar = calendar;\n    proto$1.longDateFormat = longDateFormat;\n    proto$1.invalidDate = invalidDate;\n    proto$1.ordinal = ordinal;\n    proto$1.preparse = preParsePostFormat;\n    proto$1.postformat = preParsePostFormat;\n    proto$1.relativeTime = relativeTime;\n    proto$1.pastFuture = pastFuture;\n    proto$1.set = set;\n    proto$1.eras = localeEras;\n    proto$1.erasParse = localeErasParse;\n    proto$1.erasConvertYear = localeErasConvertYear;\n    proto$1.erasAbbrRegex = erasAbbrRegex;\n    proto$1.erasNameRegex = erasNameRegex;\n    proto$1.erasNarrowRegex = erasNarrowRegex;\n\n    proto$1.months = localeMonths;\n    proto$1.monthsShort = localeMonthsShort;\n    proto$1.monthsParse = localeMonthsParse;\n    proto$1.monthsRegex = monthsRegex;\n    proto$1.monthsShortRegex = monthsShortRegex;\n    proto$1.week = localeWeek;\n    proto$1.firstDayOfYear = localeFirstDayOfYear;\n    proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n    proto$1.weekdays = localeWeekdays;\n    proto$1.weekdaysMin = localeWeekdaysMin;\n    proto$1.weekdaysShort = localeWeekdaysShort;\n    proto$1.weekdaysParse = localeWeekdaysParse;\n\n    proto$1.weekdaysRegex = weekdaysRegex;\n    proto$1.weekdaysShortRegex = weekdaysShortRegex;\n    proto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n    proto$1.isPM = localeIsPM;\n    proto$1.meridiem = localeMeridiem;\n\n    function get$1(format, index, field, setter) {\n        var locale = getLocale(),\n            utc = createUTC().set(setter, index);\n        return locale[field](utc, format);\n    }\n\n    function listMonthsImpl(format, index, field) {\n        if (isNumber(format)) {\n            index = format;\n            format = undefined;\n        }\n\n        format = format || '';\n\n        if (index != null) {\n            return get$1(format, index, field, 'month');\n        }\n\n        var i,\n            out = [];\n        for (i = 0; i < 12; i++) {\n            out[i] = get$1(format, i, field, 'month');\n        }\n        return out;\n    }\n\n    // ()\n    // (5)\n    // (fmt, 5)\n    // (fmt)\n    // (true)\n    // (true, 5)\n    // (true, fmt, 5)\n    // (true, fmt)\n    function listWeekdaysImpl(localeSorted, format, index, field) {\n        if (typeof localeSorted === 'boolean') {\n            if (isNumber(format)) {\n                index = format;\n                format = undefined;\n            }\n\n            format = format || '';\n        } else {\n            format = localeSorted;\n            index = format;\n            localeSorted = false;\n\n            if (isNumber(format)) {\n                index = format;\n                format = undefined;\n            }\n\n            format = format || '';\n        }\n\n        var locale = getLocale(),\n            shift = localeSorted ? locale._week.dow : 0,\n            i,\n            out = [];\n\n        if (index != null) {\n            return get$1(format, (index + shift) % 7, field, 'day');\n        }\n\n        for (i = 0; i < 7; i++) {\n            out[i] = get$1(format, (i + shift) % 7, field, 'day');\n        }\n        return out;\n    }\n\n    function listMonths(format, index) {\n        return listMonthsImpl(format, index, 'months');\n    }\n\n    function listMonthsShort(format, index) {\n        return listMonthsImpl(format, index, 'monthsShort');\n    }\n\n    function listWeekdays(localeSorted, format, index) {\n        return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n    }\n\n    function listWeekdaysShort(localeSorted, format, index) {\n        return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n    }\n\n    function listWeekdaysMin(localeSorted, format, index) {\n        return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n    }\n\n    getSetGlobalLocale('en', {\n        eras: [\n            {\n                since: '0001-01-01',\n                until: +Infinity,\n                offset: 1,\n                name: 'Anno Domini',\n                narrow: 'AD',\n                abbr: 'AD',\n            },\n            {\n                since: '0000-12-31',\n                until: -Infinity,\n                offset: 1,\n                name: 'Before Christ',\n                narrow: 'BC',\n                abbr: 'BC',\n            },\n        ],\n        dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    toInt((number % 100) / 10) === 1\n                        ? 'th'\n                        : b === 1\n                        ? 'st'\n                        : b === 2\n                        ? 'nd'\n                        : b === 3\n                        ? 'rd'\n                        : 'th';\n            return number + output;\n        },\n    });\n\n    // Side effect imports\n\n    hooks.lang = deprecate(\n        'moment.lang is deprecated. Use moment.locale instead.',\n        getSetGlobalLocale\n    );\n    hooks.langData = deprecate(\n        'moment.langData is deprecated. Use moment.localeData instead.',\n        getLocale\n    );\n\n    var mathAbs = Math.abs;\n\n    function abs() {\n        var data = this._data;\n\n        this._milliseconds = mathAbs(this._milliseconds);\n        this._days = mathAbs(this._days);\n        this._months = mathAbs(this._months);\n\n        data.milliseconds = mathAbs(data.milliseconds);\n        data.seconds = mathAbs(data.seconds);\n        data.minutes = mathAbs(data.minutes);\n        data.hours = mathAbs(data.hours);\n        data.months = mathAbs(data.months);\n        data.years = mathAbs(data.years);\n\n        return this;\n    }\n\n    function addSubtract$1(duration, input, value, direction) {\n        var other = createDuration(input, value);\n\n        duration._milliseconds += direction * other._milliseconds;\n        duration._days += direction * other._days;\n        duration._months += direction * other._months;\n\n        return duration._bubble();\n    }\n\n    // supports only 2.0-style add(1, 's') or add(duration)\n    function add$1(input, value) {\n        return addSubtract$1(this, input, value, 1);\n    }\n\n    // supports only 2.0-style subtract(1, 's') or subtract(duration)\n    function subtract$1(input, value) {\n        return addSubtract$1(this, input, value, -1);\n    }\n\n    function absCeil(number) {\n        if (number < 0) {\n            return Math.floor(number);\n        } else {\n            return Math.ceil(number);\n        }\n    }\n\n    function bubble() {\n        var milliseconds = this._milliseconds,\n            days = this._days,\n            months = this._months,\n            data = this._data,\n            seconds,\n            minutes,\n            hours,\n            years,\n            monthsFromDays;\n\n        // if we have a mix of positive and negative values, bubble down first\n        // check: https://github.com/moment/moment/issues/2166\n        if (\n            !(\n                (milliseconds >= 0 && days >= 0 && months >= 0) ||\n                (milliseconds <= 0 && days <= 0 && months <= 0)\n            )\n        ) {\n            milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n            days = 0;\n            months = 0;\n        }\n\n        // The following code bubbles up values, see the tests for\n        // examples of what that means.\n        data.milliseconds = milliseconds % 1000;\n\n        seconds = absFloor(milliseconds / 1000);\n        data.seconds = seconds % 60;\n\n        minutes = absFloor(seconds / 60);\n        data.minutes = minutes % 60;\n\n        hours = absFloor(minutes / 60);\n        data.hours = hours % 24;\n\n        days += absFloor(hours / 24);\n\n        // convert days to months\n        monthsFromDays = absFloor(daysToMonths(days));\n        months += monthsFromDays;\n        days -= absCeil(monthsToDays(monthsFromDays));\n\n        // 12 months -> 1 year\n        years = absFloor(months / 12);\n        months %= 12;\n\n        data.days = days;\n        data.months = months;\n        data.years = years;\n\n        return this;\n    }\n\n    function daysToMonths(days) {\n        // 400 years have 146097 days (taking into account leap year rules)\n        // 400 years have 12 months === 4800\n        return (days * 4800) / 146097;\n    }\n\n    function monthsToDays(months) {\n        // the reverse of daysToMonths\n        return (months * 146097) / 4800;\n    }\n\n    function as(units) {\n        if (!this.isValid()) {\n            return NaN;\n        }\n        var days,\n            months,\n            milliseconds = this._milliseconds;\n\n        units = normalizeUnits(units);\n\n        if (units === 'month' || units === 'quarter' || units === 'year') {\n            days = this._days + milliseconds / 864e5;\n            months = this._months + daysToMonths(days);\n            switch (units) {\n                case 'month':\n                    return months;\n                case 'quarter':\n                    return months / 3;\n                case 'year':\n                    return months / 12;\n            }\n        } else {\n            // handle milliseconds separately because of floating point math errors (issue #1867)\n            days = this._days + Math.round(monthsToDays(this._months));\n            switch (units) {\n                case 'week':\n                    return days / 7 + milliseconds / 6048e5;\n                case 'day':\n                    return days + milliseconds / 864e5;\n                case 'hour':\n                    return days * 24 + milliseconds / 36e5;\n                case 'minute':\n                    return days * 1440 + milliseconds / 6e4;\n                case 'second':\n                    return days * 86400 + milliseconds / 1000;\n                // Math.floor prevents floating point math errors here\n                case 'millisecond':\n                    return Math.floor(days * 864e5) + milliseconds;\n                default:\n                    throw new Error('Unknown unit ' + units);\n            }\n        }\n    }\n\n    // TODO: Use this.as('ms')?\n    function valueOf$1() {\n        if (!this.isValid()) {\n            return NaN;\n        }\n        return (\n            this._milliseconds +\n            this._days * 864e5 +\n            (this._months % 12) * 2592e6 +\n            toInt(this._months / 12) * 31536e6\n        );\n    }\n\n    function makeAs(alias) {\n        return function () {\n            return this.as(alias);\n        };\n    }\n\n    var asMilliseconds = makeAs('ms'),\n        asSeconds = makeAs('s'),\n        asMinutes = makeAs('m'),\n        asHours = makeAs('h'),\n        asDays = makeAs('d'),\n        asWeeks = makeAs('w'),\n        asMonths = makeAs('M'),\n        asQuarters = makeAs('Q'),\n        asYears = makeAs('y');\n\n    function clone$1() {\n        return createDuration(this);\n    }\n\n    function get$2(units) {\n        units = normalizeUnits(units);\n        return this.isValid() ? this[units + 's']() : NaN;\n    }\n\n    function makeGetter(name) {\n        return function () {\n            return this.isValid() ? this._data[name] : NaN;\n        };\n    }\n\n    var milliseconds = makeGetter('milliseconds'),\n        seconds = makeGetter('seconds'),\n        minutes = makeGetter('minutes'),\n        hours = makeGetter('hours'),\n        days = makeGetter('days'),\n        months = makeGetter('months'),\n        years = makeGetter('years');\n\n    function weeks() {\n        return absFloor(this.days() / 7);\n    }\n\n    var round = Math.round,\n        thresholds = {\n            ss: 44, // a few seconds to seconds\n            s: 45, // seconds to minute\n            m: 45, // minutes to hour\n            h: 22, // hours to day\n            d: 26, // days to month/week\n            w: null, // weeks to month\n            M: 11, // months to year\n        };\n\n    // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n    function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n        return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n    }\n\n    function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {\n        var duration = createDuration(posNegDuration).abs(),\n            seconds = round(duration.as('s')),\n            minutes = round(duration.as('m')),\n            hours = round(duration.as('h')),\n            days = round(duration.as('d')),\n            months = round(duration.as('M')),\n            weeks = round(duration.as('w')),\n            years = round(duration.as('y')),\n            a =\n                (seconds <= thresholds.ss && ['s', seconds]) ||\n                (seconds < thresholds.s && ['ss', seconds]) ||\n                (minutes <= 1 && ['m']) ||\n                (minutes < thresholds.m && ['mm', minutes]) ||\n                (hours <= 1 && ['h']) ||\n                (hours < thresholds.h && ['hh', hours]) ||\n                (days <= 1 && ['d']) ||\n                (days < thresholds.d && ['dd', days]);\n\n        if (thresholds.w != null) {\n            a =\n                a ||\n                (weeks <= 1 && ['w']) ||\n                (weeks < thresholds.w && ['ww', weeks]);\n        }\n        a = a ||\n            (months <= 1 && ['M']) ||\n            (months < thresholds.M && ['MM', months]) ||\n            (years <= 1 && ['y']) || ['yy', years];\n\n        a[2] = withoutSuffix;\n        a[3] = +posNegDuration > 0;\n        a[4] = locale;\n        return substituteTimeAgo.apply(null, a);\n    }\n\n    // This function allows you to set the rounding function for relative time strings\n    function getSetRelativeTimeRounding(roundingFunction) {\n        if (roundingFunction === undefined) {\n            return round;\n        }\n        if (typeof roundingFunction === 'function') {\n            round = roundingFunction;\n            return true;\n        }\n        return false;\n    }\n\n    // This function allows you to set a threshold for relative time strings\n    function getSetRelativeTimeThreshold(threshold, limit) {\n        if (thresholds[threshold] === undefined) {\n            return false;\n        }\n        if (limit === undefined) {\n            return thresholds[threshold];\n        }\n        thresholds[threshold] = limit;\n        if (threshold === 's') {\n            thresholds.ss = limit - 1;\n        }\n        return true;\n    }\n\n    function humanize(argWithSuffix, argThresholds) {\n        if (!this.isValid()) {\n            return this.localeData().invalidDate();\n        }\n\n        var withSuffix = false,\n            th = thresholds,\n            locale,\n            output;\n\n        if (typeof argWithSuffix === 'object') {\n            argThresholds = argWithSuffix;\n            argWithSuffix = false;\n        }\n        if (typeof argWithSuffix === 'boolean') {\n            withSuffix = argWithSuffix;\n        }\n        if (typeof argThresholds === 'object') {\n            th = Object.assign({}, thresholds, argThresholds);\n            if (argThresholds.s != null && argThresholds.ss == null) {\n                th.ss = argThresholds.s - 1;\n            }\n        }\n\n        locale = this.localeData();\n        output = relativeTime$1(this, !withSuffix, th, locale);\n\n        if (withSuffix) {\n            output = locale.pastFuture(+this, output);\n        }\n\n        return locale.postformat(output);\n    }\n\n    var abs$1 = Math.abs;\n\n    function sign(x) {\n        return (x > 0) - (x < 0) || +x;\n    }\n\n    function toISOString$1() {\n        // for ISO strings we do not use the normal bubbling rules:\n        //  * milliseconds bubble up until they become hours\n        //  * days do not bubble at all\n        //  * months bubble up until they become years\n        // This is because there is no context-free conversion between hours and days\n        // (think of clock changes)\n        // and also not between days and months (28-31 days per month)\n        if (!this.isValid()) {\n            return this.localeData().invalidDate();\n        }\n\n        var seconds = abs$1(this._milliseconds) / 1000,\n            days = abs$1(this._days),\n            months = abs$1(this._months),\n            minutes,\n            hours,\n            years,\n            s,\n            total = this.asSeconds(),\n            totalSign,\n            ymSign,\n            daysSign,\n            hmsSign;\n\n        if (!total) {\n            // this is the same as C#'s (Noda) and python (isodate)...\n            // but not other JS (goog.date)\n            return 'P0D';\n        }\n\n        // 3600 seconds -> 60 minutes -> 1 hour\n        minutes = absFloor(seconds / 60);\n        hours = absFloor(minutes / 60);\n        seconds %= 60;\n        minutes %= 60;\n\n        // 12 months -> 1 year\n        years = absFloor(months / 12);\n        months %= 12;\n\n        // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n        s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n\n        totalSign = total < 0 ? '-' : '';\n        ymSign = sign(this._months) !== sign(total) ? '-' : '';\n        daysSign = sign(this._days) !== sign(total) ? '-' : '';\n        hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n        return (\n            totalSign +\n            'P' +\n            (years ? ymSign + years + 'Y' : '') +\n            (months ? ymSign + months + 'M' : '') +\n            (days ? daysSign + days + 'D' : '') +\n            (hours || minutes || seconds ? 'T' : '') +\n            (hours ? hmsSign + hours + 'H' : '') +\n            (minutes ? hmsSign + minutes + 'M' : '') +\n            (seconds ? hmsSign + s + 'S' : '')\n        );\n    }\n\n    var proto$2 = Duration.prototype;\n\n    proto$2.isValid = isValid$1;\n    proto$2.abs = abs;\n    proto$2.add = add$1;\n    proto$2.subtract = subtract$1;\n    proto$2.as = as;\n    proto$2.asMilliseconds = asMilliseconds;\n    proto$2.asSeconds = asSeconds;\n    proto$2.asMinutes = asMinutes;\n    proto$2.asHours = asHours;\n    proto$2.asDays = asDays;\n    proto$2.asWeeks = asWeeks;\n    proto$2.asMonths = asMonths;\n    proto$2.asQuarters = asQuarters;\n    proto$2.asYears = asYears;\n    proto$2.valueOf = valueOf$1;\n    proto$2._bubble = bubble;\n    proto$2.clone = clone$1;\n    proto$2.get = get$2;\n    proto$2.milliseconds = milliseconds;\n    proto$2.seconds = seconds;\n    proto$2.minutes = minutes;\n    proto$2.hours = hours;\n    proto$2.days = days;\n    proto$2.weeks = weeks;\n    proto$2.months = months;\n    proto$2.years = years;\n    proto$2.humanize = humanize;\n    proto$2.toISOString = toISOString$1;\n    proto$2.toString = toISOString$1;\n    proto$2.toJSON = toISOString$1;\n    proto$2.locale = locale;\n    proto$2.localeData = localeData;\n\n    proto$2.toIsoString = deprecate(\n        'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',\n        toISOString$1\n    );\n    proto$2.lang = lang;\n\n    // FORMATTING\n\n    addFormatToken('X', 0, 0, 'unix');\n    addFormatToken('x', 0, 0, 'valueOf');\n\n    // PARSING\n\n    addRegexToken('x', matchSigned);\n    addRegexToken('X', matchTimestamp);\n    addParseToken('X', function (input, array, config) {\n        config._d = new Date(parseFloat(input) * 1000);\n    });\n    addParseToken('x', function (input, array, config) {\n        config._d = new Date(toInt(input));\n    });\n\n    //! moment.js\n\n    hooks.version = '2.29.1';\n\n    setHookCallback(createLocal);\n\n    hooks.fn = proto;\n    hooks.min = min;\n    hooks.max = max;\n    hooks.now = now;\n    hooks.utc = createUTC;\n    hooks.unix = createUnix;\n    hooks.months = listMonths;\n    hooks.isDate = isDate;\n    hooks.locale = getSetGlobalLocale;\n    hooks.invalid = createInvalid;\n    hooks.duration = createDuration;\n    hooks.isMoment = isMoment;\n    hooks.weekdays = listWeekdays;\n    hooks.parseZone = createInZone;\n    hooks.localeData = getLocale;\n    hooks.isDuration = isDuration;\n    hooks.monthsShort = listMonthsShort;\n    hooks.weekdaysMin = listWeekdaysMin;\n    hooks.defineLocale = defineLocale;\n    hooks.updateLocale = updateLocale;\n    hooks.locales = listLocales;\n    hooks.weekdaysShort = listWeekdaysShort;\n    hooks.normalizeUnits = normalizeUnits;\n    hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n    hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n    hooks.calendarFormat = getCalendarFormat;\n    hooks.prototype = proto;\n\n    // currently HTML5 input type only supports 24-hour formats\n    hooks.HTML5_FMT = {\n        DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // <input type=\"datetime-local\" />\n        DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // <input type=\"datetime-local\" step=\"1\" />\n        DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // <input type=\"datetime-local\" step=\"0.001\" />\n        DATE: 'YYYY-MM-DD', // <input type=\"date\" />\n        TIME: 'HH:mm', // <input type=\"time\" />\n        TIME_SECONDS: 'HH:mm:ss', // <input type=\"time\" step=\"1\" />\n        TIME_MS: 'HH:mm:ss.SSS', // <input type=\"time\" step=\"0.001\" />\n        WEEK: 'GGGG-[W]WW', // <input type=\"week\" />\n        MONTH: 'YYYY-MM', // <input type=\"month\" />\n    };\n\n    return hooks;\n\n})));\n","export default typeof window !== 'undefined' && typeof document !== 'undefined' && typeof navigator !== 'undefined';\n","import isBrowser from './isBrowser';\n\nconst timeoutDuration = (function(){\n  const longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];\n  for (let i = 0; i < longerTimeoutBrowsers.length; i += 1) {\n    if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {\n      return 1;\n    }\n  }\n  return 0;\n}());\n\nexport function microtaskDebounce(fn) {\n  let called = false\n  return () => {\n    if (called) {\n      return\n    }\n    called = true\n    window.Promise.resolve().then(() => {\n      called = false\n      fn()\n    })\n  }\n}\n\nexport function taskDebounce(fn) {\n  let scheduled = false;\n  return () => {\n    if (!scheduled) {\n      scheduled = true;\n      setTimeout(() => {\n        scheduled = false;\n        fn();\n      }, timeoutDuration);\n    }\n  };\n}\n\nconst supportsMicroTasks = isBrowser && window.Promise\n\n\n/**\n* Create a debounced version of a method, that's asynchronously deferred\n* but called in the minimum time possible.\n*\n* @method\n* @memberof Popper.Utils\n* @argument {Function} fn\n* @returns {Function}\n*/\nexport default (supportsMicroTasks\n  ? microtaskDebounce\n  : taskDebounce);\n","/**\n * Check if the given variable is a function\n * @method\n * @memberof Popper.Utils\n * @argument {Any} functionToCheck - variable to check\n * @returns {Boolean} answer to: is a function?\n */\nexport default function isFunction(functionToCheck) {\n  const getType = {};\n  return (\n    functionToCheck &&\n    getType.toString.call(functionToCheck) === '[object Function]'\n  );\n}\n","/**\n * Get CSS computed property of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Eement} element\n * @argument {String} property\n */\nexport default function getStyleComputedProperty(element, property) {\n  if (element.nodeType !== 1) {\n    return [];\n  }\n  // NOTE: 1 DOM access here\n  const window = element.ownerDocument.defaultView;\n  const css = window.getComputedStyle(element, null);\n  return property ? css[property] : css;\n}\n","/**\n * Returns the parentNode or the host of the element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} parent\n */\nexport default function getParentNode(element) {\n  if (element.nodeName === 'HTML') {\n    return element;\n  }\n  return element.parentNode || element.host;\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getParentNode from './getParentNode';\n\n/**\n * Returns the scrolling parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} scroll parent\n */\nexport default function getScrollParent(element) {\n  // Return body, `getScroll` will take care to get the correct `scrollTop` from it\n  if (!element) {\n    return document.body\n  }\n\n  switch (element.nodeName) {\n    case 'HTML':\n    case 'BODY':\n      return element.ownerDocument.body\n    case '#document':\n      return element.body\n  }\n\n  // Firefox want us to check `-x` and `-y` variations as well\n  const { overflow, overflowX, overflowY } = getStyleComputedProperty(element);\n  if (/(auto|scroll|overlay)/.test(overflow + overflowY + overflowX)) {\n    return element;\n  }\n\n  return getScrollParent(getParentNode(element));\n}\n","/**\n * Returns the reference node of the reference object, or the reference object itself.\n * @method\n * @memberof Popper.Utils\n * @param {Element|Object} reference - the reference element (the popper will be relative to this)\n * @returns {Element} parent\n */\nexport default function getReferenceNode(reference) {\n  return reference && reference.referenceNode ? reference.referenceNode : reference;\n}\n","import isBrowser from './isBrowser';\n\nconst isIE11 = isBrowser && !!(window.MSInputMethodContext && document.documentMode);\nconst isIE10 = isBrowser && /MSIE 10/.test(navigator.userAgent);\n\n/**\n * Determines if the browser is Internet Explorer\n * @method\n * @memberof Popper.Utils\n * @param {Number} version to check\n * @returns {Boolean} isIE\n */\nexport default function isIE(version) {\n  if (version === 11) {\n    return isIE11;\n  }\n  if (version === 10) {\n    return isIE10;\n  }\n  return isIE11 || isIE10;\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport isIE from './isIE';\n/**\n * Returns the offset parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} offset parent\n */\nexport default function getOffsetParent(element) {\n  if (!element) {\n    return document.documentElement;\n  }\n\n  const noOffsetParent = isIE(10) ? document.body : null;\n\n  // NOTE: 1 DOM access here\n  let offsetParent = element.offsetParent || null;\n  // Skip hidden elements which don't have an offsetParent\n  while (offsetParent === noOffsetParent && element.nextElementSibling) {\n    offsetParent = (element = element.nextElementSibling).offsetParent;\n  }\n\n  const nodeName = offsetParent && offsetParent.nodeName;\n\n  if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {\n    return element ? element.ownerDocument.documentElement : document.documentElement;\n  }\n\n  // .offsetParent will return the closest TH, TD or TABLE in case\n  // no offsetParent is present, I hate this job...\n  if (\n    ['TH', 'TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 &&\n    getStyleComputedProperty(offsetParent, 'position') === 'static'\n  ) {\n    return getOffsetParent(offsetParent);\n  }\n\n  return offsetParent;\n}\n","/**\n * Finds the root node (document, shadowDOM root) of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} node\n * @returns {Element} root node\n */\nexport default function getRoot(node) {\n  if (node.parentNode !== null) {\n    return getRoot(node.parentNode);\n  }\n\n  return node;\n}\n","import isOffsetContainer from './isOffsetContainer';\nimport getRoot from './getRoot';\nimport getOffsetParent from './getOffsetParent';\n\n/**\n * Finds the offset parent common to the two provided nodes\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element1\n * @argument {Element} element2\n * @returns {Element} common offset parent\n */\nexport default function findCommonOffsetParent(element1, element2) {\n  // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n  if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) {\n    return document.documentElement;\n  }\n\n  // Here we make sure to give as \"start\" the element that comes first in the DOM\n  const order =\n    element1.compareDocumentPosition(element2) &\n    Node.DOCUMENT_POSITION_FOLLOWING;\n  const start = order ? element1 : element2;\n  const end = order ? element2 : element1;\n\n  // Get common ancestor container\n  const range = document.createRange();\n  range.setStart(start, 0);\n  range.setEnd(end, 0);\n  const { commonAncestorContainer } = range;\n\n  // Both nodes are inside #document\n  if (\n    (element1 !== commonAncestorContainer &&\n      element2 !== commonAncestorContainer) ||\n    start.contains(end)\n  ) {\n    if (isOffsetContainer(commonAncestorContainer)) {\n      return commonAncestorContainer;\n    }\n\n    return getOffsetParent(commonAncestorContainer);\n  }\n\n  // one of the nodes is inside shadowDOM, find which one\n  const element1root = getRoot(element1);\n  if (element1root.host) {\n    return findCommonOffsetParent(element1root.host, element2);\n  } else {\n    return findCommonOffsetParent(element1, getRoot(element2).host);\n  }\n}\n","import getOffsetParent from './getOffsetParent';\n\nexport default function isOffsetContainer(element) {\n  const { nodeName } = element;\n  if (nodeName === 'BODY') {\n    return false;\n  }\n  return (\n    nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element\n  );\n}\n","/**\n * Gets the scroll value of the given element in the given side (top and left)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {String} side `top` or `left`\n * @returns {number} amount of scrolled pixels\n */\nexport default function getScroll(element, side = 'top') {\n  const upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';\n  const nodeName = element.nodeName;\n\n  if (nodeName === 'BODY' || nodeName === 'HTML') {\n    const html = element.ownerDocument.documentElement;\n    const scrollingElement = element.ownerDocument.scrollingElement || html;\n    return scrollingElement[upperSide];\n  }\n\n  return element[upperSide];\n}\n","import getScroll from './getScroll';\n\n/*\n * Sum or subtract the element scroll values (left and top) from a given rect object\n * @method\n * @memberof Popper.Utils\n * @param {Object} rect - Rect object you want to change\n * @param {HTMLElement} element - The element from the function reads the scroll values\n * @param {Boolean} subtract - set to true if you want to subtract the scroll values\n * @return {Object} rect - The modifier rect object\n */\nexport default function includeScroll(rect, element, subtract = false) {\n  const scrollTop = getScroll(element, 'top');\n  const scrollLeft = getScroll(element, 'left');\n  const modifier = subtract ? -1 : 1;\n  rect.top += scrollTop * modifier;\n  rect.bottom += scrollTop * modifier;\n  rect.left += scrollLeft * modifier;\n  rect.right += scrollLeft * modifier;\n  return rect;\n}\n","/*\n * Helper to detect borders of a given element\n * @method\n * @memberof Popper.Utils\n * @param {CSSStyleDeclaration} styles\n * Result of `getStyleComputedProperty` on the given element\n * @param {String} axis - `x` or `y`\n * @return {number} borders - The borders size of the given axis\n */\n\nexport default function getBordersSize(styles, axis) {\n  const sideA = axis === 'x' ? 'Left' : 'Top';\n  const sideB = sideA === 'Left' ? 'Right' : 'Bottom';\n\n  return (\n    parseFloat(styles[`border${sideA}Width`]) +\n    parseFloat(styles[`border${sideB}Width`])\n  );\n}\n","import isIE from './isIE';\n\nfunction getSize(axis, body, html, computedStyle) {\n  return Math.max(\n    body[`offset${axis}`],\n    body[`scroll${axis}`],\n    html[`client${axis}`],\n    html[`offset${axis}`],\n    html[`scroll${axis}`],\n    isIE(10)\n      ? (parseInt(html[`offset${axis}`]) + \n      parseInt(computedStyle[`margin${axis === 'Height' ? 'Top' : 'Left'}`]) + \n      parseInt(computedStyle[`margin${axis === 'Height' ? 'Bottom' : 'Right'}`]))\n    : 0 \n  );\n}\n\nexport default function getWindowSizes(document) {\n  const body = document.body;\n  const html = document.documentElement;\n  const computedStyle = isIE(10) && getComputedStyle(html);\n\n  return {\n    height: getSize('Height', body, html, computedStyle),\n    width: getSize('Width', body, html, computedStyle),\n  };\n}\n","/**\n * Given element offsets, generate an output similar to getBoundingClientRect\n * @method\n * @memberof Popper.Utils\n * @argument {Object} offsets\n * @returns {Object} ClientRect like output\n */\nexport default function getClientRect(offsets) {\n  return {\n    ...offsets,\n    right: offsets.left + offsets.width,\n    bottom: offsets.top + offsets.height,\n  };\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getBordersSize from './getBordersSize';\nimport getWindowSizes from './getWindowSizes';\nimport getScroll from './getScroll';\nimport getClientRect from './getClientRect';\nimport isIE from './isIE';\n\n/**\n * Get bounding client rect of given element\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} element\n * @return {Object} client rect\n */\nexport default function getBoundingClientRect(element) {\n  let rect = {};\n\n  // IE10 10 FIX: Please, don't ask, the element isn't\n  // considered in DOM in some circumstances...\n  // This isn't reproducible in IE10 compatibility mode of IE11\n  try {\n    if (isIE(10)) {\n      rect = element.getBoundingClientRect();\n      const scrollTop = getScroll(element, 'top');\n      const scrollLeft = getScroll(element, 'left');\n      rect.top += scrollTop;\n      rect.left += scrollLeft;\n      rect.bottom += scrollTop;\n      rect.right += scrollLeft;\n    }\n    else {\n      rect = element.getBoundingClientRect();\n    }\n  }\n  catch(e){}\n\n  const result = {\n    left: rect.left,\n    top: rect.top,\n    width: rect.right - rect.left,\n    height: rect.bottom - rect.top,\n  };\n\n  // subtract scrollbar size from sizes\n  const sizes = element.nodeName === 'HTML' ? getWindowSizes(element.ownerDocument) : {};\n  const width =\n    sizes.width || element.clientWidth || result.width;\n  const height =\n    sizes.height || element.clientHeight || result.height;\n\n  let horizScrollbar = element.offsetWidth - width;\n  let vertScrollbar = element.offsetHeight - height;\n\n  // if an hypothetical scrollbar is detected, we must be sure it's not a `border`\n  // we make this check conditional for performance reasons\n  if (horizScrollbar || vertScrollbar) {\n    const styles = getStyleComputedProperty(element);\n    horizScrollbar -= getBordersSize(styles, 'x');\n    vertScrollbar -= getBordersSize(styles, 'y');\n\n    result.width -= horizScrollbar;\n    result.height -= vertScrollbar;\n  }\n\n  return getClientRect(result);\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport includeScroll from './includeScroll';\nimport getScrollParent from './getScrollParent';\nimport getBoundingClientRect from './getBoundingClientRect';\nimport runIsIE from './isIE';\nimport getClientRect from './getClientRect';\n\nexport default function getOffsetRectRelativeToArbitraryNode(children, parent, fixedPosition = false) {\n  const isIE10 = runIsIE(10);\n  const isHTML = parent.nodeName === 'HTML';\n  const childrenRect = getBoundingClientRect(children);\n  const parentRect = getBoundingClientRect(parent);\n  const scrollParent = getScrollParent(children);\n\n  const styles = getStyleComputedProperty(parent);\n  const borderTopWidth = parseFloat(styles.borderTopWidth);\n  const borderLeftWidth = parseFloat(styles.borderLeftWidth);\n\n  // In cases where the parent is fixed, we must ignore negative scroll in offset calc\n  if(fixedPosition && isHTML) {\n    parentRect.top = Math.max(parentRect.top, 0);\n    parentRect.left = Math.max(parentRect.left, 0);\n  }\n  let offsets = getClientRect({\n    top: childrenRect.top - parentRect.top - borderTopWidth,\n    left: childrenRect.left - parentRect.left - borderLeftWidth,\n    width: childrenRect.width,\n    height: childrenRect.height,\n  });\n  offsets.marginTop = 0;\n  offsets.marginLeft = 0;\n\n  // Subtract margins of documentElement in case it's being used as parent\n  // we do this only on HTML because it's the only element that behaves\n  // differently when margins are applied to it. The margins are included in\n  // the box of the documentElement, in the other cases not.\n  if (!isIE10 && isHTML) {\n    const marginTop = parseFloat(styles.marginTop);\n    const marginLeft = parseFloat(styles.marginLeft);\n\n    offsets.top -= borderTopWidth - marginTop;\n    offsets.bottom -= borderTopWidth - marginTop;\n    offsets.left -= borderLeftWidth - marginLeft;\n    offsets.right -= borderLeftWidth - marginLeft;\n\n    // Attach marginTop and marginLeft because in some circumstances we may need them\n    offsets.marginTop = marginTop;\n    offsets.marginLeft = marginLeft;\n  }\n\n  if (\n    isIE10 && !fixedPosition\n      ? parent.contains(scrollParent)\n      : parent === scrollParent && scrollParent.nodeName !== 'BODY'\n  ) {\n    offsets = includeScroll(offsets, parent);\n  }\n\n  return offsets;\n}\n","import getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\nimport getScroll from './getScroll';\nimport getClientRect from './getClientRect';\n\nexport default function getViewportOffsetRectRelativeToArtbitraryNode(element, excludeScroll = false) {\n  const html = element.ownerDocument.documentElement;\n  const relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);\n  const width = Math.max(html.clientWidth, window.innerWidth || 0);\n  const height = Math.max(html.clientHeight, window.innerHeight || 0);\n\n  const scrollTop = !excludeScroll ? getScroll(html) : 0;\n  const scrollLeft = !excludeScroll ? getScroll(html, 'left') : 0;\n\n  const offset = {\n    top: scrollTop - relativeOffset.top + relativeOffset.marginTop,\n    left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft,\n    width,\n    height,\n  };\n\n  return getClientRect(offset);\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getParentNode from './getParentNode';\n\n/**\n * Check if the given element is fixed or is inside a fixed parent\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {Element} customContainer\n * @returns {Boolean} answer to \"isFixed?\"\n */\nexport default function isFixed(element) {\n  const nodeName = element.nodeName;\n  if (nodeName === 'BODY' || nodeName === 'HTML') {\n    return false;\n  }\n  if (getStyleComputedProperty(element, 'position') === 'fixed') {\n    return true;\n  }\n  const parentNode = getParentNode(element);\n  if (!parentNode) {\n    return false;\n  }\n  return isFixed(parentNode);\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport isIE from './isIE';\n/**\n * Finds the first parent of an element that has a transformed property defined\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} first transformed parent or documentElement\n */\n\nexport default function getFixedPositionOffsetParent(element) {\n  // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n   if (!element || !element.parentElement || isIE()) {\n    return document.documentElement;\n  }\n  let el = element.parentElement;\n  while (el && getStyleComputedProperty(el, 'transform') === 'none') {\n    el = el.parentElement;\n  }\n  return el || document.documentElement;\n\n}\n","import getScrollParent from './getScrollParent';\nimport getParentNode from './getParentNode';\nimport getReferenceNode from './getReferenceNode';\nimport findCommonOffsetParent from './findCommonOffsetParent';\nimport getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\nimport getViewportOffsetRectRelativeToArtbitraryNode from './getViewportOffsetRectRelativeToArtbitraryNode';\nimport getWindowSizes from './getWindowSizes';\nimport isFixed from './isFixed';\nimport getFixedPositionOffsetParent from './getFixedPositionOffsetParent';\n\n/**\n * Computed the boundaries limits and return them\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} popper\n * @param {HTMLElement} reference\n * @param {number} padding\n * @param {HTMLElement} boundariesElement - Element used to define the boundaries\n * @param {Boolean} fixedPosition - Is in fixed position mode\n * @returns {Object} Coordinates of the boundaries\n */\nexport default function getBoundaries(\n  popper,\n  reference,\n  padding,\n  boundariesElement,\n  fixedPosition = false\n) {\n  // NOTE: 1 DOM access here\n\n  let boundaries = { top: 0, left: 0 };\n  const offsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));\n\n  // Handle viewport case\n  if (boundariesElement === 'viewport' ) {\n    boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent, fixedPosition);\n  }\n\n  else {\n    // Handle other cases based on DOM element used as boundaries\n    let boundariesNode;\n    if (boundariesElement === 'scrollParent') {\n      boundariesNode = getScrollParent(getParentNode(reference));\n      if (boundariesNode.nodeName === 'BODY') {\n        boundariesNode = popper.ownerDocument.documentElement;\n      }\n    } else if (boundariesElement === 'window') {\n      boundariesNode = popper.ownerDocument.documentElement;\n    } else {\n      boundariesNode = boundariesElement;\n    }\n\n    const offsets = getOffsetRectRelativeToArbitraryNode(\n      boundariesNode,\n      offsetParent,\n      fixedPosition\n    );\n\n    // In case of HTML, we need a different computation\n    if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {\n      const { height, width } = getWindowSizes(popper.ownerDocument);\n      boundaries.top += offsets.top - offsets.marginTop;\n      boundaries.bottom = height + offsets.top;\n      boundaries.left += offsets.left - offsets.marginLeft;\n      boundaries.right = width + offsets.left;\n    } else {\n      // for all the other DOM elements, this one is good\n      boundaries = offsets;\n    }\n  }\n\n  // Add paddings\n  padding = padding || 0;\n  const isPaddingNumber = typeof padding === 'number';\n  boundaries.left += isPaddingNumber ? padding : padding.left || 0; \n  boundaries.top += isPaddingNumber ? padding : padding.top || 0; \n  boundaries.right -= isPaddingNumber ? padding : padding.right || 0; \n  boundaries.bottom -= isPaddingNumber ? padding : padding.bottom || 0; \n\n  return boundaries;\n}\n","import getBoundaries from '../utils/getBoundaries';\n\nfunction getArea({ width, height }) {\n  return width * height;\n}\n\n/**\n * Utility used to transform the `auto` placement to the placement with more\n * available space.\n * @method\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function computeAutoPlacement(\n  placement,\n  refRect,\n  popper,\n  reference,\n  boundariesElement,\n  padding = 0\n) {\n  if (placement.indexOf('auto') === -1) {\n    return placement;\n  }\n\n  const boundaries = getBoundaries(\n    popper,\n    reference,\n    padding,\n    boundariesElement\n  );\n\n  const rects = {\n    top: {\n      width: boundaries.width,\n      height: refRect.top - boundaries.top,\n    },\n    right: {\n      width: boundaries.right - refRect.right,\n      height: boundaries.height,\n    },\n    bottom: {\n      width: boundaries.width,\n      height: boundaries.bottom - refRect.bottom,\n    },\n    left: {\n      width: refRect.left - boundaries.left,\n      height: boundaries.height,\n    },\n  };\n\n  const sortedAreas = Object.keys(rects)\n    .map(key => ({\n      key,\n      ...rects[key],\n      area: getArea(rects[key]),\n    }))\n    .sort((a, b) => b.area - a.area);\n\n  const filteredAreas = sortedAreas.filter(\n    ({ width, height }) =>\n      width >= popper.clientWidth && height >= popper.clientHeight\n  );\n\n  const computedPlacement = filteredAreas.length > 0\n    ? filteredAreas[0].key\n    : sortedAreas[0].key;\n\n  const variation = placement.split('-')[1];\n\n  return computedPlacement + (variation ? `-${variation}` : '');\n}\n","import findCommonOffsetParent from './findCommonOffsetParent';\nimport getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\nimport getFixedPositionOffsetParent from './getFixedPositionOffsetParent';\nimport getReferenceNode from './getReferenceNode';\n\n/**\n * Get offsets to the reference element\n * @method\n * @memberof Popper.Utils\n * @param {Object} state\n * @param {Element} popper - the popper element\n * @param {Element} reference - the reference element (the popper will be relative to this)\n * @param {Element} fixedPosition - is in fixed position mode\n * @returns {Object} An object containing the offsets which will be applied to the popper\n */\nexport default function getReferenceOffsets(state, popper, reference, fixedPosition = null) {\n  const commonOffsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));\n  return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent, fixedPosition);\n}\n","/**\n * Get the outer sizes of the given element (offset size + margins)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Object} object containing width and height properties\n */\nexport default function getOuterSizes(element) {\n  const window = element.ownerDocument.defaultView;\n  const styles = window.getComputedStyle(element);\n  const x = parseFloat(styles.marginTop || 0) + parseFloat(styles.marginBottom || 0);\n  const y = parseFloat(styles.marginLeft || 0) + parseFloat(styles.marginRight || 0);\n  const result = {\n    width: element.offsetWidth + y,\n    height: element.offsetHeight + x,\n  };\n  return result;\n}\n","/**\n * Get the opposite placement of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement\n * @returns {String} flipped placement\n */\nexport default function getOppositePlacement(placement) {\n  const hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };\n  return placement.replace(/left|right|bottom|top/g, matched => hash[matched]);\n}\n","import getOuterSizes from './getOuterSizes';\nimport getOppositePlacement from './getOppositePlacement';\n\n/**\n * Get offsets to the popper\n * @method\n * @memberof Popper.Utils\n * @param {Object} position - CSS position the Popper will get applied\n * @param {HTMLElement} popper - the popper element\n * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this)\n * @param {String} placement - one of the valid placement options\n * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper\n */\nexport default function getPopperOffsets(popper, referenceOffsets, placement) {\n  placement = placement.split('-')[0];\n\n  // Get popper node sizes\n  const popperRect = getOuterSizes(popper);\n\n  // Add position, width and height to our offsets object\n  const popperOffsets = {\n    width: popperRect.width,\n    height: popperRect.height,\n  };\n\n  // depending by the popper placement we have to compute its offsets slightly differently\n  const isHoriz = ['right', 'left'].indexOf(placement) !== -1;\n  const mainSide = isHoriz ? 'top' : 'left';\n  const secondarySide = isHoriz ? 'left' : 'top';\n  const measurement = isHoriz ? 'height' : 'width';\n  const secondaryMeasurement = !isHoriz ? 'height' : 'width';\n\n  popperOffsets[mainSide] =\n    referenceOffsets[mainSide] +\n    referenceOffsets[measurement] / 2 -\n    popperRect[measurement] / 2;\n  if (placement === secondarySide) {\n    popperOffsets[secondarySide] =\n      referenceOffsets[secondarySide] - popperRect[secondaryMeasurement];\n  } else {\n    popperOffsets[secondarySide] =\n      referenceOffsets[getOppositePlacement(secondarySide)];\n  }\n\n  return popperOffsets;\n}\n","/**\n * Mimics the `find` method of Array\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nexport default function find(arr, check) {\n  // use native find if supported\n  if (Array.prototype.find) {\n    return arr.find(check);\n  }\n\n  // use `filter` to obtain the same behavior of `find`\n  return arr.filter(check)[0];\n}\n","import isFunction from './isFunction';\nimport findIndex from './findIndex';\nimport getClientRect from '../utils/getClientRect';\n\n/**\n * Loop trough the list of modifiers and run them in order,\n * each of them will then edit the data object.\n * @method\n * @memberof Popper.Utils\n * @param {dataObject} data\n * @param {Array} modifiers\n * @param {String} ends - Optional modifier name used as stopper\n * @returns {dataObject}\n */\nexport default function runModifiers(modifiers, data, ends) {\n  const modifiersToRun = ends === undefined\n    ? modifiers\n    : modifiers.slice(0, findIndex(modifiers, 'name', ends));\n\n  modifiersToRun.forEach(modifier => {\n    if (modifier['function']) { // eslint-disable-line dot-notation\n      console.warn('`modifier.function` is deprecated, use `modifier.fn`!');\n    }\n    const fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation\n    if (modifier.enabled && isFunction(fn)) {\n      // Add properties to offsets to make them a complete clientRect object\n      // we do this before each modifier to make sure the previous one doesn't\n      // mess with these values\n      data.offsets.popper = getClientRect(data.offsets.popper);\n      data.offsets.reference = getClientRect(data.offsets.reference);\n\n      data = fn(data, modifier);\n    }\n  });\n\n  return data;\n}\n","import find from './find';\n\n/**\n * Return the index of the matching object\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nexport default function findIndex(arr, prop, value) {\n  // use native findIndex if supported\n  if (Array.prototype.findIndex) {\n    return arr.findIndex(cur => cur[prop] === value);\n  }\n\n  // use `find` + `indexOf` if `findIndex` isn't supported\n  const match = find(arr, obj => obj[prop] === value);\n  return arr.indexOf(match);\n}\n","import computeAutoPlacement from '../utils/computeAutoPlacement';\nimport getReferenceOffsets from '../utils/getReferenceOffsets';\nimport getPopperOffsets from '../utils/getPopperOffsets';\nimport runModifiers from '../utils/runModifiers';\n\n/**\n * Updates the position of the popper, computing the new offsets and applying\n * the new style.<br />\n * Prefer `scheduleUpdate` over `update` because of performance reasons.\n * @method\n * @memberof Popper\n */\nexport default function update() {\n  // if popper is destroyed, don't perform any further update\n  if (this.state.isDestroyed) {\n    return;\n  }\n\n  let data = {\n    instance: this,\n    styles: {},\n    arrowStyles: {},\n    attributes: {},\n    flipped: false,\n    offsets: {},\n  };\n\n  // compute reference element offsets\n  data.offsets.reference = getReferenceOffsets(\n    this.state,\n    this.popper,\n    this.reference,\n    this.options.positionFixed\n  );\n\n  // compute auto placement, store placement inside the data object,\n  // modifiers will be able to edit `placement` if needed\n  // and refer to originalPlacement to know the original value\n  data.placement = computeAutoPlacement(\n    this.options.placement,\n    data.offsets.reference,\n    this.popper,\n    this.reference,\n    this.options.modifiers.flip.boundariesElement,\n    this.options.modifiers.flip.padding\n  );\n\n  // store the computed placement inside `originalPlacement`\n  data.originalPlacement = data.placement;\n\n  data.positionFixed = this.options.positionFixed;\n\n  // compute the popper offsets\n  data.offsets.popper = getPopperOffsets(\n    this.popper,\n    data.offsets.reference,\n    data.placement\n  );\n\n  data.offsets.popper.position = this.options.positionFixed\n    ? 'fixed'\n    : 'absolute';\n\n  // run the modifiers\n  data = runModifiers(this.modifiers, data);\n\n  // the first `update` will call `onCreate` callback\n  // the other ones will call `onUpdate` callback\n  if (!this.state.isCreated) {\n    this.state.isCreated = true;\n    this.options.onCreate(data);\n  } else {\n    this.options.onUpdate(data);\n  }\n}\n","/**\n * Helper used to know if the given modifier is enabled.\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean}\n */\nexport default function isModifierEnabled(modifiers, modifierName) {\n  return modifiers.some(\n    ({ name, enabled }) => enabled && name === modifierName\n  );\n}\n","/**\n * Get the prefixed supported property name\n * @method\n * @memberof Popper.Utils\n * @argument {String} property (camelCase)\n * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix)\n */\nexport default function getSupportedPropertyName(property) {\n  const prefixes = [false, 'ms', 'Webkit', 'Moz', 'O'];\n  const upperProp = property.charAt(0).toUpperCase() + property.slice(1);\n\n  for (let i = 0; i < prefixes.length; i++) {\n    const prefix = prefixes[i];\n    const toCheck = prefix ? `${prefix}${upperProp}` : property;\n    if (typeof document.body.style[toCheck] !== 'undefined') {\n      return toCheck;\n    }\n  }\n  return null;\n}\n","import isModifierEnabled from '../utils/isModifierEnabled';\nimport getSupportedPropertyName from '../utils/getSupportedPropertyName';\n\n/**\n * Destroys the popper.\n * @method\n * @memberof Popper\n */\nexport default function destroy() {\n  this.state.isDestroyed = true;\n\n  // touch DOM only if `applyStyle` modifier is enabled\n  if (isModifierEnabled(this.modifiers, 'applyStyle')) {\n    this.popper.removeAttribute('x-placement');\n    this.popper.style.position = '';\n    this.popper.style.top = '';\n    this.popper.style.left = '';\n    this.popper.style.right = '';\n    this.popper.style.bottom = '';\n    this.popper.style.willChange = '';\n    this.popper.style[getSupportedPropertyName('transform')] = '';\n  }\n\n  this.disableEventListeners();\n\n  // remove the popper if user explicitly asked for the deletion on destroy\n  // do not use `remove` because IE11 doesn't support it\n  if (this.options.removeOnDestroy) {\n    this.popper.parentNode.removeChild(this.popper);\n  }\n  return this;\n}\n","/**\n * Get the window associated with the element\n * @argument {Element} element\n * @returns {Window}\n */\nexport default function getWindow(element) {\n  const ownerDocument = element.ownerDocument;\n  return ownerDocument ? ownerDocument.defaultView : window;\n}\n","import getScrollParent from './getScrollParent';\nimport getWindow from './getWindow';\n\nfunction attachToScrollParents(scrollParent, event, callback, scrollParents) {\n  const isBody = scrollParent.nodeName === 'BODY';\n  const target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent;\n  target.addEventListener(event, callback, { passive: true });\n\n  if (!isBody) {\n    attachToScrollParents(\n      getScrollParent(target.parentNode),\n      event,\n      callback,\n      scrollParents\n    );\n  }\n  scrollParents.push(target);\n}\n\n/**\n * Setup needed event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nexport default function setupEventListeners(\n  reference,\n  options,\n  state,\n  updateBound\n) {\n  // Resize event listener on window\n  state.updateBound = updateBound;\n  getWindow(reference).addEventListener('resize', state.updateBound, { passive: true });\n\n  // Scroll event listener on scroll parents\n  const scrollElement = getScrollParent(reference);\n  attachToScrollParents(\n    scrollElement,\n    'scroll',\n    state.updateBound,\n    state.scrollParents\n  );\n  state.scrollElement = scrollElement;\n  state.eventsEnabled = true;\n\n  return state;\n}\n","import setupEventListeners from '../utils/setupEventListeners';\n\n/**\n * It will add resize/scroll events and start recalculating\n * position of the popper element when they are triggered.\n * @method\n * @memberof Popper\n */\nexport default function enableEventListeners() {\n  if (!this.state.eventsEnabled) {\n    this.state = setupEventListeners(\n      this.reference,\n      this.options,\n      this.state,\n      this.scheduleUpdate\n    );\n  }\n}\n","import removeEventListeners from '../utils/removeEventListeners';\n\n/**\n * It will remove resize/scroll events and won't recalculate popper position\n * when they are triggered. It also won't trigger `onUpdate` callback anymore,\n * unless you call `update` method manually.\n * @method\n * @memberof Popper\n */\nexport default function disableEventListeners() {\n  if (this.state.eventsEnabled) {\n    cancelAnimationFrame(this.scheduleUpdate);\n    this.state = removeEventListeners(this.reference, this.state);\n  }\n}\n","import getWindow from './getWindow';\n\n/**\n * Remove event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nexport default function removeEventListeners(reference, state) {\n  // Remove resize event listener on window\n  getWindow(reference).removeEventListener('resize', state.updateBound);\n\n  // Remove scroll event listener on scroll parents\n  state.scrollParents.forEach(target => {\n    target.removeEventListener('scroll', state.updateBound);\n  });\n\n  // Reset state\n  state.updateBound = null;\n  state.scrollParents = [];\n  state.scrollElement = null;\n  state.eventsEnabled = false;\n  return state;\n}\n","/**\n * Tells if a given input is a number\n * @method\n * @memberof Popper.Utils\n * @param {*} input to check\n * @return {Boolean}\n */\nexport default function isNumeric(n) {\n  return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);\n}\n","import isNumeric from './isNumeric';\n\n/**\n * Set the style to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the style to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nexport default function setStyles(element, styles) {\n  Object.keys(styles).forEach(prop => {\n    let unit = '';\n    // add unit if the value is numeric and is one of the following\n    if (\n      ['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !==\n        -1 &&\n      isNumeric(styles[prop])\n    ) {\n      unit = 'px';\n    }\n    element.style[prop] = styles[prop] + unit;\n  });\n}\n","import getSupportedPropertyName from '../utils/getSupportedPropertyName';\nimport find from '../utils/find';\nimport getOffsetParent from '../utils/getOffsetParent';\nimport getBoundingClientRect from '../utils/getBoundingClientRect';\nimport getRoundedOffsets from '../utils/getRoundedOffsets';\nimport isBrowser from '../utils/isBrowser';\n\nconst isFirefox = isBrowser && /Firefox/i.test(navigator.userAgent);\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function computeStyle(data, options) {\n  const { x, y } = options;\n  const { popper } = data.offsets;\n\n  // Remove this legacy support in Popper.js v2\n  const legacyGpuAccelerationOption = find(\n    data.instance.modifiers,\n    modifier => modifier.name === 'applyStyle'\n  ).gpuAcceleration;\n  if (legacyGpuAccelerationOption !== undefined) {\n    console.warn(\n      'WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!'\n    );\n  }\n  const gpuAcceleration =\n    legacyGpuAccelerationOption !== undefined\n      ? legacyGpuAccelerationOption\n      : options.gpuAcceleration;\n\n  const offsetParent = getOffsetParent(data.instance.popper);\n  const offsetParentRect = getBoundingClientRect(offsetParent);\n\n  // Styles\n  const styles = {\n    position: popper.position,\n  };\n\n  const offsets = getRoundedOffsets(\n    data,\n    window.devicePixelRatio < 2 || !isFirefox\n  );\n\n  const sideA = x === 'bottom' ? 'top' : 'bottom';\n  const sideB = y === 'right' ? 'left' : 'right';\n\n  // if gpuAcceleration is set to `true` and transform is supported,\n  //  we use `translate3d` to apply the position to the popper we\n  // automatically use the supported prefixed version if needed\n  const prefixedProperty = getSupportedPropertyName('transform');\n\n  // now, let's make a step back and look at this code closely (wtf?)\n  // If the content of the popper grows once it's been positioned, it\n  // may happen that the popper gets misplaced because of the new content\n  // overflowing its reference element\n  // To avoid this problem, we provide two options (x and y), which allow\n  // the consumer to define the offset origin.\n  // If we position a popper on top of a reference element, we can set\n  // `x` to `top` to make the popper grow towards its top instead of\n  // its bottom.\n  let left, top;\n  if (sideA === 'bottom') {\n    // when offsetParent is <html> the positioning is relative to the bottom of the screen (excluding the scrollbar)\n    // and not the bottom of the html element\n    if (offsetParent.nodeName === 'HTML') {\n      top = -offsetParent.clientHeight + offsets.bottom;\n    } else {\n      top = -offsetParentRect.height + offsets.bottom;\n    }\n  } else {\n    top = offsets.top;\n  }\n  if (sideB === 'right') {\n    if (offsetParent.nodeName === 'HTML') {\n      left = -offsetParent.clientWidth + offsets.right;\n    } else {\n      left = -offsetParentRect.width + offsets.right;\n    }\n  } else {\n    left = offsets.left;\n  }\n  if (gpuAcceleration && prefixedProperty) {\n    styles[prefixedProperty] = `translate3d(${left}px, ${top}px, 0)`;\n    styles[sideA] = 0;\n    styles[sideB] = 0;\n    styles.willChange = 'transform';\n  } else {\n    // othwerise, we use the standard `top`, `left`, `bottom` and `right` properties\n    const invertTop = sideA === 'bottom' ? -1 : 1;\n    const invertLeft = sideB === 'right' ? -1 : 1;\n    styles[sideA] = top * invertTop;\n    styles[sideB] = left * invertLeft;\n    styles.willChange = `${sideA}, ${sideB}`;\n  }\n\n  // Attributes\n  const attributes = {\n    'x-placement': data.placement,\n  };\n\n  // Update `data` attributes, styles and arrowStyles\n  data.attributes = { ...attributes, ...data.attributes };\n  data.styles = { ...styles, ...data.styles };\n  data.arrowStyles = { ...data.offsets.arrow, ...data.arrowStyles };\n\n  return data;\n}\n","import find from './find';\n\n/**\n * Helper used to know if the given modifier depends from another one.<br />\n * It checks if the needed modifier is listed and enabled.\n * @method\n * @memberof Popper.Utils\n * @param {Array} modifiers - list of modifiers\n * @param {String} requestingName - name of requesting modifier\n * @param {String} requestedName - name of requested modifier\n * @returns {Boolean}\n */\nexport default function isModifierRequired(\n  modifiers,\n  requestingName,\n  requestedName\n) {\n  const requesting = find(modifiers, ({ name }) => name === requestingName);\n\n  const isRequired =\n    !!requesting &&\n    modifiers.some(modifier => {\n      return (\n        modifier.name === requestedName &&\n        modifier.enabled &&\n        modifier.order < requesting.order\n      );\n    });\n\n  if (!isRequired) {\n    const requesting = `\\`${requestingName}\\``;\n    const requested = `\\`${requestedName}\\``;\n    console.warn(\n      `${requested} modifier is required by ${requesting} modifier in order to work, be sure to include it before ${requesting}!`\n    );\n  }\n  return isRequired;\n}\n","/**\n * List of accepted placements to use as values of the `placement` option.<br />\n * Valid placements are:\n * - `auto`\n * - `top`\n * - `right`\n * - `bottom`\n * - `left`\n *\n * Each placement can have a variation from this list:\n * - `-start`\n * - `-end`\n *\n * Variations are interpreted easily if you think of them as the left to right\n * written languages. Horizontally (`top` and `bottom`), `start` is left and `end`\n * is right.<br />\n * Vertically (`left` and `right`), `start` is top and `end` is bottom.\n *\n * Some valid examples are:\n * - `top-end` (on top of reference, right aligned)\n * - `right-start` (on right of reference, top aligned)\n * - `bottom` (on bottom, centered)\n * - `auto-end` (on the side with more space available, alignment depends by placement)\n *\n * @static\n * @type {Array}\n * @enum {String}\n * @readonly\n * @method placements\n * @memberof Popper\n */\nexport default [\n  'auto-start',\n  'auto',\n  'auto-end',\n  'top-start',\n  'top',\n  'top-end',\n  'right-start',\n  'right',\n  'right-end',\n  'bottom-end',\n  'bottom',\n  'bottom-start',\n  'left-end',\n  'left',\n  'left-start',\n];\n","import placements from '../methods/placements';\n\n// Get rid of `auto` `auto-start` and `auto-end`\nconst validPlacements = placements.slice(3);\n\n/**\n * Given an initial placement, returns all the subsequent placements\n * clockwise (or counter-clockwise).\n *\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement - A valid placement (it accepts variations)\n * @argument {Boolean} counter - Set to true to walk the placements counterclockwise\n * @returns {Array} placements including their variations\n */\nexport default function clockwise(placement, counter = false) {\n  const index = validPlacements.indexOf(placement);\n  const arr = validPlacements\n    .slice(index + 1)\n    .concat(validPlacements.slice(0, index));\n  return counter ? arr.reverse() : arr;\n}\n","import applyStyle, { applyStyleOnLoad } from './applyStyle';\nimport computeStyle from './computeStyle';\nimport arrow from './arrow';\nimport flip from './flip';\nimport keepTogether from './keepTogether';\nimport offset from './offset';\nimport preventOverflow from './preventOverflow';\nimport shift from './shift';\nimport hide from './hide';\nimport inner from './inner';\n\n/**\n * Modifier function, each modifier can have a function of this type assigned\n * to its `fn` property.<br />\n * These functions will be called on each update, this means that you must\n * make sure they are performant enough to avoid performance bottlenecks.\n *\n * @function ModifierFn\n * @argument {dataObject} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {dataObject} The data object, properly modified\n */\n\n/**\n * Modifiers are plugins used to alter the behavior of your poppers.<br />\n * Popper.js uses a set of 9 modifiers to provide all the basic functionalities\n * needed by the library.\n *\n * Usually you don't want to override the `order`, `fn` and `onLoad` props.\n * All the other properties are configurations that could be tweaked.\n * @namespace modifiers\n */\nexport default {\n  /**\n   * Modifier used to shift the popper on the start or end of its reference\n   * element.<br />\n   * It will read the variation of the `placement` property.<br />\n   * It can be one either `-end` or `-start`.\n   * @memberof modifiers\n   * @inner\n   */\n  shift: {\n    /** @prop {number} order=100 - Index used to define the order of execution */\n    order: 100,\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n    /** @prop {ModifierFn} */\n    fn: shift,\n  },\n\n  /**\n   * The `offset` modifier can shift your popper on both its axis.\n   *\n   * It accepts the following units:\n   * - `px` or unit-less, interpreted as pixels\n   * - `%` or `%r`, percentage relative to the length of the reference element\n   * - `%p`, percentage relative to the length of the popper element\n   * - `vw`, CSS viewport width unit\n   * - `vh`, CSS viewport height unit\n   *\n   * For length is intended the main axis relative to the placement of the popper.<br />\n   * This means that if the placement is `top` or `bottom`, the length will be the\n   * `width`. In case of `left` or `right`, it will be the `height`.\n   *\n   * You can provide a single value (as `Number` or `String`), or a pair of values\n   * as `String` divided by a comma or one (or more) white spaces.<br />\n   * The latter is a deprecated method because it leads to confusion and will be\n   * removed in v2.<br />\n   * Additionally, it accepts additions and subtractions between different units.\n   * Note that multiplications and divisions aren't supported.\n   *\n   * Valid examples are:\n   * ```\n   * 10\n   * '10%'\n   * '10, 10'\n   * '10%, 10'\n   * '10 + 10%'\n   * '10 - 5vh + 3%'\n   * '-10px + 5vh, 5px - 6%'\n   * ```\n   * > **NB**: If you desire to apply offsets to your poppers in a way that may make them overlap\n   * > with their reference element, unfortunately, you will have to disable the `flip` modifier.\n   * > You can read more on this at this [issue](https://github.com/FezVrasta/popper.js/issues/373).\n   *\n   * @memberof modifiers\n   * @inner\n   */\n  offset: {\n    /** @prop {number} order=200 - Index used to define the order of execution */\n    order: 200,\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n    /** @prop {ModifierFn} */\n    fn: offset,\n    /** @prop {Number|String} offset=0\n     * The offset value as described in the modifier description\n     */\n    offset: 0,\n  },\n\n  /**\n   * Modifier used to prevent the popper from being positioned outside the boundary.\n   *\n   * A scenario exists where the reference itself is not within the boundaries.<br />\n   * We can say it has \"escaped the boundaries\" — or just \"escaped\".<br />\n   * In this case we need to decide whether the popper should either:\n   *\n   * - detach from the reference and remain \"trapped\" in the boundaries, or\n   * - if it should ignore the boundary and \"escape with its reference\"\n   *\n   * When `escapeWithReference` is set to`true` and reference is completely\n   * outside its boundaries, the popper will overflow (or completely leave)\n   * the boundaries in order to remain attached to the edge of the reference.\n   *\n   * @memberof modifiers\n   * @inner\n   */\n  preventOverflow: {\n    /** @prop {number} order=300 - Index used to define the order of execution */\n    order: 300,\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n    /** @prop {ModifierFn} */\n    fn: preventOverflow,\n    /**\n     * @prop {Array} [priority=['left','right','top','bottom']]\n     * Popper will try to prevent overflow following these priorities by default,\n     * then, it could overflow on the left and on top of the `boundariesElement`\n     */\n    priority: ['left', 'right', 'top', 'bottom'],\n    /**\n     * @prop {number} padding=5\n     * Amount of pixel used to define a minimum distance between the boundaries\n     * and the popper. This makes sure the popper always has a little padding\n     * between the edges of its container\n     */\n    padding: 5,\n    /**\n     * @prop {String|HTMLElement} boundariesElement='scrollParent'\n     * Boundaries used by the modifier. Can be `scrollParent`, `window`,\n     * `viewport` or any DOM element.\n     */\n    boundariesElement: 'scrollParent',\n  },\n\n  /**\n   * Modifier used to make sure the reference and its popper stay near each other\n   * without leaving any gap between the two. Especially useful when the arrow is\n   * enabled and you want to ensure that it points to its reference element.\n   * It cares only about the first axis. You can still have poppers with margin\n   * between the popper and its reference element.\n   * @memberof modifiers\n   * @inner\n   */\n  keepTogether: {\n    /** @prop {number} order=400 - Index used to define the order of execution */\n    order: 400,\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n    /** @prop {ModifierFn} */\n    fn: keepTogether,\n  },\n\n  /**\n   * This modifier is used to move the `arrowElement` of the popper to make\n   * sure it is positioned between the reference element and its popper element.\n   * It will read the outer size of the `arrowElement` node to detect how many\n   * pixels of conjunction are needed.\n   *\n   * It has no effect if no `arrowElement` is provided.\n   * @memberof modifiers\n   * @inner\n   */\n  arrow: {\n    /** @prop {number} order=500 - Index used to define the order of execution */\n    order: 500,\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n    /** @prop {ModifierFn} */\n    fn: arrow,\n    /** @prop {String|HTMLElement} element='[x-arrow]' - Selector or node used as arrow */\n    element: '[x-arrow]',\n  },\n\n  /**\n   * Modifier used to flip the popper's placement when it starts to overlap its\n   * reference element.\n   *\n   * Requires the `preventOverflow` modifier before it in order to work.\n   *\n   * **NOTE:** this modifier will interrupt the current update cycle and will\n   * restart it if it detects the need to flip the placement.\n   * @memberof modifiers\n   * @inner\n   */\n  flip: {\n    /** @prop {number} order=600 - Index used to define the order of execution */\n    order: 600,\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n    /** @prop {ModifierFn} */\n    fn: flip,\n    /**\n     * @prop {String|Array} behavior='flip'\n     * The behavior used to change the popper's placement. It can be one of\n     * `flip`, `clockwise`, `counterclockwise` or an array with a list of valid\n     * placements (with optional variations)\n     */\n    behavior: 'flip',\n    /**\n     * @prop {number} padding=5\n     * The popper will flip if it hits the edges of the `boundariesElement`\n     */\n    padding: 5,\n    /**\n     * @prop {String|HTMLElement} boundariesElement='viewport'\n     * The element which will define the boundaries of the popper position.\n     * The popper will never be placed outside of the defined boundaries\n     * (except if `keepTogether` is enabled)\n     */\n    boundariesElement: 'viewport',\n    /**\n     * @prop {Boolean} flipVariations=false\n     * The popper will switch placement variation between `-start` and `-end` when\n     * the reference element overlaps its boundaries.\n     *\n     * The original placement should have a set variation.\n     */\n    flipVariations: false,\n    /**\n     * @prop {Boolean} flipVariationsByContent=false\n     * The popper will switch placement variation between `-start` and `-end` when\n     * the popper element overlaps its reference boundaries.\n     *\n     * The original placement should have a set variation.\n     */\n    flipVariationsByContent: false,\n  },\n\n  /**\n   * Modifier used to make the popper flow toward the inner of the reference element.\n   * By default, when this modifier is disabled, the popper will be placed outside\n   * the reference element.\n   * @memberof modifiers\n   * @inner\n   */\n  inner: {\n    /** @prop {number} order=700 - Index used to define the order of execution */\n    order: 700,\n    /** @prop {Boolean} enabled=false - Whether the modifier is enabled or not */\n    enabled: false,\n    /** @prop {ModifierFn} */\n    fn: inner,\n  },\n\n  /**\n   * Modifier used to hide the popper when its reference element is outside of the\n   * popper boundaries. It will set a `x-out-of-boundaries` attribute which can\n   * be used to hide with a CSS selector the popper when its reference is\n   * out of boundaries.\n   *\n   * Requires the `preventOverflow` modifier before it in order to work.\n   * @memberof modifiers\n   * @inner\n   */\n  hide: {\n    /** @prop {number} order=800 - Index used to define the order of execution */\n    order: 800,\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n    /** @prop {ModifierFn} */\n    fn: hide,\n  },\n\n  /**\n   * Computes the style that will be applied to the popper element to gets\n   * properly positioned.\n   *\n   * Note that this modifier will not touch the DOM, it just prepares the styles\n   * so that `applyStyle` modifier can apply it. This separation is useful\n   * in case you need to replace `applyStyle` with a custom implementation.\n   *\n   * This modifier has `850` as `order` value to maintain backward compatibility\n   * with previous versions of Popper.js. Expect the modifiers ordering method\n   * to change in future major versions of the library.\n   *\n   * @memberof modifiers\n   * @inner\n   */\n  computeStyle: {\n    /** @prop {number} order=850 - Index used to define the order of execution */\n    order: 850,\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n    /** @prop {ModifierFn} */\n    fn: computeStyle,\n    /**\n     * @prop {Boolean} gpuAcceleration=true\n     * If true, it uses the CSS 3D transformation to position the popper.\n     * Otherwise, it will use the `top` and `left` properties\n     */\n    gpuAcceleration: true,\n    /**\n     * @prop {string} [x='bottom']\n     * Where to anchor the X axis (`bottom` or `top`). AKA X offset origin.\n     * Change this if your popper should grow in a direction different from `bottom`\n     */\n    x: 'bottom',\n    /**\n     * @prop {string} [x='left']\n     * Where to anchor the Y axis (`left` or `right`). AKA Y offset origin.\n     * Change this if your popper should grow in a direction different from `right`\n     */\n    y: 'right',\n  },\n\n  /**\n   * Applies the computed styles to the popper element.\n   *\n   * All the DOM manipulations are limited to this modifier. This is useful in case\n   * you want to integrate Popper.js inside a framework or view library and you\n   * want to delegate all the DOM manipulations to it.\n   *\n   * Note that if you disable this modifier, you must make sure the popper element\n   * has its position set to `absolute` before Popper.js can do its work!\n   *\n   * Just disable this modifier and define your own to achieve the desired effect.\n   *\n   * @memberof modifiers\n   * @inner\n   */\n  applyStyle: {\n    /** @prop {number} order=900 - Index used to define the order of execution */\n    order: 900,\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n    /** @prop {ModifierFn} */\n    fn: applyStyle,\n    /** @prop {Function} */\n    onLoad: applyStyleOnLoad,\n    /**\n     * @deprecated since version 1.10.0, the property moved to `computeStyle` modifier\n     * @prop {Boolean} gpuAcceleration=true\n     * If true, it uses the CSS 3D transformation to position the popper.\n     * Otherwise, it will use the `top` and `left` properties\n     */\n    gpuAcceleration: undefined,\n  },\n};\n\n/**\n * The `dataObject` is an object containing all the information used by Popper.js.\n * This object is passed to modifiers and to the `onCreate` and `onUpdate` callbacks.\n * @name dataObject\n * @property {Object} data.instance The Popper.js instance\n * @property {String} data.placement Placement applied to popper\n * @property {String} data.originalPlacement Placement originally defined on init\n * @property {Boolean} data.flipped True if popper has been flipped by flip modifier\n * @property {Boolean} data.hide True if the reference element is out of boundaries, useful to know when to hide the popper\n * @property {HTMLElement} data.arrowElement Node used as arrow by arrow modifier\n * @property {Object} data.styles Any CSS property defined here will be applied to the popper. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.arrowStyles Any CSS property defined here will be applied to the popper arrow. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.boundaries Offsets of the popper boundaries\n * @property {Object} data.offsets The measurements of popper, reference and arrow elements\n * @property {Object} data.offsets.popper `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.reference `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.arrow] `top` and `left` offsets, only one of them will be different from 0\n */\n","import modifiers from '../modifiers/index';\n\n/**\n * Default options provided to Popper.js constructor.<br />\n * These can be overridden using the `options` argument of Popper.js.<br />\n * To override an option, simply pass an object with the same\n * structure of the `options` object, as the 3rd argument. For example:\n * ```\n * new Popper(ref, pop, {\n *   modifiers: {\n *     preventOverflow: { enabled: false }\n *   }\n * })\n * ```\n * @type {Object}\n * @static\n * @memberof Popper\n */\nexport default {\n  /**\n   * Popper's placement.\n   * @prop {Popper.placements} placement='bottom'\n   */\n  placement: 'bottom',\n\n  /**\n   * Set this to true if you want popper to position it self in 'fixed' mode\n   * @prop {Boolean} positionFixed=false\n   */\n  positionFixed: false,\n\n  /**\n   * Whether events (resize, scroll) are initially enabled.\n   * @prop {Boolean} eventsEnabled=true\n   */\n  eventsEnabled: true,\n\n  /**\n   * Set to true if you want to automatically remove the popper when\n   * you call the `destroy` method.\n   * @prop {Boolean} removeOnDestroy=false\n   */\n  removeOnDestroy: false,\n\n  /**\n   * Callback called when the popper is created.<br />\n   * By default, it is set to no-op.<br />\n   * Access Popper.js instance with `data.instance`.\n   * @prop {onCreate}\n   */\n  onCreate: () => {},\n\n  /**\n   * Callback called when the popper is updated. This callback is not called\n   * on the initialization/creation of the popper, but only on subsequent\n   * updates.<br />\n   * By default, it is set to no-op.<br />\n   * Access Popper.js instance with `data.instance`.\n   * @prop {onUpdate}\n   */\n  onUpdate: () => {},\n\n  /**\n   * List of modifiers used to modify the offsets before they are applied to the popper.\n   * They provide most of the functionalities of Popper.js.\n   * @prop {modifiers}\n   */\n  modifiers,\n};\n\n/**\n * @callback onCreate\n * @param {dataObject} data\n */\n\n/**\n * @callback onUpdate\n * @param {dataObject} data\n */\n","/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function shift(data) {\n  const placement = data.placement;\n  const basePlacement = placement.split('-')[0];\n  const shiftvariation = placement.split('-')[1];\n\n  // if shift shiftvariation is specified, run the modifier\n  if (shiftvariation) {\n    const { reference, popper } = data.offsets;\n    const isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1;\n    const side = isVertical ? 'left' : 'top';\n    const measurement = isVertical ? 'width' : 'height';\n\n    const shiftOffsets = {\n      start: { [side]: reference[side] },\n      end: {\n        [side]: reference[side] + reference[measurement] - popper[measurement],\n      },\n    };\n\n    data.offsets.popper = { ...popper, ...shiftOffsets[shiftvariation] };\n  }\n\n  return data;\n}\n","import isNumeric from '../utils/isNumeric';\nimport getClientRect from '../utils/getClientRect';\nimport find from '../utils/find';\n\n/**\n * Converts a string containing value + unit into a px value number\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} str - Value + unit string\n * @argument {String} measurement - `height` or `width`\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @returns {Number|String}\n * Value in pixels, or original string if no values were extracted\n */\nexport function toValue(str, measurement, popperOffsets, referenceOffsets) {\n  // separate value from unit\n  const split = str.match(/((?:\\-|\\+)?\\d*\\.?\\d*)(.*)/);\n  const value = +split[1];\n  const unit = split[2];\n\n  // If it's not a number it's an operator, I guess\n  if (!value) {\n    return str;\n  }\n\n  if (unit.indexOf('%') === 0) {\n    let element;\n    switch (unit) {\n      case '%p':\n        element = popperOffsets;\n        break;\n      case '%':\n      case '%r':\n      default:\n        element = referenceOffsets;\n    }\n\n    const rect = getClientRect(element);\n    return rect[measurement] / 100 * value;\n  } else if (unit === 'vh' || unit === 'vw') {\n    // if is a vh or vw, we calculate the size based on the viewport\n    let size;\n    if (unit === 'vh') {\n      size = Math.max(\n        document.documentElement.clientHeight,\n        window.innerHeight || 0\n      );\n    } else {\n      size = Math.max(\n        document.documentElement.clientWidth,\n        window.innerWidth || 0\n      );\n    }\n    return size / 100 * value;\n  } else {\n    // if is an explicit pixel unit, we get rid of the unit and keep the value\n    // if is an implicit unit, it's px, and we return just the value\n    return value;\n  }\n}\n\n/**\n * Parse an `offset` string to extrapolate `x` and `y` numeric offsets.\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} offset\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @argument {String} basePlacement\n * @returns {Array} a two cells array with x and y offsets in numbers\n */\nexport function parseOffset(\n  offset,\n  popperOffsets,\n  referenceOffsets,\n  basePlacement\n) {\n  const offsets = [0, 0];\n\n  // Use height if placement is left or right and index is 0 otherwise use width\n  // in this way the first offset will use an axis and the second one\n  // will use the other one\n  const useHeight = ['right', 'left'].indexOf(basePlacement) !== -1;\n\n  // Split the offset string to obtain a list of values and operands\n  // The regex addresses values with the plus or minus sign in front (+10, -20, etc)\n  const fragments = offset.split(/(\\+|\\-)/).map(frag => frag.trim());\n\n  // Detect if the offset string contains a pair of values or a single one\n  // they could be separated by comma or space\n  const divider = fragments.indexOf(\n    find(fragments, frag => frag.search(/,|\\s/) !== -1)\n  );\n\n  if (fragments[divider] && fragments[divider].indexOf(',') === -1) {\n    console.warn(\n      'Offsets separated by white space(s) are deprecated, use a comma (,) instead.'\n    );\n  }\n\n  // If divider is found, we divide the list of values and operands to divide\n  // them by ofset X and Y.\n  const splitRegex = /\\s*,\\s*|\\s+/;\n  let ops = divider !== -1\n    ? [\n        fragments\n          .slice(0, divider)\n          .concat([fragments[divider].split(splitRegex)[0]]),\n        [fragments[divider].split(splitRegex)[1]].concat(\n          fragments.slice(divider + 1)\n        ),\n      ]\n    : [fragments];\n\n  // Convert the values with units to absolute pixels to allow our computations\n  ops = ops.map((op, index) => {\n    // Most of the units rely on the orientation of the popper\n    const measurement = (index === 1 ? !useHeight : useHeight)\n      ? 'height'\n      : 'width';\n    let mergeWithPrevious = false;\n    return (\n      op\n        // This aggregates any `+` or `-` sign that aren't considered operators\n        // e.g.: 10 + +5 => [10, +, +5]\n        .reduce((a, b) => {\n          if (a[a.length - 1] === '' && ['+', '-'].indexOf(b) !== -1) {\n            a[a.length - 1] = b;\n            mergeWithPrevious = true;\n            return a;\n          } else if (mergeWithPrevious) {\n            a[a.length - 1] += b;\n            mergeWithPrevious = false;\n            return a;\n          } else {\n            return a.concat(b);\n          }\n        }, [])\n        // Here we convert the string values into number values (in px)\n        .map(str => toValue(str, measurement, popperOffsets, referenceOffsets))\n    );\n  });\n\n  // Loop trough the offsets arrays and execute the operations\n  ops.forEach((op, index) => {\n    op.forEach((frag, index2) => {\n      if (isNumeric(frag)) {\n        offsets[index] += frag * (op[index2 - 1] === '-' ? -1 : 1);\n      }\n    });\n  });\n  return offsets;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @argument {Number|String} options.offset=0\n * The offset value as described in the modifier description\n * @returns {Object} The data object, properly modified\n */\nexport default function offset(data, { offset }) {\n  const { placement, offsets: { popper, reference } } = data;\n  const basePlacement = placement.split('-')[0];\n\n  let offsets;\n  if (isNumeric(+offset)) {\n    offsets = [+offset, 0];\n  } else {\n    offsets = parseOffset(offset, popper, reference, basePlacement);\n  }\n\n  if (basePlacement === 'left') {\n    popper.top += offsets[0];\n    popper.left -= offsets[1];\n  } else if (basePlacement === 'right') {\n    popper.top += offsets[0];\n    popper.left += offsets[1];\n  } else if (basePlacement === 'top') {\n    popper.left += offsets[0];\n    popper.top -= offsets[1];\n  } else if (basePlacement === 'bottom') {\n    popper.left += offsets[0];\n    popper.top += offsets[1];\n  }\n\n  data.popper = popper;\n  return data;\n}\n","import getOffsetParent from '../utils/getOffsetParent';\nimport getBoundaries from '../utils/getBoundaries';\nimport getSupportedPropertyName from '../utils/getSupportedPropertyName';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function preventOverflow(data, options) {\n  let boundariesElement =\n    options.boundariesElement || getOffsetParent(data.instance.popper);\n\n  // If offsetParent is the reference element, we really want to\n  // go one step up and use the next offsetParent as reference to\n  // avoid to make this modifier completely useless and look like broken\n  if (data.instance.reference === boundariesElement) {\n    boundariesElement = getOffsetParent(boundariesElement);\n  }\n\n  // NOTE: DOM access here\n  // resets the popper's position so that the document size can be calculated excluding\n  // the size of the popper element itself\n  const transformProp = getSupportedPropertyName('transform');\n  const popperStyles = data.instance.popper.style; // assignment to help minification\n  const { top, left, [transformProp]: transform } = popperStyles;\n  popperStyles.top = '';\n  popperStyles.left = '';\n  popperStyles[transformProp] = '';\n\n  const boundaries = getBoundaries(\n    data.instance.popper,\n    data.instance.reference,\n    options.padding,\n    boundariesElement,\n    data.positionFixed\n  );\n\n  // NOTE: DOM access here\n  // restores the original style properties after the offsets have been computed\n  popperStyles.top = top;\n  popperStyles.left = left;\n  popperStyles[transformProp] = transform;\n\n  options.boundaries = boundaries;\n\n  const order = options.priority;\n  let popper = data.offsets.popper;\n\n  const check = {\n    primary(placement) {\n      let value = popper[placement];\n      if (\n        popper[placement] < boundaries[placement] &&\n        !options.escapeWithReference\n      ) {\n        value = Math.max(popper[placement], boundaries[placement]);\n      }\n      return { [placement]: value };\n    },\n    secondary(placement) {\n      const mainSide = placement === 'right' ? 'left' : 'top';\n      let value = popper[mainSide];\n      if (\n        popper[placement] > boundaries[placement] &&\n        !options.escapeWithReference\n      ) {\n        value = Math.min(\n          popper[mainSide],\n          boundaries[placement] -\n            (placement === 'right' ? popper.width : popper.height)\n        );\n      }\n      return { [mainSide]: value };\n    },\n  };\n\n  order.forEach(placement => {\n    const side =\n      ['left', 'top'].indexOf(placement) !== -1 ? 'primary' : 'secondary';\n    popper = { ...popper, ...check[side](placement) };\n  });\n\n  data.offsets.popper = popper;\n\n  return data;\n}\n","/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function keepTogether(data) {\n  const { popper, reference } = data.offsets;\n  const placement = data.placement.split('-')[0];\n  const floor = Math.floor;\n  const isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n  const side = isVertical ? 'right' : 'bottom';\n  const opSide = isVertical ? 'left' : 'top';\n  const measurement = isVertical ? 'width' : 'height';\n\n  if (popper[side] < floor(reference[opSide])) {\n    data.offsets.popper[opSide] =\n      floor(reference[opSide]) - popper[measurement];\n  }\n  if (popper[opSide] > floor(reference[side])) {\n    data.offsets.popper[opSide] = floor(reference[side]);\n  }\n\n  return data;\n}\n","import getClientRect from '../utils/getClientRect';\nimport getOuterSizes from '../utils/getOuterSizes';\nimport isModifierRequired from '../utils/isModifierRequired';\nimport getStyleComputedProperty from '../utils/getStyleComputedProperty';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function arrow(data, options) {\n  // arrow depends on keepTogether in order to work\n  if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) {\n    return data;\n  }\n\n  let arrowElement = options.element;\n\n  // if arrowElement is a string, suppose it's a CSS selector\n  if (typeof arrowElement === 'string') {\n    arrowElement = data.instance.popper.querySelector(arrowElement);\n\n    // if arrowElement is not found, don't run the modifier\n    if (!arrowElement) {\n      return data;\n    }\n  } else {\n    // if the arrowElement isn't a query selector we must check that the\n    // provided DOM node is child of its popper node\n    if (!data.instance.popper.contains(arrowElement)) {\n      console.warn(\n        'WARNING: `arrow.element` must be child of its popper element!'\n      );\n      return data;\n    }\n  }\n\n  const placement = data.placement.split('-')[0];\n  const { popper, reference } = data.offsets;\n  const isVertical = ['left', 'right'].indexOf(placement) !== -1;\n\n  const len = isVertical ? 'height' : 'width';\n  const sideCapitalized = isVertical ? 'Top' : 'Left';\n  const side = sideCapitalized.toLowerCase();\n  const altSide = isVertical ? 'left' : 'top';\n  const opSide = isVertical ? 'bottom' : 'right';\n  const arrowElementSize = getOuterSizes(arrowElement)[len];\n\n  //\n  // extends keepTogether behavior making sure the popper and its\n  // reference have enough pixels in conjunction\n  //\n\n  // top/left side\n  if (reference[opSide] - arrowElementSize < popper[side]) {\n    data.offsets.popper[side] -=\n      popper[side] - (reference[opSide] - arrowElementSize);\n  }\n  // bottom/right side\n  if (reference[side] + arrowElementSize > popper[opSide]) {\n    data.offsets.popper[side] +=\n      reference[side] + arrowElementSize - popper[opSide];\n  }\n  data.offsets.popper = getClientRect(data.offsets.popper);\n\n  // compute center of the popper\n  const center = reference[side] + reference[len] / 2 - arrowElementSize / 2;\n\n  // Compute the sideValue using the updated popper offsets\n  // take popper margin in account because we don't have this info available\n  const css = getStyleComputedProperty(data.instance.popper);\n  const popperMarginSide = parseFloat(css[`margin${sideCapitalized}`]);\n  const popperBorderSide = parseFloat(css[`border${sideCapitalized}Width`]);\n  let sideValue =\n    center - data.offsets.popper[side] - popperMarginSide - popperBorderSide;\n\n  // prevent arrowElement from being placed not contiguously to its popper\n  sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0);\n\n  data.arrowElement = arrowElement;\n  data.offsets.arrow = {\n    [side]: Math.round(sideValue),\n    [altSide]: '', // make sure to unset any eventual altSide value from the DOM node\n  };\n\n  return data;\n}\n","import getOppositePlacement from '../utils/getOppositePlacement';\nimport getOppositeVariation from '../utils/getOppositeVariation';\nimport getPopperOffsets from '../utils/getPopperOffsets';\nimport runModifiers from '../utils/runModifiers';\nimport getBoundaries from '../utils/getBoundaries';\nimport isModifierEnabled from '../utils/isModifierEnabled';\nimport clockwise from '../utils/clockwise';\n\nconst BEHAVIORS = {\n  FLIP: 'flip',\n  CLOCKWISE: 'clockwise',\n  COUNTERCLOCKWISE: 'counterclockwise',\n};\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function flip(data, options) {\n  // if `inner` modifier is enabled, we can't use the `flip` modifier\n  if (isModifierEnabled(data.instance.modifiers, 'inner')) {\n    return data;\n  }\n\n  if (data.flipped && data.placement === data.originalPlacement) {\n    // seems like flip is trying to loop, probably there's not enough space on any of the flippable sides\n    return data;\n  }\n\n  const boundaries = getBoundaries(\n    data.instance.popper,\n    data.instance.reference,\n    options.padding,\n    options.boundariesElement,\n    data.positionFixed\n  );\n\n  let placement = data.placement.split('-')[0];\n  let placementOpposite = getOppositePlacement(placement);\n  let variation = data.placement.split('-')[1] || '';\n\n  let flipOrder = [];\n\n  switch (options.behavior) {\n    case BEHAVIORS.FLIP:\n      flipOrder = [placement, placementOpposite];\n      break;\n    case BEHAVIORS.CLOCKWISE:\n      flipOrder = clockwise(placement);\n      break;\n    case BEHAVIORS.COUNTERCLOCKWISE:\n      flipOrder = clockwise(placement, true);\n      break;\n    default:\n      flipOrder = options.behavior;\n  }\n\n  flipOrder.forEach((step, index) => {\n    if (placement !== step || flipOrder.length === index + 1) {\n      return data;\n    }\n\n    placement = data.placement.split('-')[0];\n    placementOpposite = getOppositePlacement(placement);\n\n    const popperOffsets = data.offsets.popper;\n    const refOffsets = data.offsets.reference;\n\n    // using floor because the reference offsets may contain decimals we are not going to consider here\n    const floor = Math.floor;\n    const overlapsRef =\n      (placement === 'left' &&\n        floor(popperOffsets.right) > floor(refOffsets.left)) ||\n      (placement === 'right' &&\n        floor(popperOffsets.left) < floor(refOffsets.right)) ||\n      (placement === 'top' &&\n        floor(popperOffsets.bottom) > floor(refOffsets.top)) ||\n      (placement === 'bottom' &&\n        floor(popperOffsets.top) < floor(refOffsets.bottom));\n\n    const overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left);\n    const overflowsRight = floor(popperOffsets.right) > floor(boundaries.right);\n    const overflowsTop = floor(popperOffsets.top) < floor(boundaries.top);\n    const overflowsBottom =\n      floor(popperOffsets.bottom) > floor(boundaries.bottom);\n\n    const overflowsBoundaries =\n      (placement === 'left' && overflowsLeft) ||\n      (placement === 'right' && overflowsRight) ||\n      (placement === 'top' && overflowsTop) ||\n      (placement === 'bottom' && overflowsBottom);\n\n    // flip the variation if required\n    const isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n\n    // flips variation if reference element overflows boundaries\n    const flippedVariationByRef =\n      !!options.flipVariations &&\n      ((isVertical && variation === 'start' && overflowsLeft) ||\n        (isVertical && variation === 'end' && overflowsRight) ||\n        (!isVertical && variation === 'start' && overflowsTop) ||\n        (!isVertical && variation === 'end' && overflowsBottom));\n\n    // flips variation if popper content overflows boundaries\n    const flippedVariationByContent =\n      !!options.flipVariationsByContent &&\n      ((isVertical && variation === 'start' && overflowsRight) ||\n        (isVertical && variation === 'end' && overflowsLeft) ||\n        (!isVertical && variation === 'start' && overflowsBottom) ||\n        (!isVertical && variation === 'end' && overflowsTop));\n\n    const flippedVariation = flippedVariationByRef || flippedVariationByContent;\n\n    if (overlapsRef || overflowsBoundaries || flippedVariation) {\n      // this boolean to detect any flip loop\n      data.flipped = true;\n\n      if (overlapsRef || overflowsBoundaries) {\n        placement = flipOrder[index + 1];\n      }\n\n      if (flippedVariation) {\n        variation = getOppositeVariation(variation);\n      }\n\n      data.placement = placement + (variation ? '-' + variation : '');\n\n      // this object contains `position`, we want to preserve it along with\n      // any additional property we may add in the future\n      data.offsets.popper = {\n        ...data.offsets.popper,\n        ...getPopperOffsets(\n          data.instance.popper,\n          data.offsets.reference,\n          data.placement\n        ),\n      };\n\n      data = runModifiers(data.instance.modifiers, data, 'flip');\n    }\n  });\n  return data;\n}\n","/**\n * Get the opposite placement variation of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement variation\n * @returns {String} flipped placement variation\n */\nexport default function getOppositeVariation(variation) {\n  if (variation === 'end') {\n    return 'start';\n  } else if (variation === 'start') {\n    return 'end';\n  }\n  return variation;\n}\n","import getClientRect from '../utils/getClientRect';\nimport getOppositePlacement from '../utils/getOppositePlacement';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function inner(data) {\n  const placement = data.placement;\n  const basePlacement = placement.split('-')[0];\n  const { popper, reference } = data.offsets;\n  const isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1;\n\n  const subtractLength = ['top', 'left'].indexOf(basePlacement) === -1;\n\n  popper[isHoriz ? 'left' : 'top'] =\n    reference[basePlacement] -\n    (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0);\n\n  data.placement = getOppositePlacement(placement);\n  data.offsets.popper = getClientRect(popper);\n\n  return data;\n}\n","import isModifierRequired from '../utils/isModifierRequired';\nimport find from '../utils/find';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function hide(data) {\n  if (!isModifierRequired(data.instance.modifiers, 'hide', 'preventOverflow')) {\n    return data;\n  }\n\n  const refRect = data.offsets.reference;\n  const bound = find(\n    data.instance.modifiers,\n    modifier => modifier.name === 'preventOverflow'\n  ).boundaries;\n\n  if (\n    refRect.bottom < bound.top ||\n    refRect.left > bound.right ||\n    refRect.top > bound.bottom ||\n    refRect.right < bound.left\n  ) {\n    // Avoid unnecessary DOM access if visibility hasn't changed\n    if (data.hide === true) {\n      return data;\n    }\n\n    data.hide = true;\n    data.attributes['x-out-of-boundaries'] = '';\n  } else {\n    // Avoid unnecessary DOM access if visibility hasn't changed\n    if (data.hide === false) {\n      return data;\n    }\n\n    data.hide = false;\n    data.attributes['x-out-of-boundaries'] = false;\n  }\n\n  return data;\n}\n","/**\n * @function\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Boolean} shouldRound - If the offsets should be rounded at all\n * @returns {Object} The popper's position offsets rounded\n *\n * The tale of pixel-perfect positioning. It's still not 100% perfect, but as\n * good as it can be within reason.\n * Discussion here: https://github.com/FezVrasta/popper.js/pull/715\n *\n * Low DPI screens cause a popper to be blurry if not using full pixels (Safari\n * as well on High DPI screens).\n *\n * Firefox prefers no rounding for positioning and does not have blurriness on\n * high DPI screens.\n *\n * Only horizontal placement and left/right values need to be considered.\n */\nexport default function getRoundedOffsets(data, shouldRound) {\n  const { popper, reference } = data.offsets;\n  const { round, floor } = Math;\n  const noRound = v => v;\n  \n  const referenceWidth = round(reference.width);\n  const popperWidth = round(popper.width);\n  \n  const isVertical = ['left', 'right'].indexOf(data.placement) !== -1;\n  const isVariation = data.placement.indexOf('-') !== -1;\n  const sameWidthParity = referenceWidth % 2 === popperWidth % 2;\n  const bothOddWidth = referenceWidth % 2 === 1 && popperWidth % 2 === 1;\n\n  const horizontalToInteger = !shouldRound\n    ? noRound\n    : isVertical || isVariation || sameWidthParity\n    ? round\n    : floor;\n  const verticalToInteger = !shouldRound ? noRound : round;\n\n  return {\n    left: horizontalToInteger(\n      bothOddWidth && !isVariation && shouldRound\n        ? popper.left - 1\n        : popper.left\n    ),\n    top: verticalToInteger(popper.top),\n    bottom: verticalToInteger(popper.bottom),\n    right: horizontalToInteger(popper.right),\n  };\n}\n","import setStyles from '../utils/setStyles';\nimport setAttributes from '../utils/setAttributes';\nimport getReferenceOffsets from '../utils/getReferenceOffsets';\nimport computeAutoPlacement from '../utils/computeAutoPlacement';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} data.styles - List of style properties - values to apply to popper element\n * @argument {Object} data.attributes - List of attribute properties - values to apply to popper element\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The same data object\n */\nexport default function applyStyle(data) {\n  // any property present in `data.styles` will be applied to the popper,\n  // in this way we can make the 3rd party modifiers add custom styles to it\n  // Be aware, modifiers could override the properties defined in the previous\n  // lines of this modifier!\n  setStyles(data.instance.popper, data.styles);\n\n  // any property present in `data.attributes` will be applied to the popper,\n  // they will be set as HTML attributes of the element\n  setAttributes(data.instance.popper, data.attributes);\n\n  // if arrowElement is defined and arrowStyles has some properties\n  if (data.arrowElement && Object.keys(data.arrowStyles).length) {\n    setStyles(data.arrowElement, data.arrowStyles);\n  }\n\n  return data;\n}\n\n/**\n * Set the x-placement attribute before everything else because it could be used\n * to add margins to the popper margins needs to be calculated to get the\n * correct popper offsets.\n * @method\n * @memberof Popper.modifiers\n * @param {HTMLElement} reference - The reference element used to position the popper\n * @param {HTMLElement} popper - The HTML element used as popper\n * @param {Object} options - Popper.js options\n */\nexport function applyStyleOnLoad(\n  reference,\n  popper,\n  options,\n  modifierOptions,\n  state\n) {\n  // compute reference element offsets\n  const referenceOffsets = getReferenceOffsets(state, popper, reference, options.positionFixed);\n\n  // compute auto placement, store placement inside the data object,\n  // modifiers will be able to edit `placement` if needed\n  // and refer to originalPlacement to know the original value\n  const placement = computeAutoPlacement(\n    options.placement,\n    referenceOffsets,\n    popper,\n    reference,\n    options.modifiers.flip.boundariesElement,\n    options.modifiers.flip.padding\n  );\n\n  popper.setAttribute('x-placement', placement);\n\n  // Apply `position` to popper before anything else because\n  // without the position applied we can't guarantee correct computations\n  setStyles(popper, { position: options.positionFixed ? 'fixed' : 'absolute' });\n\n  return options;\n}\n","/**\n * Set the attributes to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the attributes to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nexport default function setAttributes(element, attributes) {\n  Object.keys(attributes).forEach(function(prop) {\n    const value = attributes[prop];\n    if (value !== false) {\n      element.setAttribute(prop, attributes[prop]);\n    } else {\n      element.removeAttribute(prop);\n    }\n  });\n}\n","\nfunction callbacksFor(object) {\n  var callbacks = object._promiseCallbacks;\n\n  if (!callbacks) {\n    callbacks = object._promiseCallbacks = {};\n  }\n\n  return callbacks;\n}\n\n/**\n  @class EventTarget\n  @for rsvp\n  @public\n*/\nexport default {\n\n  /**\n    `EventTarget.mixin` extends an object with EventTarget methods. For\n    Example:\n     ```javascript\n    import EventTarget from 'rsvp';\n     let object = {};\n     EventTarget.mixin(object);\n     object.on('finished', function(event) {\n      // handle event\n    });\n     object.trigger('finished', { detail: value });\n    ```\n     `EventTarget.mixin` also works with prototypes:\n     ```javascript\n    import EventTarget from 'rsvp';\n     let Person = function() {};\n    EventTarget.mixin(Person.prototype);\n     let yehuda = new Person();\n    let tom = new Person();\n     yehuda.on('poke', function(event) {\n      console.log('Yehuda says OW');\n    });\n     tom.on('poke', function(event) {\n      console.log('Tom says OW');\n    });\n     yehuda.trigger('poke');\n    tom.trigger('poke');\n    ```\n     @method mixin\n    @for rsvp\n    @private\n    @param {Object} object object to extend with EventTarget methods\n  */\n  mixin: function (object) {\n    object.on = this.on;\n    object.off = this.off;\n    object.trigger = this.trigger;\n    object._promiseCallbacks = undefined;\n    return object;\n  },\n\n\n  /**\n    Registers a callback to be executed when `eventName` is triggered\n     ```javascript\n    object.on('event', function(eventInfo){\n      // handle the event\n    });\n     object.trigger('event');\n    ```\n     @method on\n    @for EventTarget\n    @private\n    @param {String} eventName name of the event to listen for\n    @param {Function} callback function to be called when the event is triggered.\n  */\n  on: function (eventName, callback) {\n    if (typeof callback !== 'function') {\n      throw new TypeError('Callback must be a function');\n    }\n\n    var allCallbacks = callbacksFor(this);\n    var callbacks = allCallbacks[eventName];\n\n    if (!callbacks) {\n      callbacks = allCallbacks[eventName] = [];\n    }\n\n    if (callbacks.indexOf(callback) === -1) {\n      callbacks.push(callback);\n    }\n  },\n\n\n  /**\n    You can use `off` to stop firing a particular callback for an event:\n     ```javascript\n    function doStuff() { // do stuff! }\n    object.on('stuff', doStuff);\n     object.trigger('stuff'); // doStuff will be called\n     // Unregister ONLY the doStuff callback\n    object.off('stuff', doStuff);\n    object.trigger('stuff'); // doStuff will NOT be called\n    ```\n     If you don't pass a `callback` argument to `off`, ALL callbacks for the\n    event will not be executed when the event fires. For example:\n     ```javascript\n    let callback1 = function(){};\n    let callback2 = function(){};\n     object.on('stuff', callback1);\n    object.on('stuff', callback2);\n     object.trigger('stuff'); // callback1 and callback2 will be executed.\n     object.off('stuff');\n    object.trigger('stuff'); // callback1 and callback2 will not be executed!\n    ```\n     @method off\n    @for rsvp\n    @private\n    @param {String} eventName event to stop listening to\n    @param {Function} [callback] optional argument. If given, only the function\n    given will be removed from the event's callback queue. If no `callback`\n    argument is given, all callbacks will be removed from the event's callback\n    queue.\n  */\n  off: function (eventName, callback) {\n    var allCallbacks = callbacksFor(this);\n\n    if (!callback) {\n      allCallbacks[eventName] = [];\n      return;\n    }\n\n    var callbacks = allCallbacks[eventName];\n    var index = callbacks.indexOf(callback);\n\n    if (index !== -1) {\n      callbacks.splice(index, 1);\n    }\n  },\n\n\n  /**\n    Use `trigger` to fire custom events. For example:\n     ```javascript\n    object.on('foo', function(){\n      console.log('foo event happened!');\n    });\n    object.trigger('foo');\n    // 'foo event happened!' logged to the console\n    ```\n     You can also pass a value as a second argument to `trigger` that will be\n    passed as an argument to all event listeners for the event:\n     ```javascript\n    object.on('foo', function(value){\n      console.log(value.name);\n    });\n     object.trigger('foo', { name: 'bar' });\n    // 'bar' logged to the console\n    ```\n     @method trigger\n    @for rsvp\n    @private\n    @param {String} eventName name of the event to be triggered\n    @param {*} [options] optional value to be passed to any event handlers for\n    the given `eventName`\n  */\n  trigger: function (eventName, options, label) {\n    var allCallbacks = callbacksFor(this);\n\n    var callbacks = allCallbacks[eventName];\n    if (callbacks) {\n      // Don't cache the callbacks.length since it may grow\n      var callback = void 0;\n      for (var i = 0; i < callbacks.length; i++) {\n        callback = callbacks[i];\n        callback(options, label);\n      }\n    }\n  }\n};","import EventTarget from './events';\n\nvar config = {\n  instrument: false\n};\n\nEventTarget['mixin'](config);\n\nfunction configure(name, value) {\n  if (arguments.length === 2) {\n    config[name] = value;\n  } else {\n    return config[name];\n  }\n}\n\nexport { config, configure };","import { config } from './config';\n\nvar queue = [];\n\nfunction scheduleFlush() {\n  setTimeout(function () {\n    for (var i = 0; i < queue.length; i++) {\n      var entry = queue[i];\n\n      var payload = entry.payload;\n\n      payload.guid = payload.key + payload.id;\n      payload.childGuid = payload.key + payload.childId;\n      if (payload.error) {\n        payload.stack = payload.error.stack;\n      }\n\n      config['trigger'](entry.name, entry.payload);\n    }\n    queue.length = 0;\n  }, 50);\n}\n\nexport default function instrument(eventName, promise, child) {\n  if (1 === queue.push({\n    name: eventName,\n    payload: {\n      key: promise._guidKey,\n      id: promise._id,\n      eventName: eventName,\n      detail: promise._result,\n      childId: child && child._id,\n      label: promise._label,\n      timeStamp: Date.now(),\n      error: config[\"instrument-with-stack\"] ? new Error(promise._label) : null\n    } })) {\n    scheduleFlush();\n  }\n}","import { noop, resolve as _resolve } from '../-internal';\n\n/**\n  `Promise.resolve` returns a promise that will become resolved with the\n  passed `value`. It is shorthand for the following:\n\n  ```javascript\n  import Promise from 'rsvp';\n\n  let promise = new Promise(function(resolve, reject){\n    resolve(1);\n  });\n\n  promise.then(function(value){\n    // value === 1\n  });\n  ```\n\n  Instead of writing the above, your code now simply becomes the following:\n\n  ```javascript\n  import Promise from 'rsvp';\n\n  let promise = RSVP.Promise.resolve(1);\n\n  promise.then(function(value){\n    // value === 1\n  });\n  ```\n\n  @method resolve\n  @for Promise\n  @static\n  @param {*} object value that the returned promise will be resolved with\n  @param {String} [label] optional string for identifying the returned promise.\n  Useful for tooling.\n  @return {Promise} a promise that will become fulfilled with the given\n  `value`\n*/\nexport default function resolve(object, label) {\n  /*jshint validthis:true */\n  var Constructor = this;\n\n  if (object && typeof object === 'object' && object.constructor === Constructor) {\n    return object;\n  }\n\n  var promise = new Constructor(noop, label);\n  _resolve(promise, object);\n  return promise;\n}","import originalThen from './then';\nimport originalResolve from './promise/resolve';\nimport instrument from './instrument';\n\nimport { config } from './config';\nimport Promise from './promise';\n\nfunction withOwnPromise() {\n  return new TypeError('A promises callback cannot return that same promise.');\n}\n\nfunction objectOrFunction(x) {\n  var type = typeof x;\n  return x !== null && (type === 'object' || type === 'function');\n}\n\nexport function noop() {}\n\nexport var PENDING = void 0;\nexport var FULFILLED = 1;\nexport var REJECTED = 2;\n\nexport var TRY_CATCH_ERROR = { error: null };\n\nexport function getThen(promise) {\n  try {\n    return promise.then;\n  } catch (error) {\n    TRY_CATCH_ERROR.error = error;\n    return TRY_CATCH_ERROR;\n  }\n}\n\nvar tryCatchCallback = void 0;\nfunction tryCatcher() {\n  try {\n    var target = tryCatchCallback;\n    tryCatchCallback = null;\n    return target.apply(this, arguments);\n  } catch (e) {\n    TRY_CATCH_ERROR.error = e;\n    return TRY_CATCH_ERROR;\n  }\n}\n\nexport function tryCatch(fn) {\n  tryCatchCallback = fn;\n  return tryCatcher;\n}\n\nfunction handleForeignThenable(promise, thenable, then) {\n  config.async(function (promise) {\n    var sealed = false;\n    var result = tryCatch(then).call(thenable, function (value) {\n      if (sealed) {\n        return;\n      }\n      sealed = true;\n      if (thenable === value) {\n        fulfill(promise, value);\n      } else {\n        resolve(promise, value);\n      }\n    }, function (reason) {\n      if (sealed) {\n        return;\n      }\n      sealed = true;\n\n      reject(promise, reason);\n    }, 'Settle: ' + (promise._label || ' unknown promise'));\n\n    if (!sealed && result === TRY_CATCH_ERROR) {\n      sealed = true;\n      var error = TRY_CATCH_ERROR.error;\n      TRY_CATCH_ERROR.error = null;\n      reject(promise, error);\n    }\n  }, promise);\n}\n\nfunction handleOwnThenable(promise, thenable) {\n  if (thenable._state === FULFILLED) {\n    fulfill(promise, thenable._result);\n  } else if (thenable._state === REJECTED) {\n    thenable._onError = null;\n    reject(promise, thenable._result);\n  } else {\n    subscribe(thenable, undefined, function (value) {\n      if (thenable === value) {\n        fulfill(promise, value);\n      } else {\n        resolve(promise, value);\n      }\n    }, function (reason) {\n      return reject(promise, reason);\n    });\n  }\n}\n\nexport function handleMaybeThenable(promise, maybeThenable, then) {\n  var isOwnThenable = maybeThenable.constructor === promise.constructor && then === originalThen && promise.constructor.resolve === originalResolve;\n\n  if (isOwnThenable) {\n    handleOwnThenable(promise, maybeThenable);\n  } else if (then === TRY_CATCH_ERROR) {\n    var error = TRY_CATCH_ERROR.error;\n    TRY_CATCH_ERROR.error = null;\n    reject(promise, error);\n  } else if (typeof then === 'function') {\n    handleForeignThenable(promise, maybeThenable, then);\n  } else {\n    fulfill(promise, maybeThenable);\n  }\n}\n\nexport function resolve(promise, value) {\n  if (promise === value) {\n    fulfill(promise, value);\n  } else if (objectOrFunction(value)) {\n    handleMaybeThenable(promise, value, getThen(value));\n  } else {\n    fulfill(promise, value);\n  }\n}\n\nexport function publishRejection(promise) {\n  if (promise._onError) {\n    promise._onError(promise._result);\n  }\n\n  publish(promise);\n}\n\nexport function fulfill(promise, value) {\n  if (promise._state !== PENDING) {\n    return;\n  }\n\n  promise._result = value;\n  promise._state = FULFILLED;\n\n  if (promise._subscribers.length === 0) {\n    if (config.instrument) {\n      instrument('fulfilled', promise);\n    }\n  } else {\n    config.async(publish, promise);\n  }\n}\n\nexport function reject(promise, reason) {\n  if (promise._state !== PENDING) {\n    return;\n  }\n  promise._state = REJECTED;\n  promise._result = reason;\n  config.async(publishRejection, promise);\n}\n\nexport function subscribe(parent, child, onFulfillment, onRejection) {\n  var subscribers = parent._subscribers;\n  var length = subscribers.length;\n\n  parent._onError = null;\n\n  subscribers[length] = child;\n  subscribers[length + FULFILLED] = onFulfillment;\n  subscribers[length + REJECTED] = onRejection;\n\n  if (length === 0 && parent._state) {\n    config.async(publish, parent);\n  }\n}\n\nexport function publish(promise) {\n  var subscribers = promise._subscribers;\n  var settled = promise._state;\n\n  if (config.instrument) {\n    instrument(settled === FULFILLED ? 'fulfilled' : 'rejected', promise);\n  }\n\n  if (subscribers.length === 0) {\n    return;\n  }\n\n  var child = void 0,\n      callback = void 0,\n      result = promise._result;\n\n  for (var i = 0; i < subscribers.length; i += 3) {\n    child = subscribers[i];\n    callback = subscribers[i + settled];\n\n    if (child) {\n      invokeCallback(settled, child, callback, result);\n    } else {\n      callback(result);\n    }\n  }\n\n  promise._subscribers.length = 0;\n}\n\nexport function invokeCallback(state, promise, callback, result) {\n  var hasCallback = typeof callback === 'function';\n  var value = void 0;\n\n  if (hasCallback) {\n    value = tryCatch(callback)(result);\n  } else {\n    value = result;\n  }\n\n  if (promise._state !== PENDING) {\n    // noop\n  } else if (value === promise) {\n    reject(promise, withOwnPromise());\n  } else if (value === TRY_CATCH_ERROR) {\n    var error = TRY_CATCH_ERROR.error;\n    TRY_CATCH_ERROR.error = null; // release\n    reject(promise, error);\n  } else if (hasCallback) {\n    resolve(promise, value);\n  } else if (state === FULFILLED) {\n    fulfill(promise, value);\n  } else if (state === REJECTED) {\n    reject(promise, value);\n  }\n}\n\nexport function initializePromise(promise, resolver) {\n  var resolved = false;\n  try {\n    resolver(function (value) {\n      if (resolved) {\n        return;\n      }\n      resolved = true;\n      resolve(promise, value);\n    }, function (reason) {\n      if (resolved) {\n        return;\n      }\n      resolved = true;\n      reject(promise, reason);\n    });\n  } catch (e) {\n    reject(promise, e);\n  }\n}","import { config } from './config';\nimport instrument from './instrument';\nimport { noop, subscribe, FULFILLED, REJECTED, PENDING, invokeCallback } from './-internal';\n\nexport default function then(onFulfillment, onRejection, label) {\n  var parent = this;\n  var state = parent._state;\n\n  if (state === FULFILLED && !onFulfillment || state === REJECTED && !onRejection) {\n    config.instrument && instrument('chained', parent, parent);\n    return parent;\n  }\n\n  parent._onError = null;\n\n  var child = new parent.constructor(noop, label);\n  var result = parent._result;\n\n  config.instrument && instrument('chained', parent, child);\n\n  if (state === PENDING) {\n    subscribe(parent, child, onFulfillment, onRejection);\n  } else {\n    var callback = state === FULFILLED ? onFulfillment : onRejection;\n    config.async(function () {\n      return invokeCallback(state, child, callback, result);\n    });\n  }\n\n  return child;\n}","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nimport { noop, resolve, handleMaybeThenable, reject, fulfill, subscribe, FULFILLED, REJECTED, PENDING, getThen } from './-internal';\n\nimport { default as OwnPromise } from './promise';\nimport ownThen from './then';\nimport ownResolve from './promise/resolve';\n\nvar Enumerator = function () {\n  function Enumerator(Constructor, input, abortOnReject, label) {\n    this._instanceConstructor = Constructor;\n    this.promise = new Constructor(noop, label);\n    this._abortOnReject = abortOnReject;\n    this._isUsingOwnPromise = Constructor === OwnPromise;\n    this._isUsingOwnResolve = Constructor.resolve === ownResolve;\n\n    this._init.apply(this, arguments);\n  }\n\n  Enumerator.prototype._init = function _init(Constructor, input) {\n    var len = input.length || 0;\n    this.length = len;\n    this._remaining = len;\n    this._result = new Array(len);\n\n    this._enumerate(input);\n  };\n\n  Enumerator.prototype._enumerate = function _enumerate(input) {\n    var length = this.length;\n    var promise = this.promise;\n\n    for (var i = 0; promise._state === PENDING && i < length; i++) {\n      this._eachEntry(input[i], i, true);\n    }\n    this._checkFullfillment();\n  };\n\n  Enumerator.prototype._checkFullfillment = function _checkFullfillment() {\n    if (this._remaining === 0) {\n      var result = this._result;\n      fulfill(this.promise, result);\n      this._result = null;\n    }\n  };\n\n  Enumerator.prototype._settleMaybeThenable = function _settleMaybeThenable(entry, i, firstPass) {\n    var c = this._instanceConstructor;\n\n    if (this._isUsingOwnResolve) {\n      var then = getThen(entry);\n\n      if (then === ownThen && entry._state !== PENDING) {\n        entry._onError = null;\n        this._settledAt(entry._state, i, entry._result, firstPass);\n      } else if (typeof then !== 'function') {\n        this._settledAt(FULFILLED, i, entry, firstPass);\n      } else if (this._isUsingOwnPromise) {\n        var promise = new c(noop);\n        handleMaybeThenable(promise, entry, then);\n        this._willSettleAt(promise, i, firstPass);\n      } else {\n        this._willSettleAt(new c(function (resolve) {\n          return resolve(entry);\n        }), i, firstPass);\n      }\n    } else {\n      this._willSettleAt(c.resolve(entry), i, firstPass);\n    }\n  };\n\n  Enumerator.prototype._eachEntry = function _eachEntry(entry, i, firstPass) {\n    if (entry !== null && typeof entry === 'object') {\n      this._settleMaybeThenable(entry, i, firstPass);\n    } else {\n      this._setResultAt(FULFILLED, i, entry, firstPass);\n    }\n  };\n\n  Enumerator.prototype._settledAt = function _settledAt(state, i, value, firstPass) {\n    var promise = this.promise;\n\n    if (promise._state === PENDING) {\n      if (this._abortOnReject && state === REJECTED) {\n        reject(promise, value);\n      } else {\n        this._setResultAt(state, i, value, firstPass);\n        this._checkFullfillment();\n      }\n    }\n  };\n\n  Enumerator.prototype._setResultAt = function _setResultAt(state, i, value, firstPass) {\n    this._remaining--;\n    this._result[i] = value;\n  };\n\n  Enumerator.prototype._willSettleAt = function _willSettleAt(promise, i, firstPass) {\n    var _this = this;\n\n    subscribe(promise, undefined, function (value) {\n      return _this._settledAt(FULFILLED, i, value, firstPass);\n    }, function (reason) {\n      return _this._settledAt(REJECTED, i, reason, firstPass);\n    });\n  };\n\n  return Enumerator;\n}();\n\nexport default Enumerator;\n\n\nexport function setSettledResult(state, i, value) {\n  this._remaining--;\n  if (state === FULFILLED) {\n    this._result[i] = {\n      state: 'fulfilled',\n      value: value\n    };\n  } else {\n    this._result[i] = {\n      state: 'rejected',\n      reason: value\n    };\n  }\n}","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nimport { config } from './config';\nimport instrument from './instrument';\nimport then from './then';\n\nimport { noop, initializePromise } from './-internal';\n\nimport all from './promise/all';\nimport race from './promise/race';\nimport Resolve from './promise/resolve';\nimport Reject from './promise/reject';\n\nvar guidKey = 'rsvp_' + Date.now() + '-';\nvar counter = 0;\n\nfunction needsResolver() {\n  throw new TypeError('You must pass a resolver function as the first argument to the promise constructor');\n}\n\nfunction needsNew() {\n  throw new TypeError(\"Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.\");\n}\n\n/**\n  Promise objects represent the eventual result of an asynchronous operation. The\n  primary way of interacting with a promise is through its `then` method, which\n  registers callbacks to receive either a promise’s eventual value or the reason\n  why the promise cannot be fulfilled.\n\n  Terminology\n  -----------\n\n  - `promise` is an object or function with a `then` method whose behavior conforms to this specification.\n  - `thenable` is an object or function that defines a `then` method.\n  - `value` is any legal JavaScript value (including undefined, a thenable, or a promise).\n  - `exception` is a value that is thrown using the throw statement.\n  - `reason` is a value that indicates why a promise was rejected.\n  - `settled` the final resting state of a promise, fulfilled or rejected.\n\n  A promise can be in one of three states: pending, fulfilled, or rejected.\n\n  Promises that are fulfilled have a fulfillment value and are in the fulfilled\n  state.  Promises that are rejected have a rejection reason and are in the\n  rejected state.  A fulfillment value is never a thenable.\n\n  Promises can also be said to *resolve* a value.  If this value is also a\n  promise, then the original promise's settled state will match the value's\n  settled state.  So a promise that *resolves* a promise that rejects will\n  itself reject, and a promise that *resolves* a promise that fulfills will\n  itself fulfill.\n\n\n  Basic Usage:\n  ------------\n\n  ```js\n  let promise = new Promise(function(resolve, reject) {\n    // on success\n    resolve(value);\n\n    // on failure\n    reject(reason);\n  });\n\n  promise.then(function(value) {\n    // on fulfillment\n  }, function(reason) {\n    // on rejection\n  });\n  ```\n\n  Advanced Usage:\n  ---------------\n\n  Promises shine when abstracting away asynchronous interactions such as\n  `XMLHttpRequest`s.\n\n  ```js\n  function getJSON(url) {\n    return new Promise(function(resolve, reject){\n      let xhr = new XMLHttpRequest();\n\n      xhr.open('GET', url);\n      xhr.onreadystatechange = handler;\n      xhr.responseType = 'json';\n      xhr.setRequestHeader('Accept', 'application/json');\n      xhr.send();\n\n      function handler() {\n        if (this.readyState === this.DONE) {\n          if (this.status === 200) {\n            resolve(this.response);\n          } else {\n            reject(new Error('getJSON: `' + url + '` failed with status: [' + this.status + ']'));\n          }\n        }\n      };\n    });\n  }\n\n  getJSON('/posts.json').then(function(json) {\n    // on fulfillment\n  }, function(reason) {\n    // on rejection\n  });\n  ```\n\n  Unlike callbacks, promises are great composable primitives.\n\n  ```js\n  Promise.all([\n    getJSON('/posts'),\n    getJSON('/comments')\n  ]).then(function(values){\n    values[0] // => postsJSON\n    values[1] // => commentsJSON\n\n    return values;\n  });\n  ```\n\n  @class Promise\n  @public\n  @param {function} resolver\n  @param {String} [label] optional string for labeling the promise.\n  Useful for tooling.\n  @constructor\n*/\n\nvar Promise = function () {\n  function Promise(resolver, label) {\n    this._id = counter++;\n    this._label = label;\n    this._state = undefined;\n    this._result = undefined;\n    this._subscribers = [];\n\n    config.instrument && instrument('created', this);\n\n    if (noop !== resolver) {\n      typeof resolver !== 'function' && needsResolver();\n      this instanceof Promise ? initializePromise(this, resolver) : needsNew();\n    }\n  }\n\n  Promise.prototype._onError = function _onError(reason) {\n    var _this = this;\n\n    config.after(function () {\n      if (_this._onError) {\n        config.trigger('error', reason, _this._label);\n      }\n    });\n  };\n\n  /**\n    `catch` is simply sugar for `then(undefined, onRejection)` which makes it the same\n    as the catch block of a try/catch statement.\n  \n    ```js\n    function findAuthor(){\n      throw new Error('couldn\\'t find that author');\n    }\n  \n    // synchronous\n    try {\n      findAuthor();\n    } catch(reason) {\n      // something went wrong\n    }\n  \n    // async with promises\n    findAuthor().catch(function(reason){\n      // something went wrong\n    });\n    ```\n  \n    @method catch\n    @param {Function} onRejection\n    @param {String} [label] optional string for labeling the promise.\n    Useful for tooling.\n    @return {Promise}\n  */\n\n\n  Promise.prototype.catch = function _catch(onRejection, label) {\n    return this.then(undefined, onRejection, label);\n  };\n\n  /**\n    `finally` will be invoked regardless of the promise's fate just as native\n    try/catch/finally behaves\n  \n    Synchronous example:\n  \n    ```js\n    findAuthor() {\n      if (Math.random() > 0.5) {\n        throw new Error();\n      }\n      return new Author();\n    }\n  \n    try {\n      return findAuthor(); // succeed or fail\n    } catch(error) {\n      return findOtherAuthor();\n    } finally {\n      // always runs\n      // doesn't affect the return value\n    }\n    ```\n  \n    Asynchronous example:\n  \n    ```js\n    findAuthor().catch(function(reason){\n      return findOtherAuthor();\n    }).finally(function(){\n      // author was either found, or not\n    });\n    ```\n  \n    @method finally\n    @param {Function} callback\n    @param {String} [label] optional string for labeling the promise.\n    Useful for tooling.\n    @return {Promise}\n  */\n\n\n  Promise.prototype.finally = function _finally(callback, label) {\n    var promise = this;\n    var constructor = promise.constructor;\n\n    if (typeof callback === 'function') {\n      return promise.then(function (value) {\n        return constructor.resolve(callback()).then(function () {\n          return value;\n        });\n      }, function (reason) {\n        return constructor.resolve(callback()).then(function () {\n          throw reason;\n        });\n      });\n    }\n\n    return promise.then(callback, callback);\n  };\n\n  return Promise;\n}();\n\nPromise.cast = Resolve; // deprecated\nPromise.all = all;\nPromise.race = race;\nPromise.resolve = Resolve;\nPromise.reject = Reject;\n\nPromise.prototype._guidKey = guidKey;\n\n/**\n  The primary way of interacting with a promise is through its `then` method,\n  which registers callbacks to receive either a promise's eventual value or the\n  reason why the promise cannot be fulfilled.\n\n  ```js\n  findUser().then(function(user){\n    // user is available\n  }, function(reason){\n    // user is unavailable, and you are given the reason why\n  });\n  ```\n\n  Chaining\n  --------\n\n  The return value of `then` is itself a promise.  This second, 'downstream'\n  promise is resolved with the return value of the first promise's fulfillment\n  or rejection handler, or rejected if the handler throws an exception.\n\n  ```js\n  findUser().then(function (user) {\n    return user.name;\n  }, function (reason) {\n    return 'default name';\n  }).then(function (userName) {\n    // If `findUser` fulfilled, `userName` will be the user's name, otherwise it\n    // will be `'default name'`\n  });\n\n  findUser().then(function (user) {\n    throw new Error('Found user, but still unhappy');\n  }, function (reason) {\n    throw new Error('`findUser` rejected and we\\'re unhappy');\n  }).then(function (value) {\n    // never reached\n  }, function (reason) {\n    // if `findUser` fulfilled, `reason` will be 'Found user, but still unhappy'.\n    // If `findUser` rejected, `reason` will be '`findUser` rejected and we\\'re unhappy'.\n  });\n  ```\n  If the downstream promise does not specify a rejection handler, rejection reasons will be propagated further downstream.\n\n  ```js\n  findUser().then(function (user) {\n    throw new PedagogicalException('Upstream error');\n  }).then(function (value) {\n    // never reached\n  }).then(function (value) {\n    // never reached\n  }, function (reason) {\n    // The `PedgagocialException` is propagated all the way down to here\n  });\n  ```\n\n  Assimilation\n  ------------\n\n  Sometimes the value you want to propagate to a downstream promise can only be\n  retrieved asynchronously. This can be achieved by returning a promise in the\n  fulfillment or rejection handler. The downstream promise will then be pending\n  until the returned promise is settled. This is called *assimilation*.\n\n  ```js\n  findUser().then(function (user) {\n    return findCommentsByAuthor(user);\n  }).then(function (comments) {\n    // The user's comments are now available\n  });\n  ```\n\n  If the assimliated promise rejects, then the downstream promise will also reject.\n\n  ```js\n  findUser().then(function (user) {\n    return findCommentsByAuthor(user);\n  }).then(function (comments) {\n    // If `findCommentsByAuthor` fulfills, we'll have the value here\n  }, function (reason) {\n    // If `findCommentsByAuthor` rejects, we'll have the reason here\n  });\n  ```\n\n  Simple Example\n  --------------\n\n  Synchronous Example\n\n  ```javascript\n  let result;\n\n  try {\n    result = findResult();\n    // success\n  } catch(reason) {\n    // failure\n  }\n  ```\n\n  Errback Example\n\n  ```js\n  findResult(function(result, err){\n    if (err) {\n      // failure\n    } else {\n      // success\n    }\n  });\n  ```\n\n  Promise Example;\n\n  ```javascript\n  findResult().then(function(result){\n    // success\n  }, function(reason){\n    // failure\n  });\n  ```\n\n  Advanced Example\n  --------------\n\n  Synchronous Example\n\n  ```javascript\n  let author, books;\n\n  try {\n    author = findAuthor();\n    books  = findBooksByAuthor(author);\n    // success\n  } catch(reason) {\n    // failure\n  }\n  ```\n\n  Errback Example\n\n  ```js\n\n  function foundBooks(books) {\n\n  }\n\n  function failure(reason) {\n\n  }\n\n  findAuthor(function(author, err){\n    if (err) {\n      failure(err);\n      // failure\n    } else {\n      try {\n        findBoooksByAuthor(author, function(books, err) {\n          if (err) {\n            failure(err);\n          } else {\n            try {\n              foundBooks(books);\n            } catch(reason) {\n              failure(reason);\n            }\n          }\n        });\n      } catch(error) {\n        failure(err);\n      }\n      // success\n    }\n  });\n  ```\n\n  Promise Example;\n\n  ```javascript\n  findAuthor().\n    then(findBooksByAuthor).\n    then(function(books){\n      // found books\n  }).catch(function(reason){\n    // something went wrong\n  });\n  ```\n\n  @method then\n  @param {Function} onFulfillment\n  @param {Function} onRejection\n  @param {String} [label] optional string for labeling the promise.\n  Useful for tooling.\n  @return {Promise}\n*/\nPromise.prototype.then = then;\n\nexport default Promise;","import Promise from './promise';\nimport { noop, resolve, reject, getThen, tryCatch, TRY_CATCH_ERROR } from './-internal';\n\nfunction makeObject(_, argumentNames) {\n  var obj = {};\n  var length = _.length;\n  var args = new Array(length);\n\n  for (var x = 0; x < length; x++) {\n    args[x] = _[x];\n  }\n\n  for (var i = 0; i < argumentNames.length; i++) {\n    var name = argumentNames[i];\n    obj[name] = args[i + 1];\n  }\n\n  return obj;\n}\n\nfunction arrayResult(_) {\n  var length = _.length;\n  var args = new Array(length - 1);\n\n  for (var i = 1; i < length; i++) {\n    args[i - 1] = _[i];\n  }\n\n  return args;\n}\n\nfunction wrapThenable(then, promise) {\n  return {\n    then: function (onFulFillment, onRejection) {\n      return then.call(promise, onFulFillment, onRejection);\n    }\n  };\n}\n\n/**\n  `denodeify` takes a 'node-style' function and returns a function that\n  will return an `Promise`. You can use `denodeify` in Node.js or the\n  browser when you'd prefer to use promises over using callbacks. For example,\n  `denodeify` transforms the following:\n\n  ```javascript\n  let fs = require('fs');\n\n  fs.readFile('myfile.txt', function(err, data){\n    if (err) return handleError(err);\n    handleData(data);\n  });\n  ```\n\n  into:\n\n  ```javascript\n  let fs = require('fs');\n  let readFile = denodeify(fs.readFile);\n\n  readFile('myfile.txt').then(handleData, handleError);\n  ```\n\n  If the node function has multiple success parameters, then `denodeify`\n  just returns the first one:\n\n  ```javascript\n  let request = denodeify(require('request'));\n\n  request('http://example.com').then(function(res) {\n    // ...\n  });\n  ```\n\n  However, if you need all success parameters, setting `denodeify`'s\n  second parameter to `true` causes it to return all success parameters\n  as an array:\n\n  ```javascript\n  let request = denodeify(require('request'), true);\n\n  request('http://example.com').then(function(result) {\n    // result[0] -> res\n    // result[1] -> body\n  });\n  ```\n\n  Or if you pass it an array with names it returns the parameters as a hash:\n\n  ```javascript\n  let request = denodeify(require('request'), ['res', 'body']);\n\n  request('http://example.com').then(function(result) {\n    // result.res\n    // result.body\n  });\n  ```\n\n  Sometimes you need to retain the `this`:\n\n  ```javascript\n  let app = require('express')();\n  let render = denodeify(app.render.bind(app));\n  ```\n\n  The denodified function inherits from the original function. It works in all\n  environments, except IE 10 and below. Consequently all properties of the original\n  function are available to you. However, any properties you change on the\n  denodeified function won't be changed on the original function. Example:\n\n  ```javascript\n  let request = denodeify(require('request')),\n      cookieJar = request.jar(); // <- Inheritance is used here\n\n  request('http://example.com', {jar: cookieJar}).then(function(res) {\n    // cookieJar.cookies holds now the cookies returned by example.com\n  });\n  ```\n\n  Using `denodeify` makes it easier to compose asynchronous operations instead\n  of using callbacks. For example, instead of:\n\n  ```javascript\n  let fs = require('fs');\n\n  fs.readFile('myfile.txt', function(err, data){\n    if (err) { ... } // Handle error\n    fs.writeFile('myfile2.txt', data, function(err){\n      if (err) { ... } // Handle error\n      console.log('done')\n    });\n  });\n  ```\n\n  you can chain the operations together using `then` from the returned promise:\n\n  ```javascript\n  let fs = require('fs');\n  let readFile = denodeify(fs.readFile);\n  let writeFile = denodeify(fs.writeFile);\n\n  readFile('myfile.txt').then(function(data){\n    return writeFile('myfile2.txt', data);\n  }).then(function(){\n    console.log('done')\n  }).catch(function(error){\n    // Handle error\n  });\n  ```\n\n  @method denodeify\n  @public\n  @static\n  @for rsvp\n  @param {Function} nodeFunc a 'node-style' function that takes a callback as\n  its last argument. The callback expects an error to be passed as its first\n  argument (if an error occurred, otherwise null), and the value from the\n  operation as its second argument ('function(err, value){ }').\n  @param {Boolean|Array} [options] An optional paramter that if set\n  to `true` causes the promise to fulfill with the callback's success arguments\n  as an array. This is useful if the node function has multiple success\n  paramters. If you set this paramter to an array with names, the promise will\n  fulfill with a hash with these names as keys and the success parameters as\n  values.\n  @return {Function} a function that wraps `nodeFunc` to return a `Promise`\n*/\nexport default function denodeify(nodeFunc, options) {\n  var fn = function () {\n    var l = arguments.length;\n    var args = new Array(l + 1);\n    var promiseInput = false;\n\n    for (var i = 0; i < l; ++i) {\n      var arg = arguments[i];\n\n      if (!promiseInput) {\n        // TODO: clean this up\n        promiseInput = needsPromiseInput(arg);\n        if (promiseInput === TRY_CATCH_ERROR) {\n          var error = TRY_CATCH_ERROR.error;\n          TRY_CATCH_ERROR.error = null;\n          var p = new Promise(noop);\n          reject(p, error);\n          return p;\n        } else if (promiseInput && promiseInput !== true) {\n          arg = wrapThenable(promiseInput, arg);\n        }\n      }\n      args[i] = arg;\n    }\n\n    var promise = new Promise(noop);\n\n    args[l] = function (err, val) {\n      if (err) {\n        reject(promise, err);\n      } else if (options === undefined) {\n        resolve(promise, val);\n      } else if (options === true) {\n        resolve(promise, arrayResult(arguments));\n      } else if (Array.isArray(options)) {\n        resolve(promise, makeObject(arguments, options));\n      } else {\n        resolve(promise, val);\n      }\n    };\n\n    if (promiseInput) {\n      return handlePromiseInput(promise, args, nodeFunc, this);\n    } else {\n      return handleValueInput(promise, args, nodeFunc, this);\n    }\n  };\n\n  fn.__proto__ = nodeFunc;\n\n  return fn;\n}\n\nfunction handleValueInput(promise, args, nodeFunc, self) {\n  var result = tryCatch(nodeFunc).apply(self, args);\n  if (result === TRY_CATCH_ERROR) {\n    var error = TRY_CATCH_ERROR.error;\n    TRY_CATCH_ERROR.error = null;\n    reject(promise, error);\n  }\n  return promise;\n}\n\nfunction handlePromiseInput(promise, args, nodeFunc, self) {\n  return Promise.all(args).then(function (args) {\n    return handleValueInput(promise, args, nodeFunc, self);\n  });\n}\n\nfunction needsPromiseInput(arg) {\n  if (arg !== null && typeof arg === 'object') {\n    if (arg.constructor === Promise) {\n      return true;\n    } else {\n      return getThen(arg);\n    }\n  } else {\n    return false;\n  }\n}","import Promise from \"./promise\";\n\n/**\n  This is a convenient alias for `Promise.all`.\n\n  @method all\n  @public\n  @static\n  @for rsvp\n  @param {Array} array Array of promises.\n  @param {String} [label] An optional label. This is useful\n  for tooling.\n*/\nexport default function all(array, label) {\n  return Promise.all(array, label);\n}","import Enumerator from '../enumerator';\n\n/**\n  `Promise.all` accepts an array of promises, and returns a new promise which\n  is fulfilled with an array of fulfillment values for the passed promises, or\n  rejected with the reason of the first passed promise to be rejected. It casts all\n  elements of the passed iterable to promises as it runs this algorithm.\n\n  Example:\n\n  ```javascript\n  import Promise, { resolve } from 'rsvp';\n\n  let promise1 = resolve(1);\n  let promise2 = resolve(2);\n  let promise3 = resolve(3);\n  let promises = [ promise1, promise2, promise3 ];\n\n  Promise.all(promises).then(function(array){\n    // The array here would be [ 1, 2, 3 ];\n  });\n  ```\n\n  If any of the `promises` given to `RSVP.all` are rejected, the first promise\n  that is rejected will be given as an argument to the returned promises's\n  rejection handler. For example:\n\n  Example:\n\n  ```javascript\n  import Promise, { resolve, reject } from 'rsvp';\n\n  let promise1 = resolve(1);\n  let promise2 = reject(new Error(\"2\"));\n  let promise3 = reject(new Error(\"3\"));\n  let promises = [ promise1, promise2, promise3 ];\n\n  Promise.all(promises).then(function(array){\n    // Code here never runs because there are rejected promises!\n  }, function(error) {\n    // error.message === \"2\"\n  });\n  ```\n\n  @method all\n  @for Promise\n  @param {Array} entries array of promises\n  @param {String} [label] optional string for labeling the promise.\n  Useful for tooling.\n  @return {Promise} promise that is fulfilled when all `promises` have been\n  fulfilled, or rejected if any of them become rejected.\n  @static\n*/\nexport default function all(entries, label) {\n  if (!Array.isArray(entries)) {\n    return this.reject(new TypeError(\"Promise.all must be called with an array\"), label);\n  }\n  return new Enumerator(this, entries, true /* abort on reject */, label).promise;\n}","import { noop, resolve, reject, subscribe, PENDING } from '../-internal';\n\n/**\n  `Promise.race` returns a new promise which is settled in the same way as the\n  first passed promise to settle.\n\n  Example:\n\n  ```javascript\n  import Promise from 'rsvp';\n\n  let promise1 = new Promise(function(resolve, reject){\n    setTimeout(function(){\n      resolve('promise 1');\n    }, 200);\n  });\n\n  let promise2 = new Promise(function(resolve, reject){\n    setTimeout(function(){\n      resolve('promise 2');\n    }, 100);\n  });\n\n  Promise.race([promise1, promise2]).then(function(result){\n    // result === 'promise 2' because it was resolved before promise1\n    // was resolved.\n  });\n  ```\n\n  `Promise.race` is deterministic in that only the state of the first\n  settled promise matters. For example, even if other promises given to the\n  `promises` array argument are resolved, but the first settled promise has\n  become rejected before the other promises became fulfilled, the returned\n  promise will become rejected:\n\n  ```javascript\n  import Promise from 'rsvp';\n\n  let promise1 = new Promise(function(resolve, reject){\n    setTimeout(function(){\n      resolve('promise 1');\n    }, 200);\n  });\n\n  let promise2 = new Promise(function(resolve, reject){\n    setTimeout(function(){\n      reject(new Error('promise 2'));\n    }, 100);\n  });\n\n  Promise.race([promise1, promise2]).then(function(result){\n    // Code here never runs\n  }, function(reason){\n    // reason.message === 'promise 2' because promise 2 became rejected before\n    // promise 1 became fulfilled\n  });\n  ```\n\n  An example real-world use case is implementing timeouts:\n\n  ```javascript\n  import Promise from 'rsvp';\n\n  Promise.race([ajax('foo.json'), timeout(5000)])\n  ```\n\n  @method race\n  @for Promise\n  @static\n  @param {Array} entries array of promises to observe\n  @param {String} [label] optional string for describing the promise returned.\n  Useful for tooling.\n  @return {Promise} a promise which settles in the same way as the first passed\n  promise to settle.\n*/\nexport default function race(entries, label) {\n  /*jshint validthis:true */\n  var Constructor = this;\n\n  var promise = new Constructor(noop, label);\n\n  if (!Array.isArray(entries)) {\n    reject(promise, new TypeError('Promise.race must be called with an array'));\n    return promise;\n  }\n\n  for (var i = 0; promise._state === PENDING && i < entries.length; i++) {\n    subscribe(Constructor.resolve(entries[i]), undefined, function (value) {\n      return resolve(promise, value);\n    }, function (reason) {\n      return reject(promise, reason);\n    });\n  }\n\n  return promise;\n}","import { noop, reject as _reject } from '../-internal';\n\n/**\n  `Promise.reject` returns a promise rejected with the passed `reason`.\n  It is shorthand for the following:\n\n  ```javascript\n  import Promise from 'rsvp';\n\n  let promise = new Promise(function(resolve, reject){\n    reject(new Error('WHOOPS'));\n  });\n\n  promise.then(function(value){\n    // Code here doesn't run because the promise is rejected!\n  }, function(reason){\n    // reason.message === 'WHOOPS'\n  });\n  ```\n\n  Instead of writing the above, your code now simply becomes the following:\n\n  ```javascript\n  import Promise from 'rsvp';\n\n  let promise = Promise.reject(new Error('WHOOPS'));\n\n  promise.then(function(value){\n    // Code here doesn't run because the promise is rejected!\n  }, function(reason){\n    // reason.message === 'WHOOPS'\n  });\n  ```\n\n  @method reject\n  @for Promise\n  @static\n  @param {*} reason value that the returned promise will be rejected with.\n  @param {String} [label] optional string for identifying the returned promise.\n  Useful for tooling.\n  @return {Promise} a promise rejected with the given `reason`.\n*/\nexport default function reject(reason, label) {\n  /*jshint validthis:true */\n  var Constructor = this;\n  var promise = new Constructor(noop, label);\n  _reject(promise, reason);\n  return promise;\n}","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport { default as Enumerator, setSettledResult } from './enumerator';\nimport Promise from './promise';\n\n/**\n@module rsvp\n@public\n**/\n\nvar AllSettled = function (_Enumerator) {\n  _inherits(AllSettled, _Enumerator);\n\n  function AllSettled(Constructor, entries, label) {\n    return _possibleConstructorReturn(this, _Enumerator.call(this, Constructor, entries, false /* don't abort on reject */, label));\n  }\n\n  return AllSettled;\n}(Enumerator);\n\nAllSettled.prototype._setResultAt = setSettledResult;\n\n/**\n`RSVP.allSettled` is similar to `RSVP.all`, but instead of implementing\na fail-fast method, it waits until all the promises have returned and\nshows you all the results. This is useful if you want to handle multiple\npromises' failure states together as a set.\n Returns a promise that is fulfilled when all the given promises have been\nsettled. The return promise is fulfilled with an array of the states of\nthe promises passed into the `promises` array argument.\n Each state object will either indicate fulfillment or rejection, and\nprovide the corresponding value or reason. The states will take one of\nthe following formats:\n ```javascript\n{ state: 'fulfilled', value: value }\n  or\n{ state: 'rejected', reason: reason }\n```\n Example:\n ```javascript\nlet promise1 = RSVP.Promise.resolve(1);\nlet promise2 = RSVP.Promise.reject(new Error('2'));\nlet promise3 = RSVP.Promise.reject(new Error('3'));\nlet promises = [ promise1, promise2, promise3 ];\n RSVP.allSettled(promises).then(function(array){\n  // array == [\n  //   { state: 'fulfilled', value: 1 },\n  //   { state: 'rejected', reason: Error },\n  //   { state: 'rejected', reason: Error }\n  // ]\n  // Note that for the second item, reason.message will be '2', and for the\n  // third item, reason.message will be '3'.\n}, function(error) {\n  // Not run. (This block would only be called if allSettled had failed,\n  // for instance if passed an incorrect argument type.)\n});\n```\n @method allSettled\n@public\n@static\n@for rsvp\n@param {Array} entries\n@param {String} [label] - optional string that describes the promise.\nUseful for tooling.\n@return {Promise} promise that is fulfilled with an array of the settled\nstates of the constituent promises.\n*/\n\nexport default function allSettled(entries, label) {\n  if (!Array.isArray(entries)) {\n    return Promise.reject(new TypeError(\"Promise.allSettled must be called with an array\"), label);\n  }\n\n  return new AllSettled(Promise, entries, label).promise;\n}","import Promise from './promise';\n\n/**\n  This is a convenient alias for `Promise.race`.\n\n  @method race\n  @public\n  @static\n  @for rsvp\n  @param {Array} array Array of promises.\n  @param {String} [label] An optional label. This is useful\n  for tooling.\n */\nexport default function race(array, label) {\n  return Promise.race(array, label);\n}","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport Enumerator from './enumerator';\nimport { PENDING, FULFILLED, fulfill } from './-internal';\n\nvar PromiseHash = function (_Enumerator) {\n  _inherits(PromiseHash, _Enumerator);\n\n  function PromiseHash(Constructor, object) {\n    var abortOnReject = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n    var label = arguments[3];\n    return _possibleConstructorReturn(this, _Enumerator.call(this, Constructor, object, abortOnReject, label));\n  }\n\n  PromiseHash.prototype._init = function _init(Constructor, object) {\n    this._result = {};\n    this._enumerate(object);\n  };\n\n  PromiseHash.prototype._enumerate = function _enumerate(input) {\n    var keys = Object.keys(input);\n\n    var length = keys.length;\n    var promise = this.promise;\n    this._remaining = length;\n\n    var key = void 0,\n        val = void 0;\n    for (var i = 0; promise._state === PENDING && i < length; i++) {\n      key = keys[i];\n      val = input[key];\n      this._eachEntry(val, key, true);\n    }\n\n    this._checkFullfillment();\n  };\n\n  return PromiseHash;\n}(Enumerator);\n\nexport default PromiseHash;","import Promise from './promise';\nimport PromiseHash from './promise-hash';\n\n/**\n  `hash` is similar to `all`, but takes an object instead of an array\n  for its `promises` argument.\n\n  Returns a promise that is fulfilled when all the given promises have been\n  fulfilled, or rejected if any of them become rejected. The returned promise\n  is fulfilled with a hash that has the same key names as the `promises` object\n  argument. If any of the values in the object are not promises, they will\n  simply be copied over to the fulfilled object.\n\n  Example:\n\n  ```javascript\n  let promises = {\n    myPromise: resolve(1),\n    yourPromise: resolve(2),\n    theirPromise: resolve(3),\n    notAPromise: 4\n  };\n\n  hash(promises).then(function(hash){\n    // hash here is an object that looks like:\n    // {\n    //   myPromise: 1,\n    //   yourPromise: 2,\n    //   theirPromise: 3,\n    //   notAPromise: 4\n    // }\n  });\n  ```\n\n  If any of the `promises` given to `hash` are rejected, the first promise\n  that is rejected will be given as the reason to the rejection handler.\n\n  Example:\n\n  ```javascript\n  let promises = {\n    myPromise: resolve(1),\n    rejectedPromise: reject(new Error('rejectedPromise')),\n    anotherRejectedPromise: reject(new Error('anotherRejectedPromise')),\n  };\n\n  hash(promises).then(function(hash){\n    // Code here never runs because there are rejected promises!\n  }, function(reason) {\n    // reason.message === 'rejectedPromise'\n  });\n  ```\n\n  An important note: `hash` is intended for plain JavaScript objects that\n  are just a set of keys and values. `hash` will NOT preserve prototype\n  chains.\n\n  Example:\n\n  ```javascript\n  import { hash, resolve } from 'rsvp';\n  function MyConstructor(){\n    this.example = resolve('Example');\n  }\n\n  MyConstructor.prototype = {\n    protoProperty: resolve('Proto Property')\n  };\n\n  let myObject = new MyConstructor();\n\n  hash(myObject).then(function(hash){\n    // protoProperty will not be present, instead you will just have an\n    // object that looks like:\n    // {\n    //   example: 'Example'\n    // }\n    //\n    // hash.hasOwnProperty('protoProperty'); // false\n    // 'undefined' === typeof hash.protoProperty\n  });\n  ```\n\n  @method hash\n  @public\n  @static\n  @for rsvp\n  @param {Object} object\n  @param {String} [label] optional string that describes the promise.\n  Useful for tooling.\n  @return {Promise} promise that is fulfilled when all properties of `promises`\n  have been fulfilled, or rejected if any of them become rejected.\n*/\nexport default function hash(object, label) {\n  return Promise.resolve(object, label).then(function (object) {\n    if (object === null || typeof object !== 'object') {\n      throw new TypeError(\"Promise.hash must be called with an object\");\n    }\n    return new PromiseHash(Promise, object, label).promise;\n  });\n}","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport Promise from './promise';\nimport { default as Enumerator, setSettledResult } from './enumerator';\nimport PromiseHash from './promise-hash';\n\nvar HashSettled = function (_PromiseHash) {\n  _inherits(HashSettled, _PromiseHash);\n\n  function HashSettled(Constructor, object, label) {\n    return _possibleConstructorReturn(this, _PromiseHash.call(this, Constructor, object, false, label));\n  }\n\n  return HashSettled;\n}(PromiseHash);\n\nHashSettled.prototype._setResultAt = setSettledResult;\n\n/**\n  `hashSettled` is similar to `allSettled`, but takes an object\n  instead of an array for its `promises` argument.\n\n  Unlike `all` or `hash`, which implement a fail-fast method,\n  but like `allSettled`, `hashSettled` waits until all the\n  constituent promises have returned and then shows you all the results\n  with their states and values/reasons. This is useful if you want to\n  handle multiple promises' failure states together as a set.\n\n  Returns a promise that is fulfilled when all the given promises have been\n  settled, or rejected if the passed parameters are invalid.\n\n  The returned promise is fulfilled with a hash that has the same key names as\n  the `promises` object argument. If any of the values in the object are not\n  promises, they will be copied over to the fulfilled object and marked with state\n  'fulfilled'.\n\n  Example:\n\n  ```javascript\n  import { hashSettled, resolve } from 'rsvp';\n\n  let promises = {\n    myPromise: resolve(1),\n    yourPromise: resolve(2),\n    theirPromise: resolve(3),\n    notAPromise: 4\n  };\n\n  hashSettled(promises).then(function(hash){\n    // hash here is an object that looks like:\n    // {\n    //   myPromise: { state: 'fulfilled', value: 1 },\n    //   yourPromise: { state: 'fulfilled', value: 2 },\n    //   theirPromise: { state: 'fulfilled', value: 3 },\n    //   notAPromise: { state: 'fulfilled', value: 4 }\n    // }\n  });\n  ```\n\n  If any of the `promises` given to `hash` are rejected, the state will\n  be set to 'rejected' and the reason for rejection provided.\n\n  Example:\n\n  ```javascript\n  import { hashSettled, reject, resolve } from 'rsvp';\n\n  let promises = {\n    myPromise: resolve(1),\n    rejectedPromise: reject(new Error('rejection')),\n    anotherRejectedPromise: reject(new Error('more rejection')),\n  };\n\n  hashSettled(promises).then(function(hash){\n    // hash here is an object that looks like:\n    // {\n    //   myPromise:              { state: 'fulfilled', value: 1 },\n    //   rejectedPromise:        { state: 'rejected', reason: Error },\n    //   anotherRejectedPromise: { state: 'rejected', reason: Error },\n    // }\n    // Note that for rejectedPromise, reason.message == 'rejection',\n    // and for anotherRejectedPromise, reason.message == 'more rejection'.\n  });\n  ```\n\n  An important note: `hashSettled` is intended for plain JavaScript objects that\n  are just a set of keys and values. `hashSettled` will NOT preserve prototype\n  chains.\n\n  Example:\n\n  ```javascript\n  import Promise, { hashSettled, resolve } from 'rsvp';\n\n  function MyConstructor(){\n    this.example = resolve('Example');\n  }\n\n  MyConstructor.prototype = {\n    protoProperty: Promise.resolve('Proto Property')\n  };\n\n  let myObject = new MyConstructor();\n\n  hashSettled(myObject).then(function(hash){\n    // protoProperty will not be present, instead you will just have an\n    // object that looks like:\n    // {\n    //   example: { state: 'fulfilled', value: 'Example' }\n    // }\n    //\n    // hash.hasOwnProperty('protoProperty'); // false\n    // 'undefined' === typeof hash.protoProperty\n  });\n  ```\n\n  @method hashSettled\n  @public\n  @for rsvp\n  @param {Object} object\n  @param {String} [label] optional string that describes the promise.\n  Useful for tooling.\n  @return {Promise} promise that is fulfilled when when all properties of `promises`\n  have been settled.\n  @static\n*/\n\nexport default function hashSettled(object, label) {\n  return Promise.resolve(object, label).then(function (object) {\n    if (object === null || typeof object !== 'object') {\n      throw new TypeError(\"hashSettled must be called with an object\");\n    }\n\n    return new HashSettled(Promise, object, false, label).promise;\n  });\n}","/**\n  `rethrow` will rethrow an error on the next turn of the JavaScript event\n  loop in order to aid debugging.\n\n  Promises A+ specifies that any exceptions that occur with a promise must be\n  caught by the promises implementation and bubbled to the last handler. For\n  this reason, it is recommended that you always specify a second rejection\n  handler function to `then`. However, `rethrow` will throw the exception\n  outside of the promise, so it bubbles up to your console if in the browser,\n  or domain/cause uncaught exception in Node. `rethrow` will also throw the\n  error again so the error can be handled by the promise per the spec.\n\n  ```javascript\n  import { rethrow } from 'rsvp';\n\n  function throws(){\n    throw new Error('Whoops!');\n  }\n\n  let promise = new Promise(function(resolve, reject){\n    throws();\n  });\n\n  promise.catch(rethrow).then(function(){\n    // Code here doesn't run because the promise became rejected due to an\n    // error!\n  }, function (err){\n    // handle the error here\n  });\n  ```\n\n  The 'Whoops' error will be thrown on the next turn of the event loop\n  and you can watch for it in your console. You can also handle it using a\n  rejection handler given to `.then` or `.catch` on the returned promise.\n\n  @method rethrow\n  @public\n  @static\n  @for rsvp\n  @param {Error} reason reason the promise became rejected.\n  @throws Error\n  @static\n*/\nexport default function rethrow(reason) {\n  setTimeout(function () {\n    throw reason;\n  });\n  throw reason;\n}","import Promise from \"./promise\";\n\n/**\n  `defer` returns an object similar to jQuery's `$.Deferred`.\n  `defer` should be used when porting over code reliant on `$.Deferred`'s\n  interface. New code should use the `Promise` constructor instead.\n\n  The object returned from `defer` is a plain object with three properties:\n\n  * promise - an `Promise`.\n  * reject - a function that causes the `promise` property on this object to\n    become rejected\n  * resolve - a function that causes the `promise` property on this object to\n    become fulfilled.\n\n  Example:\n\n   ```javascript\n   let deferred = defer();\n\n   deferred.resolve(\"Success!\");\n\n   deferred.promise.then(function(value){\n     // value here is \"Success!\"\n   });\n   ```\n\n  @method defer\n  @public\n  @static\n  @for rsvp\n  @param {String} [label] optional string for labeling the promise.\n  Useful for tooling.\n  @return {Object}\n */\n\nexport default function defer(label) {\n  var deferred = { resolve: undefined, reject: undefined };\n\n  deferred.promise = new Promise(function (resolve, reject) {\n    deferred.resolve = resolve;\n    deferred.reject = reject;\n  }, label);\n\n  return deferred;\n}","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport Promise from './promise';\nimport { default as Enumerator } from './enumerator';\nimport { tryCatch, TRY_CATCH_ERROR, REJECTED } from './-internal';\n\nexport var MapEnumerator = function (_Enumerator) {\n  _inherits(MapEnumerator, _Enumerator);\n\n  function MapEnumerator(Constructor, entries, mapFn, label) {\n    return _possibleConstructorReturn(this, _Enumerator.call(this, Constructor, entries, true, label, mapFn));\n  }\n\n  MapEnumerator.prototype._init = function _init(Constructor, input, bool, label, mapFn) {\n    var len = input.length || 0;\n    this.length = len;\n    this._remaining = len;\n    this._result = new Array(len);\n    this._mapFn = mapFn;\n\n    this._enumerate(input);\n  };\n\n  MapEnumerator.prototype._setResultAt = function _setResultAt(state, i, value, firstPass) {\n    if (firstPass) {\n      var val = tryCatch(this._mapFn)(value, i);\n      if (val === TRY_CATCH_ERROR) {\n        this._settledAt(REJECTED, i, val.error, false);\n      } else {\n        this._eachEntry(val, i, false);\n      }\n    } else {\n      this._remaining--;\n      this._result[i] = value;\n    }\n  };\n\n  return MapEnumerator;\n}(Enumerator);\n\n/**\n `map` is similar to JavaScript's native `map` method. `mapFn` is eagerly called\n  meaning that as soon as any promise resolves its value will be passed to `mapFn`.\n  `map` returns a promise that will become fulfilled with the result of running\n  `mapFn` on the values the promises become fulfilled with.\n\n  For example:\n\n  ```javascript\n  import { map, resolve } from 'rsvp';\n\n  let promise1 = resolve(1);\n  let promise2 = resolve(2);\n  let promise3 = resolve(3);\n  let promises = [ promise1, promise2, promise3 ];\n\n  let mapFn = function(item){\n    return item + 1;\n  };\n\n  map(promises, mapFn).then(function(result){\n    // result is [ 2, 3, 4 ]\n  });\n  ```\n\n  If any of the `promises` given to `map` are rejected, the first promise\n  that is rejected will be given as an argument to the returned promise's\n  rejection handler. For example:\n\n  ```javascript\n  import { map, reject, resolve } from 'rsvp';\n\n  let promise1 = resolve(1);\n  let promise2 = reject(new Error('2'));\n  let promise3 = reject(new Error('3'));\n  let promises = [ promise1, promise2, promise3 ];\n\n  let mapFn = function(item){\n    return item + 1;\n  };\n\n  map(promises, mapFn).then(function(array){\n    // Code here never runs because there are rejected promises!\n  }, function(reason) {\n    // reason.message === '2'\n  });\n  ```\n\n  `map` will also wait if a promise is returned from `mapFn`. For example,\n  say you want to get all comments from a set of blog posts, but you need\n  the blog posts first because they contain a url to those comments.\n\n  ```javscript\n  import { map } from 'rsvp';\n\n  let mapFn = function(blogPost){\n    // getComments does some ajax and returns an Promise that is fulfilled\n    // with some comments data\n    return getComments(blogPost.comments_url);\n  };\n\n  // getBlogPosts does some ajax and returns an Promise that is fulfilled\n  // with some blog post data\n  map(getBlogPosts(), mapFn).then(function(comments){\n    // comments is the result of asking the server for the comments\n    // of all blog posts returned from getBlogPosts()\n  });\n  ```\n\n  @method map\n  @public\n  @static\n  @for rsvp\n  @param {Array} promises\n  @param {Function} mapFn function to be called on each fulfilled promise.\n  @param {String} [label] optional string for labeling the promise.\n  Useful for tooling.\n  @return {Promise} promise that is fulfilled with the result of calling\n  `mapFn` on each fulfilled promise or value when they become fulfilled.\n   The promise will be rejected if any of the given `promises` become rejected.\n*/\nexport default function map(promises, mapFn, label) {\n  if (typeof mapFn !== 'function') {\n    return Promise.reject(new TypeError(\"map expects a function as a second argument\"), label);\n  }\n\n  return Promise.resolve(promises, label).then(function (promises) {\n    if (!Array.isArray(promises)) {\n      throw new TypeError(\"map must be called with an array\");\n    }\n    return new MapEnumerator(Promise, promises, mapFn, label).promise;\n  });\n}","import Promise from './promise';\n\n/**\n  This is a convenient alias for `Promise.resolve`.\n\n  @method resolve\n  @public\n  @static\n  @for rsvp\n  @param {*} value value that the returned promise will be resolved with\n  @param {String} [label] optional string for identifying the returned promise.\n  Useful for tooling.\n  @return {Promise} a promise that will become fulfilled with the given\n  `value`\n*/\nexport default function resolve(value, label) {\n  return Promise.resolve(value, label);\n}","import Promise from './promise';\n\n/**\n  This is a convenient alias for `Promise.reject`.\n\n  @method reject\n  @public\n  @static\n  @for rsvp\n  @param {*} reason value that the returned promise will be rejected with.\n  @param {String} [label] optional string for identifying the returned promise.\n  Useful for tooling.\n  @return {Promise} a promise rejected with the given `reason`.\n*/\nexport default function reject(reason, label) {\n  return Promise.reject(reason, label);\n}","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport Promise from './promise';\nimport { MapEnumerator } from './map';\nimport { tryCatch, fulfill, TRY_CATCH_ERROR, REJECTED } from './-internal';\n\nvar EMPTY_OBJECT = {};\n\nvar FilterEnumerator = function (_MapEnumerator) {\n  _inherits(FilterEnumerator, _MapEnumerator);\n\n  function FilterEnumerator() {\n    return _possibleConstructorReturn(this, _MapEnumerator.apply(this, arguments));\n  }\n\n  FilterEnumerator.prototype._checkFullfillment = function _checkFullfillment() {\n    if (this._remaining === 0 && this._result !== null) {\n      var result = this._result.filter(function (val) {\n        return val !== EMPTY_OBJECT;\n      });\n      fulfill(this.promise, result);\n      this._result = null;\n    }\n  };\n\n  FilterEnumerator.prototype._setResultAt = function _setResultAt(state, i, value, firstPass) {\n    if (firstPass) {\n      this._result[i] = value;\n      var val = tryCatch(this._mapFn)(value, i);\n      if (val === TRY_CATCH_ERROR) {\n        this._settledAt(REJECTED, i, val.error, false);\n      } else {\n        this._eachEntry(val, i, false);\n      }\n    } else {\n      this._remaining--;\n      if (!value) {\n        this._result[i] = EMPTY_OBJECT;\n      }\n    }\n  };\n\n  return FilterEnumerator;\n}(MapEnumerator);\n\n/**\n `filter` is similar to JavaScript's native `filter` method.\n `filterFn` is eagerly called meaning that as soon as any promise\n  resolves its value will be passed to `filterFn`. `filter` returns\n  a promise that will become fulfilled with the result of running\n  `filterFn` on the values the promises become fulfilled with.\n\n  For example:\n\n  ```javascript\n  import { filter, resolve } from 'rsvp';\n\n  let promise1 = resolve(1);\n  let promise2 = resolve(2);\n  let promise3 = resolve(3);\n\n  let promises = [promise1, promise2, promise3];\n\n  let filterFn = function(item){\n    return item > 1;\n  };\n\n  filter(promises, filterFn).then(function(result){\n    // result is [ 2, 3 ]\n  });\n  ```\n\n  If any of the `promises` given to `filter` are rejected, the first promise\n  that is rejected will be given as an argument to the returned promise's\n  rejection handler. For example:\n\n  ```javascript\n  import { filter, reject, resolve } from 'rsvp';\n\n  let promise1 = resolve(1);\n  let promise2 = reject(new Error('2'));\n  let promise3 = reject(new Error('3'));\n  let promises = [ promise1, promise2, promise3 ];\n\n  let filterFn = function(item){\n    return item > 1;\n  };\n\n  filter(promises, filterFn).then(function(array){\n    // Code here never runs because there are rejected promises!\n  }, function(reason) {\n    // reason.message === '2'\n  });\n  ```\n\n  `filter` will also wait for any promises returned from `filterFn`.\n  For instance, you may want to fetch a list of users then return a subset\n  of those users based on some asynchronous operation:\n\n  ```javascript\n  import { filter, resolve } from 'rsvp';\n\n  let alice = { name: 'alice' };\n  let bob   = { name: 'bob' };\n  let users = [ alice, bob ];\n\n  let promises = users.map(function(user){\n    return resolve(user);\n  });\n\n  let filterFn = function(user){\n    // Here, Alice has permissions to create a blog post, but Bob does not.\n    return getPrivilegesForUser(user).then(function(privs){\n      return privs.can_create_blog_post === true;\n    });\n  };\n  filter(promises, filterFn).then(function(users){\n    // true, because the server told us only Alice can create a blog post.\n    users.length === 1;\n    // false, because Alice is the only user present in `users`\n    users[0] === bob;\n  });\n  ```\n\n  @method filter\n  @public\n  @static\n  @for rsvp\n  @param {Array} promises\n  @param {Function} filterFn - function to be called on each resolved value to\n  filter the final results.\n  @param {String} [label] optional string describing the promise. Useful for\n  tooling.\n  @return {Promise}\n*/\n\nexport default function filter(promises, filterFn, label) {\n  if (typeof filterFn !== 'function') {\n    return Promise.reject(new TypeError(\"filter expects function as a second argument\"), label);\n  }\n\n  return Promise.resolve(promises, label).then(function (promises) {\n    if (!Array.isArray(promises)) {\n      throw new TypeError(\"filter must be called with an array\");\n    }\n    return new FilterEnumerator(Promise, promises, filterFn, label).promise;\n  });\n}","var len = 0;\nvar vertxNext = void 0;\nexport default function asap(callback, arg) {\n  queue[len] = callback;\n  queue[len + 1] = arg;\n  len += 2;\n  if (len === 2) {\n    // If len is 1, that means that we need to schedule an async flush.\n    // If additional callbacks are queued before the queue is flushed, they\n    // will be processed by this flush that we are scheduling.\n    scheduleFlush();\n  }\n}\n\nvar browserWindow = typeof window !== 'undefined' ? window : undefined;\nvar browserGlobal = browserWindow || {};\nvar BrowserMutationObserver = browserGlobal.MutationObserver || browserGlobal.WebKitMutationObserver;\nvar isNode = typeof self === 'undefined' && typeof process !== 'undefined' && {}.toString.call(process) === '[object process]';\n\n// test for web worker but not in IE10\nvar isWorker = typeof Uint8ClampedArray !== 'undefined' && typeof importScripts !== 'undefined' && typeof MessageChannel !== 'undefined';\n\n// node\nfunction useNextTick() {\n  var nextTick = process.nextTick;\n  // node version 0.10.x displays a deprecation warning when nextTick is used recursively\n  // setImmediate should be used instead instead\n  var version = process.versions.node.match(/^(?:(\\d+)\\.)?(?:(\\d+)\\.)?(\\*|\\d+)$/);\n  if (Array.isArray(version) && version[1] === '0' && version[2] === '10') {\n    nextTick = setImmediate;\n  }\n  return function () {\n    return nextTick(flush);\n  };\n}\n\n// vertx\nfunction useVertxTimer() {\n  if (typeof vertxNext !== 'undefined') {\n    return function () {\n      vertxNext(flush);\n    };\n  }\n  return useSetTimeout();\n}\n\nfunction useMutationObserver() {\n  var iterations = 0;\n  var observer = new BrowserMutationObserver(flush);\n  var node = document.createTextNode('');\n  observer.observe(node, { characterData: true });\n\n  return function () {\n    return node.data = iterations = ++iterations % 2;\n  };\n}\n\n// web worker\nfunction useMessageChannel() {\n  var channel = new MessageChannel();\n  channel.port1.onmessage = flush;\n  return function () {\n    return channel.port2.postMessage(0);\n  };\n}\n\nfunction useSetTimeout() {\n  return function () {\n    return setTimeout(flush, 1);\n  };\n}\n\nvar queue = new Array(1000);\n\nfunction flush() {\n  for (var i = 0; i < len; i += 2) {\n    var callback = queue[i];\n    var arg = queue[i + 1];\n\n    callback(arg);\n\n    queue[i] = undefined;\n    queue[i + 1] = undefined;\n  }\n\n  len = 0;\n}\n\nfunction attemptVertex() {\n  try {\n    var vertx = Function('return this')().require('vertx');\n    vertxNext = vertx.runOnLoop || vertx.runOnContext;\n    return useVertxTimer();\n  } catch (e) {\n    return useSetTimeout();\n  }\n}\n\nvar scheduleFlush = void 0;\n// Decide what async method to use to triggering processing of queued callbacks:\nif (isNode) {\n  scheduleFlush = useNextTick();\n} else if (BrowserMutationObserver) {\n  scheduleFlush = useMutationObserver();\n} else if (isWorker) {\n  scheduleFlush = useMessageChannel();\n} else if (browserWindow === undefined && typeof require === 'function') {\n  scheduleFlush = attemptVertex();\n} else {\n  scheduleFlush = useSetTimeout();\n}","import Promise from './rsvp/promise';\nimport EventTarget from './rsvp/events';\nimport denodeify from './rsvp/node';\nimport all from './rsvp/all';\nimport allSettled from './rsvp/all-settled';\nimport race from './rsvp/race';\nimport hash from './rsvp/hash';\nimport hashSettled from './rsvp/hash-settled';\nimport rethrow from './rsvp/rethrow';\nimport defer from './rsvp/defer';\nimport { config, configure } from './rsvp/config';\nimport map from './rsvp/map';\nimport resolve from './rsvp/resolve';\nimport reject from './rsvp/reject';\nimport filter from './rsvp/filter';\nimport asap from './rsvp/asap';\n\n// defaults\nconfig.async = asap;\nconfig.after = function (cb) {\n  return setTimeout(cb, 0);\n};\nvar cast = resolve;\n\nvar async = function (callback, arg) {\n  return config.async(callback, arg);\n};\n\nfunction on() {\n  config.on.apply(config, arguments);\n}\n\nfunction off() {\n  config.off.apply(config, arguments);\n}\n\n// Set up instrumentation through `window.__PROMISE_INTRUMENTATION__`\nif (typeof window !== 'undefined' && typeof window['__PROMISE_INSTRUMENTATION__'] === 'object') {\n  var callbacks = window['__PROMISE_INSTRUMENTATION__'];\n  configure('instrument', true);\n  for (var eventName in callbacks) {\n    if (callbacks.hasOwnProperty(eventName)) {\n      on(eventName, callbacks[eventName]);\n    }\n  }\n}\n\n// the default export here is for backwards compat:\n//   https://github.com/tildeio/rsvp.js/issues/434\nexport default {\n  asap: asap,\n  cast: cast,\n  Promise: Promise,\n  EventTarget: EventTarget,\n  all: all,\n  allSettled: allSettled,\n  race: race,\n  hash: hash,\n  hashSettled: hashSettled,\n  rethrow: rethrow,\n  defer: defer,\n  denodeify: denodeify,\n  configure: configure,\n  on: on,\n  off: off,\n  resolve: resolve,\n  reject: reject,\n  map: map,\n  async: async,\n  filter: filter\n};\n\nexport { asap, cast, Promise, EventTarget, all, allSettled, race, hash, hashSettled, rethrow, defer, denodeify, configure, on, off, resolve, reject, map, async, filter };","/**\n * Created by Tivie on 13-07-2015.\n */\n\nfunction getDefaultOpts (simple) {\n  'use strict';\n\n  var defaultOptions = {\n    omitExtraWLInCodeBlocks: {\n      defaultValue: false,\n      describe: 'Omit the default extra whiteline added to code blocks',\n      type: 'boolean'\n    },\n    noHeaderId: {\n      defaultValue: false,\n      describe: 'Turn on/off generated header id',\n      type: 'boolean'\n    },\n    prefixHeaderId: {\n      defaultValue: false,\n      describe: 'Add a prefix to the generated header ids. Passing a string will prefix that string to the header id. Setting to true will add a generic \\'section-\\' prefix',\n      type: 'string'\n    },\n    rawPrefixHeaderId: {\n      defaultValue: false,\n      describe: 'Setting this option to true will prevent showdown from modifying the prefix. This might result in malformed IDs (if, for instance, the \" char is used in the prefix)',\n      type: 'boolean'\n    },\n    ghCompatibleHeaderId: {\n      defaultValue: false,\n      describe: 'Generate header ids compatible with github style (spaces are replaced with dashes, a bunch of non alphanumeric chars are removed)',\n      type: 'boolean'\n    },\n    rawHeaderId: {\n      defaultValue: false,\n      describe: 'Remove only spaces, \\' and \" from generated header ids (including prefixes), replacing them with dashes (-). WARNING: This might result in malformed ids',\n      type: 'boolean'\n    },\n    headerLevelStart: {\n      defaultValue: false,\n      describe: 'The header blocks level start',\n      type: 'integer'\n    },\n    parseImgDimensions: {\n      defaultValue: false,\n      describe: 'Turn on/off image dimension parsing',\n      type: 'boolean'\n    },\n    simplifiedAutoLink: {\n      defaultValue: false,\n      describe: 'Turn on/off GFM autolink style',\n      type: 'boolean'\n    },\n    excludeTrailingPunctuationFromURLs: {\n      defaultValue: false,\n      describe: 'Excludes trailing punctuation from links generated with autoLinking',\n      type: 'boolean'\n    },\n    literalMidWordUnderscores: {\n      defaultValue: false,\n      describe: 'Parse midword underscores as literal underscores',\n      type: 'boolean'\n    },\n    literalMidWordAsterisks: {\n      defaultValue: false,\n      describe: 'Parse midword asterisks as literal asterisks',\n      type: 'boolean'\n    },\n    strikethrough: {\n      defaultValue: false,\n      describe: 'Turn on/off strikethrough support',\n      type: 'boolean'\n    },\n    tables: {\n      defaultValue: false,\n      describe: 'Turn on/off tables support',\n      type: 'boolean'\n    },\n    tablesHeaderId: {\n      defaultValue: false,\n      describe: 'Add an id to table headers',\n      type: 'boolean'\n    },\n    ghCodeBlocks: {\n      defaultValue: true,\n      describe: 'Turn on/off GFM fenced code blocks support',\n      type: 'boolean'\n    },\n    tasklists: {\n      defaultValue: false,\n      describe: 'Turn on/off GFM tasklist support',\n      type: 'boolean'\n    },\n    smoothLivePreview: {\n      defaultValue: false,\n      describe: 'Prevents weird effects in live previews due to incomplete input',\n      type: 'boolean'\n    },\n    smartIndentationFix: {\n      defaultValue: false,\n      describe: 'Tries to smartly fix indentation in es6 strings',\n      type: 'boolean'\n    },\n    disableForced4SpacesIndentedSublists: {\n      defaultValue: false,\n      describe: 'Disables the requirement of indenting nested sublists by 4 spaces',\n      type: 'boolean'\n    },\n    simpleLineBreaks: {\n      defaultValue: false,\n      describe: 'Parses simple line breaks as <br> (GFM Style)',\n      type: 'boolean'\n    },\n    requireSpaceBeforeHeadingText: {\n      defaultValue: false,\n      describe: 'Makes adding a space between `#` and the header text mandatory (GFM Style)',\n      type: 'boolean'\n    },\n    ghMentions: {\n      defaultValue: false,\n      describe: 'Enables github @mentions',\n      type: 'boolean'\n    },\n    ghMentionsLink: {\n      defaultValue: 'https://github.com/{u}',\n      describe: 'Changes the link generated by @mentions. Only applies if ghMentions option is enabled.',\n      type: 'string'\n    },\n    encodeEmails: {\n      defaultValue: true,\n      describe: 'Encode e-mail addresses through the use of Character Entities, transforming ASCII e-mail addresses into its equivalent decimal entities',\n      type: 'boolean'\n    },\n    openLinksInNewWindow: {\n      defaultValue: false,\n      describe: 'Open all links in new windows',\n      type: 'boolean'\n    },\n    backslashEscapesHTMLTags: {\n      defaultValue: false,\n      describe: 'Support for HTML Tag escaping. ex: \\<div>foo\\</div>',\n      type: 'boolean'\n    },\n    emoji: {\n      defaultValue: false,\n      describe: 'Enable emoji support. Ex: `this is a :smile: emoji`',\n      type: 'boolean'\n    },\n    underline: {\n      defaultValue: false,\n      describe: 'Enable support for underline. Syntax is double or triple underscores: `__underline word__`. With this option enabled, underscores no longer parses into `<em>` and `<strong>`',\n      type: 'boolean'\n    },\n    ellipsis: {\n      defaultValue: true,\n      describe: 'Replaces three dots with the ellipsis unicode character',\n      type: 'boolean'\n    },\n    completeHTMLDocument: {\n      defaultValue: false,\n      describe: 'Outputs a complete html document, including `<html>`, `<head>` and `<body>` tags',\n      type: 'boolean'\n    },\n    metadata: {\n      defaultValue: false,\n      describe: 'Enable support for document metadata (defined at the top of the document between `«««` and `»»»` or between `---` and `---`).',\n      type: 'boolean'\n    },\n    splitAdjacentBlockquotes: {\n      defaultValue: false,\n      describe: 'Split adjacent blockquote blocks',\n      type: 'boolean'\n    }\n  };\n  if (simple === false) {\n    return JSON.parse(JSON.stringify(defaultOptions));\n  }\n  var ret = {};\n  for (var opt in defaultOptions) {\n    if (defaultOptions.hasOwnProperty(opt)) {\n      ret[opt] = defaultOptions[opt].defaultValue;\n    }\n  }\n  return ret;\n}\n\nfunction allOptionsOn () {\n  'use strict';\n  var options = getDefaultOpts(true),\n      ret = {};\n  for (var opt in options) {\n    if (options.hasOwnProperty(opt)) {\n      ret[opt] = true;\n    }\n  }\n  return ret;\n}\n","/**\n * Created by Tivie on 06-01-2015.\n */\n\n// Private properties\nvar showdown = {},\n    parsers = {},\n    extensions = {},\n    globalOptions = getDefaultOpts(true),\n    setFlavor = 'vanilla',\n    flavor = {\n      github: {\n        omitExtraWLInCodeBlocks:              true,\n        simplifiedAutoLink:                   true,\n        excludeTrailingPunctuationFromURLs:   true,\n        literalMidWordUnderscores:            true,\n        strikethrough:                        true,\n        tables:                               true,\n        tablesHeaderId:                       true,\n        ghCodeBlocks:                         true,\n        tasklists:                            true,\n        disableForced4SpacesIndentedSublists: true,\n        simpleLineBreaks:                     true,\n        requireSpaceBeforeHeadingText:        true,\n        ghCompatibleHeaderId:                 true,\n        ghMentions:                           true,\n        backslashEscapesHTMLTags:             true,\n        emoji:                                true,\n        splitAdjacentBlockquotes:             true\n      },\n      original: {\n        noHeaderId:                           true,\n        ghCodeBlocks:                         false\n      },\n      ghost: {\n        omitExtraWLInCodeBlocks:              true,\n        parseImgDimensions:                   true,\n        simplifiedAutoLink:                   true,\n        excludeTrailingPunctuationFromURLs:   true,\n        literalMidWordUnderscores:            true,\n        strikethrough:                        true,\n        tables:                               true,\n        tablesHeaderId:                       true,\n        ghCodeBlocks:                         true,\n        tasklists:                            true,\n        smoothLivePreview:                    true,\n        simpleLineBreaks:                     true,\n        requireSpaceBeforeHeadingText:        true,\n        ghMentions:                           false,\n        encodeEmails:                         true\n      },\n      vanilla: getDefaultOpts(true),\n      allOn: allOptionsOn()\n    };\n\n/**\n * helper namespace\n * @type {{}}\n */\nshowdown.helper = {};\n\n/**\n * TODO LEGACY SUPPORT CODE\n * @type {{}}\n */\nshowdown.extensions = {};\n\n/**\n * Set a global option\n * @static\n * @param {string} key\n * @param {*} value\n * @returns {showdown}\n */\nshowdown.setOption = function (key, value) {\n  'use strict';\n  globalOptions[key] = value;\n  return this;\n};\n\n/**\n * Get a global option\n * @static\n * @param {string} key\n * @returns {*}\n */\nshowdown.getOption = function (key) {\n  'use strict';\n  return globalOptions[key];\n};\n\n/**\n * Get the global options\n * @static\n * @returns {{}}\n */\nshowdown.getOptions = function () {\n  'use strict';\n  return globalOptions;\n};\n\n/**\n * Reset global options to the default values\n * @static\n */\nshowdown.resetOptions = function () {\n  'use strict';\n  globalOptions = getDefaultOpts(true);\n};\n\n/**\n * Set the flavor showdown should use as default\n * @param {string} name\n */\nshowdown.setFlavor = function (name) {\n  'use strict';\n  if (!flavor.hasOwnProperty(name)) {\n    throw Error(name + ' flavor was not found');\n  }\n  showdown.resetOptions();\n  var preset = flavor[name];\n  setFlavor = name;\n  for (var option in preset) {\n    if (preset.hasOwnProperty(option)) {\n      globalOptions[option] = preset[option];\n    }\n  }\n};\n\n/**\n * Get the currently set flavor\n * @returns {string}\n */\nshowdown.getFlavor = function () {\n  'use strict';\n  return setFlavor;\n};\n\n/**\n * Get the options of a specified flavor. Returns undefined if the flavor was not found\n * @param {string} name Name of the flavor\n * @returns {{}|undefined}\n */\nshowdown.getFlavorOptions = function (name) {\n  'use strict';\n  if (flavor.hasOwnProperty(name)) {\n    return flavor[name];\n  }\n};\n\n/**\n * Get the default options\n * @static\n * @param {boolean} [simple=true]\n * @returns {{}}\n */\nshowdown.getDefaultOptions = function (simple) {\n  'use strict';\n  return getDefaultOpts(simple);\n};\n\n/**\n * Get or set a subParser\n *\n * subParser(name)       - Get a registered subParser\n * subParser(name, func) - Register a subParser\n * @static\n * @param {string} name\n * @param {function} [func]\n * @returns {*}\n */\nshowdown.subParser = function (name, func) {\n  'use strict';\n  if (showdown.helper.isString(name)) {\n    if (typeof func !== 'undefined') {\n      parsers[name] = func;\n    } else {\n      if (parsers.hasOwnProperty(name)) {\n        return parsers[name];\n      } else {\n        throw Error('SubParser named ' + name + ' not registered!');\n      }\n    }\n  }\n};\n\n/**\n * Gets or registers an extension\n * @static\n * @param {string} name\n * @param {object|object[]|function=} ext\n * @returns {*}\n */\nshowdown.extension = function (name, ext) {\n  'use strict';\n\n  if (!showdown.helper.isString(name)) {\n    throw Error('Extension \\'name\\' must be a string');\n  }\n\n  name = showdown.helper.stdExtName(name);\n\n  // Getter\n  if (showdown.helper.isUndefined(ext)) {\n    if (!extensions.hasOwnProperty(name)) {\n      throw Error('Extension named ' + name + ' is not registered!');\n    }\n    return extensions[name];\n\n    // Setter\n  } else {\n    // Expand extension if it's wrapped in a function\n    if (typeof ext === 'function') {\n      ext = ext();\n    }\n\n    // Ensure extension is an array\n    if (!showdown.helper.isArray(ext)) {\n      ext = [ext];\n    }\n\n    var validExtension = validate(ext, name);\n\n    if (validExtension.valid) {\n      extensions[name] = ext;\n    } else {\n      throw Error(validExtension.error);\n    }\n  }\n};\n\n/**\n * Gets all extensions registered\n * @returns {{}}\n */\nshowdown.getAllExtensions = function () {\n  'use strict';\n  return extensions;\n};\n\n/**\n * Remove an extension\n * @param {string} name\n */\nshowdown.removeExtension = function (name) {\n  'use strict';\n  delete extensions[name];\n};\n\n/**\n * Removes all extensions\n */\nshowdown.resetExtensions = function () {\n  'use strict';\n  extensions = {};\n};\n\n/**\n * Validate extension\n * @param {array} extension\n * @param {string} name\n * @returns {{valid: boolean, error: string}}\n */\nfunction validate (extension, name) {\n  'use strict';\n\n  var errMsg = (name) ? 'Error in ' + name + ' extension->' : 'Error in unnamed extension',\n      ret = {\n        valid: true,\n        error: ''\n      };\n\n  if (!showdown.helper.isArray(extension)) {\n    extension = [extension];\n  }\n\n  for (var i = 0; i < extension.length; ++i) {\n    var baseMsg = errMsg + ' sub-extension ' + i + ': ',\n        ext = extension[i];\n    if (typeof ext !== 'object') {\n      ret.valid = false;\n      ret.error = baseMsg + 'must be an object, but ' + typeof ext + ' given';\n      return ret;\n    }\n\n    if (!showdown.helper.isString(ext.type)) {\n      ret.valid = false;\n      ret.error = baseMsg + 'property \"type\" must be a string, but ' + typeof ext.type + ' given';\n      return ret;\n    }\n\n    var type = ext.type = ext.type.toLowerCase();\n\n    // normalize extension type\n    if (type === 'language') {\n      type = ext.type = 'lang';\n    }\n\n    if (type === 'html') {\n      type = ext.type = 'output';\n    }\n\n    if (type !== 'lang' && type !== 'output' && type !== 'listener') {\n      ret.valid = false;\n      ret.error = baseMsg + 'type ' + type + ' is not recognized. Valid values: \"lang/language\", \"output/html\" or \"listener\"';\n      return ret;\n    }\n\n    if (type === 'listener') {\n      if (showdown.helper.isUndefined(ext.listeners)) {\n        ret.valid = false;\n        ret.error = baseMsg + '. Extensions of type \"listener\" must have a property called \"listeners\"';\n        return ret;\n      }\n    } else {\n      if (showdown.helper.isUndefined(ext.filter) && showdown.helper.isUndefined(ext.regex)) {\n        ret.valid = false;\n        ret.error = baseMsg + type + ' extensions must define either a \"regex\" property or a \"filter\" method';\n        return ret;\n      }\n    }\n\n    if (ext.listeners) {\n      if (typeof ext.listeners !== 'object') {\n        ret.valid = false;\n        ret.error = baseMsg + '\"listeners\" property must be an object but ' + typeof ext.listeners + ' given';\n        return ret;\n      }\n      for (var ln in ext.listeners) {\n        if (ext.listeners.hasOwnProperty(ln)) {\n          if (typeof ext.listeners[ln] !== 'function') {\n            ret.valid = false;\n            ret.error = baseMsg + '\"listeners\" property must be an hash of [event name]: [callback]. listeners.' + ln +\n              ' must be a function but ' + typeof ext.listeners[ln] + ' given';\n            return ret;\n          }\n        }\n      }\n    }\n\n    if (ext.filter) {\n      if (typeof ext.filter !== 'function') {\n        ret.valid = false;\n        ret.error = baseMsg + '\"filter\" must be a function, but ' + typeof ext.filter + ' given';\n        return ret;\n      }\n    } else if (ext.regex) {\n      if (showdown.helper.isString(ext.regex)) {\n        ext.regex = new RegExp(ext.regex, 'g');\n      }\n      if (!(ext.regex instanceof RegExp)) {\n        ret.valid = false;\n        ret.error = baseMsg + '\"regex\" property must either be a string or a RegExp object, but ' + typeof ext.regex + ' given';\n        return ret;\n      }\n      if (showdown.helper.isUndefined(ext.replace)) {\n        ret.valid = false;\n        ret.error = baseMsg + '\"regex\" extensions must implement a replace string or function';\n        return ret;\n      }\n    }\n  }\n  return ret;\n}\n\n/**\n * Validate extension\n * @param {object} ext\n * @returns {boolean}\n */\nshowdown.validateExtension = function (ext) {\n  'use strict';\n\n  var validateExtension = validate(ext, null);\n  if (!validateExtension.valid) {\n    console.warn(validateExtension.error);\n    return false;\n  }\n  return true;\n};\n","/**\n * showdownjs helper functions\n */\n\nif (!showdown.hasOwnProperty('helper')) {\n  showdown.helper = {};\n}\n\n/**\n * Check if var is string\n * @static\n * @param {string} a\n * @returns {boolean}\n */\nshowdown.helper.isString = function (a) {\n  'use strict';\n  return (typeof a === 'string' || a instanceof String);\n};\n\n/**\n * Check if var is a function\n * @static\n * @param {*} a\n * @returns {boolean}\n */\nshowdown.helper.isFunction = function (a) {\n  'use strict';\n  var getType = {};\n  return a && getType.toString.call(a) === '[object Function]';\n};\n\n/**\n * isArray helper function\n * @static\n * @param {*} a\n * @returns {boolean}\n */\nshowdown.helper.isArray = function (a) {\n  'use strict';\n  return Array.isArray(a);\n};\n\n/**\n * Check if value is undefined\n * @static\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n */\nshowdown.helper.isUndefined = function (value) {\n  'use strict';\n  return typeof value === 'undefined';\n};\n\n/**\n * ForEach helper function\n * Iterates over Arrays and Objects (own properties only)\n * @static\n * @param {*} obj\n * @param {function} callback Accepts 3 params: 1. value, 2. key, 3. the original array/object\n */\nshowdown.helper.forEach = function (obj, callback) {\n  'use strict';\n  // check if obj is defined\n  if (showdown.helper.isUndefined(obj)) {\n    throw new Error('obj param is required');\n  }\n\n  if (showdown.helper.isUndefined(callback)) {\n    throw new Error('callback param is required');\n  }\n\n  if (!showdown.helper.isFunction(callback)) {\n    throw new Error('callback param must be a function/closure');\n  }\n\n  if (typeof obj.forEach === 'function') {\n    obj.forEach(callback);\n  } else if (showdown.helper.isArray(obj)) {\n    for (var i = 0; i < obj.length; i++) {\n      callback(obj[i], i, obj);\n    }\n  } else if (typeof (obj) === 'object') {\n    for (var prop in obj) {\n      if (obj.hasOwnProperty(prop)) {\n        callback(obj[prop], prop, obj);\n      }\n    }\n  } else {\n    throw new Error('obj does not seem to be an array or an iterable object');\n  }\n};\n\n/**\n * Standardidize extension name\n * @static\n * @param {string} s extension name\n * @returns {string}\n */\nshowdown.helper.stdExtName = function (s) {\n  'use strict';\n  return s.replace(/[_?*+\\/\\\\.^-]/g, '').replace(/\\s/g, '').toLowerCase();\n};\n\nfunction escapeCharactersCallback (wholeMatch, m1) {\n  'use strict';\n  var charCodeToEscape = m1.charCodeAt(0);\n  return '¨E' + charCodeToEscape + 'E';\n}\n\n/**\n * Callback used to escape characters when passing through String.replace\n * @static\n * @param {string} wholeMatch\n * @param {string} m1\n * @returns {string}\n */\nshowdown.helper.escapeCharactersCallback = escapeCharactersCallback;\n\n/**\n * Escape characters in a string\n * @static\n * @param {string} text\n * @param {string} charsToEscape\n * @param {boolean} afterBackslash\n * @returns {XML|string|void|*}\n */\nshowdown.helper.escapeCharacters = function (text, charsToEscape, afterBackslash) {\n  'use strict';\n  // First we have to escape the escape characters so that\n  // we can build a character class out of them\n  var regexString = '([' + charsToEscape.replace(/([\\[\\]\\\\])/g, '\\\\$1') + '])';\n\n  if (afterBackslash) {\n    regexString = '\\\\\\\\' + regexString;\n  }\n\n  var regex = new RegExp(regexString, 'g');\n  text = text.replace(regex, escapeCharactersCallback);\n\n  return text;\n};\n\n/**\n * Unescape HTML entities\n * @param txt\n * @returns {string}\n */\nshowdown.helper.unescapeHTMLEntities = function (txt) {\n  'use strict';\n\n  return txt\n    .replace(/&quot;/g, '\"')\n    .replace(/&lt;/g, '<')\n    .replace(/&gt;/g, '>')\n    .replace(/&amp;/g, '&');\n};\n\nvar rgxFindMatchPos = function (str, left, right, flags) {\n  'use strict';\n  var f = flags || '',\n      g = f.indexOf('g') > -1,\n      x = new RegExp(left + '|' + right, 'g' + f.replace(/g/g, '')),\n      l = new RegExp(left, f.replace(/g/g, '')),\n      pos = [],\n      t, s, m, start, end;\n\n  do {\n    t = 0;\n    while ((m = x.exec(str))) {\n      if (l.test(m[0])) {\n        if (!(t++)) {\n          s = x.lastIndex;\n          start = s - m[0].length;\n        }\n      } else if (t) {\n        if (!--t) {\n          end = m.index + m[0].length;\n          var obj = {\n            left: {start: start, end: s},\n            match: {start: s, end: m.index},\n            right: {start: m.index, end: end},\n            wholeMatch: {start: start, end: end}\n          };\n          pos.push(obj);\n          if (!g) {\n            return pos;\n          }\n        }\n      }\n    }\n  } while (t && (x.lastIndex = s));\n\n  return pos;\n};\n\n/**\n * matchRecursiveRegExp\n *\n * (c) 2007 Steven Levithan <stevenlevithan.com>\n * MIT License\n *\n * Accepts a string to search, a left and right format delimiter\n * as regex patterns, and optional regex flags. Returns an array\n * of matches, allowing nested instances of left/right delimiters.\n * Use the \"g\" flag to return all matches, otherwise only the\n * first is returned. Be careful to ensure that the left and\n * right format delimiters produce mutually exclusive matches.\n * Backreferences are not supported within the right delimiter\n * due to how it is internally combined with the left delimiter.\n * When matching strings whose format delimiters are unbalanced\n * to the left or right, the output is intentionally as a\n * conventional regex library with recursion support would\n * produce, e.g. \"<<x>\" and \"<x>>\" both produce [\"x\"] when using\n * \"<\" and \">\" as the delimiters (both strings contain a single,\n * balanced instance of \"<x>\").\n *\n * examples:\n * matchRecursiveRegExp(\"test\", \"\\\\(\", \"\\\\)\")\n * returns: []\n * matchRecursiveRegExp(\"<t<<e>><s>>t<>\", \"<\", \">\", \"g\")\n * returns: [\"t<<e>><s>\", \"\"]\n * matchRecursiveRegExp(\"<div id=\\\"x\\\">test</div>\", \"<div\\\\b[^>]*>\", \"</div>\", \"gi\")\n * returns: [\"test\"]\n */\nshowdown.helper.matchRecursiveRegExp = function (str, left, right, flags) {\n  'use strict';\n\n  var matchPos = rgxFindMatchPos (str, left, right, flags),\n      results = [];\n\n  for (var i = 0; i < matchPos.length; ++i) {\n    results.push([\n      str.slice(matchPos[i].wholeMatch.start, matchPos[i].wholeMatch.end),\n      str.slice(matchPos[i].match.start, matchPos[i].match.end),\n      str.slice(matchPos[i].left.start, matchPos[i].left.end),\n      str.slice(matchPos[i].right.start, matchPos[i].right.end)\n    ]);\n  }\n  return results;\n};\n\n/**\n *\n * @param {string} str\n * @param {string|function} replacement\n * @param {string} left\n * @param {string} right\n * @param {string} flags\n * @returns {string}\n */\nshowdown.helper.replaceRecursiveRegExp = function (str, replacement, left, right, flags) {\n  'use strict';\n\n  if (!showdown.helper.isFunction(replacement)) {\n    var repStr = replacement;\n    replacement = function () {\n      return repStr;\n    };\n  }\n\n  var matchPos = rgxFindMatchPos(str, left, right, flags),\n      finalStr = str,\n      lng = matchPos.length;\n\n  if (lng > 0) {\n    var bits = [];\n    if (matchPos[0].wholeMatch.start !== 0) {\n      bits.push(str.slice(0, matchPos[0].wholeMatch.start));\n    }\n    for (var i = 0; i < lng; ++i) {\n      bits.push(\n        replacement(\n          str.slice(matchPos[i].wholeMatch.start, matchPos[i].wholeMatch.end),\n          str.slice(matchPos[i].match.start, matchPos[i].match.end),\n          str.slice(matchPos[i].left.start, matchPos[i].left.end),\n          str.slice(matchPos[i].right.start, matchPos[i].right.end)\n        )\n      );\n      if (i < lng - 1) {\n        bits.push(str.slice(matchPos[i].wholeMatch.end, matchPos[i + 1].wholeMatch.start));\n      }\n    }\n    if (matchPos[lng - 1].wholeMatch.end < str.length) {\n      bits.push(str.slice(matchPos[lng - 1].wholeMatch.end));\n    }\n    finalStr = bits.join('');\n  }\n  return finalStr;\n};\n\n/**\n * Returns the index within the passed String object of the first occurrence of the specified regex,\n * starting the search at fromIndex. Returns -1 if the value is not found.\n *\n * @param {string} str string to search\n * @param {RegExp} regex Regular expression to search\n * @param {int} [fromIndex = 0] Index to start the search\n * @returns {Number}\n * @throws InvalidArgumentError\n */\nshowdown.helper.regexIndexOf = function (str, regex, fromIndex) {\n  'use strict';\n  if (!showdown.helper.isString(str)) {\n    throw 'InvalidArgumentError: first parameter of showdown.helper.regexIndexOf function must be a string';\n  }\n  if (regex instanceof RegExp === false) {\n    throw 'InvalidArgumentError: second parameter of showdown.helper.regexIndexOf function must be an instance of RegExp';\n  }\n  var indexOf = str.substring(fromIndex || 0).search(regex);\n  return (indexOf >= 0) ? (indexOf + (fromIndex || 0)) : indexOf;\n};\n\n/**\n * Splits the passed string object at the defined index, and returns an array composed of the two substrings\n * @param {string} str string to split\n * @param {int} index index to split string at\n * @returns {[string,string]}\n * @throws InvalidArgumentError\n */\nshowdown.helper.splitAtIndex = function (str, index) {\n  'use strict';\n  if (!showdown.helper.isString(str)) {\n    throw 'InvalidArgumentError: first parameter of showdown.helper.regexIndexOf function must be a string';\n  }\n  return [str.substring(0, index), str.substring(index)];\n};\n\n/**\n * Obfuscate an e-mail address through the use of Character Entities,\n * transforming ASCII characters into their equivalent decimal or hex entities.\n *\n * Since it has a random component, subsequent calls to this function produce different results\n *\n * @param {string} mail\n * @returns {string}\n */\nshowdown.helper.encodeEmailAddress = function (mail) {\n  'use strict';\n  var encode = [\n    function (ch) {\n      return '&#' + ch.charCodeAt(0) + ';';\n    },\n    function (ch) {\n      return '&#x' + ch.charCodeAt(0).toString(16) + ';';\n    },\n    function (ch) {\n      return ch;\n    }\n  ];\n\n  mail = mail.replace(/./g, function (ch) {\n    if (ch === '@') {\n      // this *must* be encoded. I insist.\n      ch = encode[Math.floor(Math.random() * 2)](ch);\n    } else {\n      var r = Math.random();\n      // roughly 10% raw, 45% hex, 45% dec\n      ch = (\n        r > 0.9 ? encode[2](ch) : r > 0.45 ? encode[1](ch) : encode[0](ch)\n      );\n    }\n    return ch;\n  });\n\n  return mail;\n};\n\n/**\n *\n * @param str\n * @param targetLength\n * @param padString\n * @returns {string}\n */\nshowdown.helper.padEnd = function padEnd (str, targetLength, padString) {\n  'use strict';\n  /*jshint bitwise: false*/\n  // eslint-disable-next-line space-infix-ops\n  targetLength = targetLength>>0; //floor if number or convert non-number to 0;\n  /*jshint bitwise: true*/\n  padString = String(padString || ' ');\n  if (str.length > targetLength) {\n    return String(str);\n  } else {\n    targetLength = targetLength - str.length;\n    if (targetLength > padString.length) {\n      padString += padString.repeat(targetLength / padString.length); //append to original to ensure we are longer than needed\n    }\n    return String(str) + padString.slice(0,targetLength);\n  }\n};\n\n/**\n * POLYFILLS\n */\n// use this instead of builtin is undefined for IE8 compatibility\nif (typeof (console) === 'undefined') {\n  console = {\n    warn: function (msg) {\n      'use strict';\n      alert(msg);\n    },\n    log: function (msg) {\n      'use strict';\n      alert(msg);\n    },\n    error: function (msg) {\n      'use strict';\n      throw msg;\n    }\n  };\n}\n\n/**\n * Common regexes.\n * We declare some common regexes to improve performance\n */\nshowdown.helper.regexes = {\n  asteriskDashAndColon: /([*_:~])/g\n};\n\n/**\n * EMOJIS LIST\n */\nshowdown.helper.emojis = {\n  '+1':'\\ud83d\\udc4d',\n  '-1':'\\ud83d\\udc4e',\n  '100':'\\ud83d\\udcaf',\n  '1234':'\\ud83d\\udd22',\n  '1st_place_medal':'\\ud83e\\udd47',\n  '2nd_place_medal':'\\ud83e\\udd48',\n  '3rd_place_medal':'\\ud83e\\udd49',\n  '8ball':'\\ud83c\\udfb1',\n  'a':'\\ud83c\\udd70\\ufe0f',\n  'ab':'\\ud83c\\udd8e',\n  'abc':'\\ud83d\\udd24',\n  'abcd':'\\ud83d\\udd21',\n  'accept':'\\ud83c\\ude51',\n  'aerial_tramway':'\\ud83d\\udea1',\n  'airplane':'\\u2708\\ufe0f',\n  'alarm_clock':'\\u23f0',\n  'alembic':'\\u2697\\ufe0f',\n  'alien':'\\ud83d\\udc7d',\n  'ambulance':'\\ud83d\\ude91',\n  'amphora':'\\ud83c\\udffa',\n  'anchor':'\\u2693\\ufe0f',\n  'angel':'\\ud83d\\udc7c',\n  'anger':'\\ud83d\\udca2',\n  'angry':'\\ud83d\\ude20',\n  'anguished':'\\ud83d\\ude27',\n  'ant':'\\ud83d\\udc1c',\n  'apple':'\\ud83c\\udf4e',\n  'aquarius':'\\u2652\\ufe0f',\n  'aries':'\\u2648\\ufe0f',\n  'arrow_backward':'\\u25c0\\ufe0f',\n  'arrow_double_down':'\\u23ec',\n  'arrow_double_up':'\\u23eb',\n  'arrow_down':'\\u2b07\\ufe0f',\n  'arrow_down_small':'\\ud83d\\udd3d',\n  'arrow_forward':'\\u25b6\\ufe0f',\n  'arrow_heading_down':'\\u2935\\ufe0f',\n  'arrow_heading_up':'\\u2934\\ufe0f',\n  'arrow_left':'\\u2b05\\ufe0f',\n  'arrow_lower_left':'\\u2199\\ufe0f',\n  'arrow_lower_right':'\\u2198\\ufe0f',\n  'arrow_right':'\\u27a1\\ufe0f',\n  'arrow_right_hook':'\\u21aa\\ufe0f',\n  'arrow_up':'\\u2b06\\ufe0f',\n  'arrow_up_down':'\\u2195\\ufe0f',\n  'arrow_up_small':'\\ud83d\\udd3c',\n  'arrow_upper_left':'\\u2196\\ufe0f',\n  'arrow_upper_right':'\\u2197\\ufe0f',\n  'arrows_clockwise':'\\ud83d\\udd03',\n  'arrows_counterclockwise':'\\ud83d\\udd04',\n  'art':'\\ud83c\\udfa8',\n  'articulated_lorry':'\\ud83d\\ude9b',\n  'artificial_satellite':'\\ud83d\\udef0',\n  'astonished':'\\ud83d\\ude32',\n  'athletic_shoe':'\\ud83d\\udc5f',\n  'atm':'\\ud83c\\udfe7',\n  'atom_symbol':'\\u269b\\ufe0f',\n  'avocado':'\\ud83e\\udd51',\n  'b':'\\ud83c\\udd71\\ufe0f',\n  'baby':'\\ud83d\\udc76',\n  'baby_bottle':'\\ud83c\\udf7c',\n  'baby_chick':'\\ud83d\\udc24',\n  'baby_symbol':'\\ud83d\\udebc',\n  'back':'\\ud83d\\udd19',\n  'bacon':'\\ud83e\\udd53',\n  'badminton':'\\ud83c\\udff8',\n  'baggage_claim':'\\ud83d\\udec4',\n  'baguette_bread':'\\ud83e\\udd56',\n  'balance_scale':'\\u2696\\ufe0f',\n  'balloon':'\\ud83c\\udf88',\n  'ballot_box':'\\ud83d\\uddf3',\n  'ballot_box_with_check':'\\u2611\\ufe0f',\n  'bamboo':'\\ud83c\\udf8d',\n  'banana':'\\ud83c\\udf4c',\n  'bangbang':'\\u203c\\ufe0f',\n  'bank':'\\ud83c\\udfe6',\n  'bar_chart':'\\ud83d\\udcca',\n  'barber':'\\ud83d\\udc88',\n  'baseball':'\\u26be\\ufe0f',\n  'basketball':'\\ud83c\\udfc0',\n  'basketball_man':'\\u26f9\\ufe0f',\n  'basketball_woman':'\\u26f9\\ufe0f&zwj;\\u2640\\ufe0f',\n  'bat':'\\ud83e\\udd87',\n  'bath':'\\ud83d\\udec0',\n  'bathtub':'\\ud83d\\udec1',\n  'battery':'\\ud83d\\udd0b',\n  'beach_umbrella':'\\ud83c\\udfd6',\n  'bear':'\\ud83d\\udc3b',\n  'bed':'\\ud83d\\udecf',\n  'bee':'\\ud83d\\udc1d',\n  'beer':'\\ud83c\\udf7a',\n  'beers':'\\ud83c\\udf7b',\n  'beetle':'\\ud83d\\udc1e',\n  'beginner':'\\ud83d\\udd30',\n  'bell':'\\ud83d\\udd14',\n  'bellhop_bell':'\\ud83d\\udece',\n  'bento':'\\ud83c\\udf71',\n  'biking_man':'\\ud83d\\udeb4',\n  'bike':'\\ud83d\\udeb2',\n  'biking_woman':'\\ud83d\\udeb4&zwj;\\u2640\\ufe0f',\n  'bikini':'\\ud83d\\udc59',\n  'biohazard':'\\u2623\\ufe0f',\n  'bird':'\\ud83d\\udc26',\n  'birthday':'\\ud83c\\udf82',\n  'black_circle':'\\u26ab\\ufe0f',\n  'black_flag':'\\ud83c\\udff4',\n  'black_heart':'\\ud83d\\udda4',\n  'black_joker':'\\ud83c\\udccf',\n  'black_large_square':'\\u2b1b\\ufe0f',\n  'black_medium_small_square':'\\u25fe\\ufe0f',\n  'black_medium_square':'\\u25fc\\ufe0f',\n  'black_nib':'\\u2712\\ufe0f',\n  'black_small_square':'\\u25aa\\ufe0f',\n  'black_square_button':'\\ud83d\\udd32',\n  'blonde_man':'\\ud83d\\udc71',\n  'blonde_woman':'\\ud83d\\udc71&zwj;\\u2640\\ufe0f',\n  'blossom':'\\ud83c\\udf3c',\n  'blowfish':'\\ud83d\\udc21',\n  'blue_book':'\\ud83d\\udcd8',\n  'blue_car':'\\ud83d\\ude99',\n  'blue_heart':'\\ud83d\\udc99',\n  'blush':'\\ud83d\\ude0a',\n  'boar':'\\ud83d\\udc17',\n  'boat':'\\u26f5\\ufe0f',\n  'bomb':'\\ud83d\\udca3',\n  'book':'\\ud83d\\udcd6',\n  'bookmark':'\\ud83d\\udd16',\n  'bookmark_tabs':'\\ud83d\\udcd1',\n  'books':'\\ud83d\\udcda',\n  'boom':'\\ud83d\\udca5',\n  'boot':'\\ud83d\\udc62',\n  'bouquet':'\\ud83d\\udc90',\n  'bowing_man':'\\ud83d\\ude47',\n  'bow_and_arrow':'\\ud83c\\udff9',\n  'bowing_woman':'\\ud83d\\ude47&zwj;\\u2640\\ufe0f',\n  'bowling':'\\ud83c\\udfb3',\n  'boxing_glove':'\\ud83e\\udd4a',\n  'boy':'\\ud83d\\udc66',\n  'bread':'\\ud83c\\udf5e',\n  'bride_with_veil':'\\ud83d\\udc70',\n  'bridge_at_night':'\\ud83c\\udf09',\n  'briefcase':'\\ud83d\\udcbc',\n  'broken_heart':'\\ud83d\\udc94',\n  'bug':'\\ud83d\\udc1b',\n  'building_construction':'\\ud83c\\udfd7',\n  'bulb':'\\ud83d\\udca1',\n  'bullettrain_front':'\\ud83d\\ude85',\n  'bullettrain_side':'\\ud83d\\ude84',\n  'burrito':'\\ud83c\\udf2f',\n  'bus':'\\ud83d\\ude8c',\n  'business_suit_levitating':'\\ud83d\\udd74',\n  'busstop':'\\ud83d\\ude8f',\n  'bust_in_silhouette':'\\ud83d\\udc64',\n  'busts_in_silhouette':'\\ud83d\\udc65',\n  'butterfly':'\\ud83e\\udd8b',\n  'cactus':'\\ud83c\\udf35',\n  'cake':'\\ud83c\\udf70',\n  'calendar':'\\ud83d\\udcc6',\n  'call_me_hand':'\\ud83e\\udd19',\n  'calling':'\\ud83d\\udcf2',\n  'camel':'\\ud83d\\udc2b',\n  'camera':'\\ud83d\\udcf7',\n  'camera_flash':'\\ud83d\\udcf8',\n  'camping':'\\ud83c\\udfd5',\n  'cancer':'\\u264b\\ufe0f',\n  'candle':'\\ud83d\\udd6f',\n  'candy':'\\ud83c\\udf6c',\n  'canoe':'\\ud83d\\udef6',\n  'capital_abcd':'\\ud83d\\udd20',\n  'capricorn':'\\u2651\\ufe0f',\n  'car':'\\ud83d\\ude97',\n  'card_file_box':'\\ud83d\\uddc3',\n  'card_index':'\\ud83d\\udcc7',\n  'card_index_dividers':'\\ud83d\\uddc2',\n  'carousel_horse':'\\ud83c\\udfa0',\n  'carrot':'\\ud83e\\udd55',\n  'cat':'\\ud83d\\udc31',\n  'cat2':'\\ud83d\\udc08',\n  'cd':'\\ud83d\\udcbf',\n  'chains':'\\u26d3',\n  'champagne':'\\ud83c\\udf7e',\n  'chart':'\\ud83d\\udcb9',\n  'chart_with_downwards_trend':'\\ud83d\\udcc9',\n  'chart_with_upwards_trend':'\\ud83d\\udcc8',\n  'checkered_flag':'\\ud83c\\udfc1',\n  'cheese':'\\ud83e\\uddc0',\n  'cherries':'\\ud83c\\udf52',\n  'cherry_blossom':'\\ud83c\\udf38',\n  'chestnut':'\\ud83c\\udf30',\n  'chicken':'\\ud83d\\udc14',\n  'children_crossing':'\\ud83d\\udeb8',\n  'chipmunk':'\\ud83d\\udc3f',\n  'chocolate_bar':'\\ud83c\\udf6b',\n  'christmas_tree':'\\ud83c\\udf84',\n  'church':'\\u26ea\\ufe0f',\n  'cinema':'\\ud83c\\udfa6',\n  'circus_tent':'\\ud83c\\udfaa',\n  'city_sunrise':'\\ud83c\\udf07',\n  'city_sunset':'\\ud83c\\udf06',\n  'cityscape':'\\ud83c\\udfd9',\n  'cl':'\\ud83c\\udd91',\n  'clamp':'\\ud83d\\udddc',\n  'clap':'\\ud83d\\udc4f',\n  'clapper':'\\ud83c\\udfac',\n  'classical_building':'\\ud83c\\udfdb',\n  'clinking_glasses':'\\ud83e\\udd42',\n  'clipboard':'\\ud83d\\udccb',\n  'clock1':'\\ud83d\\udd50',\n  'clock10':'\\ud83d\\udd59',\n  'clock1030':'\\ud83d\\udd65',\n  'clock11':'\\ud83d\\udd5a',\n  'clock1130':'\\ud83d\\udd66',\n  'clock12':'\\ud83d\\udd5b',\n  'clock1230':'\\ud83d\\udd67',\n  'clock130':'\\ud83d\\udd5c',\n  'clock2':'\\ud83d\\udd51',\n  'clock230':'\\ud83d\\udd5d',\n  'clock3':'\\ud83d\\udd52',\n  'clock330':'\\ud83d\\udd5e',\n  'clock4':'\\ud83d\\udd53',\n  'clock430':'\\ud83d\\udd5f',\n  'clock5':'\\ud83d\\udd54',\n  'clock530':'\\ud83d\\udd60',\n  'clock6':'\\ud83d\\udd55',\n  'clock630':'\\ud83d\\udd61',\n  'clock7':'\\ud83d\\udd56',\n  'clock730':'\\ud83d\\udd62',\n  'clock8':'\\ud83d\\udd57',\n  'clock830':'\\ud83d\\udd63',\n  'clock9':'\\ud83d\\udd58',\n  'clock930':'\\ud83d\\udd64',\n  'closed_book':'\\ud83d\\udcd5',\n  'closed_lock_with_key':'\\ud83d\\udd10',\n  'closed_umbrella':'\\ud83c\\udf02',\n  'cloud':'\\u2601\\ufe0f',\n  'cloud_with_lightning':'\\ud83c\\udf29',\n  'cloud_with_lightning_and_rain':'\\u26c8',\n  'cloud_with_rain':'\\ud83c\\udf27',\n  'cloud_with_snow':'\\ud83c\\udf28',\n  'clown_face':'\\ud83e\\udd21',\n  'clubs':'\\u2663\\ufe0f',\n  'cocktail':'\\ud83c\\udf78',\n  'coffee':'\\u2615\\ufe0f',\n  'coffin':'\\u26b0\\ufe0f',\n  'cold_sweat':'\\ud83d\\ude30',\n  'comet':'\\u2604\\ufe0f',\n  'computer':'\\ud83d\\udcbb',\n  'computer_mouse':'\\ud83d\\uddb1',\n  'confetti_ball':'\\ud83c\\udf8a',\n  'confounded':'\\ud83d\\ude16',\n  'confused':'\\ud83d\\ude15',\n  'congratulations':'\\u3297\\ufe0f',\n  'construction':'\\ud83d\\udea7',\n  'construction_worker_man':'\\ud83d\\udc77',\n  'construction_worker_woman':'\\ud83d\\udc77&zwj;\\u2640\\ufe0f',\n  'control_knobs':'\\ud83c\\udf9b',\n  'convenience_store':'\\ud83c\\udfea',\n  'cookie':'\\ud83c\\udf6a',\n  'cool':'\\ud83c\\udd92',\n  'policeman':'\\ud83d\\udc6e',\n  'copyright':'\\u00a9\\ufe0f',\n  'corn':'\\ud83c\\udf3d',\n  'couch_and_lamp':'\\ud83d\\udecb',\n  'couple':'\\ud83d\\udc6b',\n  'couple_with_heart_woman_man':'\\ud83d\\udc91',\n  'couple_with_heart_man_man':'\\ud83d\\udc68&zwj;\\u2764\\ufe0f&zwj;\\ud83d\\udc68',\n  'couple_with_heart_woman_woman':'\\ud83d\\udc69&zwj;\\u2764\\ufe0f&zwj;\\ud83d\\udc69',\n  'couplekiss_man_man':'\\ud83d\\udc68&zwj;\\u2764\\ufe0f&zwj;\\ud83d\\udc8b&zwj;\\ud83d\\udc68',\n  'couplekiss_man_woman':'\\ud83d\\udc8f',\n  'couplekiss_woman_woman':'\\ud83d\\udc69&zwj;\\u2764\\ufe0f&zwj;\\ud83d\\udc8b&zwj;\\ud83d\\udc69',\n  'cow':'\\ud83d\\udc2e',\n  'cow2':'\\ud83d\\udc04',\n  'cowboy_hat_face':'\\ud83e\\udd20',\n  'crab':'\\ud83e\\udd80',\n  'crayon':'\\ud83d\\udd8d',\n  'credit_card':'\\ud83d\\udcb3',\n  'crescent_moon':'\\ud83c\\udf19',\n  'cricket':'\\ud83c\\udfcf',\n  'crocodile':'\\ud83d\\udc0a',\n  'croissant':'\\ud83e\\udd50',\n  'crossed_fingers':'\\ud83e\\udd1e',\n  'crossed_flags':'\\ud83c\\udf8c',\n  'crossed_swords':'\\u2694\\ufe0f',\n  'crown':'\\ud83d\\udc51',\n  'cry':'\\ud83d\\ude22',\n  'crying_cat_face':'\\ud83d\\ude3f',\n  'crystal_ball':'\\ud83d\\udd2e',\n  'cucumber':'\\ud83e\\udd52',\n  'cupid':'\\ud83d\\udc98',\n  'curly_loop':'\\u27b0',\n  'currency_exchange':'\\ud83d\\udcb1',\n  'curry':'\\ud83c\\udf5b',\n  'custard':'\\ud83c\\udf6e',\n  'customs':'\\ud83d\\udec3',\n  'cyclone':'\\ud83c\\udf00',\n  'dagger':'\\ud83d\\udde1',\n  'dancer':'\\ud83d\\udc83',\n  'dancing_women':'\\ud83d\\udc6f',\n  'dancing_men':'\\ud83d\\udc6f&zwj;\\u2642\\ufe0f',\n  'dango':'\\ud83c\\udf61',\n  'dark_sunglasses':'\\ud83d\\udd76',\n  'dart':'\\ud83c\\udfaf',\n  'dash':'\\ud83d\\udca8',\n  'date':'\\ud83d\\udcc5',\n  'deciduous_tree':'\\ud83c\\udf33',\n  'deer':'\\ud83e\\udd8c',\n  'department_store':'\\ud83c\\udfec',\n  'derelict_house':'\\ud83c\\udfda',\n  'desert':'\\ud83c\\udfdc',\n  'desert_island':'\\ud83c\\udfdd',\n  'desktop_computer':'\\ud83d\\udda5',\n  'male_detective':'\\ud83d\\udd75\\ufe0f',\n  'diamond_shape_with_a_dot_inside':'\\ud83d\\udca0',\n  'diamonds':'\\u2666\\ufe0f',\n  'disappointed':'\\ud83d\\ude1e',\n  'disappointed_relieved':'\\ud83d\\ude25',\n  'dizzy':'\\ud83d\\udcab',\n  'dizzy_face':'\\ud83d\\ude35',\n  'do_not_litter':'\\ud83d\\udeaf',\n  'dog':'\\ud83d\\udc36',\n  'dog2':'\\ud83d\\udc15',\n  'dollar':'\\ud83d\\udcb5',\n  'dolls':'\\ud83c\\udf8e',\n  'dolphin':'\\ud83d\\udc2c',\n  'door':'\\ud83d\\udeaa',\n  'doughnut':'\\ud83c\\udf69',\n  'dove':'\\ud83d\\udd4a',\n  'dragon':'\\ud83d\\udc09',\n  'dragon_face':'\\ud83d\\udc32',\n  'dress':'\\ud83d\\udc57',\n  'dromedary_camel':'\\ud83d\\udc2a',\n  'drooling_face':'\\ud83e\\udd24',\n  'droplet':'\\ud83d\\udca7',\n  'drum':'\\ud83e\\udd41',\n  'duck':'\\ud83e\\udd86',\n  'dvd':'\\ud83d\\udcc0',\n  'e-mail':'\\ud83d\\udce7',\n  'eagle':'\\ud83e\\udd85',\n  'ear':'\\ud83d\\udc42',\n  'ear_of_rice':'\\ud83c\\udf3e',\n  'earth_africa':'\\ud83c\\udf0d',\n  'earth_americas':'\\ud83c\\udf0e',\n  'earth_asia':'\\ud83c\\udf0f',\n  'egg':'\\ud83e\\udd5a',\n  'eggplant':'\\ud83c\\udf46',\n  'eight_pointed_black_star':'\\u2734\\ufe0f',\n  'eight_spoked_asterisk':'\\u2733\\ufe0f',\n  'electric_plug':'\\ud83d\\udd0c',\n  'elephant':'\\ud83d\\udc18',\n  'email':'\\u2709\\ufe0f',\n  'end':'\\ud83d\\udd1a',\n  'envelope_with_arrow':'\\ud83d\\udce9',\n  'euro':'\\ud83d\\udcb6',\n  'european_castle':'\\ud83c\\udff0',\n  'european_post_office':'\\ud83c\\udfe4',\n  'evergreen_tree':'\\ud83c\\udf32',\n  'exclamation':'\\u2757\\ufe0f',\n  'expressionless':'\\ud83d\\ude11',\n  'eye':'\\ud83d\\udc41',\n  'eye_speech_bubble':'\\ud83d\\udc41&zwj;\\ud83d\\udde8',\n  'eyeglasses':'\\ud83d\\udc53',\n  'eyes':'\\ud83d\\udc40',\n  'face_with_head_bandage':'\\ud83e\\udd15',\n  'face_with_thermometer':'\\ud83e\\udd12',\n  'fist_oncoming':'\\ud83d\\udc4a',\n  'factory':'\\ud83c\\udfed',\n  'fallen_leaf':'\\ud83c\\udf42',\n  'family_man_woman_boy':'\\ud83d\\udc6a',\n  'family_man_boy':'\\ud83d\\udc68&zwj;\\ud83d\\udc66',\n  'family_man_boy_boy':'\\ud83d\\udc68&zwj;\\ud83d\\udc66&zwj;\\ud83d\\udc66',\n  'family_man_girl':'\\ud83d\\udc68&zwj;\\ud83d\\udc67',\n  'family_man_girl_boy':'\\ud83d\\udc68&zwj;\\ud83d\\udc67&zwj;\\ud83d\\udc66',\n  'family_man_girl_girl':'\\ud83d\\udc68&zwj;\\ud83d\\udc67&zwj;\\ud83d\\udc67',\n  'family_man_man_boy':'\\ud83d\\udc68&zwj;\\ud83d\\udc68&zwj;\\ud83d\\udc66',\n  'family_man_man_boy_boy':'\\ud83d\\udc68&zwj;\\ud83d\\udc68&zwj;\\ud83d\\udc66&zwj;\\ud83d\\udc66',\n  'family_man_man_girl':'\\ud83d\\udc68&zwj;\\ud83d\\udc68&zwj;\\ud83d\\udc67',\n  'family_man_man_girl_boy':'\\ud83d\\udc68&zwj;\\ud83d\\udc68&zwj;\\ud83d\\udc67&zwj;\\ud83d\\udc66',\n  'family_man_man_girl_girl':'\\ud83d\\udc68&zwj;\\ud83d\\udc68&zwj;\\ud83d\\udc67&zwj;\\ud83d\\udc67',\n  'family_man_woman_boy_boy':'\\ud83d\\udc68&zwj;\\ud83d\\udc69&zwj;\\ud83d\\udc66&zwj;\\ud83d\\udc66',\n  'family_man_woman_girl':'\\ud83d\\udc68&zwj;\\ud83d\\udc69&zwj;\\ud83d\\udc67',\n  'family_man_woman_girl_boy':'\\ud83d\\udc68&zwj;\\ud83d\\udc69&zwj;\\ud83d\\udc67&zwj;\\ud83d\\udc66',\n  'family_man_woman_girl_girl':'\\ud83d\\udc68&zwj;\\ud83d\\udc69&zwj;\\ud83d\\udc67&zwj;\\ud83d\\udc67',\n  'family_woman_boy':'\\ud83d\\udc69&zwj;\\ud83d\\udc66',\n  'family_woman_boy_boy':'\\ud83d\\udc69&zwj;\\ud83d\\udc66&zwj;\\ud83d\\udc66',\n  'family_woman_girl':'\\ud83d\\udc69&zwj;\\ud83d\\udc67',\n  'family_woman_girl_boy':'\\ud83d\\udc69&zwj;\\ud83d\\udc67&zwj;\\ud83d\\udc66',\n  'family_woman_girl_girl':'\\ud83d\\udc69&zwj;\\ud83d\\udc67&zwj;\\ud83d\\udc67',\n  'family_woman_woman_boy':'\\ud83d\\udc69&zwj;\\ud83d\\udc69&zwj;\\ud83d\\udc66',\n  'family_woman_woman_boy_boy':'\\ud83d\\udc69&zwj;\\ud83d\\udc69&zwj;\\ud83d\\udc66&zwj;\\ud83d\\udc66',\n  'family_woman_woman_girl':'\\ud83d\\udc69&zwj;\\ud83d\\udc69&zwj;\\ud83d\\udc67',\n  'family_woman_woman_girl_boy':'\\ud83d\\udc69&zwj;\\ud83d\\udc69&zwj;\\ud83d\\udc67&zwj;\\ud83d\\udc66',\n  'family_woman_woman_girl_girl':'\\ud83d\\udc69&zwj;\\ud83d\\udc69&zwj;\\ud83d\\udc67&zwj;\\ud83d\\udc67',\n  'fast_forward':'\\u23e9',\n  'fax':'\\ud83d\\udce0',\n  'fearful':'\\ud83d\\ude28',\n  'feet':'\\ud83d\\udc3e',\n  'female_detective':'\\ud83d\\udd75\\ufe0f&zwj;\\u2640\\ufe0f',\n  'ferris_wheel':'\\ud83c\\udfa1',\n  'ferry':'\\u26f4',\n  'field_hockey':'\\ud83c\\udfd1',\n  'file_cabinet':'\\ud83d\\uddc4',\n  'file_folder':'\\ud83d\\udcc1',\n  'film_projector':'\\ud83d\\udcfd',\n  'film_strip':'\\ud83c\\udf9e',\n  'fire':'\\ud83d\\udd25',\n  'fire_engine':'\\ud83d\\ude92',\n  'fireworks':'\\ud83c\\udf86',\n  'first_quarter_moon':'\\ud83c\\udf13',\n  'first_quarter_moon_with_face':'\\ud83c\\udf1b',\n  'fish':'\\ud83d\\udc1f',\n  'fish_cake':'\\ud83c\\udf65',\n  'fishing_pole_and_fish':'\\ud83c\\udfa3',\n  'fist_raised':'\\u270a',\n  'fist_left':'\\ud83e\\udd1b',\n  'fist_right':'\\ud83e\\udd1c',\n  'flags':'\\ud83c\\udf8f',\n  'flashlight':'\\ud83d\\udd26',\n  'fleur_de_lis':'\\u269c\\ufe0f',\n  'flight_arrival':'\\ud83d\\udeec',\n  'flight_departure':'\\ud83d\\udeeb',\n  'floppy_disk':'\\ud83d\\udcbe',\n  'flower_playing_cards':'\\ud83c\\udfb4',\n  'flushed':'\\ud83d\\ude33',\n  'fog':'\\ud83c\\udf2b',\n  'foggy':'\\ud83c\\udf01',\n  'football':'\\ud83c\\udfc8',\n  'footprints':'\\ud83d\\udc63',\n  'fork_and_knife':'\\ud83c\\udf74',\n  'fountain':'\\u26f2\\ufe0f',\n  'fountain_pen':'\\ud83d\\udd8b',\n  'four_leaf_clover':'\\ud83c\\udf40',\n  'fox_face':'\\ud83e\\udd8a',\n  'framed_picture':'\\ud83d\\uddbc',\n  'free':'\\ud83c\\udd93',\n  'fried_egg':'\\ud83c\\udf73',\n  'fried_shrimp':'\\ud83c\\udf64',\n  'fries':'\\ud83c\\udf5f',\n  'frog':'\\ud83d\\udc38',\n  'frowning':'\\ud83d\\ude26',\n  'frowning_face':'\\u2639\\ufe0f',\n  'frowning_man':'\\ud83d\\ude4d&zwj;\\u2642\\ufe0f',\n  'frowning_woman':'\\ud83d\\ude4d',\n  'middle_finger':'\\ud83d\\udd95',\n  'fuelpump':'\\u26fd\\ufe0f',\n  'full_moon':'\\ud83c\\udf15',\n  'full_moon_with_face':'\\ud83c\\udf1d',\n  'funeral_urn':'\\u26b1\\ufe0f',\n  'game_die':'\\ud83c\\udfb2',\n  'gear':'\\u2699\\ufe0f',\n  'gem':'\\ud83d\\udc8e',\n  'gemini':'\\u264a\\ufe0f',\n  'ghost':'\\ud83d\\udc7b',\n  'gift':'\\ud83c\\udf81',\n  'gift_heart':'\\ud83d\\udc9d',\n  'girl':'\\ud83d\\udc67',\n  'globe_with_meridians':'\\ud83c\\udf10',\n  'goal_net':'\\ud83e\\udd45',\n  'goat':'\\ud83d\\udc10',\n  'golf':'\\u26f3\\ufe0f',\n  'golfing_man':'\\ud83c\\udfcc\\ufe0f',\n  'golfing_woman':'\\ud83c\\udfcc\\ufe0f&zwj;\\u2640\\ufe0f',\n  'gorilla':'\\ud83e\\udd8d',\n  'grapes':'\\ud83c\\udf47',\n  'green_apple':'\\ud83c\\udf4f',\n  'green_book':'\\ud83d\\udcd7',\n  'green_heart':'\\ud83d\\udc9a',\n  'green_salad':'\\ud83e\\udd57',\n  'grey_exclamation':'\\u2755',\n  'grey_question':'\\u2754',\n  'grimacing':'\\ud83d\\ude2c',\n  'grin':'\\ud83d\\ude01',\n  'grinning':'\\ud83d\\ude00',\n  'guardsman':'\\ud83d\\udc82',\n  'guardswoman':'\\ud83d\\udc82&zwj;\\u2640\\ufe0f',\n  'guitar':'\\ud83c\\udfb8',\n  'gun':'\\ud83d\\udd2b',\n  'haircut_woman':'\\ud83d\\udc87',\n  'haircut_man':'\\ud83d\\udc87&zwj;\\u2642\\ufe0f',\n  'hamburger':'\\ud83c\\udf54',\n  'hammer':'\\ud83d\\udd28',\n  'hammer_and_pick':'\\u2692',\n  'hammer_and_wrench':'\\ud83d\\udee0',\n  'hamster':'\\ud83d\\udc39',\n  'hand':'\\u270b',\n  'handbag':'\\ud83d\\udc5c',\n  'handshake':'\\ud83e\\udd1d',\n  'hankey':'\\ud83d\\udca9',\n  'hatched_chick':'\\ud83d\\udc25',\n  'hatching_chick':'\\ud83d\\udc23',\n  'headphones':'\\ud83c\\udfa7',\n  'hear_no_evil':'\\ud83d\\ude49',\n  'heart':'\\u2764\\ufe0f',\n  'heart_decoration':'\\ud83d\\udc9f',\n  'heart_eyes':'\\ud83d\\ude0d',\n  'heart_eyes_cat':'\\ud83d\\ude3b',\n  'heartbeat':'\\ud83d\\udc93',\n  'heartpulse':'\\ud83d\\udc97',\n  'hearts':'\\u2665\\ufe0f',\n  'heavy_check_mark':'\\u2714\\ufe0f',\n  'heavy_division_sign':'\\u2797',\n  'heavy_dollar_sign':'\\ud83d\\udcb2',\n  'heavy_heart_exclamation':'\\u2763\\ufe0f',\n  'heavy_minus_sign':'\\u2796',\n  'heavy_multiplication_x':'\\u2716\\ufe0f',\n  'heavy_plus_sign':'\\u2795',\n  'helicopter':'\\ud83d\\ude81',\n  'herb':'\\ud83c\\udf3f',\n  'hibiscus':'\\ud83c\\udf3a',\n  'high_brightness':'\\ud83d\\udd06',\n  'high_heel':'\\ud83d\\udc60',\n  'hocho':'\\ud83d\\udd2a',\n  'hole':'\\ud83d\\udd73',\n  'honey_pot':'\\ud83c\\udf6f',\n  'horse':'\\ud83d\\udc34',\n  'horse_racing':'\\ud83c\\udfc7',\n  'hospital':'\\ud83c\\udfe5',\n  'hot_pepper':'\\ud83c\\udf36',\n  'hotdog':'\\ud83c\\udf2d',\n  'hotel':'\\ud83c\\udfe8',\n  'hotsprings':'\\u2668\\ufe0f',\n  'hourglass':'\\u231b\\ufe0f',\n  'hourglass_flowing_sand':'\\u23f3',\n  'house':'\\ud83c\\udfe0',\n  'house_with_garden':'\\ud83c\\udfe1',\n  'houses':'\\ud83c\\udfd8',\n  'hugs':'\\ud83e\\udd17',\n  'hushed':'\\ud83d\\ude2f',\n  'ice_cream':'\\ud83c\\udf68',\n  'ice_hockey':'\\ud83c\\udfd2',\n  'ice_skate':'\\u26f8',\n  'icecream':'\\ud83c\\udf66',\n  'id':'\\ud83c\\udd94',\n  'ideograph_advantage':'\\ud83c\\ude50',\n  'imp':'\\ud83d\\udc7f',\n  'inbox_tray':'\\ud83d\\udce5',\n  'incoming_envelope':'\\ud83d\\udce8',\n  'tipping_hand_woman':'\\ud83d\\udc81',\n  'information_source':'\\u2139\\ufe0f',\n  'innocent':'\\ud83d\\ude07',\n  'interrobang':'\\u2049\\ufe0f',\n  'iphone':'\\ud83d\\udcf1',\n  'izakaya_lantern':'\\ud83c\\udfee',\n  'jack_o_lantern':'\\ud83c\\udf83',\n  'japan':'\\ud83d\\uddfe',\n  'japanese_castle':'\\ud83c\\udfef',\n  'japanese_goblin':'\\ud83d\\udc7a',\n  'japanese_ogre':'\\ud83d\\udc79',\n  'jeans':'\\ud83d\\udc56',\n  'joy':'\\ud83d\\ude02',\n  'joy_cat':'\\ud83d\\ude39',\n  'joystick':'\\ud83d\\udd79',\n  'kaaba':'\\ud83d\\udd4b',\n  'key':'\\ud83d\\udd11',\n  'keyboard':'\\u2328\\ufe0f',\n  'keycap_ten':'\\ud83d\\udd1f',\n  'kick_scooter':'\\ud83d\\udef4',\n  'kimono':'\\ud83d\\udc58',\n  'kiss':'\\ud83d\\udc8b',\n  'kissing':'\\ud83d\\ude17',\n  'kissing_cat':'\\ud83d\\ude3d',\n  'kissing_closed_eyes':'\\ud83d\\ude1a',\n  'kissing_heart':'\\ud83d\\ude18',\n  'kissing_smiling_eyes':'\\ud83d\\ude19',\n  'kiwi_fruit':'\\ud83e\\udd5d',\n  'koala':'\\ud83d\\udc28',\n  'koko':'\\ud83c\\ude01',\n  'label':'\\ud83c\\udff7',\n  'large_blue_circle':'\\ud83d\\udd35',\n  'large_blue_diamond':'\\ud83d\\udd37',\n  'large_orange_diamond':'\\ud83d\\udd36',\n  'last_quarter_moon':'\\ud83c\\udf17',\n  'last_quarter_moon_with_face':'\\ud83c\\udf1c',\n  'latin_cross':'\\u271d\\ufe0f',\n  'laughing':'\\ud83d\\ude06',\n  'leaves':'\\ud83c\\udf43',\n  'ledger':'\\ud83d\\udcd2',\n  'left_luggage':'\\ud83d\\udec5',\n  'left_right_arrow':'\\u2194\\ufe0f',\n  'leftwards_arrow_with_hook':'\\u21a9\\ufe0f',\n  'lemon':'\\ud83c\\udf4b',\n  'leo':'\\u264c\\ufe0f',\n  'leopard':'\\ud83d\\udc06',\n  'level_slider':'\\ud83c\\udf9a',\n  'libra':'\\u264e\\ufe0f',\n  'light_rail':'\\ud83d\\ude88',\n  'link':'\\ud83d\\udd17',\n  'lion':'\\ud83e\\udd81',\n  'lips':'\\ud83d\\udc44',\n  'lipstick':'\\ud83d\\udc84',\n  'lizard':'\\ud83e\\udd8e',\n  'lock':'\\ud83d\\udd12',\n  'lock_with_ink_pen':'\\ud83d\\udd0f',\n  'lollipop':'\\ud83c\\udf6d',\n  'loop':'\\u27bf',\n  'loud_sound':'\\ud83d\\udd0a',\n  'loudspeaker':'\\ud83d\\udce2',\n  'love_hotel':'\\ud83c\\udfe9',\n  'love_letter':'\\ud83d\\udc8c',\n  'low_brightness':'\\ud83d\\udd05',\n  'lying_face':'\\ud83e\\udd25',\n  'm':'\\u24c2\\ufe0f',\n  'mag':'\\ud83d\\udd0d',\n  'mag_right':'\\ud83d\\udd0e',\n  'mahjong':'\\ud83c\\udc04\\ufe0f',\n  'mailbox':'\\ud83d\\udceb',\n  'mailbox_closed':'\\ud83d\\udcea',\n  'mailbox_with_mail':'\\ud83d\\udcec',\n  'mailbox_with_no_mail':'\\ud83d\\udced',\n  'man':'\\ud83d\\udc68',\n  'man_artist':'\\ud83d\\udc68&zwj;\\ud83c\\udfa8',\n  'man_astronaut':'\\ud83d\\udc68&zwj;\\ud83d\\ude80',\n  'man_cartwheeling':'\\ud83e\\udd38&zwj;\\u2642\\ufe0f',\n  'man_cook':'\\ud83d\\udc68&zwj;\\ud83c\\udf73',\n  'man_dancing':'\\ud83d\\udd7a',\n  'man_facepalming':'\\ud83e\\udd26&zwj;\\u2642\\ufe0f',\n  'man_factory_worker':'\\ud83d\\udc68&zwj;\\ud83c\\udfed',\n  'man_farmer':'\\ud83d\\udc68&zwj;\\ud83c\\udf3e',\n  'man_firefighter':'\\ud83d\\udc68&zwj;\\ud83d\\ude92',\n  'man_health_worker':'\\ud83d\\udc68&zwj;\\u2695\\ufe0f',\n  'man_in_tuxedo':'\\ud83e\\udd35',\n  'man_judge':'\\ud83d\\udc68&zwj;\\u2696\\ufe0f',\n  'man_juggling':'\\ud83e\\udd39&zwj;\\u2642\\ufe0f',\n  'man_mechanic':'\\ud83d\\udc68&zwj;\\ud83d\\udd27',\n  'man_office_worker':'\\ud83d\\udc68&zwj;\\ud83d\\udcbc',\n  'man_pilot':'\\ud83d\\udc68&zwj;\\u2708\\ufe0f',\n  'man_playing_handball':'\\ud83e\\udd3e&zwj;\\u2642\\ufe0f',\n  'man_playing_water_polo':'\\ud83e\\udd3d&zwj;\\u2642\\ufe0f',\n  'man_scientist':'\\ud83d\\udc68&zwj;\\ud83d\\udd2c',\n  'man_shrugging':'\\ud83e\\udd37&zwj;\\u2642\\ufe0f',\n  'man_singer':'\\ud83d\\udc68&zwj;\\ud83c\\udfa4',\n  'man_student':'\\ud83d\\udc68&zwj;\\ud83c\\udf93',\n  'man_teacher':'\\ud83d\\udc68&zwj;\\ud83c\\udfeb',\n  'man_technologist':'\\ud83d\\udc68&zwj;\\ud83d\\udcbb',\n  'man_with_gua_pi_mao':'\\ud83d\\udc72',\n  'man_with_turban':'\\ud83d\\udc73',\n  'tangerine':'\\ud83c\\udf4a',\n  'mans_shoe':'\\ud83d\\udc5e',\n  'mantelpiece_clock':'\\ud83d\\udd70',\n  'maple_leaf':'\\ud83c\\udf41',\n  'martial_arts_uniform':'\\ud83e\\udd4b',\n  'mask':'\\ud83d\\ude37',\n  'massage_woman':'\\ud83d\\udc86',\n  'massage_man':'\\ud83d\\udc86&zwj;\\u2642\\ufe0f',\n  'meat_on_bone':'\\ud83c\\udf56',\n  'medal_military':'\\ud83c\\udf96',\n  'medal_sports':'\\ud83c\\udfc5',\n  'mega':'\\ud83d\\udce3',\n  'melon':'\\ud83c\\udf48',\n  'memo':'\\ud83d\\udcdd',\n  'men_wrestling':'\\ud83e\\udd3c&zwj;\\u2642\\ufe0f',\n  'menorah':'\\ud83d\\udd4e',\n  'mens':'\\ud83d\\udeb9',\n  'metal':'\\ud83e\\udd18',\n  'metro':'\\ud83d\\ude87',\n  'microphone':'\\ud83c\\udfa4',\n  'microscope':'\\ud83d\\udd2c',\n  'milk_glass':'\\ud83e\\udd5b',\n  'milky_way':'\\ud83c\\udf0c',\n  'minibus':'\\ud83d\\ude90',\n  'minidisc':'\\ud83d\\udcbd',\n  'mobile_phone_off':'\\ud83d\\udcf4',\n  'money_mouth_face':'\\ud83e\\udd11',\n  'money_with_wings':'\\ud83d\\udcb8',\n  'moneybag':'\\ud83d\\udcb0',\n  'monkey':'\\ud83d\\udc12',\n  'monkey_face':'\\ud83d\\udc35',\n  'monorail':'\\ud83d\\ude9d',\n  'moon':'\\ud83c\\udf14',\n  'mortar_board':'\\ud83c\\udf93',\n  'mosque':'\\ud83d\\udd4c',\n  'motor_boat':'\\ud83d\\udee5',\n  'motor_scooter':'\\ud83d\\udef5',\n  'motorcycle':'\\ud83c\\udfcd',\n  'motorway':'\\ud83d\\udee3',\n  'mount_fuji':'\\ud83d\\uddfb',\n  'mountain':'\\u26f0',\n  'mountain_biking_man':'\\ud83d\\udeb5',\n  'mountain_biking_woman':'\\ud83d\\udeb5&zwj;\\u2640\\ufe0f',\n  'mountain_cableway':'\\ud83d\\udea0',\n  'mountain_railway':'\\ud83d\\ude9e',\n  'mountain_snow':'\\ud83c\\udfd4',\n  'mouse':'\\ud83d\\udc2d',\n  'mouse2':'\\ud83d\\udc01',\n  'movie_camera':'\\ud83c\\udfa5',\n  'moyai':'\\ud83d\\uddff',\n  'mrs_claus':'\\ud83e\\udd36',\n  'muscle':'\\ud83d\\udcaa',\n  'mushroom':'\\ud83c\\udf44',\n  'musical_keyboard':'\\ud83c\\udfb9',\n  'musical_note':'\\ud83c\\udfb5',\n  'musical_score':'\\ud83c\\udfbc',\n  'mute':'\\ud83d\\udd07',\n  'nail_care':'\\ud83d\\udc85',\n  'name_badge':'\\ud83d\\udcdb',\n  'national_park':'\\ud83c\\udfde',\n  'nauseated_face':'\\ud83e\\udd22',\n  'necktie':'\\ud83d\\udc54',\n  'negative_squared_cross_mark':'\\u274e',\n  'nerd_face':'\\ud83e\\udd13',\n  'neutral_face':'\\ud83d\\ude10',\n  'new':'\\ud83c\\udd95',\n  'new_moon':'\\ud83c\\udf11',\n  'new_moon_with_face':'\\ud83c\\udf1a',\n  'newspaper':'\\ud83d\\udcf0',\n  'newspaper_roll':'\\ud83d\\uddde',\n  'next_track_button':'\\u23ed',\n  'ng':'\\ud83c\\udd96',\n  'no_good_man':'\\ud83d\\ude45&zwj;\\u2642\\ufe0f',\n  'no_good_woman':'\\ud83d\\ude45',\n  'night_with_stars':'\\ud83c\\udf03',\n  'no_bell':'\\ud83d\\udd15',\n  'no_bicycles':'\\ud83d\\udeb3',\n  'no_entry':'\\u26d4\\ufe0f',\n  'no_entry_sign':'\\ud83d\\udeab',\n  'no_mobile_phones':'\\ud83d\\udcf5',\n  'no_mouth':'\\ud83d\\ude36',\n  'no_pedestrians':'\\ud83d\\udeb7',\n  'no_smoking':'\\ud83d\\udead',\n  'non-potable_water':'\\ud83d\\udeb1',\n  'nose':'\\ud83d\\udc43',\n  'notebook':'\\ud83d\\udcd3',\n  'notebook_with_decorative_cover':'\\ud83d\\udcd4',\n  'notes':'\\ud83c\\udfb6',\n  'nut_and_bolt':'\\ud83d\\udd29',\n  'o':'\\u2b55\\ufe0f',\n  'o2':'\\ud83c\\udd7e\\ufe0f',\n  'ocean':'\\ud83c\\udf0a',\n  'octopus':'\\ud83d\\udc19',\n  'oden':'\\ud83c\\udf62',\n  'office':'\\ud83c\\udfe2',\n  'oil_drum':'\\ud83d\\udee2',\n  'ok':'\\ud83c\\udd97',\n  'ok_hand':'\\ud83d\\udc4c',\n  'ok_man':'\\ud83d\\ude46&zwj;\\u2642\\ufe0f',\n  'ok_woman':'\\ud83d\\ude46',\n  'old_key':'\\ud83d\\udddd',\n  'older_man':'\\ud83d\\udc74',\n  'older_woman':'\\ud83d\\udc75',\n  'om':'\\ud83d\\udd49',\n  'on':'\\ud83d\\udd1b',\n  'oncoming_automobile':'\\ud83d\\ude98',\n  'oncoming_bus':'\\ud83d\\ude8d',\n  'oncoming_police_car':'\\ud83d\\ude94',\n  'oncoming_taxi':'\\ud83d\\ude96',\n  'open_file_folder':'\\ud83d\\udcc2',\n  'open_hands':'\\ud83d\\udc50',\n  'open_mouth':'\\ud83d\\ude2e',\n  'open_umbrella':'\\u2602\\ufe0f',\n  'ophiuchus':'\\u26ce',\n  'orange_book':'\\ud83d\\udcd9',\n  'orthodox_cross':'\\u2626\\ufe0f',\n  'outbox_tray':'\\ud83d\\udce4',\n  'owl':'\\ud83e\\udd89',\n  'ox':'\\ud83d\\udc02',\n  'package':'\\ud83d\\udce6',\n  'page_facing_up':'\\ud83d\\udcc4',\n  'page_with_curl':'\\ud83d\\udcc3',\n  'pager':'\\ud83d\\udcdf',\n  'paintbrush':'\\ud83d\\udd8c',\n  'palm_tree':'\\ud83c\\udf34',\n  'pancakes':'\\ud83e\\udd5e',\n  'panda_face':'\\ud83d\\udc3c',\n  'paperclip':'\\ud83d\\udcce',\n  'paperclips':'\\ud83d\\udd87',\n  'parasol_on_ground':'\\u26f1',\n  'parking':'\\ud83c\\udd7f\\ufe0f',\n  'part_alternation_mark':'\\u303d\\ufe0f',\n  'partly_sunny':'\\u26c5\\ufe0f',\n  'passenger_ship':'\\ud83d\\udef3',\n  'passport_control':'\\ud83d\\udec2',\n  'pause_button':'\\u23f8',\n  'peace_symbol':'\\u262e\\ufe0f',\n  'peach':'\\ud83c\\udf51',\n  'peanuts':'\\ud83e\\udd5c',\n  'pear':'\\ud83c\\udf50',\n  'pen':'\\ud83d\\udd8a',\n  'pencil2':'\\u270f\\ufe0f',\n  'penguin':'\\ud83d\\udc27',\n  'pensive':'\\ud83d\\ude14',\n  'performing_arts':'\\ud83c\\udfad',\n  'persevere':'\\ud83d\\ude23',\n  'person_fencing':'\\ud83e\\udd3a',\n  'pouting_woman':'\\ud83d\\ude4e',\n  'phone':'\\u260e\\ufe0f',\n  'pick':'\\u26cf',\n  'pig':'\\ud83d\\udc37',\n  'pig2':'\\ud83d\\udc16',\n  'pig_nose':'\\ud83d\\udc3d',\n  'pill':'\\ud83d\\udc8a',\n  'pineapple':'\\ud83c\\udf4d',\n  'ping_pong':'\\ud83c\\udfd3',\n  'pisces':'\\u2653\\ufe0f',\n  'pizza':'\\ud83c\\udf55',\n  'place_of_worship':'\\ud83d\\uded0',\n  'plate_with_cutlery':'\\ud83c\\udf7d',\n  'play_or_pause_button':'\\u23ef',\n  'point_down':'\\ud83d\\udc47',\n  'point_left':'\\ud83d\\udc48',\n  'point_right':'\\ud83d\\udc49',\n  'point_up':'\\u261d\\ufe0f',\n  'point_up_2':'\\ud83d\\udc46',\n  'police_car':'\\ud83d\\ude93',\n  'policewoman':'\\ud83d\\udc6e&zwj;\\u2640\\ufe0f',\n  'poodle':'\\ud83d\\udc29',\n  'popcorn':'\\ud83c\\udf7f',\n  'post_office':'\\ud83c\\udfe3',\n  'postal_horn':'\\ud83d\\udcef',\n  'postbox':'\\ud83d\\udcee',\n  'potable_water':'\\ud83d\\udeb0',\n  'potato':'\\ud83e\\udd54',\n  'pouch':'\\ud83d\\udc5d',\n  'poultry_leg':'\\ud83c\\udf57',\n  'pound':'\\ud83d\\udcb7',\n  'rage':'\\ud83d\\ude21',\n  'pouting_cat':'\\ud83d\\ude3e',\n  'pouting_man':'\\ud83d\\ude4e&zwj;\\u2642\\ufe0f',\n  'pray':'\\ud83d\\ude4f',\n  'prayer_beads':'\\ud83d\\udcff',\n  'pregnant_woman':'\\ud83e\\udd30',\n  'previous_track_button':'\\u23ee',\n  'prince':'\\ud83e\\udd34',\n  'princess':'\\ud83d\\udc78',\n  'printer':'\\ud83d\\udda8',\n  'purple_heart':'\\ud83d\\udc9c',\n  'purse':'\\ud83d\\udc5b',\n  'pushpin':'\\ud83d\\udccc',\n  'put_litter_in_its_place':'\\ud83d\\udeae',\n  'question':'\\u2753',\n  'rabbit':'\\ud83d\\udc30',\n  'rabbit2':'\\ud83d\\udc07',\n  'racehorse':'\\ud83d\\udc0e',\n  'racing_car':'\\ud83c\\udfce',\n  'radio':'\\ud83d\\udcfb',\n  'radio_button':'\\ud83d\\udd18',\n  'radioactive':'\\u2622\\ufe0f',\n  'railway_car':'\\ud83d\\ude83',\n  'railway_track':'\\ud83d\\udee4',\n  'rainbow':'\\ud83c\\udf08',\n  'rainbow_flag':'\\ud83c\\udff3\\ufe0f&zwj;\\ud83c\\udf08',\n  'raised_back_of_hand':'\\ud83e\\udd1a',\n  'raised_hand_with_fingers_splayed':'\\ud83d\\udd90',\n  'raised_hands':'\\ud83d\\ude4c',\n  'raising_hand_woman':'\\ud83d\\ude4b',\n  'raising_hand_man':'\\ud83d\\ude4b&zwj;\\u2642\\ufe0f',\n  'ram':'\\ud83d\\udc0f',\n  'ramen':'\\ud83c\\udf5c',\n  'rat':'\\ud83d\\udc00',\n  'record_button':'\\u23fa',\n  'recycle':'\\u267b\\ufe0f',\n  'red_circle':'\\ud83d\\udd34',\n  'registered':'\\u00ae\\ufe0f',\n  'relaxed':'\\u263a\\ufe0f',\n  'relieved':'\\ud83d\\ude0c',\n  'reminder_ribbon':'\\ud83c\\udf97',\n  'repeat':'\\ud83d\\udd01',\n  'repeat_one':'\\ud83d\\udd02',\n  'rescue_worker_helmet':'\\u26d1',\n  'restroom':'\\ud83d\\udebb',\n  'revolving_hearts':'\\ud83d\\udc9e',\n  'rewind':'\\u23ea',\n  'rhinoceros':'\\ud83e\\udd8f',\n  'ribbon':'\\ud83c\\udf80',\n  'rice':'\\ud83c\\udf5a',\n  'rice_ball':'\\ud83c\\udf59',\n  'rice_cracker':'\\ud83c\\udf58',\n  'rice_scene':'\\ud83c\\udf91',\n  'right_anger_bubble':'\\ud83d\\uddef',\n  'ring':'\\ud83d\\udc8d',\n  'robot':'\\ud83e\\udd16',\n  'rocket':'\\ud83d\\ude80',\n  'rofl':'\\ud83e\\udd23',\n  'roll_eyes':'\\ud83d\\ude44',\n  'roller_coaster':'\\ud83c\\udfa2',\n  'rooster':'\\ud83d\\udc13',\n  'rose':'\\ud83c\\udf39',\n  'rosette':'\\ud83c\\udff5',\n  'rotating_light':'\\ud83d\\udea8',\n  'round_pushpin':'\\ud83d\\udccd',\n  'rowing_man':'\\ud83d\\udea3',\n  'rowing_woman':'\\ud83d\\udea3&zwj;\\u2640\\ufe0f',\n  'rugby_football':'\\ud83c\\udfc9',\n  'running_man':'\\ud83c\\udfc3',\n  'running_shirt_with_sash':'\\ud83c\\udfbd',\n  'running_woman':'\\ud83c\\udfc3&zwj;\\u2640\\ufe0f',\n  'sa':'\\ud83c\\ude02\\ufe0f',\n  'sagittarius':'\\u2650\\ufe0f',\n  'sake':'\\ud83c\\udf76',\n  'sandal':'\\ud83d\\udc61',\n  'santa':'\\ud83c\\udf85',\n  'satellite':'\\ud83d\\udce1',\n  'saxophone':'\\ud83c\\udfb7',\n  'school':'\\ud83c\\udfeb',\n  'school_satchel':'\\ud83c\\udf92',\n  'scissors':'\\u2702\\ufe0f',\n  'scorpion':'\\ud83e\\udd82',\n  'scorpius':'\\u264f\\ufe0f',\n  'scream':'\\ud83d\\ude31',\n  'scream_cat':'\\ud83d\\ude40',\n  'scroll':'\\ud83d\\udcdc',\n  'seat':'\\ud83d\\udcba',\n  'secret':'\\u3299\\ufe0f',\n  'see_no_evil':'\\ud83d\\ude48',\n  'seedling':'\\ud83c\\udf31',\n  'selfie':'\\ud83e\\udd33',\n  'shallow_pan_of_food':'\\ud83e\\udd58',\n  'shamrock':'\\u2618\\ufe0f',\n  'shark':'\\ud83e\\udd88',\n  'shaved_ice':'\\ud83c\\udf67',\n  'sheep':'\\ud83d\\udc11',\n  'shell':'\\ud83d\\udc1a',\n  'shield':'\\ud83d\\udee1',\n  'shinto_shrine':'\\u26e9',\n  'ship':'\\ud83d\\udea2',\n  'shirt':'\\ud83d\\udc55',\n  'shopping':'\\ud83d\\udecd',\n  'shopping_cart':'\\ud83d\\uded2',\n  'shower':'\\ud83d\\udebf',\n  'shrimp':'\\ud83e\\udd90',\n  'signal_strength':'\\ud83d\\udcf6',\n  'six_pointed_star':'\\ud83d\\udd2f',\n  'ski':'\\ud83c\\udfbf',\n  'skier':'\\u26f7',\n  'skull':'\\ud83d\\udc80',\n  'skull_and_crossbones':'\\u2620\\ufe0f',\n  'sleeping':'\\ud83d\\ude34',\n  'sleeping_bed':'\\ud83d\\udecc',\n  'sleepy':'\\ud83d\\ude2a',\n  'slightly_frowning_face':'\\ud83d\\ude41',\n  'slightly_smiling_face':'\\ud83d\\ude42',\n  'slot_machine':'\\ud83c\\udfb0',\n  'small_airplane':'\\ud83d\\udee9',\n  'small_blue_diamond':'\\ud83d\\udd39',\n  'small_orange_diamond':'\\ud83d\\udd38',\n  'small_red_triangle':'\\ud83d\\udd3a',\n  'small_red_triangle_down':'\\ud83d\\udd3b',\n  'smile':'\\ud83d\\ude04',\n  'smile_cat':'\\ud83d\\ude38',\n  'smiley':'\\ud83d\\ude03',\n  'smiley_cat':'\\ud83d\\ude3a',\n  'smiling_imp':'\\ud83d\\ude08',\n  'smirk':'\\ud83d\\ude0f',\n  'smirk_cat':'\\ud83d\\ude3c',\n  'smoking':'\\ud83d\\udeac',\n  'snail':'\\ud83d\\udc0c',\n  'snake':'\\ud83d\\udc0d',\n  'sneezing_face':'\\ud83e\\udd27',\n  'snowboarder':'\\ud83c\\udfc2',\n  'snowflake':'\\u2744\\ufe0f',\n  'snowman':'\\u26c4\\ufe0f',\n  'snowman_with_snow':'\\u2603\\ufe0f',\n  'sob':'\\ud83d\\ude2d',\n  'soccer':'\\u26bd\\ufe0f',\n  'soon':'\\ud83d\\udd1c',\n  'sos':'\\ud83c\\udd98',\n  'sound':'\\ud83d\\udd09',\n  'space_invader':'\\ud83d\\udc7e',\n  'spades':'\\u2660\\ufe0f',\n  'spaghetti':'\\ud83c\\udf5d',\n  'sparkle':'\\u2747\\ufe0f',\n  'sparkler':'\\ud83c\\udf87',\n  'sparkles':'\\u2728',\n  'sparkling_heart':'\\ud83d\\udc96',\n  'speak_no_evil':'\\ud83d\\ude4a',\n  'speaker':'\\ud83d\\udd08',\n  'speaking_head':'\\ud83d\\udde3',\n  'speech_balloon':'\\ud83d\\udcac',\n  'speedboat':'\\ud83d\\udea4',\n  'spider':'\\ud83d\\udd77',\n  'spider_web':'\\ud83d\\udd78',\n  'spiral_calendar':'\\ud83d\\uddd3',\n  'spiral_notepad':'\\ud83d\\uddd2',\n  'spoon':'\\ud83e\\udd44',\n  'squid':'\\ud83e\\udd91',\n  'stadium':'\\ud83c\\udfdf',\n  'star':'\\u2b50\\ufe0f',\n  'star2':'\\ud83c\\udf1f',\n  'star_and_crescent':'\\u262a\\ufe0f',\n  'star_of_david':'\\u2721\\ufe0f',\n  'stars':'\\ud83c\\udf20',\n  'station':'\\ud83d\\ude89',\n  'statue_of_liberty':'\\ud83d\\uddfd',\n  'steam_locomotive':'\\ud83d\\ude82',\n  'stew':'\\ud83c\\udf72',\n  'stop_button':'\\u23f9',\n  'stop_sign':'\\ud83d\\uded1',\n  'stopwatch':'\\u23f1',\n  'straight_ruler':'\\ud83d\\udccf',\n  'strawberry':'\\ud83c\\udf53',\n  'stuck_out_tongue':'\\ud83d\\ude1b',\n  'stuck_out_tongue_closed_eyes':'\\ud83d\\ude1d',\n  'stuck_out_tongue_winking_eye':'\\ud83d\\ude1c',\n  'studio_microphone':'\\ud83c\\udf99',\n  'stuffed_flatbread':'\\ud83e\\udd59',\n  'sun_behind_large_cloud':'\\ud83c\\udf25',\n  'sun_behind_rain_cloud':'\\ud83c\\udf26',\n  'sun_behind_small_cloud':'\\ud83c\\udf24',\n  'sun_with_face':'\\ud83c\\udf1e',\n  'sunflower':'\\ud83c\\udf3b',\n  'sunglasses':'\\ud83d\\ude0e',\n  'sunny':'\\u2600\\ufe0f',\n  'sunrise':'\\ud83c\\udf05',\n  'sunrise_over_mountains':'\\ud83c\\udf04',\n  'surfing_man':'\\ud83c\\udfc4',\n  'surfing_woman':'\\ud83c\\udfc4&zwj;\\u2640\\ufe0f',\n  'sushi':'\\ud83c\\udf63',\n  'suspension_railway':'\\ud83d\\ude9f',\n  'sweat':'\\ud83d\\ude13',\n  'sweat_drops':'\\ud83d\\udca6',\n  'sweat_smile':'\\ud83d\\ude05',\n  'sweet_potato':'\\ud83c\\udf60',\n  'swimming_man':'\\ud83c\\udfca',\n  'swimming_woman':'\\ud83c\\udfca&zwj;\\u2640\\ufe0f',\n  'symbols':'\\ud83d\\udd23',\n  'synagogue':'\\ud83d\\udd4d',\n  'syringe':'\\ud83d\\udc89',\n  'taco':'\\ud83c\\udf2e',\n  'tada':'\\ud83c\\udf89',\n  'tanabata_tree':'\\ud83c\\udf8b',\n  'taurus':'\\u2649\\ufe0f',\n  'taxi':'\\ud83d\\ude95',\n  'tea':'\\ud83c\\udf75',\n  'telephone_receiver':'\\ud83d\\udcde',\n  'telescope':'\\ud83d\\udd2d',\n  'tennis':'\\ud83c\\udfbe',\n  'tent':'\\u26fa\\ufe0f',\n  'thermometer':'\\ud83c\\udf21',\n  'thinking':'\\ud83e\\udd14',\n  'thought_balloon':'\\ud83d\\udcad',\n  'ticket':'\\ud83c\\udfab',\n  'tickets':'\\ud83c\\udf9f',\n  'tiger':'\\ud83d\\udc2f',\n  'tiger2':'\\ud83d\\udc05',\n  'timer_clock':'\\u23f2',\n  'tipping_hand_man':'\\ud83d\\udc81&zwj;\\u2642\\ufe0f',\n  'tired_face':'\\ud83d\\ude2b',\n  'tm':'\\u2122\\ufe0f',\n  'toilet':'\\ud83d\\udebd',\n  'tokyo_tower':'\\ud83d\\uddfc',\n  'tomato':'\\ud83c\\udf45',\n  'tongue':'\\ud83d\\udc45',\n  'top':'\\ud83d\\udd1d',\n  'tophat':'\\ud83c\\udfa9',\n  'tornado':'\\ud83c\\udf2a',\n  'trackball':'\\ud83d\\uddb2',\n  'tractor':'\\ud83d\\ude9c',\n  'traffic_light':'\\ud83d\\udea5',\n  'train':'\\ud83d\\ude8b',\n  'train2':'\\ud83d\\ude86',\n  'tram':'\\ud83d\\ude8a',\n  'triangular_flag_on_post':'\\ud83d\\udea9',\n  'triangular_ruler':'\\ud83d\\udcd0',\n  'trident':'\\ud83d\\udd31',\n  'triumph':'\\ud83d\\ude24',\n  'trolleybus':'\\ud83d\\ude8e',\n  'trophy':'\\ud83c\\udfc6',\n  'tropical_drink':'\\ud83c\\udf79',\n  'tropical_fish':'\\ud83d\\udc20',\n  'truck':'\\ud83d\\ude9a',\n  'trumpet':'\\ud83c\\udfba',\n  'tulip':'\\ud83c\\udf37',\n  'tumbler_glass':'\\ud83e\\udd43',\n  'turkey':'\\ud83e\\udd83',\n  'turtle':'\\ud83d\\udc22',\n  'tv':'\\ud83d\\udcfa',\n  'twisted_rightwards_arrows':'\\ud83d\\udd00',\n  'two_hearts':'\\ud83d\\udc95',\n  'two_men_holding_hands':'\\ud83d\\udc6c',\n  'two_women_holding_hands':'\\ud83d\\udc6d',\n  'u5272':'\\ud83c\\ude39',\n  'u5408':'\\ud83c\\ude34',\n  'u55b6':'\\ud83c\\ude3a',\n  'u6307':'\\ud83c\\ude2f\\ufe0f',\n  'u6708':'\\ud83c\\ude37\\ufe0f',\n  'u6709':'\\ud83c\\ude36',\n  'u6e80':'\\ud83c\\ude35',\n  'u7121':'\\ud83c\\ude1a\\ufe0f',\n  'u7533':'\\ud83c\\ude38',\n  'u7981':'\\ud83c\\ude32',\n  'u7a7a':'\\ud83c\\ude33',\n  'umbrella':'\\u2614\\ufe0f',\n  'unamused':'\\ud83d\\ude12',\n  'underage':'\\ud83d\\udd1e',\n  'unicorn':'\\ud83e\\udd84',\n  'unlock':'\\ud83d\\udd13',\n  'up':'\\ud83c\\udd99',\n  'upside_down_face':'\\ud83d\\ude43',\n  'v':'\\u270c\\ufe0f',\n  'vertical_traffic_light':'\\ud83d\\udea6',\n  'vhs':'\\ud83d\\udcfc',\n  'vibration_mode':'\\ud83d\\udcf3',\n  'video_camera':'\\ud83d\\udcf9',\n  'video_game':'\\ud83c\\udfae',\n  'violin':'\\ud83c\\udfbb',\n  'virgo':'\\u264d\\ufe0f',\n  'volcano':'\\ud83c\\udf0b',\n  'volleyball':'\\ud83c\\udfd0',\n  'vs':'\\ud83c\\udd9a',\n  'vulcan_salute':'\\ud83d\\udd96',\n  'walking_man':'\\ud83d\\udeb6',\n  'walking_woman':'\\ud83d\\udeb6&zwj;\\u2640\\ufe0f',\n  'waning_crescent_moon':'\\ud83c\\udf18',\n  'waning_gibbous_moon':'\\ud83c\\udf16',\n  'warning':'\\u26a0\\ufe0f',\n  'wastebasket':'\\ud83d\\uddd1',\n  'watch':'\\u231a\\ufe0f',\n  'water_buffalo':'\\ud83d\\udc03',\n  'watermelon':'\\ud83c\\udf49',\n  'wave':'\\ud83d\\udc4b',\n  'wavy_dash':'\\u3030\\ufe0f',\n  'waxing_crescent_moon':'\\ud83c\\udf12',\n  'wc':'\\ud83d\\udebe',\n  'weary':'\\ud83d\\ude29',\n  'wedding':'\\ud83d\\udc92',\n  'weight_lifting_man':'\\ud83c\\udfcb\\ufe0f',\n  'weight_lifting_woman':'\\ud83c\\udfcb\\ufe0f&zwj;\\u2640\\ufe0f',\n  'whale':'\\ud83d\\udc33',\n  'whale2':'\\ud83d\\udc0b',\n  'wheel_of_dharma':'\\u2638\\ufe0f',\n  'wheelchair':'\\u267f\\ufe0f',\n  'white_check_mark':'\\u2705',\n  'white_circle':'\\u26aa\\ufe0f',\n  'white_flag':'\\ud83c\\udff3\\ufe0f',\n  'white_flower':'\\ud83d\\udcae',\n  'white_large_square':'\\u2b1c\\ufe0f',\n  'white_medium_small_square':'\\u25fd\\ufe0f',\n  'white_medium_square':'\\u25fb\\ufe0f',\n  'white_small_square':'\\u25ab\\ufe0f',\n  'white_square_button':'\\ud83d\\udd33',\n  'wilted_flower':'\\ud83e\\udd40',\n  'wind_chime':'\\ud83c\\udf90',\n  'wind_face':'\\ud83c\\udf2c',\n  'wine_glass':'\\ud83c\\udf77',\n  'wink':'\\ud83d\\ude09',\n  'wolf':'\\ud83d\\udc3a',\n  'woman':'\\ud83d\\udc69',\n  'woman_artist':'\\ud83d\\udc69&zwj;\\ud83c\\udfa8',\n  'woman_astronaut':'\\ud83d\\udc69&zwj;\\ud83d\\ude80',\n  'woman_cartwheeling':'\\ud83e\\udd38&zwj;\\u2640\\ufe0f',\n  'woman_cook':'\\ud83d\\udc69&zwj;\\ud83c\\udf73',\n  'woman_facepalming':'\\ud83e\\udd26&zwj;\\u2640\\ufe0f',\n  'woman_factory_worker':'\\ud83d\\udc69&zwj;\\ud83c\\udfed',\n  'woman_farmer':'\\ud83d\\udc69&zwj;\\ud83c\\udf3e',\n  'woman_firefighter':'\\ud83d\\udc69&zwj;\\ud83d\\ude92',\n  'woman_health_worker':'\\ud83d\\udc69&zwj;\\u2695\\ufe0f',\n  'woman_judge':'\\ud83d\\udc69&zwj;\\u2696\\ufe0f',\n  'woman_juggling':'\\ud83e\\udd39&zwj;\\u2640\\ufe0f',\n  'woman_mechanic':'\\ud83d\\udc69&zwj;\\ud83d\\udd27',\n  'woman_office_worker':'\\ud83d\\udc69&zwj;\\ud83d\\udcbc',\n  'woman_pilot':'\\ud83d\\udc69&zwj;\\u2708\\ufe0f',\n  'woman_playing_handball':'\\ud83e\\udd3e&zwj;\\u2640\\ufe0f',\n  'woman_playing_water_polo':'\\ud83e\\udd3d&zwj;\\u2640\\ufe0f',\n  'woman_scientist':'\\ud83d\\udc69&zwj;\\ud83d\\udd2c',\n  'woman_shrugging':'\\ud83e\\udd37&zwj;\\u2640\\ufe0f',\n  'woman_singer':'\\ud83d\\udc69&zwj;\\ud83c\\udfa4',\n  'woman_student':'\\ud83d\\udc69&zwj;\\ud83c\\udf93',\n  'woman_teacher':'\\ud83d\\udc69&zwj;\\ud83c\\udfeb',\n  'woman_technologist':'\\ud83d\\udc69&zwj;\\ud83d\\udcbb',\n  'woman_with_turban':'\\ud83d\\udc73&zwj;\\u2640\\ufe0f',\n  'womans_clothes':'\\ud83d\\udc5a',\n  'womans_hat':'\\ud83d\\udc52',\n  'women_wrestling':'\\ud83e\\udd3c&zwj;\\u2640\\ufe0f',\n  'womens':'\\ud83d\\udeba',\n  'world_map':'\\ud83d\\uddfa',\n  'worried':'\\ud83d\\ude1f',\n  'wrench':'\\ud83d\\udd27',\n  'writing_hand':'\\u270d\\ufe0f',\n  'x':'\\u274c',\n  'yellow_heart':'\\ud83d\\udc9b',\n  'yen':'\\ud83d\\udcb4',\n  'yin_yang':'\\u262f\\ufe0f',\n  'yum':'\\ud83d\\ude0b',\n  'zap':'\\u26a1\\ufe0f',\n  'zipper_mouth_face':'\\ud83e\\udd10',\n  'zzz':'\\ud83d\\udca4',\n\n  /* special emojis :P */\n  'octocat':  '<img alt=\":octocat:\" height=\"20\" width=\"20\" align=\"absmiddle\" src=\"https://assets-cdn.github.com/images/icons/emoji/octocat.png\">',\n  'showdown': '<span style=\"font-family: \\'Anonymous Pro\\', monospace; text-decoration: underline; text-decoration-style: dashed; text-decoration-color: #3e8b8a;text-underline-position: under;\">S</span>'\n};\n","/**\n * Created by Estevao on 31-05-2015.\n */\n\n/**\n * Showdown Converter class\n * @class\n * @param {object} [converterOptions]\n * @returns {Converter}\n */\nshowdown.Converter = function (converterOptions) {\n  'use strict';\n\n  var\n      /**\n       * Options used by this converter\n       * @private\n       * @type {{}}\n       */\n      options = {},\n\n      /**\n       * Language extensions used by this converter\n       * @private\n       * @type {Array}\n       */\n      langExtensions = [],\n\n      /**\n       * Output modifiers extensions used by this converter\n       * @private\n       * @type {Array}\n       */\n      outputModifiers = [],\n\n      /**\n       * Event listeners\n       * @private\n       * @type {{}}\n       */\n      listeners = {},\n\n      /**\n       * The flavor set in this converter\n       */\n      setConvFlavor = setFlavor,\n\n      /**\n       * Metadata of the document\n       * @type {{parsed: {}, raw: string, format: string}}\n       */\n      metadata = {\n        parsed: {},\n        raw: '',\n        format: ''\n      };\n\n  _constructor();\n\n  /**\n   * Converter constructor\n   * @private\n   */\n  function _constructor () {\n    converterOptions = converterOptions || {};\n\n    for (var gOpt in globalOptions) {\n      if (globalOptions.hasOwnProperty(gOpt)) {\n        options[gOpt] = globalOptions[gOpt];\n      }\n    }\n\n    // Merge options\n    if (typeof converterOptions === 'object') {\n      for (var opt in converterOptions) {\n        if (converterOptions.hasOwnProperty(opt)) {\n          options[opt] = converterOptions[opt];\n        }\n      }\n    } else {\n      throw Error('Converter expects the passed parameter to be an object, but ' + typeof converterOptions +\n      ' was passed instead.');\n    }\n\n    if (options.extensions) {\n      showdown.helper.forEach(options.extensions, _parseExtension);\n    }\n  }\n\n  /**\n   * Parse extension\n   * @param {*} ext\n   * @param {string} [name='']\n   * @private\n   */\n  function _parseExtension (ext, name) {\n\n    name = name || null;\n    // If it's a string, the extension was previously loaded\n    if (showdown.helper.isString(ext)) {\n      ext = showdown.helper.stdExtName(ext);\n      name = ext;\n\n      // LEGACY_SUPPORT CODE\n      if (showdown.extensions[ext]) {\n        console.warn('DEPRECATION WARNING: ' + ext + ' is an old extension that uses a deprecated loading method.' +\n          'Please inform the developer that the extension should be updated!');\n        legacyExtensionLoading(showdown.extensions[ext], ext);\n        return;\n        // END LEGACY SUPPORT CODE\n\n      } else if (!showdown.helper.isUndefined(extensions[ext])) {\n        ext = extensions[ext];\n\n      } else {\n        throw Error('Extension \"' + ext + '\" could not be loaded. It was either not found or is not a valid extension.');\n      }\n    }\n\n    if (typeof ext === 'function') {\n      ext = ext();\n    }\n\n    if (!showdown.helper.isArray(ext)) {\n      ext = [ext];\n    }\n\n    var validExt = validate(ext, name);\n    if (!validExt.valid) {\n      throw Error(validExt.error);\n    }\n\n    for (var i = 0; i < ext.length; ++i) {\n      switch (ext[i].type) {\n\n        case 'lang':\n          langExtensions.push(ext[i]);\n          break;\n\n        case 'output':\n          outputModifiers.push(ext[i]);\n          break;\n      }\n      if (ext[i].hasOwnProperty('listeners')) {\n        for (var ln in ext[i].listeners) {\n          if (ext[i].listeners.hasOwnProperty(ln)) {\n            listen(ln, ext[i].listeners[ln]);\n          }\n        }\n      }\n    }\n\n  }\n\n  /**\n   * LEGACY_SUPPORT\n   * @param {*} ext\n   * @param {string} name\n   */\n  function legacyExtensionLoading (ext, name) {\n    if (typeof ext === 'function') {\n      ext = ext(new showdown.Converter());\n    }\n    if (!showdown.helper.isArray(ext)) {\n      ext = [ext];\n    }\n    var valid = validate(ext, name);\n\n    if (!valid.valid) {\n      throw Error(valid.error);\n    }\n\n    for (var i = 0; i < ext.length; ++i) {\n      switch (ext[i].type) {\n        case 'lang':\n          langExtensions.push(ext[i]);\n          break;\n        case 'output':\n          outputModifiers.push(ext[i]);\n          break;\n        default:// should never reach here\n          throw Error('Extension loader error: Type unrecognized!!!');\n      }\n    }\n  }\n\n  /**\n   * Listen to an event\n   * @param {string} name\n   * @param {function} callback\n   */\n  function listen (name, callback) {\n    if (!showdown.helper.isString(name)) {\n      throw Error('Invalid argument in converter.listen() method: name must be a string, but ' + typeof name + ' given');\n    }\n\n    if (typeof callback !== 'function') {\n      throw Error('Invalid argument in converter.listen() method: callback must be a function, but ' + typeof callback + ' given');\n    }\n\n    if (!listeners.hasOwnProperty(name)) {\n      listeners[name] = [];\n    }\n    listeners[name].push(callback);\n  }\n\n  function rTrimInputText (text) {\n    var rsp = text.match(/^\\s*/)[0].length,\n        rgx = new RegExp('^\\\\s{0,' + rsp + '}', 'gm');\n    return text.replace(rgx, '');\n  }\n\n  /**\n   * Dispatch an event\n   * @private\n   * @param {string} evtName Event name\n   * @param {string} text Text\n   * @param {{}} options Converter Options\n   * @param {{}} globals\n   * @returns {string}\n   */\n  this._dispatch = function dispatch (evtName, text, options, globals) {\n    if (listeners.hasOwnProperty(evtName)) {\n      for (var ei = 0; ei < listeners[evtName].length; ++ei) {\n        var nText = listeners[evtName][ei](evtName, text, this, options, globals);\n        if (nText && typeof nText !== 'undefined') {\n          text = nText;\n        }\n      }\n    }\n    return text;\n  };\n\n  /**\n   * Listen to an event\n   * @param {string} name\n   * @param {function} callback\n   * @returns {showdown.Converter}\n   */\n  this.listen = function (name, callback) {\n    listen(name, callback);\n    return this;\n  };\n\n  /**\n   * Converts a markdown string into HTML\n   * @param {string} text\n   * @returns {*}\n   */\n  this.makeHtml = function (text) {\n    //check if text is not falsy\n    if (!text) {\n      return text;\n    }\n\n    var globals = {\n      gHtmlBlocks:     [],\n      gHtmlMdBlocks:   [],\n      gHtmlSpans:      [],\n      gUrls:           {},\n      gTitles:         {},\n      gDimensions:     {},\n      gListLevel:      0,\n      hashLinkCounts:  {},\n      langExtensions:  langExtensions,\n      outputModifiers: outputModifiers,\n      converter:       this,\n      ghCodeBlocks:    [],\n      metadata: {\n        parsed: {},\n        raw: '',\n        format: ''\n      }\n    };\n\n    // This lets us use ¨ trema as an escape char to avoid md5 hashes\n    // The choice of character is arbitrary; anything that isn't\n    // magic in Markdown will work.\n    text = text.replace(/¨/g, '¨T');\n\n    // Replace $ with ¨D\n    // RegExp interprets $ as a special character\n    // when it's in a replacement string\n    text = text.replace(/\\$/g, '¨D');\n\n    // Standardize line endings\n    text = text.replace(/\\r\\n/g, '\\n'); // DOS to Unix\n    text = text.replace(/\\r/g, '\\n'); // Mac to Unix\n\n    // Stardardize line spaces\n    text = text.replace(/\\u00A0/g, '&nbsp;');\n\n    if (options.smartIndentationFix) {\n      text = rTrimInputText(text);\n    }\n\n    // Make sure text begins and ends with a couple of newlines:\n    text = '\\n\\n' + text + '\\n\\n';\n\n    // detab\n    text = showdown.subParser('detab')(text, options, globals);\n\n    /**\n     * Strip any lines consisting only of spaces and tabs.\n     * This makes subsequent regexs easier to write, because we can\n     * match consecutive blank lines with /\\n+/ instead of something\n     * contorted like /[ \\t]*\\n+/\n     */\n    text = text.replace(/^[ \\t]+$/mg, '');\n\n    //run languageExtensions\n    showdown.helper.forEach(langExtensions, function (ext) {\n      text = showdown.subParser('runExtension')(ext, text, options, globals);\n    });\n\n    // run the sub parsers\n    text = showdown.subParser('metadata')(text, options, globals);\n    text = showdown.subParser('hashPreCodeTags')(text, options, globals);\n    text = showdown.subParser('githubCodeBlocks')(text, options, globals);\n    text = showdown.subParser('hashHTMLBlocks')(text, options, globals);\n    text = showdown.subParser('hashCodeTags')(text, options, globals);\n    text = showdown.subParser('stripLinkDefinitions')(text, options, globals);\n    text = showdown.subParser('blockGamut')(text, options, globals);\n    text = showdown.subParser('unhashHTMLSpans')(text, options, globals);\n    text = showdown.subParser('unescapeSpecialChars')(text, options, globals);\n\n    // attacklab: Restore dollar signs\n    text = text.replace(/¨D/g, '$$');\n\n    // attacklab: Restore tremas\n    text = text.replace(/¨T/g, '¨');\n\n    // render a complete html document instead of a partial if the option is enabled\n    text = showdown.subParser('completeHTMLDocument')(text, options, globals);\n\n    // Run output modifiers\n    showdown.helper.forEach(outputModifiers, function (ext) {\n      text = showdown.subParser('runExtension')(ext, text, options, globals);\n    });\n\n    // update metadata\n    metadata = globals.metadata;\n    return text;\n  };\n\n  /**\n   * Converts an HTML string into a markdown string\n   * @param src\n   * @param [HTMLParser] A WHATWG DOM and HTML parser, such as JSDOM. If none is supplied, window.document will be used.\n   * @returns {string}\n   */\n  this.makeMarkdown = this.makeMd = function (src, HTMLParser) {\n\n    // replace \\r\\n with \\n\n    src = src.replace(/\\r\\n/g, '\\n');\n    src = src.replace(/\\r/g, '\\n'); // old macs\n\n    // due to an edge case, we need to find this: > <\n    // to prevent removing of non silent white spaces\n    // ex: <em>this is</em> <strong>sparta</strong>\n    src = src.replace(/>[ \\t]+</, '>¨NBSP;<');\n\n    if (!HTMLParser) {\n      if (window && window.document) {\n        HTMLParser = window.document;\n      } else {\n        throw new Error('HTMLParser is undefined. If in a webworker or nodejs environment, you need to provide a WHATWG DOM and HTML such as JSDOM');\n      }\n    }\n\n    var doc = HTMLParser.createElement('div');\n    doc.innerHTML = src;\n\n    var globals = {\n      preList: substitutePreCodeTags(doc)\n    };\n\n    // remove all newlines and collapse spaces\n    clean(doc);\n\n    // some stuff, like accidental reference links must now be escaped\n    // TODO\n    // doc.innerHTML = doc.innerHTML.replace(/\\[[\\S\\t ]]/);\n\n    var nodes = doc.childNodes,\n        mdDoc = '';\n\n    for (var i = 0; i < nodes.length; i++) {\n      mdDoc += showdown.subParser('makeMarkdown.node')(nodes[i], globals);\n    }\n\n    function clean (node) {\n      for (var n = 0; n < node.childNodes.length; ++n) {\n        var child = node.childNodes[n];\n        if (child.nodeType === 3) {\n          if (!/\\S/.test(child.nodeValue) && !/^[ ]+$/.test(child.nodeValue)) {\n            node.removeChild(child);\n            --n;\n          } else {\n            child.nodeValue = child.nodeValue.split('\\n').join(' ');\n            child.nodeValue = child.nodeValue.replace(/(\\s)+/g, '$1');\n          }\n        } else if (child.nodeType === 1) {\n          clean(child);\n        }\n      }\n    }\n\n    // find all pre tags and replace contents with placeholder\n    // we need this so that we can remove all indentation from html\n    // to ease up parsing\n    function substitutePreCodeTags (doc) {\n\n      var pres = doc.querySelectorAll('pre'),\n          presPH = [];\n\n      for (var i = 0; i < pres.length; ++i) {\n\n        if (pres[i].childElementCount === 1 && pres[i].firstChild.tagName.toLowerCase() === 'code') {\n          var content = pres[i].firstChild.innerHTML.trim(),\n              language = pres[i].firstChild.getAttribute('data-language') || '';\n\n          // if data-language attribute is not defined, then we look for class language-*\n          if (language === '') {\n            var classes = pres[i].firstChild.className.split(' ');\n            for (var c = 0; c < classes.length; ++c) {\n              var matches = classes[c].match(/^language-(.+)$/);\n              if (matches !== null) {\n                language = matches[1];\n                break;\n              }\n            }\n          }\n\n          // unescape html entities in content\n          content = showdown.helper.unescapeHTMLEntities(content);\n\n          presPH.push(content);\n          pres[i].outerHTML = '<precode language=\"' + language + '\" precodenum=\"' + i.toString() + '\"></precode>';\n        } else {\n          presPH.push(pres[i].innerHTML);\n          pres[i].innerHTML = '';\n          pres[i].setAttribute('prenum', i.toString());\n        }\n      }\n      return presPH;\n    }\n\n    return mdDoc;\n  };\n\n  /**\n   * Set an option of this Converter instance\n   * @param {string} key\n   * @param {*} value\n   */\n  this.setOption = function (key, value) {\n    options[key] = value;\n  };\n\n  /**\n   * Get the option of this Converter instance\n   * @param {string} key\n   * @returns {*}\n   */\n  this.getOption = function (key) {\n    return options[key];\n  };\n\n  /**\n   * Get the options of this Converter instance\n   * @returns {{}}\n   */\n  this.getOptions = function () {\n    return options;\n  };\n\n  /**\n   * Add extension to THIS converter\n   * @param {{}} extension\n   * @param {string} [name=null]\n   */\n  this.addExtension = function (extension, name) {\n    name = name || null;\n    _parseExtension(extension, name);\n  };\n\n  /**\n   * Use a global registered extension with THIS converter\n   * @param {string} extensionName Name of the previously registered extension\n   */\n  this.useExtension = function (extensionName) {\n    _parseExtension(extensionName);\n  };\n\n  /**\n   * Set the flavor THIS converter should use\n   * @param {string} name\n   */\n  this.setFlavor = function (name) {\n    if (!flavor.hasOwnProperty(name)) {\n      throw Error(name + ' flavor was not found');\n    }\n    var preset = flavor[name];\n    setConvFlavor = name;\n    for (var option in preset) {\n      if (preset.hasOwnProperty(option)) {\n        options[option] = preset[option];\n      }\n    }\n  };\n\n  /**\n   * Get the currently set flavor of this converter\n   * @returns {string}\n   */\n  this.getFlavor = function () {\n    return setConvFlavor;\n  };\n\n  /**\n   * Remove an extension from THIS converter.\n   * Note: This is a costly operation. It's better to initialize a new converter\n   * and specify the extensions you wish to use\n   * @param {Array} extension\n   */\n  this.removeExtension = function (extension) {\n    if (!showdown.helper.isArray(extension)) {\n      extension = [extension];\n    }\n    for (var a = 0; a < extension.length; ++a) {\n      var ext = extension[a];\n      for (var i = 0; i < langExtensions.length; ++i) {\n        if (langExtensions[i] === ext) {\n          langExtensions.splice(i, 1);\n        }\n      }\n      for (var ii = 0; ii < outputModifiers.length; ++ii) {\n        if (outputModifiers[ii] === ext) {\n          outputModifiers.splice(ii, 1);\n        }\n      }\n    }\n  };\n\n  /**\n   * Get all extension of THIS converter\n   * @returns {{language: Array, output: Array}}\n   */\n  this.getAllExtensions = function () {\n    return {\n      language: langExtensions,\n      output: outputModifiers\n    };\n  };\n\n  /**\n   * Get the metadata of the previously parsed document\n   * @param raw\n   * @returns {string|{}}\n   */\n  this.getMetadata = function (raw) {\n    if (raw) {\n      return metadata.raw;\n    } else {\n      return metadata.parsed;\n    }\n  };\n\n  /**\n   * Get the metadata format of the previously parsed document\n   * @returns {string}\n   */\n  this.getMetadataFormat = function () {\n    return metadata.format;\n  };\n\n  /**\n   * Private: set a single key, value metadata pair\n   * @param {string} key\n   * @param {string} value\n   */\n  this._setMetadataPair = function (key, value) {\n    metadata.parsed[key] = value;\n  };\n\n  /**\n   * Private: set metadata format\n   * @param {string} format\n   */\n  this._setMetadataFormat = function (format) {\n    metadata.format = format;\n  };\n\n  /**\n   * Private: set metadata raw text\n   * @param {string} raw\n   */\n  this._setMetadataRaw = function (raw) {\n    metadata.raw = raw;\n  };\n};\n","/**\n * Turn Markdown link shortcuts into XHTML <a> tags.\n */\nshowdown.subParser('anchors', function (text, options, globals) {\n  'use strict';\n\n  text = globals.converter._dispatch('anchors.before', text, options, globals);\n\n  var writeAnchorTag = function (wholeMatch, linkText, linkId, url, m5, m6, title) {\n    if (showdown.helper.isUndefined(title)) {\n      title = '';\n    }\n    linkId = linkId.toLowerCase();\n\n    // Special case for explicit empty url\n    if (wholeMatch.search(/\\(<?\\s*>? ?(['\"].*['\"])?\\)$/m) > -1) {\n      url = '';\n    } else if (!url) {\n      if (!linkId) {\n        // lower-case and turn embedded newlines into spaces\n        linkId = linkText.toLowerCase().replace(/ ?\\n/g, ' ');\n      }\n      url = '#' + linkId;\n\n      if (!showdown.helper.isUndefined(globals.gUrls[linkId])) {\n        url = globals.gUrls[linkId];\n        if (!showdown.helper.isUndefined(globals.gTitles[linkId])) {\n          title = globals.gTitles[linkId];\n        }\n      } else {\n        return wholeMatch;\n      }\n    }\n\n    //url = showdown.helper.escapeCharacters(url, '*_', false); // replaced line to improve performance\n    url = url.replace(showdown.helper.regexes.asteriskDashAndColon, showdown.helper.escapeCharactersCallback);\n\n    var result = '<a href=\"' + url + '\"';\n\n    if (title !== '' && title !== null) {\n      title = title.replace(/\"/g, '&quot;');\n      //title = showdown.helper.escapeCharacters(title, '*_', false); // replaced line to improve performance\n      title = title.replace(showdown.helper.regexes.asteriskDashAndColon, showdown.helper.escapeCharactersCallback);\n      result += ' title=\"' + title + '\"';\n    }\n\n    // optionLinksInNewWindow only applies\n    // to external links. Hash links (#) open in same page\n    if (options.openLinksInNewWindow && !/^#/.test(url)) {\n      // escaped _\n      result += ' rel=\"noopener noreferrer\" target=\"¨E95Eblank\"';\n    }\n\n    result += '>' + linkText + '</a>';\n\n    return result;\n  };\n\n  // First, handle reference-style links: [link text] [id]\n  text = text.replace(/\\[((?:\\[[^\\]]*]|[^\\[\\]])*)] ?(?:\\n *)?\\[(.*?)]()()()()/g, writeAnchorTag);\n\n  // Next, inline-style links: [link text](url \"optional title\")\n  // cases with crazy urls like ./image/cat1).png\n  text = text.replace(/\\[((?:\\[[^\\]]*]|[^\\[\\]])*)]()[ \\t]*\\([ \\t]?<([^>]*)>(?:[ \\t]*(([\"'])([^\"]*?)\\5))?[ \\t]?\\)/g,\n    writeAnchorTag);\n\n  // normal cases\n  text = text.replace(/\\[((?:\\[[^\\]]*]|[^\\[\\]])*)]()[ \\t]*\\([ \\t]?<?([\\S]+?(?:\\([\\S]*?\\)[\\S]*?)?)>?(?:[ \\t]*(([\"'])([^\"]*?)\\5))?[ \\t]?\\)/g,\n    writeAnchorTag);\n\n  // handle reference-style shortcuts: [link text]\n  // These must come last in case you've also got [link test][1]\n  // or [link test](/foo)\n  text = text.replace(/\\[([^\\[\\]]+)]()()()()()/g, writeAnchorTag);\n\n  // Lastly handle GithubMentions if option is enabled\n  if (options.ghMentions) {\n    text = text.replace(/(^|\\s)(\\\\)?(@([a-z\\d]+(?:[a-z\\d.-]+?[a-z\\d]+)*))/gmi, function (wm, st, escape, mentions, username) {\n      if (escape === '\\\\') {\n        return st + mentions;\n      }\n\n      //check if options.ghMentionsLink is a string\n      if (!showdown.helper.isString(options.ghMentionsLink)) {\n        throw new Error('ghMentionsLink option must be a string');\n      }\n      var lnk = options.ghMentionsLink.replace(/\\{u}/g, username),\n          target = '';\n      if (options.openLinksInNewWindow) {\n        target = ' rel=\"noopener noreferrer\" target=\"¨E95Eblank\"';\n      }\n      return st + '<a href=\"' + lnk + '\"' + target + '>' + mentions + '</a>';\n    });\n  }\n\n  text = globals.converter._dispatch('anchors.after', text, options, globals);\n  return text;\n});\n","// url allowed chars [a-z\\d_.~:/?#[]@!$&'()*+,;=-]\n\nvar simpleURLRegex  = /([*~_]+|\\b)(((https?|ftp|dict):\\/\\/|www\\.)[^'\">\\s]+?\\.[^'\">\\s]+?)()(\\1)?(?=\\s|$)(?![\"<>])/gi,\n    simpleURLRegex2 = /([*~_]+|\\b)(((https?|ftp|dict):\\/\\/|www\\.)[^'\">\\s]+\\.[^'\">\\s]+?)([.!?,()\\[\\]])?(\\1)?(?=\\s|$)(?![\"<>])/gi,\n    delimUrlRegex   = /()<(((https?|ftp|dict):\\/\\/|www\\.)[^'\">\\s]+)()>()/gi,\n    simpleMailRegex = /(^|\\s)(?:mailto:)?([A-Za-z0-9!#$%&'*+-/=?^_`{|}~.]+@[-a-z0-9]+(\\.[-a-z0-9]+)*\\.[a-z]+)(?=$|\\s)/gmi,\n    delimMailRegex  = /<()(?:mailto:)?([-.\\w]+@[-a-z0-9]+(\\.[-a-z0-9]+)*\\.[a-z]+)>/gi,\n\n    replaceLink = function (options) {\n      'use strict';\n      return function (wm, leadingMagicChars, link, m2, m3, trailingPunctuation, trailingMagicChars) {\n        link = link.replace(showdown.helper.regexes.asteriskDashAndColon, showdown.helper.escapeCharactersCallback);\n        var lnkTxt = link,\n            append = '',\n            target = '',\n            lmc    = leadingMagicChars || '',\n            tmc    = trailingMagicChars || '';\n        if (/^www\\./i.test(link)) {\n          link = link.replace(/^www\\./i, 'http://www.');\n        }\n        if (options.excludeTrailingPunctuationFromURLs && trailingPunctuation) {\n          append = trailingPunctuation;\n        }\n        if (options.openLinksInNewWindow) {\n          target = ' rel=\"noopener noreferrer\" target=\"¨E95Eblank\"';\n        }\n        return lmc + '<a href=\"' + link + '\"' + target + '>' + lnkTxt + '</a>' + append + tmc;\n      };\n    },\n\n    replaceMail = function (options, globals) {\n      'use strict';\n      return function (wholeMatch, b, mail) {\n        var href = 'mailto:';\n        b = b || '';\n        mail = showdown.subParser('unescapeSpecialChars')(mail, options, globals);\n        if (options.encodeEmails) {\n          href = showdown.helper.encodeEmailAddress(href + mail);\n          mail = showdown.helper.encodeEmailAddress(mail);\n        } else {\n          href = href + mail;\n        }\n        return b + '<a href=\"' + href + '\">' + mail + '</a>';\n      };\n    };\n\nshowdown.subParser('autoLinks', function (text, options, globals) {\n  'use strict';\n\n  text = globals.converter._dispatch('autoLinks.before', text, options, globals);\n\n  text = text.replace(delimUrlRegex, replaceLink(options));\n  text = text.replace(delimMailRegex, replaceMail(options, globals));\n\n  text = globals.converter._dispatch('autoLinks.after', text, options, globals);\n\n  return text;\n});\n\nshowdown.subParser('simplifiedAutoLinks', function (text, options, globals) {\n  'use strict';\n\n  if (!options.simplifiedAutoLink) {\n    return text;\n  }\n\n  text = globals.converter._dispatch('simplifiedAutoLinks.before', text, options, globals);\n\n  if (options.excludeTrailingPunctuationFromURLs) {\n    text = text.replace(simpleURLRegex2, replaceLink(options));\n  } else {\n    text = text.replace(simpleURLRegex, replaceLink(options));\n  }\n  text = text.replace(simpleMailRegex, replaceMail(options, globals));\n\n  text = globals.converter._dispatch('simplifiedAutoLinks.after', text, options, globals);\n\n  return text;\n});\n","/**\n * These are all the transformations that form block-level\n * tags like paragraphs, headers, and list items.\n */\nshowdown.subParser('blockGamut', function (text, options, globals) {\n  'use strict';\n\n  text = globals.converter._dispatch('blockGamut.before', text, options, globals);\n\n  // we parse blockquotes first so that we can have headings and hrs\n  // inside blockquotes\n  text = showdown.subParser('blockQuotes')(text, options, globals);\n  text = showdown.subParser('headers')(text, options, globals);\n\n  // Do Horizontal Rules:\n  text = showdown.subParser('horizontalRule')(text, options, globals);\n\n  text = showdown.subParser('lists')(text, options, globals);\n  text = showdown.subParser('codeBlocks')(text, options, globals);\n  text = showdown.subParser('tables')(text, options, globals);\n\n  // We already ran _HashHTMLBlocks() before, in Markdown(), but that\n  // was to escape raw HTML in the original Markdown source. This time,\n  // we're escaping the markup we've just created, so that we don't wrap\n  // <p> tags around block-level tags.\n  text = showdown.subParser('hashHTMLBlocks')(text, options, globals);\n  text = showdown.subParser('paragraphs')(text, options, globals);\n\n  text = globals.converter._dispatch('blockGamut.after', text, options, globals);\n\n  return text;\n});\n","showdown.subParser('blockQuotes', function (text, options, globals) {\n  'use strict';\n\n  text = globals.converter._dispatch('blockQuotes.before', text, options, globals);\n\n  // add a couple extra lines after the text and endtext mark\n  text = text + '\\n\\n';\n\n  var rgx = /(^ {0,3}>[ \\t]?.+\\n(.+\\n)*\\n*)+/gm;\n\n  if (options.splitAdjacentBlockquotes) {\n    rgx = /^ {0,3}>[\\s\\S]*?(?:\\n\\n)/gm;\n  }\n\n  text = text.replace(rgx, function (bq) {\n    // attacklab: hack around Konqueror 3.5.4 bug:\n    // \"----------bug\".replace(/^-/g,\"\") == \"bug\"\n    bq = bq.replace(/^[ \\t]*>[ \\t]?/gm, ''); // trim one level of quoting\n\n    // attacklab: clean up hack\n    bq = bq.replace(/¨0/g, '');\n\n    bq = bq.replace(/^[ \\t]+$/gm, ''); // trim whitespace-only lines\n    bq = showdown.subParser('githubCodeBlocks')(bq, options, globals);\n    bq = showdown.subParser('blockGamut')(bq, options, globals); // recurse\n\n    bq = bq.replace(/(^|\\n)/g, '$1  ');\n    // These leading spaces screw with <pre> content, so we need to fix that:\n    bq = bq.replace(/(\\s*<pre>[^\\r]+?<\\/pre>)/gm, function (wholeMatch, m1) {\n      var pre = m1;\n      // attacklab: hack around Konqueror 3.5.4 bug:\n      pre = pre.replace(/^  /mg, '¨0');\n      pre = pre.replace(/¨0/g, '');\n      return pre;\n    });\n\n    return showdown.subParser('hashBlock')('<blockquote>\\n' + bq + '\\n</blockquote>', options, globals);\n  });\n\n  text = globals.converter._dispatch('blockQuotes.after', text, options, globals);\n  return text;\n});\n","/**\n * Process Markdown `<pre><code>` blocks.\n */\nshowdown.subParser('codeBlocks', function (text, options, globals) {\n  'use strict';\n\n  text = globals.converter._dispatch('codeBlocks.before', text, options, globals);\n\n  // sentinel workarounds for lack of \\A and \\Z, safari\\khtml bug\n  text += '¨0';\n\n  var pattern = /(?:\\n\\n|^)((?:(?:[ ]{4}|\\t).*\\n+)+)(\\n*[ ]{0,3}[^ \\t\\n]|(?=¨0))/g;\n  text = text.replace(pattern, function (wholeMatch, m1, m2) {\n    var codeblock = m1,\n        nextChar = m2,\n        end = '\\n';\n\n    codeblock = showdown.subParser('outdent')(codeblock, options, globals);\n    codeblock = showdown.subParser('encodeCode')(codeblock, options, globals);\n    codeblock = showdown.subParser('detab')(codeblock, options, globals);\n    codeblock = codeblock.replace(/^\\n+/g, ''); // trim leading newlines\n    codeblock = codeblock.replace(/\\n+$/g, ''); // trim trailing newlines\n\n    if (options.omitExtraWLInCodeBlocks) {\n      end = '';\n    }\n\n    codeblock = '<pre><code>' + codeblock + end + '</code></pre>';\n\n    return showdown.subParser('hashBlock')(codeblock, options, globals) + nextChar;\n  });\n\n  // strip sentinel\n  text = text.replace(/¨0/, '');\n\n  text = globals.converter._dispatch('codeBlocks.after', text, options, globals);\n  return text;\n});\n","/**\n *\n *   *  Backtick quotes are used for <code></code> spans.\n *\n *   *  You can use multiple backticks as the delimiters if you want to\n *     include literal backticks in the code span. So, this input:\n *\n *         Just type ``foo `bar` baz`` at the prompt.\n *\n *       Will translate to:\n *\n *         <p>Just type <code>foo `bar` baz</code> at the prompt.</p>\n *\n *    There's no arbitrary limit to the number of backticks you\n *    can use as delimters. If you need three consecutive backticks\n *    in your code, use four for delimiters, etc.\n *\n *  *  You can use spaces to get literal backticks at the edges:\n *\n *         ... type `` `bar` `` ...\n *\n *       Turns to:\n *\n *         ... type <code>`bar`</code> ...\n */\nshowdown.subParser('codeSpans', function (text, options, globals) {\n  'use strict';\n\n  text = globals.converter._dispatch('codeSpans.before', text, options, globals);\n\n  if (typeof (text) === 'undefined') {\n    text = '';\n  }\n  text = text.replace(/(^|[^\\\\])(`+)([^\\r]*?[^`])\\2(?!`)/gm,\n    function (wholeMatch, m1, m2, m3) {\n      var c = m3;\n      c = c.replace(/^([ \\t]*)/g, '');\t// leading whitespace\n      c = c.replace(/[ \\t]*$/g, '');\t// trailing whitespace\n      c = showdown.subParser('encodeCode')(c, options, globals);\n      c = m1 + '<code>' + c + '</code>';\n      c = showdown.subParser('hashHTMLSpans')(c, options, globals);\n      return c;\n    }\n  );\n\n  text = globals.converter._dispatch('codeSpans.after', text, options, globals);\n  return text;\n});\n","/**\n * Create a full HTML document from the processed markdown\n */\nshowdown.subParser('completeHTMLDocument', function (text, options, globals) {\n  'use strict';\n\n  if (!options.completeHTMLDocument) {\n    return text;\n  }\n\n  text = globals.converter._dispatch('completeHTMLDocument.before', text, options, globals);\n\n  var doctype = 'html',\n      doctypeParsed = '<!DOCTYPE HTML>\\n',\n      title = '',\n      charset = '<meta charset=\"utf-8\">\\n',\n      lang = '',\n      metadata = '';\n\n  if (typeof globals.metadata.parsed.doctype !== 'undefined') {\n    doctypeParsed = '<!DOCTYPE ' +  globals.metadata.parsed.doctype + '>\\n';\n    doctype = globals.metadata.parsed.doctype.toString().toLowerCase();\n    if (doctype === 'html' || doctype === 'html5') {\n      charset = '<meta charset=\"utf-8\">';\n    }\n  }\n\n  for (var meta in globals.metadata.parsed) {\n    if (globals.metadata.parsed.hasOwnProperty(meta)) {\n      switch (meta.toLowerCase()) {\n        case 'doctype':\n          break;\n\n        case 'title':\n          title = '<title>' +  globals.metadata.parsed.title + '</title>\\n';\n          break;\n\n        case 'charset':\n          if (doctype === 'html' || doctype === 'html5') {\n            charset = '<meta charset=\"' + globals.metadata.parsed.charset + '\">\\n';\n          } else {\n            charset = '<meta name=\"charset\" content=\"' + globals.metadata.parsed.charset + '\">\\n';\n          }\n          break;\n\n        case 'language':\n        case 'lang':\n          lang = ' lang=\"' + globals.metadata.parsed[meta] + '\"';\n          metadata += '<meta name=\"' + meta + '\" content=\"' + globals.metadata.parsed[meta] + '\">\\n';\n          break;\n\n        default:\n          metadata += '<meta name=\"' + meta + '\" content=\"' + globals.metadata.parsed[meta] + '\">\\n';\n      }\n    }\n  }\n\n  text = doctypeParsed + '<html' + lang + '>\\n<head>\\n' + title + charset + metadata + '</head>\\n<body>\\n' + text.trim() + '\\n</body>\\n</html>';\n\n  text = globals.converter._dispatch('completeHTMLDocument.after', text, options, globals);\n  return text;\n});\n","/**\n * Convert all tabs to spaces\n */\nshowdown.subParser('detab', function (text, options, globals) {\n  'use strict';\n  text = globals.converter._dispatch('detab.before', text, options, globals);\n\n  // expand first n-1 tabs\n  text = text.replace(/\\t(?=\\t)/g, '    '); // g_tab_width\n\n  // replace the nth with two sentinels\n  text = text.replace(/\\t/g, '¨A¨B');\n\n  // use the sentinel to anchor our regex so it doesn't explode\n  text = text.replace(/¨B(.+?)¨A/g, function (wholeMatch, m1) {\n    var leadingText = m1,\n        numSpaces = 4 - leadingText.length % 4;  // g_tab_width\n\n    // there *must* be a better way to do this:\n    for (var i = 0; i < numSpaces; i++) {\n      leadingText += ' ';\n    }\n\n    return leadingText;\n  });\n\n  // clean up sentinels\n  text = text.replace(/¨A/g, '    ');  // g_tab_width\n  text = text.replace(/¨B/g, '');\n\n  text = globals.converter._dispatch('detab.after', text, options, globals);\n  return text;\n});\n","showdown.subParser('ellipsis', function (text, options, globals) {\n  'use strict';\n\n  if (!options.ellipsis) {\n    return text;\n  }\n\n  text = globals.converter._dispatch('ellipsis.before', text, options, globals);\n\n  text = text.replace(/\\.\\.\\./g, '…');\n\n  text = globals.converter._dispatch('ellipsis.after', text, options, globals);\n\n  return text;\n});\n","/**\n * Turn emoji codes into emojis\n *\n * List of supported emojis: https://github.com/showdownjs/showdown/wiki/Emojis\n */\nshowdown.subParser('emoji', function (text, options, globals) {\n  'use strict';\n\n  if (!options.emoji) {\n    return text;\n  }\n\n  text = globals.converter._dispatch('emoji.before', text, options, globals);\n\n  var emojiRgx = /:([\\S]+?):/g;\n\n  text = text.replace(emojiRgx, function (wm, emojiCode) {\n    if (showdown.helper.emojis.hasOwnProperty(emojiCode)) {\n      return showdown.helper.emojis[emojiCode];\n    }\n    return wm;\n  });\n\n  text = globals.converter._dispatch('emoji.after', text, options, globals);\n\n  return text;\n});\n","/**\n * Smart processing for ampersands and angle brackets that need to be encoded.\n */\nshowdown.subParser('encodeAmpsAndAngles', function (text, options, globals) {\n  'use strict';\n  text = globals.converter._dispatch('encodeAmpsAndAngles.before', text, options, globals);\n\n  // Ampersand-encoding based entirely on Nat Irons's Amputator MT plugin:\n  // http://bumppo.net/projects/amputator/\n  text = text.replace(/&(?!#?[xX]?(?:[0-9a-fA-F]+|\\w+);)/g, '&amp;');\n\n  // Encode naked <'s\n  text = text.replace(/<(?![a-z\\/?$!])/gi, '&lt;');\n\n  // Encode <\n  text = text.replace(/</g, '&lt;');\n\n  // Encode >\n  text = text.replace(/>/g, '&gt;');\n\n  text = globals.converter._dispatch('encodeAmpsAndAngles.after', text, options, globals);\n  return text;\n});\n","/**\n * Returns the string, with after processing the following backslash escape sequences.\n *\n * attacklab: The polite way to do this is with the new escapeCharacters() function:\n *\n *    text = escapeCharacters(text,\"\\\\\",true);\n *    text = escapeCharacters(text,\"`*_{}[]()>#+-.!\",true);\n *\n * ...but we're sidestepping its use of the (slow) RegExp constructor\n * as an optimization for Firefox.  This function gets called a LOT.\n */\nshowdown.subParser('encodeBackslashEscapes', function (text, options, globals) {\n  'use strict';\n  text = globals.converter._dispatch('encodeBackslashEscapes.before', text, options, globals);\n\n  text = text.replace(/\\\\(\\\\)/g, showdown.helper.escapeCharactersCallback);\n  text = text.replace(/\\\\([`*_{}\\[\\]()>#+.!~=|:-])/g, showdown.helper.escapeCharactersCallback);\n\n  text = globals.converter._dispatch('encodeBackslashEscapes.after', text, options, globals);\n  return text;\n});\n","/**\n * Encode/escape certain characters inside Markdown code runs.\n * The point is that in code, these characters are literals,\n * and lose their special Markdown meanings.\n */\nshowdown.subParser('encodeCode', function (text, options, globals) {\n  'use strict';\n\n  text = globals.converter._dispatch('encodeCode.before', text, options, globals);\n\n  // Encode all ampersands; HTML entities are not\n  // entities within a Markdown code span.\n  text = text\n    .replace(/&/g, '&amp;')\n  // Do the angle bracket song and dance:\n    .replace(/</g, '&lt;')\n    .replace(/>/g, '&gt;')\n  // Now, escape characters that are magic in Markdown:\n    .replace(/([*_{}\\[\\]\\\\=~-])/g, showdown.helper.escapeCharactersCallback);\n\n  text = globals.converter._dispatch('encodeCode.after', text, options, globals);\n  return text;\n});\n","/**\n * Within tags -- meaning between < and > -- encode [\\ ` * _ ~ =] so they\n * don't conflict with their use in Markdown for code, italics and strong.\n */\nshowdown.subParser('escapeSpecialCharsWithinTagAttributes', function (text, options, globals) {\n  'use strict';\n  text = globals.converter._dispatch('escapeSpecialCharsWithinTagAttributes.before', text, options, globals);\n\n  // Build a regex to find HTML tags.\n  var tags     = /<\\/?[a-z\\d_:-]+(?:[\\s]+[\\s\\S]+?)?>/gi,\n      comments = /<!(--(?:(?:[^>-]|-[^>])(?:[^-]|-[^-])*)--)>/gi;\n\n  text = text.replace(tags, function (wholeMatch) {\n    return wholeMatch\n      .replace(/(.)<\\/?code>(?=.)/g, '$1`')\n      .replace(/([\\\\`*_~=|])/g, showdown.helper.escapeCharactersCallback);\n  });\n\n  text = text.replace(comments, function (wholeMatch) {\n    return wholeMatch\n      .replace(/([\\\\`*_~=|])/g, showdown.helper.escapeCharactersCallback);\n  });\n\n  text = globals.converter._dispatch('escapeSpecialCharsWithinTagAttributes.after', text, options, globals);\n  return text;\n});\n","/**\n * Handle github codeblocks prior to running HashHTML so that\n * HTML contained within the codeblock gets escaped properly\n * Example:\n * ```ruby\n *     def hello_world(x)\n *       puts \"Hello, #{x}\"\n *     end\n * ```\n */\nshowdown.subParser('githubCodeBlocks', function (text, options, globals) {\n  'use strict';\n\n  // early exit if option is not enabled\n  if (!options.ghCodeBlocks) {\n    return text;\n  }\n\n  text = globals.converter._dispatch('githubCodeBlocks.before', text, options, globals);\n\n  text += '¨0';\n\n  text = text.replace(/(?:^|\\n)(?: {0,3})(```+|~~~+)(?: *)([^\\s`~]*)\\n([\\s\\S]*?)\\n(?: {0,3})\\1/g, function (wholeMatch, delim, language, codeblock) {\n    var end = (options.omitExtraWLInCodeBlocks) ? '' : '\\n';\n\n    // First parse the github code block\n    codeblock = showdown.subParser('encodeCode')(codeblock, options, globals);\n    codeblock = showdown.subParser('detab')(codeblock, options, globals);\n    codeblock = codeblock.replace(/^\\n+/g, ''); // trim leading newlines\n    codeblock = codeblock.replace(/\\n+$/g, ''); // trim trailing whitespace\n\n    codeblock = '<pre><code' + (language ? ' class=\"' + language + ' language-' + language + '\"' : '') + '>' + codeblock + end + '</code></pre>';\n\n    codeblock = showdown.subParser('hashBlock')(codeblock, options, globals);\n\n    // Since GHCodeblocks can be false positives, we need to\n    // store the primitive text and the parsed text in a global var,\n    // and then return a token\n    return '\\n\\n¨G' + (globals.ghCodeBlocks.push({text: wholeMatch, codeblock: codeblock}) - 1) + 'G\\n\\n';\n  });\n\n  // attacklab: strip sentinel\n  text = text.replace(/¨0/, '');\n\n  return globals.converter._dispatch('githubCodeBlocks.after', text, options, globals);\n});\n","showdown.subParser('hashBlock', function (text, options, globals) {\n  'use strict';\n  text = globals.converter._dispatch('hashBlock.before', text, options, globals);\n  text = text.replace(/(^\\n+|\\n+$)/g, '');\n  text = '\\n\\n¨K' + (globals.gHtmlBlocks.push(text) - 1) + 'K\\n\\n';\n  text = globals.converter._dispatch('hashBlock.after', text, options, globals);\n  return text;\n});\n","/**\n * Hash and escape <code> elements that should not be parsed as markdown\n */\nshowdown.subParser('hashCodeTags', function (text, options, globals) {\n  'use strict';\n  text = globals.converter._dispatch('hashCodeTags.before', text, options, globals);\n\n  var repFunc = function (wholeMatch, match, left, right) {\n    var codeblock = left + showdown.subParser('encodeCode')(match, options, globals) + right;\n    return '¨C' + (globals.gHtmlSpans.push(codeblock) - 1) + 'C';\n  };\n\n  // Hash naked <code>\n  text = showdown.helper.replaceRecursiveRegExp(text, repFunc, '<code\\\\b[^>]*>', '</code>', 'gim');\n\n  text = globals.converter._dispatch('hashCodeTags.after', text, options, globals);\n  return text;\n});\n","showdown.subParser('hashElement', function (text, options, globals) {\n  'use strict';\n\n  return function (wholeMatch, m1) {\n    var blockText = m1;\n\n    // Undo double lines\n    blockText = blockText.replace(/\\n\\n/g, '\\n');\n    blockText = blockText.replace(/^\\n/, '');\n\n    // strip trailing blank lines\n    blockText = blockText.replace(/\\n+$/g, '');\n\n    // Replace the element text with a marker (\"¨KxK\" where x is its key)\n    blockText = '\\n\\n¨K' + (globals.gHtmlBlocks.push(blockText) - 1) + 'K\\n\\n';\n\n    return blockText;\n  };\n});\n","showdown.subParser('hashHTMLBlocks', function (text, options, globals) {\n  'use strict';\n  text = globals.converter._dispatch('hashHTMLBlocks.before', text, options, globals);\n\n  var blockTags = [\n        'pre',\n        'div',\n        'h1',\n        'h2',\n        'h3',\n        'h4',\n        'h5',\n        'h6',\n        'blockquote',\n        'table',\n        'dl',\n        'ol',\n        'ul',\n        'script',\n        'noscript',\n        'form',\n        'fieldset',\n        'iframe',\n        'math',\n        'style',\n        'section',\n        'header',\n        'footer',\n        'nav',\n        'article',\n        'aside',\n        'address',\n        'audio',\n        'canvas',\n        'figure',\n        'hgroup',\n        'output',\n        'video',\n        'p'\n      ],\n      repFunc = function (wholeMatch, match, left, right) {\n        var txt = wholeMatch;\n        // check if this html element is marked as markdown\n        // if so, it's contents should be parsed as markdown\n        if (left.search(/\\bmarkdown\\b/) !== -1) {\n          txt = left + globals.converter.makeHtml(match) + right;\n        }\n        return '\\n\\n¨K' + (globals.gHtmlBlocks.push(txt) - 1) + 'K\\n\\n';\n      };\n\n  if (options.backslashEscapesHTMLTags) {\n    // encode backslash escaped HTML tags\n    text = text.replace(/\\\\<(\\/?[^>]+?)>/g, function (wm, inside) {\n      return '&lt;' + inside + '&gt;';\n    });\n  }\n\n  // hash HTML Blocks\n  for (var i = 0; i < blockTags.length; ++i) {\n\n    var opTagPos,\n        rgx1     = new RegExp('^ {0,3}(<' + blockTags[i] + '\\\\b[^>]*>)', 'im'),\n        patLeft  = '<' + blockTags[i] + '\\\\b[^>]*>',\n        patRight = '</' + blockTags[i] + '>';\n    // 1. Look for the first position of the first opening HTML tag in the text\n    while ((opTagPos = showdown.helper.regexIndexOf(text, rgx1)) !== -1) {\n\n      // if the HTML tag is \\ escaped, we need to escape it and break\n\n\n      //2. Split the text in that position\n      var subTexts = showdown.helper.splitAtIndex(text, opTagPos),\n          //3. Match recursively\n          newSubText1 = showdown.helper.replaceRecursiveRegExp(subTexts[1], repFunc, patLeft, patRight, 'im');\n\n      // prevent an infinite loop\n      if (newSubText1 === subTexts[1]) {\n        break;\n      }\n      text = subTexts[0].concat(newSubText1);\n    }\n  }\n  // HR SPECIAL CASE\n  text = text.replace(/(\\n {0,3}(<(hr)\\b([^<>])*?\\/?>)[ \\t]*(?=\\n{2,}))/g,\n    showdown.subParser('hashElement')(text, options, globals));\n\n  // Special case for standalone HTML comments\n  text = showdown.helper.replaceRecursiveRegExp(text, function (txt) {\n    return '\\n\\n¨K' + (globals.gHtmlBlocks.push(txt) - 1) + 'K\\n\\n';\n  }, '^ {0,3}<!--', '-->', 'gm');\n\n  // PHP and ASP-style processor instructions (<?...?> and <%...%>)\n  text = text.replace(/(?:\\n\\n)( {0,3}(?:<([?%])[^\\r]*?\\2>)[ \\t]*(?=\\n{2,}))/g,\n    showdown.subParser('hashElement')(text, options, globals));\n\n  text = globals.converter._dispatch('hashHTMLBlocks.after', text, options, globals);\n  return text;\n});\n","/**\n * Hash span elements that should not be parsed as markdown\n */\nshowdown.subParser('hashHTMLSpans', function (text, options, globals) {\n  'use strict';\n  text = globals.converter._dispatch('hashHTMLSpans.before', text, options, globals);\n\n  function hashHTMLSpan (html) {\n    return '¨C' + (globals.gHtmlSpans.push(html) - 1) + 'C';\n  }\n\n  // Hash Self Closing tags\n  text = text.replace(/<[^>]+?\\/>/gi, function (wm) {\n    return hashHTMLSpan(wm);\n  });\n\n  // Hash tags without properties\n  text = text.replace(/<([^>]+?)>[\\s\\S]*?<\\/\\1>/g, function (wm) {\n    return hashHTMLSpan(wm);\n  });\n\n  // Hash tags with properties\n  text = text.replace(/<([^>]+?)\\s[^>]+?>[\\s\\S]*?<\\/\\1>/g, function (wm) {\n    return hashHTMLSpan(wm);\n  });\n\n  // Hash self closing tags without />\n  text = text.replace(/<[^>]+?>/gi, function (wm) {\n    return hashHTMLSpan(wm);\n  });\n\n  /*showdown.helper.matchRecursiveRegExp(text, '<code\\\\b[^>]*>', '</code>', 'gi');*/\n\n  text = globals.converter._dispatch('hashHTMLSpans.after', text, options, globals);\n  return text;\n});\n\n/**\n * Unhash HTML spans\n */\nshowdown.subParser('unhashHTMLSpans', function (text, options, globals) {\n  'use strict';\n  text = globals.converter._dispatch('unhashHTMLSpans.before', text, options, globals);\n\n  for (var i = 0; i < globals.gHtmlSpans.length; ++i) {\n    var repText = globals.gHtmlSpans[i],\n        // limiter to prevent infinite loop (assume 10 as limit for recurse)\n        limit = 0;\n\n    while (/¨C(\\d+)C/.test(repText)) {\n      var num = RegExp.$1;\n      repText = repText.replace('¨C' + num + 'C', globals.gHtmlSpans[num]);\n      if (limit === 10) {\n        console.error('maximum nesting of 10 spans reached!!!');\n        break;\n      }\n      ++limit;\n    }\n    text = text.replace('¨C' + i + 'C', repText);\n  }\n\n  text = globals.converter._dispatch('unhashHTMLSpans.after', text, options, globals);\n  return text;\n});\n","/**\n * Hash and escape <pre><code> elements that should not be parsed as markdown\n */\nshowdown.subParser('hashPreCodeTags', function (text, options, globals) {\n  'use strict';\n  text = globals.converter._dispatch('hashPreCodeTags.before', text, options, globals);\n\n  var repFunc = function (wholeMatch, match, left, right) {\n    // encode html entities\n    var codeblock = left + showdown.subParser('encodeCode')(match, options, globals) + right;\n    return '\\n\\n¨G' + (globals.ghCodeBlocks.push({text: wholeMatch, codeblock: codeblock}) - 1) + 'G\\n\\n';\n  };\n\n  // Hash <pre><code>\n  text = showdown.helper.replaceRecursiveRegExp(text, repFunc, '^ {0,3}<pre\\\\b[^>]*>\\\\s*<code\\\\b[^>]*>', '^ {0,3}</code>\\\\s*</pre>', 'gim');\n\n  text = globals.converter._dispatch('hashPreCodeTags.after', text, options, globals);\n  return text;\n});\n","showdown.subParser('headers', function (text, options, globals) {\n  'use strict';\n\n  text = globals.converter._dispatch('headers.before', text, options, globals);\n\n  var headerLevelStart = (isNaN(parseInt(options.headerLevelStart))) ? 1 : parseInt(options.headerLevelStart),\n\n      // Set text-style headers:\n      //\tHeader 1\n      //\t========\n      //\n      //\tHeader 2\n      //\t--------\n      //\n      setextRegexH1 = (options.smoothLivePreview) ? /^(.+)[ \\t]*\\n={2,}[ \\t]*\\n+/gm : /^(.+)[ \\t]*\\n=+[ \\t]*\\n+/gm,\n      setextRegexH2 = (options.smoothLivePreview) ? /^(.+)[ \\t]*\\n-{2,}[ \\t]*\\n+/gm : /^(.+)[ \\t]*\\n-+[ \\t]*\\n+/gm;\n\n  text = text.replace(setextRegexH1, function (wholeMatch, m1) {\n\n    var spanGamut = showdown.subParser('spanGamut')(m1, options, globals),\n        hID = (options.noHeaderId) ? '' : ' id=\"' + headerId(m1) + '\"',\n        hLevel = headerLevelStart,\n        hashBlock = '<h' + hLevel + hID + '>' + spanGamut + '</h' + hLevel + '>';\n    return showdown.subParser('hashBlock')(hashBlock, options, globals);\n  });\n\n  text = text.replace(setextRegexH2, function (matchFound, m1) {\n    var spanGamut = showdown.subParser('spanGamut')(m1, options, globals),\n        hID = (options.noHeaderId) ? '' : ' id=\"' + headerId(m1) + '\"',\n        hLevel = headerLevelStart + 1,\n        hashBlock = '<h' + hLevel + hID + '>' + spanGamut + '</h' + hLevel + '>';\n    return showdown.subParser('hashBlock')(hashBlock, options, globals);\n  });\n\n  // atx-style headers:\n  //  # Header 1\n  //  ## Header 2\n  //  ## Header 2 with closing hashes ##\n  //  ...\n  //  ###### Header 6\n  //\n  var atxStyle = (options.requireSpaceBeforeHeadingText) ? /^(#{1,6})[ \\t]+(.+?)[ \\t]*#*\\n+/gm : /^(#{1,6})[ \\t]*(.+?)[ \\t]*#*\\n+/gm;\n\n  text = text.replace(atxStyle, function (wholeMatch, m1, m2) {\n    var hText = m2;\n    if (options.customizedHeaderId) {\n      hText = m2.replace(/\\s?\\{([^{]+?)}\\s*$/, '');\n    }\n\n    var span = showdown.subParser('spanGamut')(hText, options, globals),\n        hID = (options.noHeaderId) ? '' : ' id=\"' + headerId(m2) + '\"',\n        hLevel = headerLevelStart - 1 + m1.length,\n        header = '<h' + hLevel + hID + '>' + span + '</h' + hLevel + '>';\n\n    return showdown.subParser('hashBlock')(header, options, globals);\n  });\n\n  function headerId (m) {\n    var title,\n        prefix;\n\n    // It is separate from other options to allow combining prefix and customized\n    if (options.customizedHeaderId) {\n      var match = m.match(/\\{([^{]+?)}\\s*$/);\n      if (match && match[1]) {\n        m = match[1];\n      }\n    }\n\n    title = m;\n\n    // Prefix id to prevent causing inadvertent pre-existing style matches.\n    if (showdown.helper.isString(options.prefixHeaderId)) {\n      prefix = options.prefixHeaderId;\n    } else if (options.prefixHeaderId === true) {\n      prefix = 'section-';\n    } else {\n      prefix = '';\n    }\n\n    if (!options.rawPrefixHeaderId) {\n      title = prefix + title;\n    }\n\n    if (options.ghCompatibleHeaderId) {\n      title = title\n        .replace(/ /g, '-')\n        // replace previously escaped chars (&, ¨ and $)\n        .replace(/&amp;/g, '')\n        .replace(/¨T/g, '')\n        .replace(/¨D/g, '')\n        // replace rest of the chars (&~$ are repeated as they might have been escaped)\n        // borrowed from github's redcarpet (some they should produce similar results)\n        .replace(/[&+$,\\/:;=?@\"#{}|^¨~\\[\\]`\\\\*)(%.!'<>]/g, '')\n        .toLowerCase();\n    } else if (options.rawHeaderId) {\n      title = title\n        .replace(/ /g, '-')\n        // replace previously escaped chars (&, ¨ and $)\n        .replace(/&amp;/g, '&')\n        .replace(/¨T/g, '¨')\n        .replace(/¨D/g, '$')\n        // replace \" and '\n        .replace(/[\"']/g, '-')\n        .toLowerCase();\n    } else {\n      title = title\n        .replace(/[^\\w]/g, '')\n        .toLowerCase();\n    }\n\n    if (options.rawPrefixHeaderId) {\n      title = prefix + title;\n    }\n\n    if (globals.hashLinkCounts[title]) {\n      title = title + '-' + (globals.hashLinkCounts[title]++);\n    } else {\n      globals.hashLinkCounts[title] = 1;\n    }\n    return title;\n  }\n\n  text = globals.converter._dispatch('headers.after', text, options, globals);\n  return text;\n});\n","/**\n * Turn Markdown link shortcuts into XHTML <a> tags.\n */\nshowdown.subParser('horizontalRule', function (text, options, globals) {\n  'use strict';\n  text = globals.converter._dispatch('horizontalRule.before', text, options, globals);\n\n  var key = showdown.subParser('hashBlock')('<hr />', options, globals);\n  text = text.replace(/^ {0,2}( ?-){3,}[ \\t]*$/gm, key);\n  text = text.replace(/^ {0,2}( ?\\*){3,}[ \\t]*$/gm, key);\n  text = text.replace(/^ {0,2}( ?_){3,}[ \\t]*$/gm, key);\n\n  text = globals.converter._dispatch('horizontalRule.after', text, options, globals);\n  return text;\n});\n","/**\n * Turn Markdown image shortcuts into <img> tags.\n */\nshowdown.subParser('images', function (text, options, globals) {\n  'use strict';\n\n  text = globals.converter._dispatch('images.before', text, options, globals);\n\n  var inlineRegExp      = /!\\[([^\\]]*?)][ \\t]*()\\([ \\t]?<?([\\S]+?(?:\\([\\S]*?\\)[\\S]*?)?)>?(?: =([*\\d]+[A-Za-z%]{0,4})x([*\\d]+[A-Za-z%]{0,4}))?[ \\t]*(?:([\"'])([^\"]*?)\\6)?[ \\t]?\\)/g,\n      crazyRegExp       = /!\\[([^\\]]*?)][ \\t]*()\\([ \\t]?<([^>]*)>(?: =([*\\d]+[A-Za-z%]{0,4})x([*\\d]+[A-Za-z%]{0,4}))?[ \\t]*(?:(?:([\"'])([^\"]*?)\\6))?[ \\t]?\\)/g,\n      base64RegExp      = /!\\[([^\\]]*?)][ \\t]*()\\([ \\t]?<?(data:.+?\\/.+?;base64,[A-Za-z0-9+/=\\n]+?)>?(?: =([*\\d]+[A-Za-z%]{0,4})x([*\\d]+[A-Za-z%]{0,4}))?[ \\t]*(?:([\"'])([^\"]*?)\\6)?[ \\t]?\\)/g,\n      referenceRegExp   = /!\\[([^\\]]*?)] ?(?:\\n *)?\\[([\\s\\S]*?)]()()()()()/g,\n      refShortcutRegExp = /!\\[([^\\[\\]]+)]()()()()()/g;\n\n  function writeImageTagBase64 (wholeMatch, altText, linkId, url, width, height, m5, title) {\n    url = url.replace(/\\s/g, '');\n    return writeImageTag (wholeMatch, altText, linkId, url, width, height, m5, title);\n  }\n\n  function writeImageTag (wholeMatch, altText, linkId, url, width, height, m5, title) {\n\n    var gUrls   = globals.gUrls,\n        gTitles = globals.gTitles,\n        gDims   = globals.gDimensions;\n\n    linkId = linkId.toLowerCase();\n\n    if (!title) {\n      title = '';\n    }\n    // Special case for explicit empty url\n    if (wholeMatch.search(/\\(<?\\s*>? ?(['\"].*['\"])?\\)$/m) > -1) {\n      url = '';\n\n    } else if (url === '' || url === null) {\n      if (linkId === '' || linkId === null) {\n        // lower-case and turn embedded newlines into spaces\n        linkId = altText.toLowerCase().replace(/ ?\\n/g, ' ');\n      }\n      url = '#' + linkId;\n\n      if (!showdown.helper.isUndefined(gUrls[linkId])) {\n        url = gUrls[linkId];\n        if (!showdown.helper.isUndefined(gTitles[linkId])) {\n          title = gTitles[linkId];\n        }\n        if (!showdown.helper.isUndefined(gDims[linkId])) {\n          width = gDims[linkId].width;\n          height = gDims[linkId].height;\n        }\n      } else {\n        return wholeMatch;\n      }\n    }\n\n    altText = altText\n      .replace(/\"/g, '&quot;')\n    //altText = showdown.helper.escapeCharacters(altText, '*_', false);\n      .replace(showdown.helper.regexes.asteriskDashAndColon, showdown.helper.escapeCharactersCallback);\n    //url = showdown.helper.escapeCharacters(url, '*_', false);\n    url = url.replace(showdown.helper.regexes.asteriskDashAndColon, showdown.helper.escapeCharactersCallback);\n    var result = '<img src=\"' + url + '\" alt=\"' + altText + '\"';\n\n    if (title && showdown.helper.isString(title)) {\n      title = title\n        .replace(/\"/g, '&quot;')\n      //title = showdown.helper.escapeCharacters(title, '*_', false);\n        .replace(showdown.helper.regexes.asteriskDashAndColon, showdown.helper.escapeCharactersCallback);\n      result += ' title=\"' + title + '\"';\n    }\n\n    if (width && height) {\n      width  = (width === '*') ? 'auto' : width;\n      height = (height === '*') ? 'auto' : height;\n\n      result += ' width=\"' + width + '\"';\n      result += ' height=\"' + height + '\"';\n    }\n\n    result += ' />';\n\n    return result;\n  }\n\n  // First, handle reference-style labeled images: ![alt text][id]\n  text = text.replace(referenceRegExp, writeImageTag);\n\n  // Next, handle inline images:  ![alt text](url =<width>x<height> \"optional title\")\n\n  // base64 encoded images\n  text = text.replace(base64RegExp, writeImageTagBase64);\n\n  // cases with crazy urls like ./image/cat1).png\n  text = text.replace(crazyRegExp, writeImageTag);\n\n  // normal cases\n  text = text.replace(inlineRegExp, writeImageTag);\n\n  // handle reference-style shortcuts: ![img text]\n  text = text.replace(refShortcutRegExp, writeImageTag);\n\n  text = globals.converter._dispatch('images.after', text, options, globals);\n  return text;\n});\n","showdown.subParser('italicsAndBold', function (text, options, globals) {\n  'use strict';\n\n  text = globals.converter._dispatch('italicsAndBold.before', text, options, globals);\n\n  // it's faster to have 3 separate regexes for each case than have just one\n  // because of backtracing, in some cases, it could lead to an exponential effect\n  // called \"catastrophic backtrace\". Ominous!\n\n  function parseInside (txt, left, right) {\n    /*\n    if (options.simplifiedAutoLink) {\n      txt = showdown.subParser('simplifiedAutoLinks')(txt, options, globals);\n    }\n    */\n    return left + txt + right;\n  }\n\n  // Parse underscores\n  if (options.literalMidWordUnderscores) {\n    text = text.replace(/\\b___(\\S[\\s\\S]*?)___\\b/g, function (wm, txt) {\n      return parseInside (txt, '<strong><em>', '</em></strong>');\n    });\n    text = text.replace(/\\b__(\\S[\\s\\S]*?)__\\b/g, function (wm, txt) {\n      return parseInside (txt, '<strong>', '</strong>');\n    });\n    text = text.replace(/\\b_(\\S[\\s\\S]*?)_\\b/g, function (wm, txt) {\n      return parseInside (txt, '<em>', '</em>');\n    });\n  } else {\n    text = text.replace(/___(\\S[\\s\\S]*?)___/g, function (wm, m) {\n      return (/\\S$/.test(m)) ? parseInside (m, '<strong><em>', '</em></strong>') : wm;\n    });\n    text = text.replace(/__(\\S[\\s\\S]*?)__/g, function (wm, m) {\n      return (/\\S$/.test(m)) ? parseInside (m, '<strong>', '</strong>') : wm;\n    });\n    text = text.replace(/_([^\\s_][\\s\\S]*?)_/g, function (wm, m) {\n      // !/^_[^_]/.test(m) - test if it doesn't start with __ (since it seems redundant, we removed it)\n      return (/\\S$/.test(m)) ? parseInside (m, '<em>', '</em>') : wm;\n    });\n  }\n\n  // Now parse asterisks\n  if (options.literalMidWordAsterisks) {\n    text = text.replace(/([^*]|^)\\B\\*\\*\\*(\\S[\\s\\S]*?)\\*\\*\\*\\B(?!\\*)/g, function (wm, lead, txt) {\n      return parseInside (txt, lead + '<strong><em>', '</em></strong>');\n    });\n    text = text.replace(/([^*]|^)\\B\\*\\*(\\S[\\s\\S]*?)\\*\\*\\B(?!\\*)/g, function (wm, lead, txt) {\n      return parseInside (txt, lead + '<strong>', '</strong>');\n    });\n    text = text.replace(/([^*]|^)\\B\\*(\\S[\\s\\S]*?)\\*\\B(?!\\*)/g, function (wm, lead, txt) {\n      return parseInside (txt, lead + '<em>', '</em>');\n    });\n  } else {\n    text = text.replace(/\\*\\*\\*(\\S[\\s\\S]*?)\\*\\*\\*/g, function (wm, m) {\n      return (/\\S$/.test(m)) ? parseInside (m, '<strong><em>', '</em></strong>') : wm;\n    });\n    text = text.replace(/\\*\\*(\\S[\\s\\S]*?)\\*\\*/g, function (wm, m) {\n      return (/\\S$/.test(m)) ? parseInside (m, '<strong>', '</strong>') : wm;\n    });\n    text = text.replace(/\\*([^\\s*][\\s\\S]*?)\\*/g, function (wm, m) {\n      // !/^\\*[^*]/.test(m) - test if it doesn't start with ** (since it seems redundant, we removed it)\n      return (/\\S$/.test(m)) ? parseInside (m, '<em>', '</em>') : wm;\n    });\n  }\n\n\n  text = globals.converter._dispatch('italicsAndBold.after', text, options, globals);\n  return text;\n});\n","/**\n * Form HTML ordered (numbered) and unordered (bulleted) lists.\n */\nshowdown.subParser('lists', function (text, options, globals) {\n  'use strict';\n\n  /**\n   * Process the contents of a single ordered or unordered list, splitting it\n   * into individual list items.\n   * @param {string} listStr\n   * @param {boolean} trimTrailing\n   * @returns {string}\n   */\n  function processListItems (listStr, trimTrailing) {\n    // The $g_list_level global keeps track of when we're inside a list.\n    // Each time we enter a list, we increment it; when we leave a list,\n    // we decrement. If it's zero, we're not in a list anymore.\n    //\n    // We do this because when we're not inside a list, we want to treat\n    // something like this:\n    //\n    //    I recommend upgrading to version\n    //    8. Oops, now this line is treated\n    //    as a sub-list.\n    //\n    // As a single paragraph, despite the fact that the second line starts\n    // with a digit-period-space sequence.\n    //\n    // Whereas when we're inside a list (or sub-list), that line will be\n    // treated as the start of a sub-list. What a kludge, huh? This is\n    // an aspect of Markdown's syntax that's hard to parse perfectly\n    // without resorting to mind-reading. Perhaps the solution is to\n    // change the syntax rules such that sub-lists must start with a\n    // starting cardinal number; e.g. \"1.\" or \"a.\".\n    globals.gListLevel++;\n\n    // trim trailing blank lines:\n    listStr = listStr.replace(/\\n{2,}$/, '\\n');\n\n    // attacklab: add sentinel to emulate \\z\n    listStr += '¨0';\n\n    var rgx = /(\\n)?(^ {0,3})([*+-]|\\d+[.])[ \\t]+((\\[(x|X| )?])?[ \\t]*[^\\r]+?(\\n{1,2}))(?=\\n*(¨0| {0,3}([*+-]|\\d+[.])[ \\t]+))/gm,\n        isParagraphed = (/\\n[ \\t]*\\n(?!¨0)/.test(listStr));\n\n    // Since version 1.5, nesting sublists requires 4 spaces (or 1 tab) indentation,\n    // which is a syntax breaking change\n    // activating this option reverts to old behavior\n    if (options.disableForced4SpacesIndentedSublists) {\n      rgx = /(\\n)?(^ {0,3})([*+-]|\\d+[.])[ \\t]+((\\[(x|X| )?])?[ \\t]*[^\\r]+?(\\n{1,2}))(?=\\n*(¨0|\\2([*+-]|\\d+[.])[ \\t]+))/gm;\n    }\n\n    listStr = listStr.replace(rgx, function (wholeMatch, m1, m2, m3, m4, taskbtn, checked) {\n      checked = (checked && checked.trim() !== '');\n\n      var item = showdown.subParser('outdent')(m4, options, globals),\n          bulletStyle = '';\n\n      // Support for github tasklists\n      if (taskbtn && options.tasklists) {\n        bulletStyle = ' class=\"task-list-item\" style=\"list-style-type: none;\"';\n        item = item.replace(/^[ \\t]*\\[(x|X| )?]/m, function () {\n          var otp = '<input type=\"checkbox\" disabled style=\"margin: 0px 0.35em 0.25em -1.6em; vertical-align: middle;\"';\n          if (checked) {\n            otp += ' checked';\n          }\n          otp += '>';\n          return otp;\n        });\n      }\n\n      // ISSUE #312\n      // This input: - - - a\n      // causes trouble to the parser, since it interprets it as:\n      // <ul><li><li><li>a</li></li></li></ul>\n      // instead of:\n      // <ul><li>- - a</li></ul>\n      // So, to prevent it, we will put a marker (¨A)in the beginning of the line\n      // Kind of hackish/monkey patching, but seems more effective than overcomplicating the list parser\n      item = item.replace(/^([-*+]|\\d\\.)[ \\t]+[\\S\\n ]*/g, function (wm2) {\n        return '¨A' + wm2;\n      });\n\n      // m1 - Leading line or\n      // Has a double return (multi paragraph) or\n      // Has sublist\n      if (m1 || (item.search(/\\n{2,}/) > -1)) {\n        item = showdown.subParser('githubCodeBlocks')(item, options, globals);\n        item = showdown.subParser('blockGamut')(item, options, globals);\n      } else {\n        // Recursion for sub-lists:\n        item = showdown.subParser('lists')(item, options, globals);\n        item = item.replace(/\\n$/, ''); // chomp(item)\n        item = showdown.subParser('hashHTMLBlocks')(item, options, globals);\n\n        // Colapse double linebreaks\n        item = item.replace(/\\n\\n+/g, '\\n\\n');\n        if (isParagraphed) {\n          item = showdown.subParser('paragraphs')(item, options, globals);\n        } else {\n          item = showdown.subParser('spanGamut')(item, options, globals);\n        }\n      }\n\n      // now we need to remove the marker (¨A)\n      item = item.replace('¨A', '');\n      // we can finally wrap the line in list item tags\n      item =  '<li' + bulletStyle + '>' + item + '</li>\\n';\n\n      return item;\n    });\n\n    // attacklab: strip sentinel\n    listStr = listStr.replace(/¨0/g, '');\n\n    globals.gListLevel--;\n\n    if (trimTrailing) {\n      listStr = listStr.replace(/\\s+$/, '');\n    }\n\n    return listStr;\n  }\n\n  function styleStartNumber (list, listType) {\n    // check if ol and starts by a number different than 1\n    if (listType === 'ol') {\n      var res = list.match(/^ *(\\d+)\\./);\n      if (res && res[1] !== '1') {\n        return ' start=\"' + res[1] + '\"';\n      }\n    }\n    return '';\n  }\n\n  /**\n   * Check and parse consecutive lists (better fix for issue #142)\n   * @param {string} list\n   * @param {string} listType\n   * @param {boolean} trimTrailing\n   * @returns {string}\n   */\n  function parseConsecutiveLists (list, listType, trimTrailing) {\n    // check if we caught 2 or more consecutive lists by mistake\n    // we use the counterRgx, meaning if listType is UL we look for OL and vice versa\n    var olRgx = (options.disableForced4SpacesIndentedSublists) ? /^ ?\\d+\\.[ \\t]/gm : /^ {0,3}\\d+\\.[ \\t]/gm,\n        ulRgx = (options.disableForced4SpacesIndentedSublists) ? /^ ?[*+-][ \\t]/gm : /^ {0,3}[*+-][ \\t]/gm,\n        counterRxg = (listType === 'ul') ? olRgx : ulRgx,\n        result = '';\n\n    if (list.search(counterRxg) !== -1) {\n      (function parseCL (txt) {\n        var pos = txt.search(counterRxg),\n            style = styleStartNumber(list, listType);\n        if (pos !== -1) {\n          // slice\n          result += '\\n\\n<' + listType + style + '>\\n' + processListItems(txt.slice(0, pos), !!trimTrailing) + '</' + listType + '>\\n';\n\n          // invert counterType and listType\n          listType = (listType === 'ul') ? 'ol' : 'ul';\n          counterRxg = (listType === 'ul') ? olRgx : ulRgx;\n\n          //recurse\n          parseCL(txt.slice(pos));\n        } else {\n          result += '\\n\\n<' + listType + style + '>\\n' + processListItems(txt, !!trimTrailing) + '</' + listType + '>\\n';\n        }\n      })(list);\n    } else {\n      var style = styleStartNumber(list, listType);\n      result = '\\n\\n<' + listType + style + '>\\n' + processListItems(list, !!trimTrailing) + '</' + listType + '>\\n';\n    }\n\n    return result;\n  }\n\n  /** Start of list parsing **/\n  text = globals.converter._dispatch('lists.before', text, options, globals);\n  // add sentinel to hack around khtml/safari bug:\n  // http://bugs.webkit.org/show_bug.cgi?id=11231\n  text += '¨0';\n\n  if (globals.gListLevel) {\n    text = text.replace(/^(( {0,3}([*+-]|\\d+[.])[ \\t]+)[^\\r]+?(¨0|\\n{2,}(?=\\S)(?![ \\t]*(?:[*+-]|\\d+[.])[ \\t]+)))/gm,\n      function (wholeMatch, list, m2) {\n        var listType = (m2.search(/[*+-]/g) > -1) ? 'ul' : 'ol';\n        return parseConsecutiveLists(list, listType, true);\n      }\n    );\n  } else {\n    text = text.replace(/(\\n\\n|^\\n?)(( {0,3}([*+-]|\\d+[.])[ \\t]+)[^\\r]+?(¨0|\\n{2,}(?=\\S)(?![ \\t]*(?:[*+-]|\\d+[.])[ \\t]+)))/gm,\n      function (wholeMatch, m1, list, m3) {\n        var listType = (m3.search(/[*+-]/g) > -1) ? 'ul' : 'ol';\n        return parseConsecutiveLists(list, listType, false);\n      }\n    );\n  }\n\n  // strip sentinel\n  text = text.replace(/¨0/, '');\n  text = globals.converter._dispatch('lists.after', text, options, globals);\n  return text;\n});\n","/**\n * Parse metadata at the top of the document\n */\nshowdown.subParser('metadata', function (text, options, globals) {\n  'use strict';\n\n  if (!options.metadata) {\n    return text;\n  }\n\n  text = globals.converter._dispatch('metadata.before', text, options, globals);\n\n  function parseMetadataContents (content) {\n    // raw is raw so it's not changed in any way\n    globals.metadata.raw = content;\n\n    // escape chars forbidden in html attributes\n    // double quotes\n    content = content\n      // ampersand first\n      .replace(/&/g, '&amp;')\n      // double quotes\n      .replace(/\"/g, '&quot;');\n\n    content = content.replace(/\\n {4}/g, ' ');\n    content.replace(/^([\\S ]+): +([\\s\\S]+?)$/gm, function (wm, key, value) {\n      globals.metadata.parsed[key] = value;\n      return '';\n    });\n  }\n\n  text = text.replace(/^\\s*«««+(\\S*?)\\n([\\s\\S]+?)\\n»»»+\\n/, function (wholematch, format, content) {\n    parseMetadataContents(content);\n    return '¨M';\n  });\n\n  text = text.replace(/^\\s*---+(\\S*?)\\n([\\s\\S]+?)\\n---+\\n/, function (wholematch, format, content) {\n    if (format) {\n      globals.metadata.format = format;\n    }\n    parseMetadataContents(content);\n    return '¨M';\n  });\n\n  text = text.replace(/¨M/g, '');\n\n  text = globals.converter._dispatch('metadata.after', text, options, globals);\n  return text;\n});\n","/**\n * Remove one level of line-leading tabs or spaces\n */\nshowdown.subParser('outdent', function (text, options, globals) {\n  'use strict';\n  text = globals.converter._dispatch('outdent.before', text, options, globals);\n\n  // attacklab: hack around Konqueror 3.5.4 bug:\n  // \"----------bug\".replace(/^-/g,\"\") == \"bug\"\n  text = text.replace(/^(\\t|[ ]{1,4})/gm, '¨0'); // attacklab: g_tab_width\n\n  // attacklab: clean up hack\n  text = text.replace(/¨0/g, '');\n\n  text = globals.converter._dispatch('outdent.after', text, options, globals);\n  return text;\n});\n","/**\n *\n */\nshowdown.subParser('paragraphs', function (text, options, globals) {\n  'use strict';\n\n  text = globals.converter._dispatch('paragraphs.before', text, options, globals);\n  // Strip leading and trailing lines:\n  text = text.replace(/^\\n+/g, '');\n  text = text.replace(/\\n+$/g, '');\n\n  var grafs = text.split(/\\n{2,}/g),\n      grafsOut = [],\n      end = grafs.length; // Wrap <p> tags\n\n  for (var i = 0; i < end; i++) {\n    var str = grafs[i];\n    // if this is an HTML marker, copy it\n    if (str.search(/¨(K|G)(\\d+)\\1/g) >= 0) {\n      grafsOut.push(str);\n\n    // test for presence of characters to prevent empty lines being parsed\n    // as paragraphs (resulting in undesired extra empty paragraphs)\n    } else if (str.search(/\\S/) >= 0) {\n      str = showdown.subParser('spanGamut')(str, options, globals);\n      str = str.replace(/^([ \\t]*)/g, '<p>');\n      str += '</p>';\n      grafsOut.push(str);\n    }\n  }\n\n  /** Unhashify HTML blocks */\n  end = grafsOut.length;\n  for (i = 0; i < end; i++) {\n    var blockText = '',\n        grafsOutIt = grafsOut[i],\n        codeFlag = false;\n    // if this is a marker for an html block...\n    // use RegExp.test instead of string.search because of QML bug\n    while (/¨(K|G)(\\d+)\\1/.test(grafsOutIt)) {\n      var delim = RegExp.$1,\n          num   = RegExp.$2;\n\n      if (delim === 'K') {\n        blockText = globals.gHtmlBlocks[num];\n      } else {\n        // we need to check if ghBlock is a false positive\n        if (codeFlag) {\n          // use encoded version of all text\n          blockText = showdown.subParser('encodeCode')(globals.ghCodeBlocks[num].text, options, globals);\n        } else {\n          blockText = globals.ghCodeBlocks[num].codeblock;\n        }\n      }\n      blockText = blockText.replace(/\\$/g, '$$$$'); // Escape any dollar signs\n\n      grafsOutIt = grafsOutIt.replace(/(\\n\\n)?¨(K|G)\\d+\\2(\\n\\n)?/, blockText);\n      // Check if grafsOutIt is a pre->code\n      if (/^<pre\\b[^>]*>\\s*<code\\b[^>]*>/.test(grafsOutIt)) {\n        codeFlag = true;\n      }\n    }\n    grafsOut[i] = grafsOutIt;\n  }\n  text = grafsOut.join('\\n');\n  // Strip leading and trailing lines:\n  text = text.replace(/^\\n+/g, '');\n  text = text.replace(/\\n+$/g, '');\n  return globals.converter._dispatch('paragraphs.after', text, options, globals);\n});\n","/**\n * Run extension\n */\nshowdown.subParser('runExtension', function (ext, text, options, globals) {\n  'use strict';\n\n  if (ext.filter) {\n    text = ext.filter(text, globals.converter, options);\n\n  } else if (ext.regex) {\n    // TODO remove this when old extension loading mechanism is deprecated\n    var re = ext.regex;\n    if (!(re instanceof RegExp)) {\n      re = new RegExp(re, 'g');\n    }\n    text = text.replace(re, ext.replace);\n  }\n\n  return text;\n});\n","/**\n * These are all the transformations that occur *within* block-level\n * tags like paragraphs, headers, and list items.\n */\nshowdown.subParser('spanGamut', function (text, options, globals) {\n  'use strict';\n\n  text = globals.converter._dispatch('spanGamut.before', text, options, globals);\n  text = showdown.subParser('codeSpans')(text, options, globals);\n  text = showdown.subParser('escapeSpecialCharsWithinTagAttributes')(text, options, globals);\n  text = showdown.subParser('encodeBackslashEscapes')(text, options, globals);\n\n  // Process anchor and image tags. Images must come first,\n  // because ![foo][f] looks like an anchor.\n  text = showdown.subParser('images')(text, options, globals);\n  text = showdown.subParser('anchors')(text, options, globals);\n\n  // Make links out of things like `<http://example.com/>`\n  // Must come after anchors, because you can use < and >\n  // delimiters in inline links like [this](<url>).\n  text = showdown.subParser('autoLinks')(text, options, globals);\n  text = showdown.subParser('simplifiedAutoLinks')(text, options, globals);\n  text = showdown.subParser('emoji')(text, options, globals);\n  text = showdown.subParser('underline')(text, options, globals);\n  text = showdown.subParser('italicsAndBold')(text, options, globals);\n  text = showdown.subParser('strikethrough')(text, options, globals);\n  text = showdown.subParser('ellipsis')(text, options, globals);\n\n  // we need to hash HTML tags inside spans\n  text = showdown.subParser('hashHTMLSpans')(text, options, globals);\n\n  // now we encode amps and angles\n  text = showdown.subParser('encodeAmpsAndAngles')(text, options, globals);\n\n  // Do hard breaks\n  if (options.simpleLineBreaks) {\n    // GFM style hard breaks\n    // only add line breaks if the text does not contain a block (special case for lists)\n    if (!/\\n\\n¨K/.test(text)) {\n      text = text.replace(/\\n+/g, '<br />\\n');\n    }\n  } else {\n    // Vanilla hard breaks\n    text = text.replace(/  +\\n/g, '<br />\\n');\n  }\n\n  text = globals.converter._dispatch('spanGamut.after', text, options, globals);\n  return text;\n});\n","showdown.subParser('strikethrough', function (text, options, globals) {\n  'use strict';\n\n  function parseInside (txt) {\n    if (options.simplifiedAutoLink) {\n      txt = showdown.subParser('simplifiedAutoLinks')(txt, options, globals);\n    }\n    return '<del>' + txt + '</del>';\n  }\n\n  if (options.strikethrough) {\n    text = globals.converter._dispatch('strikethrough.before', text, options, globals);\n    text = text.replace(/(?:~){2}([\\s\\S]+?)(?:~){2}/g, function (wm, txt) { return parseInside(txt); });\n    text = globals.converter._dispatch('strikethrough.after', text, options, globals);\n  }\n\n  return text;\n});\n","/**\n * Strips link definitions from text, stores the URLs and titles in\n * hash references.\n * Link defs are in the form: ^[id]: url \"optional title\"\n */\nshowdown.subParser('stripLinkDefinitions', function (text, options, globals) {\n  'use strict';\n\n  var regex       = /^ {0,3}\\[([^\\]]+)]:[ \\t]*\\n?[ \\t]*<?([^>\\s]+)>?(?: =([*\\d]+[A-Za-z%]{0,4})x([*\\d]+[A-Za-z%]{0,4}))?[ \\t]*\\n?[ \\t]*(?:(\\n*)[\"|'(](.+?)[\"|')][ \\t]*)?(?:\\n+|(?=¨0))/gm,\n      base64Regex = /^ {0,3}\\[([^\\]]+)]:[ \\t]*\\n?[ \\t]*<?(data:.+?\\/.+?;base64,[A-Za-z0-9+/=\\n]+?)>?(?: =([*\\d]+[A-Za-z%]{0,4})x([*\\d]+[A-Za-z%]{0,4}))?[ \\t]*\\n?[ \\t]*(?:(\\n*)[\"|'(](.+?)[\"|')][ \\t]*)?(?:\\n\\n|(?=¨0)|(?=\\n\\[))/gm;\n\n  // attacklab: sentinel workarounds for lack of \\A and \\Z, safari\\khtml bug\n  text += '¨0';\n\n  var replaceFunc = function (wholeMatch, linkId, url, width, height, blankLines, title) {\n\n    // if there aren't two instances of linkId it must not be a reference link so back out\n    linkId = linkId.toLowerCase();\n    if (text.toLowerCase().split(linkId).length - 1 < 2) {\n      return wholeMatch;\n    }\n    if (url.match(/^data:.+?\\/.+?;base64,/)) {\n      // remove newlines\n      globals.gUrls[linkId] = url.replace(/\\s/g, '');\n    } else {\n      globals.gUrls[linkId] = showdown.subParser('encodeAmpsAndAngles')(url, options, globals);  // Link IDs are case-insensitive\n    }\n\n    if (blankLines) {\n      // Oops, found blank lines, so it's not a title.\n      // Put back the parenthetical statement we stole.\n      return blankLines + title;\n\n    } else {\n      if (title) {\n        globals.gTitles[linkId] = title.replace(/\"|'/g, '&quot;');\n      }\n      if (options.parseImgDimensions && width && height) {\n        globals.gDimensions[linkId] = {\n          width:  width,\n          height: height\n        };\n      }\n    }\n    // Completely remove the definition from the text\n    return '';\n  };\n\n  // first we try to find base64 link references\n  text = text.replace(base64Regex, replaceFunc);\n\n  text = text.replace(regex, replaceFunc);\n\n  // attacklab: strip sentinel\n  text = text.replace(/¨0/, '');\n\n  return text;\n});\n","showdown.subParser('tables', function (text, options, globals) {\n  'use strict';\n\n  if (!options.tables) {\n    return text;\n  }\n\n  var tableRgx       = /^ {0,3}\\|?.+\\|.+\\n {0,3}\\|?[ \\t]*:?[ \\t]*(?:[-=]){2,}[ \\t]*:?[ \\t]*\\|[ \\t]*:?[ \\t]*(?:[-=]){2,}[\\s\\S]+?(?:\\n\\n|¨0)/gm,\n      //singeColTblRgx = /^ {0,3}\\|.+\\|\\n {0,3}\\|[ \\t]*:?[ \\t]*(?:[-=]){2,}[ \\t]*:?[ \\t]*\\|[ \\t]*\\n(?: {0,3}\\|.+\\|\\n)+(?:\\n\\n|¨0)/gm;\n      singeColTblRgx = /^ {0,3}\\|.+\\|[ \\t]*\\n {0,3}\\|[ \\t]*:?[ \\t]*(?:[-=]){2,}[ \\t]*:?[ \\t]*\\|[ \\t]*\\n( {0,3}\\|.+\\|[ \\t]*\\n)*(?:\\n|¨0)/gm;\n\n  function parseStyles (sLine) {\n    if (/^:[ \\t]*--*$/.test(sLine)) {\n      return ' style=\"text-align:left;\"';\n    } else if (/^--*[ \\t]*:[ \\t]*$/.test(sLine)) {\n      return ' style=\"text-align:right;\"';\n    } else if (/^:[ \\t]*--*[ \\t]*:$/.test(sLine)) {\n      return ' style=\"text-align:center;\"';\n    } else {\n      return '';\n    }\n  }\n\n  function parseHeaders (header, style) {\n    var id = '';\n    header = header.trim();\n    // support both tablesHeaderId and tableHeaderId due to error in documentation so we don't break backwards compatibility\n    if (options.tablesHeaderId || options.tableHeaderId) {\n      id = ' id=\"' + header.replace(/ /g, '_').toLowerCase() + '\"';\n    }\n    header = showdown.subParser('spanGamut')(header, options, globals);\n\n    return '<th' + id + style + '>' + header + '</th>\\n';\n  }\n\n  function parseCells (cell, style) {\n    var subText = showdown.subParser('spanGamut')(cell, options, globals);\n    return '<td' + style + '>' + subText + '</td>\\n';\n  }\n\n  function buildTable (headers, cells) {\n    var tb = '<table>\\n<thead>\\n<tr>\\n',\n        tblLgn = headers.length;\n\n    for (var i = 0; i < tblLgn; ++i) {\n      tb += headers[i];\n    }\n    tb += '</tr>\\n</thead>\\n<tbody>\\n';\n\n    for (i = 0; i < cells.length; ++i) {\n      tb += '<tr>\\n';\n      for (var ii = 0; ii < tblLgn; ++ii) {\n        tb += cells[i][ii];\n      }\n      tb += '</tr>\\n';\n    }\n    tb += '</tbody>\\n</table>\\n';\n    return tb;\n  }\n\n  function parseTable (rawTable) {\n    var i, tableLines = rawTable.split('\\n');\n\n    for (i = 0; i < tableLines.length; ++i) {\n      // strip wrong first and last column if wrapped tables are used\n      if (/^ {0,3}\\|/.test(tableLines[i])) {\n        tableLines[i] = tableLines[i].replace(/^ {0,3}\\|/, '');\n      }\n      if (/\\|[ \\t]*$/.test(tableLines[i])) {\n        tableLines[i] = tableLines[i].replace(/\\|[ \\t]*$/, '');\n      }\n      // parse code spans first, but we only support one line code spans\n      tableLines[i] = showdown.subParser('codeSpans')(tableLines[i], options, globals);\n    }\n\n    var rawHeaders = tableLines[0].split('|').map(function (s) { return s.trim();}),\n        rawStyles = tableLines[1].split('|').map(function (s) { return s.trim();}),\n        rawCells = [],\n        headers = [],\n        styles = [],\n        cells = [];\n\n    tableLines.shift();\n    tableLines.shift();\n\n    for (i = 0; i < tableLines.length; ++i) {\n      if (tableLines[i].trim() === '') {\n        continue;\n      }\n      rawCells.push(\n        tableLines[i]\n          .split('|')\n          .map(function (s) {\n            return s.trim();\n          })\n      );\n    }\n\n    if (rawHeaders.length < rawStyles.length) {\n      return rawTable;\n    }\n\n    for (i = 0; i < rawStyles.length; ++i) {\n      styles.push(parseStyles(rawStyles[i]));\n    }\n\n    for (i = 0; i < rawHeaders.length; ++i) {\n      if (showdown.helper.isUndefined(styles[i])) {\n        styles[i] = '';\n      }\n      headers.push(parseHeaders(rawHeaders[i], styles[i]));\n    }\n\n    for (i = 0; i < rawCells.length; ++i) {\n      var row = [];\n      for (var ii = 0; ii < headers.length; ++ii) {\n        if (showdown.helper.isUndefined(rawCells[i][ii])) {\n\n        }\n        row.push(parseCells(rawCells[i][ii], styles[ii]));\n      }\n      cells.push(row);\n    }\n\n    return buildTable(headers, cells);\n  }\n\n  text = globals.converter._dispatch('tables.before', text, options, globals);\n\n  // find escaped pipe characters\n  text = text.replace(/\\\\(\\|)/g, showdown.helper.escapeCharactersCallback);\n\n  // parse multi column tables\n  text = text.replace(tableRgx, parseTable);\n\n  // parse one column tables\n  text = text.replace(singeColTblRgx, parseTable);\n\n  text = globals.converter._dispatch('tables.after', text, options, globals);\n\n  return text;\n});\n","showdown.subParser('underline', function (text, options, globals) {\n  'use strict';\n\n  if (!options.underline) {\n    return text;\n  }\n\n  text = globals.converter._dispatch('underline.before', text, options, globals);\n\n  if (options.literalMidWordUnderscores) {\n    text = text.replace(/\\b___(\\S[\\s\\S]*?)___\\b/g, function (wm, txt) {\n      return '<u>' + txt + '</u>';\n    });\n    text = text.replace(/\\b__(\\S[\\s\\S]*?)__\\b/g, function (wm, txt) {\n      return '<u>' + txt + '</u>';\n    });\n  } else {\n    text = text.replace(/___(\\S[\\s\\S]*?)___/g, function (wm, m) {\n      return (/\\S$/.test(m)) ? '<u>' + m + '</u>' : wm;\n    });\n    text = text.replace(/__(\\S[\\s\\S]*?)__/g, function (wm, m) {\n      return (/\\S$/.test(m)) ? '<u>' + m + '</u>' : wm;\n    });\n  }\n\n  // escape remaining underscores to prevent them being parsed by italic and bold\n  text = text.replace(/(_)/g, showdown.helper.escapeCharactersCallback);\n\n  text = globals.converter._dispatch('underline.after', text, options, globals);\n\n  return text;\n});\n","/**\n * Swap back in all the special characters we've hidden.\n */\nshowdown.subParser('unescapeSpecialChars', function (text, options, globals) {\n  'use strict';\n  text = globals.converter._dispatch('unescapeSpecialChars.before', text, options, globals);\n\n  text = text.replace(/¨E(\\d+)E/g, function (wholeMatch, m1) {\n    var charCodeToReplace = parseInt(m1);\n    return String.fromCharCode(charCodeToReplace);\n  });\n\n  text = globals.converter._dispatch('unescapeSpecialChars.after', text, options, globals);\n  return text;\n});\n","showdown.subParser('makeMarkdown.blockquote', function (node, globals) {\n  'use strict';\n\n  var txt = '';\n  if (node.hasChildNodes()) {\n    var children = node.childNodes,\n        childrenLength = children.length;\n\n    for (var i = 0; i < childrenLength; ++i) {\n      var innerTxt = showdown.subParser('makeMarkdown.node')(children[i], globals);\n\n      if (innerTxt === '') {\n        continue;\n      }\n      txt += innerTxt;\n    }\n  }\n  // cleanup\n  txt = txt.trim();\n  txt = '> ' + txt.split('\\n').join('\\n> ');\n  return txt;\n});\n","showdown.subParser('makeMarkdown.codeBlock', function (node, globals) {\n  'use strict';\n\n  var lang = node.getAttribute('language'),\n      num  = node.getAttribute('precodenum');\n  return '```' + lang + '\\n' + globals.preList[num] + '\\n```';\n});\n","showdown.subParser('makeMarkdown.codeSpan', function (node) {\n  'use strict';\n\n  return '`' + node.innerHTML + '`';\n});\n","showdown.subParser('makeMarkdown.emphasis', function (node, globals) {\n  'use strict';\n\n  var txt = '';\n  if (node.hasChildNodes()) {\n    txt += '*';\n    var children = node.childNodes,\n        childrenLength = children.length;\n    for (var i = 0; i < childrenLength; ++i) {\n      txt += showdown.subParser('makeMarkdown.node')(children[i], globals);\n    }\n    txt += '*';\n  }\n  return txt;\n});\n","showdown.subParser('makeMarkdown.header', function (node, globals, headerLevel) {\n  'use strict';\n\n  var headerMark = new Array(headerLevel + 1).join('#'),\n      txt = '';\n\n  if (node.hasChildNodes()) {\n    txt = headerMark + ' ';\n    var children = node.childNodes,\n        childrenLength = children.length;\n\n    for (var i = 0; i < childrenLength; ++i) {\n      txt += showdown.subParser('makeMarkdown.node')(children[i], globals);\n    }\n  }\n  return txt;\n});\n","showdown.subParser('makeMarkdown.hr', function () {\n  'use strict';\n\n  return '---';\n});\n","showdown.subParser('makeMarkdown.image', function (node) {\n  'use strict';\n\n  var txt = '';\n  if (node.hasAttribute('src')) {\n    txt += '![' + node.getAttribute('alt') + '](';\n    txt += '<' + node.getAttribute('src') + '>';\n    if (node.hasAttribute('width') && node.hasAttribute('height')) {\n      txt += ' =' + node.getAttribute('width') + 'x' + node.getAttribute('height');\n    }\n\n    if (node.hasAttribute('title')) {\n      txt += ' \"' + node.getAttribute('title') + '\"';\n    }\n    txt += ')';\n  }\n  return txt;\n});\n","showdown.subParser('makeMarkdown.links', function (node, globals) {\n  'use strict';\n\n  var txt = '';\n  if (node.hasChildNodes() && node.hasAttribute('href')) {\n    var children = node.childNodes,\n        childrenLength = children.length;\n    txt = '[';\n    for (var i = 0; i < childrenLength; ++i) {\n      txt += showdown.subParser('makeMarkdown.node')(children[i], globals);\n    }\n    txt += '](';\n    txt += '<' + node.getAttribute('href') + '>';\n    if (node.hasAttribute('title')) {\n      txt += ' \"' + node.getAttribute('title') + '\"';\n    }\n    txt += ')';\n  }\n  return txt;\n});\n","showdown.subParser('makeMarkdown.list', function (node, globals, type) {\n  'use strict';\n\n  var txt = '';\n  if (!node.hasChildNodes()) {\n    return '';\n  }\n  var listItems       = node.childNodes,\n      listItemsLenght = listItems.length,\n      listNum = node.getAttribute('start') || 1;\n\n  for (var i = 0; i < listItemsLenght; ++i) {\n    if (typeof listItems[i].tagName === 'undefined' || listItems[i].tagName.toLowerCase() !== 'li') {\n      continue;\n    }\n\n    // define the bullet to use in list\n    var bullet = '';\n    if (type === 'ol') {\n      bullet = listNum.toString() + '. ';\n    } else {\n      bullet = '- ';\n    }\n\n    // parse list item\n    txt += bullet + showdown.subParser('makeMarkdown.listItem')(listItems[i], globals);\n    ++listNum;\n  }\n\n  // add comment at the end to prevent consecutive lists to be parsed as one\n  txt += '\\n<!-- -->\\n';\n  return txt.trim();\n});\n","showdown.subParser('makeMarkdown.listItem', function (node, globals) {\n  'use strict';\n\n  var listItemTxt = '';\n\n  var children = node.childNodes,\n      childrenLenght = children.length;\n\n  for (var i = 0; i < childrenLenght; ++i) {\n    listItemTxt += showdown.subParser('makeMarkdown.node')(children[i], globals);\n  }\n  // if it's only one liner, we need to add a newline at the end\n  if (!/\\n$/.test(listItemTxt)) {\n    listItemTxt += '\\n';\n  } else {\n    // it's multiparagraph, so we need to indent\n    listItemTxt = listItemTxt\n      .split('\\n')\n      .join('\\n    ')\n      .replace(/^ {4}$/gm, '')\n      .replace(/\\n\\n+/g, '\\n\\n');\n  }\n\n  return listItemTxt;\n});\n","\n\nshowdown.subParser('makeMarkdown.node', function (node, globals, spansOnly) {\n  'use strict';\n\n  spansOnly = spansOnly || false;\n\n  var txt = '';\n\n  // edge case of text without wrapper paragraph\n  if (node.nodeType === 3) {\n    return showdown.subParser('makeMarkdown.txt')(node, globals);\n  }\n\n  // HTML comment\n  if (node.nodeType === 8) {\n    return '<!--' + node.data + '-->\\n\\n';\n  }\n\n  // process only node elements\n  if (node.nodeType !== 1) {\n    return '';\n  }\n\n  var tagName = node.tagName.toLowerCase();\n\n  switch (tagName) {\n\n    //\n    // BLOCKS\n    //\n    case 'h1':\n      if (!spansOnly) { txt = showdown.subParser('makeMarkdown.header')(node, globals, 1) + '\\n\\n'; }\n      break;\n    case 'h2':\n      if (!spansOnly) { txt = showdown.subParser('makeMarkdown.header')(node, globals, 2) + '\\n\\n'; }\n      break;\n    case 'h3':\n      if (!spansOnly) { txt = showdown.subParser('makeMarkdown.header')(node, globals, 3) + '\\n\\n'; }\n      break;\n    case 'h4':\n      if (!spansOnly) { txt = showdown.subParser('makeMarkdown.header')(node, globals, 4) + '\\n\\n'; }\n      break;\n    case 'h5':\n      if (!spansOnly) { txt = showdown.subParser('makeMarkdown.header')(node, globals, 5) + '\\n\\n'; }\n      break;\n    case 'h6':\n      if (!spansOnly) { txt = showdown.subParser('makeMarkdown.header')(node, globals, 6) + '\\n\\n'; }\n      break;\n\n    case 'p':\n      if (!spansOnly) { txt = showdown.subParser('makeMarkdown.paragraph')(node, globals) + '\\n\\n'; }\n      break;\n\n    case 'blockquote':\n      if (!spansOnly) { txt = showdown.subParser('makeMarkdown.blockquote')(node, globals) + '\\n\\n'; }\n      break;\n\n    case 'hr':\n      if (!spansOnly) { txt = showdown.subParser('makeMarkdown.hr')(node, globals) + '\\n\\n'; }\n      break;\n\n    case 'ol':\n      if (!spansOnly) { txt = showdown.subParser('makeMarkdown.list')(node, globals, 'ol') + '\\n\\n'; }\n      break;\n\n    case 'ul':\n      if (!spansOnly) { txt = showdown.subParser('makeMarkdown.list')(node, globals, 'ul') + '\\n\\n'; }\n      break;\n\n    case 'precode':\n      if (!spansOnly) { txt = showdown.subParser('makeMarkdown.codeBlock')(node, globals) + '\\n\\n'; }\n      break;\n\n    case 'pre':\n      if (!spansOnly) { txt = showdown.subParser('makeMarkdown.pre')(node, globals) + '\\n\\n'; }\n      break;\n\n    case 'table':\n      if (!spansOnly) { txt = showdown.subParser('makeMarkdown.table')(node, globals) + '\\n\\n'; }\n      break;\n\n    //\n    // SPANS\n    //\n    case 'code':\n      txt = showdown.subParser('makeMarkdown.codeSpan')(node, globals);\n      break;\n\n    case 'em':\n    case 'i':\n      txt = showdown.subParser('makeMarkdown.emphasis')(node, globals);\n      break;\n\n    case 'strong':\n    case 'b':\n      txt = showdown.subParser('makeMarkdown.strong')(node, globals);\n      break;\n\n    case 'del':\n      txt = showdown.subParser('makeMarkdown.strikethrough')(node, globals);\n      break;\n\n    case 'a':\n      txt = showdown.subParser('makeMarkdown.links')(node, globals);\n      break;\n\n    case 'img':\n      txt = showdown.subParser('makeMarkdown.image')(node, globals);\n      break;\n\n    default:\n      txt = node.outerHTML + '\\n\\n';\n  }\n\n  // common normalization\n  // TODO eventually\n\n  return txt;\n});\n","showdown.subParser('makeMarkdown.paragraph', function (node, globals) {\n  'use strict';\n\n  var txt = '';\n  if (node.hasChildNodes()) {\n    var children = node.childNodes,\n        childrenLength = children.length;\n    for (var i = 0; i < childrenLength; ++i) {\n      txt += showdown.subParser('makeMarkdown.node')(children[i], globals);\n    }\n  }\n\n  // some text normalization\n  txt = txt.trim();\n\n  return txt;\n});\n","showdown.subParser('makeMarkdown.pre', function (node, globals) {\n  'use strict';\n\n  var num  = node.getAttribute('prenum');\n  return '<pre>' + globals.preList[num] + '</pre>';\n});\n","showdown.subParser('makeMarkdown.strikethrough', function (node, globals) {\n  'use strict';\n\n  var txt = '';\n  if (node.hasChildNodes()) {\n    txt += '~~';\n    var children = node.childNodes,\n        childrenLength = children.length;\n    for (var i = 0; i < childrenLength; ++i) {\n      txt += showdown.subParser('makeMarkdown.node')(children[i], globals);\n    }\n    txt += '~~';\n  }\n  return txt;\n});\n","showdown.subParser('makeMarkdown.strong', function (node, globals) {\n  'use strict';\n\n  var txt = '';\n  if (node.hasChildNodes()) {\n    txt += '**';\n    var children = node.childNodes,\n        childrenLength = children.length;\n    for (var i = 0; i < childrenLength; ++i) {\n      txt += showdown.subParser('makeMarkdown.node')(children[i], globals);\n    }\n    txt += '**';\n  }\n  return txt;\n});\n","showdown.subParser('makeMarkdown.table', function (node, globals) {\n  'use strict';\n\n  var txt = '',\n      tableArray = [[], []],\n      headings   = node.querySelectorAll('thead>tr>th'),\n      rows       = node.querySelectorAll('tbody>tr'),\n      i, ii;\n  for (i = 0; i < headings.length; ++i) {\n    var headContent = showdown.subParser('makeMarkdown.tableCell')(headings[i], globals),\n        allign = '---';\n\n    if (headings[i].hasAttribute('style')) {\n      var style = headings[i].getAttribute('style').toLowerCase().replace(/\\s/g, '');\n      switch (style) {\n        case 'text-align:left;':\n          allign = ':---';\n          break;\n        case 'text-align:right;':\n          allign = '---:';\n          break;\n        case 'text-align:center;':\n          allign = ':---:';\n          break;\n      }\n    }\n    tableArray[0][i] = headContent.trim();\n    tableArray[1][i] = allign;\n  }\n\n  for (i = 0; i < rows.length; ++i) {\n    var r = tableArray.push([]) - 1,\n        cols = rows[i].getElementsByTagName('td');\n\n    for (ii = 0; ii < headings.length; ++ii) {\n      var cellContent = ' ';\n      if (typeof cols[ii] !== 'undefined') {\n        cellContent = showdown.subParser('makeMarkdown.tableCell')(cols[ii], globals);\n      }\n      tableArray[r].push(cellContent);\n    }\n  }\n\n  var cellSpacesCount = 3;\n  for (i = 0; i < tableArray.length; ++i) {\n    for (ii = 0; ii < tableArray[i].length; ++ii) {\n      var strLen = tableArray[i][ii].length;\n      if (strLen > cellSpacesCount) {\n        cellSpacesCount = strLen;\n      }\n    }\n  }\n\n  for (i = 0; i < tableArray.length; ++i) {\n    for (ii = 0; ii < tableArray[i].length; ++ii) {\n      if (i === 1) {\n        if (tableArray[i][ii].slice(-1) === ':') {\n          tableArray[i][ii] = showdown.helper.padEnd(tableArray[i][ii].slice(-1), cellSpacesCount - 1, '-') + ':';\n        } else {\n          tableArray[i][ii] = showdown.helper.padEnd(tableArray[i][ii], cellSpacesCount, '-');\n        }\n      } else {\n        tableArray[i][ii] = showdown.helper.padEnd(tableArray[i][ii], cellSpacesCount);\n      }\n    }\n    txt += '| ' + tableArray[i].join(' | ') + ' |\\n';\n  }\n\n  return txt.trim();\n});\n","showdown.subParser('makeMarkdown.tableCell', function (node, globals) {\n  'use strict';\n\n  var txt = '';\n  if (!node.hasChildNodes()) {\n    return '';\n  }\n  var children = node.childNodes,\n      childrenLength = children.length;\n\n  for (var i = 0; i < childrenLength; ++i) {\n    txt += showdown.subParser('makeMarkdown.node')(children[i], globals, true);\n  }\n  return txt.trim();\n});\n","showdown.subParser('makeMarkdown.txt', function (node) {\n  'use strict';\n\n  var txt = node.nodeValue;\n\n  // multiple spaces are collapsed\n  txt = txt.replace(/ +/g, ' ');\n\n  // replace the custom ¨NBSP; with a space\n  txt = txt.replace(/¨NBSP;/g, ' ');\n\n  // \", <, > and & should replace escaped html entities\n  txt = showdown.helper.unescapeHTMLEntities(txt);\n\n  // escape markdown magic characters\n  // emphasis, strong and strikethrough - can appear everywhere\n  // we also escape pipe (|) because of tables\n  // and escape ` because of code blocks and spans\n  txt = txt.replace(/([*_~|`])/g, '\\\\$1');\n\n  // escape > because of blockquotes\n  txt = txt.replace(/^(\\s*)>/g, '\\\\$1>');\n\n  // hash character, only troublesome at the beginning of a line because of headers\n  txt = txt.replace(/^#/gm, '\\\\#');\n\n  // horizontal rules\n  txt = txt.replace(/^(\\s*)([-=]{3,})(\\s*)$/, '$1\\\\$2$3');\n\n  // dot, because of ordered lists, only troublesome at the beginning of a line when preceded by an integer\n  txt = txt.replace(/^( {0,3}\\d+)\\./gm, '$1\\\\.');\n\n  // +, * and -, at the beginning of a line becomes a list, so we need to escape them also (asterisk was already escaped)\n  txt = txt.replace(/^( {0,3})([+-])/gm, '$1\\\\$2');\n\n  // images and links, ] followed by ( is problematic, so we escape it\n  txt = txt.replace(/]([\\s]*)\\(/g, '\\\\]$1\\\\(');\n\n  // reference URIs must also be escaped\n  txt = txt.replace(/^ {0,3}\\[([\\S \\t]*?)]:/gm, '\\\\[$1]:');\n\n  return txt;\n});\n","var root = this;\n\n// AMD Loader\nif (typeof define === 'function' && define.amd) {\n  define(function () {\n    'use strict';\n    return showdown;\n  });\n\n// CommonJS/nodeJS Loader\n} else if (typeof module !== 'undefined' && module.exports) {\n  module.exports = showdown;\n\n// Regular Browser loader\n} else {\n  root.showdown = showdown;\n}\n","/**\n * Check if the given variable is a function\n * @method\n * @memberof Popper.Utils\n * @argument {Any} functionToCheck - variable to check\n * @returns {Boolean} answer to: is a function?\n */\nexport default function isFunction(functionToCheck) {\n  const getType = {};\n  return (\n    functionToCheck &&\n    getType.toString.call(functionToCheck) === '[object Function]'\n  );\n}\n"]}